An Introduction to Confidential Transactions
HomeArticles

An Introduction to Confidential Transactions

Fortgeschritten
1w ago
6m

Inhalt


Einführung

Es wird oft als kritisch für das Funktionieren einer Blockchain angesehen, dass das System transparent ist. Das bedeutet, dass jeder Node im Netzwerk eine Kopie speichern und überprüfen kann, dass keine Regeln verletzt werden. Bei vielen verteilten Ledgern kann jeder einen Online-Blockexplorer laden, der es ihm erlaubt, Blöcke, Transaktionen und Adressen zu durchsuchen.

Was die Privatsphäre angeht, ist das nicht ideal. In einem System wie Bitcoin kann jede Transaktion mit einer vorherigen verknüpft werden. Coins sind technisch nicht fungibel, d.h. jede kann an bestimmte Transaktionen gebunden werden. Niemand kann Sie daran hindern, Bitcoin zu senden, aber sie können die Annahme Ihrer Transaktion verweigern, wenn diese Coins zuvor eine Blacklist-Adresse durchlaufen haben.

In schlimmsten Fall könnte ein Mangel an Fungibilität tiefgreifende Auswirkungen auf die Grundlagen des Systems haben. Saubere Coins könnten für einen Aufpreis verkauft werden, während ältere Coins aufgrund ihrer Geschichte weniger wertvoll wären.

Die Privatsphäre in Bitcoin wird oft überbewertet. Nicht nur die Coins können zurückverfolgt werden, sondern auch die Benutzer. Sie genießen Pseudonymität (öffentliche Adressen sind sichtbar statt Namen), aber dies ist nicht ohne Mängel. Ausgefeilte Analysetechniken können mit zunehmender Genauigkeit Adressen zusammenfassen und versuchen, Netzwerkentitäten zu deanonymisieren.

Ein Upgrade, das vorgeschlagen wurde, um Transaktionen wirklich privat zu machen, sind vertrauliche Transaktionen.


Was sind vertrauliche Transaktionen?

Vertrauliche Transaktionen (CT) wurden im Jahr 2013 von Blockstream CEO Adam erstmals besprochen und später von Bitcoin Entwickler Gregory Maxwell erweitert. Maxwell skizzierte die im ersten Abschnitt genannten Probleme (Fungibilität und schwache Pseudonymität) – und schlug eine Lösung vor. Die übertragenen Beträge könnten vom breiteren Netzwerk abgeschirmt werden, so dass nur die Transaktionspartner wüssten, wie viel gesendet wurde.

Unter normalen Umständen (bei öffentlich einsehbaren Transaktionen) ist es für einen Node leicht zu überprüfen, ob der empfangene Betrag den gesendeten Betrag nicht übersteigt. Wenn Alice 0,3 BTC an Bob senden will, nimmt sie eine nicht ausgegebene Ausgabe (nennen wir sie 1 BTC) und bricht sie in zwei Teile auf: 0,3, die an Bob geschickt werden sollen, und 0,69, die an sie zurückgeschickt werden sollen (der Rest wird als Mining-Gebühr verbraucht).

Dies ist einfache Algebra für andere Nodes: 1 überschreitet 0.3 + 0.69, die Signaturen sind alle korrekt, und Alices Eingaben sind nicht bereits anderweitig ausgegeben worden, also muss die Transaktion gültig sein. Wenn Beträge ausgeblendet werden, sind die Dinge jedoch nicht so trivial. Wie kann man überhaupt anfangen zu bewerten, ob ein unbekannter Betrag gleich oder größer als die Summe zweier anderer unbekannter Beträge ist?


Ein Einblick in die verwendete Kryptographie

Um Daten auszublenden, ist Verschlüsselung erforderlich. Die traditionellen Methoden ähneln jedoch der Aufbewahrung von Dokumenten in einem Tresor: Einmal darin verschlossen, werden sie unbrauchbar, bis sie entfernt werden. Was wir für vertrauliche Transaktionen brauchen, ist ein digitaler Safe, dessen Inhalt nicht offengelegt wird, dessen Eigenschaften aber von einem Außenstehenden überprüft werden können.

Die Antwort liegt speziell in der homomorphen Verschlüsselung, in einem Schema, das als Pedersen-Verpflichtung bezeichnet wird. Diese Art der Verschlüsselung erlaubt es einem Außenstehenden, Operationen an verschlüsselten Daten (die er nicht sehen kann) für eine Reihe von Zwecken durchzuführen. 

Ein normaler Hash kann verwendet werden, um sich an Daten zu binden, die Sie später preisgeben möchten. Nehmen wir an, Sie wollen einen Wettbewerb in den sozialen Medien ankündigen, bei dem derjenige, der Ihre Lieblingsbörse errät, einen Preis von 0,01 BTC gewinnt. Die Teilnehmer könnten skeptisch sein, denn Sie könnten sich die Antworten nach dem Ende des Wettbewerbs einfach ansehen und eine nicht erwähnte Börse auswählen.

