Dies ist der fünfte Artikel in a Serie Tiefes Eintauchen in einzelne Vorschläge, die einen Reifepunkt erreicht haben, der einen eingehenden Zusammenbruch verdient.
On_catDie Reaktivierung von Ethan Heilman und Armin Sabouri in BIP 347 ist kein Bund. Es war ein Opcode, der ursprünglich in der ersten Veröffentlichung von Bitcoin zum Manipulieren von Datenelementen auf dem Stapel enthalten war. Es wurde 2010 mit dem deaktiviert Freigabe von Bitcoin 0.3.10 Zusammen mit einer Reihe anderer Opcodes aufgrund von Bedenken hinsichtlich der Ablehnung von Dienstangaben, die Knoten abstürzen könnten. Eine globale maximale Grenze von 520 Bytes für jeden einzelnen Element auf dem Stapel bei der Ausführung eines Skripts wurde ebenfalls hinzugefügt.
Sie sollten bereits ein grundlegendes Verständnis dafür haben, wie die Skriptbewertung auf dem Stapel funktioniert, und die grundlegenden Teile einer Bitcoin-Transaktion, sodass es nicht wirklich viel vor der Erregung erklärt, die für OP_CAT notwendig ist.
OP_CAT ist zwar an und für sich möglicherweise kein Bund, aber es kann aufgrund einer Eigenart der Funktionsweise von Schnorr -Signaturen Bündnisse emulieren. Dies ist ein ziemlich ausführliches Thema, das vollständig erklärt wurde Hier Von Andrew Poelstra aus Blockstream, also bleibe ich einfach mit einer hochrangigen Aussicht. Jede elliptische Kurve hat einen Generatorpunkt, der im Wesentlichen „0“ ist und in der mathematischen Elliptikkurve für die Schlüsselgenerierung und -unterschrift verwendet wird. Mit Schnorr können Sie den Generatorpunkt als Schlüssel unterschreiben und ein paar Bytes geben oder nehmen, die Sie wiederholt unterschreiben müssen, um richtig zu werden. Die resultierende Signatur ist tatsächlich der gleiche Hash der von Ihnen unterschriebenen Transaktion.
Legen Sie die Mechanik, wie dies mathematisch funktioniert, vorerst und denken Sie später daran, dass diese „seltsamen“ Signaturen es Ihnen ermöglichen, die aktuellen Transaktionen TXID auf den Stapel zu bringen.
Wie OP_CAT funktioniert
OP_CAT nimmt die beiden Top -Datenelemente auf dem Stapel und verkettet sie zusammen. Wenn also die beiden obersten Elemente auf dem Stapel “1” und “2” sind, entfernt OP_CAT beide und legt dann “12” auf den Stapel. Das war’s.
Was ist op_cat nützlich für
Okay, also was ist die große Sache? Warum flippt alle über Op_cat aus, obwohl es so einfach ist, wie es funktioniert, wie es funktioniert, hat nicht einmal einen vollständigen Absatz zum Schreiben genommen?
Zwei Gründe, obwohl ich angesichts der Art von OP_CAT keine Garantien geben kann, sind dies die einzigen beiden Gründe. OP_CAT ermöglicht die Konstruktion und Überprüfung von Merkle -Bäumen direkt am Stapel, was die Tür zu einem interessanten Verhalten und einer interessanten Funktionalität öffnet. Es ermöglicht auch die Emulation von Bündnissen, die aufgrund der oben genannten „seltsamen“ Schnorr -Signaturen eine vollständige körnige Selbstbeobachtung ermöglichen.
Die Merkle -Proof -Überprüfung ist eine Schlüsselkomponente von Taproot, aber die Art und Weise, wie die Merkle -Baum -Überprüfung implementiert wird, erfolgt nur im Zusammenhang mit der Überprüfung, dass ein Tapscript -Ausgabenpfad im Root Schnorr öffentlichen Schlüssel im Ausgabeskript der ausgegebenen Münze festgelegt ist. Taproot unterstützt keine generische Merkle -Proof -Überprüfung.
OP_CAT erlaubt dies auf eine ganz generische Weise. Wenn Sie einfach den Leaf-Hash (ES) und dann den Innenhash-Knoten in der richtigen Reihenfolge und nacheinander aufrufen, können Sie einen Merkle-Root-Hash rekonstruieren und sich mit einem vordefinierten Hash im Skript vergleichen lassen. Sie können dies tun, um einseitige Auszahlungswege für gemeinsam genutzte UTXOs bereitzustellen Wie in CatvmSie können Transaktionen abhängen, die von anderen Transaktionen abhängen, die in einem Block mit gültigen Arbeiten aufgenommen wurden. Sie können eine Transaktion von so ziemlich jeder Bedingung abhängen, die mit einem Merkle -Proof überprüft werden kann.
Jetzt für die Emulation der Bund, die eine vollständige Selbstbeobachtung ermöglicht. Sie versuchen sicherzustellen, dass eine Transaktion bestimmte Merkmale haben muss, um gültig zu sein. Denken Sie jetzt daran, dass die „seltsame“ Signatur den Hash der Transaktion auf dem Stapel erhält. Eine Transaktionssignatur wird nicht tatsächlich über die RAW -Transaktion durchgeführt, sondern über ihren Hash. Dies ermöglicht es uns, etwas Interessantes zu tun.
Sie können sehr komplizierte und verworrene Skripte mit OP_CAT konstruieren, um die einzelnen rohen Teile der Transaktion als Teil des Zeugen zu nehmen und sie langsam mit OP_CAT auf den Stapel zusammenzustellen. Unterwegs können einzelne Teile der Transaktion gegen vordefinierte Hashes überprüft werden, indem sie sie nur hemdet und OP_Equal verwenden. Am Ende des Skripts haben Sie die vollständige Transaktion auf dem Stapel selbst und können die erforderlichen Daten an sie anhängen und sie dann erneut mit Op_equal vergleicht, diesmal mit der „seltsamen“ Signatur. Wenn dieser Check vergeht, kann ein normaler Schecks ausgeführt werden und solange die „seltsame“ Signatur mit der Ausgabe der Transaktion durchgeführt wurde, wird alles als gültig ausgeführt.
Die OP_Equal -Überprüfungen einzelner Teile der Transaktion auf dem Weg garantieren, dass diese Teile der Transaktion genau das sind, was sie sein sollten. Wenn einer von ihnen die Überprüfung fehlschlägt, ist die Transaktion ungültig. Dies erzwingt die emulierten Bündnisse. Wenn der mit OP_CAT konstruierte Transaktions -Hash und die „seltsame“ Signaturübereinstimmung garantiert, garantiert die endgültige Überprüfung, dass die mit OP_CAT erstellte Transaktion gegen den emulierten Bund überprüft wird, der mit der zu diesem Zeitpunkt ausgegebenen tatsächlichen Transaktion übereinstimmt.
Gedanken schließen
OP_CAT bläst die Türen der Selbstbeobachtung und Vorwärtsdaten vollständig. Die Selbstbeobachtung kann in jedem gewünschten Granular aus erreicht werden, wobei jedes einzelne Feld der Transaktion unabhängig voneinander verpflichtet werden kann. Es ermöglicht die gleichen introspektiven Funktionen, die TxHash und noch einige andere erledigen.
Die Fähigkeit, generische Merkle -Proofs zu überprüfen, ist ebenfalls eine leistungsstarke Funktionalität, stellt jedoch die Frage, wie diese Fähigkeit verwendet wird und welche Art von Anreizen, die erzeugen könnten. Bitcoin -Skripte könnten konstruiert werden, dass eine Transaktion auf externen Blockchain -Systemen durchgeführt werden muss, solange sie Merkle Trees verwenden, die mit den im Bitcoin -Skript verfügbaren Hash -Funktionen erstellt wurden.
OP_CAT selbst ist zwar kein Bund, ermöglicht es jedoch eine vollständige Nachahmung von Bündnissen mit einer viel weniger effizienten Blockchain -Fußabdruck (und dem Potenzial für Entwickler, Fehler zu verdienen und Geld zu verbrennen). Es ist ein Vorschlag, dass es trotz der unglaublich einfachen Sicht selbst angesichts des massiven Designraums, den es öffnet, vorsichtig angegangen werden sollte.

