#dusk $DUSK @Dusk

Tôi đang xem cơ chế Fallback của Dusk và có một điểm nổi bật với tôi: số lần lặp (iteration number) thực sự rất quan trọng khi xảy ra một nhánh (fork).

Vì sự đồng thuận của Dusk là bất đồng bộ, các tin nhắn có thể đến trễ hoặc bị mất trong thời gian tắc nghẽn. Do đó, các phần khác nhau của mạng có thể thấy các khối (block) khác nhau, và đôi khi hơn một ứng viên có thể đạt được ngưỡng (quorum) trong cùng một vòng.

Quy tắc cơ bản là lần lặp thấp hơn sẽ được ưu tiên. Nếu một khối ở iteration 1 được chấp nhận nhưng sau đó một khối ở iteration 0 lại đạt quorum, thì khối ở lần lặp thấp hơn có thể thay thế. Nút sẽ quay về trạng thái trước khối cũ và tổ chức lại (reorganize) chuỗi.

Điều đó khiến iteration 0 trở nên thú vị. Iteration 0 là lần thử đầu tiên, sau đó đến iteration 1, 2, và cứ thế tiếp. Vì không có iteration -1, nên một khối ở iteration 0 không thể được thay thế trực tiếp thông qua Fallback bởi một lần lặp thấp hơn.

Nhưng tôi sẽ không gọi đó là tính hoàn tất cuối cùng (complete finality). Khối ở iteration 0 vẫn có thể bị ảnh hưởng nếu một tổ tiên (ancestor) bị hoàn nguyên. Tính cuối cùng thực sự đến từ Rolling Finality.

Vì vậy, theo cách tôi nhìn nhận, Fallback không chỉ là dọn dẹp fork. Số lần lặp mang lại cho mạng một cách xác định (deterministic) để chọn giữa các khối cạnh tranh, với iteration 0 nằm ở đáy của thứ tự ưu tiên đó.