Honest limits — read before real funds
- No real swaps were executed in testing — every flow below was verified with synthetic UTXOs only. The cryptography is real; the mainnet miles are not.
- The Bitcoin side is built by the counterparty's own tooling. This page never builds or signs Bitcoin transactions — it exports the exact BTC mirror template (scripts, parameters, step-by-step instructions) for independent reproduction.
- Needs live Blockbook + real funds. UTXO lookup, fee estimates, tip height and broadcast all go through the Blockbook endpoint you configure.
- The preimage is the money. Whoever reveals it claims the PRL. Generate it fresh per swap, back it up once, and clear secrets after the swap settles.
- Verify out of band. Both parties must independently re-derive the swap address from the shared spec and confirm the secret hash H before anyone funds anything.
- The builder tip on claims is optional — off by default, disclosed next to its checkbox at 1% of the claimed amount to the builder address shown there, and paid only inside a claim transaction Bob signs. Refunds never carry it.
Propose the swap
Alice (PRL side, initiator) and Bob (BTC side) agree on amounts, the secret hash, and two timelocks. This step forges the Pearl Taproot HTLC both sides can re-derive byte-for-byte — no PRL moves here.
T1 must be greater than T2, with a ≥144-block gap recommended. T1 is the absolute Pearl height in the PRL refund leaf; T2 is the latest point (as a Pearl height) by which Bob's BTC refund may become valid — the Lock step converts it to a Bitcoin height for the mirror template.
Secret — Alice generates the preimage; Bob works from the hash alone
⚠ This preimage controls the locked PRL. Back it up once, share only the hash, and clear it after the swap settles.
Swap address — both parties must re-derive this independently
Descriptor — compact coordination string
Shareable spec — tamper-evident JSON; carries no preimage, no private keys
Contract scripts (for review)
Claim leaf — Bob's
Refund leaf — Alice's
Load a swap
Lock the PRL
Alice funds the swap address from her own wallet. The funding transaction is built and signed locally; every signature is re-verified before the hex is shown. Broadcast is explicit and confirmed — nothing leaves until you say so.
⚠ This step moves real PRL. Review the transaction before broadcasting.
Funder key — mnemonic (BIP-86), WIF, or 32-byte hex private key
Funder UTXOs
| txid | vout | Value (PRL) | Confs | |
|---|---|---|---|---|
| No UTXOs loaded yet. | ||||
Add a UTXO manually — for air-gapped use; paste the prevout scriptPubKey for a belong-check
Build the funding transaction
txid:
Bitcoin mirror template — for Bob's side; Pearl Swap never builds BTC transactions
Hand this to Bob. He reproduces the BTC HTLC below with his own Bitcoin tooling — the claim leaf is byte-identical on both chains, and the template carries the exact parameters.
BTC scripts + counterparty instructions
Claim leaf (byte-identical on both chains)
Refund leaf (Bob's BTC refund)
Steps for Bob
Track the swap
Watch the swap address: funding, Bob's claim (preimage revealed on-chain), or Alice's refund after T1 — plus live countdowns to both timelocks.
Classify a spend — paste any transaction spending the swap UTXO (works offline)
Claim
Bob's path — claim the PRL
Bob spends the claim leaf, revealing the preimage on Pearl. Alice watches this transaction to learn the preimage for the BTC side.
⚠ This step moves real PRL and reveals the secret.
txid:
Alice's path — extract the preimage
Paste Bob's confirmed claim transaction. The page pulls the preimage out of the witness so you can claim the BTC with your own Bitcoin tooling.
Preimage
Claim the BTC
Use your own Bitcoin wallet/tooling with the mirror template from the Lock step. This page cannot build the Bitcoin claim transaction.
Refund
If Bob never claims, Alice reclaims the PRL after T1 through the refund leaf. The page refuses to build the transaction before maturity — and the wire format hard-codes nLockTime = T1 with input sequence 0xfffffffe.
⚠ This step moves real PRL.
txid: