simulateTransaction method
Future<TransactionResponse>
simulateTransaction(
- Transaction transactionBlock, {
- TransactionIncludeOptions? include,
- bool? doGasSelection,
- 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 payment = transactionBlock.getData().gasData.payment;
final data = await _client.executeData(
_simulateTransactionOperation,
generated.Variables$Query$SimulateTransaction(
tx: txJson,
checksEnabled: checksEnabled,
doGasSelection: doGasSelection ?? (payment != null && payment.isEmpty),
),
);
final result = data.simulateTransaction;
final effects = result.effects;
final gasObjectId = effects?.gasEffects?.gasObject?.address;
final transactionBcs = effects?.transaction?.transactionBcs;
final executionError = effects?.executionError;
return TransactionResponse(
digest: '',
epoch: effects?.epoch?.epochId.toString(),
status: ExecutionStatus(
success: effects?.status == schema.Enum$ExecutionStatus.SUCCESS,
error: executionError == null
? null
: _parseExecutionError(
message: executionError.message,
abortCode: executionError.abortCode,
sourceLineNumber: executionError.sourceLineNumber,
instructionOffset: executionError.instructionOffset,
identifier: executionError.identifier,
constant: executionError.constant,
package: executionError.module?.package?.address,
module: executionError.module?.name,
functionName: executionError.function?.name,
),
),
bcs: include?.bcs == true && transactionBcs != null
? base64Decode(transactionBcs)
: null,
events: effects?.events?.nodes.map(_mapSimEvent).toList(),
commandResults: result.outputs?.map(_mapSimCommand).toList(),
gasPaymentMocked:
gasObjectId != null &&
normalizeSuiAddress(gasObjectId) == MOCKED_GAS_OBJECT_ID,
);
}