본문으로 이동

P2P 네트워크

P2P 네트워크에서 각 노드는 탐색, 가십, 요청-응답 교환을 위해 유한하고 변화하는 직접 피어 집합을 유지합니다. 단일 전역 뷰를 만들거나 메시지 수락을 합의로 바꾸지는 않습니다.

업데이트

교육 목적으로만 제공되며 투자 조언이 아닙니다. 투자에는 손실이 발생할 수 있습니다.

직접 답변

P2P 네트워크에서 각 노드는 유한한 직접 피어 집합을 탐색하고 유지하며, 인증된 프로토콜 메시지를 교환하고, 모든 트래픽을 하나의 중앙 서버로 보내지 않고 자체 로컬 뷰를 구성합니다. 이는 완전 그래프나 전역 멤풀이 아니며 그 자체가 진실의 원천도 아닙니다. 한 피어가 객체를 수신·검증·전달했다고 모든 노드가 보았거나 블록에 포함되었거나 합의에서 최종 확정되었다고 입증되지는 않습니다.

병합 이후 Ethereum은 서로 다른 두 P2P 네트워크를 사용합니다. 실행 클라이언트는 탐색 기능, RLPx, 버전이 지정된 eth 기능을 동기화와 트랜잭션 교환에 사용합니다. 합의 클라이언트는 discv5로 피어를 탐색하고 libp2p 가십과 요청-응답 프로토콜로 비콘 블록, 증명 및 기타 합의 객체를 교환합니다. 두 클라이언트는 로컬의 인증된 Engine API를 통해 협력합니다. 지갑은 일반적으로 JSON-RPC로 제출하지만 그렇다고 가십 참여 노드가 되는 것은 아닙니다.

작동 방식

  1. 체인, 네트워크, 제네시스와 포크 설정, 실행·합의 클라이언트 버전, 노드 식별자와 관찰 시점을 확정합니다. 실행 클라이언트, 합의 클라이언트, 선택적 검증자, 로컬 Engine API, 사용자 대상 RPC를 별도 구성 요소로 그립니다.
  2. 내장 부트노드, DNS 목록, 정적 또는 신뢰 피어, ENR 또는 enode 식별자, 광고된 엔드포인트와 시퀀스, 네트워크 호환성, NAT, 인바운드 도달성 등 각 탐색 경로를 확인합니다. 서명된 ENR은 레코드를 키에 연결하지만 정직성, 동기화 상태 또는 현재 도달성을 증명하지 않습니다.
  3. 연결과 프로토콜 협상을 따로 기록합니다. 실행 피어는 RLPx 세션을 만들고 eth 같은 기능을 협상합니다. 합의 피어는 discv5 탐색 후 libp2p 전송, 보안, 프로토콜 ID를 협상합니다. 엔드포인트 발견이 애플리케이션 호환성을 뜻하지는 않습니다.
  4. 각 객체의 실제 경로를 추적합니다. 트랜잭션은 RPC 제출에서 로컬 검증과 실행 계층 멤풀로 이동한 뒤 eth 공지와 요청을 통해 전파될 수 있습니다. 합의 객체는 주제별 가십 검증을 사용하며, 누락된 블록은 요청-응답으로 가져올 수 있습니다.
  5. 로컬 수락이나 전달 전에 범위가 제한된 디코딩, 중복 제거, 속도 제한, 서명·구문·상태 검사를 적용합니다. 무효, 무시, 사용 불가, 자원 제한 결과를 기록합니다. 피어 점수와 연결 해제 정책은 로컬 구현 결정이지 합의 평판이 아닙니다.
  6. 수신, 검증, 전달, 트랜잭션 포함, 실행 결과, 포크 선택, 정당화, 최종성을 서로 다른 상태와 시계로 관리합니다. 로컬 풀, 체인 헤드 또는 이력 응답이 불완전하거나 충돌하거나 오래되었으면 여러 피어 또는 노드를 비교합니다.
  7. 인바운드·아웃바운드 피어의 다양성, 운영자, IP 접두사와 ASN 집중도, 변동, 지연, 패킷 손실, 대역폭, 대기열, 무효 트래픽, 시계 상태, RPC 의존성을 감시합니다. 부트노드 손실, NAT 장애, 네트워크 분할, 이클립스 공격, 과부하, 복구를 훈련하되 절대적 저항성을 주장하지 않습니다.

피어 탐색, 전송 보안, 애플리케이션 유효성은 서로 다른 문제를 해결합니다. 부트노드는 후보를 소개할 뿐 일반 트래픽을 중계하거나 정규 체인을 선택하지 않습니다. 암호화는 세션 내용과 인증을 보호하지만 피어는 여전히 네트워크 엔드포인트와 시점을 알 수 있습니다. 원격 RPC 제공자는 추가로 질의, 주소, 제출된 트랜잭션을 관찰할 수 있습니다.

전파는 병렬적이며 토폴로지에 따라 달라집니다. 팬아웃, 중복 경로, 대역폭 직렬화, 검증 CPU, 대기, 패킷 손실, 재전송, 피어 점수, 객체별 규칙이 도착 시간의 분포와 꼬리를 결정합니다. delay = hops * perHopTime 같은 식은 직렬 처리를 명시적으로 가정한 교육용 모델일 뿐 네트워크 보장이 아닙니다.

