evm
evm copied to clipboard
Pure Rust implementation of Ethereum Virtual Machine
This is more like a question than an issue. I'm building a compiler from Move to EVM with Yul as the intermediate language. We are using Sputnik (for now) as...
@sorpaas unfortunately #92 wasn't sufficient because we have our own `MemoryStackStateOwned` implementation which owns the backend, so we do need to access the substate's method, instead of via the `MemoryStackState`....
The current Memory implementation has a `effective_len` field (which seems unnecessary #31 ), and it will be updated unexpectedly by `mload`. so `msize` called before/after `mload` may have different value.
Naked-eye based optimization -- it feels suboptimal to allocate a `Vec` to fetch `[0; u32]`. Running a macro-benchmark in aurora shows that this is about a 1% win, so the...
After updating evm-tests to use evm 0.28 (https://github.com/rust-blockchain/evm-tests/pull/4) and ethereum-tests 9.0.2 (https://github.com/rust-blockchain/evm-tests/pull/5), the following failures are observed with state test cases: `GeneralStateTests/stRandom2`: ``` Running randomStatetest649:Istanbul:0 ... thread '' panicked at...
This implements a hooked version of the `StackExecutor`. Alternative to #18. It creates a separated `HookedStackExecutor` struct as a wrapper for `StackExecutor` instead of directly integrating the hooks to `StackExecutor`.
Some of them seems to be unneeded. However, in most cases (when substate exits and `fail` is called before), it should have no effect with or without. But we need...
This adds a derived `Default` implementation to the `pub struct Context`. This is useful for writing unit tests.
This fixes a problem where a precompile that returns gas exceeding the remaining gas is ignored. Instead of getting an OOG error, no gas is recorded -- effectively the precompile...