Phản ứng đầu tiên của tôi khi đọc đồng thuận SA là: con số 1000 DUSK này được tạo ra bằng cách nào. Sách trắng chỉ đưa ra kết quả, không có phần suy luận hay quy trình chứng minh. Vì vậy tôi lần ngược theo các tham số của nó.
Nó đặt một epoch, gồm 2160 block. Theo tốc độ tạo block hiện tại của Dusk, thì khoảng 6 giờ là một epoch. Sau đó nó đưa ra một công thức thời gian trưởng thành: M = 2 × epoch - (height mod epoch). Tức là, nếu bạn stake một lệnh DUSK, bạn phải chờ gần nửa epoch đến hết một epoch thì mới bắt đầu “làm việc” thực sự.
Điểm thú vị ở thiết kế này là nó đồng bộ thời điểm hiệu lực của toàn bộ các khoản stake mới theo ranh giới của epoch. Không phải “đến lúc nào stake thì có hiệu lực ngay”, mà là cả nhóm cùng được kích hoạt tại một mốc khởi đầu. Mục đích tôi đoán là để thuật toán DS có thể dùng một snapshot ổn định của “bể stake” phục vụ việc rút thăm/định tuyến mang tính xác định (deterministic) cho việc chọn nhà cung cấp (provisioner). Nếu stake vào lúc bất kỳ, bất kỳ block nào thì tập ứng viên provisioner cũng sẽ thay đổi, khiến việc phân bổ mang tính xác định trở nên khó làm tốt, vì mỗi block lại có một bộ ứng viên khác nhau $DUSK
Còn bản thân con số 1000 DUSK thì sao? Tôi tính thử: nếu ngưỡng đặt là 100 thì số lượng provisioner sẽ tăng vọt. Mỗi epoch có 64 slot sẽ cạnh tranh gay gắt hơn, nhưng lượng stake trên từng node lại quá thấp, nên an ninh mạng có thể bị “pha loãng”. Nếu đặt là 10000 thì gần như người dùng phổ thông không thể tham gia; provisioner trở thành “cuộc chơi” của một nhóm node lớn, và mức độ phi tập trung sẽ bị giảm. @Dusk
Con số 1000 nằm ở mức trung gian. Tôi lật thêm các tham số của vài chuỗi PoS khác: ngưỡng của Dusk không quá cao, nhưng cũng không quá thấp. Nó giống như đang nói rằng: tôi không muốn bạn chỉ cần lấy ít tiền tiêu vặt là đã có thể chạy node, nhưng tôi cũng không muốn bạn bắt buộc phải là “đại gia” mới được tham gia.
Tuy nhiên, tôi vẫn còn một vấn đề chưa nghĩ thông. Sách trắng không nêu mục tiêu về tổng số provisioner nằm trong khoảng nào, và cũng không nói mức độ cạnh tranh của 64 slot ở tỷ lệ nào là tối ưu. Thiếu các dữ liệu này, tôi thật sự không thể đánh giá 1000 có đúng hay không. Có lẽ sự hợp lý của con số này chỉ có thể được kiểm chứng bằng dữ liệu thực tế sau khi lên mainnet. #dusk
Nó đặt một epoch, gồm 2160 block. Theo tốc độ tạo block hiện tại của Dusk, thì khoảng 6 giờ là một epoch. Sau đó nó đưa ra một công thức thời gian trưởng thành: M = 2 × epoch - (height mod epoch). Tức là, nếu bạn stake một lệnh DUSK, bạn phải chờ gần nửa epoch đến hết một epoch thì mới bắt đầu “làm việc” thực sự.
Điểm thú vị ở thiết kế này là nó đồng bộ thời điểm hiệu lực của toàn bộ các khoản stake mới theo ranh giới của epoch. Không phải “đến lúc nào stake thì có hiệu lực ngay”, mà là cả nhóm cùng được kích hoạt tại một mốc khởi đầu. Mục đích tôi đoán là để thuật toán DS có thể dùng một snapshot ổn định của “bể stake” phục vụ việc rút thăm/định tuyến mang tính xác định (deterministic) cho việc chọn nhà cung cấp (provisioner). Nếu stake vào lúc bất kỳ, bất kỳ block nào thì tập ứng viên provisioner cũng sẽ thay đổi, khiến việc phân bổ mang tính xác định trở nên khó làm tốt, vì mỗi block lại có một bộ ứng viên khác nhau $DUSK
Còn bản thân con số 1000 DUSK thì sao? Tôi tính thử: nếu ngưỡng đặt là 100 thì số lượng provisioner sẽ tăng vọt. Mỗi epoch có 64 slot sẽ cạnh tranh gay gắt hơn, nhưng lượng stake trên từng node lại quá thấp, nên an ninh mạng có thể bị “pha loãng”. Nếu đặt là 10000 thì gần như người dùng phổ thông không thể tham gia; provisioner trở thành “cuộc chơi” của một nhóm node lớn, và mức độ phi tập trung sẽ bị giảm. @Dusk
Con số 1000 nằm ở mức trung gian. Tôi lật thêm các tham số của vài chuỗi PoS khác: ngưỡng của Dusk không quá cao, nhưng cũng không quá thấp. Nó giống như đang nói rằng: tôi không muốn bạn chỉ cần lấy ít tiền tiêu vặt là đã có thể chạy node, nhưng tôi cũng không muốn bạn bắt buộc phải là “đại gia” mới được tham gia.
Tuy nhiên, tôi vẫn còn một vấn đề chưa nghĩ thông. Sách trắng không nêu mục tiêu về tổng số provisioner nằm trong khoảng nào, và cũng không nói mức độ cạnh tranh của 64 slot ở tỷ lệ nào là tối ưu. Thiếu các dữ liệu này, tôi thật sự không thể đánh giá 1000 có đúng hay không. Có lẽ sự hợp lý của con số này chỉ có thể được kiểm chứng bằng dữ liệu thực tế sau khi lên mainnet. #dusk