Let me start with an analogy:
On mainnet, when Alice wants to send to Bob, she has 2 options:
- Sign transaction and broadcast it (Bob will find it on mempool)
- Sign transaction and send it to Bob (Bob can broadcast it immediately or later)
Let’s call it Send and Send Async respectively.
In Ark there also 2 options for Alice (assuming Alice already has a VTXO).
Send:
- Alice asks the ASP to pay Bob
- ASP waits for other payment intentions
- ASP prepares a new round tx with a new VTXO belonging to Bob and shows it to Alice
- Alice signs a forfeit tx using a round tx output as input (making it atomic)
- Alice needs to be online during the round
- ASP liquidity is required immediately
Send Async (or Out-Of-Round):
- Alice prepares a redeem tx (spends Alice’s VTXO into a Bob’s VTXO)
- Alice ask the ASP to co-sign the redeem tx
- Alice sends the redeem tx to Bob (it doesn’t matter how)
- Bob can use this redeem tx to join a round now or later (up until Alice’s VTXO validity)
- Alice doesn’t need to be online during the round
- ASP liquidity is required later (only when Bob joins the round)
- Up until joining the round, Bob is trusting Alice + ASP don’t collude to double spend him
For a more detailed explanation, check Payments and Out-of-Round Payments on arkdev.info
Related: Ark explainer