ProbeLab 팀은 @dennis-tra와 @cortze가 주도적으로 개발한 Hermes를 발표하게 되어 기쁩니다. Hermes는 GossipSub 리스너이자 libp2p 기반 네트워크의 추적기입니다. 이 도구가 커뮤니티에서 널리 사용되고 더 많은 기능과 다른 네트워크에 대한 지원이 추가되기를 희망합니다.
Hermes란 무엇이며 어떻게 사용할 수 있나요
Hermes는 경량 노드처럼 동작하며 네트워크의 다른 참여자들에게 연결됩니다. 들어오는 요청에 응답하고 안정적인 연결을 유지할 수 있도록 신뢰할 수 있는 로컬 노드에 의존합니다.
Hermes 기반 실험은 libp2p 기반 네트워크에서 GossipSub 메시지 브로드캐스팅 프로토콜의 효율성과 성능을 측정하는 것을 목표로 합니다. Hermes는 개발자들이 메시지 전파 지연 시간과 제어 메시지 오버헤드를 기반으로 네트워크 프로토콜을 조정할 수 있도록 도와줍니다.
현재 이 도구는 이더리움 네트워크(합의 계층)를 지원하지만, 향후 더 많은 네트워크가 지원될 것입니다.
작동 방식
구성 요소
Hermes는 배포된 각 네트워크에 대해 단일 구성 요소인 경량 노드로 작동합니다. 그러나 작동하기 위해서는 두 가지 주요 요구 사항이 있습니다: 1) 체인 상태에 대한 올바른 뷰를 제공할 수 있는 신뢰할 수 있는 로컬 노드 2) 모든 libp2p 추적을 수신하고 저장할 이벤트 소비자. 경량 노드는 피어를 검색하고 연결을 유지하며 libp2p 호스트의 내부 이벤트를 모니터링할 책임이 있습니다.
경량 노드
Hermes는 표준 libp2p 노드처럼 작동하며, 신뢰할 수 있는 로컬 또는 원격 노드에 연결하여 특정 RPC에 필요한 체인 상태 정보를 활용하여 자신의 기능을 향상시킵니다.
Hermes는 모든 사용 가능한 GossipSub 주제에 가입하여 네트워크와의 모든 상호 작용을 포괄적으로 수신, 공개 및 추적할 수 있습니다. 이를 통해 도구가 네트워크 활동을 효율적으로 추적할 수 있습니다.
또한 Hermes는 이러한 추적을 정의된 소비자에게 제출할 수 있으며, 현재 AWS Kinesis와 이더리움 재단(EF)의 Xatu를 지원합니다. 이 기능을 통해 네트워크 데이터를 분석 및 모니터링 도구와 통합할 수 있어 네트워크의 전반적인 보안과 기능성을 개선할 수 있습니다.
배포
Hermes는 지속적으로 실행되도록 개발되었습니다. 그러나 경량 노드의 연결 안정성을 높이기 위해서는 원격 피어가 요청할 수 있는 체인 지향 RPC 호출에 성공적으로 응답해야 합니다. Hermes는 체인 독립적으로 설계되었기 때문에 외부 신뢰할 수 있는 노드에 의존해야 합니다.
Hermes는 하나의 체인 클라이언트와 쌍을 이루어야 합니다: 우리의 경우와 이더리움 합의 계층에서는 Prysm을 사용했습니다. Hermes에 HTTP API와 gRPC 호스트의 엔드포인트를 제공하면 Hermes가 "화이트리스트"에 자신을 추가할 수 있어 대부분의 체인 또는 상태 관련 RPC 호출을 전달할 수 있습니다. 그러나 다음 그래프와 같이 동일한 Prysm 노드가 여러 Hermes 인스턴스에 연결될 수 있어 배포 요구 사항을 줄일 수 있습니다.
Hermes는 다양한 데이터 소비자 또는 데이터 스트림을 지원하도록 확장되었습니다. 모든 이벤트 추적을 어딘가에 지속적으로 저장해야 하므로 도구는 세 가지 옵션을 제공합니다:
- AWS Kinesis(우리의 배포)
- Xatu 콜백(EF에서 사용)
- stdout으로의 추적 로거(로컬 개발 테스트용)
이 도구를 사용하거나 다른 네트워크 또는 데이터 스트림을 지원하도록 업그레이드하는 데 관심이 있다면 저희에게 연락해 주시기 바랍니다.
Hermes가 수집하는 데이터
Hermes는 네트워크의 다른 노드들과 안정적인 연결을 유지하므로 libp2p와 GossipSub가 실제로 어떻게 작동하는지에 대한 디버깅 추적을 내보낼 수 있습니다.
Hermes는 libp2p 호스트와 GossipSub 프로토콜에서 다음과 같은 정보를 기본적으로 수집합니다:
- libp2p 호스트의 연결 및 연결 해제
- GossipSub 제어 메시지:
- 다른 노드의 주제 구독
GRAFT및PRUNE제어 메시지- GossipSub 피어 점수
IHAVE및IWANT제어 메시지- 최근
IDONTWANT제어 메시지
- 보낸 및 받은 메시지
- 프로토콜 RPC
이는 특정 네트워크에서 GossipSub의 동작을 광범위하게 다루는 매우 귀중한 데이터 세트입니다. 비교적 간단한 데이터 분석으로 매우 중요한 지표를 밝혀낼 수 있으며, 프로토콜의 건강한(또는 그렇지 않은) 작동 상태를 엔지니어에게 알려줄 수 있습니다. GossipSub가 블록체인 네트워크의 블록 전파 프로토콜로 사용되는 경우, 이러한 지표에 대한 깊이 있는 통찰력은 매우 중요합니다!
지금까지 어떻게 사용했나요
Hermes는 ProbeLab 팀이 이더리움 네트워크에서 GossipSub 작동에 대한 광범위한 연구를 수행하는 데 도움이 되었습니다. 관련 ethresear.ch 게시물의 링크는 다음과 같습니다:
- 이더리움의 GossipSusb 네트워크에서 IWANT/IHAVE 효과성
- GRAFT와 PRUNE을 통한 GossipSub 네트워크 동적성
- 이더리움의 GossipSub 네트워크에서 중복 메시지 수
- 이더리움 노드 메시지 전파 대역폭 소비
- GossipSub 메시지 전파 지연 시간
또한 이를 통해 GossipSub의 작동에서 버그를 발견했고 IDONTWANT 메시지 채택의 필요성에 대한 증거를 제공했습니다.
향후 계획 및 기여 방법
Hermes는 오픈 소스이며 GitHub 리포지토리는 다음과 같습니다: GitHub - probe-lab/hermes: A Gossipsub listener and tracer.. GitHub 이슈를 통해 커뮤니티와 논의하고 기능 요청을 받으며 피드백을 듣습니다. 또한 도구를 개선하고 기능을 추가하거나 다른 네트워크를 지원하기 위한 Pull Request도 환영합니다. 다른 네트워크의 데이터에 관심이 있고 Hermes가 해당 네트워크를 지원하기를 원하시면





