getInputAddresses method

List<String> getInputAddresses({
  1. bool isTestnet = false,
  2. String chain = 'btc',
})

Implementation

List<String> getInputAddresses({bool isTestnet = false, String chain = 'btc'}) {
      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(isTestnet: isTestnet, chain: chain));
        } 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(isTestnet: isTestnet, chain: chain));
          } else {
            throw Exception(
                'Invalid output index $outputIndex in previous transaction');
          }
        } else {
          throw Exception('No UTXO information found for input $i');
        }
      }
      return inputAddresses;
    }