As a follow up to my last article, I’d like to explain how Dash’s PrivateSend works and dispel some of the misinformation and disinformation floating around out there.
First, we need to understand what mixing is. On an transparent blockchain such as what Dash, Bitcoin, Litecoin, etc, use, all transactions can be viewed by anyone, and with chain analysis, it is possible to trace a transaction back to a person (provided the user has linked themselves to an identifiable account such as Coinbase). In order to prevent a transaction being traced back to you, a method of obfuscation called “mixing” can be employed. Mixing is where your inputs are intermingled with other user’s inputs to make tracing a transaction much more difficult, if not impossible. In the most simplest terms, mixing is like throwing 10 gold coins into a pot filled with other gold coins, and then pulling out a random selection of 10 different gold coins. You end up with the same number of coins (minus any fees of course) but because the coins have been randomized, no one can know the history of them.
Most mixers are services that are independent of the coin being mixed which introduces a number of potential security flaws, the biggest being that for most of them, you have to trust a centralized server as you have to actually send them your money to mix. Obviously this is risky because the mixing service has control of your money and they could run away with your funds, could get hacked and your money stolen, or an obtrusive government could intercept the server and monitor all mixing operations. For mixing to truly work, it has to be trustless.
While the fundamental aspect of Dash’s mixing is the same - mixing coins with other people to erase their history - Dash’s PrivateSend is much deeper and more comprehensive than a standard mixer. Dash’s PrivateSend works by taking the coins you designate for mixing and breaks them down into a series addresses denominated in common values such as 0.1 Dash, 0.01 Dash, 0.001 Dash, etc. When done, you will end up with potentially hundreds of addresses that all look like everyone else’s PrivateSend addresses. I don’t know how the number of addresses used in mixing is determined, but I’ve personally used nearly 400 addresses in my mixing efforts, so it’s not a trivial amount. Once some of your PrivateSend balance has been broken down into commonly denominated addresses, your wallet signals the network that you want to mix. A random MasterNode will pick up this request and connect you with another two people who are also wanting to mix. Then, one of your commonly denominated addresses is mixed with those two other people’s addresses that are of the same common denomination. This process repeats for every single address in your PrivateSend balance. Lastly, the entire process is performed repeatedly based on the number of mixing rounds you selected. When the process is done, you will end up with a large number of ‘generic’ addresses that have no history and can be held or spent without fear of anyone knowing who controls that money. An added benefit of mixing is that every time some Dash is mixed, he fungibility of the entire network improves.
Now that you have a basic understanding of how Dash’s PrivateSend works, I’d like to clear up some of the misconceptions.
You have to trust MasterNodes with your money. No, this is patently false. Unlike a traditional mixer, your money never goes to the MasterNodes for processing. The MasterNode only connects you with other people who are mixing, and that mixing happens atomically, so to speak. Your funds never actually leave your wallet, you just directly swap addresses with the other people who are mixing. Dash’s PrivateSend is entirely trustless and there is zero risk of having your funds stolen by MasterNodes or any other part of the network.
MasterNodes can track your mixing efforts. There is a tiny kernel of truth to this but as in many things on the internet, it has been blown way out of proportion. Yes, a MasterNode can see the IP addresses of the people that have requested mixing, but they can only see it for a single commonly denominated address. If you’re mixing 12 Dash, for example, the randomly selected MasterNode does not know that you are mixing 12 Dash, it only knows that you are mixing a single address of a common denomination. It has no knowledge about all of the other addresses that your PrivateSend balance has been broken down into. You could be mixing 1 Dash or 1000 Dash and the MasterNodes would be none the wiser. Secondly, there are plans to implement IP masking into the PrivateSend functionality which will completely mitigate this criticism. Also, MasterNodes do not log transactions. While I’m sure logging would be possible to implement, it wouldn’t tell them anything other than some random address mixed a common denomination with two other random addresses. The only way logging would be useful is if a single entity controlled a significant number of MasterNodes, and with there being around 4700 MasterNodes distributed throughout the world, most being run anonymously, and each costing about $1 million dollars at the time of this writing, the ability to control a large enough set of MasterNodes to gain any useful information is effectively impossible.
I saw a study about how Dash’s mixed funds can be traced. Similar to the last point, there is a kernel of truth to this but has also has been blown out of proportion. There was a study done by Princeton researchers which found that they were able to trace transactions through PrivateSend mixing by using cluster analysis, but there are a number of significant points that Dash critics leave out. First, this tracing was only possible in a pristine environment, meaning that if you did nothing else with your wallet but one instance of mixing, a cluster of inputs can be found. However, and as stated in the paper, this does not translate to the real world where people don’t use their wallets this way. In reality, people who use Dash’s mixing put money in and take money out of the PrivateSend balance regularly thus creating a stream of transactions that don’t cluster and can’t be identified. Second, they were only able to trace through the minimum number of mixing rounds, which is two. Every additional round of mixing mixing makes it exponentially more difficult to trace. If you’re using the maximum eight rounds of mixing, there is zero probability of having your transactions traced. Third, they didn’t do this tracing on mainnet, they did it in a simulated environment. Fourth, they used incorrect algorithms and therefore didn’t end up with a valid address breakdown. And last, they didn’t mention that as the network grows in usage, more people will be using PrivateSend, which will make it harder to trace as time goes on, again exponentially.
If privacy is optional, it’s not private. This argument is about fungibility. Fungibility is where all units of a currency are equal to all other equally denominated units of that currency. Fungibility is not possible where coins can be traced because they may have a history that changes its value. Something that many people don’t seem to grasp though is that fungibility is not all or nothing, it is a range, and the goal is be fungible enough for practical use. Even cash, which is considered fungible, is truly not. For example, say a $20 USD bill was known to be owned, based on its serial number, by someone famous. There may be a high demand for that specific bill causing its value to rise above $20. However this is very rare and realistically speaking, the US dollar is fungible; no matter the history of the bill, it can be spent equally anywhere that the USD is accepted. The argument about optional privacy like what Dash or Zcash have as opposed to the always private Monero, is that by using one of the “privatized” coins of a currency, one can differentiate between between a public coin and a privatized coin, thus reducing fungibility. Where this argument falls short though is that true fungibility is only possible in a market where only one currency is used - a currency monopoly - because the very act of choosing which coin you’re using is no different than choosing to use a privatized Dash instead of a public Dash. If someone is going to refuse to accept private Dash, they are just as likely, if not more so, to refuse to take an always private coin such as Monero. Since Dash’s PrivateSend cannot be traced and has no history, it can be considered fungible enough within a non-fungible market.
I hope this post helped clear up some misconceptions about Dash and its PrivateSend feature. There is an awful lot of bad information floating around out there which is unfortunate because Dash is a very solid and above board project with a fantastic team and massive growth potential. As always, please comment below with your questions and criticisms.
Author: Chris Webb
Congratulations @procryptix! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of upvotes
Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word
STOP
Congratulations @procryptix! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
Award for the number of upvotes
Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word
STOP
Do not miss the last post from @steemitboard: