목적 및 범위
이 문서는 노드 발견, 피어 연결 관리, 블록체인 동기화, 메시지 전파를 처리하는 StableNet의 피어 투 피어 네트워킹 하위 시스템에 대한 개요를 제공합니다.네트워킹 레이어는 Ethereum의 DevP2P 프로토콜 스택을 기반으로 구축되며, 블록 및 트랜잭션 교환을 위한 eth 프로토콜을 구현합니다. 특정 네트워킹 컴포넌트에 대한 자세한 내용은 다음을 참조하세요:
- 연결 라이프사이클 및 피어 추적: P2P Server and Peer Management
- 노드 발견 메커니즘 및 피어 호환성: Discovery and Fork ID
- 블록체인 다운로드 및 동기화 전략: Chain Synchronization
- 메시지 라우팅 및 프로토콜 버전 관리: Protocol Handlers
블록 생성 및 브로드캐스팅은 Block Production and Mining을 참조하세요.
네트워킹 아키텍처 개요
StableNet의 네트워킹 레이어는 네트워크 연결을 유지하고 블록체인 상태를 동기화하기 위해 함께 작동하는 네 가지 주요 하위 시스템으로 구성됩니다.P2P 서버
p2p.Server는 네트워킹 스택의 기반으로, 모든 피어 연결의 라이프사이클을 관리합니다.피어 발견, 연결 설정, 프로토콜 협상, 정상적인 연결 해제를 조정합니다. 서버는 서로 다른 피어 카테고리를 유지합니다:
- 동적 피어: DHT 메커니즘을 통해 발견되며 연결 제한의 대상이 됩니다
- 정적 피어: 연결 해제 시 항상 재연결되는 사전 구성된 노드
- 신뢰 피어: MaxPeers 제한을 우회하고 우선 처리를 받는 노드
서버는 다음을 처리하는 메인 이벤트 루프를 운영합니다:
- 피어 연결 설정 단계 관리
- 피어 연결 해제 처리
- 신뢰 피어 목록 동적 갱신
- 스레드 안전한 피어 집합 접근 보장
피어 발견
StableNet은 동시에 작동할 수 있는 여러 피어 발견 메커니즘을 지원합니다:
발견 서비스는 후보 피어를
dialScheduler에 전달하며 다음 정책을 적용합니다:
- 인바운드/아웃바운드 비율 유지
- 중복 다이얼 방지
- 실패 연결에 대한 지수 백오프
- 신뢰 피어에 대한 제한 완화
Fork ID 검증
전체 피어 관계를 설정하기 전에 노드는 fork ID(EIP-2124)를 교환하여 체인 호환성을 검증합니다.fork ID는 제네시스 해시와 향후 포크 블록 번호를 기반으로 계산됩니다:
체인 동기화
체인 동기화 하위 시스템은 피어로부터 블록체인 데이터를 다운로드하고 검증합니다.이 시스템은 여러 컴포넌트가 협력하여 동작합니다. 다이어그램: 동기화 컴포넌트 상호 작용
동기화 모드
StableNet은 노드 상태에 따라 다음 동기화 모드를 지원합니다:다운로더
다운로더는 다음 작업을 수행합니다:- 공통 조상 블록 탐색
- 스켈레톤 체인 구성
- 병렬 데이터 다운로드
- 메모리 기반 큐 제한
- 검증 후 체인 삽입
프로토콜 핸들러
프로토콜 핸들러는 P2P 레이어와 블록체인 로직을 연결하며 메시지를 라우팅합니다. 다이어그램: 프로토콜 핸들러 메시지 흐름프로토콜 버전 관리
StableNet은 eth/68 프로토콜을 구현합니다.핸드셰이크 중 프로토콜 버전과 체인 정보가 교환됩니다:
메시지 처리
요청/응답 메시지:- GetBlockHeaders / BlockHeaders
- GetBlockBodies / BlockBodies
- GetReceipts / Receipts
- GetPooledTransactions / PooledTransactions
- NewBlock
- NewBlockHashes
- Transactions
- NewPooledTransactionHashes
피어 관리
각 피어는 다음 라이프사이클을 거칩니다:- 발견
- 다이얼링
- 암호화 핸드셰이크
- 프로토콜 핸드셰이크
- 등록
- 메시지 교환
- 연결 해제
피어 평판
다운로더는 피어 성능을 지속적으로 추적합니다:- 헤더 처리 용량
- 본문 처리 용량
- 영수증 처리 용량
- 왕복 지연 시간
네트워크 보안
네트워킹 레이어는 다음 보안 메커니즘을 포함합니다:
피어는 프로토콜 위반, 과도한 리소스 사용, 호환성 문제 등으로 제거될 수 있습니다.

