diff --git a/coinlib/lib/src/tx/sighash/legacy_signature_hasher.dart b/coinlib/lib/src/tx/sighash/legacy_signature_hasher.dart index 0a9008e..4918b41 100644 --- a/coinlib/lib/src/tx/sighash/legacy_signature_hasher.dart +++ b/coinlib/lib/src/tx/sighash/legacy_signature_hasher.dart @@ -69,6 +69,7 @@ final class LegacySignatureHasher extends SignatureHasher { inputs: modifiedInputs, outputs: modifiedOutputs, locktime: tx.locktime, + vExtraData: tx.vExtraData, ); // Add sighash type onto the end diff --git a/coinlib/lib/src/tx/transaction.dart b/coinlib/lib/src/tx/transaction.dart index c0c7b72..c0a03b6 100644 --- a/coinlib/lib/src/tx/transaction.dart +++ b/coinlib/lib/src/tx/transaction.dart @@ -48,6 +48,7 @@ class Transaction with Writable { final List inputs; final List outputs; final Locktime locktime; + final Uint8List? vExtraData; /// Constructs a transaction with the given [inputs] and [outputs]. /// [TransactionTooLarge] will be thrown if the resulting transction exceeds @@ -60,6 +61,7 @@ class Transaction with Writable { required Iterable inputs, required Iterable outputs, this.locktime = Locktime.zero, + this.vExtraData, }) : inputs = List.unmodifiable(inputs), outputs = List.unmodifiable(outputs) { checkInt32(version); @@ -184,6 +186,10 @@ class Transaction with Writable { } writer.writeUInt32(locktime.value); + + if (vExtraData != null) { + writer.writeVarSlice(vExtraData!); + } } Transaction _newInputs(List newInputs) => Transaction( @@ -191,6 +197,7 @@ class Transaction with Writable { inputs: newInputs, outputs: outputs, locktime: locktime, + vExtraData: vExtraData, ); T _requireInputOfType(int inputN) { @@ -348,6 +355,7 @@ class Transaction with Writable { ], outputs: outputs, locktime: locktime, + vExtraData: vExtraData, ); /// Returns a new [Transaction] with the [output] added to the end of the @@ -377,6 +385,7 @@ class Transaction with Writable { inputs: modifiedInputs, outputs: [...outputs, output], locktime: locktime, + vExtraData: vExtraData, ); } @@ -401,6 +410,7 @@ class Transaction with Writable { ), outputs: outputs, locktime: locktime, + vExtraData: vExtraData, ) : this;