Bitcoin Donations for Everyone

Anant Tapadia
BitHyve
Published in
4 min readOct 8, 2020

Bitcoin is permissionless, you say? Bitcoin is for everyone, especially the ones in need, you say?

The bitcoin network offers us the most secure financial infrastructure. There is no other network where you could do a true peer-to-peer transaction and settle it in a matter of minutes without relying on a third party. Bitcoin, the asset, sats as we call them now, is one of the most liquid assets traded globally.

Bitcoin Donations

The above should make bitcoin the best medium for collecting donations for a cause from a global audience. And anyone should be able to do that without the fear of being identified, right? Not the case right now. The three practical options that exist today are:

  1. Use a static address: You can copy your address from your wallet and put it where your audience can see it and send donations. This means that everyone knows every donation you receive and can track it to the end of time. Address reuse is a HUGE privacy concern and should be avoided at any cost.
  2. Use a custodial service: You register with a service by providing them all your personal details and let them collect donations on your behalf. In the end, if they are happy with you, they may give you the funds after deducting their commission. Hardly permissionless, and we have seen several examples when this was easily stopped as they know who you are. And a commission for what?
  3. Run a server: Running a service like BTCpay Server is the most bitcoin way of doing this. You not only remove all intermediaries but also can verify the transactions. But unfortunately, running your server is not something that everyone can or wants to do.

(See update at the end)

Introducing the Hexa Donation Account

Hexa is a bitcoin-only, non-custodial wallet that does not require any personal information (not even email ID) to start using. So when you add a ‘Donation Account’ on Hexa, there is no personal information attached to it. The wallet asks you for a few details that you want to publish and generates a ‘Donation web view’ link. You can copy this link anywhere, from your Twitter profile or your GitHub page or send it on an email. You also get an option to copy a piece of code that you can embed on your website. That’s it; now, you can start receiving donations directly in your Hexa wallet’s Donation Account.

There are several benefits to this approach:

  • It is easier than having to run an always-online server.
  • The link generates an address every 10 mins, and you could also hide the transaction IDs on the web view. This is for your privacy.
  • The Donation transactions/ UTXOs do not get mixed with any other UTXOs in your wallet and can be managed independent of other accounts.
  • As no PII (personally identifiable information) is involved, no one can target a particular person or cause. (Caveat: See The Trade-off section)
  • You could also make your Donation Account 2FA enabled, making it a 2 of 3 multisig account, similar to the Hexa Savings Account.
  • Your keys, your coins.

A neat bonus is that if the donor uses Hexa to send sats, they can also pass on a small message, which will also be displayed on the web view if enabled.

The trade-off

To achieve this feature, the wallet generates an independent child xPub (which is not linked to any other xPub or the main wallet xPub). This xPub is stored on the relay with the ‘wallet agent’, which generates a Donation web view link that can be used anywhere.

This means that if the backend goes down, the Donation web view goes down with it. It is also possible for us to see all donation transactions (which is anyway the case unless you run your node). But, as we don’t have any personal info, we can’t connect identity to transactions. We could collude with the ISPs to connect your IP address to your identity or could be forced to do the same. However, the private keys never leave your wallet, so the funds are never at risk.

Coming soon…

We do not want to stop here. A peek into our Donations backlog:

  1. Ability to add multiple Donation Accounts for different causes
  2. Use PayNyms/ payment codes for receiving donations
  3. Connect your or a Friends and Family node and verify your donation transactions
  4. Ability to accept Lightning payment for donations
  5. PayJoin when sending to a Hexa Donation
  6. Ability to use Tor (onion network) for additional privacy
  7. A more responsive ‘Embed Code’ which works well on any site of any size
  8. Ability to add more details on your Donation web view like an image
  9. Ability to hide or archive an account
  10. Configurable address generation frequency

Update 08/02/2022

Some new options not discovered when this was written initially. Here they are with their Pros and Cons.

Tallycoin: A platform supporting multiple options for bitcoin donations has provided a new option for this use case. It is a great solution and supports Lightning. But as it is web based, you still need to create an account and the default means it will show a static address only. Plus there is no MultiSig option for donations.

Bolt 12: A new proposal for Bolt 12 QR codes can offer a reusable QR code that can accept LN donations. Very promising but not available yet.

If this is the first time you have come across the Hexa Wallet, there are more surprises for you. See our initial release thread here.

Hit us up on Twitter: @hexawallet or visit the website: www.hexawallet.io

--

--