Spacechains: Wie dieser neue Bitcoin-Sidechain-Vorschlag funktioniert

Quellknoten: 1544330

Spacechains ist eine vorgeschlagene Bitcoin-Sidechain, die einen Einweg-Peg-Mechanismus bietet, der ein Blind-Merge-Mine-Design verwendet.

Die Idee von Sidechains als Skalierungs- und Funktionserweiterungsmechanismus für Bitcoin ist ein sehr altes Konzept. Eine Art grundlegende „Ahnen“-Idee von Sidechains, Abgebaute Ketten zusammenführen, geht sogar zurück, bevor Satoshi verschwand.

Dieser Vorschlag war einfach die Idee, dass zwei völlig getrennte und nicht miteinander verbundene Chains von derselben Gruppe von Minern abgebaut werden, ohne die Möglichkeit, irgendetwas zwischen Chains zu verschieben. Das ursprünglicher Sidechain-Vorschlag wurde 2014 von vielen der Leute erstellt, die Blockstream buchstäblich etwa eine Woche nach der Veröffentlichung des Papiers gründeten. Die Grundidee war, Coins zwischen der Haupt-Bitcoin-Blockchain und anderen Sidechains hin- und herbewegen zu können, wobei einfache SPV-Beweise (Payment Verification) verwendet werden, um zu beweisen, dass Dinge gültig sind, wenn Sie Coins von einer Kette zur anderen senden. Dies kam nie zum Tragen aufgrund der Komplexität bei der Implementierung im Zusammenhang mit Kettenumstrukturierungen, dem Potenzial für Diebstahl und den Risiken der Mining-Zentralisierung (die alle in Abschnitt XNUMX der Bitcoin-Weißbuch).

Es gibt zwei Arten von Peg-Mechanismen für Seitenketten, nämlich in eine Richtung und in beide Richtungen. Die Bedeutung sollte offensichtlich sein – bei einer Zwei-Wege-Verknüpfung können sich Münzen zwischen der Elternkette und der Seitenkette hin und her bewegen, und bei einer Ein-Weg-Verknüpfung können sie sich nur von der Elternkette zur Seitenkette bewegen und nie zurück. Derzeit ist die einzige Form von Zwei-Wege-Sidechain-Pegs, die auf Bitcoin implementiert werden, der föderierte Konsens, was bedeutet, dass der Peg von einer vertrauenswürdigen Gruppe von „Verwahrern“ garantiert wird, die die Kontrolle über die an die Sidechain gebundenen Gelder in einem Multisig-Wallet behalten, bis sie abgehoben werden.

Die Leute haben jedoch weiter an anderen Designs für Sidechain-Pegs gearbeitet, die nicht föderiert sind. Hier werde ich Ruben Somsens Spacechain-Vorschlag als ein Beispiel durchgehen. Es ist ein Einweg-Peg-Mechanismus, der ein Blind-Merge-Minen-Design verwendet, ähnlich wie Paul Stztorc's. Dies bedeutet, dass Coins nur in die Sidechain gehen können und niemals verlassen werden und dass Miner keine neue Software ausführen müssen, um eine Entschädigung für das Mining der Sidechain zu erhalten (wie ich jedoch später darauf eingehen werde, können sie davon mehr profitieren).

Der Spacechain-Vorschlag

Beim Merge-Mining müssen die Bergleute die Knoten sowohl der Bitcoin-Kette als auch der anderen Kette, die sie abbauen, ausführen, um die Blöcke für beide Ketten zu kompilieren und sie im Bitcoin-Block-Header, den sie abbauen, festzuschreiben. Blind Merge Mining macht sich die Tatsache zunutze, dass die Bitcoin-Miner in Wirklichkeit nur den Block-Header der anderen Kette haben müssen, um sich in ihrem Bitcoin-Block zu verpflichten, jemand anderes kann sich tatsächlich die Mühe machen, den Block für die andere Kette zusammenzusetzen.

Dafür kann der von Somsen vorgeschlagene Mechanismus verwendet werden ANYPREVOUT (APO), um einen offenen Wettbewerb für jeden zu ermöglichen, der um die Konstruktion des nächsten Sidechain-Blocks konkurrieren kann, während garantiert wird, dass nur ein Block pro Bitcoin-Hauptkettenblock festgeschrieben werden kann. Ein weiterer Vorteil von Rubens Vorschlag ist, dass er keine spezielle Soft Fork benötigt, um die Möglichkeit des Einsatzes von Spacechains zu ermöglichen. Eltoo/ANYPREVOUT wird vorgeschlagen, um Vorteile für das Lightning Network zu erzielen und flexible Statechains sowie Channel Factories zu ermöglichen. Spacechains sind einfach eine weitere Möglichkeit der vielen Dinge, für die die Aktivierung von ANYPREVOUT den Weg ebnen würde.

