The floor, documented.
Everything below is derived from the contracts and the deploy parameters: no marketing numbers. Where a value does not exist yet (the protocol has not launched), the page says so instead of inventing one.
How it works
FLOOR is a fixed-supply memecoin (1,000,000,000 tokens, minted once by the Flap launchpad, never again) with an on-chain redemption floor. A vault holds SGOV, a real-world asset (RWA): a tokenized ETF of 0–3 month US Treasury bills. Anyone can redeem FLOOR at any time and receive their pro-rata share of the vault’s SGOV, in-kind, with no oracle in the money path. The Flap token has no burn function, so redemption locks the redeemed FLOOR in the vault forever; the floor’s denominator is the effective supply(totalSupply minus the vault’s locked FLOOR), which can only fall. Because the denominator only falls and the vault’s SGOV balance can only grow, the floor per token is monotone: it never decreases.
The four channels that raise the floor
- The trading tax, converted to SGOV.Every pool trade pays a tax: 2% on buys, 4% on sells (plain wallet transfers are untaxed). Flap keeps its protocol cut (41% after graduation, 60% during the bonding curve); 100% of the remainder reaches the converter, which sends 60% to the vault as SGOV (40% is the operator’s disclosed revenue; see Fees & flows).
- Redemption fee. Redeeming charges 2%, and that fee stays in the vault. Every exit raises the floor for everyone who stays.
- T-bill yield. SGOV accrues Treasury-bill yield as slow price appreciation, so the USD floor rises even when nothing trades.
- Donations. Anyone can send SGOV to the vault, via
donate()for an attributed event, or a plain transfer. Both only ever raise the floor.
Redeeming, step by step
- Call
previewRedeem(amount)on the vault to see the exact SGOV you would receive (pro-rata share minus the 2% fee). - Approve path:
FLOOR.approve(vault, amount), thenvault.redeem(amount, receiver). Two transactions. - Permit path: sign an EIP-2612 permit off-chain and call
vault.redeemWithPermit(amount, receiver, deadline, v, r, s). One transaction, no prior approval. - The vault pulls your FLOOR into itself and locks it there forever (the Flap token has no burn function;
totalSupplystays constant while the redeemableeffectiveSupplyfalls), then transfers SGOV tokens directly toreceiver. In-kind: you receive the T-bill token itself, not a swap output, so no oracle, no slippage, and no liquidity dependence in the redemption path.
What the floor is denominated in
The floor is denominated in SGOV tokens per FLOOR: that is the number the contract guarantees and the number that never decreases. The USD figure shown on the site is a display convenience: floor-in-SGOV multiplied by SGOV’s Chainlink USD price. SGOV’s USD value can move (it is economic exposure to short-term T-bills, and the feed updates on a 24/5 schedule), so the USD display can fluctuate even though the SGOV-denominated floor cannot go down.
Why T-bills, specifically: the RWA link
SGOV is a real-world asset (RWA): a tokenized ETF of short-term US government debt, carried on this chain as a plain ERC-20 with its own Chainlink feed. The choice of backing asset is the whole design, so here is the argument in full. One: the backing is not circular.Most “backed” tokens are backed by their own liquidity, by ETH, or by another crypto asset, so the backing collapses in exactly the market conditions where holders need it. FLOOR’s vault holds economic exposure to US government debt: its value does not depend on crypto markets, this token, or us. Two: the backing pays interest. SGOV accrues T-bill yield as slow price appreciation, so the floor rises even with zero trades and zero participants (the only channel in the design that needs nobody). Three: the exit works when everything else is broken. Redemption hands over the T-bill token itself, in-kind: no oracle, no swap, and no DEX liquidity in the money path, so it works during stale-feed weekends and mass exits alike. Four: the floor has an honest unit. floorPerToken = vaultSGOV / effectiveSupply is a real, auditable on-chain number with a Chainlink price, not a promise denominated in vibes. In short: FLOOR is a machine that converts memecoin trading activity into US Treasury bills owned by the holders.
Contracts
| Contract | Role | Address (Robinhood Chain, 4663) |
|---|---|---|
| FLOOR token (FlapTaxTokenV3) | Fixed 1B-supply ERC-20 created by the Flap launchpad, with EIP-2612 permit; charges a 2% buy / 4% sell tax on pool trades only (immutable once set, expires after its set duration of about 100 years); no mint function and no burn function. | 0xC21538328C2B4Db8D215e8D646aC1d1E14ca7777 |
| FloorVaultV2 | Holds the SGOV backing; redeem() locks the redeemed FLOOR in the vault forever and pays pro-rata SGOV in-kind minus a 2% fee that stays in the vault; the floor is computed over the effective (redeemable) supply. | 0x08581D8d1fd684C221c5301aBbec56c00E65EEa0 |
| FloorConverterV2 | Receives the post-cut tax stream from Flap as native ETH; pays 40% to the operator and converts the other 60% into SGOV for the vault via a pinned 1inch router under a dual-Chainlink guard, with a permissionless v4 fallback. | 0x57F4E6088a475D1c6F02D5554D51b97E1118BF09 |
| TaxProcessor (Flap) | Flap's per-token tax processor: collects the trading tax, takes Flap's protocol cut (60% during the bonding curve, 41% after graduation), and pays the remainder to the beneficiary, which the launch wires to FloorConverterV2. | 0x4a4E628c5e53Cf3180e274F857AB865a4e977Fb0 |
Immutability, and its honest limits
- In our contracts (FloorVaultV2, FloorConverterV2), every parameter is a
constructorargument storedimmutable: there are no setters, no upgrade path, no proxy, no pause switch, and no owner. - The tokenis not ours: it is a FlapTaxTokenV3 created by the Flap launchpad on Flap’s fixed implementation. Its tax rates and duration are immutable once set at creation, but Flap’s Portal and tax processor are upgradeable contracts that Flap controls (see the FAQ for what that does and does not put at risk).
- The full supply is minted once by Flap at creation (no team allocation, no mint function; the only launch-day position is the disclosed creator initial buy). Liquidity sits on Flap’s bonding curve until graduation, after which Flap seeds the DEX pool and locks the liquidity.
Launch parameters
| Launchpad | Flap (flap.sh) · bonding curve → DEX graduation, Flap-locked liquidity |
| Buy tax | 2% (200 bps), pool trades only |
| Sell tax | 4% (400 bps), pool trades only |
| Tax duration | ~100 years (immutable; the tax expires after it) |
| Flap protocol cut | 60% of tax on the curve · 41% after graduation |
| Flap Portal | 0x26605f322f7fF986f381bB9A6e3f5DAb0bEaEb09 |
| PoolManager (converter fallback path) | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| SGOV token | 0x92FD66527192E3e61d4DDd13322Aa222DE86F9B5 |
| SGOV/USD feed | 0xa0DF4ee0fFf975306345875E3548Fcc519577A11 |
| ETH/USD feed | 0x78F3556b67E17Df817D51Ef5a990cDaF09E8d3A9 |
Integrate
Minimal ABI fragments
// FloorVaultV2
"function redeem(uint256 floorAmount, address receiver) returns (uint256 sgovOut)"
"function redeemWithPermit(uint256 floorAmount, address receiver, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns (uint256 sgovOut)"
"function previewRedeem(uint256 floorAmount) view returns (uint256 sgovOut)"
"function floorPerToken() view returns (uint256)" // 1e18-scaled SGOV per FLOOR, pre-fee
"function effectiveSupply() view returns (uint256)" // totalSupply minus vault-locked FLOOR
"function donate(uint256 sgovAmount)"
// FloorConverterV2: fallback path, callable by anyone after 30d keeper silence
"function convertViaV4(uint256 ethAmount, uint24 feeEthUsdg, int24 spacingEthUsdg, uint24 feeUsdgSgov, int24 spacingUsdgSgov)"Reading the floor on-chain
// ethers v5: floor in SGOV per FLOOR (both 18 decimals)
const vault = new ethers.Contract(VAULT, [
"function floorPerToken() view returns (uint256)",
], new ethers.providers.JsonRpcProvider("https://rpc.mainnet.chain.robinhood.com"));
const floor = await vault.floorPerToken(); // 1e18-scaled
// = vault SGOV balance * 1e18 / effectiveSupply
// (effectiveSupply = FLOOR totalSupply - the vault's locked FLOOR)Or with a raw eth_call: selector 0x046b18fc (floorPerToken()) against the vault address returns a uint256, 1e18-scaled. Equivalently, compute it yourself from three ERC-20 reads: SGOV.balanceOf(vault), FLOOR.totalSupply(), and FLOOR.balanceOf(vault) (the denominator is totalSupply minus the vault’s locked FLOOR).
The /api/floor endpoint
The site exposes a read-only JSON endpoint (60s cache, values read live from chain; nothing fabricated). Before launch it returns { pending: true } plus the reads that are real today; after launch, the full shape:
GET /api/floor
{
"updated": 1760000000000, // ms timestamp of the read
"chainId": 4663,
"sgovPrice": <number>, // SGOV/USD via Chainlink (8-dec feed)
"sgovPriceUpdatedAt": <number>, // feed round timestamp (seconds)
"ethUsd": <number>, // ETH/USD via Chainlink
"apy": { "apyPct": <number>, "windowDays": 30, "variable": true } | null,
// pre-launch only:
"pending": true,
// post-launch only:
"vault": "0x…", "floor": "0x…",
"vaultSgovRaw": "<uint256 string>", "effectiveSupplyRaw": "<uint256 string>",
"vaultSgov": <number>, "effectiveSupply": <number>,
"floorSgov": <number>, // vaultSGOV / effectiveSupply
"floorUsd": <number> // floorSgov * sgovPrice (display only)
}Fees & flows
The floor is funded by a trading tax, not an LP fee: 2% on buys, 4% on sells, charged only on pool trades (plain wallet transfers pay nothing), immutable once set, and expiring after its set duration of about 100 years. Two parties take a disclosed share of it. Flap, the launchpad, keeps 41% of the collected tax after graduation (60% during the bonding curve). The operator takes 40% of the ETH the converter receives from what remains; that share is immutable and never touches the vault or the floor. Everything else feeds the mechanism.
| Source | Route | Destination | Floor effect |
|---|---|---|---|
| Trading tax (2% buy / 4% sell) · Flap’s cut | pool trade → Flap TaxProcessor | Flap protocol (41% after graduation, 60% on the curve) | none (disclosed platform fee) |
| Trading tax, remainder · 40% | TaxProcessor → ConverterV2 (native ETH) | operator wallet (immutable) | none (disclosed operator revenue) |
| Trading tax, remainder · 60% | TaxProcessor → ConverterV2 → SGOV | vault | floor up |
| Redemption fee (2%) | withheld inside redeem() | stays in the vault | floor up |
| Donations | donate() or plain SGOV transfer | vault | floor up |
Converter guard rules
The ETH → SGOV conversion is the one place a swap happens on the protocol’s behalf, so it is fenced in. The operator’s 40% is paid off the top of each primary conversion; everything below governs the remainder:
- Pinned router. The converter only ever calls one immutable 1inch router address, fixed at deploy. The keeper supplies calldata but never holds funds.
- Dual-Chainlink slippage guard. Received SGOV is checked against the ETH/USD and SGOV/USD feeds; the swap reverts if the outcome is more than 3% worse than oracle fair value.
- Staleness tolerance: 4 days. Both feeds must be fresher than 4 days (the feeds freeze on weekends; 4 days covers a long weekend) or the conversion reverts.
- Keeper-only, rate-limited. Only the designated keeper can trigger the primary path, at most once per 1 hour, bounding the bleed rate even if the keeper key is compromised.
- Permissionless fallback after 30 days. If the keeper is silent for 30 days, anyone can convert via a direct Uniswap v4 route under the same oracle guard. A dead keeper or dead router can never permanently strand the tax stream. The fallback pays the operator nothing: if the keeper is dead, everything goes to the floor.
- Beneficiary watch.The tax reaches the converter only because Flap’s tax processor lists it as the beneficiary, and Flap could in principle change that. The keeper checks the beneficiary on every run and this site can read it live. SGOV already in the vault is beyond Flap’s reach either way.
FAQ · honest answers
Is the floor guaranteed in USD?
No. The floor is guaranteed in SGOV tokens per FLOOR; that ratio cannot decrease. The USD value of SGOV itself can move (it is economic exposure to 0–3 month T-bills via a tokenized ETF), and the Chainlink feed used for USD display updates 24/5, not continuously. Under normal conditions short-term T-bills are about as stable as USD assets get, but “guaranteed in USD” would be a lie and we won’t tell it.
Why is the floor backed by T-bills instead of ETH or the LP?
Because a floor made of crypto evaporates exactly when it is needed. A floor “backed” by the token’s own LP is backed by itself; a floor backed by ETH shrinks in every drawdown. The vault holds SGOV: a real-world asset (RWA), tokenized 0–3 month US Treasury bills. So the floor’s value is anchored outside crypto entirely, earns T-bill interest even at zero volume, and pays out in-kind with no oracle or swap in the path. See “Why T-bills, specifically” in section 01 for the full argument.
Who can pause, upgrade, or change the contracts?
Split answer, honestly. Our contracts (FloorVaultV2, FloorConverterV2): nobody. No pause switch, no upgrade path, no proxy, no admin function; every parameter is immutable from the constructor. That cuts both ways: nobody can rug the parameters, and nobody can fix a bug after deploy either. The token and the tax routingare Flap’s: the token is a FlapTaxTokenV3 on Flap’s fixed implementation, and Flap’s Portal and tax processor are upgradeable contracts that Flap controls. In principle Flap could redirect the tax beneficiary away from our converter; our keeper checks the beneficiary on every run and this site can read it live. What Flap can never do, under any upgrade: touch the SGOV already in the vault or block redemption, which is a direct transfer from an ownerless contract.
What happens if the keeper dies or disappears?
The tax keeps accruing; nothing is lost. After 30 days of keeper silence, convertViaV4() becomes permissionless: anyone can convert the accumulated ETH to SGOV under the same on-chain oracle guard, and the fallback pays the operator nothing. Redemption never depended on the keeper at all: it is a direct, in-kind transfer from the vault.
Who takes a cut of the trading tax?
Two disclosed parties, in sequence. Flap’s protocol keeps 41% of the collected tax after graduation (60% during the bonding curve); that is the platform’s price and we cannot change it. 100% of the remainder reaches FloorConverterV2, which pays 40% to the operator (the entire business, disclosed in bold rather than hidden in a router) and converts the other 60% into SGOV for the vault. Neither share can ever touch the vault, the redemption fee, or the locked FLOOR.
Does the trading tax last forever?
No, and we would rather say so than imply otherwise. Flap taxes carry a fixed duration, set at creation and immutable afterward; ours is set to roughly 100 years. Effectively permanent, but not literally forever: after expiry the tax channel stops, and the floor keeps rising only from redemption fees, SGOV’s T-bill yield, and donations. Nothing about expiry can ever lower the floor.
Is it audited?
Not at launch. The contracts have a full unit-test suite, invariant tests, an economic simulation, and a complete deploy-and-operate rehearsal on a fork of Robinhood Chain, but no third-party audit yet. Unaudited contracts can contain bugs that tests missed, and there is no upgrade mechanism to patch them. Treat that as a real risk, because it is one.
Can the team dump on holders?
There is no team allocation to dump. The full 1B supply is minted by Flap onto the public bonding curve at creation; the only launch-day position is the disclosed creator initial buy, made on the same curve at the same price as anyone. The operator’s revenue comes from the disclosed 40% share of the converter’s tax inflow, not from holding tokens. Anyone (including the operator) who wants FLOOR buys it like everyone else.
What are the main risks?
(1) Smart-contract bugs: unaudited, immutable code. (2) Platform risk: the token and the tax routing are Flap’s contracts; Flap’s Portal and tax processor are upgradeable, and Flap could in principle redirect the tax beneficiary (SGOV already in the vault stays out of reach). (3) SGOV itself: issuer risk, jurisdictional restrictions, and it confers economic exposure only, no shareholder rights. (4) Oracle risk in the USD display and in the converter guard (not in redemption, which has no oracle). (5) The trading tax expires after its set duration (~100 years). (6) Robinhood Chain and DEX infrastructure risk. (7) The market price of FLOOR above the floor is pure memecoin speculation and can go to the floor. This is a high-risk asset; the floor bounds the downside in SGOV terms, nothing more.
Can the floor ever go down?
Not in SGOV-per-FLOOR terms, by construction: SGOV only enters the vault (tax conversions, redemption fees, donations) and only leaves pro-rata against redemption, which locks a strictly larger share of the redeemable supply in the vault; the math rounds in the vault’s favor. The caveat is the same as always: this holds if the code is correct. The invariant is covered by dedicated invariant tests, but it is a property of the code, not a law of physics.
Why is redemption in-kind instead of USD or ETH?
Paying out the SGOV token itself means redemption needs no oracle, no swap, no liquidity, and no counterparty; it cannot be frozen by a stale feed or drained by manipulated pricing. You receive the backing asset directly and can hold or sell it yourself. The trade-off: you must be able to hold SGOV, which carries jurisdictional restrictions.
Why isn’t the protocol live yet?
Launch is a deliberate, manual decision, not a countdown. The contracts are built and rehearsed end-to-end on a fork; deployment happens when the operator executes the launch runbook. Until then every address on this page reads “published at launch” and the site shows no fabricated numbers. If you see a “FLOOR” trading before the addresses are published here, it is a fake.