Nhóm ProbeLab vui mừng thông báo về Hermes, được xây dựng chủ yếu bởi @dennis-tra và @cortze. Hermes là một trình nghe và truy vết GossipSub cho các mạng dựa trên libp2p. Chúng tôi hy vọng rằng công cụ này sẽ được cộng đồng sử dụng rộng rãi và có thêm nhiều tính năng và hỗ trợ cho các mạng khác.
Hermes là gì và bạn có thể làm gì với nó
Hermes hoạt động như một nút nhẹ và kết nối với các thành viên khác trong mạng. Nó dựa vào một nút địa phương đáng tin cậy để đảm bảo chúng tôi có thể trả lời bất kỳ yêu cầu đến và duy trì các kết nối ổn định.
Các thử nghiệm dựa trên Hermes nhằm đo lường hiệu quả và hiệu suất của giao thức phát sóng GossipSub trong bất kỳ mạng dựa trên libp2p nào. Hermes có thể giúp các nhà phát triển điều chỉnh các giao thức mạng của họ dựa trên độ trễ lan truyền tin nhắn và kiểm soát lưu lượng tin nhắn.
Công cụ này hiện hỗ trợ bất kỳ mạng Ethereum nào (ở Lớp Consensus), mặc dù sẽ có thêm nhiều mạng được hỗ trợ trong tương lai.
Nó hoạt động như thế nào
Các thành phần
Hermes hoạt động như một thành phần duy nhất, nút nhẹ, cho mỗi mạng nó được triển khai. Tuy nhiên, nó có hai yêu cầu chính để hoạt động: 1) một nút địa phương đáng tin cậy sẽ cung cấp quan điểm đúng về trạng thái của chuỗi và 2) một người tiêu thụ sự kiện sẽ nhận tất cả các vết tích libp2p và lưu trữ chúng. Nút nhẹ chịu trách nhiệm khám phá các ngang hàng, duy trì các kết nối với họ và theo dõi các sự kiện nội bộ tại máy chủ libp2p.
Nút nhẹ
Hermes hoạt động như một nút libp2p tiêu chuẩn, khám phá và kết nối với mạng trong khi hỗ trợ tất cả các giao thức libp2p để đảm bảo giao tiếp đáng tin cậy và an toàn. Nó kết nối với một nút địa phương đáng tin cậy, hoặc từ xa cho một số RPC cần thông tin trạng thái chuỗi, tận dụng những nguồn đáng tin cậy này để tăng cường khả năng của nó.
Hermes đăng ký tất cả các chủ đề GossipSub có sẵn, cho phép nó nhận toàn diện, tiết lộ và truy vết tất cả các tương tác với mạng. Điều này cho phép công cụ theo dõi hoạt động mạng một cách hiệu quả.
Ngoài ra, Hermes có thể gửi các vết tích này đến bất kỳ người tiêu thụ được xác định nào, với sự hỗ trợ hiện tại cho AWS Kinesis và Xatu từ Quỹ Ethereum (EF). Tính năng này tạo điều kiện cho việc tích hợp dữ liệu mạng với các công cụ phân tích và giám sát, giúp tăng cường an ninh và chức năng tổng thể của mạng.
Triển khai
Hermes được phát triển để chạy liên tục. Tuy nhiên, để tăng tính ổn định của kết nối của nút nhẹ, nút phải phản hồi thành công các cuộc gọi RPC định hướng chuỗi mà các ngang hàng từ xa có thể yêu cầu. Vì Hermes được thiết kế để không phụ thuộc vào chuỗi, chúng tôi phải dựa vào một nút đáng tin cậy bên ngoài để cung cấp thông tin đó.
Hermes phải được ghép nối với một máy khách chuỗi: trong trường hợp của chúng tôi và đối với Lớp Consensus của Ethereum, chúng tôi đã sử dụng Prysm. Cung cấp cho Hermes API HTTP và các điểm cuối gRPC của máy chủ, Hermes có thể tự thêm mình vào "danh sách trắng", để sau đó chuyển tiếp hầu hết các cuộc gọi RPC liên quan đến chuỗi hoặc trạng thái. Tuy nhiên, cùng một nút Prysm có thể được kết nối với nhiều phiên bản Hermes như biểu đồ sau đây cho thấy, điều này giúp giảm các yêu cầu triển khai.
Hermes đã được mở rộng để hỗ trợ một tập hợp khác nhau các người tiêu thụ dữ liệu hoặc luồng dữ liệu. Vì tất cả các vết tích sự kiện cần được lưu trữ ở đâu đó, công cụ này cung cấp ba tùy chọn khác nhau:
- AWS Kinesis (triển khai của chúng tôi)
- Xatu callbacks (được EF sử dụng)
- Trình ghi nhật ký vết tích ra stdout (để phát triển cục bộ)
Nếu bạn quan tâm đến việc sử dụng hoặc nâng cấp công cụ để hỗ trợ các mạng hoặc luồng dữ liệu khác, liên hệ với chúng tôi.
Hermes thu thập dữ liệu gì
Khi Hermes duy trì các kết nối ổn định với các nút mạng khác, nó có thể phát ra các vết tích gỡ lỗi về cách libp2p và GossipSub hoạt động trong thực tế.
Hermes thu thập các thông tin sau đây ngay từ đầu từ máy chủ libp2p và giao thức GossipSub:
- Các kết nối và ngắt kết nối từ máy chủ libp2p
- Các tin nhắn điều khiển GossipSub:
- Các đăng ký từ các nút khác vào các chủ đề
- Các tin nhắn điều khiển
GRAFTvàPRUNE - Điểm số ngang hàng GossipSub
- Các tin nhắn điều khiển
IHAVEvàIWANT - Các tin nhắn điều khiển
IDONTWANTgần đây
- Tin nhắn đã gửi và nhận
- Các RPC giao thức
Đây là một tập hợp dữ liệu rất có giá trị, vì nó bao phủ một diện tích lớn về hành vi của Gossipsub trong một mạng nhất định. Phân tích dữ liệu tương đối đơn giản có thể tiết lộ các chỉ số rất quan trọng và thông báo cho các kỹ sư về hoạt động lành mạnh (hoặc không) của giao thức. Trong những trường hợp mà Gossipsub phục vụ như giao thức truyền bá khối của một mạng blockchain, có những hiểu biết sâu sắc về các chỉ số này là rất quan trọng!
Chúng tôi đã sử dụng nó như thế nào cho đến nay
Hermes đã giúp nhóm ProbeLab thực hiện một nghiên cứu toàn diện về hoạt động của Gossipsub trên mạng Ethereum. Dưới đây là các liên kết đến các bài đăng ethresear.ch liên quan:
- Hiệu quả của Gossip IWANT/IHAVE trong mạng Gossipsusb của Ethereum
- Tính động của mạng Gossipsub thông qua GRAFTS và PRUNES
- Số lượng tin nhắn trùng lặp trong mạng Gossipsub của Ethereum
- Tiêu thụ băng thông truyền bá tin nhắn của nút Ethereum
- Độ trễ truyền bá tin nhắn Gossipsub
Hơn nữa, nó đã giúp phát hiện lỗi trong hoạt động của Gossipsub trên các triển khai và cung cấp bằng chứng hỗ trợ về nhu cầu áp dụng tin nhắn IDONTWANT.
Kế hoạch tương lai & cách đóng góp
Hermes là mã nguồn mở - kho lưu trữ Github của nó là: GitHub - probe-lab/hermes: A Gossipsub listener and tracer.. Chúng tôi chào đón các Github Issues để thảo luận với cộng đồng, nhận yêu cầu tính năng và nghe ph





