addInput method
void
addInput({
- required Outpoint outpoint,
- Uint8List? witnessUtxoScript,
- BigInt? witnessUtxoValue,
- Tx? nonWitnessUtxo,
- int sequence = 0xffffffff,
override
Implementation
@override
void addInput({
required Outpoint outpoint,
Uint8List? witnessUtxoScript,
BigInt? witnessUtxoValue,
Tx? nonWitnessUtxo,
int sequence = 0xffffffff,
}) {
_ensureSections();
final inputKvs = <PsbtKeyValue>[];
// PSBT_IN_PREVIOUS_TXID (0x0e): 32-byte txid in internal byte order
inputKvs.add(PsbtKeyValue(
key: Uint8List.fromList([PsbtInputEntry.previousTxid.keyType]),
value: outpoint.txid,
));
// PSBT_IN_OUTPUT_INDEX (0x0f): 4-byte LE vout
final voutBytes = Uint8List(4);
WireWriter(voutBytes).writeUInt32(outpoint.vout);
inputKvs.add(PsbtKeyValue(
key: Uint8List.fromList([PsbtInputEntry.outputIndex.keyType]),
value: voutBytes,
));
// PSBT_IN_SEQUENCE (0x10): 4-byte LE sequence
final seqBytes = Uint8List(4);
WireWriter(seqBytes).writeUInt32(sequence);
inputKvs.add(PsbtKeyValue(
key: Uint8List.fromList([PsbtInputEntry.sequence.keyType]),
value: seqBytes,
));
if (nonWitnessUtxo != null) {
inputKvs.add(PsbtKeyValue(
key: Uint8List.fromList([PsbtInputEntry.nonWitnessUtxo.keyType]),
value: nonWitnessUtxo.toBytes(),
));
}
if (witnessUtxoScript != null && witnessUtxoValue != null) {
final out = TxOutput(value: witnessUtxoValue, scriptPubKey: witnessUtxoScript);
inputKvs.add(PsbtKeyValue(
key: Uint8List.fromList([PsbtInputEntry.witnessUtxo.keyType]),
value: out.toBytes(),
));
}
final insertIndex = 1 + _inputCount;
_sections.insert(insertIndex, inputKvs);
_inputCount++;
}