2023-02-02 07:03:45 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "emulator_export.h"
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Creates TransactionEmulator object
|
|
|
|
* @param config_params_boc Base64 encoded BoC serialized Config dictionary (Hashmap 32 ^Cell)
|
|
|
|
* @param vm_log_verbosity Verbosity level of VM log. 0 - log truncated to last 256 characters. 1 - unlimited length log.
|
|
|
|
* 2 - for each command prints its cell hash and offset. 3 - for each command log prints all stack values.
|
|
|
|
* @return Pointer to TransactionEmulator or nullptr in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT void *transaction_emulator_create(const char *config_params_boc, int vm_log_verbosity);
|
|
|
|
|
2024-07-02 09:40:57 +00:00
|
|
|
/**
|
|
|
|
* @brief Creates Config object from base64 encoded BoC
|
|
|
|
* @param config_params_boc Base64 encoded BoC serialized Config dictionary (Hashmap 32 ^Cell)
|
|
|
|
* @return Pointer to Config object or nullptr in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT void *emulator_config_create(const char *config_params_boc);
|
|
|
|
|
2023-02-02 07:03:45 +00:00
|
|
|
/**
|
|
|
|
* @brief Set unixtime for emulation
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param unixtime Unix timestamp
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool transaction_emulator_set_unixtime(void *transaction_emulator, uint32_t unixtime);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set lt for emulation
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param lt Logical time
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool transaction_emulator_set_lt(void *transaction_emulator, uint64_t lt);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set rand seed for emulation
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param rand_seed_hex Hex string of length 64
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool transaction_emulator_set_rand_seed(void *transaction_emulator, const char* rand_seed_hex);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set ignore_chksig flag for emulation
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param ignore_chksig Whether emulation should always succeed on CHKSIG operation
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool transaction_emulator_set_ignore_chksig(void *transaction_emulator, bool ignore_chksig);
|
|
|
|
|
|
|
|
/**
|
2024-07-02 09:40:57 +00:00
|
|
|
* @brief Set config for emulation
|
2023-02-02 07:03:45 +00:00
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param config_boc Base64 encoded BoC serialized Config dictionary (Hashmap 32 ^Cell)
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool transaction_emulator_set_config(void *transaction_emulator, const char* config_boc);
|
|
|
|
|
|
|
|
/**
|
2024-07-02 09:40:57 +00:00
|
|
|
* @brief Set config for emulation
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param config Pointer to Config object
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool transaction_emulator_set_config_object(void *transaction_emulator, void* config);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set libraries for emulation
|
2023-02-02 07:03:45 +00:00
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param libs_boc Base64 encoded BoC serialized shared libraries dictionary (HashmapE 256 ^Cell).
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool transaction_emulator_set_libs(void *transaction_emulator, const char* libs_boc);
|
|
|
|
|
2023-04-02 14:28:18 +00:00
|
|
|
/**
|
|
|
|
* @brief Enable or disable TVM debug primitives
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param debug_enabled Whether debug primitives should be enabled or not
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool transaction_emulator_set_debug_enabled(void *transaction_emulator, bool debug_enabled);
|
|
|
|
|
TVM Upgrade (#686)
* New TVM instructions
* Remove PREVBLOCKS
* Separate target ton_crypto into TVM-related and -unrelared code
* Add fine for failed "send message"; rework SENDMSG
* Fix include
* Fix bugs, improve action fines
* Disable fines for special accounts
* Handle msg_balance_remaining.grams == null in transaction.cpp
* Bugfixes in SENDMSG
* Fix fee calculation in SENDMSG
* Fix CellStorageStat and transaction.cpp after merge
* SETBOUNCEONACTIONPHASEFAIL instruction
* ADDDIVMOD instructions
* RUNVM, RUNVMX instructions
* Changes in RUNVM
* Tests for adddiv and runvm
* HASHEXT instruction
* Improve opcode-timing
More iterations
Don't measure preliminary run
Remove logs and other excessive operations
Add "error" to output
* Increase RUNVM gas price
* Optimize HASHEXT, adjust gas price
* Add "bounce of action fail" flag to actions
* Stack operations with unlimited arguments
* Ristretto255 instructions
* Adjust gas consumption
* Optional fixed number of return values in RUNVM, fix exception handling
* Adjust gas consumption
* Simplify gas consumption logic
* Support of secp256k1 and sodium libraries in builds (#11)
* add support of secp256k1 library to the builds (linux, win)
* add support of secp256k1 library to the builds (linux, win)
* install secp256k1 via brew
* install libsodium via brew;
change sodium to upper case in FindSodium.cmake
* install libsodium via brew;
change sodium to upper case in FindSodium.cmake
* simplify FindSodium.cmake
* bug fixing
* bug fixing
* bug fixing
* add macro SODIUM_STATIC
* adjust build command for windows
* put back original FindSodium.cmake
* put back original FindSodium.cmake
* fix sodium unzipped path for windows;
add ninja
* fix sodium unzipped path for windows;
add ninja
* fix sodium unzipped path for windows;
add ninja
* Win32 github build for secp256k1
* x64 architecture github build for secp256k1
* fix sodium linking on linux
* enable docker buildx arm64 builds from forked repos
* enable docker buildx arm64 builds from forked repos
* enable docker buildx arm64 builds from forked repos
* adjust mac builds for secp2561k and sodium
* fix tonlib jni generation
* minor fix
* sync fixes across platforms
* add libsodium build script for android and precompiled static libraries
* build tonlib for android (fails)
* FindSodium uppercase
* remove system libsodium for android, use precompiled instead;
specify SECP256K1_INCLUDE_DIR fir mac 12.6
* uppercase sodium
* simplify FindSodium
* fix windows build sodium path;
use ninja for windows
* simplify sodium 2
* adjust windows sodium paths;
add paths to android jni
* add ninja build windows
* add ninja build windows
* add ninja build windows 2
* remove win ninja
* fix 1
* fix 2
* fix win 3
* fix linux compile 3
* fix jni 1
* fix jni 2 and mac
* fix jni 3
* fix jni 4
* fix jni 5
* fix mac 6
* fix mac 7 and jni paths
* fix jni 8
* rework sodium for android
* rework sodium for android
* rework sodium for android 2
* fixed sodium for android 2
* fixed sodium for android 3
* static secp256k1 for android
* add precompiled arm secp256k1
* add precompiled arm secp256k1
* build native-lib with secp256k1 x86-64 (non arm)
* update precompiled with NDK libsecp256k1.a
* update precompiled with NDK libsecp256k1.a
* update precompiled with NDK libsecp256k1.a
* refactor llvm-strip location
* refactor llvm-strip location
* add native-lib.so for armv7a, armv8a
* add native-lib.so for armv7a, armv8a
* test armv7a, armv8a
* armv7a - fails linking on sodium, test -> armv8a
* works x86-64, armv7a - fails linking on sodium, armv8a - fails linking secp256k1 (incompatible with aarch64linux)
* update libpsec256k1, sodium static libs
* test x86 android native-lib
* test armv7 android native-lib
* test armv8 android native-lib
* x86_64 and arm64 android native-lib works
* x86_64 and arm64 android native-lib works
* x86_64 and arm64 android native-lib works
* test armv7 android native-lib
* test all android native-libs
* test all android native-libs
* test all android native-libs
* test all android native-libs - without SodiumAndroid
* test all android native-libs - with FindSodiumAndroid.cmake
* win, with Sodium via SODIUM_DIR
* win, with Sodium via SODIUM_DIR env
* win, with Sodium via SODIUM_DIR env
* win, with Sodium via SODIUM_DIR env and SODIUM_USE_STATIC_LIBS
* win, with Sodium via SODIUM_DIR, SODIUM_USE_STATIC_LIBS and SODIUM_INCLUDE_DIR
* android, with FindSodium
* android, with FindSodium with SODIUM_USE_STATIC_LIBS
* remove if not apple
* target_link_libraries(ton_crypto_core PUBLIC secp256k1)
* android SECP256K1_INCLUDE_DIRS
* android SECP256K1_INCLUDE_DIR
* add libsecp256k1.a/so pre-compiled with ubuntu 22 x86-64
* add libsecp256k1.a/so pre-compiled with ubuntu 22 x86-64
* sodium dirs
* sodium dirs
* sodium dirs
* remove NOT APPLE and SodiumAndroid
* add NOT APPLE and remove SodiumAndroid
* add NOT APPLE and remove SodiumAndroid
* remove build scripts for 18.04, reduce CMakeLists.txt
* remove build scripts for 18.04, reduce CMakeLists.txt
* Fix cas consumption during library load
* Fix fetch_config_params after merge
* Add all ADDDIVMOD ops to Asm.fif
* Save unpaid storage fee to due_payment
* Add "set prev blocks info" to emulator
* Adjusted builds (#13)
* Update flake.nix
Add libsodium
* add libsecp256k1-dev and libsodium-dev into wasm build
* make back emulator a shared library;
put emulator to artifacts;
compile wasm artifacts with sodium and secp256k1.
* add secp256k1 to nix
* compile emulator statically with nix
* compile emulator statically with nix
* compile emulator lib statically with nix
* compile emulator lib statically with nix
* add libemulator to artifacts
* add shared libemulator library to artifacts
* minor release fix
* update set-output commands;
add recent_changelog.md
* releases fixes
* releases fixes, multiline
* releases fixes, multiline
* releases fixes, multiline
* put back multiline changelog
* put back multiline changelog
* ConfigParam 19 (global-id) and GLOBALID instruction
* Fix gas consumption in HASHEXT
* Add blst library
* Add bls instructions
* Allow passing long code to opcode-timing
* Add bls testcase
* More BLS instructions
* Fix tests, add bls tests
* Add more bls tests
* Improve some bls operations
* Adjust some BLS gas prices
* Adjust BLS gas prices
* Enable __BLST_PORTABLE__ flag only if PORTABLE flag is set
* Add tests for BLS_PAIRING
* GASCONSUMED instruction
* Fix compilation against docker with blst library; (#14)
* fix compilation against docker with blst library;
add precompiled libblst.a to android builds
* minor fix
* Adjust BLKSWX gas
* Fix comparison with NAN
* Allow arbitrary integers for scalars in ristretto multiplication, fix test
* Adjust nix builds according to PR 694 (#15)
* integrate and test PR-694
* integrate and test PR-694, test 2
* Add P256_CHKSIGN (secp256r1)
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
Co-authored-by: neodiX42 <namlem@gmail.com>
2023-05-24 18:14:13 +00:00
|
|
|
/**
|
|
|
|
* @brief Set tuple of previous blocks (13th element of c7)
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param info_boc Base64 encoded BoC serialized TVM tuple (VmStackValue).
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool transaction_emulator_set_prev_blocks_info(void *transaction_emulator, const char* info_boc);
|
|
|
|
|
2023-02-02 07:03:45 +00:00
|
|
|
/**
|
|
|
|
* @brief Emulate transaction
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param shard_account_boc Base64 encoded BoC serialized ShardAccount
|
|
|
|
* @param message_boc Base64 encoded BoC serialized inbound Message (internal or external)
|
|
|
|
* @return Json object with error:
|
|
|
|
* {
|
|
|
|
* "success": false,
|
2023-05-24 09:40:04 +00:00
|
|
|
* "error": "Error description",
|
|
|
|
* "external_not_accepted": false,
|
|
|
|
* // and optional fields "vm_exit_code", "vm_log", "elapsed_time" in case external message was not accepted.
|
2023-02-02 07:03:45 +00:00
|
|
|
* }
|
|
|
|
* Or success:
|
|
|
|
* {
|
|
|
|
* "success": true,
|
|
|
|
* "transaction": "Base64 encoded Transaction boc",
|
|
|
|
* "shard_account": "Base64 encoded new ShardAccount boc",
|
|
|
|
* "vm_log": "execute DUP...",
|
2023-05-24 09:40:04 +00:00
|
|
|
* "actions": "Base64 encoded compute phase actions boc (OutList n)",
|
|
|
|
* "elapsed_time": 0.02
|
2023-02-02 07:03:45 +00:00
|
|
|
* }
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT const char *transaction_emulator_emulate_transaction(void *transaction_emulator, const char *shard_account_boc, const char *message_boc);
|
|
|
|
|
2023-05-24 09:40:04 +00:00
|
|
|
/**
|
|
|
|
* @brief Emulate tick tock transaction
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
* @param shard_account_boc Base64 encoded BoC serialized ShardAccount of special account
|
|
|
|
* @param is_tock True for tock transactions, false for tick
|
|
|
|
* @return Json object with error:
|
|
|
|
* {
|
|
|
|
* "success": false,
|
|
|
|
* "error": "Error description",
|
|
|
|
* "external_not_accepted": false
|
|
|
|
* }
|
|
|
|
* Or success:
|
|
|
|
* {
|
|
|
|
* "success": true,
|
|
|
|
* "transaction": "Base64 encoded Transaction boc",
|
|
|
|
* "shard_account": "Base64 encoded new ShardAccount boc",
|
|
|
|
* "vm_log": "execute DUP...",
|
|
|
|
* "actions": "Base64 encoded compute phase actions boc (OutList n)",
|
|
|
|
* "elapsed_time": 0.02
|
|
|
|
* }
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT const char *transaction_emulator_emulate_tick_tock_transaction(void *transaction_emulator, const char *shard_account_boc, bool is_tock);
|
|
|
|
|
2023-02-02 07:03:45 +00:00
|
|
|
/**
|
|
|
|
* @brief Destroy TransactionEmulator object
|
|
|
|
* @param transaction_emulator Pointer to TransactionEmulator object
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT void transaction_emulator_destroy(void *transaction_emulator);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set global verbosity level of the library
|
|
|
|
* @param verbosity_level New verbosity level (0 - never, 1 - error, 2 - warning, 3 - info, 4 - debug)
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool emulator_set_verbosity_level(int verbosity_level);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Create TVM emulator
|
|
|
|
* @param code_boc Base64 encoded BoC serialized smart contract code cell
|
|
|
|
* @param data_boc Base64 encoded BoC serialized smart contract data cell
|
|
|
|
* @param vm_log_verbosity Verbosity level of VM log
|
|
|
|
* @return Pointer to TVM emulator object
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT void *tvm_emulator_create(const char *code_boc, const char *data_boc, int vm_log_verbosity);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set libraries for TVM emulator
|
|
|
|
* @param libs_boc Base64 encoded BoC serialized libraries dictionary (HashmapE 256 ^Cell).
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool tvm_emulator_set_libraries(void *tvm_emulator, const char *libs_boc);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set c7 parameters
|
|
|
|
* @param tvm_emulator Pointer to TVM emulator
|
|
|
|
* @param address Adress of smart contract
|
|
|
|
* @param unixtime Unix timestamp
|
|
|
|
* @param balance Smart contract balance
|
|
|
|
* @param rand_seed_hex Random seed as hex string of length 64
|
2023-05-24 09:40:04 +00:00
|
|
|
* @param config Base64 encoded BoC serialized Config dictionary (Hashmap 32 ^Cell). Optional.
|
2023-02-02 07:03:45 +00:00
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixtime, uint64_t balance, const char *rand_seed_hex, const char *config);
|
|
|
|
|
2024-07-02 09:40:57 +00:00
|
|
|
/**
|
|
|
|
* @brief Set config for TVM emulator
|
|
|
|
* @param tvm_emulator Pointer to TVM emulator
|
|
|
|
* @param config Pointer to Config object
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool tvm_emulator_set_config_object(void* tvm_emulator, void* config);
|
|
|
|
|
2023-05-27 18:22:31 +00:00
|
|
|
/**
|
|
|
|
* @brief Set tuple of previous blocks (13th element of c7)
|
|
|
|
* @param tvm_emulator Pointer to TVM emulator
|
|
|
|
* @param info_boc Base64 encoded BoC serialized TVM tuple (VmStackValue).
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool tvm_emulator_set_prev_blocks_info(void *tvm_emulator, const char* info_boc);
|
|
|
|
|
2023-02-02 07:03:45 +00:00
|
|
|
/**
|
|
|
|
* @brief Set TVM gas limit
|
|
|
|
* @param tvm_emulator Pointer to TVM emulator
|
|
|
|
* @param gas_limit Gas limit
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool tvm_emulator_set_gas_limit(void *tvm_emulator, int64_t gas_limit);
|
|
|
|
|
2023-04-02 14:28:18 +00:00
|
|
|
/**
|
|
|
|
* @brief Enable or disable TVM debug primitives
|
|
|
|
* @param tvm_emulator Pointer to TVM emulator
|
|
|
|
* @param debug_enabled Whether debug primitives should be enabled or not
|
|
|
|
* @return true in case of success, false in case of error
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT bool tvm_emulator_set_debug_enabled(void *tvm_emulator, bool debug_enabled);
|
|
|
|
|
2023-02-02 07:03:45 +00:00
|
|
|
/**
|
|
|
|
* @brief Run get method
|
|
|
|
* @param tvm_emulator Pointer to TVM emulator
|
|
|
|
* @param method_id Integer method id
|
|
|
|
* @param stack_boc Base64 encoded BoC serialized stack (VmStack)
|
|
|
|
* @return Json object with error:
|
|
|
|
* {
|
|
|
|
* "success": false,
|
|
|
|
* "error": "Error description"
|
|
|
|
* }
|
|
|
|
* Or success:
|
|
|
|
* {
|
|
|
|
* "success": true
|
|
|
|
* "vm_log": "...",
|
|
|
|
* "vm_exit_code": 0,
|
|
|
|
* "stack": "Base64 encoded BoC serialized stack (VmStack)",
|
|
|
|
* "missing_library": null,
|
|
|
|
* "gas_used": 1212
|
|
|
|
* }
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT const char *tvm_emulator_run_get_method(void *tvm_emulator, int method_id, const char *stack_boc);
|
|
|
|
|
2024-03-19 12:26:02 +00:00
|
|
|
/**
|
|
|
|
* @brief Optimized version of "run get method" with all passed parameters in a single call
|
|
|
|
* @param len Length of params_boc buffer
|
|
|
|
* @param params_boc BoC serialized parameters, scheme: request$_ code:^Cell data:^Cell stack:^VmStack params:^[c7:^VmStack libs:^Cell] method_id:(## 32)
|
|
|
|
* @param gas_limit Gas limit
|
|
|
|
* @return Char* with first 4 bytes defining length, and the rest BoC serialized result
|
|
|
|
* Scheme: result$_ exit_code:(## 32) gas_used:(## 32) stack:^VmStack
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT const char *tvm_emulator_emulate_run_method(uint32_t len, const char *params_boc, int64_t gas_limit);
|
|
|
|
|
2023-02-02 07:03:45 +00:00
|
|
|
/**
|
|
|
|
* @brief Send external message
|
|
|
|
* @param tvm_emulator Pointer to TVM emulator
|
|
|
|
* @param message_body_boc Base64 encoded BoC serialized message body cell.
|
|
|
|
* @return Json object with error:
|
|
|
|
* {
|
|
|
|
* "success": false,
|
|
|
|
* "error": "Error description"
|
|
|
|
* }
|
|
|
|
* Or success:
|
|
|
|
* {
|
|
|
|
* "success": true,
|
|
|
|
* "new_code": "Base64 boc decoded new code cell",
|
|
|
|
* "new_data": "Base64 boc decoded new data cell",
|
|
|
|
* "accepted": true,
|
|
|
|
* "vm_exit_code": 0,
|
|
|
|
* "vm_log": "...",
|
|
|
|
* "missing_library": null,
|
|
|
|
* "gas_used": 1212,
|
|
|
|
* "actions": "Base64 boc decoded actions cell of type (OutList n)"
|
|
|
|
* }
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT const char *tvm_emulator_send_external_message(void *tvm_emulator, const char *message_body_boc);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Send internal message
|
|
|
|
* @param tvm_emulator Pointer to TVM emulator
|
|
|
|
* @param message_body_boc Base64 encoded BoC serialized message body cell.
|
|
|
|
* @param amount Amount of nanograms attached with internal message.
|
|
|
|
* @return Json object with error:
|
|
|
|
* {
|
|
|
|
* "success": false,
|
|
|
|
* "error": "Error description"
|
|
|
|
* }
|
|
|
|
* Or success:
|
|
|
|
* {
|
|
|
|
* "success": true,
|
|
|
|
* "new_code": "Base64 boc decoded new code cell",
|
|
|
|
* "new_data": "Base64 boc decoded new data cell",
|
|
|
|
* "accepted": true,
|
|
|
|
* "vm_exit_code": 0,
|
|
|
|
* "vm_log": "...",
|
|
|
|
* "missing_library": null,
|
|
|
|
* "gas_used": 1212,
|
|
|
|
* "actions": "Base64 boc decoded actions cell of type (OutList n)"
|
|
|
|
* }
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT const char *tvm_emulator_send_internal_message(void *tvm_emulator, const char *message_body_boc, uint64_t amount);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Destroy TVM emulator object
|
|
|
|
* @param tvm_emulator Pointer to TVM emulator object
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT void tvm_emulator_destroy(void *tvm_emulator);
|
|
|
|
|
2024-07-02 09:40:57 +00:00
|
|
|
/**
|
|
|
|
* @brief Destroy Config object
|
|
|
|
* @param tvm_emulator Pointer to Config object
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT void emulator_config_destroy(void *config);
|
|
|
|
|
2024-07-27 16:27:38 +00:00
|
|
|
/**
|
|
|
|
* @brief Get git commit hash and date of the library
|
|
|
|
*/
|
|
|
|
EMULATOR_EXPORT const char* emulator_version();
|
2024-07-02 09:40:57 +00:00
|
|
|
|
2023-02-02 07:03:45 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
} // extern "C"
|
|
|
|
#endif
|