simulateTransaction method

  1. @override
Future<TransactionResponse> simulateTransaction(
  1. Transaction transactionBlock, {
  2. TransactionIncludeOptions? include,
  3. bool? doGasSelection,
  4. bool? checksEnabled,
})
override

Simulates transactionBlock without signing; results surface via effects, events, and command outputs.

Implementation

@override
Future<TransactionResponse> simulateTransaction(
  Transaction transactionBlock, {
  TransactionIncludeOptions? include,
  bool? doGasSelection,
  bool? checksEnabled,
}) async {
  final txJson =
      transactionBlock.toGrpcTransaction().toProto3Json()
          as Map<String, dynamic>;
  final data = await _client.executeData(
    _simulateTransactionOperation,
    generated.Variables$Query$SimulateTransaction(
      tx: txJson,
      checksEnabled: checksEnabled,
      doGasSelection: doGasSelection,
    ),
  );
  final result = data.simulateTransaction;
  final effects = result.effects;
  return TransactionResponse(
    digest: '',
    status: ExecutionStatus(
      success: effects?.status == schema.Enum$ExecutionStatus.SUCCESS,
    ),
    events: effects?.events?.nodes.map(_mapSimEvent).toList(),
    commandResults: result.outputs?.map(_mapSimCommand).toList(),
  );
}