Paywall definition
Paywall commitment
Share this descriptor before anyone pays. It commits to the title, price, receiving address, deliverable, expiry, and network.
Canonical JSON
Descriptor pearl-paywall:v1:<hrp>:<hash>, hash = SHA-256 over the canonical JSON above. Anyone can recompute it; the Verify tab answers PROVEN or a loud NOT PROVEN.
Payment request
Watch for payment
Paste the buyer's paying txid and check it against Blockbook (GET-only), or poll it on an interval. Unconfirmed (0-conf) payments are flagged as provisional — never treat them as settled.
Recent payments
Newest first, from Blockbook (GET-only).
Mint access token
The buyer signs locally with the key that funded the payment (WIF, 64-hex, or BIP-86 mnemonic — in-memory only, never stored). The page refuses loudly unless the key controls a P2TR input address of the paying txid: the token signature must verify against an input address of the payment.
Access token
Bound to this paywall descriptor and this payment only. Paste it on the Verify tab, or hand it to the creator's snippet-gated page. A token is a backstage pass — whoever holds it can use it.
Standalone verifier
Paste a descriptor, its canonical paywall JSON, and an access token. The verifier recomputes the descriptor, fetches the payment from Blockbook, confirms it paid ≥ price to the paywall address, confirms the token key is a paying input address, and re-verifies the BIP-340 signature — then answers PROVEN or a loud NOT PROVEN.
Embed-config generator
Generates a dependency-free static snippet for your own site: it fetches the token's payment from public Blockbook, verifies payment + signature, then reveals your content. No external scripts, no build step.
Your snippet
Paste this where your locked content lives, with a hidden element (id="pw-content" style="display:none"), a token input, and a verify button using the ids above. Honest limits apply: snippet-level protection, not DRM.