Die allgemeine Idee seines Blind-Merge-Mining-Vorschlags ist, dass Sie durch die Verwendung von APO eine lange Reihe von Transaktionen vordefinieren können, die denselben anfänglichen UTXO verwenden, der ihnen zugeführt wird, und sich verpflichten, ihn immer neu zu erstellen. Stellen Sie sich also einen einzelnen Satoshi-UTXO vor, wobei jede vorab erstellte Transaktion garantiert, dass derselbe UTXO bei Bestätigung als Ausgabe neu erstellt wird. Betrachten Sie es als eine Art Marker, dieser spezielle UTXO ist die Kennung, die es jedem ermöglicht, der die Haupt-Bitcoin-Blockchain betrachtet, zu wissen: „Hier finde ich eine Verpflichtung zu den Blöcken von Sidechain X.“ Dies lässt jedoch ein Problem offen: Miner-Gebühren. Wenn dieser UTXO mit demselben Betrag neu erstellt werden muss, sind keine Mittel vorhanden, um Gebühren zu zahlen.

Dies kann durch die Verwendung behandelt werden SIGHASH_SINGLE (die Signatur einer Eingabe signiert nur diese einzelne Eingabe und die entsprechende Ausgabe) und SEIFSCH_JEDER KANN BEZAHLEN (Menschen sind frei in der Lage, zusätzliche Eingaben und Ausgaben hinzuzufügen, ohne die Signatur ungültig zu machen, solange die Eingabe/Ausgabe mit SIGHASH_SINGLE unverändert bleibt, um diese Signatur nicht ungültig zu machen). Dann kann jeder eine Eingabe hinzufügen und die Ausgabe ändern, um Miner-Gebühren für die Transaktion zu zahlen.

Dies ist auch der Mechanismus, der verwendet wird, um den Block-Header des Sidechain-Blocks festzulegen. Auf die gleiche Weise, wie Taproot sich an den Baum mit unterschiedlichen Ausgabebedingungen bindet, indem es den normalen öffentlichen Schlüssel mit der Merkle-Wurzel des Baums optimiert, kann jeder den normalen öffentlichen Schlüssel mit dem Block-Header-Hash des Sidechain-Blocks optimieren. Sidechain-Knoten können dann diesen Block-Header mit einem Zeiger auf die Transaktion in der Hauptkette aufdecken und weiterleiten, um zu beweisen, dass er tatsächlich abgebaut wurde. Von dort aus würden Sidechain-Knoten die gesamte normale Validierung durchführen, um sicherzustellen, dass der Sidechain-Block den richtigen Konsensregeln folgt, und die tatsächlichen Blöcke über das Sidechain-Netzwerk weiterleiten, genau wie in der Hauptkette.

Wenn eine der Transaktionen, die zum Festschreiben an die Sidechain-Blöcke in der Hauptkette verwendet wurden, zum Festschreiben an einen ungültigen Block oder sogar an Datenmüll verwendet wurde, dann können zwei Dinge passieren, wenn Sidechain-Knoten die in der Kette verwendete Commitment-Transaktion sehen: Erstens, Ein ungültiger Block wird über das Sidechain-Netzwerk verbreitet, und wenn er die Validierungsprüfungen nicht besteht, wird er verwaist; oder zweitens werden die Daten nie offengelegt, in diesem Fall baut der nächste Sidechain-Block auf dem letzten tatsächlich offengelegten Block auf und legt diesen fest, und die nicht offengelegte Festlegung wird ignoriert. Diese zweite Möglichkeit folgt der gleichen Logik der längsten Kette wie die Hauptkette. Selbst wenn etwas später enthüllt wird, wird es aufgrund zukünftiger Blöcke, die nicht darauf aufbauen, immer noch verwaist sein.

Aber es gibt immer noch das Problem der doppelten Ausgaben. Jeder, der über den privaten Schlüssel verfügt, der zum Generieren des Markers UTXO verwendet wird, könnte potenziell jede der vordefinierten Transaktionen, die zum Begehen von Sidechain-Blöcken verwendet werden, doppelt ausgeben und den gesamten Satz von diesem Zeitpunkt an ungültig machen.

Dies wird gelöst, indem die Signatur tatsächlich in das Sperrskript des UTXO selbst eingefügt wird. Dies sperrt die Signatur auf der Ein- und Ausgabe und garantiert die Wiederherstellung des Markers UTXO in der nächsten Transaktion, die ihn verwendet. Da diese Signatur automatisch übergeben und überprüft wird, wenn der UTXO ausgegeben wird, ist es nicht möglich, sie einfach durch eine andere zu ersetzen und an einem anderen Ziel auszugeben.

Damit bleibt ein letztes offenes Problem. Theoretisch wäre es möglich, mehrere Transaktionen hintereinander in einen einzigen Bitcoin-Block einzureichen, sodass eine große Anzahl von Sidechain-Blöcken von Minern alle in einem einzigen Hauptkettenblock bestätigt werden. Dies könnte für Denial-of-Service-Angriffe auf das Sidechain-Netzwerk missbraucht werden.

Um dieses Problem zu lösen, kann eine relative Zeitsperre CHECKSEQUENCEVERIFY (CSV) in das Markierungs-UTXO-Skript eingefügt werden, um sicherzustellen, dass nur eine Transaktion mit der Markierung UTXO innerhalb eines einzelnen gegebenen Hauptkettenblocks bestätigt werden kann.

