Espresso thay đổi quy trình chốt cuối cùng của khối trong HotShot, hoàn tất hai vòng bỏ phiếu ngay trong cùng một view. Trước đây, ngay cả khối đã đạt đủ phiếu theo ngưỡng túc số vẫn phải chờ leader tiếp theo đề xuất và tổ chức bỏ phiếu.
Trong tài liệu kỹ thuật công bố ngày 20, nhà phát triển Espresso Systems giải thích cách thức hoạt động của cơ chế đồng thuận được áp dụng trong đợt nâng cấp mainnet hồi tháng 9. Trước đó, TokenPost đưa tin thời gian xác nhận giao dịch đã giảm xuống dưới 1 giây sau đợt nâng cấp này. Tài liệu mới giải thích các quy tắc đồng thuận hỗ trợ tốc độ đó.
View là đơn vị đồng thuận, trong đó leader đề xuất một khối và các trình xác thực bỏ phiếu. Ngưỡng túc số là số phiếu tối thiểu cần có để đạt đồng thuận. HotShot trước đây dùng cơ chế gửi nối tiếp: dù thu đủ phiếu theo ngưỡng túc số trong một view, hệ thống vẫn chưa chốt khối ngay.
Chứng thư bỏ phiếu của một view phải được đưa vào đề xuất ở view tiếp theo, rồi chứng thư của view đó tiếp tục được chuyển đi để khối trước được chốt. Cấu trúc này yêu cầu mỗi view lần lượt thực hiện một lượt đề xuất và bỏ phiếu.
Việc chốt khối phụ thuộc vào diễn biến bình thường của các view tiếp theo. Nếu leader ở lượt sau chậm trễ hoặc ngoại tuyến, khối đã có đủ phiếu theo ngưỡng túc số vẫn có thể phải chờ được chốt.
Trong cơ chế mới, leader chia khối thành nhiều mảnh bằng mã hóa xóa dữ liệu rồi gửi cho các trình xác thực. Mã hóa xóa dữ liệu cho phép khôi phục dữ liệu ban đầu từ một phần các mảnh.
Trình xác thực nhận được mảnh của mình sẽ phát tán lượt bỏ phiếu thứ nhất tới tất cả trình xác thực khác. Khi lượt bỏ phiếu đầu tiên đạt ngưỡng túc số, bất kỳ nút nào cũng có thể tạo chứng thư đầu tiên, khóa khối đó rồi gửi lượt bỏ phiếu thứ hai.
Nếu lượt bỏ phiếu thứ hai cũng đạt ngưỡng túc số, một nút sẽ tạo chứng thư thứ hai và chốt khối. Vì cả hai lượt bỏ phiếu đều kết thúc trong cùng một view, trạng thái của leader ở các lượt sau không còn quyết định việc chốt khối đó.
Cách chuyển tiếp phiếu cũng thay đổi. Trước đây, các trình xác thực gửi phiếu cho một leader để leader tạo chứng thư; trong cơ chế mới, các trình xác thực trao đổi phiếu trực tiếp với nhau. Bất kỳ nút nào xác nhận được đủ phiếu theo ngưỡng túc số đều có thể tạo chứng thư.
Độ phức tạp thông điệp tăng từ O(n) lên O(n²), trong đó n là số trình xác thực. Đổi lại, việc tổng hợp phiếu không còn phụ thuộc vào phản hồi của một leader duy nhất, qua đó có thể giảm tình trạng tắc nghẽn do một nút bị chậm hoặc gặp sự cố.
Espresso Systems cho biết với quy mô hiện tại khoảng 100 trình xác thực, các thông điệp bỏ phiếu có kích thước nhỏ nên hệ thống có thể xử lý được. Công ty nói thêm rằng nếu số trình xác thực tăng hơn 10 lần, có thể cần các biện pháp bổ trợ như chọn ủy ban, tổng hợp chữ ký và chuyển tiếp phiếu theo từng giai đoạn.
Việc các nút trao đổi phiếu trực tiếp và có thể tự tạo chứng thư cũng khiến quy trình con đồng bộ hóa view trước đây không còn cần thiết. Nút bỏ lỡ một số phiếu vẫn có thể đưa ra quyết định khi nhận chứng thư do nút khác tạo. Nếu leader ngoại tuyến hoặc hành xử ác ý, hệ thống sử dụng chứng thư hết thời gian chờ.
Việc xác nhận tính khả dụng của dữ liệu cũng được đưa vào bỏ phiếu đồng thuận. Trước đây, trước khi bỏ phiếu đồng thuận, một ủy ban về tính khả dụng dữ liệu riêng sẽ nhận dữ liệu khối, bỏ phiếu và tạo chứng thư.
Trong cơ chế mới, leader phân bổ các mảnh khối cho trình xác thực theo tỷ trọng cổ phần. Chỉ trình xác thực nhận được mảnh mới có thể bỏ phiếu lần đầu. Khi các trình xác thực đại diện cho 2/3 cổ phần bỏ phiếu, điều đó cho thấy có đủ mảnh để khôi phục khối. Vì vậy, ủy ban riêng về tính khả dụng dữ liệu và quy trình bỏ phiếu của ủy ban này đã được loại bỏ.
CometBFT cũng dùng hai loại phiếu khi chốt khối. Tuy nhiên, CometBFT đưa toàn bộ khối ra bỏ phiếu, còn HotShot mới chia khối thành các mảnh đã mã hóa xóa dữ liệu, đồng thời dùng phiếu để chứng minh tính khả dụng của dữ liệu.
Espresso Systems cho biết tính an toàn vẫn được duy trì: khi tỷ trọng cổ phần của các trình xác thực ác ý dưới 1/3, hai khối xung đột không thể cùng được chốt cuối cùng. Quy trình chốt cuối cùng của Espresso xác nhận dữ liệu và thứ tự giao dịch do rollup gửi lên; điều này không có nghĩa là giao dịch của rollup đã được thực thi hoặc đã được quyết toán trên một chuỗi cấp cao hơn như Ethereum(ETH).
Comment 0