Tóm tắt về đột phá trong MonadBFT Hôm qua, Category Labs đã phát hành tài liệu MonadBFT, mô tả cơ chế đồng thuận sẽ vận hành Monad tại mainnet. MonadBFT là một phát triển quan trọng trong nghiên cứu đồng thuận vì đây là lần đầu tiên Pipelined HotStuff trở nên kháng cự với tail-forking. Tail-forking xảy ra khi một slot bị bỏ lỡ khiến đề xuất trước đó bị loại bỏ và được khai thác lại. Đây là một vấn đề nghiêm trọng trong các công thức Pipelined HotStuff trước đây vì nó mở ra các cuộc tấn công MEV đa khối làm mất ổn định đồng thuận. Giải quyết vấn đề này là một điều rất quan trọng vì nó mang lại cho chúng ta tất cả lợi ích của Pipelined HotStuff - khối thường xuyên, độ trễ thấp, bộ xác thực lớn - trong khi tránh được nhược điểm lớn nhất. MonadBFT cũng cung cấp một nâng cấp lớn cho tính cuối cùng. Nó có tính cuối cùng dự đoán một slot (500 ms) và tính cuối cùng cứng hai slot (1s). “Tính cuối cùng dự đoán” có nghĩa là “tính cuối cùng sẽ chỉ bị đảo ngược trong trường hợp có sự lừa đảo (ký kép) bởi đa số các bộ xác thực”. Sự lừa đảo là một vi phạm lớn trong hầu hết các hệ thống blockchain và thường bị phạt bằng cách cắt giảm; hình phạt càng lớn cho sự lừa đảo thì bạn càng có thể nghĩ về “tính cuối cùng dự đoán” gần với tính cuối cùng. Tính cuối cùng dự đoán một slot là một mở khóa lớn cho các ứng dụng hiệu suất cao, có thể tự tin hiển thị trạng thái cập nhật của thế giới ngay sau khi nhận được khối tiếp theo. Những thuộc tính này làm cho MonadBFT trở thành một tiến bộ lớn trong đồng thuận và là một bổ sung xứng đáng cho các cải tiến cộng dồn khác trong Monad bao gồm Thực thi không đồng bộ, Thực thi song song lạc quan và MonadDb. Phần còn lại của bài viết này là tóm tắt cách các cải tiến liên tiếp trong HotStuff đã xây dựng dựa trên nhau, để giải thích vấn đề mà MonadBFT giải quyết. Tóm tắt: 1. HotStuff mang lại cho chúng ta độ phức tạp giao tiếp tuyến tính để chúng ta có thể có các bộ xác thực lớn, nhưng nó không hiệu quả lắm 2. Pipelined HotStuff mang lại cho chúng ta hiệu quả và độ trễ thấp từ việc đề xuất khối mỗi slot, nhưng gặp vấn đề về tail forks 3. MonadBFT mang lại cho chúng ta khả năng kháng cự tail-fork và tính cuối cùng dự đoán một slot --- HotStuff: Độ phức tạp giao tiếp tuyến tính cho phép số lượng nút lớn Các thuật toán HotStuff hoàn thành qua nhiều vòng giao tiếp, thường có dạng giao tiếp “fan out, fan in” trực tiếp từ các lãnh đạo đến các bộ xác thực trở lại lãnh đạo. Mỗi vòng bắt đầu với việc lãnh đạo gửi một thông điệp trực tiếp đến các bộ xác thực khác, mỗi người gửi lại một thông điệp đã ký xác nhận đã nhận được thông điệp. Miễn là một siêu đa số (2/3) các bộ xác thực gửi lại xác nhận, mỗi vòng kết thúc với việc lãnh đạo tổng hợp các xác nhận đã ký thành một Chứng chỉ Quorum (QC), đóng vai trò là bằng chứng rằng siêu đa số đã xác nhận thông điệp trước đó. Các thuật toán HotStuff có nhiều vòng giao tiếp như thế này. - Thông điệp đầu tiên từ lãnh đạo là một đề xuất khối - Thông điệp thứ hai là QC cho đề xuất khối đó - Thông điệp thứ ba là QC về QC trước đó (tức là QC-on-QC) - và cứ thế Nếu quy trình bị gián đoạn bất cứ lúc nào trước khi tính cuối cùng, khối sẽ không được hoàn tất và bị loại bỏ; các giao dịch từ khối đó sẽ phải được bao gồm lại trong khối tiếp theo. Giao thức HotStuff gốc không có pipelining và có 3 vòng giao tiếp trước khi tính cuối cùng; cùng một bộ xác thực đóng vai trò lãnh đạo cho mỗi vòng. --- Pipelined HotStuff: Một khối mới mỗi slot nâng cao hiệu quả Pipelining là điều mà tất cả chúng ta đều làm một cách trực quan khi có hai tải giặt để hoàn thành. Thay vì chờ tải 1 hoàn thành chu kỳ đầy đủ trước khi bắt đầu tải 2, trong pipelining chúng ta đặt tải 1 vào máy sấy cùng lúc với tải 2 vào máy giặt. Bạn có thể nghĩ về HotStuff gốc như cách tiếp cận ngây thơ đó để giặt đồ (không bắt đầu tải 2 cho đến khi tải 1 hoàn toàn xong), trong khi Pipelined HotStuff là thực hiện hành vi trực quan của việc tiến hành nhiều tải giặt một cách so le. Trong Pipelined HotStuff, chúng ta so le các đề xuất, sao cho có một khối mới được đề xuất ở mỗi vòng, với khối mới đi kèm trên đầu thông điệp mang QC từ khối trước đó. Các đề xuất khối tiến tới tính cuối cùng qua nhiều vòng. Lợi ích của pipelining là đáng kể. Pipelining nâng cao mật độ của các đề xuất khối, vì một đề xuất khối được thực hiện ở mỗi slot, điều này nâng cao thông lượng và giảm thời gian đến tính cuối cùng. Tuy nhiên, có một nhược điểm lớn của pipelining, điều này được minh họa tốt nhất bằng một ví dụ. Giả sử rằng các lãnh đạo cho các khối N, N+1 và N+2 là Alice, Bob và Charlie. Nếu Bob bỏ lỡ slot của mình, thì đề xuất của Alice cũng sẽ bị vô hiệu hóa, vì thông điệp của Bob mang cả đề xuất của anh ấy và một QC cho đề xuất của Alice. Khi điều này xảy ra, Charlie sẽ được gọi để tạo ra một khối như thể đề xuất của Alice chưa từng tồn tại. Chúng tôi gọi hành vi này là “tail-forking”, và nó có thể được coi là một mini-reorg với độ sâu 1. Khả năng tail-forking có hậu quả đáng kể, vì các slot bị bỏ lỡ không nhất thiết là do tai nạn. Nếu có cơ hội để khai thác giá trị bằng cách khai thác lại khối của Alice trong khi sắp xếp lại hoặc bỏ qua một số giao dịch, thì Bob và Charlie có thể thông đồng để Bob cố tình bỏ lỡ slot của mình, tạo ra cơ hội cho Charlie khai thác lại khối của Alice. Đây đã là một nhược điểm đáng kể của các giao thức Pipelined HotStuff (một số trong đó đang ở mainnet ngày nay). --- MonadBFT thay đổi điều này MonadBFT là giao thức đầu tiên cho phép pipelining trong khi làm cho thuật toán kháng cự tail fork. Kháng cự tail fork này đến từ quy trình dự phòng khi Bob bỏ lỡ slot của mình, cho phép các bộ xác thực tập hợp kiến thức tập thể của họ về đề xuất của Alice và mức độ đồng thuận của nó trong bộ xác thực. Đặc biệt, dưới MonadBFT, nếu Bob bỏ lỡ slot của mình, thì quy trình dự phòng có các bộ xác thực giao tiếp với nhau bằng các xác nhận đã ký tuyên bố liệu họ có thấy khối của Alice hay không. Nếu siêu đa số xác nhận khối của Alice, thì Charlie buộc phải đề xuất lại khối của Alice. Nếu Charlie muốn đề xuất một khối khác thì anh ấy phải cung cấp một xác nhận đã ký từ đa số các bộ xác thực xác nhận không thấy khối của Alice đúng thời gian. Trong trường hợp điển hình khi Charlie đề xuất lại khối của Alice, anh ấy sau đó được phép đề xuất khối của mình trong vòng tiếp theo. Kết quả là hai thuộc tính quan trọng: kháng cự tail-forking và tính cuối cùng dự đoán một slot. Chúng tôi đã nói về kháng cự tail-forking, nhưng hãy hiểu tác động đến tính cuối cùng. Như trước đây, giả sử các lãnh đạo cho các khối N, N+1 và N+2 là Alice, Bob và Charlie. Dưới Pipelined 2-Phase HotStuff - tức là trước MonadBFT - với tư cách là một bộ xác thực (hoặc một nút đầy đủ), bạn không thể hoàn tất đề xuất khối của Alice cho đến khi bạn thấy đề xuất khối của Charlie. Tại sao? Bởi vì nếu bạn hoàn tất ngay khi bạn thấy đề xuất của Bob, có thể Bob đang làm rối bạn bằng cách CHỈ chuyển tiếp đề xuất của mình cho bạn, và anh ấy thực sự có kế hoạch không gửi đề xuất của mình cho mọi người khác, do đó bỏ lỡ slot của mình. Nhưng trong MonadBFT, ngay khi bạn thấy đề xuất của Bob, bạn có thể “dự đoán” hoàn tất đề xuất của Alice vì đề xuất của Bob bao gồm một QC trên đề xuất của Alice, là bằng chứng rằng 2/3 mạng đã xác nhận đề xuất của Alice. Ngay cả khi Bob đang làm rối bạn bằng cách CHỈ chuyển tiếp đề xuất của mình cho bạn, và sẽ kết thúc việc bỏ lỡ slot của mình, bạn biết rằng một siêu đa số của mạng đã thấy đề xuất của Alice và, khi họ tham gia vào quy trình dự phòng, sẽ ký lại đề xuất của Alice. Cách duy nhất mà khối của Alice sẽ không được hoàn tất là nếu các bộ xác thực lừa đảo và ký xác nhận rằng họ không thấy thông điệp của Alice. Lỗi này dễ dàng chứng minh - chúng tôi có các thông điệp mâu thuẫn đã ký từ họ. Nếu hình phạt cho sự lừa đảo là đáng kể - và nó nên là như vậy - thì tính cuối cùng “dự đoán” này thực sự không thực sự là dự đoán. --- Kết luận MonadBFT là một phát triển cực kỳ thú vị cho đồng thuận và là một bổ sung xứng đáng cho các cải tiến cộng dồn khác trong Monad bao gồm Thực thi không đồng bộ, Thực thi song song lạc quan và MonadDb. Xin chúc mừng lớn đến @MohammadMJalal1 và @KushalBabel về đột phá quan trọng này. MonadBFT sẽ được triển khai sớm trên Monad Testnet, hiện đang triển khai Pipelined 2-Phase HotStuff. Để đọc thêm, hãy xem bài viết blog và tài liệu liên kết trong tweet tiếp theo.
26,23K