Insgesamt sieht es so aus: 

Quelle

Es ist auch erwähnenswert, dass zwei Varianten dieses Designs mit CHECKTEMPLATEVERIFY (CTV) oder ohne Änderungen implementiert werden können. Diese beiden Designvarianten haben einfach suboptimale Kompromisse.

Die CTV-Variante würde diese Funktionalität verwenden, um die Transaktionskette mit CTV anstelle von APO festzulegen, wobei der Hack die Signatur innerhalb des UTXO-Sperrskripts enthält. CTV verpflichtet sich zu allen Ausgaben einer Transaktion, die das CTV UTXO ausgibt, aber es verpflichtet sich zu keiner Eingabe außer sich selbst.

Das bedeutet, dass Sie einer CTV-Transaktion Eingaben, aber keine Ausgaben hinzufügen können. Sie können also wie im APO-Design Ihre eigene Gebühr mitbringen, aber Sie können dem Sidechain-Block-Header keine Verpflichtung hinzufügen.

Was wir hier also tun müssen, ist eine Transaktion vollständig außerhalb der Kette von CTV-Transaktionen für die Sidechain-Verpflichtung zu erstellen, um ein UTXO zu erstellen, das gerade ausreicht, um die Gebühr für die CTV-Transaktion zu bezahlen (da Sie keine neue Änderungsausgabe in erstellen können Bei dieser Transaktion gehen 100 % der von Ihnen hinzugefügten Eingaben an Gebühren), und innerhalb der Transaktion, die die Gebühr vorbereitet, verpflichten wir uns in UTXO zu einem Sidechain-Block-Header. Also, erster Schritt: eine Transaktion, die eine gebührenpflichtige Ausgabe und eine Verpflichtung zu einem Sidechain-Block-Header erzeugt. Zweiter Schritt: Wir nehmen die Gebührenausgabe und fügen sie als Eingabe zur CTV-Transaktion hinzu, die bei Bestätigung unseren spezifischen Sidechain-Block „abbaut“. Diese Variante sieht so aus:

Quelle

Die nächste Variante verwendet einfach vorsignierte Transaktionen. Es könnte heute eingesetzt werden, aber aufgrund der Einschränkungen dessen, was Skripts tun können, müssen alle Gebühren für die Transaktionen im Voraus von demjenigen bezahlt werden, der die Spacechain erstellt.

Die Transaktionskette beginnt mit einem einzelnen UTXO und erzeugt in einer Kette zwei Ausgaben. Die erste Ausgabe ist die Markierung UTXO, die signalisiert, dass die Transaktionskette mit einer bestimmten Raumkette zusammenhängt, die zweite ist eine UTXO mit kleinem Wert, die von jedem offen ausgegeben werden kann, um eine weitere Eingabe/Ausgabe daran anhängen zu können. Bei dieser zweiten Transaktion kann sich jeder offen dazu verpflichten, der erste zu sein, der diese zweite Ausgabe aus der Spacechain-Transaktionskette ausgibt, und sie verwenden, um sich auf seinen Sidechain-Block-Header festzulegen.

In der CTV-Variante musste der Sidechain-Block in einer sekundären Transaktion festgeschrieben werden, da CTV es nicht erlaubt, neue Ausgaben in einer Transaktion hinzuzufügen, die eine von CTV gesperrte Eingabe ausgibt. Diese Variante erfordert die Verwendung einer sekundären Transaktion, denn wenn Sie der vorsignierten Kette neue Eingaben oder Ausgaben hinzufügen, würden Sie die TXID der Transaktion ändern und alle vorsignierten Transaktionen, die danach kommen, ungültig machen. Diese Variante sieht so aus: 

Quelle

Der einzige Nachteil dieser letzten Variante ist, dass, wenn derjenige, der alle Transaktionen für Sidechain-Block-Commitments vorsigniert hat, die dafür verwendeten privaten Schlüssel nicht löscht, er die Kette effektiv stoppen kann, indem er den aktuellen Marker UTXO bei jedem doppelt ausgibt Zeit.

Und da haben Sie es. Dies ist der jüngste Vorschlag für ein Sidechain-Design auf Bitcoin, und es kann auf drei verschiedene Arten implementiert werden, mit der offensichtlichen Einschränkung, dass der Implementierungspfad, der jetzt durchgeführt werden kann, das Problem hat, dass jemand einen privaten Schlüssel löschen muss.

Dieser Artikel ist einfach der erste in einer Reihe, die sich auf die wichtigsten Sidechain-Designvorschläge bezieht, die seit dem ursprünglichen Design von 2014 für Bitcoin veröffentlicht wurden. Behalten Sie den Rest im Auge.

Dies ist ein Gastbeitrag von Shinobi. Die geäußerten Meinungen sind ausschließlich ihre eigenen und spiegeln nicht unbedingt die von BTC Inc oder Bitcoin Magazine wider.

Zeitstempel:

Mehr von Bitcoin Magazin