This is a follow up to a previous article I published on Let's Talk Bitcoin a couple months ago. That article focused on masternodes -- servers comprising the decentralized network upon which Darkcoin builds services. The first use, and the primary reason for existence of the coin, is providing privacy. Anyone willing to perform the setup can run a masternode and receives compensation for their contribution.
Today, I provide more detail on DarkSend, the name of Darkcoin's anonymity feature, and sketch the next amazing use of masternodes, instant transactions.
DarkSend: Darkcoin's Anonymity Explained
After a couple release candidates (RC4 and RC5), and Security Analyst Kristov Atlas's independent reviews of the design and the code of DarkSend, the setup has been fine-tuned and made fully functional. The team feels confident in the code; the release candidate label has been ditched; and the DarkSend code has been open-sourced. (Darkcoin is based on Bitcoin code, but the anonymity portions were kept proprietary during developed.)
DarkSend implements CoinJoin to mix funds upon sending, providing ahead-of-time anonymity. The ahead-of-time implementation removes the need to wait for other senders with available transactions, and makes some attacks more difficult.
The steps of DarkSend are:
- In their wallets, users decide the desired depth of anonymization and the amount of funds to anonymize. Then users manually launch the process.
- In a process called denomination, the wallet breaks the funds into predefined amounts.
- The wallet mixes the funds with other users' funds using masternodes as coordinators, but without having to send the funds to them. Funds always go from one user to another, so there is no risk of malicious third parties stealing the funds. This happens as many times as the user has selected (the wallet allows for up to eight rounds, but the user could repeat afterwards, if desired).
- When the process finishes, the funds are anonymized and the user can send them when needed.
The real innovation behind DarkSend happens in step 3. The process is complex and beyond the scope of this article. There is full information at Darkcoin's wiki or, better yet, at Kristov Atlas's full paper (crowdfunded by the Darkcoin community). This second resource is slightly outdated because Atlas's conclusions were used to improve DarkSend in the last release and some of his study was done on the testnet, where some parameters are different than on the mainnet. The most important difference is that at least three peers are required per round of mixing. Nonetheless, it is the most complete evaluation of privacy attacks on the blockchain that I've found, and it is an extremely interesting read.
A few days ago, the team released a paper on how to implement instant transactions using masternodes. Instant transactions are the third service of masternodes, after providing anonymity and operating full nodes. Masternodes will be used for fast validation of transactions, and miners will check with them when producing the blocks.
Under this setup, when the user broadcasts a transaction, the network of masternodes checks for double spending (whether the funds have been used in another unconfirmed transaction). If the funds are in the clear, a lock is activated on the funds, validation of the transaction is sent to the receiver, and the transaction is added to the memory pool. This happens in ten to twenty seconds. If several transactions with the same funds are sent at the same time, only one will get a valid lock, thanks to the consensus mechanism of masternodes.
Later, as miners include transactions into the block, they check whether those transactions conflict with any valid lock in the memory pool. If they do, the conflicting transactions are excluded. With this mechanism, a double spend is not possible.
As an additional advantage, time between blocks can be increased. Thanks to having a fast parallel network of masternodes that validates the transactions, there is no need to receive the confirmations as fast as possible because the receiver already knows whether a transaction is valid. Increasing the time between blocks increases security and reduces blockchain bloat.
This is still a concept, but the coding has begun. The first step is implementing a secure multipath communication technology to add another layer of privacy to the system, allowing users to communicate with the network securely without exposing their IP addresses, and to hide the identity of the masternodes.
Disclaimer: I own a significant amount of darkcoins and I am part of the Darkcoin team and foundation. I'm as biased as it gets, but my involvement is only the natural consequence of doing my research. My mouth, brain, heart, and wallet (and any other organ you can think of!) are in the same place.