Hãy xem sách trắng chính thức mới nhất do Swarm phát hành
tiêu đề phụ
1. Giới thiệu
máy tính thế giớimáy tính thế giới” trở thành hiện thực, “máy tính thế giới” này sẽ đóng vai trò là hệ điều hành và môi trường triển khai cho các ứng dụng phi tập trung.
Swarm có thể cung cấp dịch vụ không bị gián đoạn và chống lại sự cố mất mạng hoặc các cuộc tấn công DoS có chủ đích hiệu quả hơn. Swarm thúc đẩy tự do thông tin một cách hiệu quả như một nền tảng xuất bản không cần xin phép. Swarm được biết đến với các tính năng riêng tư độc đáo nhưtrình duyệt ẩn danh、lưu trữ bị từ chối、VàVàĐịnh dạng tệp không rò rỉ siêu dữ liệuv.v., để đáp ứng nhu cầu ngày càng tăng về an ninh mạng.
Các ưu đãi được tích hợp trong Swarm được thiết kế để tối ưu hóa việc phân bổ băng thông và tài nguyên lưu trữ để chúng tự duy trì về mặt kinh tế. Các nút bầy đàn theo dõi các đóng góp băng thông tương ứng của chúng liên quan đến từng nút và BZZ được sử dụng để giải quyết các khoản nợ bổ sung do mức tiêu thụ không đồng đều. Các nhà xuất bản trong Swarm phải chi BZZ để mua quyền ghi dữ liệu vào Swarm và trả trước tiền thuê cho một số kho lưu trữ dài hạn.
Thiết kế mô-đun của Swarm bao gồm các cấu trúc có thể tách rời rõ rànglớpthành phần (xem Hình 1). Về mặt kỹ thuật,VàVàLớp 3 "Truy cập dữ liệu cấp cao qua API"tiêu đề phụ

2 DISC: Lưu trữ bất biến phân tán của các khối
DISC (Distributed Immutable Storage of Chunks)Đây là mô hình lưu trữ cơ bản của Swarm. Nó bao gồm các nút lưu trữ và cung cấp dữ liệu.Trong sự hợp tác giữa các nút này, giả sử rằng mỗi nút theo đuổi một chiến lược nhằm tối đa hóa lợi nhuận của các nhà khai thác, hành vi của toàn bộ mạng sẽ thể hiện các đặc điểm sau:
• Bảo vệ quyền riêng tư và tải lên và tải xuống không cần xin phép
• Các biện pháp bảo vệ mạnh mẽ khiến việc chặn hoặc thay đổi quyền truy cập vào nội dung sau khi xuất bản trở nên khó khăn
• Tự động mở rộng khi nhu cầu tăng
• Nội dung được bảo vệ toàn vẹn
• Nội dung không còn được lưu trữ cuối cùng sẽ bị lãng quên
Bất kỳ ai có dung lượng lưu trữ và băng thông dư thừa đều có thể tham gia DISC với tư cách là nhà điều hành nút và nhận phần thưởng tương ứng. Khi một nhà điều hành cài đặt và chạy phần mềm máy khách Swarm, một nút mới được tạo và trở thành một phần của mạng Swarm, về cơ bản đảm nhiệm một phần nhỏ ổ cứng của thế giới, Swarm.
Tiếp theo, chúng tôi sẽ định nghĩa thêm DISC và giải thích tại sao nó tạo ra các thuộc tính trên.
2.1 Kết nối, cấu trúc liên kết và định tuyến
Trách nhiệm ban đầu của DISC là xây dựng và duy trì một mạng lưới các nút sao cho tất cả các nút có thể gửi tin nhắn lẫn nhau. Việc trao đổi tin nhắn này diễn ra trên kênh liên lạc liên tục và an toàn tồn tại giữa các nút bằng giao thức mạng p2p (libp2p). Swarm mong muốn các nút thiết lập kết nối Kademlia: khi được kết nối với một nhóm cụ thể gồm các nút khác, quyết định cục bộ của nút để gửi địa chỉ cuối cùng sẽ dẫn đến việc truyền thông báo để tìm tuyến đường tối ưu toàn cầu.
Kademlia giả định rằng mỗi nút được gán một địa chỉ Swarm khác với địa chỉ mạng của nó. Bằng cách tính toán giá trị chung cho hai địa chỉ Swarm trong giá trị của các bit tiền tố, chúng ta có thể xác định độ gần của chúng. Các nút gần nhau nhất sẽ tạo thành một kết nối đầy đủHàng xóm. Hơn nữa, mỗi nút được kết nối với nhiều nút ngang hàng từ mỗi lớp lân cận rời rạc (xem Hình 2).

