getSignedTransaction method
Get the transaction if all inputs are signed.
Implementation
Transaction getSignedTransaction(BtcAddressType addressType) {
Transaction signedTransaction =
Transaction.parsePsbtTransaction(unsignedTransaction!.serialize());
//every input should have 2 partial sigs
for (int i = 0; i < inputs.length; i++) {
if (inputs[i].partialSigs!.length != 2 ||
inputs[i].taprootKeySpendSignature != null) {
throw Exception('Not enough signatures');
}
if (inputs[i].partialSigs!.length == 2) {
signedTransaction.inputs[i].setSignature(
addressType, inputs[i].partialSigs![0], inputs[i].partialSigs![1]);
} else if (inputs[i].taprootKeySpendSignature != null) {
signedTransaction.inputs[i].setSignature(addressType,
inputs[i].taprootKeySpendSignature!, inputs[i].taprootInternalKey!);
}
if (inputs[i].witnessUtxo == null ||
signedTransaction.validateSignature(
i, inputs[i].witnessUtxo!.serialize(), addressType)) {
continue;
} else {
throw Exception('Invalid Signatures');
}
}
signedTransaction.setIsSegwit(addressType.isSegwit);
return signedTransaction;
}