This document provides a quick overview of the lifecycle of a successful cross-chain message.
An application calls sendMessage on the Origin and specifies a destination chain, contract address, optimisticSeconds timer, and call data.
The message is encoded, assigned a nonce, and added to the origin merkle tree. The merkle state at this nonce is then saved.
Any guard observes the new state of the origin chain and creates a state snapshot of the origin chain. This message is then submitted back to the origin chain (which can confirm its validity).
Any notarybonded to the origin chain can post an "Attestation" of the state of the origin chain to Synapse Chain. This must include the guards signed snapshot.
Any notary for the destination chain proposes the attestation above to the destination chain. The optimistic seconds period timer has now started and guards are verifying the validity of the update.
Assuming no fraud proof has been presented that would cause the message to be quarantined, and the optimistic seconds period has elapsed, the message is executed. A message receipt is generated.
The receipt is posted back to Synapse Chain where tips can be claimed by the notary, guard, and executor involved in the given transaction.