write method
Override to write data into writer
Implementation
@override
void write(Writer writer) {
final extFlag = leafHash == null ? 0 : 1;
writer.writeUInt8(0); // "Epoch"
writer.writeUInt8(hashType.value);
// Total transaction data
writer.writeUInt32(tx.version);
writer.writeUInt32(tx.locktime);
if (!hashType.anyOneCanPay) {
writer.writeSlice(txHashes.prevouts.singleHash);
writer.writeSlice(prevOutHashes!.amounts.singleHash);
writer.writeSlice(prevOutHashes!.scripts.singleHash);
writer.writeSlice(txHashes.sequences.singleHash);
}
if (hashType.all) {
writer.writeSlice(txHashes.outputs.singleHash);
}
// Data specific to spending input
writer.writeUInt8(extFlag << 1);
if (hashType.anyOneCanPay) {
tx.inputs[inputN].prevOut.write(writer);
prevOuts[inputN].write(writer);
writer.writeUInt32(tx.inputs[inputN].sequence);
} else {
writer.writeUInt32(inputN);
}
// Data specific to matched output
if (hashType.single) {
writer.writeSlice(
PrecomputeHasher.singleOutput(tx.outputs[inputN]).singleHash,
);
}
// Data specific to the script
if (leafHash != null) {
writer.writeSlice(leafHash!);
writer.writeUInt8(0); // Key version = 0
writer.writeUInt32(codeSeperatorPos);
}
}