Cross-Chain State Relaying

Participating Interfaces propose a ledger that references assets deposited across multiple blockchains supported by the DSL. A single base chain is used to receive settlement reports from SDPs. In order to catch the entire range of fraud cases, SDPs must track deposits across all blockchains supported by the DSL. To prove fraud that requires details of a deposit from another chain, the deposit data must be securely relayed from the other chain to the base chain. This can be done using one or more (preferably multiple) protocols (e.g. Hyperlane, Chainlink CCIP, Synapse Protocol etc) so long as the protocol allows a smart contract on one chain to receive data from a smart contract on another chain. Unlike bridging, which requires every single token deposit to be communicated from one chain to another, this approach optimistically assumes that a deposit referenced by the Participating Interface is valid, and relies on SDPs to relay the minimum amount of data needed to prove fraud if necessary.

On the base chain, the CrossChainRelayer MUST:

  • track which state roots have already been relayed to which chains

  • prevent relaying state roots out of order (e.g. if last settlement ID relayed for a chain was 10, then the next one must be 11)

  • prevent relaying state roots that have not passed the fraud period

  • allow any address to call a function to relay a state root from the base chain to another chain supported by the DSL

  • allow a state root to be relayed using multiple cross-chain messaging providers

  • allow any addres to call a function that relays any cases of fraud from the base chain to another chain

  • for all supported cross-chain providers, support receiving cross-chain messages from counter chains

On each counter chain, the CrossChainRelayer MUST:

  • for all supported cross-chain providers, support receiving cross-chain messages from the base chain

The CrossChainProvider MUST:

  • abstract away the process for sending a message using a specific cross-chain provider (i.e. the cross chain relayer should be able to call the same function whether it's relaying using Axelar or Hyperlane)

Last updated