Join 94,438 users already on

Improved Bitcoin Cash Privacy with RPA Paycodes - Tutorial

7 263 exc
Avatar for Pantera
Written by   1277
10 months ago

Bitcoin Cash materializes Monero-level privacy with the new Electron Cash feature: "RPA Pay Codes" (Reusable Payment Addresses).

Monero privacy is based on hiding the identity of the transaction peers with the use of “ring signatures” and onetime keys (stealth addresses) for each transaction. It achieved better privacy with the development of “Ring Confidential Transactions” (or Ring CT), which in addition obfuscates the amount of each transaction.

While Bitcoin Cash as a blockchain is not oriented towards privacy, we have some solutions already and the recent implementation of the open-source development of “Reusable Payment Addresses” by the Electron Cash wallet is another step towards increasing the privacy of Bitcoin Cash users.

Electron Wallet has already integrated Cashfusion which performs shuffling of BCH with the use of Tor client and provides increased anonymity by obfuscating and mixing transactions.

These two features combined provide ultimate anonymity levels for Bitcoin Cash!

Reusable Payment Addresses (RPA)

Reusable Payment Addresses generates a "Pay-Code" which is a new receiving public address that is not linked to the previous addresses of the user. It gives a new receiving address for each payment, creating better terms of anonymity.

Together with Cashfusion, it creates an obfuscating combination that would make it virtually impossible for an outside researcher to track the route of funding.

The upgrade is still in an "alpha" stage and requires Electron Cash v. RPA release of the wallet. This version is available to download from Github (link).

Another important feature of RPA Pay-Code is that it can be combined with the "Cash Accounts" feature of the Electron Cash wallet.

The Reusable Payment Addresses proposal was introduced by Imaginary_Username on his repository at GitHub.

RPA is still not functional for multi-sig addresses and Imaginary_Username explains why:

Source: Reddit

Electron Cash - RPA Tutorial

Developers recommend using RPA only for testing with small amounts until it becomes fully implemented in future Electron Cash releases.

*Please do not send any funds (tips) to these addresses, not even for test purposes as I will use these keys for test only (and for the reasons of this presentation) and I will discard them afterward.

Tutorial - Steps to create a Reusable Payment Address Wallet using Electrum Cash RPA.

For this example, I created a new Bitcoin Cash wallet on Electron Cash v.

First, we download Electrum Cash from GitHub.

I downloaded the installable file and set up Electron Cash on an old laptop that I'm currently using for this tutorial.

With this tutorial, we will create a new Electrum BCH wallet with RPA functionality. I used the name “pantera” for my new wallet and proceeded with selecting to create a Reusable Payment Address Wallet.

After that, as usual, we are given the seed phrase that we enter to verify we written correctly.

We validate the password we selected previously to perform RPA background synching.

On receive section we have the RPA Pay Code.

Important to notice that currently the server we should be connected to is

Network specifications should be as in the image above. Most probably, we will be connected to another server and port. If we are not on the same server as with the image above, the steps are:

  • Open the Network Options from the Tools menu

  • On the second tab “Server”, deselect “Select server automatically”

  • From the servers’ menu select: and use port “50102"

The paycode will be in a form like this one:


I opened a second test-wallet (default_wallet) which I used to send a small amount of BCH to test. The second wallet is a default one (not RPA), but I tested connected with the same server as shown above.

I don’t think the sender wallet can send RPA transactions, while connected on a different server. So it is better to have both wallets connected to

While waiting, the progress bar gets filled:

Seconds later, the transaction is transmitted and sent.

In case our transaction is still not showing in the receiver wallet an option that can help is refreshing the RPA transactions through the tools menu.

The transaction, in my case, required to refresh RPA. I received it in this address: bitcoincash:qpwduppzlhaaya4zlgagq9jj655hrgc39vrjfnssns

This was the second one I made, though.

The first one took a little longer for the wallet to display. This address received the first one: bitcoincash:qrz80flavv8x6ety3m73pfrlkypmnjeckc760uvm26

I made a third transaction that took a little longer to conclude.

The first two were relatively fast,(less than a minute) but the third one took a few minutes to “grind through signatures”.

The test was concluded successfully and privacy features may demand some more time, especially when the software is still at an “alpha” stage.

It will be a feature that will become very popular once the testing period ends.


Image from Unsplash, by Becca Tapert, (modified)

Financial privacy is as important as any other fundamental human right. Our sensitive private information is collected and sold and we don’t even notice it. The websites we use, the shops we visit, and every kind of financial transaction we make leaves behind a trail of our consumer habits.

Financial and other private information is data-mined and eventually sold. More than often, our financial information will be leaked in the darknet markets if we don’t take care of our privacy.

Privacy features like this one, have immense importance in increasing Bitcoin Cash adoption in the merchant and business sector, but also equal significance for retail users.

Overall, RPA is a feature that provides new public addresses for each transaction. And this is how we are supposed to be using Bitcoin, by not reusing the same addresses.

This feature does that automatically and I think that especially those businesses that deal too often with Bitcoin Cash will embrace it. Every user will find RPA to be a great tool at their disposal.

Congratulations to Imaginary_Username, Electron Cash, and the rest of the developers that took part in the discussions, coding, and testing of this essential feature.





Lead Image From: Pexels, by Anthony Shkraba, (modified)

JOIN and earn BCH with your skills!

Follow me on:

● ReadCash ● NoiseCash  ● Medium ● Hive ● Steemit   ●Vocal ● Minds

● Twitter ● LinkedIn Reddit

$ 23.06
$ 20.64 from @TheRandomRewarder
$ 1.00 from @mtrycz
$ 0.53 from @Telesfor
+ 13
Avatar for Pantera
Written by   1277
10 months ago
Enjoyed this article?  Earn Bitcoin Cash by sharing it! Explain
...and you will also help the author collect more tips.


Is paycode and bitcoin cash address is different??? Btw , you donate a great information about BCH.

$ 0.00
10 months ago

The paycode will be always the same, unless you make another one. But each time someone sends money to the paycode, it will generate a new public address. This way you can always use the same paycode and have your funds in different and not connected bitcoin cash addresses. And you contol all these addresses with Electron Cash.

$ 0.00
10 months ago

Thank you so much for clearify

$ 0.00
10 months ago

Hmmmn!...I'm WO seeing how you managed to come about these whole idea but I'd like to even learn it the more even if it's getting rather too difficult for me to learn. I still believe that you shall yet again and again come up with more posts as this in order to further educate persons like me

$ 0.00
10 months ago

If you ever need increased privacy remember that you should be using unconnected addresses.

$ 0.00
10 months ago

Good article and explanation man! Gives a very clear overview

$ 0.00
10 months ago

Thanks. It is a feature that I always thought it was required. Hope that the tutorial is easy, and I hope this development will become integral in future Electron Cash releases.

$ 0.00
10 months ago