(Lưu ý 1: Libp2p là một khung mạng để người dùng phát triển các ứng dụng ngang hàng phi tập trung.)
(Lưu ý 2: Kademlia là một giao thức truyền mạng lớp phủ P2P được thiết kế bởi Petar Maymounkov và David Mazières để xây dựng một mạng máy tính P2P phân tán. Đây là một hệ thống thông tin P2P dựa trên hoạt động XOR. Nó xây dựng cấu trúc và thông số kỹ thuật của mạng Một cách cho các nút để giao tiếp và trao đổi thông tin.)
Cấu trúc liên kết kết quả đảm bảo rằng việc chuyển tiếp sẽ di chuyển thông báo ít nhất một bước gần hơn với đích dự định của nó với mỗi lần chuyển tiếp thông báo (xem Hình 3).Kỹ thuật này cho phép các thông báo được định tuyến giữa hai nút bất kỳ, ngay cả khi hai nút không duy trì kết nối trực tiếp giữa chúng. Giới hạn trên của số bước nhảy cần thiết để gửi tin nhắn là logarit của tổng số nút, đảm bảo rằng hai nút bất kỳ luôn có thể được kết nối với nhau, ngay cả trong một mạng cực lớn.

2.2 Khối và lưu trữ
Đơn vị lưu trữ tiêu chuẩn trong Swarm được gọi làkhối. cáiBao gồm tối đa 4 kilobyte dữ liệu, có địa chỉ kèm theo. Vì địa chỉ của khối và địa chỉ của nút đến từ cùng một không gian địa chỉ, nên có thể tính được độ gần của chúng. Sơ đồ lưu trữ của Swarm nói rằng mỗi khối được lưu trữ bởi một nút tại một địa chỉ gần với địa chỉ của chính khối đó.
Để tạo điều kiện bảo mật dữ liệu, các khối có thể được mã hóa sau khi được đệm tới 4 kilobyte, khiến chúng không thể phân biệt được với dữ liệu ngẫu nhiên khác mà không cần khóa. Ngay cả đối với các khối không được mã hóa, các nhà khai thác nút không thể dễ dàng xác định nội dung của mỗi khối đến từ đâu. Vì các nút Swarm không thể tự chọn khối dữ liệu nào sẽ lưu trữ và mã hóa, nên sự không rõ ràng về nguồn gốc và khả năng rò rỉ siêu dữ liệu này mang lại cho chúng sự bảo vệ hiệu quả khỏi trách nhiệm pháp lý liên quan đến những gì chúng lưu trữ.
Để chèn một khối vào Swarm, một nút sẽ chuyểnGiao thức đẩy đồng bộ (push-sync protocol)Khối được chuyển tiếp cho đến khi nó đến vùng lân cận mà nó thuộc về. Sau đó, xác nhận lưu trữ của khối sẽ được gửi lại theo cùng một đường dẫn. Để truy xuất một khối, chỉ cần sử dụng giao thức truy xuất, định tuyến yêu cầu có địa chỉ khối đến vùng lân cận có liên quan. Nếu bất kỳ nút nào trên đường có khối tương ứng cục bộ, nó sẽ gửi lại khối đó trong phản hồi.

