Setting up a Bitcoin username | sethforprivacy.com


BIP 353: Making payments social, one DNS entry at a time



Onion Details



Page Clicks: 0

First Seen: 03/12/2024

Last Indexed: 10/23/2024

Domain Index Total: 84



Onion Content



Table of Contents What payment info should I use? Privacy and security concerns Getting a Silent Payment address and/or BOLT 12 invoice Silent Payments via Cake Wallet BOLT 12 invoice via Phoenix Wallet BOLT 12 invoice via Zeus Getting a domain Setting up your Bitcoin username Creating your Bitcoin username on Njalla Creating your Bitcoin username on Namecheap Test out your new username Usernames for Monero Conclusion Appendix: Additional community-recommended domain providers One of the trickiest things in the cryptocurrency space is finding out how to pay someone repeatedly without having to pester them for new addresses. The core technical hurdle of this user experience hurdle has been resolved in Monero from the start with stealth addresses, and more recently in Bitcoin with the growing adoption of Silent Payments (essentially stealth addresses for Bitcoin) and BOLT 12 invoices (reusable, privacy-preserving invoices for Lightning). But once you have a privacy-preserving, reusable payment method, how exactly does someone find you? Do they message you once for this long string of characters? Do you post it in your X bio? How about Nostr? BIP 353 aims to solve this and make payment info easily accessible without needing to run a server at all. Simply adding your payment info as a DNS entry (a “TXT” record to be specific, but we’ll get into that) allows any wallet supporting BIP 353 to securely resolve and validate the payment details without any interaction. In essence, BIP 353 gives anyone with access to a domain the ability to have their own custom usernames with just a few clicks of a mouse. What payment info should I use? # One aspect of Bitcoin usernames that is vital to understand is that you should never use them with a standard Bitcoin address or a one-time BOLT 11 invoice. Setting a standard Bitcoin address with your Bitcoin username would allow anyone to easily see all payments made to/from that address, as you’d be forcing anyone who paid you to reuse the same receive address for you. On the opposite spectrum, BOLT 11 invoices can only be used once, so if you set that for your username you would have to rotate it out for a new invoice every time someone paid you, a painful process requiring automation of some sort. Thanks to the growing adoption of Silent Payments and BOLT 12 invoices with integration into wallets like Cake Wallet , Phoenix Wallet , and Zeus , anyone can easily generate reusable payment codes for on-chain and Lightning, allowing you to set a static DNS record and get paid, over and over, without linking any two payments together. Privacy and security concerns # While DNS isn’t a silver bullet, the power it brings here for user experience is well worth the tradeoffs, IMO. It’s still quite easy to register a domain anonymously, using privacy-preserving payment methods, and the use of DNSSEC in BIP 353 protects you against the simplest attacks. That being said, here are some quick tips to keep in mind when setting up and using a Bitcoin username: Be sure to use a domain provider that is well-known and trusted! A malicious domain operator (or simply an incompetent one that gets hacked) can replace your payment details with their own as they see fit. While this is extremely rare, it is possible, and the easiest solution is just to use a well-known, vetted domain provider. The two most well-known and trusted that accept Bitcoin etc. for payments are Njalla (as used in this guide) and Namecheap. Ideally use a provider that provides domain privacy, and one that doesn’t require real information. Most domain providers give you the option to hide the info used to register your domain (i.e. name, address, contact info) but some don’t do this by default. Njalla does protect your info by default, but Namecheap has an additional add-on you have to purchase/enable to protect your info. For now I believe it is always free, but that could change in the future for Namecheap specifically. Only use privacy-preserving payment info in your username. Just like Silent Payment addresses and BOLT 12 invoices, your domain does not change. While this can provide privacy of one kind (preventing address reuse and protecting your node’s privacy) it can also be used to link your sharing of this username across platforms. Be sure not to use a username intended to be anonymous/pseudonymous alongside your real identity etc. Getting a Silent Payment address and/or BOLT 12 invoice # I’ll lay out the three apps I love the most to get reusable, privacy-preserving payment info from, but hopefully the number of apps supporting these in the Bitcoin ecosystem will increase rapidly! If you already use one of these wallets feel free to just follow the instructions below, or if not, pick your favorite and roll from there. Silent Payments via Cake Wallet # Download Cake Wallet Set up a new Bitcoin wallet Backup your new seed phrase! Hit “Receive” at the bottom Tap the drop-down chevron beside “Receive” at the top Select “Silent Payments” Copy the address and send it yourself so you can easily copy-paste it on your computer, using something like Signal’s “Note to Self” GIF of setup BOLT 12 invoice via Phoenix Wallet # Download Phoenix Wallet Set up Phoenix for the first time Backup your new seed phrase! Tap “Receive” at the bottom Tap “Show reusable QR code” Copy it out or share it with yourself using something like Signal’s “Note to Self” GIF of setup BOLT 12 invoice via Zeus # Download Zeus Setup a new wallet (either using the quick start self-contained node or connecting to your own CLN node) Note that LND does not currently support BOLT 12 and likely won’t for months yet, unfortunately Save your new seed phrase (if applicable) Swipe left-to-right on the “Lightning” pill on the home screen Tap on “Pay Codes” Set a label for the BOLT 12 pay code if desired Select the new pay code Long-press on the BOLT 12 field to copy out the invoice, and send it yourself so you can easily copy-paste it on your computer, using something like Signal’s “Note to Self” GIF of setup Getting a domain # Now comes the hardest part of all of this. In order to use BIP 353, you have to own a domain (something like sethforprivacy.com as I have here) to be able to set these payment instructions up on. This is still pretty straightforward but I’ll walk you through it on my favorite domain registrar, Njalla . These steps will have you use the Tor browser to gain a bit more anonymity from Njalla when setting up your domain, but if that isn’t necessary for you (i.e. you plan to use the domain for other things that would be linked to you anyways) feel free to use their normal website. Download the Tor browser if you don’t already have it Open Tor, and navigate to https://njallalafimoej5i4eg7vlnqjvmb6zhdh27qxcatdn647jtwwwui3nad.onion/ Search for a domain that you find interesting, being as vague or specific as you want If you see a fitting domain, simply click “Select domain” Select “Check out” Create an account Ideally, you should use something like SimpleLogin for an email alias here Also, you should use a strong, unique password using something like Bitwarden Once you get to your cart, click “Add funds” at the bottom right Add funds using your preferred payment method I would highly advise paying with something privacy-preserving like Monero (or post-mix funds if paying with Bitcoin) to ensure you don’t have financial ties back to yourself from the domain Select “Pay Now” once funds are confirmed And that’s it! You’re now the proud owner of a new domain that you can use for BIP 353 Bitcoin usernames (among many other things). Setting up your Bitcoin username # Once you have a domain, it’s time to finally set up your username. For this step, be sure you’ve first created a Silent Payment address or BOLT 12 invoice as detailed above, as we’ll need it for this to work. Be sure you’re logged in to your Njalla account you created previously (or the domain provider of your choice) before starting here. As Namecheap is another extremely popular domain provider, I’ll also detail the steps for Namecheap configuration below for those who need it. Creating your Bitcoin username on Njalla # Go to the “Domains” tab Select “Manage” on the far right of your preferred domain Select “Add record” at the bottom left Change the “Type” dropdown from “A” to “TXT” For the “Name” field, enter username.user._bitcoin-payment , replacing username with whatever you prefer (i.e. tips ) This will be the username before the @domain.com portion of the BIP 353 address For the “Content” field you need to create a string in a specific format (specified by BIP 21 ) If you want to only use a BOLT 12 invoice, enter the following, replacing “REPLACE_ME” with your BOLT 12 invoice (the string starting with lno that you got from Phoenix or Zeus) bitcoin:?lno=REPLACE_ME i.e. bitcoin:?lno=lno1pgqpvggzrdhszmg5yafguxmkm779vd8jftxskjyadjdrallmq8uxfjdjfyaq If you want to only use a Silent Payments address, enter the following, replacing “REPLACE_ME” with your Silent Payments address (the string starting with sp1 that you got from Cake Wallet) bitcoin:?sp=REPLACE_ME i.e. bitcoin:?sp=sp1qqweplq6ylpfrzuq6hfznzmv28djsraupudz0s0dclyt8erh70pgwxqkz2ydatksrdzf770umsntsmcjp4kcz7jqu03jeszh0gdmpjzmrf5u4zh0c If you want to use both BOLT 12 and Silent Payments for the same username, replace “REPLACE_ME_BOLT_12” with your BOLT 12 invoice (the string starting with lno that you got from Phoenix or Zeus) and “REPLACE_ME_SP” with your Silent Payments address (the string starting with sp1 that you got from Cake Wallet) bitcoin:?lno=REPLACE_ME_BOLT_12&sp=REPLACE_ME_SP i.e. bitcoin:?lno=lno1pgqpvggzrdhszmg5yafguxmkm779vd8jftxskjyadjdrallmq8uxfjdjfyaq&sp=sp1qqweplq6ylpfrzuq6hfznzmv28djsraupudz0s0dclyt8erh70pgwxqkz2ydatksrdzf770umsntsmcjp4kcz7jqu03jeszh0gdmpjzmrf5u4zh0c Select “Add” at the right Go to the “DNSSEC” tab Select “Enable DNSSEC” DNSSEC is a protocol to ensure that no one between you and the proper DNS server can replace the TXT record with their own payment information, and is a vital security aspect of BIP 353. Without it, your username won’t work! And that’s it! You should now be able to receive payments at your new username, sharing it as username@domain.com , in this instance tips@bip353.com . Creating your Bitcoin username on Namecheap # Log in to your Dashboard Select “Manage” on the right side of your domain Select the “Advanced DNS” tab on the top right Select “Add new record” under the “Host Records” section Change the drop-down from “A record” to “TXT record” For the “Host” field, enter username.user._bitcoin-payment , replacing username with whatever you prefer (i.e. tips ) This will be the username before the @domain.com portion of the BIP 353 address For the “Value” field you...