

Lưu ý của biên tập viên: Bài viết này đến từPolkaWorld(ID:gh_6c4c2038ddba), được Odaily sao chép với sự cho phép.
), được Odaily sao chép với sự cho phép.
Các nút chuỗi khối sử dụng một công cụ đồng thuận để đạt được sự đồng thuận về trạng thái của chuỗi khối. Bài viết này giới thiệu các nguyên tắc cơ bản của sự đồng thuận trong các hệ thống chuỗi khối, cách thức sự đồng thuận tương tác với thời gian chạy trong khung Chất nền và các công cụ đồng thuận có sẵn trong khung.
trình soạn thảo mdnice
Máy trạng thái và xung đột
Thời gian chạy chuỗi khối là một máy trạng thái [1]. Nó có một số chức năng chuyển đổi trạng thái và trạng thái bên trong cho phép nó chuyển đổi từ trạng thái hiện tại sang trạng thái tương lai. Trong hầu hết thời gian chạy, một số trạng thái có các chuyển đổi hợp lệ sang nhiều trạng thái trong tương lai, nhưng phải chọn một chuyển đổi.
Chuỗi khối phải đồng ý về những điều sau:
một số trạng thái ban đầu, được gọi là "genesis"
trạng thái cuối cùng (hiện tại)
Để thống nhất về trạng thái kết quả sau khi chuyển đổi, tất cả các hoạt động trong chức năng chuyển đổi trạng thái [2] của chuỗi khối phải mang tính xác định.
trình soạn thảo mdnice
loại trừ xung đột
Trong một hệ thống tập trung, các nhà chức trách tập trung lựa chọn giữa các phương án loại trừ lẫn nhau bằng cách ghi lại các chuyển đổi trạng thái theo thứ tự họ nhìn thấy chúng và chọn phương án đầu tiên trong số các phương án cạnh tranh trong trường hợp xảy ra xung đột. Trong một hệ thống phi tập trung, các nút sẽ thấy các giao dịch theo một thứ tự khác, vì vậy chúng phải sử dụng các phương pháp chi tiết hơn để loại trừ các giao dịch. Để làm phức tạp thêm vấn đề, các mạng blockchain cố gắng có khả năng chịu lỗi, nghĩa là ngay cả khi một số người tham gia không tuân theo các quy tắc, hệ thống sẽ tiếp tục cung cấp dữ liệu đồng thuận.
Aura (Round Robin)
Chất nền cung cấp một số thuật toán xây dựng khối và cũng cho phép bạn tạo khối của riêng mình:
PoW
BABE (dựa trên máy đánh bạc)
trình soạn thảo mdnice
Quy tắc lựa chọn ngã ba
Quy tắc lựa chọn ngã ba là một thuật toán sử dụng chuỗi khối và chọn chuỗi "tốt nhất" và do đó, chuỗi sẽ được mở rộng. Chất nền thể hiện khái niệm này với SelectChain.
Chất nền cho phép bạn viết quy tắc lựa chọn ngã ba tùy chỉnh hoặc sử dụng quy tắc được tạo sẵn. Ví dụ:
quy tắc chuỗi dài nhất
Quy tắc chuỗi dài nhất Nói một cách đơn giản, chuỗi tốt nhất là chuỗi dài nhất. Chất nền cung cấp quy tắc lựa chọn chuỗi này với cấu trúc Chuỗi dài nhất. GRANDPA sử dụng quy tắc chuỗi dài nhất để bỏ phiếu.
luật chơi ma
Quy tắc GHOST là, bắt đầu từ khối genesis, mỗi nhánh được giải quyết bằng cách chọn đệ quy nhánh mà hầu hết các khối được xây dựng trên đó.
khối sản xuất
PoW
Một số nút nhất định trong mạng chuỗi khối có thể tạo các khối mới, một quá trình được gọi là tác giả. Chính xác những nút nào có thể ghi khối tùy thuộc vào công cụ đồng thuận mà bạn sử dụng. Trong một mạng tập trung, một nút duy nhất có thể ghi tất cả các khối, trong khi trong một mạng hoàn toàn không được phép, thuật toán phải chọn nhà sản xuất khối ở mỗi độ cao.
Trong một hệ thống PoW như Bitcoin, bất kỳ nút nào cũng có thể tạo khối bất cứ lúc nào miễn là nó giải quyết được vấn đề chuyên sâu về tính toán. Giải quyết vấn đề này đòi hỏi thời gian của CPU, vì vậy những người khai thác chỉ có thể tạo ra các khối tương ứng với tài nguyên máy tính của họ.
Substrate cung cấp một công cụ sản xuất khối PoW.
chỗ
Các thuật toán đồng thuận dựa trên vị trí phải có một bộ trình xác thực đã biết có thể tạo ra các khối. Thời gian được chia thành các vị trí khác nhau và trong mỗi vị trí, chỉ một số trình xác nhận có thể tạo khối. Trong mỗi vị trí, các chi tiết mà trình xác thực có thể ghi các khối khác nhau tùy theo công cụ. Substrate cung cấp Aura và Babe, cả hai công cụ sản xuất khối dựa trên vị trí.
trình soạn thảo mdnice
Tính chất dứt khoát
Người dùng trong bất kỳ hệ thống nào cũng muốn biết khi nào giao dịch của họ hoàn tất và chuỗi khối cũng không ngoại lệ. Trong một số hệ thống truyền thống, tính cuối cùng xảy ra khi biên lai được bàn giao hoặc tài liệu được ký kết.
Sử dụng sơ đồ sản xuất khối và quy tắc lựa chọn ngã ba được mô tả cho đến nay, các giao dịch không bao giờ được hoàn tất đầy đủ. Luôn có khả năng một chuỗi dài hơn (hoặc nặng hơn) sẽ xuất hiện và khôi phục giao dịch của bạn. Tuy nhiên, càng nhiều khối được xây dựng trên một khối cụ thể thì càng ít khả năng nó bị hoàn nguyên. Theo cách này, quy tắc sản xuất khối và lựa chọn ngã ba phù hợp mang lại tính hữu hạn xác suất.
Một số hệ thống đồng thuận liên kết việc tạo khối và tính hữu hạn, ví dụ: tính hữu hạn là một phần của quá trình tạo khối và khối mới N+1 không thể được tạo cho đến khi khối N được hoàn thành. Tuy nhiên, Substrate tách riêng hai quy trình này và có thể tự sử dụng bất kỳ công cụ khối nào có tính hữu hạn xác suất hoặc kết hợp nó với tiện ích tính hữu hạn để có tính hữu hạn xác định.
Trong các hệ thống sử dụng các tiện ích cuối cùng, các quy tắc lựa chọn ngã ba phải được sửa đổi để tính đến kết quả của trò chơi cuối cùng. Ví dụ: các nút sẽ chọn chuỗi dài nhất chứa khối được hoàn thành gần đây nhất, thay vì chọn chu kỳ của chuỗi dài nhất.
Sự đồng thuận trong chất nền
Aura
trình soạn thảo mdnice
BABE
Aura[4] cung cấp cơ chế tạo khối dựa trên vị trí. Trong Aura, một tập hợp các quyền đã biết lần lượt tạo ra các khối.
trình soạn thảo mdnice
Bởi vì nhiều trình xác thực có thể tạo ra một khối trong cùng một vị trí, nên các nhánh phổ biến hơn trong BABE so với trong Aura, ngay cả trong điều kiện mạng tốt.
PoW
trình soạn thảo mdnice
GRANDPA
trình soạn thảo mdnice
GRANDPA[6] cung cấp tính hữu hạn của khối. Nó có một bộ quyền có trọng lượng đã biết như BABE. Tuy nhiên, GRANDPA không sản xuất các khối, nó chỉ lắng nghe "tin đồn" về các khối được tạo ra bởi các động cơ sản xuất (chẳng hạn như ba khối trên). Người xác nhận GRANDPA bỏ phiếu trên chuỗi, không phải trên khối, tức là họ bỏ phiếu cho một khối mà họ cho là "tốt nhất" và phiếu bầu của họ được áp dụng chuyển tiếp cho tất cả các khối trước đó. Sau khi hơn hai phần ba cơ quan GRANDPA bỏ phiếu cho một khối cụ thể, khối đó được coi là cuối cùng.
trình soạn thảo mdnice
Để phù hợp với các tính năng đồng thuận này, Substrate có khái niệm về DigestItem, một thông báo được truyền từ bên ngoài nút (nơi có sự đồng thuận) đến thời gian chạy và ngược lại.
tìm hiểu thêm
trình soạn thảo mdnice
BABE Research[7]
GRANDPA Research[8]
tìm hiểu thêm
Tất cả các thuật toán cuối cùng xác định, bao gồm GRANDPA, yêu cầu ít nhất 2f + 1 nút không bị lỗi, trong đó f là số nút bị lỗi hoặc độc hại. Bạn có thể đọc thêm về nguồn gốc của ngưỡng này và lý do tại sao ngưỡng này là lý tưởng trong bài báo chuyên đề về sự đồng thuận trong trường hợp thiếu sót [9] hoặc trong Wikipedia: Lỗi Byzantine [10].
nguyên bản:https://substrate.dev/
Không phải tất cả các giao thức đồng thuận đều xác định một chuỗi chính tắc duy nhất. Một số giao thức xác thực đồ thị tuần hoàn có hướng [11] (DAG) khi hai khối có cùng khối cha mẹ không có thay đổi trạng thái xung đột.