nút sử dụnggiao thức kéo đồng bộLiên tục đồng bộ lưu trữ khối của nó. Điều này đảm bảo rằng mỗi vùng lân cận lưu trữ dư thừa tất cả các khối thuộc về vùng lân cận của nó. Sự dư thừa này làm tăng khả năng phục hồi của quá trình truyền dữ liệu, duy trì tính khả dụng của khối ngay cả khi không thể truy cập một số nút trong một vùng lân cận nhất định. Giao thức đồng bộ hóa cũng đảm bảo rằng nội dung được lưu trữ của vùng lân cận vẫn nhất quán khi các nút ngoại tuyến và các nút mới tham gia mạng.
2.3 Chuyển tiếp, Quyền riêng tư và Bộ nhớ đệm
Trong Swarm, một tin nhắn được định tuyến bằng cách chuyển tiếp nó theo cách đệ quy đến gần đích hơn, sau đó chuyển phản hồi trở lại theo cùng một tuyến đường. Thuật toán định tuyến này có hai thuộc tính quan trọng:
• Người đưa ra yêu cầu không rõ ràng.
• Tự động mở rộng quy mô khi nhu cầu tăng lên.
Thông báo được gửi bởi nút khởi tạo yêu cầu cũng giống như thông báo được gửi bởi nút chỉ chuyển tiếp yêu cầu, ở mọi cấp độ. Sự mơ hồ này cho phép người khởi tạo yêu cầu đảm bảo rằng quyền riêng tư của họ không bị vi phạm, do đó tạo điều kiện thuận lợi cho việc xuất bản nội dung không cần xin phép và duyệt web ở chế độ riêng tư.
Vì các nút tham gia vào các yêu cầu truy xuất định tuyến có thể chọn lưu trữ các khối do chúng chuyển tiếp nên hệ thống phân phối có thể mở rộng tự động được kích hoạt. Cơ chế khuyến khích băng thông được thảo luận bên dưới cho điều nàyBộ nhớ đệm đầu cơ (bộ nhớ đệm cơ hội)cung cấp các khuyến khích kinh tế.
2.4 Giao thức kế toán bầy đàn
Giao thức kế toán bầy đàn (Swarm Accounting Protocol, SWAP)Đảm bảo rằng các nhà khai thác nút hợp tác trong việc định tuyến tin nhắn đồng thời bảo vệ mạng khỏi việc sử dụng băng thông bừa bãi.
Khi các nút chuyển tiếp yêu cầu và phản hồi, chúng theo dõi mức tiêu thụ băng thông tương đối của chúng đối với từng nút. Trong những giới hạn nhất định, các dịch vụ được trao đổi giữa các nút. Tuy nhiên, khi đạt đến giới hạn, bên mắc nợ có thể chọn đợi cho đến khi khoản nợ của họ được khấu hao theo thời gian hoặc có thể thanh toán bằng cách gửi séc, có thể được đổi thành tiền mặt trên chuỗi khối dưới dạng BZZ (xem Hình 5).

