ExonumTM adalah framework blockchain privat open source kami. Hari ini kami akan memberi tahu Anda bagaimana algoritma konsensusnya bekerja.
Gambar: BitfuryMengapa algoritma konsensus diperlukan
Sebelum beralih ke kisah tentang bagaimana algoritma konsensus Exonum
TM bekerja, mari kita bicara tentang mengapa algoritma ini umumnya diperlukan dalam blockchains.
Blockchain adalah sistem terdistribusi tanpa administrator pusat. Untuk menyetujui blok baru di jaringan (dan, dengan demikian, transaksi), peserta jaringan
menggunakan algoritma konsensus khusus. Tugas konsensus adalah untuk membantu rekan-rekan dari jaringan peer-to-peer mencapai pendapat umum tentang seperti apa keadaan barunya - yaitu, pilih blok berikutnya dalam rantai blockchain.
Ini diperlukan untuk melindungi blockchain dan informasi yang tersimpan di dalamnya dari spoofing. Misalnya, blockchain berbasis pada Exonum
TM , diterapkan untuk Kereta Api Rusia, mencatat informasi tentang operasi dengan suku cadang untuk mobil dan kereta api. Blockchain memastikan keandalan data di dalam blok, yang memungkinkan perusahaan untuk memantau rute suku cadang dari pemasok dan mendeteksi pemalsuan yang tepat waktu. Kami akan menceritakan lebih lanjut tentang ini dan kasus-kasus lain lebih lanjut.
Tugas apa yang kami selesaikan dengan membuat algoritma konsensus Exonum
Ketika mengembangkan algoritma konsensus Exonum
TM , penting bagi kami untuk menyelesaikan masalah
perilaku Bizantium dari node . Menurut perilaku Bizantium, yang kami maksud adalah aktivitas jahat dari node jaringan individual. Kegiatan tersebut juga dapat mencakup situasi di mana node kehilangan koneksi dengan jaringan atau menjadi offline.
Kembali di pertengahan 80-an,
terbukti bahwa untuk memastikan stabilitas sistem terdistribusi, ia harus bekerja dalam kondisi sinkronisasi parsial. Pada saat yang sama, algoritma konsensus harus memiliki kriteria berikut:
- Liveive - harus dapat menerima blok baru pada waktu tertentu.
- Konsistensi - basis data transaksi pada semua node jaringan harus identik.
- Perlawanan sensor - node tidak boleh memberikan preferensi untuk transaksi apa pun atau mengabaikannya.
Untuk jaringan dengan jumlah peserta yang diketahui, model algoritma konsensus yang tahan terhadap perilaku simpul Bizantium (
toleransi kesalahan Bizantium , BFT), di bawah sinkronisasi parsial,
memungkinkan kurang dari 1/3 peserta jahat (Bizantium) dalam jaringan.
Bagaimana Algoritma Konsensus Exonum Bekerja
Ada tiga jenis node dalam blockchain Exonum
TM : validator, auditor, dan klien ringan. Yang pertama adalah peserta langsung dalam algoritma konsensus, sedangkan yang kedua mendistribusikan beban di jaringan dan mengendalikan validator. Sedangkan untuk klien ringan, mereka hanya memberi peserta jaringan peluang untuk mengirim transaksi ke blockchain. Klien dan auditor yang ringan tidak terlibat langsung dalam algoritma konsensus, jadi kami tidak akan membicarakannya dalam materi ini.
Tugas validator adalah memilih inklusi blok baru di blockchain. Seperti yang kami katakan di atas, jaringan Exonum
TM dapat berfungsi secara stabil bahkan jika sepertiga dari semua node adalah Bizantium. Dengan demikian, untuk mencapai konsensus, blok harus menyetujui lebih dari 2/3 dari node jaringan blockchain. Dan pernyataan ini dapat dikonfirmasi secara matematis.
Asumsikan bahwa jaringan memiliki h-validator-node jujur ββ(jujur) dan f Bizantium (rusak). Maka jumlah validator dapat direpresentasikan sebagai N = h + f. Semua validator memutuskan "pemenang" berdasarkan aturan ambang batas.
Ini menyatakan: jumlah suara untuk pemenang harus lebih besar dari atau sama dengan Ξ± * N , di mana Ξ± adalah angka dalam kisaran dari 0 hingga 1. Dengan demikian, mayoritas absolut suara dicapai ketika Ξ±> 1/2.
Pada akhir pemungutan suara, masing-masing validator menentukan secara independen mana dari dua kandidat yang dimenangkan. Namun, validator tidak boleh memutuskan siapa yang akan memilih jika terlalu sedikit validator mengirim suara mereka ke yang lain. Ini dapat terjadi jika node Bizantium mulai mengirim suara untuk kandidat yang berbeda kepada anggota jaringan yang jujur, mencoba untuk membingungkan mereka.
Untuk mengecualikan situasi yang sama, perlu mengamati dua kondisi:
- Validator yang jujur ββharus dapat membuat pilihan tanpa partisipasi simpul Bizantium. Kondisi ini ditentukan oleh properti liveness, yang kita bicarakan di atas. Secara matematis, ini dinyatakan oleh ketidaksetaraan berikut: h β₯ Ξ± * N.
- Seorang kandidat yang dipilih oleh minoritas validator jujur ββtidak dapat mengatasi ambang batas dalam Ξ± * N. Ini ditentukan oleh kriteria konsistensi. Kondisi ini dinyatakan sebagai berikut: [h / 2] + f <Ξ± * N, di mana [h / 2] adalah bagian integer dari angka h / 2.
Akibatnya, kami memperoleh rantai ketidaksetaraan berikut: h> 2f, Ξ±> 2/3 dan N β₯ 3f + 1. Karena itu untuk mengkonfirmasi blok transaksi, ia harus menerima lebih dari 2/3 suara validator secara ketat.
Selanjutnya, mari kita bicara tentang bagaimana para validator memilih dalam blockchain Exonum
TM . Secara umum, skema ini adalah sebagai berikut:

