Pools and the price guard
Each mirror trades against pathUSD in a Uniswap v4 pool that a hook keeps inside a band around the real share price.
Uniswap v4 on Moderato
Uniswap v4 runs on Tempo mainnet. Moderato had none, so Mitoshi replayed mainnet's seven CREATE2 deployments on Moderato — PoolManager, the position manager and its descriptor, the quoter, StateView and the Universal Router — at the same addresses. A verification script compared each one's code with mainnet's: equal, apart from the two EIP-712 values that carry the chain id.
The guard
StockGuardHook is a v4 hook (flags 0x20C0: before-initialize, before-swap, after-swap) on every (pathUSD, mirror) pool.
- Before a swap it refuses when the pool is halted, the multiplier isn't synced, the issuer or the oracle has paused the token, the mirror is paused, a corporate action is due, or the reference price is stale for the session. It then sets a band around the reference and a maximum age for it, by market session; when the market is closed or the session unknown, a pool either refuses or widens to its closed band.
- After the swap it checks the pool's new price is inside the band, or reverts
OutOfBand. Routers pass extreme price limits, so only an after-swap check can bound where a swap lands. - It never blocks adding or removing liquidity, so exits stay open.
The reference is StockReference: the share price per mirror, from RedStone payloads with three of five signers or, where credentials exist, Chainlink Data Streams; a keeper flag carries the session. Anyone may push a RedStone payload or a Data Streams report, and only a newer price counts; a keeper's own price is labelled as such, and a pool that requires a verified source refuses it. The price used is share × the UI multiplier.
The pools
0xe16fc2…80aca20xac7dbb…835b900x43da0e…50bde00x6ded81…38c3dd0x59fca6…5a386aEach initialized pool was opened at the RedStone reference with seven house liquidity positions in one batch. Ops' reference-writer keeps the reference fresh with RedStone-signed spots and the session since 13 October (NFLX has no signed source). The guard still refuses every swap until a mirror's multiplier is synced from Robinhood Chain, and that sync waits on its sender there (testnet ETH). Themes are the screen that trades these pools; their rebalances wait on the same sync.