A type of anonymous transaction that bitcoin enthusiasts have been awaiting for years has finally been tested successfully on the network.
Sent on the bitcoin test network earlier this month, the transaction is the network’s first implementation of CoinShuffle, a proposal that first generated excitement in April 2014 for building on existing privacy techniques in a way that doesn’t rely on third parties.
But on 15th August, developer Daniel Krawisz sent what he believes is the first transaction utilizing this tool on bitcoin. (The transaction type was previously implemented on the blockchain platform NXT).
The big idea behind the technique is that it guards sensitive user information that may otherwise be visible on bitcoin’s public blockchain, but the short-term goal is to incorporate the technique into the bitcoin wallet service Mycelium, which is sponsoring the project. Launched in 2013, Mycelium recently released a roadmap with CoinShuffle scheduled for “phase 5”, or the final step, of its development plan.
Krawisz, who’s been working on Mycelium’s CoinShuffle implementation since late last year, chose the name Shufflepuff for the project as a way to soften the stigma that anonymizing bitcoin techniques often carry due to their abuse by illicit actors.
Krawisz said:
“It’s open source, I hope that eventually lots of wallets will use it.”
Anyone can now experiment with the tool and run it on their own computers, but so far there’s no way of bringing wallet users together to “join” their transactions, or mix them together so they can be anonymized.
So, adventurous users need to find other participants to “join” with by their own devices. Another caveat is that Shufflepuff is alpha software, so Krawisz advised it’s not something users should trust with very much real money.
Technical details
Created by researchers at Saarland University, CoinShuffle is an implementation of CoinJoin, a way of mixing multiple transactions in order to confuse the details of each.
Invented by bitcoin developer Greg Maxwell in 2013, it has inspired implementations in DarkWallet, Dash, NXT and JoinMarket. But CoinShuffle is unique because it uses CoinJoin without a third party mixing the transactions in an attempt to reduce trust.
Shufflepuff is a real-world implementation of it using the programming language Java.
There are several other privacy-minded bitcoin techniques and projects out there, such as Confidential Transactions or alternative cryptocurrencies like Zcash, but CoinJoin doesn’t require changes to the bitcoin protocol, potentially making it a more practical way to bring about privacy than deeper protocol changes that could take a longer time to test and implement.
It works by combining inputs and outputs of two or more transactions into one. (Not even the recipients will know from which address the transactions originated).
But some implementations of the transaction style have problems in the eyes of those who believe in decentralization.
Since mixing the transactions means gathering other transactions to mix them with, many applications require a third party to conduct the transactions. Some believe this could compromise privacy and control over the funds, and that’s what Shufflepuff helps to solve.
Big future plans
But while the first transaction is an achievement, there’s still a ways to go for the project.
As join transactions will need to unite multiple users, Krawisz is currently working on a registration system so that users can more easily link up with others, one he hopes to soon make available to more developers.
He also wants to add support for end-to-end encryption to further secure transactions.
The project is open source for wallets and other services to pick up as they wish, but how services ultimately incorporate Shufflepuff can affect the level of privacy, Krawisz argued.
He’s also outlined a plan for a model of stronger anonymity for possible implementation in Mycelium.
To that end, Krawisz called on others to contribute to the project and to write Shufflepuff in other programming languages so that it can more easily be implemented in other wallets and services.