myelin
Robinhood Chain
06 Do not trust, verify

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.

MODEL_HASH stored on-chain
—
keccak256 of the weights file
—
  1. Read MODEL_HASH from the model contract with a free eth_call.
  2. Download the weights file.
  3. Compute keccak256 of the file, byte for byte, in your browser.
  4. 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.

Free RPC reads, one per swap block and paced to stay under the public RPC’s rate limit (about 15 swaps a second); no wallet. The arithmetic is src/lib/myelin.ts, tested against the same golden vectors as the contracts.

Contracts

Everything is on Robinhood Chain (4663). Addresses link to the explorer.

ContractAddressNotes
Uniswap v4 PoolManager0x8366a3…e40951Uniswap’s own deployment, not ours; its source matches Uniswap v4-core.
MyelinHook0xe98beA…1AB0c4Address bits are exactly 0x30c4: beforeInitialize, afterInitialize, beforeSwap, afterSwap and afterSwapReturnDelta (which lets it take its fee share), nothing else.
MyelinModel0xF5400c…34E87eGenerated code, no storage: the same inputs always give the same output.
MyelinTreasury0xEE9B3C…c36770Holds the fee share as claims. No owner; anyone can make it buy back and burn the project token. See the Treasury page.
Price oracle0x8d64A1…0F9080The 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.
MYL0x6C71AB…09fF43The token the Treasury buys and burns.
ETH · USDG
ETH, the chain’s own currency0x5fc536…F1d168
The two currencies of the pool.
Pool0x7ba73929…66c846ETH / 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.

1. The hash stored on-chain
cast call 0xF5400cC2836D462605b5d7877b2C26F3f134E87e "modelHash()(bytes32)" --rpc-url https://rpc.mainnet.chain.robinhood.com
2. The hash of the published weights file
cast keccak "0x$(xxd -p weights_v2.json | tr -d '\n')"
3. The fee limits baked into the hook
cast call 0xe98beA64f59d1Fd4C73df53B22C6439B601AB0c4 "FEE_MIN()(uint24)" --rpc-url https://rpc.mainnet.chain.robinhood.com
4. The share of every fee that goes to the Treasury
cast call 0xe98beA64f59d1Fd4C73df53B22C6439B601AB0c4 "PROTOCOL_SHARE()(uint24)" --rpc-url https://rpc.mainnet.chain.robinhood.com