The PrivateSend is an enhanced and extended version of CoinJoin. In addition to the main concept of CoinJoin, we employ a series of improvements, such as decentralization, strong anonymity using a chaining approach, denominations and passive mixing. The biggest challenge in improving the privacy and fungibility of a cryptocurrency is doing it in a way that doesn’t obscure the entire blockchain.
In encryption cryptocurrencies based on Bitcoin protocol, you can say which outputs are not spent and which are, commonly called UTXO (unused transaction output). This results in a public record that allows any user to act as guarder of the entire integrity of transactions.
The Bitcoin protocol is designed to work without the participation of reliable counter-parties and, in their absence, is essential that the audit resources remain readily accessible to users through the public blockchain.
Our aim is to improve privacy and fungibility without losing these key elements that we believe to be a successful currency.
When having a decentralized mixing service within the currency, we gain the ability to keep the coin itself perfectly Fungible. The fungibility is an attribute of the money, which determines that all units of a coin remain the same.
When you receive money within a cryptocurrency, it should not come with no history of previous transactions, users should have an easy way to disassociate this history, thus keeping all cryptocurrencies equal.
At the same time, any user must be able to act as an auditor to ensure the financial integrity of the public book without compromising the privacy of others.
To improve fungibility and maintain the blockchain integrity public, we propose the use of a mixing strategy without trust and decentralized. To be effective in keeping the coin fungible, this service is directly embedded in the coin, easy to use and safe for the average user.
PrivateSend function begins by breaking down a user’s transaction input into discrete standard denominations, these denominations being: 0.01 LQX, 0.1 LQX, 1 LQX, and 10 LQX. A user’s LQX wallet will then start a request to a LQX masternode, so that it is made aware that a user would like to mix a certain amount of LQX coins.
The masternode will then send a message to the network indicating that is ready to mix a denomination, and that there is a user waiting. Two other individuals, who also wish to mix the same amount of LQX, can connect to the masternode that is hosting the other user’s transaction, and a mixing session can commence. Within the mixing session, the masternode mixes up the inputs, and instructs all three users’ wallets to pay the now-mixed input back to themselves.
A user’s wallet must repeat this mixing session several times (each time is called a round), in order to ensure that fund origins are fully anonymized. Finally, it is also important to note that funds involved in the mixing process never leaves a user’s wallet, ensuring that the entire process can remain trustless and secure.
18.1 Tracking CoinJoin by quantities
A common strategy in the existing Bitcoin implementations of CoinJoin is simply merging transactions together. This exposes users to various methods of following users ‘ currencies through these united transactions.
On this transaction, 0.05 BTC was sent through the mixer. To identify the origin of the money, just add the values to the right until they match one of the values to the Left.
Dismembering the transaction:
• 0.05 + 0.0499 + 0.0001(fee) = 0.10BTC
• 0.0499 + 0.05940182 + 0.0001(fee) = 0.10940182BTC
This is exponentially more difficult as more users are added to the mixer. However, these sessions may be retroactively anonymized at any time in the future.
Through Linking and Forward Linking
In other proposed implementations of CoinJoin, it’s possible that a user to anonymized money and then send a change transaction for an exchange or other entity that meets the identity of the user. This breaks anonymity and allows the entity to walk backwards through the user’s transactions.
We call this kind of attack “forwarding Direct”:
On this example, Alice anonymizes 1.2 BTC, which goes to two Outputs, 1 BTC and 0.2 BTC.
It then spends 0.7 BTC of the output 1 BTC, receiving a change of 0.3 BTC. This 0.3 BTC goes to an identifiable source, confirming that Alice also has spent 0.7 BTC on the previous transaction.
To identify the sender of the anonymous transaction, start at “Exchange”, identify the transaction and rewind the blockchain until you reach to “Alice sends 0.7 BTC anonymously”. As the exchange, you know that was your user who recently bought something anonymously, thus completely breaking anonymity. Call this type of attack “through change of link “.