> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stablenet.network/llms.txt
> Use this file to discover all available pages before exploring further.

# 네트워킹

## 목적 및 범위

이 문서는 노드 발견, 피어 연결 관리, 블록체인 동기화, 메시지 전파를 처리하는 StableNet의 피어 투 피어 네트워킹 하위 시스템에 대한 개요를 제공합니다.\
네트워킹 레이어는 Ethereum의 DevP2P 프로토콜 스택을 기반으로 구축되며, 블록 및 트랜잭션 교환을 위한 eth 프로토콜을 구현합니다.

특정 네트워킹 컴포넌트에 대한 자세한 내용은 다음을 참조하세요:

* 연결 라이프사이클 및 피어 추적: [P2P Server and Peer Management](/ko/networking/7.1-p2p-server-and-peer-management)
* 노드 발견 메커니즘 및 피어 호환성: [Discovery and Fork ID](/ko/networking/7.2-discovery-mechanisms)
* 블록체인 다운로드 및 동기화 전략: [Chain Synchronization](/ko/networking/7.3-chain-synchronization)
* 메시지 라우팅 및 프로토콜 버전 관리: [Protocol Handlers](/ko/networking/7.4-protocol-handlers)

트랜잭션 전파 세부사항은 [Transaction Lifecycle](/ko/transaction-processing/6.1-transaction-lifecycle)을 참조하세요.\
블록 생성 및 브로드캐스팅은 [Block Production and Mining](/ko/consensus-and-block-production/4.2-block-production-and-mining)을 참조하세요.

## 네트워킹 아키텍처 개요

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

## P2P 서버

`p2p.Server`는 네트워킹 스택의 기반으로, 모든 피어 연결의 라이프사이클을 관리합니다.\
피어 발견, 연결 설정, 프로토콜 협상, 정상적인 연결 해제를 조정합니다.

서버는 서로 다른 피어 카테고리를 유지합니다:

* 동적 피어: DHT 메커니즘을 통해 발견되며 연결 제한의 대상이 됩니다
* 정적 피어: 연결 해제 시 항상 재연결되는 사전 구성된 노드
* 신뢰 피어: MaxPeers 제한을 우회하고 우선 처리를 받는 노드

**주요 컴포넌트:**

| Component          | Type                 | Purpose             |
| ------------------ | -------------------- | ------------------- |
| `Server.localnode` | `*enode.LocalNode`   | 로컬 노드의 ENR 레코드 및 신원 |
| `Server.ntab`      | `*discover.UDPv4`    | Discovery v4 테이블    |
| `Server.DiscV5`    | `*discover.UDPv5`    | Discovery v5 테이블    |
| `Server.dialsched` | `*dialScheduler`     | 아웃바운드 연결 시도 조정      |
| `Server.peers`     | `map[enode.ID]*Peer` | 현재 연결된 피어 집합        |

서버는 다음을 처리하는 메인 이벤트 루프를 운영합니다:

* 피어 연결 설정 단계 관리
* 피어 연결 해제 처리
* 신뢰 피어 목록 동적 갱신
* 스레드 안전한 피어 집합 접근 보장

## 피어 발견

StableNet은 동시에 작동할 수 있는 여러 피어 발견 메커니즘을 지원합니다:

| Mechanism     | Protocol           | Use Case       |
| ------------- | ------------------ | -------------- |
| Discovery v4  | UDP / Kademlia DHT | 퍼블릭 네트워크 기본 발견 |
| Discovery v5  | UDP / Topic 기반     | 고급 발견 및 토픽 필터링 |
| DNS Discovery | DNS TXT            | 부트스트랩 및 알려진 노드 |
| Static Nodes  | 구성 파일              | 영구 피어 관계       |
| Trusted Nodes | 구성 파일              | 우선 처리 피어       |

발견 서비스는 후보 피어를 `dialScheduler`에 전달하며 다음 정책을 적용합니다:

