메인 콘텐츠로 건너뛰기
op-revm은 revm의 Optimism 변형입니다. 업스트림 revm 프레임워크 위에 구축된 맞춤 EVM으로 패키징된, Ethereum Virtual Machine에 대한 OP Stack의 수정 사항입니다.

기능

op-revm은 기본 Ethereum 실행 위에 OP Stack이 필요로 하는 모든 것을 revm에 추가합니다.
  • 입금(디파짓) 트랜잭션 — L1에서 L2로의 입금 트랜잭션 타입과 그 실행 의미론.
  • L1 비용 계산 — L1BlockInfo 및 트랜잭션별 L1 수수료 / blob 수수료 계산.
  • Operator 수수료 — Isthmus에서 도입되고 Jovian에서 개선된 operator 수수료 처리.
  • OP 전용 precompile — 가속화된 BN254 페어링 포함.
  • OP halt 사유 및 트랜잭션 오류 — OP Stack 전용 실행 실패 모드.
  • 하드포크 인식 spec 선택 — OpSpecId가 각 OP Stack 하드포크(Bedrock, Regolith, Canyon, Ecotone, Fjord, Granite, Holocene, Isthmus, Jovian, …)에 맞는 올바른 동작을 선택합니다.

출처

op-revm은 업스트림 bluealloy/revm의 crates/op-revm에서 vendoring되어 monorepo로 가져온 것으로, 나머지 OP Stack Rust 코드와 보조를 맞춰 발전할 수 있습니다. 업스트림 릴리스 기록은 revm releases에서 확인할 수 있습니다.

Crate feature

이 crate는 일반적인 revm feature 옵션을 제공하며, 이는 하위 revm crate로 전달됩니다.
  • default = ["std", "c-kzg", "secp256k1", "portable", "blst"]
  • std — revm, alloy-primitives, serde_json 등에서 std에 의존하는 코드 경로를 활성화합니다.
  • serde — serde impl을 derive하고 revm/serde 및 alloy-primitives/serde로 전달합니다.
  • portable, c-kzg, secp256k1, blst, bn — 암호화 백엔드를 위한 pass-through feature gate입니다.
  • dev, memory_limit, optional_balance_check, optional_block_gas_limit, optional_eip3541, optional_eip3607, optional_no_base_fee, optional_fee_charge — revm으로 전달되는 디버깅 및 테스트 옵션입니다.
op-revm은 no_std 빌드를 지원합니다. 기본 feature를 비활성화하면(또는 --no-default-features로 빌드하면) riscv32imac-unknown-none-elf와 같은 결함 증명(fault proof) 및 zkVM 타깃에 적합한 crate가 생성됩니다.

빌드 및 테스트

rust/ workspace 루트에서 실행합니다.
no_std 빌드는 just check-no-std로도 검증되며, rust/**를 변경하는 모든 PR에 대해 CI에서 실행됩니다.

op-revm 사용하기

op-revm은 op-reth가 OP Stack 블록 실행에 사용하는 EVM이며, Kona가 결함 증명 프로그램과 rollup node 내부에서 사용하는 EVM이기도 합니다. 대부분의 사용자는 직접 의존하기보다는 이러한 컴포넌트 중 하나를 통해 간접적으로 사용하게 됩니다. 맞춤 OP Stack 실행 환경(예: 대체 클라이언트 또는 zkVM 증명 백엔드)을 구축하는 경우에만 op-revm에 직접 의존하십시오.

라이선스

op-revm은 MIT License로 제공됩니다. rust/op-revm/LICENSE를 참조하십시오.