Mimblewimble: How a Stripped-Down Version of Bitcoin Could Improve Privacy, Fungibility and Scalability All at OncesteemCreated with Sketch.

in #bitcoin6 years ago

Crazy article!
https://bitcoinmagazine.com/articles/mimblewimble-how-a-stripped-down-version-of-bitcoin-could-improve-privacy-fungibility-and-scalability-all-at-once-1471038001/


English version ( Deutsche darunter):
All (full) Bitcoin nodes verify all transactions on the network. This allows the system to be entirely trustless and decentralized, but also presents significant drawbacks. Privacy and fungibility are at odds, because public transactions allow anyone to trace the flow of bitcoins over the blockchain. Meanwhile, verifying a growing number of transactions adds to the cost of running a node, which could be a centralizing force.

But perhaps these drawbacks can be tackled. Last week, a new white paper was somewhat mysteriously dropped on a Bitcoin research channel, written by the pseudonymous author “Tom Elvis Jedusor” (Voldemort’s real name in the French edition of the Harry Potter novels). His proposal “Mimblewimble” — a reference to a Harry Potter spell — presents a radical slimming-down of the Bitcoin protocol that could not only dramatically increase privacy and fungibility, but also present significantly more scalability than Bitcoin’s current blockchain architecture.

Mimblewimble may just hit two giant birds with one stone. Here’s how.

Hiding Amounts

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.

Confidential Transactions lets senders encrypt the bitcoin amounts in transactions with random strings of numbers called “blinding factors.” This process works because transactions also include information with which (only) receivers can decrypt the amounts. And, by utilizing a cryptographic trick called the Pedersen Commitment, anyone else can still perform math on the encrypted amounts. Specifically, Bitcoin nodes can subtract the encrypted amounts on the sending side of transactions (“inputs”) from the encrypted amounts on the receiving side of transactions (“outputs”). If the two sides cancel out to zero, it means the combined inputs and the combined outputs are equal, and no bitcoins were created out of thin air.

Mimblewimble sort of turns this trick on its head as the receiver of a transaction generates the blinding factor. This is important because as one of the main deviations from the current Bitcoin protocol, this blinding factor is effectively used to prove ownership of the (blinded) bitcoins — private keys are no longer in play at all. (Nor are public keys or addresses.)

Proving ownership of the blinding factor itself revolves around a series of cryptographic tricks that are Mimblewimble’s closest equivalent to Bitcoin’s cryptographic signatures, though the full extent of these tricks is beyond the scope of this article.

It is important to note, however, that part of these mathematical maneuvers includes the introduction of a sort of “dummy output.” Where transaction outputs normally indicate under what conditions the receiver of a transaction may later spend the bitcoins, these dummy outputs are really just random numbers to ensure that only the person who generated the blinding factor can spend the bitcoins in the real outputs.

Combining Transactions

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. Instead of transactions, Mimblewimble blocks mainly consist of three lists: a list of new inputs (referring to old outputs), a list of new outputs and a list of cryptographic signatures created with the aforementioned dummy outputs.

Utilizing the Pedersen Commitment scheme, all nodes can use the input list and the output list, and verify that no bitcoins were created out of thin air. The dummy output signatures, meanwhile, prove that all individual transactions must have been valid. Acting rather like “stamps of approval,” these dummy output signatures only add up mathematically if the whole transaction itself does.

And since it is never revealed which inputs spent bitcoins to which outputs exactly, nor how many bitcoins were actually spent, no trace of funds can be established at all. As such, Mimblewimble presents a tremendous boon for privacy and fungibility.

Scalability

And then there’s the scalability improvement.

Currently, many transactions on the Bitcoin network are linked. Spending a bitcoin really takes an output from a previous transaction and turns it into an input of a new transaction. This means that if an older transaction is invalid, a newer transaction that relies on the older transaction is invalid, too. So to be able to validate all transactions on the Bitcoin network, nodes must know all transactions that ever took place; the entire blockchain. (That’s currently some 80 gigabytes worth.)

