Democontracts not written yet, trades and wallets are simulated in your browser
Floorpad

Spec · draft

How Floorpad works.
Tokens that carry their rules.

Draft

This describes the protocol the front is built for. The contracts are not written yet: everything you trade on this site runs in a simulation in your browser, using the same rules.

Overview#

Floorpad launches tokens that carry rules, called hooks. A creator picks one or two hooks from a catalog of 24, sets them within their bounds, and launches. From then on, every movement of the token, buy, sell or wallet transfer, is checked against those hooks. A transfer that breaks one is refused, with the reason.

The token is born in a locked Uniswap v4 pool and trades there from its first block. There is no bonding curve to fill and no migration step.

How a hook runs#

On Solana, a transfer hook is a program the token program calls. On an EVM chain, the token contract does it itself: its transfer function calls the token's hooks before moving any balance.

every transfer, in the token
_update(from, to, amount):
    kind = classify(from, to, amount)        // buy, sell, send, other venue
    for hook in hooks: hook.check(kind, from, to, amount)   // reverts to refuse
    move balances
    for hook in hooks: hook.record(kind, from, to, amount)

Knowing a buy from a sell

In Uniswap v4 every pool keeps its tokens in one shared contract, so a transfer out of it does not say which pool it came from. The launch hook fixes that: on each swap in a Floorpad pool, it writes in transient storage how many tokens that swap moves, and in which direction. When the token then moves in or out of the shared contract, it spends that credit.

  • Covered by a credit: a buy or a sell on the token's own pool.
  • Not covered: the tokens came from or went to another pool, other venue.
  • Neither side is the pool: a wallet-to-wallet send.
  • Moves made by the launch contract itself (seeding the pool, collecting fees) skip the hooks, so no hook can freeze its own pool.

Launching#

  • Name, ticker, optional description, and one or two hooks with their settings.
  • The launch contract refuses any setting outside a hook's bounds.
  • 1,000,000,000 tokens are minted, all of them into one locked position of the pool. None go to the creator.
  • Hooks and settings are stored with the token and can never be changed.

Fees#

Every buy and sell pays 1%, in HYPE, the same for every wallet. In the first version it goes to the treasury, except where a hook claims a share of it:

HookTakes from the fee
Holder rewardsA share, paid to holders pro rata
Last buyer potA share, paid to the last buyer when the timer ends
Floor builderA share, placed as locked liquidity under the price
Buyback and burnA share, spent buying the token and burning it

Some hooks add a tax in the token on top, burned unless the hook says otherwise.

Combining hooks#

  • Hooks run in the order the creator chose them.
  • The first refusal wins, and its reason is the one shown.
  • Taxes from several hooks add up, to 90% of a transfer at most.

The hooks#

Each one, with the bound the launch enforces. Open any of them in the catalog to watch it run.

HookGroupBound
Wallet capFair launchStarts at 0.1% or more and reaches 100% within 30 days.
One buy per blockFair launchAt least one buy per block always goes through.
Opening taxFair launchEnds within 60 minutes of launch.
Buy size capFair launchStarts at 0.05% or more and lifts within 7 days.
Buy cooldownFair launchNever longer than 10 minutes.
Buys firstFair launchThe window lasts 60 minutes at most.
Sell capSellingAt least 1% per window, and a window lasts 7 days at most.
Buyer vestingSellingEach buy fully unlocks within 7 days.
Minimum holdSellingNever longer than 24 hours.
Patience discountSelling30% at most, gone within 7 days of holding.
Home pool onlyWhere it movesThe home pool can never be closed.
No wallet transfersWhere it movesBuying and selling on the pool always stay open.
Transfer burnWhere it moves10% at most.
Market hoursWhen it tradesOpen at least 4 hours a day.
PulseWhen it tradesOpen at least a tenth of the time.
Ping pongWhen it tradesEach phase lasts 60 minutes at most.
Circuit breakerMarket physicsA pause lasts 30 minutes at most, then trading resumes.
Breathing capMarket physicsThe cap never drops below 0.5% of supply.
Momentum brakeMarket physicsA trade is never limited below a tenth of the base size.
Holder rewardsWho gets paidPaid out pro rata, with no address excluded.
Diamond bonusWho gets paid20% at most, split with no address excluded.
Last buyer potWho gets paidThe pot is always paid to a buyer; nothing stays locked.
Floor builderSupplyPlaced liquidity can never be withdrawn.
Buyback and burnSupplyBurned tokens are gone for good; the budget cannot be withdrawn.

Guarantees#

  • Fixed at launch. No editable hook, no upgrade, no owner over a live token.
  • No wallet singled out. No hook takes an address as a setting.
  • Every limit ends or eases. Each sell limit has a minimum or an end date in its bounds.
  • The pool is never blocked. The protocol's own moves skip the hooks.

Not offered, on purpose

  • Blocklists and allowlists. A hook that names wallets can stop exactly the wallets it wants from selling. That is how a honeypot works, so no hook here can target an address.
  • Editable hooks. A rule that can be changed after launch can be changed into a trap. Hooks and their settings are fixed when the token launches.
  • Owner-controlled hooks. No pause switch, no admin wallet, no DAO vote over a live token. Nobody holds a key over a token's rules.
  • Unbounded sell locks. Every limit on selling has a floor or an end date written into its bounds. A holder can always get out, even if slowly.

Known limits#

  • A per-wallet rule sees addresses, not people. Splitting a bag across wallets gets around wallet caps and sell limits, as it does everywhere.
  • A router or aggregator that receives tokens and passes them on is seen as a wallet in between, and can be refused where a direct trade would pass.
  • Bridges, centralized exchanges and lending markets move tokens the hooks may refuse. Tokens with venue or transfer hooks will not work there.
  • A hook call on each transfer costs gas, from a few thousand to a few tens of thousands per transfer.
  • Uniswap v4 lets a trader keep tokens as claims inside the pool contract instead of withdrawing them. Withdrawing them later counts as another venue.

Status#

  • Front: built, running on a simulation in your browser.
  • Contracts: not written.
  • Target chain: Elysium, if its EVM supports transient storage (Cancun) and Uniswap v4 is deployed there. Both need checking first.
  • Audit: none yet. Nothing goes to mainnet without one.