Was ist die Definition von „Kontrollblock“ im Zusammenhang mit Taproot?
Darauf wird in standard.cpp im Bitcoin Core Repo und in BIP 341 verwiesen .
Es gibt zwei Möglichkeiten, eine Taproot-Ausgabe auszugeben:
Bei Ausgaben über den Skriptpfad muss der Unterzeichner eine Reihe von Daten angeben, damit seine Ausgaben überprüft werden können:
Die Optimierung selbst wird nicht offenbart. Es wird vom Verifizierer aus dem offenbarten Skript, der Blattversion und dem internen Schlüssel neu berechnet. Dann wird verifiziert, dass das Optimieren des internen Schlüssels mit dieser Optimierung mit dem öffentlichen Schlüssel in der ausgegebenen Ausgabe übereinstimmt.
Dies bringt uns zu der Frage, wie all diese Informationen im Zeugenstapel der Ausgabeneingabe codiert sind:
Der Kontrollblock sind die Daten, die erforderlich sind, um nachzuweisen, dass sich ein bestimmtes Skript im Taproot-Baum (Skriptpfad) befindet.
Murch definiert hier den Kontrollblock (ersetzt "inner key" durch "internal key"):
Wenn ein Fallback auf den Sicherungsschlüssel erforderlich ist, muss die Existenz des Taproot-Baums offengelegt werden. Wenn es nur ein einzelnes Blatt gibt, liefert der Spender nur den internen Schlüssel. Das Optimieren des internen Schlüssels mit dem gehashten Blatt führt zum öffentlichen Schlüssel. Zusammenfassend werden die Daten, die zum Nachweis der Existenz eines Skriptpfads erforderlich sind, als Kontrollblock bezeichnet.
BIP 341 fügt zusätzliche Details zum "Steuerblock" hinzu:
Das letzte Stapelelement wird Steuerblock c genannt und muss eine Länge von 33 + 32 m haben, für einen Wert von m, der eine ganze Zahl zwischen 0 und 128 einschließlich ist. Scheitern, wenn es keine solche Länge hat.
Um zu beweisen, dass sich D (der Hash eines bestimmten Skripts) im Taproot-Baum befindet, müsste der Kontrollblock die folgenden Daten in dieser Reihenfolge enthalten:
<control byte with leaf version and parity bit> <internal key p> <C> <E> <AB>
Um zu beweisen, dass sich D im Taproot-Baum befindet, müssen Sie in der Lage sein, bis zur Merkle-Root (ABCDE) zu hashen, und dazu müssen Sie C mit D hashen, dann E mit CD und dann AB mit CDE.
Michael Folkson
Pieter Wuille
Michael Folkson
Pieter Wuille
Michael Folkson