← notes

Escrow is the whole product in a peer-to-peer exchange

Mar 15, 2019

Replicate LocalBitcoins for Latin America, in Spanish. Shipped as BitMae.

A Django app for peer-to-peer bitcoin trading. Matching buyers and sellers is the easy part and what people think the product is. The product is escrow.

Two strangers agree a price. One sends bitcoin, one sends fiat through a bank or a cash deposit, and neither has a reason to go first. The platform holds the coin while the fiat leg happens, which makes the trade a state machine where every transition has to say who may make it: funded, fiat marked sent, fiat confirmed received, released. Getting those permissions wrong is how you build a system where one party can self-release.

Timeouts are easy to omit and cannot be. A counterparty who stops responding halfway leaves coin in escrow indefinitely, so every state needs an expiry and a defined outcome, and the outcome differs depending on which side went silent.

Disputes are structurally hard rather than technically hard. The fiat leg happens entirely off the platform, so the arbitrator cannot see the thing being argued about, only screenshots and bank statements nobody can verify. Every P2P exchange lands on the same answer, which is that reputation carries the weight escrow cannot.