pit rules
How the colliery runs.
Canary is two things: a scanner that reads any token on Robinhood Chain the hard way, and a pithead that sinks coins whose own contract is the Uniswap v4 hook of their pool. Both are plain contracts and plain reads; there is no signer, no oracle, no admin key over your coin.
The reading, step by step
- 01Paste a token
Any ERC20 on Robinhood Chain. The scanner finds its Uniswap v4 pool (by Canary ledger, by Initialize events, or by known pads) and reads slot0, liquidity and the hook address.
- 02Simulate
One eth_call with state overrides: a fresh wallet is given 0.001 ETH, buys, transfers to a second wallet, sells, and the second wallet sells too. Then the same swaps with the hook replaced by a pass-through, so the hook's take is isolated from the LP fee.
- 03Trace the lamps
Every ModifyLiquidity on the pool is walked in 2,000-block chunks. Each position is traced to its holder: burned, a known locker (and until when), a contract, or a wallet. Shares of in-range liquidity are summed by kind.
- 04Read the bytecode
Function selectors are matched against a signature table and sorted by power: mint, pause, blacklist, tax, trading, upgrade. Opcodes for DELEGATECALL, SELFDESTRUCT, CREATE are flagged; EIP-1967 and minimal proxies are detected.
- 05Score it
Findings are weighed into one 0–100 reading. Anything that stops a sell or blocks a transfer drops it into Firedamp outright; the rest subtracts by severity. Verification and metadata earn a little back.
The numbers
Contracts on Robinhood Chain (chain id 4663)
| name | address | what |
|---|---|---|
| Pithead | 0x01e98c2c75d224e8e21e5164afb72f46206470db | launchpad: sink(Spec), forecast, ledger, faceOf/propsOf |
| Winder | 0x83f54fc0cd7210d534967cc1d1a3dd43960e6e2a | router + quoter: buy, sell, quoteBuy, quoteSell |
| Lamproom | 0x9f49c387151c6b5c2f338df9fc801a28485b02bf | LP-NFT locker; owner may only change the fee |
| Tally | 0xb7f26b058f052a5e7376d30880eb3de83695f53b | ERC20 lock and linear vest |
| PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 | Uniswap v4, every pool lives here |
| PositionManager | 0x58daec3116aae6D93017bAAea7749052E8a04fA7 | Uniswap v4, every lamp is one of its NFTs |
Honesty note
The face NFT is held by the bank. When a seam is sunk, the position holding the whole tonnage is minted to the bank wallet, a plain EOA. The bank can pull it, add to it, or pass it on through Uniswap at any time. Nothing in the seam’s hook prevents this.
The only lock is the Lamproom. A lamp is locked when, and only when, the Lamproom contract holds the NFT and says so. Every seam page reads this live; the scanner reads it for any token. The Lamproom’s owner can change the fee and nothing else.
Readings are not advice. A reading is what the chain said at scan time, cached for a minute. A token can change after a reading; a reading can be wrong when an RPC window runs out, and the report says so in its notes.
Real seams carry papers. Image, blurb, website and X are written into the contract as metadata so aggregators can read them. Test seams may be bare; real ones never are.