Architecture
System Overview
┌─────────────────────────────────────────────────────────────────┐
│ User Layer │
│ MetaMask / ethers.js / Hardhat / Foundry │
│ (Standard Ethereum JSON-RPC) │
└──────────────────────┬──────────────────────────────────────────┘
│
┌──────────┴──────────┐
▼ ▼
┌────────────────┐ ┌────────────────┐
│ Rome Proxy │ │ OP-Geth │
│ (:9090) │ │ (:8545) │
│ JSON-RPC │ │ EVM RPC │
└───────┬────────┘ └───────┬────────┘
│ │
│ ┌──────┴──────┐
│ │ Rhea │ (relays geth txs to Solana)
│ └──────┬──────┘
│ │
└──────────┬──────────┘
▼
┌──────────────────────────────────────────────────────────────┐
│ Solana Runtime │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Rome EVM Program │ │
│ │ │ │
│ │ EVM Bytecode Interpreter (SputnikVM fork) │ │
│ │ Account Mapping: H160 → Solana PDA │ │
│ │ Precompiles: ecrecover, BN254, SPL, CPI, etc. │ │
│ └───────────────────────┬───────────────────────────┘ │
│ │ CPI │
│ ┌───────────┬───────────┼───────────┬───────────┐ │
│ │SPL Token │ Jupiter │ Kamino │ Meteora │ ... │
│ └───────────┴───────────┴───────────┴───────────┘ │
└──────────────────────────────────────────────────────────────┘
▲
│ Indexes events
┌──────┴──────┐
│ Hercules │ (block indexer → Engine API → OP-Geth)
└─────────────┘Components
Rome EVM Program (On-Chain)
Rome Proxy (JSON-RPC Server)
OP-Geth (Optional EVM RPC Layer)
Hercules (Indexer)
Rhea (Mempool Bridge)
Execution Modes
Atomic Execution (VmAt)
Iterative Execution (VmIt)
Account Mapping
Holder Accounts
Gas and Pricing
Deployment Modes
Mode
Data Flow
Use Case
What's Next
Last updated
Was this helpful?