Skip to content

Local dev environment: one-command chain for developers #129

@tac0turtle

Description

@tac0turtle

Summary

Build a local development environment tool that spins up a fully functional ev-reth chain in one command, with funded accounts, working RPC, and pre-deployed contracts. Analogous to Optimism's Supersim or Hardhat's local node, but tailored for Evolve chains.

Motivation

Today there's no fast path for a developer to go from "I want to build on Evolve" to "I have a running local chain I can deploy contracts to." The current setup requires manually configuring chainspec, genesis, and node parameters. This is the single biggest friction point for developer adoption.

OP Stack solved this with Supersim (brew install supersim -> supersim -> done). Hardhat solved it with npx hardhat node. We need the equivalent.

What developers need from a local dev chain

  1. One command startup: ev-dev or cargo run --bin ev-dev -> chain running at http://localhost:8545
  2. Pre-funded accounts: 10+ deterministic accounts with ETH (same as Hardhat/Anvil defaults for familiarity)
  3. Pre-deployed system contracts: Mint precompile, base fee sink, deploy allowlist -- whatever is in the chainspec extras, activated at genesis
  4. Working RPC: Full eth_* namespace, debug_* for tracing, evolve_* for custom endpoints
  5. Fast blocks: Use the 100ms block time by default so developers see transactions confirm instantly
  6. Console output: Log transactions as they land (like Anvil's verbose mode)
  7. Reset/snapshot: Ability to snapshot state and revert (useful for testing)

Nice to haves

  • Fork mode: Fork from a live Evolve chain (like Anvil's --fork-url)
  • Blockscout auto-start: Optionally spin up a local block explorer alongside the chain
  • Docker compose: For CI and teams that prefer containers
  • Kurtosis package: For integration testing with the full ev-node stack (sequencer + DA + ev-reth)

ev-node considerations

The local dev environment can operate in two modes:

  1. Standalone mode (default): ev-reth runs with reth-engine-local (no external consensus). Good for contract development and testing. No ev-node dependency.
  2. Full stack mode: ev-reth + ev-node sequencer + mock DA. Useful for testing the full transaction flow (submit to sequencer -> Engine API -> block). This would likely be a Kurtosis package or docker-compose.

Standalone mode should be the default -- developers building Solidity contracts don't need to know about ev-node.

Implementation options

  • Thin wrapper binary (ev-dev): Preconfigured ev-reth with hardcoded devnet chainspec, reth-engine-local for self-sufficient block production, and ANSI-formatted tx logging.
  • Kurtosis package (ev-reth-package): For full-stack testing. Defines services for ev-reth, ev-node sequencer, mock DA, and optionally Blockscout.

Prior art

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions