Skip to main content

목적 및 범위

이 문서는 StableNet의 JSON-RPC API 아키텍처를 설명하며, 사용 가능한 API 네임스페이스, 서비스 구현, API 서비스를 핵심 블록체인 구성 요소에 연결하는 백엔드 추상화 레이어를 포함합니다.
API 시스템은 HTTP, WebSocket, IPC 전송을 통해 노드 기능에 대한 외부 액세스를 제공합니다.
이벤트 필터링 및 구독에 대한 정보는 이벤트 필터링 및 구독을 참조하세요.

API 아키텍처 개요

StableNet RPC API는 API 서비스 구현이 Backend 인터페이스에 의존하는 계층화된 아키텍처를 따르며, Ethereum 백엔드와의 긴밀한 결합 없이 핵심 블록체인 기능에 액세스할 수 있도록 설계되었습니다.

API 네임스페이스 구성

StableNet은 API를 여러 네임스페이스로 구성하며, 각각 명확한 책임과 목적을 가집니다.
네임스페이스는 internal/ethapi.GetAPIs, eth.Ethereum.APIs(), 노드 레벨 apis(), 그리고 합의 엔진(WBFT)의 APIs()를 통해 등록되고 RPC 핸들러를 통해 외부로 노출됩니다.

API 네임스페이스 매핑

eth 네임스페이스

eth 네임스페이스는 핵심 Ethereum 프로토콜 기능을 제공하며 여러 API 서비스 클래스로 구성됩니다.

EthereumAPI 서비스

EthereumAPI는 네트워크 상태 및 수수료 관련 쿼리를 담당합니다. Anzeon이 활성화된 StableNet에서는 MaxPriorityFeePerGas가 가스 가격 오라클을 사용하지 않고 GovValidator 컨트랙트에 의해 강제된 가스 팁 값을 반환합니다.

BlockChainAPI 서비스

BlockChainAPI는 블록체인 상태 및 데이터를 조회하기 위한 인터페이스를 제공합니다.

TransactionAPI 서비스

TransactionAPI는 트랜잭션 생성, 서명, 제출을 담당합니다.

txpool 네임스페이스

TxPoolAPI는 트랜잭션 풀 상태를 읽기 전용으로 제공합니다. 트랜잭션은 다음 두 상태로 구분됩니다.
  • pending: 다음 블록에 포함 가능한 상태
  • queued: nonce 불일치 또는 잔액 부족으로 대기 중

personal 네임스페이스

PersonalAccountAPI는 비밀번호 기반 계정 관리를 제공합니다.
보안상 이유로 일반적으로 외부 RPC에서는 비활성화됩니다.

debug 네임스페이스

DebugAPI는 개발 및 운영 진단을 위한 고급 기능을 제공합니다.

주요 기능 범주

트랜잭션 및 블록 추적
  • TraceTransaction()
  • TraceBlock()
  • TraceBlockByNumber()
  • TraceBlockByHash()
  • TraceCall()
상태 검사
  • DumpBlock()
  • AccountRange()
  • StorageRangeAt()
데이터베이스 관리
  • DbGet()
  • DbAncient()
  • ChaindbProperty()
  • ChaindbCompact()
프로파일링
  • CpuProfile()
  • BlockProfile()
  • MemStats()
  • GcStats()

web3 네임스페이스

web3API는 기본 Web3 유틸리티를 제공합니다.

istanbul 네임스페이스

WBFT 합의 사용 시에만 노출됩니다.

StableNet 수수료 위임 확장

수수료 위임 트랜잭션을 위해 personaleth 네임스페이스에 다음 API를 확장 제공합니다. 반환된 서명 트랜잭션은 eth_sendRawTransaction으로 제출하며, 가스 비용은 수수료 지불자가 부담합니다.

API 테스트 인프라

코드베이스는 다음 테스트 인프라를 포함합니다.
  • Mock Backend 기반 단위 테스트
  • 제네시스 및 키 기반 통합 테스트
  • RPC 직렬화 및 응답 검증 테스트