BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
Trang chủ
AI AI
Tin nhanh
Bài viết
Sự kiện
BlockBeats Pro
Thêm
Thông tin tài chính
Chuyên đề
Hệ sinh thái chuỗi khối
Mục nhập
Podcast
Data
OPRR
Partnered With:

Tìm hiểu mạng P2P của Ethereum

Đọc bài viết này mất 15 phút
Từ những năm 1990, công nghệ P2P đã được sử dụng bởi các phần mềm nổi tiếng như eMule, bitTorrent và Skype; nó cũng là thành phần cốt lõi của Bitcoin và Ethereum. Vậy chính xác thì mạng P2P là gì?

Tiêu đề gốc: "Tìm hiểu mạng P2P của Ethereum"
Nguồn gốc: Những người đam mê Ethereum


Bài viết này nhằm mục đích giúp bạn hiểu về mạng P2P và giải thích một số chi tiết triển khai của Ethereum. Công nghệ P2P tận dụng nguồn tài nguyên phong phú của các thiết bị đầu cuối để giảm bớt những thiếu sót của hệ thống tập trung và từ những năm 1990, công nghệ này đã được áp dụng bởi các phần mềm nổi tiếng như eMule, bitTorrent và Skype. Công nghệ P2P cũng là thành phần cốt lõi của hệ thống chuỗi khối Bitcoin hoặc Ethereum (Dự án Shyft Network của chúng tôi có nguồn gốc từ các chuỗi khối này). Nhiều người đã nghe nói đến P2P nhưng chưa biết nó là gì. Vì vậy, hãy bắt đầu bằng cách hiểu mạng P2P là gì.

Mạng P2P là gì?


Mạng ngang hàng (P2P) là mạng lớp phủ - nghĩa là nó được xây dựng trên On Internet công cộng. Từ quan điểm toán học, mạng P2P có thể được coi là đồ thị có hướng G = (V, E), trong đó V là tập hợp các nút ngang hàng trong mạng và E là tập hợp các cạnh được kết nối bởi các nút ngang hàng ( cũng tức là tập hợp các kết nối giữa các nút). Mỗi nút ngang hàng p có một số nhận dạng pid duy nhất. Một cạnh (p, q) trong tập E có nghĩa là p có thể gửi tin nhắn đến q thông qua đường dẫn được kết nối trực tiếp; nghĩa là p gửi tin nhắn đến q qua mạng bằng cách sử dụng pid của q làm địa chỉ đích. Mặc dù các địa chỉ IP tương tự có thể chuyển thành khoảng cách địa lý với nhau trong mạng TCP/IP cơ bản nhưng hiếm khi có mối tương quan trực tiếp rõ ràng như vậy.




Lý tưởng nhất là nên có một đường dẫn kết nối tất cả các nút ngang hàng. Nhưng vì mỗi nút chỉ có cái nhìn không đầy đủ về cấu trúc liên kết mạng và các nút ngang hàng khác nên lớp phủ mạng yêu cầu các nút trung gian chuyển tiếp tin nhắn đến đích chính xác. Cấu trúc của biểu đồ cung cấp nhiều đường dẫn trung gian cho mỗi cặp nút, do đó cung cấp khả năng phục hồi mạng thông qua kết nối biểu đồ ngay cả khi các nút ngang hàng thay đổi. Đối với mỗi nút ngang hàng, khả năng kết nối của biểu đồ được phản ánh bởi mối quan hệ kề cận của nó với các nút ngang hàng khác. Khi các đồng nghiệp tham gia hoặc rời khỏi mạng, các đồng nghiệp lân cận có thể chứa thông tin lân cận không chính xác. Do đó, cơ chế bảo trì lớp phủ mạng được sử dụng để lưu thông tin lân cận được cập nhật để duy trì kết nối giữa tất cả các nút.



Những người tham gia mạng P2P cung cấp một số tài nguyên cho những người tham gia mạng khác. Không cần có bộ điều phối tập trung và mỗi nút ngang hàng đóng góp các chu trình tính toán (CPU), bộ lưu trữ đĩa và băng thông mạng. Trong mô hình máy khách-máy chủ truyền thống, máy chủ cung cấp tài nguyên và máy khách sử dụng tài nguyên; ngược lại, trong mạng P2P, các nút ngang hàng vừa là nhà cung cấp vừa là người tiêu dùng tài nguyên mạng. Do đó, mạng P2P có thể giải quyết tốt một số thiếu sót của mô hình máy khách-máy chủ, chẳng hạn như khả năng mở rộng và các điểm lỗi đơn lẻ.



Nói chung, mạng P2P sẽ có một ngưỡng và mức đóng góp tài nguyên của nút phải cao hơn ngưỡng này ngưỡng để có thể Tham gia mạng. Tiêu chuẩn đo lường sự đóng góp tài nguyên phải công bằng. Ví dụ: yêu cầu đóng góp trung bình của mỗi nút ngang hàng trong mạng phải nằm trong phạm vi thống kê của mức trung bình tổng thể của hệ thống P2P. Đóng góp nguồn lực phải mang lại lợi ích chung cho cả hai bên. Những lợi ích có thể nhận được sau khi đóng góp sẽ thu hút người dùng tham gia các ứng dụng P2P.

Mạng P2P của Ethereum hoạt động như thế nào?


Phần mềm nút máy khách chính thức của Ethereum, Geth, đạt được tính năng ngang hàng dựa trên cơ chế bảo trì lớp phủ được gọi là bảng băm phân tán Kademlia. Giao thức khám phá nút ( Giao thức khám phá nút RLPx). Trong khi Kademlia được thiết kế để định vị và lưu trữ nội dung trong mạng P2P một cách hiệu quả thì mạng P2P của Ethereum chỉ sử dụng nó để khám phá các mạng ngang hàng mới.


