23 #include <json/json.h> 72 (*this)(_steps, _PC, _inst, _newMemSize, _gasCost, _gas, _vm, _extVM);
77 bool m_showMnemonics =
false;
78 std::vector<Instruction> m_lastInst;
80 DebugOptions m_options;
196 std::shared_ptr<ExtVM> m_ext;
200 unsigned m_depth = 0;
202 int64_t m_baseGasRequired;
211 bool m_isCreation =
false;
213 size_t m_savepoint = 0;
std::function< void(uint64_t, uint64_t, Instruction, bigint, bigint, bigint, VMFace const *, ExtVMFace const *)> OnOpFunc
Implements the blockchain database. All data this gives is disk-backed. .
Transaction const & t() const
Interface for getting a list of recent block hashes .
Description of the result of executing a transaction.
void accrueSubState(SubState &_parentContext)
Finalise an operation through accruing the substate into the parent context.
bool go(OnOpFunc const &_onOp=OnOpFunc())
void revert()
Revert all changes made to the state by this execution.
Executive(State &_s, EnvInfo const &_envInfo, SealEngineFace const &_sealEngine, unsigned _level=0)
Simple constructor; executive will operate on given state, with the given environment info...
Json::Value jsonValue() const
std::string multilineTrace() const
bool createOpcode(Address const &_sender, u256 const &_endowment, u256 const &_gasPrice, u256 const &_gas, bytesConstRef _code, Address const &_originAddress)
Active model of a block within the block chain. Keeps track of all transactions, receipts and state f...
boost::multiprecision::number< boost::multiprecision::cpp_int_backend<> > bigint
Logger createLogger(int _severity, std::string const &_channel)
Message-call/contract-creation executor; useful for executing transactions.
Encodes a transaction, ready to be exported to or freshly imported from RLP.
EVM Virtual Machine interface.
Instruction
Virtual machine bytecode instruction.
std::string styledJson() const
void initialize(bytesConstRef _transaction)
Initializes the executive for evaluating a transaction. You must call finalize() at some point follow...
Interface and null implementation of the class for specifying VM externalities.
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u256
void operator=(Executive)=delete
owning_bytes_ref takeOutput()
bool call(Address const &_receiveAddress, Address const &_txSender, u256 const &_txValue, u256 const &_gasPrice, bytesConstRef _txData, u256 const &_gas)
bool create2Opcode(Address const &_sender, u256 const &_endowment, u256 const &_gasPrice, u256 const &_gas, bytesConstRef _code, Address const &_originAddress, u256 const &_salt)
void operator()(uint64_t _steps, uint64_t _PC, Instruction _inst, bigint _newMemSize, bigint _gasCost, bigint _gas, VMFace const *_vm, ExtVMFace const *_extVM)
OnOpFunc simpleTrace()
Operation function for providing a simple trace of the VM execution.
Address newAddress() const
bool create(Address const &_txSender, u256 const &_endowment, u256 const &_gasPrice, u256 const &_gas, bytesConstRef _code, Address const &_originAddress)
TransactionException getException() const noexcept
std::vector< LogEntry > LogEntries
boost::log::sources::severity_channel_logger<> Logger
void setOptions(DebugOptions _options)
LogEntries const & logs() const
void setResultRecipient(ExecutionResult &_res)
Collect execution results in the result storage provided.