Twelve Cash

Twelve Cash landing page

Introducing Twelve Cash, a simple way to share your bitcoin payment info with the world.

Some folks have already tried out this service through the latest @ZeusLN release or casual hearsay. However, @chdwlch and I never formally introduced Twelve Cash to the world after building it. Here we go.

I’m a designer and care about the UX of bitcoin. Chad is a lightning + nostr dev who is building streaming services that are built on a foundation of self-custody. We decided to join forces and problem-solve together by making a BOLT 12 offer that was human readable.

I had been thinking of human-readable offers for a while, and spoke about them at the Bitcoin Park Product & Design Summit last year. However, I was very inspired when I saw the lightning mailing list post from Bastien about putting offers in DNS records.

Chad and I got to work implementing Bastien’s mailing list post idea in late 2023 in our spare time, using offers generated by our fleet of Core Lightning nodes.

In February, Matt Corallo released the draft that became BIP-353, so we began to modify TwelveCash to conform to that spec.

And in April, we finally finished implementing by hooking up Matt’s awesome dnssec-prover wasm module into our application. Thanks Matt for your help and feedback with this! https://github.com/TheBlueMatt/dnssec-prover

Also thanks to @thejordanbravo for giving testing and feedback during the build process.

After that, Evan Kaloudis helped us to get our API integrated into Zeus so that folks with CoreLN nodes can make their own TwelveCash addresses from their phones. (Great work from Evan helping first-time contribs to his project).

After that, Chad and I decided to improve and ship more features for the Bitcoin 2024 hackathon. We added support for more BIP21 parameters in the API. You can now add onchain, silent payments, label…even LNURL if you desire that as a fallback.

Now you can check BIP-353 usernames in much more detail on the site. Here is my username: https://twelve.cash/stephen@twelve.cash

I have a lot of thoughts around where trust assumptions lie with BIP-353 and how we solve for these while still maintaining a great UX. But that might be a thread for another day. Anyway, here’s the code. Enjoy and let us know what you think.

https://github.com/ATLBitLab/twelvecash