The pseudo-anonymous nature of Bitcoin is what allows it to be a decentralized cryptocurrency. There is a distributed public ledger and we can all agree on the transactions that have occurred in the Bitcoin network by checking the ledger, removing the need for a trusted third party to give that confirmation. However, this same transparency feature brings along some issues.
The lack of privacy can be off-putting to regular users as well as companies that do not want their finances to be publicly accessible. Fugibility issues also arise when a specific coin can be singled out due to its past history and refused as payment because of it.
Despite the tools that are available, such as bitcoin mixers, p2p exchanges and the ability to use Bitcoin through Tor, these are not perfect.
However, there are multiple projects that are being worked on in order to bring a higher degree of privacy to Bitcoin. One of these is called MimbleWimble.
MimbleWimble is natively private
Mimblewimble is based on some of Bitcoin’s familiar privacy features. One of these is Confidential Transactions, which was mostly developed by Bitcoin Core and Blockstream developer Gregory Maxwell and is currently deployed on Blockstream’s Elements Alpha sidechain.
Another familiar Bitcoin trick that inspired Mimblewimble is CoinJoin, first proposed by (again) Maxwell.
CoinJoin allows users to bundle their transactions into one bigger transaction, scrambling all inputs (the “from” part of a transaction), as well as all outputs (the “to” part). This potentially obfuscates which bitcoins were sent from which address to which address, and breaks the assumption that all inputs belong to the same user.
Mimblewimble (and a fix by Blockstream mathematician Andrew Poelstra) takes this concept a bit further and completely gets rid of transactions once a new block is created.
There are no ring signatures or zero-knowledge proofs on top of a transparent bitcoin-like transaction. In a MimbleWimble transaction, all values are fully obscured. There are no reusable or identifiable addresses. Every transaction looks the same to an outside party.
The two properties verified in a MimbleWimble transaction are:
- No new money is created
- The parties sending money must prove ownership of their keys.
A transaction in the Mimblewimble blockchain would consist of inputs, outputs, or excess (the difference between outputs and inputs, plus a signature). This is slightly different from Bitcoin transactions, where old outputs sign new outputs. Moreover, Bitcoin outputs contain script pubkeys, which are independent of each other. Mimblewimble transactions are inherently scriptless.
One of the most exciting things about Mimblewimble is that it’s a scalable solution. If it were to be active on Bitcoin since day one, the blockchain would be somewhat bigger (a few GB) than it is now. However, when compared to other solutions like Confidential Transactions, it’s a very positive result, since CT activated since day one would add up to about a TB of blockchain data.
Few Challenges To Overcome
Despite some of the advantages offered by Mimblewimble, there are still a few challenges to overcome The biggest hurdle is how this solution is not compatible with bitcoin’s scripting language. Integrating Mimblewimble in Bitcoin right now would remove all of these new features. Moreover, the current version of this project does not allow for micropayments or smart contracts. It is more likely Mimblewimble will be implemented in an altcoin, although one never knows which solutions developers may come up with.