Giao thức này đảm bảo rằng những người tải xuống hoặc tải lên một lượng nhỏ nội dung có thể sử dụng Swarm miễn phí và những người sẵn sàng chờ đợi, phục vụ qua lại từng nút cho đến khi đủtín dụngCuối cùng, Swarm cũng miễn phí sử dụng. Đồng thời, nó cung cấp trải nghiệm nhanh hơn cho những người muốn trả tiền khi tải lên hoặc tải xuống khối lượng nội dung lớn hơn.
Khi giúp mỗi nút chuyển tiếp tin nhắn, sẽ có một động cơ kinh tế cho mỗi nút, bởi vì mỗi nút định tuyến thành công một yêu cầu đến một nút gần đích hơn có thể nhận được BZZ khi yêu cầu được gửi thành công. Nếu nút không tự lưu trữ dữ liệu, nó có thể yêu cầu các khối dữ liệu từ các nút gần hơn với một khoản phí nhỏ. Thông qua các giao dịch như vậy, các nút có thể kiếm được một khoản lợi nhuận nhỏ khi xử lý các yêu cầu. Điều này có nghĩa là có một sự khuyến khích cho các nút lưu trữ các khối bộ đệm vìSau khi mua một khối một lần từ một nút gần hơn, mọi yêu cầu tiếp theo cho cùng một khối sẽ kiếm được lợi nhuận thuần túy.
2.5 Hết công suất và thu gom rác
Khi nội dung mới được thêm vào Swarm, sớm hay muộn dung lượng lưu trữ giới hạn của mỗi nút sẽ cạn kiệt. Tại thời điểm này, các nút cần một chiến lược để quyết định khối nào sẽ bị xóa để nhường chỗ cho khối mới.
Bộ nhớ cục bộ của mỗi nút Swarm có hai hệ thống con tích hợp, đó là ""Và""Và"bộ đệm”。
"Dự trữ" là không gian lưu trữ có kích thước cố định dành riêng để lưu trữ các khối thuộc về vùng lân cận của nút. Việc một khối có được giữ trong "dự trữ" hay không tùy thuộc vào "tem bưu chính". Hợp đồng trên blockchain cho phép mua hàng qua BZZ"lô bưu chính". Chủ sở hữu của một "lô" có quyền cấp một số lượng dấu bưu điện hạn chế. Những dấu bưu điện này sau đó hoạt động như một loại mã thông báo tin cậy, cho người dùng biết giá trị cụ thể của việc lưu trữ thứ gì đó trong Swarm. Bằng cách sử dụng độ lớn của giá trị này để Xác định khối nào trong "dự trữ" sẽ bị xóa trước, để nút của người gửi tiền có thể tối đa hóa tiện ích của DISC (xem Hình 6). Giá trị của mỗi tem sẽ giảm theo thời gian, giống như tiền thuê kho được khấu trừ theo định kỳ từ số dư của "lô"; ngay khi giá trị của dấu bưu điện không đủ, khối có liên quan sẽ bị xóa khỏi "dự trữ" và được đặt vào "bộ đệm".
Vai trò của "bộ đệm" là giữ các khối không được bảo vệ bởi "dự trữ" do không đủ giá trị "lô" hoặc quá xa địa chỉ nút. Khi đạt đến dung lượng, bộ nhớ cache sẽ được cắt bớt theo định kỳ và các khối không được yêu cầu trong thời gian dài nhất sẽ bị xóa. Mức độ phổ biến của một khối có thể được dự đoán vào thời điểm nhận được yêu cầu lần cuối và các khối có nhiều doanh thu SWAP hơn sẽ được đặt trước. Kết hợp với bộ nhớ đệm suy đoán, điều nàyThu gom rác thảiChiến lược tối đa hóa lợi nhuận của nhà khai thác từ các ưu đãi băng thông và ở cấp độ mạng, việc mở rộng tự động nội dung phổ biến được thực hiện.

2.6 Các loại khối
Ở trên, chúng tôi đã định nghĩa một khối là đơn vị dữ liệu tiêu chuẩn trong DISC. Có hai loại khối cơ bản trong Swarm:VàVàkhối một chủ sở hữu。
Địa chỉ của một khối có thể định địa chỉ theo nội dung dựa trênthông báo băm(Xem Hình 7). Tính toàn vẹn của dữ liệu khối có thể được xác minh bằng cách sử dụng hàm băm làm địa chỉ của khối. Bầy đàn sử dụngcây thủy sinhcủaHàm băm BMT (Cây Merkle nhị phân)thuật toán.

tiêu đề phụ

3 chức năng của Swarm API
Ngoài các khối, Swarm cũng hiển thị các API để triển khai các khái niệm cấp cao hơn như tệp, bộ sưu tập tệp phân cấp với nhiều siêu dữ liệu khác nhau và thậm chí cả nhắn tin giữa các nút. Các API này cố gắng bắt chước những API đã được sử dụng trên web. Nhiều ý tưởng và cấu trúc dữ liệu mới lạ hơn có thể được vẽ trên các lớp cao hơn này, mở ra nhiều khả năng phong phú cho tất cả những ai muốn hưởng lợi từ các dịch vụ cốt lõi về quyền riêng tư và phân cấp mà DISC cung cấp.
3.1 Tệp và bộ sưu tập
Dữ liệu lớn hơn 4 kilobyte cho phép trong một khối sẽ được chia thành nhiều khối. Một nhóm các khối đồng nhất được xác định bởi một SwarmCây băm (hash-tree)có nghĩa là cây băm này mã hóa cách tệp được chia thành nhiều phần trong quá trình tải lên. Cây này bao gồm một bộkhối nút láThành phần, chứa chính dữ liệu, được tham chiếu bởi một hoặc một số lớp khối trung gian, mỗi lớp chứa tham chiếu đến các khối con của nó (xem Hình 9).
Địa chỉ nội dung của toàn bộ tệp sau đó được xác định bởi thông báo băm của khối gốc, tức là cây băm bao trùm toàn bộ tệpgốc mekle. Bằng cách này, địa chỉ của tệp trở thành địa chỉ của nó.Tổng kiểm tra (checksum), để có thể xác minh tính toàn vẹn của nội dung. Biểu diễn tệp dưới dạng cây khối Merkle cân bằng cũng cung cấp quyền truy cập ngẫu nhiên hiệu quả vào tệp, dẫn đến truy vấn phạm vi hiệu quả.
Swarm sử dụng "biểu hiện" để đại diện cho các bộ sưu tập. Tệp kê khai mã hóa một bản đồ chung của các tham chiếu chuỗi, cho phép nócây thư mục、hoặchoặcbảng định tuyếnLàm mô hình xây dựng. Những điều này tương ứng cho phép Swarm triển khai một hệ thống tệp, hoạt động như một cơ sở dữ liệu và thậm chí cung cấp dịch vụ lưu trữ ảo cho các trang web và dapp.
Nếu chúng tôi diễn giải phần máy chủ của URL dưới dạng tham chiếu đến tệp kê khai, thì tệp kê khai cung cấp địa chỉ dựa trên URL, đường dẫn URL được sử dụng làm khóa để tra cứu trong bản đồ do tệp kê khai biểu thị và chỉ được sử dụng để tiếp cận tham chiếu tập tin.

