R55
R55 is an Ethereum Execution Client that seamlessly integrates RISCV smart contracts alongside traditional EVM smart contracts. This dual support operates over the same Ethereum state, and communication happens via ABI-encoded calls.
On the high level, R55 enables the use of pure Rust smart contracts, opening the door for a vast Rust developer community to engage in Ethereum development with minimal barriers to entry.
On the low level, RISCV code allows for optimization opportunities distinct from the EVM, including the use of off-the-shelf ASICs. This potential for performance gains can be particularly advantageous in specialized domains.
Team's submissions
The problem R55 solves
R55 brings innovation to Ethereum by showing how the smart contract developer world can be if we have more VMs in execution clients. More VMs reduce vendor lock-in, potentially bring in different optimizations, increase language & compiler diversity, enable millions of new developers to be easily onboarded into Ethereum, and allow for off-the-shelf robust tooling to be used directly for smart contracts. We shouldn’t fight over one or another smart contract language, we should just use all of them!
Challenges you ran into
This was a crazy technical project to execute in 2 days, and we’re happy with the PoC we achieved. The main challenges were the sheer complexity of every module we had to build:
- Compiler for Rust to RISCV + Ethereum syscalls
- Assembly runtime + ELF linker
- Deployment code
- RISCV64 interpreter with Ethereum syscalls
- Modifying revm which we’ve used but not contributed to before
Technology used
- Rust for the whole project but also for new smart contracts
- C for test smart contracts
- rustc, cargo, LLVM
- RISCV64
- rvemu fork for RISCV64 execution
- revm for everything Ethereum