How Broom works
A launchpad layer on Flap where the creator fee does one thing: buy the floor of an NFT collection and hand the NFTs to the coin's holders. On BNB Chain, with contracts doing the parts you would otherwise have to trust a wallet for.
How it works
- 01Launch
You launch a TOKEN_TAXED_V3 coin on Flap through the Broom Launcher and pick a listed collection. The Launcher deploys a tiny fee router for your coin and hands it to Flap as the coin's beneficiary. The pairing is permanent.
- 02Trade
People trade on the Flap bonding curve, later on PancakeSwap. Flap collects your buy / sell tax into a processor contract; the tax keeps flowing after graduation.
- 03Harvest
Anyone calls
harvest(). The router pulls from Flap and forwards 80 % to the collection's vault, attributed to your coin, and 20 % to the protocol treasury. - 04Sweep & settle
The keeper announces a withdrawal to its buy wallet, waits the hour, buys at floor on OpenSea and records the receipt. Each NFT is charged to the coin whose fees paid for it; that coin's creator decides: hold, burn, weighted airdrop, one-ticket lottery, or a named recipient. The draw-based options settle through the raffle below.
Fee split
Every wei that reaches a router is split the same way, forever: 80 % to the paired collection's vault, 20 % to the treasury. The router is an EIP-1167 clone with no owner and no upgrade path. Nothing goes to the coin's creator directly. Flap itself keeps 10 % of the tax before it reaches the router, plus its own curve fee — those never touch Broom.
| SPLIT | 80 / 20 vault / treasury, constant in bytecode |
| CREATOR | 0 %. Your upside is the coin. |
| PAIRING | fixed at launch, forever |
| HARVEST | permissionless, anyone calls it |
| OUTFLOW | announced, 1 h delay, 7 d TTL, owner can cancel |
| RECEIPTS | every buy and delivery, on-chain |
| RAFFLE | drand round pinned on request, BLS-verified on BSC |
| SNAPSHOT | published 15 min before any draw, freezable |
| REDRAW | anyone, if a round goes undelivered 24 h |
The vault
Every listed collection today lives on Ethereum, which this contract cannot call. Those collections get an ExternalSweepVault: fees still arrive on BNB Chain with per-coin attribution, but buying happens on Ethereum by the keeper.
- BNB leaves only through a withdrawal announced with amount, destination and purpose, executable after one hour, expiring after seven days. The owner can cancel; nobody can accelerate.
- Each acquisition (token id, price, funding coin, purchase txid) and each delivery (destination, txid) is a receipt on the vault.
- The keeper publishes an audit key — its buy wallet — so every purchase can be checked against the vault's receipts.
- A winner posts a destination address for the collection's chain on the collection page; the keeper sends the NFT there and confirms the txid.
A native BNB Chain vault that buys through Seaport itself is designed for but not deployed: nothing listed needs it yet.
Raffles
The winning ticket comes from drand quicknet, verified on-chain with the BLS12-381 precompiles BNB Chain ships since Pascal. Nobody picks it, and nobody can re-roll it.
- Open. The keeper snapshots holders, weighted by how much of the vault their coin fed, builds a Merkle tree of ticket ranges and opens the raffle with the root and a link to the full list.
- Challenge. For 15 minutes no draw can happen. Anyone can fetch the list and recompute the root; the owner can freeze a raffle shown to be wrong.
- Draw. Anyone calls
requestDraw. The contract pins a drand round two periods in the future — a value that does not exist yet. - Resolve. When that round publishes, anyone submits its signature; the contract verifies it and the randomness sets the winning ticket.
- Claim. Anyone submits the winner's Merkle proof; the vault records the winner. If a round goes undelivered for 24 hours, anyone may pin a fresh one.
Trust model
What the keeper can do: post withdrawals (bounded by the delay and TTL), record receipts, open raffles with a holder snapshot.
What it cannot do: move BNB without an hour of public notice, pick or re-roll a winner, or block a raffle from settling — anyone can request the draw and anyone can deliver the beacon.
What stays off-chain and is only made visible, not enforced: the holder snapshot, and the actual purchase on Ethereum. The challenge window and receipts make a bad snapshot or a missing purchase obvious; nothing on-chain rejects them. Say this plainly to your holders.
Contracts
| CollectionRegistry | 0x109Bf4D3917097bF7C29CFbaFc8Ba754C82542E20x109Bf4…2542E2 |
| Launcher | 0x5DE2Ae52A28eda52E43438D87d710f5689dEDBf70x5DE2Ae…dEDBf7 |
| RaffleDistributor | 0x78e729f4A58Daa00d604201D89aB9a582489eb8c0x78e729…89eb8c |
| FeeRouter (impl) | 0x1EdF7dC48f9B65a853016305cdbB5dFE37270A980x1EdF7d…270A98 |
| Flap Portal | 0xe2cE6ab80874Fa9Fa2aAE65D277Dd6B8e65C9De00xe2cE6a…5C9De0 |
| Chain | BNB Smart Chain · 56 |
Each listed collection has its own vault; find it on the collection page. Each coin has its own router; find it on the coin page.
FAQ
- Do I need the collection's permission?
- No. Collections are listed by the registry owner, and a listed collection is fair game for any coin. The vault buys on the open market at floor; the collection's team is not involved and receives nothing.
- What happens after graduation?
- Flap moves the coin to a PancakeSwap pool. Tax keeps accruing to the same processor, so the same 80 / 20 keeps flowing to the vault.
- Why does my coin's router show BNB but the vault did not move?
- Tax sits in Flap's processor, then in the router, until someone calls harvest(). It is permissionless; the keeper runs it on a loop, and there is a button on your coin's page.
- Can the vault be drained?
- Not quietly. BNB only leaves through an announced withdrawal with a one-hour delay that anyone can watch and the owner can cancel. That is a real trust assumption on the operator, stated as such — it is not a no-withdraw vault.