Khung Shoal: Làm thế nào để giảm Trễ của Bullshark trên Aptos
Tổng quan
Aptos Labs đã giải quyết hai vấn đề mở quan trọng trong DAG BFT, giảm đáng kể độ trễ và lần đầu tiên loại bỏ nhu cầu về thời gian chờ trong giao thức thực sự có tính xác định. Tổng thể, trong trường hợp không có lỗi, độ trễ của Bullshark đã được cải thiện 40%, trong trường hợp có lỗi đã được cải thiện 80%.
Shoal là một khung công cụ để tăng cường giao thức đồng thuận dựa trên Narwhal ( thông qua đường ống và uy tín của người dẫn đầu như DAG-Rider, Tusk, Bullshark ). Đường ống giảm độ trễ sắp xếp DAG bằng cách giới thiệu một điểm neo trong mỗi vòng, uy tín của người dẫn đầu cải thiện thêm độ trễ bằng cách đảm bảo rằng điểm neo liên kết với nút xác minh nhanh nhất. Hơn nữa, uy tín của người dẫn đầu cho phép Shoal tận dụng cấu trúc DAG bất đồng bộ để loại bỏ tất cả các kịch bản thời gian chờ. Điều này cho phép Shoal cung cấp thuộc tính mà chúng tôi gọi là phản hồi phổ quát, nó bao gồm phản hồi lạc quan thường cần thiết.
Công nghệ này rất đơn giản, liên quan đến việc chạy nhiều phiên bản của giao thức cơ sở theo thứ tự, từng cái một. Do đó, khi được khởi tạo với Bullshark, chúng ta có một nhóm "cá mập" đang tham gia vào một cuộc tiếp sức.
Động cơ
Khi theo đuổi hiệu suất cao của mạng blockchain, mọi người luôn chú ý đến việc giảm độ phức tạp của giao tiếp. Tuy nhiên, phương pháp này không mang lại sự gia tăng đáng kể về thông lượng. Ví dụ, Hotstuff được triển khai trong các phiên bản đầu tiên của Diem chỉ đạt 3500 TPS, thấp hơn nhiều so với mục tiêu 100k+ TPS.
Đột phá gần đây xuất phát từ việc nhận ra rằng việc truyền dữ liệu là nút thắt chính dựa trên giao thức của các nhà lãnh đạo, có thể hưởng lợi từ việc phân tán. Hệ thống Narwhal tách biệt việc truyền dữ liệu với logic đồng thuận cốt lõi, đề xuất một kiến trúc trong đó tất cả các xác nhận viên đều truyền dữ liệu đồng thời, trong khi thành phần đồng thuận chỉ sắp xếp một lượng siêu dữ liệu nhỏ. Bài báo Narwhal báo cáo thông lượng 160.000 TPS.
Trước đây đã giới thiệu Quorum Store, tức là việc triển khai Narwhal tách biệt việc truyền dữ liệu và đồng thuận, cũng như cách sử dụng nó để mở rộng giao thức đồng thuận hiện tại Jolteon. Jolteon là một giao thức dựa trên người lãnh đạo, kết hợp đường đi nhanh tuyến tính của Tendermint và thay đổi tầm nhìn theo phong cách PBFT, có thể giảm độ trễ của Hotstuff xuống 33%. Tuy nhiên, rõ ràng các giao thức đồng thuận dựa trên người lãnh đạo không thể tận dụng tối đa tiềm năng thông lượng của Narwhal. Mặc dù việc truyền dữ liệu và đồng thuận đã được tách biệt, nhưng với việc tăng thông lượng, người lãnh đạo của Hotstuff/Jolteon vẫn bị hạn chế.
Do đó, quyết định triển khai Bullshark, một giao thức đồng thuận không có chi phí giao tiếp, trên Narwhal DAG. Thật không may, so với Jolteon, cấu trúc DAG hỗ trợ Bullshark có công suất cao đã mang lại chi phí trễ 50%.
Bài viết này giới thiệu cách Shoal giảm đáng kể Trễ của Bullshark.
Bối cảnh DAG-BFT
Mỗi đỉnh trong Narwhal DAG đều liên kết với một số vòng. Để vào vòng r, các xác thực viên phải trước tiên có được n-f đỉnh thuộc vòng r-1. Mỗi xác thực viên có thể phát sóng một đỉnh mỗi vòng, và mỗi đỉnh ít nhất phải tham chiếu đến n-f đỉnh của vòng trước. Do tính bất đồng bộ của mạng, các xác thực viên khác nhau có thể quan sát các chế độ nhìn địa phương khác nhau của DAG tại bất kỳ thời điểm nào.
Một thuộc tính quan trọng của DAG không phải là mơ hồ: nếu hai nút xác thực có cùng đỉnh v trong cách nhìn địa phương của chúng về DAG, thì chúng có lịch sử nguyên nhân hoàn toàn giống nhau về v.
Tổng thứ tự
Có thể đạt được sự đồng thuận về tổng thứ tự của tất cả các đỉnh trong DAG mà không cần chi phí truyền thông bổ sung. Để làm điều này, các xác thực trong DAG-Rider, Tusk và Bullshark sẽ giải thích cấu trúc của DAG như một giao thức đồng thuận, trong đó các đỉnh đại diện cho các đề xuất, và các cạnh đại diện cho các phiếu bầu.
Mặc dù logic giao thoa của cộng đồng trên cấu trúc DAG khác nhau, nhưng tất cả các giao thức đồng thuận dựa trên Narwhal hiện có đều có cấu trúc sau:
Điểm neo đã đặt trước: cứ sau vài vòng sẽ có một nhà lãnh đạo được xác định trước, đỉnh của nhà lãnh đạo được gọi là điểm neo;
Điểm neo sắp xếp: Các xác thực độc lập nhưng xác định cách quyết định thứ tự các điểm neo nào và bỏ qua các điểm neo nào;
Lịch sử nguyên nhân được sắp xếp: Các xác thực xử lý danh sách các điểm neo có thứ tự của họ lần lượt và sắp xếp tất cả các đỉnh không có thứ tự trước đó trong lịch sử nguyên nhân của mỗi điểm neo.
Điều quan trọng để đảm bảo tính an toàn là đảm bảo rằng trong bước (2), tất cả các nút xác thực trung thực tạo ra một danh sách điểm neo có thứ tự, để tất cả các danh sách chia sẻ cùng một tiền tố. Trong Shoal, có những quan sát sau về tất cả các giao thức nêu trên:
Tất cả các validator đều đồng ý với điểm neo có thứ tự đầu tiên.
Bullshark Trễ
Độ trễ của Bullshark phụ thuộc vào số vòng giữa các điểm neo có thứ tự trong DAG. Mặc dù phiên bản đồng bộ phần mềm của Bullshark thực tế có độ trễ tốt hơn so với phiên bản không đồng bộ, nhưng vẫn chưa phải là tốt nhất.
Vấn đề 1: Thời gian trễ trung bình của khối. Trong Bullshark, mỗi vòng chẵn có một điểm neo, và đỉnh của mỗi vòng lẻ được giải thích là bỏ phiếu. Trong trường hợp phổ biến, cần hai vòng DAG để sắp xếp điểm neo, tuy nhiên, đỉnh trong lịch sử nguyên nhân của anchor cần nhiều vòng hơn để chờ anchor được sắp xếp. Trong trường hợp phổ biến, đỉnh trong vòng lẻ cần ba vòng, trong khi đỉnh không phải anchor trong vòng chẵn cần bốn vòng.
Câu hỏi 2: Trễ trong trường hợp lỗi, phân tích trễ ở trên áp dụng cho tình huống không có lỗi, mặt khác, nếu người lãnh đạo của một vòng không thể phát sóng điểm neo đủ nhanh, thì không thể sắp xếp điểm neo ( do đó bị bỏ qua ), do đó tất cả các đỉnh chưa được sắp xếp trong vài vòng trước phải chờ điểm neo tiếp theo được sắp xếp. Điều này sẽ làm giảm hiệu suất của mạng sao chép địa lý một cách đáng kể, đặc biệt là vì thời gian chờ Bullshark được sử dụng để chờ người lãnh đạo.
Khung Shoal
Shoal đã tăng cường Bullshark( hoặc bất kỳ giao thức BFT nào dựa trên Narwhal) thông qua đường ống, cho phép có một điểm neo trong mỗi vòng, và giảm độ trễ của tất cả các đỉnh không phải neo trong DAG xuống còn ba vòng. Shoal cũng đã giới thiệu cơ chế danh tiếng lãnh đạo không tốn kém trong DAG, điều này làm cho việc chọn lựa nghiêng về lãnh đạo nhanh chóng.
Thách thức
Trong bối cảnh của giao thức DAG, việc xây dựng quy trình và uy tín của người lãnh đạo được coi là những vấn đề khó khăn, lý do như sau:
Trước đây, dây chuyền sản xuất đã cố gắng sửa đổi logic Bullshark cốt lõi, nhưng điều này về bản chất dường như là không thể.
Danh tiếng của nhà lãnh đạo được giới thiệu trong DiemBFT và chính thức hóa trong Carousel, là việc lựa chọn động các nhà lãnh đạo tương lai dựa trên hiệu suất trong quá khứ của các trình xác thực trong ý tưởng về neo trong Bullshark. Mặc dù sự khác biệt trong danh tính nhà lãnh đạo không vi phạm tính bảo mật trong các giao thức này, nhưng trong Bullshark, nó có thể dẫn đến thứ tự hoàn toàn khác nhau, điều này gợi ý vấn đề cốt lõi, tức là việc lựa chọn neo vòng một cách động và xác định là cần thiết để giải quyết sự đồng thuận, trong khi các trình xác thực cần đạt được sự đồng thuận về lịch sử có thứ tự để chọn neo trong tương lai.
Là bằng chứng về độ khó của vấn đề, việc thực hiện của Bullshark ( bao gồm việc thực hiện hiện tại trong môi trường sản xuất ) không hỗ trợ những tính năng này.
Giao thức
Trong Shoal, chúng tôi dựa vào khả năng thực hiện tính toán cục bộ trên DAG và đạt được khả năng lưu trữ và giải thích lại thông tin từ những vòng trước. Với sự đồng thuận của tất cả các xác thực viên về cái nhìn cốt lõi của điểm neo có thứ tự đầu tiên, Shoal kết hợp tuần tự nhiều phiên bản Bullshark để xử lý chúng theo chuỗi, khiến cho ( điểm neo có thứ tự đầu tiên trở thành điểm chuyển tiếp của các phiên bản, cũng như ) lịch sử nguyên nhân của các điểm neo được sử dụng để tính toán danh tiếng của người dẫn đầu.
Dòng chảy
V ánh xạ vòng đến lãnh đạo. Shoal lần lượt chạy các phiên bản của Bullshark, để cho mỗi phiên bản, điểm neo được xác định trước bởi ánh xạ F. Mỗi phiên bản đều đặt hàng một điểm neo, điều này sẽ kích hoạt chuyển sang phiên bản tiếp theo.
Ban đầu, Shoal đã khởi động phiên bản đầu tiên của Bullshark trong vòng đầu tiên của DAG và vận hành nó cho đến khi xác định được điểm neo có thứ tự đầu tiên, chẳng hạn như trong vòng r. Tất cả các trình xác thực đều đồng ý với điểm neo này. Do đó, tất cả các trình xác thực có thể đồng ý chắc chắn để giải thích lại DAG bắt đầu từ vòng r+1. Shoal chỉ khởi động một phiên bản Bullshark mới trong vòng r+1.
Trong trường hợp tốt nhất, điều này cho phép Shoal đặt một cái neo trong mỗi vòng. Điểm neo của vòng đầu tiên được sắp xếp theo thể thức của trường hợp đầu tiên. Sau đó, Shoal bắt đầu một trường hợp mới trong vòng thứ hai, trường hợp này có một điểm neo mà cái neo được sắp xếp theo trường hợp đó, sau đó, một trường hợp mới khác đặt điểm neo trong vòng thứ ba, và quá trình này tiếp tục.
Danh tiếng của nhà lãnh đạo
Trong quá trình sắp xếp Bullshark, việc bỏ qua các điểm neo sẽ làm tăng độ trễ. Trong trường hợp này, công nghệ pipeline không thể phát huy tác dụng, vì không thể khởi động một phiên bản mới trước khi đặt hàng điểm neo của phiên bản trước đó. Shoal đảm bảo rằng các nhà lãnh đạo tương ứng sẽ ít có khả năng được chọn để xử lý các điểm neo bị mất trong tương lai bằng cách sử dụng cơ chế tín nhiệm để phân bổ điểm cho mỗi nút xác thực dựa trên lịch sử hoạt động gần đây của họ. Các xác thực viên phản hồi và tham gia vào giao thức sẽ nhận được điểm cao, ngược lại, các nút xác thực sẽ được phân bổ điểm thấp vì chúng có thể bị sập, chậm hoặc có hành vi xấu.
Ý tưởng của nó là trong mỗi lần cập nhật điểm số, xác định lại một cách chắc chắn ánh xạ đã định nghĩa từ vòng đến nhà lãnh đạo F, nghiêng về phía nhà lãnh đạo có điểm số cao hơn. Để các xác thực viên đạt được sự đồng thuận trên ánh xạ mới, họ nên đạt được sự đồng thuận về điểm số, qua đó đạt được sự đồng thuận trên lịch sử được sử dụng để suy diễn điểm số.
Trong Shoal, quy trình và danh tiếng lãnh đạo có thể kết hợp tự nhiên với nhau, vì chúng đều sử dụng cùng một công nghệ cốt lõi, đó là giải thích lại DAG sau khi đạt được đồng thuận về điểm neo có thứ tự đầu tiên.
Trên thực tế, điểm khác biệt duy nhất là, sau khi sắp xếp các điểm neo trong vòng thứ r, những người xác thực chỉ cần tính toán ánh xạ mới F' bắt đầu từ vòng thứ r+1 dựa trên lịch sử nguyên nhân của các điểm neo được sắp xếp trong vòng thứ r. Sau đó, các nút xác thực bắt đầu từ vòng thứ r+1 sử dụng hàm chọn điểm neo được cập nhật F' để thực hiện một phiên bản mới của Bullshark.
Không còn thời gian chờ nào nữa
Thời gian quá hạn đóng vai trò rất quan trọng trong tất cả các triển khai BFT đồng bộ phần xác định dựa trên leader. Tuy nhiên, sự phức tạp mà chúng mang lại làm tăng số lượng trạng thái nội bộ cần quản lý và theo dõi, điều này làm tăng độ phức tạp của quá trình gỡ lỗi và yêu cầu nhiều kỹ thuật quan sát hơn.
Thời gian chờ cũng sẽ tăng đáng kể Trễ, vì việc cấu hình chúng một cách thích hợp là rất quan trọng và thường cần điều chỉnh động, vì nó phụ thuộc cao vào môi trường ( mạng ). Trước khi chuyển sang nhà lãnh đạo tiếp theo, giao thức sẽ trả toàn bộ hình phạt thời gian chờ cho nhà lãnh đạo gặp sự cố. Do đó, cài đặt thời gian chờ không thể quá bảo thủ, nhưng nếu thời gian chờ quá ngắn, giao thức có thể bỏ qua những nhà lãnh đạo tốt. Ví dụ, chúng tôi quan sát
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
Khung Shoal đã thả đáng kể độ trễ nhận thức chung Bullshark trên Aptos, nâng cao 40%-80%
Khung Shoal: Làm thế nào để giảm Trễ của Bullshark trên Aptos
Tổng quan
Aptos Labs đã giải quyết hai vấn đề mở quan trọng trong DAG BFT, giảm đáng kể độ trễ và lần đầu tiên loại bỏ nhu cầu về thời gian chờ trong giao thức thực sự có tính xác định. Tổng thể, trong trường hợp không có lỗi, độ trễ của Bullshark đã được cải thiện 40%, trong trường hợp có lỗi đã được cải thiện 80%.
Shoal là một khung công cụ để tăng cường giao thức đồng thuận dựa trên Narwhal ( thông qua đường ống và uy tín của người dẫn đầu như DAG-Rider, Tusk, Bullshark ). Đường ống giảm độ trễ sắp xếp DAG bằng cách giới thiệu một điểm neo trong mỗi vòng, uy tín của người dẫn đầu cải thiện thêm độ trễ bằng cách đảm bảo rằng điểm neo liên kết với nút xác minh nhanh nhất. Hơn nữa, uy tín của người dẫn đầu cho phép Shoal tận dụng cấu trúc DAG bất đồng bộ để loại bỏ tất cả các kịch bản thời gian chờ. Điều này cho phép Shoal cung cấp thuộc tính mà chúng tôi gọi là phản hồi phổ quát, nó bao gồm phản hồi lạc quan thường cần thiết.
Công nghệ này rất đơn giản, liên quan đến việc chạy nhiều phiên bản của giao thức cơ sở theo thứ tự, từng cái một. Do đó, khi được khởi tạo với Bullshark, chúng ta có một nhóm "cá mập" đang tham gia vào một cuộc tiếp sức.
Động cơ
Khi theo đuổi hiệu suất cao của mạng blockchain, mọi người luôn chú ý đến việc giảm độ phức tạp của giao tiếp. Tuy nhiên, phương pháp này không mang lại sự gia tăng đáng kể về thông lượng. Ví dụ, Hotstuff được triển khai trong các phiên bản đầu tiên của Diem chỉ đạt 3500 TPS, thấp hơn nhiều so với mục tiêu 100k+ TPS.
Đột phá gần đây xuất phát từ việc nhận ra rằng việc truyền dữ liệu là nút thắt chính dựa trên giao thức của các nhà lãnh đạo, có thể hưởng lợi từ việc phân tán. Hệ thống Narwhal tách biệt việc truyền dữ liệu với logic đồng thuận cốt lõi, đề xuất một kiến trúc trong đó tất cả các xác nhận viên đều truyền dữ liệu đồng thời, trong khi thành phần đồng thuận chỉ sắp xếp một lượng siêu dữ liệu nhỏ. Bài báo Narwhal báo cáo thông lượng 160.000 TPS.
Trước đây đã giới thiệu Quorum Store, tức là việc triển khai Narwhal tách biệt việc truyền dữ liệu và đồng thuận, cũng như cách sử dụng nó để mở rộng giao thức đồng thuận hiện tại Jolteon. Jolteon là một giao thức dựa trên người lãnh đạo, kết hợp đường đi nhanh tuyến tính của Tendermint và thay đổi tầm nhìn theo phong cách PBFT, có thể giảm độ trễ của Hotstuff xuống 33%. Tuy nhiên, rõ ràng các giao thức đồng thuận dựa trên người lãnh đạo không thể tận dụng tối đa tiềm năng thông lượng của Narwhal. Mặc dù việc truyền dữ liệu và đồng thuận đã được tách biệt, nhưng với việc tăng thông lượng, người lãnh đạo của Hotstuff/Jolteon vẫn bị hạn chế.
Do đó, quyết định triển khai Bullshark, một giao thức đồng thuận không có chi phí giao tiếp, trên Narwhal DAG. Thật không may, so với Jolteon, cấu trúc DAG hỗ trợ Bullshark có công suất cao đã mang lại chi phí trễ 50%.
Bài viết này giới thiệu cách Shoal giảm đáng kể Trễ của Bullshark.
Bối cảnh DAG-BFT
Mỗi đỉnh trong Narwhal DAG đều liên kết với một số vòng. Để vào vòng r, các xác thực viên phải trước tiên có được n-f đỉnh thuộc vòng r-1. Mỗi xác thực viên có thể phát sóng một đỉnh mỗi vòng, và mỗi đỉnh ít nhất phải tham chiếu đến n-f đỉnh của vòng trước. Do tính bất đồng bộ của mạng, các xác thực viên khác nhau có thể quan sát các chế độ nhìn địa phương khác nhau của DAG tại bất kỳ thời điểm nào.
Một thuộc tính quan trọng của DAG không phải là mơ hồ: nếu hai nút xác thực có cùng đỉnh v trong cách nhìn địa phương của chúng về DAG, thì chúng có lịch sử nguyên nhân hoàn toàn giống nhau về v.
Tổng thứ tự
Có thể đạt được sự đồng thuận về tổng thứ tự của tất cả các đỉnh trong DAG mà không cần chi phí truyền thông bổ sung. Để làm điều này, các xác thực trong DAG-Rider, Tusk và Bullshark sẽ giải thích cấu trúc của DAG như một giao thức đồng thuận, trong đó các đỉnh đại diện cho các đề xuất, và các cạnh đại diện cho các phiếu bầu.
Mặc dù logic giao thoa của cộng đồng trên cấu trúc DAG khác nhau, nhưng tất cả các giao thức đồng thuận dựa trên Narwhal hiện có đều có cấu trúc sau:
Điểm neo đã đặt trước: cứ sau vài vòng sẽ có một nhà lãnh đạo được xác định trước, đỉnh của nhà lãnh đạo được gọi là điểm neo;
Điểm neo sắp xếp: Các xác thực độc lập nhưng xác định cách quyết định thứ tự các điểm neo nào và bỏ qua các điểm neo nào;
Lịch sử nguyên nhân được sắp xếp: Các xác thực xử lý danh sách các điểm neo có thứ tự của họ lần lượt và sắp xếp tất cả các đỉnh không có thứ tự trước đó trong lịch sử nguyên nhân của mỗi điểm neo.
Điều quan trọng để đảm bảo tính an toàn là đảm bảo rằng trong bước (2), tất cả các nút xác thực trung thực tạo ra một danh sách điểm neo có thứ tự, để tất cả các danh sách chia sẻ cùng một tiền tố. Trong Shoal, có những quan sát sau về tất cả các giao thức nêu trên:
Tất cả các validator đều đồng ý với điểm neo có thứ tự đầu tiên.
Bullshark Trễ
Độ trễ của Bullshark phụ thuộc vào số vòng giữa các điểm neo có thứ tự trong DAG. Mặc dù phiên bản đồng bộ phần mềm của Bullshark thực tế có độ trễ tốt hơn so với phiên bản không đồng bộ, nhưng vẫn chưa phải là tốt nhất.
Vấn đề 1: Thời gian trễ trung bình của khối. Trong Bullshark, mỗi vòng chẵn có một điểm neo, và đỉnh của mỗi vòng lẻ được giải thích là bỏ phiếu. Trong trường hợp phổ biến, cần hai vòng DAG để sắp xếp điểm neo, tuy nhiên, đỉnh trong lịch sử nguyên nhân của anchor cần nhiều vòng hơn để chờ anchor được sắp xếp. Trong trường hợp phổ biến, đỉnh trong vòng lẻ cần ba vòng, trong khi đỉnh không phải anchor trong vòng chẵn cần bốn vòng.
Câu hỏi 2: Trễ trong trường hợp lỗi, phân tích trễ ở trên áp dụng cho tình huống không có lỗi, mặt khác, nếu người lãnh đạo của một vòng không thể phát sóng điểm neo đủ nhanh, thì không thể sắp xếp điểm neo ( do đó bị bỏ qua ), do đó tất cả các đỉnh chưa được sắp xếp trong vài vòng trước phải chờ điểm neo tiếp theo được sắp xếp. Điều này sẽ làm giảm hiệu suất của mạng sao chép địa lý một cách đáng kể, đặc biệt là vì thời gian chờ Bullshark được sử dụng để chờ người lãnh đạo.
Khung Shoal
Shoal đã tăng cường Bullshark( hoặc bất kỳ giao thức BFT nào dựa trên Narwhal) thông qua đường ống, cho phép có một điểm neo trong mỗi vòng, và giảm độ trễ của tất cả các đỉnh không phải neo trong DAG xuống còn ba vòng. Shoal cũng đã giới thiệu cơ chế danh tiếng lãnh đạo không tốn kém trong DAG, điều này làm cho việc chọn lựa nghiêng về lãnh đạo nhanh chóng.
Thách thức
Trong bối cảnh của giao thức DAG, việc xây dựng quy trình và uy tín của người lãnh đạo được coi là những vấn đề khó khăn, lý do như sau:
Trước đây, dây chuyền sản xuất đã cố gắng sửa đổi logic Bullshark cốt lõi, nhưng điều này về bản chất dường như là không thể.
Danh tiếng của nhà lãnh đạo được giới thiệu trong DiemBFT và chính thức hóa trong Carousel, là việc lựa chọn động các nhà lãnh đạo tương lai dựa trên hiệu suất trong quá khứ của các trình xác thực trong ý tưởng về neo trong Bullshark. Mặc dù sự khác biệt trong danh tính nhà lãnh đạo không vi phạm tính bảo mật trong các giao thức này, nhưng trong Bullshark, nó có thể dẫn đến thứ tự hoàn toàn khác nhau, điều này gợi ý vấn đề cốt lõi, tức là việc lựa chọn neo vòng một cách động và xác định là cần thiết để giải quyết sự đồng thuận, trong khi các trình xác thực cần đạt được sự đồng thuận về lịch sử có thứ tự để chọn neo trong tương lai.
Là bằng chứng về độ khó của vấn đề, việc thực hiện của Bullshark ( bao gồm việc thực hiện hiện tại trong môi trường sản xuất ) không hỗ trợ những tính năng này.
Giao thức
Trong Shoal, chúng tôi dựa vào khả năng thực hiện tính toán cục bộ trên DAG và đạt được khả năng lưu trữ và giải thích lại thông tin từ những vòng trước. Với sự đồng thuận của tất cả các xác thực viên về cái nhìn cốt lõi của điểm neo có thứ tự đầu tiên, Shoal kết hợp tuần tự nhiều phiên bản Bullshark để xử lý chúng theo chuỗi, khiến cho ( điểm neo có thứ tự đầu tiên trở thành điểm chuyển tiếp của các phiên bản, cũng như ) lịch sử nguyên nhân của các điểm neo được sử dụng để tính toán danh tiếng của người dẫn đầu.
Dòng chảy
V ánh xạ vòng đến lãnh đạo. Shoal lần lượt chạy các phiên bản của Bullshark, để cho mỗi phiên bản, điểm neo được xác định trước bởi ánh xạ F. Mỗi phiên bản đều đặt hàng một điểm neo, điều này sẽ kích hoạt chuyển sang phiên bản tiếp theo.
Ban đầu, Shoal đã khởi động phiên bản đầu tiên của Bullshark trong vòng đầu tiên của DAG và vận hành nó cho đến khi xác định được điểm neo có thứ tự đầu tiên, chẳng hạn như trong vòng r. Tất cả các trình xác thực đều đồng ý với điểm neo này. Do đó, tất cả các trình xác thực có thể đồng ý chắc chắn để giải thích lại DAG bắt đầu từ vòng r+1. Shoal chỉ khởi động một phiên bản Bullshark mới trong vòng r+1.
Trong trường hợp tốt nhất, điều này cho phép Shoal đặt một cái neo trong mỗi vòng. Điểm neo của vòng đầu tiên được sắp xếp theo thể thức của trường hợp đầu tiên. Sau đó, Shoal bắt đầu một trường hợp mới trong vòng thứ hai, trường hợp này có một điểm neo mà cái neo được sắp xếp theo trường hợp đó, sau đó, một trường hợp mới khác đặt điểm neo trong vòng thứ ba, và quá trình này tiếp tục.
Danh tiếng của nhà lãnh đạo
Trong quá trình sắp xếp Bullshark, việc bỏ qua các điểm neo sẽ làm tăng độ trễ. Trong trường hợp này, công nghệ pipeline không thể phát huy tác dụng, vì không thể khởi động một phiên bản mới trước khi đặt hàng điểm neo của phiên bản trước đó. Shoal đảm bảo rằng các nhà lãnh đạo tương ứng sẽ ít có khả năng được chọn để xử lý các điểm neo bị mất trong tương lai bằng cách sử dụng cơ chế tín nhiệm để phân bổ điểm cho mỗi nút xác thực dựa trên lịch sử hoạt động gần đây của họ. Các xác thực viên phản hồi và tham gia vào giao thức sẽ nhận được điểm cao, ngược lại, các nút xác thực sẽ được phân bổ điểm thấp vì chúng có thể bị sập, chậm hoặc có hành vi xấu.
Ý tưởng của nó là trong mỗi lần cập nhật điểm số, xác định lại một cách chắc chắn ánh xạ đã định nghĩa từ vòng đến nhà lãnh đạo F, nghiêng về phía nhà lãnh đạo có điểm số cao hơn. Để các xác thực viên đạt được sự đồng thuận trên ánh xạ mới, họ nên đạt được sự đồng thuận về điểm số, qua đó đạt được sự đồng thuận trên lịch sử được sử dụng để suy diễn điểm số.
Trong Shoal, quy trình và danh tiếng lãnh đạo có thể kết hợp tự nhiên với nhau, vì chúng đều sử dụng cùng một công nghệ cốt lõi, đó là giải thích lại DAG sau khi đạt được đồng thuận về điểm neo có thứ tự đầu tiên.
Trên thực tế, điểm khác biệt duy nhất là, sau khi sắp xếp các điểm neo trong vòng thứ r, những người xác thực chỉ cần tính toán ánh xạ mới F' bắt đầu từ vòng thứ r+1 dựa trên lịch sử nguyên nhân của các điểm neo được sắp xếp trong vòng thứ r. Sau đó, các nút xác thực bắt đầu từ vòng thứ r+1 sử dụng hàm chọn điểm neo được cập nhật F' để thực hiện một phiên bản mới của Bullshark.
Không còn thời gian chờ nào nữa
Thời gian quá hạn đóng vai trò rất quan trọng trong tất cả các triển khai BFT đồng bộ phần xác định dựa trên leader. Tuy nhiên, sự phức tạp mà chúng mang lại làm tăng số lượng trạng thái nội bộ cần quản lý và theo dõi, điều này làm tăng độ phức tạp của quá trình gỡ lỗi và yêu cầu nhiều kỹ thuật quan sát hơn.
Thời gian chờ cũng sẽ tăng đáng kể Trễ, vì việc cấu hình chúng một cách thích hợp là rất quan trọng và thường cần điều chỉnh động, vì nó phụ thuộc cao vào môi trường ( mạng ). Trước khi chuyển sang nhà lãnh đạo tiếp theo, giao thức sẽ trả toàn bộ hình phạt thời gian chờ cho nhà lãnh đạo gặp sự cố. Do đó, cài đặt thời gian chờ không thể quá bảo thủ, nhưng nếu thời gian chờ quá ngắn, giao thức có thể bỏ qua những nhà lãnh đạo tốt. Ví dụ, chúng tôi quan sát