Các tệp kê khai mã hóa ánh xạ mà chúng biểu thị dưới dạng bộ ba Merkle nhỏ gọn và các khối tuần tự hóa các nút của bộ ba (xem Hình 10). Khi tìm một đường đi, chúng ta chỉ cần lấy các khối tương ứng dọc theo các nút của các nhánh mà chúng ta đi qua. Điều này đảm bảo tra cứu hiệu quả các tệp/bản ghi với độ trễ và logarit băng thông theo kích thước của bộ sưu tập.

Các tham chiếu nút con trong khối giữa của cây băm trong tệp và các nút cây tiền tố danh sách trong bộ sưu tập, được căn chỉnh với phân đoạn băm BMT ở vị trí. Do đó, Swarm hỗ trợ các bằng chứng nhỏ gọn rằng một phần dữ liệu cụ thể là một phần của tệp nằm ở một phần bù nhất định từ một URL nhất định, đây là cơ sở để lập chỉ mục cơ sở dữ liệu có thể chứng minh công khai và tổng hợp không đáng tin cậy.
3.2 Theo dõi cập nhật: nguồn cấp dữ liệu và độ phân giải tên miền
nguồn cấp dữ liệu là một cách để cho phépHiển thị tài nguyên có thể thay đổi (hiển thị của tài nguyên có thể thay đổi)Ví dụ về khối chủ sở hữu duy nhất cho . Nguồn cấp dữ liệu có thể đại diện cho bản sửa đổi theo phiên bản của tài nguyên có thể thay đổi, bản cập nhật tuần tự cho chủ đề hoặc chuỗi thông báo liên tục do một bên xuất bản trên kênh liên lạc.
Nguồn cấp dữ liệu hoạt động bằng cách xác định một mã định danh khối chủ sở hữu duy nhất bắt nguồn từ chủ đề và chỉ mục. Khi các nhà xuất bản và người tiêu dùng nội dung đồng ý về cách thức và thời điểm cập nhật chỉ mục, các tham chiếu cụ thể đến các bản cập nhật cho nguồn cấp dữ liệu đó có thể được xây dựng và tìm thấy.
Tương tự như cách DNS phân giải tên miền thành địa chỉ IP của máy chủ lưu trữ, Swarm sử dụngDịch vụ phân giải tên miền Ethereum ENS (Ehereum-Name Service)- Một tập hợp các hợp đồng thông minh trên chuỗi khối giải quyết các tham chiếu để hỗ trợ các tên miền mà con người có thể đọc được (ví dụ: Swarm.eth).
Các tham chiếu đã đăng ký với ENS có thể được cập nhật bất cứ khi nào một ứng dụng web hoặc trang web mà nó đại diện nhận được một tham chiếu Swarm mới do cập nhật. Ngoài ra, khi một tên miền tham chiếu đến nguồn cấp dữ liệu, người dùng có thể hưởng lợi từ tên miền mà con người có thể đọc được đồng thời có thể cập nhật nội dung của nó mà không phải tương tác với chuỗi khối và trả chi phí giao dịch liên quan mỗi khi thực hiện thay đổi.
3.3 Truyền tin nhắn
PSS (Postal Service on Swarm) là một giao thức nhắn tin trực tiếp giữa các nút trong Swarm. Nó thực hiện điều này bằng cách mã hóa tin nhắn của người nhận dự định và bọc nó bằng một chủ đề trong một khối có thể định địa chỉ nội dung. Vì các khối được tạo theo cách sao cho địa chỉ nội dung của chúng nằm trong vùng lân cận của người nhận, nên việc phân phối được xử lý một cách tự nhiên bởi giao thức đẩy đồng bộ.
Ngoài ra, đối với bất kỳ bên thứ ba nào, thông báo không thể phân biệt được với khối được mã hóa ngẫu nhiên, do đó, nó còn được gọi là **khối "Trojan"**. Một nút mong muốn nhận được thông báo PSS sẽ cố gắng giải mã và mở tất cả các khối đến vùng lân cận của nó. Sau khi giải mã thành công và giải mã khối Trojan cho người nhận hợp pháp, nút máy khách có thể gửi tin nhắn ở dạng văn bản rõ ràng tới một ứng dụng đã đăng ký chủ đề bằng cách sử dụng API PSS.
PSS cũng cung cấp khả năng phân phối không đồng bộ, vì các khối vẫn tồn tại và cuối cùng được đồng bộ hóa với tất cả các nút lân cận, ngay cả khi các nút đó trực tuyến sau đó.
Vì PSS cho phép người dùng nhận tin nhắn từ các cá nhân chưa biết cho đến nay, đây là phương thức giao tiếp lý tưởng để gửi tin nhắn ẩn danh cho các cá nhân công khai (ví dụ: cơ quan đăng ký) hoặc để thiết lập các kênh liên lạc an toàn thông qua nguồn cấp dữ liệu để bắt đầu một luồng tới một liên hệ. Vì PSS không yêu cầu bất kỳ hành động nào của người nhận (chẳng hạn như bỏ phiếu), nên nó có thể là nguyên mẫu được đề xuất cho thông báo đẩy.
3.4 Ghim và khôi phục
DISC cuối cùng sẽ quên đi nội dung hiếm khi được truy cập và không được trả tiền. Bằng cách thực hiện với khối "ghim"Với thao tác này, các nút có thể đảm bảo rằng chúng giữ lại một số nội dung cục bộ. Đồng thời, điều này"Người lưu nội dung được ghim cục bộ (pinner)” có thể tham gia khôi phục nội dung thụ động hoặc chủ động vì lợi ích của tất cả người dùng.
phục hồi thụ độngMột giao thức khôi phục có liên quan để thông báo cho những người ghim về các khối bị thiếu bằng cách gửi yêu cầu khôi phục bằng PSS khi việc truy xuất không thành công. Người ghim lắng nghe yêu cầu khôi phục và phản hồi bằng cách tải lên lại các phần bị thiếu để người tải xuống có thể tìm thấy chúng khi họ thử lại. Tính năng khôi phục này cũng cho phép tạo nội dung gốc trực tiếp từ nút nhà xuất bản, tương tự như phương thức hoạt động chính trong một số giải pháp chia sẻ tệp hiện có (BitTorrent, IPFS).
Ngược lại, Swarm cũng cung cấpphục hồi tích cựctiêu đề phụ
4. Kết luận
Swarm là một mạng ngang hàng và tất cả các nút của nó cùng cung cấp các dịch vụ liên lạc và lưu trữ phi tập trung. Không cần cấp phép và riêng tư, Swarm giải quyết các nhu cầu về tự do ngôn luận, chủ quyền dữ liệu và thị trường mở trên web, đồng thời giữ an toàn với tính năng bảo vệ toàn vẹn, chống kiểm duyệt và chống tấn công. Bài viết này giới thiệu các chức năng có trong lần ra mắt mạng chính đầu tiên của Bee1.0.
Đây là một cột mốc quan trọng và hành trình mới chỉ bắt đầu: tham gia cùng Swarm trong sứ mệnh nâng cao quyền tự do kỹ thuật số.


