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