Was Sie tun könnten, ist, Ihren Anhängern einen Hash zu geben: eine Reihe von scheinbar zufälligen Zahlen und Zeichen, die eine bestimmte Eingabe abbildet. Sie schicken Ihre Börse durch eine Funktion, um eine bestimmte Ausgabe zu erhalten. Wir werden das mit dem SHA256-Algorithmus veranschaulichen:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Wenn man sich das ansieht, hat man keine Ahnung, was die Eingabe war. Auch kann man die Funktion nicht umkehren, um sie zu erhalten. Wenn Sie wissen, dass die Eingabe “Binance” war, können Sie jedoch leicht überprüfen, ob der Hash mit dem oben aufgeführten übereinstimmt. Auf diese Weise haben Ihre Anhänger eine gewisse Sicherheit, dass Sie Ihre Antwort am Ende des Wettbewerbs nicht ändern – dies würde eine völlig andere Ausgabe erzeugen.

Realistisch betrachtet ist das aber nicht sehr sicher. Während Ihre Anhänger den Algorithmus nicht zurückverfolgen können, können sie eine Liste von möglichen Börsen erstellen, und jede einzelne hashen, bis sie eine Übereinstimmung erhalten. Wir können die Wahrscheinlichkeit dafür reduzieren, indem wir einige zufällige Daten, die als Blindfaktor bezeichnet werden, zu den Daten hinzufügen, die wir hashen werden. 

Wenn wir “Binance ist meine Lieblings-Börse. Ich liebe sie mehr als jede andere Börse 2#43Wr” eingeben, wird dies für die anderen Teilnehmer deutlich schwieriger zu erraten (und für 0,01 BTC, ist es sicherlich unwahrscheinlich, dass es überhaupt jemand versuchen würde).

Eine Pedersen-Verpflichtung erlaubt es uns, die Inputs hinter den Verpflichtungen hinzuzufügen. Wie Maxwell veranschaulicht:


C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

BF ist der Blindfaktor und D sind die Daten


Es gibt noch ein paar weitere Schritte von hier aus, die Kryptographie mit elliptischen Kurven und Entfernungsnachweise betreffen, aber die Grundidee ist, dass ein Benutzer eine Pedersen-Verpflichtung für seine Adresse hat. Beim Versenden von Geldern werden zwei zusätzliche Verpflichtungen erstellt (eine für die Adresse des Benutzers, an die das Restgeld zurückgeschickt werden soll, und eine für die Zieladresse). 

Niemand weiß, wie viel gesendet wird, aber sie können überprüfen, ob die Restgeld- und Zielverpflichtungen (die linke Seite der Maxwell-Gleichung) zur Ursprungsadresse (die rechte Seite der Gleichung) passt. Wenn dies korrekt ausgewertet wird, dann ist die Transaktion des Benutzers gültig, da nachgewiesen werden kann, dass die Eingaben gleich den Ausgaben sind.


Was können vertrauliche Transaktionen bewirken?

Wenn vertrauliche Transaktionen in Bitcoin implementiert werden würden, hätten wir ein wesentlich privateres System. Die Ein- und Ausgaben könnten im gesamten Netzwerk maskiert werden und die Einträge im Ledger verschleiert werden - aber die Nodes könnten trotzdem ihre Authentizität überprüfen. Mit dieser massiven Verbesserung der Privatsphäre könnten Bitcoins effektiv fungibel gemacht werden, da eine Chain-Analyse nicht mehr den historischen Verlauf einer bestimmten Einheit offenbaren könnte. 

Ob vertrauliche Transaktionen in das Protokoll integriert werden, erscheint zum jetzigen Zeitpunkt nicht wahrscheinlich. Mit dieser zusätzlichen Funktionalität sind die Transaktionen viel größer als die Standard-Transaktionen – angesichts des begrenzten Blockplatzes würde dies nur die Nachfrage erhöhen. Außerdem müsste die Mehrheit der Teilnehmer einer Änderung des Codes zustimmen, eine Aufgabe, die sich traditionell als schwierig erwiesen hat.


Fazit

Vertrauliche Transaktionen haben einige Iterationen in anderen Kryptowährungen und Bitcoin-Sidechains gesehen. Zum Beispiel verwendet Monero diese in Kombination mit Konstrukten, die Ringsignaturen genannt werden, um Anonymität und Fungibilität zu erreichen. Die Liquid Sidechain implementiert sie für mehr Privatsphäre und MimbleWimble erweitert sie im gleichen Maße.

Für die Vorteile, die sie mit sich bringen, sind vertrauliche Transaktionen mit dem Kompromiss eines größeren Datenverbrauchs verbunden. Kryptowährungen haben oft mit der Skalierbarkeit und dem Durchsatz auf der Basisschicht zu kämpfen, und größere Transaktionen sind nicht für alle attraktiv. Dennoch halten es die Befürworter des Datenschutzes für unerlässlich, Transaktionsbeträge und Teilnehmer zu verbergen, damit die Kryptowährung wirklich als fungibles Geld dienen kann.