How HudPad works, end to end — the three launch types, the single-sided V3 market, the fee split and token burn, and the .hud name service. Every guarantee is code-enforced and checkable on-chain.
HudPad is a multi-type token launchpad on Robinhood Chain, paired with the .hud name service. Anyone launches a token in one transaction; it trades on a real DEX pool from block one. Every rule below is enforced by immutable contracts — no admin keys, no upgrade path, no pause.
yourname.hud identity, a fully on-chain ERC-721.A single launch flow, three selectable structures. Pick one at deploy time; each mints a token (or collection) with its own economics. The V3 Direct type is the default and is live today — the other two are on the roadmap.
A fixed-supply ERC-20 launched straight into a Uniswap-V3 pool as a single-sided position — no bonding curve, no graduation. The entire supply is placed as an "ask ladder" above the opening price, so the market fills it as people buy. Trading is open from the first block on HudSwap (the 1% V3 pool). Creators earn the ETH side of the swap fee forever; the token side is burned.
An ERC-20 issued through an exponential bonding curve where the pool is the reserve. Minting moves ETH into the contract and advances the curve; burning redeems ETH along the inverse curve. There is no graduation and no admin key — ether deposited at mint is ether available at burn, less protocol fees. Curve size (K, S) is chosen per-coin.
An NFT collection minted along a bonding curve — each mint costs more than the last, reserve-backed, with an optional burn/redeem along the inverse curve. Creators upload their art and pick from bounded presets.
The default launch type deploys two things in one transaction: the token, and its market.
1,000,000,000-supply ERC-20 (no mint function), created with CREATE2 so its address always sorts below WETH (it is pool token0). Immutable creator and metadataURI.Because the position principal is never withdrawable — the launcher can only collect fees — the liquidity can never be pulled. This is the "can't be rugged" guarantee, enforced by the absence of a withdraw function, not by a lock timer.
.hud is a name service in the ENS tradition: a human-readable identity for your wallet on Robinhood Chain. Each name is a fully on-chain ERC-721 — the card art is rendered as an SVG inside the contract, no server or IPFS in the loop — so it shows up in any wallet and can be traded on any marketplace.
alice.hud can display across the board and feeds instead of a raw 0x….Everything a trading or sniper bot needs to plug into HudPad. All contracts are immutable and permissionless — integrate once, nothing changes under you. Mainnet contract addresses will be published here at launch.
Subscribe to the launcher’s event — every new coin emits it in its deploy transaction, pool included, tradable that same block:
event TokenLaunched(
address indexed token, // ERC-20, always pool token0
address indexed pool, // Uniswap-V3 pool (1% tier), WETH = token1
address indexed creator,
address feeRecipient,
uint256 supply, // fixed 1e27 (1B · 1e18)
uint24 feeTier, // 10000
int24 initialTick,
string name, string symbol, string metadataURI
)
Cold-start enumeration: tokensLength() / allTokens(uint256) on the launcher.
Two equivalent paths — the HudSwap router (simplest) or the V3 pool directly (standard Uniswap semantics).
// HudRouter
function buy(address token, uint256 minOut) payable returns (uint256 out)
function sell(address token, uint256 amountIn, uint256 minOut) returns (uint256 out)
// sells need a prior token.approve(router, amountIn)
Fills are the pool’s standard Swap events. Spot price from slot0.sqrtPriceX96: price = (sqrtPriceX96 / 2^96)^2 ETH per token unit. Token is always token0, so buys are zeroForOne = false.
import { createWalletClient, http, parseAbi, parseEther } from "viem";
const ROUTER = "0x…"; // published here at mainnet
const routerAbi = parseAbi([
"function buy(address token, uint256 minOut) payable returns (uint256)",
"function sell(address token, uint256 amountIn, uint256 minOut) returns (uint256)",
]);
// quote straight from the pool (POOL comes from the TokenLaunched event)
const poolAbi = parseAbi(["function slot0() view returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"]);
const [sqrtP] = await client.readContract({ address: POOL, abi: poolAbi, functionName: "slot0" });
const spot = (BigInt(sqrtP) * BigInt(sqrtP) * 10n ** 18n) / 2n ** 192n; // ETH-wei / 1e18 tokens
const ethIn = parseEther("0.05");
const est = (ethIn * 99n * 10n ** 18n) / (100n * spot); // 1% pool fee off spot
await wallet.writeContract({
address: ROUTER, abi: routerAbi, functionName: "buy",
args: [TOKEN, (est * 97n) / 100n], value: ethIn,
});
// exit: token.approve(ROUTER, amount) then sell(TOKEN, amount, minEthOut)
Bots don’t need our site or API — discovery, pricing and trading above are pure chain, so you run everything in your own environment. A ready-made JSON mirror exists if you want one, but nothing depends on it:
GET /api/feed — newest coins page + recent trades + ETH/USD, cursor-paginated (?cursor=<nextCursor>&limit=100, ?token=0x… for one coin). priceX18 = ETH-wei per 1e18 token units.GET /api/stream — the same snapshot over SSE on every market change.Agents integrate against the chain, not our UI — discovery, pricing and execution all live in immutable contracts your agent reads over its own RPC. The site is just a human window onto the same state. A minimal loop:
TokenLaunched on the launcher and Swap on the pools with your own RPC/websocket. Cold start: tokensLength() / allTokens(i).slot0.sqrtPriceX96: price = (sqrtPriceX96 / 2^96)^2 ETH per token unit, then tokensOut ≈ ethIn · 0.99 / price (1% pool fee; a real fill walks the ask ladder).minOut (e.g. quote − 3%). Never trade on a zero or missing quote.router.buy{value: ethIn}(token, minOut); exits are approve + router.sell(token, amount, minOut). Standard V3 swaps directly on the pool work identically.Swap event in the same transaction.pool.liquidity() and recent Swap volume before sizing. Large buys move price sharply.txHash.HudNames.available(name) / priceOf(name, years) / register{value}(name, target, years).hudpad.com/api/feed is only an optional JSON mirror. Full ABIs ship with the verified sources at mainnet; this page will list every address.Every guarantee is enforced by the contract code itself — not a promise, a policy, or a setting an admin can flip.