Protocol
Bridge and trust model
Who holds what
- The gas token deposited for all layers sits at the Dotwork bridge address on Robinhood Chain, an account controlled by the operator. Its balance is public.
- On each layer, a bridge reserve account holds the unissued native supply. Deposits are paid out of it; withdrawals are paid into it. Native supply on a layer is therefore genesis reserve minus reserve balance, published in every batch next to the token held for that layer.
- The node, the gateway and the batch signer are run by the operator. A layer today is an operator-run chain, not a rollup: you rely on the operator to keep the node running and to honour withdrawals.
What you can verify yourself
- Every deposit is a public transfer on Robinhood Chain with the target chain id in its calldata, and a public credit transaction on the layer.
- Every withdrawal is a public transfer to the layer's bridge address and, for USDG, a public
receiveWithAuthorizationon Robinhood Chain. - Every batch is signed with EIP-712 by the operator key and states the native supply and the token held, so anyone can check that what circulates on a layer is backed.
Deposit
data = 0xa9059cbb ++ abi.encode(bridge, amount) ++ bytes32(chainId)
POST /api/bridge/deposit { "txHash": "0x..." }The sender of the transfer is credited with amount × 10^(18 − decimals) on the layer whose chain id is in the memo.
Withdraw
- On the layer, send the gas token (native value) to the layer's bridge address.
- The service sees the transfer in the next block. For USDG it signs an EIP-3009
ReceiveWithAuthorizationfrom the bridge address to you: value in 6 decimals, valid for 30 days, noncekeccak256(chainId, layerTxHash). - You submit
receiveWithAuthorizationon the USDG contract (0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168) from your own wallet. Only the recipient can submit it, and each nonce works once.
For a layer whose gas token is not USDG, the withdrawal is paid by an operator transfer of that token instead.
Next step for custody
A settlement contract, DotworkHub, is written and tested: it holds deposits per layer, takes plan payments, records batches and pays withdrawals against operator-signed vouchers, with a two-day timelock on operator changes. When it is deployed, the bridge address above becomes that contract and this page will say so.