Coba jelasin Desain dari Algorand dong

Pada jaringan Algorand, algoritma konsensus tidak memerlukan izin, dan semua pengguna yang memegang saldo Algo dapat ikut berpartisipasi. Algoritma konsensus bekerja dalam putaran, dengan setiap putaran terdiri dari dua fase. Fase pertama adalah fase proposal blok, dan fase  kedua adalah fase finalisasi blok, di mana terjadi sebuah pemungutan suara untuk blok yang diajukan.

Fase pertama (fase proposal blok) menggunakan proof of stake sebagai prinsip. Selama fase ini, beberapa komite yang terdiri dari para pengguna di sistem dipilih secara acak untuk mengusulkan blok baru. Pemilihan ini tidak acak sepenuhnya dan terdapat bobot tertentu untuk memilih pengguna. Pemilihan komite ini dilakukan melalui proses yang dinamakan "cryptographic sortition." Di dalam proses ini, tidak ada otoritas pusat yang menunjuk pengguna mana yang akan menjadi komite, melainkan setiap penggunalah yang menentukan apakah mereka bagian komite atau tidak dengan cara mengeksekusi secara lokal sebuah fungsi bernama Verifiable Random Function (VRF). VRF lalu menyatakan bahwa pengguna tersebut telah terpilih, lalu VRF akan mengembalikan bukti kriptografik yang bisa digunakan untuk memerika bahwa pengguna tersebut adalah anggota komite.

Hanya beberapa pengguna yang akan mengetahui apakah mereka anggota komite atau tidak, kecuali/sampai mereka mengirimkan pesan ke pengguna lain yang menunjukkan bahwa mereka adalah anggota. Kemungkinan bahwa seorang pengguna akan menjadi anggota komite dipengaruhi oleh "stake" (contohnya adalah jumlah token Algo) yang dipegang oleh pengguna tersebut. Semakin besar ukuran stake yang ia miliki semakin besar juga kemungkinan ia menjadi anggota.

Setelah menentukan apakah mereka dalam komite pemilihan blok, seorang pengguna membangun blok yang diusulkan dan menyebarkannya ke jaringan untuk ditinjau/dianalisa selama fase ke dua. Pengguna mencantumkan bukti kriptografik dari VRF ke dalam blok yang diusulkan, yang menunjukkan bahwa pengguna tersebut benar benar anggota komite yang pantas.

Dalam fase kedua (fase finalisasi blok), sebuah protokol Byzantine Agreement (disebut "BA⋆") digunakan untuk memilih blok yang diusulkan. Pada fase kedua ini, pengundian secara kriptografik seperti dijelaskan diatas digunakan lagi untuk menentukan komite baru. Komite pemilih pada fase kedua ini akan berbeda pada komite dari fase pertama, meskipun tetap terdapat kemungkinan bahwa terdapat anggota komite yang sama seperti fase sebelumnya. Ketika pengguna telah menentukan bahwa mereka adalah anggota komite fase kedua, mereka menganalisa blok yang diusulkan yang mereka terima (ini termasuk memeriksa bahwa mereka benar benar diusulkan oleh pengguna dari komite fase pertama)  dan memutuskan apakah ada blok yang harus diambil atau tidak. Jika komite pemilih mencapai sebuah konsensus pada blok baru, blok baru itu lalu disebar ke jaringan sebagai sebuah blok baru.

Algoritma konsensus Algorand mempunyai karateristik "player replaceability". Seperti yang dijelaskan diatas, anggota komite pada tiap fase berbeda setiap terdapat fase baru. Ini melindungi pengguna dari serangan terarah, karena penyerang tidak akan tahu sebelumnya siapa pengguna yang akan menjadi bagian dari komite.

Algorand mampu bertahan melawan partisi yang sewenang-wenang, juga disebut sebagai asynchronous safety. Dua blok yang berbeda tidak dapat mencapai konsensus pada putaran yang sama. Yang berarti terjamin secara matematis bahwa Algorand tidak akan tercabang. Asynchronous safety ini juga sudah diperiksa secara formal oleh Runtime Verifications Inc. dan dibandingkan dengan model verifikasi sebelumnya, model juga menghitung masalah waktu dan aksi penyerang. Misalnya ketika penyerang memiliki kendali atas pengiriman pesan.