Setiap putaran konsensus perlu menambahkan satu blok baru, tetapi whitepaper mengatakan bahwa putaran ini tidak selesai dalam sekali jalan, melainkan melalui beberapa iterasi, dan setiap iterasi terdiri dari tiga langkah. Bagian 3.2 dalam whitepaper menyebut tiga langkah itu sebagai Proposal, Validation, dan Ratification.
Langkah pertama, Proposal. Algoritma DS secara acak memilih seorang provisioner sebagai pembuat blok, yang bertugas menghasilkan blok kandidat dan menyiarkannya ke seluruh jaringan. Jika blok kandidat tidak dihasilkan atau tidak diterima dalam waktu melebihi batas yang ditentukan, keluaran langkah ini adalah NIL dan langsung berlanjut ke langkah berikutnya—tetapi karena tidak memiliki blok kandidat, untuk apa pemungutan suara berikutnya? Jawabannya: tidak memilih suara kosong, melainkan memilih NoCandidate, yang berarti "tidak ada blok kandidat yang dapat diverifikasi".$DUSK
Langkah kedua, Validation. Algoritma DS secara acak memilih sekelompok komite pemungutan suara untuk memverifikasi blok kandidat dari langkah sebelumnya. Jika blok kandidat valid, pilih Valid; jika tidak valid, pilih Invalid; jika tidak ada blok kandidat, pilih NoCandidate. Komite pemungutan suara harus mencapai mayoritas absolut 2/3 untuk mencapai quorum. Jika hingga batas waktu belum tercapai, keluarkan NoQuorum. Keluaran langkah ini adalah sebuah ValidationResult yang berisi jenis suara yang mencapai quorum serta agregat tanda tangan semua pemilih.@Dusk
Langkah ketiga, Ratification. Lalu dipilih sekelompok komite pemungutan suara yang baru untuk mengonfirmasi hasil dari Validation. Jika pada langkah sebelumnya tercapai quorum dengan suara Valid, mereka mengonfirmasi hasil tersebut; jika pada langkah sebelumnya adalah NoQuorum atau gagal, mereka memilih NoQuorum. Langkah ini memastikan bahwa hasil verifikasi tidak hanya ditentukan oleh sedikit pihak, melainkan diakui oleh lebih banyak provisioner.
Jika keluaran Ratification adalah Success, blok kandidat diterima secara resmi sebagai blok baru, dan putaran ini berakhir. Jika keluaran Fail atau unknown, lanjut ke iterasi berikutnya, dengan memilih kembali pembuat blok dan melakukan pemungutan suara ulang. Whitepaper mengatakan bahwa jumlah maksimum iterasi ditentukan oleh parameter global, dan pengaturan saat ini adalah 50. Jika 16 iterasi berturut-turut gagal, protokol masuk ke mode darurat (sudut 10).
Logika inti dari desain tiga langkah adalah penyeimbangan (checks and balances)—pembuat blok hanya bisa menghasilkan blok kandidat, tidak bisa ikut memberi suara; komite verifikasi hanya bisa memverifikasi, tidak bisa mengonfirmasi; komite konfirmasi hanya bisa mengonfirmasi hasil verifikasi, tidak bisa memverifikasi ulang. Tidak ada satu peran pun yang bisa menentukan nasib sebuah blok sendirian.#dusk
Langkah pertama, Proposal. Algoritma DS secara acak memilih seorang provisioner sebagai pembuat blok, yang bertugas menghasilkan blok kandidat dan menyiarkannya ke seluruh jaringan. Jika blok kandidat tidak dihasilkan atau tidak diterima dalam waktu melebihi batas yang ditentukan, keluaran langkah ini adalah NIL dan langsung berlanjut ke langkah berikutnya—tetapi karena tidak memiliki blok kandidat, untuk apa pemungutan suara berikutnya? Jawabannya: tidak memilih suara kosong, melainkan memilih NoCandidate, yang berarti "tidak ada blok kandidat yang dapat diverifikasi".$DUSK
Langkah kedua, Validation. Algoritma DS secara acak memilih sekelompok komite pemungutan suara untuk memverifikasi blok kandidat dari langkah sebelumnya. Jika blok kandidat valid, pilih Valid; jika tidak valid, pilih Invalid; jika tidak ada blok kandidat, pilih NoCandidate. Komite pemungutan suara harus mencapai mayoritas absolut 2/3 untuk mencapai quorum. Jika hingga batas waktu belum tercapai, keluarkan NoQuorum. Keluaran langkah ini adalah sebuah ValidationResult yang berisi jenis suara yang mencapai quorum serta agregat tanda tangan semua pemilih.@Dusk
Langkah ketiga, Ratification. Lalu dipilih sekelompok komite pemungutan suara yang baru untuk mengonfirmasi hasil dari Validation. Jika pada langkah sebelumnya tercapai quorum dengan suara Valid, mereka mengonfirmasi hasil tersebut; jika pada langkah sebelumnya adalah NoQuorum atau gagal, mereka memilih NoQuorum. Langkah ini memastikan bahwa hasil verifikasi tidak hanya ditentukan oleh sedikit pihak, melainkan diakui oleh lebih banyak provisioner.
Jika keluaran Ratification adalah Success, blok kandidat diterima secara resmi sebagai blok baru, dan putaran ini berakhir. Jika keluaran Fail atau unknown, lanjut ke iterasi berikutnya, dengan memilih kembali pembuat blok dan melakukan pemungutan suara ulang. Whitepaper mengatakan bahwa jumlah maksimum iterasi ditentukan oleh parameter global, dan pengaturan saat ini adalah 50. Jika 16 iterasi berturut-turut gagal, protokol masuk ke mode darurat (sudut 10).
Logika inti dari desain tiga langkah adalah penyeimbangan (checks and balances)—pembuat blok hanya bisa menghasilkan blok kandidat, tidak bisa ikut memberi suara; komite verifikasi hanya bisa memverifikasi, tidak bisa mengonfirmasi; komite konfirmasi hanya bisa mengonfirmasi hasil verifikasi, tidak bisa memverifikasi ulang. Tidak ada satu peran pun yang bisa menentukan nasib sebuah blok sendirian.#dusk