But with Mimblewimble there is no longer really such a thing as a transaction history per coin. Each coin does have a specific block in which it was first created. But from then on, its value simply becomes part of the combined Unspent Transaction Output (UTXO) set, which defines all outputs that store coins and could potentially be spent at any time.

This means that in order to verify new transactions, nodes no longer need to care about previous transactions. All they need to care about is that the specific outputs used are valid.

With even more clever math, nodes can establish the validity of outputs relatively easily. They just need the block headers of all blocks (a sort of index of blocks without all transaction data) and the aforementioned dummy output signatures: both relatively compact data-sets. All other transaction data — almost the entire blockchain — can be safely discarded.

The benefit compared to other anonymizing techniques is substantial. If Confidential Transactions and CoinJoin had been used in Bitcoin from day one, nodes would currently require more than a terabyte of data to operate. With Mimblewimble, they would need closer to 120 gigabytes. And perhaps even more interesting: where the blockchain necessarily has to grow over time, the required Mimblewimble dataset does not, and can actually shrink if more bitcoins are stored in fewer outputs.

Compatibility

Now for the bad news. Mimblewimble, in its current form, is not very compatible with the Bitcoin protocol. This is mainly because for Mimblewimble to work, script must be purged from transactions. As such, there would no longer be room for a whole set of Bitcoin features, like time-locked transactions (used for the Lightning Network among other things), atomic swaps (for cross-blockchain interoperability), and more.

But that doesn’t make Mimblewimble useless. Mimblewimble may, for instance, be the perfect fit for a privacy-focused sidechain. Bitcoin users could lock their bitcoins into a specific output on the Bitcoin blockchain and “move” their coins to the Mimblewimble chain. On this sidechain, users could transact freely and privately for as long as they want, until the new owner decides to “move” the funds back to the Bitcoin blockchain by unlocking the original output.

Due to the efficiency offered by Mimblewimble’s sidechain, the added burden of maintaining it would be very manageable. Moreover, it could potentially unload much data from the Bitcoin blockchain, increasing scalability even for those who don’t use Mimblewimble at all. Where sidechains are typically not considered a scaling solution, Mimblewimble offers one.

Deutsche Version:

Alle (vollen) Bitcoin-Knoten verifizieren alle Transaktionen im Netzwerk. Dies ermöglicht, dass das System vollkommen vertrauenslos und dezentralisiert ist, aber auch signifikante Nachteile aufweist. Datenschutz und Fungibilität stehen im Widerspruch, denn öffentliche Transaktionen erlauben es jedem, den Fluss von Bitcoins über die Blockchain zu verfolgen. In der Zwischenzeit erhöht die Überprüfung einer wachsenden Anzahl von Transaktionen die Kosten für die Ausführung eines Knotens, was eine zentralisierende Kraft sein könnte.

Aber vielleicht können diese Nachteile in Angriff genommen werden. Letzte Woche wurde ein neues Whitepaper auf mysteriöse Weise in einen Bitcoin-Forschungskanal geworfen, geschrieben von dem pseudonymen Autor "Tom Elvis Jedusor" (Voldemorts richtiger Name in der französischen Ausgabe der Harry-Potter-Romane). Sein Vorschlag "Mimblewimble" - ein Hinweis auf einen Harry-Potter-Zauber - stellt eine radikale Verschlankung des Bitcoin-Protokolls dar, die nicht nur die Privatsphäre und Fungibilität dramatisch erhöhen, sondern auch deutlich mehr Skalierbarkeit als Bitcoins aktuelle Blockchain-Architektur bieten kann.

Mimblewimble kann einfach zwei Riesenvögel mit einer Klappe schlagen. Hier ist wie.

Beträge verstecken

