Bitcoin-Magazin
[[alloc] init] veröffentlicht geschützten Bitcoin-Vorschlag für private Bitcoin-Transaktionen
Shielded Bitcoin ist ein Vorschlag der [[alloc] init]-Forscher Clara Shikhelman, Misha Komarov und Aleksei Moskvin für ein neuartiges Datenschutz-Metaprotokoll auf der Bitcoin-Basisschicht, um abgeschirmte Bitcoin-Transaktionen zu ermöglichen, ohne dass Betreiber, Soft Forks oder andere Änderungen am Bitcoin-Konsens erforderlich sind. Das Whitepaper finden Sie hier und die Blog-Ankündigung hier.
Das Protokoll definiert eine Transaktionsstruktur und ein Indexierungsprotokoll für streng datenschutzfreundliche Transaktionen und stützt sich dabei auf Bitcoin PIPEs, um Gelder in das System und aus diesem heraus zu binden. Mehr zum PIPEs-Mechanismus am Ende des Artikels.
Sein Design ist weitgehend ein Spiegelbild von Bitcoin; Es gibt ein Äquivalent zu einem UTXO (einer Notiz), Transaktionen verbrauchen Notizen als Eingaben wie eine normale Bitcoin-Transaktion, ein Zeuge beweist, dass die verbrauchten Eingaben ordnungsgemäß autorisiert sind, Knoten (Indexer im Fall eines Metaprotokolls) analysieren den Transaktionsverlauf und erstellen einen aktuellen Status darüber, welche Münzen ausgegeben und nicht ausgegeben wurden usw.
Alle Details sind jedoch recht unterschiedlich.
Eine abgeschirmte Bitcoin-Transaktion ist lediglich ein Datenblock mit einem Präfix (etwa „shbtc:“), der mithilfe von OP_RETURN, dem Zeugenfeld oder einer anderen Datenübertragungsmethode in eine Bitcoin-Transaktion eingefügt wird. Es hat für Bitcoin keine Bedeutung, das Bitcoin-Netzwerk unternimmt nichts, um es zu überprüfen oder irgendwelche Regeln dagegen durchzusetzen. Es ist durchaus möglich, dass ungültige Shielded-Bitcoin-Transaktionen in der Kette landen, und es ist die Aufgabe eines Shielded-Bitcoin-Indexers, der passiv die Blockchain (sprich: Knoten) überwacht, diese Transaktionen zu ignorieren, wenn sie die Validierung nicht bestehen, und sich zu weigern, sie zur Aktualisierung des Status der Netzwerksalden anzuwenden.
Ein Indexer löscht keine Notizen aus einem nicht ausgegebenen Notizsatz, wie es Bitcoin mit UTXOs tut. Es verwendet einen Nullifier-Satz. Dies ist eine Möglichkeit für einen Benutzer, öffentlich einen verschlüsselten Beweis und Annullierer dafür zu veröffentlichen, dass eine Note ausgegeben wurde, ohne preiszugeben, welche Note ausgegeben wurde. Die Idee besteht darin, dass Sie nicht prüfen, ob sich eine Notiz im „nicht ausgegebenen Notensatz“ befindet, sondern prüfen, ob bereits ein Nullifier verwendet wurde. Indexer erstellen einen Merkle-Baum, der für immer wächst und zu dem nur jede erstellte Notenausgabe und dann der Nullifier-Satz hinzugefügt werden kann.
Um dieses Protokoll zu verwenden, benötigen Sie lediglich einen Bitcoin-Knoten und einen Shielded Bitcoin-Indexer. Es ist kein Dienstleister, Koordinator oder ein Staat außerhalb der Kette erforderlich, um Gelder zurückzufordern. Es funktioniert genau wie On-Chain-Bitcoin. Sie benötigen lediglich Ihren Knoten/Indexer und Ihre Schlüssel.
Jede Benutzer-Wallet leitet einen Hauptgeheimschlüssel ab, aus dem alle anderen beteiligten Schlüsselsätze erstellt werden.
Stellen Sie sich das ganz ähnlich vor wie ein HD-Wallet in Bitcoin. Mit dieser Beziehung können Sie viele Adresssätze generieren. Sk_spend ist Ihr privater Schlüssel, sk_nf wird zum Annullieren von Notizausgaben verwendet, vk_in wird zum Entschlüsseln und Anzeigen eingehender Notizen verwendet, vk_out zum Anzeigen Ihrer ausgehenden Transaktionen und sk_view wird zum Generieren einer Empfangsadresse verwendet.
Wenn ein Benutzer jemandem eine Adresse geben möchte, um ihm Geld zu senden, generiert er einen Diversifikatorwert d ähnlich einem Ableitungswert und multipliziert den Wert dann mit seinem sk_view-Schlüssel. Der resultierende öffentliche Schlüssel, pk_d und d, sind die Adresse des Benutzers.
Der Absender generiert dann einen Zufallswert, den r_seed, der für die Verschlüsselung der Notizausgabe sowie für die Nullifizierung erforderlich ist (dazu kommen wir gleich). Transaktionsausgaben enthalten nur drei verschlüsselte Dinge: den Wert der Ausgabe, den d-Wert, den der Empfänger dem Absender gegeben hat, und den r_seed-Wert des Absenders. Der Absender verwendet ein geheimes, kurzlebiges Schlüsselpaar und den öffentlichen Schlüssel des Empfängers, um ein gemeinsames Geheimnis zu erstellen. Beide Parteien können dasselbe Geheimnis generieren, indem sie ihren privaten Schlüssel mit dem öffentlichen Schlüssel des anderen multiplizieren. Die Notizausgabe wird mit diesem gemeinsamen Geheimnis verschlüsselt, und das kurzlebige sk_eph ist unverschlüsselt enthalten, damit der Empfänger das gemeinsame Geheimnis generieren kann.
Auf der Eingabeseite des Bildes sind zwei Dinge erforderlich, um eine gültige Transaktion zu haben: ein öffentlicher Nullifier für die verbrauchten Banknotenausgaben und ein wissensfreier Beweis, der beweist, dass 1) die Banknotenausgabe im Merkle-Banknotenbaum enthalten ist, 2) die Transaktion durch den entsprechenden sk_spend-Schlüssel autorisiert ist, 3) der Nullifier korrekt abgeleitet ist und 4) keine Inflation aufgetreten ist.
Wie Sie im Bild oben bemerken, verwendet der Nullifier den Schlüssel sk_nf, den von r_seed abgeleiteten ρ-Wert und die Position der Note im Merkle-Baum der Notenausgaben. Der Zero-Knowledge-Beweis stellt all dies sicher. Aus diesem Grund können Sie Nullifizierer für Wiederholungen einfach zählen, anstatt verbrauchte Notizen zu löschen. Auch wenn Sie nie wissen, welcher Notizausgabe ein Nullifier entspricht, garantieren die Zero-Knowledge-Beweise in jeder Transaktion, dass jeder zum Satz hinzugefügte Nullifier aus einer gültigen Notizausgabe stammt. Solange es keine Wiederholungen gibt, gilt die gleiche doppelte Ausgabengarantie.
Das Protokoll ermöglicht es Ihnen im Wesentlichen, verschlüsselte Metaprotokolltransaktionen in die Bitcoin-Blockchain einzubetten, bietet aber dennoch die Garantie, dass nichts doppelt ausgegeben wird und dass Münzen nicht aus dem Nichts aufgeblasen werden.
Dies ist tatsächlich ein sehr gut konzipiertes System in Bezug auf die Datenschutzeigenschaften und ist mit so etwas wie abgeschirmten Zcash-Pools vergleichbar. Beim Betreten und Verlassen des Metaprotokolls sind Datenschutzaspekte zu berücksichtigen, die in einer bevorstehenden Papiermitteilung detailliert beschrieben werden. Es gibt keine Bedenken hinsichtlich der Messung der Privatsphäre oder des regelmäßigen Remixens wie bei Coinjoins.
Also, der Stift. Die Absicht besteht darin, mithilfe von PIPEs v2, einem Witness-Verschlüsselungsschema, einen Peg zu erstellen. Mit PIPEs können Sie einen privaten Schlüssel mit einem Programm/Mechanismus verschlüsseln, der den Schlüssel nicht preisgibt, es sei denn, Sie können einen ZK-Nachweis vorlegen, der besagt, dass eine bestimmte Bedingung erfüllt ist (z. B. der Status einiger UTXO, dass eine Transaktion bestätigt wurde usw.). Dies würde es einem Peg ermöglichen, ohne einen Betreiber, einen Verband oder einen Dritten, der Gelder verwahrt, zu funktionieren.
Dies erfordert keine Softforks oder Protokolländerungen an Bitcoin und erfolgt vollständig außerhalb der Kette.
Der Plan mit Shielded Bitcoin und der nächste Teil ihrer Arbeit ist ein Pegging-Mechanismus, der es Benutzern ermöglicht, mithilfe der kryptografisch kontrollierten PIPE-Schlüssel Gelder in Shielded Bitcoin einzuzahlen, die dann durch die Erstellung eines ZK-Nachweises für legitime Peg-out-Transaktionen, die in der Kette bestätigt werden, „freigeschaltet“ werden.
Derzeit wird an dem Papier gearbeitet, das diesen Aspekt des Systems definiert, und sollte in naher Zukunft veröffentlicht werden.