op-reth는 Reth를 기반으로 한 OP Stack용 Rust 실행 클라이언트입니다. op-geth와 동일한 Engine API 및 Ethereum JSON-RPC 인터페이스를 구현하므로, OP Stack 체인에서 그대로 교체하여 사용할 수 있는 대안입니다.
이 페이지는 V2 (Jovian) 수수료 모델이 활성화된 상태에서 op-reth v2.2.3(빌드 reth/v2.2.0-88505c7)을 실행하는 OP Stack devnet을 대상으로 테스트한 JSON-RPC 메서드를 설명합니다.
개요
op-reth는 op-geth와 동일한 OP Stack 추가 기능을 포함하여 표준 Ethereum JSON-RPC API를 구현합니다. 익숙한 Ethereum 도구(cast, web3.js, ethers, viem 등)를 수정 없이 사용할 수 있습니다.
실행 엔진의 RPC 인터페이스는 업스트림 Reth RPC 인터페이스와 기능적으로 동일합니다. OP 전용 동작은
op-geth와 일치합니다. 트랜잭션 영수증에는 추가적인 L1 데이터 가용성(data availability) 수수료 필드가 포함되며, 입금(디파짓) 트랜잭션(type 0x7e)에는 OP 전용 필드가 포함됩니다.Ethereum과의 주요 차이점
op-reth는 Ethereum의 JSON-RPC API와 호환성을 유지하지만, OP Stack 전반에 공통적으로 적용되는 중요한 차이점이 있습니다.
트랜잭션 영수증
사용자 트랜잭션 영수증에는 추가적인 L1 데이터 수수료 정보가 포함됩니다. V2 (Jovian) 수수료 모델에서의 필드는 다음과 같습니다.l1GasUsed— L1 데이터 가용성에 귀속되는 L1 gas 양입니다.l1GasPrice— 실행 시점의 L1 base fee입니다.l1Fee— 부과된 총 L1 데이터 수수료(wei 단위)입니다.l1BaseFeeScalar— L1 base fee 구성 요소에 적용되는 scalar입니다.l1BlobBaseFee— 실행 시점의 L1 blob base fee입니다.l1BlobBaseFeeScalar— L1 blob base fee 구성 요소에 적용되는 scalar입니다.daFootprintGasScalar— 데이터 가용성 footprint에 적용되는 scalar입니다.
입금(디파짓) 트랜잭션
OP Stack 입금 트랜잭션(type: 0x7e)은 트랜잭션 응답과 영수증 응답 모두에 추가 필드를 포함합니다.
- 트랜잭션:
sourceHash,mint,depositReceiptVersion. - 영수증:
depositNonce,depositReceiptVersion.
Gas 가격 계산
L2 gas 가격에는 표준eth_gasPrice 메서드를 사용하십시오.
L1 gas 가격과 전체(end-to-end) 수수료 추정에는 GasPriceOracle predeploy 또는 Optimism SDK를 사용하십시오.
표준 JSON-RPC 메서드
아래의 모든 예시는op-reth v2.2.3을 대상으로 실제 검증되었습니다.
eth_blockNumber
가장 최근 블록의 번호를 반환합니다.- curl
- cast
eth_chainId
현재 구성된 chain ID를 반환합니다. 이 값은 replay 보호 트랜잭션 서명에 사용됩니다.eth_syncing
동기화 상태를 반환합니다.op-geth와 달리 op-reth는 node가 완전히 동기화된 경우에도 각 pipeline 단계(Headers, Bodies, Execution, MerkleExecute 등)와 단계별 진행 상황을 나열하는 구조화된 객체를 항상 반환합니다. false가 아닌 응답을 “아직 동기화 중”으로 처리하는 클라이언트는 대신 currentBlock과 highestBlock을 비교해야 합니다.eth_getBalance
지정한 주소에 있는 계정의 잔액을 반환합니다.eth_getTransactionByHash
트랜잭션 해시로 트랜잭션 정보를 반환합니다. 입금 트랜잭션에는sourceHash, mint, depositReceiptVersion이 포함됩니다.
eth_getTransactionReceipt
해시로 트랜잭션 영수증을 반환합니다. OP Stack 전용 L1 수수료 필드가 포함됩니다. 아래 예시는 입금 트랜잭션 영수증입니다(depositNonce / depositReceiptVersion 필드와 l1Fee = 0에 주목하십시오). 일반 사용자 트랜잭션 영수증에는 V2 scalar로 계산된 0이 아닌 l1Fee가 포함됩니다.
영수증 끝부분의 OP 전용 필드에 주목하십시오:
l1GasUsed, l1GasPrice, l1Fee, 그리고 V2 scalar인 l1BaseFeeScalar, l1BlobBaseFee, l1BlobBaseFeeScalar, daFootprintGasScalar입니다. Bedrock 시기의 l1FeeScalar 필드는 V2 체인에 존재하지 않습니다.eth_call
블록체인에 트랜잭션을 생성하지 않고 새 메시지 호출을 즉시 실행합니다. 예시는GasPriceOracle.l1BaseFee()를 호출합니다.
eth_estimateGas
트랜잭션을 완료하는 데 필요한 gas 추정치를 생성하여 반환합니다.eth_sendRawTransaction
서명된 트랜잭션을 네트워크에 제출합니다. 예시 페이로드는 오류 형태를 보여 주기 위해 의도적으로 유효하지 않게 작성되었습니다.result로 트랜잭션 해시를 반환합니다.
eth_getBlockByNumber
블록 번호로 블록 정보를 반환합니다. Op-reth는 Ecotone/Cancun 이후의 표준 필드인withdrawalsRoot, blobGasUsed, excessBlobGas, parentBeaconBlockRoot, requestsHash를 채웁니다.
eth_getLogs
지정한 필터 객체와 일치하는 모든 로그의 배열을 반환합니다.Gas 가격 메서드
eth_gasPrice
L2 실행에 대한 현재 gas 가격을 wei 단위로 반환합니다.이 메서드는 L2 gas 가격만 반환합니다. L1 데이터 수수료를 포함한 종합적인 트랜잭션 비용 추정에는
GasPriceOracle predeploy 컨트랙트 또는 Optimism SDK를 사용하십시오.eth_maxPriorityFeePerGas
현재 gas당 최대 priority fee(EIP-1559)를 반환합니다.eth_feeHistory
수수료 추정을 위해 과거 base fee, gas 사용 비율, blob base fee, priority fee 백분위 데이터를 반환합니다.계정 및 상태 메서드
eth_getCode
지정한 주소의 코드를 반환합니다.eth_getStorageAt
지정한 주소의 스토리지 위치에 있는 값을 반환합니다.eth_getTransactionCount
주소에서 전송된 트랜잭션 수(nonce)를 반환합니다.Txpool 메서드
txpool 네임스페이스가 활성화되면(--http.api eth,net,web3,debug,txpool) op-reth는 표준 txpool 검사 메서드를 노출합니다.
txpool_status
Debug 메서드
op-reth는 트랜잭션 검사를 위한 debug_* 네임스페이스를 지원합니다. --http.api …,debug로 활성화하십시오.
debug_traceTransaction
트랜잭션의 trace를 반환하여 모든 내부 호출과 상태 변경을 보여 줍니다. 대부분의 사용 사례에는callTracer를 권장합니다.
debug_traceCall
온체인에서 실행하지 않고 호출을 trace합니다.GasPriceOracle.l1BaseFee() 호출):
WebSocket 지원
op-reth는 eth_subscribe 메서드를 사용한 실시간 이벤트 구독을 위해 WebSocket 연결을 지원합니다. 기본 포트는 8546입니다.
eth_subscribe
특정 이벤트에 대한 구독을 생성합니다. 검증된 구독 토픽에는newHeads, logs, newPendingTransactions, syncing이 있습니다.
eth_unsubscribe
활성 구독을 취소합니다.op-geth와 다르게 동작하는 메서드
클라이언트 기능을 자동으로 감지하는 도구에서는 다음 호출에 주의해야 합니다.추가 자료
지원되는 모든 JSON-RPC 메서드의 전체 목록은 다음을 참고하십시오.RPC 접근이 가능한 node 실행하기
전체 RPC 접근이 가능한 자체op-reth node를 실행하려면 다음을 사용하십시오.
테스트 환경
위 예시는u19-beta-v223 devnet(chain ID 0x190a85e3 / 420120035)의 op-reth v2.2.3(reth/v2.2.0-88505c7) node(HTTP 포트 8555, WS 포트 8556)를 대상으로 각 curl/websocat 명령을 실행하여 생성되었습니다. 나열된 모든 메서드는 성공(또는 예상된 오류) 응답을 반환했습니다.