tek4

Peer to Peer Network nền tảng mạng ngang hàng của Blockchain

by - September. 21, 2021
Kiến thức
<p style="text-align: justify;">Kiến tr&uacute;c mạng Peer to Peer l&agrave; một trong những nền tảng cơ bản trong c&ocirc;ng nghệ Blockchain. Kiến tr&uacute;c phi tập trung của c&aacute;c mạng Peer to Peer gi&uacute;p cho <a href="https://tek4.vn/blockchain-co-ban/">blockchain</a> c&oacute; thể hoạt động li&ecirc;n tục m&agrave; kh&ocirc;ng cần sự kiểm so&aacute;t trung gian. B&agrave;i viết n&agrave;y sẽ trả lời cho c&aacute;c c&acirc;u hỏi mạng Peer to Peer l&agrave; g&igrave;? Cơ chế hoạt động của n&oacute; ra sao, tại sao n&oacute; lại được ứng dụng trong c&ocirc;ng nghệ blockchain ?</p> <h2>Mạng Peer to Peer l&agrave; g&igrave;?</h2> <p style="text-align: justify;">Peer to Peer Network (c&ograve;n được gọi l&agrave; mạng ngang h&agrave;ng, hoặc mạng đồng đẳng), l&agrave; một kiến tr&uacute;c ứng dụng ph&acirc;n t&aacute;n trong đ&oacute; hoạt động của mạng chủ yếu dựa v&agrave;o khả năng t&iacute;nh to&aacute;n v&agrave; băng th&ocirc;ng của c&aacute;c m&aacute;y tham gia chứ kh&ocirc;ng tập trung v&agrave;o một số nhỏ c&aacute;c m&aacute;y chủ trung t&acirc;m như c&aacute;c mạng th&ocirc;ng thường (kiểu client - server). Trong c&aacute;c mạng Peer to Peer kh&ocirc;ng c&oacute; kh&aacute;i niệm m&aacute;y chủ v&agrave; m&aacute;y kh&aacute;ch, n&oacute;i c&aacute;ch kh&aacute;c, tất cả c&aacute;c m&aacute;y tham gia đều b&igrave;nh đẳng v&agrave; được gọi l&agrave; peer, đ&acirc;y l&agrave; một n&uacute;t mạng vừa đồng thời đ&oacute;ng vai tr&ograve; l&agrave; m&aacute;y kh&aacute;ch v&agrave; vừa đồng thời đ&oacute;ng vai tr&ograve; l&agrave; m&aacute;y chủ đối với c&aacute;c m&aacute;y kh&aacute;c trong mạng. Trong c&aacute;c m&ocirc; h&igrave;nh kh&aacute;ch -&nbsp; chủ chẳng hạn như hệ thống truyền tệp sử dụng FTP th&igrave; c&aacute;c chương tr&igrave;nh m&aacute;y kh&aacute;ch v&agrave; m&aacute;y chủ l&agrave; kh&aacute;c nhau: m&aacute;y kh&aacute;ch thực hiện chuyển y&ecirc;u cầu v&agrave; m&aacute;y chủ đ&aacute;p ứng c&aacute;c y&ecirc;u cầu n&agrave;y. Trong khi với hệ thống truyền tệp như BitTorrent th&igrave; bất cứ m&aacute;y n&agrave;o trong mạng cũng c&oacute; thể gửi cũng như đ&aacute;p ứng y&ecirc;u cầu cho c&aacute;c m&aacute;y kh&aacute;c.</p> <p><img style="width: 565px; display: block; margin-left: auto; margin-right: auto;" src="https://tek4.vn/public_files/8c8f28ee-8ec0-4b53-b367-7b1f81947dbc" alt="peer-to-peer-network" height="335" /></p> <p style="text-align: justify;">C&aacute;c n&uacute;t trong mạng ngang h&agrave;ng đ&oacute;ng g&oacute;p một phần t&agrave;i nguy&ecirc;n cho hoạt động của mạng, chẳng hạn như sức mạnh xử l&yacute;, dung lượng lưu trữ tr&ecirc;n ổ đĩa hoặc băng th&ocirc;ng cho mạng. C&aacute;c n&uacute;t vừa l&agrave; người cung cấp vừa l&agrave; người sử dụng t&agrave;i nguy&ecirc;n, tr&aacute;i ngược với m&ocirc; h&igrave;nh m&aacute;y kh&aacute;ch-m&aacute;y chủ truyền thống trong đ&oacute; việc ti&ecirc;u thụ v&agrave; cung cấp t&agrave;i nguy&ecirc;n được ph&acirc;n chia ri&ecirc;ng biệt giữa hai ph&iacute;a. Điều n&agrave;y gi&uacute;p mang lại lợi &iacute;ch cho to&agrave;n bộ c&aacute;c th&agrave;nh vi&ecirc;n tham gia.</p> <p style="text-align: justify;">C&aacute;c mạng Peer to Peer thực chất l&agrave; một c&ocirc;ng nghệ kh&ocirc;ng mới. Phi&ecirc;n bản ứng dụng phổ biến đầu ti&ecirc;n của n&oacute; l&agrave; mạng lưới chia sẻ nhạc Napster với thời kỳ đỉnh cao c&oacute; đến hơn 80 triệu người d&ugrave;ng, nhưng sau đ&oacute; đ&atilde; bị đ&oacute;ng cửa v&igrave; l&iacute; do ph&aacute;p l&iacute; v&agrave;o năm 2001. C&aacute;c hệ thống Peer to Peer vẫn rất phổ biến hiện nay với hệ thống chia sẻ file ngang h&agrave;ng BitTorrent. Mạng ngang h&agrave;ng c&oacute; nhiều ứng dụng. Ứng dụng thường xuy&ecirc;n gặp nhất l&agrave; chia sẻ tệp tin như &acirc;m thanh, h&igrave;nh ảnh, dữ liệu,... hoặc để truyền dữ liệu thời gian thực như điện thoại VoIP. Tuy nhi&ecirc;n, kh&ocirc;ng dừng lại ở đ&oacute;, kh&aacute;i niệm n&agrave;y đ&atilde; truyền cảm hứng cho c&aacute;c cấu tr&uacute;c v&agrave; triết l&yacute; mới trong nhiều lĩnh vực tương t&aacute;c của con người. N&oacute; tạo ra một hệ thống mạng x&atilde; hội b&igrave;nh đẳng, được k&iacute;ch hoạt bởi c&aacute;c c&ocirc;ng nghệ Internet. V&agrave; hiện nay điều đ&oacute; đang được hiện thực ho&aacute; trong c&aacute;c mạng lưới blockchain.</p> <h2>Kiến tr&uacute;c mạng ngang h&agrave;ng</h2> <p style="text-align: justify;">C&aacute;c mạng ngang h&agrave;ng thường triển khai một số dạng mạng lớp phủ ảo tr&ecirc;n cấu tr&uacute;c mạng vật l&yacute;, trong đ&oacute; c&aacute;c n&uacute;t trong lớp phủ tạo th&agrave;nh một tập hợp con của c&aacute;c n&uacute;t trong mạng vật l&yacute;. Dữ liệu vẫn được trao đổi trực tiếp qua mạng TCP/IP b&ecirc;n dưới, nhưng ở c&aacute;c lớp ứng dụng, c&aacute;c n&uacute;t c&oacute; thể giao tiếp trực tiếp với nhau, th&ocirc;ng qua c&aacute;c li&ecirc;n kết lớp phủ logic (mỗi li&ecirc;n kết tương ứng với một đường dẫn qua mạng vật l&yacute; b&ecirc;n dưới). Lớp phủ được sử dụng để lập chỉ mục v&agrave; kh&aacute;m ph&aacute; c&aacute;c n&uacute;t ngang h&agrave;ng, v&agrave; l&agrave;m cho hệ thống P2P độc lập với cấu tr&uacute;c li&ecirc;n kết mạng vật l&yacute;. Dựa tr&ecirc;n c&aacute;ch c&aacute;c n&uacute;t được li&ecirc;n kết với nhau trong mạng lớp phủ v&agrave; c&aacute;ch c&aacute;c t&agrave;i nguy&ecirc;n được lập chỉ mục v&agrave; định vị, ch&uacute;ng ta c&oacute; thể ph&acirc;n loại c&aacute;c mạng l&agrave; kh&ocirc;ng c&oacute; cấu tr&uacute;c, c&oacute; cấu tr&uacute;c, hoặc hỗn hợp.</p> <h3 style="text-align: justify;">Mạng peer to peer kh&ocirc;ng c&oacute; cấu tr&uacute;c</h3> <p style="text-align: justify;">C&aacute;c mạng ngang h&agrave;ng kh&ocirc;ng c&oacute; cấu tr&uacute;c kh&ocirc;ng sử dụng một cấu tr&uacute;c cụ thể n&agrave;o tr&ecirc;n mạng lớp phủ theo thiết kế, m&agrave; c&aacute;c li&ecirc;n kết tr&ecirc;n mạng được tạo ngẫu nhi&ecirc;n, c&aacute;c n&uacute;t tham gia giao tiếp ngẫu nhi&ecirc;n với nhau.</p> <p><img style="width: 589px; display: block; margin-left: auto; margin-right: auto;" src="https://tek4.vn/public_files/4170ea26-8cd9-4174-85f2-329c68e28261" alt="peer-to-peer-khong-cau-truc" height="534" /></p> <p style="text-align: justify;">Do kh&ocirc;ng c&oacute; cấu tr&uacute;c cố định, n&ecirc;n c&aacute;c mạng kh&ocirc;ng c&oacute; cấu tr&uacute;c rất dễ x&acirc;y dựng v&agrave; cho ph&eacute;p tối ưu h&oacute;a cục bộ đến c&aacute;c khu vực kh&aacute;c nhau của lớp phủ. Ngo&agrave;i ra, do vai tr&ograve; của tất cả c&aacute;c n&uacute;t trong mạng l&agrave; như nhau, n&ecirc;n c&aacute;c mạng kh&ocirc;ng c&oacute; cấu tr&uacute;c rất mạnh mẽ v&agrave; mềm dẻo. N&oacute; c&oacute; thể dễ d&agrave;ng xử l&yacute; c&aacute;c vấn đề về t&iacute;nh kh&ocirc;ng ổn định của mạng khi c&aacute;c n&uacute;t thường xuy&ecirc;n tham gia v&agrave; rời khỏi mạng với tần suất cao.</p> <p style="text-align: justify;">Tuy nhi&ecirc;n, những hạn chế ch&iacute;nh của mạng kh&ocirc;ng c&oacute; cấu tr&uacute;c cũng ph&aacute;t sinh từ sự thiếu cấu tr&uacute;c n&agrave;y. Cụ thể, do c&aacute;c n&uacute;t kh&ocirc;ng cố định v&igrave; vậy, khi một n&uacute;t tham gia muốn t&igrave;m một phần dữ liệu mong muốn n&agrave;o đ&oacute; trong mạng, n&oacute; sẽ phải thực hiện c&aacute;c truy vấn t&igrave;m kiếm tr&agrave;n qua to&agrave;n mạng để t&igrave;m ra c&agrave;ng nhiều n&uacute;t để chia sẻ dữ liệu c&agrave;ng tốt. Điều n&agrave;y c&oacute; thể dẫn đến vấn đề ngập lụt lưu lượng băng th&ocirc;ng tr&ecirc;n mạng, cũng như sử dụng hao tổn nhiều t&agrave;i nguy&ecirc;n CPU hoặc bộ nhớ hơn. Sỡ dĩ như vậy bởi n&oacute; y&ecirc;u cầu mọi n&uacute;t ngang h&agrave;ng phải xử l&yacute; tất cả c&aacute;c truy vấn. Hơn nữa, v&igrave; kh&ocirc;ng c&oacute; mối tương quan giữa một n&uacute;t v&agrave; nội dung được quản l&yacute; bởi n&oacute;, do đ&oacute;, kh&ocirc;ng c&oacute; g&igrave; đảm bảo rằng việc truy vấn to&agrave;n mạng sẽ t&igrave;m thấy được một n&uacute;t c&oacute; dữ liệu mong muốn. Điềy n&agrave;y kh&ocirc;ng phải vấn đề qu&aacute; lớn với c&aacute;c nội dung phổ biến, bởi n&oacute; sẽ thường c&oacute; sẵn ở một số n&uacute;t v&agrave; do đ&oacute; c&oacute; thể dễ d&agrave;ng được t&igrave;m thấy. Điều n&agrave;y thực ra kh&ocirc;ng phải l&agrave; vấn đề lớn tr&ecirc;n c&aacute;c mạng lưới blockchain ngang h&agrave;ng, bởi to&agrave;n bộ c&aacute;c n&uacute;t thường duy tr&igrave; một phi&ecirc;n bản cơ sở dữ liệu thống nhất duy nhất để x&aacute;c thực v&igrave; vậy dữ liệu c&oacute; thể được dễ d&agrave;ng t&igrave;m thấy với tốc độ tương đối cao. Tuy nhi&ecirc;n, với c&aacute;c dữ liệu hiếm được chia sẻ trong c&aacute;c dịch vụ chia sẽ file ngang h&agrave;ng, th&igrave; việc t&igrave;m kiếm sẽ rất phức tạp v&agrave; c&oacute; khả năng kh&ocirc;ng th&agrave;nh c&ocirc;ng rất cao.</p> <p>&nbsp;</p> <h3 style="text-align: justify;">Mạng peer to peer c&oacute; cấu tr&uacute;c</h3> <p style="text-align: justify;">Trong c&aacute;c mạng ngang h&agrave;ng c&oacute; cấu tr&uacute;c, lớp phủ được tổ chức th&agrave;nh một cấu tr&uacute;c li&ecirc;n kết cụ thể v&agrave; c&aacute;c giao thức được thiết kế để đảm bảo rằng bất kỳ n&uacute;t n&agrave;o cũng c&oacute; thể truy vấn v&agrave; t&igrave;m kiếm mạng cũng như c&aacute;c tệp t&agrave;i nguy&ecirc;n tr&ecirc;n mạng một c&aacute;ch hiệu quả, ngay cả khi t&agrave;i nguy&ecirc;n đ&oacute; cực kỳ hiếm.</p> <p><img style="width: 614px; display: block; margin-left: auto; margin-right: auto;" src="https://tek4.vn/public_files/cd2b401d-85bf-4a1c-bb58-1169c3e673b4" alt="Mạng-peer-to-peer_c&oacute;-cấu-tr&uacute;c" height="489" /></p> <p>&nbsp;</p> <p style="text-align: justify;">Loại mạng P2P c&oacute; cấu tr&uacute;c phổ biến nhất thực hiện bảng băm ph&acirc;n t&aacute;n (DHT), trong đ&oacute; mỗi n&uacute;t duy tr&igrave; một bảng băm lưu trữ c&aacute;c gi&aacute; trị được sử dụng để định danh v&agrave; g&aacute;n quyền sở hữu của dữ liệu cho một n&uacute;t cụ thể chứa n&oacute;. Điều n&agrave;y cho ph&eacute;p c&aacute;c n&uacute;t t&igrave;m kiếm t&agrave;i nguy&ecirc;n tr&ecirc;n mạng rất nhanh ch&oacute;ng bằng c&aacute;ch sử dụng bảng băm: nghĩa l&agrave;, c&aacute;c cặp (kh&oacute;a, gi&aacute; trị) được lưu trữ trong DHT v&agrave; bất kỳ n&uacute;t tham gia n&agrave;o cũng c&oacute; thể truy xuất gi&aacute; trị được li&ecirc;n kết với một kh&oacute;a đ&atilde; cho một c&aacute;ch hiệu quả.</p> <p style="text-align: justify;">Tuy nhi&ecirc;n, để định tuyến lưu lượng truy cập hiệu quả trong mạng, c&aacute;c n&uacute;t trong mạng sẽ phải lưu trữ v&agrave; duy tr&igrave; danh s&aacute;ch c&aacute;c h&agrave;ng x&oacute;m thỏa m&atilde;n c&aacute;c ti&ecirc;u ch&iacute; cụ thể. Điều n&agrave;y l&agrave;m cho ch&uacute;ng k&eacute;m hiệu quả trong c&aacute;c m&ocirc; h&igrave;nh mạng thiếu ổn định với số lượng r&uacute;t tham gia v&agrave; rời khỏi thường xuy&ecirc;n.</p> <h3 style="text-align: justify;">Mạng peer to peer lai</h3> <p style="text-align: justify;">C&aacute;c m&ocirc; h&igrave;nh mạng peer to peer lai l&agrave; sự kết hợp giữa c&aacute;c m&ocirc; h&igrave;nh ngang h&agrave;ng v&agrave; m&ocirc; h&igrave;nh c&oacute; m&aacute;y chủ trung t&acirc;m truyền thống. Trong m&ocirc; h&igrave;nh n&agrave;y, c&oacute; một m&aacute;y chủ trung t&acirc;m đ&oacute;ng vai tr&ograve; duy tr&igrave; c&aacute;c cơ sở dữ liệu li&ecirc;n kết v&agrave; do đ&oacute; gi&uacute;p c&aacute;c n&uacute;t t&igrave;m thấy nhau dễ d&agrave;ng hơn. Một v&iacute; dụ về m&ocirc; h&igrave;nh lai c&oacute; thể kể đến dịch vụ Spotify trước đ&acirc;y. C&aacute;c mạng lai đ&aacute;nh đổi cấu tr&uacute;c phi tập trung, b&igrave;nh đẳng của c&aacute;c n&uacute;t được cung cấp trong mạng ngang h&agrave;ng thuần t&uacute;y với t&iacute;nh hiệu quả v&agrave; tốc độ của n&oacute;. Sự ph&acirc;n cấp gi&uacute;p c&aacute;c truy vấn v&agrave; qu&aacute; tr&igrave;nh t&igrave;m kiếm dữ liệu được diễn ra hiệu quả hơn.</p> <p style="text-align: justify;">Trong c&aacute;c mạng P2P tập trung, tồn tại một chỉ mục trung t&acirc;m được duy tr&igrave; ở một vị tr&iacute; duy nhất cố định chứa c&aacute;c th&ocirc;ng tin về vị tr&iacute; của c&aacute;c đối tượng, v&agrave; địa chỉ của c&aacute;c n&uacute;t trong mạng... C&aacute;c th&agrave;nh vi&ecirc;n tham gia t&igrave;m vị tr&iacute; của c&aacute;c t&agrave;i nguy&ecirc;n mong muốn trong mạng bằng c&aacute;ch truy vấn đến m&aacute;y chủ chỉ mục trung t&acirc;m. Cấu tr&uacute;c Peer to Peer n&agrave;y kh&ocirc;ng đ&aacute;p ứng được quy m&ocirc; mở rộng v&agrave; m&aacute;y chủ chỉ mục trung t&acirc;m c&oacute; thể bị tấn c&ocirc;ng hoặc hỏng h&oacute;c, gi&aacute;n đoạn, g&acirc;y ra gi&aacute;n đoạn hoạt động của to&agrave;n mạng.</p> <p><img style="width: 605px; display: block; margin-left: auto; margin-right: auto;" src="https://tek4.vn/public_files/1fe0a658-dbe3-44d3-a252-b337e5c5176a" alt="peer-to-peer-la-gi" height="321" /></p> <p style="text-align: justify;">Ngược lại với kiến tr&uacute;c tập trung, c&aacute;c P2P c&oacute; thể sử dụng cấu tr&uacute;c thư mục ph&acirc;n t&aacute;n. Trong đ&oacute; tồn tại nhiều hơn một trung t&acirc;m chỉ mục tập trung. C&aacute;c hệ thống n&agrave;y c&oacute; thể phi tập trung ho&agrave;n to&agrave;n như Gnutella trong đ&oacute; c&aacute;c n&uacute;t hoạt động ho&agrave;n to&agrave;n b&igrave;nh đẳng, tức l&agrave; đều chứa t&agrave;i nguy&ecirc;n v&agrave; cấu tr&uacute;c để truy vấn tr&ecirc;n mạng. Hoặc c&aacute;c hệ thống cũng c&oacute; thể c&oacute; kiến tr&uacute;c kết hợp, trong đ&oacute; một số n&uacute;t trong mạng đ&oacute;ng vai tr&ograve; duy tr&igrave; c&aacute;c cơ sở dữ liệu chỉ mục được gọi l&agrave; c&aacute;c n&uacute;t th&ocirc;ng b&aacute;o hay c&aacute;c "si&ecirc;u n&uacute;t" nhằm phục vụ c&aacute;c y&ecirc;u cầu t&igrave;m kiếm v&agrave; truy vấn t&agrave;i nguy&ecirc;n của c&aacute;c n&uacute;t th&ocirc;ng thường kh&aacute;c.</p> <p style="text-align: justify;">C&aacute;c kiến tr&uacute;c mạng n&agrave;y đều được sử dụng trong blockchain, tuỳ theo từng thiết kế về chức năng của blockchain đ&oacute;. Chẳng hạn c&aacute;c public blockchain đa phần đều c&oacute; t&iacute;nh chất phi tập trung v&agrave; kh&ocirc;ng c&oacute; n&uacute;t th&ocirc;ng b&aacute;o. Tuy nhi&ecirc;n, một số hệ thống blockchain vẫn c&oacute; những n&uacute;t tập trung để điều tiết dữ liệu chẳng hạn như IoTA,...</p> <p style="text-align: justify;">Dựa tr&ecirc;n c&aacute;c cấu tr&uacute;c mạng n&agrave;y v&agrave; sự ph&acirc;n quyền trong blockchain, ch&uacute;ng ta c&oacute; thể chia blockchain th&agrave;nh 3 loại: Blockchain c&ocirc;ng khai (Public blockchain), Blockchain ri&ecirc;ng tư (Private blockchain) v&agrave; Blockchain hợp t&aacute;c (Consortium blockchain), trong đ&oacute;:</p> <ul> <li style="text-align: justify;"><strong>Public blockchain:</strong> l&agrave; loại Blockchain m&agrave; bất kỳ ai cũng c&oacute; thể tham gia v&agrave; c&oacute; quyền đọc v&agrave; ghi dữ liệu.&nbsp;Điển h&igrave;nh cho loại Blockchain n&agrave;y l&agrave; c&aacute;c đồng tiền điện tử như Bitcoin, Ethereum&hellip; C&aacute;c n&uacute;t c&oacute; thể tham gia hoặc rời bỏ mạng v&agrave; mọi n&uacute;t tr&ecirc;n mạng l&agrave; độc lập ho&agrave;n to&agrave;n, kh&ocirc;ng hề c&oacute; n&uacute;t trung t&acirc;m kiểm so&aacute;t hoặc chứa c&aacute;c bảng định tuyến địa chỉ (ngo&agrave;i c&aacute;c seed node sẽ t&igrave;m hiểu ở phần tiếp theo). Việc x&aacute;c thực giao dịch tr&ecirc;n public blockchain diễn ra theo c&aacute;c cơ chế đồng thuận dựa tr&ecirc;n chứng minh (chẳng hạn như Proof of Work hay Proof of Stake) v&agrave; đ&ograve;i hỏi sự tham gia của nhiều n&uacute;t tr&ecirc;n mạng. Hệ thống Blockchain n&agrave;y được đ&aacute;nh gi&aacute; kh&aacute; an to&agrave;n do chi ph&iacute; cần thiết để thực hiện một vụ tấn c&ocirc;ng v&agrave;o hệ thống l&agrave; kh&aacute; cao v&agrave; cao hơn rất nhiều so với lợi &iacute;ch thu được khi tấn c&ocirc;ng th&agrave;nh c&ocirc;ng.</li> <li style="text-align: justify;"><strong>Private blockchain:</strong> Đ&acirc;y l&agrave; c&aacute;c mạng lưới blockchain m&agrave; trạng th&aacute;i của n&oacute; được quyết định bởi một hoặc một số hữu hạn c&aacute;c th&agrave;nh vi&ecirc;n tham gia. C&aacute;c th&agrave;nh vi&ecirc;n n&agrave;y được x&aacute;c thực danh t&iacute;nh v&agrave; thường biết v&agrave; tin cậy lẫn nhau tuyệt đối. C&aacute;c th&agrave;nh vi&ecirc;n n&agrave;y c&oacute; khả năng ghi dữ liệu v&agrave; quyết định trạng th&aacute;i hoạt động của blockchain. Ngo&agrave;i ra, những người d&ugrave;ng kh&aacute;c chỉ được quyền đọc dữ liệu, kh&ocirc;ng c&oacute; quyền ghi. Private blockchain được x&acirc;y dựng từ c&aacute;c nh&oacute;m th&agrave;nh vi&ecirc;n tin cậy lẫn nhau do đ&oacute;, n&oacute; thường sử dụng c&aacute;c cơ chế đồng thuận dựa tr&ecirc;n kh&aacute;ng lỗi Byzantine với thời gian x&aacute;c thực giao dịch kh&aacute; nhanh (v&igrave; chỉ cần một lượng nhỏ thiết bị tham gia v&agrave;o việc x&aacute;c thực). Ripple l&agrave; một dạng Private Blockchain, hệ thống n&agrave;y chỉ cần 80% c&aacute;c n&uacute;t hoạt động ổn định l&agrave; c&oacute; thể tiến h&agrave;nh giao dịch.</li> <li style="text-align: justify;"><strong>Permissioned:</strong> Hay c&ograve;n gọi l&agrave; Consortium, một dạng của Private blockchain nhưng bổ sung th&ecirc;m một số t&iacute;nh năng nhất định, kết hợp giữa "niềm tin" khi tham gia v&agrave;o Public blockchain v&agrave; "niềm tin tuyệt đối" khi tham gia v&agrave;o Private blockchain. Khi đ&oacute; c&aacute;c th&agrave;nh vi&ecirc;n tham gia sẽ được một nh&oacute;m c&aacute;c th&agrave;nh vi&ecirc;n kh&aacute;c x&aacute;c minh v&agrave; cấp quyền gia nhập mạng lưới. V&iacute; dụ: C&aacute;c ng&acirc;n h&agrave;ng hay tổ chức t&agrave;i ch&iacute;nh li&ecirc;n doanh sẽ sử dụng Blockchain cho ri&ecirc;ng m&igrave;nh.</li> </ul> <h2 style="text-align: justify;">Định tuyến trong mạng Peer to Peer</h2> <p style="text-align: justify;">Kiến tr&uacute;c mạng peer to peer được thiết kế dựa tr&ecirc;n c&aacute;c n&uacute;t ngang h&agrave;ng. C&aacute;c n&uacute;t n&agrave;y c&oacute; khả năng đồng thời hoạt động như cả "m&aacute;y kh&aacute;ch" v&agrave; "m&aacute;y chủ". Điều n&agrave;y tạo ra kh&oacute; khăn hơn trong c&aacute;c m&ocirc; h&igrave;nh truyền thống. Với c&aacute;c m&ocirc; h&igrave;nh truyền thống, m&aacute;y chủ thường c&oacute; địa chỉ cố định do đ&oacute;, một m&aacute;y kh&aacute;ch bất kỳ c&oacute; thể dễ d&agrave;ng truy vấn đến m&aacute;y chủ th&ocirc;ng qua địa chỉ IP của n&oacute; hoặc th&ocirc;ng qua một m&aacute;y chủ DNS định danh trung gian. Nhưng điều n&agrave;y kh&ocirc;ng tồn tại trong kiến tr&uacute;c mạng ngang h&agrave;ng. C&aacute;c n&uacute;t tham gia mạng P2P n&agrave;y c&oacute; thể tham gia hoặc rời khỏi hệ thống bất cứ l&uacute;c n&agrave;o, do đ&oacute;, c&aacute;c mạng P2P t&iacute;nh chất động v&agrave; kh&ocirc;ng ổn định cao.Trong mạng Peer to Peer c&oacute; 2 vấn đề quan trọng cốt l&otilde;i đ&oacute; l&agrave;: l&agrave;m thế n&agrave;o để c&aacute;c n&uacute;t c&oacute; thể t&igrave;m thấy được nhau v&agrave; l&agrave;m thế n&agrave;o c&oacute; thể ph&aacute;t t&aacute;n v&agrave; đồng bộ ho&aacute; dữ liệu ra to&agrave;n mạng.</p> <p><img style="width: 599px; display: block; margin-left: auto; margin-right: auto;" src="https://tek4.vn/public_files/6f40f3c0-f0e4-46e0-aaf6-bdb93f82f4bd" alt="Mạng-Peer-to-Peer-trong-blockchain-768x458" height="358" /></p> <p style="text-align: justify;">Chắc hẳn một trong những thắc mắc đầu ti&ecirc;n của ch&uacute;ng ta khi t&igrave;m hiểu về mạng Peer to Peer như BitTorrent hay Blockchain đ&oacute; l&agrave; l&agrave;m thế n&agrave;o để c&aacute;c n&uacute;t trong mạng c&oacute; thể t&igrave;m thấy được c&aacute;c n&uacute;t kh&aacute;c v&agrave; thậm ch&iacute; rộng hơn l&agrave; c&aacute;c t&agrave;i nguy&ecirc;n được chia sẻ kh&aacute;c ở tr&ecirc;n mạng.</p> <p style="text-align: justify;">Để l&agrave;m được điều n&agrave;y, c&aacute;c mạng peer to peer sử dụng hai cơ chế: t&igrave;m kiếm v&agrave; đ&aacute;nh địa chỉ. C&aacute;c n&uacute;t v&agrave; c&aacute;c t&agrave;i nguy&ecirc;n trong mạng được đ&aacute;nh dấu bằng c&aacute;c địa chỉ cụ thể v&agrave; th&ocirc;ng tin về địa chỉ đ&oacute; được lưu trữ tại c&aacute;c n&uacute;t kh&aacute;c nhau trong mạng. Khi c&aacute;c n&uacute;t muốn li&ecirc;n lạc v&agrave; giao tiếp qua mạng, ch&uacute;ng sẽ t&igrave;m kiếm dữ liệu về c&aacute;c địa chỉ n&agrave;y v&agrave; tiến h&agrave;nh gửi nhận th&ocirc;ng tin với nhau. C&aacute;c cơ chế đ&aacute;nh địa chỉ v&agrave; t&igrave;m kiếm x&aacute;c định cấu tr&uacute;c hoạt động của mạng, cũng như t&iacute;nh hiệu quả của việc sử dụng c&aacute;c t&agrave;i nguy&ecirc;n trong mạng.</p> <p style="text-align: justify;">Hầu hết c&aacute;c kỹ thuật t&igrave;m kiếm l&agrave; dựa tr&ecirc;n việc <strong>chuyển tiếp g&oacute;i tin</strong>. C&aacute;c n&uacute;t khi c&oacute; nhu cầu giao tiếp sẽ tạo ra c&aacute;c g&oacute;i tin để truy vấn đến c&aacute;c n&uacute;t kh&aacute;c, truy vấn n&agrave;y sẽ được chuyển tiếp (hoặc <a href="https://en.wikipedia.org/wiki/Routing">định tuyến</a>) cho đến khi n&oacute; đến được n&uacute;t c&oacute; dữ liệu mong muốn (hoặc con trỏ tới dữ liệu mong muốn). Để chuyển tiếp được c&aacute;c th&ocirc;ng điệp, mỗi n&uacute;t phải giữ th&ocirc;ng tin về một số n&uacute;t "h&agrave;ng x&oacute;m" kh&aacute;c. Th&ocirc;ng tin của c&aacute;c h&agrave;ng x&oacute;m n&agrave;y tạo th&agrave;nh bảng định tuyến của một n&uacute;t.</p> <p style="text-align: justify;">Khi một n&uacute;t mới khởi động, n&oacute; phải t&igrave;m kiếm c&aacute;c n&uacute;t kh&aacute;c tr&ecirc;n mạng để kết nối. Để bắt đầu qu&aacute; tr&igrave;nh n&agrave;y, một n&uacute;t mới phải kh&aacute;m ph&aacute; &iacute;t nhất một n&uacute;t hiện c&oacute; tr&ecirc;n mạng v&agrave; kết nối với n&oacute;.</p> <p style="text-align: justify;">Đến đ&acirc;y, bạn sẽ c&oacute; thể c&oacute; một thắc mắc l&agrave;: r&otilde; r&agrave;ng trong mạng P2P ch&uacute;ng ta sẽ kh&ocirc;ng c&oacute; cấu tr&uacute;c mạng, v&agrave; mỗi m&aacute;y t&iacute;nh tr&ecirc;n mạng đều c&oacute; một địa chỉ ri&ecirc;ng, do đ&oacute; ch&uacute;ng ta sẽ rất kh&oacute; khăn để qu&eacute;t qua to&agrave;n bộ mạng nhằm t&igrave;m ra được c&aacute;c n&uacute;t h&agrave;ng x&oacute;m được v&agrave; do đ&oacute; cũng rất kh&oacute; để t&igrave;m ra được c&aacute;c n&uacute;t kh&aacute;c tr&ecirc;n mạng. Vậy thực sự trong mạng peer to peer ch&uacute;ng ta sẽ giải quyết vấn đề n&agrave;y như thế n&agrave;o?</p> <p style="text-align: justify;">C&oacute; rất nhiều c&aacute;ch kh&aacute;c nhau để c&aacute;c n&uacute;t c&oacute; thể li&ecirc;n kết với mạng lưới, điều n&agrave;y phụ thuộc v&agrave;o từng giao thức kh&aacute;c nhau. Nhưng về cơ bản ch&uacute;ng ta c&oacute; thể kể đến c&aacute;c phương ph&aacute;p như sau:</p> <p style="text-align: justify;"><strong>Sử dụng một địa chỉ b&ecirc;n ngo&agrave;i đ&atilde; biết</strong></p> <p style="text-align: justify;">C&aacute;c n&uacute;t tham gia v&agrave;o mạng c&oacute; thể v&agrave;o c&aacute;c diễn đ&agrave;n, c&aacute;c dịch vụ web c&ocirc;ng cộng để lấy th&ocirc;ng tin về một số địa chỉ IP của mạng lưới b&ecirc;n ngo&agrave;i. Địa chỉ n&agrave;y c&oacute; thể được sử dụng để th&ecirc;m v&agrave;o bảng định tuyến một c&aacute;ch thủ c&ocirc;ng.</p> <p style="text-align: justify;">Đối với mỗi địa chỉ n&agrave;y, m&aacute;y kh&aacute;ch sẽ cố gắng kết nối, gửi c&aacute;c y&ecirc;u cầu HTTP, đọc d&ograve;ng phản hồi th&iacute;ch hợp v&agrave; ph&acirc;n t&iacute;ch địa chỉ IP từ địa chỉ đ&oacute;. Nếu qu&aacute; tr&igrave;nh n&agrave;y th&agrave;nh c&ocirc;ng, địa chỉ IP được trả về, n&oacute; sẽ được quảng b&aacute; đến c&aacute;c n&uacute;t kh&aacute;c m&agrave; n&oacute; được kết nối đến.</p> <p style="text-align: justify;"><strong>Kết nối đến địa chỉ truy vấn đến n&oacute; (<span id="Connect_Callback_Address" class="mw-headline">Callback</span> Address)</strong></p> <p style="text-align: justify;">Khi một n&uacute;t nhận được một kết nối đến n&oacute; từ một n&uacute;t n&agrave;o đ&oacute; trong mạng lưới. Hai n&uacute;t sẽ khởi tạo kết nối, v&agrave; n&uacute;t nhận được kết nối n&agrave;y sẽ&nbsp; quảng b&aacute; địa chỉ của n&oacute; đến n&uacute;t y&ecirc;u cầu để tạo kết nối cục bộ nếu muốn.</p> <p style="text-align: justify;">Sau khi gửi lại địa chỉ của m&igrave;nh, n&uacute;t n&agrave;y sẽ gửi c&aacute;c y&ecirc;u cầu đến n&uacute;t Callback Address để lấy th&ecirc;m danh s&aacute;ch c&aacute;c địa chỉ kh&aacute;c trong mạng lưới m&agrave; n&uacute;t kia đang c&oacute; nhằm bổ sung th&ecirc;m cho bảng định tuyến của m&igrave;nh.</p> <p style="text-align: justify;"><strong>Địa chỉ IRC</strong></p> <p style="text-align: justify;">Ngo&agrave;i việc học v&agrave; chia sẻ địa chỉ của ch&iacute;nh n&oacute;, c&aacute;c n&uacute;t c&ograve;n t&igrave;m kiếm địa chỉ của c&aacute;c n&uacute;t kh&aacute;c th&ocirc;ng qua k&ecirc;nh IRC. Đ&acirc;y l&agrave; một trong những c&aacute;ch được sử dụng trong c&aacute;c phi&ecirc;n bản Bitcoin cũ.</p> <p style="text-align: justify;">Sau khi một n&uacute;t m&atilde; h&oacute;a địa chỉ của ch&iacute;nh n&oacute; th&agrave;nh một chuỗi được sử dụng l&agrave;m biệt hiệu. N&oacute; sẽ tham gia ngẫu nhi&ecirc;n một k&ecirc;nh IRC (trong Bitcoin th&igrave; k&ecirc;nh n&agrave;y c&oacute; t&ecirc;n giữa # bitcoin00 v&agrave; # bitcoin99). Sau đ&oacute;, n&oacute; sẽ ban h&agrave;nh một lệnh WHO, đọc c&aacute;c d&ograve;ng khi ch&uacute;ng xuất hiện v&agrave; giải m&atilde; địa chỉ IP của c&aacute;c n&uacute;t kh&aacute;c trong k&ecirc;nh. Điều n&agrave;y được lặp đi lặp lại m&atilde;i m&atilde;i cho đến khi n&uacute;t được tắt.</p> <p style="text-align: justify;"><strong>Địa chỉ c&aacute;c n&uacute;t mặc định<br /></strong></p> <p style="text-align: justify;">Khi một n&uacute;t mới tham gia v&agrave;o mạng lưới, n&oacute; chưa hề biết bất cứ th&ocirc;ng tin g&igrave; về c&aacute;c th&agrave;nh vi&ecirc;n kh&aacute;c. Vậy trong trường hợp n&agrave;y, l&agrave;m thế n&agrave;o để n&oacute; c&oacute; thể t&igrave;m thấy v&agrave; kết nối đến c&aacute;c n&uacute;t kh&aacute;c?</p> <p style="text-align: justify;">Về nguy&ecirc;n tắc, tr&ecirc;n c&aacute;c mạng lưới blockchain sẽ kh&ocirc;ng c&oacute; c&aacute;c n&uacute;t đặc biệt, vai tr&ograve; của c&aacute;c n&uacute;t l&agrave; ngang h&agrave;ng với nhau. Tuy nhi&ecirc;n, tr&ecirc;n thực tế vẫn tồn tại một số n&uacute;t ổn định đ&atilde; hoạt động trong một thời gian d&agrave;i, hoặc c&aacute;c n&uacute;t được duy tr&igrave; với một số mục đ&iacute;ch nhất định theo thiết kế. C&aacute;c n&uacute;t n&agrave;y được gọi l&agrave; c&aacute;c n&uacute;t mầm (seed node). C&aacute;c seed node được duy tr&igrave; v&agrave; liệt k&ecirc; trong một danh s&aacute;ch nằm trong ch&iacute;nh phần mềm ứng dụng blockchain hoặc tr&ecirc;n một số cơ sở dữ liệu cố định được cung cấp. V&agrave; c&aacute;c n&uacute;t kh&aacute;c khi mới tham gia v&agrave;o mạng lưới c&oacute; thể truy vấn v&agrave; lấy danh s&aacute;ch địa chỉ sử dụng cho việc định tuyến của m&igrave;nh trong c&aacute;c seed node n&agrave;y. Mặc d&ugrave;, việc kết nối n&agrave;y l&agrave; kh&ocirc;ng bắt buộc, c&aacute;c n&uacute;t ho&agrave;n th&agrave;nh c&oacute; thể tự chỉ định địa chỉ kết nối của c&aacute;c n&uacute;t h&agrave;ng x&oacute;m của m&igrave;nh như ở tr&ecirc;n, tuy nhiến việc kết nối đến c&aacute;c seed node c&oacute; thể gi&uacute;p đơn giản h&oacute;a qu&aacute; tr&igrave;nh khởi tạo kết nối v&agrave; bảng định tuyến tr&ecirc;n c&aacute;c n&uacute;t v&agrave; gi&uacute;p c&aacute;c n&uacute;t trong mạng c&oacute; thể t&igrave;m kiếm lẫn nhau một c&aacute;ch nhanh ch&oacute;ng.</p> <p style="text-align: justify;">Ngo&agrave;i ra c&oacute; những seed node được duy tr&igrave; tr&ecirc;n một số m&aacute;y chủ DNS tr&ecirc;n mạng. Để kết nối đến c&aacute;c seed node n&agrave;y v&agrave; t&igrave;m kiếm c&aacute;c m&aacute;y kh&aacute;c tr&ecirc;n mạng, m&aacute;y kh&aacute;ch sẽ đưa ra c&aacute;c truy vấn DNS đến một danh s&aacute;ch c&aacute;c t&ecirc;n m&aacute;y chủ dịch vụ DNS được chọn. Chẳng hạn với Bitcoin, danh s&aacute;ch c&aacute;c địa chỉ n&agrave;y hiện nay bao gồm:</p> <p>seed.bitcoin.sipa.be<br />dnsseed.bluematt.me<br />dnsseed.bitcoin.dashjr.org<br />seed.bitcoinstats.com<br />seed.bitcoin.jonasschnelli.ch<br />seed.btc.petertodd.org</p> <p style="text-align: justify;">C&aacute;c phản hồi DNS c&oacute; thể chứa nhiều địa chỉ IP được y&ecirc;u cầu. V&agrave; c&aacute;c địa chỉ n&agrave;y c&oacute; thể được th&ecirc;m v&agrave;o trong danh s&aacute;ch định tuyến của n&uacute;t.</p> <p style="text-align: justify;">Sau khi đ&atilde; t&igrave;m ra c&aacute;c n&uacute;t li&ecirc;n kết, m&aacute;y kh&aacute;ch sẽ tiến h&agrave;nh kết nối với n&oacute; th&ocirc;ng qua việc thiết lập c&aacute;c kết nối TCP. Khi thiết lập kết nối, c&aacute;c n&uacute;t sẽ bắt đầu khởi động một giao thức bắt tay trực tiếp bằng c&aacute;ch truyền nhận c&aacute;c th&ocirc;ng điệp để thiết lập kết nối v&agrave; t&igrave;m kiếm c&aacute;c th&ocirc;ng tin cần thiết. Trong Bitcoin cổng mặc định được sử dụng l&agrave; 8333 hoặc một số cổng thay thế kh&aacute;c.</p> <p style="text-align: justify;">Khi một hoặc nhiều kết nối được thiết lập, n&uacute;t mới sẽ gửi một th&ocirc;ng điệp chứa địa chỉ IP của ch&iacute;nh n&oacute; tới c&aacute;c n&uacute;t h&agrave;ng x&oacute;m. Những n&uacute;t h&agrave;ng x&oacute;m n&agrave;y sẽ lần lượt chuyển tiếp th&ocirc;ng điệp đ&oacute; tới c&aacute;c n&uacute;t h&agrave;ng x&oacute;m kh&aacute;c của họ. Điều n&agrave;y gi&uacute;p cho địa chỉ của n&uacute;t mới được thiết lập được quảng b&aacute; tr&ecirc;n to&agrave;n mạng v&agrave; được kết nối tốt hơn. Ngo&agrave;i ra, c&aacute;c n&uacute;t mới được kết nối c&oacute; thể gửi y&ecirc;u cầu truy vấn th&ecirc;m địa chỉ cho c&aacute;c n&uacute;t h&agrave;ng x&oacute;m, v&agrave; y&ecirc;u cầu c&aacute;c n&uacute;t n&agrave;y trả về một danh s&aacute;ch địa chỉ IP của c&aacute;c n&uacute;t kh&aacute;c tr&ecirc;n mạng. Bằng c&aacute;ch n&agrave;y, một n&uacute;t c&oacute; thể t&igrave;m thấy c&aacute;c n&uacute;t kh&aacute;c để kết nối v&agrave; quảng b&aacute; sự tồn tại của n&oacute; tr&ecirc;n mạng để c&aacute;c n&uacute;t kh&aacute;c c&oacute; thể t&igrave;m thấy n&oacute;. Điều n&agrave;y c&oacute; thể m&ocirc; tả như h&igrave;nh dưới đ&acirc;y:</p> <p><img style="width: 508px; display: block; margin-left: auto; margin-right: auto;" src="https://tek4.vn/public_files/a32e4e84-0ce7-4542-adaf-9fdc6180b205" alt="Peer-to-Peer-768x744" height="492" /></p> <p style="text-align: justify;">C&aacute;c n&uacute;t tr&ecirc;n một mạng ngang h&agrave;ng c&oacute; thể tham gia hoặc rời khỏi một c&aacute;ch ngẫu nhi&ecirc;n, do đ&oacute; c&aacute;c kết nối v&agrave; c&aacute;c bảng định tuyến kh&ocirc;ng phải bao giờ cũng đ&aacute;ng tin cậy. V&igrave; vậy c&oacute; n&uacute;t li&ecirc;n tục phải thực hiện kh&aacute;m ph&aacute; c&aacute;c n&uacute;t mới cũng như hỗ trợ c&aacute;c n&uacute;t kh&aacute;c tạo lập kết nối khi ch&uacute;ng tham gia mạng. Để tăng hiệu quả cho qu&aacute; tr&igrave;nh n&agrave;y, ch&uacute;ng ta c&oacute; một kh&aacute;i niệm được gọi l&agrave; bootstrap. Kh&aacute;i niệm n&agrave;y gi&uacute;p giảm tải băng th&ocirc;ng v&agrave; t&agrave;i nguy&ecirc;n của mạng được sử dụng thể thiết lập kết nối. Sau khi bootstrapping, một n&uacute;t sẽ ghi nhớ c&aacute;c kết nối ngang h&agrave;ng th&agrave;nh c&ocirc;ng gần đ&acirc;y nhất của n&oacute;, để nếu được khởi động lại, n&oacute; c&oacute; thể nhanh ch&oacute;ng thiết lập lại c&aacute;c kết nối với mạng ngang h&agrave;ng trước đ&acirc;y. Nếu kh&ocirc;ng ai trong số c&aacute;c n&uacute;t cũ n&agrave;y phản hồi y&ecirc;u cầu kết nối của n&oacute;, th&igrave; n&oacute; mới tiến h&agrave;nh sử dụng c&aacute;c seed node để khởi động lại qu&aacute; tr&igrave;nh x&acirc;y dựng kết nối.</p> <p style="text-align: justify;">Việc t&igrave;m kiếm c&aacute;c t&agrave;i nguy&ecirc;n kh&aacute;c trong mạng lưới Peer to Peer diễn ra tương tự, điều kh&aacute;c biệt duy nhất đ&oacute; l&agrave; c&aacute;c th&ocirc;ng điệp truy vấn v&agrave; phản hồi giữa c&aacute;c n&uacute;t v&agrave; c&ocirc;ng việc m&agrave; c&aacute;c n&uacute;t cần thực hiện. Chẳng hạn muốn t&igrave;m kiếm một file được chia sẻ tr&ecirc;n mạng P2P, một n&uacute;t c&oacute; thể tiến h&agrave;nh truy vấn đến gi&aacute; trị băm của n&oacute; th&ocirc;ng qua c&aacute;c bảng băm DHT được lưu trữ tr&ecirc;n c&aacute;c n&uacute;t theo c&aacute;ch t&igrave;m kiếm ở tr&ecirc;n, c&aacute;c n&uacute;t khi đ&oacute; thay v&igrave; c&aacute;c địa chỉ trả về c&oacute; thể trả về th&ocirc;ng tin cụ thể về c&aacute;c n&uacute;t chứa dữ liệu n&agrave;y.</p> <p><img style="width: 529px; display: block; margin-left: auto; margin-right: auto;" src="https://tek4.vn/public_files/3978b71e-dd8c-4a6f-98e6-5fba8d47a680" alt="peer-to-peer-l&agrave;-g&igrave;-768x614" height="423" /></p> <p style="text-align: justify;">Giao thức như tr&ecirc;n được sử dụng trong mạng P2P Gnutella v&agrave; hầu hết c&aacute;c giao thức P2P kh&aacute;c chẳng hạn trong Bitcoin hoặc nhiều m&ocirc; h&igrave;nh Blockchain kh&aacute;c. N&oacute; được gọi l&agrave; phương ph&aacute;p t&igrave;m kiếm theo chiều rộng (BFS) tr&ecirc;n sơ đồ mạng lớp phủ c&oacute; giới hạn độ s&acirc;u D. Trong phương ph&aacute;p n&agrave;y, n&uacute;t truy vấn sẽ gửi y&ecirc;u cầu truy vấn tới tất cả c&aacute;c l&acirc;n cận của n&oacute;. Mỗi h&agrave;ng x&oacute;m xử l&yacute; truy vấn v&agrave; trả về kết quả nếu dữ liệu được t&igrave;m thấy. H&agrave;ng x&oacute;m n&agrave;y sau đ&oacute; chuyển tiếp y&ecirc;u cầu truy vấn tới tất cả c&aacute;c h&agrave;ng x&oacute;m của n&oacute; ngoại trừ n&uacute;t truy vấn. Quy tr&igrave;nh n&agrave;y tiếp tục cho đến khi đạt đến giới hạn độ s&acirc;u D. Tuy nhi&ecirc;n, đ&acirc;y kh&ocirc;ng phải l&agrave; phương ph&aacute;p duy nhất được sử dụng để c&aacute;c n&uacute;t c&oacute; thể t&igrave;m thấy nhau v&agrave; x&acirc;y dựng bảng định tuyến của m&igrave;nh. Như c&oacute; thể thấy th&igrave; phương ph&aacute;p tr&ecirc;n tạo ra một số lượng lớn c&aacute;c th&ocirc;ng điệp dư thừa, tr&ugrave;ng lặp v&agrave; kh&ocirc;ng c&oacute; khả năng mở rộng tốt. Do đ&oacute;, c&oacute; rất nhiều c&aacute;c phương ph&aacute;p kh&aacute;c được sử dụng trong c&aacute;c loại giao thức P2P kh&aacute;c nhằm cải tiến n&oacute;. Chẳng hạn như c&aacute;c phương ph&aacute;p lặp s&acirc;u, bước nhảy ngẫu nhi&ecirc;n k-walker, BFS ngẫu nhi&ecirc;n sửa đổi, bước nhảy ngẫu nhi&ecirc;n k-walker hai cấp, t&igrave;m kiếm th&ocirc;ng minh... Tuy nhi&ecirc;n, nh&igrave;n chung, trong tất cả c&aacute;c phương ph&aacute;p n&agrave;y, cơ chế hoạt động lu&ocirc;n diễn ra tương tự như tr&ecirc;n tức l&agrave; một truy vấn được chuyển tiếp đến một tập hợp con c&aacute;c n&uacute;t l&acirc;n cận v&agrave; tiếp tục được chuyển tiếp đến c&aacute;c h&agrave;ng x&oacute;m l&acirc;n cận kh&aacute;c, trừ một số c&aacute;ch cắt tỉa để tr&aacute;nh việc chuyển tiếp lặp lại.</p> <p style="text-align: justify;">Hiệu quả định tuyến thường được đo bằng số bước nhảy tr&ecirc;n mỗi truy vấn. Trong một số hệ thống, n&oacute; cũng được đ&aacute;nh gi&aacute; bằng c&aacute;ch sử dụng số lượng th&ocirc;ng điệp cần truyền tr&ecirc;n mỗi truy vấn. C&aacute;c kỹ thuật t&igrave;m kiếm kh&aacute;c nhau tạo ra sự đ&aacute;nh đổi kh&aacute;c nhau giữa c&aacute;c đặc điểm mong muốn n&agrave;y. Sự phức tạp của c&aacute;c giao thức nảy sinh từ c&aacute;c r&agrave;ng buộc v&agrave; y&ecirc;u cầu bổ sung kh&aacute;c nhau t&ugrave;y theo từng loại mạng. C&aacute;c t&iacute;nh năng mong muốn của thuật to&aacute;n t&igrave;m kiếm trong c&aacute;c hệ thống P2P bao gồm c&aacute;c kết quả truy vấn chất lượng cao, tối thiểu h&oacute;a số n&uacute;t cần truy vấn, hiệu quả định tuyến cao, c&acirc;n bằng tải, khả năng phục hồi cho c&aacute;c lỗi tr&ecirc;n n&uacute;t v&agrave; khả năng hỗ trợ c&aacute;c truy vấn phức tạp. Chất lượng của kết quả truy vấn phụ thuộc v&agrave;o ứng dụng. N&oacute;i chung, n&oacute; được đo bằng số lượng kết quả v&agrave; mức độ li&ecirc;n quan chẳng hạn c&aacute;c r&agrave;ng buộc về vấn đề t&iacute;nh tin cậy, t&iacute;nh ẩn danh, tối ưu h&oacute;a độ trễ, tối ưu h&oacute;a c&aacute;c luồng băng th&ocirc;ng cao của nhiều th&ocirc;ng điệp...</p> <p style="text-align: justify;">Sau khi đ&atilde; t&igrave;m kiếm được c&aacute;c n&uacute;t v&agrave; t&agrave;i nguy&ecirc;n cần thiết, c&aacute;c ứng dụng tr&ecirc;n mạng lưới sẽ thực hiện c&aacute;c y&ecirc;u cầu ph&ugrave; hợp với y&ecirc;u cầu hoạt động của mạng, chẳng hạn như tải về c&aacute;c file chia sẻ, ph&aacute;t t&aacute;n kết quả tạo khối (sau khi Proof of Work hoặc một số loại bằng chứng hoạt động kh&aacute;c)... C&aacute;c h&agrave;nh động n&agrave;y diễn ra giống hệt như c&aacute;c giao thức tr&ecirc;n m&ocirc;i trường TCP/IP. Tr&ecirc;n blockchain, c&aacute;c n&uacute;t sẽ truy vấn v&agrave; tiến h&agrave;nh giao tiếp để đồng bộ h&oacute;a dữ liệu tr&ecirc;n mạng lưới.</p> <h2>T&oacute;m tắt</h2> <ul> <li style="text-align: justify;">Mạng Peer to Peer hay c&ograve;n gọi l&agrave; mạng ngang h&agrave;ng, trong đ&oacute; mỗi n&uacute;t tham gia trong mạng đ&oacute;ng vai tr&ograve; như nhau, c&ugrave;ng chia sẻ v&agrave; sử dụng t&agrave;i nguy&ecirc;n một c&aacute;ch b&igrave;nh đẳng.</li> <li style="text-align: justify;">Để hoạt động được, c&aacute;c n&uacute;t trong mạng cần phải t&igrave;m được lẫn nhau. Để l&agrave;m được như vậy, c&aacute;c n&uacute;t cần truy vấn hoặc duy tr&igrave; một bảng định tuyến bao gồm c&aacute;c n&uacute;t "h&agrave;ng x&oacute;m" m&agrave; n&oacute; c&oacute; thể tạo kết nối đến được.</li> <li style="text-align: justify;">C&aacute;c địa chỉ kết nối "h&agrave;ng x&oacute;m" n&agrave;y c&oacute; thể do người d&ugrave;ng tự th&ecirc;m v&agrave;o bằng tay khi biết trước, do được cung cấp tr&ecirc;n một trang web tr&ecirc;n mạng, hoặc truy vấn tự động từ c&aacute;c dịch vụ chia sẻ địa chỉ từ c&aacute;c n&uacute;t ph&aacute;t t&aacute;n (seed node).</li> <li style="text-align: justify;">C&aacute;c kết nối tr&ecirc;n mạng Peer to Peer được tạo ra từ c&aacute;c truy vấn qua c&aacute;c n&uacute;t h&agrave;ng x&oacute;m li&ecirc;n tiếp.</li> <li style="text-align: justify;">C&oacute; nhiều c&aacute;ch t&igrave;m kiếm v&agrave; tạo kết nối kh&aacute;c nhau t&ugrave;y thuộc v&agrave;o y&ecirc;u cầu của ứng dụng v&agrave; giao thức được sử dụng, tuy nhi&ecirc;n về nguy&ecirc;n tắc chung vẫn l&agrave; c&aacute;c truy vấn xuất ph&aacute;t từ một n&uacute;t, đến c&aacute;c n&uacute;t h&agrave;ng x&oacute;m v&agrave; c&aacute;c n&uacute;t h&agrave;ng x&oacute;m n&agrave;y lại tiếp tục chuyển tiếp n&oacute; đến c&aacute;c n&uacute;t h&agrave;ng x&oacute;m kh&aacute;c, danh s&aacute;ch truy vấn c&oacute; thể được trao đổi cho nhau trong qu&aacute; tr&igrave;nh kết nối.</li> </ul> <p style="text-align: justify;">Mạng Peer to Peer l&agrave; một khối lượng kiến thức kh&aacute; rộng v&agrave; kh&oacute; c&oacute; thể tr&igrave;nh b&agrave;y ho&agrave;n thiện trong một b&agrave;i viết (thậm ch&iacute; nhiều b&agrave;i viết) do đ&oacute;, b&agrave;i viết n&agrave;y ch&uacute;ng ta chỉ tập trung đến những kh&iacute;a cạnh nền tảng cơ bản v&agrave; l&iacute; giải l&iacute; do tại sao mạng Peer to Peer lại l&agrave; một nền tảng kh&ocirc;ng thể thiếu của c&ocirc;ng nghệ Blockchain. Những thắc mắc mở rộng bạn đọc c&oacute; thể trao đổi bằng c&aacute;ch để lại comment b&ecirc;n dưới. Ch&uacute;ng t&ocirc;i sẽ c&oacute; những phản hồi giải đ&aacute;p sớm nhất c&oacute; thể. V&agrave; đừng qu&ecirc;n like v&agrave; chia sẻ b&agrave;i viết n&agrave;y nh&eacute; !</p> <p>&nbsp;</p> <hr /> <p style="text-align: center;"><em><strong>Fanpage Facebook:</strong>&nbsp;<a href="https://www.facebook.com/tek4.vn/">TEK4.VN</a></em>&nbsp;</p> <p style="text-align: center;"><em><strong>Tham gia cộng đồng để chia sẻ, trao đổi v&agrave; thảo luận:</strong>&nbsp;<a href="https://www.facebook.com/groups/tek4.vn/">TEK4.VN - Học Lập Tr&igrave;nh Miễn Ph&iacute;</a></em></p>