Implementation
List<String> get inputAddresses => () {
List<String> inputAddresses = [];
for (int i = 0; i < inputs.length; i++) {
PsbtInput input = inputs[i];
if (input.witnessUtxo != null) {
// witnessUtxo (PSBT key type 01)
inputAddresses.add(input.witnessUtxo!.getAddress());
} else if (input.previousTransaction != null) {
// nonWitnessUtxo (PSBT key type 00)
Transaction prevTx = input.previousTransaction!;
int outputIndex = unsignedTransaction!.inputs[i].index;
if (outputIndex < prevTx.outputs.length) {
inputAddresses.add(prevTx.outputs[outputIndex].getAddress());
} else {
throw Exception(
'Invalid output index $outputIndex in previous transaction');
}
} else {
throw Exception('No UTXO information found for input $i');
}
}
return inputAddresses;
}();