Kademlia


Trong mạng Ethereum, mỗi nút máy khách được trang bị một ID enode, sau đó được băm thành giá trị 256-bit bằng thuật toán SHA3. Kademlia sử dụng phép toán XOR để xác định khoảng cách, do đó khoảng cách giữa hai số 256 bit là OR độc quyền theo bit của chúng. Mỗi nút ngang hàng có cấu trúc dữ liệu chứa 256 nhóm (nhóm) khác nhau và mỗi nhóm i lưu trữ 16 nút có khoảng cách từ 2i-1 đến 2i. Để khám phá một nút ngang hàng mới, nút Ethereum tự chọn mình làm mục tiêu x, tìm 16 nút gần nhất với mục tiêu x từ nhóm, sau đó yêu cầu 16 nút này tìm 16 nút từ nhóm riêng của chúng. nhắm mục tiêu x và quay trở lại, sao cho sẽ thu được tối đa 16x16 nút mới được phát hiện. Sau đó yêu cầu 16 nút gần nhất với mục tiêu x trong số các nút mới được phát hiện 16x16 và yêu cầu chúng trả lại 16 nút gần với x hơn. Quá trình này tiếp tục lặp đi lặp lại cho đến khi không tìm thấy nút mới nào.



-Sơ đồ hoạt động XOR-


-Sơ đồ nhóm tương ứng với khoảng cách-


Giao tiếp giữa các đồng nghiệp


Geth sử dụng kết nối UDP để trao đổi thông tin cho mạng P2P. Có 4 loại tin nhắn UDP. Tin nhắn **ping** yêu cầu trả lại tin nhắn **pong**. Cặp tin nhắn này được sử dụng để xác định xem các nút lân cận có thể phản hồi hay không. Đổi lại, một thông báo **findnode** yêu cầu một thông báo **hàng xóm** (chứa danh sách 16 nút đã được biết đến với nút phản hồi). Sau khi kết nối ngang hàng được thiết lập, các nút Geth sẽ trao đổi thông tin blockchain qua kết nối TCP được mã hóa và xác thực.




Cấu trúc dữ liệu


Ứng dụng khách Geth sử dụng hai cấu trúc dữ liệu để lưu trữ thông tin về các nút khác. Đầu tiên là cơ sở dữ liệu dài hạn có tên là db, được lưu trữ trên đĩa và tồn tại trong suốt quá trình khởi động lại máy khách. DB chứa thông tin về từng nút mà máy khách đã tương tác. Mỗi bản ghi trong db chứa ID nút, địa chỉ IP, cổng TCP, cổng UDP, lần cuối cùng (máy khách này) gửi ping đến nút (trong bản ghi), lần cuối cùng nhận được một pong từ nút và nút đã phản hồi số lần thất bại của thông báo findnode. Nếu tin nhắn pong cuối cùng nhận được từ một nút cách đây hơn một ngày, nút đó sẽ bị chuyển ra khỏi db.


Cấu trúc dữ liệu thứ hai là cơ sở dữ liệu ngắn hạn được gọi là bảng. Bảng trống khi máy khách khởi động lại. Bảng chứa 256 nhóm, mỗi nhóm lưu trữ tối đa 16 bản ghi. Mỗi bản ghi lưu trữ thông tin về các nút Ethereum khác—ID, địa chỉ IP, cổng TCP và cổng UDP của nút. Nếu một nút trong bản ghi không phản hồi liên tục các tin nhắn findnode hơn 4 lần, nút đó sẽ bị xóa khỏi bảng.

Khi máy khách khởi động lần đầu tiên, db của nó trống và chỉ biết 6 nút khởi động được mã hóa cứng. . Sau đó, khi máy khách bắt đầu khám phá các nút ngang hàng, máy khách sẽ thêm các nút vào db và bảng theo cơ chế được mô tả ở trên.

Nếu muốn đọc thêm về mạng Ethereum P2P, bạn có thể xem các bài viết sau do các thành viên cộng đồng Ethereum đóng góp:

"Giao thức khám phá nút RLPx" của Felix Lange, Gustav-Simmonsson và Roman Mandeleil
"Peer to Peer" của Felix Lange
「Lựa chọn ngang hàng Kademlia」 của James Ray


Tham khảo:

Vasilios Darlagiannis, (2010). Hệ thống P2P và Mạng lớp phủ, [tệp PDF] Được lấy từ: https:/ /www.iti.gr/iti/files/document/seminars/p2p_eketa_090610_v2.pdf

S. Umamaheswari và Tiến sĩ V. Leela, (2011, ngày 01 tháng 3). Thuật toán bảo trì lớp phủ P2P, [tệp PDF ] Lấy từ: http://journals.sagepub.com/doi/pdf/10.1260/1748-3018.6.3.555

(End)


Link gốc: https://medium.com/shyft-network-media/under Hiểu-ethereums-p2p-network-86eeaa3345
Tác giả: Larry Hu
Dịch và hiệu đính: haiki & ; Ajian


Liên kết nguồn: https://ethfans.org/posts/under Hiểu-ethereums-p2p-network



Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:

Nhóm Telegram đăng ký: https://t.me/theblockbeats

Nhóm Telegram thảo luận: https://t.me/BlockBeats_App

Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia

举报 Báo lỗi/Báo cáo
Chọn thư viện
Thêm mới thư viện
Hủy
Hoàn thành
Thêm mới thư viện
Chỉ mình tôi có thể nhìn thấy
Công khai
Lưu
Báo lỗi/Báo cáo
Gửi