broke Robinhood Chain
← Trade

broke

A self-custodial bonding-curve market on Robinhood Chain

v1.0 — August 2026

Abstract. broke is an ERC-20 token whose entire supply is minted and burned by a single Uniswap v4 hook acting as an automated market maker. There is no team allocation, no liquidity provider, no admin key, and no upgrade path. Every unit of broke in existence was bought into being by someone sending ETH into the curve, and can be sold back into ETH by burning it against the same curve. The hook is the market. This document describes the mechanism precisely enough that anyone can verify it against the deployed bytecode.

1Why no liquidity pool?

Traditional token launches split into two failure-prone steps: mint a supply, then convince someone to seed a liquidity pool against it. Whoever controls that pool — team, VC, or a rug-pullable multisig — controls the token's fate.

broke removes that step entirely. The Uniswap v4 pool that trades broke against ETH is initialized with zero liquidity, forever. The hook's beforeAddLiquidity callback reverts unconditionally — nobody can ever add a concentrated-liquidity position to this pool, not the deployer, not a whale, not the hook itself. Instead, the hook intercepts every swap and settles it directly: buys mint new supply, sells burn existing supply. The bonding curve formula (Section 3) is the only price mechanism that has ever existed for this token.

2Architecture

Three contracts, three jobs:

ContractRole
BrokeTokenPlain ERC-20. Holds no logic beyond mint/burn, gated to a single minter address set exactly once, at deploy time, and never changeable again.
BrokeHookThe market. A Uniswap v4 hook that owns the ETH reserve, runs the curve math, mints/burns supply, and forwards fees. The only address ever granted minter rights on the token.
BrokeSwapRouterThe only safe entry point for trading. Required because of how Uniswap v4's flash accounting works — see Section 6.

None of the three has an owner, a pause switch, or a proxy pattern. What's deployed is what runs, permanently.

3The curve

broke follows a bounded exponential curve. Let K = 21,000,000 be the asymptotic supply cap (total supply approaches but never reaches this number), S = 500 ETH be the curve's scale factor (roughly the cumulative ETH spent for the curve to mint about 63%, i.e. 1 − 1/e, of its way toward the cap), and e be the cumulative ETH that has flowed into the curve, net of sells.

Forward curve — how much supply exists after e ETH has been spent:

supply(e) = K × (1 − exp(−e / S))

Marginal price — instantaneous ETH cost of the next unit:

price(e) = (S / K) × exp(e / S)

Inverse curve — ETH refunded for burning Δ tokens out of a circulating supply of total, sitting on K − total tokens of remaining headroom:

ethOut = S × ln( (K − total + Δ) / (K − total) )

The shape: price starts low, rises smoothly, and accelerates sharply as supply approaches the 21,000,000 cap. Early buyers pay less per token than later buyers — the curve itself is the only "presale," and it's open to everyone, permissionlessly, forever. A live chart of this curve against the current on-chain position, including exactly where circulating supply sits toward the cap, is on the trading page.

4Fees

A combined 1.3% fee applies to every trade, in both directions, computed on the ETH leg and taken off the top before the remainder reaches the curve. It is enforced inside the hook itself, not in the router — so it applies even if someone calls the PoolManager directly, bypassing the router's UI entirely.

On a buy, the fee is taken off the ETH coming in before the remainder reaches the curve. On a sell, the fee is taken off the ETH the curve owes before it's paid out.

5Anti-bot mechanisms

Pure bonding curves are trivially exploitable by bots that buy and instantly resell into a spread-free arbitrage loop, or that snipe the first block with disproportionate capital. broke carries three guards:

6Why trades must go through the router

Uniswap v4 uses flash accounting: the PoolManager tracks running debits and credits during a single transaction and only requires the books to balance to zero by the end. Critically, though, PoolManager.take() — used to physically hand out a currency — requires the manager to already hold that currency's balance. It does not extend credit.

BrokeHook needs to take() the buyer's ETH (or seller's broke) from inside its own beforeSwap callback, before the core swap math runs. A generic router — including Uniswap's own test router — settles the swapper's payment after calling swap(), which is too late: the manager wouldn't have the funds yet, and the take() call would revert.

BrokeSwapRouter fixes this by pre-settling the input currency into the PoolManager before calling swap(), inside the same atomic transaction. This is not an optional convenience — pointing a standard v4 router at this pool will fail.

7What "no admin" actually means here

Concretely, verifiable on-chain:

The only actions any human retains after deployment are: buying, selling, and reading state. Nobody can pause trading, change the curve, mint for free, or redirect anyone else's funds.

8Deployment

ChainRobinhood Chain — chain id 4663
BrokeToken0x29Fc4dbA50A1fa1618FB6d277f1c8d1DD68cb303
BrokeHook0x554a290aE10BfDA2Af1AaF3647D8D42D6E14E888
BrokeSwapRouter0xa55B834091fc519d37c111B694d8460D98a9910E
PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951

All contracts are unverified-by-default on deployment; verify source against the project's src/ directory before trusting any block-explorer display of them.

This document describes the mechanism as deployed. It is not legal, financial, or investment advice, and makes no promises about broke's future price or liquidity.