signAndBuildTransactionAsync method

Future<ADATransaction> signAndBuildTransactionAsync(
  1. ONSignADAAsync onSignADA
)

Implementation

Future<ADATransaction> signAndBuildTransactionAsync(
    ONSignADAAsync onSignADA) async {
  _validateAmounts();
  final aux = auxiliaryData;
  final trBody = buildTxBody(auxHash: aux?.toHash());
  final bodyHash = List<int>.unmodifiable(trBody.toHash().data);
  final witnesses = <ADABaseTransactionWitness>[];
  final transactionSigners = signers;

  for (final i in transactionSigners) {
    final witness = await onSignADA(address: i, digest: bodyHash);
    witnesses.addAll(witness);
  }
  final vkeys = witnesses.whereType<Vkeywitness>().toSet().toList();
  final bootstraps = witnesses.whereType<BootstrapWitness>().toSet().toList();
  return ADATransaction(
      body: trBody,
      data: aux,
      witnessSet: TransactionWitnessSet(
          vKeys: vkeys.isEmpty ? null : VkeyWitnesses(vkeys),
          nativeScripts: nativeScripts,
          bootstraps:
              bootstraps.isEmpty ? null : BootstrapWitnesses(bootstraps)));
}