Dies ist der erste Artikel in a Serie Tiefes Eintauchen in einzelne Vorschläge, die einen Reifepunkt erreicht haben, der einen eingehenden Zusammenbruch verdient.
CHECKTEMPLATEVERIFY (CTV), das von Jeremy Rubin mit BIP 119 vorgebracht wurde, ist der ausgereiftste und am besten ausgefeilte Vorschlag, nicht nur aus den Vorschlägen, die wir abdecken, sondern auch aus allen Vorschlägen von Bund in ihrer Gesamtheit. Wie ich in dem Einführungsartikel in dieser Serie erwähnt habe, gibt es im Ökosystem viele Bedenken hinsichtlich von Bündnissen, die zu flexibel sind und Dinge ermöglichen, die sehr nachteilige Konsequenzen für Bitcoin haben.
CTV wurde speziell ausgelegt, um seine Fähigkeiten fest genug zu beschränken, um eine dieser Bedenken zu vermeiden. Um zunächst zu verstehen, wie CTV funktioniert, müssen wir die einzelnen Teile einer Bitcoin -Transaktion verstehen.
Dies ist eine sehr hohe Ansicht einer Bitcoin -Transaktion. Es verfügt über Eingänge oder nicht ausgegebene Münzen (€) und Ausgaben, die neuen nicht ausgegebenen Münzen, die die Transaktion erzeugt, wenn sie in einem Block bestätigt wird. Es gibt viel mehr Teile, die wir durchmachen werden, aber dies ist die höchste Sicht auf die Struktur einer Transaktion.
Jede Transaktion verfügt auch über ein Versionsnummernfeld für die gesamte Transaktion, wodurch die Anwendbarkeit neuer Versionen von Regeln oder Merkmalen angezeigt wird. Es gibt auch den Marker und das Flag, die auf bestimmte Werte eingestellt sind, um anzuzeigen, dass die Transaktion Segwit verwendet. Danach ist die Anzahl der Eingänge in der Transaktion die Anzahl der Eingänge. Dann kommen die tatsächlichen Eingänge.
Jede Eingabe enthält eine TXID der Transaktion, die die nicht ausgegebene Münze erstellt hat, die ausgegeben wurde, ein Vout, das die Ausgabe in dieser Transaktion ausgeben wird, die Größe des Skriptschriftens und die Skriptsage, die das entsperrte Skript, das beweist, dass die Eingabe ausgeben, wird durch die Regeln der Skriptregeln des Sperrens autorisiert. dh der Eingang gab es für eine bestimmte Anzahl von Blöcken oder Zeitlänge seit seiner Erstellung.
Die Ausgangszahl ist das nächste Datenstück, die Anzahl der Ausgänge in der Transaktion. Danach kommt die tatsächlichen Ausgänge, die eine Menge von Satoshis enthalten, die dieser Ausgabe zugewiesen wurden, die Skriptpubkey -Größe und den tatsächlichen Skriptpubkey, das das Sperrenskript für diese Ausgabe ist. Zuletzt wendet das Feld nlocktime einen Zeitpunkt in der Zeitstempel- oder Blockhöhe an, die für die gesamte Transaktion gilt.
Jede Segwit -Transaktion enthält auch einen Zeugenabschnitt, in dem jeder Eingang einen entsprechenden Zeugen mit einer Stapelelementen enthält, wie viele Dinge auf den Skriptstapel, ein Größenfeld für jedes Element und das tatsächliche Datenelement für den Stapel gestellt werden.
Wie CTV funktioniert
CTV ist ein Opcode, der die grundlegendste Form der Selbstbeobachtungs- und Vorwärtsdaten ermöglicht, die alle Vorschläge der Bundesvorschläge durchführen. Es ermöglicht ein Skript, einen vordefinierten 32 Byte-Hash zu nehmen und diesen mit einem Hash der meisten Felder der Ausgabentransaktion zu vergleichen. Wenn der von der tatsächliche Ausgabentransaktion abgeleitete Hash nicht mit dem vordefinierten Hash übereinstimmt, ist die Transaktion ungültig.
Die Felder, die es verpflichtet, sind:
- Nvers
- Nlockzeit
- Eingabezahl
- Ein Hash aller Felder von Nstrendungen
- Ausgangszahl
- Ein Hash aller Ausgänge
- Eingabeindex (der Platz, den der Eingang in der Transaktion, 1. Eingang, 2. usw.) hat
Dies sind alle Felder, für die der CTV -Hash, in ihrer Gesamtheit und ohne Fähigkeit zu wählen und zu wählen. Dies ist der Grad der Introspection CTV ermöglicht: „Stimmt der Hash dieser Felder in der Ausgabentransaktion mit dem Hash im Sperrenskript der ausgegebenen Eingabe überein. Der Hash verpflichtet sich im Wesentlichen der gesamten Transaktion mit Ausnahme der tatsächlichen Eingaben. Es gibt einen Grund, warum der Hash die Eingaben nicht enthält. Um eine Ausgabe an einen 32 -Byte -Hash mit CTV zu sperren, müssen Sie den Hash der Transaktion kennen, die Sie sicherstellen, dass es der einzige Weg ist, damit er ausgegeben wird. Die mit CTV ausgegebene Eingabe muss diesen Hash einbeziehen, um gegen CTV überprüft zu werden. Das erfordert den Hash dieser Transaktion vor Sie erstellen die vollständige Transaktion. Das ist nicht möglich.
Sie können auch CTV -Skripte nisten, dh ein anfängliches CTV -Skript für eine Transaktion mit Ausgängen, die auch CTV -Skripte enthalten. Dies ermöglicht es CTV, Daten zu „führen“. Alles, was es in der Praxis trägt, sind jedoch, welche Daten in der Transaktionskette enthalten sind. Sie können dies theoretisch mit einer unendlichen Tiefe tun, aber Sie sind in der Praxis auf eine begrenzte Tiefe begrenzt, da das Verschachteln ab dem Ende rückwärts erzeugt werden muss. Dies liegt daran, dass jede Stufe oder „Hop“ den Hash der Transaktion auf die nächste bewegen muss, da Sie das Sperrenskript ansonsten überhaupt nicht erstellen können. Wenn Sie die nächste Transaktion noch nicht kennen, können Sie die vorherige nicht generieren.
Was ist CTV nützlich für
Mit CTV können Sie eine Ausgabe so einschränken, dass sie nur gemäß den Konsensregeln durch eine genaue vordefinierte Transaktion ausgegeben werden kann. Einige von Ihnen fragen vielleicht, was die große Sache ist. Wir können bereits Transaktionen vorab signalisieren. Wenn der Grad der Selbstbeobachtung so begrenzt ist, dass es nur etwas erreichen kann, das wir bereits vorschreiben können, was ist der Wert hinzuzufügen?
Erstens lassen vorschriebene Transaktionen immer die Möglichkeit offen, dass die Schlüsselinhaber neue Transaktionen unterzeichnen und diese Münzen auf andere Weise ausgeben. Sie müssen darauf vertrauen, dass der Schlüsselinhaber dies nicht tut, oder den Schlüssel löschen, mit dem Sie es unterschreiben müssen (worauf Sie sie auch vertrauen müssen). CTV entfernt dieses Vertrauen vollständig. Sobald die Ausgabentransaktion definiert ist und die auf diesen CTV -Hash erstellte Ausgabe erstellt wird, besteht keine Möglichkeit, einen anderen Weg auszugeben, der durch Konsens durchgesetzt wird.
Derzeit ist es der einzige Weg, dieses Vertrauen zu tun, darin, die Transaktionen selbst mit Multisig vorzuschreiben. Anschließend können Sie ganz sicher sein, dass keine andere gültige Transaktion, die eine andere Münze auf eine andere Art und Weise ausgeben, auf eine andere Art und Weise erstellt werden können, wenn Sie sich nicht für eine Unterzeichnung für eine Unterzeichnung entscheiden. Das Problem ist, dass desto mehr Menschen involviert sind, desto schwieriger und unzuverlässiger wird alle, die gleichzeitig eine Transaktion vorschreibt, zu koordinieren. In früheren kleinen Größen wird es zu einem völlig unpraktischen Problem, zuverlässig zu lösen.
CTV gibt den Menschen die Möglichkeit, zu wissen, dass eine Reihe von Transaktionen begangen werden, ohne dass jeder gleichzeitig online gehen muss, um sie zu unterschreiben. Es vereinfacht den Koordinationsprozess erheblich, indem jeder die erforderlichen Informationen an andere, wann immer er kann, übertragen wird. Sobald diese Person Informationen hat, kann sie die Kette von CTV -Transaktionen ohne Beteiligung eines anderen erstellen, und jeder kann überprüfen und sicher sein, dass das richtige Ergebnis das einzige mögliche ist.
Das ist unglaublich wertvoll, aber CTV kann auch noch wertvollere Dinge in Kombination mit anderen Opcodes ermöglichen, die wir im nächsten Artikel sehen werden.
Gedanken schließen
CTV ist ein streng eingeschränkter Bund, der ein gewisses Maß an Selbstbeobachtung und Vorwärtsdaten ermöglicht, die so begrenzt ist, dass er die tatsächliche Funktionalität von irgendetwas nicht überschreitet, was mit vorab signierten Transaktionen durchgeführt werden kann. Das Wertversprechen besteht nicht darin, neue Funktionen für sich zu ermöglichen, sondern die Effizienz, Skalierbarkeit und Sicherheitsgarantien für das, was derzeit mit vorab signierten Transaktionen erstellt werden kann, drastisch zu verbessern. Dies allein ist ein massiver Vorteil für fast jedes derzeit bereitgestellte Protokoll unter Verwendung vorschriebener Transaktionen.
Hier sind einige der Projekte, die zeigen, wie gründlich erfunden und erforscht wird, dass dieser bestimmte Bund mit den anderen verglichen wird:
- Ein grundlegender Zahlungspool Beispiel von stottern.
- Ein CTV -Gewölbe Durchführung von James O’Beirneder anschließend OP_VAULT vorschlug (was immer noch CTV verwendet).
- Ein Proof-of-Concept-Port der vorab signierten Transaktionsbasis-ARK-Implementierung von Sekunde durch Steven Roose, um stattdessen CTV zu verwenden.
- Der SAPIO -Sprache von Jeremy Rubin selbst eine höhere Sprache für den Aufbau von Verträgen mit CTV (auch die Verwendung von vorunterzeichneten Transaktionen unterstützt).
- Zeitüberschreitungsbäumeein Vorschlag für ein sehr grundlegendes Coinpool -Design nach John Law.
- Zahlreiche andere mögliche Protokollewie z. B. optimierte diskrete Protokollverträge (DLCs), nicht interaktive Blitzkanäle, die eine Partei ohne die andere öffnen konnte, und sogar dezentrale Wege, die Bergleute zusammenbündet.
CTV ist zu diesem Zeitpunkt ein unglaublich ausgereifter Vorschlag mit einem hohen Wert und kein Risiko, etwas zu ermöglichen, die die Bedenken hinsichtlich der Vereinbarungen vorantreiben. Dies sollte nicht nur sehr ernsthaft in Betracht gezogen werden, sondern meiner persönlichen Meinung nach vor Jahren aktiviert werden sollen.

