-
Notifications
You must be signed in to change notification settings - Fork 0
Private Offers
A private offer lets you trade off-market — with a specific friend instead of posting to a public board. Instead of advertising terms on a transport, you produce a signed slip and send it directly, over any channel you like (chat, email, paste).
For the full treatment see the private-offers chapters in both handbooks: Pact https://github.com/PoC-Consortium/satchel/tree/master/docs/handbook-pact and Satchel https://github.com/PoC-Consortium/satchel/tree/master/docs/handbook-satchel.
A slip is the same signed offer envelope used on the boards, just base64url-encoded with a pactoffer1: prefix — no new wire fields, nothing posted anywhere. When your counterparty takes it, the engine re-verifies the signature before doing anything.
-
Make — in Satchel's Create slip screen (or
makeprivateoffer), fill the offer form and get a copyablepactoffer1:…string. It is stored locally and not posted to any board. - Send — paste the slip to your counterparty over whatever channel you trust.
-
Take — they paste it into Take a slip (or
takeoffer). The engine decodes, verifies the signature, applies the gates, and sends a sealed take back to the maker via the relay. -
Cancel — withdraw an outstanding slip from My slips (or
cancelprivateoffer).
The take travels back as a sealed blob through the relay/board, so the maker must stay online and polling to receive it and continue the swap:
maker: makeprivateoffer ──► paste slip in chat ──► friend: takeoffer
▲ │
└────────── sealed take via relay mailbox ◄────────────┘
(maker polls, then the swap proceeds on-chain)
A slip is a bearer instrument — whoever holds it can take it. That is safe because the terms are fixed and the settlement is atomic:
- The offer's terms (amounts, coins, timelocks) are baked into the signed slip and can't be altered.
- Settlement is the same trustless atomic swap — the maker funds first, the chain enforces the deal, and neither side can run off with the other's coins.
- Slips carry a TTL (~24h) and auto-expire, so a leaked-but-untaken slip simply lapses.
Satchel / Pact — trustless P2P atomic swaps · docs verified @ 90fd55d · Repository · License