Tác giả: Arweave Oasis
Trong bài viết trước của chúng tôi "Tìm hiểu quy trình lặp lại cơ chế đồng thuận của Arweave" đã tìm hiểu về quy trình lặp lại công nghệ của Arweave trong 5 năm qua và hứa trong bài viết sẽ so sánh lại phiên bản 2.6. Phân tích toàn diện. Bài viết này sẽ thực hiện lời hứa này và đưa bạn qua các chi tiết thiết kế của cơ chế đồng thuận của phiên bản Arweave 2.6.
Đã viết trước đó
Trong khoảng một tháng nữa, Bitcoin sẽ bắt đầu đợt halving tiếp theo. Nhưng tác giả tin rằng tầm nhìn của Satoshi Nakamoto—một sự đồng thuận trong đó mọi người đều có thể tham gia bằng cách sử dụng CPU—chưa bao giờ thành hiện thực. Về vấn đề này, việc lặp lại cơ chế của Arweave có thể trung thành hơn với tầm nhìn ban đầu của Satoshi Nakamoto và phiên bản 2.6 cho phép mạng Arweave thực sự tuân thủ mong đợi của Satoshi Nakamoto. So với phiên bản trước đã được cải tiến rất nhiều để đạt được:
Hạn chế tăng tốc phần cứng, CPU đa năng + ổ cứng cơ học là đủ Tham gia vào việc duy trì sự đồng thuận của hệ thống để giảm chi phí lưu trữ;
Chi phí đồng thuận trực tiếp tối đa có thể để lưu trữ dữ liệu hiệu quả thay vì chạy đua vũ trang băm tiêu tốn năng lượng;
p>
Người khai thác được khuyến khích xây dựng bản sao của bộ dữ liệu Arweave hoàn chỉnh của riêng họ, cho phép dữ liệu được định tuyến nhanh hơn và được lưu trữ phân tán hơn.
Cơ chế đồng thuận
Dựa trên các mục tiêu trên, cơ chế của phiên bản 2.6 đại khái như sau:
Trong cơ chế SPoRA ban đầu, một thành phần mới được gọi là Hash Chain, là đồng hồ thuật toán mã hóa được đề cập trước đó và tạo ra một SHA mỗi giây. Giá trị băm -256.
Người khai thác chọn chỉ mục của một phân vùng trong phân vùng dữ liệu mà nó lưu trữ và sử dụng nó cùng với hàm băm khai thác và địa chỉ khai thác làm thông tin đầu vào khai thác để bắt đầu khai thác.
Tạo phạm vi xem lại 1 trong phân vùng được người khai thác chọn và phạm vi xem lại thứ hai 2 tại một vị trí ngẫu nhiên trong mạng bện.
Sử dụng lần lượt các khối dữ liệu truy nguyên (Chunks) trong phạm vi truy nguyên 1 để tính toán và thử xem đó có phải là giải pháp khối hay không. Nếu kết quả tính toán lớn hơn độ khó của mạng hiện tại, người khai thác sẽ có quyền tạo khối; nếu không thành công, khối truy nguyên tiếp theo trong phạm vi truy nguyên sẽ được tính toán.
Các khối dữ liệu truy nguyên trong phạm vi 2 cũng có thể được xác minh bằng máy tính, nhưng giải pháp ở đó yêu cầu hàm băm thuộc phạm vi 1.
Hình 1: Sơ đồ nguyên lý phiên bản 2.6 của cơ chế đồng thuận
Chúng ta cùng tìm hiểu các khái niệm danh từ khác nhau xuất hiện trong cơ chế này:< /p>
Dữ liệu Arweave:Còn được gọi là "mạng dệt". Toàn bộ dữ liệu trong mạng được chia thành các khối dữ liệu lần lượt, tên tiếng Anh là Chunk (các khối giống như “bức tường gạch” trong hình trên là chunk). Các khối này có thể được phân bổ đồng đều trong mạng Arweave và sơ đồ địa chỉ (còn gọi là Global Offset) được thiết lập cho mỗi khối dữ liệu thông qua cây Merkle để xác định bất kỳ vị trí nào trong mạng dệt.
Chunk: Kích thước của mỗi chunk dữ liệu thường là 256 KB. Để giành được quyền tạo khối, người khai thác phải đóng gói và băm các khối dữ liệu tương ứng và chứng minh trong quá trình khai thác SPoRA rằng họ đã lưu trữ bản sao của dữ liệu.
Phân vùng: "Phân vùng" là một khái niệm mới trong phiên bản 2.6. Mỗi 3,6TB là một phân vùng. Các phân vùng được đánh số từ phần đầu của mạng dệt (chỉ số 0) cho đến số phân vùng bao phủ toàn bộ mạng dệt.
Phạm vi thu hồi: Phạm vi thu hồi cũng là một khái niệm mới trong phiên bản 2.6. Đó là một chuỗi các khối dữ liệu liền kề (Chunk) có độ dài 100 MB bắt đầu từ một khoảng bù cụ thể trong mạng dệt. Dựa trên khối dữ liệu 256 KB, phạm vi truy nguyên bao gồm 400 khối dữ liệu. Trong cơ chế này, sẽ có hai phạm vi xem lại, phạm vi này sẽ được giải thích chi tiết bên dưới.
Giải pháp tiềm năng:Mỗi khối dữ liệu 256KB trong phạm vi xem lại sẽ là giải pháp tiềm năng để giành được quyền sản xuất khối. Là một phần của quy trình khai thác, mỗi khối dữ liệu được băm để kiểm tra xem nó có đáp ứng yêu cầu về độ khó của mạng hay không. Nếu hài lòng, người khai thác sẽ giành được quyền sản xuất khối và nhận phần thưởng khai thác. Nếu không hài lòng, người khai thác sẽ tiếp tục cố gắng quay lại khối 256KB tiếp theo trong phạm vi.
Chuỗi băm: Chuỗi băm là một bản cập nhật quan trọng trong phiên bản 2.6, bổ sung đồng hồ mật mã cho SPoRA trước đó, đóng vai trò giới hạn tốc độ vai trò trong việc giới hạn số lượng băm tối đa. Chuỗi băm được tạo bằng cách băm một phần dữ liệu nhiều lần liên tiếp bằng hàm SHA-256. Quá trình này không thể được tính toán song song (CPU cấp tiêu dùng có thể dễ dàng thực hiện) và chuỗi băm đạt được độ trễ 1 giây bằng cách thực hiện một số quy trình băm liên tiếp nhất định.
Khai thác Hash: Sau khi có đủ số lượng băm liên tiếp (tức là trễ 1 giây), hàm băm Chuỗi tạo ra một hàm băm được coi là hợp lệ cho việc khai thác. Điều đáng chú ý là hàm băm khai thác nhất quán giữa tất cả các công cụ khai thác và có thể được xác minh bởi tất cả các công cụ khai thác.
Sau khi giới thiệu tất cả các khái niệm danh từ cần thiết, chúng ta có thể hiểu rõ hơn cách phiên bản 2.6 phối hợp với nhau bằng cách làm thế nào để có được chiến lược tốt nhất.
Chiến lược tốt nhất
Mục tiêu chung của Arweave đã được giới thiệu nhiều lần trước đó, đó là tối đa hóa số lượng bản sao dữ liệu được lưu trữ trên mạng . Nhưng cứu cái gì? Làm thế nào để tiết kiệm? Ngoài ra còn có nhiều yêu cầu và ô cửa. Ở đây chúng ta thảo luận về cách áp dụng một chiến lược tối ưu.
Bản sao và Bản sao
Kể từ phiên bản 2.6, tác giả thường xuyên thấy hai từ Bản sao và Bản sao trong nhiều tài liệu kỹ thuật khác nhau. Hai khái niệm này có thể dịch sang tiếng Trung là sao chép nhưng trên thực tế giữa chúng có sự khác biệt rất lớn, điều này cũng gây ra rất nhiều trở ngại cho tôi trong việc tìm hiểu cơ chế. Để dễ hiểu, tôi hay dịch Bản sao là "bản sao" và Bản sao là "bản sao lưu".
Sao lưu bản sao chỉ đơn giản là sao chép dữ liệu và không có sự khác biệt giữa các bản sao lưu của cùng một dữ liệu.
Bản sao có nghĩa là tính duy nhất, là hành động lưu trữ dữ liệu sau khi xử lý duy nhất. Mạng Arweave khuyến khích lưu trữ các bản sao thay vì lưu trữ sao lưu thuần túy.
Lưu ý: Trong phiên bản 2.7, cơ chế đồng thuận đã trở thành SPoRes, là Bằng chứng ngắn gọn về sự sao chép. Bằng chứng sao chép đơn giản dựa trên lưu trữ bản sao. Tôi sẽ giải thích điều này trong tương lai.
Đóng gói các bản sao duy nhất
Các bản sao duy nhất rất quan trọng trong cơ chế Arweave. Nếu người khai thác muốn có quyền sản xuất khối, họ phải có dữ liệu được đóng gói và xử lý theo một định dạng cụ thể để tạo thành bản sao duy nhất của riêng nó, đây là điều kiện tiên quyết.
Nếu bạn muốn chạy một nút mới, bạn không thể sao chép trực tiếp dữ liệu đã được các công cụ khai thác khác đóng gói. Trước tiên bạn cần tải xuống và đồng bộ hóa dữ liệu gốc trong mạng dệt Arweave (tất nhiên bạn không muốn tải xuống toàn bộ, bạn chỉ có thể tải xuống một phần. Bạn cũng có thể đặt chính sách dữ liệu của riêng mình để lọc ra dữ liệu rủi ro ), sau đó đóng gói chúng thông qua hàm RandomX Mỗi đoạn dữ liệu thô biến nó thành một giải pháp khai thác tiềm năng.
Quy trình đóng gói bao gồm việc cung cấp Khóa đóng gói cho hàm RandomX, cho phép sử dụng kết quả do nó tạo ra để đóng gói khối dữ liệu gốc thông qua nhiều thao tác. Quá trình giải nén khối dữ liệu được đóng gói là như nhau, khóa đóng gói được cung cấp và kết quả được tạo ra bởi nhiều thao tác được sử dụng để giải nén khối dữ liệu được đóng gói.
Trong phiên bản 2.5, bản sao lưu Packing Key là hàm băm SHA256 được liên kết với chunk_offset (phần bù của khối dữ liệu, cũng có thể hiểu là tham số vị trí của khối dữ liệu) và tx_root (gốc giao dịch). Điều này đảm bảo rằng mỗi giải pháp khai thác đều đến từ một bản sao duy nhất của các khối dữ liệu trong một khối cụ thể. Nếu một khối dữ liệu có nhiều bản sao lưu ở các vị trí khác nhau trên mạng bị hỏng thì mỗi bản sao lưu cần được sao lưu riêng lẻ để tạo một bản sao duy nhất.
Trong phiên bản 2.6, khóa dự phòng này được mở rộng thành hàm băm SHA256 được liên kết với chunk_offset, tx_root và miner_address. Điều này có nghĩa là mỗi bản sao cũng là duy nhất cho mỗi địa chỉ khai thác.
Ưu điểm của việc lưu trữ các bản sao hoàn chỉnh
Thuật toán khuyên thợ mỏ nên tạo một bản sao hoàn chỉnh duy nhất thay vì một bản sao một phần được sao chép nhiều lần, điều này làm cho mạng Dữ liệu được phân bố đồng đều.
Phần này hiểu thế nào? Hãy cùng hiểu qua việc so sánh hai hình ảnh dưới đây.
Đầu tiên, chúng ta hãy giả sử rằng toàn bộ mạng lưới đứt gãy Arweave tạo ra tổng cộng 16 phân vùng dữ liệu.
Tình huống đầu tiên:
Miner Bob cho rằng việc tải xuống dữ liệu là quá mất thời gian- Như vậy chỉ có dữ liệu của 4 phân vùng phá mạng đầu tiên được tải xuống.
Để tối đa hóa số bản sao khai thác của 4 phân vùng này, Bob đã nảy ra ý tưởng và sao chép 4 bản sao dữ liệu của 4 phân vùng này và sử dụng 4 mẫu địa chỉ khai thác khác nhau chúng thành 4 tài nguyên sao chép duy nhất để lấp đầy không gian lưu trữ của riêng chúng, vì vậy hiện tại có 16 phân vùng trong không gian lưu trữ của Bob. Điều này không có vấn đề gì và tuân thủ quy tắc về các bản sao duy nhất.
Tiếp theo, khi Bob nhận được hàm băm khai thác (Mining Hash) mỗi giây, anh ấy có thể tạo vật liệu có phạm vi truy nguyên cho mỗi phân vùng và tiến hành kiểm tra xâm nhập trên các khối dữ liệu trong đó. . Điều này mang lại cho Bob 400*16=6400 giải pháp khai thác tiềm năng trong một giây.
Nhưng Bob cũng phải trả cái giá thứ hai cho sự thông minh nhỏ bé của mình, bởi anh đã phải đánh mất cơ hội khai thác ở phạm vi phía sau. Bạn có thấy những "dấu chấm hỏi nhỏ" này không? ? Chúng biểu thị phạm vi xem lại liên quan đến lần thứ hai không được tìm thấy trên ổ cứng của Bob vì chúng đánh dấu phân vùng dữ liệu của Bob không được lưu trữ trong đó. Tất nhiên, may mắn thay, còn có đèn báo thấp hơn tượng trưng cho 4 phân vùng của Bob, tức là chỉ có 25%, tương đương 1600 giải pháp tiềm năng.
Vì vậy, chiến lược này mang lại cho Bob 6400+1600=8000 giải pháp tiềm năng mỗi giây.
Hình 2: Tình huống đầu tiên, chiến lược "có chút thông minh" của Bob
< strong >Tình huống thứ hai:
Vậy hãy xem tình huống thứ hai. Do sự sắp xếp cơ học của hai phạm vi xem lại, chiến lược tốt hơn là lưu trữ bản sao duy nhất có nhiều vấn đề nhất. Như thể hiện trong hình 3.
Thợ mỏ Alice không "thông minh" bằng Bob. Cô ấy đã tải xuống dữ liệu phân vùng của tất cả 16 phân vùng một cách nghiêm túc và chỉ sử dụng một địa chỉ khai thác để tạo thành một bản sao duy nhất của 16 bản sao lưu.
Vì Alice cũng có 16 phân vùng nên tổng số giải pháp tiềm năng cho phạm vi xem lại đầu tiên phù hợp với Bob, cũng là 6400.
Nhưng trong trường hợp này, Alice nhận được tất cả các giải pháp tiềm năng ở phạm vi xem lại thứ hai. Đó là thêm 6.400.
Vì vậy, điều này mang lại cho chiến lược của Alice 6400+6400=12800 giải pháp tiềm năng mỗi giây. Những lợi thế là hiển nhiên.
Hình 3: Chiến lược của Alice rõ ràng có lợi thế lớn hơn
Vai trò của phạm vi truy nguyên
Bạn có thể ngạc nhiên rằng trước phiên bản 2.5, phần bù của một khối truy nguyên duy nhất được băm ngẫu nhiên thông qua một hàm và cho phép người khai thác tìm và cung cấp lại bằng chứng lưu trữ. , tại sao sẽ như vậy hàm băm tạo ra phạm vi truy nguyên trong 2.6?
Lý do thực ra rất dễ hiểu. Phạm vi traceback bao gồm các khối dữ liệu liên tục. Cấu trúc này không nhằm mục đích gì khác. Mục đích của nó là giảm thiểu chuyển động của đầu đọc của đĩa cứng cơ học (HDD) ). . Sự tối ưu hóa vật lý do phương pháp này mang lại cho phép hiệu suất đọc của ổ cứng HDD tương đương với hiệu suất đọc của các ổ cứng SSD (SSD) đắt tiền hơn. Nó giống như buộc một tay và một chân vào SSD.Tất nhiên, việc có một ổ SSD đắt tiền có thể truyền bốn phạm vi truy nguyên mỗi giây vẫn có một chút lợi thế về tốc độ. Nhưng số lượng của nó sẽ là thước đo quan trọng để các thợ đào lựa chọn so với các ổ cứng HDD rẻ hơn.
Xác minh chuỗi băm
Bây giờ hãy thảo luận về việc xác minh khối mới tiếp theo.
Để chấp nhận một khối mới, người xác minh cần xác minh khối mới được đồng bộ hóa bởi nhà sản xuất khối. Phương pháp này là sử dụng hàm băm khai thác do chính nó tạo ra để xác minh hàm băm khai thác của khối mới.
Nếu người xác nhận không ở đầu chuỗi băm hiện tại thì mỗi hàm băm khai thác bao gồm 25 điểm kiểm tra trong 40 mili giây. Các điểm kiểm tra này là kết quả của 40 mili giây băm liên tiếp và chúng cùng nhau biểu thị khoảng thời gian một giây kể từ khi bắt đầu hàm băm từ mỏ trước đó.
Người xác thực sẽ nhanh chóng hoàn thành việc xác minh 25 điểm kiểm tra đầu tiên trong vòng 40 mili giây trước khi truyền khối mới nhận được đến các nút khác. Nếu xác minh thành công, khối truyền sẽ được kích hoạt và tiếp tục hoàn thành. của các điểm kiểm tra còn lại. Một điểm kiểm tra hoàn chỉnh được hoàn thành bằng cách xác nhận tất cả các điểm kiểm tra còn lại. 25 điểm kiểm tra đầu tiên được theo sau bởi 500 điểm kiểm tra xác thực, sau đó là 500 điểm kiểm tra xác thực, với 500 điểm kiểm tra tiếp theo được nhân đôi cho mỗi nhóm.
Khi chuỗi băm tạo ra các hàm băm khai thác, nó phải được thực hiện theo thứ tự trên một dòng. Tuy nhiên, người xác thực có thể thực hiện xác minh băm khi xác minh điểm kiểm tra, điều này có thể rút ngắn thời gian xác minh khối và nâng cao hiệu quả.
Hình 4: Quy trình xác minh chuỗi băm
Hạt giống của chuỗi băm
Nếu người khai thác hoặc khai thác Pools có sức mạnh băm SHA256 nhanh hơn và chuỗi băm của chúng có thể đi trước các nút khác trong mạng. Theo thời gian, lợi thế về tốc độ khối này có thể tích lũy thành một phần bù lớn của chuỗi băm, dẫn đến việc băm khai thác không đồng bộ với phần còn lại của trình xác thực. Điều này có thể dẫn đến một loạt các hiện tượng phân nhánh và tái tổ chức không thể kiểm soát được.
Để giảm khả năng trôi dạt chuỗi băm như vậy, Arweave đồng bộ hóa chuỗi băm toàn cầu bằng cách sử dụng mã thông báo từ các khối lịch sử theo các khoảng thời gian cố định. Điều này định kỳ cung cấp một hạt giống mới cho chuỗi băm, đồng bộ hóa chuỗi băm của từng người khai thác với một khối đã được xác minh.
Khoảng thời gian của hạt giống chuỗi băm là cứ sau 50 * 120 lần băm khai thác (50 đại diện cho số khối, 120 đại diện cho số lần băm khai thác trong vòng 2 phút của một chu kỳ sản xuất khối). Chọn hạt giống mới khối. Điều này làm cho khối hạt giống xuất hiện khoảng một lần trong mỗi ~50 khối Arweave, nhưng do một số thay đổi về thời gian tạo khối, khối hạt giống có thể xuất hiện sớm hơn 50 khối.
Hình 5: Cách tạo hạt chuỗi băm
Trên đây là những gì tác giả đã dành thời gian tìm hiểu từ thông số kỹ thuật 2.6 Trích từ nội dung, có thể thấy rằng Arweave đã đạt được mức tiêu thụ điện năng thấp kể từ phiên bản 2.6. Tiếp theo, một cơ chế tư tưởng phi tập trung hơn được sử dụng để chạy toàn bộ mạng. Tầm nhìn của Satoshi Nakamoto đã được triển khai ở Arweave.
Arweave 2.6:
https://2-6-spec.arweave.dev/https://2-6-spec.arweave. dev