Dies ist der dritte Artikel in a Serie Tiefes Eintauchen in einzelne Vorschläge, die einen Reifepunkt erreicht haben, der einen eingehenden Zusammenbruch verdient.
Txhash und checkxhashverify (TXHASH), der von Steven Roose und Brandon Black mit einer derzeit nicht zugewiesenen BIP CHECKTEMPLATEVERIFY (CTV).
Bevor wir in die freche Körnung dessen, wie TxHash funktioniert, einsteigt, lasst uns die Datenstücke in einer Bitcoin -Transaktion aktualisieren.
Auf einer hohen Ebene haben Sie die Ausgänge, die Eingänge und den Zeugen (oder das Skript sig für nicht-segwit-Transaktionen in der Eingabe).
Globale Transaktionsfelder:
- Version
- Marker, der Segwit mit einem Flag -Wert angibt
- Flagge, der Segwit mit einem Flaggenwert angibt
- Eingabezahl
- Ausgangszahl
- nlocktime, verwendet für Zeitlänge
Jede Eingabe enthält:
- TXID der vorherigen Transaktion
- Vout (Index) der Ausgabe aus dieser Transaktion, die ausgegeben wurde
- Script -g -Größe
- ScriptSIG (wenn eine nicht segwit-Transaktion)
- Sequenznummer (verwendet für das RBF -Markierende und die relativen Tätigkeiten).
Jeder Ausgang enthält:
- Menge an Satoshis, die der Ausgabe zugeordnet sind
- Skriptpubkeysize, die Größe des Sperrenskripts
- Skriptpubkey, das eigentliche Sperrenskript
Wir können das Zeugenfeld ignorieren, wenn wir in Betracht ziehen, Txhash oder checkTxhashverify zu erwägen, da weder Opcode das Zeugenfeld einschränken, um bestimmte Eigenschaften beizubehalten.
Wie txhash funktioniert
Sowohl Txhash (nur TapScript) als auch chetexhashverify (Legacy -Skript und Tapscript) haben aufgrund der Unterschiede zwischen Legacy -Skript und Tapscript unterschiedliche Verhaltensweisen im Stapel. Für die Zwecke dieses Artikels sind diese Unterschiede nicht materiell, daher werden wir sie einfach ignorieren.
Wenn CTV ein Covenant-Opcode ist, der eine Bitcoin-Ausgabe nur auf einzigartige und genau definierte Weise einschränkt, ist TXHASH eine aufgeladene Version von CTV, mit der Sie genau auswählen können, welche Teile einer Transaktion eingeschränkt werden und auf genau vordefinierte Weise ausgegeben werden müssen und welche Teile eines Transaktion, das jemand, was jemand ist, Zeit sein möchte, Zeit zu haben will.
Es gibt Ihnen das Beste aus beiden Welten, wobei etwas erforderlich ist, wenn Sie eine Coin mit einer Vertragsbeschwerde ausgeben. Anschließend ermöglicht es einem Benutzer, mit den restlichen Mitteln der ihm zur Verfügung stehenden Mittel oder der Transaktion zu tun, die er bastelt.
Dies wird unter Verwendung des ‘TXFieldSelector’ erreicht.
CTV verwendet lediglich einen einzelnen Hash der vordefinierten Transaktion, um zum Zeitpunkt der Ausgaben zu überprüfen. Mit TxHash brauchen Sie eine Möglichkeit, zu kommunizieren, welche Informationen, die Hashh sich verpflichten, und welche Informationen es nicht sind. Das ist der Job des TXFieldSelectors.
TxFieldSelector ist im Wesentlichen eine Reihe von Bytes (die variabel in Länge sein können), wobei jedes Bit mitteilt, welche Felder in einer Transaktion durch den Hash verpflichtet werden, gegen den es überprüft wird. Auf diese Weise können Sie bestimmte Felder der Transaktion, der Nlocktime, der Version usw. auswählen. Sie können bestimmte Felder der Eingänge und Ausgänge auswählen, dh die Sequenznummer oder die vorherige Ausgabe -ID oder das Taproot -Anhang (ein Datenfeld, das spezifisch für TAP -Skripte spezifisch ist). Die Ausgänge, ob Sie sich für den Skriptpubkey engagieren sollen, die Betragwerte, beide oder keine. Sie können auch genau entscheiden, auf welche Ausgaben und Eingaben diese Einschränkungen gelten.
Es gibt eine gewisse Komplexität und Flexibilität darin, wie der TXFieldSelector zusammengestellt wird, und Sie können alle feineren Details lesen Hier In dem vorgeschlagenen BIP, wenn Sie an diesen interessiert sind, aber der Hauptpunkt zum Mitnehmen ist, ist, dass Sie auswählen können genau Welche Teile der Transaktion werden vom Bund eingeschränkt, wenn jemand die belastete Ausgabe ausgibt und welche Teile nicht in einem sehr körnigen Ausmaß sind.
Was ist txhash nützlich für
Erstens ermöglicht TXHash Sie mit CTV alles, was Sie können. Der gesamte von CTV bereitgestellte Wert zur Optimierung der Koordinationskosten von allem, was derzeit mit vorsignierten Transaktionen derzeit möglich ist, wird auch von TXHASH bereitgestellt. Aber es lenkt diese Fähigkeit massiv auf. Anstatt sich auf die Gesamtheit einer Transaktion einzulassen, können Sie sich genau auf die Teile festlegen, die Ihnen wichtig sind.
Dies hat zwei große Vorteile in der Theorie direkt von der Fledermaus. Zunächst wird im Band Fee Management für Layer Twos einfacher zu handhaben. Derzeit die Verwendung von Ankerausgänge ist erforderlich, um die Abwicklungstransaktionen von Gebühren mit Kindern für Eltern zu bilden, wobei eine Transaktion eine Ausgabe von einem unbestätigten Ausgang zu den Nettogebühren für beide erhöhen kann. Mit Txhash können Sie sich nur auf Ihre Gegenparteien in einer Mehrparteien -Transaktion verpflichten und Ihre frei machen, mit dem Sie wollen (Vorbehalte hier, dass andere Dinge getan werden müssen, um diesen sicheren Dritte zu gewährleisten, sodass ein Dritter nicht alle Ihre Mittel auf Gebühren verbrennen kann), einschließlich der Verringerung der RBF der Transaktion.
Zweitens ist die Tür jetzt offen für Mehrparteienprotokolle, um detaillierte Garantien darüber zu ermöglichen, welche Transaktionen außerhalb des Kettens verpflichten. Einige Benutzer können jetzt eine Garantie dafür erhalten, wie ihre Münzen ausgegeben werden, müssen sich jedoch nicht darum kümmern, was eine andere Gruppe von Benutzern mit ihren macht. Ich kann sicher sein, dass ein TXFieldSelector garantiert, dass meine Münzen richtig behandelt werden, und es muss mich nicht darum kümmern, wohin die Münzen eines anderen gehen.
In Kombination mit CheckSigfromStack (CSFS) kann TXHASH ein vollständig verallgemeinertes Seufzensystem erleichtern. Die Seufzflagge ist Teil einer Signatur, die über die Teile der Transaktion kommuniziert, gegen die die Signatur überprüft werden soll. Sie sind derzeit:
- SeufardaSh_all – Signiert alle Eingänge und Ausgänge
- Seufort
- Seufort
Keines dieser Seufzflags erlaubt das Hinzufügen neuer Eingänge zu einer Transaktion, ohne sie zu ungültig, aber jeder verfügt über eine AnyaNecanpay -Version, die nur seine eigenen Eingaben und die entsprechenden Ausgänge unterzeichnet, sodass jemand anderem neue Eingaben und neue Ausgänge für die Anyonecanpay -Version von Seufh_None und Sighash_Single hinzufügen können.
Indem Benutzer mit CSFs neue TXFieldSelectors „abstellen“ können, können Benutzer ein Seufzensystem emulieren, mit dem sie genau auswählen können, welche einzelnen Teile einer Transaktion die Signatur verpflichtet oder nicht.
TXHASH ermöglicht auch die Durchsetzung der Gleichheit zwischen dem Wert von Eingaben und Ausgaben, indem einzelne TXFieldSelectors verwendet werden, die sich nur zu einem einzelnen Wertfeld eines Eingangs oder einer Ausgabe beziehen, die Sie überprüfen möchten, und dann sicherzustellen, dass ihre Hashes auf dem Stapel gleich sind.
Gedanken schließen
Txhash ist eine mögliche Aufladung von CTV, die einen unglaublich detaillierten Grad an Selbstbeobachtung der Ausgabentransaktion ermöglicht, die unglaublich leistungsfähig sein kann, insbesondere in Kombination mit so etwas wie CSFs.
Diese Kraft ist jedoch ausdrucksstark genug, dass sie die Tür zu einem unglaublich großen Designraum öffnet. Eine, die möglicherweise einen materiellen Einfluss auf die Gesamtanreize von Bitcoin haben könnte. Dinge wie die Gewährleistung der Gleichstellung der Menge über Ausgaben oder Eingänge sind sich dem Gebiet dessen, was für vertrauenslose automatisierte Exchange-On-Chains benötigt wird, sehr nahe. Das ist eine schwerwiegende Quelle für den Extraktableer (MEV) für den Extraktable (MEV), das ein sehr schwerwiegendes Anreiz- und Zentralisierungsproblem für andere Blockchains war.
Txhash sollte absolut nicht abgewiesen werden, da es Protokollentwicklern unglaublich leistungsstarke Primitive bietet, aber die potenziellen Auswirkungen der zweiten Ordnung, was Menschen damit aufbauen werden, sollten gegen die positiven Bestimmungen abgewogen werden.

