Skip to main content
Quiz · 12 questions · ~15 minutes
Scoring: 10–12 you can defend the saga design. 7–9 solid, revisit the misses. Below 7 re-read the settlement saga and the chain layer.

Ethereum. 12s × 12 confirmations = 144s. Polygon: 2s × 128 = 256s.Polygon has blocks six times faster and settles nearly twice as slowly. Block time and finality depth are inversely related by design: fast, cheap blocks are individually less expensive to orphan, so more are needed for equivalent confidence.The cleanest version of the point: Base and Polygon have identical 2s block times and a 12× difference in settlement window.
Exactly what it was before. Not approximately, and not net of fees.The reserve reversal returns the full €1,000.00: corridor fee and FX spread included. Arc absorbs the cost of a failed transfer.The suite also asserts the ledger balances in every currency and every intermediate account is back to zero.
None. Compliance is a hard pre-condition, and it runs before reserve.A rejected or flagged transfer never reaches the first step that posts anything, so there is nothing to compensate. compliance is the only step whose compensation is genuinely a no-op.
Retry: RailError.retryable is true for a timeout.A timeout is not a failure; it is the absence of information about whether the payout landed. That ambiguity is the entire reason idempotency keys exist. Resubmitting with the same key returns the original receipt if the rail already acted.A rejection: account_closed, invalid_beneficiary: is retryable: false. Retrying it just fails again, more slowly.
No. Nothing un-sends a confirmed on-chain transaction.The compensation is a ledger-level unwind representing funds recovered from the settlement partner. That limitation is real and stated rather than papered over: the ledger records a claim against the partner; the chain records the transfer. Different facts.
No, deliberately. Gas was really spent.Reversing it would misstate the expense and produce a balanced ledger that lies about reality. The journal is not tracked for compensation, and it balances on its own, Dr expense.network_fee.ETH, Cr asset.float.chain.ETH: so the trial balance stays zero either way.
No, and that is the trap. Reversals commute, so the balances are identical.Order matters for two non-arithmetic reasons: the rail recall must precede the settlement unwind, and each reversal journal must describe the step it actually undoes. Forward order produces a balanced ledger with a false audit trail.Forward order passed all sixteen tests until two ordering assertions were added.
Not tomorrow: the day after, or later across a weekend.The delays compound: it queues to the next opening, and then takes the rail’s normal latency. Missing by an hour costs a day. Thursday 16:00 → Friday’s batch → T+2 across a weekend → Tuesday.Arc asserts this exact arithmetic. A test checking only “later than submission” would pass an implementation that adds one hour.
No. Broadcasting without error means the transaction reached the mempool: nothing about inclusion, finality, or whether it reverted.Arc re-reads the transaction and requires final. Checking final rather than “no error was thrown” is the difference between confirming settlement and confirming submission, and the wrong version looks correct until the day something is dropped.
Failed. It was mined, executed, and reverted: consuming gas. Dropped never made it into a block and cost nothing.They need different compensation, which is why the simulator models them as distinct terminal states rather than collapsing both into “error”.
No. The TTL is 30 seconds and assertUsable throws.A quote is a short-dated option you have written and given away for free. The customer exercises it if the rate moved in their favour and abandons it otherwise, so honouring a stale quote is a systematic unhedged loss, not a random one.The check happens at execution, not at display. Validating when the screen rendered tells you nothing about the state when the button was pressed.
compensation_failed: a distinct terminal state from compensated, precisely so it can be alerted on.The saga stops rather than retrying blindly into a partially-unwound state. This is the one outcome that needs a human, and a real system escalates it to an operational case with the completed and failed steps attached.In Arc that case management is Phase 8 and does not exist yet, which is a stated gap rather than a solved problem.

Ledger quiz

The other twelve, on double-entry and exactness.

IRL Scenarios

Seven of these answers are stories. Those are the ones worth retelling.