sendTransaction method

Future<SendResult> sendTransaction(
  1. SendTx rawTx, {
  2. required Address changeAddress,
})

Implementation

Future<SendResult> sendTransaction(
  SendTx rawTx, {
  required Address changeAddress,
}) async {
  final builder = TransactionBuilder(utxos: rawTx.utxos);
  final tx = builder.createUnsignedTransaction(
    toAddress: rawTx.toAddress,
    amount: rawTx.amount,
    changeAddress: changeAddress,
  );

  await _signTransaction(tx);

  final rpcTx = RpcTransaction(
    version: tx.version,
    inputs: tx.inputs.map(
      (input) => RpcTransactionInput(
        previousOutpoint: input.previousOutpoint.toRpc(),
        signatureScript: bytesToHex(input.signatureScript),
        sequence: input.sequence,
        sigOpCount: input.sigOpCount,
      ),
    ),
    outputs: tx.outputs.map(
      (output) => RpcTransactionOutput(
        amount: output.value,
        scriptPublicKey: output.scriptPublicKey.toRpc(),
      ),
    ),
    lockTime: tx.lockTime,
    subnetworkId: tx.subnetworkId.hex,
    gas: tx.gas,
    payload: tx.payload?.hex,
  );

  final txId = await client.submitTransaction(rpcTx);

  final changeAddressUsed = rpcTx.outputs.length > 1;

  return SendResult(
    txId: txId,
    tx: tx,
    changeAddressUsed: changeAddressUsed,
  );
}