mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-10 04:15:54 +00:00
e60ad129a2
`TransactionHost` represents the interface to the EVM from the application once we've fully transitioned to EVMC. It represents a managed EVM call, and the "EVMC host" side of the host<->EVM boundary. This holds transaction state which sits outside the EVM, but a pointer to this is passed around by the EVM as _opaque_ type `evmc_host_context`. To the EVM, this offers "host services", which manage account state that the EVM cannot do, such as balance transfers, call costs, storage, logs, gas refunds, nested calls and new contract addresses. The EVM has no direct access to the account state database or network; it's all via "host services". To the application (host side), this object represents a managed EVM call, with inputs, a method to run, outputs, hidden transaction state, and later async scheduling. It is to replace `Computation` on the application side, while `Computation` will remain but just be for the EVM side. Signed-off-by: Jamie Lokier <jamie@shareable.org>