karliatto · freedomtechsummit.com · Prague 2026
Value held by a neutral mechanism until agreed conditions are met — then released to the right party.
Historically a person. Today, increasingly, just code.
Bob is selling his house to Alice. Carol holds Alice's BTC and Bob's deed until both sides fulfil their obligations — then releases each to the right party.
Three distinct models — each one reduces trust a step further.
A person or platform holds the funds and decides. Reintroduces the trusted third party Bitcoin was built to remove.
Silk Road · Web of Trustm-of-n address — classically 2-of-3. No single key moves the funds. Bitcoin's first non-custodial escrow primitive.
P2SH · 2012Release conditions enforced by Script or Layer 2 itself — HTLCs, DLCs, shared-UTXO. Escrow stops being a service.
Atomic · trust-minimizedBuyers sent BTC into Silk Road's internal "bank." The platform held funds, released on confirmation, and kept an 8–15% cut.
Pure custodial trust — the very thing Bitcoin was meant to make obsolete.
OP_IF OP_SHA256 <hash-of-secret> OP_EQUALVERIFY <recipient pubkey> OP_CHECKSIG // hashlock: reveal secret → claim OP_ELSE <timeout> OP_CHECKLOCKTIMEVERIFY OP_DROP <sender pubkey> OP_CHECKSIG // timelock: silence → refund OP_ENDIF
Recipient claims only by revealing the preimage. Revealing it on one hop hands the key to claim every linked hop too.
No reveal before <timeout> → sender reclaims. A built-in refund, enforced by the chain itself.
Powers Lightning routing (one hash, every hop settles atomically — all or nothing) and submarine swaps like Boltz (on-chain + Lightning HTLC, same hash, complete or revert together).
Bitcoin's scripting language is deliberately small — predictable, auditable, hard to break. That restraint draws a hard line around what a contract can ever know.
Important detail: signatures can be used without an explicit request from the contract participants
payer_happy (0), payer_dispute (1), payer_cancel (2)payee_happy (0), payee_dispute (1)arbiter_payee (0), arbiter_payer (1)| Leaf | Script (miniscript) | Who must sign | Condition |
|---|---|---|---|
| Happy path | and(pk(payer_happy), pk(payee_happy)) | Payer + Payee | mutual agreement |
| Dispute, payee wins | and(pk(payee_dispute), pk(arbiter_payee)) | Payee + Arbiter | — |
| Dispute, payer wins | and(pk(payer_dispute), pk(arbiter_payer)) | Payer + Arbiter | refund |
| Cancellation | and(pk(payer_cancel), older(timelock)) | Payer only | only after timelock blocks |
Best for small amounts, short windows. Mostro builds its decentralized P2P exchange on exactly this — hold invoices + Nostr messaging, no accounts, no KYC.
Hold invoices are LN invoices where the receiver doesn't immediately release the preimage upon receiving a payment. Instead, the receiver performs some action and then either accepts the payment, explicitly rejects it, or lets it time out.
Every block the HTLC stays locked ties up liquidity for every hop on the route — and edges closer to a costly on-chain force-close.
TBD
Hodl Hodl · Bisq (2-of-3) · Mostro (hold invoices + Nostr)
Boltz submarine swaps — linked HTLCs, on-chain ↔ Lightning, same hash: complete together or revert together
Firefish — 3-of-3 escrow, pre-signed recovery paths
DLCs — multisig + oracle attestation as escrow for outcome-based payouts: prediction markets, hedges, synthetic loans
Silk Road's custodial "bank" — the trusted-third-party model everything since has been built to replace