Architecture

The chain

The chain is a fork of cosmos/evm v0.7.0 rebranded to BabyChain identity. It is a single binary (evmd) that runs the CometBFT consensus engine, the Cosmos SDK base app, and the EVM execution environment side by side.

Why a fork and not a chain plugin? Cosmos EVM ships as a library that can be wired into a fresh app.go. We chose to fork the whole repository so the binary, the precompiles, the AnteHandler, and the chain ID are all under one brand. The precompiles and the EIP-1559 fee market are the parts most likely to diverge from upstream.

At a glance

Upstream cosmos/evm v0.7.0
Binary evmd (rebranded from evmosd)
Consensus CometBFT (PoA, single validator locally)
EVM go-ethereum core, exposed via JSON-RPC
Chain ID (local) babychain_2027-1
Block time ~1.2s target, ~1s finality
Precompiles standard EVM + Cosmos bank/ staking/ gov/ IBC
Token native a2baby (1B hard cap)

What it does

  • Runs the consensus engine and produces blocks.
  • Exposes JSON-RPC, WebSocket, and REST endpoints for wallets, the gateway, and the explorer.
  • Hosts the EVM execution environment so any EVM tool (MetaMask, ethers.js, Foundry) works without changes.
  • Maintains the native token, validator set, IBC channels, and governance.

What it does not do

  • No fee abstraction in dev. The local chain uses the standard EIP-1559 fee market. The team has not yet wired a paymaster or a meta-transaction relayer.
  • No public mempool policy. The default mempool is the CometBFT in-process mempool. There is no private pool, no Flashbots-style bundle relay, and no MEV-aware ordering.
  • No slashing. Single validator, PoA, so there is nothing to slash. The validator set is a config artifact (genesis.json).

Port map

Port Service Use
8545 JSON-RPC EVM calls (eth_*)
8546 WebSocket EVM subscriptions
26657 CometBFT RPC consensus-level queries
1317 REST Cosmos SDK + EVM REST
9090 gRPC (optional) native gRPC for indexers
6065 pprof (dev only) profiling
8545 and 26657 are never exposed to the public internet in this stack. All EVM traffic goes through gateway/ first. See Threat model for why.

Source

  • chain/evmd/ is the binary entry point.
  • chain/app/ is the Cosmos SDK app wiring.
  • chain/precompiles/ are the EVM precompiles (bank, staking, gov, IBC, distribution).
  • chain/babychain_local.sh is the local dev entry point that produces a single-validator genesis and starts the node.
  • chain/RUN_GUIDE.md is the full operational guide.