\Broke down Dusk's block finality states this week because "final" gets used loosely in blockchain documentation dan saya ingin tahu secara tepat apa arti setiap state tersebut dalam whitepaper yang menggunakan empat istilah berbeda.
Berikut empat hal.
Menerima sebuah blok dengan bukti keberhasilan (success attestation), tetapi iterasi I > 0 dan tidak semua iterasi sebelumnya memiliki bukti kegagalan (fail attestation). Blok ini telah diterima ke dalam rantai. Blok ini masih dapat digantikan oleh blok yang bersaing dari nomor iterasi yang lebih rendah. Belum terselesaikan secara permanen.
Dibuk-tikan (Attested): baik iterasi I = 0 (terendah yang mungkin, tidak ada iterasi yang lebih rendah untuk menggantikannya), atau semua iterasi sebelumnya memiliki bukti kegagalan (fail attestation). Blok ini tidak dapat digantikan oleh blok dengan iterasi yang lebih rendah. Ini adalah state terkuat yang dapat dicapai oleh satu blok dengan sendirinya, berdasarkan murni sifat pembuktiannya.
Dikonfirmasi (Confirmed): blok tersebut adalah baik accepted atau attested, dan aturan finality telah dipenuhi oleh apa yang datang setelahnya. Blok yang accepted menjadi confirmed setelah 2n suksesor berturut-turut yang attested atau confirmed, di mana n adalah jumlah iterasi-iterasi sebelumnya yang tidak attested. Blok attested menjadi confirmed ketika ia memiliki satu suksesor yang attested atau confirmed.
Final: confirmed, dan parent-nya juga final. Tidak dapat digantikan dalam keadaan apa pun. Inilah satu-satunya jaminan keras yang benar.
Saya sebenarnya berpikir ini paling penting untuk aplikasi yang perlu tahu kapan sebuah transaksi benar-benar tersettlement — bukan hanya terunggah (included). Menggunakan "accepted" sebagai proksi untuk "settled" membuka kemungkinan adanya penggantian. Pemicu yang tepat adalah "confirmed" minimal, dan "final" untuk apa pun yang berisiko tinggi.
Pertanyaannya adalah apakah pengembang aplikasi yang membangun di Dusk mendapatkan sinyal API yang jelas untuk setiap state — atau apakah mereka harus melakukan polling status blok dan mengimplementasikan state machine mereka sendiri untuk melacak kapan blok tertentu masuk ke "final." @Dusk
$DUSK #dusk
Berikut empat hal.
Menerima sebuah blok dengan bukti keberhasilan (success attestation), tetapi iterasi I > 0 dan tidak semua iterasi sebelumnya memiliki bukti kegagalan (fail attestation). Blok ini telah diterima ke dalam rantai. Blok ini masih dapat digantikan oleh blok yang bersaing dari nomor iterasi yang lebih rendah. Belum terselesaikan secara permanen.
Dibuk-tikan (Attested): baik iterasi I = 0 (terendah yang mungkin, tidak ada iterasi yang lebih rendah untuk menggantikannya), atau semua iterasi sebelumnya memiliki bukti kegagalan (fail attestation). Blok ini tidak dapat digantikan oleh blok dengan iterasi yang lebih rendah. Ini adalah state terkuat yang dapat dicapai oleh satu blok dengan sendirinya, berdasarkan murni sifat pembuktiannya.
Dikonfirmasi (Confirmed): blok tersebut adalah baik accepted atau attested, dan aturan finality telah dipenuhi oleh apa yang datang setelahnya. Blok yang accepted menjadi confirmed setelah 2n suksesor berturut-turut yang attested atau confirmed, di mana n adalah jumlah iterasi-iterasi sebelumnya yang tidak attested. Blok attested menjadi confirmed ketika ia memiliki satu suksesor yang attested atau confirmed.
Final: confirmed, dan parent-nya juga final. Tidak dapat digantikan dalam keadaan apa pun. Inilah satu-satunya jaminan keras yang benar.
Saya sebenarnya berpikir ini paling penting untuk aplikasi yang perlu tahu kapan sebuah transaksi benar-benar tersettlement — bukan hanya terunggah (included). Menggunakan "accepted" sebagai proksi untuk "settled" membuka kemungkinan adanya penggantian. Pemicu yang tepat adalah "confirmed" minimal, dan "final" untuk apa pun yang berisiko tinggi.
Pertanyaannya adalah apakah pengembang aplikasi yang membangun di Dusk mendapatkan sinyal API yang jelas untuk setiap state — atau apakah mereka harus melakukan polling status blok dan mengimplementasikan state machine mereka sendiri untuk melacak kapan blok tertentu masuk ke "final." @Dusk
$DUSK #dusk