ox1ox1

ox1 is an erc-20 on robinhood chain. lowercase name, eighteen decimals, twenty-one million minted once.

there is no mint function. that number was the ceiling and it was reached at deployment. every trade since has lowered it.

there is no roadmap, no v2, no migration, no successor token. the contract that is deployed is the contract.


the burn is not in the token

ox1 transfers are ordinary transfers. no tax, no exclusions, no limits, no maximum wallet.

a fee inside transfer would break uniswap v4's settlement. the pool manager reconciles exact balances at the end of every operation, and a token that quietly delivers less than it promises fails that reconciliation. tokens that tax their own transfers cannot be paired in v4 without breaking.

so the fee lives one layer up, in a hook — a contract that v4 calls before and after every swap on the pool. the hook takes two percent of the ox1 leg and destroys it in the same transaction. the two percent comes out of the trader's own proceeds; the pool's reserves are not touched. the token stays boring. the mechanism sits where it can be enforced.


four ways to trade

a swap can specify either how much goes in or how much comes out, in either direction. that is four shapes, and ox1 arrives in a different place in each. all four are covered.

tradeox1 istaken in
buy, exact inputoutputafterSwap
sell, exact inputinputbeforeSwap
buy, exact outputoutputbeforeSwap
sell, exact outputinputafterSwap

on exact-output trades the amount is grossed up — fee = amount / 49 — so the fee is two percent of the total ox1 moved rather than two percent of what was asked for. a buyer requesting a specific number of ox1 receives exactly that number, and pays proportionally more for it.

the burn is two percent in all four cases, to the wei. there is no shape of trade that avoids it.


nothing can be changed

the rate is a constant in the bytecode. not a variable, not a storage slot, not a constructor argument. no address can alter it, including the one that deployed it.

neither contract has an owner, an admin, a role, a pause, a blacklist, a mint, or a setter. 43 tests pass. one of them enumerates twenty-four privileged function signatures and asserts every one is absent from both contracts.

the hook's address ends in cc. v4 encodes a hook's permissions into the low bits of its own address, so those two characters are a permanent statement of which callbacks it is allowed to use. it cannot acquire others. an address cannot be amended.

there is no proxy. what is deployed is what runs.


the pool is small

this is a first deployment and liquidity is thin. two consequences, stated here rather than discovered later.

price will move a great deal on small trades.

and supply falls only as fast as volume passes through the pool. a supply figure that appears frozen is not a broken site — it is an accurate report of how much has traded.


known behaviour

published because it is true, and because you would find it anyway.

aggregators that quote by simulating pool math locally do not know about the hook. they quote roughly 204 basis points short on exact-output trades, and those swaps revert. the uniswap interface is unaffected — it asks the chain for a quote, and the chain simulates the hook.

a route that passes through ox1 buys it and immediately sells it, burning on both legs — about four percent. aggregators will therefore avoid ox1 as an intermediate hop. this is by construction, not a defect. ox1 does not become routing liquidity for other pairs.

afterAddLiquidity appears in the abi. the base contract declares every v4 callback as an external function, so the selector exists. its permission bit is off, the pool manager never calls it, and a direct call reverts. it is unreachable.

the pool charges 0.30% on top of the burn. that is uniswap's fee to liquidity providers, not the hook's. a trade costs roughly 2.3% in total.


supply

twenty-one million, minted once, to one address, at deployment. most of it was seeded into the pool.

the remainder is held at not deployed, reserved for adding liquidity to this pool later. it has not been sold. it is not vesting, allocated, or promised to anyone. there was no presale and no whitelist.

the supply falls from there, and only from there.


addresses

ox1not deployed
hooknot deployed
deployernot deployed
chainrobinhood chain · 4663
pool0.30% fee · 60 tick spacing
liquidityheld by deployer contract
← ox1
ox1 — thesis