Satoshi Escrow
A Bitcoin non-custodial peer-to-peer dispute resolution using only Nostr keys.
Motivation
When a Buyer wants to purchase something for a certain amount of BTC from a Seller but doesn't trust them, they can use our 2-of-2 multisig escrow address. The Buyer and Seller both lock their BTC in a multisig address. Both parties only need their respective Nostr secret keys (nsec) and each other's Nostr public keys (npub).
How it works
If the trade is successful:
- Both parties sign to release the funds
- Buyer receives his BTC back
- Seller receives his BTC back
If there's a dispute:
- Parties can choose a trusted third party (arbitrator)
- Arbitrator can help resolve the dispute after a timelock period
- Resolution requires 2-of-3 signatures (Buyer/Seller + Arbitrator)
Technical Implementation
We use Pay-to-Taproot (P2TR) multisig script path spends with a verified unknown discrete-log unspendable internal key. The system supports two resolution paths:
Collaborative Resolution
2-of-2 multisig between Buyer and Seller without timelocks.
Dispute Resolution
2-of-3 multisig between either party and the arbitrator with timelock.
Important Security Notice This application can be used offline on an air-gapped computer for maximum security. All transactions can be generated, and signed through the webpage offline.
Getting Started
-
Create Escrow Set up a new escrow address using npubs and specify amounts.
-
Sign Transaction Sign the transaction using your nsec key.
-
Combine Signatures Combine the signatures into a signed transaction.
-
Broadcast Broadcast the signed transaction to the Bitcoin network.
-
Spend Spend from the resolution address derived from your npub using your nsec.
You can learn more and try it n Testnet, Signet and Regtest from https://scrow.exchange/
Github repository https://github.com/storopoli/scrow