Verify it yourself
The model is a pure function anyone can call, its weights are a public file, and the hash of that file is written into the contract. This page checks the hash in your browser and recomputes every swap the hook has priced. Every check can be repeated in a terminal.
Opens at launch
The check runs by itself once the model is live on Robinhood Chain.
- Read MODEL_HASH from the model contract with a free eth_call.
- Download the weights file.
- Compute keccak256 of the file, byte for byte, in your browser.
- Compare the two hashes.
Recompute every swap in your browser
Reads the ticks and block times of every swap from the chain, replays them through the memory, the network and the fee policy of this site (a swap writes the memory only if it is an observation, as in the hook), and compares each input, model output and fee with what the hook logged.
Contracts
Everything is on Robinhood Chain (4663). Addresses link to the explorer.
| Contract | Address | Notes |
|---|---|---|
| Uniswap v4 PoolManager | 0x8366a3…e40951 | Uniswap’s own deployment, not ours; its source matches Uniswap v4-core. |
| MyelinHook | 0xe98beA…1AB0c4 | Address bits are exactly 0x30c4: beforeInitialize, afterInitialize, beforeSwap, afterSwap and afterSwapReturnDelta (which lets it take its fee share), nothing else. |
| MyelinModel | 0xF5400c…34E87e | Generated code, no storage: the same inputs always give the same output. |
| MyelinTreasury | 0xEE9B3C…c36770 | Holds the fee share as claims. No owner; anyone can make it buy back and burn the project token. See the Treasury page. |
| Price oracle | 0x8d64A1…0F9080 | The hook of the buyback pools. It records a pool’s price before the first swap of every second, and the Treasury measures the limit of its buyback against the average. It holds nothing, has no owner and takes no part in a swap beyond recording. |
| MYL | 0x6C71AB…09fF43 | The token the Treasury buys and burns. |
| ETH · USDG | ETH, the chain’s own currency0x5fc536…F1d168 | The two currencies of the pool. |
| Pool | 0x7ba73929…66c846 | ETH / USDG, dynamic fee, tick spacing 10. |
No one can change the model
The model address, the fee limits, the policy and the Treasury share are immutable values of the hook, and the hook has no owner. To change anything, a new hook and model must be deployed.
- FEE_MIN
- 0.05% fee floor
- FEE_MAX
- 0.41% fee cap
- FEE_FALLBACK
- 0.10% used if the model call ever fails
- FEE_SLOPE · SLOPE_SHIFT · PRED_THRESHOLD
- 63 · 4 · 274 above the threshold the fee grows by 63 ÷ 2^4 = 3.94 units for each step of model output
- PROTOCOL_SHARE
- 10% of every fee goes to the Treasury (the hook accepts at most 20%)
Repeat it in a terminal
You need Foundry’s `cast`. Nothing here depends on this website.
cast call 0xF5400cC2836D462605b5d7877b2C26F3f134E87e "modelHash()(bytes32)" --rpc-url https://rpc.mainnet.chain.robinhood.com
cast keccak "0x$(xxd -p weights_v2.json | tr -d '\n')"
cast call 0xe98beA64f59d1Fd4C73df53B22C6439B601AB0c4 "FEE_MIN()(uint24)" --rpc-url https://rpc.mainnet.chain.robinhood.com
cast call 0xe98beA64f59d1Fd4C73df53B22C6439B601AB0c4 "PROTOCOL_SHARE()(uint24)" --rpc-url https://rpc.mainnet.chain.robinhood.com