Skip to main content

Documentation Index

Fetch the complete documentation index at: https://daehan-base.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

이 튜토리얼은 자체 Base 노드를 설정하는 방법을 안내합니다.

목표

이 튜토리얼을 마치면 다음을 할 수 있습니다:
  • Base 노드 배포 및 동기화
  • 200ms 사전 확인을 위한 플래시블록 활성화

사전 요구 사항

노드 실행은 시간이 많이 걸리고, 리소스가 많이 필요하며, 비용이 발생할 수 있습니다. 자체 노드를 실행하려는 이유를 아직 모르신다면 아마 필요하지 않을 것입니다.막 시작하는 중이고 RPC URL이 필요하다면 무료 엔드포인트를 사용할 수 있습니다:
  • 메인넷: https://mainnet.base.org
  • 테스트넷 (Sepolia): https://sepolia.base.org
참고: 우리의 RPC는 속도가 제한되어 있으며 프로덕션 앱에는 적합하지 않습니다.앱을 강화하고 사용자의 속도 제한을 피하고 싶다면 파트너 중 하나의 엔드포인트를 고려해 보세요.

하드웨어 요구 사항

노드를 실행하기 위해 이 구성을 권장합니다:
  • 8코어 CPU
  • 최소 16 GB RAM
  • 로컬로 연결된 NVMe SSD 드라이브
  • 충분한 스토리지 용량:
    • 최소: (2 × 체인_크기) + 스냅샷_크기 + 20% 버퍼
    • 스냅샷 복원(해당 시)과 체인 데이터 고려
Amazon Elastic Block Store (EBS)를 사용하는 경우, 초기 동기화 중 Base에 추가되는 새 블록 속도와 함께 지연 문제를 피하기 위해 타이밍 버퍼 디스크 읽기가 충분히 빠른지 확인하세요; io2 block express를 권장합니다.

네트워킹

피어 발견 및 동기화를 위해 다음 포트가 접근 가능한지 확인하세요(방화벽으로 차단되지 않도록):
포트프로토콜목적
30303TCP/UDPP2P 발견 (discv4) & RLPx
9222TCP/UDPReth 발견 v5 (discv5)
포트 9222는 Reth 피어 발견에 매우 중요합니다. 이 포트가 차단되면 노드가 피어를 찾고 동기화하는 데 어려움을 겪을 수 있습니다.

Docker

이 튜토리얼은 Docker에 익숙하고 머신에서 실행 중이라고 가정합니다.

L1 RPC URL

자체 L1 RPC URL이 필요합니다. 직접 실행하거나 파트너와 같은 서드파티 제공업체를 통해 사용할 수 있습니다.

노드 실행

  1. 저장소를 클론합니다.
  2. 이더리움 L1 풀 노드 RPC가 준비되어 있는지 확인하고(Base가 아님) OP_NODE_L1_ETH_RPCOP_NODE_L1_BEACON을 설정합니다(docker-compose를 사용하는 경우 .env.* 파일에서). 자체 L1 노드를 실행하는 경우 Base가 완전히 동기화되려면 L1 노드가 먼저 동기화되어야 합니다.
  3. docker-compose.yml의 2개 env_file 키 아래 네트워크에 해당하는 줄(.env.sepolia 또는 .env.mainnet)의 주석을 해제합니다.
  4. docker compose up을 실행합니다. 다음에서 응답이 오는지 확인합니다:
Terminal
curl -d '{"id":0,"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false]}' \
  -H "Content-Type: application/json" http://localhost:8545
노드 동기화는 며칠이 걸릴 수 있으며 요청 할당량을 많이 소비합니다. 사용량을 모니터링하고 필요하면 플랜을 업그레이드하세요.

스냅샷

Base 노드 운영자이고 초기 동기화에 상당한 시간을 절약하고 싶다면 스냅샷에서 복원할 수 있습니다. 스냅샷은 매주 업데이트됩니다.

동기화

다음으로 동기화 진행 상황을 모니터링할 수 있습니다:
Terminal
echo Latest synced block behind by: $((($(date +%s)-$( \
  curl -d '{"id":0,"jsonrpc":"2.0","method":"optimism_syncStatus"}' \
  -H "Content-Type: application/json" http://localhost:7545 | \
  jq -r .result.unsafe_l2.timestamp))/60)) minutes
노드를 사용하여 배포하려고 할 때 Error: nonce has already been used가 발생하면 동기화가 완료되지 않은 것입니다.

플래시블록 활성화

노드가 동기화되면 애플리케이션에 200ms 사전 확인을 제공하는 플래시블록을 활성화할 수 있습니다.

설정

플래시블록을 활성화하려면 다음 환경 변수로 노드를 시작합니다:
NODE_TYPE=base CLIENT=reth RETH_FB_WEBSOCKET_URL="wss://mainnet.flashblocks.base.org/ws" docker-compose up
변수설명
NODE_TYPE플래시블록이 있는 base reth 노드 활성화base
CLIENT실행 클라이언트reth
RETH_FB_WEBSOCKET_URL플래시블록 WebSocket 엔드포인트아래 참조

WebSocket 엔드포인트

네트워크URL
메인넷wss://mainnet.flashblocks.base.org/ws
Sepoliawss://sepolia.flashblocks.base.org/ws
이 WebSocket 엔드포인트는 노드 인프라 전용입니다.애플리케이션은 wss://mainnet.flashblocks.base.org/ws에 직접 연결하지 않아야 합니다. 대신 앱은 RPC 노드에 플래시블록 데이터를 조회해야 합니다. 자세한 내용은 앱 통합 가이드를 참조하세요.
base 바이너리는 플래시블록 WebSocket 스트림을 수신하고 사전 확인 데이터를 캐시합니다. 플래시블록 인식 RPC 메서드가 호출되면 이 캐시에서 데이터를 반환합니다. 전체 메시지 스키마 및 페이로드 구조는 플래시블록 API 개요를 참조하세요.

플래시블록 기능 확인

대기 중인 블록을 조회하여 노드가 플래시블록을 제대로 제공하고 있는지 테스트합니다:
curl -X POST \
  --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["pending", false],"id":1}' \
  http://localhost:8545
성공적인 응답에는 최신 플래시블록의 블록 데이터가 포함됩니다. 플래시블록을 일시적으로 사용할 수 없는 경우 노드는 최신 최종 확정 블록을 반환하도록 폴백합니다.

사용 가능한 RPC 메서드

플래시블록 인식 노드는 모든 표준 이더리움 JSON-RPC 메서드와 플래시블록 전용 메서드 및 WebSocket 구독을 지원합니다. 코드 예시 및 파라미터 세부 사항을 포함한 전체 목록은 플래시블록 API 참조를 참조하세요.