Khi tôi nghiên cứu chuỗi PoS, điều tôi quan tâm nhất trước đây là APY và thời gian khóa. Sau khi nghiên cứu Succinct Attestation và Proof-of-Blind Bid của Dusk, tôi lại bắt đầu để ý tới một câu hỏi thực tế hơn: khi <0>$DUSK </0> đã vào trạng thái Blind Bid, người dùng cần thỏa qua những điều kiện nào để thực sự lấy lại nó.
Ban đầu tôi nghĩ rằng tham gia vào đồng thuận chỉ đơn giản là đặt cược (staking) và ủy quyền (delegation). Nhưng sau khi đọc tài liệu kỹ thuật của Dusk, tôi nhận ra đó thực ra là một chuỗi chuyển đổi trạng thái. Thông thường, người dùng khóa <0>#dusk </0> vào Bid Contract, tạo ra một bid chứa số tiền cam kết và secretHash, sau đó chèn vào Merkle Tree, đồng thời kèm theo hai mốc chiều cao quan trọng: h{eligibility} (bắt đầu được tham gia vào đồng thuận) và h{expiration} (chiều cao hết hạn).
Ở giai đoạn Generation, mạng trích xuất Generator một cách riêng tư nhờ Proof-of-Blind Bid; danh tính người chào giá luôn được che giấu. Trong khi đó, Provisioner tham gia ủy ban thông qua rút thăm định danh (deterministic), và ở các giai đoạn Reduction và Agreement, thực hiện hai vòng bỏ phiếu cho các khối ứng viên để đạt được tính cuối cùng theo thống kê.
Điều thực sự khiến tôi quan tâm là: gửi Bid không đồng nghĩa với việc có thể rút bất cứ lúc nào. Bởi Bid Contract quy định rằng trước khi đạt tới h{expiration}, người dùng không thể khởi tạo F^{WithdrawBid}. Hơn nữa, Dusk đã tách vai trò: bạn có thể là Generator (thông qua việc cạnh tranh quyền sinh khối bằng Blind Bid), hoặc là Provisioner (thông qua Stake Contract để khóa phần cược tham gia xác thực). Nếu bạn với tư cách Provisioner ký đôi (double-sign) hoặc có hành vi xấu, bất kỳ ai cũng có thể gọi hàm F^{Slash} của Stake Contract để tố cáo, và phần cược của bạn sẽ bị phạt một phần. Nói cách khác, tham gia vào đồng thuận không phải là một nút bấm, mà là một khung thời gian chịu ràng buộc bởi quy tắc giao thức—<0>@Dusk </0> của bạn vừa bảo vệ mạng trước thời điểm hết hạn, vừa phải gánh rủi ro bị trừng phạt.
Vì vậy, theo tôi, điều Dusk thực sự giải quyết là: tính minh bạch trong bầu chọn leader ở PoS và vấn đề MEV; giao thức ghép các trạng thái đó lại bằng Blind Bid, rút thăm định danh, tách vai trò và tính cuối cùng theo thống kê. Chi phí cũng rất rõ ràng: người dùng không còn chỉ là "staking DUSK để nhận lợi suất", mà phải hiểu mối quan hệ giữa Bid, Stake, Generator, Provisioner và Slashing.
Thứ tôi sẽ tiếp tục quan sát lâu dài không phải là việc cổng staking có đơn giản đến đâu, mà liệu người dùng phổ thông có thực sự hiểu rằng khi họ tham gia đồng thuận, mình đang chờ đợi điều gì hay không.
Ban đầu tôi nghĩ rằng tham gia vào đồng thuận chỉ đơn giản là đặt cược (staking) và ủy quyền (delegation). Nhưng sau khi đọc tài liệu kỹ thuật của Dusk, tôi nhận ra đó thực ra là một chuỗi chuyển đổi trạng thái. Thông thường, người dùng khóa <0>#dusk </0> vào Bid Contract, tạo ra một bid chứa số tiền cam kết và secretHash, sau đó chèn vào Merkle Tree, đồng thời kèm theo hai mốc chiều cao quan trọng: h{eligibility} (bắt đầu được tham gia vào đồng thuận) và h{expiration} (chiều cao hết hạn).
Ở giai đoạn Generation, mạng trích xuất Generator một cách riêng tư nhờ Proof-of-Blind Bid; danh tính người chào giá luôn được che giấu. Trong khi đó, Provisioner tham gia ủy ban thông qua rút thăm định danh (deterministic), và ở các giai đoạn Reduction và Agreement, thực hiện hai vòng bỏ phiếu cho các khối ứng viên để đạt được tính cuối cùng theo thống kê.
Điều thực sự khiến tôi quan tâm là: gửi Bid không đồng nghĩa với việc có thể rút bất cứ lúc nào. Bởi Bid Contract quy định rằng trước khi đạt tới h{expiration}, người dùng không thể khởi tạo F^{WithdrawBid}. Hơn nữa, Dusk đã tách vai trò: bạn có thể là Generator (thông qua việc cạnh tranh quyền sinh khối bằng Blind Bid), hoặc là Provisioner (thông qua Stake Contract để khóa phần cược tham gia xác thực). Nếu bạn với tư cách Provisioner ký đôi (double-sign) hoặc có hành vi xấu, bất kỳ ai cũng có thể gọi hàm F^{Slash} của Stake Contract để tố cáo, và phần cược của bạn sẽ bị phạt một phần. Nói cách khác, tham gia vào đồng thuận không phải là một nút bấm, mà là một khung thời gian chịu ràng buộc bởi quy tắc giao thức—<0>@Dusk </0> của bạn vừa bảo vệ mạng trước thời điểm hết hạn, vừa phải gánh rủi ro bị trừng phạt.
Vì vậy, theo tôi, điều Dusk thực sự giải quyết là: tính minh bạch trong bầu chọn leader ở PoS và vấn đề MEV; giao thức ghép các trạng thái đó lại bằng Blind Bid, rút thăm định danh, tách vai trò và tính cuối cùng theo thống kê. Chi phí cũng rất rõ ràng: người dùng không còn chỉ là "staking DUSK để nhận lợi suất", mà phải hiểu mối quan hệ giữa Bid, Stake, Generator, Provisioner và Slashing.
Thứ tôi sẽ tiếp tục quan sát lâu dài không phải là việc cổng staking có đơn giản đến đâu, mà liệu người dùng phổ thông có thực sự hiểu rằng khi họ tham gia đồng thuận, mình đang chờ đợi điều gì hay không.