* 인바운드/아웃바운드 비율 유지
* 중복 다이얼 방지
* 실패 연결에 대한 지수 백오프
* 신뢰 피어에 대한 제한 완화

### Fork ID 검증

전체 피어 관계를 설정하기 전에 노드는 fork ID(EIP-2124)를 교환하여 체인 호환성을 검증합니다.\
fork ID는 제네시스 해시와 향후 포크 블록 번호를 기반으로 계산됩니다:

```text theme={null}
ForkID = CRC32(genesisHash + fork1Block + fork2Block + ...)
```

호환되지 않는 fork ID를 가진 피어는 핸드셰이크 단계에서 거부되어 네트워크 분할을 방지합니다.

## 체인 동기화

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

**다이어그램: 동기화 컴포넌트 상호 작용**

### 동기화 모드

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

| Mode      | Description     | Use Case  |
| --------- | --------------- | --------- |
| FullSync  | 모든 블록 다운로드 및 실행 | 아카이브 노드   |
| SnapSync  | 상태 스냅샷 + 최신 블록  | 빠른 초기 동기화 |
| LightSync | 헤더 및 요청 기반 데이터  | 제한적 클라이언트 |

### 다운로더

다운로더는 다음 작업을 수행합니다:

* 공통 조상 블록 탐색
* 스켈레톤 체인 구성
* 병렬 데이터 다운로드
* 메모리 기반 큐 제한
* 검증 후 체인 삽입

## 프로토콜 핸들러

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

**다이어그램: 프로토콜 핸들러 메시지 흐름**

### 프로토콜 버전 관리

StableNet은 eth/68 프로토콜을 구현합니다.\
핸드셰이크 중 프로토콜 버전과 체인 정보가 교환됩니다:

```text theme={null}
Handshake {
    ProtocolVersion: 68
    NetworkID: <chain ID>
    TD: <total difficulty>
    Head: <head block hash>
    Genesis: <genesis hash>
    ForkID: <fork identifier>
}
```

피어는 동일한 제네시스 해시와 호환되는 fork ID를 가져야 연결됩니다.

### 메시지 처리

**요청/응답 메시지:**

* GetBlockHeaders / BlockHeaders
* GetBlockBodies / BlockBodies
* GetReceipts / Receipts
* GetPooledTransactions / PooledTransactions

**브로드캐스트 메시지:**

* NewBlock
* NewBlockHashes
* Transactions
* NewPooledTransactionHashes

스마트 전파 전략을 사용하여 대역폭과 전파 속도를 균형 있게 유지합니다.

## 피어 관리

각 피어는 다음 라이프사이클을 거칩니다:

1. 발견
2. 다이얼링
3. 암호화 핸드셰이크
4. 프로토콜 핸드셰이크
5. 등록
6. 메시지 교환
7. 연결 해제

P2P 레이어는 전송과 암호화를, eth 레이어는 블록체인 로직을 담당합니다.

### 피어 평판

다운로더는 피어 성능을 지속적으로 추적합니다:

* 헤더 처리 용량
* 본문 처리 용량
* 영수증 처리 용량
* 왕복 지연 시간

이 평판 정보는 동기화 요청 시 피어 선택에 사용됩니다.

## 네트워크 보안

네트워킹 레이어는 다음 보안 메커니즘을 포함합니다:

| Mechanism  | Purpose      |
| ---------- | ------------ |
| 연결 수 제한    | 리소스 고갈 방지    |
| 인바운드 제한    | 연결 스팸 방어     |
| Fork ID 검증 | 체인 분리 방지     |
| 평판 기반 제거   | 악성 피어 차단     |
| 메시지 크기 제한  | 메모리 공격 방지    |
| 요청 수 제한    | I/O 및 대역폭 보호 |

피어는 프로토콜 위반, 과도한 리소스 사용, 호환성 문제 등으로 제거될 수 있습니다.
