mirror of
				https://github.com/ton-blockchain/ton
				synced 2025-03-09 15:40:10 +00:00 
			
		
		
		
	
				* getactorstats query for validator-engine-console * celldb in-memory mode (--celldb-in-memory option) * rldp2: bugfix - do not estimate speed while nothing is sent * add simple ed25519 benchmark * fix compilation errors of different platforms and move to c++20 * fix some warnings * turn on TON_USE_ABSEIL for glibc 2.27 nix build --------- Co-authored-by: birydrad <>  | 
			||
|---|---|---|
| .. | ||
| test | ||
| CMakeLists.txt | ||
| emulator-emscripten.cpp | ||
| emulator-extern.cpp | ||
| emulator-extern.h | ||
| emulator_export_list | ||
| README.md | ||
| StringLog.h | ||
| transaction-emulator.cpp | ||
| transaction-emulator.h | ||
| tvm-emulator.hpp | ||
Emulator
Emulator is a shared library containing the following functionality:
- Emulating blockchain transactions
 - Emulating TVM - get methods and sending external and internal messages.
 
Transaction Emulator
To emulate transaction you need the following data:
- Account state of type ShardAccount.
 - Global config of type (Hashmap 32 ^Cell).
 - Inbound message of type MessageAny.
 
Optionally you can set emulation parameters:
- ignore_chksig - whether CHKSIG instructions are set to always succeed. Default: false
 - lt - logical time of emulation. Default: next block's lt after the account's last transaction block.
 - unixtime - unix time of emulation. Default: current system time
 - rand_seed - random seed. Default: generated randomly
 - libs - shared libraries. If your smart contract uses shared libraries (located in masterchain), you should set this parameter.
 
Emulator output contains:
- Transaction object (Transaction)
 - New account state (ShardAccount)
 - Actions cell (OutList n)
 - TVM log
 
TVM Emulator
TVM emulator is intended to run get methods or emulate sending message on TVM level. It is initialized with smart contract code and data cells.
- To run get method you pass initial stack and method id (as integer).
 - To emulate sending message you pass message body and in case of internal message amount in nanograms.