1. User sends tokens to the contract. This transaction is stored in the contract. embark(), embarkWithRecipient(), or embarkWithSignature().

  2. Captain queries the source chain for transactions to ship.

  3. Captain sends batch (start, end, hash) to start the trip. depart()

  4. Wait at least 24 hrs.

  5. Crewmembers check the batch and can dispute it if it is invalid. disputeBatch() or do nothing.

  6. Non disputed batches can be executed by the first officer by providing the transactions as calldata. User receives their tokens on the other chain. disembark()

  7. Hash of the transactions must be equal to the hash in the batch.

  8. In case there was a fraudulent transaction (a hacker for example), the owner can cancel a single transaction, such that it will not be executed. jettison(), jettisonGroup(), removeBatches().

  9. The owner can manually manage the tokens in the contract and must make sure it has enough funds.

Last updated