Mimblewimble basiert auf einigen der bekannten Datenschutzfunktionen von Bitcoin. Eines davon ist Confidential Transactions, das hauptsächlich von Bitcoin Core und Blockstream-Entwickler Gregory Maxwell entwickelt wurde und derzeit in der Elements Alpha-Sidechain von Blockstream eingesetzt wird.

Vertrauliche Transaktionen ermöglichen es Absendern, die Bitcoin-Beträge in Transaktionen mit zufälligen Zahlenfolgen zu verschlüsseln, die als "Verblindungsfaktoren" bezeichnet werden. Dieser Prozess funktioniert, da Transaktionen auch Informationen enthalten, mit denen (nur) Empfänger die Beträge entschlüsseln können. Und mit einem kryptografischen Trick, der Pedersen Commitment genannt wird, kann jeder andere noch die verschlüsselten Beträge berechnen. Insbesondere können Bitcoin-Knoten die verschlüsselten Beträge auf der Sendeseite von Transaktionen ("Eingaben") von den verschlüsselten Beträgen auf der Empfangsseite von Transaktionen ("Ausgaben") subtrahieren. Wenn die beiden Seiten auf Null gehen, bedeutet dies, dass die kombinierten Eingänge und die kombinierten Ausgänge gleich sind und keine Bitcoins aus dem Nichts erzeugt wurden.Mimblewimble Art macht diesen Trick auf den Kopf, wenn der Empfänger einer Transaktion den Blindheitsfaktor generiert. Dies ist wichtig, da als eine der Hauptabweichungen vom aktuellen Bitcoin-Protokoll dieser Blindheitsfaktor effektiv verwendet wird, um das Eigentum an den (geblendeten) Bitcoins zu beweisen - private Schlüssel sind überhaupt nicht mehr im Spiel. (Es sind auch keine öffentlichen Schlüssel oder Adressen.)

Der Nachweis des Eigentums an dem Blending-Faktor selbst basiert auf einer Reihe von kryptographischen Tricks, die Mimblewimbles engstem Äquivalent zu Bitcoins kryptografischen Signaturen sind, obwohl das volle Ausmaß dieser Tricks den Rahmen dieses Artikels sprengen würde.

Es ist jedoch wichtig zu beachten, dass ein Teil dieser mathematischen Manöver die Einführung einer Art "Dummy-Ausgabe" beinhaltet. Wo Transaktionsausgaben normalerweise angeben, unter welchen Bedingungen der Empfänger einer Transaktion später die Bitcoins ausgeben kann, sind diese Dummy-Ausgaben wirklich nur Zufallszahlen, um sicherzustellen, dass nur die Person, die den Blindheitsfaktor erzeugt hat, die Bitcoins in den echten Ausgaben ausgeben kann.

Transaktionen kombinieren

Ein weiterer bekannter Bitcoin-Trick, der Mimblewimble inspiriert hat, ist CoinJoin, der erstmals von (wieder) Maxwell vorgeschlagen wurde.

CoinJoin ermöglicht es Benutzern, ihre Transaktionen in einer größeren Transaktion zu bündeln und alle Eingaben (den "von" -Teil einer Transaktion) sowie alle Ausgaben (den "zu" -Teil) zu verschlüsseln. Dies verschleiert möglicherweise, welche Bitcoins von welcher Adresse an welche Adresse gesendet wurden, und unterbricht die Annahme, dass alle Eingaben zu demselben Benutzer gehören.

Mimblewimble (und eine Korrektur durch den Blockstream-Mathematiker Andrew Poelstra) führt dieses Konzept ein wenig weiter und beseitigt Transaktionen vollständig, sobald ein neuer Block erstellt wurde. Anstelle von Transaktionen bestehen Mimblewimble-Blöcke hauptsächlich aus drei Listen: einer Liste neuer Eingaben (die sich auf alte Ausgaben beziehen), einer Liste neuer Ausgaben und einer Liste kryptografischer Signaturen, die mit den oben erwähnten Dummy-Ausgaben erstellt wurden.

