ألغوراند: توسيع نطاق الاتفاقيات البيزنطية للعملات المشفرة
Abstrak
Buku besar publik adalah rangkaian data yang tidak dapat diubah dan dapat dibaca dan ditambah oleh semua orang. Buku besar umum memiliki kegunaan yang tak terhitung banyaknya dan menarik. Mereka dapat mengamankan, di depan mata, segala jenis transaksi —seperti kepemilikan, penjualan, dan pembayaran—sesuai urutan terjadinya. Buku besar publik tidak hanya mengekang korupsi, namun juga memungkinkan penerapan yang sangat canggih —seperti cryptocurrency dan smart contracts. Mereka berdiri untuk merevolusi cara masyarakat demokratis beroperasi. Namun, seperti yang diterapkan saat ini, skalanya buruk dan tidak dapat mencapai potensinya. Algorand adalah cara yang benar-benar demokratis dan efisien untuk mengimplementasikan buku besar publik. Berbeda dengan sebelumnya implementasi berdasarkan bukti kerja, memerlukan jumlah komputasi yang dapat diabaikan, dan menghasilkan riwayat transaksi yang tidak akan “bercabang” dengan probabilitas yang sangat tinggi. Algorand didasarkan pada perjanjian Bizantium (yang baru dan super cepat) yang menyampaikan pesan. Agar lebih konkrit, kami akan mendeskripsikan Algorand hanya sebagai platform uang.
خلاصة
دفتر الأستاذ العام هو عبارة عن سلسلة من البيانات التي لا يمكن التلاعب بها والتي يمكن للجميع قراءتها وزيادتها. الدفاتر العامة لها استخدامات لا حصر لها ومقنعة. يمكنهم تأمين جميع أنواع الأسلحة على مرأى من الجميع المعاملات — مثل العناوين والمبيعات والمدفوعات — بالترتيب الدقيق الذي تحدث به. لا تعمل الدفاتر العامة على الحد من الفساد فحسب، بل تتيح أيضًا تطبيقات معقدة للغاية - مثل العملات المشفرة وsmart contracts. إنهم يقفون لإحداث ثورة في طريقة بناء مجتمع ديمقراطي يعمل. ولكن كما يتم تنفيذها حاليا، فإن حجمها ضعيف ولا يمكنها تحقيق إمكاناتها. Algorand هي طريقة ديمقراطية وفعالة حقًا لتنفيذ دفتر الأستاذ العام. على عكس السابقة التطبيقات بناءً على إثبات العمل، فهي تتطلب قدرًا ضئيلًا من الحساب، و ينشئ سجل المعاملات الذي لن "يفترق" باحتمالية عالية للغاية. Algorand مبني على اتفاقية بيزنطية (رواية وبسرعة فائقة) لنقل الرسائل. وللتوضيح، سنصف Algorand فقط كمنصة مالية.
Perkenalan
Uang menjadi semakin virtual. Diperkirakan sekitar 80% dari Amerika Serikat dolar saat ini hanya ada sebagai entri buku besar [5]. Instrumen keuangan lainnya juga mengikuti langkah serupa. Di dunia yang ideal, di mana kita dapat mengandalkan entitas pusat yang dipercaya secara universal, yang kebal terhadap semua kemungkinan serangan dunia maya, uang dan transaksi keuangan lainnya hanya dapat dilakukan secara elektronik. Sayangnya, kita tidak hidup di dunia seperti itu. Oleh karena itu, cryptocurrency terdesentralisasi, seperti itu seperti Bitcoin [29], dan sistem “smart contract”, seperti Ethereum, telah diusulkan [4]. Di inti dari sistem ini adalah buku besar bersama yang mencatat urutan transaksi dengan andal, ∗Ini adalah versi makalah ArXiv yang lebih formal (dan asinkron) oleh penulis kedua [24], sebuah makalah sendiri berdasarkan Gorbunov dan Micali [18]. Teknologi Algorand adalah objek berikut ini permohonan paten: US62/117,138 US62/120,916 US62/142,318 US62/218,817 US62/314,601 PCT/US2016/018300 US62/326.865 62/331.654 US62/333.340 US62/343.369 US62/344.667 US62/346.775 US62/351.011 US62/653.482 US62/352.195 US62/363.970 US62/369.447 US62/378.753 US62/383.299 US62/394.091 US62/400.361 US62/403.403 US62/410,721 US62/416,959 US62/422,883 US62/455,444 US62/458,746 US62/459,652 US62/460,928 US62/465,931beragam seperti pembayaran dan kontrak, dengan cara yang tidak dapat diubah. Teknologi pilihan untuk menjamin ketahanan terhadap kerusakan tersebut adalah blockchain. Blockchain berada di balik aplikasi seperti cryptocurrency [29], aplikasi keuangan [4], dan Internet of Things [3]. Beberapa teknik untuk mengelola buku besar berbasis blockchain telah diusulkan: bukti kerja [29], bukti kepemilikan [2], toleransi kesalahan Bizantium praktis [8], atau kombinasi tertentu. Namun saat ini, pengelolaan buku besar menjadi tidak efisien. Misalnya, proof-of-work milik Bitcoin pendekatan (berdasarkan konsep asli [14]) memerlukan banyak perhitungan, boros dan skalanya buruk [1]. Selain itu, secara de facto ia memusatkan kekuasaan di tangan yang sangat sedikit. Oleh karena itu kami ingin mengajukan metode baru untuk mengimplementasikan buku besar publik yang menawarkan kenyamanan dan efisiensi sistem terpusat yang dijalankan oleh otoritas yang terpercaya dan tidak dapat diganggu gugat, tanpa inefisiensi dan kelemahan penerapan desentralisasi saat ini. Kami menyebutnya pendekatan kami Algorand, karena kami menggunakan keacakan algoritmik untuk memilih, berdasarkan buku besar yang dibuat sejauh ini, sekumpulan verifikator yang bertugas membangun blok transaksi valid berikutnya. Tentu saja, kami memastikan bahwa pilihan tersebut terbukti kebal dari manipulasi dan tidak dapat diprediksi hingga saat ini pada menit-menit terakhir, namun juga pada akhirnya menjadi jelas secara universal. Pendekatan Algorand cukup demokratis, dalam artian tidak secara prinsip maupun de facto menciptakan kelas pengguna yang berbeda (sebagai “penambang” dan “pengguna biasa” di Bitcoin). Dalam Algorand “semua kekuasaan ada pada himpunan semua pengguna”. Salah satu properti penting dari Algorand adalah riwayat transaksinya hanya dapat bercabang dengan jumlah yang sangat kecil probabilitas (misalnya, satu dalam satu triliun, atau bahkan 10−18). Algorand juga dapat mengatasi beberapa masalah hukum dan kekhawatiran politik. Pendekatan Algorand berlaku untuk blockchains dan, lebih umum, untuk metode pembangkitan apa pun rangkaian blok yang tahan terhadap kerusakan. Kami sebenarnya mengajukan metode baru—alternatif dari, dan lebih efisien daripada, blockchains— yang mungkin merupakan kepentingan independen. 1.1 Asumsi dan Masalah Teknis Bitcoin Bitcoin adalah sistem yang sangat cerdik dan telah menginspirasi banyak penelitian selanjutnya. Namun, itu juga bermasalah. Mari kita rangkum asumsi mendasar dan masalah teknisnya—yang mana sebenarnya dimiliki oleh semua mata uang kripto yang, seperti Bitcoin, didasarkan pada proof-of-work. Untuk ringkasan ini, perlu diingat bahwa, di Bitcoin, pengguna dapat memiliki beberapa kunci publik skema tanda tangan digital, uang dikaitkan dengan kunci publik, dan pembayaran adalah a tanda tangan digital yang mentransfer sejumlah uang dari satu kunci publik ke kunci publik lainnya. Intinya, Bitcoin mengatur semua pembayaran yang diproses dalam rantai blok, B1, B2, . . ., masing-masing terdiri atas kelipatan pembayaran, sehingga seluruh pembayaran B1, dilakukan dalam urutan apa pun, diikuti oleh pembayaran B2, dalam urutan apa pun, dll., merupakan rangkaian pembayaran yang sah. Setiap blok rata-rata dihasilkan setiap 10 menit. Urutan blok ini adalah sebuah rantai, karena disusun sedemikian rupa untuk memastikan bahwa setiap perubahan terjadi secara merata dalam satu blok, meresap ke semua blok berikutnya, sehingga lebih mudah untuk mengenali perubahan apa pun riwayat pembayaran. (Seperti yang akan kita lihat, hal ini dicapai dengan memasukkan kriptografi ke dalam setiap blok hash dari yang sebelumnya.) Struktur blok seperti itu disebut sebagai blockchain. Asumsi: Mayoritas Kekuatan Komputasi yang Jujur Bitcoin berasumsi bahwa tidak ada yang berbahaya entitas (atau koalisi entitas jahat yang terkoordinasi) mengendalikan sebagian besar komputasi daya yang dikhususkan untuk pembangkitan blok. Faktanya, entitas seperti itu dapat mengubah blockchain,dan dengan demikian menulis ulang riwayat pembayaran, sesuai keinginan. Secara khusus, dapat melakukan pembayaran \(\wp\), memperoleh manfaat yang telah dibayarkan, dan kemudian “menghapus” jejak apa pun dari \(\wp\). Masalah Teknis 1: Limbah Komputasi Pendekatan proof-of-work Bitcoin untuk memblokir pembangkitan membutuhkan jumlah komputasi yang luar biasa. Saat ini, hanya dengan beberapa ratus ribuan kunci publik dalam sistem, hanya dapat dikumpulkan oleh 500 superkomputer terkuat hanya 12,8% persen dari total daya komputasi yang dibutuhkan dari pemain Bitcoin. Ini jumlah komputasi akan meningkat pesat jika semakin banyak pengguna yang bergabung dalam sistem. Masalah Teknis 2: Konsentrasi Kekuasaan Saat ini, karena jumlahnya yang selangit diperlukan komputasi, pengguna, mencoba membuat blok baru menggunakan desktop biasa (apalagi a ponsel), diperkirakan akan kehilangan uang. Memang benar, untuk menghitung blok baru dengan komputer biasa, biaya yang diharapkan dari listrik yang diperlukan untuk menggerakkan komputasi melebihi imbalan yang diharapkan. Hanya menggunakan kumpulan komputer yang dibuat khusus (yang tidak melakukan apa pun selain “menambang blok baru”), satu mungkin berharap mendapat untung dengan menghasilkan blok-blok baru. Oleh karena itu, saat ini, secara de facto, ada dua kelas pengguna yang terpisah: pengguna biasa, yang hanya melakukan pembayaran, dan kumpulan penambangan khusus, yang hanya mencari blok baru. Oleh karena itu, tidak mengherankan bahwa, hingga saat ini, total daya komputasi per blok generasi terletak hanya dalam lima kelompok. Dalam kondisi seperti itu, asumsi mayoritas kekuatan komputasi yang jujur menjadi kurang kredibel. Masalah Teknis 3: Ambiguitas Di Bitcoin, blockchain belum tentu unik. Memang bagian terakhirnya sering kali bercabang: blockchain mungkin —katakanlah— B1, . . . , Bk, B′ k+1, B′ k+2, menurut satu pengguna, dan B1, . . . , Bk, B′′ k+1, B′′ k+2, B′′ k+3 menurut pengguna lain. Baru setelah beberapa blok ada telah ditambahkan ke dalam rantai, dapatkah seseorang yakin bahwa k + 3 blok pertama akan sama untuk semua pengguna. Oleh karena itu, seseorang tidak dapat langsung mengandalkan pembayaran yang terdapat di blok terakhir rantai. Akan lebih bijaksana untuk menunggu dan melihat apakah blok tersebut sudah cukup dalam blockchain dan dengan demikian cukup stabil. Secara terpisah, permasalahan penegakan hukum dan kebijakan moneter juga telah diangkat mengenai Bitcoin.1 1.2 Algorand, Singkatnya Pengaturan Algorand bekerja dalam lingkungan yang sangat sulit. Secara singkat, (a) Lingkungan Tanpa Izin dan Izin. Algorand bahkan bekerja secara efisien dan aman dalam lingkungan yang benar-benar tanpa izin, di mana banyak pengguna diizinkan untuk bergabung secara sewenang-wenang sistem kapan saja, tanpa pemeriksaan atau izin apa pun. Tentu saja, Algorand berhasil bahkan lebih baik di lingkungan yang berizin. 1Anonimitas (semu) yang ditawarkan oleh Bitcoin pembayaran dapat disalahgunakan untuk pencucian uang dan/atau pendanaan individu kriminal atau organisasi teroris. Uang kertas tradisional atau emas batangan, yang pada prinsipnya menawarkan kesempurnaan anonimitas, seharusnya menimbulkan tantangan yang sama, namun fisik mata uang ini secara signifikan memperlambat pergerakan uang transfer dana, sehingga memungkinkan adanya pemantauan pada tingkat tertentu oleh lembaga penegak hukum. Kemampuan untuk “mencetak uang” adalah salah satu kekuatan mendasar suatu negara-bangsa. Oleh karena itu, pada prinsipnya masif Penerapan mata uang yang mengambang secara independen dapat membatasi kekuatan ini. Namun saat ini, Bitcoin masih jauh dari harapan ancaman terhadap kebijakan moneter pemerintah, dan karena masalah skalabilitasnya, hal ini mungkin tidak akan pernah terjadi.(b) Lingkungan yang Sangat Bermusuhan. Algorand bertahan melawan Musuh yang sangat kuat, yang mampu (1) secara instan merusak pengguna mana pun yang dia inginkan, kapan pun dia mau, dengan ketentuan, dalam a lingkungan tanpa izin, 2/3 uang dalam sistem adalah milik pengguna yang jujur. (Dalam a lingkungan yang diizinkan, berapa pun uangnya, cukuplah 2/3 penggunanya jujur.) (2) mengontrol sepenuhnya dan mengoordinasikan dengan sempurna semua pengguna yang rusak; dan (3) menjadwalkan pengiriman semua pesan, dengan ketentuan bahwa setiap pesan dikirim oleh pengguna yang jujur menjangkau 95% pengguna jujur dalam waktu \(\lambda\)m, yang semata-mata bergantung pada ukuran m. Properti Utama Meskipun kehadiran musuh kita yang kuat, di Algorand • Jumlah perhitungan yang diperlukan minimal. Intinya, tidak peduli berapa banyak penggunanya hadir dalam sistem, masing-masing dari seribu lima ratus pengguna harus melakukan paling banyak beberapa detik komputasi. • Blok Baru Dibuat dalam waktu kurang dari 10 menit, dan secara de facto tidak akan pernah meninggalkan blockchain. Misalnya, dalam ekspektasi, waktu untuk menghasilkan blok pada perwujudan pertama lebih sedikit daripada Λ + 12.4\(\lambda\), di mana Λ adalah waktu yang diperlukan untuk menyebarkan sebuah blok, dalam gosip peer-to-peer mode, tidak peduli berapa pun ukuran blok yang dipilih, dan \(\lambda\) adalah waktu untuk menyebarkan 1.500 pesan 200Blong. (Karena dalam sistem yang benar-benar terdesentralisasi, Λ pada dasarnya adalah latensi intrinsik, dalam Algorand faktor pembatas dalam pembuatan blok adalah kecepatan jaringan.) Perwujudan kedua memiliki sebenarnya telah diuji secara eksperimental ( oleh ?), menunjukkan bahwa sebuah blok dihasilkan dalam waktu kurang dari 40 detik. Selain itu, blockchain Algorand hanya dapat bercabang dengan probabilitas yang dapat diabaikan (yaitu, kurang dari satu dalam satu triliun), sehingga pengguna dapat meneruskan pembayaran yang terdapat dalam blok baru segera setelahnya blok muncul. • Semua kekuasaan berada di tangan pengguna itu sendiri. Algorand adalah sistem terdistribusi yang sebenarnya. Khususnya, tidak ada entitas eksogen (seperti “penambang” di Bitcoin), yang dapat mengontrol transaksi mana diakui. Teknik Algorand. 1. Protokol Perjanjian Bizantium yang Baru dan Cepat. Algorand menghasilkan blok baru melalui protokol kriptografi, penyampaian pesan, perjanjian biner Bizantium (BA), BA⋆. Protokol BA⋆tidak hanya memenuhi beberapa properti tambahan (yang akan segera kita bahas), namun juga sangat cepat. Secara kasar, versi input binernya terdiri dari loop 3 langkah, di mana pemain i mengirimkan satu pesan mi ke semua pemain lainnya. Dieksekusi dalam jaringan yang lengkap dan sinkron, dengan lebih banyak lagi dari 2/3 pemain jujur, dengan probabilitas > 1/3, setelah setiap loop berakhirnya protokol persetujuan. (Kami menekankan bahwa protokol BA⋆memenuhi definisi asli perjanjian Bizantium dari Pease, Shostak, dan Lamport [31], tanpa melemah apa pun.) Algorand memanfaatkan protokol BA biner ini untuk mencapai kesepakatan, dalam komunikasi kami yang berbeda model, di setiap blok baru. Blok yang disepakati kemudian disertifikasi, melalui sejumlah yang ditentukan tanda tangan digital dari verifikator yang tepat, dan disebarkan melalui jaringan. 2. Penyortiran Kriptografi. Meskipun sangat cepat, protokol BA⋆ akan mendapatkan manfaat lebih jauh kecepatan saat dimainkan oleh jutaan pengguna. Oleh karena itu, Algorand memilih pemain BA⋆untuk menjadisubset yang jauh lebih kecil dari himpunan semua pengguna. Untuk menghindari jenis konsentrasi kekuasaan yang berbeda masalah, setiap blok baru Br akan dibangun dan disepakati, melalui pelaksanaan BA⋆ baru, oleh sekelompok verifikator terpilih yang terpisah, SV r. Pada prinsipnya, memilih set seperti itu mungkin sama sulitnya memilih Br secara langsung. Kami mengatasi potensi masalah ini dengan pendekatan yang kami sebut merangkul saran mendalam dari Maurice Herlihy, penyortiran kriptografi. Penyortiran adalah praktik memilih pejabat secara acak dari sejumlah besar individu yang memenuhi syarat [6]. (Penyortiran dilakukan selama berabad-abad: misalnya, oleh republik Athena, Florence, dan Venesia. Dalam peradilan modern sistem, pemilihan acak sering digunakan untuk memilih juri. Pengambilan sampel secara acak juga baru-baru ini dilakukan menganjurkan pemilu oleh David Chaum [9].) Dalam sistem desentralisasi tentunya memilih koin acak yang diperlukan untuk memilih secara acak anggota setiap set pemverifikasi SV r bermasalah. Oleh karena itu kami menggunakan kriptografi untuk memilih setiap kumpulan verifikasi, dari populasi semua pengguna, dengan cara yang dijamin otomatis (yaitu tidak memerlukan pertukaran pesan) dan acak. Intinya, kami menggunakan fungsi kriptografi untuk menentukan secara otomatis, dari blok sebelumnya Br−1, pengguna, pemimpin, bertugas mengusulkan blok baru Br, dan pemverifikasi himpunan SV r, di bertugas untuk mencapai kesepakatan mengenai blok yang diusulkan oleh pemimpin. Karena pengguna jahat dapat mempengaruhi komposisi Br−1 (misalnya, dengan memilih beberapa pembayarannya), kami secara khusus membuat dan menggunakannya masukan tambahan untuk membuktikan bahwa pemimpin untuk blok ke-r dan himpunan pemverifikasi SV r memang benar dipilih secara acak. 3. Jumlah (Benih) Qr. Kita menggunakan blok terakhir Br−1 di blockchain untuk melakukannya secara otomatis menentukan set verifikasi berikutnya dan pemimpin yang bertugas membangun blok baru Sdr. Tantangan dalam pendekatan ini adalah, dengan hanya memilih pembayaran yang sedikit berbeda di dalamnya putaran sebelumnya, Musuh kita yang kuat memperoleh kendali luar biasa atas pemimpin berikutnya. Bahkan jika dia hanya mengendalikan 1/1000 pemain/uang dalam sistem, dia dapat memastikan bahwa semua pemimpin demikian berbahaya. (Lihat Intuisi Bagian 4.1.) Tantangan ini penting bagi semua pendekatan proof-of-stake, dan, sepanjang pengetahuan kami, hingga kini masalah ini belum terselesaikan dengan memuaskan. Untuk menghadapi tantangan ini, kami sengaja membangun, dan terus memperbarui, secara terpisah dan hati-hati kuantitas yang ditentukan, Qr, yang terbukti, tidak hanya tidak dapat diprediksi, tetapi juga tidak dapat dipengaruhi, oleh kita Musuh yang kuat. Kita dapat menyebut Qr sebagai benih ke-r, karena dari Qr itulah Algorand memilih, melalui penyortiran kriptografi rahasia, semua pengguna yang akan memainkan peran khusus dalam pembuatannya blok ke-r. 4. Penyortiran Kritografi Rahasia dan Kredensial Rahasia. Secara acak dan jelas menggunakan blok terakhir saat ini, Br−1, untuk memilih himpunan verifikasi dan pemimpin yang bertanggung jawab membangun blok baru, Br, tidaklah cukup. Karena Br−1 harus diketahui sebelum menghasilkan Br, kuantitas terakhir yang tidak dapat dipengaruhi Qr−1 yang terkandung dalam Br−1 harus diketahui juga. Oleh karena itu, demikian adalah verifikator dan pemimpin yang bertugas menghitung blok Br. Jadi, Musuh kita yang kuat mungkin akan langsung merusak semuanya, sebelum mereka terlibat dalam diskusi apa pun tentang Br, untuk mendapatkan kontrol penuh atas blok yang mereka sertifikasi. Untuk mencegah masalah ini, para pemimpin (dan sebenarnya juga para pemeriksa) secara diam-diam mengetahui peran mereka, namun mereka bisa menghitung kredensial yang tepat, yang mampu membuktikan kepada semua orang bahwa memang memiliki peran tersebut. Kapan Ketika pengguna secara diam-diam menyadari bahwa dia adalah pemimpin untuk blok berikutnya, pertama-tama dia secara diam-diam merakit bloknya sendiri sendiri yang mengusulkan blok baru, dan kemudian menyebarkannya (sehingga dapat disertifikasi) bersama dengan blok miliknya kredensial. Dengan cara ini, Musuh akan segera menyadari siapa pemimpin selanjutnya blok tersebut, dan meskipun ia dapat langsung merusaknya, maka sudah terlambat bagi Musuh untuk melakukannya mempengaruhi pilihan blok baru. Memang benar, dia tidak bisa “memanggil kembali” pesan pemimpinnya lagidaripada pemerintah yang kuat dapat memasukkan kembali pesan yang disebarkan secara viral oleh WikiLeaks. Seperti yang akan kita lihat, kita tidak bisa menjamin keunikan pemimpin, dan semua orang juga tidak yakin siapa pemimpinnya adalah, termasuk pemimpinnya sendiri! Namun, pada Algorand, kemajuan pasti akan terjamin. 5. Penggantian Pemain. Setelah dia mengusulkan blok baru, pemimpinnya mungkin akan “mati” (atau mati). dirusak oleh Musuh), karena tugasnya telah selesai. Namun, bagi para verifikator di SV r, keadaannya tidak begitu baik sederhana. Memang, bertugas mengesahkan blok baru Br dengan tanda tangan yang cukup banyak, mereka harus terlebih dahulu menjalankan perjanjian Bizantium pada blok yang diusulkan oleh pemimpinnya. Masalahnya adalah, tidak peduli seberapa efisiennya, BA⋆membutuhkan banyak langkah dan kejujuran> 2/3 pemainnya. Hal ini menjadi masalah karena, demi alasan efisiensi, himpunan pemain BA⋆ terdiri dari himpunan kecil SV r dipilih secara acak di antara kumpulan semua pengguna. Jadi, Musuh kita kuat, meski tidak mampu merusak 1/3 dari seluruh pengguna, tentu dapat merusak seluruh anggota SV r! Untungnya kami akan membuktikan bahwa protokol BA⋆, yang dijalankan dengan menyebarkan pesan dengan cara peer-topeer, dapat digantikan oleh pemain. Persyaratan baru ini berarti protokolnya benar dan mencapai konsensus secara efisien bahkan jika setiap langkahnya dijalankan dengan cara yang benar-benar baru dan acak dan dipilih secara independen, sekelompok pemain. Jadi, dengan jutaan pengguna, masing-masing terdiri dari sekelompok kecil pemain terkait dengan langkah BA⋆kemungkinan besar memiliki perpotongan kosong dengan himpunan berikutnya. Selain itu, kumpulan pemain dengan langkah BA⋆ yang berbeda mungkin akan memiliki karakter yang sangat berbeda kardinalitas. Selain itu, anggota setiap set tidak mengetahui siapa pemain berikutnya jadilah, dan jangan diam-diam melewati keadaan internal apa pun. Properti pemain yang dapat diganti sebenarnya sangat penting untuk mengalahkan yang dinamis dan sangat kuat Musuh yang kami bayangkan. Kami percaya bahwa protokol pemain yang dapat diganti akan terbukti penting dalam banyak hal konteks dan aplikasi. Secara khusus, hal ini akan sangat penting untuk melaksanakan sub-protokol kecil dengan aman tertanam di dunia pemain yang lebih besar dengan musuh yang dinamis, yang bahkan mampu merusak sebagian kecil dari total pemain, tidak mengalami kesulitan untuk merusak semua pemain yang lebih kecil sub-protokol. Properti/Teknik Tambahan: Kejujuran Malas Pengguna yang jujur mengikuti resepnya instruksi, termasuk online dan menjalankan protokol. Karena, Algorand hanya memiliki sedikit saja kebutuhan komputasi dan komunikasi, online dan menjalankan protokol “di latar belakang” bukanlah pengorbanan besar. Tentu saja, ada beberapa “ketidakhadiran” di antara pemain jujur, seperti itu karena hilangnya konektivitas secara tiba-tiba atau perlunya reboot, secara otomatis ditoleransi (karena kami selalu dapat menganggap beberapa pemain tersebut sebagai pemain jahat untuk sementara waktu). Namun, mari kita tunjukkan, bahwa Algorand dapat dengan mudah diadaptasi agar berfungsi dalam model baru, di mana pengguna yang jujur sering kali offline. Model baru kami dapat diperkenalkan secara informal sebagai berikut. Kejujuran yang Malas. Secara kasar, pengguna i malas-tapi-jujur jika (1) dia mengikuti semua yang ditentukan instruksi, ketika dia diminta untuk berpartisipasi dalam protokol, dan (2) dia diminta untuk berpartisipasi ke protokol jarang sekali, dan dengan pemberitahuan terlebih dahulu. Dengan gagasan yang santai tentang kejujuran, kita mungkin bahkan lebih yakin bahwa orang-orang jujur juga demikian tersedia ketika kita membutuhkannya, dan Algorand menjamin bahwa, ketika hal ini terjadi, Sistem beroperasi dengan aman meskipun, pada titik waktu tertentu, mayoritas pemain yang berpartisipasi jahat.1.3 Pekerjaan yang Berhubungan Dekat Pendekatan bukti kerja (seperti [29] dan [4] yang dikutip) cukup ortogonal dengan pendekatan kami. Begitu juga dengan pendekatan yang didasarkan pada persetujuan Bizantium yang menyampaikan pesan atau toleransi kesalahan Bizantium yang praktis (seperti yang dikutip [8]). Memang benar, protokol-protokol ini tidak dapat dijalankan di antara semua pengguna dan tidak dapat, dalam model kami, dibatasi hanya untuk sekelompok kecil pengguna. Faktanya, musuh kita yang kuat adalah saya segera merusak semua pengguna yang terlibat dalam sekelompok kecil yang dibebankan untuk benar-benar menjalankan protokol BA. Pendekatan kami dapat dianggap terkait dengan bukti kepemilikan [2], dalam artian “kekuatan” pengguna dalam pembangunan blok sebanding dengan uang yang mereka miliki dalam sistem (berbeda dengan —katakanlah— untuk uang yang mereka masukkan ke dalam “escrow”). Makalah yang paling dekat dengan kami adalah Model Konsensus Mengantuk dari Pass dan Shi [30]. Untuk menghindari perhitungan berat diperlukan dalam pendekatan proof-of-work, makalah mereka bergantung pada (dan ramah kredit) penyortiran kriptografi rahasia Algorand. Dengan kesamaan aspek penting ini, ada beberapa ada perbedaan yang signifikan antara makalah kami. Khususnya, (1) Pengaturannya hanya diperbolehkan. Sebaliknya, Algorand juga merupakan sistem tanpa izin. (2) Mereka menggunakan protokol gaya Nakamoto, dan dengan demikian blockchain mereka sering kali bercabang. Meskipun tanpa proof-of-work, dalam protokol mereka seorang pemimpin yang dipilih secara diam-diam diminta untuk memperpanjang valid terlama (dalam arti yang lebih kaya) blockchain. Oleh karena itu, percabangan tidak dapat dihindari dan kita harus menunggunya blok tersebut cukup “dalam” di dalam rantai. Memang, untuk mencapai tujuan mereka dengan musuh mampu melakukan korupsi adaptif, mereka memerlukan blok yang memiliki kedalaman poli(N), di mana N mewakili jumlah total pengguna dalam sistem. Perhatikan hal itu, bahkan dengan asumsi bahwa sebuah blok dapat diproduksi dalam satu menit, jika ada N = 1 juta pengguna, maka seseorang harus menunggu sekitar 2 juta tahun untuk bisa mendapatkannya satu blok menjadi sedalam N 2, dan selama sekitar 2 tahun agar satu blok menjadi sedalam N. Sebaliknya, Algorand blockchain bercabang hanya dengan kemungkinan yang dapat diabaikan, meskipun Musuh korup pengguna secara cepat dan adaptif, dan blok-blok barunya dapat segera diandalkan. (3) Mereka tidak menangani perjanjian Bizantium secara individual. Dalam arti tertentu, mereka hanya menjamin “konsensus akhir mengenai rangkaian nilai yang berkembang”. Protokol mereka adalah protokol replikasi negara daripada BA, dan tidak dapat digunakan untuk mencapai kesepakatan Bizantium mengenai nilai kepentingan individu. Sebaliknya, Algorand juga dapat digunakan hanya sekali, jika diinginkan, untuk memungkinkan jutaan pengguna dengan cepat mencapai kesepakatan Bizantium mengenai nilai bunga tertentu. (4) Mereka memerlukan jam yang disinkronkan dengan lemah. Artinya, semua jam pengguna diimbangi dengan waktu yang kecil δ. Sebaliknya, di Algorand, jam hanya perlu memiliki (pada dasarnya) “kecepatan” yang sama. (5) Protokol mereka bekerja dengan pengguna yang malas tapi jujur atau dengan mayoritas pengguna online yang jujur. Mereka dengan hormat memuji Algorand karena telah mengangkat masalah pengguna jujur yang online secara massal, dan untuk mengedepankan model kejujuran yang malas sebagai tanggapannya. Protokol mereka tidak hanya berfungsi pada orang yang malas model kejujuran, tetapi juga dalam model mengantuk permusuhan, di mana musuh memilih pengguna yang mana sedang online dan mana yang offline, asalkan mayoritas pengguna online selalu jujur.2 2Versi asli dari makalah mereka sebenarnya hanya mempertimbangkan keamanan dalam model mengantuk mereka yang bermusuhan. Itu versi asli Algorand, yang mendahului versi mereka, juga secara eksplisit dipertimbangkan dengan asumsi bahwa mayoritas penduduk pemain online selalu jujur, namun secara eksplisit mengecualikannya dari pertimbangan, mendukung model kejujuran yang malas. (Misalnya, jika suatu saat setengah dari pengguna jujur memilih untuk offline, maka mayoritas pengguna online mungkin sangat berbahaya. Jadi, untuk mencegah hal ini terjadi, Musuh harus memaksakan sebagian besar kekuatannya pemain yang korup untuk offline juga, yang jelas-jelas bertentangan dengan kepentingannya sendiri.) Perhatikan bahwa protokol dengan mayoritas Pemain yang malas tapi jujur akan bekerja dengan baik jika mayoritas pengguna online selalu jahat. Hal ini terjadi karena sejumlah pemain jujur, mengetahui bahwa mereka akan menjadi krusial pada suatu saat tertentu, akan memilih tidak boleh offline pada saat-saat itu, juga tidak dapat dipaksa offline oleh Musuh, karena dia tidak tahu siapa yang mungkin pemain jujur yang penting.(6) Mereka memerlukan mayoritas yang sederhana dan jujur. Sebaliknya, versi Algorand saat ini memerlukan mayoritas jujur 2/3. Makalah lain yang dekat dengan kami adalah Ouroboros: Protokol Blockchain Bukti Saham yang Terbukti Aman, oleh Kiayias, Russell, David, dan Oliynykov [20]. Sistem mereka juga muncul setelah sistem kita. Itu juga menggunakan penyortiran kriptografi untuk membuang bukti kerja dengan cara yang dapat dibuktikan. Namun, mereka Sistem ini, sekali lagi, merupakan protokol gaya Nakamoto, yang mana percabangan tidak dapat dihindari dan sering terjadi. (Namun, dalam model mereka, hambatan tidak perlu sedalam model konsensus yang mengantuk.) Selain itu, sistem mereka bergantung pada asumsi berikut: menurut penulisnya sendiri, “(1) the jaringan sangat sinkron, (2) mayoritas pemangku kepentingan terpilih tersedia sesuai kebutuhan untuk berpartisipasi dalam setiap zaman, (3) para pemangku kepentingan tidak harus offline dalam jangka waktu yang lama, (4) adaptasi korupsi tunduk pada penundaan kecil yang diukur dalam putaran linear parameter keamanan.” Sebaliknya, Algorand, dengan kemungkinan besar, bebas fork, dan tidak bergantung pada salah satu dari 4 asumsi ini. Khususnya, di Algorand, Musuh mampu melakukannya secara instan merusak pengguna yang ingin dia kendalikan.
مقدمة
أصبح المال افتراضيًا بشكل متزايد. وتشير التقديرات إلى أن حوالي 80٪ من الولايات المتحدة الدولارات اليوم موجودة فقط كإدخالات دفتر الأستاذ [5]. وتحذو الأدوات المالية الأخرى حذوها. في عالم مثالي، حيث يمكننا الاعتماد على كيان مركزي موثوق به عالميًا، يتمتع بالمناعة في مواجهة جميع الهجمات السيبرانية المحتملة، يمكن أن تكون الأموال والمعاملات المالية الأخرى إلكترونية فقط. ولسوء الحظ، نحن لا نعيش في مثل هذا العالم. وبناء على ذلك، فإن العملات المشفرة اللامركزية، مثل مثل Bitcoin [29]، وأنظمة "smart contract"، مثل Ethereum، تم اقتراحها [4]. في قلب هذه الأنظمة هو دفتر أستاذ مشترك يسجل بشكل موثوق سلسلة من المعاملات، ∗ هذه هي النسخة الأكثر رسمية (وغير المتزامنة) من ورقة ArXiv للمؤلف الثاني [24]، وهي ورقة بحثية نفسها مبنية على نظرية جوربونوف وميكالي [18]. تقنيات Algorand هي الهدف مما يلي طلبات براءات الاختراع: US62/117,138 US62/120,916 US62/142,318 US62/218,817 US62/314,601 PCT/US2016/018300 US62/326,865 62/331,654 US62/333,340 US62/343,369 US62/344,667 US62/346,775 US62/351,011 US62/653,482 US62/352,195 US62/363,970 US62/369,447 US62/378,753 US62/383,299 US62/394,091 US62/400,361 US62/403,403 US62/410,721 US62/416,959 US62/422,883 US62/455,444 US62/458,746 US62/459,652 US62/460,928 US62/465,931متنوعة مثل المدفوعات والعقود، بطريقة لا يمكن التلاعب بها. التكنولوجيا المفضلة ل ضمان عدم التلاعب هو blockchain. تقف Blockchains وراء تطبيقات مثل العملات المشفرة [29]، والتطبيقات المالية [4]، وإنترنت الأشياء [3]. عدة تقنيات لإدارة دفاتر الأستاذ المستندة إلى blockchain: إثبات العمل [29]، إثبات الحصة [2]، التسامح البيزنطي العملي مع الأخطاء [8]، أو مزيج من ذلك. ومع ذلك، في الوقت الحالي، قد تكون إدارة دفاتر الأستاذ غير فعالة. على سبيل المثال، Bitcoin proof-of-work النهج (المبني على المفهوم الأصلي لـ [14]) يتطلب قدرًا هائلاً من العمليات الحسابية، وهو أمر مهدر والمقاييس سيئة [1]. وبالإضافة إلى ذلك، فهو يركز السلطة فعلياً في أيدي عدد قليل جداً من الناس. ولذلك نرغب في طرح طريقة جديدة لتنفيذ دفتر الأستاذ العام الذي يقدم راحة وكفاءة نظام مركزي تديره سلطة موثوقة لا تنتهك حرمتها أوجه القصور والضعف في التطبيقات اللامركزية الحالية. نحن نسمي نهجنا Algorand، لأننا نستخدم العشوائية الخوارزمية للاختيار، بناءً على دفتر الأستاذ الذي تم إنشاؤه حتى الآن، مجموعة من المدققين المسؤولين عن إنشاء المجموعة التالية من المعاملات الصحيحة. بطبيعة الحال، نحن نضمن أن مثل هذه الاختيارات محصنة ضد التلاعب ولا يمكن التنبؤ بها حتى اللحظة الأخيرة، ولكن أيضًا أنها واضحة عالميًا في نهاية المطاف. يعتبر نهج Algorand ديمقراطيًا تمامًا، بمعنى أنه لا من حيث المبدأ ولا من حيث الواقع ينشئ فئات مختلفة من المستخدمين (مثل "عمال المناجم" و"المستخدمين العاديين" في Bitcoin). في Algorand "الكل القوة تكمن في مجموعة جميع المستخدمين. إحدى الخصائص البارزة لـ Algorand هي أن سجل معاملاتها قد يتفرع فقط مع عدد صغير جدًا الاحتمالية (على سبيل المثال، واحد في تريليون، أو حتى 10−18). يمكن لـ Algorand أيضًا معالجة بعض الأمور القانونية والمخاوف السياسية. ينطبق أسلوب Algorand على blockchains وبشكل أعم على أي طريقة لتوليد تسلسل من الكتل لا يمكن التلاعب به. لقد طرحنا في الواقع طريقة جديدة — بديلة لـ و أكثر كفاءة من blockchains — التي قد تكون ذات فائدة مستقلة. 1.1 Bitcoin افتراضات ومشاكل فنية Bitcoin هو نظام مبتكر للغاية وقد ألهم قدرًا كبيرًا من الأبحاث اللاحقة. ومع ذلك، فإنه هو أيضا مشكلة. دعونا نلخص الافتراضات الأساسية والمشاكل الفنية - والتي تتم مشاركتها فعليًا بواسطة جميع العملات المشفرة التي، مثل Bitcoin، تعتمد على proof-of-work. بالنسبة لهذا الملخص، يكفي أن نتذكر أنه في Bitcoin، قد يمتلك المستخدم مفاتيح عامة متعددة لمخطط التوقيع الرقمي، أن الأموال مرتبطة بالمفاتيح العامة، وأن الدفع عبارة عن التوقيع الرقمي الذي ينقل مبلغًا من المال من مفتاح عام إلى آخر. في الأساس، Bitcoin ينظم كافة المدفوعات التي تمت معالجتها في سلسلة من الكتل، B1، B2، . . .، يتكون كل منها من عدة المدفوعات، بحيث يتم أخذ جميع دفعات B1 بأي ترتيب، تليها دفعات B2 بأي ترتيب، وما إلى ذلك، تشكل سلسلة من المدفوعات الصحيحة. يتم إنشاء كل كتلة، في المتوسط، كل 10 دقائق. هذا التسلسل من الكتل هو سلسلة، لأنه منظم بحيث يضمن عدم حدوث أي تغيير، حتى في كتلة واحدة، يتسرب إلى جميع الكتل اللاحقة، مما يسهل اكتشاف أي تغيير تاريخ الدفع. (كما سنرى، يتم تحقيق ذلك من خلال تضمين كل كتلة تشفيرًا hash للبنية السابقة.) ويشار إلى بنية الكتلة هذه باسم blockchain. الافتراض: الأغلبية الصادقة من القوة الحسابية Bitcoin يفترض أنه لا يوجد أي ضرر يتحكم الكيان (ولا تحالف الكيانات الخبيثة المنسقة) في غالبية العمليات الحسابية السلطة المكرسة لمنع الجيل. في الواقع، سيكون مثل هذا الكيان قادرًا على تعديل blockchain،وبالتالي إعادة كتابة تاريخ الدفع، كما يحلو لك. على وجه الخصوص، يمكنها إجراء دفعة \(\wp\)، احصل على الفوائد المدفوعة، ثم "امسح" أي أثر لـ \(\wp\). المشكلة الفنية 1: النفايات الحسابية طريقة Bitcoin proof-of-work للحظر يتطلب التوليد قدرًا غير عادي من الحسابات. حاليا، مع بضع مئات فقط الآلاف من المفاتيح العامة في النظام، لا يمكن لأقوى 500 جهاز كمبيوتر عملاق سوى حشدها مجرد 12.8% من إجمالي القوة الحسابية المطلوبة من مشغلات Bitcoin. هذا سيزداد مقدار العمليات الحسابية بشكل كبير، في حالة انضمام عدد أكبر من المستخدمين إلى النظام بشكل ملحوظ. المشكلة الفنية 2: تركيز الطاقة اليوم، وذلك بسبب كمية هائلة من يتطلب الحساب أن يحاول المستخدم إنشاء كتلة جديدة باستخدام سطح مكتب عادي (ناهيك عن ملف الهاتف الخليوي)، يتوقع أن يخسر المال. في الواقع، لحساب كتلة جديدة باستخدام جهاز كمبيوتر عادي، التكلفة المتوقعة للكهرباء اللازمة لتشغيل الحساب تتجاوز المكافأة المتوقعة. فقط باستخدام مجموعات من أجهزة الكمبيوتر المصممة خصيصًا (والتي لا تفعل شيئًا سوى "استخراج كتل جديدة")، أولاً قد تتوقع تحقيق الربح من خلال إنشاء كتل جديدة. وبناء على ذلك، يوجد اليوم، بحكم الأمر الواقع، اثنان فئات منفصلة من المستخدمين: المستخدمون العاديون، الذين يقومون بالدفع فقط، ومجموعات التعدين المتخصصة، التي تبحث فقط عن كتل جديدة. لذلك لا ينبغي أن يكون مفاجئًا أن إجمالي قوة الحوسبة للكتلة حتى الآونة الأخيرة يقع التوليد ضمن خمسة مجمعات فقط. في مثل هذه الظروف، فإن الافتراض بأن أغلبية القوة الحسابية صادقة تصبح أقل مصداقية. المشكلة الفنية 3: الغموض في Bitcoin، blockchain ليس بالضرورة فريدًا. في الواقع غالبًا ما يكون الجزء الأخير متشعبًا: قد يكون blockchain - على سبيل المثال - B1، . . . ، بك، ب' ك+1، ب' ك+2، وفقًا لـ مستخدم واحد، وB1، . . . ، بك، ب '' ك +1، ب '' ك+2، ب '' ك+3 بحسب مستخدم آخر. إلا بعد عدة كتل لها إذا تمت إضافتها إلى السلسلة، فهل يمكن للمرء أن يكون متأكدًا بشكل معقول من أن الكتل الأولى k + 3 ستكون هي نفسها لجميع المستخدمين. وبالتالي، لا يمكن للمرء الاعتماد على الفور على المدفوعات الواردة في الكتلة الأخيرة من السلسلة. ومن الأفضل الانتظار ومعرفة ما إذا كانت الكتلة قد أصبحت عميقة بما فيه الكفاية في أم لا blockchain وبالتالي فهو مستقر بدرجة كافية. بشكل منفصل، أثيرت أيضًا مخاوف تتعلق بإنفاذ القانون والسياسة النقدية بشأن Bitcoin.1 1.2 Algorand باختصار الإعداد Algorand يعمل في بيئة صعبة للغاية. باختصار، (أ) البيئات المسموح بها وغير المسموح بها. Algorand يعمل بكفاءة وأمان في بيئة غير مسموح بها تمامًا، حيث يُسمح للعديد من المستخدمين بشكل تعسفي بالانضمام إلى النظام في أي وقت، دون أي تدقيق أو إذن من أي نوع. بالطبع، Algorand يعمل حتى أفضل في بيئة مسموح بها. 1قد يتم إساءة استخدام ميزة إخفاء الهوية (الزائفة) التي تقدمها مدفوعات Bitcoin لغسل الأموال و/أو التمويل من الأفراد الإجراميين أو المنظمات الإرهابية. الأوراق النقدية التقليدية أو سبائك الذهب، والتي من حيث المبدأ تقدم الكمال وينبغي أن يشكل عدم الكشف عن هويته نفس التحدي، ولكن الطبيعة المادية لهذه العملات تؤدي إلى إبطاء تدفق الأموال بشكل كبير عمليات النقل، وذلك للسماح بدرجة معينة من المراقبة من قبل وكالات إنفاذ القانون. تعد القدرة على "طباعة النقود" إحدى القوى الأساسية للدولة القومية. من حيث المبدأ، لذلك، ضخمة واعتماد عملة معومة بشكل مستقل قد يحد من هذه السلطة. ومع ذلك، في الوقت الحالي، Bitcoin أبعد ما يكون عن الوجود وهو يشكل تهديداً للسياسات النقدية الحكومية، ونظراً لمشاكل قابلية التوسع، فقد لا يكون كذلك أبداً.(ب) البيئات شديدة الخصومة. Algorand يقاوم خصمًا قويًا جدًا، من يستطيع ذلك (1) إتلاف أي مستخدم يريده على الفور، في أي وقت يريده، بشرط أن يكون ذلك في بيئة غير مسموح بها، ثلثي الأموال الموجودة في النظام مملوكة للمستخدم الصادق. (في أ بيئة مرخصة، بغض النظر عن المال، يكفي أن يكون ثلثا المستخدمين صادقين.) (2) السيطرة الكاملة والتنسيق التام على جميع المستخدمين الفاسدين؛ و (3) جدولة تسليم كافة الرسائل، على أن تكون كل رسالة مرسلة من قبل مستخدم صادق يصل إلى 95% من المستخدمين الصادقين خلال فترة زمنية μm، والتي تعتمد فقط على حجم m. الخصائص الرئيسية على الرغم من وجود خصمنا القوي، في Algorand • مقدار الحساب المطلوب هو الحد الأدنى. في الأساس، بغض النظر عن عدد المستخدمين الموجود في النظام، يجب على كل مستخدم من ألف وخمسمائة مستخدم أن يؤدي بضع ثوانٍ على الأكثر حساب. • يتم إنشاء كتلة جديدة في أقل من 10 دقائق، ولن تترك أبدًا blockchain بحكم الأمر الواقع. على سبيل المثال، في حالة التوقع، يكون الوقت اللازم لإنشاء كتلة في النموذج الأول أقل من Λ + 12.4\(\alpha\)، حيث Λ هو الوقت اللازم لنشر الكتلة، في ثرثرة نظير إلى نظير الموضة، بغض النظر عن حجم الكتلة التي قد يختارها المرء، و lect هو الوقت المناسب لنشر 1500 رسالة 200Blong. (نظرًا لأنه في النظام اللامركزي حقًا، Λ هو في الأساس زمن انتقال جوهري، في Algorand العامل المحدد في إنشاء الكتلة هو سرعة الشبكة.) التجسيد الثاني له في الواقع تم اختباره تجريبيًا (بواسطة؟)، مما يشير إلى أنه تم إنشاء الكتلة في أقل من 40 ثواني. بالإضافة إلى ذلك، قد يحدث تفرع لـ Algorand blockchain فقط مع احتمال ضئيل (أي أقل من واحد في تريليون)، وبالتالي يمكن للمستخدمين الاعتماد على المدفوعات الواردة في كتلة جديدة بمجرد تظهر الكتلة. • كل السلطة تكمن في المستخدمين أنفسهم. Algorand هو نظام موزع حقيقي. على وجه الخصوص، لا توجد كيانات خارجية (مثل "المعدنين" في Bitcoin)، يمكنها التحكم في المعاملات يتم التعرف عليها. تقنيات Algorand. 1. بروتوكول اتفاقية بيزنطية جديدة وسريعة. Algorand ينشئ كتلة جديدة عبر بروتوكول جديد للتشفير، وتمرير الرسائل، واتفاقية بيزنطية ثنائية (BA)، BA⋆. بروتوكول لا يلبي بعض الخصائص الإضافية فقط (التي سنناقشها قريبًا)، ولكنه أيضًا سريع جدًا. بشكل تقريبي، تتكون نسخة الإدخال الثنائي من حلقة مكونة من 3 خطوات، حيث يرسل اللاعب رسالة واحدة أرسل رسالة إلى جميع اللاعبين الآخرين. يتم تنفيذها في شبكة كاملة ومتزامنة، مع المزيد أكثر من ثلثي اللاعبين صادقين، مع احتمال > 1/3، بعد كل حلقة ينتهي البروتوكول فيها اتفاق. (نؤكد على أن البروتوكول يلبي التعريف الأصلي للاتفاقية البيزنطية من Pease وShostak وLamport [31]، دون أي إضعاف.) يستفيد Algorand من بروتوكول BA الثنائي هذا للتوصل إلى اتفاق في اتصالاتنا المختلفة نموذج، على كل كتلة جديدة. يتم بعد ذلك التصديق على الكتلة المتفق عليها عبر عدد محدد من التوقيع الرقمي للمحققين المناسبين، ونشره عبر الشبكة. 2. فرز التشفير. على الرغم من أنه سريع جدًا، إلا أن البروتوكول BA⋆ سيستفيد من المزيد السرعة عندما يلعبها ملايين المستخدمين. وبناء على ذلك، Algorand يختار لاعبي BA⋆ ليكونوامجموعة فرعية أصغر بكثير من مجموعة جميع المستخدمين. لتجنب نوع مختلف من تركيز السلطة المشكلة، سيتم إنشاء كل كتلة جديدة Br والاتفاق عليها، من خلال تنفيذ جديد لـ BA⋆، بواسطة مجموعة منفصلة من المحققين المختارين، SV r. من حيث المبدأ، قد يكون اختيار مثل هذه المجموعة أمرًا صعبًا اختيار Br مباشرة. نحن نجتاز هذه المشكلة المحتملة من خلال نهج نطلق عليه اسم "الاحتضان". الاقتراح الثاقب لموريس هيرليهي، فرز التشفير. الفرز هو ممارسة اختيار المسؤولين بشكل عشوائي من مجموعة كبيرة من الأفراد المؤهلين [6]. (تم ممارسة الفرز عبر القرون: على سبيل المثال، من قبل جمهوريات أثينا وفلورنسا والبندقية. في القضاء الحديث في الأنظمة، غالبًا ما يُستخدم الاختيار العشوائي لاختيار هيئة المحلفين. كما تم أخذ عينات عشوائية في الآونة الأخيرة دعا إلى الانتخابات ديفيد شوم [9].) في النظام اللامركزي، بالطبع، اختيار تعتبر العملات المعدنية العشوائية اللازمة لاختيار أعضاء كل مجموعة تحقق بشكل عشوائي (SV r) مشكلة. وبالتالي فإننا نلجأ إلى التشفير من أجل اختيار كل مجموعة من أدوات التحقق من مجموعة جميع المستخدمين، بطريقة مضمونة لتكون تلقائية (أي لا تتطلب تبادل الرسائل) وعشوائية. في الأساس، نستخدم وظيفة تشفير لتحديد الكتلة السابقة تلقائيًا Br−1، المستخدم، القائد، المسؤول عن اقتراح الكتلة الجديدة Br، ومجموعة المدقق SV r، في تهمة التوصل إلى اتفاق بشأن الكتلة التي اقترحها الزعيم. نظرًا لأن المستخدمين الضارين يمكن أن يؤثروا تكوين Br−1 (على سبيل المثال، عن طريق اختيار بعض دفعاته)، نقوم ببنائه واستخدامه بشكل خاص مدخلات إضافية لإثبات أن قائد الكتلة r ومجموعة التحقق SV r موجودان بالفعل تم اختياره عشوائيا. 3. الكمية (البذرة) ريال قطري. نستخدم الكتلة الأخيرة Br−1 في blockchain من أجل يحدد تلقائيا مجموعة التحقق التالية والقائد المسؤول عن بناء الكتلة الجديدة ر. التحدي الذي يواجه هذا النهج هو أنه بمجرد اختيار دفعة مختلفة قليلاً في في الجولة السابقة، يكتسب خصمنا القوي سيطرة هائلة على القائد التالي. حتى لو كان يتحكم فقط في 1/1000 من اللاعبين/الأموال في النظام، ويمكنه التأكد من أن جميع القادة كذلك ضارة. (راجع قسم الحدس 4.1.) يعد هذا التحدي أساسيًا لجميع أساليب proof-of-stake، وعلى حد علمنا، لم يتم حل المشكلة بشكل مرضٍ حتى الآن. ولمواجهة هذا التحدي، قمنا عمدًا ببناء نظام منفصل وبعناية وتحديثه باستمرار كمية محددة، Qr، والتي من المؤكد أنها ليست فقط غير قابلة للتنبؤ، ولكنها أيضًا غير قابلة للتأثير من خلال معرفتنا. خصم قوي. قد نشير إلى Qr باعتباره البذرة r، حيث أنه من Qr الذي يختاره Algorand، عبر فرز التشفير السري، سيلعب جميع المستخدمين دورًا خاصًا في إنشاء ملف كتلة ر. 4. الفرز السري للتشفير وبيانات الاعتماد السرية. عشوائياً وبشكل لا لبس فيه استخدام الكتلة الأخيرة الحالية، Br−1، من أجل اختيار مجموعة التحقق والقائد المسؤول بناء الكتلة الجديدة، Br، ليس كافيا. بما أنه يجب معرفة Br−1 قبل إنشاء Br، يجب أن تكون الكمية الأخيرة غير المؤثرة Qr−1 الموجودة في Br−1 معروفة أيضًا. وفقا لذلك، لذلك هم القائمون على التحقق والقائد المسؤول عن حساب الكتلة Br. وهكذا، خصمنا القوي قد يفسدهم جميعًا على الفور، قبل أن ينخرطوا في أي نقاش حول Br، حتى يحصلوا على السيطرة الكاملة على الكتلة التي يشهدون عليها. ولمنع حدوث هذه المشكلة، يعرف القادة (والمسؤولون عن التحقق أيضًا) سرًا عن دورهم، لكن يمكنهم فعل ذلك حساب بيانات الاعتماد المناسبة، القادرة على إثبات كل من لديه هذا الدور بالفعل. متى يدرك المستخدم سرًا أنه قائد الكتلة التالية، فيقوم أولاً بتجميع مجموعته سرًا الكتلة الجديدة المقترحة الخاصة به، ثم ينشرها (بحيث يمكن التصديق عليها) مع كتلته الخاصة بيانات الاعتماد. بهذه الطريقة، على الرغم من أن الخصم سيدرك على الفور من هو القائد التالي الكتلة موجودة، وعلى الرغم من أنه يستطيع إفساده على الفور، إلا أنه سيكون قد فات الأوان على الخصم أن يفعل ذلك التأثير على اختيار كتلة جديدة. في الواقع، لم يعد بإمكانه "الرد" على رسالة القائدمن أن تتمكن حكومة قوية من إعادة الرسالة التي انتشرت بسرعة عبر موقع ويكيليكس إلى القمقم. وكما سنرى، لا يمكننا أن نضمن تفرد القائد، ولا أن يكون الجميع متأكدين من هو القائد هو، بما في ذلك الزعيم نفسه! ولكن، في Algorand، سيتم ضمان التقدم الذي لا لبس فيه. 5. إمكانية استبدال اللاعب. وبعد أن يقترح كتلة جديدة، قد "يموت" القائد أيضًا (أو يموت). أفسده الخصم)، لأن مهمته قد انتهت. لكن بالنسبة للمحققين في SV r، فالأمور أقل بسيط. في الواقع، كونه مسؤولاً عن التصديق على الكتلة الجديدة Br بعدد كاف من التوقيعات، يجب عليهم أولاً تنفيذ الاتفاق البيزنطي بشأن الكتلة التي يقترحها القائد. المشكلة هي أن، بغض النظر عن مدى كفاءتها، تتطلب BA خطوات متعددة وأمانة > 2/3 من لاعبيها. هذه مشكلة، لأنه، لأسباب تتعلق بالكفاءة، تتكون مجموعة المشغلات من BA⋆ من المجموعة الصغيرة SV r تم اختياره عشوائيًا من بين مجموعة جميع المستخدمين. وهكذا، فإن خصمنا القوي، على الرغم من عدم قدرته على ذلك فاسد 1/3 من جميع المستخدمين، يمكنه بالتأكيد إفساد جميع أعضاء SV r! لحسن الحظ، سنثبت أن البروتوكول BA⋆، الذي يتم تنفيذه عن طريق نشر الرسائل بطريقة نظير إلى نظير، يمكن استبداله بواسطة اللاعب. هذا الشرط الجديد يعني أن البروتوكول بشكل صحيح و يصل إلى الإجماع بكفاءة حتى لو تم تنفيذ كل خطوة من خطواته بطريقة جديدة تمامًا وعشوائية وتم اختيار مجموعة من اللاعبين بشكل مستقل. وهكذا، مع الملايين من المستخدمين، كل مجموعة صغيرة من اللاعبين المرتبطة بخطوة BA⋆ على الأرجح تحتوي على تقاطع فارغ مع المجموعة التالية. بالإضافة إلى ذلك، من المحتمل أن تكون مجموعات اللاعبين ذوي الخطوات المختلفة لـ BA مختلفة تمامًا أصل. علاوة على ذلك، فإن أعضاء كل مجموعة لا يعرفون من ستكون المجموعة التالية من اللاعبين كن، ولا تمر سرا بأي حالة داخلية. تعد خاصية اللاعب القابل للاستبدال أمرًا بالغ الأهمية لهزيمة الديناميكية والقوية جدًا العدو الذي نتصوره. نعتقد أن بروتوكولات اللاعب القابل للاستبدال ستكون حاسمة في الكثير السياقات والتطبيقات. وعلى وجه الخصوص، سيكون لها دور حاسم في تنفيذ البروتوكولات الفرعية الصغيرة بشكل آمن جزء لا يتجزأ من عالم أكبر من اللاعبين الذين لديهم خصم ديناميكي قادر على إفساد حتى جزء صغير من إجمالي اللاعبين، ليس لديه صعوبة في إفساد جميع اللاعبين في الأصغر البروتوكول الفرعي. خاصية/تقنية إضافية: الصدق الكسول المستخدم الصادق يتبع تعليماته التعليمات، والتي تتضمن الاتصال بالإنترنت وتشغيل البروتوكول. نظرًا لأن Algorand لديه متواضع فقط متطلبات الحساب والاتصال، والبقاء على الإنترنت وتشغيل البروتوكول "في "الخلفية" ليست تضحية كبيرة. وبطبيعة الحال، هناك عدد قليل من "الغيابات" بين اللاعبين الشرفاء، مثل هؤلاء بسبب فقدان الاتصال المفاجئ أو الحاجة إلى إعادة التشغيل، يتم التسامح معها تلقائيًا (لأن يمكننا دائمًا اعتبار هؤلاء اللاعبين القلائل ضارين مؤقتًا). ولكن دعونا نشير، أن Algorand يمكن تعديله ببساطة للعمل في نموذج جديد، حيث يكون المستخدمون الصادقون غير متصل في معظم الأوقات. يمكن تقديم نموذجنا الجديد بشكل غير رسمي على النحو التالي. الصدق كسول. بشكل تقريبي، يكون المستخدم كسولًا ولكن صادقًا إذا (1) اتبع جميع تعليماته التعليمات، عندما يُطلب منه المشاركة في البروتوكول، و(2) يُطلب منه المشاركة نادراً ما يتم الالتزام بالبروتوكول، وبإشعار مسبق مناسب. مع مثل هذا المفهوم المريح للصدق، قد نكون أكثر ثقة في أن الأشخاص الصادقين سيكونون كذلك في متناول اليد عندما نحتاج إليها، ويضمن Algorand أنه، في هذه الحالة، يعمل النظام بشكل آمن حتى لو، في وقت معين، غالبية اللاعبين المشاركين ضارون.1.3 العمل ذو الصلة الوثيقة تعتبر أساليب إثبات العمل (مثل [29] و[4]) متعامدة تمامًا مع أساليبنا. كذلك هم الأساليب القائمة على الاتفاق البيزنطي لتمرير الرسائل أو التسامح العملي مع الخطأ البيزنطي (مثل المذكور [8]). في الواقع، لا يمكن تشغيل هذه البروتوكولات بين مجموعة جميع المستخدمين ولا يمكن، في نموذجنا، يقتصر على مجموعة صغيرة مناسبة من المستخدمين. في الواقع، خصمنا القوي قم بإفساد جميع المستخدمين المشاركين في مجموعة صغيرة مكلفة بتشغيل بروتوكول مكتبة الإسكندرية على الفور. يمكن اعتبار نهجنا متعلقًا بإثبات الحصة [2]، بمعنى أن "قوة" المستخدمين في بناء الكتل يتناسب مع الأموال التي يمتلكونها في النظام (على عكس - على سبيل المثال - إلى الأموال التي وضعوها في "الضمان"). الورقة الأقرب إلينا هي نموذج الإجماع النعسان لباس وشي [30]. لتجنب العمليات الحسابية الثقيلة المطلوبة في نهج proof-of-work، تعتمد ورقتهم على (ويرجى الاعتمادات) فرز التشفير السري لـ Algorand. مع هذا الجانب الحاسم المشترك، عدة توجد اختلافات كبيرة بين أوراقنا. على وجه الخصوص، (١) لا يجوز ضبطها إلا مأذونا بها. على النقيض من ذلك، Algorand هو أيضًا نظام غير مسموح به. (2) يستخدمون بروتوكولًا على طراز ناكاموتو، وبالتالي blockchain شوكاتهم بشكل متكرر. على الرغم من الاستغناء عن proof-of-work، في بروتوكولهم يُطلب من القائد المختار سرًا إطالة الأطول صلاحية (بمعنى أكثر ثراءً) blockchain. وبالتالي، لا يمكن تجنب الشوكات ويجب على المرء أن ينتظر ذلك فالكتلة "عميقة" بشكل كافٍ في السلسلة. في الواقع، لتحقيق أهدافهم مع الخصم قادرة على الفساد التكيفي، فهي تتطلب أن تكون الكتلة عميقة متعدد (N)، حيث تمثل N إجمالي عدد المستخدمين في النظام. لاحظ أنه حتى على افتراض إمكانية إنتاج كتلة في دقيقة واحدة، إذا كان هناك N = 1M مستخدم، فسيتعين على المرء الانتظار لمدة 2 مليون سنة تقريبًا كتلة لتصبح N2-deep، ولمدة عامين تقريبًا حتى تصبح الكتلة N-deep. على النقيض من ذلك، تشعبات Algorand blockchain فقط مع احتمال ضئيل، على الرغم من أن الخصم فاسد المستخدمين بشكل فوري وقابل للتكيف، ويمكن الاعتماد على كتله الجديدة على الفور. (3) لا يتعاملون مع الاتفاقيات البيزنطية الفردية. بمعنى أنهم يضمنون فقط "الإجماع النهائي على سلسلة متزايدة من القيم". إن بروتوكولهم هو بروتوكول النسخ المتماثل للدولة، بدلاً من ذلك من درجة البكالوريوس، ولا يمكن استخدامها للتوصل إلى اتفاق بيزنطي بشأن قيمة الفائدة الفردية. على النقيض من ذلك، يمكن أيضًا استخدام Algorand مرة واحدة فقط، إذا رغبت في ذلك، لتمكين الملايين من المستخدمين من التوصل إلى اتفاق بيزنطي بشأن قيمة محددة للفائدة. (4) أنها تتطلب ساعات متزامنة بشكل ضعيف. وهذا يعني أن ساعات جميع المستخدمين يتم تعويضها بوقت صغير δ. على النقيض من ذلك، في Algorand، تحتاج الساعات فقط (بشكل أساسي) إلى نفس "السرعة". (5) يعمل بروتوكولهم مع مستخدمين كسالى لكن صادقين أو مع أغلبية صادقة من مستخدمي الإنترنت. إنهم ينسبون الفضل إلى Algorand لإثارة مسألة المستخدمين الصادقين الذين ليسوا متصلين بالإنترنت بشكل جماعي، ول طرح نموذج الصدق الكسول في الرد. بروتوكولهم لا يعمل فقط في الكسالى نموذج الصدق، ولكن أيضًا في نموذجهم الخصامي النعاس، حيث يختار الخصم المستخدمين متصلين بالإنترنت وغير متصلين بالإنترنت، بشرط أن يكون غالبية مستخدمي الإنترنت صادقين في جميع الأوقات 2النسخة الأصلية من ورقتهم لم تأخذ في الاعتبار سوى الأمان في نموذجهم العدائي الهادئ. ال النسخة الأصلية من Algorand، والتي تسبق نسختهم، تتصور صراحة أيضًا افتراض أن أغلبية معينة من اللاعبون عبر الإنترنت دائمًا ما يكونون صادقين، لكنهم استبعدوه صراحةً من الاعتبار، لصالح نموذج الصدق الكسول. (على سبيل المثال، إذا اختار نصف المستخدمين الصادقين في وقت ما عدم الاتصال بالإنترنت، فإن غالبية المستخدمين عبر الإنترنت قد تكون ضارة جدًا. وبالتالي، لمنع حدوث ذلك، يجب على الخصم أن يجبر معظم قواته اللاعبين الفاسدين ليخرجوا عن الخط أيضًا، وهو ما يتعارض بشكل واضح مع مصلحته الخاصة.) لاحظ أن البروتوكول ذو الأغلبية من اللاعبين الكسالى ولكن الصادقين يعمل بشكل جيد إذا كان غالبية المستخدمين عبر الإنترنت ضارين دائمًا. هذا هو الحال، لأن إن عددًا كافيًا من اللاعبين الشرفاء، الذين يعلمون أنهم سيكونون حاسمين في وقت ما نادرًا، سوف ينتخبون ألا يخرجوا عن الخط في تلك اللحظات، ولا يمكن أن يجبرهم الخصم على الخروج من الخط، لأنه لا يعرف من قد يكون اللاعبون الصادقون حاسمين.(6) أنها تتطلب أغلبية صادقة بسيطة. على النقيض من ذلك، يتطلب الإصدار الحالي من Algorand أغلبية صادقة بنسبة 2/3. ورقة بحثية أخرى قريبة منا هي Ouroboros: بروتوكول Blockchain لإثبات الملكية الآمن والمثبت، بواسطة كيياس، راسل، ديفيد، وأولينيكوف [20]. كما ظهر نظامهم بعد نظامنا. إنه أيضًا يستخدم فرز التشفير للاستغناء عن إثبات العمل بطريقة يمكن إثباتها. ومع ذلك، بهم النظام هو، مرة أخرى، بروتوكول على طراز ناكاموتو، حيث تكون التفرعات متكررة ولا يمكن تجنبها. (ومع ذلك، في نموذجهم، لا تحتاج الكتل إلى عمق نموذج الإجماع الهادئ). علاوة على ذلك، يعتمد نظامهم على الافتراضات التالية: على حد تعبير المؤلفين أنفسهم، “(1) ال الشبكة متزامنة للغاية، (2) غالبية أصحاب المصلحة المختارين متاحون حسب الحاجة للمشاركة في كل عصر، (3) لا يظل أصحاب المصلحة غير متصلين بالإنترنت لفترات طويلة من الزمن، (4) تخضع قدرة التكيف مع الفساد إلى تأخير بسيط يتم قياسه بجولات خطية المعلمة الأمنية." على النقيض من ذلك، فإن Algorand، مع احتمالية ساحقة، خالية من التشعبات، و لا يعتمد على أي من هذه الافتراضات الأربعة. على وجه الخصوص، في Algorand، يستطيع الخصم القيام بذلك يفسد المستخدمين الذين يريد السيطرة عليهم على الفور.
Persiapan
2.1 Primitif Kriptografi Hash yang Ideal. Kita akan mengandalkan fungsi kriptografi hash yang dapat dihitung secara efisien, H, yang memetakan string panjang sembarang ke string biner dengan panjang tetap. Mengikuti tradisi panjang, kami menjadi model H sebagai oracle acak, pada dasarnya adalah fungsi yang memetakan setiap kemungkinan string s ke secara acak dan string biner yang dipilih secara independen (dan kemudian diperbaiki), H(s), dengan panjang yang dipilih. Dalam makalah ini, H memiliki keluaran sepanjang 256-bit. Memang, panjang tersebut cukup pendek untuk membuat sistem efisien dan cukup lama untuk membuat sistem aman. Misalnya, kita ingin H tahan benturan. Artinya, akan sulit untuk menemukan dua string berbeda x dan y sehingga H(x) = H(y). Ketika H adalah oracle acak dengan output panjang 256-bit, menemukan pasangan string seperti itu memang merupakan hal yang sulit. sulit. (Mencoba secara acak, dan mengandalkan paradoks ulang tahun, akan membutuhkan 2256/2 = 2128 cobaan.) Penandatanganan Digital. Tanda tangan digital memungkinkan pengguna untuk mengotentikasi informasi satu sama lain tanpa membagikan kunci rahasia apa pun. Skema tanda tangan digital terdiri dari tiga cepat algoritma: generator kunci probabilistik G, algoritma penandatanganan S, dan algoritma verifikasi V. Mengingat parameter keamanan k, bilangan bulat yang cukup tinggi, pengguna i menggunakan G untuk menghasilkan sepasang kunci k-bit (yaitu, string): pki kunci “publik” dan ski kunci penandatanganan “rahasia” yang cocok. Yang terpenting, a kunci publik tidak “mengkhianati” kunci rahasianya. Maksudnya, walaupun diberi ilmu pki, tidak orang lain selain saya mampu menghitung ski dalam waktu kurang dari waktu astronomi. Pengguna saya menggunakan ski untuk menandatangani pesan secara digital. Untuk setiap pesan yang mungkin (string biner) m, i terlebih dahulu hashes m lalu jalankan algoritma S pada input H(m) dan ski sehingga menghasilkan string k-bit sigpki(m) \(\triangleq\)S(H(m), ski) .3 3Karena H tahan benturan, maka secara praktis tidak mungkin bahwa, dengan menandatangani m seseorang “secara tidak sengaja menandatangani” tanda yang berbeda pesan m′.String biner sigpki(m) disebut sebagai tanda tangan digital i dari m (relatif terhadap pki), dan dapat berupa lebih sederhana dilambangkan dengan sigi(m), ketika kunci publik pki jelas dari konteksnya. Setiap orang yang mengetahui PKI dapat menggunakannya untuk memverifikasi tanda tangan digital yang dihasilkan oleh i. Secara khusus, pada memasukkan (a) kunci publik pki dari pemain i, (b) pesan m, dan (c) string s, yaitu dugaan i tanda tangan digital dari pesan m, algoritma verifikasi V mengeluarkan output YA atau TIDAK. Properti yang kami perlukan dari skema tanda tangan digital adalah: 1. Tanda tangan yang sah selalu diverifikasi: Jika s = sigi(m), maka V (pki, m, s) = Y ES; dan 2. Tanda tangan digital sulit dipalsukan: Tanpa pengetahuan ski, tidak ada waktu untuk menemukan string seperti itu bahwa V (pki, m, s) = Y ES, untuk pesan m yang tidak pernah ditandatangani oleh i, panjangnya secara astronomis. (Mengikuti persyaratan keamanan yang kuat dari Goldwasser, Micali, dan Rivest [17], ini benar bahkan jika seseorang dapat memperoleh tanda tangan dari pesan lainnya.) Oleh karena itu, untuk mencegah orang lain menandatangani pesan atas namanya, pemain harus mempertahankan miliknya menandatangani kunci rahasia ski (karenanya disebut “kunci rahasia”), dan untuk memungkinkan siapa pun memverifikasi pesan tersebut dia menandatangani, saya tertarik untuk mempublikasikan pki kuncinya (karena itu istilah “kunci publik”). Secara umum, pesan m tidak dapat diambil dari tanda tangannya sigi(m). Untuk bertransaksi secara virtual dengan tanda tangan digital yang memenuhi properti “retrievability” yang secara konseptual mudah digunakan (yaitu, untuk jaminan bahwa penandatangan dan pesan dapat dihitung dengan mudah dari sebuah tanda tangan, kami definisikan SIGpki(m) = (i, m, sigpki(m)) dan SIGi(m) = (i, m, sigi(m)), jika pki jelas. Penandatanganan Digital Unik. Kami juga mempertimbangkan skema tanda tangan digital (G, S, V) yang memuaskan mengikuti properti tambahan. 3. Keunikan. Sulit untuk menemukan string pk′, m, s, dan s′ sedemikian rupa ̸= s′ dan V (pk′, m, s) = V (pk′, m, s′) = 1. (Perhatikan bahwa properti keunikan juga berlaku untuk string pk′ yang tidak dihasilkan secara sah kunci publik. Namun secara khusus, sifat keunikan menyiratkan bahwa, jika seseorang menggunakan generator kunci tertentu G untuk menghitung pk kunci publik bersama dengan kunci rahasia sk yang cocok, dan dengan demikian mengetahui sk, pada dasarnya mustahil baginya untuk menemukan dua digital yang berbeda tanda tangan dari pesan yang sama relatif terhadap pk.) Keterangan • Dari tanda tangan unik hingga fungsi acak yang dapat diverifikasi. Relatif terhadap digital skema tanda tangan dengan properti keunikan, pemetaan m \(\to\) H(sigi(m)) diasosiasikan ke setiap kemungkinan string m, string 256-bit unik yang dipilih secara acak, dan kebenarannya pemetaan dapat dibuktikan dengan diberi tanda tangan sigi(m). Artinya, skema hashing dan tanda tangan digital yang ideal pada dasarnya memenuhi properti keunikan memberikan implementasi dasar dari fungsi acak yang dapat diverifikasi, seperti yang diperkenalkan dan oleh Micali, Rabin, dan Vadhan [27]. (Implementasi awalnya tentu saja lebih kompleks, karena mereka tidak mengandalkan hashing yang ideal.)• Tiga kebutuhan berbeda untuk tanda tangan digital. Di Algorand, pengguna yang saya andalkan adalah digital tanda tangan untuk (1) Mengautentikasi pembayaran saya sendiri. Dalam aplikasi ini, kunci dapat bersifat “jangka panjang” (yaitu, digunakan untuk jangka waktu tertentu). menandatangani banyak pesan dalam jangka waktu yang lama) dan berasal dari skema tanda tangan biasa. (2) Menghasilkan kredensial yang membuktikan bahwa i berhak bertindak pada beberapa langkah s dalam putaran r. Di sini, kuncinya bisa bersifat jangka panjang, tetapi harus berasal dari skema yang memenuhi properti keunikan. (3) Mengautentikasi pesan yang saya kirimkan pada setiap langkah tindakannya. Di sini, kuncinya harus ada bersifat sementara (yaitu, dimusnahkan setelah penggunaan pertama), tetapi dapat berasal dari skema tanda tangan biasa. • Penyederhanaan biaya yang kecil. Untuk mempermudah, kami membayangkan setiap pengguna i memiliki satu kunci jangka panjang. Oleh karena itu, kunci tersebut harus berasal dari skema tanda tangan yang memiliki keunikan properti. Kesederhanaan seperti itu memiliki biaya komputasi yang kecil. Biasanya, sebenarnya, digital unik tanda tangan sedikit lebih mahal untuk diproduksi dan diverifikasi dibandingkan tanda tangan biasa. 2.2 Buku Besar Umum yang Diidealkan Algorand mencoba meniru sistem pembayaran berikut, berdasarkan buku besar umum yang diidealkan. 1. Status Awal. Uang dikaitkan dengan kunci publik individual (dihasilkan secara pribadi dan dimiliki oleh pengguna). Membiarkan pk1, . . . , pkj menjadi kunci publik awal dan a1, . . . , aj masing-masing jumlah awal satuan uang, maka status awalnya adalah S0 = (pk1, a1), . . . , (pkj, aj) , yang dianggap sebagai pengetahuan umum dalam sistem. 2. Pembayaran. Misalkan pk adalah kunci publik yang saat ini mempunyai \(\geq\)0 unit uang, pk′ publik lainnya kunci, dan a′ bilangan non-negatif yang tidak lebih besar dari a. Kemudian, pembayaran (sah) adalah digital tanda tangan, relatif terhadap pk, yang menetapkan transfer unit moneter a′ dari pk ke pk′, secara bersamaan dengan beberapa informasi tambahan. Dalam simbol, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), di mana saya mewakili informasi tambahan apa pun yang dianggap berguna tetapi tidak sensitif (misalnya, waktu informasi dan pengidentifikasi pembayaran), dan saya informasi tambahan apa pun yang dianggap sensitif (misalnya, alasan pembayarannya, mungkin identitas pemilik pk dan pk′, dan sebagainya). Kita menyebut pk (atau pemiliknya) sebagai pembayar, setiap pk′ (atau pemiliknya) sebagai penerima pembayaran, dan a′ sebagai jumlah pembayaran \(\wp\). Bergabung Gratis Melalui Pembayaran. Perhatikan bahwa pengguna dapat bergabung dengan sistem kapan pun mereka mau menghasilkan pasangan kunci publik/rahasianya sendiri. Oleh karena itu, kunci publik pk′ yang muncul di pembayaran \(\wp\)di atas mungkin merupakan kunci publik yang baru dibuat dan belum pernah “memiliki” uang apa pun sebelumnya. 3. Buku Besar Ajaib. Dalam Sistem Ideal, semua pembayaran valid dan muncul dalam bukti kerusakan daftar L kumpulan pembayaran yang “diposting di langit” agar semua orang dapat melihatnya: L = BAYAR 1, BAYAR 2, . . . ,Setiap blok PAY r+1 terdiri dari himpunan semua pembayaran yang dilakukan sejak munculnya blok MEMBAYAR r. Dalam sistem ideal, blok baru muncul setelah jangka waktu tertentu (atau terbatas). Diskusi. • Lebih Banyak Pembayaran Umum dan Hasil Transaksi yang Tidak Dibelanjakan. Lebih umum lagi, jika kunci publik pk memiliki sejumlah a, maka pembayaran sah \(\wp\)pk dapat mentransfer sejumlah a′ 1, sebuah′ 2, . . ., masing-masing ke kunci pk′ 1, pk′ 2, . . ., selama P j a′ j \(\leq\)a. Dalam Bitcoin dan sistem serupa, uang yang dimiliki oleh pk kunci publik dipisahkan menjadi beberapa bagian terpisah. jumlah, dan pembayaran yang dilakukan oleh pk harus mentransfer jumlah terpisah a secara keseluruhan. Jika pk ingin mentransfer hanya sebagian kecil a′ < a dari a ke kunci lain, maka pk juga harus mentransfernya saldo, keluaran transaksi yang belum terpakai, ke kunci lain, mungkin pk itu sendiri. Algorand juga berfungsi dengan kunci yang memiliki jumlah terpisah. Namun, untuk fokus pada aspek baru dari Algorand, secara konseptual lebih mudah untuk tetap menggunakan bentuk pembayaran kami yang lebih sederhana dan kunci yang memiliki satu jumlah yang terkait dengannya. • Status Saat Ini. Skema Ideal tidak secara langsung memberikan informasi tentang arus status sistem (yaitu berapa banyak unit uang yang dimiliki setiap kunci publik). informasi ini dapat dikurangkan dari Magic Ledger. Dalam sistem yang ideal, pengguna aktif terus-menerus menyimpan dan memperbarui informasi status terkini, atau dia harus merekonstruksinya, baik dari awal, atau dari yang terakhir kali dia lakukan menghitungnya. (Dalam versi selanjutnya dari makalah ini, kami akan menambah Algorand untuk mengaktifkannya pengguna untuk merekonstruksi status saat ini dengan cara yang efisien.) • Keamanan dan “Privasi”. Tanda tangan digital menjamin bahwa tidak seorang pun dapat memalsukan pembayaran pengguna lain. Dalam pembayaran \(\wp\), kunci publik dan jumlahnya tidak disembunyikan, tetapi sensitif informasi saya. Memang benar, hanya H(I) yang muncul di \(\wp\), dan karena H merupakan fungsi ideal hash, H(I) adalah nilai acak 256-bit, dan karenanya tidak ada cara untuk mengetahui apa yang lebih baik bagi saya selain dengan hanya menebaknya. Namun, untuk membuktikan siapa saya (misalnya, untuk membuktikan alasan pembayaran) tersebut pembayar boleh saja mengungkapkan I. Kebenaran I yang diungkapkan dapat diverifikasi dengan menghitung H(I) dan membandingkan nilai yang dihasilkan dengan item terakhir \(\wp\). Faktanya, karena H tahan benturan, sulit untuk menemukan nilai kedua I′ sehingga H(I) = H(I′). 2.3 Pengertian dan Notasi Dasar Kunci, Pengguna, dan Pemilik Kecuali ditentukan lain, setiap kunci publik (“singkatnya kunci”) bersifat jangka panjang dan relatif terhadap skema tanda tangan digital dengan properti keunikan. Kunci publik yang saya ikuti sistem ketika kunci publik lain j sudah ada di sistem melakukan pembayaran ke i. Untuk warna, kami mempersonifikasikan kunci. Kita mengacu pada kunci i sebagai “dia”, katakan bahwa saya jujur, yang saya kirim dan menerima pesan, dll. Pengguna adalah sinonim untuk kunci. Ketika kita ingin membedakan suatu kunci dari orang yang memilikinya, kami masing-masing menggunakan istilah “kunci digital” dan “pemilik”. Sistem Tanpa Izin dan Berizin. Suatu sistem tidak memiliki izin, jika kunci digitalnya gratis untuk bergabung kapan saja dan pemilik dapat memiliki beberapa kunci digital; dan itu diizinkan, sebaliknya.Representasi Unik Setiap objek di Algorand memiliki representasi unik. Khususnya, setiap himpunan {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} diurutkan dengan cara yang telah ditentukan sebelumnya: misalnya, pertama secara leksikografis di x, lalu di y, dan seterusnya. Jam Kecepatan Sama Tidak ada jam global: setiap pengguna memiliki jamnya sendiri. Jam pengguna tidak perlu disinkronkan dengan cara apa pun. Namun kami berasumsi bahwa semuanya memiliki kecepatan yang sama. Misalnya, jika waktu menunjukkan pukul 12 siang menurut jam pengguna i, mungkin pukul 14:30 menurut jam pengguna i. jam pengguna lain j, tetapi jika jam menunjukkan pukul 12:01 menurut jam i, maka akan menunjukkan pukul 2:31 ke jam j. Artinya, “satu menit adalah sama (pada dasarnya sama) untuk setiap pengguna”. Putaran Algorand disusun dalam satuan logika, r = 0, 1, . . ., disebut putaran. Kami secara konsisten menggunakan superskrip untuk menunjukkan putaran. Untuk menunjukkan bahwa kuantitas non-numerik Q (misalnya, string, kunci publik, himpunan, tanda tangan digital, dll.) mengacu pada putaran r, kita cukup menulis Qr. Hanya jika Q adalah bilangan asli (sebagai lawan dari string biner yang dapat ditafsirkan sebagai bilangan), lakukan kita tulis Q(r), sehingga simbol r tidak dapat diartikan sebagai eksponen dari Q. Pada (awal a) putaran r > 0, himpunan semua kunci publik adalah PKr, dan status sistemnya adalah Sr = n aku, seorang(kanan) saya, . . . : saya \(\in\)PKro , di mana (r) saya adalah jumlah uang yang tersedia untuk kunci publik i. Perhatikan bahwa PKr dapat dikurangkan dari Sr, dan Sr tersebut juga dapat menentukan komponen lain untuk setiap kunci publik i. Untuk putaran 0, PK0 adalah himpunan kunci publik awal, dan S0 adalah status awal. Baik PK0 dan S0 diasumsikan sebagai pengetahuan umum dalam sistem. Untuk mempermudah, pada awal putaran r, jadi adalah PK1, . . . , PKr dan S1, . . . , Sr. Pada putaran r, status sistem bertransisi dari Sr ke Sr+1: secara simbolis, Putaran r: Sr −→Sr+1. Pembayaran Di Algorand, pengguna terus melakukan pembayaran (dan menyebarkannya dengan cara dijelaskan dalam sub-bagian 2.7). Pembayaran \(\wp\)dari pengguna i \(\in\)PKr memiliki format dan semantik yang sama seperti dalam Sistem Ideal. Yaitu, \(\wp\)= SIGi(saya, saya′, a, saya, H(Saya)) . Pembayaran \(\wp\)secara individual sah pada putaran r (singkatnya pembayaran putaran-r) jika (1) jumlahnya a lebih kecil atau sama dengan a(r) i , dan (2) tidak muncul di payset resmi mana pun PAY r′ untuk r′ < r. (Seperti dijelaskan di bawah, kondisi kedua berarti \(\wp\) belum menjadi efektif. Sekumpulan pembayaran bulat-r i adalah sah secara kolektif jika jumlah pembayarannya paling banyak adalah a(r) saya. Pembayaran Set pembayaran round-r P adalah himpunan pembayaran round-r sehingga, untuk setiap pengguna i, pembayarannya dari i di P (mungkin tidak ada) yang valid secara kolektif. Himpunan semua pembayaran putaran-r adalah PAY(r). Sebuah putaran-r payset P maksimal jika tidak ada superset dari P yang merupakan payset round-r. Kami sebenarnya menyarankan bahwa pembayaran \(\wp\)juga menentukan putaran \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , dan tidak valid pada putaran mana pun di luar [\(\rho\), \(\rho\) + k], untuk beberapa bilangan bulat non-negatif tetap k.4 4Ini menyederhanakan pemeriksaan apakah \(\wp\) telah menjadi “efektif” (yaitu, menyederhanakan penentuan apakah suatu pembayaran PEMBAYARAN r berisi \(\wp\). Jika k = 0, jika \(\wp\)= SIGi(r, i, i′, a, I, H(I)) , dan \(\wp\)/\(\in\)PAY r, maka saya harus mengirimkan kembali \(\wp\).Pembayaran Resmi Untuk setiap putaran r, Algorand memilih secara publik (dengan cara yang dijelaskan nanti) satu set pembayaran (mungkin kosong), PAY r, set pembayaran resmi putaran tersebut. (Intinya, PAY r mewakili pembayaran putaran-r yang “sebenarnya” telah terjadi.) Seperti pada Sistem Ideal (dan Bitcoin), (1) satu-satunya cara bagi pengguna baru j untuk memasuki sistem adalah menjadi penerima pembayaran yang termasuk dalam set pembayaran resmi PAY r pada putaran r tertentu; dan (2) PAY r menentukan status putaran berikutnya, Sr+1, dari status putaran saat ini, Sr. Secara simbolis, BAYAR r : Sr −→Sr+1. Secara khusus, 1. himpunan kunci publik putaran r + 1, PKr+1, terdiri dari gabungan PKr dan himpunan semua kunci penerima pembayaran yang muncul, untuk pertama kalinya, dalam pembayaran PAY r; dan 2. jumlah uang a(r+1) saya yang dimiliki pengguna i pada putaran r + 1 adalah jumlah dari ai(r) —yaitu, jumlah uang yang saya miliki pada putaran sebelumnya (0 jika i ̸\(\in\)PKr)— dan jumlah jumlahnya dibayarkan kepada saya sesuai dengan pembayaran PAY r. Singkatnya, seperti dalam Sistem Ideal, setiap status Sr+1 dapat dikurangkan dari riwayat pembayaran sebelumnya: BAYAR 0, . . . , BAYAR r. 2.4 Blok dan Blok Terbukti Dalam Algorand0, blok Br yang berhubungan dengan putaran r menentukan: r itu sendiri; kumpulan pembayaran putaran r, BAYAR r; besaran Qr, harus dijelaskan, dan hash dari blok sebelumnya, H(Br−1). Jadi, mulai dari beberapa blok tetap B0, kita mempunyai blockchain tradisional: B1 = (1, BAYAR 1, Q0, H(B0)), B2 = (2, BAYAR 2, Q1, H(B1)), B3 = (3, BAYAR 3, Q2, H(B2)), . . . Di Algorand, keaslian sebuah blok sebenarnya dijamin oleh informasi terpisah, sebuah “sertifikat blok” CERT r, yang mengubah Br menjadi blok terbukti, Br. Oleh karena itu, Buku Besar Ajaib diimplementasikan dengan urutan blok yang terbukti, B1, B2, . . . Diskusi Seperti yang akan kita lihat, CERT r terdiri dari sekumpulan tanda tangan digital untuk H(Br), yaitu a mayoritas anggota SV r, disertai bukti bahwa masing-masing anggota tersebut memang termasuk ke SV r. Tentu saja, kita dapat memasukkan sertifikat CERT r ke dalam blok itu sendiri, namun tetap menemukannya secara konseptual lebih bersih untuk menjaganya tetap terpisah.) Dalam Bitcoin setiap blok harus memenuhi sifat khusus, yaitu harus “berisi solusi a crypto puzzle”, yang membuat pembuatan blok menjadi intensif secara komputasi dan percabangan keduanya tidak dapat dihindari dan tidak jarang. Sebaliknya, blockchain Algorand memiliki dua keunggulan utama: dihasilkan dengan komputasi minimal, dan tidak akan bercabang dengan probabilitas yang sangat tinggi. Setiap blok Bi adalah berakhir dengan aman segera setelah memasuki blockchain.2.5 Kemungkinan Kegagalan yang Dapat Diterima Untuk menganalisis keamanan Algorand kami menentukan probabilitas, F, yang ingin kami gunakan menerima bahwa ada yang tidak beres (misalnya, himpunan pemverifikasi SV r tidak memiliki mayoritas yang jujur). Seperti halnya panjang keluaran fungsi kriptografi hash H, F juga merupakan parameter. Namun, seperti dalam kasus tersebut, kami merasa berguna untuk menetapkan F ke nilai yang konkret, sehingga mendapatkan hasil yang lebih intuitif. memahami fakta bahwa memang mungkin, di Algorand, untuk menikmati keamanan yang memadai secara bersamaan dan efisiensi yang memadai. Untuk menekankan bahwa F adalah parameter yang dapat diatur sesuai keinginan, terlebih dahulu dan perwujudan kedua yang kami tetapkan masing-masing F = 10−12 dan F = 10−18 . Diskusi Perhatikan bahwa 10−12 sebenarnya kurang dari satu dalam satu triliun, dan kami percaya bahwa 10−12 adalah pilihan F memadai dalam aplikasi kita. Mari kita tekankan bahwa 10−12 bukanlah probabilitas yang dengannya Musuh dapat memalsukan pembayaran dari pengguna yang jujur. Semua pembayaran dilakukan secara digital ditandatangani, dan dengan demikian, jika tanda tangan digital yang tepat digunakan, kemungkinan pemalsuan pembayaran adalah kecil jauh lebih rendah dari 10−12, dan pada kenyataannya, pada dasarnya 0. Peristiwa buruk yang ingin kita toleransi dengan probabilitas F adalah garpu Algorand itu blockchain. Perhatikan itu, dengan pengaturan F dan putaran yang panjangnya satu menit, percabangan diperkirakan akan terjadi di Algorand blockchain sesering (kira-kira) sekali dalam 1,9 juta tahun. Sebaliknya, di Bitcoin, percabangan cukup sering terjadi. Orang yang lebih menuntut mungkin menetapkan F ke nilai yang lebih rendah. Untuk tujuan ini, dalam perwujudan kedua kami kami mempertimbangkan untuk menyetel F ke 10−18. Perhatikan bahwa, dengan asumsi bahwa sebuah blok dihasilkan setiap detik, 1018 adalah perkiraan jumlah detik yang dibutuhkan alam semesta sejauh ini: dari Big Bang hingga saat ini waktu. Jadi, dengan F = 10−18, jika sebuah balok dihasilkan dalam sedetik, maka diperkirakan umurnya adalah alam semesta untuk melihat garpu. 2.6 Model Permusuhan Algorand dirancang agar aman dalam model yang sangat bermusuhan. Mari kami jelaskan. Pengguna yang Jujur dan Berbahaya Seorang pengguna dikatakan jujur jika dia mengikuti semua instruksi protokolnya, dan sangat mampu mengirim dan menerima pesan. Seorang pengguna jahat (yaitu, Bizantium, dalam bahasa komputasi terdistribusi) jika dia dapat menyimpang secara sewenang-wenang dari instruksi yang ditentukan. Musuh The Adversary adalah algoritma yang efisien (secara teknis waktu polinomial), dipersonifikasikan untuk warna, yang dapat langsung membuat pengguna berbahaya mana pun yang diinginkannya, kapan pun ia mau (subjek hanya melebihi jumlah pengguna yang dapat dirusaknya). Musuh sepenuhnya mengendalikan dan mengoordinasikan dengan sempurna semua pengguna jahat. Dia mengambil semua tindakan atas nama mereka, termasuk menerima dan mengirim semua pesan mereka, dan dapat membiarkan mereka menyimpang instruksi yang ditentukan mereka dengan cara yang sewenang-wenang. Atau dia dapat dengan mudah mengisolasi pengiriman pengguna yang rusak dan menerima pesan. Mari kita perjelas bahwa tidak ada orang lain yang secara otomatis mengetahui bahwa pengguna i berbahaya, meskipun kejahatan saya mungkin terjadi melalui tindakan yang dilakukan Musuh. Namun musuh yang kuat ini, • Tidak memiliki kekuatan komputasi yang tidak terbatas dan tidak berhasil menempa digital tanda tangan pengguna yang jujur, kecuali kemungkinannya dapat diabaikan; Dan• Tidak boleh mengganggu pertukaran pesan di antara pengguna yang jujur dengan cara apa pun. Selain itu, kemampuannya untuk menyerang pengguna yang jujur dibatasi oleh salah satu asumsi berikut. Kejujuran Mayoritas Uang Kami mempertimbangkan kontinum Mayoritas Uang Jujur (HMM) asumsi: yaitu, untuk setiap bilangan bulat non-negatif k dan real h > 1/2, HHMk > h: pengguna yang jujur di setiap putaran r memiliki sebagian lebih besar dari h dari seluruh uang yang masuk sistem pada putaran r −k. Diskusi. Dengan asumsi bahwa semua pengguna jahat mengoordinasikan tindakan mereka dengan sempurna (seolah-olah dikendalikan oleh satu entitas, Musuh) adalah hipotesis yang agak pesimistis. Koordinasi sempurna di antara mereka juga banyak individu sulit dicapai. Mungkin koordinasi hanya terjadi dalam kelompok yang terpisah dari pemain jahat. Namun, karena tingkat koordinasi pengguna jahat tidak dapat dipastikan semoga kita menikmatinya, lebih baik kita aman daripada menyesal. Dengan asumsi bahwa Musuh juga dapat secara diam-diam, dinamis, dan langsung merusak pengguna pesimis. Lagi pula, secara realistis, mengambil kendali penuh atas operasi pengguna akan memakan waktu. Asumsi HMMk > h menyiratkan, misalnya, jika putaran (rata-rata) dilaksanakan dalam satu menit, sebagian besar uang pada putaran tertentu akan tetap berada di tangan yang jujur paling sedikit dua jam, jika k = 120, dan paling sedikit satu minggu, jika k = 10.000. Perhatikan asumsi HMM dan Kekuatan Komputasi Mayoritas Jujur sebelumnya Asumsi-asumsi tersebut saling terkait dalam arti bahwa, karena daya komputasi dapat dibeli dengan uang, jika pengguna jahat memiliki sebagian besar uang, maka mereka dapat memperoleh sebagian besar daya komputasi. 2.7 Model Komunikasi Kami membayangkan penyebaran pesan —yaitu, “gosip antar teman”5— menjadi satu-satunya cara untuk menyebarkan pesan. komunikasi. Asumsi Sementara: Pengiriman Pesan Tepat Waktu di Seluruh Jaringan. Untuk Pada sebagian besar makalah ini kami berasumsi bahwa setiap pesan yang disebarkan menjangkau hampir semua pengguna yang jujur secara tepat waktu. Kami akan menghapus asumsi ini di Bagian 10, saat kami menangani jaringan partisi, baik yang terjadi secara alami maupun yang disebabkan oleh faktor yang merugikan. (Seperti yang akan kita lihat, kita hanya berasumsi pengiriman pesan tepat waktu dalam setiap komponen jaringan yang terhubung.) Salah satu cara konkrit untuk menangkap pengiriman pesan yang disebarkan secara tepat waktu (di seluruh jaringan) adalah berikut ini: Untuk semua keterjangkauan \(\rho\) > 95% dan ukuran pesan \(\mu\) \(\in\)Z+, terdapat \(\lambda\) \(\rho\),\(\mu\) sehingga, jika pengguna yang jujur menyebarkan pesan \(\mu\)-byte m pada waktu t, kemudian m mencapai, pada saat t + \(\lambda\) \(\rho\),\(\mu\), setidaknya sebagian kecil \(\rho\) dari pengguna yang jujur. 5Intinya, seperti pada Bitcoin, ketika pengguna menyebarkan pesan m, setiap pengguna aktif menerima m untuk pertama kalinya, secara acak dan mandiri memilih sejumlah kecil pengguna aktif, “tetangganya”, kepada siapa dia meneruskan m, mungkin sampai dia menerima pengakuan dari mereka. Propagasi m berakhir ketika tidak ada pengguna yang menerima m untuk pertama kalinya.Namun, properti di atas tidak dapat mendukung protokol Algorand kami, tanpa secara eksplisit dan terpisah membayangkan mekanisme untuk mendapatkan blockchain terbaru —oleh pengguna/penyimpanan/dll. Faktanya, untuk membangun blok Br yang baru, tidak hanya sekelompok verifikator yang tepat yang harus menerima putaran-r secara tepat waktu pesan-pesan, tetapi juga pesan-pesan dari putaran sebelumnya, untuk mengetahui Br−1 dan semua pesan lainnya sebelumnya blok, yang diperlukan untuk menentukan apakah pembayaran dalam Br sah. Berikut ini asumsi saja sudah cukup. Asumsi Propagasi Pesan (MP): Untuk semua \(\rho\) > 95% dan \(\mu\) \(\in\)Z+, terdapat \(\lambda\) \(\rho\),\(\mu\) sedemikian rupa sehingga, untuk semua waktu t dan semua pesan \(\mu\)-byte m disebarkan oleh pengguna yang jujur sebelum t −\(\lambda\) \(\rho\),\(\mu\), m diterima, pada waktu t, oleh setidaknya sebagian kecil \(\rho\) dari pengguna yang jujur. Protokol Algorand ′ sebenarnya menginstruksikan masing-masing sejumlah kecil pengguna (yaitu, pemverifikasi suatu langkah tertentu dalam Algorand ′, untuk menyebarkan pesan terpisah dengan ukuran (kecil) yang ditentukan, dan kita perlu membatasi waktu yang dibutuhkan untuk memenuhi instruksi ini. Kami melakukannya dengan memperkaya anggota parlemen asumsi sebagai berikut. Untuk semua n, \(\rho\) > 95%, dan \(\mu\) \(\in\)Z+, terdapat \(\lambda\)n,\(\rho\),\(\mu\) sehingga, untuk semua waktu t dan semua \(\mu\)-byte pesan m1, . . . , mn, masing-masing disebarkan oleh pengguna yang jujur sebelum t −\(\lambda\)n,\(\rho\),\(\mu\), m1, . . . , banyak diterima, pada waktu t, setidaknya oleh sebagian kecil \(\rho\) dari pengguna yang jujur. Catatan • Asumsi di atas sengaja dibuat sederhana, namun juga lebih kuat dari yang dibutuhkan dalam makalah kami.6 • Untuk mempermudah, kita asumsikan \(\rho\) = 1, sehingga tidak lagi menyebutkan \(\rho\). • Kami secara pesimistis berasumsi, asalkan dia tidak melanggar asumsi MP, maka Musuh sepenuhnya mengontrol pengiriman semua pesan. Apalagi tanpa diketahui oleh orang jujur pengguna, Musuh dia dapat secara sewenang-wenang memutuskan pemain jujur mana yang menerima pesan mana ketika, dan seenaknya mempercepat penyampaian pesan apapun yang diinginkannya.7
المقدمات
2.1 بدايات التشفير التجزئة المثالية. يجب أن نعتمد على دالة تشفير حاسوبية فعالة hash، H، التي يرسم سلاسل طويلة بشكل تعسفي إلى سلاسل ثنائية ذات طول ثابت. بعد تقليد طويل، نحن نصمم H كدالة عشوائية oracle، وهي في الأساس دالة تقوم بتعيين كل سلسلة ممكنة بشكل عشوائي و سلسلة ثنائية مختارة بشكل مستقل (ثم ثابتة)، H(s)، من الطول المختار. في هذه الورقة، H لديه مخرجات طويلة 256 بت. في الواقع، هذا الطول قصير بما يكفي لجعله كفاءة النظام وطويلة بما يكفي لجعل النظام آمنًا. على سبيل المثال، نريد أن يكون H مقاومًا للتصادم. وهذا يعني أنه يجب أن يكون من الصعب العثور على سلسلتين مختلفتين x وy بحيث يكون H(x) = H(y). عندما يكون H عشوائيًا oracle بمخرجات طويلة 256 بت، فإن العثور على أي زوج من هذه السلاسل هو بالفعل صعب. (المحاولة العشوائية، والاعتماد على مفارقة عيد الميلاد، سوف تتطلب 2256/2 = 2128 المحاكمات.) التوقيع الرقمي. تسمح التوقيعات الرقمية للمستخدمين بمصادقة المعلومات لبعضهم البعض دون مشاركة أي مشاركة أي مفاتيح سرية. يتكون نظام التوقيع الرقمي من ثلاثة سريعة الخوارزميات: مولد المفاتيح الاحتمالية G، وخوارزمية التوقيع S، وخوارزمية التحقق V. بالنظر إلى معلمة الأمان k، وهو عدد صحيح مرتفع بدرجة كافية، يستخدم المستخدم i G لإنتاج زوج من مفاتيح k-bit (أي السلاسل): مفتاح pki "عام" ومفتاح توقيع "سري" مطابق. بشكل حاسم، أ المفتاح العام لا "يخون" مفتاحه السري المقابل. وهذا هو، حتى في ضوء معرفة pki، لا شخص آخر غيري قادر على حساب التزلج في أقل من زمن فلكي. المستخدم الأول يستخدم التزلج لتوقيع الرسائل رقميًا. لكل رسالة محتملة (سلسلة ثنائية) m، i أولاً hashes m ثم يقوم بتشغيل الخوارزمية S على المدخلات H(m) والتزلج لإنتاج سلسلة k-bit sigpki(m) \(\triangleq\)S(H(m), تزلج) .3 3 نظرًا لأن H مرن ضد الاصطدام، فمن المستحيل عمليًا أنه من خلال التوقيع على شخص ما "يوقع بطريق الخطأ" علامة مختلفة رسالة م'.يشار إلى السلسلة الثنائية sigpki(m) بالتوقيع الرقمي لـ m (بالنسبة إلى pki)، ويمكن أن تكون يُشار إليه ببساطة بـ sigi(m)، عندما يكون المفتاح العام pki واضحًا من السياق. يمكن لأي شخص يعرف pki استخدامه للتحقق من التوقيعات الرقمية التي تنتجها i. على وجه التحديد، على المدخلات (أ) المفتاح العام pki الخاص بالمشغل i، و(ب) الرسالة m، و(ج) السلسلة s، أي المزعومة التوقيع الرقمي للرسالة m، ستخرج خوارزمية التحقق V إما نعم أو لا. الخصائص التي نطلبها من نظام التوقيع الرقمي هي: 1. يتم التحقق دائمًا من صحة التوقيعات: إذا كانت s = sigi(m)، فإن V (pki, m, s) = Y ES؛ و 2. من الصعب تزوير التوقيعات الرقمية: دون معرفة التزلج، يكون الوقت المناسب للعثور على سلسلة من هذا القبيل أن V (pki, m, s) = Y ES، بالنسبة للرسالة m التي لم يتم التوقيع عليها من قبل i، طويلة بشكل فلكي. (في أعقاب متطلبات الأمان القوية لـ Goldwasser وMicali وRivest [17]، هذا صحيح حتى لو أمكن الحصول على توقيع أي رسالة أخرى.) وعليه، لمنع أي شخص آخر من توقيع الرسائل نيابة عنه، يجب أن أحتفظ باللاعب الخاص به التوقيع على مفتاح التزلج السري (ومن هنا جاء مصطلح "المفتاح السري")، ولتمكين أي شخص من التحقق من الرسائل لقد قام بالتوقيع، ولدي مصلحة في نشر مفتاح pki الخاص به (ومن هنا جاء مصطلح "المفتاح العام"). بشكل عام، لا يمكن استرجاع الرسالة m من توقيعها sigi(m). من أجل التعامل عمليا مع التوقيعات الرقمية التي تلبي خاصية "قابلية الاسترجاع" الملائمة من الناحية المفاهيمية (أي إلى نحن نضمن أن الموقّع والرسالة يمكن حسابهما بسهولة من التوقيع SIGpki(m) = (i, m, sigpki(m)) و SIGi(m) = (i, m, sigi(m)))، إذا كان pki واضحًا. التوقيع الرقمي الفريد. نحن نعتبر أيضًا أنظمة التوقيع الرقمي (G، S، V) التي تلبي متطلبات بعد خاصية إضافية. 3. التفرد. من الصعب العثور على سلاسل pk′ وm وs وs′ بهذه الطريقة ق̸= س' و V (pk′, m, s) = V (pk′, m, s′) = 1. (لاحظ أن خاصية التفرد تنطبق أيضًا على السلاسل pk′ التي لم يتم إنشاؤها بشكل قانوني المفاتيح العامة. على وجه الخصوص، فإن خاصية التفرد تعني أنه إذا استخدم الشخص مولد المفتاح المحدد G لحساب المفتاح العام pk مع المفتاح السري المطابق sk، وبالتالي، عرف SK، سيكون من المستحيل عليه أيضًا العثور على جهازين رقميين مختلفين توقيعات نفس الرسالة بالنسبة إلى pk.) ملاحظات • من التوقيعات الفريدة إلى وظائف عشوائية يمكن التحقق منها. نسبة إلى الرقمية مخطط التوقيع مع خاصية التفرد، يرتبط التعيين m \(\to\) H(sigi(m)) بـ كل سلسلة محتملة m، سلسلة فريدة ومختارة عشوائيًا مكونة من 256 بت، وصحة ذلك يمكن إثبات التعيين باستخدام التوقيع sigi(m). وهذا يعني أن نظام hash المثالي للتوقيع الرقمي يلبي خاصية التفرد بشكل أساسي توفير تنفيذ أولي لوظيفة عشوائية يمكن التحقق منها، كما تم تقديمها وبواسطة ميكالي ورابين وفادهان [27]. (كان تنفيذها الأصلي بالضرورة أكثر تعقيدًا، نظرًا لأنهم لم يعتمدوا على hashing المثالي.)• ثلاثة احتياجات مختلفة للتوقيعات الرقمية. في Algorand، يعتمد المستخدم على الرقمي التوقيعات ل (1) المصادقة على المدفوعات الخاصة بي. في هذا التطبيق، يمكن أن تكون المفاتيح "طويلة الأجل" (أي تستخدم ل التوقيع على العديد من الرسائل على مدى فترة طويلة من الزمن) وتأتي من نظام التوقيع العادي. (2) إنشاء بيانات اعتماد تثبت أنه يحق لي التصرف في بعض الخطوات من الجولة r. هنا، يمكن أن تكون المفاتيح طويلة المدى، ولكن يجب أن تأتي من مخطط يلبي خاصية التفرد. (3) التحقق من صحة الرسالة التي يرسلها في كل خطوة يقوم بها. هنا، يجب أن تكون المفاتيح سريعة الزوال (أي يتم تدميرها بعد استخدامها لأول مرة)، ولكن يمكن أن تأتي من نظام التوقيع العادي. • تبسيط بتكلفة صغيرة. من أجل التبسيط، نتصور أن يكون لدى كل مستخدم مفتاح واحد طويل المدى. وبناء على ذلك، يجب أن يأتي مثل هذا المفتاح من مخطط التوقيع مع التفرد الملكية. هذه البساطة لها تكلفة حسابية صغيرة. عادة، في الواقع، رقمية فريدة من نوعها يعد إنتاج التوقيعات والتحقق منها أكثر تكلفة قليلاً من التوقيعات العادية. 2.2 دفتر الأستاذ العام المثالي يحاول Algorand تقليد نظام الدفع التالي، استنادًا إلى دفتر الأستاذ العام المثالي. 1. الحالة الأولية. يرتبط المال بالمفاتيح العامة الفردية (التي تم إنشاؤها بشكل خاص و المملوكة للمستخدمين). السماح pk1، . . . ، pkj يكون المفاتيح العامة الأولية وa1، . . . ، كل منهما المبالغ الأولية من وحدات المال، ثم الحالة الأولية هي S0 = (pk1، a1)، . . . ، (بكج، اج)، والتي من المفترض أن تكون معرفة عامة في النظام. 2. المدفوعات. دع pk يكون مفتاحًا عامًا يحتوي حاليًا على \(\geq\)0 وحدة نقدية، وpk′ عام آخر مفتاح، و'a' رقم غير سالب لا يزيد عن a. إذن، الدفع (الصالح) \(\wp\)هو رقمي التوقيع، بالنسبة إلى pk، يحدد نقل الوحدات النقدية من pk إلى pk′، معًا مع بعض المعلومات الإضافية. في الرموز، \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), حيث أمثل أي معلومات إضافية تعتبر مفيدة ولكنها ليست حساسة (على سبيل المثال، الوقت المعلومات ومعرف الدفع)، وأي معلومات إضافية تعتبر حساسة (على سبيل المثال، سبب الدفع، ربما هويات أصحاب pk وpk'، وما إلى ذلك). نشير إلى pk (أو مالكه) باعتباره الدافع، وإلى كل pk′ (أو مالكه) باعتباره المستفيد، وإلى a′ باسم مبلغ الدفع \(\wp\). الانضمام مجاني عن طريق الدفع. لاحظ أنه يمكن للمستخدمين الانضمام إلى النظام متى أرادوا ذلك إنشاء أزواج المفاتيح العامة/السرية الخاصة بهم. وبناء على ذلك، فإن المفتاح العام pk′ الذي يظهر في قد تكون الدفعة المذكورة أعلاه عبارة عن مفتاح عام تم إنشاؤه حديثًا ولم "يمتلك" أي أموال على الإطلاق من قبل. 3. دفتر الأستاذ السحري. في النظام المثالي، جميع المدفوعات صالحة وتظهر بشكل مانع للتلاعب قائمة L من مجموعات المدفوعات "المعلنة في السماء" ليراها الجميع: L = ادفع 1، ادفع 2، . . . ,تتكون كل كتلة PAY r+1 من مجموعة جميع المدفوعات التي تم إجراؤها منذ ظهور الكتلة دفع ص. في النظام المثالي، تظهر كتلة جديدة بعد فترة زمنية ثابتة (أو محدودة). مناقشة. • المزيد من المدفوعات العامة ومخرجات المعاملات غير المنفقة. وبشكل أكثر عمومية، إذا كان المفتاح العام يمتلك pk مبلغًا a، فإن دفعة صالحة \(\wp\)من pk قد تحول المبالغ a′ 1، أ' 2، . . ., على التوالي إلى المفاتيح pk' 1، بك' 2، . . .، طالما P ي أ ' ي \(\geq\)أ. في Bitcoin والأنظمة المشابهة، يتم فصل الأموال المملوكة لمفتاح عام pk إلى أجزاء منفصلة المبالغ، والدفعة \(\wp\) التي تتم بواسطة pk يجب أن تحول مثل هذا المبلغ المنفصل a بالكامل. إذا كان pk يرغب في نقل جزء فقط من a′ < a من a إلى مفتاح آخر، فيجب عليه أيضًا نقل الرصيد، ومخرجات المعاملة غير المنفقة، إلى مفتاح آخر، ربما pk نفسه. Algorand يعمل أيضًا مع المفاتيح ذات المبالغ المنفصلة. ومع ذلك، من أجل التركيز على جوانب جديدة من Algorand، من الأسهل من الناحية المفاهيمية الالتزام بأشكال الدفع الأبسط لدينا والمفاتيح التي لها مبلغ واحد مرتبط بها. • الوضع الحالي. لا يقدم المخطط المثالي معلومات مباشرة حول التيار حالة النظام (أي عدد الوحدات المالية التي يمتلكها كل مفتاح عام). هذه المعلومات يمكن استنتاجه من دفتر الأستاذ السحري. في النظام المثالي، يقوم المستخدم النشط باستمرار بتخزين وتحديث أحدث معلومات الحالة، أو كان سيتعين عليه إعادة بنائه، إما من الصفر، أو من آخر مرة قام فيها بذلك حسبتها. (في الإصدار التالي من هذه الورقة، سنقوم بزيادة Algorand لتمكينها المستخدمين لإعادة بناء الوضع الحالي بطريقة فعالة.) • الأمن و"الخصوصية". تضمن التوقيعات الرقمية عدم تمكن أي شخص من تزوير الدفع عن طريقها مستخدم آخر. في الدفع \(\wp\)، لا يتم إخفاء المفاتيح العامة والمبلغ، بل الحساس المعلومات أنا. في الواقع، يظهر H(I) فقط في \(\wp\)، وبما أن H دالة hash مثالية، فإن H(I) هي قيمة عشوائية تبلغ 256 بت، وبالتالي لا توجد طريقة لمعرفة ما الذي كنت أفضل منه من خلال مجرد تخمين ذلك. ومع ذلك، لإثبات ما كنت عليه (على سبيل المثال، لإثبات سبب الدفع) فإن قد يكشف الدافع فقط عن I. يمكن التحقق من صحة ما تم الكشف عنه عن طريق حساب H(I) ومقارنة القيمة الناتجة بالعنصر الأخير من \(\wp\). في الواقع، نظرًا لأن H مرن ضد الاصطدام، من الصعب العثور على قيمة ثانية I ′ بحيث تكون H(I) = H(I′). 2.3 المفاهيم الأساسية والرموز المفاتيح والمستخدمين والمالكين ما لم يُنص على خلاف ذلك، فإن كل مفتاح عام ("مفتاح" للاختصار) يكون طويل الأجل ويتعلق بنظام التوقيع الرقمي الذي يتمتع بخاصية التفرد. مفتاح عام أنضم إليه النظام عندما يقوم مفتاح عام آخر j موجود بالفعل في النظام بإجراء الدفع إلى i. بالنسبة للون، نقوم بتخصيص المفاتيح. نحن نشير إلى المفتاح i بـ "هو"، لنقول أنني صادق، وأنني أرسل ويستقبل الرسائل وما إلى ذلك. المستخدم مرادف للمفتاح. عندما نريد التمييز بين المفتاح و الشخص الذي ينتمي إليه، نستخدم على التوالي مصطلح "المفتاح الرقمي" و"المالك". الأنظمة غير المصرح بها والمصرح بها. النظام غير مسموح به، إذا كان المفتاح الرقمي مجانيًا للانضمام في أي وقت ويمكن للمالك امتلاك مفاتيح رقمية متعددة؛ وجوازه، وإلا.التمثيل الفريد كل كائن في Algorand له تمثيل فريد. على وجه الخصوص، كل مجموعة {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} يتم ترتيبها بطريقة محددة مسبقًا: على سبيل المثال، أولاً معجميًا في x، ثم في y، وما إلى ذلك. ساعات بنفس السرعة لا توجد ساعة عالمية: بل كل مستخدم لديه ساعته الخاصة. ساعات المستخدم لا يلزم أن تكون متزامنة بأي شكل من الأشكال. ولكننا نفترض أن جميعها لها نفس السرعة. على سبيل المثال، عندما تكون الساعة 12 ظهرًا وفقًا لساعة المستخدم i، فقد تكون الساعة 2:30 ظهرًا وفقًا لساعة المستخدم. ساعة مستخدم آخر j، ولكن عندما تكون الساعة 12:01 وفقًا لساعة i، ستكون 2:31 وفقًا لساعة i إلى ساعة j. وهذا يعني أن "الدقيقة الواحدة هي نفسها (بشكل كافٍ، ونفس الشيء) لكل مستخدم". جولات Algorand منظم في وحدات منطقية، r = 0, 1, . . .، تسمى جولات. نحن نستخدم باستمرار الحروف الفوقية للإشارة إلى الجولات. للإشارة إلى أن كمية غير رقمية Q (على سبيل المثال، سلسلة، مفتاح عام، مجموعة، توقيع رقمي، وما إلى ذلك) تشير إلى شكل دائري r، نكتب ببساطة Qr. فقط عندما يكون Q رقمًا حقيقيًا (على عكس سلسلة ثنائية يمكن تفسيرها كرقم)، افعل ذلك نكتب Q(r)، بحيث لا يمكن تفسير الرمز r على أنه أس Q. عند (بداية a) الجولة r > 0، تكون مجموعة كافة المفاتيح العامة هي PKr، وحالة النظام هي ريال = ن أنا، أ (ص) أنا . . . : أنا \(\in\)PKro , حيث (ص) أنا هو مقدار المال المتاح للمفتاح العام أنا. لاحظ أن PKr يمكن استنتاجه من Sr، وقد يحدد ذلك Sr أيضًا مكونات أخرى لكل مفتاح عام. بالنسبة للجولة 0، PK0 هي مجموعة المفاتيح العامة الأولية، وS0 هي الحالة الأولية. كل من PK0 و من المفترض أن تكون S0 معرفة شائعة في النظام. للتبسيط، في بداية الجولة r، هكذا هي PK1، . . . ، PKr وS1، . . . ، الأب. في جولة r، تنتقل حالة النظام من Sr إلى Sr+1: رمزيًا، الجولة r: Sr −→Sr+1. المدفوعات في Algorand، يقوم المستخدمون بتسديد الدفعات باستمرار (ونشرها بطريقة الموصوفة في القسم الفرعي 2.7). الدفع \(\wp\)من المستخدم i \(\in\)PKr له نفس التنسيق والدلالات كما هو الحال في النظام المثالي. وهي، \(\wp\)= SIGi(i, i′, a, I, H(I)) . الدفع \(\wp\) صالح بشكل فردي عند جولة r (هو دفعة مستديرة r، باختصار) إذا (1) مبلغها ا أقل من أو يساوي أ(ص) i و (2) لا يظهر في أي مجموعة دفع رسمية PAY r′ for r′ < r. (كما هو موضح أدناه، الشرط الثاني يعني أن \(\wp\)لم تصبح فعالة بالفعل. تكون مجموعة الدفعات الدائرية لـ i صالحة بشكل جماعي إذا كان مجموع مبالغها على الأكثر a(r) أنا. مجموعات الدفع مجموعة الدفع المستديرة P عبارة عن مجموعة من الدفعات الدائرية بحيث تكون المدفوعات لكل مستخدم i من i في P (ربما لا شيء) صالحة بشكل جماعي. مجموعة جميع مجموعات الدفع المستديرة هي PAY(r). جولة ص تكون مجموعة الدفع P هي الحد الأقصى إذا لم تكن هناك مجموعة شاملة من P عبارة عن مجموعة دفع دائرية. نقترح في الواقع أن الدفعة \(\wp\) تحدد أيضًا الجولة \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) ، ولا يمكن أن تكون صالحة في أي جولة خارج [\(\rho\), \(\rho\) + k]، بالنسبة لبعض الأعداد الصحيحة الثابتة غير السالبة k.4 4 وهذا يبسط التحقق مما إذا كانت \(\wp\) قد أصبحت "فعالة" (أي أنه يبسط تحديد ما إذا كانت بعض مجموعة الدفعات PAY r يحتوي على \(\wp\). عندما تكون k = 0، إذا كانت \(\wp\)= SIGi(r, i, i′, a, I, H(I)) و \(\wp\)/\(\in\)PAY r، فيجب علي إعادة تقديم \(\wp\).مجموعات الدفع الرسمية لكل جولة r، يقوم Algorand بالاختيار بشكل عام (بطريقة موضحة لاحقًا) مجموعة دفع واحدة (ربما فارغة)، PAY r، مجموعة الدفع الرسمية للجولة. (في الأساس، يمثل PAY r المدفوعات المستديرة التي حدثت "في الواقع".) كما في النظام المثالي (و Bitcoin)، (1) الطريقة الوحيدة لمستخدم جديد j للدخول إلى النظام أن تكون متلقيًا لدفعة تنتمي إلى مجموعة الدفع الرسمية PAY r لجولة معينة؛ و (2) يحدد PAY r حالة الجولة التالية، Sr+1، من حالة الجولة الحالية، Sr. رمزياً، PAY r : Sr −→Sr+1. على وجه التحديد، 1. مجموعة المفاتيح العامة للجولة r + 1، PKr+1، تتكون من اتحاد PKr ومجموعة الكل مفاتيح المستفيد التي تظهر، لأول مرة، في مدفوعات PAY r؛ و 2. مقدار المال أ(ص+1) أنا أن المستخدم الذي أملكه في الجولة r + 1 هو مجموع ai(r) - أي مبلغ المال الذي امتلكته في الجولة السابقة (0 إذا i̸\(\in\)PKr) — ومجموع المبالغ تدفع لي وفقا لمدفوعات PAY r. باختصار، كما هو الحال في النظام المثالي، كل حالة Sr+1 قابلة للخصم من تاريخ الدفع السابق: ادفع 0، . . . ، دفع ص. 2.4 الكتل والكتل المثبتة في Algorand0، تحدد الكتلة Br المقابلة لـ r الدائرية: r نفسها؛ مجموعة الدفعات جولة ص، دفع ص؛ كمية Qr، سيتم شرحها، وhash للكتلة السابقة، H(Br−1). وهكذا، بدءًا من الكتلة الثابتة B0، لدينا blockchain التقليدية: B1 = (1، الدفع 1، Q0، H(B0))، B2 = (2، دفع 2، Q1، H(B1))، B3 = (3، الدفع 3، Q2، H(B2))، . . . في Algorand، يتم التحقق من صحة الكتلة فعليًا من خلال جزء منفصل من المعلومات، "شهادة الكتلة" CERT r، التي تحول Br إلى كتلة مثبتة، Br. دفتر الأستاذ السحري، لذلك، يتم تنفيذه من خلال تسلسل الكتل المثبتة، ب1، ب2، . . . مناقشة وكما سنرى، يتكون CERT r من مجموعة من التوقيعات الرقمية لـ H(Br)، وتلك الخاصة بـ a أغلبية أعضاء SV r، مع إثبات أن كل واحد من هؤلاء الأعضاء ينتمي بالفعل إلى SV ص. يمكننا بالطبع تضمين شهادات CERT r في الكتل نفسها، لكن يمكننا العثور عليها أنظف من الناحية المفاهيمية لإبقائها منفصلة.) في Bitcoin يجب أن تستوفي كل كتلة خاصية خاصة، أي يجب أن "تحتوي على حل لمشكلة ما". لغز التشفير "، مما يجعل إنشاء الكتل مكثفًا من الناحية الحسابية والشوكات أمرًا لا مفر منه وليس نادرا. على النقيض من ذلك، يتمتع Algorand blockchain بميزتين رئيسيتين: يتم إنشاؤه باستخدام الحد الأدنى من الحساب، ولن يتشعب مع احتمالية عالية للغاية. كل كتلة ثنائية نهائي بأمان بمجرد دخوله إلى blockchain.2.5 احتمال الفشل المقبول لتحليل أمان Algorand، نحدد الاحتمال F، الذي نحن على استعداد لتحليله تقبل حدوث خطأ ما (على سبيل المثال، أن مجموعة التحقق SV r لا تتمتع بأغلبية صادقة). كما في حالة طول الإخراج لوظيفة التشفير hash H، فإن F أيضًا هي معلمة. ولكن، كما في هذه الحالة، نجد أنه من المفيد تعيين F على قيمة محددة، وذلك للحصول على فكرة أكثر سهولة إدراك حقيقة أنه من الممكن بالفعل، في Algorand، التمتع بأمان كافٍ في نفس الوقت والكفاءة الكافية. للتأكيد على أن F هي المعلمة التي يمكن تعيينها حسب الرغبة، في البداية والتجسيدات الثانية التي وضعناها على التوالي و = 10−12 و و = 10−18 . مناقشة لاحظ أن 10−12 هو في الواقع أقل من واحد في تريليون، ونحن نعتقد أن مثل هذا اختيار F مناسب في طلبنا. دعونا نؤكد أن 10−12 ليس هو الاحتمال التي يمكن للخصم من خلالها تزوير مدفوعات مستخدم صادق. جميع المدفوعات رقمية موقعة، وبالتالي، إذا تم استخدام التوقيعات الرقمية المناسبة، فإن احتمال تزوير الدفع يكون ضعيفًا أقل بكثير من 10−12، وهي في الواقع 0. الحدث السيئ الذي نحن على استعداد لتحمله مع الاحتمال F هو شوكات Algorand blockchain. لاحظ أنه من خلال إعدادنا لـ F و جولات مدتها دقيقة واحدة، من المتوقع حدوث شوكة في Algorand blockchain بشكل نادر مثل (تقريبًا) مرة واحدة كل 1.9 مليون سنة. على النقيض من ذلك، في Bitcoin، يحدث الشوك في كثير من الأحيان. قد يقوم الشخص الأكثر تطلبًا بتعيين F إلى قيمة أقل. تحقيقا لهذه الغاية، في تجسيدنا الثاني نحن نفكر في ضبط F على 10−18. لاحظ أنه، على افتراض أنه يتم إنشاء كتلة كل ثانية، 1018 هو العدد المقدر للثواني التي استغرقها الكون حتى الآن: منذ الانفجار الكبير حتى الوقت الحاضر الوقت. وهكذا، مع F = 10−18، إذا تم إنشاء كتلة في الثانية، ينبغي للمرء أن يتوقع لعمر الكون لرؤية شوكة. 2.6 النموذج العدائي تم تصميم Algorand ليكون آمنًا في نموذج عدائي للغاية. دعونا نشرح. المستخدمين الصادقين والضارين يكون المستخدم صادقًا إذا اتبع جميع تعليمات البروتوكول الخاصة به، و قادر تمامًا على إرسال واستقبال الرسائل. المستخدم خبيث (أي بيزنطي، في لغة الحوسبة الموزعة) إذا كان بإمكانه الانحراف بشكل تعسفي عن تعليماته الموصوفة. الخصم The Adversary عبارة عن خوارزمية فعالة (متعددة الحدود من الناحية الفنية)، مشخصة بالألوان، ويمكنها على الفور جعل أي مستخدم ضارًا يريده، في أي وقت يريد (الموضوع فقط إلى الحد الأعلى لعدد المستخدمين الذين يمكنه إفسادهم). يتحكم الخصم بشكل كامل في جميع المستخدمين الضارين وينسقهم بشكل مثالي. فهو يتخذ كافة الإجراءات نيابة عنهم، بما في ذلك استقبال وإرسال جميع رسائلهم، ويمكن السماح لهم بالانحراف عنها تعليماتهم المقررة بطرق تعسفية. أو يمكنه ببساطة عزل إرسال المستخدم التالف واستقبال الرسائل. دعونا نوضح أنه لا يمكن لأي شخص آخر أن يعلم تلقائيًا أن المستخدم ضار، على الرغم من أن خبثه قد يظهر من خلال الإجراءات التي جعله الخصم يتخذها. لكن هذا العدو القوي • ليس لديه قوة حسابية لا حدود لها ولا يمكنه تزوير الرقمية بنجاح توقيع مستخدم صادق، إلا مع احتمال ضئيل؛ و• لا يجوز التدخل بأي شكل من الأشكال في تبادل الرسائل بين المستخدمين الشرفاء. علاوة على ذلك، فإن قدرته على مهاجمة المستخدمين الشرفاء مقيدة بأحد الافتراضات التالية. الصدق أغلبية المال نحن نعتبر سلسلة متواصلة من الأغلبية الصادقة من المال (HMM) الافتراضات: أي لكل عدد صحيح غير سالب k و الحقيقي h > 1/2، HHMk > h: المستخدمون الصادقون في كل جولة يمتلكون جزءًا أكبر من h من إجمالي الأموال الموجودة النظام في الجولة r -k. مناقشة. على افتراض أن جميع المستخدمين الضارين ينسقون أفعالهم بشكل مثالي (كما لو تم التحكم فيها بواسطة كيان واحد، الخصم) هي فرضية متشائمة إلى حد ما. التنسيق المثالي بين أيضا يصعب تحقيق الكثير من الأفراد. ربما يحدث التنسيق فقط ضمن مجموعات منفصلة من اللاعبين الخبيثين ولكن بما أنه لا يمكن للمرء التأكد من مستوى التنسيق بين المستخدمين الضارين قد نستمتع، من الأفضل أن نكون آمنين من أن نأسف. بافتراض أن الخصم يمكنه إفساد المستخدمين سرًا وديناميكيًا وعلى الفور، فهو أيضًا متشائم. ففي النهاية، من الناحية الواقعية، فإن السيطرة الكاملة على عمليات المستخدم يجب أن تستغرق بعض الوقت. يفترض الافتراض HMMk > h، على سبيل المثال، أنه في حالة تنفيذ جولة (في المتوسط). وفي دقيقة واحدة، ستبقى غالبية الأموال في جولة معينة في أيدٍ أمينة ساعتين على الأقل إذا كان k = 120، وأسبوع واحد على الأقل إذا كان k = 10000. لاحظ أن افتراضات HMM والأغلبية الصادقة السابقة لقوة الحوسبة ترتبط الافتراضات بمعنى أنه بما أن القدرة الحاسوبية يمكن شراؤها بالمال، إذا كان المستخدمون الضارون يمتلكون معظم الأموال، فيمكنهم الحصول على معظم قوة الحوسبة. 2.7 نموذج التواصل إننا نتصور أن نشر الرسالة — أي «الثرثرة بين الأقران»5 — هو الوسيلة الوحيدة للتواصل. الاتصالات. الافتراض المؤقت: تسليم الرسائل في الوقت المناسب في الشبكة بأكملها. ل نفترض في معظم أجزاء هذه الورقة أن كل رسالة يتم نشرها تصل إلى جميع المستخدمين الصادقين تقريبًا في الوقت المناسب. وسنقوم بإزالة هذا الافتراض في القسم 10، حيث نتعامل مع الشبكة التقسيمات سواء كانت طبيعية أو مستحثة بشكل عدائي. (كما سنرى، نحن نفترض فقط تسليم الرسائل في الوقت المناسب داخل كل مكون متصل بالشبكة.) إحدى الطرق الملموسة لالتقاط تسليم الرسائل المنتشرة في الوقت المناسب (في الشبكة بأكملها) هي ما يلي: بالنسبة لجميع إمكانية الوصول \(\rho\) > 95% وحجم الرسالة μ \(\in\)Z+، يوجد π\(\rho\),μ بحيث، إذا قام مستخدم صادق بنشر رسالة μ بايت m في الوقت t، ثم يصل m، بمرور الوقت، إلى جزء صغير على الأقل من المستخدمين الصادقين. 5 بشكل أساسي، كما في Bitcoin، عندما يقوم مستخدم بنشر رسالة m، فإن كل مستخدم نشط يستقبل m للمرة الأولى، يختار عشوائيًا وبشكل مستقل عددًا صغيرًا مناسبًا من المستخدمين النشطين، "جيرانه"، الذين يرسل إليهم م، ربما حتى يحصل على اعتراف منهم. ينتهي نشر m عندما لا يتلقى أي مستخدم م لأول مرة.ومع ذلك، لا يمكن للخاصية المذكورة أعلاه أن تدعم بروتوكول Algorand الخاص بنا، دون تصور صريح ومنفصل لآلية للحصول على أحدث blockchain - بواسطة مستخدم/مستودع آخر/إلخ. في الواقع، لبناء كتلة جديدة Br لا ينبغي فقط أن تتلقى مجموعة مناسبة من المدققين الجولة r في الوقت المناسب الرسائل، ولكن أيضًا رسائل الجولات السابقة، وذلك لمعرفة Br−1 وجميع الرسائل السابقة الأخرى الكتل، وهو أمر ضروري لتحديد ما إذا كانت الدفعات في Br صالحة. ما يلي الافتراض بدلا من ذلك يكفي. افتراض نشر الرسالة (MP): بالنسبة لجميع \(\rho\) > 95% و μ \(\in\)Z+، يوجد \(\alpha\),μ بحيث أنه في جميع الأوقات t وجميع الرسائل ذات البايتات m يتم نشرها بواسطة مستخدم صادق قبل t −\(\alpha\) \(\rho\),μ, يتم استلام m، بحلول الوقت t، بواسطة جزء صغير على الأقل \(\rho\) من المستخدمين الصادقين. البروتوكول Algorand ′ يوجه في الواقع كل عدد صغير من المستخدمين (أي القائمين على التحقق من خطوة معينة من الجولة في Algorand ′، لنشر رسالة منفصلة ذات حجم محدد (صغير)، ونحن بحاجة إلى تحديد الوقت اللازم للوفاء بهذه التعليمات. نحن نفعل ذلك من خلال إثراء النائب الافتراض على النحو التالي. بالنسبة لجميع n و \(\rho\) > 95% و μ \(\in\)Z+، يوجد lectn,\(\rho\),μ بحيث أنه في جميع الأوقات t وجميع البايتات الرسائل م1، . . . ، mn، يتم نشر كل منها من قبل مستخدم صادق قبل t −\(\alpha\)n,\(\rho\),μ, m1, . . . ، تم استلام مليون، بحلول الوقت t، على الأقل جزء صغير \(\rho\) من المستخدمين الصادقين. ملاحظة • إن الافتراض أعلاه بسيط عن عمد، ولكنه أيضًا أقوى مما هو مطلوب في بحثنا.6 • للتبسيط، نفترض أن \(\rho\) = 1، وبالتالي نسقط ذكر \(\rho\). • نفترض تشاؤماً أنه، بشرط عدم مخالفة الفرضية النائبة، هو الخصم يتحكم تماما في تسليم كافة الرسائل. على وجه الخصوص، دون أن يلاحظها أحد من قبل صادقين للمستخدمين، يمكن للخصم أن يقرر بشكل تعسفي أي لاعب صادق يتلقى أي رسالة متى، وتسريع تسليم أي رسالة يريدها بشكل تعسفي.7
Protokol BA BA⋆dalam Pengaturan Tradisional
Seperti yang telah ditekankan, perjanjian Bizantium adalah unsur utama Algorand. Memang benar, itu sudah selesai penggunaan protokol BA sehingga Algorand tidak terpengaruh oleh fork. Namun, untuk amannya terhadap kami Musuh yang kuat, Algorand harus bergantung pada protokol BA yang memenuhi kemampuan penggantian pemain baru kendala. Selain itu, agar Algorand menjadi efisien, protokol BA seperti itu harus sangat efisien. Protokol BA pertama kali didefinisikan untuk model komunikasi yang diidealkan, lengkap dan sinkron jaringan (jaringan SC). Model seperti ini memungkinkan desain dan analisis protokol BA yang lebih sederhana. 6Mengingat persentase jujur h dan probabilitas kegagalan yang dapat diterima F, Algorand menghitung batas atas, N, ke jumlah maksimum anggota verifikator dalam satu langkah. Jadi, asumsi MP hanya perlu berlaku untuk n \(\leq\)N. Selain itu, sebagaimana dinyatakan, asumsi MP tetap berlaku tidak peduli berapa banyak pesan lain yang dapat disebarkan mj's. Namun, seperti yang akan kita lihat, di Algorand pesan di disebarkan dalam waktu yang pada dasarnya tidak tumpang tindih interval, selama satu blok disebarkan, atau paling banyak N pemverifikasi menyebarkan blok kecil (misalnya, 200B) pesan. Oleh karena itu, kita dapat menyatakan kembali asumsi MP dengan cara yang lebih lemah namun juga lebih kompleks. 7Misalnya, dia bisa langsung mempelajari pesan yang dikirim oleh pemain jujur. Jadi, pengguna jahat i′, siapa diminta untuk menyebarkan pesan secara bersamaan dengan pengguna yang jujur i, selalu dapat memilih pesannya sendiri berdasarkan m′ pesan m sebenarnya disebarkan oleh i. Kemampuan ini terkait dengan bergegas, dalam istilah komputasi terdistribusi sastra.Oleh karena itu, di bagian ini, kami memperkenalkan protokol BA baru, BA⋆, untuk jaringan SC dan mengabaikannya masalah penggantian pemain sama sekali. Protokol BA⋆merupakan kontribusi yang bernilai tersendiri. Memang benar, ini adalah protokol kriptografi BA paling efisien untuk jaringan SC yang dikenal sejauh ini. Untuk menggunakannya dalam protokol Algorand kami, kami memodifikasi sedikit BA⋆, untuk memperhitungkan perbedaan kami model dan konteks komunikasi, namun pastikan, di bagian X, untuk menyoroti bagaimana BA⋆ digunakan dalam protokol kami yang sebenarnya Algorand ′. Kita mulai dengan mengingat model di mana BA⋆ beroperasi dan gagasan perjanjian Bizantium. 3.1 Jaringan Lengkap Sinkron dan Musuh yang Cocok Dalam jaringan SC, terdapat jam umum yang berdetak pada setiap waktu integral r = 1, 2, . . . Pada setiap kali klik r, setiap pemain i secara instan dan bersamaan mengirimkan satu pesan Pak i,j (mungkin pesan kosong) untuk setiap pemain j, termasuk dirinya sendiri. Setiap Tuan i,j diterima pada saat itu klik r+1 oleh pemain j, beserta identitas pengirim i. Sekali lagi, dalam protokol komunikasi, seorang pemain jujur jika dia mengikuti semua yang ditentukan instruksi, dan sebaliknya berbahaya. Semua pemain jahat dikontrol sepenuhnya dan sempurna dikoordinasikan oleh Musuh, yang, khususnya, segera menerima semua pesan yang ditujukan kepadanya pemain jahat, dan memilih pesan yang mereka kirim. Musuh dapat segera membuat pengguna jujur mana pun yang dia inginkan menjadi jahat kapan pun dia mengklik yang diinginkannya, hanya bergantung pada kemungkinan batas atas jumlah pemain jahat. Artinya, Musuh “tidak dapat mengganggu pesan yang telah dikirim oleh pengguna i yang jujur”, yang mana akan terjadi disampaikan seperti biasa. Musuh juga memiliki kemampuan tambahan untuk melihat secara instan, di setiap putaran genap pesan yang dikirim oleh pemain jujur saat ini, dan secara instan menggunakan informasi ini untuk memilih pesan yang dikirim oleh pemain jahat pada saat yang sama dicentang. Keterangan • Kekuatan Musuh. Pengaturan di atas sangat merugikan. Memang dalam perjanjian Bizantium literatur, banyak situasi yang tidak terlalu bermusuhan. Namun, ada beberapa pengaturan yang lebih bermusuhan juga sudah diperhatikan, dimana Musuh setelah melihat pesan yang dikirimkan oleh pemain jujur i pada waktu tertentu klik r, memiliki kemampuan untuk segera menghapus semua pesan ini dari jaringan i yang rusak, pilih pesan yang dikirim oleh i yang sekarang berbahaya pada saat klik r, dan dapatkan pesan tersebut disampaikan seperti biasa. Kekuatan Musuh yang dibayangkan cocok dengan yang dia miliki di lingkungan kita. • Abstraksi Fisik. Model komunikasi yang dibayangkan mengabstraksi model yang lebih fisik, di mana setiap pasangan pemain (i,j) dihubungkan oleh jalur komunikasi terpisah dan pribadi li,j. Artinya, tidak ada orang lain yang dapat menyuntikkan, mengganggu, atau memperoleh informasi tentang pesan yang dikirimkan li,j. Satu-satunya cara bagi Musuh untuk memiliki akses ke li,j adalah dengan merusak i atau j. • Privasi dan Otentikasi. Dalam jaringan SC, privasi dan otentikasi pesan dijamin dengan asumsi. Sebaliknya, dalam jaringan komunikasi kita, tempat pesan disebarkan dari peer to peer, otentikasi dijamin oleh tanda tangan digital, dan privasi tidak ada. Jadi, untuk mengadopsi protokol BA⋆ke pengaturan kami, setiap pesan yang dipertukarkan harus ditandatangani secara digital (lebih lanjut mengidentifikasi negara bagian pengirimannya). Untungnya, protokol BA yang kami miliki pertimbangkan untuk menggunakan di Algorand tidak memerlukan privasi pesan.3.2 Gagasan Perjanjian Bizantium Gagasan perjanjian Bizantium diperkenalkan oleh Pease Shostak dan Lamport [31] untuk kasus biner, yaitu ketika setiap nilai awal terdiri dari sedikit. Namun, hal itu segera diperpanjang ke nilai awal yang sewenang-wenang. (Lihat survei Fischer [16] dan Chor and Dwork [10].) Oleh BA protokol, yang kami maksud adalah protokol yang bernilai arbitrer. Definisi 3.1. Dalam jaringan sinkron, misalkan P adalah protokol n-pemain, yang kumpulan pemainnya sama pengetahuan di antara para pemain, t bilangan bulat positif sehingga n \(\geq\)2t + 1. Kita katakan bahwa P adalah an nilai arbitrer (masing-masing, biner) (n, t)-Protokol perjanjian Bizantium dengan kesehatan \(\sigma\) \(\in\)(0, 1) jika, untuk setiap himpunan nilai V tidak mengandung simbol khusus \(\bot\)(masing-masing, untuk V = {0, 1}), dalam suatu eksekusi di mana paling banyak t pemainnya jahat dan di mana setiap pemain saya memulai dengan sebuah nilai awal vi \(\in\)V , setiap pemain jujur j berhenti dengan probabilitas 1, mengeluarkan nilai outi \(\in\)V \(\cup\){\(\bot\)} untuk memenuhi, dengan probabilitas paling sedikit \(\sigma\), dua kondisi berikut: 1. Kesepakatan: Terdapat \(\in\)V \(\cup\){\(\bot\)} sehingga outi = out untuk semua pemain jujur i. 2. Konsistensi: jika, untuk suatu nilai v \(\in\)V , vi = v untuk semua pemain jujur, maka keluar = v. Kami menyebut out sebagai keluaran P, dan setiap outi sebagai keluaran pemain i. 3.3 Notasi BA # Dalam protokol BA kami, seorang pemain diharuskan menghitung berapa banyak pemain yang mengiriminya pesan tertentu langkah tertentu. Oleh karena itu, untuk setiap kemungkinan nilai v yang mungkin dikirim,
s
saya (v) (atau hanya #i(v) ketika s jelas) adalah jumlah pemain j yang i telah menerima v pada langkah s. Mengingat bahwa seorang pemain i menerima tepat satu pesan dari setiap pemain j, jika jumlahnya pemain adalah n, maka, untuk semua i dan s, P v #s saya(v) = n. 3.4 Protokol Biner BA BBA⋆ Pada bagian ini kami menyajikan protokol BA biner baru, BBA⋆, yang lebih mengandalkan kejujuran dari dua pertiga pemain dan sangat cepat: tidak peduli apa yang mungkin dilakukan pemain jahat, setiap eksekusi loop utamanya membuat para pemain setuju dengan probabilitas 1/3. Setiap pemain memiliki kunci publiknya sendiri dari skema tanda tangan digital yang memenuhi tanda tangan unik properti. Karena protokol ini dimaksudkan untuk dijalankan pada jaringan lengkap yang sinkron, maka tidak ada kebutuhan pemain saya untuk menandatangani setiap pesannya. Tanda tangan digital digunakan untuk menghasilkan bit acak yang cukup umum pada Langkah 3. (Dalam Algorand, tanda tangan digital juga digunakan untuk mengautentikasi semua pesan lainnya.) Protokol memerlukan pengaturan minimal: string acak umum r, tidak tergantung pada pemain kunci. (Dalam Algorand, r sebenarnya diganti dengan kuantitas Qr.) Protokol BBA⋆adalah loop 3 langkah, di mana pemain berulang kali menukar nilai Boolean, dan pemain yang berbeda dapat keluar dari putaran ini pada waktu yang berbeda. Seorang pemain saya keluar dari lingkaran ini dengan menyebarkan, pada langkah tertentu, baik nilai khusus 0∗atau nilai khusus 1∗, sehingga memerintahkan semua pemain untuk “berpura-pura” mereka masing-masing menerima 0 dan 1 dari i di semua langkah selanjutnya. (Atau dikatakan: asumsikanbahwa pesan terakhir yang diterima pemain j dari pemain lain i agak b. Lalu, dalam langkah apa pun di mana dia tidak menerima pesan apa pun dari i, j bertindak seolah-olah saya mengiriminya bit b.) Protokol ini menggunakan penghitung \(\gamma\), yang mewakili berapa kali perulangan 3 langkahnya telah dieksekusi. Pada awal BBA⋆, \(\gamma\) = 0. (Orang mungkin menganggap \(\gamma\) sebagai penghitung global, namun sebenarnya meningkat oleh masing-masing pemain setiap kali loop dijalankan.) Ada n \(\geq\)3t + 1, di mana t adalah jumlah maksimum pemain jahat yang mungkin. Sebuah biner string x diidentifikasi dengan bilangan bulat yang representasi binernya (dengan kemungkinan awalan 0) adalah x; dan lsb(x) menunjukkan bit paling signifikan dari x. Protokol BBA⋆ (Komunikasi) Langkah 1. [Langkah Koin-Tetap-Ke-0] Setiap pemain saya mengirimkan bi. 1.1 Jika #1 i (0) \(\geq\)2t + 1, lalu i set bi = 0, mengirimkan 0∗, keluaran outi = 0, dan BERHENTI. 1.2 Jika #1 i (1) \(\geq\)2t + 1, maka i menetapkan bi = 1. 1.3 Jika tidak, saya menetapkan bi = 0. (Komunikasi) Langkah 2. [Langkah Koin-Tetap-Ke-1] Setiap pemain saya mengirimkan bi. 2.1 Jika #2 i (1) \(\geq\)2t + 1, maka i menetapkan bi = 1, mengirimkan 1∗, keluaran keluari = 1, dan BERHENTI. 2.2 Jika #2 i (0) \(\geq\)2t + 1, maka saya menetapkan bi = 0. 2.3 Jika tidak, saya menetapkan bi = 1. (Komunikasi) Langkah 3. [Langkah Membalik Koin] Setiap pemain i mengirimkan bi dan SIGi(r, \(\gamma\)). 3.1 Jika #3 i (0) \(\geq\)2t + 1, maka i menetapkan bi = 0. 3.2 Jika #3 i (1) \(\geq\)2t + 1, maka i menetapkan bi = 1. 3.3 Selain itu, misalkan Si = {j \(\in\)N yang telah mengirimkan i pesan yang benar pada langkah ini 3 }, saya menetapkan bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); meningkatkan \(\gamma\)i sebesar 1; dan kembali ke Langkah 1. Teorema 3.1. Kapanpun n \(\geq\)3t + 1, BBA⋆adalah protokol biner (n, t)-BA dengan tingkat kesehatan 1. Bukti Teorema 3.1 diberikan di [26]. Adaptasinya dengan lingkungan kami, dan kemampuan pemainnya untuk diganti properti adalah hal baru. Catatan Sejarah Protokol BA biner probabilistik pertama kali diusulkan oleh Ben-Or di pengaturan asinkron [7]. Protokol BBA⋆adalah adaptasi baru, terhadap pengaturan kunci publik kita, dari protokol biner BA Feldman dan Micali [15]. Protokol mereka adalah yang pertama bekerja sesuai harapan jumlah langkah yang konstan. Ini berhasil dengan meminta para pemainnya sendiri menerapkan koin yang sama, sebuah gagasan yang diajukan oleh Rabin, yang mengimplementasikannya melalui pihak eksternal yang dipercaya [32].3.5 Konsensus Bertingkat dan Protokol GC Mari kita ingat, untuk nilai-nilai yang sewenang-wenang, gagasan konsensus jauh lebih lemah dibandingkan kesepakatan Bizantium. Definisi 3.2. Misalkan P adalah suatu protokol yang himpunan semua pemainnya diketahui secara umum, dan masing-masing pemain saya secara pribadi mengetahui nilai awal yang berubah-ubah v′ saya. Kita katakan bahwa P adalah protokol konsensus dengan tingkat (n, t) jika, dalam setiap eksekusi dengan n pemain, pada kebanyakan dari mereka berbahaya, setiap pemain jujur saya berhenti mengeluarkan pasangan tingkat nilai (vi, gi), dimana gi \(\in\){0, 1, 2}, sehingga memenuhi tiga kondisi berikut: 1. Untuk semua pemain jujur i dan j, |gi −gj| \(\leq\)1. 2. Untuk semua pemain jujur i dan j, gi, gj > 0 ⇒vi = vj. 3. Jika v′ 1 = \(\cdots\) = v′ n = v untuk beberapa nilai v, maka vi = v dan gi = 2 untuk semua pemain jujur i. Catatan Sejarah Gagasan tentang konsensus yang bertingkat berasal dari gagasan yang bertingkat siaran, dikemukakan oleh Feldman dan Micali di [15], dengan memperkuat gagasan tentang tentara salib perjanjian, seperti yang diperkenalkan oleh Dolev [12], dan disempurnakan oleh Turpin dan Coan [33].8 Di [15], penulis juga menyediakan protokol penyiaran bertingkat 3 langkah (n, t), yang disebut gradecast, untuk n \(\geq\)3t+1. Protokol penyiaran bertingkat (n, t) yang lebih kompleks untuk n > 2t+1 kemudian ditemukan oleh Katz dan Koo [19]. Protokol dua langkah GC berikut terdiri dari dua langkah terakhir dari gradecast, yang dinyatakan dalam kami notasi. Untuk menekankan fakta ini, dan untuk mencocokkan langkah-langkah protokol Algorand ′ bagian 4.1, kami masing-masing sebutkan 2 dan 3 langkah-langkah GC. Protokol GC Langkah 2. Setiap pemain saya mengirimkan v′ saya kepada semua pemain. Langkah 3. Setiap pemain i mengirimkan string x ke semua pemain jika dan hanya jika #2 saya (x) \(\geq\)2t + 1. Penentuan Keluaran. Setiap pemain i mengeluarkan pasangan (vi, gi) yang dihitung sebagai berikut: • Jika, untuk beberapa x, #3 i (x) \(\geq\)2t + 1, maka vi = x dan gi = 2. • Jika, untuk beberapa x, #3 i (x) \(\geq\)t + 1, maka vi = x dan gi = 1. • Lain, vi = \(\bot\)dan gi = 0. Teorema 3.2. Jika n \(\geq\)3t + 1, maka GC adalah protokol siaran bergradasi (n, t). Buktinya langsung mengikuti dari protokol gradecast di [15], dan dengan demikian dihilangkan.9 8Intinya, dalam protokol penyiaran bertingkat, (a) masukan dari setiap pemain adalah identitas pemain terkemuka pemain, pengirim, yang memiliki nilai sembarang v sebagai masukan pribadi tambahan, dan (b) keluaran harus memenuhi sifat yang sama 1 dan 2 dari konsensus bertingkat, ditambah sifat berikut 3′: jika pengirimnya jujur, maka vi = v dan gi = 2 untuk semua pemain jujur i. 9Memang, dalam protokol mereka, pada langkah 1, pengirim mengirimkan nilai pribadinya v ke semua pemain, dan setiap pemain i izinkan v′ saya terdiri dari nilai yang sebenarnya dia terima dari pengirim pada langkah 1.3.6 Protokol BA⋆ Kami sekarang menjelaskan protokol BA nilai arbitrer BA⋆melalui protokol BA biner BBA⋆dan protokol konsensus bertingkat GC. Di bawah ini, nilai awal setiap pemain i adalah v′ saya. Protokol BA⋆ Langkah 1 dan 2. Setiap pemain i menjalankan GC, pada input v′ i, untuk menghitung pasangan (vi, gi). Langkah 3,. . . Setiap pemain i mengeksekusi BBA⋆—dengan input awal 0, jika gi = 2, dan 1 sebaliknya— jadi untuk menghitung bit outi. Penentuan Keluaran. Setiap pemain i mengeluarkan vi, jika outi = 0, dan \(\bot\)sebaliknya. Teorema 3.3. Kapanpun n \(\geq\)3t + 1, BA⋆adalah protokol (n, t)-BA dengan tingkat kesehatan 1. Bukti. Pertama-tama kita buktikan Konsistensi, lalu Kesepakatan. Bukti Konsistensi. Asumsikan bahwa, untuk beberapa nilai v \(\in\)V , v′ i = v. Kemudian, berdasarkan sifat 3 dari konsensus dinilai, setelah pelaksanaan GC, semua pemain jujur keluar (v, 2). Oleh karena itu, 0 adalah bagian awal dari semua pemain jujur di akhir eksekusi BBA⋆. Demikian dengan Perjanjian properti perjanjian biner Bizantium, di akhir pelaksanaan BA⋆, outi = 0 untuk semua jujur pemain. Artinya keluaran setiap pemain jujur i di BA⋆adalah vi = v. ✷ Bukti Perjanjian. Karena BBA⋆ juga merupakan protokol BA biner (A) outi = 1 untuk semua pemain jujur i, atau (B) outi = 0 untuk semua pemain jujur i. Dalam kasus A, semua pemain jujur mengeluarkan \(\bot\)di BA⋆, dan dengan demikian Perjanjian berlaku. Pertimbangkan sekarang kasus B.In dalam hal ini, dalam eksekusi BBA⋆, bit awal dari setidaknya satu pemain jujur i adalah 0. (Memang, jika bit awal dari semua pemain jujur adalah 1, maka, dengan properti Konsistensi BBA⋆, kita akan memiliki outj = 1 untuk semua j yang jujur.) Oleh karena itu, setelah eksekusi GC, i mengeluarkan pasangan (v, 2) untuk beberapa nilai v. Jadi, berdasarkan properti 1 dari konsensus bertingkat, gj > 0 untuk semua pemain jujur j. Oleh karena itu, oleh properti 2 dari konsensus bertingkat, vj = v untuk semua pemain jujur j. Ini menyiratkan bahwa, pada akhir BA⋆, setiap pemain jujur j mengeluarkan v. Jadi, Perjanjian berlaku juga dalam kasus B. ✷ Karena Konsistensi dan Perjanjian berlaku, BA⋆adalah protokol BA dengan nilai arbitrer. Catatan Sejarah Turpin dan Coan adalah orang pertama yang menunjukkan bahwa, untuk n \(\geq\)3t+1, biner apa pun (n, t)-BA protokol dapat dikonversi ke protokol dengan nilai arbitrer (n, t)-BA. Pengurangan nilai sewenang-wenang Perjanjian Bizantium terhadap perjanjian biner Bizantium melalui konsensus bertingkat lebih bersifat modular dan lebih bersih, dan menyederhanakan analisis protokol Algorand kami Algorand ′. Generalisasi BA⋆untuk digunakan di Algorand Algorand berfungsi meskipun semua komunikasi dilakukan melalui bergosip. Namun, meski disajikan dalam jaringan komunikasi tradisional dan familiar, tetap saja untuk memungkinkan perbandingan yang lebih baik dengan penemuan sebelumnya dan pemahaman yang lebih mudah, protokol BA⋆berfungsi juga di jaringan gosip. Faktanya, dalam perwujudan rinci Algorand, kami akan menyajikannya langsung untuk jaringan gosip. Kami juga harus menunjukkan bahwa hal ini memenuhi kemampuan pergantian pemain properti yang sangat penting agar Algorand aman dalam model yang sangat bermusuhan.
Protokol apa pun yang dapat diganti oleh pemain BA yang bekerja di jaringan komunikasi gosip dapat digunakan digunakan dengan aman dalam sistem Algorand yang inventif. Khususnya, Micali dan Vaikunthanatan telah memperluas BA⋆untuk bekerja dengan sangat efisien juga dengan mayoritas pemain jujur. Itu protokol juga dapat digunakan di Algorand.
بروتوكول مكتبة الإسكندرية ⋆ في بيئة تقليدية
كما تم التأكيد عليه سابقًا، تعد الاتفاقية البيزنطية عنصرًا أساسيًا في Algorand. في الواقع، لقد تم ذلك استخدام بروتوكول BA الذي لا يتأثر Algorand بالشوكات. ومع ذلك، لتكون آمنة ضدنا يجب أن يعتمد الخصم القوي، Algorand على بروتوكول BA الذي يلبي إمكانية استبدال اللاعب الجديد القيد. بالإضافة إلى ذلك، لكي يكون Algorand فعالاً، يجب أن يكون بروتوكول مكتبة الإسكندرية فعالاً للغاية. تم تعريف بروتوكولات BA لأول مرة لنموذج اتصال مثالي متزامن كامل الشبكات (شبكات SC). يسمح هذا النموذج بتصميم وتحليل أبسط لبروتوكولات مكتبة الإسكندرية. 6بالنظر إلى النسبة المئوية الصادقة h واحتمال الفشل المقبول F، Algorand يحسب الحد الأعلى، N، إلى الحد الأقصى لعدد أعضاء التحقق في الخطوة. وبالتالي، فإن افتراض MP يحتاج فقط إلى الاحتفاظ بـ n \(\geq\)N. بالإضافة إلى ذلك، وكما ذكرنا، فإن افتراض MP يظل ساريًا بغض النظر عن عدد الرسائل الأخرى التي قد يتم نشرها جنبًا إلى جنب إم جي. ومع ذلك، كما سنرى، في Algorand يتم نشر الرسائل في وقت غير متداخل بشكل أساسي الفواصل الزمنية، التي يتم خلالها نشر كتلة واحدة، أو على الأكثر تقوم أدوات التحقق N بنشر كتلة صغيرة (على سبيل المثال، 200B) رسالة. وبالتالي، يمكننا إعادة صياغة افتراض MP بطريقة أضعف، ولكن أيضًا أكثر تعقيدًا. 7على سبيل المثال، يمكنه أن يتعلم على الفور الرسائل التي يرسلها اللاعبون الصادقون. وهكذا، مستخدم ضار أنا ′، من هو عندما يُطلب منك نشر رسالة في وقت واحد مع مستخدم صادق، يمكنني دائمًا اختيار رسالته الخاصة بناءً على ذلك الرسالة m تم نشرها بالفعل بواسطة i. ترتبط هذه القدرة بالاندفاع، بلغة الحساب الموزع الأدب.وبناء على ذلك، في هذا القسم، نقدم بروتوكول BA جديد، BA⋆، لشبكات SC وتجاهل مسألة استبدال اللاعب تمامًا. البروتوكول BA⋆ هو مساهمة ذات قيمة منفصلة. في الواقع، إنه بروتوكول التشفير الأكثر كفاءة لشبكات SC المعروفة حتى الآن. لاستخدامه ضمن بروتوكول Algorand الخاص بنا، نقوم بتعديل BA⋆ قليلاً، وذلك لمراعاة اختلافاتنا نموذج وسياق الاتصال، ولكن تأكد، في القسم X، من تسليط الضوء على كيفية استخدام BA⋆ ضمن بروتوكولنا الفعلي Algorand ′. نبدأ بالتذكير بالنموذج الذي تعمل به شركة BA⋆ وفكرة الاتفاقية البيزنطية. 3.1 شبكات كاملة متزامنة ومطابقة الخصوم في شبكة SC، هناك ساعة مشتركة، تدق في كل الأوقات التكاملية r = 1، 2، . . . في كل مرة تنقر فيها على r، يرسل كل لاعب رسالة فردية على الفور وفي نفس الوقت رسالة السيد i,j (ربما الرسالة الفارغة) لكل لاعب j، بما في ذلك نفسه. كل السيد تم استلام i,j في الوقت المناسب، انقر فوق r + 1 بواسطة اللاعب j، مع هوية المرسل i. مرة أخرى، في بروتوكول الاتصال، يكون اللاعب صادقًا إذا اتبع كل ما هو موصوف له التعليمات، والخبيثة خلاف ذلك. يتم التحكم في جميع اللاعبين الخبيثين بشكل كامل وكامل يتم تنسيقها من قبل الخصم، الذي، على وجه الخصوص، يتلقى على الفور جميع الرسائل الموجهة إليه اللاعبين الضارين، ويختار الرسائل التي يرسلونها. يمكن للخصم أن يتسبب على الفور في إلحاق الضرر بأي مستخدم صادق يريده في أي وقت غريب يريد، مع مراعاة الحد الأقصى المحتمل لعدد اللاعبين الخبيثين. هذا هو، الخصم "لا يمكنه التدخل في الرسائل التي أرسلها مستخدم صادق بالفعل"، وهو ما سيكون تسليمها كالمعتاد. يتمتع الخصم أيضًا بقدرة إضافية على الرؤية الفورية، في كل جولة زوجية، لل الرسائل التي يرسلها اللاعبون الصادقون حاليًا، ويستخدمون هذه المعلومات على الفور للاختيار الرسائل التي يرسلها اللاعبون الضارون في نفس الوقت تضع علامة. ملاحظات • قوة الخصم. الإعداد أعلاه عدائي للغاية. وبالفعل في الاتفاقية البيزنطية الأدب، العديد من الإعدادات أقل خصومة. ومع ذلك، هناك بعض الإعدادات الخصومة كما تم أخذ بعين الاعتبار، حيث يقوم الخصم، بعد رؤية الرسائل المرسلة من قبل لاعب صادق أي في وقت معين، انقر فوق r، لديه القدرة على مسح كل هذه الرسائل من الشبكة، على الفور فاسد، اختر الرسالة التي أرسلها الآن ضارًا في الوقت المناسب، انقر فوق r، واحصل عليها تسليمها كالمعتاد. إن القوة المتصورة للخصم تطابق تلك الموجودة في بيئتنا. • التجريد المادي. نموذج الاتصال المتوخى يلخص نموذجا أكثر مادية، يتم فيها ربط كل زوج من اللاعبين (i، j) بخط اتصال منفصل وخاص li،j. أي أنه لا يمكن لأي شخص آخر حقن الرسائل المرسلة أو التدخل فيها أو الحصول على معلومات حولها لي، ي. الطريقة الوحيدة التي يمكن للخصم من خلالها الوصول إلى li,j هي إفساد i أو j. • الخصوصية والمصادقة. في شبكات SC يتم ضمان خصوصية الرسائل والمصادقة عليها بالافتراض. وعلى النقيض من ذلك، في شبكة اتصالاتنا، حيث يتم نشر الرسائل من نظير إلى نظير، يتم ضمان المصادقة عن طريق التوقيعات الرقمية، والخصوصية معدومة. وبالتالي، لاعتماد البروتوكول BA⋆ في إعداداتنا، يجب توقيع كل رسالة متبادلة رقميًا (مزيد من تحديد الدولة التي تم إرسالها إليها). لحسن الحظ، بروتوكولات مكتبة الإسكندرية التي نحن فكر في استخدام Algorand ولا يتطلب خصوصية الرسالة.3.2 فكرة الاتفاق البيزنطي تم تقديم فكرة الاتفاقية البيزنطية بواسطة بيز شوستاك ولامبورت [31] لـ الحالة الثنائية، أي عندما تتكون كل قيمة أولية من بت. ومع ذلك، تم تمديده بسرعة إلى القيم الأولية التعسفية. (راجع استطلاعات Fischer [16] وChor وDwork [10].) البروتوكول، نعني بروتوكولًا ذا قيمة تعسفية. التعريف 3.1. في شبكة متزامنة، دع P يكون بروتوكول n-player، ومجموعة المشغلات الخاصة به شائعة المعرفة بين اللاعبين، t عدد صحيح موجب مثل n \(\geq\)2t + 1. نقول أن P هو قيمة تعسفية (ثنائية على التوالي) (n، t) -بروتوكول الاتفاقية البيزنطية مع السلامة \(\sigma\) \(\in\)(0, 1) إذا، لكل مجموعة من القيم V لا تحتوي على الرمز الخاص \(\bot\)(على التوالي، لـ V = {0, 1})، في التنفيذ الذي يكون فيه معظم اللاعبين ضارين ويبدأ فيه كل لاعب بـ القيمة الأولية vi \(\in\)V ، يتوقف كل لاعب صادق j مع الاحتمال 1، ويخرج قيمة خارج \(\in\)V \(\cup\){\(\bot\)} وذلك لتحقيق الشرطين التاليين، مع احتمال لا يقل عن \(\sigma\): 1. الاتفاقية: يوجد \(\in\)V \(\cup\){\(\bot\)} بحيث يكون outi = outi لجميع اللاعبين الشرفاء i. 2. الاتساق: إذا، بالنسبة لبعض القيمة v \(\in\)V ، vi = v لجميع اللاعبين الصادقين، فإن out = v. نشير إلى outi بمخرجات P، وإلى كل outi بمخرجات اللاعب i. 3.3 تدوين مكتبة الإسكندرية # في بروتوكولات BA الخاصة بنا، يُطلب من اللاعب حساب عدد اللاعبين الذين أرسلوا له رسالة معينة خطوة معينة. وفقًا لذلك، لكل قيمة محتملة v يمكن إرسالها،
س
ط (ت) (أو فقط #i(v) عندما يكون s واضحًا) هو عدد اللاعبين j الذين تلقيت منهم v في الخطوات s. مع التذكير بأن اللاعب أتلقى رسالة واحدة بالضبط من كل لاعب j, إذا كان عدد اللاعبين هو n، إذن، لكل i و s، P ضد #س ط (الخامس) = ن. 3.4 بروتوكول BA الثنائي BBA⋆ في هذا القسم نقدم بروتوكول BA الثنائي الجديد، BBA⋆، والذي يعتمد على صدق المزيد أكثر من ثلثي اللاعبين وهو سريع جدًا: بغض النظر عما قد يفعله اللاعبون الخبيثون، كل تنفيذ للحلقة الرئيسية يجعل اللاعبين يتفقون مع الاحتمال 1/3. كل لاعب لديه مفتاحه العام الخاص بنظام التوقيع الرقمي الذي يلبي التوقيع الفريد الملكية. نظرًا لأن هذا البروتوكول مخصص للتشغيل على شبكة كاملة متزامنة، فلا يوجد ضرورة قيام اللاعب بالتوقيع على كل رسالة من رسائله. يتم استخدام التوقيعات الرقمية لإنشاء بت عشوائي مشترك بدرجة كافية في الخطوة 3. (في Algorand، تُستخدم التوقيعات الرقمية لمصادقة جميع الرسائل الأخرى أيضًا.) يتطلب البروتوكول الحد الأدنى من الإعداد: سلسلة عشوائية مشتركة r، مستقلة عن اللاعبين مفاتيح. (في Algorand، يتم استبدال r فعليًا بالكمية Qr.) بروتوكول BBA⋆ عبارة عن حلقة مكونة من 3 خطوات، حيث يقوم اللاعبون بتبادل القيم المنطقية بشكل متكرر، و يمكن للاعبين المختلفين الخروج من هذه الحلقة في أوقات مختلفة. لاعب يخرج من هذه الحلقة عن طريق الانتشار، في خطوة ما، إما قيمة خاصة 0∗ أو قيمة خاصة 1∗، وبالتالي إرشاد جميع اللاعبين إلى "يتظاهرون" أنهم يتلقون على التوالي 0 و1 من i في جميع الخطوات المستقبلية. (وقال بدلا من ذلك: افترضأن آخر رسالة تلقاها اللاعب j من لاعب آخر كنت قليلاً ب. ثم في أي خطوة حيث لا يتلقى أي رسالة من i، j يتصرف كما لو أنني أرسلت له البت b.) يستخدم البروتوكول عدادًا \(\gamma\)، يمثل عدد مرات تنفيذ الحلقة المكونة من 3 خطوات. في بداية BBA⋆، \(\gamma\) = 0. (قد يفكر المرء في \(\gamma\) كعداد عالمي، لكنه في الواقع متزايد بواسطة كل لاعب على حدة في كل مرة يتم فيها تنفيذ الحلقة.) يوجد n \(\geq\)3t + 1، حيث t هو الحد الأقصى لعدد اللاعبين الضارين. ثنائي يتم تعريف السلسلة x بالعدد الصحيح الذي يكون تمثيله الثنائي (مع البادئات المحتملة 0) هو x؛ ويشير lsb(x) إلى الجزء الأقل أهمية من x. بروتوكول BBA⋆ (الاتصال) الخطوة 1. [خطوة العملة الثابتة إلى 0] أرسل كل لاعب ثنائيًا. 1.1 إذا رقم 1 i (0) \(\geq\)2t + 1، ثم أقوم بتعيين bi = 0، وإرسال 0∗، والمخرجات outi = 0، ويتوقف. 1.2 إذا رقم 1 i (1) \(\geq\)2t + 1، ثم أقوم بتعيين bi = 1. 1.3 بخلاف ذلك، i تحدد bi = 0. (الاتصال) الخطوة 2. [خطوة العملة الثابتة إلى 1] أرسل كل لاعب ثنائيًا. 2.1 إذا رقم 2 أنا (1) \(\geq\)2t + 1، ثم أقوم بتعيين ثنائية = 1، يرسل 1∗، المخرجات = 1، ويتوقف. 2.2 إذا رقم 2 ط (0) \(\geq\)2t + 1، ثم قمت بتعيين ثنائية = 0. 2.3 بخلاف ذلك، i تحدد bi = 1. (الاتصال) الخطوة 3. [الخطوة مقلوبة العملة بشكل حقيقي] أرسل لكل لاعب ثنائية وSIGi(r, \(\gamma\)). 3.1 إذا رقم 3 i (0) \(\geq\)2t + 1، ثم أقوم بتعيين bi = 0. 3.2 إذا رقم 3 i (1) \(\geq\)2t + 1، ثم أقوم بتعيين bi = 1. 3.3 بخلاف ذلك، دع Si = {j \(\in\)N الذين أرسلوا لي رسالة مناسبة في هذه الخطوة 3 }، i يحدد bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); يزيد \(\gamma\)i بمقدار 1؛ ويعود إلى الخطوة 1. نظرية 3.1. عندما يكون n \(\geq\)3t + 1، فإن BBA⋆ هو بروتوكول ثنائي (n، t)-BA مع سلامة 1. تم تقديم دليل على النظرية 3.1 في [26]. تكيفه مع محيطنا وإمكانية استبداله باللاعب الملكية جديدة. ملاحظة تاريخية تم اقتراح بروتوكولات BA الثنائية الاحتمالية لأول مرة بواسطة Ben-Or في الإعدادات غير المتزامنة [7]. بروتوكول BBA⋆ هو تعديل جديد لإعداد المفتاح العام الخاص بنا لـ بروتوكول BA الثنائي لفيلدمان وميكالي [15]. كان البروتوكول الخاص بهم هو أول بروتوكول يعمل بطريقة متوقعة عدد ثابت من الخطوات لقد نجح الأمر من خلال جعل اللاعبين أنفسهم ينفذون عملة مشتركة، فكرة اقترحها رابين ونفذها عبر جهة خارجية موثوقة [32].3.5 الإجماع المتدرج وبروتوكول GC دعونا نتذكر، بالنسبة للقيم التعسفية، أن فكرة الإجماع أضعف بكثير من الاتفاق البيزنطي. التعريف 3.2. دع P يكون بروتوكولًا تكون فيه مجموعة جميع اللاعبين معرفة مشتركة، ولكل منهم اللاعب الذي يعرف بشكل خاص القيمة الأولية التعسفية v' أنا. نقول أن P هو بروتوكول إجماع متدرج (n، t) إذا كان في كل تنفيذ مع n لاعبين معظمها خبيث، كل لاعب نزيه يتوقف عن إخراج زوج من الدرجة القيمة (vi، gi)، حيث gi \(\in\){0, 1, 2}، وذلك لتحقيق الشروط الثلاثة التالية: 1. لجميع اللاعبين الصادقين i وj، |gi −gj| \(\geq\)1. 2. لجميع اللاعبين الصادقين i وj, gi, gj > 0 ⇒vi = vj. 3. إذا كان الخامس ' 1 = \(\cdots\) = v' n = v لبعض القيمة v، ثم vi = v و gi = 2 لجميع اللاعبين الصادقين i. ملاحظة تاريخية إن فكرة الإجماع المتدرج مشتقة ببساطة من فكرة الإجماع المتدرج البث، الذي طرحه فيلدمان وميكالي في [15]، من خلال تعزيز فكرة الصليبية الاتفاقية، كما قدمها دوليف [12]، وصقلها توربين وكوان [33].8 في [15]، قدم المؤلفون أيضًا بروتوكول بث متدرج من 3 خطوات (n، t)، Gradecast، لـ ن \(\geq\)3t+1. تم العثور لاحقًا على بروتوكول بث متدرج أكثر تعقيدًا (n, t) لـ n > 2t+1 بواسطة كاتز وكو [19]. يتكون بروتوكول GC التالي المكون من خطوتين من الخطوتين الأخيرتين من Gradecast، المعبر عنهما في ملفنا تدوين. للتأكيد على هذه الحقيقة، ولمطابقة خطوات البروتوكول Algorand ′ من القسم 4.1، نحن قم بتسمية 2 و 3 خطوات GC على التوالي. بروتوكول جي سي الخطوة 2. أرسل لكل لاعب حرف v′ أنا لجميع اللاعبين. الخطوة 3. أرسل كل لاعب إلى جميع اللاعبين السلسلة x إذا وفقط إذا كان رقم 2 أنا (خ) \(\geq\)2t + 1. تحديد الإخراج. يقوم كل لاعب بإخراج الزوج (vi، gi) المحسوب على النحو التالي: • إذا، بالنسبة لبعض x، رقم 3 i (x) \(\geq\)2t + 1، ثم vi = x وgi = 2. • إذا، بالنسبة لبعض x، رقم 3 i (x) \(\geq\)t + 1، ثم vi = x وgi = 1. • وإلا، vi = \(\bot\) و gi = 0. نظرية 3.2. إذا كان n \(\geq\)3t + 1، فإن GC هو بروتوكول بث متدرج (n، t). يتبع الدليل مباشرة إثبات البروتوكول في [15]، وبالتالي تم حذفه.9 8في جوهر الأمر، في بروتوكول البث المتدرج، (أ) مدخلات كل لاعب هي هوية مميزة اللاعب، المرسل، الذي له قيمة عشوائية v كمدخل خاص إضافي، و(ب) يجب أن تستوفي المخرجات نفس الخصائص 1 و2 من الإجماع المتدرج، بالإضافة إلى الخاصية التالية 3′: إذا كان المرسل صادقًا، فإن vi = v و gi = 2 لجميع اللاعبين الشرفاء i. 9في الواقع، في البروتوكول الخاص بهم، في الخطوة 1، يرسل المرسل قيمته الخاصة v إلى جميع اللاعبين، وكل لاعب أسمح له v' أنا تتكون من القيمة التي تلقاها بالفعل من المرسل في الخطوة 1.3.6 البروتوكول BA⋆ نحن الآن نصف بروتوكول BA ذو القيمة التعسفية BA⋆عبر بروتوكول BA الثنائي BBA⋆و بروتوكول الإجماع المتدرج GC. أدناه، القيمة الأولية لكل لاعب i هي v′ أنا. البروتوكول ب⋆ الخطوتين 1 و2. كل لاعب i ينفذ GC، عند الإدخال v′ i، وذلك لحساب زوج (vi، gi). الخطوة 3، . . . يقوم كل لاعب بتنفيذ BBA⋆—مع الإدخال الأولي 0، إذا كان gi = 2، و1 بخلاف ذلك— لذا أما لحساب بت outi. تحديد الإخراج. كل لاعب يخرج i، إذا كان outi = 0، و\(\bot\)خلاف ذلك. نظرية 3.3. عندما يكون n \(\geq\)3t + 1، يكون BA⋆ عبارة عن بروتوكول (n, t)-BA مع سلامة 1. دليل. نثبت أولاً الاتساق، ثم الاتفاق. إثبات الاتساق. افترض أنه بالنسبة لبعض القيمة v \(\in\)V , v′ i = v. ثم، حسب الخاصية 3 من إجماع متدرج، بعد تنفيذ GC، يتم إخراج جميع اللاعبين الصادقين (الخامس، 2). وبناء على ذلك، 0 هو الجزء الأولي من جميع اللاعبين الصادقين في نهاية تنفيذ BBA⋆. وهكذا بموجب الاتفاقية خاصية الاتفاقية البيزنطية الثنائية، في نهاية تنفيذ BA⋆، outi = 0 لجميع الشرفاء اللاعبين. هذا يعني أن ناتج كل لاعب صادق i في BA⋆is vi = v. ✷ إثبات الاتفاق. نظرًا لأن BBA⋆ هو بروتوكول BA ثنائي أيضًا (أ) outi = 1 لجميع اللاعبين الشرفاء i، أو (ب) outi = 0 لجميع اللاعبين الشرفاء i. في الحالة أ، يخرج جميع اللاعبين الصادقين \(\bot\)in BA⋆، وبالتالي تظل الاتفاقية سارية. لننظر الآن في الحالة ب في هذه الحالة، في تنفيذ BBA⋆، البت الأولي للاعب صادق واحد على الأقل i هو 0. (في الواقع، إذا الجزء الأولي من جميع اللاعبين الصادقين كان 1، إذن، بواسطة خاصية الاتساق لـ BBA⋆، سيكون لدينا outj = 1 لجميع الصادقين j.) وفقًا لذلك، بعد تنفيذ GC، أقوم بإخراج الزوج (v، 2) للبعض القيمة v. وهكذا، حسب الخاصية 1 للإجماع المتدرج، gj > 0 لجميع اللاعبين الصادقين j. وبناء على ذلك، بواسطة الخاصية 2 للإجماع المتدرج، vj = v لجميع اللاعبين الصادقين j. وهذا يعني أنه في نهاية BA⋆، كل لاعب صادق j يخرج v. وبالتالي، تسري الاتفاقية أيضًا في الحالة B. ✷ وبما أن كلا من الاتساق والاتفاق ثابتان، فإن BA⋆ هو بروتوكول BA ذو قيمة تعسفية. ملاحظة تاريخية كان توربين وكوان أول من أظهر أنه بالنسبة لـ n \(\geq\)3t+1، فإن أي ثنائي (n, t) -BA يمكن تحويل البروتوكول إلى قيمة تعسفية (n، t) -بروتوكول BA. تخفيض القيمة التعسفية تعتبر الاتفاقية البيزنطية إلى الاتفاقية البيزنطية الثنائية عبر الإجماع المتدرج أكثر نمطية و أكثر نظافة، ويبسط تحليل بروتوكول Algorand Algorand ′. تعميم BA⋆للاستخدام في Algorand Algorand يعمل حتى عندما تكون جميع الاتصالات عبر النميمة. ومع ذلك، على الرغم من تقديمه في شبكة اتصالات تقليدية ومألوفة، إلا أنه لتمكين مقارنة أفضل مع التقنية السابقة وفهم أسهل، يعمل بروتوكول BA⋆works أيضا في شبكات النميمة. وفي الواقع، في تجسيداتنا التفصيلية لـ Algorand، سنقدمها مباشرة لشبكات النميمة. يجب أن نشير أيضًا إلى أنه يرضي إمكانية استبدال اللاعب الخاصية التي تعد ضرورية لـ Algorand لتكون آمنة في النموذج المتعارض للغاية.
يمكن أن يكون أي بروتوكول يمكن استبداله بواسطة مشغل BA يعمل في شبكة اتصالات ثرثرة يتم استخدامه بشكل آمن ضمن نظام Algorand المبتكر. على وجه الخصوص، ميكالي وفايكونثاناتان لقد قمنا بتوسيع BA للعمل بكفاءة كبيرة أيضًا مع أغلبية بسيطة من اللاعبين الشرفاء. ذلك يمكن أيضًا استخدام البروتوكول في Algorand.
Dua Perwujudan Algorand
Seperti yang telah dibahas, pada tingkat yang sangat tinggi, putaran Algorand idealnya berlangsung sebagai berikut. Pertama, secara acak pengguna yang dipilih, pemimpin, mengusulkan dan mengedarkan blok baru. (Proses ini mencakup awalnya memilih beberapa pemimpin potensial dan kemudian memastikan bahwa, setidaknya dalam jangka waktu tertentu, a muncul satu pemimpin yang sama.) Kedua, komite pengguna yang dipilih secara acak dipilih, dan mencapai persetujuan Bizantium mengenai blok yang diusulkan oleh pemimpinnya. (Proses ini mencakup itu setiap langkah protokol BA dijalankan oleh komite yang dipilih secara terpisah.) Blok yang disepakati kemudian ditandatangani secara digital oleh ambang batas (TH) tertentu dari anggota komite. Tanda tangan digital ini diedarkan sehingga semua orang yakin blok mana yang baru. (Ini termasuk mengedarkan kredensial penandatangan, dan hanya mengautentikasi hash blok baru, memastikan bahwa semua orang dijamin akan mempelajari blok tersebut, setelah hash-nya dibuat jelas.) Pada dua bagian berikutnya, kami menyajikan dua perwujudan dari Algorand, Algorand ′ 1 dan Algorand′ 2, yang bekerja berdasarkan asumsi mayoritas pengguna yang jujur. Di Bagian 8 kami menunjukkan cara menerapkan hal ini perwujudan untuk bekerja di bawah asumsi mayoritas uang yang jujur. Algorand' Saya hanya membayangkan > 2/3 anggota komite jujur. Selain itu, di Algorand' Pada tanggal 1 Januari, jumlah langkah untuk mencapai kesepakatan Bizantium dibatasi pada tingkat yang cukup tinggi nomor, sehingga kesepakatan dijamin akan dicapai dengan probabilitas yang sangat besar dalam a jumlah langkah yang tetap (tetapi mungkin memerlukan waktu lebih lama daripada langkah Algorand ′ 2). Di dalam hal yang jarang terjadi dimana kesepakatan belum tercapai pada langkah terakhir, panitia menyetujuinya blok kosong, yang selalu valid. Algorand ' 2 membayangkan bahwa jumlah anggota yang jujur dalam sebuah komite selalu lebih besar daripada atau sama dengan ambang batas tetap tH (yang menjamin hal tersebut, setidaknya dengan kemungkinan yang sangat besar 2/3 anggota panitia jujur). Selain itu, Algorand′ 2 mengizinkan persetujuan Bizantium untuk dicapai dalam sejumlah langkah yang berubah-ubah (tetapi berpotensi dalam waktu yang lebih singkat dari Algorand ′ 1). Sangat mudah untuk mendapatkan banyak varian dari perwujudan dasar ini. Khususnya, mudah, diberikan Algorand' 2, untuk mengubah Algorand ′ 1 sehingga memungkinkan tercapainya persetujuan Bizantium secara sewenang-wenang sejumlah langkah. Kedua perwujudan tersebut memiliki inti, notasi, gagasan, dan parameter yang sama. 4.1 Inti yang Sama Tujuan Idealnya, untuk setiap putaran r, Algorand akan memenuhi properti berikut: 1. Kebenaran Sempurna. Semua pengguna yang jujur menyetujui blok yang sama Br. 2. Kelengkapan 1. Dengan probabilitas 1, payset Br, PAY r, maksimal.10 10Karena payset didefinisikan berisi pembayaran yang valid, dan pengguna yang jujur hanya melakukan pembayaran yang valid, PAY r berisi pembayaran “yang terutang saat ini” dari semua pengguna yang jujur.Tentu saja, menjamin kebenaran yang sempurna adalah hal yang sepele: setiap orang selalu memilih pejabatnya payset PAY r menjadi kosong. Namun dalam kasus ini, sistem akan memiliki kelengkapan 0. Sayangnya, menjamin kebenaran dan kelengkapan yang sempurna 1 tidaklah mudah di hadapan pihak yang jahat pengguna. Algorand dengan demikian mengadopsi tujuan yang lebih realistis. Secara informal, h menunjukkan persentase dari pengguna yang jujur, h > 2/3, sasaran Algorand adalah Menjamin, dengan kemungkinan besar, kebenaran sempurna dan kelengkapan mendekati h. Mengutamakan kebenaran dibandingkan kelengkapan tampaknya merupakan pilihan yang masuk akal: pembayaran tidak diproses satu putaran dapat diproses pada putaran berikutnya, tetapi garpu harus dihindari, jika memungkinkan. Perjanjian Bizantium yang Dipimpin Kebenaran Sempurna dapat dijamin sebagai berikut. Pada awalnya putaran r, setiap pengguna i membuat blok kandidatnya sendiri Br i , dan kemudian semua pengguna mencapai Bizantium kesepakatan pada satu blok kandidat. Sesuai perkenalan kami, protokol BA yang digunakan memerlukan mayoritas jujur 2/3 dan pemain dapat diganti. Setiap langkahnya dapat dilakukan oleh yang kecil dan kumpulan verifikasi yang dipilih secara acak, yang tidak berbagi variabel dalam apa pun. Sayangnya, pendekatan ini tidak mempunyai jaminan kelengkapan. Hal ini terjadi karena kandidat blok pengguna yang jujur kemungkinan besar sangat berbeda satu sama lain. Jadi, pada akhirnya blok yang disepakati mungkin selalu merupakan blok dengan pembayaran tidak maksimal. Faktanya, hal itu mungkin selalu terjadi blok kosong, B\(\varepsilon\), yaitu blok yang pembayarannya kosong. jadilah default, yang kosong. Algorand ′ menghindari masalah kelengkapan ini sebagai berikut. Pertama, pemimpin putaran r, \(\ell\)r, dipilih. Kemudian, \(\ell\)r menyebarkan blok kandidatnya sendiri, Br \(\ell\)r. Akhirnya, pengguna mencapai kesepakatan tentang pemblokiran tersebut mereka sebenarnya menerima dari \(\ell\)r. Sebab, bilamana jujur, Kebenaran dan Kelengkapan Sempurna 1 keduanya memegang, Algorand ′ memastikan bahwa \(\ell\)r jujur dengan probabilitas mendekati h. (Ketika pemimpinnya adalah jahat, kami tidak peduli apakah blok yang disepakati adalah blok dengan pembayaran kosong. Bagaimanapun, a pemimpin jahat \(\ell\)r mungkin selalu memilih Br \(\ell\)r menjadi blok kosong, dan kemudian jujur menyebarkannya, sehingga memaksa pengguna yang jujur untuk menyetujui blok kosong tersebut.) Seleksi Pemimpin Pada Algorand, blok ke-r berbentuk Br = (r, PAY r, Qr, H(Br−1). Seperti telah disebutkan dalam pendahuluan, besaran Qr−1 dikonstruksikan secara cermat sehingga menjadi pada dasarnya tidak dapat dimanipulasi oleh Musuh kita yang sangat kuat. (Nanti di bagian ini, kita akan melakukannya memberikan beberapa intuisi tentang mengapa hal ini terjadi.) Pada awal putaran r, semua pengguna mengetahui blockchain sejauh ini, B0, . . . , Br−1, yang darinya mereka menyimpulkan himpunan pengguna dari setiap putaran sebelumnya: itu adalah, PK1, . . . , PKr−1. Pemimpin potensial pada putaran r adalah pengguna i sedemikian rupa .H SIGi r, 1, Qr−1 \(\leq\)p. Mari kami jelaskan. Perhatikan bahwa, karena kuantitas Qr−1 adalah bagian dari blok Br−1, dan yang mendasarinya skema tanda tangan memenuhi properti keunikan, SIGi r, 1, Qr−1 adalah string biner secara unik terkait dengan i dan r. Jadi, karena H adalah oracle acak, H SIGi r, 1, Qr−1 adalah 256-bit acak string panjang yang diasosiasikan secara unik ke i dan r. Simbol “.” di depan H SIGi r, 1, Qr−1 adalah titik desimal (dalam kasus kita, biner), sehingga ri \(\triangleq\).H SIGi r, 1, Qr−1 adalah ekspansi biner dari a nomor acak 256-bit antara 0 dan 1 yang dikaitkan secara unik ke i dan r. Jadi kemungkinannya ri kurang dari atau sama dengan p pada dasarnya adalah p. (Mekanisme seleksi calon pemimpin kami telah dilakukan terinspirasi oleh skema pembayaran mikro Micali dan Rivest [28].) Probabilitas p dipilih sehingga, dengan probabilitas yang sangat besar (yaitu, 1 −F), setidaknya ada satu pemverifikasi potensial adalah jujur. (Jika faktanya, p dipilih sebagai probabilitas terkecil.)Perhatikan bahwa, karena i adalah satu-satunya yang mampu menghitung tanda tangannya sendiri, maka hanya dia yang bisa menentukan apakah dia berpotensi menjadi pemverifikasi putaran 1. Namun, dengan mengungkapkan kredensialnya sendiri, \(\sigma\)r saya \(\triangleq\)SIGi r, 1, Qr−1 , saya dapat membuktikan kepada siapa pun sebagai pemverifikasi potensial putaran r. Pemimpin \(\ell\)r didefinisikan sebagai pemimpin potensial yang kredensial hashnya lebih kecil dari pemimpin hashed kredensial semua pemimpin potensial lainnya j: yaitu, H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s j ). Perhatikan bahwa, karena \(\ell\)r yang jahat mungkin tidak mengungkapkan kredensialnya, pemimpin putaran r yang benar mungkin mengungkapkan kredensialnya tidak pernah diketahui, dan, kecuali ada hubungan yang mustahil, \(\ell\)r memang satu-satunya pemimpin putaran r. Mari kita akhirnya mengemukakan detail terakhir namun penting: pengguna saya bisa menjadi pemimpin potensial (dan dengan demikian pemimpin) dari suatu putaran r hanya jika dia termasuk dalam sistem setidaknya selama k putaran. Ini menjamin non-manipulasi Qr dan semua kuantitas Q di masa depan. Bahkan, salah satu calon pemimpin sebenarnya akan menentukan Qr. Seleksi Verifikasi Setiap langkah s > 1 pada putaran r dieksekusi oleh sekelompok kecil verifier, SV r,s. Sekali lagi, setiap pemverifikasi i \(\in\)SV r,s dipilih secara acak di antara pengguna yang sudah berada dalam putaran k sistem sebelum r, dan lagi melalui kuantitas khusus Qr−1. Secara khusus, i \(\in\)PKr−k adalah pemverifikasi dalam SV r,s, jika .H SIGi r, s, Qr−1 \(\leq\)p′ . Sekali lagi, hanya saya yang tahu apakah dia anggota SV r,s, tapi kalau memang begitu, dia bisa membuktikannya dengan menunjukkan kredensialnya \(\sigma\)r,s saya \(\triangleq\)H(SIGi r, s, Qr−1 ). Pemverifikasi i \(\in\)SV r,s mengirimkan pesan, mr,s saya, di langkah s pada putaran r, dan pesan ini menyertakan kredensialnya \(\sigma\)r,s i , untuk mengaktifkan pemverifikasi f langkah sarang untuk mengenali Tuan itu, s saya adalah pesan langkah yang sah. Probabilitas p′ dipilih untuk memastikan bahwa, dalam SV r,s, membiarkan #good menjadi bilangan pengguna yang jujur dan #buruk jumlah pengguna yang jahat, dengan kemungkinan besar sebagai berikut dua kondisi berlaku. Untuk perwujudan Algorand′ 1: (1) #baik > 2 \(\cdot\) #buruk dan (2) #baik + 4 \(\cdot\) #buruk < 2n, dimana n adalah kardinalitas yang diharapkan dari SV r,s. Untuk perwujudan Algorand′ 2: (1) #baik > tH dan (2) #baik + 2#buruk < 2tH, dengan tH adalah ambang batas yang ditentukan. Kondisi ini menyiratkan bahwa, dengan probabilitas yang cukup tinggi, (a) pada langkah terakhir BA protokol, setidaknya akan ada sejumlah pemain jujur yang menandatangani blok baru secara digital Br, (b) hanya satu blok per putaran yang dapat memiliki jumlah tanda tangan yang diperlukan, dan (c) BA yang digunakan protokol memiliki (di setiap langkah) 2/3 mayoritas jujur yang disyaratkan. Mengklarifikasi Pembuatan Blok Jika pemimpin putaran r \(\ell\)r jujur, maka blok yang sesuai adalah dari bentuk Br = r, BAYAR r, SIG\(\ell\)r Qr−1 , H Br−1 , dimana payset PAY r maksimal. (ingatlah bahwa semua pembayaran, menurut definisi, sah secara kolektif.) Lain (yaitu, jika \(\ell\)r berbahaya), Br memiliki salah satu dari dua kemungkinan bentuk berikut: Br = r, BAYAR r, SIGi Qr−1 , H Br−1 dan Br = Br \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H Br−1 .Dalam bentuk pertama, PAY r adalah set pembayaran (yang belum tentu maksimal) dan dapat berupa PAY r = \(\emptyset\); dan aku adalah calon pemimpin putaran r. (Namun, saya mungkin bukan pemimpin \(\ell\)r. Hal ini mungkin terjadi jika \(\ell\)r merahasiakan kredensialnya dan tidak mengungkapkan dirinya.) Bentuk kedua muncul ketika, dalam pelaksanaan putaran-r protokol BA, semua pemain jujur menampilkan nilai default, yaitu blok kosong Br \(\varepsilon\) dalam aplikasi kita. (Menurut definisi, kemungkinan keluaran protokol BA menyertakan nilai default, yang secara umum dilambangkan dengan \(\bot\). Lihat bagian 3.2.) Perhatikan bahwa, meskipun payset kosong pada kedua kasus, Br = r, \(\emptyset\), SIGi Qr−1 , H Br−1 dan Sdr \(\varepsilon\) adalah blok yang berbeda secara sintaksis dan muncul dalam dua situasi berbeda: masing-masing, “semua berjalan cukup lancar dalam pelaksanaan protokol BA”, dan “ada yang tidak beres di protokol BA, dan nilai defaultnya adalah keluaran”. Sekarang mari kita jelaskan secara intuitif bagaimana pembangkitan blok Br berlangsung pada putaran r Algorand ′. Pada langkah pertama, setiap pemain yang memenuhi syarat, yaitu setiap pemain i \(\in\)PKr−k, memeriksa apakah dia berpotensi pemimpin. Jika hal ini terjadi, maka saya ditanya, menggunakan semua pembayaran yang telah dilihatnya sejauh ini, dan saat ini blockchain, B0, . . . , Br−1, untuk diam-diam menyiapkan set pembayaran maksimal, MEMBAYAR r aku, dan diam-diam merakit blok kandidatnya, Br = r, BAYAR r saya, SIGi Qr−1 , H Br−1 . Artinya, bukan hanya dia saja termasuk dalam Br i , sebagai komponen kedua dari pembayaran yang baru saja disiapkan, tetapi juga, sebagai komponen ketiga, tanda tangannya sendiri pada Qr−1, komponen ketiga dari blok terakhir, Br−1. Akhirnya, dia menyebarkan miliknya pesan putaran-r-langkah-1, tuan,1 i , yang meliputi (a) blok calonnya Br i , (b) tanda tangannya yang sebenarnya dari blok kandidatnya (yaitu, tanda tangannya pada hash dari Br i , dan (c) kredensialnya sendiri \(\sigma\)r,1 saya, membuktikan bahwa dia memang berpotensi menjadi pemverifikasi putaran r. (Perhatikan bahwa, sampai saya yang jujur menyampaikan pesannya, Tuan,1 saya, Musuh tidak tahu bahwa saya adalah a pemverifikasi potensial. Jika ia ingin merusak calon pemimpin yang jujur, maka Musuh juga akan melakukan hal yang sama pemain jujur acak yang korup. Namun, begitu dia melihat Tuan, 1 i , karena berisi kredensial i, maka Musuh mengetahui dan dapat merusak i, namun tidak dapat mencegah mr,1 i , yang disebarkan secara viral, dari menjangkau semua pengguna di sistem.) Pada langkah kedua, setiap verifikator terpilih j \(\in\)SV r,2 mencoba mengidentifikasi pemimpin putaran. Secara khusus, j mengambil kredensial langkah-1, \(\sigma\)r,1 saya1 , . . . , \(\sigma\)r,1 di , terkandung dalam pesan langkah-1 yang tepat mr,1 saya dia telah menerima; hashes semuanya, yaitu menghitung H \(\sigma\)r,1 i1 , . . . , H \(\sigma\)r,1 di ; menemukan kredensialnya, \(\sigma\)r,1 \(\ell\)j , yang hash minimum secara leksikografis; dan mempertimbangkan \(\ell\)r j menjadi pemimpin ronde r. Ingatlah bahwa setiap kredensial yang dipertimbangkan adalah tanda tangan digital dari Qr−1, yaitu SIGi r, 1, Qr−1 adalah ditentukan secara unik oleh i dan Qr−1, bahwa H acak oracle, dan dengan demikian setiap H(SIGi r, 1, Qr−1 adalah string acak sepanjang 256-bit yang unik untuk setiap calon pemimpin i pada putaran r. Dari sini kita dapat menyimpulkan bahwa, jika string 256-bit Qr−1 adalah dirinya sendiri secara acak dan independen dipilih, sehingga akan menjadi hash kredensial dari semua calon pemimpin putaran r. Faktanya, semuanya calon pemimpin sudah terdefinisi dengan baik, begitu pula kredensial mereka (baik yang benar-benar dihitung atau tidak). tidak). Selanjutnya, himpunan pemimpin potensial pada putaran r adalah himpunan bagian acak dari pengguna putaran r −k, dan calon pemimpin yang jujur saya selalu membangun dan menyebarkan pesannya dengan benar, Tuan saya , yang berisi kredensial saya. Jadi, karena persentase pengguna yang jujur adalah h, berapapun jumlahnya minimum yang mungkin dilakukan oleh calon pemimpin yang jahat (misalnya, mengungkapkan atau menyembunyikan kredensial mereka sendiri). hash kredensial calon pemimpin adalah milik pengguna yang jujur, yang harus diidentifikasi oleh semua orang menjadi pemimpin \(\ell\)r pada ronde r. Oleh karena itu, jika string 256-bit Qr−1 itu sendiri secara acak dan dipilih secara independen, dengan probabilitas tepat h (a) pemimpin \(\ell\)r jujur dan (b) \(\ell\)j = \(\ell\)r untuk semua verifikator langkah-2 yang jujur j. Pada kenyataannya, kredensial hashed, ya, dipilih secara acak, tetapi bergantung pada Qr−1, yaitutidak dipilih secara acak dan independen. Akan tetapi, kita akan membuktikan dalam analisis kita bahwa Qr−1 adalah cukup tidak dapat dimanipulasi untuk menjamin bahwa pemimpin suatu ronde jujur terhadap probabilitas h′ cukup dekat dengan h: yaitu, h′ > h2(1 + h −h2). Misalnya, jika h = 80%, maka h′ > 0,7424. Setelah mengidentifikasi pemimpin ronde (yang mereka lakukan dengan benar jika pemimpinnya jujur), tugas verifikasi langkah ke-2 adalah mulai melaksanakan BA dengan menggunakan nilai awal apa yang mereka yakini menjadi blok pemimpin. Sebenarnya, untuk meminimalkan jumlah komunikasi yang diperlukan, pemverifikasi j \(\in\)SV r,2 tidak menggunakan, sebagai nilai masukannya v′ j ke protokol Bizantium, blok Bj itu dia sebenarnya telah menerima dari \(\ell\)j (pengguna j diyakini sebagai pemimpin), tetapi pemimpinnya, tetapi hash dari blok itu, yaitu v′ j = H(Bi). Jadi, setelah penghentian protokol BA, verifikasi dari langkah terakhir jangan menghitung blok bulat-r yang diinginkan Br, tetapi hitung (otentikasi dan menyebarkan) H(Br). Oleh karena itu, karena H(Br) ditandatangani secara digital oleh cukup banyak verifikasi langkah terakhir dari protokol BA, pengguna dalam sistem akan menyadari bahwa H(Br) adalah hash dari yang baru blok. Namun, mereka juga harus mengambil (atau menunggu, karena eksekusinya cukup asinkron) tersebut blok Br itu sendiri, yang mana protokol memastikan bahwa memang tersedia, tidak peduli apa pun Musuhnya mungkin bisa dilakukan. Asinkroni dan Waktu Algorand' 1 dan Algorand′ 2 memiliki tingkat asinkroni yang signifikan. Hal ini dikarenakan Adversary mempunyai keleluasaan yang luas dalam menjadwalkan pengiriman pesan-pesan yang sedang dilakukannya disebarkan. Selain itu, apakah jumlah langkah dalam satu putaran dibatasi atau tidak, tetap ada varians dikontribusikan oleh jumlah langkah yang sebenarnya diambil. Begitu dia mempelajari sertifikat B0, . . . , Br−1, pengguna i menghitung Qr−1 dan mulai bekerja pada putaran r, memeriksa apakah dia calon pemimpin, atau pemverifikasi pada beberapa langkah s pada putaran r. Dengan asumsi bahwa saya harus bertindak pada langkah s, mengingat ketidaksinkronan yang dibahas, saya bergantung pada berbagai strategi untuk memastikan bahwa dia memiliki informasi yang cukup sebelum dia bertindak. Misalnya, dia mungkin menunggu untuk menerima setidaknya sejumlah pesan dari pemverifikasi langkah sebelumnya, atau tunggu waktu yang cukup untuk memastikan bahwa dia menerima pesan yang cukup banyak pemverifikasi dari langkah sebelumnya. Seed Qr dan Parameter Lihat-Kembali k Ingatlah bahwa, idealnya, besaran Qr seharusnya acak dan independen, meskipun cukup jika mereka tidak dapat dimanipulasi oleh Musuh. Sekilas, kita dapat memilih Qr−1 yang bertepatan dengan H MEMBAYAR r−1 , dan dengan demikian menghindari tentukan Qr−1 secara eksplisit di Br−1. Namun, analisis dasar mengungkapkan bahwa pengguna jahat mungkin saja melakukannya manfaatkan mekanisme seleksi ini.11 Beberapa upaya tambahan menunjukkan bahwa banyak sekali upaya lainnya 11Kita berada di awal ronde r −1. Jadi, Qr−2 = PAY r−2 diketahui publik, dan Musuh diketahui secara pribadi mengetahui siapa calon pemimpin yang ia kendalikan. Asumsikan bahwa Musuh mengendalikan 10% pengguna, dan bahwa, dengan probabilitas yang sangat tinggi, pengguna jahat w adalah calon pemimpin putaran r −1. Artinya, asumsikan itu H SIGw r −2, 1, Qr−2 Jumlahnya sangat kecil sehingga sangat kecil kemungkinannya calon pemimpin yang jujur akan menjadi pemimpin yang jujur pemimpin putaran r −1. (Ingatlah bahwa, karena kita memilih calon pemimpin melalui mekanisme penyortiran kriptografi rahasia, Musuh tidak tahu siapa calon pemimpin yang jujur.) Oleh karena itu, Musuh berada dalam posisi yang patut ditiru. posisi memilih payset PAY ′ yang diinginkannya, dan menjadikannya payset resmi pada putaran r −1. Namun, dia bisa berbuat lebih banyak. Dia juga dapat memastikan bahwa, dengan kemungkinan besar, () salah satu pengguna jahatnya akan menjadi pemimpinnya juga dari putaran r, sehingga dia dapat dengan bebas memilih berapa PAY rnya. (Dan seterusnya. Setidaknya untuk jangka waktu yang lama, yaitu, selama kejadian yang berpeluang tinggi tersebut benar-benar terjadi.) Untuk menjamin (), Musuh bertindak sebagai berikut. Biar BAYAR' menjadi pembayaran yang disukai Musuh untuk putaran r −1. Kemudian, dia menghitung H(PAY ′) dan memeriksa apakah, untuk beberapa hal pemain z yang sudah jahat, SIGz(r, 1, H(PAY ′)) sangat kecil, yaitu cukup kecil sehingga sangat tinggi probabilitas z akan menjadi pemimpin putaran r. Jika hal ini terjadi, maka dia menginstruksikan w untuk memilih blok kandidatnyaalternatif, berdasarkan jumlah blok tradisional mudah dieksploitasi oleh Musuh untuk memastikannya bahwa pemimpin yang jahat sangat sering terjadi. Kami malah mendefinisikan merek kami secara spesifik dan induktif kuantitas baru Qr sehingga dapat membuktikan bahwa ia tidak dapat dimanipulasi oleh Musuh. Yaitu, Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), jika Br bukan blok kosong, dan Qr \(\triangleq\)H(Qr−1, r) sebaliknya. Intuisi mengapa konstruksi Qr ini berhasil adalah sebagai berikut. Anggaplah sejenak demikian Qr−1 benar-benar dipilih secara acak dan independen. Lalu, apakah Qr juga demikian? Ketika \(\ell\)r jujur jawabannya adalah (secara kasar) ya. Hal ini terjadi karena H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256 adalah fungsi acak. Namun ketika \(\ell\)r berbahaya, Qr tidak lagi didefinisikan secara univokal dari Qr−1 dan \(\ell\)r. Setidaknya ada dua nilai terpisah untuk Qr. Satu tetap menjadi Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), dan yang lainnya adalah H(Qr−1, r). Pertama-tama mari kita berargumen bahwa, meskipun pilihan kedua agak sewenang-wenang, pilihan kedua mutlak wajib. Alasannya adalah bahwa orang jahat selalu dapat menyebabkan masalah kandidat blok yang benar-benar berbeda untuk diterima oleh pemverifikasi yang jujur pada langkah kedua.12 Sekali jika demikian, mudah untuk memastikan bahwa blok tersebut pada akhirnya disetujui melalui protokol BA putaran r akan menjadi putaran default, dan karenanya tidak akan berisi tanda tangan digital Qr−1 siapa pun. Tapi sistem harus terus berjalan, dan untuk itu diperlukan seorang pemimpin untuk putaran r. Jika pemimpin ini otomatis dan dipilih secara terbuka, maka Musuh akan merusaknya dengan sepele. Jika dipilih oleh sebelumnya Qr−1 melalui proses yang sama, maka \(\ell\)r akan kembali menjadi pemimpin di babak r+1. Kami secara khusus mengusulkan untuk menggunakan mekanisme penyortiran kriptografi rahasia yang sama, tetapi diterapkan pada kuantitas Q baru: yaitu, H(Qr−1, r). Dengan menjadikan kuantitas ini sebagai keluaran H menjamin bahwa keluarannya acak, dan dengan memasukkan r sebagai masukan kedua dari H, sementara semua penggunaan H lainnya memiliki satu atau 3+ masukan, “menjamin” bahwa Qr tersebut dipilih secara independen. Sekali lagi, pilihan khusus kami atas alternatif Qr tidak masalah, yang penting \(\ell\)r punya dua pilihan untuk Qr, sehingga dia bisa menggandakan peluangnya untuk memiliki pengguna jahat lainnya sebagai pemimpin berikutnya. Opsi untuk Qr bahkan mungkin lebih banyak bagi Musuh yang mengendalikan \(\ell\)r jahat. Misalnya, x, y, dan z adalah tiga pemimpin potensial yang berbahaya pada putaran r sedemikian rupa sehingga H \(\sigma\)r,1 x < H \(\sigma\)r,1 kamu < H \(\sigma\)r,1 z dan H \(\sigma\)r,1 z sangat kecil. Artinya, sangat kecil sehingga ada kemungkinan besar H \(\sigma\)r,1 z adalah lebih kecil dari kredensial hashed dari setiap calon pemimpin yang jujur. Kemudian, dengan meminta x untuk menyembunyikan miliknya kredensial, Musuh memiliki peluang bagus untuk membuat y menjadi pemimpin putaran r −1. Ini menyiratkan bahwa dia memiliki pilihan lain untuk Qr: yaitu SIGy Qr−1 . Demikian pula, Musuh mungkin minta x dan y untuk menahan kredensial mereka, agar z menjadi pemimpin putaran r −1 dan mendapatkan opsi lain untuk Qr: yaitu SIGz Qr−1 . Tentu saja, masing-masing opsi ini dan opsi lainnya mempunyai peluang gagal yang tidak nol, karena Musuh tidak dapat memprediksi hash tanda tangan digital calon pengguna yang jujur. Br−1 saya = (r −1, PAY ′, H(Br−2). Selain itu, dia memiliki dua pengguna jahat lainnya x dan y untuk terus menghasilkan pembayaran baru \(\wp\)′, dari satu ke yang lain, hingga, untuk beberapa pengguna jahat z (atau bahkan untuk beberapa pengguna tetap z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) adalah sangat kecil juga. Eksperimen ini akan berhenti dengan cepat. Dan ketika itu terjadi, Musuh meminta kami untuk melamar calon blok Br−1 saya = (r −1, BAYAR ′ \(\cup\){\(\wp\)}, H(Br−2). 12Misalnya, untuk membuatnya lebih sederhana (namun ekstrim), “ketika waktu langkah kedua hampir habis”, \(\ell\)r dapat langsung mengirimkan email ke kandidat blok Bi yang berbeda ke setiap pengguna i. Dengan cara ini, siapa pun pemverifikasi langkah ke-2, merekalah yang akan melakukan hal tersebut akan menerima blok yang sangat berbeda.Analisis yang cermat dan mirip rantai Markov menunjukkan hal itu, apa pun opsi yang dipilih Musuh untuk membuat pada putaran r −1, selama dia tidak dapat memasukkan pengguna baru ke dalam sistem, dia tidak dapat menguranginya probabilitas pengguna yang jujur menjadi pemimpin putaran r + 40 jauh di bawah h. Inilah alasannya yang kami minta agar calon pemimpin putaran r adalah pengguna yang sudah ada di putaran r −k. Ini adalah cara untuk memastikan bahwa, pada putaran r −k, Musuh tidak dapat mengubah kemungkinannya sebanyak itu pengguna yang jujur menjadi pemimpin putaran r. Faktanya, tidak peduli pengguna apa yang dia tambahkan ke dalamnya sistem di putaran r −k hingga r, mereka tidak memenuhi syarat untuk menjadi pemimpin potensial (dan a fortiori the pemimpin) putaran r. Jadi parameter lihat kembali k pada akhirnya adalah parameter keamanan. (Meskipun, seperti yang akan kita lihat di bagian 7, ini juga bisa menjadi semacam “parameter kenyamanan”.) Kunci Singkat Meskipun eksekusi protokol kami tidak dapat menghasilkan fork, kecuali dengan probabilitas yang dapat diabaikan, Musuh dapat menghasilkan percabangan, di blok ke-r, setelah blok sah blok r telah dibuat. Secara kasar, setelah Br dihasilkan, Musuh telah mengetahui siapa yang melakukan verifikasi pada setiap langkah dari putaran r adalah. Oleh karena itu, ia dapat merusak semuanya dan mewajibkan mereka untuk mengesahkan blok baru f Sdr. Karena blok palsu ini mungkin disebarkan hanya setelah yang sah, pengguna yang telah melakukannya memperhatikan tidak akan tertipu.13 Meskipun demikian, f Br secara sintaksis benar dan kami ingin dicegah agar tidak diproduksi. Kami melakukannya melalui aturan baru. Pada dasarnya, anggota verifikasi menetapkan SV r,s dari suatu langkah s putaran r menggunakan kunci publik sementara pkr,s saya untuk menandatangani pesan mereka secara digital. Kunci ini hanya sekali pakai dan kunci rahasianya adalah skr,s saya hancur setelah digunakan. Dengan cara ini, jika ada pemverifikasi kemudian dirusak, Musuh tidak dapat memaksanya untuk menandatangani apa pun yang tidak ia tandatangani pada awalnya. Tentu saja, kita harus memastikan bahwa Musuh tidak mungkin menghitung kunci baru g pr,s saya dan meyakinkan pengguna yang jujur bahwa ini adalah kunci pemverifikasi i \(\in\)SV r,s yang tepat untuk digunakan pada langkah s. 4.2 Ringkasan Umum Notasi, Pengertian, dan Parameter Notasi • r \(\geq\)0: bilangan bulat saat ini. • s \(\geq\)1: nomor langkah saat ini pada putaran r. • Br: blok yang dihasilkan pada putaran r. • PKr: himpunan kunci publik pada akhir putaran r −1 dan pada awal putaran r. • Sr: status sistem pada akhir putaran r −1 dan awal putaran r.14 • PAY r : payset yang terdapat pada Br. • \(\ell\)r: pemimpin putaran-r. \(\ell\)r memilih payset PAY r pada putaran r (dan menentukan Qr berikutnya). • Qr: benih dari putaran r, suatu kuantitas (yaitu, string biner) yang dihasilkan pada akhir putaran r dan digunakan untuk memilih pemverifikasi untuk putaran r + 1. Qr tidak bergantung pada pembayaran di blok dan tidak dapat dimanipulasi oleh \(\ell\)r. 13Pertimbangkan untuk merusak pembawa berita di jaringan TV besar, dan memproduksi serta menyiarkan film berita hari ini menunjukkan Menteri Clinton memenangkan pemilihan presiden terakhir. Sebagian besar dari kita akan mengenalinya sebagai tipuan. Tapi seseorang yang baru sadar dari koma mungkin akan tertipu. 14Dalam sistem yang tidak sinkron, pengertian “akhir putaran r −1” dan “awal putaran r” perlu didefinisikan secara hati-hati. Secara matematis, PKr dan Sr dihitung dari status awal S0 dan blok-bloknya B1, . . . , Br−1.• SV r,s: himpunan pemverifikasi yang dipilih untuk langkah s pada putaran r. • SV r: himpunan verifikasi yang dipilih untuk putaran r, SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s dan HSV r,s: masing-masing, himpunan verifier yang jahat dan himpunan verifier yang jujur dalam SV r, s. MSV r,s \(\cup\)HSV r,s = SV r,s dan MSV r,s ∩HSV r,s = \(\emptyset\). • n1 \(\in\)Z+ dan n \(\in\)Z+: masing-masing, jumlah calon pemimpin yang diharapkan di setiap SV r,1, dan jumlah verifikator yang diharapkan dalam setiap SV r,s, untuk s > 1. Perhatikan bahwa n1 << n, karena kita membutuhkan setidaknya satu anggota jujur yang jujur di SV r,1, tapi setidaknya mayoritas anggota jujur di setiap SV r,s untuk s > 1. • h \(\in\)(0, 1): konstanta yang lebih besar dari 2/3. h adalah rasio kejujuran dalam sistem. Artinya, itu sebagian kecil dari pengguna jujur atau uang jujur, tergantung asumsi yang digunakan, dalam setiap PKr setidaknya h. • H: fungsi kriptografi hash, dimodelkan sebagai oracle acak. • \(\bot\): String khusus yang panjangnya sama dengan keluaran H. • F \(\in\)(0, 1): parameter yang menentukan probabilitas kesalahan yang diperbolehkan. Probabilitas \(\leq\)F adalah dianggap “dapat diabaikan”, dan probabilitas \(\geq\)1 −F dianggap “luar biasa”. • ph \(\in\)(0, 1): probabilitas bahwa pemimpin suatu ronde r, \(\ell\)r, adalah jujur. Idealnya ph = h. Dengan adanya Adversary maka nilai ph akan ditentukan dalam analisa. • k \(\in\)Z+: parameter lihat kembali. Artinya, putaran r −k adalah tempat pemverifikasi putaran r berada dipilih dari —yakni, SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): untuk langkah pertama putaran r, pengguna pada putaran r −k dipilih berada di SV r,1 dengan probabilitas p1 \(\triangleq\) n1 |P Kr−k|. • p \(\in\)(0, 1): untuk setiap langkah s > 1 pada putaran r, pengguna pada putaran r −k dipilih untuk berada dalam SV r,s dengan probabilitas p \(\triangleq\) n |P Kr−k|. • CERT r : sertifikat untuk Br. Ini adalah satu set tanda tangan H(Br) dari verifier yang tepat di putaran r. • Br \(\triangleq\)(Br, CERT r) merupakan blok terbukti. Seorang pengguna saya mengenal Br jika dia memiliki (dan berhasil memverifikasi) kedua bagian dari blok yang terbukti. Perhatikan bahwa CERT yang dilihat oleh pengguna yang berbeda mungkin berbeda. • τ r i : waktu (lokal) dimana pengguna yang saya kenal Br. Dalam protokol Algorand, setiap pengguna memiliki miliknya sendiri jam sendiri. Jam pengguna yang berbeda tidak perlu disinkronkan, namun harus memiliki kecepatan yang sama. Hanya untuk tujuan analisis, kami mempertimbangkan jam referensi dan mengukur kinerja para pemain. waktu terkait sehubungan dengan itu. • \(\alpha\)r,s saya dan \(\beta\)r,s i : masing-masing waktu (lokal) pengguna i memulai dan mengakhiri eksekusi Langkah s-nya putaran r. • Λ dan \(\lambda\): pada dasarnya, batas atas, masing-masing, waktu yang dibutuhkan untuk melaksanakan Langkah 1 dan waktu yang diperlukan untuk setiap langkah lain dari protokol Algorand. Parameter Λ membatasi waktu untuk menyebarkan satu blok 1MB. (Dalam notasi kami, Λ = \(\lambda\) \(\rho\),1 MB. Mengingat notasi kita, yang kita tetapkan \(\rho\) = 1 untuk kesederhanaan, dan bloknya adalah dipilih dengan panjang paling banyak 1MB, kita mempunyai Λ = \(\lambda\)1,1,1MB.) 15Sebenarnya, “r −k” seharusnya adalah “maks{0, r −k}”.Parameter \(\lambda\) melampaui waktu untuk menyebarkan satu pesan kecil per pemverifikasi dalam Langkah s > 1. (Menggunakan, seperti pada Bitcoin, tanda tangan kurva elips dengan kunci 32B, panjang pesan verifikasi adalah 200B. Jadi, dalam notasi kita, \(\lambda\) = \(\lambda\)n,\(\rho\),200B.) Kami berasumsi bahwa Λ = O(\(\lambda\)). Gagasan • Pemilihan verifikasi. Untuk setiap putaran r dan langkah s > 1, SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p}. Masing-masing pengguna i \(\in\)PKr−k secara pribadi menghitung tanda tangannya menggunakan kunci jangka panjangnya dan memutuskan apakah i \(\in\)SV r,s atau tidak. Jika i \(\in\)SV r,s, maka SIGi(r, s, Qr−1) adalah kredensial i (r, s), dilambangkan secara kompak oleh \(\sigma\)r,s saya. Untuk langkah pertama putaran r, SV r,1 dan \(\sigma\)r,1 saya didefinisikan dengan cara yang sama, dengan p digantikan oleh p1. Itu penguji di SV r,1 adalah pemimpin potensial. • Pemilihan pemimpin. Pengguna i \(\in\)SV r,1 adalah pemimpin putaran r, dilambangkan dengan \(\ell\)r, jika H(\(\sigma\)r,1 saya ) \(\leq\)H(\(\sigma\)r,1 j ) untuk semua potensi pemimpin j \(\in\)SV r,1. Kapan pun hashes dari kredensial dua pemain dibandingkan, kemungkinannya kecil jika terjadi ikatan, protokol selalu memutus ikatan secara leksikografis menurut (publik jangka panjang kunci dari) calon pemimpin. Berdasarkan definisi, nilai hash kredensial pemain \(\ell\)r juga merupakan yang terkecil di antara semua pengguna di PKr−k. Perhatikan bahwa seorang calon pemimpin tidak dapat secara pribadi memutuskan apakah dia seorang pemimpin atau bukan, tanpa melihat kredibilitas calon pemimpin lainnya. Karena nilai hash seragam secara acak, ketika SV r,1 tidak kosong, \(\ell\)r selalu ada dan jujur dengan probabilitas minimal h. Parameter n1 cukup besar untuk memastikan bahwa masing-masing SV r,1 tidak kosong dengan kemungkinan yang sangat besar. • Struktur blok. Balok tak kosong berbentuk Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)), dan balok kosong berbentuk Br ǫ = (r, \(\emptyset\), Qr−1, H(Br−1)). Perhatikan bahwa blok yang tidak kosong mungkin masih berisi set pembayaran kosong PAY r, jika tidak ada pembayaran yang dilakukan babak ini atau jika pemimpinnya jahat. Namun, blok yang tidak kosong menyiratkan bahwa identitas \(\ell\)r, kredensialnya \(\sigma\)r,1 \(\ell\)r dan SIG\(\ell\)r(Qr−1) semuanya telah terungkap tepat waktu. Protokol menjamin bahwa, jika pemimpinnya jujur, maka blok tersebut tidak akan kosong dengan kemungkinan yang sangat besar. • Benih Qr. Jika Br tidak kosong, maka Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), jika tidak Qr \(\triangleq\)H(Qr−1, r). Parameter • Hubungan antara berbagai parameter. — Pengukur dan calon pemimpin putaran r dipilih dari pengguna di PKr−k, dimana k dipilih sehingga Musuh tidak dapat memprediksi Qr−1 kembali pada putaran r −k −1 dengan probabilitas lebih baik daripada F: jika tidak, ia akan dapat memperkenalkan pengguna jahat untuk putaran r −k, yang semuanya akan menjadi pemimpin/pengukur potensial pada putaran r, yang berhasil
memiliki pemimpin yang jahat atau mayoritas yang jahat di SV r,s untuk beberapa langkah yang diinginkan oleh dia. — Untuk Langkah 1 setiap putaran r, n1 dipilih sehingga dengan probabilitas yang sangat besar, SV r,1 ̸= \(\emptyset\). • Contoh pilihan parameter penting. — Output H panjangnya 256-bit. — jam = 80%, n1 = 35. — Λ = 1 menit dan \(\lambda\) = 10 detik. • Inisialisasi protokol. Protokol dimulai pada waktu 0 dengan r = 0. Karena tidak ada “B−1” atau “CERT −1”, secara sintaksis B−1 adalah parameter publik dengan komponen ketiganya menentukan Q−1, dan semua pengguna mengetahui B−1 pada waktu 0.
نموذجان من Algorand
كما تمت مناقشته، على مستوى عالٍ جدًا، تستمر جولة Algorand بشكل مثالي على النحو التالي. أولا، بشكل عشوائي يقوم المستخدم المحدد، القائد، باقتراح وتعميم كتلة جديدة. (تتضمن هذه العملية في البداية اختيار عدد قليل من القادة المحتملين ثم التأكد من ذلك، على الأقل لجزء كبير من الوقت، أ يظهر قائد مشترك واحد.) ثانيًا، يتم اختيار لجنة من المستخدمين يتم اختيارها عشوائيًا، و يصل إلى اتفاق بيزنطي بشأن الكتلة التي اقترحها القائد. (وتتضمن هذه العملية ذلك يتم تشغيل كل خطوة من بروتوكول مكتبة الإسكندرية من قبل لجنة مختارة بشكل منفصل.) الكتلة المتفق عليها ثم يتم توقيعها رقميًا بواسطة عتبة معينة (TH) من أعضاء اللجنة. هذه التوقيعات الرقمية ويتم تعميمها حتى يطمئن الجميع على ما هي الكتلة الجديدة. (وهذا يشمل تعميم بيانات اعتماد الموقعين، والمصادقة فقط على hash للكتلة الجديدة، مما يضمن أن الجميع من المؤكد أن تتعلم الكتلة، بمجرد توضيح hash.) في القسمين التاليين نقدم نموذجين لـ Algorand، Algorand ′ 1 و Algorand ′ 2, التي تعمل في ظل افتراض غالبية المستخدمين الصادقين. في القسم 8 نبين كيفية اعتماد هذه تجسيدات للعمل في ظل افتراض الأغلبية الصادقة من المال. Algorand ′ 1 يتصور فقط أن أكثر من 2/3 من أعضاء اللجنة صادقون. بالإضافة إلى ذلك، في Algorand ′ 1، تم تحديد عدد الخطوات للتوصل إلى الاتفاق البيزنطي عند مستوى مرتفع مناسب الرقم، بحيث يتم ضمان التوصل إلى هذا الاتفاق باحتمالية ساحقة خلال فترة عدد ثابت من الخطوات (ولكن من المحتمل أن يتطلب وقتًا أطول من خطوات Algorand ′) 2). في الحالة البعيدة التي لم يتم فيها التوصل بعد إلى اتفاق بشأن الخطوة الأخيرة، توافق اللجنة على كتلة فارغة، وهي صالحة دائمًا. Algorand ′ 2 يتصور أن عدد الأعضاء الشرفاء في اللجنة يكون دائمًا أكبر من أو يساوي عتبة ثابتة tH (والتي تضمن ذلك، مع احتمال كبير، على الأقل 2/3 أعضاء اللجنة صادقون). بالإضافة إلى ذلك، Algorand ′ 2 ـ يسمح بالموافقة البيزنطية على يمكن الوصول إليه في عدد عشوائي من الخطوات (ولكن من المحتمل أن يكون في وقت أقصر من Algorand ′) 1). من السهل استخلاص العديد من المتغيرات لهذه النماذج الأساسية. على وجه الخصوص، فمن السهل، نظرا Algorand ′ 2، لتعديل Algorand ′ 1 ـ حتى يتمكن البيزنطيون من التوصل إلى اتفاق تعسفي عدد الخطوات. يشترك كلا النموذجين في الجوهر المشترك التالي، والرموز، والمفاهيم، والمعلمات. 4.1 جوهر مشترك الأهداف من الناحية المثالية، لكل جولة r، Algorand سوف تلبي الخصائص التالية: 1. الصواب التام. يتفق جميع المستخدمين الصادقين على نفس الكتلة Br. 2. الاكتمال 1. مع الاحتمال 1، تكون مجموعة الدفعات Br، PAY r، هي الحد الأقصى.10 10 نظرًا لأن مجموعات الدفع مصممة بحيث تحتوي على مدفوعات صالحة، والمستخدمين الصادقين يقومون بإجراء مدفوعات صالحة فقط، وهو الحد الأقصى يحتوي PAY r على المدفوعات "المستحقة حاليًا" لجميع المستخدمين الصادقين.وبطبيعة الحال، فإن ضمان الصحة الكاملة وحده أمر تافه: فالجميع يختار دائمًا المسؤول payset PAY r لتكون فارغة. ولكن في هذه الحالة، سيكون للنظام اكتمال 0. لسوء الحظ، إن ضمان الصحة الكاملة والكمال 1 ليس بالأمر السهل في ظل وجود البرامج الخبيثة المستخدمين. Algorand وبالتالي يتبنى هدفًا أكثر واقعية. بشكل غير رسمي، ترك h يدل على النسبة المئوية من المستخدمين الصادقين، h > 2/3، الهدف من Algorand هو ضمان، مع احتمالية ساحقة، صحة واكتمال تام بالقرب من ح. ويبدو أن تفضيل الصحة على الاكتمال هو خيار معقول: فالمدفوعات لا تتم معالجتها يمكن معالجة جولة واحدة في الجولة التالية، ولكن ينبغي تجنب الشوكات، إن أمكن. الاتفاق البيزنطي بقيادة يمكن ضمان الصحة المثالية على النحو التالي. في البداية من الجولة r، يقوم كل مستخدم ببناء الكتلة المرشحة الخاصة به Br i، ثم يصل جميع المستخدمين إلى البيزنطية الاتفاق على كتلة مرشح واحد. وفقا لمقدمتنا، يتطلب بروتوكول مكتبة الإسكندرية المستخدمة أغلبية صادقة بنسبة 2/3 ويمكن استبدال اللاعب. يمكن تنفيذ كل خطوة من خطواتها بواسطة صغيرة و مجموعة مختارة عشوائياً من المدققين، الذين لا يشتركون في أي متغيرات داخلية. لسوء الحظ، هذا النهج ليس لديه ضمانات الاكتمال. هذا هو الحال، لأن المرشح من المرجح أن تكون كتل المستخدمين الصادقين مختلفة تمامًا عن بعضها البعض. وهكذا في نهاية المطاف قد تكون الكتلة المتفق عليها دائمًا ذات مجموعة دفعات غير الحد الأقصى. في الواقع، قد يكون دائما الكتلة الفارغة، B\(\varepsilon\)، أي الكتلة التي تكون مجموعة دفعاتها فارغة. حسنا يكون الافتراضي، واحد فارغ. Algorand ′ يتجنب مشكلة الاكتمال هذه على النحو التالي. أولاً، يتم تحديد القائد للجولة r، \(\ell\)r. بعد ذلك، يقوم \(\ell\)r بنشر كتلة مرشحه، Br \(\ell\)ص. وأخيرًا، يتوصل المستخدمون إلى اتفاق بشأن الحظر يتلقون فعلا من \(\ell\)r. لأنه كلما كان \(\ell\)r صادقًا، كان الصواب والكمال 1 كلاهما يحمل، Algorand ′ يضمن أن \(\ell\)r صادق مع احتمال قريب من h. ( عندما يكون القائد ضارة، لا يهمنا ما إذا كانت الكتلة المتفق عليها تحتوي على مجموعة دفع فارغة. بعد كل شيء، أ قد يختار القائد الخبيث \(\ell\)r دائمًا Br بشكل ضار \(\ell\)ص أن تكون كتلة فارغة، ثم بصراحة نشرها، وبالتالي إجبار المستخدمين الصادقين على الموافقة على الكتلة الفارغة.) اختيار القائد في Algorand's، تكون الكتلة r على الشكل Br = (r, PAY r, Qr, H(Br−1). كما ذكرنا سابقًا في المقدمة، تم تصميم الكمية Qr−1 بعناية بحيث تكون كذلك بشكل أساسي غير قابل للتلاعب من قبل خصمنا القوي للغاية. (سنأتي لاحقًا في هذا القسم قدم بعض الحدس حول سبب حدوث ذلك.) في بداية الجولة r، يعرف جميع المستخدمين blockchain حتى الآن، B0، . . . ، Br−1، والتي يستنتجون منها مجموعة المستخدمين في كل جولة سابقة: ذلك هو، PK1، . . . ، PKr−1. القائد المحتمل للجولة r هو مستخدم من هذا القبيل .ح سيجي ص، 1، Qr−1 \(\geq\)ص . دعونا نشرح. لاحظ أنه بما أن الكمية Qr−1 هي جزء من الكتلة Br−1 والجزء الأساسي منها مخطط التوقيع يلبي خاصية التفرد، SIGi ص، 1، Qr−1 هي سلسلة ثنائية بشكل فريد المرتبطة ط و ص. وبالتالي، نظرًا لأن H عشوائي oracle، فإن H سيجي ص، 1، Qr−1 هو عشوائي 256 بت سلسلة طويلة مرتبطة بشكل فريد بـ i وr. الرمز "." أمام ح سيجي ص، 1، Qr−1 هو النقطة العشرية (في حالتنا، ثنائية)، بحيث تكون ri \(\triangleq\).H سيجي ص، 1، Qr−1 هو التوسع الثنائي ل رقم عشوائي 256 بت بين 0 و1 يرتبط بشكل فريد بـ i وr. وبالتالي احتمال ذلك ri أقل من أو يساوي p هو في الأساس p. (كانت آلية اختيار القائد المحتمل لدينا هي: مستوحاة من نظام الدفع الصغير لـ Micali وRivest [28].) يتم اختيار الاحتمال p بحيث يكون احتمال واحد على الأقل، مع احتمال ساحق (أي 1 −F). المدقق المحتمل صادق. (إذا كانت الحقيقة، فقد تم اختيار p ليكون أصغر احتمال من هذا القبيل.)لاحظ أنه بما أنني الشخص الوحيد القادر على حساب توقيعاته، فهو وحده يستطيع ذلك تحديد ما إذا كان هو المدقق المحتمل للجولة الأولى. ومع ذلك، من خلال الكشف عن أوراق اعتماده، ص أنا \(\triangleq\)SIGI ص، 1، Qr−1 ، يمكنني أن أثبت لأي شخص أنه متحقق محتمل من الجولة r. يتم تعريف القائد \(\ell\)r على أنه القائد المحتمل الذي تكون مؤهلاته __PH_0003__ed أصغر من hashed بيانات الاعتماد لجميع القادة المحتملين الآخرين j: أي H(\(\sigma\)r,s) \(\ell\)r ) \(\geq\)H(\(\sigma\)r,s ي). لاحظ أنه نظرًا لأن \(\ell\)r الخبيث قد لا يكشف عن بيانات اعتماده، فإن القائد الصحيح للجولة r قد يفعل ذلك لا يُعرف أبدًا، وذلك باستثناء العلاقات غير المحتملة، \(\ell\)r هو بالفعل القائد الوحيد للجولة r. دعونا أخيرًا نطرح تفصيلًا أخيرًا ولكنه مهم: يمكن للمستخدم أن يكون قائدًا محتملاً (وبالتالي القائد) للجولة r فقط إذا كان ينتمي إلى النظام لمدة k على الأقل. هذا يضمن عدم القدرة على التلاعب بـ Qr وجميع كميات Q المستقبلية. في الواقع، أحد القادة المحتملين سيحدد في الواقع ريال قطري. اختيار المدقق يتم تنفيذ كل خطوة s > 1 من الجولة r بواسطة مجموعة صغيرة من أدوات التحقق، SV r,s. مرة أخرى، يتم اختيار كل مدقق i \(\in\)SV r,s بشكل عشوائي من بين المستخدمين الموجودين بالفعل في جولات النظام k قبل r، ومرة أخرى عبر الكمية الخاصة Qr−1. على وجه التحديد، i \(\in\)PKr−k هو أداة التحقق في SV r,s، إذا .ح سيجي ص، ق، Qr−1 \(\geq\)ص' . مرة أخرى، أنا الوحيد الذي يعرف ما إذا كان ينتمي إلى SV r,s، ولكن إذا كان هذا هو الحال، فيمكنه إثبات ذلك عن طريق عرض أوراق اعتماده \(\sigma\)r،s أنا \(\triangleq\)H(سيجي ص، ق، Qr−1 ). يرسل المدقق i \(\in\)SV r,s رسالة، يا سيد، s أنا، في الخطوات s من الجولة r، وتتضمن هذه الرسالة بيانات اعتماده \(\sigma\)r,s i، وذلك لتمكين القائمين على التحقق من خطوة العش للتعرف على أن السيد، ق أنا هي رسالة مشروعة. يتم اختيار الاحتمالية p′ للتأكد من أنه في SV r,s، يكون #good هو عدد عدد المستخدمين الصادقين وعدد المستخدمين الضارين #سيء، مع احتمال كبير بما يلي عقد شرطين. للتجسيد Algorand ′ 1: (1) #جيد > 2 \(\cdot\) #سيء و (2) #جيد + 4 \(\cdot\) #سيئ < 2n، حيث n هي العلاقة الأساسية المتوقعة لـ SV r,s. للتجسيد Algorand ′ 2: (١) #حسن > ث و (2) #جيد + 2#سيئ <2tH، حيث tH هو عتبة محددة. تشير هذه الشروط إلى أنه، مع وجود احتمالية عالية بما فيه الكفاية، (أ) في الخطوة الأخيرة من مكتبة الإسكندرية البروتوكول، سيكون هناك على الأقل عدد محدد من اللاعبين الشرفاء للتوقيع رقميًا على الكتلة الجديدة Br، (ب) يجوز أن تحتوي كتلة واحدة فقط في كل جولة على العدد اللازم من التوقيعات، و(ج) شهادة البكالوريوس المستخدمة يتمتع البروتوكول (في كل خطوة) بالأغلبية الصادقة المطلوبة بنسبة 2/3. توضيح إنشاء الكتلة إذا كان زعيم الجولة r \(\ell\)r صادقًا، فإن الكتلة المقابلة هو من النموذج ر = ص، دفع ص، SIG\(\ell\)r Qr−1 ، ح ر−1 , حيث يكون payset PAY r هو الحد الأقصى. (تذكر أن جميع مجموعات الدفع، بحكم تعريفها، صالحة بشكل جماعي.) بخلاف ذلك (أي إذا كان \(\ell\)r ضارًا)، فإن Br له أحد الشكلين المحتملين التاليين: ر = ص، دفع ص، سيجي ريال قطري−1 ، ح ر−1 و ر = ر \(\varepsilon\) \(\triangleq\) ص، \(\emptyset\)، Qr−1، H ر−1 .في النموذج الأول، PAY r عبارة عن مجموعة رواتب (غير ضرورية الحد الأقصى) وقد تكون PAY r = \(\emptyset\)؛ وأنا كذلك زعيم محتمل للجولة ص. (ومع ذلك، قد لا أكون القائد. قد يحدث هذا بالفعل إذا \(\ell\)r يخفي أوراق اعتماده ولا يكشف عن نفسه.) ينشأ النموذج الثاني عندما يكون جميع اللاعبين الشرفاء في التنفيذ الدائري لبروتوكول BA إخراج القيمة الافتراضية، وهي الكتلة الفارغة Br \(\varepsilon\) في طلبنا. (بالتعريف: الممكن تشتمل مخرجات بروتوكول BA على قيمة افتراضية، يُشار إليها عمومًا بالرمز \(\bot\). انظر القسم 3.2.) لاحظ أنه على الرغم من أن مجموعات الدفع فارغة في كلتا الحالتين، فإن Br = ص، \(\emptyset\)، سيجي ريال قطري−1 ، ح ر−1 و ر \(\varepsilon\) عبارة عن كتل مختلفة نحويًا وتنشأ في حالتين مختلفتين: على التوالي، "جميع" سارت الأمور بسلاسة كافية في تنفيذ بروتوكول مكتبة الإسكندرية"، و"حدث خطأ ما في بروتوكول BA، وكانت القيمة الافتراضية هي الإخراج". دعونا الآن نصف بشكل حدسي كيف يستمر توليد الكتلة Br في الجولة r من Algorand ′. في الخطوة الأولى، يقوم كل لاعب مؤهل، أي كل لاعب i \(\in\)PKr−k، بالتحقق مما إذا كان لاعبًا محتملاً زعيم. إذا كان هذا هو الحال، فسيتم سؤالي باستخدام جميع المدفوعات التي شاهدها حتى الآن، و الحالي blockchain، B0، . . . ، Br−1، لإعداد مجموعة الدفع القصوى سرًا، PAY r أنا، وسرا يجمع كتلة مرشحه، Br = ص، دفع ص أنا، سيجي ريال قطري−1 ، ح ر−1 . أي أنه لا يفعل ذلك فقط تضمين في ر أنا، باعتباره المكون الثاني، مجموعة الرواتب التي تم إعدادها للتو، ولكن أيضًا، باعتباره المكون الثالث، توقيعه الخاص لـ Qr−1، المكون الثالث للكتلة الأخيرة، Br−1. وأخيرا، نشر له رسالة مستديرة ص-خطوة-1، السيد،1 i، والذي يتضمن (أ) مرشحه كتلة Br ط، (ب) توقيعه الصحيح من كتلة مرشحه (أي توقيعه على hash من الأخ i و (ج) أوراق اعتماده \(\sigma\)r,1 أنا، إثبات أنه بالفعل متحقق محتمل من الجولة r. (لاحظ أنه حتى يصدر الصادق رسالته السيد 1 أنا، الخصم ليس لديه أدنى فكرة عن أنني المدقق المحتمل إذا كان يرغب في إفساد القادة المحتملين الصادقين، فقد يفعل الخصم ذلك أيضًا لاعبين نزيهين عشوائيين فاسدين. ومع ذلك، بمجرد أن يرى السيد،1 i، نظرًا لأنه يحتوي على بيانات الاعتماد الخاصة بي، فإن الخصم يعرف ويمكنه إفساد أنا، لكنه لا يستطيع منع السيد،1 أنا، والذي يتم نشره فيروسيًا، من الوصول إلى جميع المستخدمين في النظام.) في الخطوة الثانية، يحاول كل مدقق محدد j \(\in\)SV r,2 تحديد قائد الجولة. على وجه التحديد، يأخذ j بيانات اعتماد الخطوة 1، \(\sigma\)r,1 i1،. . . ، ص،1 في ، الواردة في رسالة الخطوة 1 المناسبة السيد،1 أنا لقد نال؛ hashes جميعها، أي أنها تحسب H ص،1 i1 ، . . . ، ح ص،1 في ; يجد أوراق الاعتماد، ص،1 \(\ell\)j ، الذي hash هو الحد الأدنى المعجمي؛ ويعتبر \(\ell\)r j ليكون قائد الجولة r. تذكر أن كل بيانات اعتماد تعتبر بمثابة توقيع رقمي لـ Qr−1، وهو SIGi ص، 1، Qr−1 هو يتم تحديده بشكل فريد بواسطة i وQr−1، وأن H عشوائي oracle، وبالتالي فإن كل H(SIGi ص، 1، Qr−1 عبارة عن سلسلة عشوائية طويلة بطول 256 بت فريدة لكل قائد محتمل i للجولة r. من هذا يمكننا أن نستنتج أنه إذا كانت السلسلة ذات 256 بت Qr−1 نفسها عشوائية ومستقلة المحدد، وبالتالي ستكون أوراق اعتماد hashed لجميع القادة المحتملين للجولة r. في الواقع، كل شيء فالقادة المحتملون محددون جيدًا، وكذلك مؤهلاتهم (سواء كانت محسوبة فعليًا أو محسوبة). لا). علاوة على ذلك، فإن مجموعة القادة المحتملين للجولة r هي مجموعة فرعية عشوائية من مستخدمي الجولة r −k، والقائد المحتمل الصادق، أقوم دائمًا ببناء رسالته ونشرها بشكل صحيح أنا، الذي يحتوي على بيانات الاعتماد الخاصة بي. وبالتالي، نظرًا لأن النسبة المئوية للمستخدمين الصادقين هي h، بغض النظر عن الأمر الحد الأدنى الذي قد يفعله القادة المحتملون الخبثاء (على سبيل المثال، الكشف عن أوراق اعتمادهم أو إخفاءها). hashed تنتمي بيانات اعتماد القائد المحتمل إلى مستخدم صادق، والذي يتم التعرف عليه بالضرورة من قبل الجميع ليكون القائد \(\ell\)r للجولة r. وفقًا لذلك، إذا كانت السلسلة ذات 256 بت Qr−1 نفسها عشوائيًا و تم اختياره بشكل مستقل، مع احتمال بالضبط ح (أ) القائد \(\ell\)r صادق و (ب) \(\ell\)j = \(\ell\)r للجميع المتحققون الصادقون من الخطوة 2 ي. في الواقع، تم اختيار بيانات الاعتماد hashed بشكل عشوائي، ولكنها تعتمد على Qr−1، وهولم يتم اختيارها بشكل عشوائي ومستقل. ومع ذلك، سنثبت في تحليلنا أن Qr−1 هو غير قابلة للتلاعب بدرجة كافية لضمان أن يكون زعيم الجولة صادقًا في الاحتمالية h′ قريبة بما فيه الكفاية من h: وهي h′ > h2(1 + h −h2). على سبيل المثال، إذا كانت h = 80%، فإن h′ > .7424. بعد تحديد قائد الجولة (وهو ما يفعلونه بشكل صحيح عندما يكون القائد \(\ell\)r صادقًا)، تتمثل مهمة مدققي الخطوة الثانية في البدء في تنفيذ مكتبة الإسكندرية باستخدام ما يعتقدون أنه قيم أولية لتكون كتلة الزعيم. في الواقع، من أجل تقليل حجم الاتصالات المطلوبة، لا يستخدم المدقق j \(\in\)SV r,2 قيمة الإدخال v ′ ي إلى البروتوكول البيزنطي، كتلة بج ذلك لقد استلم بالفعل من \(\ell\)j (المستخدم j يعتقد أنه القائد)، ولكن القائد، ولكن hash من تلك الكتلة، أي v' ي = ح (ثنائية). وهكذا، عند إنهاء بروتوكول مكتبة الإسكندرية، تم التحقق من الخطوة الأخيرة لا تحسب الكتلة الدائرية المرغوبة Br، ولكن احسب (المصادقة و نشر) H (Br). وفقًا لذلك، نظرًا لأن H(Br) تم توقيعه رقميًا بواسطة عدد كافٍ من المدققين في الخطوة الأخيرة من بروتوكول BA، سيدرك المستخدمون في النظام أن H(Br) هو hash للجديد كتلة. ومع ذلك، يجب عليهم أيضًا استرداد (أو الانتظار، نظرًا لأن التنفيذ غير متزامن تمامًا) block Br نفسه، والذي يضمن البروتوكول أنه متاح بالفعل، بغض النظر عن الخصم قد تفعل. عدم التزامن والتوقيت Algorand ′ 1 و Algorand ′ 2 لديهم درجة كبيرة من عدم التزامن. وذلك لأن الخصم لديه حرية كبيرة في جدولة تسليم الرسائل الجارية نشر. بالإضافة إلى ذلك، سواء تم تحديد العدد الإجمالي للخطوات في الجولة أم لا، فهناك حد أقصى ويساهم التباين بعدد الخطوات المتخذة بالفعل. بمجرد أن يتعلم شهادات B0، . . . ، Br−1، مستخدم يحسب Qr−1 ويبدأ العمل في الجولة r، للتحقق مما إذا كان قائدًا محتملاً، أو مدققًا في بعض خطوات الجولة r. بافتراض أنني يجب أن أتصرف في الخطوات، في ضوء عدم التزامن الذي تمت مناقشته، فإنني أعتمد على العديد من الخطوات استراتيجيات للتأكد من أن لديه معلومات كافية قبل أن يتصرف. على سبيل المثال، قد ينتظر حتى يتلقى على الأقل عددًا معينًا من الرسائل من جهات التحقق الخطوة السابقة أو الانتظار لوقت كافي للتأكد من وصوله للرسائل بشكل كافي العديد من التحقق من الخطوة السابقة. البذرة Qr ومعلمة الرجوع للخلف k تذكر أنه من الناحية المثالية، يجب أن تكون الكميات Qr عشوائية ومستقلة، على الرغم من أنه يكفي أن تكون غير قابلة للتلاعب بها بشكل كافٍ الخصم. للوهلة الأولى، يمكننا اختيار Qr−1 ليتزامن مع H دفع ص−1 ، وبالتالي تجنب ذلك حدد Qr−1 بشكل صريح في Br−1. ومع ذلك، يكشف التحليل الأولي أن المستخدمين الضارين قد يقومون بذلك الاستفادة من آلية الاختيار هذه.11 بعض الجهود الإضافية تظهر أن عددًا لا يحصى من الآخرين 11نحن في بداية الجولة r −1. وبالتالي، فإن Qr−2 = PAY r−2 معروف علنًا، والخصم معروف بشكل خاص يعرف من هم القادة المحتملين الذين يسيطر عليهم. افترض أن الخصم يتحكم في 10% من المستخدمين، و أنه، مع وجود احتمال كبير جدًا، يكون المستخدم الضار w هو القائد المحتمل للجولة r −1. يعني افترض ذلك ح سيجو ص −2، 1، Qr−2 إنه صغير جدًا لدرجة أنه من غير المحتمل جدًا أن يكون القائد المحتمل الصادق هو في الواقع زعيم الجولة ص −1. (تذكر أنه بما أننا نختار القادة المحتملين عبر آلية فرز مشفرة سرية، فالخصم لا يعرف من هم القادة المحتملون الصادقون.) الخصم إذن هو في المحسود موقف اختيار مجموعة الدفع PAY ′ التي يريدها، وهل تصبح مجموعة الدفع الرسمية للجولة r −1. ومع ذلك، يمكنه أن يفعل المزيد. ويمكنه أيضًا التأكد، مع وجود احتمال كبير، أن () أحد مستخدميه الضارين سيكون هو القائد أيضًا من الجولة r، حتى يتمكن من اختيار ما سيكون PAY r بحرية. (وهكذا. على الأقل لفترة طويلة، أي، طالما أن هذه الأحداث ذات الاحتمالية العالية تحدث بالفعل.) لضمان ()، يتصرف الخصم على النحو التالي. دع الدفع ′ تكون مجموعة الدفع التي يفضلها الخصم للجولة r −1. بعد ذلك، يقوم بحساب H(PAY ′) والتحقق من ذلك بالنسبة للبعض المشغل الضار بالفعل z، SIGz(r, 1, H(PAY ′)) صغير بشكل خاص، أي صغير بما يكفي بحيث يكون ذو قيمة عالية جدًا احتمال z سيكون زعيم الجولة r. إذا كان الأمر كذلك، فإنه يوجه w لاختيار كتلة مرشحهيمكن للخصم استغلال البدائل المبنية على كميات الكتل التقليدية بسهولة لضمان ذلك أن القادة الخبيثين متكررون جدًا. وبدلاً من ذلك، فإننا نحدد علامتنا التجارية بشكل محدد واستقرائي كمية جديدة Qr حتى نتمكن من إثبات أنه غير قابل للتلاعب من قبل الخصم. وهي، Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r)، إذا لم يكن Br هو الكتلة الفارغة، وQr \(\triangleq\)H(Qr−1, r) بخلاف ذلك. الحدس لماذا يعمل هذا البناء لـ Qr على النحو التالي. افترض للحظة أن يتم اختيار Qr−1 بشكل عشوائي ومستقل. ثم، وسوف يكون ذلك ريال قطري؟ عندما يكون \(\ell\)r صادقًا الإجابة هي (تقريبًا) نعم. هذا بسبب H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256 هي وظيفة عشوائية. عندما يكون \(\ell\)r خبيثًا، لم يعد Qr محددًا بشكل موحد من Qr−1 و\(\ell\)ر. هناك قيمتان منفصلتان على الأقل لـ Qr. واحد لا يزال Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), والآخر هو H(Qr−1, r). دعونا أولاً نقول أنه على الرغم من أن الاختيار الثاني اعتباطي إلى حد ما، الاختيار الثاني إلزامي تمامًا. والسبب في ذلك هو أن الخبيث يمكن أن يسبب دائمًا كتل مرشحة مختلفة تمامًا ليتم استلامها من قبل المدققين الصادقين في الخطوة الثانية.12 مرة واحدة في هذه الحالة، من السهل التأكد من أن الكتلة تم الاتفاق عليها في النهاية عبر بروتوكول مكتبة الإسكندرية ستكون الجولة r هي الافتراضية، وبالتالي لن تحتوي على التوقيع الرقمي لأي شخص بـ Qr−1. لكن يجب أن يستمر النظام، ولهذا يحتاج إلى قائد للجولة r. إذا كان هذا الزعيم تلقائيا ويختار علانية، فإن العدو سوف يفسده تافهة. إذا تم تحديده من قبل السابق Qr−1 عبر نفس العملية، من \(\ell\)r سوف يكون القائد مرة أخرى في الجولة r+1. ونحن نقترح على وجه التحديد ل استخدام نفس آلية فرز التشفير السرية، ولكن يتم تطبيقها على كمية Q جديدة: وهي: ح (Qr−1، ص). من خلال جعل هذه الكمية هي مخرجات H يضمن أن المخرجات عشوائية، ومن خلال تضمين r كمدخل ثانٍ لـ H، في حين أن جميع الاستخدامات الأخرى لـ H تحتوي على واحد أو أكثر من 3 مدخلات، "تضمن" أن يتم اختيار Qr بشكل مستقل. مرة أخرى، اختيارنا المحدد للبديل Qr لا يهم، ما يهم هو أن \(\ell\)r لديه خياران لـ Qr، وبالتالي يمكنه مضاعفة فرصه أن يكون هناك مستخدم ضار آخر كزعيم التالي. قد تكون خيارات Qr أكثر عددًا بالنسبة للخصم الذي يتحكم في \(\ell\)r الخبيث. على سبيل المثال، لنفترض أن x وy وz هم ثلاثة قادة محتملين ضارين للجولة r بحيث تكون ح ص،1 س <ح ص،1 ذ <ح ص،1 ض و ح ص،1 ض صغيرة بشكل خاص. وهذا صغير جدًا لدرجة أن هناك فرصة جيدة لأن يكون H ص،1 ض هو أصغر من __PH_0004__ed مؤهلات كل قائد محتمل صادق. ثم، من خلال مطالبة x بإخفاء صورته الاعتماد، لدى الخصم فرصة جيدة لأن يصبح y قائد الجولة r −1. هذا يعني أن لديه خيارًا آخر لـ Qr: وهو SIGy ريال قطري−1 . وبالمثل، يجوز للخصم اطلب من كل من x وy حجب بيانات اعتمادهما، حتى يصبح z قائد الجولة r −1 والحصول على خيار آخر لـ Qr: وهو SIGz ريال قطري−1 . ومع ذلك، بالطبع، كل من هذه الخيارات وغيرها لديها فرصة غير معدومة للفشل، لأن لا يستطيع الخصم التنبؤ بـ hash من التوقيعات الرقمية للمستخدمين المحتملين الصادقين. ر−1 أنا = (r −1, PAY ′, H(Br−2). وإلا، لديه مستخدمين ضارين آخرين x وy لمواصلة إنشاء دفعة جديدة \(\wp\) ′، من واحد إلى آخر، حتى بالنسبة لبعض المستخدمين الضارين z (أو حتى لبعض المستخدمين الثابتين z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) هو صغيرة بشكل خاص أيضًا. ستتوقف هذه التجربة بسرعة كبيرة. وعندما يفعل ذلك يطلب الخصم أن يقترح الكتلة المرشحة Br−1 أنا = (ص −1، الدفع ′ \(\cup\){\(\wp\)}، H(Br−2). 12 على سبيل المثال، لتبسيط الأمر (ولكنه متطرف)، "عندما يكون وقت الخطوة الثانية على وشك الانتهاء"، يمكن لـ \(\ell\)r أرسل بريدًا إلكترونيًا مباشرًا إلى كتلة مرشح مختلفة Bi إلى كل مستخدم. وبهذه الطريقة، أيًا كان القائمون على التحقق من الخطوة الثانية، فهم سوف تتلقى كتل مختلفة تماما.يُظهر التحليل الدقيق الشبيه بسلسلة ماركوف أنه بغض النظر عن الخيارات التي يختارها الخصم للقيام بالجولة r −1، طالما أنه لا يستطيع إدخال مستخدمين جدد في النظام، فلا يمكنه تقليل احتمالية أن يكون المستخدم الصادق هو قائد الجولة r + 40 أقل بكثير من h. هذا هو السبب الذي نطالبه بأن يكون القادة المحتملون للجولة r هم المستخدمين الموجودين بالفعل في الجولة r −k. إنها طريقة للتأكد من أنه عند الجولة r −k، لا يمكن للخصم أن يغير احتمالية ذلك كثيرًا المستخدم الصادق يصبح قائد الجولة r. في الواقع، بغض النظر عن المستخدمين الذين قد يضيفهم إلى النظام في الجولات من r −k إلى r، فإنهم غير مؤهلين ليصبحوا قادة محتملين (ومن باب أولى زعيم) من الجولة ص. وبالتالي فإن معلمة الرجوع إلى الخلف k هي في النهاية معلمة أمان. (على الرغم من، كما سنرى في القسم 7، يمكن أيضًا أن يكون نوعًا من "معلمة الراحة" أيضًا.) مفاتيح سريعة الزوال على الرغم من أن تنفيذ بروتوكولنا لا يمكن أن يولد شوكة إلا باستخدام مع احتمال ضئيل، يمكن للخصم إنشاء شوكة، عند الكتلة r، بعد المشروع تم إنشاء الكتلة r. تقريبًا، بمجرد إنشاء Br، يعرف الخصم من هو المتحقق من كل خطوة من الجولة ص هي. وبالتالي، يمكنه بالتالي إفسادهم جميعًا وإجبارهم على التصديق على كتلة جديدة و ر. نظرًا لأن هذا الحظر المزيف قد يتم نشره فقط بعد الحظر الشرعي، فقد تم نشره من قبل المستخدمين الاهتمام لن ينخدع.[13] ومع ذلك، ص سيكون Br صحيحًا من الناحية النحوية ونحن تريد منع من تصنيعها. ونحن نفعل ذلك عن طريق قاعدة جديدة. بشكل أساسي، قام أعضاء المدقق بتعيين SV r,s للخطوة s من الجولة r استخدم المفاتيح العامة المؤقتة pkr،s أنا لتوقيع رسائلهم رقميا. هذه المفاتيح مخصصة للاستخدام الفردي فقط والمفاتيح السرية المقابلة لها skr,s أنا يتم تدميرها بمجرد استخدامها. بهذه الطريقة، إذا كان المدقق هو بعد تلفه لاحقًا، لا يستطيع الخصم إجباره على التوقيع على أي شيء آخر لم يوقع عليه في الأصل. وبطبيعة الحال، يجب علينا التأكد من أنه من المستحيل على الخصم أن يحسب مفتاحًا جديدًا العلاقات العامة، ق أنا وإقناع مستخدم صادق بأنه هو المفتاح المؤقت الصحيح لأداة التحقق i \(\in\)SV r,s لاستخدامه في الخطوات. 4.2 ملخص مشترك للرموز والمفاهيم والمعلمات التدوينات • r \(\geq\)0 : الرقم الدائري الحالي. • s \(\geq\)1: رقم الخطوة الحالية في الجولة r. • Br: الكتلة المتولدة في الجولة r. • PKr: مجموعة المفاتيح العامة بنهاية الجولة r −1 وفي بداية الجولة r. • Sr: حالة النظام بنهاية الجولة r −1 وفي بداية الجولة r.14 • PAY r: مجموعة الدفعات الموجودة في Br. • \(\ell\)r: زعيم الجولة ص. \(\ell\)r يختار مجموعة الدفع PAY r للجولة r (ويحدد Qr التالي). • Qr: بذرة الجولة r، الكمية (أي السلسلة الثنائية) التي يتم إنشاؤها في نهاية الجولة r ويستخدم لاختيار أدوات التحقق للجولة r + 1. Qr مستقل عن مجموعات الدفع في الكتل ولا يمكن التلاعب بها بواسطة \(\ell\)r. 13 فكر في إفساد مذيع الأخبار لشبكة تلفزيونية كبرى، وإنتاج وبث شريط إخباري اليوم تظهر فوز الوزيرة كلينتون في الانتخابات الرئاسية الأخيرة. معظمنا سوف يتعرف على أنها خدعة. لكن قد يتم خداع شخص ما بعد خروجه من الغيبوبة. 14في النظام غير المتزامن، مفهوم "نهاية الجولة r −1" و"بداية الجولة r" تحتاج إلى أن يتم تحديدها بعناية. رياضياً، يتم حساب PKr وSr من الحالة الأولية S0 والكتل ب1، . . . ، ر−1.• SV r,s: مجموعة أدوات التحقق المختارة للخطوات s من الجولة r. • SV r : مجموعة أدوات التحقق المختارة للجولة r، SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s وHSV r,s: على التوالي، مجموعة أدوات التحقق الخبيثة ومجموعة أدوات التحقق الصادقة في SV ص، ق. MSV r,s \(\cup\)HSV r,s = SV r,s و MSV r,s ∩HSV r,s = \(\emptyset\). • n1 \(\in\)Z+ و n \(\in\)Z+: على التوالي، الأعداد المتوقعة للقادة المحتملين في كل SV r,1, والأعداد المتوقعة للمحققين في كل SV r,s، لـ s > 1. لاحظ أن n1 << n، لأننا نحتاج على الأقل إلى عضو صادق وصادق واحد في SV r,1، ولكن على الأقل أغلبية الأعضاء الشرفاء في كل SV r,s لـ s > 1. • h \(\in\)(0, 1): ثابت أكبر من 2/3. h هي نسبة الصدق في النظام. وهذا هو، جزء من المستخدمين الصادقين أو الأموال الصادقة، اعتمادًا على الافتراض المستخدم، في كل PKr على الأقل ح. • H: دالة مشفرة hash، تم تصميمها كدالة عشوائية oracle. • \(\bot\): سلسلة خاصة بنفس طول مخرج H. • F \(\in\)(0, 1): المعلمة التي تحدد احتمالية الخطأ المسموح بها. الاحتمال \(\geq\)F هو تعتبر "ضئيلة"، ويعتبر الاحتمال \(\geq\)1 −F "ساحقًا". • ph \(\in\)(0, 1): احتمال أن يكون زعيم الجولة r، \(\ell\)r، صادقًا. من الناحية المثالية الرقم الهيدروجيني = ح. مع بوجود الخصم سيتم تحديد قيمة ph في التحليل. • k \(\in\)Z+ : معامل الرجوع إلى الوراء. وهذا يعني أن الجولة r −k هي المكان الذي توجد فيه أدوات التحقق من الجولة r تم اختياره من - أي SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): بالنسبة للخطوة الأولى من الجولة r، يتم اختيار مستخدم في الجولة r −k ليكون في SV r,1 مع الاحتمال ص1 \(\triangleq\) ن1 |P كر−ك|. • p \(\in\)(0, 1): لكل خطوة s > 1 من الجولة r، يتم اختيار مستخدم في الجولة r −k ليكون في SV r,s مع الاحتمال ص \(\triangleq\) ن |P كر−ك|. • CERT r: شهادة Br. إنها مجموعة من التوقيعات لـ H(Br) من المدققين المناسبين في جولة ص. • Br \(\triangleq\)(Br, CERT r) عبارة عن كتلة مثبتة. أعرف المستخدم Br إذا كان يمتلك (ويتحقق بنجاح) كلا الجزأين من الكتلة المثبتة. لاحظ أن اختبار CERT الذي يراه مستخدمون مختلفون قد يكون مختلفًا. • τ ص i : الوقت (المحلي) الذي أعرف فيه المستخدم Br. في البروتوكول Algorand لكل مستخدم خاصته الساعة الخاصة. لا يلزم مزامنة ساعات المستخدمين المختلفة، ولكن يجب أن تكون لها نفس السرعة. فقط لغرض التحليل، نأخذ في الاعتبار ساعة مرجعية ونقيس أداء اللاعبين. الأوقات ذات الصلة فيما يتعلق به. • \(\alpha\)r,s أنا و \(\beta\)r,s i : على التوالي الوقت (المحلي) الذي يبدأ فيه المستخدم i وينتهي تنفيذه للخطوة s جولة ص. • Λ و : بشكل أساسي، الحدود العليا للوقت اللازم لتنفيذ الخطوة 1 و الوقت اللازم لأي خطوة أخرى في بروتوكول Algorand. تحدد المعلمة Λ الحدود العليا لوقت نشر كتلة واحدة بحجم 1 ميجابايت. (في تدويننا، Λ = \(\rho\),1 ميجابايت. مع التذكير بتدويننا، قمنا بتعيين \(\rho\) = 1 للبساطة، وأن الكتل كذلك تم اختياره ليكون بطول 1 ميجابايت على الأكثر، لدينا Λ = Λ1,1,1 ميجابايت.) 15بالمعنى الدقيق للكلمة، "r −k" يجب أن يكون "max{0, r −k}".تحدد المعلمة lect الحد العلوي من وقت نشر رسالة صغيرة واحدة لكل مدقق في الخطوة s > 1. (باستخدام، كما في Bitcoin، توقيعات المنحنى الناقص مع مفاتيح 32B، يبلغ طول رسالة التحقق 200B. وهكذا، في تدويننا، \(\alpha\) = lectn,\(\rho\),200B.) نحن نفترض أن Λ = O(π). مفاهيم • اختيار المدقق. لكل جولة r والخطوة s > 1، SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\geq\)p}. كل يقوم المستخدم i \(\in\)PKr−k بحساب توقيعه بشكل خاص باستخدام مفتاحه طويل المدى ويقرر ما إذا كان أنا \(\in\)SV r,s أم لا. إذا كنت \(\in\)SV r,s، فإن SIGi(r, s, Qr−1) هو i's (r, s) - بيانات الاعتماد، يُشار إليها بشكل مضغوط بواسطة \(\sigma\)r،s أنا. للخطوة الأولى من الجولة r، SV r،1 و\(\sigma\)r،1 أنا يتم تعريفها بالمثل، مع استبدال p بـ p1. ال المدققون في SV r,1 هم قادة محتملون. • اختيار القائد. المستخدم i \(\in\)SV r,1 هو زعيم الجولة r، يُشار إليه بـ \(\ell\)r، إذا كان H(\(\sigma\)r,1 ط ) \(\geq\)H(\(\sigma\)r,1 ي) لجميع الإمكانات القادة j \(\in\)SV r,1. عندما تتم مقارنة hashes لأوراق اعتماد لاعبين، في أمر غير محتمل في حالة وجود روابط، يقوم البروتوكول دائمًا بقطع الروابط معجميًا وفقًا لـ (عام طويل الأمد مفاتيح) القادة المحتملين. بحكم التعريف، فإن قيمة hash لبيانات اعتماد اللاعب هي أيضًا الأصغر بين جميع المستخدمين في PKr−ك. لاحظ أن القائد المحتمل لا يمكنه أن يقرر بشكل خاص ما إذا كان هو القائد أم لا، دون رؤية أوراق اعتماد القادة المحتملين الآخرين. نظرًا لأن قيم hash موحدة بشكل عشوائي، عندما تكون SV r,1 غير فارغة، فإن \(\ell\)r موجود دائمًا ويكون صادق مع احتمال على الأقل ح. المعلمة n1 كبيرة بما يكفي للتأكد من أن كل منها SV r,1 غير فارغ مع احتمالية ساحقة. • هيكل الكتلة. الكتلة غير الفارغة هي من الشكل Br = (r، PAY r، SIG\(\ell\)r(Qr−1)، H(Br−1))، وكتلة فارغة هو من النموذج Br ɫ = (ص، \(\emptyset\)، Qr−1، H(Br−1)). لاحظ أن الكتلة غير الفارغة قد لا تزال تحتوي على مجموعة دفع فارغة PAY r، في حالة عدم حدوث أي دفعة هذه الجولة أو إذا كان القائد خبيثًا. ومع ذلك، فإن الكتلة غير الفارغة تعني أن هوية \(\ell\)r، أوراق اعتماده \(\sigma\)r،1 تم الكشف عن \(\ell\)r وSIG\(\ell\)r(Qr−1) في الوقت المناسب. يضمن البروتوكول أنه إذا كان القائد صادقًا، فستكون الكتلة غير فارغة مع احتمالية ساحقة. • البذور ريال قطري. إذا كان Br غير فارغ، إذن Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r)، وإلا Qr \(\triangleq\)H(Qr−1, r). المعلمات • العلاقات بين مختلف المعالم. - يتم اختيار القائمين على التحقق والقادة المحتملين للجولة r من المستخدمين في PKr−k، حيث يتم اختيار k بحيث لا يتمكن الخصم من التنبؤ بـ Qr−1 مرة أخرى عند الجولة r −k −1 باحتمال أفضل من F: وإلا فإنه سيكون قادرًا على إدخال مستخدمين ضارين بالنسبة للجولة r −k، وجميعهم سيكونون قادة/محققين محتملين في الجولة r، وينجحون في ذلك
وجود زعيم خبيث أو أغلبية خبيثة في SV r,s لبعض الخطوات التي يرغب فيها له. — بالنسبة للخطوة 1 من كل جولة r، يتم اختيار n1 بحيث يكون SV r,1 ̸= \(\emptyset\) باحتمال كبير. • أمثلة على اختيارات المعلمات الهامة. — يبلغ طول مخرجات H 256 بت. — ح = 80%، ن1 = 35. — Λ = 1 دقيقة و lect = 10 ثواني. • تهيئة البروتوكول. يبدأ البروتوكول في الوقت 0 مع r = 0. وبما أنه لا يوجد "B−1" أو "CERT −1"، من الناحية النحوية، B−1 هي معلمة عامة مع مكونها الثالث الذي يحدد Q−1، وجميع المستخدمين تعرف على B−1 في الوقت 0.
Algorand '
1 Di bagian ini, kami membuat versi Algorand ′ yang bekerja dengan asumsi berikut. Asumsi Mayoritas Pengguna Jujur: Lebih dari 2/3 pengguna di setiap PKr adalah jujur. Di Bagian 8, kami menunjukkan cara mengganti asumsi di atas dengan Mayoritas Jujur yang diinginkan Asumsi uang. 5.1 Notasi dan Parameter Tambahan Notasi • m \(\in\)Z+: jumlah langkah maksimum dalam protokol BA biner, kelipatan 3. • Lr \(\leq\)m/3: variabel acak yang mewakili jumlah percobaan Bernoulli yang diperlukan untuk mendapatkan hasil 1, ketika setiap percobaan adalah 1 dengan probabilitas ph 2 dan paling banyak terdapat m/3 percobaan. Jika semua percobaan gagal maka Lr \(\triangleq\)m/3. Lr akan digunakan untuk membatasi waktu yang dibutuhkan untuk menghasilkan blok Br. • tH = 2n 3 + 1: jumlah tanda tangan yang diperlukan dalam kondisi akhir protokol. • CERT r : sertifikat untuk Br. Ini adalah satu set tanda tangan H(Br) dari verifier yang tepat di putaran r. Parameter • Hubungan antara berbagai parameter. — Untuk setiap langkah s > 1 pada putaran r, n dipilih sehingga, dengan probabilitas yang sangat besar, |HSV r,s| > 2|MSV r,s| dan |HSV r,s| + 4|MSV r,s| < 2n. Semakin mendekati 1 nilai h, maka n harus semakin kecil. Secara khusus, kami menggunakan (varian dari) Batas Cherno untuk memastikan kondisi yang diinginkan terpenuhi dengan kemungkinan yang sangat besar. — m dipilih sedemikian rupa sehingga Lr < m/3 dengan probabilitas yang sangat besar. • Contoh pilihan parameter penting. — F = 10−12. — n \(\approx\)1500, k = 40 dan m = 180.5.2 Menerapkan Kunci Ephemeral di Algorand ′ 1 Seperti telah disebutkan, kami berharap bahwa verifier i \(\in\)SV r,s menandatangani pesannya secara digital mr,s saya langkah s pada putaran r, relatif terhadap pkr kunci publik sementara, s i , menggunakan kunci rahasia sementara skr,s saya itu dia segera menghancurkan setelah digunakan. Oleh karena itu, kami memerlukan metode yang efisien untuk memastikan bahwa setiap pengguna dapat melakukannya verifikasi bahwa pkr,s saya memang kunci yang digunakan untuk memverifikasi tanda tangan saya pak saya. Kami melakukannya dengan (untuk yang terbaik sepengetahuan kami) penggunaan baru skema tanda tangan berbasis identitas. Pada tingkat tinggi, dalam skema seperti itu, otoritas pusat A menghasilkan kunci master publik, PMK, dan kunci master rahasia yang sesuai, SMK. Mengingat identitas, U, dari pemain U, A menghitung, melalui SMK, skU kunci tanda tangan rahasia relatif terhadap kunci publik U, dan secara pribadi memberikan skU ke U. (Memang benar, dalam skema tanda tangan digital berbasis identitas, kunci publik dari pengguna U adalah U itu sendiri!) Dengan cara ini, jika A menghancurkan SMK setelah menghitung kunci rahasia pengguna yang ingin dia aktifkan menghasilkan tanda tangan digital, dan tidak menyimpan kunci rahasia apa pun yang dihitung, maka hanya U yang melakukannya dapat menandatangani pesan secara digital relatif terhadap kunci publik U. Jadi, siapa pun yang mengetahui “nama U”, secara otomatis mengetahui kunci publik U, dan dengan demikian dapat memverifikasi tanda tangan U (mungkin juga menggunakan kunci master publik PMK). Dalam aplikasi kita, otoritas A adalah pengguna i, dan himpunan semua kemungkinan pengguna yang bertepatan dengan U pasangan langkah bulat (r, s) di —katakanlah— S = {i}\(\times\){r′, . . . , r′ +106}\(\times\){1, . . . , m+3}, dengan r′ diberikan putaran, dan m + 3 batas atas dengan jumlah langkah yang mungkin terjadi dalam satu putaran. Ini cara, pkr, s saya \(\triangleq\)(i, r, s), sehingga semua orang melihat tanda tangan i SIGr,s pkr, s saya (Tuan, s i ) bisa, dengan luar biasa probabilitasnya, segera verifikasi untuk jutaan putaran pertama r setelah r′. Dengan kata lain saya generate dulu PMK dan SMK. Kemudian, ia mempublikasikan bahwa PMK adalah majikannya kunci publik untuk setiap putaran r \(\in\)[r′, r′ + 106], dan menggunakan SMK untuk memproduksi dan menyimpan rahasia secara pribadi kunci skr,s saya untuk setiap rangkap tiga (i, r, s) \(\in\)S. Selesai, dia menghancurkan SMK. Jika dia memutuskan bahwa dia tidak melakukannya bagian dari SV r,s, maka saya boleh meninggalkan skr,s saya sendirian (karena protokol tidak mengharuskan dia melakukan autentikasi pesan apa pun di Langkah s pada putaran r). Kalau tidak, saya pertama kali menggunakan skr,s saya untuk menandatangani pesannya secara digital, Tuan, s saya, dan lalu hancurkan skr,s saya. Perhatikan bahwa saya dapat mempublikasikan kunci master publik pertamanya ketika dia pertama kali memasuki sistem. Artinya, pembayaran yang sama \(\wp\)yang membawa i ke dalam sistem (pada putaran r′ atau pada putaran yang mendekati r′), juga dapat tentukan, atas permintaan i, bahwa kunci master publik i untuk setiap putaran r \(\in\)[r′, r′ + 106] adalah PMK —misalnya, dengan termasuk sepasang bentuk (PMK, [r′, r′ + 106]). Perhatikan juga bahwa, karena m + 3 adalah jumlah langkah maksimum dalam satu putaran, dengan asumsi bahwa satu putaran membutuhkan waktu satu menit, simpanan kunci sementara yang dihasilkan akan bertahan selama hampir dua tahun. Pada saat yang sama waktu, kunci rahasia sementara ini tidak akan memakan waktu terlalu lama untuk diproduksi. Menggunakan berbasis kurva elips sistem dengan kunci 32B, setiap kunci rahasia dihitung dalam beberapa mikrodetik. Jadi, jika m + 3 = 180, maka seluruh 180 juta kunci rahasia dapat dihitung dalam waktu kurang dari satu jam. Ketika putaran saat ini semakin mendekati r′ + 106, untuk menangani jutaan putaran berikutnya, i menghasilkan pasangan baru (PMK′, SMK′), dan menginformasikan simpanan kunci sementara berikutnya dengan —misalnya— meminta SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) memasukkan blok baru, baik sebagai memisahkan “transaksi” atau sebagai beberapa informasi tambahan yang merupakan bagian dari pembayaran. Dengan melakukan hal itu, saya memberi tahu semua orang bahwa dia harus menggunakan PMK′ untuk memverifikasi tanda tangan sementara saya selanjutnya juta putaran. Dan sebagainya. (Perhatikan bahwa, dengan mengikuti pendekatan dasar ini, cara lain untuk mengimplementasikan kunci sementara tanpa menggunakan tanda tangan berbasis identitas tentu saja dimungkinkan. Misalnya, melalui Merkle trees.16) 16Dalam metode ini, saya membuat pasangan kunci rahasia publik (pkr,s saya, skr, s saya ) untuk setiap pasangan langkah bulat (r, s) di —katakanlah—Cara lain untuk mengimplementasikan kunci sementara tentu saja dimungkinkan —misalnya melalui Merkle trees. 5.3 Mencocokkan Langkah Algorand′ 1 dengan BA⋆ Seperti yang kami katakan, putaran di Algorand ′ 1 memiliki paling banyak m + 3 langkah. Langkah 1. Pada langkah ini, setiap calon pemimpin i menghitung dan menyebarkan calon bloknya Br saya , bersama dengan kredensialnya sendiri, \(\sigma\)r,1 saya. Ingatlah bahwa kredensial ini secara eksplisit mengidentifikasi i. Hal ini terjadi karena \(\sigma\)r,1 saya \(\triangleq\)SIGi(r, 1, Qr−1). Pemverifikasi potensial saya juga menyebarkan, sebagai bagian dari pesannya, tanda tangan digital H(Br saya ). Tidak berurusan dengan pembayaran atau kredensial, tanda tangan i ini bersifat relatif terhadap publiknya yang fana kunci pkr,1 i : yaitu dia menyebarkan sigpkr,1 saya (H(Br saya )). Mengingat konvensi kita, daripada menyebarkan Br saya dan sigpkr,1 saya (H(Br saya )), dia bisa saja SIGpkr yang disebarkan,1 saya (H(Br saya )). Namun, dalam analisis kami, kami perlu memiliki akses eksplisit sigpkr,1 saya (H(Br saya )). Langkah 2. Pada langkah ini, setiap verifier i menetapkan \(\ell\)r saya menjadi calon pemimpin yang memiliki kredensial hash adalah yang terkecil, dan Br saya menjadi blok yang diusulkan oleh \(\ell\)r saya. Karena, demi efisiensi, kami ingin menyetujui H(Br), daripada langsung pada Br, saya menyebarkan pesan yang ingin dia sampaikan disebarkan pada langkah pertama BA⋆dengan nilai awal v′ saya = H(Br saya ). Artinya, dia menyebarkan v′ saya, tentu saja setelah menandatanganinya sebentar. (Yaitu, setelah menandatanganinya relatif terhadap fana yang tepat kunci publik yang dalam hal ini adalah pkr,2 i .) Tentu saja, saya juga mengirimkan kredensialnya sendiri. Karena langkah pertama BA⋆ terdiri dari langkah pertama protokol konsensus bertingkat GC, Langkah 2 dari Algorand ′ sesuai dengan langkah pertama GC. Langkah 3. Pada langkah ini, setiap verifier i \(\in\)SV r,2 menjalankan langkah kedua BA⋆. Artinya, dia mengirimkan pesan yang sama yang akan dia kirimkan pada langkah kedua GC. Sekali lagi, pesan saya bersifat sementara ditandatangani dan disertai dengan kredensial saya. (Mulai sekarang, kami tidak akan lagi mengatakan bahwa verifier secara singkat menandatangani pesannya dan juga menyebarkan kredensialnya.) Langkah 4. Pada langkah ini, setiap verifier i \(\in\)SV r,4 menghitung output dari GC, (vi, gi), dan secara ephemeral menandatangani dan mengirimkan pesan yang sama seperti yang akan dikirimkannya pada langkah ketiga BA⋆, yaitu di langkah pertama BBA⋆, dengan bit awal 0 jika gi = 2, dan 1 sebaliknya. Langkah s = 5, . . . , m + 2. Langkah tersebut, jika pernah tercapai, berhubungan dengan langkah s −1 dari BA⋆, dan dengan demikian menjadi langkah s −3 dari BBA⋆. Karena model propagasi kita cukup asynchronous, kita harus memperhitungkan kemungkinan tersebut bahwa, di tengah langkah s tersebut, pemverifikasi i \(\in\)SV r,s dicapai dengan informasi yang membuktikannya blok Br itu telah dipilih. Dalam hal ini, saya menghentikan eksekusinya sendiri pada putaran r Algorand ′, dan mulai menjalankan instruksi putaran-(r + 1). {R', . . . , r′ + 106} \(\times\) {1, . . . , m+3}. Kemudian dia memesan kunci publik ini dengan cara kanonik, menyimpan publik ke-j memasukkan daun ke-j dari Merkle tree, dan menghitung nilai akar Ri, yang dipublikasikannya. Ketika dia ingin menandatangani pesan relatif terhadap kunci pkr,s saya , saya tidak hanya memberikan tanda tangan sebenarnya, tetapi juga jalur otentikasi untuk pkr,s saya relatif terhadap Ri. Perhatikan bahwa jalur autentikasi ini juga membuktikan bahwa pkr,s saya disimpan di daun ke-j. Sisanya rinciannya dapat dengan mudah diisi.Oleh karena itu, instruksi dari verifier i \(\in\)SV r,s, selain instruksi yang sesuai ke Langkah s −3 dari BBA⋆, termasuk memeriksa apakah eksekusi BBA⋆telah dihentikan sebelumnya Langkah s′. Karena BBA⋆ hanya dapat berhenti pada Langkah Koin-Tetap-ke-0 atau langkah Koin-Tetap-ke-1, maka instruksi membedakan apakah A (Kondisi Akhir 0): s′ −2 ≡0 mod 3, atau B (Kondisi Akhir 1): s′ −2 ≡1 mod 3. Faktanya, dalam kasus A, blok Br tidak kosong, dan dengan demikian diperlukan instruksi tambahan untuk melakukannya memastikan bahwa saya merekonstruksi Br dengan benar, bersama dengan sertifikat CERT r yang sesuai. Dalam kasus B, blok Br kosong, sehingga i diinstruksikan untuk menyetel Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), dan untuk menghitung CERT r. Jika, selama pelaksanaan langkah s, saya tidak melihat bukti apa pun bahwa blok Br sudah ada telah dihasilkan, lalu dia mengirimkan pesan yang sama seperti yang akan dia kirimkan pada langkah s −3 dari BBA⋆. Langkah m + 3. Jika, pada langkah m + 3, i \(\in\)SV r,m+3 melihat bahwa blok Br telah dihasilkan pada langkah sebelumnya s′, maka dia melanjutkan seperti dijelaskan di atas. Jika tidak, daripada mengirim pesan yang sama yang akan dia kirimkan pada langkah m BBA⋆, i adalah diinstruksikan, berdasarkan informasi yang dimilikinya, untuk menghitung Br dan korespondennya sertifikat CERT r. Ingatlah, faktanya, kita melakukan batas atas sebesar m + 3 jumlah total langkah dalam satu putaran. 5.4 Protokol Aktual Ingatlah bahwa, pada setiap langkah s pada putaran r, pemverifikasi i \(\in\)SV r,s menggunakan pasangan kunci rahasia publik jangka panjangnya untuk menghasilkan kredensialnya, \(\sigma\)r,s saya \(\triangleq\)SIGi(r, s, Qr−1), serta SIGi Qr−1 dalam kasus s = 1. Pemverifikasi i menggunakan kunci rahasia singkatnya skr,s saya untuk menandatangani (r, s) -pesannya tuan, s saya. Untuk mempermudah, kapan r dan s adalah jelas, kami menulis esigi(x) daripada sigpkr,s i (x) untuk menunjukkan tanda tangan sementara yang tepat dari suatu nilai x pada langkah s putaran r, dan tulis ESIGi(x) sebagai ganti SIGpkr,s i (x) untuk menyatakan (i, x, esigi(x)). Langkah 1: Blokir Proposal Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkah 1 pada putaran r segera setelah dia tahu Br−1. • Pengguna i menghitung Qr−1 dari komponen ketiga Br−1 dan memeriksa apakah i \(\in\)SV r,1 atau tidak. • Jika i /\(\in\)SV r,1, maka i segera menghentikan pelaksanaan Langkah 1. • Jika i \(\in\)SV r,1, yaitu jika i adalah calon pemimpin, maka ia mengumpulkan pembayaran putaran-r yang telah telah disebarkan kepadanya sejauh ini dan menghitung pembayaran maksimal PAY r saya dari mereka. Selanjutnya, dia menghitung “blok kandidatnya” Br i = (r, BAYAR r saya , SIGi(Qr−1), H(Br−1)). Akhirnya, dia menghitung pesannya pak,1 saya = (Sdr saya , esigi(H(Br saya )), \(\sigma\)r,1 i ), menghancurkan skr kunci rahasia fana miliknya,1 saya, dan kemudian menyebarkan Tuan,1 saya.Komentar. Dalam praktiknya, untuk mempersingkat pelaksanaan global Langkah 1, penting bahwa (r, 1)- pesan disebarkan secara selektif. Artinya, untuk setiap pengguna i dalam sistem, untuk yang pertama (r, 1)- pesan yang pernah dia terima dan berhasil diverifikasi,17 pemain saya menyebarkannya seperti biasa. Untuk semua other (r, 1)-pesan yang diterima dan berhasil diverifikasi oleh pemain i, ia menyebarkannya hanya jika hash nilai kredensial yang dikandungnya adalah yang terkecil di antara hash nilai kredensial yang dikandungnya di semua (r, 1)-pesan yang dia terima dan berhasil diverifikasi sejauh ini. Selanjutnya seperti yang disarankan oleh Georgios Vlachos, akan bermanfaat jika setiap calon pemimpin i juga menyebarkan kredensialnya \(\sigma\)r,1 saya secara terpisah: pesan-pesan kecil tersebut berjalan lebih cepat daripada blok, memastikan penyebaran mr,1 secara tepat waktu j's di mana kredensial yang terkandung memiliki nilai hash yang kecil, sedangkan kredensial yang terkandung memiliki nilai hash yang besar menghilang dengan cepat. Langkah 2: Langkah Pertama dari Protokol Konsensus Bertingkat GC Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkah 2 pada putaran r segera setelah dia tahu Br−1. • Pengguna i menghitung Qr−1 dari komponen ketiga Br−1 dan memeriksa apakah i \(\in\)SV r,2 atau tidak. • Jika i /\(\in\)SV r,2 maka i menghentikan eksekusi Langkah 2 segera. • Jika i \(\in\)SV r,2, maka setelah menunggu beberapa waktu t2 \(\triangleq\) \(\lambda\) + Λ, i bertindak sebagai berikut. 1. Dia menemukan pengguna \(\ell\)sehingga H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) untuk semua kredensial \(\sigma\)r,1 j itu adalah bagian dari pesan (r, 1) yang berhasil diverifikasi yang dia terima sejauh ini.a 2. Jika dia telah menerima dari \(\ell\)pesan yang valid, Tuan,1 \(\ell\) = (Sdr \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),b lalu saya set v′ i \(\triangleq\)H(Br \(\ell\)); jika tidak, saya menetapkan v′ saya \(\triangleq\) \(\bot\). 3. saya menghitung pesan mr,2 saya \(\triangleq\)(ESIGi(v′ saya), \(\sigma\)r,2 i ),c menghancurkan kunci rahasia fananya skr,2 i , dan kemudian menyebarkan mr,2 saya. aPada dasarnya, pengguna i secara pribadi memutuskan bahwa pemimpin putaran r adalah pengguna \(\ell\). bSekali lagi, tanda tangan pemain \(\ell\) dan hashes semuanya berhasil diverifikasi, dan MEMBAYAR r \(\ell\)di Br \(\ell\)adalah pembayaran yang valid untuk putaran r —walaupun saya tidak memeriksa apakah MEMBAYAR r \(\ell\)maksimal untuk \(\ell\)atau tidak. cPesan Pak,2 saya menandakan pemain yang saya anggap v′ saya menjadi hash blok berikutnya, atau mempertimbangkan blok berikutnya blok menjadi kosong. 17Artinya, semua tanda tangan sudah benar dan blok serta hash-nya valid —walaupun saya tidak memeriksanya apakah payset yang disertakan sudah maksimal bagi pengusulnya atau tidak.
Langkah 3: Langkah Kedua GC Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkah ke-3 pada putaran r segera setelah dia tahu Br−1. • Pengguna i menghitung Qr−1 dari komponen ketiga Br−1 dan memeriksa apakah i \(\in\)SV r,3 atau tidak. • Jika i /\(\in\)SV r,3, maka i menghentikan eksekusi Langkah 3 segera. • Jika i \(\in\)SV r,3, maka setelah menunggu beberapa saat t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ, i bertindak sebagai berikut. 1. Jika terdapat nilai v′ ̸= \(\bot\)sehingga, di antara semua pesan valid mr,2 j dia telah menerima, lebih dari 2/3nya berbentuk (ESIGj(v′), \(\sigma\)r,2 j ), tanpa kontradiksi,a lalu dia menghitung pesan mr,3 saya \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 saya ). Jika tidak, dia menghitung mr,3 saya \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 saya ). 2. aku menghancurkan skr kunci rahasianya yang fana,3 i , dan kemudian menyebarkan mr,3 saya. aArtinya, dia belum menerima dua pesan valid yang masing-masing berisi ESIGj(v′) dan ESIGj(v′′) yang berbeda, dari pemain j. Di sini dan mulai sekarang, kecuali dalam Kondisi Akhir yang ditentukan nanti, kapan pun pemain jujur menginginkan pesan dalam bentuk tertentu, pesan yang bertentangan satu sama lain tidak pernah dihitung atau dianggap valid.Langkah 4: Keluaran GC dan Langkah Pertama BBA⋆ Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkah 4 pada putaran r segera setelah dia tahu Br−1. • Pengguna i menghitung Qr−1 dari komponen ketiga Br−1 dan memeriksa apakah i \(\in\)SV r,4 atau tidak. • Jika i /\(\in\)SV r,4, maka i menghentikan eksekusi Langkah 4 dengan segera. • Jika i \(\in\)SV r,4, maka setelah menunggu beberapa saat t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ, i bertindak sebagai berikut. 1. Dia menghitung vi dan gi, keluaran dari GC, sebagai berikut. (a) Jika terdapat nilai v′ ̸= \(\bot\)sehingga, di antara semua pesan valid mr,3 j dia punya diterima, lebih dari 2/3nya berbentuk (ESIGj(v′), \(\sigma\)r,3 j ), lalu dia mengatur vi \(\triangleq\)v′ dan gi \(\triangleq\)2. (b) Sebaliknya, jika terdapat nilai v′ ̸= \(\bot\)sehingga, di antara semua pesan yang valid Tuan,3 j diterimanya, lebih dari 1/3nya berbentuk (ESIGj(v′), \(\sigma\)r,3 j ), lalu dia menetapkan vi \(\triangleq\)v′ dan gi \(\triangleq\)1.a (c) Jika tidak, ia menetapkan vi \(\triangleq\)H(Br ǫ ) dan gi \(\triangleq\)0. 2. Dia menghitung bi, masukan dari BBA⋆, sebagai berikut: bi \(\triangleq\)0 jika gi = 2, dan bi \(\triangleq\)1 jika tidak. 3. Dia menghitung pesan mr,4 saya \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), menghancurkan kefanaannya kunci rahasia skr,4 i , dan kemudian menyebarkan mr,4 saya. aDapat dibuktikan bahwa v′ pada kasus (b), jika ada, pasti unik.
Langkah s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Langkah BBA⋆ Koin-Tetap-Ke-0 Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkahnya sendiri pada putaran r segera setelah dia tahu Br−1. • Pengguna i menghitung Qr−1 dari komponen ketiga Br−1 dan memeriksa apakah i \(\in\)SV r,s. • Jika i /\(\in\)SV r,s, maka i menghentikan eksekusi Langkah s-nya segera. • Jika i \(\in\)SV r,s maka ia bertindak sebagai berikut. – Dia menunggu hingga selang waktu ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ berlalu. – Kondisi Akhir 0: Jika, selama penantian tersebut dan pada suatu waktu tertentu, terdapat a string v ̸= \(\bot\)dan langkah s′ sedemikian rupa sehingga (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 —yaitu, Langkah s′ adalah langkah Koin-Tetap-Ke-0, (b) saya telah menerima setidaknya tH = 2n 3 + 1 pesan valid tuan,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),a dan (c) Saya telah menerima pesan yang valid, Tuan,1 j = (Sdr j , esigj(H(Br j )), \(\sigma\)r,1 j ) dengan v = H(Br j ), kemudian, saya langsung menghentikan eksekusi Langkah s (dan faktanya putaran r) tanpanya menyebarkan apa pun; himpunan Br = Br j ; dan menetapkan CERT r miliknya sendiri menjadi kumpulan pesan Tuan, s′−1 j dari sub-langkah (b).b – Kondisi Akhir 1: Jika, selama penantian tersebut dan pada suatu waktu tertentu, terdapat a langkah s′ seperti itu (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 —yaitu, Langkah s′ adalah langkah Koin-Tetap-Ke-1, dan (b') saya telah menerima setidaknya pesan yang valid tuan,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),c kemudian, saya langsung menghentikan eksekusi Langkah s (dan faktanya putaran r) tanpanya menyebarkan apa pun; himpunan Br = Br ; dan menetapkan CERT r miliknya sendiri menjadi kumpulan pesan Tuan, s′−1 j dari sub-langkah (b'). – Jika tidak, di akhir penantian, pengguna i akan melakukan hal berikut. Ia menetapkan vi sebagai suara terbanyak dari vj pada komponen kedua dari semua yang sah Tuan, s−1 j itu yang dia terima. Dia menghitung bi sebagai berikut. Jika lebih dari 2/3 dari seluruh mr,s−1 yang valid j yang dia terima adalah dalam bentuk (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia menetapkan bi \(\triangleq\)0. Lain, jika lebih dari 2/3 dari seluruh mr,s−1 yang valid j yang dia terima adalah dalam bentuk (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia menetapkan bi \(\triangleq\)1. Jika tidak, dia menetapkan bi \(\triangleq\)0. Dia menghitung pesan mr, s saya \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), menghancurkan kefanaannya kunci rahasia skr,s i , dan kemudian menyebarkan mr,s saya. aPesan seperti itu dari pemain j dihitung meskipun pemain i juga menerima pesan dari j yang menandatangani untuk 1. Hal serupa untuk Kondisi Akhir 1. Seperti yang ditunjukkan dalam analisis, hal ini dilakukan untuk memastikan bahwa semua pengguna yang jujur mengetahuinya Br dalam waktu \(\lambda\) satu sama lain. pengguna saya sekarang mengetahui Br dan penyelesaian putarannya sendiri. Dia masih membantu menyebarkan pesan sebagai pengguna umum, tapi tidak memulai propagasi apa pun sebagai pemverifikasi (r, s). Secara khusus, dia telah membantu menyebarkan semua pesan di dalamnya CERT r, yang cukup untuk protokol kami. Perhatikan bahwa ia juga harus menetapkan bi \(\triangleq\)0 untuk protokol biner BA, tetapi bi tidak diperlukan dalam kasus ini. Hal serupa untuk semua instruksi di masa depan. cDalam hal ini, tidak menjadi masalah apa pun vjnya.Langkah s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Langkah BBA⋆ Koin-Tetap-Ke-1 Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkahnya sendiri pada putaran r segera setelah dia tahu Br−1. • Pengguna i menghitung Qr−1 dari komponen ketiga Br−1 dan memeriksa apakah i \(\in\)SV r,s atau tidak. • Jika i /\(\in\)SV r,s, maka i menghentikan eksekusi Langkah s-nya segera. • Jika i \(\in\)SV r,s maka ia melakukan hal berikut. – Dia menunggu hingga selang waktu ts \(\triangleq\)(2s −3)\(\lambda\) + Λ telah berlalu. – Kondisi Akhir 0: Instruksi yang sama seperti langkah Coin-Fixed-To-0. – Kondisi Akhir 1: Instruksi yang sama seperti langkah Coin-Fixed-To-0. – Jika tidak, di akhir penantian, pengguna i akan melakukan hal berikut. Ia menetapkan vi sebagai suara terbanyak dari vj pada komponen kedua dari semua yang sah Tuan, s−1 j itu yang dia terima. Dia menghitung bi sebagai berikut. Jika lebih dari 2/3 dari seluruh mr,s−1 yang valid j yang dia terima adalah dalam bentuk (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia menetapkan bi \(\triangleq\)0. Lain, jika lebih dari 2/3 dari seluruh mr,s−1 yang valid j yang dia terima adalah dalam bentuk (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia menetapkan bi \(\triangleq\)1. Jika tidak, dia menetapkan bi \(\triangleq\)1. Dia menghitung pesan mr, s saya \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), menghancurkan kefanaannya kunci rahasia skr,s i , dan kemudian menyebarkan mr,s saya.
Langkah s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Langkah BBA⋆ yang Benar-Benar Dibalik Koin Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkahnya sendiri pada putaran r segera setelah dia tahu Br−1. • Pengguna i menghitung Qr−1 dari komponen ketiga Br−1 dan memeriksa apakah i \(\in\)SV r,s atau tidak. • Jika i /\(\in\)SV r,s, maka i menghentikan eksekusi Langkah s-nya segera. • Jika i \(\in\)SV r,s maka ia melakukan hal berikut. – Dia menunggu hingga selang waktu ts \(\triangleq\)(2s −3)\(\lambda\) + Λ telah berlalu. – Kondisi Akhir 0: Instruksi yang sama seperti langkah Coin-Fixed-To-0. – Kondisi Akhir 1: Instruksi yang sama seperti langkah Coin-Fixed-To-0. – Jika tidak, di akhir penantian, pengguna i akan melakukan hal berikut. Ia menetapkan vi sebagai suara terbanyak dari vj pada komponen kedua dari semua yang sah Tuan, s−1 j itu yang dia terima. Dia menghitung bi sebagai berikut. Jika lebih dari 2/3 dari seluruh mr,s−1 yang valid j yang dia terima adalah dalam bentuk (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia menetapkan bi \(\triangleq\)0. Lain, jika lebih dari 2/3 dari seluruh mr,s−1 yang valid j yang dia terima adalah dalam bentuk (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia menetapkan bi \(\triangleq\)1. Jika tidak, misalkan SV r,s−1 saya menjadi himpunan (r, s −1)-pengukur yang darinya ia menerima valid pesan tuan, s−1 j . Dia menetapkan bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 saya H(\(\sigma\)r,s−1 j )). Dia menghitung pesan mr, s saya \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), menghancurkan kefanaannya kunci rahasia skr,s i , dan kemudian menyebarkan mr,s saya.
Langkah m + 3: Langkah Terakhir BBA⋆a Petunjuk untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkahnya sendiri m + 3 putaran r segera setelah dia tahu Br−1. • Pengguna i menghitung Qr−1 dari komponen ketiga Br−1 dan memeriksa apakah i \(\in\)SV r,m+3 atau tidak. • Jika i /\(\in\)SV r,m+3, maka i menghentikan eksekusi Langkah m + 3 segera. • Jika i \(\in\)SV r,m+3 maka ia melakukan hal berikut. – Dia menunggu sampai selang waktu tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ telah berlalu. – Kondisi Akhir 0: Instruksi yang sama seperti langkah Coin-Fixed-To-0. – Kondisi Akhir 1: Instruksi yang sama seperti langkah Coin-Fixed-To-0. – Jika tidak, di akhir penantian, pengguna i akan melakukan hal berikut. Dia menetapkan outi \(\triangleq\)1 dan Br \(\triangleq\)Br . Dia menghitung pesan mr,m+3 saya = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 saya ), menghancurkan miliknya kunci rahasia sementara skr,m+3 saya , dan kemudian menyebarkan mr,m+3 saya untuk mensertifikasi Br.b aDengan kemungkinan besar BBA⋆telah berakhir sebelum langkah ini, dan kami menetapkan langkah ini sebagai penyelesaian. sertifikat bA dari Langkah m + 3 tidak harus menyertakan ESIGi(outi). Kami menyertakannya untuk keseragaman saja: the sertifikat kini memiliki format yang seragam, apa pun langkah pembuatannya.Rekonstruksi Blok Round-r oleh Non-Verifiers Petunjuk untuk setiap pengguna i dalam sistem: Pengguna i memulai putarannya sendiri r segera setelah dia mengetahuinya Br−1, dan tunggu informasi blok sebagai berikut. – Jika, selama penantian tersebut dan pada suatu waktu tertentu, terdapat string v dan langkah s′ seperti itu itu (a) 5 \(\leq\)s′ \(\leq\)m + 3 dengan s′ −2 ≡0 mod 3, (b) saya telah menerima setidaknya pesan yang valid tuan,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ), dan (c) Saya telah menerima pesan yang valid, Tuan,1 j = (Sdr j , esigj(H(Br j )), \(\sigma\)r,1 j ) dengan v = H(Br j ), kemudian, saya segera menghentikan eksekusi putaran r-nya sendiri; himpunan Br = Br j; dan menetapkan CERT r-nya sendiri menjadi himpunan pesan mr,s′−1 j dari sub-langkah (b). – Jika, selama penantian tersebut dan pada suatu waktu tertentu, terdapat langkah s′ sedemikian rupa sehingga (a’) 6 \(\leq\)s′ \(\leq\)m + 3 dengan s′ −2 ≡1 mod 3, dan (b') saya telah menerima setidaknya pesan yang valid tuan,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ), kemudian, saya segera menghentikan eksekusi putaran r-nya sendiri; himpunan Br = Br ; dan menetapkan CERT r-nya sendiri menjadi himpunan pesan mr,s′−1 j dari sub-langkah (b'). – Jika, selama penantian tersebut dan pada suatu waktu, saya telah menerima setidaknya pesan yang valid Tuan, m+3 j = (ESIGj(1), ESIGj(H(Br ǫ )), \(\sigma\)r,m+3 j ), lalu saya menghentikan eksekusinya sendiri pada putaran r segera, himpunan Br = Br ǫ , dan menetapkan CERT r miliknya sendiri menjadi kumpulan pesan mr,m+3 j untuk 1 dan H(Br ). 5.5 Analisis Algorand′ 1 Kami memperkenalkan notasi berikut untuk setiap putaran r \(\geq\)0, yang digunakan dalam analisis. • Misalkan T r adalah waktu ketika pengguna pertama yang jujur mengetahui Br−1. • Misalkan Ir+1 adalah interval [T r+1, T r+1 + \(\lambda\)]. Perhatikan bahwa T 0 = 0 dengan inisialisasi protokol. Untuk setiap s \(\geq\)1 dan i \(\in\)SV r,s, ingat kembali hal tersebut \(\alpha\)r,s saya dan \(\beta\)r,s saya masing-masing adalah waktu mulai dan waktu berakhirnya langkah pemain i. Selain itu, ingat bahwa ts = (2s −3)\(\lambda\) + Λ untuk setiap 2 \(\leq\)s \(\leq\)m + 3. Sebagai tambahan, misalkan I0 \(\triangleq\){0} dan t1 \(\triangleq\)0. Terakhir, ingatlah bahwa Lr \(\leq\)m/3 adalah variabel acak yang mewakili jumlah percobaan Bernoulli diperlukan untuk melihat angka 1, ketika setiap percobaan adalah 1 dengan probabilitas ph 2 dan paling banyak terdapat m/3 percobaan. Jika semua uji coba gagal maka Lr \(\triangleq\)m/3. Dalam analisis kami mengabaikan waktu komputasi, karena pada kenyataannya waktu tersebut dapat diabaikan dibandingkan dengan waktu yang dibutuhkan untuk menyebarkan pesan. Bagaimanapun, dengan menggunakan \(\lambda\) dan Λ yang sedikit lebih besar, waktu komputasi bisa dimasukkan ke dalam analisis secara langsung. Sebagian besar pernyataan di bawah ini menyatakan “dengan luar biasa probabilitasnya,” dan kami mungkin tidak berulang kali menekankan fakta ini dalam analisis.5.6 Teorema Utama Teorema 5.1. Properti berikut ini memiliki probabilitas yang sangat besar untuk setiap putaran r \(\geq\)0: 1. Semua pengguna yang jujur menyetujui blok yang sama Br. 2. Ketika pemimpin \(\ell\)r jujur, blok Br dihasilkan oleh \(\ell\)r, Br berisi payset maksimal diterima oleh \(\ell\)r pada waktu \(\alpha\)r,1 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ dan semua pengguna yang jujur mengetahui Br pada waktunya interval Ir+1. 3. Ketika pemimpin \(\ell\)r jahat, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ dan semua pengguna yang jujur mengetahui Br dalam selang waktu Ir+1. 4. ph = h2(1 + h −h2) untuk Lr, dan pemimpin \(\ell\)r jujur dengan probabilitas paling sedikit ph. Sebelum membuktikan teorema utama kita, mari kita buat dua catatan. Perkataan. • Pembuatan Blok dan Latensi Sejati. Waktu untuk membangkitkan blok Br didefinisikan sebagai T r+1 −T r. Artinya, ini didefinisikan sebagai perbedaan antara pertama kali beberapa pengguna yang jujur mempelajari Br dan pertama kalinya beberapa pengguna yang jujur mempelajari Br−1. Ketika pemimpin putaran-r jujur, Properti 2 milik kita teorema utama menjamin bahwa waktu yang tepat untuk menghasilkan Br adalah waktu 8\(\lambda\) + Λ, tidak peduli berapa pun nilai yang tepat dari h > 2/3 mungkin. Ketika pemimpinnya jahat, Properti 3 menyiratkan bahwa waktu yang diharapkan untuk menghasilkan Br dibatasi oleh ( 12 ph + 10)\(\lambda\) + Λ, sekali lagi tidak peduli berapa tepatnya nilai h.18 Namun, waktu yang diharapkan untuk menghasilkan Br bergantung pada nilai h yang tepat. Memang benar, berdasarkan Sifat 4, ph = h2(1 + h −h2) dan pemimpinnya jujur dengan probabilitas paling sedikit ph, dengan demikian E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8\(\lambda\) + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)\(\lambda\) + Λ). Misalnya, jika h = 80%, maka E[T r+1 −T r] \(\leq\)12.7\(\lambda\) + Λ. • \(\lambda\) vs. Λ. Perhatikan bahwa ukuran pesan yang dikirim oleh verifikasi pada langkah Algorand ′ didominasi berdasarkan panjang kunci tanda tangan digital, yang dapat tetap, meskipun jumlahnya pengguna sangatlah besar. Perhatikan juga bahwa, pada setiap langkah s > 1, jumlah n verifikator yang diharapkan sama dapat digunakan apakah jumlah penggunanya 100K, 100M, atau 100M. Hal ini terjadi karena n semata-mata bergantung pada h dan F. Oleh karena itu, kecuali ada kebutuhan mendadak untuk menambah panjang kunci rahasia, nilai \(\lambda\) harus tetap sama tidak peduli seberapa besar jumlah pengguna di dalamnya masa depan yang dapat diperkirakan. Sebaliknya, untuk tingkat transaksi apa pun, jumlah transaksi bertambah seiring dengan jumlah pengguna. Oleh karena itu, untuk memproses semua transaksi baru secara tepat waktu, ukuran satu blok harus tepat juga bertambah seiring dengan jumlah pengguna, menyebabkan Λ pun bertambah. Jadi, dalam jangka panjang, kita harus melakukannya \(\lambda\) << Λ. Oleh karena itu, wajar jika memiliki koefisien yang lebih besar untuk \(\lambda\), dan sebenarnya koefisien dari 1 untuk Λ. Bukti Teorema 5.1. Kami membuktikan Properti 1–3 dengan induksi: dengan asumsi properti tersebut berlaku untuk putaran r −1 (tanpa kehilangan keumumannya, mereka secara otomatis berlaku untuk “putaran -1” ketika r = 0), kami membuktikannya putaran r. 18Memang benar, E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10)\(\lambda\) + Λ.Karena Br−1 didefinisikan secara unik oleh hipotesis induktif, himpunan SV r,s didefinisikan secara unik untuk setiap langkah s pada putaran r. Dengan pilihan n1, SV r,1 ̸= \(\emptyset\)dengan probabilitas yang sangat besar. Kami sekarang nyatakan dua lemma berikut, dibuktikan dalam Bagian 5.7 dan 5.8. Sepanjang induksi dan masuk pembuktian kedua lemma, analisa putaran 0 hampir sama dengan langkah induktif, dan kami akan menyoroti perbedaannya ketika hal itu terjadi. Lemma 5.2. [Lemma Kelengkapan] Dengan Asumsi Properti 1–3 berlaku untuk ronde r−1, saat menjadi pemimpin \(\ell\)r jujur, dengan kemungkinan yang sangat besar, • Semua pengguna yang jujur menyetujui blok Br yang sama, yang dihasilkan oleh \(\ell\)r dan berisi maksimal payset diterima oleh \(\ell\)r pada waktu \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; dan • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ dan semua pengguna yang jujur mengetahui Br pada interval waktu Ir+1. Lemma 5.3. [Lemma Kesehatan] Dengan Asumsi Properti 1–3 berlaku untuk ronde r −1, saat menjadi pemimpin \(\ell\)r berbahaya, dengan kemungkinan besar, semua pengguna jujur menyetujui blok yang sama Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ dan semua pengguna yang jujur mengetahui Br dalam interval waktu Ir+1. Sifat 1–3 berlaku dengan menerapkan Lemmas 5.2 dan 5.3 pada r = 0 dan pada langkah induktif. Akhirnya, kami menyatakan kembali Properti 4 sebagai lemma berikut, dibuktikan di Bagian 5.9. Lemma 5.4. Sifat yang diberikan 1–3 untuk setiap putaran sebelum r, ph = h2(1 + h −h2) untuk Lr, dan pemimpin \(\ell\)r jujur dengan probabilitas setidaknya ph. Dengan menggabungkan ketiga lemma di atas, Teorema 5.1 berlaku. ■ Lemma di bawah menyatakan beberapa sifat penting tentang putaran r mengingat induktifnya hipotesis, dan akan digunakan dalam pembuktian ketiga lemma di atas. Lemma 5.5. Asumsikan Properti 1–3 berlaku untuk putaran r −1. Untuk setiap langkah s \(\geq\)1 putaran r dan setiap pemverifikasi jujur saya \(\in\)HSV r,s, kami punya itu (a) \(\alpha\)r,s saya \(\in\)Ir; (b) jika pemain i telah menunggu selama beberapa waktu ts, maka \(\beta\)r,s saya \(\in\)[T r + ts, T r + \(\lambda\) + ts] untuk r > 0 dan \(\beta\)r, s saya = ts untuk r = 0; dan (c) jika pemain i telah menunggu selama beberapa waktu ts, maka dalam waktu \(\beta\)r,s i, dia telah menerima semua pesan dikirim oleh semua verifikator yang jujur j \(\in\)HSV r,s′ untuk semua langkah s′ < s. Selain itu, untuk setiap langkah s \(\geq\)3, kita memilikinya (d) tidak terdapat dua pemain berbeda i, i′ \(\in\)SV r,s dan dua nilai berbeda v, v′ yang sama panjangnya, sehingga kedua pemain telah menunggu sejumlah waktu ts, lebih dari 2/3 dari keseluruhan waktu pesan yang valid tuan,s−1 j pemain yang saya terima telah menandatangani v, dan lebih dari 2/3 dari semuanya valid pesan tuan, s−1 j pemain yang saya terima telah menandatangani v ′. Bukti. Properti (a) mengikuti langsung hipotesis induktif, karena pemain i mengetahui Br−1 di interval waktu Ir dan segera memulai langkahnya sendiri. Properti (b) mengikuti langsung dari (a): sejak pemain saya telah menunggu beberapa saat sebelum bertindak, \(\beta\)r,s saya = \(\alpha\)r,s saya + ts. Perhatikan bahwa \(\alpha\)r,s saya = 0 untuk r = 0. Sekarang kita buktikan Properti (c). Jika s = 2, maka berdasarkan Properti (b), untuk semua verifikasi j \(\in\)HSV r,1 kita punya \(\beta\)r, s saya = \(\alpha\)r,s saya + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j + Λ.Karena setiap verifier j \(\in\)HSV r,1 mengirimkan pesannya pada waktu \(\beta\)r,1 j dan pesannya sampai kepada semua orang dengan jujur pengguna paling banyak dalam waktu Λ, dalam waktu \(\beta\)r,s saya pemain saya telah menerima pesan yang dikirim oleh semua verifikator masuk HSV r,1 sesuai keinginan. Jika s > 2, maka ts = ts−1 + 2\(\lambda\). Berdasarkan Properti (b), untuk semua langkah s′ < s dan semua verifikasi j \(\in\)HSV r,s′, \(\beta\)r, s saya = \(\alpha\)r,s saya + ts \(\geq\)T r + ts = T r + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = T r + \(\lambda\) + ts′ + \(\lambda\) \(\geq\) \(\beta\)r,s′ j + \(\lambda\). Karena setiap verifier j \(\in\)HSV r,s′ mengirimkan pesannya pada waktu \(\beta\)r,s′ j dan pesannya sampai kepada semua orang dengan jujur pengguna paling banyak dalam waktu \(\lambda\), dalam waktu \(\beta\)r,s saya pemain saya telah menerima semua pesan yang dikirim oleh semua verifikasi yang jujur dalam HSV r,s′ untuk semua s′ < s. Dengan demikian Properti (c) berlaku. Terakhir, kita buktikan Properti (d). Perhatikan bahwa verifikator j \(\in\)SV r,s−1 menandatangani paling banyak dua hal Langkah s −1 menggunakan kunci rahasia sementaranya: nilai vj yang panjangnya sama dengan keluaran dari fungsi hash, dan juga sedikit bj \(\in\){0, 1} jika s −1 \(\geq\)4. Itu sebabnya dalam pernyataan lemma kita mengharuskan v dan v′ memiliki panjang yang sama: banyak verifier yang mungkin telah menandatangani kedua nilai hash v dan sedikit b, sehingga keduanya melewati ambang batas 2/3. Asumsikan demi kontradiksi bahwa terdapat verifier i, i′ dan nilai v, v′ yang diinginkan. Perhatikan bahwa beberapa pengverifikasi jahat di MSV r,s−1 mungkin telah menandatangani v dan v′, tetapi masing-masing verifikasi jujur pemverifikasi di HSV r,s−1 telah menandatangani paling banyak salah satunya. Berdasarkan Sifat (c), baik i maupun i′ telah diterima semua pesan yang dikirim oleh semua verifikator yang jujur di HSV r,s−1. Misalkan HSV r,s−1(v) adalah himpunan verifikator jujur (r, s −1) yang telah menandatangani v, MSV r,s−1 saya set dari pemverifikasi jahat (r, s −1) yang darinya saya telah menerima pesan yang valid, dan MSV r,s−1 saya (v) itu bagian dari MSV r,s−1 saya dari siapa saya menerima pesan yang sah penandatanganan v. Dengan persyaratan untuk aku dan v, kita punya rasio \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 saya (v)| |HSV r,s−1| + |MSV r,s−1 saya |
2 3. (1) Kami tampilkan dulu |MSV r,s−1 saya (v)| \(\leq\)|HSV r,s−1(v)|. (2) Dengan asumsi sebaliknya, berdasarkan hubungan antar parameter, dengan kemungkinan yang sangat besar |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 saya |, dengan demikian rasio < |HSV r,s−1(v)| + |MSV r,s−1 saya (v)| 3|MSV r,s−1 saya | < 2|MSV r,s−1 saya (v)| 3|MSV r,s−1 saya | \(\leq\)2 3, bertentangan dengan Ketimpangan 1. Selanjutnya, dengan Pertidaksamaan 1 yang kita dapatkan 2|HSV r,s−1| + 2|MSV r,s−1 saya | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 saya (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 saya | + |MSV r,s−1 saya (v)|. Dikombinasikan dengan Ketimpangan 2, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 saya (v)| \(\leq\)4|HSV r,s−1(v)|, yang menyiratkan |HSV r,s−1(v)| > 1 2|HSV r,s−1|.Demikian pula, dengan persyaratan untuk i′ dan v′, kita punya |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. Karena pemverifikasi yang jujur j \(\in\)HSV r,s−1 menghancurkan kunci rahasia sementaranya skr,s−1 j sebelum disebarkan pesannya, Musuh tidak dapat memalsukan tanda tangan j untuk nilai yang tidak ditandatangani oleh j setelahnya mengetahui bahwa j adalah pemverifikasi. Jadi, kedua pertidaksamaan di atas menyiratkan |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|, sebuah kontradiksi. Oleh karena itu, i, i′, v, v′ yang diinginkan tidak ada, dan Properti (d) dimiliki. ■ 5.7 Kelengkapan Lemma Lemma 5.2. [Lemma Kelengkapan, dinyatakan kembali] Dengan asumsi Properti 1–3 berlaku untuk putaran r−1, kapan pemimpinnya jujur, dengan kemungkinan besar, • Semua pengguna yang jujur menyetujui blok Br yang sama, yang dihasilkan oleh \(\ell\)r dan berisi maksimal payset diterima oleh \(\ell\)r pada waktu \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; dan • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ dan semua pengguna yang jujur mengetahui Br pada interval waktu Ir+1. Bukti. Berdasarkan hipotesis induktif dan Lemma 5.5, untuk setiap langkah s dan pemverifikasi i \(\in\)HSV r,s, \(\alpha\)r,s saya \(\in\)Ir. Di bawah ini kami menganalisis protokol langkah demi langkah. Langkah 1. Berdasarkan definisinya, setiap pemverifikasi yang jujur i \(\in\)HSV r,1 menyebarkan pesan yang diinginkan mr,1 saya di waktu \(\beta\)r,1 saya = \(\alpha\)r,1 saya , dimana tuan,1 saya = (Sdr saya , esigi(H(Br saya )), \(\sigma\)r,1 saya ), Sdr i = (r, BAYAR r saya , SIGi(Qr−1), H(Br−1)), dan MEMBAYAR r i adalah pembayaran maksimal di antara semua pembayaran yang telah saya lihat pada waktu \(\alpha\)r,1 saya. Langkah 2. Perbaiki secara sewenang-wenang pemverifikasi yang jujur i \(\in\)HSV r,2. Oleh Lemma 5.5, ketika pemain i selesai menunggu pada waktu \(\beta\)r,2 saya = \(\alpha\)r,2 saya + t2, dia telah menerima semua pesan yang dikirim oleh verifikator di HSV r,1, termasuk Tuan, 1 \(\ell\)r. Berdasarkan definisi \(\ell\)r, tidak ada pemain lain di PKr−k yang kredensialnya hash nilainya lebih kecil dari H(\(\sigma\)r,1 \(\ell\)r ). Tentu saja Musuh dapat merusak \(\ell\)r setelah melihat H(\(\sigma\)r,1 \(\ell\)r ) sangat kecil, tetapi pada saat itu pemain \(\ell\)r telah menghancurkan kunci sementaranya dan pesan mr,1 \(\ell\)r telah disebarkan. Jadi pemverifikasi saya menetapkan pemimpinnya sendiri menjadi pemain \(\ell\)r. Oleh karena itu, pada waktu \(\beta\)r,2 saya , pemverifikasi saya menyebarkan Pak,2 saya = (ESIGi(v′ saya), \(\sigma\)r,2 saya ), di mana v′ saya = H(Br \(\ell\)r). Ketika r = 0, satu-satunya perbedaan apakah itu \(\beta\)r,2 saya = t2 daripada berada dalam jangkauan. Hal serupa dapat dikatakan untuk langkah-langkah masa depan dan kita tidak akan menekankannya lagi. Langkah 3. Sewenang-wenang memperbaiki pemverifikasi yang jujur i \(\in\)HSV r,3. Oleh Lemma 5.5, ketika pemain i selesai menunggu pada waktu \(\beta\)r,3 saya = \(\alpha\)r,3 saya + t3, dia telah menerima semua pesan yang dikirim oleh verifikator di HSV r,2. Berdasarkan hubungan antar parameter, dengan probabilitas yang sangat besar |HSV r,2| > 2|MSV r,2|. Selain itu, tidak ada verifikasi yang jujur yang akan menandatangani pesan-pesan yang bertentangan, dan Musuh tidak dapat memalsukan tanda tangan pemeriksa yang jujur setelah pemeriksa tersebut memusnahkan tanda tangannya kunci rahasia sementara. Jadi lebih dari 2/3 dari semua pesan valid (r, 2) yang saya terima berasal dari verifikator yang jujur dan dalam bentuk Tuan,2 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,2 j ), tanpa kontradiksi. Oleh karena itu, pada waktu \(\beta\)r,3 saya pemain saya menyebarkan mr,3 saya = (ESIGi(v′), \(\sigma\)r,3 saya ), dimana v′ = H(Br \(\ell\)r).Langkah 4. Memperbaiki secara sewenang-wenang pemverifikasi yang jujur i \(\in\)HSV r,4. Dengan Lemma 5.5, pemain saya telah menerima semuanya pesan yang dikirim oleh verifikator di HSV r,3 setelah selesai menunggu pada waktu \(\beta\)r,4 saya = \(\alpha\)r,4 saya + t4. Mirip dengan Langkah 3, lebih dari 2/3 dari semua pesan valid (r, 3) yang saya terima berasal dari verifikator yang jujur dan dari bentuk tuan,3 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,3 j ). Oleh karena itu, pemain i menetapkan vi = H(Br \(\ell\)r), gi = 2 dan bi = 0. Pada waktu \(\beta\)r,4 saya = \(\alpha\)r,4 saya +t4 dia menyebar Tuan, 4 saya = (ESIGi(0), ESIGi(H(Br \(\ell\)r)), \(\sigma\)r,4 saya ). Langkah 5. Perbaiki secara sewenang-wenang pemverifikasi yang jujur i \(\in\)HSV r,5. Dengan Lemma 5.5, pemain yang saya inginkan menerima semua pesan yang dikirim oleh verifikator di HSV r,4 jika dia menunggu sampai waktu \(\alpha\)r,5 saya + t5. Perhatikan itu |HSV r,4| \(\geq\)tH.19 Perhatikan juga bahwa semua verifikator di HSV r,4 telah menandatangani H(Br \(\ell\)r). Sebagai |MSV r,4| < tH, tidak ada v′ ̸= H(Br \(\ell\)r) yang bisa saja ditandatangani oleh tH pemverifikasi di SV r,4 (yang tentu saja jahat), jadi pemain i tidak berhenti sebelum dia melakukannya menerima pesan yang valid, Tuan, 4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,4 j ). Biarkan T menjadi waktu kapan peristiwa terakhir terjadi. Beberapa pesan tersebut mungkin berasal dari pemain jahat, tetapi karena |MSV r,4| < tH, setidaknya salah satunya berasal dari verifikator yang jujur di HSV r,4 dan dikirim setelah waktu tertentu T r + t4. Oleh karena itu, T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, dan pada saat T pemain saya juga telah menerimanya pesannya pak,1 \(\ell\)r. Dengan konstruksi protokol, pemain i berhenti pada waktu \(\beta\)r,5 saya = T tanpa menyebarkan apa pun; himpunan Br = Br \(\ell\)r; dan menetapkan CERT r miliknya sendiri menjadi himpunan (r, 4)-pesan untuk 0 dan H(Br \(\ell\)r) yang diterimanya. Langkah s > 5. Demikian pula, untuk setiap langkah s > 5 dan setiap pemverifikasi i \(\in\)HSV r,s, pemain i akan memiliki menerima semua pesan yang dikirim oleh verifikator di HSV r,4 jika dia telah menunggu hingga waktu \(\alpha\)r,s saya + ts. Oleh analisa yang sama, pemain i berhenti tanpa menyebarkan apapun, setting Br = Br \(\ell\)r (dan mengatur sendiri CERT r dengan benar). Tentu saja, pemverifikasi jahat tidak boleh berhenti dan dapat menyebar secara sewenang-wenang pesan, tetapi karena |MSV r,s| < tH, dengan induksi tidak ada v′ lain yang dapat ditandatangani oleh pemeriksa tersebut pada setiap langkah 4 \(\leq\)s′ < s, sehingga verifikator yang jujur hanya berhenti karena mereka telah menerima validitas (r, 4)-pesan untuk 0 dan H(Br \(\ell\)r). Rekonstruksi Blok Round-r. Analisis pada Langkah 5 berlaku untuk kejujuran umum pengguna saya hampir tanpa perubahan apa pun. Memang, pemain i memulai putarannya sendiri r pada interval Ir dan hanya akan berhenti pada waktu T ketika dia telah menerima pesan (r, 4) yang valid untuk H(Br \(\ell\)r). Sekali lagi karena setidaknya satu dari pesan tersebut berasal dari verifikasi yang jujur dan dikirim setelah waktu T r + t4, pemain i punya juga menerima Tuan, 1 \(\ell\)r dengan waktu T. Jadi dia menetapkan Br = Br \(\ell\)r dengan CERT yang tepat r. Yang tersisa hanyalah menunjukkan bahwa semua pengguna yang jujur menyelesaikan putarannya r dalam interval waktu Ir+1. Berdasarkan analisis pada Langkah 5, setiap verifier yang jujur i \(\in\)HSV r,5 mengetahui Br pada atau sebelum \(\alpha\)r,5 saya + t5 \(\leq\) T r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ. Karena T r+1 adalah waktu ketika pengguna pertama yang jujur mengetahui Br, maka kita mengetahuinya T r+1 \(\leq\)T r + 8\(\lambda\) + Λ sesuai keinginan. Apalagi ketika pemain mengenal Br, dia sudah membantu menyebarkan pesan-pesan yang masuk CERT-nya r. Perhatikan bahwa semua pesan tersebut akan diterima oleh semua pengguna yang jujur dalam waktu \(\lambda\), meskipun 19Sebenarnya, hal ini terjadi dengan probabilitas yang sangat tinggi namun tidak terlalu besar. Namun, ini probabilitas sedikit mempengaruhi waktu berjalannya protokol, namun tidak mempengaruhi kebenarannya. Bila h = 80%, maka |HSV r,4| \(\geq\)tH dengan probabilitas 1 −10−8. Jika peristiwa ini tidak terjadi, maka protokol akan dilanjutkan ke peristiwa lain 3 langkah. Karena kemungkinan hal ini tidak terjadi pada dua langkah dapat diabaikan, maka protokol akan selesai pada Langkah 8. Dalam ekspektasinya, maka jumlah langkah yang dibutuhkan hampir 5.pemain saya adalah pemain pertama yang menyebarkannya. Apalagi berikut analisa diatas yang kami miliki T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, jadi semua pengguna jujur telah menerima mr,1 \(\ell\)r menurut waktu T r+1 + \(\lambda\). Oleh karena itu, semua pengguna yang jujur mengetahui Br dalam selang waktu Ir+1 = [T r+1, T r+1 + \(\lambda\)]. Terakhir, untuk r = 0 sebenarnya kita mempunyai T 1 \(\leq\)t4 + \(\lambda\) = 6\(\lambda\) + Λ. Menggabungkan semuanya bersama-sama, Lemma 5.2 berlaku. ■ 5.8 Lemma Kesehatan Lemma 5.3. [Lemma Kesehatan, dinyatakan kembali] Dengan asumsi Properti 1–3 berlaku untuk putaran r −1, kapan pemimpin \(\ell\)r jahat, dengan kemungkinan besar, semua pengguna jujur setuju pada blok yang sama Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ dan semua pengguna yang jujur mengetahui Br dalam selang waktu Ir+1. Bukti. Kami mempertimbangkan dua bagian protokol, GC dan BBA⋆, secara terpisah. hal. Berdasarkan hipotesis induktif dan Lemma 5.5, untuk setiap langkah s \(\in\){2, 3, 4} dan setiap langkah jujur pemverifikasi i \(\in\)HSV r,s, ketika pemain i bertindak pada waktu \(\beta\)r,s saya = \(\alpha\)r,s saya + ts, dia telah menerima semua pesan yang dikirim oleh semua pemverifikasi yang jujur pada langkah s′ < s. Kami membedakan dua kemungkinan kasus untuk langkah 4. Kasus 1. Tidak ada pemverifikasi i \(\in\)HSV r,4 menetapkan gi = 2. Dalam hal ini, menurut definisi bi = 1 untuk semua verifier i \(\in\)HSV r,4. Artinya, mereka memulai dengan kesepakatan pada 1 dalam protokol BA biner. Mereka mungkin tidak memiliki kesepakatan mengenai vi mereka, tapi ini tidak masalah seperti yang akan kita lihat di BA biner. Kasus 2. Terdapat pemverifikasi ˆi \(\in\)HSV r,4 sehingga gˆi = 2. Dalam hal ini, kami menunjukkan hal itu (1) gi \(\geq\)1 untuk semua i \(\in\)HSV r,4, (2) terdapat nilai v′ sehingga vi = v′ untuk semua i \(\in\)HSV r,4, dan (3) ada pesan yang valid mr,1 \(\ell\) dari beberapa pemverifikasi \(\ell\) \(\in\)SV r,1 sehingga v′ = H(Br \(\ell\)). Memang benar, karena pemain ˆi jujur dan menetapkan gˆi = 2, lebih dari 2/3 dari semua pesan valid mr,3 j yang dia terima adalah untuk nilai yang sama v′ ̸= \(\bot\), dan dia telah menetapkan vˆi = v′. Berdasarkan Sifat (d) dalam Lemma 5.5, untuk pemverifikasi i lainnya yang jujur (r, 4), tidak lebih dari itu. dari 2/3 dari semua pesan valid mr,3 j yang i′ terima bernilai sama v′′ ̸= v′. Oleh karena itu, jika saya menetapkan gi = 2, maka haruslah saya telah melihat > 2/3 mayoritas untuk v′ juga dan menetapkan vi = v′, sesuai keinginan. Sekarang pertimbangkan pemverifikasi sembarang i \(\in\)HSV r,4 dengan gi < 2. Mirip dengan analisis Properti (d) pada Lemma 5.5, karena pemain i telah memperoleh > 2/3 mayoritas untuk v′, lebih dari 1 2|HSV r,3| jujur (r, 3)-penguji telah menandatangani v′. Karena saya telah menerima semua pesan dari verifikasi yang jujur (r, 3). waktu \(\beta\)r,4 saya = \(\alpha\)r,4 saya + t4, dia secara khusus menerima lebih dari 1 2|HSV r,3| pesan dari mereka untuk v′. Karena |HSV r,3| > 2|MSV r,3|, saya telah melihat > 1/3 mayoritas untuk v′. Oleh karena itu, pemain i menetapkan gi = 1, dan Properti (1) berlaku. Apakah pemain i harus menyetel vi = v′? Asumsikan terdapat nilai yang berbeda v′′ ̸= \(\bot\)sehingga pemain yang saya juga lihat > 1/3 mayoritas untuk v′′. Beberapa dari pesan tersebut mungkin berasal dari pesan jahat penguji, tapi paling tidak salah satu dari mereka berasal dari penguji yang jujur j \(\in\)HSV r,3: tentu saja, karena |HSV r,3| > 2|MSV r,3| dan saya telah menerima semua pesan dari HSV r,3, kumpulan berbahaya pemverifikasi yang darinya saya menerima pesan valid (r, 3) dihitung < 1/3 dari semua pesan valid pesan yang dia terima.Berdasarkan definisi, pemain j harus melihat > 2/3 mayoritas untuk v′′ di antara semua pesan (r, 2) yang valid dia telah menerima. Namun, kami sudah mengetahui hal yang telah dilihat oleh beberapa pengverifikasi (r, 3) yang jujur 2/3 mayoritas untuk v′ (karena mereka menandatangani v′). Berdasarkan Sifat (d) Lemma 5.5, hal ini tidak bisa terjadi dan nilai v′′ seperti itu tidak ada. Jadi pemain i harus mengatur vi = v′ sesuai keinginan, dan Properti (2) dimiliki. Akhirnya, mengingat bahwa beberapa pengverifikasi (r, 3) yang jujur telah mendapatkan > 2/3 mayoritas untuk v′, beberapa (sebenarnya, lebih dari separuh) verifikator yang jujur (r, 2) telah menandatangani v′ dan menyebarkan pesan-pesan mereka. Dengan dibangunnya protokol tersebut, para verifikator yang jujur (r, 2) harus sudah mendapatkan surat keterangan yang sah pesan Pak, 1 \(\ell\) dari beberapa pemain \(\ell\) \(\in\)SV r,1 dengan v′ = H(Br \(\ell\)), dengan demikian Properti (3) berlaku. BBA⋆. Kami sekali lagi membedakan dua kasus. Kasus 1. Semua verifikator i \(\in\)HSV r,4 mempunyai bi = 1. Hal ini terjadi setelah Kasus 1 GC. Sebagai |MSV r,4| < tH, dalam hal ini tidak ada verifier di SV r,5 dapat mengumpulkan atau menghasilkan pesan yang valid (r, 4) untuk bit 0. Dengan demikian, tidak ada pemverifikasi yang jujur di HSV r,5 akan berhenti karena mengetahui blok yang tidak kosong Br. Selain itu, meskipun setidaknya ada pesan (r, 4) yang valid untuk bit 1, s′ = 5 tidak memuaskan s′ −2 ≡1 mod 3, sehingga tidak ada verifikator yang jujur di HSV r,5 yang akan berhenti karena dia mengetahui Br = Br . Sebaliknya, setiap pemverifikasi i \(\in\)HSV r,5 bertindak pada waktu \(\beta\)r,5 saya = \(\alpha\)r,5 saya + t5, saat dia telah menerima semuanya pesan yang dikirim oleh HSV r,4 mengikuti Lemma 5.5. Jadi pemain yang saya lihat > 2/3 mayoritas untuk 1 dan himpunan bi = 1. Pada Langkah 6 yang merupakan langkah Koin-Tetap-Ke-1, meskipun s′ = 5 memenuhi s′ −2 ≡0 mod 3, terdapat tidak ada pesan (r, 4) yang valid untuk bit 0, sehingga tidak ada pemverifikasi di HSV r,6 yang akan berhenti karena dia mengetahui blok yang tidak kosong Br. Namun, dengan s′ = 6, s′ −2 ≡1 mod 3 dan memang ada |HSV r,5| \(\geq\)tH valid (r, 5)-pesan untuk bit 1 dari HSV r,5. Untuk setiap verifier i \(\in\)HSV r,6, mengikuti Lemma 5.5, pada atau sebelum waktu \(\alpha\)r,6 saya + pemain t6 i telah menerima semua pesan dari HSV r,5, jadi saya berhenti tanpa menyebarkan apa pun dan menyetel Br = Br . CERT r-nya adalah kumpulan pesan (r, 5) yang valid mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j ) diterima olehnya ketika dia berhenti. Selanjutnya, biarkan pemain i menjadi pemverifikasi yang jujur pada langkah s > 6 atau pengguna umum yang jujur (yaitu, non-verifikasi). Mirip dengan pembuktian Lemma 5.2, pemain i menetapkan Br = Br ǫ dan menetapkan miliknya sendiri CERT r menjadi himpunan pesan (r, 5) yang valid mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j ) dia punya diterima. Terakhir, mirip dengan Lemma 5.2, Tr+1 \(\leq\) menit i\(\in\)HSV r,6 \(\alpha\)r,6 saya + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, dan semua pengguna jujur mengetahui Br pada interval waktu Ir+1, karena pengguna jujur pertama adalah siapa mengetahui Br telah membantu menyebarkan pesan (r, 5) di CERT r-nya. Kasus 2. Terdapat verifier ˆi \(\in\)HSV r,4 dengan bˆi = 0. Hal ini terjadi setelah Kasus 2 GC dan merupakan kasus yang lebih kompleks. Dengan analisis GC, dalam hal ini terdapat pesan yang valid mr,1 \(\ell\) sehingga vi = H(Br \(\ell\)) untuk semua i \(\in\)HSV r,4. Catatan bahwa pemverifikasi di HSV r,4 mungkin tidak memiliki kesepakatan mengenai bi mereka. Untuk setiap langkah s \(\in\){5, . . . , m + 3} dan pemverifikasi i \(\in\)HSV r,s, oleh pemain Lemma 5.5 saya akan memiliki menerima semua pesan yang dikirim oleh semua verifikator yang jujur di HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 jika dia telah menunggu untuk waktu ts.Sekarang kita perhatikan kejadian berikut E: terdapat langkah s∗\(\geq\)5 sehingga, untuk langkah pertama waktu dalam biner BA, beberapa pemain i∗\(\in\)SV r,s∗(baik jahat atau jujur) harus berhenti tanpa menyebarkan apa pun. Kita menggunakan “harus berhenti” untuk menekankan fakta bahwa, jika pemain i∗ berbahaya, maka dia mungkin berpura-pura tidak berhenti sesuai dengan protokol dan menyebarkan pesan pilihan Musuh. Apalagi dengan konstruksi protokolnya juga (E.a) i∗mampu mengumpulkan atau menghasilkan setidaknya pesan yang valid mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) untuk v dan s′ yang sama, dengan 5 \(\leq\)s′ \(\leq\)s∗dan s′ −2 ≡0 mod 3; atau (E.b) i∗mampu mengumpulkan atau menghasilkan setidaknya pesan yang valid mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ) untuk s′ yang sama, dengan 6 \(\leq\)s′ \(\leq\)s∗dan s′ −2 ≡1 mod 3. Karena pesan jujur (r, s′ −1) diterima oleh semua pemeriksa jujur (r, s′) sebelum mereka selesai menunggu di Langkah s′, dan karena Musuh menerima semuanya selambat-lambatnya pengguna yang jujur, tanpa kehilangan sifat umum yang kami miliki s′ = s∗dan pemain i∗berbahaya. Perhatikan itu kami tidak mengharuskan nilai v di E.a menjadi hash dari blok yang valid: karena akan menjadi jelas dalam analisis, v = H(Br \(\ell\)) dalam sub-acara ini. Di bawah ini pertama-tama kita menganalisis Kasus 2 setelah peristiwa E, dan kemudian menunjukkan bahwa nilai s∗ pada dasarnya adalah didistribusikan sesuai dengan Lr (jadi kejadian E terjadi sebelum Langkah m + 3 dengan luar biasa probabilitas mengingat hubungan untuk parameter). Pertama-tama, untuk setiap langkah 5 \(\leq\)s < s∗, setiap pemverifikasi yang jujur i \(\in\)HSV r,s telah menunggu waktu ts dan menetapkan vi sebagai suara terbanyak dalam pemilu. valid (r, s−1)-pesan yang diterimanya. Sejak pemain i telah menerima semua pesan jujur (r, s−1). mengikuti Lemma 5.5, karena semua verifikator yang jujur di HSV r,4 telah menandatangani H(Br \(\ell\)) Kasus berikut 2 dari GC, dan sejak |HSV r,s−1| > 2|MSV r,s−1| untuk setiap s, dengan induksi kita mempunyai pemain i telah ditetapkan vi = H(Br \(\ell\)). Hal yang sama berlaku untuk setiap verifikator yang jujur i \(\in\)HSV r,s∗yang tidak berhenti tanpa menyebarkan apa pun. Sekarang kita pertimbangkan Langkah s∗dan membedakan empat subkasus. Kasus 2.1.a. Peristiwa E.a terjadi dan terdapat pemverifikasi yang jujur i′ \(\in\)HSV r,s∗siapa yang harus juga berhenti tanpa menyebarkan apa pun. Dalam hal ini, kita mempunyai s∗−2 ≡0 mod 3 dan Langkah s∗adalah langkah Koin-Tetap-Ke-0. Oleh definisinya, pemain i′ telah menerima setidaknya pesan (r, s∗−1) yang valid dalam bentuk (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 j ). Karena semua verifikator di HSV r,s∗−1 telah menandatangani H(Br \(\ell\)) dan |MSV r,s∗−1| < tH, kita mempunyai v = H(Br \(\ell\)). Karena setidaknya tH −|MSV r,s∗−1| \(\geq\)1 dari (r, s∗−1)-pesan yang diterima oleh i′ untuk 0 dan v dikirim oleh verifikator di HSV r,s∗−1 setelah waktu T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\) +Λ, pemain saya′ telah menerima tuan,1 \(\ell\) pada saat dia menerima pesan (r, s∗−1) tersebut. Jadi pemain aku berhenti tanpa menyebarkan apa pun; himpunan Br = Br \(\ell\); dan menetapkan CERT r miliknya sendiri menjadi kumpulan pesan valid (r, s∗−1) untuk 0 dan v yang telah diterimanya. Selanjutnya, kami tunjukkan bahwa, pemverifikasi lainnya i \(\in\)HSV r,s∗telah berhenti dengan Br = Br \(\ell\), atau telah menetapkan bi = 0 dan menyebarkan (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s saya ). Memang, karena Langkah s∗ adalah pertama kalinya beberapa verifikator berhenti tanpa menyebarkan apa pun, ternyata tidak ada langkah s′ < s∗dengan s′ −2 ≡1 mod 3 sehingga pengverifikasi tH (r, s′ −1) telah menandatangani 1. Oleh karena itu, tidak ada verifikasi di HSV r,s∗berhenti dengan Br = Br .Terlebih lagi, seperti semua verifier yang jujur pada langkah {4, 5, . . . , s∗−1} telah menandatangani H(Br \(\ell\)), memang ada tidak ada langkah s′ \(\leq\)s∗dengan s′ −2 ≡0 mod 3 sehingga pengverifikasi tH (r, s′ −1) telah menandatangani beberapa v′′ ̸= H(Br \(\ell\)) —memang, |MSV r,s′−1| < th. Oleh karena itu, tidak ada pemverifikasi di HSV r,s∗stops dengan Br ̸= Br ǫ dan Br ̸= Br \(\ell\). Artinya, jika pemain i \(\in\)HSV r,s∗telah berhenti tanpa menyebarkan apa pun, dia pasti menetapkan Br = Br \(\ell\). Jika seorang pemain i \(\in\)HSV r,s∗telah menunggu waktu ts∗dan menyebarkan pesan pada waktu \(\beta\)r,s∗ saya = \(\alpha\)r,s∗ saya + ts∗, dia telah menerima semua pesan dari HSV r,s∗−1, termasuk setidaknya tH −|MSV r,s∗−1| dari mereka untuk 0 dan v. Jika saya melihat > 2/3 mayoritas untuk 1, maka dia telah melihat lebih dari 2(tH −|MSV r,s∗−1|) valid (r, s∗−1)-pesan untuk 1, dengan lebih banyak dari 2tH −3|MSV r,s∗−1| di antaranya dari pengverifikasi (r, s∗−1) yang jujur. Namun, hal ini menyiratkan |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, bertentangan fakta itu |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n, yang berasal dari hubungan untuk parameter. Oleh karena itu, saya tidak melihat > 2/3 mayoritas untuk 1, dan dia menetapkan bi = 0 karena Langkah s∗adalah langkah Koin-Tetap-Ke-0. Seperti yang kita miliki terlihat, vi = H(Br \(\ell\)). Jadi saya menyebarkan (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s i ) seperti yang kita inginkan menunjukkan. Untuk Langkah s∗+ 1, karena pemain i′ telah membantu menyebarkan pesan di CERT r-nya pada atau sebelum waktu \(\alpha\)r,s∗ saya′ + ts∗, semua verifikator yang jujur di HSV r,s∗+1 telah menerima setidaknya pesan (r, s∗−1) yang valid untuk bit 0 dan nilai H(Br \(\ell\)) pada atau sebelum selesai menunggu. Selanjutnya, pengverifikasi di HSV r,s∗+1 tidak akan berhenti sebelum menerima (r, s∗−1)- pesan, karena tidak ada pesan lain yang valid (r, s′ −1) untuk bit 1 dengan s′ −2 ≡1 mod 3 dan 6 \(\leq\)s′ \(\leq\)s∗+ 1, berdasarkan definisi Langkah s∗. Secara khusus, Langkah s∗+ 1 sendiri merupakan langkah Coin-Fixed-To-1, namun tidak ada verifier yang jujur di HSV r,s∗ yang telah disebarkan pesan untuk 1, dan |MSV r,s∗| < th. Jadi semua verifier yang jujur di HSV r,s∗+1 berhenti tanpa menyebarkan apa pun dan menetapkan Br = Sdr \(\ell\): seperti sebelumnya, mereka telah menerima tuan,1 \(\ell\) sebelum mereka menerima pesan (r, s∗−1) yang diinginkan.20 Hal yang sama juga berlaku untuk semua pemverifikasi yang jujur pada langkah selanjutnya dan semua pengguna yang jujur secara umum. Secara khusus, mereka semua mengetahui Br = Br \(\ell\)dalam selang waktu Ir+1 dan T r+1 \(\leq\) \(\alpha\)r,s∗ saya′ + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Kasus 2.1.b. Peristiwa E.b terjadi dan terdapat pemverifikasi yang jujur i′ \(\in\)HSV r,s∗siapa yang harus juga berhenti tanpa menyebarkan apa pun. Dalam hal ini kita mempunyai s∗−2 ≡1 mod 3 dan Langkah s∗adalah langkah Koin-Tetap-Ke-1. Analisisnya mirip dengan Kasus 2.1.a dan banyak rincian yang dihilangkan. 20Jika \(\ell\)berniat jahat, dia mungkin akan mengirim Tuan, 1 \(\ell\) terlambat, berharap beberapa pengguna/verifikasi yang jujur belum menerima mr,1 \(\ell\) belum ketika mereka menerima sertifikat yang diinginkan untuk itu. Namun, karena verifier ˆi \(\in\)HSV r,4 telah menetapkan bˆi = 0 dan vˆi = H(Br \(\ell\)), sebagai sebelum kita mengetahui bahwa lebih dari separuh pengverifikasi yang jujur i \(\in\)HSV r,3 telah menetapkan vi = H(Br \(\ell\)). Hal ini semakin menyiratkan lebih banyak lagi dari separuh pengverifikasi yang jujur i \(\in\)HSV r,2 telah menetapkan vi = H(Br \(\ell\)), dan (r, 2)-verifier semuanya telah menerima mr,1 \(\ell\). Sebagai Musuh tidak dapat membedakan verifikator dari non-verifikasi, ia tidak dapat menargetkan penyebaran mr,1 \(\ell\) ke (r, 2)-pengverifikasi tanpa orang yang bukan pemverifikasi melihatnya. Faktanya, dengan probabilitas tinggi, lebih dari setengah (atau pecahan konstan yang bagus) dari semua pengguna jujur telah melihat mr,1 \(\ell\) setelah menunggu t2 dari awal rondenya sendiri r. Mulai sekarang, itu waktu \(\lambda\)′ yang dibutuhkan untuk mr,1 \(\ell\) untuk menjangkau pengguna jujur lainnya jauh lebih kecil dari Λ, dan demi kesederhanaan, kami tidak melakukannya tuliskan dalam analisis. Jika 4\(\lambda\) \(\geq\) \(\lambda\)′ maka analisis berjalan tanpa perubahan apa pun: pada akhir Langkah 4, semua pengguna yang jujur akan menerima mr,1 \(\ell\). Jika ukuran balok menjadi sangat besar dan 4\(\lambda\) < \(\lambda\)′, maka pada Langkah 3 dan 4, protokol dapat meminta setiap pemverifikasi untuk menunggu \(\lambda\)′/2 daripada 2\(\lambda\), dan analisis terus berlanjut.Seperti sebelumnya, pemain i′ harus menerima setidaknya tH valid (r, s∗−1)-pesan dalam bentuk (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 j ). Sekali lagi berdasarkan definisi s∗, tidak ada langkah 5 \(\leq\)s′ < s∗dengan s′ −2 ≡0 mod 3, dimana setidaknya tH (r, s′ −1)-pengverifikasi telah menandatangani 0 dan v yang sama. Jadi pemain i′ berhenti tanpa menyebarkan apa pun; himpunan Br = Br ; dan set CERT r miliknya sendiri menjadi himpunan pesan valid (r, s∗−1) untuk bit 1 yang telah diterimanya. Selain itu, pemverifikasi i \(\in\)HSV r,s∗ lainnya telah berhenti pada Br = Br , atau telah menetapkan bi = 1 dan diperbanyak (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ saya ). Sejak player i′ telah membantu propagasi pesan (r, s∗−1) di CERT-nya r pada waktu \(\alpha\)r,s∗ saya′ + ts∗, sekali lagi semua verifier yang jujur masuk HSV r,s∗+1 berhenti tanpa menyebarkan apa pun dan mengatur Br = Br . Demikian pula semuanya jujur pengguna mengetahui Br = Br ǫ dalam interval waktu Ir+1 dan T r+1 \(\leq\) \(\alpha\)r,s∗ saya′ + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Kasus 2.2.a. Peristiwa E.a terjadi dan tidak terdapat pemeriksa yang jujur i′ \(\in\)HSV r,s∗who juga harus berhenti tanpa menyebarkan apa pun. Dalam hal ini, perhatikan bahwa pemain i∗dapat memiliki CERT r yang valid i∗terdiri dari tH yang diinginkan (r, s∗−1)-pesan yang dapat dikumpulkan atau dihasilkan oleh Musuh. Namun, yang jahat pemeriksa mungkin tidak membantu menyebarkan pesan-pesan tersebut, jadi kami tidak dapat menyimpulkan bahwa mereka jujur pengguna akan menerimanya tepat waktu \(\lambda\). Faktanya, |MSV r,s∗−1| dari pesan-pesan itu mungkin berasal pengverifikasi (r, s∗−1) jahat, yang tidak menyebarkan pesan mereka sama sekali dan hanya mengirim mereka ke pemverifikasi jahat di langkah s∗. Mirip dengan Kasus 2.1.a, di sini kita memiliki s∗−2 ≡0 mod 3, Langkah s∗adalah langkah Koin-Tetap-Ke-0, dan pesan (r, s∗−1) di CERT r i∗adalah untuk bit 0 dan v = H(Br \(\ell\)). Memang semuanya jujur (r, s∗−1)-verifier menandatangani v, sehingga Musuh tidak dapat menghasilkan pesan-pesan (r, s∗−1) yang valid untuk v′ yang berbeda. Terlebih lagi, semua pengverifikasi yang jujur (r, s∗) telah menunggu waktu ts∗dan tidak melihat > 2/3 mayoritas untuk bit 1, sekali lagi karena |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n. Demikianlah setiap verifikator yang jujur i \(\in\)HSV r,s∗set bi = 0, vi = H(Br \(\ell\)) dengan suara terbanyak, dan memperbanyak mr,s∗ saya = (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s∗ saya ) pada waktu \(\alpha\)r,s∗ saya + ts∗. Sekarang pertimbangkan pemverifikasi yang jujur pada Langkah s∗+ 1 (yang merupakan langkah Koin-Tetap-Ke-1). Jika Musuh sebenarnya mengirimkan pesan di CERT r i∗kepada beberapa di antaranya dan menyebabkannya stop, lalu mirip dengan Kasus 2.1.a, semua pengguna yang jujur mengetahui Br = Br \(\ell\)dalam interval waktu Ir+1 dan T r+1 \(\leq\)T r + \(\lambda\) + ts∗+1. Jika tidak, semua verifikator yang jujur pada Langkah s∗+1 telah menerima semua pesan (r, s∗) untuk 0 dan H(Br \(\ell\)) dari HSV r,s∗setelah waktu tunggu ts∗+1, yang menghasilkan > 2/3 mayoritas, karena |HSV r,s∗| > 2|MSV r,s∗|. Jadi semua verifikator di HSV r,s∗+1 menyebarkan pesan mereka 0 dan H(Br \(\ell\)) sesuai dengan itu. Perhatikan bahwa verifier di HSV r,s∗+1 tidak berhenti pada Br = Br \(\ell\), karena Langkah s∗+ 1 bukanlah langkah Koin-Tetap-Ke-0. Sekarang pertimbangkan pemverifikasi yang jujur pada Langkah s∗+2 (yang merupakan langkah Pembalikan Koin). Jika Musuh mengirimkan pesan dalam CERT r i∗kepada beberapa dari mereka dan menyebabkan mereka berhenti, sekali lagi semua pengguna yang jujur mengetahui Br = Br \(\ell\)dalam selang waktu Ir+1 dan T r+1 \(\leq\)T r + \(\lambda\) + ts∗+2.Jika tidak, semua verifikasi yang jujur pada Langkah s∗+ 2 telah menerima semua pesan (r, s∗+ 1) untuk 0 dan H(Br \(\ell\)) dari HSV r,s∗+1 setelah waktu tunggu ts∗+2, sehingga menghasilkan > 2/3 mayoritas. Dengan demikian mereka semua menyebarkan pesannya untuk 0 dan H(Br \(\ell\)) sesuai dengan itu: itulah yang mereka lakukan bukan “melempar koin” dalam kasus ini. Sekali lagi, perhatikan bahwa mereka tidak berhenti tanpa menyebar, karena Langkah s∗+ 2 bukanlah langkah Koin-Tetap-Ke-0. Yang terakhir, bagi pemverifikasi yang jujur pada Langkah s∗+3 (yang merupakan langkah Koin-Tetap-Ke-0 lainnya), semua dari mereka akan menerima setidaknya pesan yang valid untuk 0 dan H(Br \(\ell\)) dari HSV s∗+2, jika mereka benar-benar menunggu waktu ts∗+3. Jadi, apakah Musuh mengirimkan pesan atau tidak di CERT r i∗ke salah satu dari mereka, semua verifier di HSV r,s∗+3 berhenti dengan Br = Br \(\ell\), tanpa menyebarkan apa pun. Bergantung pada bagaimana Musuh bertindak, beberapa di antaranya mungkin pernah melakukannya CERT r mereka sendiri yang terdiri dari pesan-pesan (r, s∗−1) di CERT r i∗, dan yang lainnya punya CERT mereka sendiri r yang terdiri dari pesan-pesan (r, s∗+ 2). Bagaimanapun, semua pengguna yang jujur tahu Br = Br \(\ell\)dalam selang waktu Ir+1 dan T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3. Kasus 2.2.b. Peristiwa E.b terjadi dan tidak terdapat pemeriksa yang jujur i′ \(\in\)HSV r,s∗who juga harus berhenti tanpa menyebarkan apa pun. Analisis dalam kasus ini mirip dengan Kasus 2.1.b dan Kasus 2.2.a, sehingga banyak rinciannya. telah dihilangkan. Secara khusus, CERT r i∗terdiri dari pesan-pesan (r, s∗−1) yang diinginkan untuk bit 1 yang dapat dikumpulkan atau dihasilkan oleh Musuh, s∗−2 ≡1 mod 3, Langkah s∗is a Langkah Coin-Fixed-To-1, dan tidak ada pemverifikasi (r, s∗) yang jujur yang dapat memperoleh > 2/3 mayoritas untuk 0. Jadi, setiap pemverifikasi i \(\in\)HSV r,s∗set bi = 1 dan menyebarkan mr,s∗ saya = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ saya ) pada waktu \(\alpha\)r,s∗ saya + ts∗. Mirip dengan Kasus 2.2.a, dalam paling banyak 3 langkah lagi (yaitu protokol mencapai Langkah s∗+3, yang merupakan langkah Koin-Tetap-Ke-1 lainnya), semua pengguna yang jujur mengetahui Br = Br ǫ dalam selang waktu Ir+1. Selain itu, T r+1 mungkin \(\leq\)T r+\(\lambda\)+ts∗+1, atau \(\leq\)T r+\(\lambda\)+ts∗+2, atau \(\leq\)T r + \(\lambda\) + ts∗+3, bergantung pada kapan pertama kalinya verifikator yang jujur dapat menghentikan tanpa menyebar. Menggabungkan empat sub-kasus, kami mendapatkan bahwa semua pengguna yang jujur mengetahui Br dalam interval waktu tersebut Ir+1, dengan T r+1 \(\leq\)T r + \(\lambda\) + ts∗dalam Kasus 2.1.a dan 2.1.b, dan T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 dalam Kasus 2.2.a dan 2.2.b. Tetap pada batas atas s∗dan dengan demikian T r+1 untuk Kasus 2, dan kami melakukannya dengan mempertimbangkan bagaimana berkali-kali langkah-langkah yang Dibalik Koin sebenarnya dijalankan dalam protokol: yaitu, beberapa pemverifikasi yang jujur sebenarnya telah melakukan lemparan koin. Secara khusus, perbaiki secara sewenang-wenang langkah Koin-Benar-Terbalik s′ (yaitu, 7 \(\leq\)s′ \(\leq\)m + 2 dan s′ −2 ≡2 mod 3), dan misalkan \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j ). Untuk saat ini mari kita asumsikan s′ < s∗, karena jika tidak, tidak ada pemverifikasi yang jujur yang benar-benar melempar koin pada Langkah s′, menurut langkah sebelumnya diskusi. Berdasarkan definisi SV r,s′−1, nilai hash dari kredensial \(\ell\)′ juga merupakan yang terkecil di antara semua pengguna di PKr−k. Karena fungsi hash adalah oracle acak, idealnya pemain \(\ell\)′ jujur dengan probabilitas setidaknya h. Seperti yang akan kami tunjukkan nanti, meskipun Musuh mencoba yang terbaik untuk memprediksinya keluaran oracle acak dan memiringkan probabilitas, pemain \(\ell\)′ masih jujur dengan probabilitaspaling tidak ph = h2(1 + h −h2). Di bawah ini kami mempertimbangkan kasus ketika hal tersebut benar-benar terjadi: yaitu, \(\ell\)′ \(\in\)HSV r,s′−1. Perhatikan bahwa setiap pemverifikasi yang jujur i \(\in\)HSV r,s′ telah menerima semua pesan dari HSV r,s′−1 pada waktu \(\alpha\)r,s′ saya + ts′. Jika pemain i perlu melempar koin (yaitu, dia belum melihat > 2/3 mayoritas untuk bit yang sama b \(\in\){0, 1}), lalu ia menetapkan bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )). Jika ada yang lain jujur pemverifikasi i′ \(\in\)HSV r,s′ yang telah melihat > 2/3 mayoritas untuk bit b \(\in\){0, 1}, maka berdasarkan Properti (d) dari Lemma 5.5, tidak ada pemverifikasi yang jujur di HSV r,s′ yang akan memperoleh > 2/3 mayoritas untuk sementara waktu b′ ̸= b. Sejak lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b dengan probabilitas 1/2, semua verifier yang jujur di HSV r,s′ dapat dijangkau kesepakatan pada b dengan probabilitas 1/2. Tentu saja, jika pemverifikasi i′ tersebut tidak ada, maka semuanya ada pemverifikasi yang jujur di HSV r,s′ menyetujui bit lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) dengan probabilitas 1. Menggabungkan probabilitas untuk \(\ell\)′ \(\in\)HSV r,s′−1, kita mendapatkan bahwa pemverifikasi yang jujur dalam HSV r,s′ mencapai kesepakatan pada bit b \(\in\){0, 1} dengan probabilitas paling sedikit ph 2 = h2(1+h−h2) 2 . Selain itu, dengan induksi pada suara mayoritas seperti sebelumnya, semua verifier yang jujur di HSV r,s′ telah menetapkan vinya menjadi H(Br \(\ell\)). Jadi, setelah kesepakatan tentang b tercapai pada Langkah s′, T r+1 adalah baik \(\leq\)T r + \(\lambda\) + ts′+1 atau \(\leq\)T r + \(\lambda\) + ts′+2, tergantung pada apakah b = 0 atau b = 1, mengikuti analisis Kasus 2.1.a dan 2.1.b. Di khususnya, tidak ada langkah Pembalikan Koin lebih lanjut yang akan dijalankan: yaitu, pemverifikasi di langkah-langkah tersebut masih memeriksa apakah merekalah yang melakukan verifikasi dan dengan demikian menunggu, namun langkah-langkah tersebut akan berhenti jika tidak dilakukan menyebarkan apa pun. Oleh karena itu, sebelum Langkah s∗, berapa kali langkah Coin-GenuinelyFlipped dijalankan didistribusikan sesuai dengan variabel acak Lr. Membiarkan Langkah s′ menjadi langkah terakhir yang Benar-Benar Dibalik Koin menurut Lr, dengan konstruksi protokol kita punya s′ = 4 + 3Lr. Kapan Musuh harus membuat Langkah itu terjadi jika dia ingin menunda T r+1 sebanyak itu mungkin? Kita bahkan dapat berasumsi bahwa Musuh mengetahui realisasi Lr terlebih dahulu. Jika s∗> s′ maka percuma saja, karena verifikator yang jujur sudah mencapai kesepakatan Langkah s′. Yang pasti, dalam kasus ini s∗akan menjadi s′ +1 atau s′ +2, sekali lagi bergantung pada apakah b = 0 atau b = 1. Namun, ini sebenarnya Kasus 2.1.a dan 2.1.b, dan T r+1 yang dihasilkan sama persis dengan sama seperti dalam kasus itu. Lebih tepatnya, T r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts′+2. Jika s∗< s′ −3 —yaitu, s∗adalah sebelum langkah kedua terakhir yang Membalik Koin— maka dengan analisis Kasus 2.2.a dan 2.2.b, T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < T r + \(\lambda\) + ts′. Maksudnya, pihak Adversary sebenarnya membuat kesepakatan mengenai Br terjadi lebih cepat. Jika s∗= s′ −2 atau s′ −1 —yaitu, langkah Koin-Tetap-Ke-0 atau langkah Koin-Tetap-Ke-1 tepat sebelum Langkah s′— kemudian dengan analisis empat sub-kasus, verifikator yang jujur masuk Langkah s′ tidak perlu lagi melempar koin, karena sudah berhenti tanpa menyebar, atau telah melihat > 2/3 mayoritas untuk bit yang sama b. Oleh karena itu kita punya T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts′+2.Singkatnya, apa pun masalahnya, kita punya T r+1 \(\leq\)T r + \(\lambda\) + ts′+2 = T r + \(\lambda\) + t3Lr+6 = T r + \(\lambda\) + (2(3Lr + 6) −3)\(\lambda\) + Λ = T r + (6Lr + 10)\(\lambda\) + Λ, seperti yang ingin kami tunjukkan. Kasus terburuk adalah ketika s∗= s′ −1 dan Kasus 2.2.b terjadi. Menggabungkan Kasus 1 dan 2 dari protokol BA biner, Lemma 5.3 berlaku. ■ 5.9 Keamanan Benih Qr dan Kemungkinan Pemimpin yang Jujur Masih harus membuktikan Lemma 5.4. Ingatlah bahwa pemverifikasi pada putaran r diambil dari PKr−k dan dipilih berdasarkan kuantitas Qr−1. Alasan memperkenalkan parameter lihat kembali k adalah untuk memastikan bahwa, kembali ke putaran r −k, ketika Musuh dapat menambahkan pengguna jahat baru untuk PKr−k, dia tidak dapat memprediksi kuantitas Qr−1 kecuali dengan probabilitas yang dapat diabaikan. Perhatikan bahwa Fungsi hash adalah oracle acak dan Qr−1 adalah salah satu inputnya ketika memilih verifier untuk putaran r. Jadi, tidak peduli seberapa jahatnya pengguna yang ditambahkan ke PKr−k, dari sudut pandang Musuh masing-masing salah satu dari mereka masih terpilih menjadi pemverifikasi pada langkah putaran r dengan probabilitas yang diperlukan p (atau p1 untuk Langkah 1). Lebih tepatnya, kita mempunyai lemma berikut. Lemma 5.6. Dengan k = O(log1/2 F), untuk setiap putaran r, dengan kemungkinan besar Musuh tidak menanyakan Qr−1 ke oracle acak pada putaran r −k. Bukti. Kami melanjutkan dengan induksi. Asumsikan bahwa untuk setiap putaran \(\gamma\) < r, Musuh tidak mengajukan pertanyaan Q\(\gamma\)−1 ke oracle acak kembali pada ronde \(\gamma\) −k.21 Perhatikan permainan mental berikut yang dimainkan oleh Musuh di ronde r −k, mencoba memprediksi Qr−1. Pada Langkah 1 setiap putaran \(\gamma\) = r −k, . . . , r −1, diberikan Q\(\gamma\)−1 spesifik yang tidak ditanyakan secara acak oracle, dengan mengurutkan pemain i \(\in\)PK\(\gamma\)−k sesuai dengan nilai hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) semakin banyak, kita mendapatkan permutasi acak atas PK\(\gamma\)−k. Menurut definisi, pemimpin \(\ell\) \(\gamma\) adalah pengguna pertama dalam permutasi dan jujur dengan probabilitas h. Apalagi bila PK\(\gamma\)−k besar cukup, untuk sembarang bilangan bulat x \(\geq\)1, probabilitas bahwa pengguna x pertama dalam permutasi semuanya adalah berbahaya tetapi (x + 1) yang jujur adalah (1 −h)xh. Jika \(\ell\) \(\gamma\) jujur, maka Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). Karena Musuh tidak dapat memalsukan tanda tangannya dari \(\ell\) \(\gamma\), Q\(\gamma\) didistribusikan secara seragam secara acak dari sudut pandang Musuh dan, kecuali dengan probabilitas yang sangat kecil,22 tidak ditanyakan ke H pada putaran r −k. Sejak masing-masing Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1 masing-masing adalah keluaran dari H dengan Q\(\gamma\), Q\(\gamma\)+1, . . . , Qr−2 sebagai salah satu masukan, mereka semua terlihat acak bagi Musuh dan Musuh tidak mungkin menanyakan Qr−1 hingga H di putaran r −k. Oleh karena itu, satu-satunya kasus di mana Musuh dapat memprediksi Qr−1 dengan probabilitas yang baik pada putaran tersebut r−k adalah saat semua pemimpin \(\ell\)r−k, . . . , \(\ell\)r−1 berbahaya. Sekali lagi pertimbangkan putaran \(\gamma\) \(\in\){r−k . . . , r−1} dan permutasi acak pada PK\(\gamma\)−k yang disebabkan oleh nilai hash yang sesuai. Jika untuk beberapa orang x \(\geq\)2, pengguna x −1 pertama dalam permutasi semuanya jahat dan ke-x jujur, maka Musuh mempunyai x kemungkinan pilihan untuk Q\(\gamma\): salah satu dari bentuk H(SIGi(Q\(\gamma\)−1, \(\gamma\))), dimana i adalah salah satu dari 21Karena k adalah bilangan bulat kecil, tanpa kehilangan keumumannya, kita dapat berasumsi bahwa k putaran pertama dari protokol dijalankan dalam lingkungan yang aman dan hipotesis induktif berlaku untuk putaran tersebut. 22Artinya, panjang keluaran H bersifat eksponensial. Perhatikan bahwa probabilitas ini jauh lebih kecil daripada F.pengguna jahat x−1 pertama, dengan menjadikan pemain i sebagai pemimpin putaran \(\gamma\); atau H(Q\(\gamma\)−1, \(\gamma\)), oleh memaksa B\(\gamma\) = B\(\gamma\) . Jika tidak, pemimpin putaran \(\gamma\) akan menjadi pengguna jujur pertama dalam permutasi tersebut dan Qr−1 menjadi tidak dapat diprediksi oleh Musuh. Manakah dari opsi x Q\(\gamma\) di atas yang harus dilakukan oleh Musuh? Untuk membantu Musuh jawab pertanyaan ini, dalam permainan mental kita sebenarnya membuatnya lebih kuat dari dia sebenarnya adalah, sebagai berikut. Pertama-tama, pada kenyataannya, Musuh tidak dapat menghitung hash pengguna yang jujur tanda tangan, sehingga tidak dapat memutuskan, untuk setiap Q\(\gamma\), jumlah x(Q\(\gamma\)) pengguna jahat di awal dari permutasi acak pada putaran \(\gamma\) + 1 yang diinduksi oleh Q\(\gamma\). Dalam permainan mental, kami memberinya angka x(Q\(\gamma\)) gratis. Yang kedua, pada kenyataannya, memiliki x pengguna pertama dalam permutasi semuanya bersikap jahat tidak berarti mereka semua bisa dijadikan pemimpin, karena hash nilai tanda tangannya juga harus kurang dari p1. Kami telah mengabaikan kendala mental ini permainan, memberikan Musuh lebih banyak keuntungan. Sangat mudah untuk melihat bahwa dalam permainan mental, pilihan optimal untuk Musuh, dilambangkan dengan Q\(\gamma\), adalah salah satu yang menghasilkan urutan pengguna jahat terpanjang di awal acak permutasi pada putaran \(\gamma\) + 1. Memang, mengingat Q\(\gamma\) tertentu, protokolnya tidak bergantung pada Q\(\gamma\)−1 lagi dan Musuh hanya bisa fokus pada permutasi baru di babak \(\gamma\) + 1, yang memiliki distribusi yang sama untuk jumlah pengguna jahat di awal. Oleh karena itu, di setiap putaran \(\gamma\), ˆQ\(\gamma\) yang disebutkan di atas memberinya jumlah opsi terbesar untuk Q\(\gamma\)+1 dan dengan demikian memaksimalkan kemungkinan bahwa pemimpin berturut-turut semuanya jahat. Oleh karena itu, dalam permainan mental Musuh mengikuti Rantai Markov dari putaran r −k untuk membulatkan r −1, dengan ruang keadaan menjadi {0} \(\cup\){x : x \(\geq\)2}. Negara 0 mewakili fakta bahwa pengguna pertama dalam permutasi acak pada putaran saat ini \(\gamma\) adalah jujur, sehingga Musuh gagal dalam permainan untuk memprediksi Qr−1; dan setiap negara bagian x \(\geq\)2 mewakili fakta bahwa pengguna x −1 pertama di permutasi berbahaya dan x-th jujur, sehingga Musuh memiliki opsi x untuk Q\(\gamma\). Itu probabilitas transisi P(x, y) adalah sebagai berikut. • P(0, 0) = 1 dan P(0, y) = 0 untuk sembarang y \(\geq\)2. Artinya, Musuh gagal dalam permainan satu kali saja pengguna dalam permutasi menjadi jujur. • P(x, 0) = hx untuk sembarang x \(\geq\)2. Artinya, dengan probabilitas hx, semua x permutasi acak mempunyai pengguna pertama mereka bersikap jujur, sehingga Musuh gagal dalam permainan di babak berikutnya. • Untuk setiap x \(\geq\)2 dan y \(\geq\)2, P(x, y) adalah probabilitas bahwa, di antara x permutasi acak diinduksi oleh opsi x dari Q\(\gamma\), urutan terpanjang dari pengguna jahat di awal beberapa di antaranya adalah y −1, sehingga Musuh memiliki opsi y untuk Q\(\gamma\)+1 di babak berikutnya. Artinya, P(x, kamu) = kamu−1 X saya=0 (1 −h)ih !x - kamu−2 X saya=0 (1 −h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. Perhatikan bahwa keadaan 0 adalah keadaan penyerap unik dalam matriks transisi P, dan setiap keadaan lainnya x mempunyai probabilitas positif untuk menuju ke 0. Kita tertarik untuk membatasi bilangan k dari putaran yang diperlukan agar Rantai Markov menyatu ke 0 dengan probabilitas yang sangat besar: yaitu, tidak tidak peduli di negara bagian mana rantai itu dimulai, dengan kemungkinan besar Musuh kalah dalam permainan dan gagal memprediksi Qr−1 pada putaran r −k. Pertimbangkan matriks transisi P (2) \(\triangleq\)P \(\cdot\) P setelah dua putaran. Sangat mudah untuk melihat bahwa P (2)(0, 0) = 1 dan P (2)(0, x) = 0 untuk sembarang x \(\geq\)2. Untuk setiap x \(\geq\)2 dan y \(\geq\)2, karena P(0, y) = 0, kita mempunyai P (2)(x, y) = P(x, 0)P(0, y) + X z\(\geq\)2 P(x, z)P(z, y) = X z\(\geq\)2 P(x, z)P(z, kamu).Membiarkan ¯h \(\triangleq\)1 −h, kita punya P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x dan P (2)(x, kamu) = X z\(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. Di bawah ini kita menghitung limit P (2)(x,y) P (x, y) saat h menjadi 1 —yaitu, ¯h menjadi 0. Perhatikan bahwa yang tertinggi orde ¯h pada P(x, y) adalah ¯hy−1, dengan koefisien x. Oleh karena itu, batas jam \(\to\) 1 P (2)(x, kamu) P(x, kamu) = lim ¯ jam \(\to\) 0 P (2)(x, kamu) P(x, kamu) = lim ¯ jam \(\to\) 0 P (2)(x, kamu) x¯hy−1 + O(¯hy) = batas ¯ jam \(\to\) 0 hal z\(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) = lim ¯ jam \(\to\) 0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = batas ¯ jam \(\to\) 0 2x¯hy x¯hy−1 = lim ¯jam \(\to\) 0 2¯jam = 0. Ketika h cukup mendekati 1,23, kita punya P (2)(x, kamu) P(x, kamu) \(\leq\)1 2 untuk setiap x \(\geq\)2 dan y \(\geq\)2. Dengan induksi, untuk sembarang k > 2, P (k) \(\triangleq\)P k sedemikian rupa sehingga • P (k)(0, 0) = 1, P (k)(0, x) = 0 untuk sembarang x \(\geq\)2, dan • untuk setiap x \(\geq\)2 dan y \(\geq\)2, P (k)(x, y) = P (k−1)(x, 0)P(0, y) + X z\(\geq\)2 P (k−1)(x, z)P(z, y) = X z\(\geq\)2 P (k−1)(x, z)P(z, y) \(\leq\) X z\(\geq\)2 P(x, z) 2k−2 \(\cdot\) P(z, y) = P (2)(x, y) 2k−2 \(\leq\)P(x, y) 2k−1 . Karena P(x, y) \(\leq\)1, setelah putaran 1−log2 F, probabilitas transisi ke keadaan mana pun y \(\geq\)2 dapat diabaikan, dimulai dengan keadaan apa pun x \(\geq\)2. Meskipun ada banyak negara bagian y, mudah untuk melihatnya batas kamu→+∞ P(x, kamu) P(x, y + 1) = batas kamu→+∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = batas kamu→+∞ ¯hy−1 −¯hy ¯hy −¯hy+1 = 1 ¯ jam = 1 1 jam. Oleh karena itu setiap baris x matriks transisi P berkurang sebagai barisan geometri dengan laju 1 1−jam > 2 ketika y cukup besar, dan hal yang sama berlaku untuk P (k). Oleh karena itu, ketika k cukup besar namun tetap pada urutan log1/2 F, P y\(\geq\)2 P (k)(x, y) < F untuk setiap x \(\geq\)2. Artinya, dengan kemungkinan yang sangat besar Musuh kalah dalam permainan dan gagal memprediksi Qr−1 pada ronde r −k. Untuk h \(\in\)(2/3, 1], lebih analisis kompleks menunjukkan bahwa terdapat konstanta C yang sedikit lebih besar dari 1/2, sehingga mencukupi untuk mengambil k = O(logC F). Demikianlah Lemma 5.6 berlaku. ■ Lemma 5.4. (disajikan kembali) Sifat yang diberikan 1–3 untuk setiap putaran sebelum r, ph = h2(1 + h −h2) untuk Lr, dan pemimpin \(\ell\)r jujur dengan probabilitas setidaknya ph. 23Misalnya, h = 80% seperti yang disarankan oleh pilihan parameter tertentu.
Bukti. Mengikuti Lemma 5.6, Musuh tidak dapat memprediksi kembali Qr−1 pada putaran r −k kecuali dengan probabilitas yang dapat diabaikan. Perlu dicatat bahwa hal ini tidak berarti kemungkinan untuk mendapatkan pemimpin yang jujur adalah hal yang mustahil setiap putaran. Memang, mengingat Qr−1, tergantung pada berapa banyak pengguna jahat di awal permutasi acak PKr−k, Musuh mungkin mempunyai lebih dari satu pilihan untuk Qr dan dengan demikian dapat meningkatkan kemungkinan munculnya pemimpin jahat di putaran r + 1 —sekali lagi kita memberikannya beberapa kelebihan yang tidak realistis seperti pada Lemma 5.6, sehingga dapat menyederhanakan analisis. Namun, untuk setiap Qr−1 yang tidak ditanyakan ke H oleh Musuh pada putaran r −k, untuk setiap x \(\geq\)1, dengan probabilitas (1 −h)x−1h pengguna jujur pertama muncul pada posisi x dalam hasil permutasi acak dari PKr−k. Jika x = 1, peluang munculnya pemimpin yang jujur pada putaran r + 1 adalah memang h; sedangkan ketika x = 2, Musuh memiliki dua pilihan Qr dan probabilitas yang dihasilkan adalah h2. Hanya dengan mempertimbangkan dua kasus ini, kita mempunyai kemungkinan untuk mendapatkan pemimpin yang jujur r + 1 setidaknya h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) sesuai keinginan. Perhatikan bahwa probabilitas di atas hanya mempertimbangkan keacakan protokol dari putaran r −k untuk membulatkan r. Ketika semua keacakan dari putaran 0 hingga putaran r dipertimbangkan, Qr−1 adalah bahkan lebih sulit diprediksi oleh Musuh dan kemungkinan pemimpin yang jujur di babak r + 1 adalah paling sedikit h2(1 + h −h2). Mengganti r + 1 dengan r dan menggeser semuanya kembali satu putaran, pemimpin \(\ell\)r jujur dengan probabilitas paling sedikit h2(1 + h −h2), sesuai keinginan. Demikian pula, dalam setiap langkah Pembalikan Koin, “pemimpin” dari langkah tersebut —yaitu pemverifikasi pada SV r,s yang kredensialnya mempunyai nilai hash terkecil, jujur dengan probabilitas paling sedikit h2(1 + jam −h2). Jadi ph = h2(1 + h −h2) untuk Lr dan Lemma 5.4 berlaku. ■
Algorand ′
1 في هذا القسم، قمنا بإنشاء نسخة من Algorand ′ تعمل وفقًا للافتراض التالي. افتراض الأغلبية الصادقة من المستخدمين: أكثر من 2/3 من المستخدمين في كل PKr صادقون. في القسم 8، نوضح كيفية استبدال الافتراض أعلاه بالأغلبية الصادقة المطلوبة افتراض المال. 5.1 تدوينات ومعلمات إضافية التدوينات • m \(\in\)Z+: الحد الأقصى لعدد الخطوات في بروتوكول BA الثنائي، وهو مضاعف 3. • Lr \(\geq\)m/3: متغير عشوائي يمثل عدد تجارب برنولي اللازمة لرؤية الرقم 1، عندما تكون كل تجربة 1 مع احتمال ph 2 وهناك تجارب m/3 على الأكثر. إذا فشلت كل التجارب إذن ل \(\triangleq\)م/3. سيتم استخدام Lr لتحديد الوقت اللازم لإنشاء الكتلة Br. • ث = 2ن 3+1: عدد التوقيعات المطلوبة في شروط إنهاء البروتوكول. • CERT r: شهادة Br. إنها مجموعة من التوقيعات لـ H(Br) من المدققين المناسبين في جولة ص. المعلمات • العلاقات بين مختلف المعالم. — لكل خطوة s > 1 من الجولة r، يتم اختيار n بحيث، مع احتمالية ساحقة، |HSV ص، ق| > 2|MSV r,s| و |HSV ص، ق| + 4|MSV r,s| <2ن. كلما اقتربت قيمة h من 1، كلما كانت قيمة n أصغر. على وجه الخصوص، نستخدم (variants of) Chernofbounds لضمان استمرار الظروف المرغوبة باحتمالية ساحقة. — يتم اختيار m بحيث يكون Lr < m/3 باحتمالية ساحقة. • أمثلة على اختيارات المعلمات الهامة. - و = 10−12. — ن \(\approx\)1500، ك = 40 و م = 180.5.2 تنفيذ المفاتيح المؤقتة في Algorand ′ 1 كما ذكرنا سابقًا، نرغب في أن يقوم المدقق بتوقيع رسالته رقميًا السيد، s أنا من الخطوة s في الجولة r، نسبةً إلى المفتاح العمومي سريع الزوال pkr,s i، باستخدام مفتاح سري سريع الزوال skr,s أنا ذلك يدمر على الفور بعد الاستخدام. وبالتالي نحن بحاجة إلى طريقة فعالة للتأكد من أن كل مستخدم يستطيع ذلك التحقق من أن pkr,s أنا هو بالفعل المفتاح الذي يجب استخدامه للتحقق من توقيع السيد أنا. نحن نفعل ذلك من خلال (للأفضل من معرفتنا) الاستخدام الجديد لمخططات التوقيع القائمة على الهوية. على مستوى عالٍ، في مثل هذا المخطط، تقوم السلطة المركزية "أ" بإنشاء مفتاح رئيسي عام، PMK، والمفتاح الرئيسي السري المقابل، SMK. بالنظر إلى الهوية، U، للاعب U، A يحسب، عبر SMK، مفتاح التوقيع السري skU نسبة إلى المفتاح العام U، ويمنح skU بشكل خاص U. (في الواقع، في نظام التوقيع الرقمي القائم على الهوية، المفتاح العام للمستخدم U هو U نفسه!) بهذه الطريقة، إذا قام A بتدمير SMK بعد حساب المفاتيح السرية للمستخدمين الذين يريد تمكينهم ينتج توقيعات رقمية، ولا يحتفظ بأي مفتاح سري محسوب، فإن U هو الوحيد الذي يمكنه التوقيع رقميًا على الرسائل المتعلقة بالمفتاح العام U. وبالتالي، فإن أي شخص يعرف "اسم U"، يعرف تلقائيًا المفتاح العام لـ U، وبالتالي يمكنه التحقق من توقيعات U (ربما باستخدام أيضًا المفتاح الرئيسي العام PMK). في تطبيقنا، السلطة A هي المستخدم i، ومجموعة جميع المستخدمين المحتملين U تتزامن معهم زوج الخطوة المستديرة (r, s) في —على سبيل المثال— S = {i}\(\times\){r′, . . . ، ص' +106}\(\times\){1، . . . ، m+3}، حيث r' معطى جولة، وm + 3 الحد العلوي لعدد الخطوات التي قد تحدث خلال الجولة. هذا الطريق، pkr،s أنا \(\triangleq\)(i, r, s)، بحيث يرى الجميع توقيع i SIGr,s بي كي آر، ق أنا (السيد، ق ط) يمكن، مع الساحقة الاحتمالية، تحقق منها على الفور في أول مليون طلقة r بعد r′. بمعنى آخر، أقوم أولاً بإنشاء PMK وSMK. ثم يعلن أن PMK هو سيده المفتاح العام لأي جولة r \(\in\)[r′, r′ + 106]، ويستخدم SMK لإنتاج السر وتخزينه بشكل خاص مفتاح سكر، ق أنا لكل ثلاثية (i، r، s) \(\in\)S. بعد ذلك، قام بتدمير SMK. إذا قرر أنه ليس كذلك جزءًا من SV r,s، فيمكنني ترك skr,s أنا وحده (حيث أن البروتوكول لا يتطلب أن يقوم بالتصديق أي رسالة في الخطوة s من الجولة r). بخلاف ذلك، أستخدم skr,s لأول مرة أنا للتوقيع رقميا على رسالته السيد، ق أنا و ثم يدمر skr,s أنا. لاحظ أنه يمكنني نشر مفتاحه الرئيسي العام الأول عندما يدخل النظام لأول مرة. هذا هو، نفس الدفعة \(\wp\) التي تجلب i إلى النظام (عند جولة r' أو عند جولة قريبة من r′)، قد تكون أيضًا تحديد، بناءً على طلبي، أن المفتاح الرئيسي العام الخاص بـ i لأي جولة r \(\in\)[r′, r′ + 106] هو PMK - على سبيل المثال، بواسطة بما في ذلك زوج من النموذج (PMK، [r′، r′ + 106]). لاحظ أيضًا أنه نظرًا لأن m + 3 هو الحد الأقصى لعدد الخطوات في الجولة، بافتراض أن الجولة يستغرق دقيقة واحدة، ومخبأة المفاتيح سريعة الزوال التي تم إنتاجها ستستمر لمدة عامين تقريبًا. في نفس الوقت بمرور الوقت، لن يستغرق إنتاج هذه المفاتيح السرية سريعة الزوال وقتًا طويلاً. باستخدام منحنى الاهليلجي على أساس نظام يحتوي على 32B مفتاح، يتم حساب كل مفتاح سري في بضع ميكروثانية. وبالتالي، إذا كان م + 3 = 180، ومن ثم يمكن حساب جميع المفاتيح السرية البالغ عددها 180 مليونًا في أقل من ساعة واحدة. عندما تقترب الجولة الحالية من r′ + 106، للتعامل مع المليون جولة التالية، أي ينشئ زوجًا جديدًا (PMK′, SMK′) ويبلغه بمخبأه التالي من المفاتيح المؤقتة —على سبيل المثال — إدخال SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) في كتلة جديدة، إما كـ "معاملة" منفصلة أو كبعض المعلومات الإضافية التي تشكل جزءًا من الدفع. وبذلك، أبلغ الجميع أنه يجب عليه/عليها استخدام PMK′ للتحقق من توقيعاتي المؤقتة في المرة التالية مليون طلقة. وهكذا. (لاحظ أنه باتباع هذا النهج الأساسي، هناك طرق أخرى لتنفيذ مفاتيح سريعة الزوال بدون من المؤكد أن استخدام التوقيعات القائمة على الهوية أمر ممكن. على سبيل المثال، عبر Merkle trees.16) 16في هذه الطريقة، أقوم بإنشاء زوج مفاتيح سري (pkr,s أنا، سكر، ق أنا ) لكل زوج من الخطوات المستديرة (r، s) في - على سبيل المثال -من المؤكد أن الطرق الأخرى لتنفيذ المفاتيح المؤقتة ممكنة — على سبيل المثال، عبر Merkle trees. 5.3 مطابقة خطوات Algorand ′ 1 مع تلك BA⋆ كما قلنا، جولة في Algorand ′ 1 لديه على الأكثر م + 3 خطوات. الخطوة 1. في هذه الخطوة، يقوم كل قائد محتمل بحساب ونشر كتلة مرشحه Br أنا، مع أوراق اعتماده الخاصة، \(\sigma\)r،1 أنا. تذكر أن بيانات الاعتماد هذه تحدد صراحةً i. هذا هو الحال، لأن \(\sigma\)r,1 أنا \(\triangleq\)SIGi(ص، 1، Qr−1). وينشر المدقق المحتمل أيضًا، كجزء من رسالته، توقيعه الرقمي الصحيح لـ H(Br أنا). لا يتعامل مع الدفع أو بيانات الاعتماد، فإن توقيع i هذا يتعلق بجمهوره سريع الزوال مفتاح بي كيه،1 i : أي أنه ينشر sigpkr,1 ط (ح(ر ط)). نظرًا لاتفاقياتنا، بدلاً من نشر Br أنا و سيغبكر،1 ط (ح(ر أنا )) ، كان يمكن أن يكون نشر SIGpkr،1 ط (ح(ر ط)). ومع ذلك، في تحليلنا نحن بحاجة إلى الوصول بوضوح إلى سيجبكر،1 ط (ح(ر ط)). الخطوات 2. في هذه الخطوة، يقوم كل مدقق بتعيين \(\ell\)r سأكون القائد المحتمل الذي يتمتع بأوراق اعتماده hashed هو الأصغر، وBr أنا أن أكون الكتلة التي اقترحها \(\ell\)r أنا. منذ ذلك الحين، من أجل الكفاءة، نحن أرغب في الاتفاق على H(Br)، بدلاً من الاتفاق مباشرة على Br، أقوم بنشر الرسالة التي قد تكون لديه تم نشره في الخطوة الأولى من BA⋆ بالقيمة الأولية v ′ ط = ح(ر أنا). أي أنه ينشر v′ أنا، بعد التوقيع عليه سريع الزوال، بطبيعة الحال. (أي بعد التوقيع عليه نسبة إلى اليمين الزائل المفتاح العام، وهو في هذه الحالة pkr,2 أنا.) وبطبيعة الحال أيضا، أنا أيضا ينقل بيانات اعتماده. نظرًا لأن الخطوة الأولى من BA⋆ تتكون من الخطوة الأولى من بروتوكول الإجماع المتدرج GC، فإن الخطوة 2 من Algorand ′ يتوافق مع الخطوة الأولى من GC. الخطوات 3. في هذه الخطوة، يقوم كل مدقق i\(\in\)SV r,2 بتنفيذ الخطوة الثانية من BA⋆. أي أنه يرسل نفس الرسالة التي كان سيرسلها في الخطوة الثانية من GC. مرة أخرى، رسالتي سريعة الزوال موقعة ومرفقة ببيانات اعتمادي. (من الآن فصاعدا، سنحذف قول ذلك محققا يوقع رسالته بشكل سريع الزوال وينشر أيضًا أوراق اعتماده.) الخطوة 4. في هذه الخطوة، كل مدقق i \(\in\)SV r,4 يحسب مخرجات GC، (vi، gi)، وبشكل مؤقت يوقع ويرسل نفس الرسالة التي كان سيرسلها في الخطوة الثالثة من BA⋆، أي في الخطوة الأولى من BBA⋆، مع البت الأولي 0 إذا كان gi = 2، و1 بخلاف ذلك. الخطوة ق = 5، . . . ، m + 2. مثل هذه الخطوة، إذا تم الوصول إليها، تتوافق مع الخطوة s −1 من BA⋆، وبالتالي الخطوة −3 من BBA⋆. وبما أن نموذج الانتشار لدينا غير متزامن بما فيه الكفاية، فيجب علينا أن نأخذ في الاعتبار الاحتمال أنه، في منتصف هذه الخطوات، يتم الوصول إلى المدقق من خلال معلومات تثبت أنه لقد تم بالفعل اختيار تلك الكتلة Br. في هذه الحالة، أوقف تنفيذه لجولة r Algorand ′، ويبدأ في تنفيذ تعليمات الجولة (r + 1). {ص'، . . . ، ص' + 106} \(\times\) {1، . . . ، م + 3}. ثم يقوم بطلب هذه المفاتيح العامة بطريقة قانونية، ويخزنها بشكل عام أدخل المفتاح في الورقة j لـ Merkle tree، ويحسب القيمة الجذرية Ri، التي ينشرها. عندما يريد التوقيع رسالة تتعلق بالمفتاح pkr,s أنا ، لا أقوم بتوفير التوقيع الفعلي فحسب، بل يوفر أيضًا مسار المصادقة لـ pkr,s أنا نسبة إلى ري. لاحظ أن مسار المصادقة هذا يثبت أيضًا أن pkr,s أنا يتم تخزينه في ورقة j. بقية يمكن ملء التفاصيل بسهولة.وعليه فإن تعليمات المدقق i \(\in\)SV r,s بالإضافة إلى التعليمات المقابلة لها إلى الخطوة −3 من BBA⋆، بما في ذلك التحقق مما إذا كان تنفيذ BBA⋆ قد توقف في فترة سابقة الخطوة س'. نظرًا لأن BBA⋆ لا يمكن إيقافه إلا في خطوة عملة ثابتة إلى 0 أو في خطوة عملة ثابتة إلى 1، فإن تعليمات تميز ما إذا كان A (حالة النهاية 0): s′ −2 ≡0 mod 3، أو B (حالة النهاية 1): s′ −2 ≡1 mod 3. في الواقع، في الحالة A، تكون الكتلة Br غير فارغة، وبالتالي تكون هناك حاجة إلى تعليمات إضافية تأكد من أنني أقوم بإعادة بناء Br بشكل صحيح، بالإضافة إلى شهادته المناسبة CERT r. في الحالة ب، الكتلة Br فارغة، وبالتالي يُطلب مني ضبط Br = Br \(\varepsilon\) = (ص، \(\emptyset\)، H(Qr−1، r)، H(Br−1))، ولحساب CERT ص. إذا، أثناء تنفيذه للخطوات s، لم أرى أي دليل على أن الكتلة Br قد تم بالفعل تم إنشاؤه، ثم يرسل نفس الرسالة التي كان سيرسلها في الخطوة s −3 من BBA⋆. الخطوة m + 3. إذا كان i \(\in\)SV r,m+3، خلال الخطوة m + 3، يرى أن الكتلة Br قد تم إنشاؤها بالفعل في خطوة سابقة s′، ثم يتابع تمامًا كما هو موضح أعلاه. بخلاف ذلك، فبدلاً من إرسال نفس الرسالة التي كان سيرسلها في الخطوة م من BBA⋆، أنا كذلك أوعز إليه، بناءً على المعلومات التي بحوزته، بحساب Br وما يقابله شهادة CERT ص. تذكر، في الواقع، أننا حددنا العدد الإجمالي لخطوات الجولة بـ m + 3. 5.4 البروتوكول الفعلي تذكر أنه في كل خطوة من جولة r، يستخدم المدقق i \(\in\)SV r,s زوج مفاتيح السرية العامة طويل المدى الخاص به لإنتاج أوراق اعتماده، \(\sigma\)r،s أنا \(\triangleq\)SIGi(r, s, Qr−1)، وكذلك SIGi ريال قطري−1 في الحالة s = 1. التحقق i يستخدم مفتاحه السري سريع الزوال skr,s أنا للتوقيع على رسالته (ص، ق) السيد، ق أنا. للتبسيط، عندما يكون r وs واضح أننا نكتب esigi(x) بدلاً من sigpkr,s i (x) للإشارة إلى التوقيع المؤقت المناسب لقيمة ما x في الخطوات s من الجولة r، واكتب ESIGi(x) بدلاً من SIGpkr,s i (x) للدلالة على (i، x، esigi(x)). الخطوة 1: حظر الاقتراح تعليمات لكل مستخدم i \(\in\)PKr−k: يبدأ المستخدم i الخطوة 1 الخاصة به من الجولة r بمجرد أن يعرف Br−1. • المستخدم i يحسب Qr−1 من المكون الثالث لـ Br−1 ويتحقق مما إذا كان i \(\in\)SV r,1 أو لا. • إذا i /\(\in\)SV r,1، فسوف أقوم بإيقاف تنفيذ الخطوة 1 على الفور. • إذا كان i \(\in\)SV r,1، أي إذا كنت قائدًا محتملاً، فإنه يقوم بجمع مدفوعات الجولة r التي لها تم نشره له حتى الآن ويحسب الحد الأقصى لمجموعة الدفع PAY r أنا منهم. التالي هو يحسب له "كتلة المرشح" Br أنا = (ص، دفع ص أنا، SIGi(Qr−1)، H(Br−1)). وأخيرا، وقال انه يحسب الرسالة السيد،1 أنا = (ر أنا، esigi(H(Br أنا )))، \(\sigma\)ص،1 i )، يدمر مفتاحه السري سريع الزوال skr،1 أنا، وبعد ذلك ينشر السيد،1 أنا.ملاحظة. من الناحية العملية، لتقصير التنفيذ العالمي للخطوة 1، من المهم أن (r, 1)- يتم نشر الرسائل بشكل انتقائي. وهذا يعني أنه بالنسبة لكل مستخدم i في النظام، للمرة الأولى (r, 1) - الرسالة التي يتلقاها ويتحقق منها بنجاح، أقوم بنشرها كالمعتاد. لجميع أخرى (r, 1) - الرسائل التي يتلقاها اللاعب ويتحقق منها بنجاح، ويقوم بنشرها فقط إذا كان hash قيمة بيانات الاعتماد التي تحتوي عليها هي الأصغر بين قيم hash لبيانات الاعتماد الموجودة في جميع الرسائل (ص، 1) التي تلقاها وتم التحقق منها بنجاح حتى الآن. علاوة على ذلك، كما اقترح بواسطة جورجيوس فلاشوس، من المفيد أن يقوم كل قائد محتمل بنشر أوراق اعتماده \(\sigma\)r,1 أنا بشكل منفصل: تنتقل هذه الرسائل الصغيرة بشكل أسرع من الكتل، مما يضمن نشر السيد 1 في الوقت المناسب ي حيث تحتوي بيانات الاعتماد المضمنة على قيم hash صغيرة، بينما تحتوي بيانات الاعتماد المضمنة على قيم hash كبيرة تختفي بسرعة. الخطوة 2: الخطوة الأولى لبروتوكول الإجماع المتدرج GC تعليمات لكل مستخدم i \(\in\)PKr−k: يبدأ المستخدم i الخطوة 2 الخاصة به من الجولة r بمجرد أن يعرف Br−1. • المستخدم i يحسب Qr−1 من المكون الثالث لـ Br−1 ويتحقق مما إذا كان i \(\in\)SV r,2 أو لا. • إذا i /\(\in\)SV r,2 فسوف أقوم بإيقاف تنفيذ الخطوة 2 على الفور. • إذا كان i \(\in\)SV r,2، فبعد الانتظار لفترة زمنية t2 \(\triangleq\)lect + Λ، i يتصرف كما يلي. 1. يجد المستخدم \(\ell\) بحيث H(\(\sigma\)r,1 \(\ell\)) \(\geq\)H(\(\sigma\)r,1 j ) لجميع أوراق الاعتماد \(\sigma\)r,1 ي التي هي جزء من تم التحقق بنجاح (r, 1) من الرسائل التي تلقاها حتى الآن 2. إذا كان قد تلقى من \(\ell\)رسالة صالحة السيد,1 \(\ell\) = (ر \(\ell\)، esig\(\ell\)(H(Br \(\ell\))))، \(\sigma\)ص،1 \(\ell\))،ب ثم أقوم بتعيين v' أنا \(\triangleq\)H(ر \(\ell\)); وإلا فإنني أقوم بتعيين v' أنا \(\triangleq\) \(\bot\). 3. أنا أحسب الرسالة السيد،2 أنا \(\triangleq\)(ESIGi(v') أنا)، \(\sigma\)ص،2 i)،c يدمر مفتاحه السري سريع الزوال سكر،2 أنا، ثم ينشر السيد،2 أنا. بشكل أساسي، يقرر المستخدم i بشكل خاص أن قائد الجولة r هو المستخدم \(\ell\). مرة أخرى، تم التحقق من توقيعات اللاعب \(\ell\) و__PH_0002__es جميعها بنجاح، ويتم الدفع \(\ell\)في ر \(\ell\)هي مجموعة دفع صالحة لـ round r - على الرغم من أنني لا أتحقق مما إذا كان PAY r \(\ell\)هو الحد الأقصى لـ \(\ell\)أو لا. ج الرسالة السيد،2 أنا الإشارات التي يعتبرها اللاعب v′ i ليكون hash للكتلة التالية، أو يعتبر التالي كتلة لتكون فارغة. 17أي أن جميع التوقيعات صحيحة وكل من الكتلة و hash صالحة - على الرغم من أنني لم أتحقق منها ما إذا كانت مجموعة الدفعات المضمنة هي الحد الأقصى لمقترحها أم لا.
الخطوة 3: الخطوة الثانية من GC تعليمات لكل مستخدم i \(\in\)PKr−k: يبدأ المستخدم i الخطوة 3 الخاصة به من الجولة r بمجرد أن يعرف Br−1. • المستخدم i يحسب Qr−1 من المكون الثالث لـ Br−1 ويتحقق مما إذا كان i \(\in\)SV r,3 أو لا. • إذا i /\(\in\)SV r,3، فسوف أقوم بإيقاف تنفيذ الخطوة 3 على الفور. • إذا i \(\in\)SV r,3، فبعد الانتظار لفترة من الوقت t3 \(\triangleq\)t2 + 2lect = 3lect + Λ، i أتصرف كما يلي. 1. إذا كانت هناك قيمة v′̸= \(\bot\) بحيث يكون من بين جميع الرسائل الصالحة mr,2 ي لقد تلقى، أكثر من 2/3 منها من الشكل (ESIGj(v′), \(\sigma\)r,2 ي)، دون أي تناقض، أ ثم يقوم بحساب الرسالة السيد،3 أنا \(\triangleq\)(ESIGi(v′),\(\sigma\)r,3 أنا). وإلا فإنه يحسب السيد،3 أنا \(\triangleq\) (ESIGi(\(\bot\))، \(\sigma\)r،3 أنا). 2. أنا أدمر مفتاحه السري سريع الزوال skr،3 أنا، ومن ثم نشر السيد،3 أنا. أي أنه لم يتلق رسالتين صالحتين تحتويان على ESIGj(v') وESIGj(v'') مختلفين على التوالي، من اللاعب j. هنا ومن هنا فصاعدًا، باستثناء شروط النهاية التي سيتم تحديدها لاحقًا، عندما يكون اللاعب صادقًا يريد رسائل ذات شكل معين، فالرسائل المتعارضة مع بعضها البعض لا يتم احتسابها أو اعتبارها صالحة.الخطوة 4: إخراج GC والخطوة الأولى من BBA⋆ تعليمات لكل مستخدم i \(\in\)PKr−k: يبدأ المستخدم i الخطوة 4 الخاصة به من الجولة r بمجرد أن يعرف Br−1. • المستخدم i يحسب Qr−1 من المكون الثالث لـ Br−1 ويتحقق مما إذا كان i \(\in\)SV r,4 أو لا. • إذا i /\(\in\)SV r,4، فسوف يتوقف عن تنفيذ الخطوة 4 على الفور. • إذا i \(\in\)SV r,4، فبعد الانتظار لفترة من الوقت t4 \(\triangleq\)t3 + 2lect = 5lect + Λ، i أتصرف كما يلي. 1. يقوم بحساب vi وgi، مخرجات GC، على النحو التالي. (أ) إذا كانت هناك قيمة v′̸= \(\bot\) بحيث يكون من بين جميع الرسائل الصالحة mr,3 ي لديه تم استلامها، أكثر من 2/3 منها من الشكل (ESIGj(v′), \(\sigma\)r,3 ي)، ثم يضبط السادس \(\triangleq\)v′ وجي \(\triangleq\)2. (ب) بخلاف ذلك، إذا كانت هناك قيمة v'̸= \(\bot\) بحيث يكون من بين جميع الرسائل الصالحة السيد،3 ي لقد حصل على أكثر من ثلثها من الشكل (ESIGj(v′), \(\sigma\)r,3 ي)، ثم يقوم بتعيين vi \(\triangleq\)v ′ و gi \(\triangleq\)1.a (ج) بخلاف ذلك، يقوم بتعيين vi \(\triangleq\)H(Br ƒ) وجي \(\triangleq\)0. 2. يقوم بحساب ثنائي، مدخلات BBA⋆، على النحو التالي: ثنائية \(\triangleq\)0 إذا كانت gi = 2، وbi \(\triangleq\)1 بخلاف ذلك. 3. يقوم بحساب الرسالة السيد،4 أنا \(\triangleq\)(ESIGi(bi)، ESIGi(vi)، \(\sigma\)r،4 ط)، يدمر له سريع الزوال المفتاح السري Skr،4 أنا، ومن ثم نشر السيد،4 أنا. أيمكن إثبات أن حرف v في الحالة (ب)، إن وجد، يجب أن يكون فريدًا.
الخطوة s، 5 \(\geq\)s \(\geq\)m + 2، s −2 ≡0 mod 3: خطوة ثابتة بالعملة إلى 0 من BBA⋆ تعليمات لكل مستخدم i \(\in\)PKr−k: المستخدم i يبدأ خطواته الخاصة من الجولة r بمجرد أن يعرف Br−1. • يحسب المستخدم i Qr−1 من المكون الثالث لـ Br−1 ويتحقق مما إذا كان i \(\in\)SV r,s. • إذا i /\(\in\)SV r,s، فسوف أقوم بإيقاف تنفيذ الخطوة s على الفور. • إذا كان i \(\in\)SV r,s فإنه يتصرف على النحو التالي. – ينتظر حتى مرور فترة زمنية t \(\triangleq\)ts−1 + 2lect = (2s −3)lect + Λ. – شرط النهاية 0: إذا كان هناك، أثناء هذا الانتظار وفي أي وقت، أ السلسلة v̸= \(\bot\) والخطوة s′ هكذا (أ) 5 s′s′ \(\geq\)s, s′ −2 ≡0 mod 3 — أي أن الخطوة s′ هي خطوة ثابتة بالعملة إلى 0، (ب) لقد تلقيت ما لا يقل عن tH = 2 ن 3 + 1 رسائل صالحة السيد، s′−1 ي = (ESIGj(0)، ESIGj(v)، \(\sigma\)r،s'−1 ي ) ، أ و (ج) لقد تلقيت رسالة صالحة يا سيد 1 ي = (ر ي، esigj(H(Br ي )))، \(\sigma\)ص،1 ي ) مع v = H(Br ي)، ثم أوقف تنفيذه للخطوة s (وفي الواقع للجولة r) على الفور بدون نشر أي شيء؛ مجموعات ر = ر ي ; ويقوم بتعيين CERT r الخاص به ليكون مجموعة الرسائل السيد، ق′−1 ي من الخطوة الفرعية (ب).ب – شرط الانتهاء 1: إذا كان هناك، أثناء هذا الانتظار وفي أي وقت، أ الخطوة ′ هكذا (أ') 6 \(\geq\)s′ \(\geq\)s, s′ −2 ≡1 mod 3 — أي أن الخطوة s′ هي خطوة ثابتة بالعملة إلى 1، و (ب') لقد تلقيت على الأقل رسائل صالحة mr,s'−1 ي = (ESIGj(1)، ESIGj(vj)، \(\sigma\)r,s'−1 ي ) ،ج ثم أوقف تنفيذه للخطوة s (وفي الواقع للجولة r) على الفور بدون نشر أي شيء؛ مجموعات ر = ر ƒ ; ويقوم بتعيين CERT r الخاص به ليكون مجموعة الرسائل السيد، ق′−1 ي من الخطوة الفرعية (ب'). – بخلاف ذلك، في نهاية الانتظار، يقوم المستخدم i بما يلي. لقد حدد السادس ليكون أغلبية أصوات VJ's في المكونات الثانية من جميع الأصوات الصحيحة السيد، ق−1 ي لقد حصل عليه. انه يحسب ثنائية على النحو التالي. إذا كان أكثر من 2/3 من جميع السيد، ق -1 صالح ي لقد تلقاها هي من النموذج (ESIGj(0)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يقوم بتعيين ثنائية \(\triangleq\)0. بخلاف ذلك، إذا كان أكثر من 2/3 من جميع mr,s−1 الصالحة ي لقد تلقاها هي من النموذج (ESIGj(1)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يقوم بتعيين ثنائية \(\triangleq\)1. وإلا، فإنه يحدد ثنائية \(\triangleq\)0. انه يحسب الرسالة السيد، ق أنا \(\triangleq\)(ESIGi(bi)، ESIGi(vi)، \(\sigma\)r،s ط)، يدمر له سريع الزوال المفتاح السري skr,s أنا، ومن ثم نشر السيد، ق أنا. aمثل هذه الرسالة من اللاعب j يتم احتسابها حتى إذا تلقى اللاعب i أيضًا رسالة من j بالتوقيع برقم 1. أشياء مماثلة لحالة النهاية 1. كما هو موضح في التحليل، يتم ذلك للتأكد من أن جميع المستخدمين الصادقين يعرفون ذلك Br خلال الوقت π من بعضها البعض. المستخدم يعرف الآن Br ونهاياته الدائرية الخاصة. لا يزال يساعد في نشر الرسائل كمستخدم عام، ولكن لا يبدأ أي انتشار باعتباره مدققًا (r، s). وعلى وجه الخصوص، فقد ساعد في نشر جميع الرسائل في بلده CERT r، وهو ما يكفي لبروتوكولنا. لاحظ أنه يجب عليه أيضًا تعيين bi \(\triangleq\)0 لبروتوكول BA الثنائي، ولكن bi ليست هناك حاجة في هذه الحالة على أي حال. أشياء مماثلة لجميع التعليمات المستقبلية. cفي هذه الحالة، لا يهم ما هي VJ.الخطوة s، 6 \(\geq\)s \(\geq\)m + 2، s −2 ≡1 mod 3: خطوة ثابتة بالعملة إلى 1 من BBA⋆ تعليمات لكل مستخدم i \(\in\)PKr−k: المستخدم i يبدأ خطواته الخاصة من الجولة r بمجرد أن يعرف Br−1. • المستخدم i يحسب Qr−1 من المكون الثالث لـ Br−1 ويتحقق مما إذا كان i \(\in\)SV r,s أو لا. • إذا i /\(\in\)SV r,s، فسوف أقوم بإيقاف تنفيذ الخطوة s على الفور. • إذا كان i \(\in\)SV r,s فإنه يقوم بما يلي. - ينتظر حتى مرور فترة زمنية t \(\triangleq\)(2s −3)\(\alpha\) + Λ. - حالة الانتهاء 0: نفس تعليمات خطوات العملة الثابتة إلى 0. – شرط النهاية 1: نفس تعليمات خطوات العملة الثابتة إلى 0. – بخلاف ذلك، في نهاية الانتظار، يقوم المستخدم i بما يلي. لقد حدد السادس ليكون أغلبية أصوات VJ's في المكونات الثانية من جميع الأصوات الصحيحة السيد، ق−1 ي لقد حصل عليه. انه يحسب ثنائية على النحو التالي. إذا كان أكثر من 2/3 من جميع السيد، ق -1 صالح ي لقد تلقاها هي من النموذج (ESIGj(0)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يقوم بتعيين ثنائية \(\triangleq\)0. بخلاف ذلك، إذا كان أكثر من 2/3 من جميع mr,s−1 الصالحة ي لقد تلقاها هي من النموذج (ESIGj(1)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يقوم بتعيين ثنائية \(\triangleq\)1. بخلاف ذلك، يقوم بتعيين ثنائية \(\triangleq\)1. انه يحسب الرسالة السيد، ق أنا \(\triangleq\)(ESIGi(bi)، ESIGi(vi)، \(\sigma\)r،s ط)، يدمر له سريع الزوال المفتاح السري skr,s أنا، ومن ثم نشر السيد، ق أنا.
الخطوة s، 7 \(\geq\)s \(\geq\)m + 2، s −2 ≡2 mod 3: خطوة مقلوبة بشكل حقيقي من BBA⋆ تعليمات لكل مستخدم i \(\in\)PKr−k: المستخدم i يبدأ خطواته الخاصة من الجولة r بمجرد أن يعرف Br−1. • المستخدم i يحسب Qr−1 من المكون الثالث لـ Br−1 ويتحقق مما إذا كان i \(\in\)SV r,s أو لا. • إذا i /\(\in\)SV r,s، فسوف أقوم بإيقاف تنفيذ الخطوة s على الفور. • إذا كان i \(\in\)SV r,s فإنه يقوم بما يلي. - ينتظر حتى مرور فترة زمنية t \(\triangleq\)(2s −3)\(\alpha\) + Λ. - حالة الانتهاء 0: نفس تعليمات خطوات العملة الثابتة إلى 0. – شرط النهاية 1: نفس تعليمات خطوات العملة الثابتة إلى 0. – بخلاف ذلك، في نهاية الانتظار، يقوم المستخدم i بما يلي. لقد حدد السادس ليكون أغلبية أصوات VJ's في المكونات الثانية من جميع الأصوات الصحيحة السيد، ق−1 ي لقد حصل عليه. انه يحسب ثنائية على النحو التالي. إذا كان أكثر من 2/3 من جميع السيد، ق -1 صالح ي لقد تلقاها هي من النموذج (ESIGj(0)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يقوم بتعيين ثنائية \(\triangleq\)0. بخلاف ذلك، إذا كان أكثر من 2/3 من جميع mr,s−1 الصالحة ي لقد تلقاها هي من النموذج (ESIGj(1)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يقوم بتعيين ثنائية \(\triangleq\)1. بخلاف ذلك، دع SV r,s−1 أنا تكون مجموعة (r, s −1)-المدققين الذين حصل منهم على صلاحية رسالة السيد، ق−1 ي . يقوم بتعيين bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 أنا ح(\(\sigma\)ص,ق−1 ي )). انه يحسب الرسالة السيد، ق أنا \(\triangleq\)(ESIGi(bi)، ESIGi(vi)، \(\sigma\)r،s ط)، يدمر له سريع الزوال المفتاح السري skr,s أنا، ومن ثم نشر السيد، ق أنا.
الخطوة م + 3: الخطوة الأخيرة من BBA⋆a تعليمات لكل مستخدم i \(\in\)PKr−k: المستخدم i يبدأ خطوته الخاصة m + 3 من الجولة r بمجرد أن يعرف Br−1. • المستخدم i يحسب Qr−1 من المكون الثالث لـ Br−1 ويتحقق مما إذا كان i \(\in\)SV r,m+3 أو لا. • إذا i /\(\in\)SV r,m+3، فسوف أقوم بإيقاف تنفيذ الخطوة m + 3 على الفور. • إذا كان i \(\in\)SV r,m+3 فإنه يفعل ما يلي. – ينتظر حتى مرور فترة من الزمن t+3 \(\triangleq\)tm+2 + 2lect = (2m + 3)lect + Λ. - حالة الانتهاء 0: نفس تعليمات خطوات العملة الثابتة إلى 0. – شرط النهاية 1: نفس تعليمات خطوات العملة الثابتة إلى 0. – بخلاف ذلك، في نهاية الانتظار، يقوم المستخدم i بما يلي. انه يحدد \(\triangleq\)1 وBr \(\triangleq\)Br ƒ. يقوم بحساب الرسالة mr,m+3 أنا = (ESIGi(outi)، ESIGi(H(Br)))، \(\sigma\)r،m+3 أنا )، يدمر له مفتاح سري سريع الزوال، skr،m+3 أنا ، ثم يقوم بنشر السيد، م+3 أنا للتصديق على Br.b مع احتمال كبير أن BBA⋆ قد انتهى قبل هذه الخطوة، ونحدد هذه الخطوة للاكتمال. ليس من الضروري أن تتضمن شهادة البكالوريوس من الخطوة m + 3 ESIGi(outi). نحن ندرجه للتوحيد فقط: أصبحت الشهادات الآن ذات تنسيق موحد بغض النظر عن الخطوة التي يتم إنشاؤها فيها.إعادة بناء كتلة Round-r من قبل غير المتحققين تعليمات لكل مستخدم i في النظام: يبدأ المستخدم i جولته الخاصة بمجرد معرفته Br−1، وينتظر معلومات الكتلة على النحو التالي. – إذا كان هناك، أثناء هذا الانتظار وفي أي وقت، سلسلة v وخطوة s′ هكذا ذلك (أ) 5 \(\geq\)s′ \(\geq\)m + 3 مع s′ −2 ≡0 mod 3، (ب) لقد تلقيت على الأقل رسائل صالحة mr,s′−1 ي = (ESIGj(0)، ESIGj(v)، \(\sigma\)r،s'−1 ي )، و (ج) لقد تلقيت رسالة صالحة يا سيد 1 ي = (ر ي، esigj(H(Br ي )))، \(\sigma\)ص،1 ي ) مع v = H(Br ي)، ثم أوقف تنفيذه للجولة r على الفور؛ مجموعات ر = ر ي؛ ويضع بلده CERT ص لتكون مجموعة الرسائل mr,s′−1 ي من الخطوة الفرعية (ب). – إذا كانت هناك، أثناء هذا الانتظار وفي أي وقت، خطوة من هذا القبيل (أ') 6 \(\geq\)s′ \(\geq\)m + 3 مع s′ −2 ≡1 mod 3، و (ب') لقد تلقيت على الأقل رسائل صالحة mr,s'−1 ي = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s'−1 ي )، ثم أوقف تنفيذه للجولة r على الفور؛ مجموعات ر = ر ƒ؛ ويضع بلده CERT ص لتكون مجموعة الرسائل mr,s′−1 ي من الخطوة الفرعية (ب'). – إذا تلقيت، أثناء هذا الانتظار وفي أي وقت، رسائل صالحة على الأقل السيد،م+3 ي = (ESIGj(1)، ESIGj(H(Br ɫ )))، \(\sigma\)r،m+3 ي )، ثم أوقف تنفيذه للجولة r على الفور، مجموعات Br = Br ƒ ، ويقوم بتعيين CERT r الخاص به ليكون مجموعة الرسائل mr,m+3 ي لمدة 1 و ح(ر ƒ). 5.5 تحليل Algorand ′ 1 نقدم الرموز التالية لكل جولة r \(\geq\)0، المستخدمة في التحليل. • ليكن T r هو الوقت الذي يعرف فيه أول مستخدم صادق Br−1. • ليكن Ir+1 هو الفاصل الزمني [T r+1, T r+1 + lect]. لاحظ أن T 0 = 0 عند تهيئة البروتوكول. لكل s \(\geq\)1 وi \(\in\)SV r,s، تذكر ذلك \(\alpha\)r,s أنا و \(\beta\)r,s أنا هما على التوالي وقت البدء ووقت الانتهاء لخطوات اللاعب i. علاوة على ذلك، تذكَّر أن ts = (2s −3)lect + Λ لكل 2 \(\geq\)s \(\geq\)m + 3. بالإضافة إلى ذلك، دع I0 \(\triangleq\){0} وt1 \(\triangleq\)0. وأخيرًا، تذكر أن Lr \(\geq\)m/3 هو متغير عشوائي يمثل عدد تجارب برنولي مطلوب لرؤية 1، عندما تكون كل تجربة 1 مع احتمال ph 2 وهناك تجارب m/3 على الأكثر. إذا كان كل شيء تفشل التجارب إذن Lr \(\triangleq\)m/3. في التحليل، نتجاهل وقت الحساب، لأنه في الواقع لا يكاد يذكر بالنسبة للوقت اللازم لنشر الرسائل. على أي حال، باستخدام أكبر قليلا Λ و Λ، يمكن أن يكون وقت الحساب ممكنا يتم دمجها في التحليل مباشرة. معظم العبارات أدناه تحمل "ساحقة الاحتمالية"، وقد لا نؤكد على هذه الحقيقة مرارًا وتكرارًا في التحليل.5.6 النظرية الرئيسية نظرية 5.1. الخصائص التالية تحمل احتمالية ساحقة لكل جولة r \(\geq\)0: 1. يتفق جميع المستخدمين الصادقين على نفس الكتلة Br. 2. عندما يكون القائد \(\ell\)r صادقًا، يتم إنشاء الكتلة Br بواسطة \(\ell\)r، وتحتوي Br على مجموعة دفع قصوى تم استلامه بواسطة \(\ell\)r بالوقت \(\alpha\)r,1 \(\ell\)r , T r+1 \(\geq\)T r + 8lect + Λ وجميع المستخدمين الصادقين يعرفون Br في ذلك الوقت الفاصل الزمني Ir+1. 3. عندما يكون القائد \(\ell\)r خبيثًا، T r+1 \(\geq\)T r + (6Lr + 10)\(\alpha\) + Λ وجميع المستخدمين الصادقين يعرفون Br في الفاصل الزمني Ir+1. 4. ph = h2(1 + h −h2) لـ Lr، والقائد \(\ell\)r صادق مع احتمال ph على الأقل. قبل إثبات نظريتنا الرئيسية، دعونا نبدي ملاحظتين. ملاحظات. • إنشاء الكتل والكمون الحقيقي. يتم تعريف الوقت اللازم لإنشاء الكتلة Br بأنه T r+1 −T r. وهذا يعني أنه يتم تعريفه على أنه الفرق بين المرة الأولى التي يتعلم فيها بعض المستخدمين الصادقين Br و في المرة الأولى التي يتعلم فيها بعض المستخدمين الصادقين Br−1. عندما يكون قائد الجولة صادقًا، الخاصية 2 لدينا تضمن النظرية الرئيسية أن الوقت المحدد لتوليد Br هو 8 Λ + Λ، مهما كان الأمر قد تكون القيمة الدقيقة لـ h > 2/3. عندما يكون القائد خبيثًا، تشير الخاصية 3 إلى أن الوقت المتوقع لإنشاء Br محدد بـ (12 ph + 10)\(\alpha\) + Λ، مرة أخرى بغض النظر عن الدقة قيمة h.18 ومع ذلك، فإن الوقت المتوقع لتوليد Br يعتمد على القيمة الدقيقة لـ h. في الواقع، من خلال الخاصية 4، ph = h2(1 + h −h2) والقائد صادق في الاحتمالية على الأقل الرقم الهيدروجيني، وبالتالي E[T r+1 −T r] \(\geq\)h2(1 + h −h2) \(\cdot\) (8lect + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)π + Λ). على سبيل المثال، إذا كانت h = 80%، فإن E[T r+1 −T r] \(\geq\)12.7lect + Λ. • Λ مقابل Λ. لاحظ أن حجم الرسائل المرسلة من قبل القائمين على التحقق في الخطوة Algorand ′ هو المهيمن من خلال طول مفاتيح التوقيع الرقمي، والتي يمكن أن تظل ثابتة، حتى عندما يكون عددها المستخدمين هائلة. لاحظ أيضًا أنه في أي خطوة s > 1، يكون هناك نفس العدد المتوقع n من المدققين يمكن استخدامه سواء كان عدد المستخدمين 100 ألف أو 100 مليون أو 100 مليون. وذلك لأن n فقط يعتمد على h وF. باختصار، باستثناء الحاجة المفاجئة لزيادة طول المفتاح السري، يجب أن تظل قيمة كما هي بغض النظر عن حجم عدد المستخدمين في المستقبل المنظور. على النقيض من ذلك، بالنسبة لأي معدل معاملة، فإن عدد المعاملات ينمو مع عدد المعاملات المستخدمين. لذلك، لمعالجة جميع المعاملات الجديدة في الوقت المناسب، يجب أن يكون حجم الكتلة تنمو أيضًا مع عدد المستخدمين، مما يتسبب في نمو Λ أيضًا. وهكذا، على المدى الطويل، ينبغي أن يكون لدينا Λ << Λ. وبناءً على ذلك، فمن المناسب أن يكون هناك معامل أكبر لـ lect، وفي الواقع معامل من 1 لـ Λ. إثبات النظرية 5.1. نثبت الخصائص 1–3 بالاستقراء: بافتراض أنها تنطبق على الجولة r −1 (دون فقدان العمومية، يتم الاحتفاظ بها تلقائيًا لـ "الجولة -1" عندما يكون r = 0)، ونثبتها جولة ص. 18في الواقع، E[T r+1 −T r] \(\geq\)(6E[Lr] + 10)Λ + Λ = (6 \(\cdot\) 2 الرقم الهيدروجيني + 10) \(\alpha\) + Λ = ( 12 الرقم الهيدروجيني + 10) \(\alpha\) + Λ.نظرًا لأن Br−1 يتم تعريفه بشكل فريد من خلال الفرضية الاستقرائية، فإن المجموعة SV r,s يتم تعريفها بشكل فريد لكل خطوة من الجولة r. باختيار n1، SV r،1 ̸= \(\emptyset\) مع احتمالية ساحقة. نحن الآن اذكر المعينتين التاليتين، الموضحتين في القسمين 5.7 و5.8. طوال فترة الحث وفي براهين الليما، تحليل الجولة 0 هو تقريبا نفس الخطوة الاستقرائية، وسوف نسلط الضوء على الاختلافات عند حدوثها. ليما 5.2. [اكتمال Lemma] افتراض الخصائص 1–3 يتم الاحتفاظ به للجولة r−1، عندما يكون القائد \(\ell\)r صادق، مع احتمالية ساحقة، • يتفق جميع المستخدمين الصادقين على نفس الكتلة Br، التي تم إنشاؤها بواسطة \(\ell\)r وتحتوي على الحد الأقصى تم استلام مجموعة الدفع بواسطة \(\ell\)r حسب الوقت \(\alpha\)r,1 \(\ell\)r \(\in\)Ir؛ و • T r+1 \(\geq\)T r + 8lect + Λ وجميع المستخدمين الصادقين يعرفون Br في الفاصل الزمني Ir+1. ليما 5.3. [سلامة Lemma] افتراض الخصائص 1–3 يتم الاحتفاظ بها للجولة r −1، عندما يكون القائد \(\ell\)r خبيث، مع احتمالية ساحقة، يتفق جميع المستخدمين الصادقين على نفس الكتلة Br، T r+1 \(\geq\) T r + (6Lr + 10) lect + Λ وجميع المستخدمين الصادقين يعرفون Br في الفترة الزمنية Ir+1. يتم الاحتفاظ بالخصائص 1–3 من خلال تطبيق Lemmas 5.2 و5.3 على r = 0 وعلى الخطوة الاستقرائية. وأخيرا، نعيد صياغة الخاصية 4 على النحو التالي، كما تم إثباته في القسم 5.9. ليما 5.4. الخصائص المعطاة 1–3 لكل جولة قبل r، ph = h2(1 + h −h2) لـ Lr، و الزعيم \(\ell\)r صادق مع احتمالية ph على الأقل. من خلال الجمع بين العناصر الثلاثة المذكورة أعلاه معًا، فإن النظرية 5.1 صحيحة. ■ تنص lemma أدناه على العديد من الخصائص المهمة حول الجولة r بالنظر إلى الاستقرائي الفرضية، وسيتم استخدامها في البراهين على الثلاثة المذكورة أعلاه. ليما 5.5. افترض أن الخصائص 1–3 موجودة للجولة r −1. لكل خطوة s \(\geq\)1 من الجولة r و كل محقق صادق في HSV r،s، لدينا ذلك (أ) \(\alpha\)r،s أنا \(\in\)الأير؛ (ب) إذا انتظر اللاعب فترة من الوقت، ثم \(\beta\)r,s أنا \(\in\)[T r + ts, T r + lect + ts] لـ r > 0 و \(\beta\) ص، ق أنا = نهاية الخبر لص = 0؛ و (ج) إذا انتظر اللاعب فترة من الوقت، ثم بمرور الوقت \(\beta\)r,s أنا، لقد تلقى جميع الرسائل مرسلة من جميع المدققين الصادقين j \(\in\)HSV r,s′ لجميع الخطوات s' < s. علاوة على ذلك، لكل خطوة s \(\geq\)3، لدينا ذلك (د) لا يوجد لاعبان مختلفان i, i' \(\in\)SV r,s وقيمتين مختلفتين v, v' لهما نفس الشيء الطول، بحيث يكون كلا اللاعبين قد انتظرا مقدارًا من الوقت، أكثر من ثلثي إجمالي الوقت رسائل صالحة السيد، ق−1 ي لقد وقع اللاعب الذي أتلقاه على v، وأكثر من 2/3 من جميع اللاعبين الصالحين رسائل السيد، ق−1 ي اللاعب الذي أستقبله وقع على v′. دليل. الخاصية (أ) تتبع مباشرة من الفرضية الاستقرائية، حيث أن اللاعب الذي أعرفه Br−1 في الفاصل الزمني Ir ويبدأ خطواته الخاصة على الفور. الخاصية (ب) تتبع مباشرة من (أ): منذ لقد انتظرت وقتًا طويلًا قبل التمثيل، \(\beta\)r,s أنا = \(\alpha\)r,s أنا + نهاية الخبر. لاحظ أن \(\alpha\)r,s أنا = 0 ل ص = 0. نثبت الآن الخاصية (ج). إذا كانت s = 2، فمن خلال الخاصية (b)، بالنسبة لجميع أدوات التحقق j \(\in\)HSV r,1 لدينا \(\beta\) ص، ق أنا = \(\alpha\)r,s أنا + ts \(\geq\)T r + ts = T r + lect + Λ \(\geq\) \(\beta\)r,1 ي + Λ.نظرًا لأن كل مدقق j \(\in\)HSV r,1 يرسل رسالته في الوقت \(\beta\)r,1 ي والرسالة تصل إلى كل صادق المستخدمين في وقت Λ على الأكثر، حسب الوقت \(\beta\)r,s أنا لقد تلقيت الرسائل المرسلة من قبل جميع المتحققين في HSV r,1 حسب الرغبة. إذا كانت s > 2، فإن ts = ts−1 + 2\(\alpha\). حسب الخاصية (ب)، لجميع الخطوات s′ < s وجميع أدوات التحقق j \(\in\)HSV r,s′, \(\beta\) ص، ق أنا = \(\alpha\)r,s أنا + ts \(\geq\)T r + ts = T r + ts−1 + 2lect \(\geq\)T r + ts′ + 2lect = T r + lect + ts′ + lect \(\geq\) \(\beta\)r,s′ ي + lect. نظرًا لأن كل مدقق j \(\in\)HSV r,s′ يرسل رسالته في الوقت \(\beta\)r,s′ ي والرسالة تصل إلى كل صادق المستخدمين في وقت lect على الأكثر، حسب الوقت \(\beta\)r,s أنا لقد تلقيت جميع الرسائل المرسلة من جميع المدققين الصادقين في HSV r,s' لجميع s' < s. وبالتالي فإن الخاصية (ج) تحمل. وأخيرا نثبت الخاصية (د). لاحظ أن المدققين j \(\in\)SV r,s−1 يسجلون شيئين على الأكثر الخطوة s −1 باستخدام مفاتيحها السرية المؤقتة: قيمة vj بنفس طول مخرجات الدالة hash، وكذلك القليل bj \(\in\){0, 1} إذا كانت s −1 \(\geq\)4. ولهذا السبب في بيان ليما نحن نشترط أن يكون لـ v وv′ نفس الطول: ربما وقع العديد من المدققين على القيمة hash v والقليل b، وبالتالي يتجاوز كلاهما عتبة 2/3. افترض، من أجل التناقض، وجود أدوات التحقق المرغوبة i، i' والقيم v، v'. لاحظ أن بعض أدوات التحقق الخبيثة في MSV r,s−1 ربما تكون قد وقعت على كل من v وv′، ولكن كل منهما صادق قام المدقق في HSV r,s−1 بالتوقيع على واحد منهم على الأكثر. بواسطة الخاصية (ج)، تم استلام كل من i وi′ جميع الرسائل المرسلة من قبل جميع المتحققين الصادقين في HSV r,s−1. افترض أن HSV r,s−1(v) هي مجموعة المدققين الصادقين (r, s −1) الذين وقعوا على v, MSV r,s−1 أنا المجموعة من المدققين الخبيثين (r, s −1) الذين تلقيت منهم رسالة صالحة، وMSV r,s−1 أنا (ت) ال مجموعة فرعية من MSV r,s−1 أنا الذي تلقيت منه رسالة صالحة بالتوقيع v. حسب متطلبات أنا و الخامس، لدينا النسبة \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 أنا (ت)| |HSV r,s−1| + |MSV r,s−1 أنا |
2 3. (1) نعرض أولا |MSV r,s−1 أنا (ت)| \(\geq\)|HSV r,s−1(v)|. (2) بافتراض خلاف ذلك، من خلال العلاقات بين المعلمات، مع احتمالية ساحقة |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 أنا | هكذا النسبة < | HSV r,s−1(v)| + |MSV r,s−1 أنا (ت)| 3|MSV r,s−1 أنا | < 2|MSV r,s−1 أنا (ت)| 3|MSV r,s−1 أنا | \(\geq\)2 3، تناقض عدم المساواة 1. بعد ذلك، من خلال عدم المساواة 1 لدينا 2|HSV r,s−1| + 2|MSV r,s−1 أنا | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 أنا (ت)| \(\geq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 أنا | + |MSV r,s−1 أنا (ت)|. الجمع مع عدم المساواة 2، 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 أنا (ت)| \(\geq\)4|HSV r,s−1(v)|, مما يعني |HSV r,s−1(v)| > 1 2|HSV r,s−1|.وبالمثل، وفقًا لمتطلبات i' وv'، لدينا |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. نظرًا لأن المدقق الصادق j \(\in\)HSV r,s−1 يدمر مفتاحه السري سريع الزوال skr,s−1 ي قبل الانتشار رسالته، لا يستطيع الخصم تزوير توقيع j بقيمة لم يوقعها j بعد ذلك تعلم أن j هو المدقق. وبالتالي، فإن المتباينتين أعلاه تشيران إلى |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|، تناقض. وبناء على ذلك، فإن i، i′، v، v′ المرغوب فيه غير موجود، و الخاصية (د) تحمل. ■ 5.7 ليما الاكتمال ليما 5.2. [اكتمال Lemma، تمت إعادة صياغته] بافتراض أن الخصائص 1–3 مثبتة للجولة r−1، عندما القائد \(\ell\)r صادق، مع احتمالية ساحقة، • يتفق جميع المستخدمين الصادقين على نفس الكتلة Br، التي تم إنشاؤها بواسطة \(\ell\)r وتحتوي على الحد الأقصى تم استلام مجموعة الدفع بواسطة \(\ell\)r حسب الوقت \(\alpha\)r,1 \(\ell\)r \(\in\)Ir؛ و • T r+1 \(\geq\)T r + 8lect + Λ وجميع المستخدمين الصادقين يعرفون Br في الفاصل الزمني Ir+1. دليل. بواسطة الفرضية الاستقرائية وLemma 5.5، لكل خطوة s والمتحقق i \(\in\)HSV r,s، \(\alpha\)r,s أنا \(\in\)إير. أدناه نقوم بتحليل البروتوكول خطوة بخطوة. الخطوة 1. بحكم التعريف، كل مدقق صادق i \(\in\)HSV r,1 ينشر الرسالة المطلوبة mr,1 أنا في الوقت \(\beta\)r,1 أنا = \(\alpha\)r,1 أنا، حيث السيد،1 أنا = (ر أنا، esigi(H(Br أنا )))، \(\sigma\)ص،1 ط)، ر أنا = (ص، دفع ص أنا، SIGi(Qr−1)، H(Br−1))، ودفع ص i هو الحد الأقصى لمجموعة الدفع من بين جميع المدفوعات التي رأيتها بحلول الوقت \(\alpha\)r,1 أنا. الخطوة 2. قم بإصلاح مدقق صادق بشكل تعسفي i \(\in\)HSV r,2. بواسطة Lemma 5.5، عندما أنتهي من اللاعب الانتظار في الوقت \(\beta\)r,2 أنا = \(\alpha\)r,2 أنا + t2، لقد تلقى جميع الرسائل المرسلة من قبل المدققين في HSV r،1، بما في ذلك السيد،1 \(\ell\)ر . حسب تعريف \(\ell\)r، لا يوجد لاعب آخر في PKr−k بيانات اعتماده hash القيمة أصغر من H(\(\sigma\)r,1 \(\ell\)ر). بالطبع، يمكن للخصم أن يفسد \(\ell\)r بعد رؤية أن H(\(\sigma\)r,1 \(\ell\)ص ) صغير جدًا، ولكن بحلول ذلك الوقت يكون اللاعب \(\ell\)r قد دمر مفتاحه سريع الزوال والرسالة السيد،1 \(\ell\)ص تم نشرها. ومن ثم، يقوم المتحقق بتعيين قائده ليكون اللاعب رقم 1. وبناء على ذلك، في الوقت \(\beta\)r,2 أنا، التحقق من نشر السيد،2 أنا = (ESIGi(v′ أنا)، \(\sigma\)ص،2 أنا )، حيث الخامس ' ط = ح(ر \(\ell\)ر). عندما يكون r = 0، يكون الفرق الوحيد هل هذا \(\beta\)r,2 أنا = t2 بدلاً من أن تكون في النطاق. ويمكن قول أشياء مماثلة عن الخطوات المستقبلية ونحن لن أؤكد عليها مرة أخرى. الخطوة 3. قم بإصلاح مدقق صادق بشكل تعسفي i \(\in\)HSV r,3. بواسطة Lemma 5.5، عندما أنتهي من اللاعب الانتظار في الوقت \(\beta\)r,3 أنا = \(\alpha\)r,3 أنا + t3، لقد تلقى جميع الرسائل المرسلة من قبل المدققين في HSV r،2. من خلال العلاقات بين المعلمات، مع احتمالية ساحقة |HSV r,2| > 2|MSV ص،2|. علاوة على ذلك، لا يجوز لأي مدقق نزيه أن يوقع على الرسائل المتناقضة، والخصم ولا يجوز له تزوير توقيع مدقق نزيه بعد أن أتلف الأخير مقابله مفتاح سري سريع الزوال. وبالتالي فإن أكثر من ثلثي جميع الرسائل الصالحة (r, 2) التي تلقيتها هي من المدققون الصادقون ومن النموذج السيد،2 ي = (ESIGj(H(Br \(\ell\)ص)))، \(\sigma\)ص،2 ي) دون أي تناقض. وبناء على ذلك، في الوقت \(\beta\)r,3 أنا لاعب أنا نشر السيد،3 أنا = (ESIGi(v′),\(\sigma\)r,3 i )، حيث v′ = H(Br \(\ell\)ر).الخطوة 4. قم بإصلاح مدقق صادق بشكل تعسفي i \(\in\)HSV r,4. بواسطة Lemma 5.5, لقد تلقيت اللاعب كل شيء الرسائل المرسلة من قبل المدققين في HSV r,3 عندما ينتهي من الانتظار في الوقت \(\beta\)r,4 أنا = \(\alpha\)r,4 أنا + ت4. مماثلة ل الخطوة 3، أكثر من 2/3 من جميع الرسائل الصالحة (r, 3) التي تلقيتها هي من محققين صادقين و من النموذج السيد،3 ي = (ESIGj(H(Br \(\ell\)ص)))، \(\sigma\)ص،3 ي). وبناء على ذلك، فإن اللاعب i يحدد vi = H(Br \(\ell\)r)، gi = 2 وbi = 0. في الوقت \(\beta\)r,4 أنا = \(\alpha\)r,4 أنا +t4 انه ينتشر السيد,4 أنا = (ESIGi(0)، ESIGi(H(Br \(\ell\)ص)))، \(\sigma\)ص،4 أنا). الخطوة 5. تثبيت مدقق صادق بشكل تعسفي i \(\in\)HSV r,5. بواسطة Lemma 5.5, اللاعب الذي سأحصل عليه تلقى جميع الرسائل المرسلة من قبل المدققين في HSV r,4 إذا كان قد انتظر حتى الوقت \(\alpha\)r,5 أنا + ت5. لاحظ ذلك |HSV ص،4| \(\geq\)tH.19 لاحظ أيضًا أن جميع القائمين على التحقق في HSV r,4 قد وقعوا على H(Br) \(\ell\)ر). كـ |MSV r,4| < tH، لا يوجد أي v′̸= H(Br \(\ell\)r) التي كان من الممكن أن تكون موقعة بواسطة tH المدققون في SV r,4 (والذين سيكونون بالضرورة خبيثين)، لذا فإن اللاعب i لا يتوقف قبل أن يفعل ذلك تلقى رسائل صالحة السيد،4 ي = (ESIGj(0)، ESIGj(H(Br \(\ell\)ص)))، \(\sigma\)ص،4 ي). دع T يكون الوقت الذي يحدث الحدث الأخير. قد تكون بعض هذه الرسائل من لاعبين ضارين، ولكن بسبب |MSV ص،4| < tH، واحد منهم على الأقل من مدقق صادق في HSV r،4 ويتم إرساله بعد مرور الوقت تي ص +t4. وبناء على ذلك، T \(\geq\)T r +t4 > T r +lect+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ، وبمرور الوقت، تلقيت أيضًا لاعب T الرسالة السيد،1 \(\ell\)ر . من خلال بناء البروتوكول، يتوقف اللاعب i عند الوقت \(\beta\)r,5 أنا = ت بدون نشر أي شيء؛ مجموعات ر = ر \(\ell\)ص؛ ويقوم بتعيين CERT r الخاص به ليكون مجموعة (r، 4) - رسائل لـ 0 و ح(ر \(\ell\)ص) الذي حصل عليه. الخطوة > 5. وبالمثل، بالنسبة لأي خطوة s > 5 وأي أداة تحقق i \(\in\)HSV r,s، اللاعب الذي سأحصل عليه تلقى جميع الرسائل المرسلة من قبل المدققين في HSV r,4 إذا كان قد انتظر حتى الوقت \(\alpha\)r,s أنا + نهاية الخبر. بواسطة نفس التحليل، يتوقف اللاعب i دون نشر أي شيء، ويتم ضبط Br = Br \(\ell\)ص (ووضع خاصته CERT ص بشكل صحيح). وبطبيعة الحال، فإن أدوات التحقق الخبيثة قد لا تتوقف وقد تنتشر بشكل اعتباطي الرسائل، ولكن لأن |MSV r,s| < tH، عن طريق الحث لا يمكن توقيع أي حرف v آخر بواسطة المدققين في أي خطوة 4 \(\geq\)s′ < s، وبالتالي يتوقف المدققون الصادقون فقط لأنهم حصلوا على قيمة صحيحة (ص، 4)-رسائل لـ 0 وH(Br \(\ell\)ر). إعادة بناء كتلة Round-r. ينطبق تحليل الخطوة 5 على الصدق العام المستخدم أنا تقريبا دون أي تغيير. في الواقع، يبدأ اللاعب i جولته r في الفترة الفاصلة بين Ir و سوف يتوقف فقط في وقت T عندما يتلقى رسائل صالحة (r, 4) لـ H(Br) \(\ell\)ر). مرة أخرى لأن واحدة على الأقل من هذه الرسائل هي من محققين صادقين ويتم إرسالها بعد مرور الوقت T r + t4، اللاعب الذي أملكه كما استقبل السيد 1 \(\ell\)r بالزمن T. وبالتالي فهو يحدد Br = Br \(\ell\)r مع CERT المناسب. يبقى فقط أن نبين أن جميع المستخدمين الصادقين ينهون جولتهم r خلال الفاصل الزمني Ir+1. من خلال تحليل الخطوة 5، كل مدقق صادق i \(\in\)HSV r,5 يعرف Br عند \(\alpha\)r أو قبله،5 أنا + t5 \(\geq\) تي ص + + t5 = تي ص + 8 + Λ. وبما أن T r+1 هو الوقت الذي يعرف فيه أول مستخدم صادق Br، فقد فعلنا ذلك تي ص +1 \(\geq\)T ص + 8 Λ + Λ حسب الرغبة. علاوة على ذلك، عندما يعرف اللاعب Br، فقد ساعد بالفعل في نشر الرسائل CERT الخاص به ص. لاحظ أن جميع هذه الرسائل سيتم استلامها من قبل جميع المستخدمين الصادقين في غضون الوقت المناسب، حتى لو 19. بالمعنى الدقيق للكلمة، يحدث هذا باحتمالية عالية جدًا ولكن ليس بالضرورة ساحقة. ومع ذلك، هذا يؤثر الاحتمال بشكل طفيف على وقت تشغيل البروتوكول، لكنه لا يؤثر على صحته. عندما ح = 80٪، ثم |HSV ص،4| \(\geq\)tH مع الاحتمال 1 −10−8. إذا لم يحدث هذا الحدث، فسوف يستمر البروتوكول لآخر 3 خطوات. وبما أن احتمال عدم حدوث ذلك في خطوتين ضئيل، فإن البروتوكول سينتهي عند الخطوة 8. توقعًا، فإن عدد الخطوات المطلوبة هو 5 خطوات تقريبًا.كان اللاعب ir أول لاعب قام بنشرها. وعلاوة على ذلك، في أعقاب التحليل أعلاه لدينا تي ص+1 \(\geq\)T ص + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ، وبالتالي فقد حصل جميع المستخدمين الصادقين على mr,1 \(\ell\)r بالزمن T r+1 + lect. وبناء على ذلك، يعرف جميع المستخدمين الصادقين Br في الفترة الزمنية Ir+1 = [T r+1, T r+1 + lect]. أخيرًا، بالنسبة لـ r = 0 لدينا بالفعل T 1 \(\geq\)t4 + lect = 6lect + Λ. الجمع بين كل شيء معا، يحمل ليما 5.2. ■ 5.8 السلامة ليما ليما 5.3. [سلامة Lemma، تمت إعادة صياغتها] بافتراض أن الخصائص 1–3 مثبتة للجولة r −1، عندما القائد \(\ell\)r خبيث، مع احتمالية ساحقة، يتفق جميع المستخدمين الصادقين على نفس الكتلة Br، T r+1 \(\geq\)T r + (6Lr + 10)lect + Λ وجميع المستخدمين الصادقين يعرفون Br في الفاصل الزمني Ir+1. دليل. نحن نعتبر جزأين من البروتوكول، GC وBBA⋆، بشكل منفصل. جي سي. بواسطة الفرضية الاستقرائية وبواسطة Lemma 5.5، لأي خطوة s \(\in\){2, 3, 4} وأي خطوة صادقة التحقق من \(\in\)HSV r,s، عندما يتصرف اللاعب i في الوقت \(\beta\)r,s أنا = \(\alpha\)r,s أنا + تيسي، لقد تلقى جميع الرسائل المرسلة من قبل جميع المدققين الصادقين في الخطوات s' < s. نحن نميز بين حالتين محتملتين للخطوة 4. الحالة 1. لا يوجد أداة تحقق i \(\in\)HSV r,4 مجموعات gi = 2. في هذه الحالة، حسب التعريف bi = 1 لجميع أدوات التحقق i \(\in\)HSV r,4. أي أنهم يبدأون بـ اتفاق على 1 في بروتوكول BA الثنائي. قد لا يكون لديهم اتفاق بشأن السادس، ولكن هذا لا يهم كما سنرى في مكتبة الإسكندرية الثنائية. الحالة 2. يوجد محقق ˆi \(\in\)HSV r,4 بحيث gˆi = 2. وفي هذه الحالة نبين ذلك (1) gi \(\geq\)1 للجميع i \(\in\)HSV r,4, (2) توجد قيمة v ′ بحيث vi = v ′ للجميع i \(\in\)HSV r,4 و (3) توجد رسالة صالحة يا سيد،1 \(\ell\) من بعض أدوات التحقق \(\ell\) \(\in\)SV r,1 بحيث v′ = H(Br \(\ell\)). في الواقع، نظرًا لأن اللاعب ˆi صادق ويحدد gˆi = 2، فإن أكثر من 2/3 من جميع الرسائل الصالحة mr,3 ي لقد حصل عليها بنفس القيمة v′ ̸= \(\bot\)، وقد قام بتعيين vˆi = v′. حسب الخاصية (د) في Lemma 5.5، بالنسبة لأي مدقق صادق آخر (r، 4) i، لا يمكن أن يكون الأمر أكثر من ذلك من 2/3 من جميع الرسائل الصالحة السيد،3 ي التي تلقيتها هي بنفس القيمة v′′ ̸= v′. وفقًا لذلك، إذا قمت بتعيين gi = 2، فيجب أن أكون قد رأيت> 2/3 أغلبية لـ v' أيضًا وقمت بتعيينها vi = v'، حسب الرغبة. الآن فكر في أداة التحقق التعسفية i \(\in\)HSV r,4 مع gi <2. على غرار تحليل الخاصية (د) في Lemma 5.5، لأن اللاعب ˆi قد رأى > 2/3 أغلبية لـ v′، أكثر من 1 2|HSV ص،3| صادق (ص، 3) - وقع المدققون على حرف v ′. لأنني تلقيت جميع الرسائل من قبل المدققين الصادقين (ص، 3). الوقت \(\beta\)r,4 أنا = \(\alpha\)r,4 أنا + t4، وقد حصل على وجه الخصوص على أكثر من 1 2|HSV ص،3| رسائل منهم لـ v'. لأن |HSV r,3| > 2|MSV r,3|، لقد رأيت > 1/3 أغلبية لـ v'. وبناء على ذلك أيها اللاعب أقوم بتعيين gi = 1، وتبقى الخاصية (1) ثابتة. هل اللاعب الذي قمت بتعيينه بالضرورة vi = v'؟ افترض أن هناك قيمة مختلفة v′′ ̸= \(\bot\)هكذا اللاعب الذي رأيته أيضًا > أغلبية 1/3 لـ v''. قد تكون بعض هذه الرسائل من الخبيثة المحققين، ولكن واحد منهم على الأقل هو من بعض المحققين الصادقين j \(\in\) HSV r، 3: في الواقع، لأن |HSV ص،3| > 2|MSV r,3| ولقد تلقيت كافة الرسائل من HSV r,3، مجموعة البرامج الضارة المحققون الذين تلقيت منهم رسالة صالحة (r، 3) - تمثل أقل من 1/3 من جميع الرسائل الصالحة الرسائل التي تلقاها.حسب التعريف، يجب أن يكون اللاعب j قد رأى > 2/3 أغلبية لـ v ′ ′ بين جميع الرسائل الصالحة (r، 2) لقد تلقى. ومع ذلك، لدينا بالفعل ما شاهده بعض المحققين الصادقين الآخرين (r، 3). أغلبية 2/3 لصالح v' (لأنهم وقعوا على v'). حسب الخاصية (د) من Lemma 5.5، لا يمكن ذلك يحدث وهذه القيمة v'' غير موجودة. لذلك يجب على اللاعب أن يضبط vi = v′ حسب الرغبة، والملكية (2) تحمل. أخيرًا، نظرًا لأن بعض المدققين الصادقين (r, 3) قد رأوا أغلبية تزيد عن 2/3 لصالح v'، فإن البعض (في الواقع، أكثر من نصف) المدققين الصادقين (r, 2) وقعوا على v′ وقاموا بنشر رسائلهم. من خلال بناء البروتوكول، يجب أن يكون هؤلاء المدققون الصادقون (r، 2) قد حصلوا على شهادة صالحة رسالة السيد،1 \(\ell\) من بعض اللاعبين \(\ell\) \(\in\)SV r,1 مع v′ = H(Br \(\ell\))، وبالتالي فإن الخاصية (3) تحمل. بابا⋆. نميز مرة أخرى بين حالتين. الحالة 1. جميع أدوات التحقق i \(\in\)HSV r,4 لها ثنائية = 1. يحدث هذا بعد الحالة 1 من GC. كـ |MSV r,4| < tH، في هذه الحالة لا يوجد مدقق في SV r,5 يمكنه جمع أو إنشاء رسائل صالحة (r, 4) للبتة 0. وبالتالي، لا يوجد مدقق صادق في HSV r,5 سيتوقف لأنه يعرف كتلة غير فارغة Br. علاوة على ذلك، على الرغم من وجود رسائل صالحة (r, 4) على الأقل للبتة 1، فإن s′ = 5 غير مرضية s′ −2 ≡1 mod 3، وبالتالي لن يتوقف أي مدقق صادق في HSV r,5 لأنه يعرف Br = Br ƒ. وبدلاً من ذلك، فإن كل أداة تحقق i \(\in\)HSV r,5 تعمل في الوقت \(\beta\)r,5 أنا = \(\alpha\)r,5 أنا + t5، بحلول الوقت الذي حصل فيه على كل شيء الرسائل المرسلة بواسطة HSV r,4 بعد Lemma 5.5. هكذا رأيت اللاعب> 2/3 أغلبية لـ 1 ومجموعات ثنائية = 1. في الخطوة 6 وهي خطوة عملة ثابتة إلى 1، على الرغم من أن s′ = 5 يرضي s′ −2 ≡0 mod 3، هناك لا توجد رسائل صالحة (r, 4) للبت 0، وبالتالي لن يتوقف أي مدقق في HSV r,6 بسبب إنه يعرف كتلة غير فارغة Br. ومع ذلك، مع s′ = 6، s′ −2 ≡1 mod 3 وهناك وجود |HSV ص،5| \(\geq\)tH صالحة (r, 5) - رسائل للبت 1 من HSV r,5. لكل أداة تحقق i \(\in\)HSV r,6، بعد Lemma 5.5، في الوقت \(\alpha\)r,6 أو قبله أنا + لاعب t6 أنا لقد تلقى جميع الرسائل من HSV r,5، وبالتالي أتوقف دون نشر أي شيء أو مجموعات ر = ر ƒ. CERT r الخاص به هو مجموعة الرسائل الصالحة (r, 5) mr,5 ي = (ESIGj(1)، ESIGj(vj)، \(\sigma\)r،5 ي) يستقبله عندما يتوقف. بعد ذلك، اسمح للاعب أن يكون إما مدققًا صادقًا في الخطوة s > 6 أو مستخدمًا صادقًا عامًا (أي، غير محقق). على غرار إثبات Lemma 5.2، يقوم اللاعب i بتعيين Br = Br ƒ ويضع خاصته CERT r هي مجموعة الرسائل الصالحة (r, 5) mr,5 ي = (ESIGj(1)، ESIGj(vj)، \(\sigma\)r،5 ي) لديه تلقى. وأخيرا، على غرار Lemma 5.2، تي ص+1 \(\geq\) دقيقة أنا\(\in\)HSV ص،6 \(\alpha\)r،6 أنا + t6 \(\geq\)T r + lect + t6 = T r + 10lect + Λ، وجميع المستخدمين الصادقين يعرفون Br في الفترة الزمنية Ir+1، لأن المستخدم الصادق الأول هو الذي يعرف أن Br قد ساعد في نشر الرسائل (r, 5) في CERT r. الحالة 2. يوجد مُحقق ˆi \(\in\)HSV r,4 مع bˆi = 0. يحدث هذا بعد الحالة 2 من GC وهي الحالة الأكثر تعقيدًا. من خلال تحليل جي سي، في هذه الحالة توجد رسالة صالحة السيد،1 \(\ell\) بحيث يكون vi = H(Br \(\ell\)) للجميع i \(\in\)HSV r,4. ملاحظة أن القائمين على التحقق في HSV r,4 قد لا يكون لديهم اتفاق بشأن ثنائية. لأي خطوة s \(\in\){5, . . . ، m + 3} والتحقق من i \(\in\)HSV r،s، بواسطة Lemma 5.5 player كنت سأحصل عليه تلقى جميع الرسائل المرسلة من قبل جميع المتحققين الصادقين في HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 إذا كان قد انتظر للوقت نهاية الخبر.نحن الآن نعتبر الحدث التالي E: هناك خطوة s∗\(\geq\)5 بحيث أنه في المرة الأولى الوقت في مكتبة الإسكندرية الثنائية، يجب أن يتوقف بعض اللاعبين i∗\(\in\)SV r,s∗ (سواء كان خبيثًا أو صادقًا) دون نشر أي شيء. نستخدم "يجب أن يتوقف" للتأكيد على حقيقة أنه إذا كان اللاعب i∗ خبيث، فيجوز له أن يتظاهر بأنه لا ينبغي أن يتوقف حسب البروتوكول و نشر الرسائل التي يختارها الخصم. وعلاوة على ذلك، من خلال بناء البروتوكول، سواء (E.a) i∗ قادر على جمع أو إنشاء رسائل صالحة على الأقل mr,s′−1 ي = (ESIGj(0)، ESIGj(v)، \(\sigma\)r,s'−1 ي ) لنفس v و s′، مع 5 \(\geq\)s′ \(\geq\)s∗ و s′ −2 ≡0 mod 3؛ أو (E.b) i∗ قادر على جمع أو إنشاء رسائل صالحة على الأقل mr,s′−1 ي = (ESIGj(1)، ESIGj(vj)، \(\sigma\)r,s'−1 ي ) لنفس s′، مع 6 χs′ ′s∗و s′ −2 ≡1 mod 3. لأن الرسائل الصادقة (r, s′ −1) يتم استلامها من قبل جميع المدققين الصادقين (r, s′) قبل أن تم الانتهاء من الانتظار في الخطوات s'، ولأن الخصم يتلقى كل شيء في موعد لا يتجاوز مستخدمون صادقون، دون فقدان العمومية، لدينا s′ = s∗ واللاعب ضار. لاحظ ذلك لم نشترط أن تكون القيمة v في E.a هي hash لكتلة صالحة: كما سيتضح في التحليل، v = H(Br \(\ell\)) في هذا الحدث الفرعي. أدناه نقوم أولاً بتحليل الحالة 2 بعد الحدث E، ثم نبين أن قيمة s∗ هي في الأساس يتم توزيعها وفقًا لـ Lr (وبالتالي فإن الحدث E يحدث قبل الخطوة m + 3 بأغلبية ساحقة الاحتمال نظرا للعلاقات للمعلمات). للبدء، بالنسبة لأي خطوة 5 \(\geq\)s < s∗، لقد انتظر كل مدقق صادق i HSV r,s الوقت ts وحدد vi ليكون صوت الأغلبية في صالح (r, s−1)-الرسائل التي تلقاها. منذ أن تلقيت اللاعب جميع الرسائل الصادقة (r، s−1). بعد Lemma 5.5، نظرًا لأن جميع المدققين الصادقين في HSV r,4 وقعوا على H(Br) \(\ell\)) الحالة التالية 2 من GC، ومنذ |HSV r,s−1| > 2|MSV r,s−1| لكل ثانية، عن طريق الاستقراء لدينا هذا اللاعب أنا تم تعيينه السادس = ح(ر \(\ell\)). وكذلك الأمر بالنسبة لكل محقق صادق لا يتوقف إلا وينشر أي شيء. الآن نفكر في الخطوة s∗ ونميز بين أربع حالات فرعية. الحالة 2.1.أ. يحدث الحدث E.a ويوجد مدقق صادق وهو الذي يجب عليه توقف أيضًا دون نشر أي شيء. في هذه الحالة، لدينا s∗−2 ≡0 mod 3 والخطوة s∗ هي خطوة عملة ثابتة إلى 0. بواسطة التعريف، اللاعب i ′ قد تلقى على الأقل رسائل صالحة (r، s∗−1) من النموذج (ESIGj(0)، ESIGj(v)، \(\sigma\)r،s∗−1 ي ). نظرًا لأن جميع المدققين في HSV r,s∗−1 قد وقعوا على H(Br \(\ell\)) و |MSV r,s∗−1| < tH، لدينا v = H(Br \(\ell\)). منذ على الأقل tH −|MSV r,s∗−1| \(\geq\)1 من (r، s∗−1) - الرسائل المستلمة بواسطة i ′ لـ 0 و v يتم إرسالها بواسطة المدققين في HSV r,s∗−1 بعد الوقت T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +lect+Λ \(\geq\) \(\beta\)r,1 \(\ell\) +Λ، اللاعب i′ قد تلقى السيد,1 \(\ell\) بحلول الوقت الذي يتلقى فيه تلك الرسائل (r, s∗−1). هكذا اللاعب أنا أتوقف دون نشر أي شيء؛ مجموعات ر = ر \(\ell\)؛ ويقوم بتعيين CERT r الخاص به ليكون مجموعة من الرسائل الصالحة (r, s∗−1) لـ 0 وv التي تلقاها. بعد ذلك، نوضح أن أي محقق آخر i HSV r,s قد توقف عند Br = Br \(\ell\)، أو قام بتعيين bi = 0 وتم نشره (ESIGi(0)، ESIGi(H(Br \(\ell\))))، \(\sigma\)r،s أنا). في الواقع، لأن الخطوة s∗ هذه هي المرة الأولى التي يتوقف فيها أحد القائمين على التحقق دون نشر أي شيء، لكن لا يحدث ذلك توجد خطوة s′ < s∗مع s′ −2 ≡1 mod 3 بحيث يكون tH (r, s′ −1)-المتحققون قد وقعوا 1. وبناء على ذلك، لا يوجد مدقق في HSV r,s∗ يتوقف عند Br = Br ƒ.علاوة على ذلك، كما هو الحال بالنسبة لجميع المتحققين الصادقين في الخطوات {4، 5، . . . ، s∗−1} وقعوا على H(Br \(\ell\))، هناك لا لا توجد خطوة s′ \(\geq\)s∗ مع s′ −2 ≡0 mod 3 بحيث يتم توقيع المدققين tH (r, s′ −1) بعض v′′̸= H(Br \(\ell\)) - في الواقع، |MSV r,s′−1| < ر. وبناءً على ذلك، لم يتوقف أي مدقق في HSV r,s∗ مع ر ̸= ر ɫ وBr̸= ر \(\ell\). وهذا يعني أنه إذا توقف اللاعب بدونه نشر أي شيء، لا بد أنه قد وضع Br = Br \(\ell\). إذا كان اللاعب قد انتظر وقتًا وقام بنشر رسالة في ذلك الوقت \(\beta\) ص، ق∗ أنا = \(\alpha\)r,s∗ أنا + ts∗، لقد تلقى جميع الرسائل من HSV r,s∗−1، بما في ذلك على الأقل tH −|MSV r,s∗−1| منهم ل 0 و v. إذا رأيت > 2/3 أغلبية لـ 1، فهو شاهد أكثر من 2(tH −|MSV r,s∗−1|) صالحة (r, s∗−1)-رسائل لـ 1، مع المزيد من 2tH −3|MSV r,s∗−1| منهم من المتحققين الصادقين (ص، ق∗−1). ومع ذلك، فإن هذا يعني |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|، متناقض حقيقة ذلك |HSV r,s∗−1| + 4|MSV r,s∗−1| <2 ن، والذي يأتي من العلاقات للمعلمات. وبناء على ذلك، لا أرى> 2/3 الأغلبية لـ 1، وقام بتعيين bi = 0 لأن الخطوة s∗ هي خطوة عملة ثابتة إلى 0. كما لدينا ينظر، السادس = H(Br \(\ell\)). وهكذا أقوم بالنشر (ESIGi(0)، ESIGi(H(Br \(\ell\))))، \(\sigma\)r،s ط) كما أردنا عرض. بالنسبة للخطوة s∗+ 1، منذ أن ساعد اللاعب i′ في نشر الرسائل في CERT r الخاص به في أو قبل الوقت \(\alpha\)r,s∗ أنا ′ + ts∗، جميع المتحققين الصادقين في HSV r,s∗+1 حصلوا على الأقل tH صالحة (r, s∗−1) - رسائل للبتة 0 والقيمة H(Br) \(\ell\)) في أو قبل الانتهاء منها الانتظار. علاوة على ذلك، لن يتوقف المدققون في HSV r,s∗+1 قبل استلام تلك (r, s∗−1)- الرسائل، لأنه لا توجد أي رسائل أخرى صحيحة (r, s′ −1) من tH للبتة 1 مع s′ −2 ≡1 mod 3 و 6 \(\geq\)s′ \(\geq\)s∗+ 1، حسب تعريف الخطوة s∗. على وجه الخصوص، الخطوة s∗+ 1 بحد ذاتها عبارة عن خطوة ثابتة للعملة إلى 1، لكن لم يتم نشر أي محقق صادق في HSV r,s∗ رسالة لـ 1 و |MSV r,s∗| < ر. وبالتالي فإن جميع المتحققين الصادقين في HSV r,s∗+1 يتوقفون دون نشر أي شيء ويقومون بتعيين Br = ر \(\ell\): كما في السابق، لقد حصلوا على السيد،1 \(\ell\) قبل أن يتلقوا الرسائل المطلوبة (r, s∗−1).20 ويمكن قول الشيء نفسه بالنسبة لجميع المتحققين الصادقين في الخطوات المستقبلية وجميع المستخدمين الصادقين بشكل عام. على وجه الخصوص، أنهم جميعا يعرفون Br = Br \(\ell\)خلال الفاصل الزمني Ir+1 و تي ص+1 \(\geq\) \(\alpha\)r,s∗ أنا ′ + ts∗\(\leq\)T r + \(\alpha\) + ts∗. الحالة 2.1.ب. يحدث الحدث E.b ويوجد مدقق صادق وهو الذي يجب عليه توقف أيضًا دون نشر أي شيء. في هذه الحالة لدينا s∗−2 ≡1 mod 3 والخطوة s∗ هي خطوة ثابتة بالعملة إلى 1. التحليل يشبه الحالة 2.1.أ وتم حذف العديد من التفاصيل. 20إذا كان \(\ell\)خبيثًا، فقد يرسل السيد 1 \(\ell\) متأخرًا، على أمل أن بعض المستخدمين/المتحققين الشرفاء لم يتلقوا السيد 1 \(\ell\) بعد عند حصولهم على الشهادة المطلوبة لذلك. ومع ذلك، بما أن المدقق ˆi \(\in\)HSV r,4 قد قام بتعيين bˆi = 0 و vˆi = H(Br \(\ell\))، كما قبل أن يكون لدينا أكثر من نصف المتحققين الصادقين i \(\in\)HSV r,3 قد حددوا vi = H(Br) \(\ell\)). وهذا يعني المزيد أكثر من نصف المتحققين الصادقين i \(\in\)HSV r,2 قاموا بتعيين vi = H(Br \(\ell\))، وهؤلاء (ص، 2) - المدققون حصلوا جميعًا على السيد، 1 \(\ell\). كما لا يستطيع الخصم التمييز بين المتحقق وغير المتحقق، ولا يمكنه استهداف انتشار السيد،1 \(\ell\) إلى (ص، 2) -المحققون دون أن يراها غير المدققين. في الواقع، مع احتمال كبير، أكثر من النصف (أو جزء ثابت جيد) من جميع المستخدمين الشرفاء شاهدوا السيد 1 \(\ell\) بعد انتظار t2 من بداية جولتهم r. من هنا فصاعدا، الوقت π′ اللازم للسيد,1 \(\ell\) للوصول إلى المستخدمين الصادقين المتبقين هو أصغر بكثير من Λ، ومن أجل البساطة لا نفعل ذلك اكتبها في التحليل إذا كانت 4 \(\geq\) \(\geq\) ′، فسيتم إجراء التحليل دون أي تغيير: بحلول نهاية الخطوة 4، كل شيء كان المستخدمون الصادقون قد تلقوا السيد 1 \(\ell\). إذا أصبح حجم الكتلة هائلاً و4 lect < lect ′، ففي الخطوتين 3 و4، يمكن للبروتوكول أن يطلب من كل مدقق الانتظار حتى 2 ′/2 بدلاً من 2 \(\alpha\)، ويستمر التحليل في الصمود.كما كان من قبل، يجب أن يكون اللاعب i' قد تلقى على الأقل رسائل صالحة (r, s∗−1) من النموذج (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 ي ). مرة أخرى، وفقًا لتعريف s∗، لا توجد خطوة 5 \(\geq\)s′ < s∗with s′ −2 ≡0 mod 3، حيث على الأقل tH (r, s′ −1) - وقع المدققون على 0 و نفس الشيء ضد. وهكذا يتوقف اللاعب دون نشر أي شيء؛ مجموعات ر = ر ƒ؛ ومجموعات CERT الخاص به r هو مجموعة الرسائل الصالحة (r, s∗−1) للبتة 1 التي تلقاها. علاوة على ذلك، فإن أي محقق آخر i HSV r,s قد توقف عند Br = Br ɫ، أو تم تعيين ثنائية = 1 ونشرها (ESIGi(1)، ESIGi(vi)، \(\sigma\)r،s∗ أنا ). منذ أن ساعد اللاعب i′ في الانتشار (r, s∗−1)-الرسائل في CERT الخاص به r حسب الوقت \(\alpha\)r,s∗ أنا ′ + ts∗، مرة أخرى جميع المدققين الصادقين في HSV r,s∗+1 توقف دون نشر أي شيء وقم بتعيين Br = Br . وبالمثل، كل صادق يعرف المستخدمون Br = Br ƒ خلال الفاصل الزمني Ir+1 و تي ص+1 \(\geq\) \(\alpha\)r,s∗ أنا ′ + ts∗\(\leq\)T r + \(\alpha\) + ts∗. الحالة 2.2.أ. يحدث الحدث E.a ولا يوجد مدقق صادق يجب أيضًا أن يتوقف دون نشر أي شيء. في هذه الحالة، لاحظ أن اللاعب يمكن أن يكون لديه CERT r صالح ط∗تتكون من الـTH المطلوب (r, s∗−1)-الرسائل التي يستطيع الخصم جمعها أو إنشاؤها. ومع ذلك الخبيثة وقد لا يساعد القائمون على التحقق في نشر هذه الرسائل، لذا لا يمكننا أن نستنتج أن هؤلاء هم الصادقون سوف يستلمها المستخدمون في الوقت المناسب. في الواقع، |MSV r,s∗−1| من تلك الرسائل قد تكون من المتحققون الخبيثون (r, s∗−1)، الذين لم ينشروا رسائلهم على الإطلاق ويرسلون فقط لهم إلى المحققين الخبيثة في الخطوة ∗. على غرار الحالة 2.1.a، لدينا هنا s∗−2 ≡0 mod 3، الخطوة s∗ هي خطوة من عملة ثابتة إلى 0، والرسائل (r, s∗−1) في CERT r i∗ للبت 0 و v = H(Br \(\ell\)). في الواقع، كل صادق (r, s∗−1) - يوقع المتحققون v، وبالتالي لا يمكن للخصم إنشاء رسائل صالحة (r, s∗−1) لحرف v مختلف. علاوة على ذلك، فإن جميع المدققين الصادقين (r, s∗) انتظروا وقتًا ts∗ ولم يروا أكثر من 2/3 أغلبية للبت 1، مرة أخرى لأن |HSV r,s∗−1| + 4|MSV r,s∗−1| <2ن. وهكذا كل مدقق صادق أنا \(\in\)HSV r،s∗sets bi = 0، vi = H(Br \(\ell\)) بأغلبية الأصوات، وينشر السيد، ق∗ أنا = (ESIGi(0)، ESIGi(H(Br \(\ell\))))، \(\sigma\)r،s∗ أنا ) في الوقت \(\alpha\)r,s∗ أنا + نهاية الخبر∗. الآن فكر في أدوات التحقق الصادقة في الخطوة s∗+ 1 (وهي خطوة ثابتة على العملة إلى 1). إذا يرسل الخصم بالفعل الرسائل في CERT r إلى بعضهم وأسبب لهم ذلك توقف، ثم على غرار الحالة 2.1.a، يعرف جميع المستخدمين الصادقين Br = Br \(\ell\)في الفترة الزمنية الأشعة تحت الحمراء +1 و تي ص+1 \(\geq\)T ص + \(\alpha\) + ts∗+1. بخلاف ذلك، فإن جميع المتحققين الصادقين في الخطوة s∗+1 قد تلقوا جميع رسائل (r, s∗) لـ 0 و ح(ر \(\ell\)) من HSV r,s∗بعد وقت الانتظار ts∗+1، مما يؤدي إلى> 2/3 أغلبية، لأن |HSV r,s∗| > 2|MSV r,s∗|. وبالتالي فإن جميع المدققين في HSV r,s∗+1 ينشرون رسائلهم 0 و ح(ر \(\ell\)) وفقا لذلك. لاحظ أن أدوات التحقق في HSV r,s∗+1 لا تتوقف عند Br = Br \(\ell\)، لأن الخطوة s∗+ 1 ليست خطوة عملة ثابتة إلى 0. الآن فكر في أدوات التحقق الصادقة في الخطوة s∗+2 (وهي خطوة مقلوبة بشكل حقيقي). إذا أرسل الخصم الرسائل في CERT r إلى بعضهم فيوقفهم، ثم مرة أخرى يعرف جميع المستخدمين الشرفاء Br = Br \(\ell\)خلال الفاصل الزمني Ir+1 و تي ص+1 \(\geq\)T ص + \(\alpha\) + ts∗+2.بخلاف ذلك، فإن جميع المتحققين الصادقين في الخطوة s∗+ 2 قد تلقوا جميع رسائل (r, s∗+ 1) الخاصة بـ 0 و ح(ر \(\ell\)) من HSV r,s∗+1 بعد وقت الانتظار ts∗+2، مما يؤدي إلى> 2/3 أغلبية. وهكذا ينشر كل منهم رسائلهم لـ 0 وH(Br \(\ell\)) وعليه: أي يفعلون لا "اقلب العملة" في هذه الحالة. مرة أخرى، لاحظ أنها لا تتوقف دون الانتشار، لأن الخطوة s∗+ 2 ليست خطوة عملة ثابتة إلى 0. أخيرًا، بالنسبة للمتحققين الصادقين في الخطوة s∗+3 (وهي خطوة أخرى من العملات الثابتة إلى 0)، كل شيء منهم قد تلقوا على الأقل رسائل صالحة لـ 0 وH(Br \(\ell\)) من HSV s∗+2، إذا كانوا ينتظرون حقًا الوقت ts∗+3. وبالتالي، ما إذا كان الخصم يرسل الرسائل أم لا في CERT ص i∗ لأي منهم، جميع المدققين في HSV r,s∗+3 يتوقفون عند Br = Br \(\ell\)، بدون نشر أي شيء. اعتمادًا على كيفية تصرفات الخصم، قد يكون لدى البعض منهم CERT r الخاصة بهم والتي تتكون من تلك الرسائل (r، s∗−1) في CERT r أنا∗، والآخرون لديهم CERT الخاصة بهم تتكون من تلك الرسائل (r، s∗+ 2). في أي حال، جميع المستخدمين صادقين تعرف ر = ر \(\ell\)خلال الفاصل الزمني Ir+1 و تي ص+1 \(\geq\)T ص + \(\alpha\) + ts∗+3. الحالة 2.2.ب. يحدث الحدث E.b ولا يوجد مدقق صادق يجب أيضًا أن يتوقف دون نشر أي شيء. التحليل في هذه الحالة مشابه لتلك الموجودة في الحالة 2.1.ب والحالة 2.2.أ، وبالتالي هناك الكثير من التفاصيل تم حذفها. على وجه الخصوص، CERT ص i∗ يتكون من الرسائل المطلوبة (r، s∗−1). بالنسبة للبتة 1 التي يستطيع الخصم جمعها أو توليدها، s∗−2 ≡1 mod 3، الخطوة s∗ هي خطوة العملة الثابتة إلى 1، ولا يمكن لأي مدقق صادق (r، s∗) أن يرى أكثر من 2/3 أغلبية لـ 0. وبالتالي، فإن كل أداة تحقق i \(\in\)HSV r,s∗sets bi = 1 وتنشر mr,s∗ أنا = (ESIGi(1)، ESIGi(vi)، \(\sigma\)r،s∗ أنا ) في الوقت \(\alpha\)r,s∗ أنا + نهاية الخبر∗. على غرار الحالة 2.2.أ، في 3 خطوات إضافية على الأكثر (أي البروتوكول يصل إلى الخطوة s∗+3، وهي خطوة أخرى من العملات الثابتة إلى 1)، جميع المستخدمين الصادقين يعرفون Br = Br ƒ خلال الفاصل الزمني Ir+1. علاوة على ذلك، قد يكون T r+1 \(\geq\)T r++ts∗+1، أو \(\geq\)T r++ts∗+2، أو \(\geq\)T r + lect + ts∗+3، اعتمادًا على متى تكون المرة الأولى التي يتمكن فيها المدقق الصادق من التوقف دون نشر. من خلال الجمع بين الحالات الفرعية الأربع، لدينا أن جميع المستخدمين الصادقين يعرفون B خلال الفترة الزمنية الأشعة تحت الحمراء +1، مع T r +1 \(\geq\)T r + lect + ts∗ في الحالتين 2.1.a و2.1.b، و T r +1 \(\geq\)T r + lect + ts∗+3 في الحالتين 2.2.أ و2.2.ب. يبقى الحد العلوي s∗ وبالتالي T r+1 للحالة 2، ونحن نفعل ذلك من خلال النظر في كيفية في كثير من الأحيان يتم تنفيذ خطوات العملة المقلوبة فعليًا في البروتوكول: أي، وفي الواقع، قام بعض المحققين الصادقين بقلب العملة المعدنية. على وجه الخصوص، قم بإصلاح خطوة العملة المعكوسة بشكل تعسفي s' (على سبيل المثال، 7 \(\geq\)s′ \(\geq\)m + 2 و s′ −2 ≡2 mod 3)، ودع \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 ي ). الآن دعونا نفترض s' < s∗، لأنه بخلاف ذلك لن يقوم أي مدقق نزيه برمي العملة المعدنية في الخطوات ′، وفقًا لما سبق المناقشات. من خلال تعريف SV r,s′−1، قيمة hash لبيانات اعتماد \(\ell\)′ هي أيضًا الأصغر بين كافة المستخدمين في PKr−k. نظرًا لأن الدالة hash عشوائية oracle، فمن المثالي أن يكون اللاعب \(\ell\)′ صادقًا مع احتمال على الأقل ح. كما سنبين لاحقا، حتى لو بذل الخصم قصارى جهده للتنبؤ إخراج العشوائي oracle وإمالة الاحتمال، اللاعب \(\ell\)′ لا يزال صادقًا مع الاحتماليةعلى الأقل ph = h2(1 + h −h2). أدناه نعتبر الحالة عندما يحدث ذلك بالفعل: أي، \(\ell\)′ \(\in\)HSV r,s′−1. لاحظ أن كل مدقق صادق i \(\in\)HSV r,s′ قد تلقى جميع الرسائل من HSV r,s′−1 بواسطة الوقت \(\alpha\)r,s' أنا + تيسي'. إذا احتاج اللاعب إلى رمي عملة معدنية (أي أنه لم ير أغلبية تزيد عن 2/3) نفس البتة b \(\in\){0, 1})، ثم يقوم بتعيين bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )). إذا كان هناك صادق آخر المدقق i′ \(\in\)HSV r,s′ الذي رأى > أغلبية 2/3 للقليل b \(\in\){0, 1}، ثم عن طريق الخاصية (د) من Lemma 5.5، لم يكن هناك مدقق صادق في HSV r,s′ ليرى أكثر من 2/3 أغلبية لبعض الوقت ب′̸= ب. منذ lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b مع احتمال 1/2، جميع المتحققين الصادقين في نطاق HSV r,s′ اتفاق على ب مع احتمال 1/2. وبطبيعة الحال، إذا لم يكن مثل هذا المتحقق موجودا، فهذا يعني أن كل شيء يتفق المدققون الصادقون في HSV r,s′ على البتة lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) مع احتمال 1. بدمج احتمالية \(\ell\)′ \(\in\)HSV r,s′−1، لدينا أن المتحققين الصادقين في HSV r,s′ التوصل إلى اتفاق بشأن البت b \(\in\){0, 1} مع احتمال ph على الأقل 2 = ح2(1+ح−ح2) 2 . علاوة على ذلك، من خلال الاستقراء على تصويت الأغلبية كما كان من قبل، فإن جميع المتحققين الصادقين في HSV r,s' لديهم مجموعة السادس الخاصة بهم أن يكون ح(ر \(\ell\)). وبالتالي، بمجرد التوصل إلى اتفاق بشأن b في الخطوة s′، يكون T r+1 كذلك إما \(\geq\)T r + lect + ts′+1 أو \(\geq\)T r + lect + ts′+2، اعتمادًا على ما إذا كان b = 0 أو b = 1، بعد تحليل الحالتين 2.1.a و2.1.b. في على وجه الخصوص، لن يتم تنفيذ أي خطوة أخرى مقلوبة العملة بشكل حقيقي: أي أن القائمين على التحقق في ولا تزال مثل هذه الخطوات تتحقق من أنهم هم المتحققون، وبالتالي ينتظرون، لكنهم جميعًا سيتوقفون دون ذلك نشر أي شيء. وفقًا لذلك، قبل الخطوة s∗، يتم توزيع عدد مرات تنفيذ خطوات Coin-GenuinelyFlipped وفقًا للمتغير العشوائي Lr. ترك الخطوة s′ تكون الخطوة الأخيرة التي تم قلب العملة بشكل حقيقي وفقًا لـ Lr، من خلال إنشاء البروتوكول لدينا ق′ = 4 + 3Lr. متى يجب على الخصم أن يجعل الخطوة تحدث إذا أراد تأخير T r+1 بنفس القدر ممكن؟ يمكننا حتى أن نفترض أن الخصم يعرف إدراك Lr مقدمًا. إذا s∗> s′ فلا فائدة منه، لأن المحققين الصادقين قد توصلوا بالفعل إلى اتفاق في الخطوة س'. من المؤكد أنه في هذه الحالة s∗ ستكون s′ +1 أو s′ +2، مرة أخرى اعتمادًا على ما إذا كانت b = 0 أو b = 1. ومع ذلك، هذه هي الحالتان 2.1.a و2.1.b، والناتج T r+1 هو بالضبط نفس كما في هذه الحالة. وبشكل أكثر دقة، T r+1 \(\geq\)T r + lect + ts∗\(\geq\)T r + lect + ts'+2. إذا كانت s∗< s′ −3 — أي s∗ موجودة قبل الخطوة الثانية الأخيرة التي تم قلب العملة بها بالفعل — إذن بواسطة تحليل الحالتين 2.2.أ و2.2.ب، T r+1 \(\geq\)T r + lect + ts∗+3 < T r + lect + ts′. وهذا يعني أن الخصم يجعل الاتفاق على Br يحدث بشكل أسرع. إذا كانت s∗= s′ −2 أو s′ −1 —أي خطوة العملة الثابتة إلى 0 أو خطوة العملة الثابتة إلى 1 مباشرة قبل الخطوة s′ — ثم من خلال تحليل الحالات الفرعية الأربع، المتحققون الصادقون فيها لم تعد الخطوات قادرة على رمي العملات المعدنية بعد الآن، لأنها إما توقفت دون أن تنتشر، أو شاهدت أكثر من 2/3 أغلبية لنفس البت ب. لذلك لدينا T r+1 \(\geq\)T r + lect + ts∗+3 \(\geq\)T r + lect + ts'+2.باختصار، بغض النظر عن ما هو موجود، لدينا تي ص+1 \(\geq\)T ص + روس + ts'+2 = تي ص + LA + t3Lr+6 = تي ص + Λ + (2(3Lr + 6) −3)Λ + Λ = تي ص + (6 لتر + 10) Λ + Λ، كما أردنا أن نظهر. أسوأ الحالات هي عندما تحدث s∗= s′ −1 والحالة 2.2.b. الجمع بين الحالتين 1 و 2 من بروتوكول BA الثنائي، يحمل Lemma 5.3. ■ 5.9 أمن البذرة Qr واحتمال وجود قائد صادق يبقى أن نثبت Lemma 5.4. تذكر أن أدوات التحقق في الجولة r مأخوذة من PKr−k و يتم اختيارها وفقا للكمية Qr−1. سبب تقديم معلمة الرجوع إلى الخلف k هو التأكد من ذلك، عند الجولة r −k، عندما يكون الخصم قادرًا على إضافة مستخدمين ضارين جدد إلى PKr−k، لا يمكنه التنبؤ بالكمية Qr−1 إلا باحتمال ضئيل. لاحظ أن الدالة hash هي دالة عشوائية oracle وQr−1 هي أحد مدخلاتها عند اختيار أدوات التحقق للجولة r. وبالتالي، بغض النظر عن كيفية إضافة المستخدمين الضارين إلى PKr−k، من وجهة نظر الخصم لا يزال يتم اختيار واحد منهم ليكون المدقق في خطوة الجولة r مع الاحتمال المطلوب p (أو ص1 للخطوة 1). بتعبير أدق، لدينا ليما التالية. ليما 5.6. مع k = O(log1/2 F)، لكل جولة r، مع احتمالية ساحقة للخصم لم يستعلم عن Qr−1 إلى oracle العشوائي عند الجولة r −k. دليل. نمضي قدما عن طريق الاستقراء. افترض أنه في كل جولة \(\gamma\) < r، لم يستعلم الخصم Q\(\gamma\)−1 إلى oracle العشوائي في الجولة \(\gamma\) −k.21 فكر في اللعبة الذهنية التالية التي لعبها الخصم عند الجولة r −k، في محاولة للتنبؤ بـ Qr−1. في الخطوة 1 من كل جولة \(\gamma\) = r −k, . . . ، r −1، في ضوء Q\(\gamma\)−1 محدد لم يتم الاستعلام عنه بشكل عشوائي oracle، من خلال ترتيب اللاعبين i \(\in\)PK\(\gamma\)−k وفقًا لقيم hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) على نحو متزايد، نحصل على التقليب العشوائي على PK\(\gamma\)−k. بحكم التعريف، الزعيم \(\ell\) \(\gamma\) هو المستخدم الأول في التقليب وهو صادق في الاحتمالية h. علاوة على ذلك، عندما يكون PK\(\gamma\)−k كبيرًا يكفي، بالنسبة لأي عدد صحيح x \(\geq\)1، احتمال أن يكون مستخدمو x الأوائل في التقليب جميعهم خبيث ولكن (x + 1)st صادق هو (1 −h)xh. إذا كانت \(\ell\) \(\gamma\) صادقة، فإن Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). حيث أن الخصم لا يستطيع تزوير التوقيع من \(\ell\) \(\gamma\)، يتم توزيع Q\(\gamma\) بشكل موحد عشوائيًا من وجهة نظر الخصم، باستثناء مع احتمال صغير بشكل كبير، لم يتم الاستعلام عن H عند الجولة r -k. منذ كل Q\(\gamma\)+1، Q\(\gamma\)+2، . . . ، Qr−1 على التوالي هو إخراج H مع Q\(\gamma\)، Q\(\gamma\)+1، . . . ، Qr−2 كأحد المدخلات، تبدو جميعها عشوائية بالنسبة للخصم ولا يمكن للخصم الاستعلام عن Qr−1 إلى H عند جولة ص -ك. وبناءً على ذلك، فهي الحالة الوحيدة التي يستطيع فيها الخصم التنبؤ بـ Qr−1 باحتمالية جيدة عند الجولة r−k هو عندما يكون جميع القادة \(\ell\)r−k, . . . ، \(\ell\)r−1 ضارة. فكر مرة أخرى في الجولة \(\gamma\) \(\in\){r−k . . . ، ص−1} والتقليب العشوائي على PK\(\gamma\)−k الناجم عن قيم hash المقابلة. إذا للبعض x \(\geq\)2، أول مستخدمي x −1 في التقليب جميعهم ضارون وx-th صادقون، ثم لدى الخصم x اختيارات ممكنة لـ Q\(\gamma\): أي من النموذج H(SIGi(Q\(\gamma\)−1, \(\gamma\)))، حيث i هو واحد من 21 بما أن k عدد صحيح صغير، دون فقدان العمومية يمكن للمرء أن يفترض أنه تم تشغيل الجولات k الأولى من البروتوكول في ظل بيئة آمنة وتصح الفرضية الاستقرائية لتلك الجولات. 22أي الأسي في طول ناتج H. لاحظ أن هذا الاحتمال أصغر بكثير من F.أول مستخدمي x−1 الضارين، من خلال جعل اللاعب i هو القائد الفعلي للجولة \(\gamma\)؛ أو H(Q\(\gamma\)−1, \(\gamma\)) بواسطة إجبار B\(\gamma\) = B\(\gamma\) . وبخلاف ذلك، سيكون قائد الجولة \(\gamma\) هو أول مستخدم صادق في عملية التقليب ويصبح Qr−1 غير قابل للتنبؤ بالخصم. أي من الخيارات x المذكورة أعلاه في Q\(\gamma\) يجب على الخصم اتباعها؟ لمساعدة الخصم أجب على هذا السؤال، في اللعبة الذهنية نجعله أقوى مما هو عليه بالفعل هو، على النحو التالي. أولاً وقبل كل شيء، في الواقع، لا يستطيع الخصم حساب hash للمستخدم الصادق التوقيع، وبالتالي لا يمكن تحديد عدد x(Q\(\gamma\)) للمستخدمين الضارين في البداية لكل Q\(\gamma\) من التقليب العشوائي في الجولة \(\gamma\) + 1 الناجم عن Q\(\gamma\). في اللعبة العقلية، نعطيه أرقام x(Q\(\gamma\)) مجانا. ثانيًا، في الواقع، وجود أول x من المستخدمين في عملية التقليب كونهم خبيثين لا يعني بالضرورة أنه من الممكن أن يصبحوا جميعًا قادة، لأن hash يجب أيضًا أن تكون قيم توقيعاتهم أقل من p1. لقد تجاهلنا هذا القيد العقلي اللعبة، مما يمنح الخصم المزيد من المزايا. من السهل أن نرى أنه في اللعبة الذهنية، الخيار الأمثل للخصم، والذي يُشار إليه بـ ˆQ\(\gamma\)، هو الذي ينتج أطول تسلسل للمستخدمين الضارين في بداية العشوائية التقليب في الجولة \(\gamma\) + 1. في الواقع، بالنظر إلى Q\(\gamma\) محدد، لا يعتمد البروتوكول على Q\(\gamma\)−1 بعد الآن ويمكن للخصم التركيز فقط على التقليب الجديد في الجولة \(\gamma\) + 1، والتي تحتوي على نفس التوزيع لعدد المستخدمين الضارين في البداية. وفقا لذلك، في كل جولة \(\gamma\)، فإن ˆQ\(\gamma\) المذكورة أعلاه تمنحه أكبر عدد من الخيارات لـ Q\(\gamma\)+1 وبالتالي يزيدها إلى الحد الأقصى احتمال أن يكون القادة المتعاقبون جميعهم خبيثين. لذلك، في اللعبة الذهنية، يتبع الخصم سلسلة ماركوف من الجولة r −k لتقريب r −1، مع مساحة الحالة {0} \(\cup\){x : x \(\geq\)2}. تمثل الحالة 0 حقيقة أن المستخدم الأول في التبديل العشوائي في الجولة الحالية \(\gamma\) يكون صادقًا، وبالتالي يفشل الخصم في لعبة للتنبؤ Qr−1؛ وتمثل كل حالة x \(\geq\)2 حقيقة أن المستخدمين x −1 الأوائل في التقليب خبيث وx صادق، وبالتالي لدى الخصم خيارات x لـ Q\(\gamma\). ال احتمالات الانتقال P(x, y) هي كما يلي. • P(0, 0) = 1 و P(0, y) = 0 لأي y \(\geq\)2. وهذا يعني أن الخصم يفشل في اللعبة مرة واحدة المستخدم في التقليب يصبح صادقا. • P(x, 0) = hx لأي x \(\geq\)2. أي أنه مع الاحتمال hx، فإن جميع التباديل العشوائية x موجودة كان مستخدموهم الأوائل صادقين، وبالتالي يفشل الخصم في اللعبة في الجولة التالية. • بالنسبة لأي x \(\geq\)2 وy \(\geq\)2، P(x, y) هو احتمال أنه من بين التباديل العشوائية x الناجم عن خيارات x لـ Q\(\gamma\)، أطول تسلسل للمستخدمين الضارين في بداية بعضها هو y −1، وبالتالي لدى الخصم خيارات y لـ Q\(\gamma\)+1 في الجولة التالية. هذا هو، ف(س، ص) = ص−1 X أنا = 0 (1 - ح) اه !x - ص−2 X أنا = 0 (1 - ح) اه !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. لاحظ أن الحالة 0 هي حالة الامتصاص الفريدة في مصفوفة الانتقال P، وفي كل حالة أخرى x لديه احتمال إيجابي للذهاب إلى 0. نحن مهتمون بالحد الأعلى للرقم k الجولات اللازمة لسلسلة ماركوف لتتقارب إلى 0 مع احتمالية ساحقة: أي لا بغض النظر عن الحالة التي تبدأ فيها السلسلة، مع احتمال كبير أن يخسر الخصم اللعبة ويفشل في التنبؤ Qr−1 عند الجولة r −k. ضع في اعتبارك مصفوفة الانتقال P (2) \(\triangleq\)P \(\cdot\) P بعد جولتين. من السهل أن نرى أن P (2)(0, 0) = 1 وP (2)(0, x) = 0 لأي x \(\geq\)2. لأي x \(\geq\)2 و y \(\geq\)2، حيث أن P(0, y) = 0، لدينا P (2)(x, y) = P(x, 0)P(0, y) + X ض\(\geq\)2 ف(س، ض) ف(ض، ص) = X ض\(\geq\)2 ف(س، ض) ف(ض، ص).بترك ¯h \(\triangleq\)1 −h، لدينا P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x و ف (2)(س، ص) = X ض\(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. أدناه نحسب نهاية P (2)(x,y) ف (س، ص) كما h يذهب إلى 1 —أي، ¯h يذهب إلى 0. لاحظ أن الأعلى ترتيب ¯h في P(x, y) هو ¯hy−1، مع معامل x. وبناء على ذلك، ليم ح → 1 ف (2)(س، ص) ف(س، ص) = ليم ¯ح→0 ف (2)(س، ص) ف(س، ص) = ليم ¯ح→0 ف (2)(س، ص) x¯hy−1 + O(¯hy) = ليم ¯ح→0 ص z\(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) = ليم ¯ح→0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = ليم ¯ح→0 2x¯hy x¯hy−1 = lim ¯ح→0 2¯ح = 0. عندما يكون h قريبًا بدرجة كافية من 1,23 يكون لدينا ف (2)(س، ص) ف(س، ص) \(\geq\)1 2 لأي x \(\geq\)2 و y \(\geq\)2. عن طريق الاستقراء، لأي k > 2، P (k) \(\triangleq\)P k هكذا • P (k)(0, 0) = 1، P (k)(0, x) = 0 لأي x \(\geq\)2، و • لأي x \(\geq\)2 وy \(\geq\)2، P (ك)(x, y) = P (k−1)(x, 0)P(0, y) + X ض\(\geq\)2 P (k−1)(x, z)P(z, y) = X ض\(\geq\)2 ف (ك−1)(س، ض)ف(ض، ص) \(\geq\) X ض\(\geq\)2 ف(س، ض) 2k−2 \(\cdot\) ف(ض، ص) = ف (2)(س، ص) 2k−2 \(\geq\)P(س، ص) 2ك−1 . نظرًا لأن P (x، y) \(\geq\)1، بعد جولات 1−log2 F، فإن احتمال الانتقال إلى أي حالة y \(\geq\)2 لا يكاد يذكر، بدءًا من أي حالة x \(\geq\)2. على الرغم من وجود العديد من هذه الحالات، فمن السهل رؤية ذلك ليم ص →+∞ ف(س، ص) ف(س، ص + 1) = ليم ص →+∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = ليم ص →+∞ ¯hy−1 −¯hy ¯هي −¯هي+1 = 1 ¯ ح = 1 1 - ح. لذلك فإن كل صف x من مصفوفة الانتقال P يتناقص كتسلسل هندسي بمعدل 1 1−ح> 2 عندما تكون y كبيرة بدرجة كافية، وينطبق الشيء نفسه على P (k). وفقا لذلك، عندما تكون k كبيرة بما فيه الكفاية ولكن لا تزال بترتيب log1/2 F، P y\(\geq\)2 P (k)(x, y) < F لأي x \(\geq\)2. وهذا هو، مع احتمال كبير يخسر الخصم اللعبة ويفشل في التنبؤ Qr−1 عند الجولة r −k. لـ h \(\in\)(2/3, 1]، أكثر يظهر التحليل المعقد أن هناك ثابت C أكبر بقليل من 1/2، بحيث يكون كافيًا ليأخذ k = O(logC F). وهكذا يحمل Lemma 5.6. ■ ليما 5.4. (أعيد ذكرها) الخصائص المعطاة 1–3 لكل جولة قبل r، ph = h2(1 + h −h2) لـ Lr، والقائد \(\ell\)r صادق مع احتمال ph على الأقل. 23 على سبيل المثال، h = 80% كما هو مقترح من خلال الاختيارات المحددة للمعلمات.
دليل. بعد Lemma 5.6، لا يستطيع الخصم التنبؤ بعودة Qr−1 إلى الجولة r −k إلا مع احتمال ضئيل. لاحظ أن هذا لا يعني أن احتمالية وجود قائد نزيه ضئيلة كل جولة. في الواقع، نظرًا لـ Qr−1، اعتمادًا على عدد المستخدمين الضارين الموجودين في البداية التقليب العشوائي لـ PKr−k، قد يكون لدى الخصم أكثر من خيار لـ Qr و وبالتالي يمكن أن يزيد من احتمال وجود زعيم خبيث في الجولة r + 1 — مرة أخرى نعطيه بعض المزايا غير الواقعية كما في Lemma 5.6، وذلك لتبسيط التحليل. ومع ذلك، بالنسبة لكل Qr−1 لم يتم الاستعلام عنه إلى H بواسطة الخصم عند الجولة r −k، لـ أي x \(\geq\)1، مع احتمال (1 −h)x−1h ظهور أول مستخدم صادق في الموضع x في النتيجة الناتجة التقليب العشوائي لـ PKr−k. عندما يكون x = 1، يكون احتمال وجود قائد صادق في الجولة r + 1 هو في الواقع ح؛ بينما عندما تكون x = 2، يكون لدى الخصم خياران لـ Qr والاحتمال الناتج هو h2. فقط من خلال النظر في هاتين الحالتين، لدينا احتمال وجود زعيم صادق في الجولة r + 1 يكون على الأقل h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) حسب الرغبة. لاحظ أن الاحتمال أعلاه يأخذ في الاعتبار فقط العشوائية في البروتوكول من الجولة r -k لجولة ص. عندما تؤخذ كل العشوائية من الجولة 0 إلى الجولة r في الاعتبار، فإن Qr−1 يكون حتى أنه أقل قابلية للتنبؤ من قبل الخصم، كما أن احتمال وجود زعيم صادق في الجولة r + 1 هو عند الأقل h2(1 + h −h2). استبدال r + 1 بـ r وإزاحة كل شيء مرة أخرى بمقدار جولة واحدة، القائد \(\ell\)r صادق مع احتمالية لا تقل عن h2(1 + h −h2)، حسب الرغبة. وبالمثل، في كل خطوة من خطوات قلب العملة بشكل حقيقي، يكون "قائد" تلك الخطوة - وهو المتحقق في SV r,s التي تحتوي بيانات اعتمادها على أصغر قيمة hash، تكون صادقة مع احتمالية لا تقل عن h2(1 + ح -ح2). وبالتالي ph = h2(1 + h −h2) لـ Lr وLemma 5.4. ■
Algorand '
2 Di bagian ini, kami membuat versi Algorand ′ yang bekerja dengan asumsi berikut. Asumsi Mayoritas Pengguna Jujur: Lebih dari 2/3 pengguna di setiap PKr adalah jujur. Di Bagian 8, kami menunjukkan cara mengganti asumsi di atas dengan Mayoritas Jujur yang diinginkan Asumsi uang. 6.1 Notasi dan Parameter Tambahan untuk Algorand ′ 2 Notasi • \(\mu\) \(\in\)Z+: batas atas pragmatis terhadap jumlah langkah yang, dengan kemungkinan sangat besar, sebenarnya akan diambil dalam satu putaran. (Seperti yang akan kita lihat, parameter \(\mu\) mengontrol berapa banyak ephemeral kunci yang disiapkan pengguna sebelumnya untuk setiap putaran.) • Lr: variabel acak yang mewakili jumlah percobaan Bernoulli yang diperlukan untuk mendapatkan angka 1, ketika masing-masing percobaan percobaan adalah 1 dengan probabilitas ph 2. Lr akan digunakan untuk membatasi waktu yang diperlukan untuk menghasilkan blok Br. • tH: batas bawah jumlah verifikator yang jujur pada langkah s > 1 pada putaran r, sehingga dengan probabilitas yang sangat besar (mengingat n dan p), ada > pemverifikasi yang jujur di SV r,s. Parameter • Hubungan antara berbagai parameter. — Untuk setiap langkah s > 1 pada putaran r, n dipilih sehingga, dengan probabilitas yang sangat besar,
|HSV r,s| > ini dan |HSV r,s| + 2|MSV r,s| < 2tH. Perhatikan bahwa kedua pertidaksamaan di atas secara bersama-sama menyiratkan |HSV r,s| > 2|MSV r,s|: yaitu disana adalah 2/3 mayoritas yang jujur di antara verifikator terpilih. Semakin mendekati 1 nilai h, maka n harus semakin kecil. Secara khusus, kami menggunakan (varian dari) Batas Cherno untuk memastikan kondisi yang diinginkan terpenuhi dengan kemungkinan yang sangat besar. • Contoh pilihan parameter penting. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0,69n, k = 70. 6.2 Menerapkan Kunci Ephemeral di Algorand ′ 2 Ingatlah bahwa pemverifikasi i \(\in\)SV r,s secara digital menandatangani pesannya mr,s saya langkah s di putaran r, relatif terhadap pkr kunci publik sementara i , menggunakan kunci rahasia sementara skr,s saya yang segera dia hancurkan setelah menggunakan. Ketika jumlah langkah yang mungkin diambil dalam suatu putaran dibatasi oleh jumlah langkah tertentu bilangan bulat \(\mu\), kita telah melihat cara menangani kunci sementara secara praktis. Misalnya seperti kita sudah dijelaskan di Algorand′ 1 (di mana \(\mu\) = m + 3), untuk menangani semua kemungkinan kunci sementaranya, dari putaran r′ ke putaran r′ + 106, i menghasilkan pasangan (PMK, SMK), dimana PMK public master kunci skema tanda tangan berbasis identitas, dan SMK kunci master rahasianya yang sesuai. Pengguna i mempublikasikan PMK dan menggunakan SMK untuk menghasilkan kunci rahasia dari setiap kemungkinan kunci publik sementara (dan menghancurkan SMK setelah melakukannya). Kumpulan kunci publik sementara i untuk relevan putarannya adalah S = {i} \(\times\) {r′, . . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)}. (Seperti yang telah dibahas, saat putaran r′ + 106 mendekat, saya “menyegarkan” pasangannya (PMK, SMK).) Dalam prakteknya, jika \(\mu\) cukup besar, putaran Algorand ′ 2 tidak akan memakan waktu lebih dari \(\mu\) langkah. Di prinsipnya, bagaimanapun, ada kemungkinan kecil bahwa, untuk beberapa putaran r jumlah langkah sebenarnya diambil akan melebihi \(\mu\). Jika ini terjadi, saya tidak akan bisa menandatangani pesannya, Tuan saya untuk setiap langkah s > \(\mu\), karena dia telah mempersiapkan sebelumnya hanya \(\mu\) kunci rahasia untuk putaran r. Apalagi dia tidak dapat menyiapkan dan mempublikasikan simpanan kunci sementara yang baru, seperti yang telah dibahas sebelumnya. Faktanya, untuk melakukan jadi, dia perlu memasukkan PMK′ kunci master publik baru di blok baru. Tapi, harus mengitari sungai mengambil lebih banyak langkah, tidak ada blok baru yang akan dihasilkan. Namun, solusinya ada. Misalnya, saya dapat menggunakan kunci sementara terakhir dari putaran r, pkr,\(\mu\) saya , sebagai berikut. Dia menghasilkan simpanan pasangan kunci lainnya untuk putaran r —misalnya, dengan (1) menghasilkan pasangan kunci lainnya pasangan kunci utama (PMK, SMK); (2) menggunakan pasangan ini untuk menghasilkan yang lain, katakanlah, 106 kunci sementara, sk r,\(\mu\)+1 saya , . . . , sk r,\(\mu\)+106 saya , sesuai dengan langkah \(\mu\)+1, ..., \(\mu\)+106 putaran r; (3) menggunakan skr,\(\mu\) saya ke secara digital tanda tangani PMK (dan pesan (r, \(\mu\)) apa pun jika i \(\in\)SV r,\(\mu\)), relatif terhadap pkr,\(\mu\) saya ; dan (4) menghapus SMK dan skr,\(\mu\) saya . Haruskah saya menjadi pemverifikasi pada langkah \(\mu\) + s dengan s \(\in\){1, . . . , 106}, lalu saya menandatanganinya secara digital (r, \(\mu\) + s)- pesan tuan,\(\mu\)+s saya relatif terhadap pk kunci barunya r,\(\mu\)+s saya = (i, r, \(\mu\) + s). Tentu saja untuk memverifikasi tanda tangan ini dari i, yang lain perlu memastikan bahwa kunci publik ini sesuai dengan PMK kunci publik i yang baru. Jadi, selain tanda tangan ini, saya mengirimkan tanda tangan digital PMK relatif terhadap pkr,\(\mu\) saya . Tentu saja, pendekatan ini dapat diulang sebanyak yang diperlukan jika putaran r terus berlanjut untuk lebih banyak langkah! Kunci rahasia sementara terakhir digunakan untuk mengautentikasi publik master baru kunci, dan dengan demikian kumpulan kunci fana lainnya untuk putaran r. Dan sebagainya.6.3 Protokol Sebenarnya Algorand ′ 2 Ingat kembali bahwa, pada setiap langkah s pada putaran r, pemverifikasi i \(\in\)SV r,s menggunakan rahasia publik jangka panjangnya pasangan kunci untuk menghasilkan kredensialnya, \(\sigma\)r,s saya \(\triangleq\)SIGi(r, s, Qr−1), serta SIGi Qr−1 dalam kasus s = 1. Verifier i menggunakan pasangan kunci fana miliknya, (pkr,s saya, skr, s i ), untuk menandatangani pesan lain yang mungkin ada diperlukan. Untuk mempermudah, kami menulis esigi(m), bukan sigpkr,s i (m), untuk menunjukkan kefanaan i yang sebenarnya tanda tangan m pada langkah ini, dan tulis ESIGi(m) sebagai pengganti SIGpkr,s saya (m) \(\triangleq\)(saya, m, esigi(m)). Langkah 1: Blokir Proposal Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkah 1 pada putaran r segera setelah ia menyelesaikannya CERT r−1, yang memungkinkan i menghitung H(Br−1) dan Qr−1 secara jelas. • Pengguna i menggunakan Qr−1 untuk memeriksa apakah i \(\in\)SV r,1 atau tidak. Jika i /\(\in\)SV r,1, dia tidak melakukan apa pun untuk Langkah 1. • Jika i \(\in\)SV r,1, yaitu jika i adalah calon pemimpin, maka ia melakukan hal berikut. (a) Jika saya telah melihat B0, . . . , Br−1 sendiri (setiap Bj = Bj ǫ dapat dengan mudah diturunkan dari nilai hash-nya di CERT j dan dengan demikian diasumsikan “terlihat”), lalu dia mengumpulkan pembayaran putaran-r yang dimilikinya telah disebarkan kepadanya sejauh ini dan menghitung pembayaran maksimal PAY r saya dari mereka. (b) Jika saya belum melihat semua B0, . . . , Br−1 lagi, lalu dia menetapkan PAY r saya = \(\emptyset\). (c) Selanjutnya, saya menghitung “blok kandidat” nya Br i = (r, BAYAR r saya , SIGi(Qr−1), H(Br−1)). (c) Akhirnya, saya menghitung pesan mr,1 saya = (Sdr saya , esigi(H(Br saya )), \(\sigma\)r,1 i ), menghancurkan kefanaannya kunci rahasia skr,1 i , dan kemudian menyebarkan dua pesan, mr,1 saya dan (SIGi(Qr−1), \(\sigma\)r,1 saya ), secara terpisah namun bersamaan.a aKetika i adalah pemimpinnya, SIGi(Qr−1) memungkinkan orang lain menghitung Qr = H(SIGi(Qr−1), r).
Propagasi Selektif Untuk mempersingkat pelaksanaan global Langkah 1 dan keseluruhan putaran, penting bahwa (r, 1)- pesan disebarkan secara selektif. Artinya, untuk setiap pengguna j dalam sistem, • Untuk (r, 1)-pesan pertama yang pernah diterimanya dan berhasil diverifikasi,a apakah pesan tersebut berisi sebuah blok atau hanya kredensial dan tanda tangan dari Qr−1, pemain j menyebarkannya seperti biasa. • Untuk semua pesan (r, 1) lainnya yang diterima dan berhasil diverifikasi oleh pemain j, ia menyebarkan hanya jika nilai hash dari kredensial yang dikandungnya adalah yang terkecil di antara nilai hash dari kredensial yang terkandung dalam semua (r, 1)-pesan yang telah dia terima dan berhasil diverifikasi jauh. • Namun, jika j menerima dua pesan berbeda dalam bentuk mr,1 saya dari pemain yang sama i,b he membuang yang kedua tidak peduli berapa pun nilai hash dari kredensial i. Perhatikan bahwa, dalam propagasi selektif, akan bermanfaat jika setiap pemimpin potensial menyebarkan idenya sendiri kredensial \(\sigma\)r,1 saya terpisah dari Tuan,1 i :c pesan-pesan kecil itu menyebar lebih cepat daripada blok, pastikan propagasi tepat waktu dari mr,1 di mana kredensial yang terkandung memiliki nilai hash yang kecil, sedangkan membuat yang memiliki nilai hash besar menghilang dengan cepat. aArtinya, semua tanda tangan sudah benar dan jika berbentuk bapak,1 i , blok dan hash-nya valid —walaupun j tidak memeriksa apakah payset yang disertakan sudah maksimal untuk i atau tidak. bYang berarti saya jahat. cKami berterima kasih kepada Georgios Vlachos yang telah menyarankan hal ini.Langkah 2: Langkah Pertama dari Protokol Konsensus Bertingkat GC Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkah 2 pada putaran r segera setelah ia menyelesaikannya CERT r−1. • Pengguna i menunggu selama waktu maksimum t2 \(\triangleq\) \(\lambda\) + Λ. Sambil menunggu, saya bertindak sebagai berikut. 1. Setelah menunggu waktu 2\(\lambda\), dia menemukan pengguna \(\ell\)sehingga H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) untuk semua kredensial \(\sigma\)r,1 j yang merupakan bagian dari pesan (r, 1) yang berhasil diverifikasi yang diterimanya sejauh ini.a 2. Jika dia memiliki diterima sebuah blok Br−1, yang mana cocok itu hash nilai H(Br−1) terkandung dalam CERT r−1,b dan jika dia telah menerima dari \(\ell\) pesan yang valid mr,1 \(\ell\) = (Br \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),c lalu saya berhenti menunggu dan menyetel v′ i \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. Jika tidak, ketika waktu t2 habis, saya menetapkan v′ saya \(\triangleq\) \(\bot\). 4. Ketika nilai v′ i telah ditetapkan, i menghitung Qr−1 dari CERT r−1 dan memeriksa apakah i \(\in\)SV r,2 atau tidak. 5. Jika i \(\in\)SV r,2, i menghitung pesan mr,2 saya \(\triangleq\)(ESIGi(v′ saya), \(\sigma\)r,2 i ),d menghancurkan kefanaannya kunci rahasia skr,2 i , dan kemudian menyebarkan mr,2 saya. Jika tidak, saya berhenti tanpa menyebarkan apa pun. aPada dasarnya, pengguna i secara pribadi memutuskan bahwa pemimpin putaran r adalah pengguna \(\ell\). bTentu saja, jika CERT r−1 menunjukkan bahwa Br−1 = Br−1 ǫ , maka saya sudah “menerima” Br−1 pada saat dia menerimanya CERT r−1. cSekali lagi, tanda tangan pemain \(\ell\) dan hashes semuanya berhasil diverifikasi, dan MEMBAYAR r \(\ell\)di Br \(\ell\)adalah pembayaran yang valid untuk putaran r —walaupun saya tidak memeriksa apakah MEMBAYAR r \(\ell\)maksimal untuk \(\ell\)atau tidak. Jika Sdr \(\ell\)berisi set pembayaran kosong sebenarnya i tidak perlu melihat Br−1 sebelum memverifikasi apakah Br \(\ell\) valid atau tidak. dPesan Pak,2 saya memberi sinyal bahwa pemain i menganggap komponen pertama dari v′ saya menjadi hash blok berikutnya, atau menganggap blok berikutnya kosong.
Langkah 3: Langkah Kedua GC Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkah ke-3 pada putaran r segera setelah ia menyelesaikannya CERT r−1. • Pengguna i menunggu selama waktu maksimum t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ. Sambil menunggu, aku berperan sebagai berikut. 1. Jika terdapat nilai v sehingga dia telah menerima setidaknya pesan yang valid mr,2 j dari bentuk (ESIGj(v), \(\sigma\)r,2 j ), tanpa kontradiksi apa pun,a lalu dia berhenti menunggu dan mulai terbenam v′ = v. 2. Jika tidak, ketika waktu t3 habis, ia menetapkan v′ = \(\bot\). 3. Ketika nilai v′ telah ditetapkan, saya menghitung Qr−1 dari CERT r−1 dan memeriksa apakah i \(\in\)SV r,3 atau tidak. 4. Jika i \(\in\)SV r,3, maka i menghitung pesan mr,3 saya \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 i ), menghancurkan miliknya skr kunci rahasia sementara,3 i , dan kemudian menyebarkan mr,3 saya. Kalau tidak, aku akan berhenti tanpanya menyebarkan apa pun. aArtinya, dia belum menerima dua pesan valid yang masing-masing berisi ESIGj(v) dan ESIGj(ˆv) yang berbeda, dari pemain j. Di sini dan mulai sekarang, kecuali dalam Kondisi Akhir yang ditentukan nanti, kapan pun pemain jujur menginginkan pesan dalam bentuk tertentu, pesan yang bertentangan satu sama lain tidak pernah dihitung atau dianggap valid.
Langkah 4: Keluaran GC dan Langkah Pertama BBA⋆ Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkah 4 pada putaran r segera setelah dia menyelesaikan Langkah 3 miliknya sendiri. • Pengguna i menunggu selama waktu maksimum 2\(\lambda\).a Saat menunggu, i bertindak sebagai berikut. 1. Dia menghitung vi dan gi, keluaran dari GC, sebagai berikut. (a) Jika terdapat nilai v′ ̸= \(\bot\)sehingga dia telah menerima setidaknya pesan yang valid Tuan,3 j = (ESIGj(v′), \(\sigma\)r,3 j ), lalu dia berhenti menunggu dan menetapkan vi \(\triangleq\)v′ dan gi \(\triangleq\)2. (b) Jika dia telah menerima setidaknya pesan yang valid, Tuan,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ), lalu dia berhenti menunggu dan menyetel vi \(\triangleq\) \(\bot\)dan gi \(\triangleq\)0.b (c) Sebaliknya, ketika waktu 2\(\lambda\) habis, jika terdapat nilai v′ ̸= \(\bot\)sehingga ia mempunyai menerima setidaknya ⌈tH 2 ⌉pesan yang valid pak, j j = (ESIGj(v′), \(\sigma\)r,3 j ), lalu dia menetapkan vi \(\triangleq\)v′ dan gi \(\triangleq\)1.c (d) Jika tidak, ketika waktu 2\(\lambda\) habis, ia menetapkan vi \(\triangleq\) \(\bot\)dan gi \(\triangleq\)0. 2. Ketika nilai vi dan gi telah ditetapkan, i menghitung bi, masukan dari BBA⋆, sebagai berikut: bi \(\triangleq\)0 jika gi = 2, dan bi \(\triangleq\)1 jika tidak. 3. i menghitung Qr−1 dari CERT r−1 dan memeriksa apakah i \(\in\)SV r,4 atau tidak. 4. Jika i \(\in\)SV r,4, ia menghitung pesan mr,4 saya \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), menghancurkan miliknya skr kunci rahasia sementara,4 i , dan menyebarkan mr,4 saya. Jika tidak, saya berhenti tanpa menyebarkan apa pun. aJadi, total waktu maksimum sejak i memulai Langkah 1 pada putaran r adalah t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ. bApakah Langkah (b) ada dalam protokol atau tidak, tidak mempengaruhi kebenarannya. Namun, kehadiran Langkah (b) memungkinkan Langkah 4 berakhir dalam waktu kurang dari 2\(\lambda\) jika cukup banyak pemverifikasi Langkah-3 yang “menandatangani \(\bot\).” cDapat dibuktikan bahwa v′ dalam hal ini, jika ada, pasti unik.Langkah s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Langkah BBA⋆ Koin-Tetap-Ke-0 Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkahnya sendiri pada putaran r segera setelah dia menyelesaikan Langkahnya sendiri s −1. • Pengguna i menunggu selama waktu maksimum 2\(\lambda\).a Saat menunggu, i bertindak sebagai berikut. – Kondisi Akhir 0: Jika suatu titik terdapat string v ̸= \(\bot\)dan langkah s′ sedemikian rupa sehingga (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 —yaitu, Langkah s′ adalah langkah Koin-Tetap-Ke-0, (b) saya telah menerima setidaknya pesan yang valid tuan,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),b dan (c) saya telah menerima pesan yang valid (SIGj(Qr−1), \(\sigma\)r,1 j ) dengan j menjadi yang kedua komponen v, kemudian, saya berhenti menunggu dan mengakhiri eksekusi Langkah s-nya sendiri (dan sebenarnya putaran r) segera tanpa menyebarkan apa pun sebagai pemverifikasi (r, s); menetapkan H(Br) menjadi yang pertama komponen v; dan menetapkan CERT r miliknya sendiri menjadi kumpulan pesan mr,s′−1 j langkah (b) bersama dengan (SIGj(Qr−1), \(\sigma\)r,1 j ).c – Kondisi Akhir 1: Jika suatu saat terdapat langkah s′ sedemikian rupa (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 —yaitu, Langkah s′ adalah langkah Koin-Tetap-Ke-1, dan (b') saya telah menerima setidaknya pesan yang valid tuan,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),d kemudian, saya berhenti menunggu dan mengakhiri eksekusinya sendiri pada Langkah s (dan sebenarnya putaran r) dengan benar pergi tanpa menyebarkan apa pun sebagai pemverifikasi (r, s); himpunan Br = Br ; dan menetapkan miliknya sendiri CERT r menjadi himpunan pesan mr,s′−1 j dari sub-langkah (b'). – Jika di apapun titik dia memiliki diterima di setidaknya itu sah Tuan, s−1 j itu dari itu bentuk (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia berhenti menunggu dan menyetel bi \(\triangleq\)1. – Jika di apapun titik dia memiliki diterima di setidaknya itu sah Tuan, s−1 j itu dari itu bentuk (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), tetapi mereka tidak sepakat pada v yang sama, lalu dia berhenti menunggu dan menyetel bi \(\triangleq\)0. – Jika tidak, ketika waktu 2\(\lambda\) habis, i menetapkan bi \(\triangleq\)0. – Ketika nilai bi telah ditetapkan, i menghitung Qr−1 dari CERT r−1 dan memeriksa apakah saya \(\in\)SV r,s. – Jika i \(\in\)SV r,s, i menghitung pesan mr,s saya \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) dengan vi menjadi nilai yang telah dia hitung pada Langkah 4, menghancurkan skr,s kunci rahasia fananya saya, dan kemudian menyebarkan Tuan, s saya. Jika tidak, saya berhenti tanpa menyebarkan apa pun. aJadi, total waktu maksimum sejak i memulai Langkah 1 pada putaran r adalah ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ. bPesan seperti itu dari pemain j dihitung meskipun pemain i juga menerima pesan dari j yang menandatangani untuk 1. Hal serupa untuk Kondisi Akhir 1. Seperti yang ditunjukkan dalam analisis, ini untuk memastikan bahwa semua pengguna yang jujur mengetahuinya CERT r dalam waktu \(\lambda\) satu sama lain. Pengguna i sekarang mengetahui H(Br) dan penyelesaian putarannya sendiri. Dia hanya perlu menunggu hingga blok Br benar-benar berada disebarkan kepadanya, yang mungkin memerlukan waktu tambahan. Dia masih membantu menyebarkan pesan sebagai pengguna umum, tetapi tidak memulai propagasi apa pun sebagai pemverifikasi (r, s). Secara khusus, dia telah membantu menyebarkan semua pesan di dalamnya CERT r-nya, yang cukup untuk protokol kami. Perhatikan bahwa ia juga harus menetapkan bi \(\triangleq\)0 untuk protokol biner BA, tapi bi tidak diperlukan dalam hal ini. Hal serupa untuk semua instruksi di masa depan. dDalam hal ini, tidak peduli apa vjnya. 65Langkah s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Langkah BBA⋆ Koin-Tetap-Ke-1 Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkahnya sendiri pada putaran r segera setelah dia menyelesaikan Langkahnya sendiri s −1. • Pengguna i menunggu maksimal 2\(\lambda\). Sambil menunggu, saya bertindak sebagai berikut. – Kondisi Akhir 0: Instruksi yang sama seperti pada langkah Koin-Tetap-Ke-0. – Kondisi Akhir 1: Instruksi yang sama seperti pada langkah Koin-Tetap-Ke-0. – Jika di apapun titik dia memiliki diterima di setidaknya itu sah Tuan, s−1 j itu dari itu bentuk (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia berhenti menunggu dan menyetel bi \(\triangleq\)0.a – Jika tidak, ketika waktu 2\(\lambda\) habis, i menetapkan bi \(\triangleq\)1. – Ketika nilai bi telah ditetapkan, i menghitung Qr−1 dari CERT r−1 dan memeriksa apakah saya \(\in\)SV r,s. – Jika i \(\in\)SV r,s, i menghitung pesan mr,s saya \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) dengan vi menjadi nilai yang telah dia hitung pada Langkah 4, menghancurkan skr,s kunci rahasia fananya saya, dan kemudian menyebarkan Tuan, s saya. Jika tidak, saya berhenti tanpa menyebarkan apa pun. aPerhatikan bahwa menerima pesan valid (r, s −1) yang ditandatangani untuk 1 berarti Kondisi Akhir 1. Langkah s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Langkah BBA⋆ yang Benar-Benar Dibalik Koin Instruksi untuk setiap pengguna i \(\in\)PKr−k: Pengguna i memulai Langkahnya sendiri pada putaran r segera setelah dia menyelesaikan langkahnya sendiri s −1. • Pengguna i menunggu maksimal 2\(\lambda\). Sambil menunggu, saya bertindak sebagai berikut. – Kondisi Akhir 0: Instruksi yang sama seperti pada langkah Koin-Tetap-Ke-0. – Kondisi Akhir 1: Instruksi yang sama seperti pada langkah Koin-Tetap-Ke-0. – Jika di apapun titik dia memiliki diterima di setidaknya itu sah Tuan, s−1 j itu dari itu bentuk (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia berhenti menunggu dan menyetel bi \(\triangleq\)0. – Jika di apapun titik dia memiliki diterima di setidaknya itu sah Tuan, s−1 j itu dari itu bentuk (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), lalu dia berhenti menunggu dan menyetel bi \(\triangleq\)1. – Jika tidak, ketika waktu 2\(\lambda\) habis, biarkan SV r,s−1 saya menjadi himpunan (r, s −1)-pengukur dari kepada siapa dia telah menerima pesan yang valid tuan,s−1 j , saya menyetel bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 saya H(\(\sigma\)r,s−1 j )). – Ketika nilai bi telah ditetapkan, i menghitung Qr−1 dari CERT r−1 dan memeriksa apakah saya \(\in\)SV r,s. – Jika i \(\in\)SV r,s, i menghitung pesan mr,s saya \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) dengan vi menjadi nilai yang telah dia hitung pada Langkah 4, menghancurkan skr,s kunci rahasia fananya saya, dan kemudian menyebarkan Tuan, s saya. Jika tidak, saya berhenti tanpa menyebarkan apa pun. Komentar. Pada prinsipnya, sebagaimana dibahas dalam sub-bagian 6.2, protokol dapat mengambil banyak hal secara sewenang-wenang langkah dalam beberapa putaran. Jika hal ini terjadi, seperti yang dibahas, pengguna i \(\in\)SV r,s dengan s > \(\mu\) telah habis
simpanan kunci sementara yang telah dibuat sebelumnya dan harus mengautentikasi pesan (r, s)-nya, mr,s saya oleh a “cascade” dari kunci-kunci fana. Dengan demikian pesan saya menjadi sedikit lebih panjang dan penyampaiannya menjadi lebih lama pesan akan memakan waktu lebih lama. Oleh karena itu, setelah begitu banyak langkah dalam suatu putaran tertentu, nilai parameter \(\lambda\) secara otomatis akan meningkat sedikit. (Tetapi itu kembali ke \(\lambda\) asli sekali lagi blok diproduksi dan babak baru dimulai.) Rekonstruksi Blok Round-r oleh Non-Verifiers Petunjuk untuk setiap pengguna i dalam sistem: Pengguna i memulai putarannya sendiri r segera setelah ia melakukannya CERT r−1. • Saya mengikuti instruksi dari setiap langkah protokol, berpartisipasi dalam penyebaran semuanya pesan, tetapi tidak memulai propagasi apa pun dalam suatu langkah jika dia bukan pemverifikasi di dalamnya. • i mengakhiri putarannya sendiri r dengan memasukkan Kondisi Akhir 0 atau Kondisi Akhir 1 di beberapa bagian langkah, dengan CERT r yang sesuai. • Dari sana, dia memulai putarannya r + 1 sambil menunggu untuk menerima blok Br yang sebenarnya (kecuali dia sudah menerimanya), yang hash H(Br)-nya telah ditembaki oleh CERT r. Sekali lagi, jika CERT r menunjukkan bahwa Br = Br ǫ, saya tahu Br saat dia memiliki CERT r. 6.4 Analisis Algorand′ 2 Analisis Algorand′ 2 dengan mudah diturunkan dari Algorand ′ 1. Intinya, di Algorand ′ 2, dengan kemungkinan besar, (a) semua pengguna yang jujur menyetujui blok yang sama Br; pemimpin yang baru blok jujur dengan probabilitas paling sedikit ph = h2(1 + h −h2).
Algorand ′
2 في هذا القسم، قمنا بإنشاء نسخة من Algorand ′ تعمل وفقًا للافتراض التالي. افتراض الأغلبية الصادقة من المستخدمين: أكثر من 2/3 من المستخدمين في كل PKr صادقون. في القسم 8، نوضح كيفية استبدال الافتراض أعلاه بالأغلبية الصادقة المطلوبة افتراض المال. 6.1 تدوينات ومعلمات إضافية لـ Algorand ′ 2 التدوينات • μ \(\in\)Z+: حد أعلى عملي لعدد الخطوات التي، مع احتمالية ساحقة، سوف تؤخذ فعلا في جولة واحدة. (كما سنرى، تتحكم المعلمة μ في عدد العناصر سريعة الزوال المفاتيح التي يعدها المستخدم مسبقًا لكل جولة.) • Lr: متغير عشوائي يمثل عدد تجارب برنولي اللازمة لرؤية 1 عند كل منها التجربة هي 1 مع احتمال ph 2 . سيتم استخدام Lr للحد الأعلى من الوقت اللازم للتوليد كتلة ر. • tH: الحد الأدنى لعدد المتحققين الصادقين في الخطوة s > 1 من الجولة r، بحيث يكون مع الاحتمالية الساحقة (مع الأخذ في الاعتبار n وp)، يوجد متحققون صادقون في SV r,s. المعلمات • العلاقات بين مختلف المعالم. — لكل خطوة s > 1 من الجولة r، يتم اختيار n بحيث، مع احتمالية ساحقة،
|HSV ص، ق| > ث و |HSV ص، ق| + 2|MSV r,s| <2ث. لاحظ أن المتباينتين أعلاه تشيران معًا إلى |HSV r,s| > 2|MSV r,s|: أي هناك هي أغلبية 2/3 صادقة بين المدققين المختارين. كلما اقتربت قيمة h من 1، كلما كانت قيمة n أصغر. على وجه الخصوص، نستخدم (variants of) Chernofbounds لضمان استمرار الظروف المرغوبة باحتمالية ساحقة. • أمثلة على اختيارات المعلمات الهامة. - و = 10−18. — ن \(\approx\)4000، ث \(\approx\)0.69ن، ك = 70. 6.2 تنفيذ المفاتيح المؤقتة في Algorand ′ 2 تذكر أن المدقق i \(\in\)SV r,s يوقع رقميا على رسالته mr,s أنا من الخطوات s في الجولة r، نسبة إلى مفتاح عام سريع الزوال pkr,s i، باستخدام مفتاح سري سريع الزوال skr,s أنا أنه يدمر على الفور بعد الاستخدام. عندما يتم تحديد عدد الخطوات المحتملة التي قد تتخذها الجولة بواسطة معين عدد صحيح μ، لقد رأينا بالفعل كيفية التعامل عمليًا مع المفاتيح المؤقتة. على سبيل المثال، كما نحن لقد أوضحت في Algorand ′ 1 (حيث μ = m + 3)، للتعامل مع جميع مفاتيحه المؤقتة الممكنة، من من جولة r′ إلى جولة r′ + 106، أقوم بإنشاء زوج (PMK، SMK)، حيث يكون PMK سيدًا عامًا مفتاح نظام التوقيع القائم على الهوية، وSMK مفتاحه الرئيسي السري المقابل. المستخدم ط ينشر PMK ويستخدم SMK لإنشاء المفتاح السري لكل مفتاح عام سريع الزوال (ويدمر SMK بعد القيام بذلك). مجموعة المفاتيح العامة سريعة الزوال للمتعلقات ذات الصلة الجولات هي S = {i} \(\times\) {r′, . . . ، ص' + 106} \(\times\) {1، . . . ، ." (كما تمت مناقشته، مع اقتراب الجولة r′ + 106، أنا "أنعش" زوجه (PMK، SMK).) من الناحية العملية، إذا كانت μ كبيرة بما يكفي، فإن الجولة Algorand ′ 2 لن يستغرق أكثر من μ خطوات. في ومع ذلك، من حيث المبدأ، هناك احتمال بعيد أن يكون هناك عدد من الخطوات لبعض الجولات المتخذة فعلا سوف تتجاوز μ. عندما يحدث هذا، لن أتمكن من التوقيع على رسالته يا سيدي أنا ل أي خطوة s > μ، لأنه قام بإعداد المفاتيح السرية فقط للجولة r مسبقًا. علاوة على ذلك، هو لم يتمكن من إعداد ونشر مجموعة جديدة من المفاتيح سريعة الزوال، كما تمت مناقشته من قبل. في الواقع، للقيام به لذلك، سيحتاج إلى إدراج مفتاح رئيسي عام جديد PMK′ في كتلة جديدة. ولكن، ينبغي جولة ص اتخاذ المزيد والمزيد من الخطوات، لن يتم إنشاء كتل جديدة. ومع ذلك، الحلول موجودة. على سبيل المثال، قد أستخدم آخر مفتاح سريع الزوال للجولة r، pkr، μ أنا , على النحو التالي. يقوم بإنشاء مجموعة أخرى من أزواج المفاتيح للجولة r — على سبيل المثال، عن طريق (1) إنشاء زوج آخر زوج المفاتيح الرئيسي (PMK، SMK)؛ (2) استخدام هذا الزوج لإنشاء 106 مفاتيح سريعة الزوال، على سبيل المثال، كورونا ص، μ+1 أنا ، . . . , كورونا ص، μ+106 أنا ، المقابلة للخطوات μ+1، ...، μ+106 من الجولة r؛ (3) باستخدام skr، μ أنا إلى رقميا قم بتسجيل PMK (وأي رسالة (r, μ) إذا كان i \(\in\)SV r,μ)، نسبة إلى pkr,μ أنا ; و(4) محو SMK وskr,μ أنا . هل يجب أن أصبح مدققًا في خطوة μ + s مع s \(\in\){1, . . . ، 106}، ثم أوقعه رقميًا (r، μ + s)- رسالة السيد، μ+s أنا نسبة إلى مفتاحه الجديد pk ص، μ+س أنا = (ط، ص، μ + ق). بالطبع، للتحقق من هذا التوقيع بالنسبة لـ i، يحتاج الآخرون إلى التأكد من أن هذا المفتاح العام يتوافق مع المفتاح الرئيسي العام الجديد PMK الخاص بـ i. وبالتالي، بالإضافة إلى هذا التوقيع، أقوم بنقل توقيعه الرقمي لـ PMK نسبةً إلى pkr,μ أنا . بالطبع، يمكن تكرار هذا النهج، عدة مرات حسب الضرورة، في حالة استمرار الجولة لمزيد والمزيد من الخطوات! يتم استخدام المفتاح السري الأخير للمصادقة على جمهور رئيسي جديد المفتاح، وبالتالي مجموعة أخرى من المفاتيح سريعة الزوال للجولة r. وهكذا.6.3 البروتوكول الفعلي Algorand ′ 2 تذكر مرة أخرى أنه في كل خطوة من الجولة r، يستخدم المدقق سره العام طويل المدى زوج المفاتيح لإنتاج بيانات الاعتماد الخاصة به، \(\sigma\)r،s أنا \(\triangleq\)SIGi(r, s, Qr−1)، وكذلك SIGi ريال قطري−1 في حالة ق = 1. يستخدم أداة التحقق زوج المفاتيح سريع الزوال، (pkr،s أنا، سكر، ق i )، للتوقيع على أي رسالة أخرى قد تكون كذلك مطلوب. للتبسيط، نكتب esigi(m)، بدلاً من sigpkr,s أنا (م)، للدلالة على أنا سريع الزوال قم بتوقيع m في هذه الخطوة، واكتب ESIGi(m) بدلاً من SIGpkr,s أنا (م) \(\triangleq\)(أنا، م، esigi(م)). الخطوة 1: حظر الاقتراح تعليمات لكل مستخدم i \(\in\)PKr−k: يبدأ المستخدم i الخطوة 1 الخاصة به من الجولة r بمجرد قيامه بذلك CERT r−1، والذي يسمح لي بحساب H(Br−1) وQr−1 بشكل لا لبس فيه. • يستخدم المستخدم i Qr−1 للتحقق مما إذا كان i \(\in\)SV r,1 أم لا. إذا i /\(\in\)SV r,1، فإنه لا يفعل شيئًا للخطوة 1. • إذا كان i \(\in\)SV r,1، أي إذا كنت قائدًا محتملاً، فإنه يقوم بما يلي. (أ) إذا رأيت B0، . . . ، Br−1 نفسه (أي Bj = Bj يمكن استخلاصها بسهولة من قيمتها hash في CERT j ومن ثم يُفترض أنه "تم رؤيته")، ثم يقوم بجمع مدفوعات الجولة r التي لها تم نشره له حتى الآن ويحسب الحد الأقصى لمجموعة الدفع PAY r أنا منهم. (ب) إذا لم أر كل B0، . . . ، Br−1 حتى الآن، ثم يقوم بتعيين PAY r أنا = \(\emptyset\). (ج) بعد ذلك، أقوم بحساب "كتلة مرشحه" Br أنا = (ص، دفع ص أنا، SIGi(Qr−1)، H(Br−1)). (ج) أخيرًا، أقوم بحساب الرسالة السيد،1 أنا = (ر أنا، esigi(H(Br أنا )))، \(\sigma\)ص،1 ط)، يدمر له سريع الزوال المفتاح السري skr,1 i، ثم يقوم بنشر رسالتين، السيد،1 أنا و (SIGi(Qr−1), \(\sigma\)r,1 أنا)، بشكل منفصل ولكن في وقت واحد أعندما أكون القائد، يسمح SIGi(Qr−1) للآخرين بحساب Qr = H(SIGi(Qr−1), r).
الانتشار الانتقائي لتقصير التنفيذ الشامل للخطوة 1 والجولة بأكملها، من المهم أن (r, 1)- يتم نشر الرسائل بشكل انتقائي. أي أنه لكل مستخدم j في النظام، • بالنسبة للرسالة الأولى (r, 1) التي يتلقاها ويتحقق منها بنجاح، سواء كانت تحتوي على كتلة أو مجرد بيانات اعتماد وتوقيع Qr−1، يقوم اللاعب j بنشرها كالمعتاد. • بالنسبة لجميع الرسائل الأخرى (r, 1) التي يتلقاها اللاعب j ويتحقق منها بنجاح، يقوم بنشرها فقط إذا كانت قيمة hash لبيانات الاعتماد التي تحتوي عليها هي الأصغر بين قيم hash من أوراق الاعتماد الواردة في جميع (ص، 1) - الرسائل التي تلقاها والتحقق منها بنجاح بعيدا. • ومع ذلك، إذا تلقى j رسالتين مختلفتين من النموذج mr,1 أنا من نفس اللاعب i,b he يتجاهل القيمة الثانية بغض النظر عن قيمة hash لبيانات اعتماد i. لاحظ أنه في ظل الانتشار الانتقائي، من المفيد أن يقوم كل قائد محتمل بنشر قائده بيانات الاعتماد \(\sigma\)r,1 أنا بشكل منفصل عن السيد،1 i :c تلك الرسائل الصغيرة تنتقل بشكل أسرع من الكتل، تأكد نشر في الوقت المناسب للسيد،1 i حيث تحتوي بيانات الاعتماد المضمنة على قيم hash صغيرة، بينما اجعل تلك ذات القيم الكبيرة hash تختفي بسرعة. أي أن جميع التوقيعات صحيحة، وإذا كانت بصيغة السيد،1 i، كل من الكتلة وhash صالحة - على الرغم من أن j لا يتحقق مما إذا كانت مجموعة الدفعات المضمنة هي الحد الأقصى لـ i أم لا. ب مما يعني أنني خبيث. نشكر جورجيوس فلاشوس على اقتراحه هذا.الخطوة 2: الخطوة الأولى لبروتوكول الإجماع المتدرج GC تعليمات لكل مستخدم i \(\in\)PKr−k: يبدأ المستخدم i الخطوة 2 الخاصة به من الجولة r بمجرد قيامه بذلك CERT ص -1. • ينتظر المستخدم i الحد الأقصى من الوقت t2 \(\triangleq\)lect + Λ. أثناء الانتظار، أتصرف على النحو التالي. 1. بعد الانتظار للوقت 2، وجد المستخدم \(\ell\)مثل أن H(\(\sigma\)r,1 \(\ell\)) \(\geq\)H(\(\sigma\)r,1 ي) للجميع أوراق الاعتماد \(\sigma\)r,1 ي التي تعد جزءًا من الرسائل التي تم التحقق منها بنجاح (r, 1) والتي تلقاها حتى الآن.أ 2. إذا هو لديه تلقى أ كتلة ر−1، الذي مباريات ال hash قيمة ح (ر −1) الواردة في CERT r−1,b وإذا تلقى من \(\ell\)a رسالة صالحة السيد,1 \(\ell\) = (ر \(\ell\)، esig\(\ell\)(H(Br \(\ell\))))، \(\sigma\)ص،1 \(\ell\))،c ثم أتوقف عن الانتظار وأضبط v' أنا \(\triangleq\)(ح(ر \(\ell\))، \(\ell\)). 3. بخلاف ذلك، عندما ينفد الوقت t2، أقوم بتعيين v' أنا \(\triangleq\) \(\bot\). 4. عندما تكون قيمة v′ لقد تم تعييني، أقوم بحساب Qr−1 من CERT r−1 والتحقق من ذلك أنا \(\in\)SV r,2 أم لا. 5. إذا كان i \(\in\)SV r,2، فأنا أحسب الرسالة mr,2 أنا \(\triangleq\)(ESIGi(v') أنا)، \(\sigma\)ص،2 أنا)،د يدمر له سريع الزوال المفتاح السري skr,2 أنا، ثم ينشر السيد،2 أنا. خلاف ذلك، أتوقف دون نشر أي شيء. بشكل أساسي، يقرر المستخدم i بشكل خاص أن قائد الجولة r هو المستخدم \(\ell\). بالطبع، إذا كان CERT r−1 يشير إلى أن Br−1 = Br−1 ƒ ، فقد "استلمت" بالفعل Br−1 في اللحظة التي حصل فيها على ذلك CERT ص -1. cمرة أخرى، تم التحقق بنجاح من توقيعات اللاعب \(\ell\) وhashes، ويتم الدفع \(\ell\)في ر \(\ell\)هي مجموعة دفع صالحة لـ round r - على الرغم من أنني لا أتحقق مما إذا كان PAY r \(\ell\)هو الحد الأقصى لـ \(\ell\)أو لا. إذا ر \(\ell\)يحتوي على مجموعة دفعات فارغة، إذن ليست هناك حاجة في الواقع إلى رؤية Br−1 قبل التحقق مما إذا كان Br \(\ell\)صالحة أم لا. دالرسالة السيد،2 أنا إشارات إلى أن اللاعب i يعتبر المكون الأول لـ v' i ليكون hash للكتلة التالية، أو يعتبر الكتلة التالية فارغة.
الخطوة 3: الخطوة الثانية من GC تعليمات لكل مستخدم i \(\in\)PKr−k: يبدأ المستخدم i الخطوة 3 الخاصة به من الجولة r بمجرد قيامه بذلك CERT ص -1. • ينتظر المستخدم i الحد الأقصى من الوقت t3 \(\triangleq\)t2 + 2ạ = 3ạ + Λ. أثناء الانتظار، أقوم بدور يتبع. 1. إذا كانت هناك قيمة v بحيث أنه تلقى على الأقل رسائل صالحة mr,2 ي من النموذج (ESIGj(v)، \(\sigma\)r،2 ي) دون أي تناقض، ثم ينقطع عن الانتظار ويغرب الخامس' = الخامس. 2. بخلاف ذلك، عند انتهاء الوقت t3، يقوم بتعيين v′ = \(\bot\). 3. عند تعيين قيمة v′، أقوم بحساب Qr−1 من CERT r−1 والتحقق مما إذا كان أنا \(\in\)SV r,3 أم لا. 4. إذا كان i \(\in\)SV r,3، فأنا أحسب الرسالة mr,3 أنا \(\triangleq\)(ESIGi(v′),\(\sigma\)r,3 ط)، يدمر له مفتاح سري سريع الزوال skr،3 أنا، ومن ثم نشر السيد،3 أنا. خلاف ذلك، أتوقف دون نشر أي شيء. أي أنه لم يتلق رسالتين صالحتين تحتويان على ESIGj(v) وESIGj(ˆv) مختلفين على التوالي، من اللاعب j. هنا ومن هنا فصاعدًا، باستثناء شروط النهاية التي سيتم تحديدها لاحقًا، عندما يكون اللاعب صادقًا يريد رسائل ذات شكل معين، فالرسائل المتعارضة مع بعضها البعض لا يتم احتسابها أو اعتبارها صالحة.
الخطوة 4: إخراج GC والخطوة الأولى من BBA⋆ تعليمات لكل مستخدم i \(\in\)PKr−k: يبدأ المستخدم i الخطوة 4 الخاصة به من الجولة r بمجرد أن ينهي الخطوة 3 الخاصة به. • المستخدم i ينتظر الحد الأقصى من الوقت 2 .أ أثناء الانتظار، يتصرف كما يلي. 1. يقوم بحساب vi وgi، مخرجات GC، على النحو التالي. (أ) إذا كانت هناك قيمة v'̸= \(\bot\) بحيث يكون قد تلقى على الأقل رسائل صالحة السيد،3 ي = (ESIGj(v′),\(\sigma\)r,3 j )، ثم يتوقف عن الانتظار ويضبط vi \(\triangleq\)v′ وgi \(\triangleq\)2. (ب) إذا كان قد تلقى على الأقل رسائل صالحة السيد،3 ي = (ESIGj(\(\bot\)), \(\sigma\)r,3 ي)، ثم يتوقف انتظار وضبط vi \(\triangleq\) \(\bot\) وgi \(\triangleq\)0.b (ج) بخلاف ذلك، عندما ينفد الوقت 2، إذا كانت هناك قيمة v' ̸= \(\bot\) بحيث يكون لديه تلقى على الأقل ⌈tH 2 ⌉رسائل صالحة السيد،ي ي = (ESIGj(v′),\(\sigma\)r,3 j )، ثم يقوم بتعيين vi \(\triangleq\)v' وجي \(\triangleq\)1.c (د) بخلاف ذلك، عندما ينفد الوقت 2lect، فإنه يحدد vi \(\triangleq\) \(\bot\) وgi \(\triangleq\)0. 2. عندما يتم تعيين القيم vi وgi، i يحسب bi، مدخل BBA⋆، على النحو التالي: ثنائية \(\triangleq\)0 إذا كانت gi = 2، وbi \(\triangleq\)1 بخلاف ذلك. 3. أنا أحسب Qr−1 من CERT r−1 وأتحقق مما إذا كان i \(\in\)SV r,4 أم لا. 4. إذا كان i \(\in\)SV r,4، فإنه يحسب الرسالة mr,4 أنا \(\triangleq\)(ESIGi(bi)، ESIGi(vi)، \(\sigma\)r،4 ط)، يدمر له مفتاح سري سريع الزوال skr،4 أنا، وينشر السيد،4 أنا. خلاف ذلك، أتوقف دون نشر أي شيء. وبالتالي، فإن الحد الأقصى لإجمالي مقدار الوقت منذ أن بدأت خطوته 1 من الجولة r يمكن أن يكون t4 \(\triangleq\)t3 + 2lect = 5lect + Λ. بسواء كانت الخطوة (ب) موجودة في البروتوكول أم لا، فإن ذلك لا يؤثر على صحتها. إلا أن وجود الخطوة (ب) يسمح للخطوة 4 بالانتهاء في أقل من 2\(\times\) إذا قام العديد من مدققي الخطوة 3 بالتوقيع على "\(\bot\)". جيمكن إثبات أن حرف v في هذه الحالة، إذا كان موجودًا، يجب أن يكون فريدًا.الخطوة s، 5 \(\geq\)s \(\geq\)m + 2، s −2 ≡0 mod 3: خطوة ثابتة بالعملة إلى 0 من BBA⋆ تعليمات لكل مستخدم i \(\in\)PKr−k: المستخدم i يبدأ خطواته الخاصة من الجولة r بمجرد أن أنهى خطوته الخاصة −1. • المستخدم i ينتظر الحد الأقصى من الوقت 2 .أ أثناء الانتظار، يتصرف كما يلي. – شرط النهاية 0: إذا كان هناك في أي نقطة سلسلة v ̸= \(\bot\) وخطوة s′ بحيث (أ) 5 s′s′ \(\geq\)s, s′ −2 ≡0 mod 3 — أي أن الخطوة s′ هي خطوة ثابتة بالعملة إلى 0، (ب) لقد تلقيت على الأقل رسائل صالحة mr,s′−1 ي = (ESIGj(0)، ESIGj(v)، \(\sigma\)r،s'−1 ي ) ،ب و (ج) لقد تلقيت رسالة صالحة (SIGj(Qr−1), \(\sigma\)r,1 j ) مع j كونها الثانية مكون الخامس, ثم أتوقف عن الانتظار وأنهي تنفيذه للخطوة s (وفي الواقع للجولة r) على الفور دون نشر أي شيء باعتباره مدققًا (r, s)؛ يحدد H(Br) ليكون الأول مكون من الخامس؛ ويقوم بتعيين CERT r الخاص به ليكون مجموعة الرسائل mr,s′−1 ي من الخطوة (ب) مع (SIGj(Qr−1), \(\sigma\)r,1 ي).ج – شرط النهاية 1: إذا كان هناك في أي وقت خطوة s′ من هذا القبيل (أ') 6 \(\geq\)s′ \(\geq\)s, s′ −2 ≡1 mod 3 — أي أن الخطوة s′ هي خطوة ثابتة بالعملة إلى 1، و (ب') لقد تلقيت على الأقل رسائل صالحة mr,s'−1 ي = (ESIGj(1)، ESIGj(vj)، \(\sigma\)r,s'−1 ي ) ،د بعد ذلك، أتوقف عن الانتظار وأنهي تنفيذه للخطوة s (وفي الواقع للجولة r) بشكل صحيح بعيدًا دون نشر أي شيء باعتباره مُحققًا (r, s)؛ مجموعات ر = ر ƒ ; ويضع بلده CERT r هي مجموعة الرسائل mr,s′−1 ي من الخطوة الفرعية (ب'). - إذا في أي نقطة هو لديه تلقى في الأقل ث صالح السيد، ق−1 ي ق من ال شكل (ESIGj(1)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يتوقف عن الانتظار ويضبط ثنائية \(\triangleq\)1. - إذا في أي نقطة هو لديه تلقى في الأقل ث صالح السيد، ق−1 ي ق من ال شكل (ESIGj(0)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، لكنهم لا يتفقون على نفس الشيء، ثم يتوقف الانتظار ويحدد ثنائية \(\triangleq\)0. - بخلاف ذلك، عندما ينفد الوقت 2\(\alpha\)، أقوم بتعيين bi \(\triangleq\)0. - عند تعيين القيمة bi، أقوم بحساب Qr−1 من CERT r−1 والتحقق من ذلك أنا \(\in\)SV ص، ق. - إذا كان i \(\in\)SV r,s، أقوم بحساب الرسالة mr,s أنا \(\triangleq\)(ESIGi(bi)، ESIGi(vi)، \(\sigma\)r،s ط) مع وجود السادس القيمة التي حسبها في الخطوة 4، تدمر مفتاحه السري سريع الزوال skr,s أنا، وبعد ذلك ينشر السيد، ق أنا. وإلا فإنني أتوقف دون نشر أي شيء. وبالتالي، فإن الحد الأقصى لإجمالي مقدار الوقت منذ أن بدأت خطوته 1 من الجولة r يمكن أن يكون ts \(\triangleq\)ts−1 + 2lect = (2s −3) lect + Λ. bيتم احتساب هذه الرسالة من اللاعب j حتى لو تلقى اللاعب i أيضًا رسالة من j بالتوقيع برقم 1. أشياء مماثلة لحالة النهاية 1. كما هو موضح في التحليل، هذا للتأكد من أن جميع المستخدمين الصادقين يعرفون ذلك CERT r خلال الوقت π من بعضها البعض. المستخدم يعرف الآن H(Br) ونهاياته الدائرية الخاصة. إنه يحتاج فقط إلى الانتظار حتى تصبح الكتلة Br فعليًا نشر له، الأمر الذي قد يستغرق بعض الوقت الإضافي. لا يزال يساعد في نشر الرسائل كمستخدم عام، لكنه لا يبدأ أي انتشار كمتحقق (r, s). وعلى وجه الخصوص، ساعد في نشر جميع الرسائل في له CERT ص، وهو ما يكفي لبروتوكولنا. لاحظ أنه يجب عليه أيضًا تعيين bi \(\triangleq\)0 لبروتوكول BA الثنائي، ولكن ليست هناك حاجة إلى bi في هذه الحالة على أي حال. أشياء مماثلة لجميع التعليمات المستقبلية. في هذه الحالة، لا يهم ما هي VJ. 65الخطوة s، 6 \(\geq\)s \(\geq\)m + 2، s −2 ≡1 mod 3: خطوة ثابتة بالعملة إلى 1 من BBA⋆ تعليمات لكل مستخدم i \(\in\)PKr−k: المستخدم i يبدأ خطواته الخاصة من الجولة r بمجرد أن أنهى خطوته الخاصة −1. • ينتظر المستخدم الحد الأقصى من الوقت 2 . أثناء الانتظار، أتصرف على النحو التالي. – شرط النهاية 0: نفس التعليمات الموجودة في خطوة العملة الثابتة إلى 0. – شرط النهاية 1: نفس التعليمات الموجودة في خطوة العملة الثابتة إلى 0. - إذا في أي نقطة هو لديه تلقى في الأقل ث صالح السيد، ق−1 ي ق من ال شكل (ESIGj(0)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يتوقف عن الانتظار ويضبط bi \(\triangleq\)0.a - بخلاف ذلك، عندما ينفد الوقت 2π، أقوم بتعيين bi \(\triangleq\)1. - عند تعيين القيمة bi، أقوم بحساب Qr−1 من CERT r−1 والتحقق من ذلك أنا \(\in\)SV ص، ق. - إذا كان i \(\in\)SV r,s، أقوم بحساب الرسالة mr,s أنا \(\triangleq\)(ESIGi(bi)، ESIGi(vi)، \(\sigma\)r،s ط) مع وجود السادس القيمة التي حسبها في الخطوة 4، تدمر مفتاحه السري سريع الزوال skr,s أنا، وبعد ذلك ينشر السيد، ق أنا. وإلا فإنني أتوقف دون نشر أي شيء. لاحظ أن تلقي رسائل صالحة (r, s −1) - توقيع الرسائل لـ 1 يعني حالة النهاية 1. الخطوة s، 7 \(\geq\)s \(\geq\)m + 2، s −2 ≡2 mod 3: خطوة مقلوبة بشكل حقيقي من BBA⋆ تعليمات لكل مستخدم i \(\in\)PKr−k: المستخدم i يبدأ خطواته الخاصة من الجولة r بمجرد أن ينهي خطوته s −1. • ينتظر المستخدم الحد الأقصى من الوقت 2 . أثناء الانتظار، أتصرف على النحو التالي. – شرط النهاية 0: نفس التعليمات الموجودة في خطوة العملة الثابتة إلى 0. – شرط النهاية 1: نفس التعليمات الموجودة في خطوة العملة الثابتة إلى 0. - إذا في أي نقطة هو لديه تلقى في الأقل ث صالح السيد، ق−1 ي ق من ال شكل (ESIGj(0)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يتوقف عن الانتظار ويضبط bi \(\triangleq\)0. - إذا في أي نقطة هو لديه تلقى في الأقل ث صالح السيد، ق−1 ي ق من ال شكل (ESIGj(1)، ESIGj(vj)، \(\sigma\)r،s−1 ي )، ثم يتوقف عن الانتظار ويضبط ثنائية \(\triangleq\)1. - خلاف ذلك، عندما ينفد الوقت 2، السماح لـ SV r,s−1 أنا تكون مجموعة (r, s −1)-المدققين من الذي تلقى رسالة صالحة السيد، ق−1 ي ، أقوم بتعيين bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 أنا ح(\(\sigma\)ص,ق−1 ي )). - عند تعيين القيمة bi، أقوم بحساب Qr−1 من CERT r−1 والتحقق من ذلك أنا \(\in\)SV ص، ق. - إذا كان i \(\in\)SV r,s، أقوم بحساب الرسالة mr,s أنا \(\triangleq\)(ESIGi(bi)، ESIGi(vi)، \(\sigma\)r،s ط) مع وجود السادس القيمة التي حسبها في الخطوة 4، تدمر مفتاحه السري سريع الزوال skr,s أنا، وبعد ذلك ينشر السيد، ق أنا. وإلا فإنني أتوقف دون نشر أي شيء. ملاحظة. من حيث المبدأ، كما هو مذكور في القسم الفرعي 6.2، قد يأخذ البروتوكول عددًا كبيرًا من الأشخاص بشكل تعسفي خطوات في بعض الجولة. في حالة حدوث ذلك، كما تمت مناقشته، فإن المستخدم i \(\in\)SV r,s مع s > μ قد استنفد
مخبأه من المفاتيح المؤقتة التي تم إنشاؤها مسبقًا ويجب عليه مصادقة رسالته (r, s) mr,s أنا بواسطة أ "سلسلة" من المفاتيح سريعة الزوال. وهكذا تصبح رسالتي أطول قليلاً وأرسلها لفترة أطول سوف تستغرق الرسائل وقتًا أطول قليلاً. وبناء على ذلك، بعد العديد من الخطوات لجولة معينة، قيمة ستزداد المعلمة lect بشكل طفيف تلقائيًا. (لكنه يعود إلى الأصل π مرة واحدة جديدة يتم إنتاج الكتلة وتبدأ جولة جديدة.) إعادة بناء كتلة Round-r من قبل غير المتحققين تعليمات لكل مستخدم i في النظام: يبدأ المستخدم i جولته الخاصة بمجرد قيامه بذلك CERT ص -1. • أتبع تعليمات كل خطوة من خطوات البروتوكول، وأشارك في نشره للجميع الرسائل، لكنه لا يبدأ أي نشر في خطوة إذا لم يكن مدققا فيها. • أنهي جولته r بإدخال إما حالة النهاية 0 أو حالة النهاية 1 في البعض الخطوة، مع CERT ص المقابلة. • من الآن فصاعدا، يبدأ جولته r + 1 أثناء انتظار استلام الكتلة الفعلية Br (ما لم لقد استلمها بالفعل)، وتم تثبيت hash H(Br) بواسطة CERT r. مرة أخرى، إذا يشير CERT r إلى أن Br = Br à، أنا أعرف Br في اللحظة التي حصل فيها على CERT r. 6.4 تحليل Algorand ′ 2 تحليل Algorand ′ 2 مشتق بسهولة من Algorand ′ 1. بشكل أساسي، في Algorand ′ 2، مع احتمالية ساحقة، (أ) يتفق جميع المستخدمين الصادقين على نفس الكتلة Br؛ زعيم جديد الكتلة صادقة مع احتمالية على الأقل ph = h2(1 + h −h2).
Menangani pengguna Offline Jujur
Seperti yang kami katakan, pengguna yang jujur mengikuti semua instruksi yang ditentukan, termasuk instruksi online dan menjalankan protokol. Hal ini tidak menjadi beban besar di Algorand, karena perhitungan dan bandwidth yang dibutuhkan dari pengguna yang jujur cukup sederhana. Namun, izinkan kami menunjukkan bahwa Algorand bisa dapat dengan mudah dimodifikasi agar dapat berfungsi dalam dua model, di mana pengguna yang jujur diperbolehkan untuk offline di angka yang besar. Sebelum membahas kedua model ini, mari kita tunjukkan persentase pemain yang jujur adalah 95%, Algorand masih dapat dijalankan dengan mengatur semua parameter dengan asumsi h = 80%. Oleh karena itu, Algorand akan terus berfungsi dengan baik meskipun sebagian besar pemain jujur memilih untuk offline (memang merupakan kasus utama “ketidakhadiran”). Faktanya, setidaknya kapan saja 80% pemain online akan jujur. Dari Partisipasi Terus-menerus hingga Kejujuran yang Malas Seperti yang kita lihat, Algorand ′ 1 dan Algorand′ 2 pilih parameter lihat kembali k. Sekarang mari kita tunjukkan bahwa memilih k yang besar dengan benar memungkinkan seseorang untuk menghapus persyaratan Partisipasi Berkelanjutan. Persyaratan ini memastikan properti penting: yaitu, bahwa protokol BA yang mendasari BBA⋆memiliki mayoritas yang jujur. Sekarang mari kita jelaskan betapa malasnya kejujuran memberikan cara alternatif dan menarik untuk memuaskan properti ini.
Ingatlah bahwa pengguna i malas-tapi-jujur jika (1) dia mengikuti semua instruksi yang ditentukan, kapan dia diminta untuk berpartisipasi dalam protokol, dan (2) dia diminta untuk berpartisipasi dalam protokol saja sangat jarang —misalnya, seminggu sekali— dengan pemberitahuan awal yang sesuai, dan berpotensi menerima penerimaan yang signifikan imbalan ketika dia berpartisipasi. Untuk mengizinkan Algorand bekerja dengan pemain seperti itu, cukup dengan “memilih pemverifikasi putaran saat ini di antara pengguna yang sudah berada dalam sistem pada putaran sebelumnya.” Memang benar, ingatlah itu pemverifikasi untuk putaran r dipilih dari pengguna pada putaran r −k, dan pemilihan dibuat berdasarkan pada kuantitas Qr−1. Perhatikan bahwa seminggu terdiri dari sekitar 10.000 menit, dan asumsikan bahwa a putaran memakan waktu kira-kira (misalnya, rata-rata) 5 menit, jadi dalam seminggu ada sekitar 2.000 putaran. Asumsikan bahwa, pada suatu saat, pengguna ingin merencanakan waktunya dan mengetahui apakah dia akan merencanakan waktunya pemverifikasi dalam minggu mendatang. Protokol sekarang memilih pemverifikasi untuk putaran r dari pengguna di putaran r −k −2.000, dan pilihannya didasarkan pada Qr−2.001. Pada ronde r, pemain yang sudah saya kenal nilai Qr−2,000, . . . , Qr−1, karena mereka sebenarnya adalah bagian dari blockchain. Kemudian, untuk setiap M antara 1 dan 2.000, i adalah pemverifikasi pada langkah s pada putaran r + M jika dan hanya jika .H SIGi r + M, s, Qr+M−2,001 \(\leq\)p. Jadi, untuk memeriksa apakah dia akan dipanggil untuk bertindak sebagai verifikator dalam 2.000 putaran berikutnya, saya harus hitung \(\sigma\)M,s saya = SIGi r + M, s, Qr+M−2,001 untuk M = 1 sampai 2.000 dan untuk setiap langkah s, dan periksa apakah .H(\(\sigma\)M,s saya ) \(\leq\)p untuk beberapa di antaranya. Jika penghitungan tanda tangan digital membutuhkan waktu satu milidetik, maka seluruh operasi ini akan memakan waktu sekitar 1 menit komputasi. Jika dia tidak terpilih sebagai verifikator di salah satu ronde ini, maka dia bisa offline dengan “hati nurani yang jujur”. Apakah dia terus menerus berpartisipasi, pada dasarnya dia akan mengambil 0 langkah dalam 2.000 putaran berikutnya! Sebaliknya, jika dia terpilih menjadi verifier di salah satu putaran ini, lalu dia mempersiapkan diri (misalnya, dengan mendapatkan semua informasi yang diperlukan) untuk bertindak sebagai verifikator yang jujur pada putaran yang tepat. Dengan bertindak demikian, calon verifikator yang malas tapi jujur hanya akan ketinggalan berpartisipasi dalam propagasi pesan. Namun penyebaran pesan biasanya kuat. Selain itu, pembayar dan penerima pembayaran pembayaran yang baru-baru ini disebarkan diharapkan online untuk melihat apa yang terjadi pada pembayaran mereka, dan dengan demikian mereka akan berpartisipasi dalam penyebaran pesan, jika mereka jujur.
التعامل مع المستخدمين الصادقين غير المتصلين
كما قلنا، المستخدم الصادق يتبع جميع التعليمات الموصوفة له، والتي تشمل تعليمات الاتصال بالإنترنت وتشغيل البروتوكول. هذا ليس عبئًا كبيرًا في Algorand، منذ الحساب و النطاق الترددي المطلوب من المستخدم الصادق متواضع جدًا. ومع ذلك، دعونا نشير إلى أن Algorand يمكنه ذلك يمكن تعديلها بسهولة بحيث تعمل في نموذجين، حيث يُسمح للمستخدمين الصادقين بأن يكونوا غير متصلين بالإنترنت أعداد كبيرة. قبل مناقشة هذين النموذجين، دعونا نشير إلى أنه إذا كانت نسبة اللاعبين الشرفاء كانت 95%، ولا يزال من الممكن تشغيل Algorand لتعيين كافة المعلمات بافتراض أن h = 80% بدلاً من ذلك. وبناءً على ذلك، سيستمر Algorand في العمل بشكل صحيح حتى لو كان نصف اللاعبين الصادقين على الأكثر اختار عدم الاتصال (في الواقع، حالة كبيرة من "التغيب"). في الواقع، في أي وقت من الأوقات، على الأقل 80% من اللاعبين عبر الإنترنت سيكونون صادقين. من المشاركة المستمرة إلى الصدق الكسول كما رأينا، Algorand ′ 1 و Algorand ′ 2 اختر معلمة الرجعة k دعونا الآن نوضح أن اختيار k كبير بشكل صحيح يمكّن الشخص من الإزالة شرط المشاركة المستمرة. ويضمن هذا المطلب خاصية حاسمة: وهي، أن بروتوكول BA الأساسي BBA⋆ لديه أغلبية صادقة مناسبة. دعونا الآن نشرح مدى كسول يوفر الصدق طريقة بديلة وجذابة لإرضاء هذه الخاصية.
تذكر أن المستخدم يكون كسولًا ولكن صادقًا إذا (1) اتبع جميع تعليماته الموصوفة ومتى يُطلب منه المشاركة في البروتوكول، و(2) يُطلب منه المشاركة في البروتوكول فقط نادرًا جدًا - على سبيل المثال، مرة واحدة في الأسبوع - مع إشعار مسبق مناسب، ومن المحتمل أن تتلقى إشعارًا مهمًا مكافأة عندما يشارك. للسماح لـ Algorand بالعمل مع هؤلاء اللاعبين، يكفي فقط "اختيار أدوات التحقق من الجولة الحالية بين المستخدمين الموجودين بالفعل في النظام في جولة سابقة بكثير." في الواقع، تذكر ذلك يتم اختيار أدوات التحقق من الجولة r من المستخدمين في الجولة r −k، ويتم إجراء التحديدات بناءً على ذلك على الكمية Qr−1. لاحظ أن الأسبوع يتكون من 10000 دقيقة تقريبًا، وافترض أن أ تستغرق الجولة تقريبًا (على سبيل المثال، في المتوسط) 5 دقائق، لذا فإن الأسبوع يحتوي على 2000 طلقة تقريبًا. افترض أنه، في وقت ما، يرغب المستخدم في تخطيط وقته ومعرفة ما إذا كان سيفعل ذلك أم لا المدقق في الأسبوع المقبل. يختار البروتوكول الآن جهات التحقق لجولة r من المستخدمين في مستدير r −k −2,000، والاختيارات مبنية على Qr−2,001. في الجولة ص، لاعب أعرفه بالفعل القيم Qr−2,000، . . . ، Qr−1، نظرًا لأنهم في الواقع جزء من blockchain. ثم لكل م بين 1 و2000، i هو المتحقق في خطوة s من الجولة r + M إذا وفقط إذا .ح سيجي ص + M، ق، Qr+M−2,001 \(\geq\)ص . وبالتالي، للتحقق مما إذا كان سيتم استدعاؤه للعمل كمدقق في الجولات الـ 2000 القادمة، لا بد لي من التحقق من ذلك. حساب \(\sigma\)M,s أنا = سيجي ص + M، ق، Qr+M−2,001 لـ M = 1 إلى 2000 ولكل خطوة s، وتحقق سواء كان .H(\(\sigma\)M,s أنا ) \(\geq\)p بالنسبة لبعضهم. إذا كانت عملية حساب التوقيع الرقمي تستغرق ميلي ثانية واحدة، إذن ستستغرق هذه العملية بأكملها حوالي دقيقة واحدة من الحساب. إذا لم يتم اختياره كمحقق في أي من هذه الجولات، يمكنه أن يخرج عن الخط "بضمير صادق". لو كان بشكل مستمر لو شارك، لكان قد اتخذ 0 خطوة في الـ 2000 جولة القادمة على أي حال! إذا، بدلا من ذلك، يتم اختياره ليكون مدققًا في إحدى هذه الجولات، ثم يجهز نفسه (على سبيل المثال، عن طريق الحصول على جميع المعلومات اللازمة) للعمل كمدقق نزيه في الجولة المناسبة. ومن خلال هذا التصرف، فإن المتحقق الكسول ولكن الصادق لن يفوته سوى المشاركة في النشر من الرسائل. لكن نشر الرسالة عادة ما يكون قويا. علاوة على ذلك، فإن الدافعين والمستفيدين من من المتوقع أن تكون المدفوعات التي تم نشرها مؤخرًا عبر الإنترنت لمشاهدة ما يحدث لمدفوعاتها، وبالتالي سيشاركون في نشر الرسالة إذا كانوا صادقين.
Protokol Algorand ′ dengan Mayoritas Uang yang Jujur
Kini, pada akhirnya, kami menunjukkan cara mengganti asumsi Mayoritas Pengguna yang Jujur dengan asumsi yang lebih banyak lagi asumsi Mayoritas Uang yang Jujur dan bermakna. Ide dasarnya adalah (dalam rasa proof-of-stake) “untuk memilih pengguna i \(\in\)PKr−k untuk menjadi anggota SV r,s dengan bobot (yaitu, kekuatan keputusan) sebanding dengan jumlah uang yang dimiliki oleh i.”24 Dengan asumsi HMM kita, kita dapat memilih apakah jumlah tersebut harus dimiliki pada putaran r −k atau di (awal) putaran r. Dengan asumsi bahwa kami tidak keberatan dengan partisipasi terus-menerus, kami memilih untuk ikut serta pilihan terakhir. (Untuk menghilangkan partisipasi yang berkelanjutan, kita akan memilih pilihan yang pertama. Lebih baik dikatakan, untuk jumlah uang yang dimiliki pada putaran r −k −2, 000.) Ada banyak cara untuk mengimplementasikan ide ini. Cara paling sederhana adalah dengan menahan setiap kunci paling banyak 1 satuan uang lalu pilih secara acak n pengguna i dari PKr−k sehingga a(r) saya = 1. 24Kita harus menyatakan PKr−k−2.000 untuk menggantikan partisipasi yang berkelanjutan. Untuk kesederhanaan, karena seseorang mungkin ingin membutuhkannya bagaimanapun, kita tetap menggunakan PKr−k seperti sebelumnya, sehingga mengurangi satu parameter.
Implementasi Paling Sederhana Berikutnya Implementasi paling sederhana berikutnya adalah dengan menuntut agar setiap kunci publik memiliki jumlah maksimum uang M, untuk beberapa M tetap. Nilai M cukup kecil dibandingkan dengan jumlah total uang dalam sistem, sedemikian rupa sehingga kemungkinan suatu kunci dimiliki oleh himpunan pemverifikasi lebih dari satu langkah dalam —katakanlah— k putaran dapat diabaikan. Kemudian, kunci i \(\in\)PKr−k, memiliki sejumlah uang a(r) saya pada putaran r, dipilih menjadi anggota SV r,s jika .H SIGi r, s, Qr−1 \(\leq\)p \(\cdot\) a(r) saya M . Dan semuanya berjalan seperti sebelumnya. Implementasi yang Lebih Kompleks Implementasi terakhir “memaksa peserta kaya dalam sistem untuk memiliki banyak kunci”. Implementasi alternatif, dijelaskan di bawah, menggeneralisasi pengertian status dan pertimbangan setiap pengguna i terdiri dari K + 1 salinan (i, v), yang masing-masing dipilih secara independen untuk menjadi pemverifikasi, dan akan memiliki kunci fananya sendiri (pkr,s saya,v,skr,s i,v) dalam satu langkah s pada putaran r. Nilai K tergantung pada jumlah uang a(r) saya dimiliki oleh i pada putaran r. Sekarang mari kita lihat bagaimana sistem tersebut bekerja secara lebih rinci. Jumlah Salinan Misalkan n adalah kardinalitas yang diharapkan dari masing-masing himpunan pemverifikasi, dan misalkan a(r) saya menjadi jumlah uang yang dimiliki oleh pengguna i pada putaran r. Misalkan Ar adalah jumlah uang yang dimiliki oleh pengguna di PKr−k pada putaran r, yaitu, Ar = X i\(\in\)P Kr−k sebuah (kanan) saya. Jika i adalah pengguna di PKr−k, maka salinan i adalah (i, 1), . . . , (i, K + 1), dimana K = $ n \(\cdot\) sebuah(r) saya Ar % . Contoh. Misal n = 1.000, Ar = 109, dan a(r) saya = 3,7 juta. Lalu, K = 103 \(\cdot\) (3,7 \(\cdot\) 106) 109 = ⌊3.7⌋= 3 . Verifikasi dan Kredensial Biarkan saya menjadi pengguna di PKr−k dengan K + 1 salinan. Untuk setiap v = 1, . . . , K, salin (i, v) milik SV r,s secara otomatis. Artinya, kredensial saya adalah \(\sigma\)r, s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1), namun kondisinya menjadi .H(\(\sigma\)r,s i,v) \(\leq\)1, yaitu selalu benar. Untuk salinan (i, K + 1), untuk setiap Langkah s pada putaran r, i memeriksa apakah .H SIGi (saya, K + 1), r, s, Qr−1 \(\leq\)a(r) saya n Ar −K .
Jika ya, salinan (i, K + 1) milik SV r,s. Untuk membuktikannya, saya menyebarkan kredensial \(\sigma\)r,1 saya,K+1 = SIGi (saya, K + 1), r, s, Qr−1 . Contoh. Seperti pada contoh sebelumnya, misalkan n = 1K, a(r) saya = 3,7M, Ar = 1B, dan i punya 4 salinan: (i, 1), . . . , (saya, 4). Kemudian, 3 salinan pertama menjadi milik SV r,s secara otomatis. Untuk yang ke 4, secara konseptual, Algorand ′ secara mandiri melempar koin yang bias, yang probabilitas Kepalanya adalah 0,7. Salin (i, 4) dipilih jika dan hanya jika pelemparan koin adalah Kepala. (Tentu saja, pelemparan koin yang bias ini diterapkan dengan hashing, menandatangani, dan membandingkan —seperti yang kita lakukan telah saya lakukan selama ini dalam makalah ini— sehingga memungkinkan saya membuktikan hasilnya.) Bisnis seperti Biasa Setelah menjelaskan bagaimana verifikator dipilih dan bagaimana kredensial mereka dihitung pada setiap langkah putaran r, pelaksanaan putaran serupa dengan yang telah dijelaskan.
البروتوكول Algorand ′ مع الأغلبية الصادقة من المال
نعرض الآن، أخيرًا، كيفية استبدال افتراض الأغلبية الصادقة من المستخدمين بافتراض أكثر من ذلك بكثير افتراض الأغلبية الصادقة من المال. الفكرة الأساسية هي (بنكهة proof-of-stake) "لتحديد مستخدم i \(\in\)PKr−k لينتمي إلى SV r,s بوزن (أي قوة القرار) يتناسب مع مقدار الأموال التي يملكها ط."24 من خلال افتراضنا HMM، يمكننا اختيار ما إذا كان ينبغي امتلاك هذا المبلغ عند الجولة r -k أو في (بداية) الجولة ص. على افتراض أننا لا نمانع في المشاركة المستمرة، فإننا نختار ذلك الاختيار الأخير. (لإزالة المشاركة المستمرة، كنا قد اخترنا الخيار الأول. والأفضل من ذلك، بالنسبة لمبلغ الأموال المملوكة بالجولة r −k −2,000.) هناك طرق عديدة لتنفيذ هذه الفكرة. إن أبسط طريقة هي الاحتفاظ بكل مفتاح وحدة واحدة من المال على الأكثر، ثم حدد عشوائيًا n من المستخدمين i من PKr−k بحيث يكون a(r) أنا = 1. 24 يجب أن نقول PKr−k−2,000 لاستبدال المشاركة المستمرة. من أجل البساطة، حيث قد يرغب المرء في الطلب المشاركة المستمرة على أي حال، نستخدم PKr−k كما كان من قبل، وذلك لحمل معلمة واحدة أقل.
التنفيذ الأبسط التالي قد يكون التنفيذ الأبسط التالي هو المطالبة بأن يمتلك كل مفتاح عام حدًا أقصى من المال M، بالنسبة لبعض M الثابتة. قيمة M صغيرة بما يكفي مقارنة بالمبلغ الإجمالي المال في النظام، بحيث ينتمي احتمال المفتاح إلى مجموعة التحقق المكونة من أكثر من واحد خطوة - على سبيل المثال - جولات k لا تذكر. ثم المفتاح i \(\in\)PKr−k، يمتلك مبلغًا من المال a(r) أنا في الجولة r، تم اختياره لينتمي إلى SV r,s if .ح سيجي ص، ق، Qr−1 \(\geq\)ص \(\cdot\) أ(ص) أنا م . وكل العائدات كما كان من قبل. تنفيذ أكثر تعقيدًا التنفيذ الأخير "أجبر مشاركًا ثريًا في النظام على امتلاك العديد من المفاتيح". التنفيذ البديل، الموصوف أدناه، يعمم مفهوم الحالة والنظر يجب أن يتكون كل مستخدم i من نسخ K + 1 (i، v)، ويتم اختيار كل منها بشكل مستقل ليكون مدققًا، وسيمتلك مفتاحه المؤقت (pkr,s أنا، الخامس، skr، ق i,v) في خطوة s من الجولة r. تعتمد القيمة K على مبلغ من المال (ص) أنا مملوكة لـ i في الجولة r. دعونا الآن نرى كيف يعمل مثل هذا النظام بمزيد من التفصيل. عدد النسخ دع n هو الأصل المتوقع المستهدف لكل مجموعة متحقق، ودع a(r) أنا يكون مقدار المال الذي يملكه المستخدم i في الجولة r. دع Ar يكون المبلغ الإجمالي للأموال المملوكة بواسطة المستخدمين في PKr−k عند الجولة r، أي ع = X أنا\(\in\)P كر−ك أ (ص) أنا. إذا كنت مستخدمًا في PKr−k، فإن نسخ i هي (i, 1)، . . . ، (ط، ك + 1)، حيث ك = $ ن \(\cdot\) أ(ص) أنا آر % . مثال. دع n = 1,000، Ar = 109، وa(r) أنا = 3.7 مليون. ثم، ك = 103 \(\cdot\) (3.7 \(\cdot\) 106) 109 = ⌊3.7⌋= 3 . المدققون وبيانات الاعتماد دعني أكون مستخدمًا في PKr−k بنسخ K + 1. لكل v = 1، . . . ، K، نسخة (i، v) تنتمي إلى SV r،s تلقائيًا. وهذا يعني أن أوراق اعتمادي هي ص، ق i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1)، لكن الشرط المقابل يصبح .H(\(\sigma\)r,s ط، الخامس) \(\geq\)1، وهو صحيح دائما. بالنسبة للنسخة (i، K + 1)، لكل خطوة s من الجولة r، أقوم بالتحقق مما إذا كان .ح سيجي (i، K + 1)، r، s، Qr−1 \(\geq\)أ (ص) أنا ن ع -ك .
إذا كان الأمر كذلك، فإن النسخة (i, K + 1) تنتمي إلى SV r,s. لإثبات ذلك، أقوم بنشر بيانات الاعتماد ص،1 ط، ك + 1 = سيجي (i، K + 1)، r، s، Qr−1 . مثال. كما في المثال السابق، دع n = 1K، a(r) أنا = 3.7M، Ar = 1B، ولدي 4 النسخ: (ط، ١)، . . . ، (ط، 4). بعد ذلك، تعود النسخ الثلاث الأولى إلى SV r,s تلقائيًا. بالنسبة للرابعة، من الناحية النظرية، Algorand ′ تدحرج بشكل مستقل عملة متحيزة، والتي يكون احتمال ظهورها 0.7. نسخ يتم تحديد (i، 4) إذا وفقط إذا كانت رمية العملة هي الصورة. (وبطبيعة الحال، يتم تنفيذ هذا الوجه المتحيز للعملة عن طريق hashing، والتوقيع، والمقارنة - كما نحن لقد فعلت كل شيء في هذه الورقة - حتى أتمكن من إثبات نتائجه.) العمل كالمعتاد بعد أن شرحت كيفية اختيار المدققين وكيف تكون أوراق اعتمادهم يتم حسابه في كل خطوة من الجولة r، ويكون تنفيذ الجولة مشابهًا لما سبق شرحه.
Menangani Fork
Setelah mengurangi kemungkinan percabangan menjadi 10−12 atau 10−18, hal ini praktis tidak perlu ditangani mereka dalam kemungkinan kecil hal itu terjadi. Algorand, bagaimanapun, juga dapat menggunakan berbagai fork prosedur penyelesaian, dengan atau tanpa bukti kerja. Salah satu cara yang mungkin untuk menginstruksikan pengguna untuk menyelesaikan percabangan adalah sebagai berikut: • Ikuti rantai terpanjang jika pengguna melihat beberapa rantai. • Jika terdapat lebih dari satu rantai terpanjang, ikuti rantai yang tidak ada blok kosong di ujungnya. Jika semuanya memiliki blok kosong di akhir, pertimbangkan blok kedua terakhirnya. • Jika terdapat lebih dari satu rantai terpanjang dengan blok-blok kosong di ujungnya, katakanlah rantai tersebut adalah dengan panjang r, ikuti salah satu yang pemimpin blok r mempunyai kredensial terkecil. Jika ada ikatan, ikuti yang blok rnya sendiri memiliki nilai hash terkecil. Jika masih ada ikatan, ikuti yang blok rnya diurutkan pertama secara leksikografis.
التعامل مع الانقسامات
بعد تقليل احتمالية الشوكات إلى 10−12 أو 10−18، أصبح من غير الضروري عمليًا التعامل معها لهم في احتمال بعيد أن يحدث. ومع ذلك، يمكن لـ Algorand أيضًا استخدام شوكات مختلفة إجراءات الحل، مع أو بدون إثبات العمل. إحدى الطرق الممكنة لإرشاد المستخدمين لحل الشوكات هي كما يلي: • اتبع أطول سلسلة إذا رأى المستخدم سلاسل متعددة. • إذا كان هناك أكثر من سلسلة أطول، اتبع السلسلة التي تحتوي على كتلة غير فارغة في النهاية. إذا كل منهم لديه كتل فارغة في النهاية، والنظر في الكتل الثانية الأخيرة. • إذا كان هناك أكثر من سلسلة أطول مع كتل غير فارغة في النهاية، فلنفترض أن السلاسل موجودة من الطول r، اتبع الشخص الذي يمتلك قائد الكتلة r أصغر بيانات اعتماد. إذا كانت هناك روابط، اتبع الكتلة التي تحتوي كتلتها r نفسها على أصغر قيمة hash. إذا كان لا يزال هناك روابط، اتبع الشخص الذي تم ترتيب كتلته r أولاً من الناحية المعجمية.
Menangani Partisi Jaringan
Seperti yang dikatakan, kami berasumsi waktu propagasi pesan di antara semua pengguna di jaringan dibatasi oleh \(\lambda\) dan Λ. Ini bukanlah asumsi yang kuat, karena Internet saat ini cepat dan tangguh nilai sebenarnya dari parameter ini cukup masuk akal. Di sini, izinkan kami menunjukkan bahwa Algorand ′ 2 terus berfungsi meskipun Internet kadang-kadang dipartisi menjadi dua bagian. Kasus kapan Internet dipartisi menjadi lebih dari dua bagian serupa. 10.1 Partisi Fisik Pertama-tama, partisi tersebut mungkin disebabkan oleh alasan fisik. Misalnya, gempa bumi besar mungkin terjadi akhirnya memutuskan hubungan antara Eropa dan Amerika. Dalam hal ini, pengguna jahat juga dipartisi dan tidak ada komunikasi antara kedua bagian. Jadi
akan ada dua Musuh, satu untuk bagian 1 dan satu lagi untuk bagian 2. Masing-masing Musuh masih mencoba untuk melanggar protokol di bagiannya sendiri. Asumsikan partisi terjadi di tengah putaran r. Kemudian setiap pengguna masih dipilih sebagai a verifier berdasarkan PKr−k, dengan probabilitas yang sama seperti sebelumnya. Biarkan HSV r,s saya dan MSV r,s saya masing-masing jadilah himpunan pemverifikasi yang jujur dan jahat dalam langkah s di bagian i \(\in\){1, 2}. Kita punya |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. Perhatikan bahwa |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| < 2tH dengan kemungkinan yang sangat besar. Jika beberapa bagian saya memiliki |HSV r,s saya | + |MSV r,s saya | \(\geq\)tH dengan probabilitas yang tidak dapat diabaikan, misalnya 1%, maka probabilitas bahwa |HSV r,s 3−i| + |MSV r,s 3−i| \(\geq\)tH sangat rendah, misalnya 10−16 ketika F = 10−18. Dalam hal ini, sebaiknya kita menganggap bagian yang lebih kecil saja tidak berfungsi, karena tidak akan ada cukup verifikasi yang masuk bagian ini untuk menghasilkan tanda tangan untuk mengesahkan suatu blok. Mari kita pertimbangkan bagian yang lebih besar, katakanlah bagian 1 tanpa kehilangan sifat umum. Meskipun |HSV r,s| < tH dengan probabilitas yang dapat diabaikan di setiap langkah s, ketika jaringan dipartisi, |HSV r,s 1 | mungkin kurang dari tH dengan probabilitas yang tidak dapat diabaikan. Dalam hal ini Musuh mungkin, dengan beberapa pihak probabilitas lain yang tidak dapat diabaikan, memaksa protokol biner BA menjadi percabangan pada putaran r, dengan blok kosong Br dan blok kosong Br ǫ keduanya mempunyai tanda tangan yang sah.25 Misalnya, pada a Langkah Koin-Tetap-Ke-0, semua verifier di HSV r,s 1 ditandatangani untuk bit 0 dan H(Br), dan menyebarkannya pesan. Semua pemverifikasi di MSV r,s 1 juga menandatangani 0 dan H(Br), tetapi menahan pesan mereka. Karena |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tH, sistem mempunyai cukup tanda tangan untuk mengesahkan Br. Namun, sejak itu pemverifikasi jahat menahan tanda tangan mereka, pengguna memasukkan langkah s + 1, yang merupakan langkah Coin-Fixed-To1. Karena |HSV r,s 1 | < tH karena partisi, pemverifikasi di HSV r,s+1 1 tidak melihat itu tanda tangan untuk bit 0 dan semuanya menandatangani untuk bit 1. Semua verifier di MSV r,s+1 1 melakukan hal yang sama. Karena |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH, sistem mempunyai cukup tanda tangan untuk mengesahkan Br . Musuh kemudian membuat fork dengan melepaskan tanda tangan MSV r,s 1 untuk 0 dan H(Br). Oleh karena itu, akan ada dua Qr, yang ditentukan oleh blok-blok putaran r yang bersesuaian. Namun, percabangan tidak akan berlanjut dan hanya satu dari dua cabang yang dapat tumbuh pada putaran r + 1. Petunjuk Tambahan untuk Algorand ′ 2. Saat melihat blok Br yang tidak kosong dan kosong blok Br ǫ , ikuti yang tidak kosong (dan Qr yang ditentukan olehnya). Memang benar, dengan menginstruksikan pengguna untuk menggunakan blok yang tidak kosong dalam protokol, jika berukuran besar sejumlah pengguna jujur di PKr+1−k menyadari ada percabangan di awal putaran r +1, maka blok kosong tidak akan memiliki cukup pengikut dan tidak akan berkembang. Asumsikan Musuh berhasil melakukannya partisi pengguna yang jujur sehingga beberapa pengguna yang jujur melihat Br (dan mungkin Br ǫ), dan ada pula yang hanya melihat Sdr . Karena Musuh tidak bisa membedakan mana di antara mereka yang akan menjadi verifikasi setelah Br dan yang mana akan menjadi verifikator menyusul Sdr , pengguna yang jujur dipartisi secara acak dan masing-masing pengguna tetap menjadi verifikator (baik terhadap Br maupun terhadap Br ǫ) dalam satu langkah s > 1 dengan probabilitas hal. Untuk pengguna jahat, masing-masing dari mereka mungkin memiliki dua peluang untuk menjadi pemverifikasi, satu dengan Br dan satu lagi dengan Br ǫ, masing-masing dengan probabilitas p secara independen. Misalkan HSV r+1,s 1;Br jadilah himpunan verifikator yang jujur pada langkah s putaran r+1 setelah Br. Notasi lainnya seperti HSV r+1,s 1;Br, MSV r+1,s 1;Br dan MSV r+1,s 1;Br didefinisikan dengan cara yang sama. Dengan terikat Cherno, itu mudah 25Memiliki percabangan dengan dua blok yang tidak kosong tidak mungkin dilakukan dengan atau tanpa partisi, kecuali dengan partisi yang dapat diabaikan. kemungkinan.untuk melihatnya dengan kemungkinan yang sangat besar, |HSV r+1,s 1;Br | + |HSV r+1,s 1;Br| + |MSV r+1,s 1;Br | + |MSV r+1,s 1;Br| < 2tH. Oleh karena itu, kedua cabang tidak dapat memiliki tanda tangan yang tepat untuk mengesahkan blok untuk putaran r + 1 pada langkah yang sama s. Terlebih lagi, karena probabilitas seleksi untuk dua langkah s dan s′ adalah sama dan pilihannya independen, juga dengan kemungkinan yang sangat besar |HSV r+1,s 1;Br | + |MSV r+1,s 1;Br | + |HSV r+1,s′ 1;Br | + |MSV r+1,s′ 1;Br | < 2tH, untuk dua langkah s dan s′. Ketika F = 10−18, dengan ikatan gabungan, selama Musuh tidak bisa mempartisi pengguna yang jujur untuk waktu yang lama (katakanlah 104 langkah, yaitu lebih dari 55 jam dengan \(\lambda\) = 10 detik26), dengan probabilitas tinggi (katakanlah 1−10−10) paling banyak satu cabang akan memiliki tanda tangan yang tepat untuk mensertifikasi blok di putaran r + 1. Terakhir, jika partisi fisik telah membuat dua bagian dengan ukuran yang kira-kira sama, maka probabilitas bahwa |HSV r,s saya | + |MSV r,s saya | \(\geq\)tH kecil untuk setiap bagian i. Mengikuti analisis serupa, bahkan jika Musuh berhasil membuat percabangan dengan probabilitas yang tidak dapat diabaikan di setiap bagiannya untuk putaran r, paling banyak satu dari empat cabang dapat tumbuh pada putaran r + 1. 10.2 Partisi Musuh Kedua, partisi tersebut mungkin disebabkan oleh Musuh, sehingga pesan disebarkan oleh pengguna jujur di satu bagian tidak akan menjangkau pengguna jujur di bagian lain secara langsung, namun Musuh mampu meneruskan pesan antara dua bagian. Tetap saja, pernah ada pesan dari seseorang bagian mencapai pengguna yang jujur di bagian lain, itu akan disebarkan di pengguna yang jujur seperti biasa. Jika Musuh rela mengeluarkan banyak uang, bisa dibayangkan dia bisa meretasnya Internet dan partisi seperti ini untuk sementara waktu. Analisisnya mirip dengan bagian yang lebih besar pada partisi fisik di atas (yang lebih kecil bagian dapat dianggap memiliki populasi 0): Musuh mungkin dapat membuat garpu dan setiap pengguna yang jujur hanya melihat satu cabang, tetapi paling banyak satu cabang dapat tumbuh. 10.3 Partisi Jaringan dalam Jumlah Meskipun partisi jaringan dapat terjadi dan percabangan dalam satu putaran dapat terjadi di bawah partisi, namun demikian tidak ada ambiguitas yang tersisa: sebuah garpu berumur sangat pendek, dan pada kenyataannya hanya bertahan paling banyak satu putaran. Di semua bagian partisi kecuali paling banyak satu, pengguna tidak dapat membuat blok baru dan karenanya (a) menyadari adanya partisi dalam jaringan dan (b) jangan pernah mengandalkan blok yang akan “hilang”. Ucapan Terima Kasih Pertama-tama kami ingin mengucapkan terima kasih kepada Sergey Gorbunov, salah satu penulis sistem Democoin yang dikutip. Terima kasih yang paling tulus kami sampaikan kepada Maurice Herlihy, atas banyak diskusi yang mencerahkan, atas petunjuknya mengetahui bahwa pipeline akan meningkatkan kinerja throughput Algorand, dan untuk meningkatkan secara signifikan 26Perhatikan bahwa pengguna menyelesaikan langkah tanpa menunggu 2\(\lambda\) waktu hanya jika dia telah melihat setidaknya tanda tangan untuk pesan yang sama. Jika tanda tangan tidak mencukupi, setiap langkah akan berlangsung selama 2\(\lambda\) kali.
eksposisi versi sebelumnya dari makalah ini. Terima kasih banyak kepada Sergio Rajsbaum, atas komentarnya versi sebelumnya dari makalah ini. Terima kasih banyak kepada Vinod Vaikuntanathan, atas beberapa diskusi mendalam dan wawasan. Terima kasih banyak kepada Yossi Gilad, Rotem Hamo, Georgios Vlachos, dan Nickolai Zeldovich untuk mulai menguji ide-ide ini, dan untuk banyak komentar dan diskusi yang bermanfaat. Silvio Micali secara pribadi ingin mengucapkan terima kasih kepada Ron Rivest atas diskusi dan bimbingannya yang tak terhitung jumlahnya dalam penelitian kriptografi selama lebih dari 3 dekade, karena ikut menulis sistem pembayaran mikro yang dikutip yang menginspirasi salah satu mekanisme seleksi verifikator Algorand. Kami berharap dapat membawa teknologi ini ke tingkat berikutnya. Sementara itu perjalanan dan persahabatan sangat menyenangkan, dan kami sangat berterima kasih.
التعامل مع أقسام الشبكة
وكما قلنا، فإننا نفترض أن أوقات انتشار الرسائل بين جميع المستخدمين في الشبكة محددة بـ lect وΛ. وهذا ليس افتراضًا قويًا، حيث أن الإنترنت اليوم سريع وقوي القيم الفعلية لهذه المعلمات معقولة جدًا. وهنا دعونا نشير إلى أن Algorand ′ 2 يستمر في العمل حتى لو تم تقسيم الإنترنت أحيانًا إلى قسمين. الحالة عندما يتم تقسيم الإنترنت إلى أكثر من قسمين متشابهين. 10.1 الأقسام المادية بادئ ذي بدء، قد يكون سبب التقسيم لأسباب مادية. على سبيل المثال، قد يحدث زلزال ضخم وينتهي الأمر بكسر كامل للعلاقة بين أوروبا وأمريكا. في هذه الحالة، يتم أيضًا تقسيم المستخدمين الضارين ولا يوجد اتصال بين الجزأين. هكذا
سيكون هناك خصمان، أحدهما للجزء الأول والآخر للجزء الثاني. ولا يزال كل خصم يحاول كسر البروتوكول في الجزء الخاص به. افترض أن القسم يحدث في منتصف الجولة r. ثم لا يزال يتم تحديد كل مستخدم باعتباره المدقق على أساس PKr−k، مع نفس الاحتمال كما كان من قبل. دع HSV r،s أنا وMSV ص، ق أنا على التوالي كن مجموعة من المحققين الصادقين والخبثاء في خطوة من الجزء i \(\in\){1, 2}. لدينا |HSV ص، ق 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. لاحظ أن |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| < 2tH مع احتمالية ساحقة. إذا كان لدي جزء ما |HSV r,s أنا | + |MSV r,s أنا | \(\geq\)tH باحتمال لا يُذكر، على سبيل المثال، 1%، ثم احتمال أن |HSV r,s 3−ط| + |MSV r,s 3−ط| \(\geq\)tH منخفض جدًا، على سبيل المثال، 10−16 عندما F = 10−18. في هذه الحالة، ومن الأفضل أن نتعامل مع الجزء الأصغر على أنه غير متصل بالإنترنت، لأنه لن يكون هناك ما يكفي من المحققين هذا الجزء لإنشاء التوقيعات للتصديق على الكتلة. دعونا نفكر في الجزء الأكبر، مثلًا الجزء الأول دون فقدان العمومية. بالرغم من أن |HSV r,s| < tH مع احتمال ضئيل في كل خطوة s، عندما يتم تقسيم الشبكة، |HSV r,s 1 | قد يكون أقل من tH مع بعض الاحتمال غير المهمل. في هذه الحالة يجوز للخصم مع البعض احتمال آخر لا يستهان به، فرض بروتوكول BA الثنائي في شوكة في الجولة r، مع كتلة غير فارغة Br وكتلة فارغة Br ƒ كلاهما له توقيعان صالحان.25 على سبيل المثال، في أ خطوات العملة الثابتة إلى 0، جميع أدوات التحقق في HSV r,s 1 تم التوقيع على البت 0 وH(Br)، ونشرهما الرسائل. جميع أدوات التحقق في MSV r,s 1 وقعوا أيضًا على 0 وH(Br)، لكنهم حجبت رسائلهم. لان |HSV ص، ق 1 | + |MSV r,s 1 | \(\geq\)tH، يحتوي النظام على توقيعات كافية لاعتماد Br. ومع ذلك، منذ قامت أدوات التحقق الخبيثة بحجب توقيعاتهم، وقام المستخدمون بإدخال الخطوة s + 1، وهي خطوة "عملة ثابتة إلى 1". لأن |HSV r,s 1 | < tH بسبب القسم، المدققون في HSV r,s+1 1 لم أرى ال التوقيعات للبت 0 وجميعهم وقعوا للبت 1. جميع المدققين في MSV r,s+1 1 فعلت نفس الشيء. لان |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH، يحتوي النظام على توقيعات كافية لاعتماد Br ƒ. الخصم ثم يقوم بإنشاء شوكة عن طريق تحرير توقيعات MSV r,s 1 ل0 وH(Br). وبناء على ذلك، سيكون هناك اثنان من Qr، محددين بالكتل المقابلة من الجولة r. ومع ذلك، لن تستمر الشوكة وقد ينمو فرع واحد فقط في جولة r + 1. تعليمات إضافية لـ Algorand ′ 2. عند رؤية كتلة غير فارغة Br والفارغة كتلة ر ƒ ، اتبع غير الفارغ (والقر المعرف به). في الواقع، من خلال توجيه المستخدمين إلى استخدام الكتلة غير الفارغة في البروتوكول، إذا كانت كبيرة يدرك عدد من المستخدمين الصادقين في PKr+1−k أن هناك شوكة في بداية الجولة r +1، ثم لن تحتوي الكتلة الفارغة على عدد كافٍ من المتابعين ولن تنمو. افترض أن الخصم تمكن من ذلك قم بتقسيم المستخدمين الصادقين بحيث يرى بعض المستخدمين الصادقين Br (وربما Br ƒ)، والبعض يرى فقط ر ƒ. لأن الخصم لا يستطيع معرفة أي واحد منهم سيكون المدقق الذي يتبع Br وأي منهم سيكون المدقق يتبع Br ƒ، يتم تقسيم المستخدمين الصادقين عشوائيًا ولا يزال كل واحد منهم على حاله يصبح مدققًا (إما فيما يتعلق بـ Br أو فيما يتعلق بـ Br ƒ) في الخطوة s > 1 مع الاحتمال ص. بالنسبة للمستخدمين الضارين، قد يكون لكل واحد منهم فرصتان ليصبح مدققًا، إحداهما Br والآخر مع Br ƒ، كل منها باحتمال p بشكل مستقل. دع HSV r+1,s 1;ر كن مجموعة المتحققين الصادقين في خطوات الجولة r+1 التالية لـ Br. تدوينات أخرى مثل HSV r+1,s 1؛Br، MSV r+1,s 1;ر وMSV r+1,s 1;Br يتم تعريفها بالمثل. من خلال تشيرنوفابوند، الأمر سهل 25. لا يجوز وجود شوكة ذات كتلتين غير فارغتين بفواصل أو بدونها، إلا مع القليل الاحتمالية.لنرى ذلك باحتمالية ساحقة، |HSV r+1,s 1;ر | + |HSV r+1,s 1;ب | + |MSV r+1,s 1;ر | + |MSV r+1,s 1;ب | <2ث. وبناء على ذلك، لا يمكن أن يكون لدى كلا الفرعين التوقيعات الصحيحة التي تثبت كتلة الجولة r + 1 في نفس الخطوة s. علاوة على ذلك، بما أن احتمالات الاختيار للخطوتين s وs' هي نفسه والاختيارات مستقلة، وأيضًا ذات احتمالية ساحقة |HSV r+1,s 1;ر | + |MSV r+1,s 1;ر | + |HSV r+1,s' 1;Br | + |MSV r+1,s' 1;Br | <2ث، لأي خطوتين s و s′. عندما يكون F = 10−18، من خلال الاتحاد المقيد، طالما أن الخصم لا يستطيع ذلك تقسيم المستخدمين الصادقين لفترة طويلة (على سبيل المثال 104 خطوة، أي أكثر من 55 ساعة مع 10 = 10) ثواني 26)، مع احتمال كبير (على سبيل المثال 1−10−10) على الأكثر فرع واحد سيكون له التوقيعات الصحيحة للتصديق على كتلة في الجولة ص + 1. أخيرًا، إذا كان القسم الفعلي قد أنشأ جزأين بنفس الحجم تقريبًا، فإن احتمال أن |HSV r,s أنا | + |MSV r,s أنا | \(\geq\)tH صغير لكل جزء i. وبعد تحليل مماثل، حتى لو تمكن الخصم من إنشاء شوكة مع بعض الاحتمالية التي لا يمكن إهمالها في كل جزء بالنسبة للجولة r، قد ينمو أحد الفروع الأربعة على الأكثر في الجولة r + 1. 10.2 التقسيم العدائي ثانيًا، قد يكون سبب التقسيم هو الخصم، بحيث يتم نشر الرسائل من قبل المستخدمين الصادقين في جزء واحد لن يصل إلى المستخدمين الصادقين في الجزء الآخر بشكل مباشر، ولكن الخصم قادر على إعادة توجيه الرسائل بين الجزأين. لا يزال, مرة واحدة رسالة من واحد يصل الجزء إلى مستخدم صادق في الجزء الآخر، وسيتم نشره في الأخير كالمعتاد. إذا الخصم على استعداد لإنفاق الكثير من المال، ومن المتصور أنه قد يكون قادرًا على اختراق الإنترنت وتقسيمه هكذا لفترة من الوقت. التحليل مشابه للجزء الأكبر في القسم المادي أعلاه (الأصغر يمكن اعتبار الجزء أن عدد سكانه 0): قد يكون الخصم قادرًا على إنشاء شوكة و يرى كل مستخدم صادق فرعًا واحدًا فقط، ولكن قد ينمو فرع واحد على الأكثر. 10.3 أقسام الشبكة في المجموع على الرغم من أن أقسام الشبكة يمكن أن تحدث وقد يحدث شوكة في جولة واحدة تحت الأقسام، إلا أن هناك لا يوجد أي غموض طويل الأمد: فالشوكة قصيرة العمر للغاية، وفي الواقع تدوم لجولة واحدة على الأكثر. في جميع أجزاء القسم باستثناء جزء واحد على الأكثر، لا يمكن للمستخدمين إنشاء كتلة جديدة وبالتالي (أ) إدراك وجود قسم في الشبكة و (ب) عدم الاعتماد مطلقًا على الكتل التي "ستختفي". شكر وتقدير نود أن نشكر أولاً سيرجي جوربونوف، المؤلف المشارك لنظام Democoin المذكور. خالص الشكر لموريس هيرليهي، على العديد من المناقشات المفيدة، وعلى الإشارة من أن خطوط الأنابيب ستعمل على تحسين أداء إنتاجية Algorand، ولتحسين كبير في 26لاحظ أن المستخدم ينهي الخطوة دون الانتظار لمدة 2\(\times\) فقط إذا كان قد رأى على الأقل التوقيعات الخاصة بالـ نفس الرسالة. عندما لا يكون هناك ما يكفي من التوقيعات، ستستمر كل خطوة لمدة 2\(\times\).
عرض لنسخة سابقة من هذه الورقة. شكرا جزيلا لسيرجيو راكسبوم، لتعليقاته على نسخة سابقة من هذه الورقة. شكرًا جزيلاً لفينود فايكونتاناثان على العديد من المناقشات العميقة والرؤى. جزيل الشكر ليوسي جلعاد، روتم حمو، جورجيوس فلاشوس، ونيكولاي زيلدوفيتش للبدء في اختبار هذه الأفكار، وللحصول على العديد من التعليقات والمناقشات المفيدة. يود سيلفيو ميكالي أن يشكر شخصيًا رون ريفست على المناقشات والإرشادات التي لا حصر لها في أبحاث التشفير على مدى أكثر من ثلاثة عقود، لمشاركته في تأليف نظام الدفع الصغير المذكور التي ألهمت إحدى آليات اختيار المدقق في Algorand. ونأمل أن ننقل هذه التكنولوجيا إلى المستوى التالي. وفي الوقت نفسه السفر والرفقة هي متعة كبيرة، ونحن ممتنون للغاية لها.