Batches and verification
Every five minutes, for each layer that produced blocks, the operator signs a batch with EIP-712.
domain = { name: "Dotwork", version: "1", chainId: 4663,
verifyingContract: <DotworkHub, or 0x0 until deployed> }
Batch(uint256 chainId, uint64 index, uint64 fromBlock, uint64 toBlock,
bytes32 blockHash, bytes32 stateRoot,
uint256 nativeSupply, uint256 tokenHeld)Check a batch
- Fetch it:
GET /api/layers/<slug>/batches. - Recover the signer with
recoverTypedDataAddress(viem) and compare it with the operator address fromGET /api/config. - Ask the layer for block
toBlockand compare its hash and state root. - Compare
tokenHeldwith the deposits and withdrawals you can see on Robinhood Chain.
Once DotworkHub is deployed, each batch is also posted with commitBatch and indexed by layer on Robinhood Chain.
The Orbit path
Robinhood Chain is an Arbitrum Orbit chain, and the Arbitrum RollupCreator v3.2 is deployed on it at 0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B. A layer can become a full Orbit rollup with Robinhood Chain as parent: rollup contracts created by that factory, batches posted to its sequencer inbox, assertions staked by a validator, and withdrawals enforced by the rollup's outbox instead of the operator. This needs ETH on Robinhood Chain for the rollup deployment, the validator stake and every batch, plus a Nitro node per layer. It is offered on request for layers that want it.