참가자 간 P2P 커뮤니케이션
(섹션: 생태계 및 네트워크)
1) 생태계에서 P2P가 필요한 이유
P2P 접근 방식을 통해 참가자 (운영자, 제공자, 스튜디오, 계열사, 유효성 검사기/노드, 지갑, 분석 및 오케스트레이션 서비스) 는 필수 "중앙 파이프" 없이 데이터를 교환하고 작업을 수행하여 병목 현상, 대기 시간 및 개별 지점에 대한 의존도. 주요 효과:- 탄력성 및 내결함: 단일 SPOF가 없으므로 네트워크/지역 장애에서 살아남는 것이 더 쉽습니다.
- 성장함에 따른 확장 성: 각 새로운 구성원은 리소스 (채널, 계산, 스토리지) 에 기여합니다.
- 배송 비용 절감: 트래픽이 가장 짧은 경로를 따라 이동하여 중앙 게이트웨이를 절약합니다.
- 데이터 프라이버시 및 주권: 무엇을 누구에게 줄 것인지에 대한 세분화 된 통제.
2) P2P 토폴로지
1. 완전히 연결된 (메쉬) -높은 안정성이지만 채널 수 (O (n ²)) 는 비쌉니다. 환율이 높은 소그룹에 적합합니다.
2. 슈퍼 동료-일부 동료들은 라우팅/릴레이, 메쉬와 스타 사이의 절충안을 인수합니다.
3. 클러스터 오버레이-브리지 (게이트웨이) 로 연결된 주제별 하위 네트워크 (예: "provayder 겠습니다", "계열사").
4. DHT 오버레이-서비스 및 컨텐츠에 대한 분산 라우팅/검색 테이블, 로그 검색의 복잡성.
권장 사항: 많은 역할을 수행하는 생태계-하이브리드: "계약" 그룹 내 로컬 메쉬 (운영자), 라우팅을위한 수퍼 피어, 글로벌 검색을위한 DHT 및 이벤트를위한 펍/서브.
3) 네트워크 스택 및 프로토콜
전송: QUIC/UDP (0-RTT 요약, 손실 허용 오차, 멀티플렉싱), TCP( 폴백), WebRTC (브라우저, P2P 미디어/데이터 그램).
암호화: TLS 1. QUIC/TCP의 경우 3; 오버레이 용-노이즈/Libp2p-SECIO/ECDH + AEAD. 개인 채널 전송을 통한 엔드 투 엔드 암호화.
식별: 규정 준수 요구 사항을 충족하기 위해 장기 노드 키 (ed25519/secp256k1), 자체 서명 된 피어 ID, 선택적으로
발견 및 주소 지정: mDNA (LAN), DHT/Kademlia (WAN), 정적 부트 스트랩 (부트 스트랩 피어), 서비스 디렉토리/레지스트리.
NAT 통과: 상위 노드를 통한 포트 프록시, 나머지 구멍 구멍 펀칭, TURN/릴레이 폴백.
- 현장 요청 (가격 견적, 한도, 지불 상태) 에 대한 Req/Resp (RPC).
- 이벤트에 대한 펍/하위 (거래, 게임 상태, 규정 준수 경고).
- 병렬 논리 채널의 스트림 뮤싱 (yamux/mplex/QUIC).
- CRDT/운영 로그는 "마법사" 없이 캐시와 메타 데이터를 조정합니다.
4) NAT 통과 및 릴레이
3 단계 전략:1. 직접 P2P: 홀 펀치 시도 (UDP를 선호하고 TCP를 선호 함).
2. 슈퍼 노드를 통한 TURN/릴레이: 볼륨 제한, 엔드 투 엔드 암호화, 청구 릴레이.
3. HTTPS/HTTP3의 폴백: 필요한 경우 허용 된 회사 프록시를 통한 터널링.
릴레이가 비용과 대기 시간을 증가시키므로 직접 대 릴레이 연결의 비율을 모니터링하십
5) 경로, 검색 및 검색
DHT (Kademlia 클래스): "포인터" (공급자 레코드) 만 저장하고 서명으로 보호하고 TTL을 입력하고 쿼럼을 읽습니다.
컨텐츠 기반 라우팅: '서비스: 제한/운영자: XYZ/region: TR' 양식의 키 게시.
개인 네임 스페이스: 닫힌 커뮤니티를위한 별도의 접두사/키 (파트너 오버레이).
중독 방지: 소유자의 서명, 출판 노드의 명성, 요율 제한 출판물에 의한 기록 검증.
6) 데이터 모델 및 조정
이벤트 소싱 + 펍/서브: demempotency 키 이벤트로 의미있는 모든 변경.
CRDT (GCounter, OR-Set, LWW- 레지스터): 많은 참가자가 편집 한 구성 요소, 액세스, 캐시 된 한계/따옴표.
합의가 항상 필요한 것은 아닙니다. 참고 서적과 메타 데이터의 경우 "최종 일관성" 으로 충분합니다. 금융 거래 - 견실 한 마무리 (외부 레지스터/블록 체인/공증인).
7) QoS, SLO 및 메트릭
네트워크 SLO (예):- p99 대기 시간 P2P-RPC 5%.
- 펍/서브 엔드-투-엔드 지연 p95
- 릴레이 점유율 λ30% (목표는 70% 이상의 직접 연결입니다).
- 내성: SLA 저하없이 잔치의 최대 20% 손실.
- 연결성: 달성 가능한 피어 백분율, 직접 연결 백분율, 평균 이웃 수.
- 경로 품질: RTT, Jitter, 패킷 손실; 서비스 클래스 별 p95/p99.
- 처리량: 스트림 전체의 평균/피크 대역폭.
- 신뢰성: 재 연결률, RPC 오류율, 펍/서브 재정렬/드롭.
- 발견 건강: DHT 적중/미스, 주요 해결 시간, 쓸모없는 기록의 비율.
- 보안: E2E 암호화, 유효하지 않은 서명, 요율 이상과 공유하십시오.
- 비용: 릴레이를 통한 트래픽 (GB/일), GB당 CTS, RPC 당 CTS.
8) P2P 보안
신원 및 신뢰: 장기 피어 ID, 법인에 대한 구속력 (운영자/제공자), 신뢰할 수있는 키 등록; 단기 세션 키.
암호화: TLS 1 전송. 개인 채널의 경우 3/Noise + E2E over (Double-Ratchet, HPKE).
승인: 기능 토큰/파스타 (운영 및 볼륨과 관련), ACL by Pub/Sub 주제.
시빌 및 스팜 방지: "등록" 노드, 평판/신용 한도, 공개 커뮤니티에 대한 입력 캡카/지불 서약에 대한 권한 증명.
채널 남용: 트래픽에 대한 회로 차단기, RPC에 대한 누수 버킷 속도 제한 및 게시, "회색 목록" 시끄러운 잔치.
데이터 확인: 이벤트 서명, 큰 배치에 대한 머클 증거, demempotency 키 할아버지.
9) 엔지니어링 패턴
RPC demempotency: 수신기에서 'x-dedempotency-key' + "적어도 한 번" 전달 + 데드 팬.
역압: 스트림 별 창 크기, 우선 순위 (화폐 운영> 원격 측정).
부분 오류 허용 오차: 빠른 타임 아웃 + 반 작동 모드 (읽기 전용, 캐시 전용, 기능 저하).
관찰 가능성: p2p-hop 추적, 상관 ID, OpenTelemetry에 의한 메트릭 내보내기.
json
{
"id": "evt_01J...",
"ts": "2025-10-31T18:25:43Z",
"topic": "limits. update/operator:ACME/region:TR",
"payload_hash": "sha256:...",
"payload": { "limit": 10000, "currency": "TRY", "valid_until": "2025-11-01T00:00:00Z" },
"sig": "ed25519:base64..."
}
10) 펍/하위 및 가십
방송 이벤트를위한 가십 네트워크: 중복 방지, 랜덤 워크, 구독 슬라이딩 창.
주제와 정치인: "공개" 와 "비공개" 주제의 분리; 개인-ACL 가입자에게만 해당됩니다.
배송: 가입자의 최소 한 번 보증 + 결정 론적 중복 제거.
11) 보관 및 캐싱
스냅 샷 + 로그: 마지막 스냅 샷과 이벤트 로그 리프트에서 잔치를 빠르게 시작합니다.
캐시 정책: TTL/ETag/스키마 버전 지정; 서명에 의한 검증.
가장자리 캐시: 수퍼 피어는 "캐싱 프록시" 로 서명하여 핫 키/상태 조각을 저장할 수 있습니다.
12) 운영, 모니터링 및 대시 보드
데일리 옵스:- 연결%, 릴레이%, DHT 적중/미스, RPC 성공/대기 시간 p95/p99, 펍/하위 지연, 오류율, 이탈.
- 슈퍼 노드 맵 (로드, 채도, 지역 별 지연).
- 릴레이 공유 트렌드, 트래픽 비용, 핫 주제, E2E 채널 공유, 공격/이상.
- NAT 통과 효율 (직접 공유), GB/RPC 당 CTS, 슈퍼 노드 확장 계획, 규정 준수 KPI (로깅, 스토리지).
13) 테스트 및 품질
혼돈 시나리오: 슈퍼 노드의 셧다운%, 인공 손실/지터, 펍/서브로드.
Interop-matrix: SDK/프로토콜 버전 × NAT 유형 × 영역.
퍼징 프로토콜: 랜덤 필드/크기, 악성 페이로드 (샌드 박스).
보안 훈련: 피어 키 유출, 슈퍼 노드 손상 (트러스트 목록 다시 게시, 키 취소).
14) 준수 및 법적 측면
로그 및 불변성: 로그 해시 체인, 타임 스탬핑, 지역 별 스토리지 (데이터 레지던트).
데이터 액세스 제어: 최소화, 암호화 "휴식", 주제에 대한 DLP 정책, 사용자 속성의 종단 간 가명.
암호화 편집 증명이있는 "묘비 이벤트" 및 "수정 이벤트" 정책을 삭제/제한 할 권리.
감사-수출은 외부 점검을 위해 로그에 서명했습니다.
15) 네트워크 경제 및 청구
비용 모델: 트래픽 × GB 중계, 스냅 샷 저장, "공급 업체 노드" (GB/RPC 당 보상) 로 슈퍼 노드.
공정 사용법: 출판 및 RPC 할당량; 유료 "가속" 채널/우선 순위.
직접 채널에 대한 동기 부여: P2P 직접 할인, 네트워크의 "좋은 시민" 에 대한 한계를 높입니다.
16) SLO/ODVD 템플릿 (쿼터)
KR1: 직접 연결의 75% 이상, DHT는 p95 λ300 ms를 해결합니다.
KR2 (성능): 전 세계적으로 p99 RPC λ400 ms; 펍/서브 p95
KR3: RPC 성공 7%; 방울의 20% 에 대한 이탈 저항.
KR4 (보안): E2E 채널의 95% 이상; 0 중요한 서명/대체 사건.
KR5: 1 RPC-20% QoQ의 트래픽 중계; GB당 CTS -15% QoQ.
17) 플레이 북 사건 (치트 시트)
릴레이 점유율을 높이고 대기 시간을 늘리십시오
공격적인 홀 펀치를 사용하고, 표준 풀을 변경하고, 슈퍼 노드의 지리를 확장하고, 중요한 주제의 우선 순위를 정할 수 있습니다.
DHT 중독:- 신뢰할 수있는 게시자 키를 재발행하고, 정족수의 정족수를 활성화하고, 오래된 기록을 정리하고, 의심스러운 동료로부터 게시물을 일시
- 속도 제한 + 작업 증명/수수료 게이트, 회색 목록, 새로운 서명 임계 값으로 오버레이 재구성.
- 즉각적인 리콜, "폐지 이벤트" 출판, 종속 동료의 키 회전, ACL의 재 계산.
18) 설정 예 (Pseudo-YAML)
yaml p2p:
transport: [quic, tcp]
encryption: [tls13, noise]
discovery:
bootstrap_peers:
- /dns4/bootstrap-1. ecosys/p2p/12D3KooW...
- /dns4/bootstrap-2. ecosys/p2p/12D3KooX...
dht: kademlia mdns: true nat_traversal:
stun_servers: [stun1. ecosys. net, stun2. ecosys. net]
turn_relays:
- turn1. ecosys. net
- turn2. ecosys. net hole_punching: {udp: true, tcp: true}
relay_threshold_pct: 30 pubsub:
engine: gossip topics:
- name: limits. update acl: allow: [operators, providers]
- name: payouts. status acl: allow: [operators]
security:
e2e_required_topics: [payouts. status, limits. update]
acls:
operators: [12D3KooA..., 12D3KooB...]
providers: [12D3KooC..., 12D3KooD...]
rate_limits:
rpc_per_minute: 600 publish_per_minute: 1200
19) 구현 점검표
1. 결합 된 토폴로지 (+ 슈퍼 피어 그룹 내 메시 + DHT 계약 그룹) 를 선택하십시오.
2. 주요 영역에서 부트 스트랩 및 슈퍼 노트를 올리고 2015를 추가하십시오.
3. 이벤트 형식, 서명, ACL 및 e2e 정책을 정의하십시오.
4. 트레이스 및 메트릭 사용 (RTT, 릴레이%, DHT 대기 시간, RPC 성공).
5. SLO/OKR을 수정하고 연소율 경고를 켜십시오.
6. 혼돈의 날을 보내십시오: 정전, 손실, 펍/서브로드.
7. 키 회전, 로그 감사, 응답 절차를 조정하십시오.
결론: 생태계에서 잘 설계된 P2P 네트워크는 중앙 게이트웨이에 대한 의존도를 줄이고 교환 속도를 높이며 안정성을 높입니다. QUIC, DHT, Pub/Sub, E2E 암호화, 엄격한 ACL 및 측정 가능한 악용 (SLO/metrics) 을 결합하면 각 참가자가 수동 클라이언트가 아닌 완전한 가치 노드 인 확장 가능하고 안전한 네트워크 패브릭을 얻을 수 있습니다.