Skip to content

Legs on other chains

fact A holder can move whole units of a COUPON or SHIELD leg from Robinhood Chain to a wired destination chain and back. The leg itself never leaves Robinhood Chain: LegVault escrows the ERC-1155 units and sends a LayerZero message, and LegMirror on the destination mints a 1:1 ERC-1155 mirror with the same id to the same address. Returning burns the mirror and the vault releases the escrowed units.

Stays on Robinhood ChainMoves with the holder
The series, its escrow and every observationA transferable 1:1 mirror of the units
Claim, redeem, refund and settlementNothing else: the mirror has no claim function
The coupons a COUPON leg accruesAn on-chain checkpoint so those coupons are paid on return

Mirror ids follow the ERC-1155 id scheme: (seriesId << 1) | leg.

  • Nothing can be claimed, redeemed or refunded on the destination chain. Settlement happens on Robinhood Chain only.
  • Only Live series can be moved. Once settlement opens the vault refuses new moves (NotLive); returns are always accepted.
  • A leg that is away at an observation still counts: the observation is recorded against the series, not the wallet. Coupons that accrue while away are paid in USDG by the vault when the units return, or through collect if the vault’s USDG was short at that moment.
  • Moves can be paused by the vault, and wait while the protocol is paused or while an observation has closed but not yet been applied. Returns are never paused.
ItemPaid inWho sets it
Move (Robinhood Chain to destination)Native gas plus the LayerZero messaging fee quoted by LegVault.quoteSendLayerZero endpoint, DVN and executor prices at the time of the quote
Return (destination to Robinhood Chain)Native gas of the destination chain plus the fee quoted by LegMirror.quoteSendSame
Protocol feeNone. The vault charges nothing for a move or a return

The app shows the quoted fee as an estimate and refreshes it every 30 seconds while the confirmation is open. Enforced execution gas is set on both contracts (500,000 for delivery into the vault, 250,000 for delivery into the mirror), so no manual gas option is needed.

fact Both paths require the LayerZero Labs and Nethermind DVNs to verify every message before it is executed. No optional DVNs are configured. Confirmations follow the values in the deployment configuration for each path. The DVN set can be read from the endpoint’s SendUln302 and ReceiveUln302 libraries for each LegVault and LegMirror address.

Coupon payments and terminal settlement are only paid to holders on Robinhood Chain. A holder with units away near a payment sees a Return before <date> warning in the Portfolio for any series with an observation or maturity inside seven days. Coupons that accrue while away are not lost; they are paid on return. The vault redeems nothing on the holder’s behalf: after a series settles, returning releases the units and the holder redeems on Robinhood Chain as usual.

Recommended order: return, wait for delivery on LayerZero Scan, then claim or redeem.

Every transfer has a LayerZero message page: https://testnet.layerzeroscan.com/tx/<txHash> on testnet and https://layerzeroscan.com/tx/<txHash> on mainnet. Delivery usually takes a few minutes (estimate). If the destination has not recorded the message after seven days the Portfolio marks the transfer Check LayerZero Scan; the units stay in escrow and the message can be retried from the LayerZero Scan page.

If a delivery reaches a recipient that cannot take ERC-1155 tokens, the units are held for that recipient under unclaimed on the contract that received the message: the vault on Robinhood Chain, the mirror on the destination chain. Held units keep their coupon checkpoint and can be withdrawn at any time with withdrawUnclaimed(id), or with withdrawUnclaimedTo(id, to) to another address. The Portfolio shows held units with a Withdraw action that names the chain.

The app has a dedicated page at note.systems/omnichain: the route, the contracts, your legs with Move and Return, and the tracker for transfers in flight. Testnet legs are bought on the Notes page with testnet USDG.

ContractChainAddress
LegVaultRobinhood Chain testnet (46630)0x89c9D9C0A3037b00781534F5a106d2cBF1DE84e9, source verified
LegMirrorArbitrum Sepolia (421614)0x4a53aFD9C4D707c8FDDD6415947eF0A1e67518b8, source verified
LayerZero EndpointV2Robinhood Chain testnet0x3aCAAf60502791D199a5a5F0B173D78229eBFe32 (EID 40451)
LayerZero EndpointV2Arbitrum Sepolia0x6EDCE65403992e310A62460808c4b910D972f10f (EID 40231)

Interfaces: LegVault.send(dstEid, id, units, to, extraOptions), LegVault.quoteSend(...), LegVault.collect(seriesIds[]), LegVault.withdrawUnclaimed(id), LegMirror.send(id, units, to, extraOptions), LegMirror.quoteSend(...), LegMirror.checkpointOf(holder, id). Events: LegSent, LegReceived, UnitsHeld, UnclaimedWithdrawn, CouponsOwed, CouponsPaid, Harvested.