java.lang.Object
tech.deplant.java4ever.binding.Tvm
Tvm
Contains methods of "tvm" module of EVER-SDK API
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
static final record
static final record
static final record
static final record
static final record
static final record
static final record
static final record
static enum
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Tvm.ResultOfRunExecutor
runExecutor
(EverSdkContext ctx, String message, Tvm.AccountForExecutor account, Tvm.ExecutionOptions executionOptions, Abi.ABI abi, Boolean skipTransactionCheck, Boc.BocCacheType bocCache, Boolean returnUpdatedAccount) Performs all the phases of contract execution on Transaction Executor - the same component that is used on Validator Nodes.static Tvm.ResultOfRunGet
runGet
(EverSdkContext ctx, String account, String functionName, com.fasterxml.jackson.databind.JsonNode input, Tvm.ExecutionOptions executionOptions, Boolean tupleListAsArray) Executes a get-method of FIFT contract that fulfills the smc-guidelines https://test.ton.org/smc-guidelines.txt and returns the result data from TVM's stack Executes a get-method of FIFT contractstatic Tvm.ResultOfRunTvm
runTvm
(EverSdkContext ctx, String message, String account, Tvm.ExecutionOptions executionOptions, Abi.ABI abi, Boc.BocCacheType bocCache, Boolean returnUpdatedAccount) Performs only a part of compute phase of transaction execution that is used to run get-methods of ABI-compatible contracts.
-
Constructor Details
-
Tvm
public Tvm()
-
-
Method Details
-
runExecutor
public static Tvm.ResultOfRunExecutor runExecutor(EverSdkContext ctx, String message, Tvm.AccountForExecutor account, Tvm.ExecutionOptions executionOptions, Abi.ABI abi, Boolean skipTransactionCheck, Boc.BocCacheType bocCache, Boolean returnUpdatedAccount) throws EverSdkException Performs all the phases of contract execution on Transaction Executor - the same component that is used on Validator Nodes. Can be used for contract debugging, to find out the reason why a message was not delivered successfully. Validators throw away the failed external inbound messages (if they failed before `ACCEPT`) in the real network. This is why these messages are impossible to debug in the real network. With the help of run_executor you can do that. In fact, `process_message` function performs local check with `run_executor` if there was no transaction as a result of processing and returns the error, if there is one. Another use case to use `run_executor` is to estimate fees for message execution. Set `AccountForExecutor::Account.unlimited_balance` to `true` so that emulation will not depend on the actual balance. This may be needed to calculate deploy fees for an account that does not exist yet. JSON with fees is in `fees` field of the result. One more use case - you can produce the sequence of operations, thus emulating the sequential contract calls locally. And so on. Transaction executor requires account BOC (bag of cells) as a parameter. To get the account BOC - use `net.query` method to download it from GraphQL API (field `boc` of `account`) or generate it with `abi.encode_account` method. Also it requires message BOC. To get the message BOC - use `abi.encode_message` or `abi.encode_internal_message`. If you need this emulation to be as precise as possible (for instance - emulate transaction with particular lt in particular block or use particular blockchain config, downloaded from a particular key block - then specify `execution_options` parameter. If you need to see the aborted transaction as a result, not as an error, set `skip_transaction_check` to `true`. Emulates all the phases of contract execution locally- Parameters:
message
- Must be encoded as base64. Input message BOC.account
- Account to run on executorexecutionOptions
- Execution options.abi
- Contract ABI for decoding output messagesskipTransactionCheck
- Skip transaction check flagbocCache
- The BOC itself returned if no cache type provided Cache type to put the result.returnUpdatedAccount
- Empty string is returned if the flag is `false` Return updated account flag.- Throws:
EverSdkException
-
runTvm
public static Tvm.ResultOfRunTvm runTvm(EverSdkContext ctx, String message, String account, Tvm.ExecutionOptions executionOptions, Abi.ABI abi, Boc.BocCacheType bocCache, Boolean returnUpdatedAccount) throws EverSdkException Performs only a part of compute phase of transaction execution that is used to run get-methods of ABI-compatible contracts. If you try to run get-methods with `run_executor` you will get an error, because it checks ACCEPT and exits if there is none, which is actually true for get-methods. To get the account BOC (bag of cells) - use `net.query` method to download it from GraphQL API (field `boc` of `account`) or generate it with `abi.encode_account method`. To get the message BOC - use `abi.encode_message` or prepare it any other way, for instance, with FIFT script. Attention! Updated account state is produces as well, but only `account_state.storage.state.data` part of the BOC is updated. Executes get-methods of ABI-compatible contracts- Parameters:
message
- Must be encoded as base64. Input message BOC.account
- Must be encoded as base64. Account BOC.executionOptions
- Execution options.abi
- Contract ABI for decoding output messagesbocCache
- The BOC itself returned if no cache type provided Cache type to put the result.returnUpdatedAccount
- Empty string is returned if the flag is `false` Return updated account flag.- Throws:
EverSdkException
-
runGet
public static Tvm.ResultOfRunGet runGet(EverSdkContext ctx, String account, String functionName, com.fasterxml.jackson.databind.JsonNode input, Tvm.ExecutionOptions executionOptions, Boolean tupleListAsArray) throws EverSdkException Executes a get-method of FIFT contract that fulfills the smc-guidelines https://test.ton.org/smc-guidelines.txt and returns the result data from TVM's stack Executes a get-method of FIFT contract- Parameters:
account
- Account BOC in `base64`functionName
- Function nameinput
- Input parametersexecutionOptions
- Execution optionstupleListAsArray
- Default is `false`. Input parameters may use any of lists representations If you receive this error on Web: "Runtime error. Unreachable code should not be executed...", set this flag to true. This may happen, for example, when elector contract contains too many participants Convert lists based on nested tuples in the **result** into plain arrays.- Throws:
EverSdkException
-