계산 예시

  • 직렬 경로와 파이프라인. 교육용 경로가 4 hops이고 각 홉의 네트워크 시간이 80 ms, 검증 시간이 20 ms이면 완전 직렬 처리는 4 * (80 + 20) = 400 ms입니다. 검증이 다음 전송과 겹치면 단순화된 하한은 4 * 80 + 20 = 340 ms입니다. 어느 값도 전체 네트워크 전파 시간이 아닙니다.
  • 트랜잭션 공지와 조회. 노드가 20개의 트랜잭션 해시를 받고 이미 6개를 보유하면 20 - 6 = 14개의 본문이 누락됩니다. 교육용 요청이 최대 8개를 담는다면 ceil(14 / 8) = 2 batches가 필요합니다. 배치당 왕복 120 ms, 검증 30 ms이면 직렬 완료 시간은 2 * (120 + 30) = 300 ms, 이상적인 병렬 완료 시간은 150 ms입니다. 실제 한도는 협상된 eth 버전과 클라이언트에 따라 달라집니다.
  • 단순화한 이클립스 확률. 8개의 아웃바운드 피어를 각각 독립적으로 추출하고 악성 후보가 25%이면 모두 악성일 확률은 0.25^8 = 0.0000152587890625 = 0.00152587890625%입니다. 탐색 편향, 시빌 식별자, IP·ASN 상관관계, 피어 유지 정책은 독립성 가정을 위반하므로 이는 보안 보장이 아닙니다.
  • 검증 과부하. 인바운드 가십이 900 messages/s이고 4개의 작업자가 각각 250 messages/s를 검증하면 처리 용량은 1,000 messages/s, 여유 용량은 100 messages/s, 사용률은 90%입니다. 공격 트래픽이 1,400 messages/s이면 초당 400 messages/s의 백로그가 생기며, 6,000 messages가 쌓이는 데 15 seconds가 걸립니다. 처리 시간 분산을 무시하면 5,000-message 대기열은 삭제 또는 속도 제한 전 5,000 / 400 = 12.5 seconds 만에 가득 찹니다.

위험

  • 잘못된 체인, 제네시스 또는 포크 설정
  • 실행 클라이언트, 합의 클라이언트 또는 Engine API 불일치
  • 집중되거나 탈취된 부트노드와 DNS 탐색
  • 오래되거나 위조되거나 도달할 수 없는 엔드포인트 메타데이터
  • NAT, 방화벽 또는 포트 설정이 예상 도달성을 차단
  • 노드의 로컬 뷰를 필터링하는 이클립스 공격
  • 시빌 식별자와 IP, ASN, 운영자 또는 클라우드 집중
  • 정적 또는 신뢰 피어에 대한 과도한 의존
  • 트랜잭션 검열 또는 선택적 중계
  • 공개·비공개 주문 흐름의 차이
  • 로컬 멤풀 수락, 대체, 퇴출 정책의 차이
  • 무효 가십이 검증 CPU를 고갈
  • 과도한 요청, 압축 해제, 대역폭, 메모리 또는 디스크 고갈
  • 피어 점수 조작 또는 잘못된 불이익
  • 대기열 역압으로 시간에 민감한 메시지가 삭제
  • 지연, 손실 또는 시계 오차로 일시적인 체인 헤드 차이 발생
  • 프로토콜 버전 또는 포크 다이제스트 비호환
  • 가지치기된 이력이나 자원 사용 불가 응답을 객체 부재로 오해
  • IP, 시점, 질의 및 트랜잭션 발신지의 개인정보 유출
  • 중앙화되거나 노출된 RPC로 인한 추적, 오래된 뷰, 검열 또는 침해

일반적인 오해

  • 모든 노드는 다른 모든 노드와 직접 연결된다. 각 노드에는 유한하고 변화하는 로컬 피어 집합이 있으며, 서로 다른 노드는 일시적으로 다른 메시지와 체인 헤드를 볼 수 있습니다.
  • 부트노드는 신뢰할 수 있는 블록 출처 또는 합의 참여자다. 일반적인 역할은 초기 피어 소개이며, 체인 유효성과 포크 선택은 다른 곳에서 검증됩니다.
  • 한 피어가 수락한 트랜잭션은 전 세계에 전파되고 반드시 포함된다. 수락과 중계는 로컬 동작이며 빌더나 제안자는 포함하지 않을 수 있습니다.
  • 가십 검증은 합의와 최종성을 의미한다. 이는 초기 로컬 네트워크 관문이며 포크 선택, 정당화, 최종성은 별도의 상태 머신입니다.
  • 피어 수 증가나 암호화 전송이 익명성과 이클립스 저항성을 자동으로 제공한다. 다양성과 선택 방식이 중요하며 피어와 RPC 제공자는 여전히 엔드포인트, 시점, 활동을 연관 지을 수 있습니다.

관련 주제

출처

탐색

위키 검색...