TrongPhần 1,Chúng tôi đã xem xét cách hoạt động của sự đồng thuận PBFT cổ điển và cách các phiên bản trước của HotStuff hoạt động. Chúng tôi cũng đã xem xét cách MonadBFT giải quyết vấn đề tail-forking của HotStuff, đó là vấn đề mà các khối hợp lệ đôi khi bị bỏ lại trong các hệ thống pipelined.
Vấn đề tail-forking này tạo ra hai vấn đề lớn: 1) nó làm hỏng phần thưởng cho những người xây dựng block trung thực và 2) có thể làm đình trệ mạng lưới.
MonadBFT giới thiệu quy tắc Reproposal và cơ chế bỏ phiếu Không-Tán-Thành để loại bỏ vấn đề tail-forking, đảm bảo rằng bất kỳ khối nào được phê duyệt đúng đắn từ một người đề xuất trung thực đều sẽ luôn được đưa vào chuỗi.
Trong phần 2, chúng tôi khám phá hai đặc tính khác của MonadBFT là 1) tính cuối cùng có tính chất suy luận và 2) tính nhanh nhẹn lạc quan. Chúng tôi cũng sẽ khám phá các hệ quả của MonadBFT đối với các nhà phát triển.
Ngoài sự chống lại fork đuôi, một đặc điểm quan trọng khác của MonadBFT là sự hoàn thiện suy đoán trong một vòng duy nhất.
Trong các thuật ngữ thực tiễn, điều này có nghĩa là khách hàng và người dùng có thể nhận được xác nhận giao dịch ngay sau khi một khối nhận được đa số phiếu bầu, ngay cả trước khi vòng tiếp theo hoàn tất.
Nhớ rằng trong giao thức cơ sở HotStuff, một khối thường không được coi là cuối cùng (không thể hoàn tác) cho đến khi nó đã trải qua ít nhất hai giai đoạn (ví dụ: Fast-Hotstuff & Diem-BFT): một giai đoạn để có Chứng chỉ Quorum (khoá khối với ≥2f+1 phiếu bầu), và một giai đoạn thứ hai nơi nhà lãnh đạo tiếp theo xây dựng trên QC đó và cam kết khối.
Việc cam kết hai giai đoạn này là cần thiết để đảm bảo an toàn: khi đủ nút trung thực đã khóa một khối, không có khối xung đột nào có thể thu thập một số đồng thuận, và việc cam kết trong vòng tiếp theo làm cho nó vĩnh viễn. Vì vậy, thông thường, một khách hàng có thể phải đợi cho đến khi khối tiếp theo hoặc vòng tiếp theo được sản xuất trước khi họ biết giao dịch trước đó là cuối cùng.
MonadBFT cơ bản cho phép một giao dịch được coi là đủ cuối cùng (an toàn để thực hiện) sau chỉ một vòng bỏ phiếu. Điều này được gọi là tính cuối cùng có thể đoán định.
Khi một lãnh đạo đề xuất một khối và các người xác minh bầu chọn để tạo một QC cho khối đó, khối đó hiện đang ở trạng thái Đã được bầu chọn (nó đã bị khóa bởi một đa số). Trong MonadBFT, các người xác minh sẽ thực hiện các giao dịch của khối ngay sau khi họ tạo ra QC và thậm chí gửi một xác nhận sơ bộ cho các khách hàng cho biết khối đã (tạm thời) được chấp nhận. Điều này giống như việc nói: “Chúng tôi có một đa số siêu lớn đồng ý về khối này. Trừ khi có điều gì đó rất bất ngờ xảy ra, hãy xem xét khối này đã được xác nhận.”
Xác nhận ngay lập tức này là lạc quan. Khối chưa được cam kết trong sổ cái. Điều đó sẽ xảy ra khi đề xuất tiếp theo đến và hoàn tất nó (QC-on QC), nhưng trong điều kiện bình thường, không có gì có thể hủy bỏ nó. Tình huống duy nhất có thể quay trở lại một khối được thực thi một cách đặculative là nếu người lãnh đạo phản bội (tức là đề xuất hai khối khác nhau cùng ở cùng một chiều cao để chia phiếu).
Bạn có thể coi độ cố định chủ quan như một sản phẩm phụ khá tốt của khả năng chống tail-forking. Khả năng chống tail-forking đảm bảo rằng ngay cả khi nhà lãnh đạo tiếp theo gặp sự cố, đề xuất hiện tại sẽ không bị bỏ lại (nhờ vào quy tắc đề xuất lại và NEC). Vì vậy, chỉ khi một khối được thực hiện chủ quan bị loại bỏ là khi người đề xuất ban đầu phân đôi (lỗi double-signing mà rõ ràng là độc hại), điều này có thể: 1) phát hiện thông qua QCs mâu thuẫn, 2) bị trừng phạt và 3) rất hiếm gặp.
Trong các giao thức trước đó, họ không đảm bảo rằng nhà lãnh đạo tiếp theo sẽ đề xuất lại khối trước đó, vì vậy việc tail-forking có thể xảy ra, làm vỡ các giả định về việc đầu cơ.
Trong hầu hết các giao thức đồng thuận, có một thời gian chờ tích hợp sau mỗi vòng như một khoảng thời gian đệm hoặc hết giờ. Điều này nhằm đảm bảo tất cả các tin nhắn đã được gửi trước khi tiến xa hơn. Đây là cơ chế bảo vệ được thiết kế để xử lý tình huống xấu nhất như khi một nhà lãnh đạo gặp sự cố hoặc không gửi bất kỳ điều gì cả.
Các thời gian chờ này thường quá thận trọng. Nếu mạng hoạt động bình thường và tất cả các máy chủ xác thực đều hoạt động đúng cách, thời gian chờ cố định đó trở thành chi phí không cần thiết. Các khối có thể đã được hoàn chỉnh nhanh hơn, nhưng giao thức đã giữ lại chỉ trong trường hợp.
MonadBFT giới thiệu tính linh hoạt lạc quan, có nghĩa là giao thức có thể tiến lên ngay lập tức dựa trên các tin nhắn mạng, thay vì luôn luôn phụ thuộc vào bộ đếm thời gian cố định. Nguyên tắc thiết kế ở đây có thể được tóm tắt như “nhanh khi có thể, kiên nhẫn khi cần.”
MonadBFT được thiết kế sao cho trong cả trường hợp bình thường và ngay cả khi khôi phục từ lỗi, nó không dừng lại trong một khoảng thời gian chờ định trước nếu không cần thiết.
Trong thực tế, điều này có nghĩa là nếu độ trễ mạng giữa các nút là, ví dụ, 100ms, sự đồng thuận có thể tiềm năng hoàn thành một vòng trong chỉ vài trăm mili giây (cộng thêm chi phí tính toán và tổng hợp).
Nó không chờ đợi, ví dụ, một khoảng thời gian "khe" đầy đủ nếu nó không cần. Điều này tương phản với mạng chính Ethereum, theo sau mộtmô hình khe và kỷ nguyên. Trên Ethereum, việc sản xuất khối được cố định trong các khoảng thời gian 12 giây. Ngay cả khi mọi người đã sẵn sàng sớm hơn, giao thức vẫn chờ đợi.
Phương pháp của MonadBFT loại bỏ sự trễ nảy sinh không cần thiết. Nó giữ nguyên cấu trúc HotStuff theo hình ống dẫn nhưng loại bỏ quy tắc cứng nhắc “bạn phải chờ Δ giây” trong trường hợp bình thường. Điều này có nghĩa là nó có thể vượt trội hơn các hệ thống thời gian giới hạn về độ nhanh nhạy mà không cần hy sinh tính an toàn.
MonadBFT xây dựng trên dòng dõi của các giao thức đồng thuận HotStuff-family, nhưng nổi bật bằng việc đạt được sự kết hợp của các đặc tính mong muốn mà không có thiết kế trước đó nào có thể tích hợp mà không cần phải hy sinh. Các giao thức trước đó thường được tối ưu hóa cho một số chiều như thông lượng theo dòng hoặc giao tiếp tuyến tính nhưng phải hy sinh các chiều khác. MonadBFT duy nhất quản lý kết hợp sự phức tạp của tin nhắn tuyến tính, các commit theo dòng, kháng đỡ mã đuôi mạnh, phản hồi tức thì mà không có độ trễ cố định, và các cơ chế phục hồi hiệu quả, tất cả trong khi duy trì độ chắc chắn nhanh chóng và cam kết sống cao. Bảng dưới đây tóm lược cách MonadBFT so sánh với các giao thức BFT người lãnh đạo quay vòng khác nhau qua các chiều kích thước quan trọng này:
Đối với các nhà phát triển, MonadBFT có nghĩa là một vài điều:
Đối với Người Dùng Cuối: Một người dùng thông thường sẽ không biết về bất kỳ điều gì chúng tôi đã thảo luận ở đây, nhưng họ cảm nhận được tác động của nó. Với MonadBFT là nền tảng của Monad trên chuỗi, người dùng có thể mong đợi tất cả những đặc điểm tốt dưới đây mà không cần hy sinh tính phân quyền và khả năng chống kiểm duyệt.
Để tổng kết, MonadBFT giới thiệu bốn đổi mới cốt lõi trên cơ sở của sự đồng thuận kiểu HotStuff theo cách pipelined:
Chống Tail-Forking: MonadBFT là giao thức BFT đầu tiên được xếp hạng để loại bỏ các cuộc tấn công tail-forking. Điều này được thực hiện bằng cách yêu cầu người lãnh đạo tiếp theo đề xuất lại khối đã được bỏ phiếu cuối cùng nếu người lãnh đạo trước đó thất bại, hoặc nếu không, hiển thị Một Chứng chỉ Không Ủng hộ (NEC) như bằng chứng cho thấy khối thiếu sự ủng hộ. Điều này đảm bảo rằng không có khối được ủng hộ bởi đa số tuyệt đối sẽ bị bỏ rơi, bảo vệ phần thưởng của những người lãnh đạo trung thực và ngăn chặn các cuộc reorg độc hại và trích xuất MEV chéo khối.
Đồng thuận suy đoán trong một vòng: Validators có thể xác nhận một khối sau một vòng giao tiếp duy nhất (một đề xuất lãnh đạo và phiếu bầu), mang lại cho khách hàng sự đảm bảo ngay lập tức về việc bao gồm. Xác nhận suy đoán này chỉ sẽ hoàn lại nếu người lãnh đạo phủ nhận (hành động có thể được chứng minh và trừng phạt), khiến cho nó trở thành một giả định an toàn trong thực tế.
Phản hồi lạc quan: Giao thức hoạt động ở tốc độ mạng mà không có sự chậm trễ bẩm sinh. Các nhà lãnh đạo tiến hành thống nhất ngay khi nhận được số phiếu cần thiết, và thay đổi quan điểm xảy ra ngay khi quorum của thời gian chờ được quan sát, thay vì chờ đợi một khoảng thời gian chờ cố định. Thiết kế phản ứng lạc quan này giảm thiểu thời gian chờ đợi và tối ưu hóa công suất, trong khi vẫn xử lý bất đồng bộ và lỗi robustly khi chúng xảy ra.
Giao Tiếp Tuyến Tính: Trên con đường hạnh phúc (nghĩa là người điều hành là trung thực), phức tạp tin nhắn và xác thực tuyến tính theo số lượng người xác thực. MonadBFT duy trì mẫu giao tiếp hiệu quả của HotStuff, sử dụng chữ ký tổng hợp và phát sóng đơn giản từ người điều hành đến người xác thực, cho phép giao thức mở rộng lên hàng trăm người xác thực mà không gặp trở ngại về hiệu suất.
TrongPhần 1,Chúng tôi đã xem xét cách hoạt động của sự đồng thuận PBFT cổ điển và cách các phiên bản trước của HotStuff hoạt động. Chúng tôi cũng đã xem xét cách MonadBFT giải quyết vấn đề tail-forking của HotStuff, đó là vấn đề mà các khối hợp lệ đôi khi bị bỏ lại trong các hệ thống pipelined.
Vấn đề tail-forking này tạo ra hai vấn đề lớn: 1) nó làm hỏng phần thưởng cho những người xây dựng block trung thực và 2) có thể làm đình trệ mạng lưới.
MonadBFT giới thiệu quy tắc Reproposal và cơ chế bỏ phiếu Không-Tán-Thành để loại bỏ vấn đề tail-forking, đảm bảo rằng bất kỳ khối nào được phê duyệt đúng đắn từ một người đề xuất trung thực đều sẽ luôn được đưa vào chuỗi.
Trong phần 2, chúng tôi khám phá hai đặc tính khác của MonadBFT là 1) tính cuối cùng có tính chất suy luận và 2) tính nhanh nhẹn lạc quan. Chúng tôi cũng sẽ khám phá các hệ quả của MonadBFT đối với các nhà phát triển.
Ngoài sự chống lại fork đuôi, một đặc điểm quan trọng khác của MonadBFT là sự hoàn thiện suy đoán trong một vòng duy nhất.
Trong các thuật ngữ thực tiễn, điều này có nghĩa là khách hàng và người dùng có thể nhận được xác nhận giao dịch ngay sau khi một khối nhận được đa số phiếu bầu, ngay cả trước khi vòng tiếp theo hoàn tất.
Nhớ rằng trong giao thức cơ sở HotStuff, một khối thường không được coi là cuối cùng (không thể hoàn tác) cho đến khi nó đã trải qua ít nhất hai giai đoạn (ví dụ: Fast-Hotstuff & Diem-BFT): một giai đoạn để có Chứng chỉ Quorum (khoá khối với ≥2f+1 phiếu bầu), và một giai đoạn thứ hai nơi nhà lãnh đạo tiếp theo xây dựng trên QC đó và cam kết khối.
Việc cam kết hai giai đoạn này là cần thiết để đảm bảo an toàn: khi đủ nút trung thực đã khóa một khối, không có khối xung đột nào có thể thu thập một số đồng thuận, và việc cam kết trong vòng tiếp theo làm cho nó vĩnh viễn. Vì vậy, thông thường, một khách hàng có thể phải đợi cho đến khi khối tiếp theo hoặc vòng tiếp theo được sản xuất trước khi họ biết giao dịch trước đó là cuối cùng.
MonadBFT cơ bản cho phép một giao dịch được coi là đủ cuối cùng (an toàn để thực hiện) sau chỉ một vòng bỏ phiếu. Điều này được gọi là tính cuối cùng có thể đoán định.
Khi một lãnh đạo đề xuất một khối và các người xác minh bầu chọn để tạo một QC cho khối đó, khối đó hiện đang ở trạng thái Đã được bầu chọn (nó đã bị khóa bởi một đa số). Trong MonadBFT, các người xác minh sẽ thực hiện các giao dịch của khối ngay sau khi họ tạo ra QC và thậm chí gửi một xác nhận sơ bộ cho các khách hàng cho biết khối đã (tạm thời) được chấp nhận. Điều này giống như việc nói: “Chúng tôi có một đa số siêu lớn đồng ý về khối này. Trừ khi có điều gì đó rất bất ngờ xảy ra, hãy xem xét khối này đã được xác nhận.”
Xác nhận ngay lập tức này là lạc quan. Khối chưa được cam kết trong sổ cái. Điều đó sẽ xảy ra khi đề xuất tiếp theo đến và hoàn tất nó (QC-on QC), nhưng trong điều kiện bình thường, không có gì có thể hủy bỏ nó. Tình huống duy nhất có thể quay trở lại một khối được thực thi một cách đặculative là nếu người lãnh đạo phản bội (tức là đề xuất hai khối khác nhau cùng ở cùng một chiều cao để chia phiếu).
Bạn có thể coi độ cố định chủ quan như một sản phẩm phụ khá tốt của khả năng chống tail-forking. Khả năng chống tail-forking đảm bảo rằng ngay cả khi nhà lãnh đạo tiếp theo gặp sự cố, đề xuất hiện tại sẽ không bị bỏ lại (nhờ vào quy tắc đề xuất lại và NEC). Vì vậy, chỉ khi một khối được thực hiện chủ quan bị loại bỏ là khi người đề xuất ban đầu phân đôi (lỗi double-signing mà rõ ràng là độc hại), điều này có thể: 1) phát hiện thông qua QCs mâu thuẫn, 2) bị trừng phạt và 3) rất hiếm gặp.
Trong các giao thức trước đó, họ không đảm bảo rằng nhà lãnh đạo tiếp theo sẽ đề xuất lại khối trước đó, vì vậy việc tail-forking có thể xảy ra, làm vỡ các giả định về việc đầu cơ.
Trong hầu hết các giao thức đồng thuận, có một thời gian chờ tích hợp sau mỗi vòng như một khoảng thời gian đệm hoặc hết giờ. Điều này nhằm đảm bảo tất cả các tin nhắn đã được gửi trước khi tiến xa hơn. Đây là cơ chế bảo vệ được thiết kế để xử lý tình huống xấu nhất như khi một nhà lãnh đạo gặp sự cố hoặc không gửi bất kỳ điều gì cả.
Các thời gian chờ này thường quá thận trọng. Nếu mạng hoạt động bình thường và tất cả các máy chủ xác thực đều hoạt động đúng cách, thời gian chờ cố định đó trở thành chi phí không cần thiết. Các khối có thể đã được hoàn chỉnh nhanh hơn, nhưng giao thức đã giữ lại chỉ trong trường hợp.
MonadBFT giới thiệu tính linh hoạt lạc quan, có nghĩa là giao thức có thể tiến lên ngay lập tức dựa trên các tin nhắn mạng, thay vì luôn luôn phụ thuộc vào bộ đếm thời gian cố định. Nguyên tắc thiết kế ở đây có thể được tóm tắt như “nhanh khi có thể, kiên nhẫn khi cần.”
MonadBFT được thiết kế sao cho trong cả trường hợp bình thường và ngay cả khi khôi phục từ lỗi, nó không dừng lại trong một khoảng thời gian chờ định trước nếu không cần thiết.
Trong thực tế, điều này có nghĩa là nếu độ trễ mạng giữa các nút là, ví dụ, 100ms, sự đồng thuận có thể tiềm năng hoàn thành một vòng trong chỉ vài trăm mili giây (cộng thêm chi phí tính toán và tổng hợp).
Nó không chờ đợi, ví dụ, một khoảng thời gian "khe" đầy đủ nếu nó không cần. Điều này tương phản với mạng chính Ethereum, theo sau mộtmô hình khe và kỷ nguyên. Trên Ethereum, việc sản xuất khối được cố định trong các khoảng thời gian 12 giây. Ngay cả khi mọi người đã sẵn sàng sớm hơn, giao thức vẫn chờ đợi.
Phương pháp của MonadBFT loại bỏ sự trễ nảy sinh không cần thiết. Nó giữ nguyên cấu trúc HotStuff theo hình ống dẫn nhưng loại bỏ quy tắc cứng nhắc “bạn phải chờ Δ giây” trong trường hợp bình thường. Điều này có nghĩa là nó có thể vượt trội hơn các hệ thống thời gian giới hạn về độ nhanh nhạy mà không cần hy sinh tính an toàn.
MonadBFT xây dựng trên dòng dõi của các giao thức đồng thuận HotStuff-family, nhưng nổi bật bằng việc đạt được sự kết hợp của các đặc tính mong muốn mà không có thiết kế trước đó nào có thể tích hợp mà không cần phải hy sinh. Các giao thức trước đó thường được tối ưu hóa cho một số chiều như thông lượng theo dòng hoặc giao tiếp tuyến tính nhưng phải hy sinh các chiều khác. MonadBFT duy nhất quản lý kết hợp sự phức tạp của tin nhắn tuyến tính, các commit theo dòng, kháng đỡ mã đuôi mạnh, phản hồi tức thì mà không có độ trễ cố định, và các cơ chế phục hồi hiệu quả, tất cả trong khi duy trì độ chắc chắn nhanh chóng và cam kết sống cao. Bảng dưới đây tóm lược cách MonadBFT so sánh với các giao thức BFT người lãnh đạo quay vòng khác nhau qua các chiều kích thước quan trọng này:
Đối với các nhà phát triển, MonadBFT có nghĩa là một vài điều:
Đối với Người Dùng Cuối: Một người dùng thông thường sẽ không biết về bất kỳ điều gì chúng tôi đã thảo luận ở đây, nhưng họ cảm nhận được tác động của nó. Với MonadBFT là nền tảng của Monad trên chuỗi, người dùng có thể mong đợi tất cả những đặc điểm tốt dưới đây mà không cần hy sinh tính phân quyền và khả năng chống kiểm duyệt.
Để tổng kết, MonadBFT giới thiệu bốn đổi mới cốt lõi trên cơ sở của sự đồng thuận kiểu HotStuff theo cách pipelined:
Chống Tail-Forking: MonadBFT là giao thức BFT đầu tiên được xếp hạng để loại bỏ các cuộc tấn công tail-forking. Điều này được thực hiện bằng cách yêu cầu người lãnh đạo tiếp theo đề xuất lại khối đã được bỏ phiếu cuối cùng nếu người lãnh đạo trước đó thất bại, hoặc nếu không, hiển thị Một Chứng chỉ Không Ủng hộ (NEC) như bằng chứng cho thấy khối thiếu sự ủng hộ. Điều này đảm bảo rằng không có khối được ủng hộ bởi đa số tuyệt đối sẽ bị bỏ rơi, bảo vệ phần thưởng của những người lãnh đạo trung thực và ngăn chặn các cuộc reorg độc hại và trích xuất MEV chéo khối.
Đồng thuận suy đoán trong một vòng: Validators có thể xác nhận một khối sau một vòng giao tiếp duy nhất (một đề xuất lãnh đạo và phiếu bầu), mang lại cho khách hàng sự đảm bảo ngay lập tức về việc bao gồm. Xác nhận suy đoán này chỉ sẽ hoàn lại nếu người lãnh đạo phủ nhận (hành động có thể được chứng minh và trừng phạt), khiến cho nó trở thành một giả định an toàn trong thực tế.
Phản hồi lạc quan: Giao thức hoạt động ở tốc độ mạng mà không có sự chậm trễ bẩm sinh. Các nhà lãnh đạo tiến hành thống nhất ngay khi nhận được số phiếu cần thiết, và thay đổi quan điểm xảy ra ngay khi quorum của thời gian chờ được quan sát, thay vì chờ đợi một khoảng thời gian chờ cố định. Thiết kế phản ứng lạc quan này giảm thiểu thời gian chờ đợi và tối ưu hóa công suất, trong khi vẫn xử lý bất đồng bộ và lỗi robustly khi chúng xảy ra.
Giao Tiếp Tuyến Tính: Trên con đường hạnh phúc (nghĩa là người điều hành là trung thực), phức tạp tin nhắn và xác thực tuyến tính theo số lượng người xác thực. MonadBFT duy trì mẫu giao tiếp hiệu quả của HotStuff, sử dụng chữ ký tổng hợp và phát sóng đơn giản từ người điều hành đến người xác thực, cho phép giao thức mở rộng lên hàng trăm người xác thực mà không gặp trở ngại về hiệu suất.