buildEstimateTx method
Implementation
ADATransaction buildEstimateTx(ONSignADA onSignADA) {
if (utxos.isEmpty || _outputs.isEmpty) {
throw const ADAPluginException(
'Utxos and outputs must not be not empty.');
}
final outs = _outputs.map((e) {
if (e.amount.coin == BigInt.zero) {
return e.copyWith(amount: e.amount.copyWith(coin: maxU64));
}
return e;
}).toList();
final transactionSigners = signers;
final aux = auxiliaryData;
final body = TransactionBody(
inputs: TransactionInputs(utxos.map((e) => e.input).toList()),
outputs: TransactionOutputs(outs),
mint: getMint(),
fee: BigInt.from(mask32),
certificates: certificates.isEmpty
? null
: Certificates(certificates.map((e) => e.certificate).toList()),
auxiliaryDataHash: aux?.toHash());
final bodyHash = ADATransactionBuilderUtils.fakeBodyHash;
final witnesses = <ADABaseTransactionWitness>[];
for (final i in transactionSigners) {
final witness = onSignADA(address: i, digest: bodyHash);
witnesses.addAll(witness);
}
final vkeys = witnesses.whereType<Vkeywitness>().toList();
final bootstraps = witnesses.whereType<BootstrapWitness>().toList();
final transaction = ADATransaction(
data: aux,
body: body,
witnessSet: TransactionWitnessSet(
bootstraps: BootstrapWitnesses(bootstraps),
nativeScripts: nativeScripts,
vKeys: VkeyWitnesses(vkeys)),
);
return transaction;
}