Draft the pact
Two parties, one oracle, 2–8 outcomes with exact payout splits. The desk derives the
2-of-2 Taproot funding address (NUMS internal key — no keypath backdoor) and seals a tamper-evident
descriptor. Payout rows must sum to exactly collateral − CET fee; the desk tells you the exact figure.
Sealed terms (carry to the next steps)
pearl-pact:v1:… is a SHA-256 seal over the canonical terms.
Paste the sealed terms into any later step (or the Verify box below) — any alteration breaks the seal.Verify a pact descriptor
Fund the pact
Both parties send their collateral to the funding address. Plan the joint funding transaction from each party's UTXOs — or fund with separate sends from your own wallets and just record the funding txid below.
Unsigned funding hex
Sign locally (both parties' keys must be in the page)
Signed funding hex — broadcast it, then record the txid
0 for the planner above; adjust if you funded manually).Seal the CETs
For each outcome the desk builds the Contract Execution Transaction, then each party adaptor-encrypts their signature to that outcome's oracle announcement point. Every encrypted signature is verified on the spot. Do this before funding — once sealed, neither party can hold the other hostage.
Contract Execution Transactions
Sealed pact bundle SEALED
Bundle JSON (exchange with your counterparty)
Execute the winning outcome
The oracle attests: it reveals the outcome secret t and signs the attestation.
The desk checks t·G against the committed announcement point, verifies the oracle's signature,
decrypts both adaptor signatures, re-verifies them as plain BIP-340 signatures, and emits the final CET.
Final CET hex — broadcast to claim
Refund — the insurance leg
If the oracle never attests, the timelocked refund returns each party's collateral.
Both parties sign it now, while everyone is cooperative. It becomes valid only after
nLockTime — before that, miners will reject it.