myelin
Robinhood Chain
05 Where the share goes

Treasury

Part of every fee (10%) goes to a Treasury that has no owner. Anyone can make it spend a slice of what it holds on MYL and burn what it gets. This page shows what it holds, what has been burned and every call.

Held · ETH
—ETH
claims on the PoolManager
Held · USDG
—USDG
claims on the PoolManager
Burned by the Treasury
—MYL
bought with the share, then burned
MYL supply
—MYL
fixed supply, burnable
Fig. 6 · The loop

From a swap to a burn

Three steps, no one in the middle. Each one is a transaction you can open in the explorer.

  1. A swap pays its fee. The hook takes 10% of it and mints that to the Treasury inside the same call, as ERC-6909 claims on the PoolManager. The hook itself keeps nothing.
  2. Anyone calls buybackAndBurn(currency) on the Treasury. It spends at most 5% of its claims in that currency, once per 1 h, on MYL in a plain pool whose only hook is the Treasury’s price oracle, and never pays more than about 3% above that pool’s average price of the last 30 minutes. Nothing calls it by itself: anyone can, from a terminal (below), and a keeper script in the repository does it on a timer.
  3. What it receives is burned in the same transaction. The supply goes down and the call is logged below.
Table · Buyback calls

Every buyback and burn

Newest first. One row per call of buybackAndBurn.

No buyback has been made yet. Once the Treasury holds claims, anyone can make one.

What it can and cannot do

Read from the contract. There is no owner to ask.

Owner
None. No admin key, no upgrade, and no function that pays a person.
What can leave it
Claims spent in a swap for MYL, and that token, which is burned. Claims in a currency that has no buyback pool cannot be spent at all, so the hook refuses to open a pool with a currency the Treasury cannot spend.
Limits per call
At most 5% of its claims in that currency, one call per currency per 1 h. A slice that is too big for the pool is filled in part and the rest stays as claims. A call that would buy nothing fails and does not start the hour.
Price limit
The swap of a call carries a price limit: it never pays more than about 3% above the average price of its buyback pool over the last 30 minutes, kept by an oracle. That average cannot be moved inside one transaction, so someone who pushes the price up before a call makes the Treasury overpay by the band at most, not by the slice. Until the pool has 30 minutes of history a call fails with OracleNotReady, while the pool stands above the limit with PriceTooHigh, and a call that buys nothing with NothingBought. Nothing is lost either way, and the table above says which applies.
What it does not stop
Holding the price up for minutes moves the average by the share of the 30-minute window it is held for, which costs whoever does it against everyone who trades. And a new pool has no history to measure against for its first 30 minutes. The risks page has the details.
The share is a choice, not a finding
10% was chosen, not measured. The backtest does not show that liquidity providers get it back in a better fee: at the backtest’s headline setting the part of the fee they could give away and still match the better of a static fee and a plain rule is 9% at most, and none in one of the four pools.
The token
The Treasury buys back and burns the token it was deployed with, and nothing else. The docs say what that does and does not mean.

Treasury contract: 0xEE9B3C…c36770

Make it burn from a terminal

You need Foundry’s `cast` and a little ETH for gas. Nothing here depends on this website. Anyone can make a call; the Treasury pays the caller nothing and the caller risks only the gas.

1. What the Treasury holds in ETH (the zero address)
cast call 0xEE9B3C0F79e9240D966ad211572cd194cdc36770 "claimsOf(address)(uint256)" 0x0000000000000000000000000000000000000000 --rpc-url https://rpc.mainnet.chain.robinhood.com
2. Spend a slice of it and burn what it buys
cast send 0xEE9B3C0F79e9240D966ad211572cd194cdc36770 "buybackAndBurn(address)" 0x0000000000000000000000000000000000000000 --rpc-url https://rpc.mainnet.chain.robinhood.com --private-key $PRIVATE_KEY
3. What the Treasury holds in USDG
cast call 0xEE9B3C0F79e9240D966ad211572cd194cdc36770 "claimsOf(address)(uint256)" 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 --rpc-url https://rpc.mainnet.chain.robinhood.com
4. Spend a slice of it and burn what it buys
cast send 0xEE9B3C0F79e9240D966ad211572cd194cdc36770 "buybackAndBurn(address)" 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 --rpc-url https://rpc.mainnet.chain.robinhood.com --private-key $PRIVATE_KEY
Or let a script do it: from the app folder of the repository, with KEEPER_KEY set to a key that holds only gas. It looks every five minutes and sends a call only when one is due and would go through
node scripts/keeper.mjs --rpc https://rpc.mainnet.chain.robinhood.com