-
Notifications
You must be signed in to change notification settings - Fork 644
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Introduce ByteCode format, Update Readme (#156)
* Bytecode wip * bytecode wip2 * Bytecode analysis cleanup * Optimizations * cleanup * fmt, clippy * comments * serde * tests * Added MergeSpec and merge eth/tests * fmt * README updated. bytecode review requests
- Loading branch information
Showing
28 changed files
with
660 additions
and
423 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,43 @@ | ||
# revm - Revolutionary Machine | ||
# revm - Rust Ethereum Virtual Machine | ||
|
||
Is **Rust Ethereum Virtual Machine** with great name that is focused on **speed** and **simplicity**. It gets ispiration from `SputnikVM` (got opcodes/interp from here), `OpenEthereum` and `Geth` with a help from [wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes). | ||
|
||
It is fast and flexible implementation of EVM with simple interface and embedded Host, there are multiple things done on Host part from const EVM Spec to optimistic changelogs for subroutines to merging `eip2929` in EVM state so that it can be accesses only once that are improving the speed of execution. There are still some improvements on Interpreter part that needs to be done so that we can be comparable with evmone, for more info track [this issue](https://github.com/bluealloy/revm/issues/7). | ||
Is EVM written in rust that is focused on **speed** and **simplicity**. It has fast and flexible implementation with simple interface and embedded Host. It is passing all `ethereum/tests` test suits | ||
|
||
Here is list of things that i would like to use as guide in this project: | ||
- **EVM compatibility and stability** - this goes without saying but it is nice to put it here. In blockchain industry, stability is most desired attribute of any system. | ||
- **Speed** - is one of the most important things and most decision are made to complement this. | ||
- **Simplicity** - simplification of internals so that it can be easily understood and extended, and interface that can be easily used or integrated into other project. | ||
- **interfacing** - `[no_std]` so that it can be used as wasm lib and integrate with JavaScript and cpp binding if needed. | ||
|
||
Read more on REVM here [crates/revm/README.md](crates/revm/README.md) | ||
# Project structure | ||
|
||
* crates | ||
* revm -> main EVM library | ||
* revm_precompiles -> EVM precompiles are standalone | ||
* revmjs -> Binding for js. (in not finished state) | ||
* bins: | ||
* revme: cli binary, used for running state test json | ||
* revm-test: test binaries with contracts, used mostly to checke performance (will proably merge it inside revme). | ||
# Running eth tests | ||
|
||
go to `cd bins/revme/` | ||
|
||
Download eth tests from (this will take some time): `git clone https://github.com/ethereum/tests` | ||
|
||
run tests with command: `cargo run --release -- statetest tests/GeneralStateTests/` | ||
|
||
`GeneralStateTests` contains all tests related to EVM. | ||
|
||
# Used by | ||
|
||
* Foundry: https://github.com/foundry-rs/foundry | ||
|
||
(If you want to add your project to the list, ping me or open the PR) | ||
|
||
|
||
# Contact | ||
|
||
There is public telegram group: https://t.me/+Ig4WDWOzikA3MzA0 | ||
|
||
Or you can contact me directly on email: dragan0rakita@gmail.com | ||
|
||
|
||
For executable binary that contains `debuger`, `statetest` for running eth/tests, and `runner` check REVME at [bin/revme/README.md](bins/revme/README.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.