Ich habe eine Frage dazu, wie getrennte Zeugen arbeiten.
Ich lese diesen Beitrag und in der Antwort existiert dieser Satz
Da Signaturdaten (Zeugendaten) außerhalb der Transaktion (und außerhalb des Standardblocks) gespeichert werden, bedeutet dies, dass diese Daten nicht auf die Blockgröße angerechnet werden müssen.
Jetzt habe ich drei Fragen zu diesem Argument
Die Daten des scriptSig werden von TransactionInput nach RawTransaction verschoben, also ist die Raw-Transaktion nicht formbar? Vielleicht kann ich mir nicht vorstellen, was wirklich mit Nicht-Zeugen-Transaktionen während der Formbarkeit passiert ist, können Sie mir ein Beispiel geben?
Die Transaktions-ID ist ein Hash der gesamten Transaktionsdatenstruktur (Version, Eingaben, Ausgaben, Signaturen, Anzahl der Eingaben und Ausgaben, Sperrzeit, alles). Elliptische-Kurven-Signaturen, wie sie von Bitcoin verwendet werden, enthalten eine Zufallszahl als Teil der Signatur. Die Verwendung einer anderen Zufallszahl führt ebenfalls zu einer gültigen, aber anderen Signatur. Wenn sich die Signatur ändert, würde sich auch der Hash des gesamten Transaktionsobjekts ändern.
Bei segregierten Witness-Transaktionen sind diese Signaturdaten nicht Teil der Basistransaktionsdatenstruktur – das bedeutet, dass eine Änderung der Signatur die txid nicht mehr ändert, da der Rest der Transaktion nicht geändert wurde.
Warum werden die Zeugendaten außerhalb des Blocks gespeichert? Was meinst du? Ich glaube, ich verstehe den Sinn dieser Platzersparnis nicht, da die Zeugendaten in der blk-Datei vorhanden sind
Das Verschieben der Zeugendaten aus dem Block ermöglicht es Bitcoin, effektiv mehr Transaktionen in einen Block zu packen – Der Platz, der zuvor von allen Signaturen verwendet wurde, ist jetzt verfügbar, um weitere Transaktionen hinzuzufügen.
Wie (wenn ich das richtig verstehe) verwendet der Bitcoin-Kern den Merkle-Baum zur Überprüfung der Signatur? (Diese Frage hängt mit der ersten zusammen, ich glaube nicht, dass ich das Phänomen der Formbarkeit so verstanden habe, wie es passiert.)
Merkle-Bäume haben nichts mit der Signaturprüfung zu tun. Merkle-Bäume werden verwendet, um eine Verpflichtung aufzubauen, zu der Transaktionen in einen Block aufgenommen werden, der dann im Block-Header platziert und mithilfe des Proof-of-Work-Systems gesperrt wird. Dies wirkte sich auf die Transaktionsformbarkeit aus, da das Ändern einer Transaktions-ID innerhalb der für den Block ausgewählten Transaktionen den Merkle-Baum ändern würde - dies ist aus den oben genannten Gründen nicht mehr möglich.
Warum werden die Zeugendaten außerhalb des Blocks gespeichert? Was meinst du? Ich glaube, ich verstehe den Sinn dieser Platzersparnis nicht, da die Zeugendaten in der blk-Datei vorhanden sind.
Die Unterschriften sind im Block. Alle Signaturen eines Blocks bilden einen weiteren Merkle-Baum und werden in einer Ausgabe des Coinbase-Tx gespeichert. Ich denke, dies bezieht sich auf das "UTXO-Set", das wie ein Hauptbuch ist, in dem die Miner die UTXOs aufzeichnen und überprüfen. Segwit TXs behalten die Signaturen nicht in der TXID, also wird der Zeuge im Block gespeichert, aber nicht im "UTXO-Set".
Vincenzopalazzo
Pieter Wuille
Vincenzopalazzo
Vincenzopalazzo
Pieter Wuille