ProductPromotion
Logo

Rust

made by https://0x3d.site

GitHub - bluealloy/revm: Ethereum Virtual Machine written in rust that is fast and simple to use
Ethereum Virtual Machine written in rust that is fast and simple to use - bluealloy/revm
Visit Site

GitHub - bluealloy/revm: Ethereum Virtual Machine written in rust that is fast and simple to use

GitHub - bluealloy/revm: Ethereum Virtual Machine written in rust that is fast and simple to use

revm

CI License Chat

Rust Ethereum Virtual Machine

Revm is an EVM written in Rust that is focused on speed and simplicity. It has a fast and flexible implementation with a simple interface and embedded Host. It passes all ethereum/tests test suites.

Here is a list of guiding principles that Revm follows.

  • EVM compatibility and stability - this goes without saying but it is nice to put it here. In the blockchain industry, stability is the most desired attribute of any system.
  • Speed - is one of the most important things and most decisions 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 projects.
  • interfacing - [no_std] so that it can be used as wasm lib and integrate with JavaScript and cpp binding if needed.

Project

Structure:

  • crates
    • revm -> main EVM library.
    • revm-primitives -> Primitive data types.
    • revm-interpreter -> Execution loop with instructions
    • revm-precompile -> EVM precompiles
  • bins:
    • revme: cli binary, used for running state test jsons

This project tends to use the newest rust version, so if you're encountering a build error try running rustup update first.

There were some big efforts on optimization of revm:

Building from source

git clone https://github.com/bluealloy/revm.git
cd revm
cargo build --release

Note: clang is required for building revm with c-kzg or secp256k1 feature flags as they depend on C libraries. If you don't have it installed, you can install it with apt install clang.

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/ tests/LegacyTests/Constantinople/GeneralStateTests

GeneralStateTests contains all tests related to EVM.

Running benchmarks

Benches can be found in crates/revm/benches.

Currently, available benches include the following.

  • analysis
  • snailtracer
  • transfer

To run the snailtracer bench, execute the cargo bench subcommand below.

cargo bench --package revm --profile release -- snailtracer

Using flamegraph, you can create a visualization breaking down the runtime of various sections of the bench execution - a flame graph. Executing the cargo flamegraph subcommand requires installing flamegraph by running cargo install flamegraph.

cargo flamegraph --root --freq 4000 --min-width 0.001 --package revm --bench bench -- snailtracer

This command will produce a flamegraph image output to flamegraph.svg. Flamegraph also requires sudo mode to run (hence the --root cli arg) and will prompt you for your password if not in sudo mode already.

Running examples

cargo run -p revm --features ethersdb --example fork_ref_transact

Generate block traces and write them to json files in a new traces/ directory. Each file corresponds to a transaction in the block and is named as such: <tx index>.json.

cargo run -p revm --features std,serde-json,ethersdb --example generate_block_traces

Used by:

  • Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
  • Helios is a fully trustless, efficient, and portable Ethereum light client written in Rust.
  • Reth Modular, contributor-friendly and blazing-fast implementation of the Ethereum protocol
  • Arbiter is a framework for stateful Ethereum smart-contract simulation
  • Zeth is an open-source ZK block prover for Ethereum built on the RISC Zero zkVM.
  • VERBS an open-source Ethereum agent-based modelling and simulation library with a Python API.
  • Hardhat is a development environment to compile, deploy, test, and debug your Ethereum software.
  • Trin is Portal Network client. An execution and consensus layer Ethereum light client written in Rust. Portal Network client's provide complete, provable, and distributed execution archival access.
  • Simular is a Python smart-contract API with a fast, embedded, Ethereum Virtual Machine.
  • rbuilder is a state of the art Ethereum MEV-Boost block builder written in Rust and designed to work with Reth.
  • ...

(If you want to add project to the list, ping me or open the PR)

Documentation

The book can be found at github page here: https://bluealloy.github.io/revm/

The documentation (alas needs some love) can be found here: https://bluealloy.github.io/revm/docs/

To serve the mdbook documentation in a local environment, ensure you have mdbook installed (if not install it with cargo) and then run:

mdbook serve documentation

Contact

There is public telegram group: https://t.me/+Ig4WDWOzikA3MzA0

Or if you want to contact me directly, here is my email: [email protected] and telegram: https://t.me/draganrakita

More Resources
to explore the angular.

mail [email protected] to add your project or resources here 🔥.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory