Bitcoin is a peer-to-peer electronic cash system that was created in 2009, and since the launch of the chain, every single payment ever made is kept on every full node now and into the future as new full nodes spin up and secure a copy of the chain from the genesis block.
While Bitcoin is a decentralised system, meaning that it is not subject to government or financial institution control, it doesn’t mean authorities can’t use the data housed in it for their own purposes. Bitcoin’s unstoppable code and uncensorable payments make Bitcoin an attractive option for people who want to maintain their financial sovereignty, but its pseudo-anonymous nature does leave some room for privacy improvements.
Since Bitcoin transactions are public and can be traced on the blockchain, this means that it is possible for someone to track your Bitcoin activity and learn about your spending habits. This is mostly done by chain analysis firms who specialise in reviewing on-chain data and consolidating it with metadata from KYC services. The erosion of privacy can be a problem for people who want to keep their financial activity private, such as journalists, activists, and whistle-blowers, but it also threatens the fungibility of coins as some historical records of a UTXO could label it a tainted coin.
It is important to note that there is no way to completely protect your privacy when using Bitcoin. The blockchain is a public ledger, and anyone can see all transactions that have ever been made. However, there are several proposals at work that can give users additional layers of privacy when transacting on-chain; PayNyms, Stealth Addresses, Whisper Addresses and Silent Payments all aim to tackle this issue with different trade-offs, and Private Payments are yet another option.
What are Private Payments?
Private Payments is a new BIP for creating and using payment codes in Bitcoin. It is designed to improve privacy by making it more difficult to track payments on-chain by encrypting addresses. Private Payments uses a new type of payment code that is generated on the fly and used to create a payment notification.
The notification in the OP_RETURN along with your public key is used to retrieve the payment. This means that the payment code cannot be associated with any particular wallet or address like the assumption made with a standard payment, making it more difficult to track payments.
Notifications are performed by publishing transactions that contain a 40-byte OP_RETURN
output. The value of the OP_RETURN
is constructed using a specific formula.
Private payments can be used across address types
Address type flags determine which address types a payment code accepts. This is represented by big-endian ordered 16 bits. For instance, a hypothetical payment code that handles all address types will have all defined bits set to 1 (0xffff
).
Currently defined flags:
Address Type | Flag | Flag Value | Ordinal Value |
---|---|---|---|
P2PKH | 1 << 0 | 0x0001 | 0 |
P2WPKH | 1 << 1 | 0x0002 | 1 |
P2TR | 1 << 2 | 0x0004 | 2 |
How a Private Payment would work
Alice and Bob each have a Bitcoin wallet. Alice wants to send Bob some Bitcoin, but she wants to do it in a way that no one else can see the transaction. To do this, Alice uses her wallet to create a payment code.
This is a string of letters and numbers that Bob can use to receive Bitcoin from Alice.
- The payment code is a one-time use code that can only be used to receive Bitcoin once. This helps to prevent someone from tracking Alice’s payments to Bob.
- ECDH is a cryptographic protocol that allows two parties to generate a shared secret key without revealing their private keys to each other. This shared secret key is used to generate the common set of addresses.
- Coin control is a technique that allows Alice to control which coins she uses to make a payment. This can help to obfuscate the transaction further and make it more difficult to track.
Alice then sends the payment code to Bob.
Bob can import the payment code into his wallet, which will extract Alice’s public key from it. Bob then uses his own private key to perform a mathematical operation called ECDH. This operation will generate a common set of addresses that both Alice and Bob can watch.
When Alice wants to send Bob some Bitcoin, she sends it to one of the addresses in the common set. Bob can then use his wallet to see the incoming transaction, even though it doesn’t show his address.
This process ensures that Alice and Bob can pay each other privately in Bitcoin. No one else can see the transaction, not even a chain analysis company.
What are the drawbacks of using Private Payments?
Private Payments are a new standard, so there are a few drawbacks to using them, including:
- Not all wallets support Private Payments: This means that you may not be able to use Private Payments if you are using an older wallet, and the sender and receiver would both need to be in one the fact that you will be using this method to pay one another.
- The complexity of execution: Private Payments are a more complex standard than previous standards for payment codes. This means that there will be a learning curve involved, and wallets will need to provide UI to help users along the way to make the process less daunting. As with everything new in Bitcoin, it comes with a learning curve, so be prepared to get stuck in and learn if you want to preserve your privacy and the privacy of those you interact with on-chain.
- Scanning requirements: As is the case with silent payments, you will need a node to perform a scan of transactions, but it is not as honourous as silent payments. The scanning requirement on the recipient side requires access to full blocks in order to search them for OP_RETURN outputs containing notifications.
Private payments compatibility with other private payments methods
Private Payments is not compatible with any previous standards for payment codes, such as BIP47, also known as PayNyms. This means that wallets that support Private Payments cannot be used to receive payments that were generated using any of those standards.
Do your own research.
If you want to learn more about private payments, use this article as a jumping-off point and don’t trust what we say as the final say. Take the time to research, check out their official resources below or review other articles and videos tackling the topic.
Are you a Bitcoin and privacy fan?
Have you been using Bitcoin privately to mask your on-chain footprint? What is your preferred method of masking your transactions? Which app is your favourite? Have you tried all the forms of privacy payments? Which one do you prefer? Do you have any tips for keeping chain analysis in the dark?
Let us know in the comments down below.