Ich würde gerne lernen, wie getrennte Zeugen funktionieren, und ich dachte, die Rohtransaktionsdaten wären ein guter Ausgangspunkt
Wenn dies die Struktur der aktuellen Transaktionen ist:
version | [inputcount] {[txid] [vin] [signature] [sequence]} | [outputcount] {value} {varint} {lockingscript} | [locktime]
Wie sieht eine segregierte Witness-Transaktion aus?
Aus der primitiven/transaction.h von Bitcoin Core :
/**
* Basic transaction serialization format:
* - int32_t nVersion
* - std::vector<CTxIn> vin
* - std::vector<CTxOut> vout
* - uint32_t nLockTime
*
* Extended transaction serialization format:
* - int32_t nVersion
* - unsigned char dummy = 0x00
* - unsigned char flags (!= 0)
* - std::vector<CTxIn> vin
* - std::vector<CTxOut> vout
* - if (flags & 1):
* - CTxWitness wit;
* - uint32_t nLockTime
*/
Mit anderen Worten, vor der txin-Zählung gibt es eine 0x00 0x01
Sequenz (die andernfalls als Transaktion mit 0 Eingaben und 1 Ausgabe interpretiert würde, die nicht gültig sein kann), und vor der Sperrzeit gibt es einen Zeugendatensatz für jede Eingabe (die txin count nicht wiederholt wird, wird implizit davon ausgegangen, dass er gleich dem zuvor angegebenen txin count ist).
inersha
Pieter Wuille
Stecknadelkopf
tx
, werden aber entfernt, bevor sie für einen Nicht-SW-Knoten serialisiert werden? Müssen diedummy
undflags
Bytes auch für Nicht-SW-Knoten entfernt werden?Pieter Wuille
Stecknadelkopf
Pieter Wuille