EN

Code on an escrow

4 minDifficulty Checked 2026-11-10
Key takeaways
  • A Smart Escrow is a normal escrow with a small WebAssembly program attached.
  • The program runs only when someone tries to finish that escrow.
  • It is a draft, XLS-100. It is not live on the XRP Ledger.

An escrow is a locked box on the ledger. Someone puts funds in. The box opens for the receiver when a rule is met.

Today the ledger knows two kinds of rule:

  • A clock. The box can open after a set time.
  • A password. The box opens for whoever presents the matching secret.

That covers a lot, but not everything. What if the box should open only when a named notary says so? Or only when the receiver holds a certain credential?

Smart Escrows are a proposal to allow a third kind of rule: a small program. The program sits on the escrow. When someone tries to open the box, the ledger runs the program. The program answers one question, yes or no: can this escrow finish?

The program cannot do anything else. It cannot move funds somewhere new. It cannot send transactions. It can only say yes or no for the one escrow it lives on.

The draft lists uses such as:

  • A notary escrow that only one account can release.
  • A hold that releases once the receiver has a credential.
  • Token vesting on milestones.
  • A release that depends on a price from an oracle.

All of this is a draft. It is not on the XRP Ledger today, and validators are not voting on it. The last lesson of this module covers its status.

Check yourself3 questions
1. When would a Smart Escrow's code run?
2. The escrow_finish function returns 0. What happens?
3. An escrow has FinishAfter, a Condition and Bytecode. Which must pass to finish?
Sources
Next lessonLimits, gas and data4 min