메인 콘텐츠로 건너뛰기

목적 및 범위

이 문서는 go-stablenet의 RPC(Remote Procedure Call) 서버 아키텍처 및 API 레이어를 설명합니다. RPC 엔드포인트 구성, 사용 가능한 API 네임스페이스, 백엔드 추상화 레이어, 이벤트 필터링 및 구독, 트랜잭션 제출 메커니즘을 다룹니다. RPC 레이어는 HTTP, WebSocket 또는 IPC 전송을 통해 JSON-RPC로 블록체인 노드와 상호 작용하기 위한 외부 인터페이스를 제공합니다. P2P 네트워킹 및 프로토콜 핸들러에 대한 정보는 Networking을 참조하세요. 노드 초기화 및 라이프사이클 관리에 대한 자세한 내용은 Node Initialization and Lifecycle을 참조하세요.

RPC 서버 구성

노드는 세 가지 RPC 전송 메커니즘을 지원합니다: HTTP, WebSocket(WS), 프로세스 간 통신(IPC). 각 전송은 명령줄 플래그 또는 구성 파일을 통해 독립적으로 활성화되고 구성될 수 있습니다.

전송 구성

TransportEnable FlagAddress FlagPort FlagDefault Port
HTTP--http--http.addr--http.port8545
WebSocket--ws--ws.addr--ws.port8546
IPC(enabled by default)--ipcpathN/Agstable.ipc
주요 구성 플래그:
  • --http.api: HTTP를 통해 노출할 API 네임스페이스의 쉼표로 구분된 목록(예: “eth,net,web3”)
  • --ws.api: WebSocket 인터페이스용 API 네임스페이스
  • --http.corsdomain: HTTP 요청용 CORS 도메인
  • --ws.origins: WebSocket 연결용 Origins
  • --http.vhosts: HTTP 서버가 허용하는 가상 호스트명
  • --ipcdisable: IPC-RPC 서버 비활성화
보안 및 제한:
  • --rpc.gascap: eth_calleth_estimateGas용 가스 캡(기본값: 50,000,000)
  • --rpc.evmtimeout: eth_call 실행 타임아웃(기본값: 5초)
  • --rpc.txfeecap: 이더 단위의 트랜잭션 수수료 캡(기본값: 0, 캡 없음)
  • --rpc.batch-request-limit: 배치의 최대 요청 수
  • --rpc.batch-response-max-size: 배치 응답의 최대 바이트 수
  • --allow-insecure-unlock: HTTP를 통한 계정 잠금 해제 허용(보안상 기본적으로 비활성화됨)

RPC 서버 초기화 흐름

RPC 서버는 노드 초기화 과정에서 전송 설정 파싱, API 네임스페이스 결정, Backend 인스턴스 생성, RPC 서버 초기화, 전송별 리스너 바인딩, API 등록 순서로 구성됩니다.

핵심 API 네임스페이스

eth 네임스페이스

eth 네임스페이스는 블록체인 상태 조회, 트랜잭션 제출, 가스 추정을 위한 기본 인터페이스를 제공합니다.
MethodDescription
eth_chainId체인 ID 반환
eth_blockNumber현재 블록 번호
eth_getBalance계정 잔액 조회
eth_getStorageAt저장소 슬롯 값 조회
eth_getCode컨트랙트 코드 조회
eth_getTransactionCount계정 nonce 조회
eth_call상태 변경 없는 EVM 실행
eth_estimateGas트랜잭션 가스 추정
eth_sendRawTransaction서명된 트랜잭션 제출
eth_gasPrice레거시 가스 가격 제안
eth_maxPriorityFeePerGasEIP-1559 우선순위 수수료
eth_feeHistory수수료 히스토리

txpool 네임스페이스

txpool 네임스페이스는 트랜잭션 풀 내부 상태를 조회하기 위한 진단 API를 제공합니다.

admin 네임스페이스

admin 네임스페이스는 피어 관리 및 RPC 서버 제어를 포함한 노드 관리 기능을 제공합니다. 이 네임스페이스는 공용 RPC 엔드포인트에 노출해서는 안 됩니다.

debug 네임스페이스

debug 네임스페이스는 트랜잭션 추적, 상태 덤프, 체인 되감기, 데이터베이스 진단 등 고급 디버깅 기능을 제공합니다.

personal 네임스페이스

personal 네임스페이스는 로컬 계정 기반 서명 기능을 제공하며 보안상의 이유로 기본적으로 비활성화되어 있습니다.

miner 네임스페이스

miner 네임스페이스는 블록 생성, 봉인 제어, 가스 정책 설정 기능을 제공합니다.

net 네임스페이스

net 네임스페이스는 네트워크 ID, 피어 연결 상태 등 기본적인 네트워크 정보를 제공합니다.

web3 네임스페이스

web3 네임스페이스는 클라이언트 버전(web3_clientVersion), SHA3 해시(web3_sha3) 등 보조 유틸리티 API를 제공합니다.

istanbul 네임스페이스

istanbul 네임스페이스는 Anzeon/WBFT 합의 엔진이 노출하는 RPC로, 검증자·블록 서명자·라운드 통계 등 합의 관련 조회를 제공합니다.

이벤트 시스템 및 필터링

RPC 필터 시스템은 새 블록, 로그, 대기 중인 트랜잭션 이벤트를 폴링 기반 필터 또는 WebSocket 구독 방식으로 제공합니다.

로그 필터 기준 구조

type FilterCriteria struct {
    BlockHash *common.Hash
    FromBlock *big.Int
    ToBlock   *big.Int
    Addresses []common.Address
    Topics    [][]common.Hash
}

요약

go-stablenet의 RPC 및 API 레이어는 다중 전송 방식, 포괄적인 네임스페이스 구성, 효율적인 이벤트 시스템, 유연한 트랜잭션 제출 메커니즘, 강력한 보안 제어를 제공하며 표준 Ethereum JSON-RPC와의 호환성을 유지하면서 StableNet 고유의 기능을 통합합니다.