Proses mencapai konsensus dimulai dengan fakta bahwa simpul utama - dipilih oleh algoritma terpisah dan berubah secara teratur - membentuk daftar transaksi yang harus ditambahkan ke blockchain (membuat
proposal ). Daftar ini kemudian disiarkan ke seluruh jaringan ke simpul validator.
Validator memeriksa pesan yang diterima untuk kepatuhan dengan format serialisasi. Jika ada kesalahan yang dicatat, node benar-benar mengabaikan pesan yang diterima. Misalnya, proposal untuk menambahkan blok ke tengah blockchain atau mencatat ulang transaksi yang ada akan diabaikan. Jika semuanya beres, tahap pemungutan suara dimulai - node validator memilih untuk menambahkan blokir ke blockchain, menyiarkan pesan yang berlaku.
Simpul itu, proposal yang menerima lebih dari 2/3 persetujuan dari validator, kehilangan kesempatan untuk memilih proposal dari validator lain dan tidak dapat mengubah
proposalnya . Keadaan ini disebut
proof-of-lock .
Setelah jumlah suara yang diperlukan dari validator diperoleh, simpul utama mendaftarkan transaksi yang disetujui dalam blok dan menyiarkan pesan khusus -
precommit . Ini berisi
hash dari status yang diperbarui dari blockchain dan menunjukkan bahwa node siap untuk menambahkan blok yang diusulkan ke rantai. Pada saat sebagian besar validator merespons dengan pesan
precommit yang serupa (dengan hash yang sama), blok ditambahkan ke blockchain. Konsensus tercapai, dan prosedur diulang untuk setiap blok berikutnya.
Untuk meningkatkan stabilitas sistem, validator secara berkala bertukar dua pesan lagi -
Permintaan dan
Blokir . Yang pertama dihasilkan jika node tidak memiliki data transaksi apa pun. Yang kedua diperlukan untuk mengirimkan informasi tentang blok transaksi ke sebuah node yang ketinggalan zaman (misalnya, terputus), untuk menyinkronkan operasi seluruh jaringan.
Untuk menilai kemungkinan konsensus Exonum
TM , kami menguji operasi blockchain berdasarkan dua konfigurasi: di satu pusat data dan beberapa pusat data yang didistribusikan secara geografis. Selama pengujian, parameter TPS dievaluasi - jumlah transaksi per detik - untuk sejumlah validator yang berbeda. Selanjutnya, kami akan memberikan grafik perubahan dalam kinerja jaringan di blockchains untuk bekerja dengan cryptocurrency (grafik hitam) dan cap waktu (grafik biru).
TPS sebagai fungsi dari jumlah validator dalam kasus pusat data tunggal
TPS sebagai fungsi dari jumlah validator dalam kasus beberapa pusat dataRata-rata, blockchain Exonum
TM mampu memproses dari 2 hingga 13 ribu transaksi per detik, tergantung pada konfigurasi jaringan.
Di mana Exonum sudah digunakan
Kerangka kerja Exonum
TM digunakan saat ini di berbagai proyek. Musim panas lalu, bersama dengan Technoprom, kami
menciptakan pasar khusus untuk Kereta Api Rusia. Blockchain Exonum
TM mencatat operasi dengan suku cadang untuk kereta api dan lembar data dari setiap mobil. Hal ini memungkinkan untuk melacak pergerakan semua suku cadang dari pemasok resmi dan mendeteksi adanya kepalsuan.
Kami juga
meluncurkan proyek blockchain pendidikan yang didasarkan pada University of Synergy. Register mendaftar dan menyimpan semua informasi tentang kinerja siswa: nilai, hasil ujian dan diploma. Menurut kolega kami, pendekatan ini menghilangkan kemungkinan membuat perubahan pada dokumen pendidikan dan membantu menghemat pengarsipan dan sertifikasi.
Bahkan atas dasar Exonum
TM, kami
mengimplementasikan serangkaian proyek percontohan yang mempercepat pengembangan dan pelepasan perangkat lunak. Mitra kami dari organisasi teknik Aricent telah menguji kerangka kerja selama enam bulan. Pendekatan blockchain untuk pengembangan perangkat lunak telah meningkatkan produktivitas pemrogram dan kecepatan koreksi kesalahan.
Kami
memulai proyek lain bersama dengan sekelompok perusahaan medis. Termasuk startup Insillico, di mana mereka menerapkan pelatihan mendalam untuk menemukan obat baru. ExonumTM akan menjadi inti dari ekosistem data pasien. Sistem ini akan menyederhanakan uji klinis dan juga membantu dengan analisis catatan medis dan DNA pasien. Akibatnya, dokter akan dapat lebih cepat mendiagnosis penyakit dan meresepkan pengobatan yang lebih efektif.
Kami berharap bahwa blockchain kami akan menemukan aplikasi dalam tugas-tugas lain dan di industri lain. Kami saat ini sedang berupaya untuk mengimplementasikan Exonum TM dalam sistem pemilihan, lelang dan manajemen hak digital. Demo dari beberapa solusi ini dapat ditemukan di situs resmi Exonum TM .