Commit Graph
3 Commits
Author SHA1 Message Date
zeekay 4454a63bf6 fix: cevm is fastest interpreter, revm for parallel Block-STM 2026-04-07 00:43:15 -07:00
zeekay c50b2dbf64 feat: modular EVM backend switching — gevm, revm, cevm
Three swappable EVM backends via build tags:
  gevm (default) — Go EVM from luxfi/geth (always available)
  revm (-tags revm) — Rust EVM via FFI (2x faster, native Block-STM)
  cevm (-tags cevm) — C++ EVM via CGo (3x faster, GPU kernels)

Architecture:
  parallel.TransactionExecutor interface — per-tx backend dispatch
  parallel.EVMBackend enum — gevm | revm | cevm | auto
  parallel.RegisterTransactionExecutor() — init()-time registration
  parallel.SetBackend(AutoEVM) — runtime selection (cevm > revm > gevm)
  parallel.AvailableBackends() — query what's linked

Block-level: parallel.BlockExecutor (unchanged, already wired)
GPU: parallel.GPUAccelerator (unchanged, Metal ecrecover working)

Backend stubs in backend_revm.go and backend_cevm.go — build-tagged,
register on init(). FFI/CGo bridges TBD in luxfi/revm and luxfi/cevm.

StateDB is the bridge — all backends read/write through the same Go
StateDB interface, ensuring consensus compatibility regardless of
which interpreter runs the bytecode.
2026-04-07 00:19:15 -07:00
zeekay 888735aa32 feat: parallel execution plugin interface (build-tag based) 2026-04-05 15:00:29 -07:00