Mithilfe des Pedersen-Verpflichtungsschemas können alle Knoten die Eingabeliste und die Ausgabeliste verwenden und sicherstellen, dass keine Bitcoins aus dem Nichts erzeugt wurden. Die Dummy-Output-Signaturen beweisen unterdessen, dass alle einzelnen Transaktionen gültig sein müssen. Diese Dummy-Ausgabesignaturen, die sich eher wie "Genehmigungsstempel" verhalten, addieren sich mathematisch nur dann, wenn die gesamte Transaktion selbst dies tut.

Und da nie enthüllt wird, welche Eingaben Bitcoins für welche Ausgaben genau ausgegeben haben und wie viele Bitcoins tatsächlich ausgegeben wurden, kann überhaupt keine Spur von Geldmitteln festgestellt werden. Als solches bietet Mimblewimble einen enormen Segen für Privatsphäre und Fungibilität.

Skalierbarkeit

Und dann gibt es die Skalierbarkeitsverbesserung.

Derzeit sind viele Transaktionen im Bitcoin-Netzwerk verknüpft. Die Ausgabe eines Bitcoins nimmt wirklich eine Ausgabe von einer vorherigen Transaktion und wandelt sie in eine Eingabe einer neuen Transaktion um. Dies bedeutet, dass eine neuere Transaktion, die auf der älteren Transaktion beruht, auch ungültig ist, wenn eine ältere Transaktion ungültig ist. Um also alle Transaktionen im Bitcoin-Netzwerk validieren zu können, müssen die Knoten alle Transaktionen kennen, die jemals stattgefunden haben. die gesamte Blockchain. (Das ist derzeit etwa 80 Gigabytes wert.)

Aber mit Mimblewimble gibt es nicht mehr wirklich eine Transaktionsgeschichte pro Münze. Jede Münze hat einen bestimmten Block, in dem sie zuerst erstellt wurde. Aber von diesem Zeitpunkt an wird sein Wert einfach Teil des kombinierten Satzes für unverbrauchte Transaktionsausgabe (UTXO), der alle Ausgänge definiert, die Münzen speichern und möglicherweise jederzeit ausgegeben werden können.

Dies bedeutet, dass Knoten sich nicht mehr um frühere Transaktionen kümmern müssen, um neue Transaktionen zu verifizieren. Sie müssen sich nur darum kümmern, dass die spezifischen Ausgaben gültig sind.

Mit noch ausgefeilterer Mathematik können Knoten die Gültigkeit von Ausgaben relativ einfach feststellen. Sie brauchen nur die Block-Header aller Blöcke (eine Art Index der Blöcke ohne alle Transaktionsdaten) und die oben erwähnten Dummy-Output-Signaturen: beides relativ kompakte Datensätze. Alle anderen Transaktionsdaten - fast die gesamte Blockchain - können sicher verworfen werden.

Der Vorteil gegenüber anderen Anonymisierungstechniken ist beträchtlich. Wenn vertrauliche Transaktionen und CoinJoin vom ersten Tag an in Bitcoin verwendet wurden, benötigen die Knoten derzeit mehr als ein Terabyte an Daten für den Betrieb. Mit Mimblewimble würden sie näher an 120 Gigabyte benötigen. Und vielleicht noch interessanter: Wo die Blockchain notwendigerweise im Laufe der Zeit wachsen muss, ist der erforderliche Mimblewimble-Datensatz nicht vorhanden und kann tatsächlich schrumpfen, wenn mehr Bitcoins in weniger Ausgaben gespeichert werden.

Hope you had an informative read!

LG

Orlando

Sort:  

great paper. clear and complete. There are several implementation of mimblewimble. BEAM is one of them. Should have a look and write a review.

Thanks mate I'll look into it

Posted using Partiko Android

Coin Marketplace

STEEM 0.16
TRX 0.13
JST 0.027
BTC 60535.76
ETH 2598.15
USDT 1.00
SBD 2.54