Skip to main content

목적 및 범위

이 문서는 노드 발견, 피어 연결 관리, 블록체인 동기화, 메시지 전파를 처리하는 StableNet의 피어 투 피어 네트워킹 하위 시스템에 대한 개요를 제공합니다.
네트워킹 레이어는 Ethereum의 DevP2P 프로토콜 스택을 기반으로 구축되며, 블록 및 트랜잭션 교환을 위한 eth 프로토콜을 구현합니다.
특정 네트워킹 컴포넌트에 대한 자세한 내용은 다음을 참조하세요: 트랜잭션 전파 세부사항은 Transaction Lifecycle을 참조하세요.
블록 생성 및 브로드캐스팅은 Block Production and Mining을 참조하세요.

네트워킹 아키텍처 개요

StableNet의 네트워킹 레이어는 네트워크 연결을 유지하고 블록체인 상태를 동기화하기 위해 함께 작동하는 네 가지 주요 하위 시스템으로 구성됩니다.

P2P 서버

p2p.Server는 네트워킹 스택의 기반으로, 모든 피어 연결의 라이프사이클을 관리합니다.
피어 발견, 연결 설정, 프로토콜 협상, 정상적인 연결 해제를 조정합니다.
서버는 서로 다른 피어 카테고리를 유지합니다:
  • 동적 피어: DHT 메커니즘을 통해 발견되며 연결 제한의 대상이 됩니다
  • 정적 피어: 연결 해제 시 항상 재연결되는 사전 구성된 노드
  • 신뢰 피어: MaxPeers 제한을 우회하고 우선 처리를 받는 노드
주요 컴포넌트: 서버는 다음을 처리하는 메인 이벤트 루프를 운영합니다:
  • 피어 연결 설정 단계 관리
  • 피어 연결 해제 처리
  • 신뢰 피어 목록 동적 갱신
  • 스레드 안전한 피어 집합 접근 보장

피어 발견

StableNet은 동시에 작동할 수 있는 여러 피어 발견 메커니즘을 지원합니다: 발견 서비스는 후보 피어를 dialScheduler에 전달하며 다음 정책을 적용합니다:
  • 인바운드/아웃바운드 비율 유지
  • 중복 다이얼 방지
  • 실패 연결에 대한 지수 백오프
  • 신뢰 피어에 대한 제한 완화

Fork ID 검증

전체 피어 관계를 설정하기 전에 노드는 fork ID(EIP-2124)를 교환하여 체인 호환성을 검증합니다.
fork ID는 제네시스 해시와 향후 포크 블록 번호를 기반으로 계산됩니다:
호환되지 않는 fork ID를 가진 피어는 핸드셰이크 단계에서 거부되어 네트워크 분할을 방지합니다.

체인 동기화

체인 동기화 하위 시스템은 피어로부터 블록체인 데이터를 다운로드하고 검증합니다.
이 시스템은 여러 컴포넌트가 협력하여 동작합니다.
다이어그램: 동기화 컴포넌트 상호 작용

동기화 모드

StableNet은 노드 상태에 따라 다음 동기화 모드를 지원합니다:

다운로더

다운로더는 다음 작업을 수행합니다:
  • 공통 조상 블록 탐색
  • 스켈레톤 체인 구성
  • 병렬 데이터 다운로드
  • 메모리 기반 큐 제한
  • 검증 후 체인 삽입

프로토콜 핸들러

프로토콜 핸들러는 P2P 레이어와 블록체인 로직을 연결하며 메시지를 라우팅합니다. 다이어그램: 프로토콜 핸들러 메시지 흐름

프로토콜 버전 관리

StableNet은 eth/68 프로토콜을 구현합니다.
핸드셰이크 중 프로토콜 버전과 체인 정보가 교환됩니다:
피어는 동일한 제네시스 해시와 호환되는 fork ID를 가져야 연결됩니다.

메시지 처리

요청/응답 메시지:
  • GetBlockHeaders / BlockHeaders
  • GetBlockBodies / BlockBodies
  • GetReceipts / Receipts
  • GetPooledTransactions / PooledTransactions
브로드캐스트 메시지:
  • NewBlock
  • NewBlockHashes
  • Transactions
  • NewPooledTransactionHashes
스마트 전파 전략을 사용하여 대역폭과 전파 속도를 균형 있게 유지합니다.

피어 관리

각 피어는 다음 라이프사이클을 거칩니다:
  1. 발견
  2. 다이얼링
  3. 암호화 핸드셰이크
  4. 프로토콜 핸드셰이크
  5. 등록
  6. 메시지 교환
  7. 연결 해제
P2P 레이어는 전송과 암호화를, eth 레이어는 블록체인 로직을 담당합니다.

피어 평판

다운로더는 피어 성능을 지속적으로 추적합니다:
  • 헤더 처리 용량
  • 본문 처리 용량
  • 영수증 처리 용량
  • 왕복 지연 시간
이 평판 정보는 동기화 요청 시 피어 선택에 사용됩니다.

네트워크 보안

네트워킹 레이어는 다음 보안 메커니즘을 포함합니다: 피어는 프로토콜 위반, 과도한 리소스 사용, 호환성 문제 등으로 제거될 수 있습니다.