Mimblewimble is a protocol that was put forward by an anonymous user in a Bitcoin developers chatroom by the name of Tom Elvis Jedusor (the French name of fictional Harry Potter character, Voldemort). Mimblewimble itself is the name of a spell used to tongue-tie victims in Harry Potter. Jedusor left a link to a whitepaper in which he outlines that by using the Mimblewimble protocol, the scalability, as well as the privacy of the Bitcoin network, could significantly be enhanced.
What is Mimblewimble
In order to understand the Mimblewimble protocol, the manner in which Mimblewimble transactions are conducted must first be understood.
Mimblewimble transactions are a derivation of another transaction type known as, confidential transactions. Conceived by former Bitcoin developer, Adam Back, confidential transactions allow senders to encrypt the amount of bitcoins they want to send by using what are known as, blinding factors. A Blinding factor is a random value used to encrypt bitcoin amounts in a transaction and is chosen by the sender of a transaction. The selected blinding factor should suitably encrypt the amount being transacted, but should however, not affect the input and output of a transaction.
In a confidential transaction, only the two parties involved are cognisant of the amount of bitcoins being transacted, onlookers cannot know. However, onlookers can still ensure that the transaction is valid by comparing the number of inputs and outputs; if both are the same, then the transaction will be considered valid. Such a procedure ensures that no bitcoins have been created from nothing and is key in preserving the integrity of the system.
Mimblewimble transactions function in a similar way, except, the recipient of a transaction randomly selects a range of blinding factors provided by the sender. This blinding factor is then used as proof of ownership by the receiver, thus, permitting them to spend the bitcoins.
In addition, Mimblewimble transactions also leverage another piece of cryptographic innovation known as CoinJoin. Proposed by Gregory Maxwell, CoinJoin is a mechanism by which payments from multiple spenders are combined to form a single transaction, thus making it difficult for an outside party to determine which payment was intended for which recipient. ConJoin works by obfuscating the inputs and outputs of the senders and recipients. Therefore, in relation to Mimblewimble transactions, when combined together, a block would simply consist of: a list of inputs, a list of outputs, and signature data. This offers significant space savings in blocks because other transaction data no longer need to be stored, only inputs and outputs. By subtracting the total inputs from the total outputs, and ensuring that the result is zero, a blockchain built from such a system would be considered valid. This is in contrast to how transactions, and therefore the blockchain, is proved to be valid in Bitcoin. In this instance, the whole blockchain must be downloaded and the history of a transaction output analysed in order to ensure its validity.
The theoretical space savings, as well as the privacy, offered through the use of the Mimblewimble protocol is evident. By pruning the blockchain of unnecessary transaction data, scalability becomes less of an issue because more transactions can be included in a single block. Due to the obfuscation of inputs and outputs, as well as the elimination of public addresses in Mimblewimble transactions, true anonymity, as opposed to pseudonymity, is achieved.