addInput method

  1. @override
void addInput({
  1. required Outpoint outpoint,
  2. Uint8List? witnessUtxoScript,
  3. BigInt? witnessUtxoValue,
  4. Tx? nonWitnessUtxo,
  5. int sequence = 0xffffffff,
})
override

Implementation

@override
void addInput({
  required Outpoint outpoint,
  Uint8List? witnessUtxoScript,
  BigInt? witnessUtxoValue,
  Tx? nonWitnessUtxo,
  int sequence = 0xffffffff,
}) {
  _ensureSections();
  final oldInputCount = inputCount;
  final newInput = RawInput(prevOut: outpoint, sequence: sequence);
  final inputs = _unsignedTx?.inputs ?? [];
  final outputs = _unsignedTx?.outputs ?? [];
  _unsignedTx = Tx(
    version: _unsignedTx?.version ?? Tx.currentVersion,
    inputs: [...inputs, newInput],
    outputs: outputs,
    locktime: _unsignedTx?.locktime ?? 0,
  );

  final inputKvs = <PsbtKeyValue>[];
  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 + oldInputCount;

  _sections.insert(insertIndex, inputKvs);
}