Privacy on Bitcoin Cash (BCH) now even better with Reusable Payment Addresses (RPA)

1 88

Developers of the flagship Bitcoin Cash wallet, Electron Cash, have released a working prototype of their software with Reusable Payment Addresses (RPA). This highly anticipated innovation stands to enable Monero-like transaction privacy on Bitcoin Cash (BCH).

As it currently exists, sending a payment on the Bitcoin Cash network, like most cryptocurrencies, requires the recipient’s public key. Commonly referred to as a wallet address, if you are required to publish your public key to receive payments in your business or donations online, you are exposing all its associated activity to prying eyes. This is a privacy nightmare and that’s where Reusable Payment Addresses come in; a new receiving address format called Paycode that generates a fresh public key for senders. Transactions sent to a Reusable Payment Address are indistinguishable from normal transactions and cannot be linked back to the Paycode, creating further obfuscation and anonymity.

The key use cases for RPA’s, as mentioned earlier, is any time that you need to publicly expose your wallet address. If you’re a business, you don’t want customers or competitors to see how much money you are bringing in. The same goes for anyone who receives donations as a form of income, such as streamers or YouTubers. This innovation makes Bitcoin Cash a desirable option for those kinds of people and it’s likely we’ll see more adoption as a result. The RPA paycode can even be linked to Cash Accounts, making the addresses easily readable and shared. Those who use RPA’s will enjoy enhanced privacy and when used in combination with Cash Fusion, another great privacy tool in Electron Cash, it would be near impossible for any outside entity to track the movement of your coins.

If you want to understand how RPA’s works at a highly technical level, the RPA specification document is available on Github. From a practical user standpoint, the use of RPA’s will be no different than that of public keys. When you create an RPA wallet it will generate a Paycode, the new receiving address format, which you can post publicly without fear of exposing your wallet transaction history. The sender simply copies the Paycode and pastes it into their wallet. After entering an amount and hitting send, the wallet will begin to “grind”. This is the processes through which a fresh public key is generated and in the software’s current state it may take a few minutes. Once complete, you broadcast the transaction and the payment is sent.

In my testing of this alpha software, I sent multiple transactions to the same Paycode and each time the payment was sent to a different public key with no prior transaction history. This means it’s working as intended. All the transactions I sent showed up in the receiving wallet, however sometimes they would not appear initially. I would have to go into the ‘tools’ menu and click ‘Refresh RPA Transactions’ to get them to show up. This is to be expected with alpha software, but the good news is that I never experienced any loss of funds. If you want to give Reusable Payment Addresses a go for yourself, the alpha software can be downloaded from the Electron Cash Github repository. Keep in mind that it is in alpha, so it’s only recommended that you use it with small test amounts of Bitcoin Cash. Upon creating an RPA wallet you’ll have to go into the wallet server settings and change to the server with port 50102. This is the only server that currently supports RPA.

I am told by Electron Cash developers that they will be conducting a code review soon and after that they’ll look to release an improved version of this software. I’m hopeful that once it has left the alpha and beta stages, other Bitcoin Cash wallets *cough* *cough* implement this functionality so that it becomes the standard. Reusable Private Addresses are a real game changer. It makes Bitcoin Cash incredibly private and fungible while remaining easy to use and keeping fees low. This is peer-to-peer electronic cash.

$ 0.50
$ 0.50 from @nyusternie


Ok, I am curious how that looks like in practice. Does this mean I can print a public address to a paper and then the sender can use it, but his wallet must be compatible to understand that format?

What does the format look like exactly? Could you offer an example of such an address?

$ 0.00
2 years ago