Web3 RPC Guide for Beginners: Learn JSON-RPC & Web3.py

웹3에서 RPC를 처음 배우는 사람을 위한 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

블록체인, 웹 개발

대상자

블록체인 개발자 및 Web3 기술을 처음 접하는 백엔드 개발자

난이도: 중급(기본적인 백엔드 지식이 전제)

핵심 요약

  • RPC(Remote Procedure Call)는 원격 서버의 함수를 로컬처럼 호출할 수 있도록 하는 기술로, Web3에서 핵심 역할
  • JSON-RPC는 블록체인 네트워크에서 주요 명령을 실행하기 위한 표준 프로토콜로, version, method, params, id 4가지 구성 요소로 구성
  • web3.py와 같은 라이브러리를 사용해 수동 구현 대신 RPC 복잡성을 자동화 가능
  • RPC 제공자(Infura, Alchemy 등)는 편의성 제공, 자체 노드 호스팅은 제어권 확보 가능

섹션별 세부 요약

1. RPC란 무엇인가?

  • RPC는 분산 시스템에서 오랜 기간 사용된 개념으로, 원격 서버의 함수를 로컬처럼 호출 가능
  • 예시: MyPage("my", 1) 호출 시, 서버에서 실행 후 결과를 로컬로 반환
  • RPC 작동 원리: 클라이언트 스텁 → 파라미터 마샬링 → 서버에서 실행 → 결과 마샬링 → 클라이언트로 전달

2. 블록체인에서의 JSON-RPC

  • JSON-RPC는 블록체인 노드와 상호작용하는 표준 프로토콜
  • 요청 구성 요소:
  • version: "jsonrpc" (보통 "2.0")
  • method: 호출할 함수명 (예: eth_blockNumber)
  • params: 함수 인자 (빈 배열도 가능)
  • id: 요청/응답 트래킹을 위한 고유 식별자

3. 실제 예시 및 구현 방법

  • 블록 수 확인 예시:

```json

{

"jsonrpc": "2.0",

"method": "eth_blockNumber",

"params": [],

"id": 1

}

```

  • 응답: "result": "0x1312d00" (20,000,000의 16진수)
  • 이더 전송 예시:
  • 클라이언트 측: 트랜잭션 생성 → 개인 키로 서명
  • 노드 측: eth_sendRawTransaction을 통해 전송
  • 응답: 트랜잭션 해시 반환 (예: "result": "0x53b496732f...")

4. RPC 구현 옵션

  • RPC 제공자(Infura, Alchemy 등):
  • 장점: 편의성, 확장성, 높은 가용성
  • 단점: 구독 요금, 요청 제한, 제어권 부족
  • 자체 노드 호스팅(Hyperledger Besu 등):
  • 장점: 제어권, 제한 없음, 비용 절감
  • 단점: 유지보수, 저장소, 대역폭 요구

5. 개발자 경험 공유

  • 초기 수동 구현 시: JSON-RPC 페이로드 수작업, 오류 처리 복잡
  • web3.py 라이브러리 사용 시:

```python

from web3 import Web3

w3 = Web3(Web3.HTTPProvider(''))

block_number = w3.eth.block_number

```

  • 라이브러리 장점: 오류 처리, 인코딩/디코딩, 연결 관리 자동화

결론

  • web3.py와 같은 라이브러리를 사용해 RPC 복잡성을 자동화하고, RPC 제공자를 통해 편의성 확보 또는 자체 노드 호스팅으로 제어권 확보하는 것이 실무적 권장사항
  • JSON-RPC 요청/응답 구조를 이해하고, eth_blockNumber, eth_sendRawTransaction 같은 핵심 메서드를 활용할 것