pull down to refresh

Ever had someone tell you "I paid you" while your wallet shows nothing? The honest answer to "did they really pay?" isn't a screenshot. It's the preimage.

boltproof is a tiny tool that proves a Lightning payment for real:

  1. Paste the invoice (the lnbc… you handed out)
  2. Paste the preimage (the secret the payer receives when the payment settles)
  3. It checks the invoice's signature and that sha256(preimage) == payment_hash

If it matches, the payment provably happened. The preimage is the receipt. Only the person who actually paid can produce it, there's no need for "trust me bro" in the loop.

Why I built it

  • Merchants and freelancers: confirm a customer actually paid before you ship.
  • Devs: a quick way to sanity-check BOLT11 invoices and preimages.

What I care about

  • Runs entirely in your browser. No account, no login, nothing stored. The invoice and preimage never leave your machine.
  • It verifies the node signature, so a tampered invoice (e.g. a swapped payment hash) gets rejected instead of quietly passing the check.

Isn't there already something for this?

Credit where it's due: Blink has a page that decodes BOLT11 invoices and checks preimages, and it works. But it's built for people who already know what a payment hash is, and it's tucked away where most folks never find it. boltproof is the focused version; one question ("did they pay?"), a plain-language answer, and nothing else to learn.

Try it: https://boltproof.app

Still early. I'd love feedback, especially from node runners on anything that feels off. Zaps welcome ⚡

Which wallets do merchants/freelancers receive payments on that don't report paid properly?

reply

Any custodial wallet can have a glitch and fail to account for. I recall some peers having issues with WoS. But these days it's mostly apps that do atomic swaps like the bull wallet that I've seen failures with. They all get sorted out in the end, but having a third-party website to use as an independent arbiter is always nice. Just handing out an hex string as "proof" for the recipient is often times not enough for non technical users.

reply
102 sats \ 3 replies \ @k00b 14 Jul

So the target user is someone:

  1. that's using a buggy wallet and
  2. understands what a preimage is
  3. has no way of checking if a preimage matches an invoice

This is a tool to workaround a serious bug in these wallets. It seems like getting WoS and @BullBitcoin_ to fix their wallets might be higher yield.

reply

This can also happen to exchanges with closed source software we have no ways to inspect or any hope to fix. So to address your points:

1- Bugs in software will always exist, and lightning is a complex beast.
2- Part of the motivation here is to teach folks that they can prove/verify a lightning payment. Maybe I should add a better "about" section explaining that.
3- A regular user who doesn't run a node has no way of checking. Some wallets do give out pre-image, but there's hardly any public resource allowing users to verify.

I can't go around fixing every single wallet my trade peers use, so a better use of my time was to put this together and have them use to verify my claim and also forward the same claim to their wallet/exchange support.

reply
2 sats \ 1 reply \ @k00b 14 Jul
Part of the motivation here is to teach folks that they can prove/verify a lightning payment. Maybe I should add a better "about" section explaining that.

The education is the part that's useful imho. The use case otherwise feels a bit hypothetical.

reply

Thanks for the feedback, I'll make sure I add it. But as someone that uses P2P trading quite a bit, let me assure you the use case is pretty real. It's not the first time I've ran into this issue with trading partners and it's pretty annoying to have to explain things. I'm scratching my own itch here.

Also I don't intend to cast shade to any wallet out there, like I said lightning is hard, lots of moving parts.

I'm actually surprised I couldn't find something like this out there. Most decent wallets do show a preimage as a payment proof. But then users have nowhere to go to easily and quickly perform a cross check as they'd do with an on-chain transaction.

reply