Algoritma konsensus
Di jaringan Algorand, algoritma konsensus tidak memerlukan otorisasi dan semua pengguna yang memiliki saldo Algo dapat berpartisipasi. Algoritma konsensus bekerja dalam beberapa putaran, setiap putaran terdiri dari dua fase. Tahap pertama adalah tahap usulan blok dan tahap kedua adalah tahap finalisasi blok, di mana dilakukan pemungutan suara untuk blok yang diusulkan..[1]
Tahap pertama (fase proposal blok) menggunakan bukti kepemilikan sebagai prinsipnya. Pada fase ini, beberapa komite yang terdiri dari pengguna sistem dipilih secara acak untuk mengusulkan blok baru. Pemilihan ini tidak sepenuhnya acak dan memiliki bobot tertentu sesuai dengan pengguna yang dipilih. Pemilihan panitia ini dilakukan berdasarkan proses yang disebut “klasifikasi kode”. Dalam proses ini, tidak ada otoritas pusat yang menentukan pengguna mana yang akan menjadi anggota komite, tetapi setiap pengguna menentukan apakah mereka menjadi anggota komite dengan melakukan fungsi secara lokal yang disebut fungsi acak yang dapat diverifikasi (VRF). VRF kemudian mengkonfirmasi bahwa pengguna telah dipilih, dan VRF kemudian mengembalikan bukti kriptografi yang dapat digunakan untuk memverifikasi bahwa pengguna adalah anggota komite.
Hanya pengguna tertentu saja yang mengetahui jika dirinya menjadi anggota komite, kecuali/sampai mereka mengirimkan pesan kepada pengguna lain bahwa dirinya adalah anggota. Kemampuan pengguna untuk menjadi anggota komite dipengaruhi oleh “saham” (misalnya jumlah token Algo) yang dimiliki pengguna. Semakin banyak mereka berpartisipasi, semakin besar peluang mereka untuk menjadi anggota.[1][10]
Setelah menentukan apakah mereka dalam komite pemilihan blok, seorang pengguna membangun blok yang diusulkan dan menyebarkannya ke jaringan untuk ditinjau/dianalisis 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.[10]
Pada fase kedua (fase finalisasi blok), protokol perjanjian Bizantium (disebut “BA⋆”) digunakan untuk memilih blok yang diusulkan. Pada tahap kedua ini, gambar kode seperti yang dijelaskan di atas digunakan kembali untuk mengidentifikasi panitia baru. Panitia pemilihan tahap kedua ini berbeda dengan tahap pertama, meski mungkin masih memiliki anggota panitia yang sama seperti pada tahap sebelumnya. Setelah pengguna menentukan bahwa mereka adalah bagian dari komite tahap kedua, mereka menganalisis blok yang diusulkan yang mereka terima (ini melibatkan verifikasi bahwa blok tersebut benar-benar diusulkan oleh pengguna) yang digunakan oleh komite fase satu) dan memutuskan apakah ada blok. untuk diperebutkan. Jika komite pemungutan suara mencapai konsensus mengenai blok baru, blok baru tersebut dikirimkan ke jaringan sebagai blok baru.[1][10]
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.[1]
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.[11] 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.[12]
Kontrak pintar
Algorand mendukung tiga tipe kontrak pintar, yakni kontrak pintar tanpa state, kontrak pintar dengan state, dan kontrak pintar Algogeneous. Kontrak pintar tanpa state bertujuan untuk mengesahkan transaksi. Kontrak pintar tanpa state memiliki perbedaan di mana cara mereka mengesahkan transaksi di antara pihak mirip seperti sebuah wasiat. Kontrak pintar tanpa state pada jaringan Algorand juga bertindak sebagai tanda tangan delegator untuk mengesahkan transaksi pada jaringan rantai blok utama. Kontrak pintar bisa disamakan seperti surat wasiat pada umumnya.
Kontrak pintar dengan state menyimpan data dengan persisten dan bisa digunakan untuk tujuan yang lebih luas.[13] "Dengan state" mengacu pada kemampuan kontrak untuk menyimpan informasi dalam sebuah keadaan yang spesifik pada jaringan. Sebagai contoh, salah satu tipe dari Kontrak pintar dengan state adalah fungsi untuk meminta pembayaran yang akan mengizinkan pengguna untuk meminta pembayaran dari pengguna lain. Secara umum, Kontrak pintar dengan state adalah sebuah program logis yang menyimpan data pada rantai blok. Kontrak pintar Algogenous menggabungkan fungsi dari state dan tanap state, merepresentasikan sebuah konvergensi teknikal di dalam arsitektur kontrak pintar.[14] Di mana kontrak pintar Algorand sebelumnya hanya bisa dengan atau tanpa state, kontrak Algogenous bisa memilih salah satu, atau keduanya sekaligus.
Kontrak pintar Algorand mampu ditulis dalam bahasa pemograman bernama Transaction Execution Approval Language (TEAL). TEAL adalah sebuah bahasa pemograman stack berbasis bytecode, yang memiliki antarmuka pemrograman aplikasi untuk Python yang disebut PyTeal. Model kontrak pintar Algorand mendukung atomicity[15] sebuah transaksi, yang memastikan bahwa data transaksi pasti disimpan. Dalam sistem rantai blok lain, kontrak pintar digunakan untuk mendefinisikan aset yang didefinisikan pengguna. Contohnya, dalam Ethereum, kontrak pintar mengimplementasikan antarmuka ERC20 dan ERC721 untuk mendefinisikan asset baru. Sebaliknya, dalam Algorand, aset yang didefinisikan pengguna didukung secara native. Dan mampu memanipulasi aset yang didefinisikan pengguna menggunakan tipe transaksi bawaan.[16]
Sumber terbuka
Perangkat lunak inti dari rantai blok Algorand bersumber terbuka pada GitHub.[17][18] Algorand Foundation juga membuat Algorand Request for Comments(ARCs) terbuka pada GitHub untuk memfasilitasi desentralisasi dan standardisasi pengembangan kode komunitas.[19] Terdapat beberapa startup dan proyek perangkat lunak sumber terbuka yang sedang membangun perangkat lunak sumber terbuka untuk Algorand, contohnya TinyMan, yang bersumber terbuka sebagian,[20] dan juga Choice Coin dan AlgoCharts, yang dua-duanya adalah sumber terbuka.[21][22]
Meskipun Algorand sumber terbuka, Algorand dilindungi beberapa paten. Algorand memberikan lisensi paten hanya untuk mereka yang menggunakan kode asli Algorand, dan tidak untuk komunitas sumber terbuka yang lebih luas. Lisensi paten komersial dan non-komersial untuk hal lain harus dirundingkan dengan pihak Algorand.[23]