r55-eth

r55: Run Rust Smart Contracts in an Ethereum Execution Environment

R55 is an experimental Ethereum execution environment that runs RISC-V smart contracts alongside EVM contracts on the same state. It targets Rust developers and teams exploring alternate execution paths for Ethereum contracts.

Stars
350
Forks
36
Stars, last 8 days
+0

Our take

Health score

29/100

How it is scored
Activity
20
Community
52
Issues
21
Pull requests
21

+0 stars in the last 8 days

Overview

R55 extends Ethereum execution with support for RISC-V smart contracts alongside traditional EVM contracts. Both run over the same Ethereum state and can communicate through ABI-encoded calls, giving developers a way to write contracts in Rust while retaining an Ethereum-style transaction flow.

The project combines a Rust contract compiler and runtime with a RISC-V interpreter integrated into a fork of revm. It is aimed at developers investigating language and compiler diversity or specialized RISC-V execution, rather than users seeking a mature, general-purpose deployment platform.

Key Features

  • Supports RISC-V smart contracts alongside EVM contracts over shared Ethereum state.
  • Enables contracts written in no_std Rust, with a #[contract] macro generating deployment code and method dispatch.
  • Uses ABI-encoded calls for communication between execution environments.
  • Builds on Rust, Cargo, LLVM, and existing Rust development tools such as testing and static analysis tools.
  • Integrates with a revm fork that the README describes as having no API changes.
  • Includes an end-to-end test that compiles, deploys, and calls an example ERC20 contract.

Use Cases

  • Rust developers can prototype Ethereum contracts using familiar Rust code and tooling.
  • Ethereum execution researchers can explore running RISC-V contracts alongside EVM contracts.
  • Teams investigating specialized execution may evaluate RISC-V code for optimization opportunities, including potential use of off-the-shelf ASICs.
  • Developers working on Ethereum clients can test a RISC-V-enabled execution environment through the revm-based integration.

Getting Started

The README describes an end-to-end ERC20 test. It requires a Rust RISC-V toolchain, plus the RISC-V GNU toolchain and gettext on macOS. For the full setup and platform-specific prerequisites, see the README.

rustup install nightly-2024-02-01-x86_64-unknown-linux-gnu
cargo test --package r55 --test e2e -- erc20 --exact --show-output

Considerations

  • R55 describes itself as experimental, and its README presents the ERC20 flow as an end-to-end proof of concept. Assess its maturity and suitability before relying on it for production contracts.
  • Building and testing require a RISC-V toolchain; the documented Rust toolchain is a specific nightly release.
  • The execution environment depends on a custom revm fork, the rvemu-r55 interpreter, and the R55 runtime. These components are linked from the repository README.
  • The README identifies possible RISC-V optimization opportunities but does not provide performance benchmarks or demonstrate production deployment.

Found this useful?

Share it with someone who would like r55.

Comparisons