Algorand: Ampliando Acordos Bizantinos para Criptomoedas
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.
Resumo
Um livro-razão público é uma sequência de dados inviolável que pode ser lida e aumentada por qualquer pessoa. Os livros-razão públicos têm usos inúmeros e atraentes. Eles podem proteger, à vista de todos, todos os tipos de transações —como títulos, vendas e pagamentos— na ordem exata em que ocorrem. Os livros-razão públicos não apenas reduzem a corrupção, mas também permitem aplicações muito sofisticadas — como criptomoedas e smart contracts. Eles irão revolucionar a forma como uma sociedade democrática opera. No entanto, tal como estão actualmente implementados, eles têm uma fraca escalabilidade e não conseguem atingir o seu potencial. Algorand é uma forma verdadeiramente democrática e eficiente de implementar um livro-razão público. Ao contrário do anterior implementações baseadas em prova de trabalho, requer uma quantidade insignificante de computação e gera um histórico de transações que não será “fork” com probabilidade extremamente alta. Algorand é baseado em um acordo bizantino de transmissão de mensagens (novo e super rápido). Para ser mais concreto, descreveremos Algorand apenas como uma plataforma monetária.
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.
Introdução
O dinheiro está se tornando cada vez mais virtual. Estima-se que cerca de 80% dos Estados Unidos dólares hoje existem apenas como entradas contábeis [5]. Outros instrumentos financeiros estão a seguir o exemplo. Num mundo ideal, em que pudéssemos contar com uma entidade central de confiança universal, imunes a todos os ataques cibernéticos possíveis, o dinheiro e outras transações financeiras poderiam ser exclusivamente eletrónicas. Infelizmente, não vivemos num mundo assim. Conseqüentemente, criptomoedas descentralizadas, como como Bitcoin [29], e sistemas “smart contract”, como Ethereum, foram propostos [4]. Em o coração desses sistemas é um livro-razão compartilhado que registra de forma confiável uma sequência de transações, ∗Esta é a versão mais formal (e assíncrona) do artigo ArXiv do segundo autor [24], um artigo em si baseado no de Gorbunov e Micali [18]. As tecnologias de Algorand são objeto do seguinte pedidos de patente: 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.931tão variados quanto pagamentos e contratos, de forma inviolável. A tecnologia escolhida para garantir tal inviolabilidade é o blockchain. Blockchains estão por trás de aplicativos como criptomoedas [29], aplicações financeiras [4] e Internet das Coisas [3]. Várias técnicas para gerenciar livros contábeis baseados em blockchain foram propostos: prova de trabalho [29], prova de aposta [2], tolerância prática a falhas bizantinas [8], ou alguma combinação. Atualmente, no entanto, os livros contábeis podem ser ineficientes de gerenciar. Por exemplo, Bitcoin de proof-of-work abordagem (baseada no conceito original de [14]) requer uma grande quantidade de computação, é um desperdício e escala mal [1]. Além disso, concentra de facto o poder em muito poucas mãos. Desejamos, portanto, propor um novo método para implementar um livro público que ofereça a conveniência e eficiência de um sistema centralizado administrado por uma autoridade confiável e inviolável, sem as ineficiências e fraquezas das atuais implementações descentralizadas. Chamamos nossa abordagem Algorand, porque usamos aleatoriedade algorítmica para selecionar, com base no livro-razão construído até agora, um conjunto de verificadores encarregados de construir o próximo bloco de transações válidas. Naturalmente, garantimos que tais seleções sejam comprovadamente imunes a manipulações e imprevisíveis até no último minuto, mas também que, em última análise, sejam universalmente claros. A abordagem de Algorand é bastante democrática, no sentido de que nem em princípio nem de facto cria diferentes classes de usuários (como “mineradores” e “usuários comuns” em Bitcoin). Em Algorand “todos o poder reside no conjunto de todos os usuários”. Uma propriedade notável de Algorand é que seu histórico de transações pode bifurcar-se apenas com valores muito pequenos probabilidade (por exemplo, um em um trilhão, isto é, ou mesmo 10-18). Algorand também pode abordar algumas questões legais e preocupações políticas. A abordagem Algorand aplica-se a blockchains e, mais geralmente, a qualquer método de geração uma sequência de blocos inviolável. Na verdade, propusemos um novo método - alternativo e mais eficiente do que blockchains— que pode ser de interesse independente. 1.1 Suposição e problemas técnicos de Bitcoin Bitcoin é um sistema muito engenhoso e inspirou muitas pesquisas subsequentes. Ainda assim, também é problemático. Vamos resumir a sua suposição subjacente e os problemas técnicos - que na verdade, são compartilhados por essencialmente todas as criptomoedas que, como Bitcoin, são baseadas em proof-of-work. Para este resumo, basta lembrar que, em Bitcoin, um usuário pode possuir múltiplas chaves públicas de um esquema de assinatura digital, que o dinheiro está associado a chaves públicas e que um pagamento é um assinatura digital que transfere alguma quantia de dinheiro de uma chave pública para outra. Essencialmente, Bitcoin organiza todos os pagamentos processados em uma cadeia de blocos, B1, B2, . . ., cada um consistindo de múltiplos pagamentos, de modo que todos os pagamentos de B1, efetuados em qualquer ordem, seguidos pelos de B2, em qualquer ordem, etc., constituem uma sequência de pagamentos válidos. Cada bloco é gerado, em média, a cada 10 minutos. Esta sequência de blocos é uma cadeia, pois está estruturada de forma a garantir que qualquer alteração, mesmo em um único bloco, se infiltra em todos os blocos subsequentes, facilitando a detecção de qualquer alteração de o histórico de pagamentos. (Como veremos, isto é conseguido incluindo em cada bloco um código criptográfico hash do anterior.) Essa estrutura de bloco é referida como blockchain. Suposição: Maioria Honesta do Poder Computacional Bitcoin assume que nenhum mal-intencionado entidade (nem uma coalizão de entidades maliciosas coordenadas) controla a maioria dos recursos computacionais poder dedicado à geração de blocos. Tal entidade, de fato, seria capaz de modificar o blockchain,e assim reescrever o histórico de pagamentos, como desejar. Em particular, poderia fazer um pagamento \(\wp\), obter os benefícios pagos e então “apagar” qualquer vestígio de \(\wp\). Problema Técnico 1: Resíduos Computacionais Abordagem de Bitcoin proof-of-work para bloquear a geração requer uma quantidade extraordinária de computação. Atualmente, com apenas algumas centenas milhares de chaves públicas no sistema, os 500 supercomputadores mais poderosos só conseguem reunir apenas 12,8% do poder computacional total exigido dos jogadores Bitcoin. Isto a quantidade de computação aumentaria muito, caso um número significativamente maior de usuários ingressasse no sistema. Problema Técnico 2: Concentração de Poder Hoje, devido à quantidade exorbitante de cálculo necessário, um usuário, tentando gerar um novo bloco usando um desktop comum (sem falar em um celular), espera perder dinheiro. Na verdade, para calcular um novo bloco com um computador comum, o custo esperado da eletricidade necessária para alimentar o cálculo excede a recompensa esperada. Somente usando pools de computadores especialmente construídos (que não fazem nada além de “minerar novos blocos”), pode-se pode esperar obter lucro gerando novos blocos. Assim, hoje existem, de facto, dois classes distintas de usuários: usuários comuns, que apenas fazem pagamentos, e pools de mineração especializados, que apenas procuram novos blocos. Portanto, não deveria ser surpresa que, recentemente, o poder computacional total para blocos geração está dentro de apenas cinco grupos. Nessas condições, a suposição de que a maioria dos o poder computacional é honesto torna-se menos credível. Problema Técnico 3: Ambiguidade Em Bitcoin, blockchain não é necessariamente único. Na verdade sua última parte frequentemente se bifurca: o blockchain pode ser —digamos— B1, . . . , Bk, B' k+1, B′ k+2, de acordo com um usuário e B1, . . . , Bk, B'' k+1, B'' k+2, B'' k+3 de acordo com outro usuário. Somente depois de vários blocos terem sido adicionado à cadeia, podemos ter certeza razoável de que os primeiros k + 3 blocos serão os mesmos para todos os usuários. Assim, não se pode confiar desde já nos pagamentos contidos no último bloco de a corrente. É mais prudente esperar e ver se o bloco se torna suficientemente profundo no blockchain e, portanto, suficientemente estável. Separadamente, também foram levantadas preocupações de aplicação da lei e de política monetária sobre Bitcoin.1 1.2 Algorand, em poucas palavras Configuração Algorand funciona em ambientes muito difíceis. Resumidamente, (a) Ambientes sem permissão e com permissão. Algorand funciona de forma eficiente e segura, mesmo em um ambiente totalmente sem permissão, onde muitos usuários podem ingressar arbitrariamente no sistema a qualquer momento, sem qualquer verificação ou permissão de qualquer tipo. Claro, Algorand funciona ainda melhor em um ambiente permitido. 1O (pseudo) anonimato oferecido pelos pagamentos Bitcoin pode ser utilizado indevidamente para lavagem de dinheiro e/ou financiamento de indivíduos criminosos ou organizações terroristas. Notas tradicionais ou barras de ouro, que em princípio oferecem perfeita anonimato, deveriam representar o mesmo desafio, mas a fisicalidade destas moedas desacelera substancialmente o fluxo de dinheiro transferências, de modo a permitir algum grau de monitorização por parte das agências de aplicação da lei. A capacidade de “imprimir dinheiro” é um dos poderes básicos de um Estado-nação. Em princípio, portanto, a enorme a adopção de uma moeda flutuante independente pode restringir este poder. Atualmente, porém, Bitcoin está longe de ser uma ameaça às políticas monetárias governamentais e, devido aos seus problemas de escalabilidade, poderá nunca o ser.(b) Ambientes muito adversários. Algorand resiste a um Adversário muito poderoso, que pode (1) corromper instantaneamente qualquer usuário que desejar, a qualquer momento que desejar, desde que, de forma ambiente sem permissão, 2/3 do dinheiro do sistema pertence ao usuário honesto. (Em um ambiente permitido, independentemente do dinheiro, basta que 2/3 dos usuários sejam honestos.) (2) controlar totalmente e coordenar perfeitamente todos os usuários corrompidos; e (3) programar a entrega de todas as mensagens, desde que cada mensagem seja enviada por um usuário honesto atinge 95% dos usuários honestos dentro de um tempo \(\lambda\)m, que depende apenas do tamanho de m. Propriedades Principais Apesar da presença do nosso poderoso adversário, em Algorand • A quantidade de cálculo necessária é mínima. Essencialmente, não importa quantos usuários estejam presente no sistema, cada um dos mil e quinhentos usuários deve realizar no máximo alguns segundos de computação. • Um novo bloco é gerado em menos de 10 minutos e, de fato, nunca sairá do blockchain. Por exemplo, na expectativa, o tempo para gerar um bloco na primeira modalidade é menor do que Λ + 12,4\(\lambda\), onde Λ é o tempo necessário para propagar um bloco, em uma fofoca ponto a ponto moda, não importa o tamanho do bloco escolhido, e \(\lambda\) é o tempo para propagar 1.500 mensagens de 200Blong. (Uma vez que num sistema verdadeiramente descentralizado, Λ é essencialmente uma latência intrínseca, em Algorand o fator limitante na geração de blocos é a velocidade da rede.) A segunda modalidade tem na verdade foi testado experimentalmente ( por ?), indicando que um bloco é gerado em menos de 40 segundos. Além disso, blockchain de Algorand pode bifurcar apenas com probabilidade insignificante (ou seja, menos de um em um trilhão), e assim os usuários podem contar com os pagamentos contidos em um novo bloco assim que o bloco aparece. • Todo o poder reside nos próprios usuários. Algorand é um sistema verdadeiramente distribuído. Em particular, não existem entidades exógenas (como os “mineradores” em Bitcoin), que podem controlar quais transações são reconhecidos. Técnicas de Algorand. 1. Um novo e rápido protocolo de acordo bizantino. Algorand gera um novo bloco via um novo protocolo de acordo bizantino (BA) binário, criptográfico e de passagem de mensagens, BA⋆. Protocolo BA⋆não apenas satisfaz algumas propriedades adicionais (que discutiremos em breve), mas também é muito rápido. Grosso modo, sua versão de entrada binária consiste em um loop de 3 etapas, no qual um jogador i envia um único mensagem mi para todos os outros jogadores. Executado em rede completa e síncrona, com mais mais de 2/3 dos jogadores sendo honestos, com probabilidade > 1/3, após cada loop o protocolo termina em acordo. (Enfatizamos que o protocolo BA⋆ satisfaz a definição original do acordo bizantino de Pease, Shostak e Lamport [31], sem quaisquer enfraquecimentos.) Algorand aproveita este protocolo BA binário para chegar a um acordo, em nossas diferentes comunicações modelo, em cada novo bloco. O bloco acordado é então certificado, através de um número prescrito de assinatura digital dos verificadores apropriados e propagada pela rede. 2. Classificação criptográfica. Embora muito rápido, o protocolo BA⋆ se beneficiaria com mais velocidade quando jogado por milhões de usuários. Assim, Algorand escolhe os jogadores da BA⋆para seremum subconjunto muito menor do conjunto de todos os usuários. Para evitar um tipo diferente de concentração de poder problema, cada novo bloco Br será construído e acordado, através de uma nova execução de BA⋆, por um conjunto separado de verificadores selecionados, SV r. Em princípio, selecionar tal conjunto pode ser tão difícil quanto selecionando Br diretamente. Atravessamos este problema potencial através de uma abordagem que denominamos, abrangendo a sugestão perspicaz de Maurice Herlihy, classificação criptográfica. Sortição é a prática de selecionar funcionários aleatoriamente de um grande conjunto de indivíduos elegíveis [6]. (A classificação foi praticada ao longo dos séculos: por exemplo, pelas repúblicas de Atenas, Florença e Veneza. No sistema judicial moderno sistemas, a seleção aleatória é frequentemente usada para escolher os júris. A amostragem aleatória também foi recentemente defendido para as eleições por David Chaum [9].) Num sistema descentralizado, é claro, escolher o moedas aleatórias necessárias para selecionar aleatoriamente os membros de cada conjunto de verificadores SV r é problemático. Recorremos assim à criptografia para selecionar cada conjunto de verificadores, da população de todos os usuários, de uma forma garantidamente automática (ou seja, sem necessidade de troca de mensagens) e aleatória. Em essência, usamos uma função criptográfica para determinar automaticamente, a partir do bloco anterior Br−1, um usuário, o líder, encarregado de propor o novo bloco Br, e o conjunto verificador SV r, em cobrar para chegar a um acordo sobre o bloco proposto pelo líder. Como usuários mal-intencionados podem afetar composição de Br−1 (por exemplo, escolhendo alguns de seus pagamentos), construímos e usamos especialmente entradas adicionais para provar que o líder do r-ésimo bloco e o conjunto verificador SV r são de fato escolhido aleatoriamente. 3. A Quantidade (Semente) Qr. Usamos o último bloco Br−1 em blockchain para determinar automaticamente o próximo conjunto de verificadores e líder responsável pela construção do novo bloco Ir. O desafio desta abordagem é que, ao escolher apenas um pagamento ligeiramente diferente no rodada anterior, nosso poderoso Adversário ganha um tremendo controle sobre o próximo líder. Mesmo que ele controlava apenas 1/1000 dos jogadores/dinheiro no sistema, ele poderia garantir que todos os líderes fossem malicioso. (Veja a Seção Intuição 4.1.) Este desafio é central para todas as abordagens proof-of-stake, e, tanto quanto sabemos, não foi, até agora, resolvido de forma satisfatória. Para enfrentar esse desafio, construímos propositalmente e atualizamos continuamente um relatório separado e cuidadosamente quantidade definida, Qr, que provavelmente é, não apenas imprevisível, mas também não influenciável, pelos nossos adversário poderoso. Podemos nos referir a Qr como a r-ésima semente, pois é de Qr que Algorand seleciona, através de triagem criptográfica secreta, todos os usuários que desempenharão um papel especial na geração do quarto bloco. 4. Classificação criptográfica secreta e credenciais secretas. Usando de forma aleatória e inequívoca o último bloco atual, Br−1, para escolher o conjunto de verificadores e o líder responsável da construção do novo bloco, Br, não é suficiente. Como Br−1 deve ser conhecido antes de gerar Br, a última quantidade não-influenciável Qr−1 contida em Br−1 também deve ser conhecida. Assim, então são os verificadores e o líder encarregados de calcular o bloco Br. Assim, nosso poderoso Adversário pode corromper imediatamente todos eles, antes que se envolvam em qualquer discussão sobre Br, de modo a obter controle total sobre o bloco que certificam. Para evitar este problema, os líderes (e também os verificadores) aprendem secretamente sobre o seu papel, mas podem computar uma credencial adequada, capaz de provar a todos que de fato desempenham esse papel. Quando um usuário percebe secretamente que ele é o líder do próximo bloco, primeiro ele monta secretamente seu próprio novo bloco proposto e, em seguida, divulga-o (para que possa ser certificado) juntamente com o seu próprio credencial. Desta forma, embora o Adversário perceba imediatamente quem é o líder do próximo bloco é, e embora ele possa corrompê-lo imediatamente, será tarde demais para o Adversário influenciar a escolha de um novo bloco. Na verdade, ele não pode mais “revogar” a mensagem do líderdo que um governo poderoso pode colocar de volta na garrafa uma mensagem espalhada de forma viral pelo WikiLeaks. Como veremos, não podemos garantir a singularidade do líder, nem que todos tenham certeza de quem é o líder. é, incluindo o próprio líder! Mas, em Algorand, um progresso inequívoco será garantido. 5. Substituibilidade do Jogador. Depois de propor um novo bloco, o líder pode muito bem “morrer” (ou ser corrompido pelo Adversário), porque seu trabalho está cumprido. Mas, para os verificadores em SV r, as coisas são menos simples. Com efeito, estando encarregado de certificar o novo bloco Br com um número suficiente de assinaturas, eles devem primeiro conseguir um acordo bizantino sobre o bloco proposto pelo líder. O problema é que, não importa quão eficiente seja, BA⋆requer múltiplas etapas e a honestidade de > 2/3 de seus jogadores. Isto é um problema porque, por razões de eficiência, o conjunto de jogadores de BA⋆consiste no pequeno conjunto SV r selecionado aleatoriamente entre o conjunto de todos os usuários. Assim, o nosso poderoso Adversário, embora incapaz de corromper 1/3 de todos os usuários, certamente pode corromper todos os membros do SV r! Felizmente provaremos que o protocolo BA⋆, executado pela propagação de mensagens ponto a ponto, é substituível pelo jogador. Este novo requisito significa que o protocolo corretamente e atinge consenso de forma eficiente, mesmo que cada uma de suas etapas seja executada por um método totalmente novo e aleatório. e conjunto de jogadores selecionados independentemente. Assim, com milhões de usuários, cada pequeno conjunto de jogadores associado a um passo de BA⋆provavelmente possui interseção vazia com o próximo conjunto. Além disso, os conjuntos de jogadores de diferentes etapas do BA⋆provavelmente terão cardinalidades. Além disso, os membros de cada conjunto não sabem quem será o próximo conjunto de jogadores. ser, e não passar secretamente por nenhum estado interno. A propriedade do jogador substituível é realmente crucial para derrotar o dinâmico e muito poderoso Adversário que imaginamos. Acreditamos que os protocolos de jogadores substituíveis serão cruciais em muitos contextos e aplicações. Em particular, eles serão cruciais para executar pequenos subprotocolos com segurança inserido em um universo maior de jogadores com um adversário dinâmico, que, sendo capaz de corromper até mesmo uma pequena fração do total de jogadores, não tem dificuldade em corromper todos os jogadores no menor subprotocolo. Uma propriedade/técnica adicional: honestidade preguiçosa Um usuário honesto segue o que lhe foi prescrito instruções, que incluem estar online e executar o protocolo. Desde então, Algorand tem apenas modesto exigência de computação e comunicação, estar online e rodando o protocolo “no histórico” não é um grande sacrifício. Claro, algumas “ausências” entre jogadores honestos, como aqueles devido à perda repentina de conectividade ou à necessidade de reinicialização, são automaticamente tolerados (porque sempre podemos considerar esses poucos jogadores como temporariamente maliciosos). Destaquemos, porém, que Algorand pode ser simplesmente adaptado para funcionar em um novo modelo, no qual usuários honestos sejam off-line na maior parte do tempo. Nosso novo modelo pode ser apresentado informalmente da seguinte maneira. Honestidade preguiçosa. Grosso modo, um usuário i é preguiçoso, mas honesto se (1) seguir todas as instruções prescritas. instruções, quando ele for solicitado a participar do protocolo, e (2) ele for solicitado a participar ao protocolo apenas raramente e com um aviso prévio adequado. Com uma noção tão relaxada de honestidade, podemos estar ainda mais confiantes de que as pessoas honestas serão à mão quando precisarmos deles, e Algorand garantimos que, quando for o caso, O sistema funciona de forma segura mesmo que, num determinado momento, a maioria dos jogadores participantes são maliciosos.1.3 Trabalho intimamente relacionado As abordagens de prova de trabalho (como as citadas [29] e [4]) são bastante ortogonais às nossas. Assim são os abordagens baseadas no acordo bizantino de passagem de mensagens ou na tolerância prática a falhas bizantinas (como o citado [8]). Na verdade, estes protocolos não podem ser executados entre o conjunto de todos os utilizadores e não podem, em nosso modelo, fique restrito a um conjunto adequadamente pequeno de usuários. Na verdade, nosso poderoso adversário, meu corromper imediatamente todos os usuários envolvidos em um pequeno conjunto encarregado de realmente executar um protocolo BA. Nossa abordagem poderia ser considerada relacionada à prova de aposta [2], no sentido de que o “poder” dos usuários na construção de blocos é proporcional ao dinheiro que possuem no sistema (em oposição a —digamos— para o dinheiro que colocaram em “escrow”). O artigo mais próximo do nosso é o Sleepy Consensus Model of Pass e Shi [30]. Para evitar o computação pesada necessária na abordagem proof-of-work, seu artigo se baseia (e gentilmente créditos) Classificação criptográfica secreta de Algorand. Com este aspecto crucial em comum, vários existem diferenças significativas entre nossos artigos. Em particular, (1) Sua configuração é apenas permitida. Por outro lado, Algorand também é um sistema sem permissão. (2) Eles usam um protocolo estilo Nakamoto e, portanto, seus blockchain se bifurcam com frequência. Embora dispensando proof-of-work, em seu protocolo um líder selecionado secretamente é solicitado a alongar o válido mais longo (em um sentido mais rico) blockchain. Assim, os garfos são inevitáveis e é preciso esperar que o bloco está suficientemente “profundo” na cadeia. Na verdade, para atingir seus objetivos com um adversário capazes de corrupções adaptativas, eles exigem que um bloco seja poli(N) profundo, onde N representa o número total de usuários no sistema. Observe que, mesmo assumindo que um bloco poderia ser produzido em um minuto, se houvesse N = 1 milhão de usuários, seria necessário esperar cerca de 2 milhões de anos para um bloco para se tornar N 2 de profundidade, e por cerca de 2 anos para um bloco se tornar N-profundo. Em contraste, O blockchain de Algorand bifurca-se apenas com probabilidade insignificante, mesmo que o Adversário corrompa usuários imediatamente e de forma adaptativa, e seus novos blocos podem ser imediatamente confiáveis. (3) Eles não tratam de acordos bizantinos individuais. De certa forma, eles apenas garantem “eventual consenso sobre uma sequência crescente de valores”. O protocolo deles é de replicação de estado, em vez do que um BA, e não pode ser usado para chegar a um acordo bizantino sobre um valor individual de juros. Por outro lado, Algorand também pode ser usado apenas uma vez, se desejado, para permitir que milhões de usuários acessem rapidamente chegar a um acordo bizantino sobre um valor específico de juros. (4) Eles exigem relógios fracamente sincronizados. Ou seja, todos os relógios dos usuários são adiantados por um pequeno intervalo de tempo δ. Por outro lado, em Algorand, os relógios precisam apenas ter (essencialmente) a mesma “velocidade”. (5) Seu protocolo funciona com usuários preguiçosos, mas honestos, ou com a maioria honesta dos usuários online. Eles gentilmente creditam Algorand por levantar a questão de usuários honestos ficarem off-line em massa e por apresentando o modelo de honestidade preguiçosa em resposta. O protocolo deles não funciona apenas nos preguiçosos modelo de honestidade, mas também em seu modelo adversário sonolento, onde um adversário escolhe quais usuários estão on-line e quais estão off-line, desde que, em todos os momentos, a maioria dos usuários on-line seja honesta.2 2A versão original do seu artigo, na verdade, considerava apenas a segurança no seu modelo adversário sonolento. O versão original de Algorand, que precede a deles, também explicitamente prevista assumindo que uma determinada maioria do os jogadores online são sempre honestos, mas excluíram-no explicitamente de consideração, em favor do modelo de honestidade preguiçosa. (Por exemplo, se em algum momento metade dos usuários honestos optar por ficar off-line, então a maioria dos usuários on-line pode muito bem ser malicioso. Assim, para evitar que isso aconteça, o Adversário deveria forçar a maior parte de seus jogadores corrompidos também fiquem off-line, o que claramente vai contra o seu próprio interesse.) Observe que um protocolo com maioria de jogadores preguiçosos, mas honestos, funciona muito bem se a maioria dos usuários on-line for sempre mal-intencionada. Isto é assim, porque um número suficiente de jogadores honestos, sabendo que serão cruciais em algum momento raro, elegerá não ficar off-line nesses momentos, nem podem ser forçados a ficar off-line pelo Adversário, já que ele não sabe quem é o jogadores honestos e cruciais podem ser.(6) Eles exigem uma maioria simples e honesta. Por outro lado, a versão atual de Algorand requer uma maioria honesta de 2/3. Outro artigo próximo de nós é Ouroboros: um protocolo Blockchain de prova de participação comprovadamente seguro, por Kiayias, Russell, David e Oliynykov [20]. Além disso, o sistema deles apareceu depois do nosso. Também usa classificação criptográfica para dispensar prova de trabalho de maneira comprovável. No entanto, seus O sistema é, novamente, um protocolo do estilo Nakamoto, no qual as bifurcações são inevitáveis e frequentes. (No entanto, em seu modelo, os bloqueios não precisam ser tão profundos quanto o modelo de consenso sonolento.) Além disso, seu sistema baseia-se nas seguintes suposições: nas palavras dos próprios autores, “(1) o a rede é altamente síncrona, (2) a maioria das partes interessadas selecionadas está disponível conforme necessário para participar em cada época, (3) as partes interessadas não permanecem off-line por longos períodos de tempo, (4) a adaptabilidade das corrupções está sujeita a um pequeno atraso que é medido em rodadas lineares em o parâmetro de segurança.” Por outro lado, Algorand é, com grande probabilidade, livre de bifurcação e não se baseia em nenhuma dessas quatro suposições. Em particular, em Algorand, o Adversário é capaz de corromper instantaneamente os usuários que ele deseja controlar.
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
Preliminares
2.1 Primitivos criptográficos Hashing ideal. Contaremos com uma função criptográfica hash eficientemente computável, H, que mapeia cadeias arbitrariamente longas em cadeias binárias de comprimento fixo. Seguindo uma longa tradição, modelamos H como um oracle aleatório, essencialmente uma função que mapeia cada string s possível para um aleatório e string binária selecionada independentemente (e então fixa), H(s), do comprimento escolhido. Neste artigo, H tem saídas longas de 256 bits. Na verdade, esse comprimento é curto o suficiente para tornar o sistema eficiente e longo o suficiente para torná-lo seguro. Por exemplo, queremos que H seja resistente a colisões. Ou seja, deveria ser difícil encontrar duas strings diferentes x e y tais que H(x) = H(y). Quando H é um oracle aleatório com saídas longas de 256 bits, encontrar qualquer par de strings é de fato difícil. (Tentar aleatoriamente e confiar no paradoxo do aniversário exigiria 2.256/2 = 2.128 testes.) Assinatura digital. As assinaturas digitais permitem que os usuários autentiquem informações entre si sem compartilhar nenhuma chave secreta. Um esquema de assinatura digital consiste em três algoritmos: um gerador de chave probabilística G, um algoritmo de assinatura S e um algoritmo de verificação V. Dado um parâmetro de segurança k, um número inteiro suficientemente alto, um usuário i usa G para produzir um par de Chaves de k bits (ou seja, strings): uma chave “pública” pki e uma chave de assinatura “secreta” correspondente ski. Crucialmente, um a chave pública não “trai” sua chave secreta correspondente. Ou seja, mesmo com conhecimento de pki, não outro além de mim é capaz de calcular esqui em menos de um tempo astronômico. O usuário i usa ski para assinar mensagens digitalmente. Para cada mensagem possível (string binária) m, primeiro hashes m e então executa o algoritmo S nas entradas H(m) e ski para produzir a string de k bits sigpki(m) \(\triangleq\)S(H(m), esqui) .3 3Como H é resistente a colisões, é praticamente impossível que, ao assinar m, alguém “assine acidentalmente” uma mensagem diferente mensagem m'.A string binária sigpki(m) é chamada de assinatura digital de i de m (relativa a pki) e pode ser denotado mais simplesmente por sigi(m), quando a chave pública pki está clara no contexto. Qualquer pessoa que conheça o pki pode usá-lo para verificar as assinaturas digitais produzidas pelo i. Especificamente, em insere (a) a chave pública pki de um jogador i, (b) uma mensagem m e (c) uma string s, ou seja, i é alegado assinatura digital da mensagem m, o algoritmo de verificação V produz SIM ou NÃO. As propriedades que exigimos de um esquema de assinatura digital são: 1. Assinaturas legítimas são sempre verificadas: Se s = sigi(m), então V (pki, m, s) = Y ES; e 2. Assinaturas digitais são difíceis de falsificar: sem conhecimento de esqui, é hora de encontrar uma string como essa. que V (pki, m, s) = Y ES, para uma mensagem m nunca assinada por i, é astronomicamente longo. (Seguindo os fortes requisitos de segurança de Goldwasser, Micali e Rivest [17], isso é verdade mesmo que se possa obter a assinatura de qualquer outra mensagem.) Assim, para evitar que qualquer outra pessoa assine mensagens em seu nome, um jogador deve manter o seu assinando a chave secreta de esqui (daí o termo “chave secreta”) e para permitir que qualquer pessoa verifique as mensagens ele assina, tenho interesse em divulgar sua chave pki (daí o termo “chave pública”). Em geral, uma mensagem m não é recuperável a partir da sua assinatura sigi(m). Para negociar virtualmente com assinaturas digitais que satisfaçam a propriedade de “recuperabilidade” conceitualmente conveniente (ou seja, para garantir que o signatário e a mensagem sejam facilmente computáveis a partir de uma assinatura, definimos SIGpki(m) = (i, m, sigpki(m)) e SIGi(m) = (i, m, sigi(m)), se pki estiver claro. Assinatura digital exclusiva. Consideramos também esquemas de assinatura digital (G, S, V ) que satisfazem a seguinte propriedade adicional. 3. Singularidade. É difícil encontrar strings pk′, m, s e s′ tais que ̸= s′ e V (pk′, m, s) = V (pk′, m, s′) = 1. (Observe que a propriedade de exclusividade também é válida para strings pk′ que não são geradas legitimamente chaves públicas. Em particular, porém, a propriedade de unicidade implica que, se alguém usasse a propriedade gerador de chave especificado G para calcular uma chave pública pk junto com uma chave secreta correspondente sk, e, portanto, sabia que sk, seria essencialmente impossível também para ele encontrar dois dispositivos digitais diferentes. assinaturas de uma mesma mensagem relativa a pk.) Observações • De assinaturas exclusivas a funções aleatórias verificáveis. Em relação a um digital esquema de assinatura com a propriedade de exclusividade, o mapeamento m \(\to\) H(sigi(m)) associa-se a cada string m possível, uma string única de 256 bits selecionada aleatoriamente e a exatidão disso o mapeamento pode ser provado dada a assinatura sigi(m). Ou seja, esquema ideal de hashing e assinatura digital que satisfaz a propriedade de exclusividade essencialmente fornecer uma implementação elementar de uma função aleatória verificável, conforme introduzida e por Micali, Rabin e Vadhan [27]. (Sua implementação original era necessariamente mais complexa, já que eles não dependiam do hashing ideal.)• Três necessidades diferentes para assinaturas digitais. Em Algorand, um usuário depende de recursos digitais assinaturas para (1) Autenticação dos próprios pagamentos do i. Nesta aplicação, as chaves podem ser de “longo prazo” (ou seja, usadas para assinar muitas mensagens durante um longo período de tempo) e vêm de um esquema de assinatura comum. (2) Gerar credenciais provando que i tem o direito de agir em alguma etapa s de uma rodada r. Aqui, as chaves podem ser de longo prazo, mas devem vir de um esquema que satisfaça a propriedade de exclusividade. (3) Autenticar a mensagem que envio em cada etapa em que atua. Aqui, as chaves devem ser efêmero (ou seja, destruído após seu primeiro uso), mas pode vir de um esquema de assinatura comum. • Uma simplificação de pequeno custo. Para simplificar, imaginamos que cada usuário i tenha uma única chave de longo prazo. Conseqüentemente, tal chave deve vir de um esquema de assinatura com a exclusividade propriedade. Essa simplicidade tem um pequeno custo computacional. Normalmente, na verdade, digital único as assinaturas são um pouco mais caras para produzir e verificar do que as assinaturas comuns. 2.2 O livro-razão público idealizado Algorand tenta imitar o seguinte sistema de pagamento, baseado em um livro-razão público idealizado. 1. O Status Inicial. O dinheiro está associado a chaves públicas individuais (geradas de forma privada e propriedade dos usuários). Deixando pk1, . . . , pkj são as chaves públicas iniciais e a1, . . . , e seus respectivos quantias iniciais de unidades monetárias, então o status inicial é S0 = (pk1, a1), . . . , (pkj, aj) , que é assumido como conhecimento comum no sistema. 2. Pagamentos. Seja pk uma chave pública atualmente com \(\geq\)0 unidades monetárias, pk′ outra chave pública chave, e a′ um número não negativo não maior que a. Então, um pagamento (válido) \(\wp\)é um pagamento digital assinatura, relativa a pk, especificando a transferência de a′ unidades monetárias de pk para pk′, juntamente com algumas informações adicionais. Em símbolos, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), onde I representa qualquer informação adicional considerada útil, mas não sensível (por exemplo, tempo informações e um identificador de pagamento) e qualquer informação adicional considerada sensível (por exemplo, o motivo do pagamento, possivelmente as identidades dos proprietários do pk e do pk′, e assim por diante). Referimo-nos a pk (ou seu proprietário) como pagador, a cada pk′ (ou seu proprietário) como beneficiário e a a′ como o valor do pagamento \(\wp\). Adesão gratuita por meio de pagamentos. Observe que os usuários podem ingressar no sistema quando quiserem, gerando seus próprios pares de chaves pública/secreta. Assim, a chave pública pk′ que aparece em o pagamento \(\wp\)acima pode ser uma chave pública recém-gerada que nunca “possuíu” nenhum dinheiro antes. 3. O Livro Mágico. No Sistema Idealizado, todos os pagamentos são válidos e aparecem em formato inviolável lista L de conjuntos de pagamentos “postados no céu” para que todos possam ver: L = PAGUE 1, PAGUE 2, . . . ,Cada bloco PAY r+1 consiste no conjunto de todos os pagamentos efetuados desde o aparecimento do bloco PAGAR R. No sistema ideal, um novo bloco aparece após um período de tempo fixo (ou finito). Discussão. • Pagamentos mais gerais e resultados de transações não gastas. De forma mais geral, se uma chave pública pk possui um valor a, então um pagamento válido \(\wp\)of pk pode transferir os valores a′ 1, uma' 2, . . ., respectivamente às chaves pk′ 1, pk' 2, . . ., desde que P eu' j \(\leq\)a. Em Bitcoin e sistemas similares, o dinheiro pertencente a um pacote de chave pública é segregado em valores, e um pagamento \(\wp\)feito por pk deve transferir esse valor segregado em sua totalidade. Se pk deseja transferir apenas uma fração a′ < a de a para outra chave, então ele também deve transferir a fração saldo, a saída da transação não gasta, para outra chave, possivelmente o próprio pk. Algorand também funciona com chaves com valores segregados. Contudo, para focar no aspectos novos de Algorand, é conceitualmente mais simples manter nossas formas de pagamento mais simples e chaves com um único valor associado a elas. • Status atual. O Esquema Idealizado não fornece diretamente informações sobre o atual status do sistema (ou seja, sobre quantas unidades monetárias cada chave pública possui). Esta informação é dedutível do Magic Ledger. No sistema ideal, um usuário ativo armazena e atualiza continuamente as informações de status mais recentes, ou ele teria que reconstruí-lo, seja do zero, ou desde a última vez que ele calculou. (Na próxima versão deste artigo, aumentaremos Algorand para permitir seu usuários reconstruam o status atual de maneira eficiente.) • Segurança e “Privacidade”. As assinaturas digitais garantem que ninguém pode falsificar um pagamento outro usuário. Em um \(\wp\) de pagamento, as chaves públicas e o valor não ficam ocultos, mas sim o sensível informação que eu sou. Na verdade, apenas H(I) aparece em \(\wp\), e como H é uma função hash ideal, H(I) é um valor aleatório de 256 bits e, portanto, não há como descobrir o que eu era melhor do que simplesmente adivinhando. No entanto, para provar o que eu era (por exemplo, para provar o motivo do pagamento), o o pagador pode apenas revelar I. A exatidão do I revelado pode ser verificada calculando H(I) e comparando o valor resultante com o último item de \(\wp\). Na verdade, como H é resiliente a colisões, é difícil encontrar um segundo valor I′ tal que H(I) = H(I′). 2.3 Noções e notações básicas Chaves, usuários e proprietários A menos que especificado de outra forma, cada chave pública (“chave” para abreviar) é de longo prazo e relativa a um esquema de assinatura digital com a propriedade de exclusividade. Uma chave pública que eu juntei o sistema quando outra chave pública j já no sistema faz um pagamento para i. Para a cor, personificamos as chaves. Referimo-nos a uma chave i como “ele”, dizemos que sou honesto, que envio e recebe mensagens, etc. Usuário é sinônimo de chave. Quando queremos distinguir uma chave de a quem pertence, utilizamos respectivamente os termos “chave digital” e “proprietário”. Sistemas sem permissão e com permissão. Um sistema não tem permissão se uma chave digital for gratuita aderir a qualquer momento e um proprietário pode possuir várias chaves digitais; e é permitido, caso contrário.Representação Única Cada objeto em Algorand possui uma representação única. Em particular, cada conjunto {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} é ordenado de uma maneira pré-especificada: por exemplo, primeiro lexicograficamente em x, depois em y, etc. Relógios da mesma velocidade Não existe um relógio global: cada usuário tem seu próprio relógio. Relógios do usuário não precisa ser sincronizado de forma alguma. Assumimos, no entanto, que todos eles têm a mesma velocidade. Por exemplo, quando são 12h de acordo com o relógio de um usuário i, podem ser 14h30 de acordo com o relógio de outro usuário j, mas quando for 12h01 de acordo com o relógio de i, serão 2h31 de acordo para o relógio de j. Ou seja, “um minuto é igual (suficientemente, essencialmente igual) para todos os usuários”. Rodadas Algorand está organizado em unidades lógicas, r = 0, 1, . . ., chamadas rodadas. Usamos consistentemente sobrescritos para indicar rodadas. Para indicar que uma quantidade não numérica Q (por exemplo, uma string, uma chave pública, um conjunto, uma assinatura digital, etc.) refere-se a uma rodada r, simplesmente escrevemos Qr. Somente quando Q for um número genuíno (em oposição a uma sequência binária interpretável como um número), faça escrevemos Q(r), de modo que o símbolo r não possa ser interpretado como o expoente de Q. No (início de uma) rodada r > 0, o conjunto de todas as chaves públicas é PKr e o status do sistema é Sr = n eu, um (r) eu,. . . : eu \(\in\)PKro , onde um(r) eu é a quantidade de dinheiro disponível para a chave pública i. Observe que PKr é dedutível de Sr, e esse Sr também pode especificar outros componentes para cada chave pública i. Para a rodada 0, PK0 é o conjunto de chaves públicas iniciais e S0 é o status inicial. Tanto PK0 quanto S0 são considerados de conhecimento comum no sistema. Para simplificar, no início da rodada r, então são PK1, . . . , PKr e S1, . . . , Sr. Numa rodada r, o status do sistema transita de Sr para Sr+1: simbolicamente, Rodada r: Sr −→Sr+1. Pagamentos Em Algorand, os usuários realizam pagamentos continuamente (e os divulgam na forma descrito na subseção 2.7). Um pagamento \(\wp\)de um usuário i \(\in\)PKr tem o mesmo formato e semântica como no Sistema Ideal. Ou seja, \(\wp\)= SIGi(i, i′, a, I, H(I)) . O pagamento \(\wp\)é individualmente válido em uma rodada r (é um pagamento redondo, para abreviar) se (1) seu valor a é menor ou igual a a(r) i, e (2) não aparece em nenhum conjunto de pagamentos oficial PAY r′ para r′ < r. (Conforme explicado abaixo, a segunda condição significa que \(\wp\) ainda não entrou em vigor. Um conjunto de pagamentos redondos de i é coletivamente válido se a soma de seus valores for no máximo a(r) eu. Conjuntos de pagamentos Um conjunto de pagamentos redondo P é um conjunto de pagamentos redondos tais que, para cada usuário i, os pagamentos de i em P (possivelmente nenhum) são coletivamente válidos. O conjunto de todos os conjuntos de pagamentos da rodada r é PAY(r). Um round-r payset P é máximo se nenhum superconjunto de P for um payset round-r. Na verdade, sugerimos que um pagamento \(\wp\)também especifica uma rodada \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , e não pode ser válido em qualquer rodada fora de [\(\rho\), \(\rho\) + k], para algum inteiro não negativo fixo k.4 4Isso simplifica a verificação se \(\wp\)se tornou “eficaz” (ou seja, simplifica a determinação se algum conjunto de salários PAGAR r contém \(\wp\). Quando k = 0, se \(\wp\)= SIGi(r, i, i′, a, I, H(I)) e \(\wp\)/\(\in\)PAY r, então devo reenviar \(\wp\).Pagamentos oficiais Para cada rodada r, Algorand seleciona publicamente (da maneira descrita mais adiante) um único conjunto de pagamentos (possivelmente vazio), PAY r, o conjunto de pagamentos oficial da rodada. (Essencialmente, PAY r representa os pagamentos redondos que “realmente” aconteceram.) Assim como no Sistema Ideal (e Bitcoin), (1) a única maneira de um novo usuário j entrar no sistema deve ser o destinatário de um pagamento pertencente ao conjunto de pagamentos oficial PAY r de uma determinada rodada r; e (2) PAY r determina o status da próxima rodada, Sr+1, daquele da rodada atual, Sr. Simbolicamente, PAGAR r: Sr −→Sr+1. Especificamente, 1. o conjunto de chaves públicas da rodada r + 1, PKr+1, consiste na união de PKr e no conjunto de todos chaves de beneficiário que aparecem, pela primeira vez, nos pagamentos de PAY r; e 2. a quantidade de dinheiro a(r+1) eu que um usuário i possui na rodada r + 1 é a soma de ai(r) - ou seja, o quantidade de dinheiro que possuo na rodada anterior (0 se i̸\(\in\)PKr) - e a soma das quantias pago a i de acordo com os pagamentos de PAY r. Em suma, tal como no Sistema Ideal, cada estado Sr+1 é dedutível do histórico de pagamentos anteriores: PAGUE 0, . . . , PAGUE R. 2.4 Blocos e Blocos Comprovados Em Algorand0, o bloco Br correspondente a uma rodada r especifica: o próprio r; o conjunto de pagamentos de rodada r, PAGAR r; uma quantidade Qr, a ser explicada, e o hash do bloco anterior, H(Br−1). Assim, partindo de algum bloco fixo B0, temos um blockchain tradicional: B1 = (1, PAGUE 1, Q0, H(B0)), B2 = (2, PAGUE 2, Q1, H(B1)), B3 = (3, PAGUE 3, Q2, H(B2)), . . . Em Algorand, a autenticidade de um bloco é na verdade comprovada por uma informação separada, um “certificado de bloco” CERT r, que transforma Br em um bloco comprovado, Br. O livro mágico, portanto, é implementado pela sequência dos blocos comprovados, B1, B2, . . . Discussão Como veremos, o CERT r consiste em um conjunto de assinaturas digitais para H(Br), aquelas de um maioria dos membros do SV r, juntamente com uma prova de que cada um desses membros pertence efectivamente para SV r. Poderíamos, é claro, incluir os certificados CERT r nos próprios blocos, mas conceitualmente mais limpo para mantê-lo separado.) Em Bitcoin cada bloco deve satisfazer uma propriedade especial, ou seja, deve “conter uma solução de um crypto puzzle”, o que torna a geração de blocos computacionalmente intensiva e bifurcações inevitáveis e não raro. Por outro lado, blockchain de Algorand tem duas vantagens principais: é gerado com cálculo mínimo e não será bifurcado com probabilidade extremamente alta. Cada bloco Bi é final com segurança assim que entrar em blockchain.2,5 Probabilidade de falha aceitável Para analisar a segurança de Algorand especificamos a probabilidade, F, com a qual estamos dispostos a aceitar que algo dê errado (por exemplo, que um conjunto verificador SV r não tenha uma maioria honesta). Como no caso do comprimento de saída da função criptográfica hash H, também F é um parâmetro. Mas, como nesse caso, achamos útil definir F para um valor concreto, de modo a obter uma estimativa mais intuitiva. compreensão do fato de que é de fato possível, em Algorand, desfrutar simultaneamente de segurança suficiente e eficiência suficiente. Para enfatizar que F é um parâmetro que pode ser definido conforme desejado, na primeira e segundas modalidades, definimos respectivamente F = 10−12 e F = 10−18 . Discussão Observe que 10-12 é, na verdade, menos que um em um trilhão, e acreditamos que tal a escolha de F é adequada em nossa aplicação. Vamos enfatizar que 10−12 não é a probabilidade com o qual o Adversário pode falsificar os pagamentos de um usuário honesto. Todos os pagamentos são digitalmente assinado e, portanto, se as assinaturas digitais adequadas forem usadas, a probabilidade de falsificar um pagamento é muito inferior a 10-12 e é, na verdade, essencialmente 0. O evento ruim que estamos dispostos a tolerar com probabilidade F é que as bifurcações de Algorand blockchain. Observe que, com nossa configuração de F e rodadas de um minuto, espera-se que uma bifurcação ocorra no blockchain de Algorand tão raramente quanto (aproximadamente) uma vez em 1,9 milhões de anos. Por outro lado, em Bitcoin, bifurcações ocorrem com bastante frequência. Uma pessoa mais exigente pode definir F para um valor mais baixo. Para este fim, em nossa segunda modalidade consideramos definir F como 10−18. Observe que, supondo que um bloco seja gerado a cada segundo, 1018 é o número estimado de segundos que o Universo levou até agora: desde o Big Bang até o presente tempo. Assim, com F = 10−18, se um bloco for gerado em um segundo, deve-se esperar para a idade de o Universo para ver uma bifurcação. 2.6 O modelo adversário Algorand foi projetado para ser seguro em um modelo muito adversário. Deixe-nos explicar. Usuários honestos e maliciosos Um usuário é honesto se seguir todas as instruções do protocolo e é perfeitamente capaz de enviar e receber mensagens. Um usuário é malicioso (ou seja, bizantino, no linguagem da computação distribuída) se ele puder desviar-se arbitrariamente de suas instruções prescritas. O Adversário O Adversário é um algoritmo eficiente (tecnicamente em tempo polinomial), personificado pela cor, que pode imediatamente tornar malicioso qualquer usuário que ele quiser, a qualquer hora que ele quiser (sujeito apenas para um limite superior ao número de usuários que ele pode corromper). O Adversário controla totalmente e coordena perfeitamente todos os usuários maliciosos. Ele realiza todas as ações em seu nome, incluindo receber e enviar todas as suas mensagens, e pode permitir que eles se desviem de suas instruções prescritas de maneira arbitrária. Ou ele pode simplesmente isolar um usuário corrompido enviando e recebimento de mensagens. Deixe-nos esclarecer que ninguém mais fica sabendo automaticamente que um usuário i é malicioso, embora a maldade de i possa transparecer nas ações que o Adversário o faz tomar. Este poderoso adversário, no entanto, • Não possui poder computacional ilimitado e não consegue forjar com sucesso o digital assinatura de um usuário honesto, exceto com probabilidade insignificante; e• Não poderá interferir de forma alguma nas trocas de mensagens entre usuários honestos. Além disso, sua capacidade de atacar usuários honestos é limitada por uma das seguintes suposições. Honestidade Maioria do Dinheiro Consideramos um continuum de Maioria Honesta de Dinheiro (HMM) suposições: ou seja, para cada inteiro não negativo k e h real > 1/2, HHMk > h: os usuários honestos em cada rodada r possuíam uma fração maior que h de todo o dinheiro em o sistema na rodada r −k. Discussão. Supondo que todos os usuários mal-intencionados coordenem perfeitamente suas ações (como se fossem controlados por uma única entidade, o Adversário) é uma hipótese bastante pessimista. Coordenação perfeita entre também muitos indivíduos é difícil de alcançar. Talvez a coordenação só ocorra dentro de grupos separados de jogadores maliciosos. Mas, como não se pode ter certeza sobre o nível de coordenação dos usuários mal-intencionados podemos aproveitar, é melhor prevenir do que remediar. Presumir que o Adversário possa corromper secreta, dinâmica e imediatamente os usuários também é pessimista. Afinal, de forma realista, assumir o controle total das operações de um usuário deve levar algum tempo. A suposição HMMk > h implica, por exemplo, que, se uma rodada (em média) for implementada em um minuto, então, a maior parte do dinheiro em uma determinada rodada permanecerá em mãos honestas por pelo menos duas horas, se k = 120, e pelo menos uma semana, se k = 10.000. Observe que as suposições do HMM e a maioria honesta anterior do poder de computação suposições estão relacionadas no sentido de que, uma vez que o poder computacional pode ser comprado com dinheiro, se usuários mal-intencionados possuírem a maior parte do dinheiro, eles poderão obter a maior parte do poder de computação. 2.7 O modelo de comunicação Prevemos que a propagação de mensagens — isto é, “fofoca entre pares”5 — seja o único meio de comunicação. Suposição temporária: entrega oportuna de mensagens em toda a rede. Para na maior parte deste artigo assumimos que toda mensagem propagada atinge quase todos os usuários honestos em tempo hábil. Removeremos essa suposição na Seção 10, onde tratamos de redes partições, sejam de ocorrência natural ou induzidas adversamente. (Como veremos, apenas assumimos entrega oportuna de mensagens dentro de cada componente conectado da rede.) Uma maneira concreta de capturar a entrega oportuna de mensagens propagadas (em toda a rede) é o seguinte: Para toda alcançabilidade \(\rho\) > 95% e tamanho de mensagem \(\mu\) \(\in\)Z+, existe \(\lambda\) \(\rho\),\(\mu\) tal que, se um usuário honesto propagar uma mensagem m de \(\mu\) bytes no tempo t, então m atinge, no tempo t + \(\lambda\) \(\rho\),\(\mu\), pelo menos uma fração \(\rho\) dos usuários honestos. 5Essencialmente, como em Bitcoin, quando um usuário propaga uma mensagem m, todo usuário ativo recebe m pela primeira vez, seleciona aleatoriamente e de forma independente um número adequadamente pequeno de usuários ativos, seus “vizinhos”, para os quais ele encaminha m, possivelmente até que ele receba um reconhecimento deles. A propagação de m termina quando nenhum usuário recebe m pela primeira vez.A propriedade acima, no entanto, não pode suportar nosso protocolo Algorand, sem prever explícita e separadamente um mecanismo para obter o blockchain mais recente - por outro usuário/depositório/etc. Na verdade, para construir um novo bloco Br, não apenas um conjunto adequado de verificadores deve receber atempadamente rodadas-r mensagens, mas também as mensagens das rodadas anteriores, para conhecer o Br−1 e todos os outros blocos, o que é necessário para determinar se os pagamentos em Br são válidos. O seguinte suposição, em vez disso, é suficiente. Suposição de propagação de mensagens (MP): Para todo \(\rho\) > 95% e \(\mu\) \(\in\)Z+, existe \(\lambda\) \(\rho\),\(\mu\) tal que, para todos os tempos t e todas as mensagens de \(\mu\) bytes m propagadas por um usuário honesto antes de t −\(\lambda\) \(\rho\), \(\mu\), m é recebido, no tempo t, por pelo menos uma fração \(\rho\) dos usuários honestos. O protocolo Algorand ′ na verdade instrui cada um de um pequeno número de usuários (ou seja, os verificadores de um dada etapa de uma rodada em Algorand ′, para propagar uma mensagem separada de tamanho (pequeno) prescrito, e precisamos limitar o tempo necessário para cumprir essas instruções. Fazemo-lo enriquecendo o MP suposição da seguinte forma. Para todo n, \(\rho\) > 95% e \(\mu\) \(\in\)Z+, existe \(\lambda\)n,\(\rho\),\(\mu\) tal que, para todos os tempos t e todos \(\mu\)-byte mensagens m1, . . . , mn, cada um propagado por um usuário honesto antes de t −\(\lambda\)n,\(\rho\),\(\mu\), m1, . . . , mn são recebidos, no tempo t, por pelo menos uma fração \(\rho\) dos usuários honestos. Nota • A suposição acima é deliberadamente simples, mas também mais forte do que o necessário em nosso artigo.6 • Para simplificar, assumimos \(\rho\) = 1 e, portanto, deixamos de mencionar \(\rho\). • Presumimos pessimistamente que, desde que não viole a suposição do MP, o Adversário controla totalmente a entrega de todas as mensagens. Em particular, sem ser notado pelos honestos usuários, o Adversário pode decidir arbitrariamente qual jogador honesto recebe qual mensagem quando, e acelerar arbitrariamente a entrega de qualquer mensagem que desejar.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.
O protocolo BA BA⋆ em um ambiente tradicional
Como já enfatizado, o acordo bizantino é um ingrediente chave de Algorand. Na verdade, é através o uso de um protocolo BA que Algorand não seja afetado por bifurcações. No entanto, para estarmos seguros contra os nossos Adversário poderoso, Algorand deve contar com um protocolo BA que satisfaça a nova capacidade de substituição do jogador restrição. Além disso, para que Algorand seja eficiente, tal protocolo BA deve ser muito eficiente. Os protocolos BA foram definidos pela primeira vez para um modelo de comunicação idealizado, síncrono completo redes (redes SC). Tal modelo permite um projeto e análise mais simples de protocolos BA. 6Dada a porcentagem honesta h e a probabilidade de falha aceitável F, Algorand calcula um limite superior, N, ao número máximo de membros dos verificadores em uma etapa. Assim, a suposição de MP só precisa ser válida para n \(\leq\)N. Além disso, como afirmado, a suposição de MP é válida, não importa quantas outras mensagens possam ser propagadas ao lado o mj. Como veremos, entretanto, em Algorand as mensagens são propagadas em tempo essencialmente não sobreposto intervalos, durante os quais um único bloco é propagado, ou no máximo N verificadores propagam um pequeno (por exemplo, 200B) mensagem. Assim, poderíamos reafirmar o pressuposto do MP de uma forma mais fraca, mas também mais complexa. 7Por exemplo, ele pode aprender imediatamente as mensagens enviadas por jogadores honestos. Assim, um usuário malicioso i′, que é solicitado a propagar uma mensagem simultaneamente com um usuário honesto i, pode sempre escolher sua própria mensagem m′ com base em a mensagem m realmente propagada por i. Essa habilidade está relacionada à pressa, no jargão da computação distribuída literatura.Assim, nesta seção, apresentamos um novo protocolo BA, BA⋆, para redes SC e ignorando a questão da substituibilidade do jogador. O protocolo BA⋆é uma contribuição de valor separado. Na verdade, é o protocolo BA criptográfico mais eficiente para redes SC conhecido até agora. Para usá-lo em nosso protocolo Algorand, modificamos BA⋆ um pouco, de modo a levar em conta nossos diferentes modelo de comunicação e contexto, mas certifique-se, na seção X, de destacar como BA⋆é usado dentro do nosso protocolo real Algorand ′. Começamos por relembrar o modelo em que BA⋆opera e a noção de acordo bizantino. 3.1 Redes Síncronas Completas e Adversários Correspondentes Em uma rede SC, existe um relógio comum, marcando a cada tempo integral r = 1, 2, . . . A cada clique par em r, cada jogador i envia instantânea e simultaneamente um único mensagem senhor i,j (possivelmente a mensagem vazia) para cada jogador j, incluindo ele mesmo. Cada senhor i,j é recebido naquele momento clique em r + 1 do jogador j, junto com a identidade do remetente i. Novamente, num protocolo de comunicação, um jogador é honesto se seguir todas as instruções prescritas. instruções e malicioso de outra forma. Todos os jogadores maliciosos são totalmente controlados e perfeitamente coordenado pelo Adversário, que, em particular, recebe imediatamente todas as mensagens dirigidas a jogadores maliciosos e escolhe as mensagens que eles enviam. O Adversário pode imediatamente tornar malicioso qualquer usuário honesto que ele quiser, a qualquer momento, clicar ele deseja, sujeito apenas a um possível limite máximo para o número de jogadores mal-intencionados. Isto é, o Adversário “não pode interferir nas mensagens já enviadas por um usuário honesto i”, o que será entregue normalmente. O Adversário também tem a capacidade adicional de ver instantaneamente, em cada rodada par, o mensagens que os jogadores atualmente honestos enviam e usam instantaneamente essas informações para escolher as mensagens que os jogadores maliciosos enviam ao mesmo tempo são marcadas. Observações • Poder Adversário. A configuração acima é muito contraditória. Na verdade, no acordo bizantino literatura, muitos ambientes são menos antagônicos. No entanto, algumas configurações mais adversárias também foi considerado, onde o Adversário, após ver as mensagens enviadas por um jogador honesto, em um determinado momento clique em r, tem a capacidade de apagar todas essas mensagens da rede, imediatamente corrupto i, escolha a mensagem que o agora malicioso i envia na hora clique em r, e faça com que eles entregue normalmente. O poder previsto do Adversário corresponde ao que ele tem em nosso cenário. • Abstração Física. O modelo de comunicação previsto abstrai um modelo mais físico, em que cada par de jogadores (i, j) está ligado por uma linha de comunicação separada e privada li,j. Ou seja, ninguém mais pode injetar, interferir ou obter informações sobre as mensagens enviadas. li, j. A única maneira de o Adversário ter acesso a li,j é corromper i ou j. • Privacidade e Autenticação. Nas redes SC a privacidade e a autenticação das mensagens são garantidas por suposição. Por outro lado, na nossa rede de comunicação, onde as mensagens são propagadas ponto a ponto, a autenticação é garantida por assinaturas digitais e a privacidade é inexistente. Assim, para adotar o protocolo BA⋆ ao nosso cenário, cada mensagem trocada deverá ser assinada digitalmente (identificando ainda o estado para o qual foi enviado). Felizmente, os protocolos BA que usamos considere usar em Algorand não requer privacidade de mensagem.3.2 A noção de um acordo bizantino A noção de acordo bizantino foi introduzida por Pease Shostak e Lamport [31] para o caso binário, isto é, quando todo valor inicial consiste em um bit. No entanto, foi rapidamente prorrogado para valores iniciais arbitrários. (Veja as pesquisas de Fischer [16] e Chor e Dwork [10].) Por um BA protocolo, queremos dizer um de valor arbitrário. Definição 3.1. Em uma rede síncrona, seja P um protocolo de n jogadores, cujo conjunto de jogadores é comum conhecimento entre os jogadores, t um número inteiro positivo tal que n \(\geq\)2t + 1. Dizemos que P é um valor arbitrário (respectivamente, binário) (n, t) - Protocolo de acordo bizantino com solidez \(\sigma\) \(\in\) (0, 1) se, para cada conjunto de valores V que não contém o símbolo especial \(\bot\) (respectivamente, para V = {0, 1}), em um execução em que no máximo t dos jogadores são maliciosos e em que cada jogador i começa com um valor inicial vi \(\in\)V , todo jogador honesto j para com probabilidade 1, gerando um valor outi \(\in\)V \(\cup\){\(\bot\)} de modo a satisfazer, com probabilidade pelo menos \(\sigma\), as duas condições seguintes: 1. Acordo: Existe out \(\in\)V \(\cup\){\(\bot\)} tal que outi = out para todos os jogadores honestos i. 2. Consistência: se, para algum valor v \(\in\)V , vi = v para todos os jogadores honestos, então out = v. Referimo-nos a out como saída de P e a cada outi como saída do jogador i. 3.3 A notação BA # Em nossos protocolos BA, um jogador é obrigado a contar quantos jogadores lhe enviaram uma determinada mensagem em um determinado passo. Assim, para cada valor possível v que possa ser enviado,
s
eu(v) (ou apenas #i(v) quando s estiver limpo) é o número de jogadores j dos quais i recebeu v na etapa s. Lembrando que um jogador i recebe exatamente uma mensagem de cada jogador j, se o número de jogadores é n, então, para todos i e s, P v#s eu(v) = n. 3.4 O Protocolo Binário BA BBA⋆ Nesta seção apresentamos um novo protocolo BA binário, BBA⋆, que depende da honestidade de mais mais de dois terços dos jogadores e é muito rápido: não importa o que os jogadores maliciosos possam fazer, cada execução de seu loop principal faz com que os jogadores concordem com a probabilidade 1/3. Cada jogador tem sua própria chave pública de um esquema de assinatura digital que satisfaz a assinatura única. propriedade. Como este protocolo se destina a ser executado em rede completa síncrona, não há necessidade de um jogador assinar cada uma de suas mensagens. Assinaturas digitais são usadas para gerar um bit aleatório suficientemente comum na Etapa 3. (Em Algorand, assinaturas digitais também são usadas para autenticar todas as outras mensagens.) O protocolo requer uma configuração mínima: uma string aleatória comum r, independente da posição dos jogadores. chaves. (Em Algorand, r é na verdade substituído pela quantidade Qr.) O protocolo BBA⋆é um loop de 3 etapas, onde os jogadores trocam repetidamente valores booleanos e diferentes jogadores podem sair deste ciclo em momentos diferentes. Um jogador i sai deste loop propagando, em alguma etapa, um valor especial 0∗ou um valor especial 1∗, instruindo assim todos os jogadores a “fingir” que recebem respectivamente 0 e 1 de i em todas as etapas futuras. (Alternativamente dito: assumirque a última mensagem recebida por um jogador j de outro jogador i foi um pouco b. Então, em qualquer passo em que ele não recebe nenhuma mensagem de i, j age como se eu tivesse enviado a ele o bit b.) O protocolo utiliza um contador \(\gamma\), representando quantas vezes seu loop de 3 etapas foi executado. No início do BBA⋆, \(\gamma\) = 0. (Pode-se pensar em \(\gamma\) como um contador global, mas na verdade é aumentado por cada jogador individual toda vez que o loop é executado.) Existem n \(\geq\)3t + 1, onde t é o número máximo possível de jogadores maliciosos. Um binário a string x é identificada com o inteiro cuja representação binária (com possíveis 0s iniciais) é x; e lsb(x) denota o bit menos significativo de x. Protocolo BBA⋆ (Comunicação) Etapa 1. [Coin-Fixed-To-0 Step] Cada jogador envia bi. 1.1 Se #1 i (0) \(\geq\)2t + 1, então i define bi = 0, envia 0∗, gera outi = 0, e PARA. 1.2 Se #1 i (1) \(\geq\)2t + 1, então, então i define bi = 1. 1.3 Caso contrário, i define bi = 0. (Comunicação) Etapa 2. [Coin-Fixed-To-1 Step] Cada jogador envia bi. 2.1 Se #2 i (1) \(\geq\)2t + 1, então i define bi = 1, envia 1∗, saídas outi = 1, e PARA. 2.2 Se #2 i (0) \(\geq\)2t + 1, então defino bi = 0. 2.3 Caso contrário, i define bi = 1. (Comunicação) Etapa 3. [Etapa da Moeda Genuinamente Invertida] Cada jogador i envia bi e SIGi(r, \(\gamma\)). 3.1 Se #3 i (0) \(\geq\)2t + 1, então i define bi = 0. 3.2 Se #3 i (1) \(\geq\)2t + 1, então i define bi = 1. 3.3 Caso contrário, deixando Si = {j \(\in\)N que enviou i uma mensagem adequada nesta etapa 3}, i define bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); aumenta \(\gamma\)i em 1; e retorna ao Passo 1. Teorema 3.1. Sempre que n \(\geq\)3t + 1, BBA⋆é um protocolo binário (n, t)-BA com solidez 1. Uma prova do Teorema 3.1 é dada em [26]. Sua adaptação ao nosso ambiente e sua capacidade de substituição do jogador propriedade são novos. Observação histórica Protocolos BA binários probabilísticos foram propostos pela primeira vez por Ben-Or em configurações assíncronas [7]. O protocolo BBA⋆é uma nova adaptação, para nossa configuração de chave pública, do protocolo BA binário de Feldman e Micali [15]. Seu protocolo foi o primeiro a funcionar da maneira esperada. número constante de etapas. Funcionou fazendo com que os próprios jogadores implementassem uma moeda comum, uma noção proposta por Rabin, que a implementou por meio de uma parte externa confiável [32].3.5 Consenso Graduado e Protocolo GC Recordemos, para valores arbitrários, uma noção de consenso muito mais fraca do que o acordo bizantino. Definição 3.2. Seja P um protocolo no qual o conjunto de todos os jogadores é de conhecimento comum, e cada jogador i conhece em particular um valor inicial arbitrário v′ eu. Dizemos que P é um protocolo de consenso com classificação (n, t) se, em cada execução com n jogadores, em a maioria dos quais são maliciosos, todo jogador honesto pára de produzir um par de valor-grau (vi, gi), onde gi \(\in\){0, 1, 2}, de modo a satisfazer as três condições a seguir: 1. Para todos os jogadores honestos i e j, |gi −gj| \(\leq\)1. 2. Para todos os jogadores honestos i e j, gi, gj > 0 ⇒vi = vj. 3. Se v′ 1 = \(\cdots\) =v′ n = v para algum valor v, então vi = v e gi = 2 para todos os jogadores honestos i. Nota Histórica A noção de consenso graduado é simplesmente derivada daquela de consenso graduado. transmitido, apresentado por Feldman e Micali em [15], ao fortalecer a noção de um cruzado acordo, conforme introduzido por Dolev [12], e refinado por Turpin e Coan [33].8 Em [15], os autores também forneceram um protocolo de transmissão graduado em 3 etapas (n, t), gradecast, para n \(\geq\)3t+1. Um protocolo de transmissão graduado (n, t) mais complexo para n> 2t + 1 foi encontrado posteriormente por Katz e Koo [19]. O seguinte protocolo GC de duas etapas consiste nas duas últimas etapas do gradecast, expressas em nosso notação. Para enfatizar este fato, e para corresponder às etapas do protocolo Algorand ′ da seção 4.1, nós nomeie respectivamente 2 e 3 as etapas do GC. Protocolo GC Passo 2. Cada jogador envia v′ eu para todos os jogadores. Etapa 3. Cada jogador i envia a todos os jogadores a string x se e somente se #2 eu(x) \(\geq\)2t + 1. Determinação de saída. Cada jogador i gera o par (vi, gi) calculado da seguinte forma: • Se, para algum x, #3 i (x) \(\geq\)2t + 1, então vi = x e gi = 2. • Se, para algum x, #3 eu (x) \(\geq\)t + 1, então vi = x e gi = 1. • Caso contrário, vi = \(\bot\) e gi = 0. Teorema 3.2. Se n \(\geq\)3t + 1, então GC é um protocolo de transmissão com classificação (n, t). A prova segue imediatamente aquela da classificação do protocolo em [15] e, portanto, é omitida.9 8Em essência, num protocolo de transmissão gradual, (a) a entrada de cada jogador é a identidade de um distinto jogador, o remetente, que tem um valor arbitrário v como uma entrada privada adicional, e (b) as saídas devem satisfazer o mesmas propriedades 1 e 2 do consenso graduado, mais a seguinte propriedade 3′: se o remetente for honesto, então vi = v e gi = 2 para todos os jogadores honestos i. 9Na verdade, no protocolo deles, na etapa 1, o remetente envia seu próprio valor privado v para todos os jogadores, e cada jogador i deixa v' consisto no valor que ele realmente recebeu do remetente na etapa 1.3.6 O Protocolo BA⋆ Descrevemos agora o protocolo BA de valor arbitrário BA⋆por meio do protocolo BA binário BBA⋆e o protocolo de consenso graduado GC. Abaixo, o valor inicial de cada jogador i é v′ eu. Protocolo BA⋆ Etapas 1 e 2. Cada jogador i executa GC, na entrada v′ i, para calcular um par (vi, gi). Etapa 3, . . . Cada jogador i executa BBA⋆ - com entrada inicial 0, se gi = 2, e 1 caso contrário - então como calcular o bit outi. Determinação de saída. Cada jogador i gera vi, se outi = 0, e \(\bot\)caso contrário. Teorema 3.3. Sempre que n \(\geq\)3t + 1, BA⋆é um protocolo (n, t)-BA com solidez 1. Prova. Primeiro provamos a consistência e depois a concordância. Prova de consistência. Suponha que, para algum valor v \(\in\)V , v′ i = v. Então, pela propriedade 3 de consenso graduado, após a execução do GC, todos os jogadores honestos produzem (v, 2). Assim, 0 é a parte inicial de todos os jogadores honestos no final da execução do BBA⋆. Assim, pelo Acordo propriedade do acordo bizantino binário, ao final da execução de BA⋆, outi = 0 para todos os honestos jogadores. Isto implica que a saída de cada jogador honesto i em BA⋆é vi = v. ✷ Prova de acordo. Como BBA⋆é um protocolo BA binário, (A) outi = 1 para todo jogador honesto i, ou (B) outi = 0 para todos os jogadores honestos i. No caso A, todos os jogadores honestos produzem \(\bot\)em BA⋆ e, portanto, o acordo é válido. Considere agora o caso B. Em neste caso, na execução de BBA⋆, o bit inicial de pelo menos um jogador honesto i é 0. (Na verdade, se inicial de todos os jogadores honestos fosse 1, então, pela propriedade Consistência do BBA⋆, teríamos outj = 1 para todos os j honestos.) Assim, após a execução do GC, i gera o par (v, 2) para alguns valor v. Assim, pela propriedade 1 do consenso graduado, gj > 0 para todos os jogadores honestos j. Assim, por propriedade 2 do consenso graduado, vj = v para todos os jogadores honestos j. Isto implica que, no final do BA⋆, todo jogador honesto j produz v. Assim, o acordo também é válido no caso B. ✷ Como tanto a Consistência quanto o Acordo são válidos, BA⋆é um protocolo BA de valor arbitrário. Nota Histórica Turpin e Coan foram os primeiros a mostrar que, para n \(\geq\)3t+1, qualquer binário (n, t)-BA O protocolo pode ser convertido em um protocolo de valor arbitrário (n, t)-BA. O valor arbitrário de redução O acordo bizantino para o acordo bizantino binário via consenso gradual é mais modular e mais limpo e simplifica a análise do nosso protocolo Algorand Algorand ′. Generalizando BA⋆para uso em Algorand Algorand funciona mesmo quando toda a comunicação é via fofocando. Contudo, embora apresentado numa rede de comunicação tradicional e familiar, por assim dizer para permitir uma melhor comparação com o estado da técnica e uma compreensão mais fácil, o protocolo BA⋆works também em redes de fofoca. Na verdade, em nossas concretizações detalhadas de Algorand, iremos apresentá-lo diretamente para redes de fofocas. Devemos também salientar que satisfaz a substituibilidade do jogador propriedade que é crucial para que Algorand esteja seguro no modelo muito adversário previsto.
Qualquer protocolo substituível por jogador BA trabalhando em uma rede de comunicação de fofoca pode ser empregado com segurança dentro do sistema inventivo Algorand. Em particular, Micali e Vaikunthanatan estenderam o BA⋆ para trabalhar de forma muito eficiente também com uma maioria simples de jogadores honestos. Isso o protocolo também pode ser usado em 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.
Duas Modalidades de Algorand
Conforme discutido, em um nível muito alto, uma rodada de Algorand idealmente procede da seguinte forma. Primeiro, aleatoriamente o usuário selecionado, o líder, propõe e circula um novo bloco. (Este processo inclui inicialmente selecionando alguns líderes potenciais e depois garantindo que, pelo menos uma boa fração do tempo, um surge um único líder comum.) Em segundo lugar, um comitê de usuários selecionado aleatoriamente é selecionado e chega a um acordo bizantino sobre o bloco proposto pelo líder. (Este processo inclui que cada etapa do protocolo BA é executada por um comitê selecionado separadamente.) O bloco acordado é então assinado digitalmente por um determinado limite (TH) de membros do comitê. Essas assinaturas digitais são circulados para que todos tenham certeza de qual é o novo bloco. (Isto inclui a circulação do credencial dos signatários, e autenticando apenas o hash do novo bloco, garantindo que todos tem a garantia de aprender o bloco, uma vez que seu hash seja esclarecido.) Nas próximas duas seções, apresentamos duas modalidades de Algorand, Algorand ′ 1 e Algorand ′ 2, que funcionam sob a suposição da maioria dos usuários honestos. Na Seção 8 mostramos como adotar essas incorporações para trabalhar sob uma suposição de maioria honesta de dinheiro. Algorand ′ 1 prevê apenas que > 2/3 dos membros do comitê sejam honestos. Além disso, em Algorand ′ 1, o número de passos para chegar a um acordo bizantino é limitado a um nível adequadamente elevado número, de modo que é garantido que o acordo será alcançado com probabilidade esmagadora dentro de um número fixo de etapas (mas potencialmente exigindo mais tempo do que as etapas de Algorand ′ 2). No caso remoto em que o acordo ainda não foi alcançado na última etapa, a comissão concorda com a bloco vazio, que é sempre válido. Algorand ′ 2 prevê que o número de membros honestos em uma comissão seja sempre maior do que ou igual a um limite fixo tH (o que garante que, com probabilidade esmagadora, pelo menos 2/3 dos membros do comitê são honestos). Além disso, Algorand ′ 2 permite que o acordo bizantino ser alcançado em um número arbitrário de etapas (mas potencialmente em um tempo menor que Algorand ′ 1). É fácil derivar muitas variantes destas modalidades básicas. Em particular, é fácil, dado Algorand ′ 2, para modificar Algorand ′ 1, de modo a permitir chegar a um acordo bizantino de forma arbitrária número de etapas. Ambas as modalidades compartilham o seguinte núcleo, notações, noções e parâmetros comuns. 4.1 Um núcleo comum Objetivos Idealmente, para cada rodada r, Algorand satisfaria as seguintes propriedades: 1. Correção Perfeita. Todos os usuários honestos concordam com o mesmo bloco Br. 2. Completude 1. Com probabilidade 1, o conjunto de pagamentos de Br, PAY r, é máximo.10 10Como os conjuntos de pagamentos são definidos para conter pagamentos válidos e os usuários honestos para fazer apenas pagamentos válidos, um valor máximo PAY r contém os pagamentos “atualmente pendentes” de todos os usuários honestos.É claro que garantir a correção perfeita por si só é trivial: todo mundo sempre escolhe o modelo oficial. payset PAY r fique vazio. Mas neste caso, o sistema teria completude 0. Infelizmente, garantir tanto a correção perfeita quanto a integridade 1 não é fácil na presença de malware usuários. Algorand adota assim um objetivo mais realista. Informalmente, deixando h denotar a porcentagem de usuários honestos, h > 2/3, o objetivo de Algorand é Garantindo, com probabilidade esmagadora, correção perfeita e completude próxima de h. Privilegiar a correcção em detrimento da integralidade parece ser uma escolha razoável: os pagamentos não processados em uma rodada pode ser processada na próxima, mas deve-se evitar garfos, se possível. Acordo Bizantino Liderado A correção perfeita pode ser garantida da seguinte forma. No início da rodada r, cada usuário i constrói seu próprio bloco candidato Br i , e então todos os usuários alcançam o Byzantine acordo sobre um bloco candidato. De acordo com nossa introdução, o protocolo BA empregado requer uma maioria honesta de 2/3 e é substituível pelo jogador. Cada uma de suas etapas pode ser executada por um pequeno e conjunto de verificadores selecionados aleatoriamente, que não compartilham nenhuma variável interna. Infelizmente, esta abordagem não tem garantias de integridade. Isso ocorre porque o candidato blocos de usuários honestos são provavelmente totalmente diferentes uns dos outros. Assim, em última análise O bloco acordado pode sempre ser aquele com um conjunto de pagamentos não máximo. Na verdade, pode ser sempre o bloco vazio, B\(\varepsilon\), ou seja, o bloco cujo payset está vazio. bem, será o padrão, vazio. Algorand ′ evita esse problema de completude da seguinte maneira. Primeiro, um líder para a rodada r, \(\ell\)r, é selecionado. Então, \(\ell\)r propaga seu próprio bloco candidato, Br \(\ell\)r. Finalmente, os usuários chegam a um acordo sobre o bloqueio eles realmente recebem de \(\ell\)r. Porque, sempre que \(\ell\)r for honesto, perfeita correção e integridade 1 ambos são válidos, Algorand ′ garante que \(\ell\)r é honesto com probabilidade próxima de h. (Quando o líder é malicioso, não nos importamos se o bloco acordado é aquele com um conjunto de pagamentos vazio. Afinal, um o líder malicioso \(\ell\)r pode sempre escolher Br de forma maliciosa \(\ell\)r para ser o bloco vazio e, honestamente propagá-lo, forçando assim os usuários honestos a concordar com o bloco vazio.) Seleção de Líder Em Algorand's, o r-ésimo bloco tem a forma Br = (r, PAY r, Qr, H(Br−1). Como já mencionado na introdução, a quantidade Qr−1 é cuidadosamente construída de modo a ser essencialmente não manipulável pelo nosso poderoso Adversário. (Mais adiante nesta seção, iremos fornecer alguma intuição sobre por que isso acontece.) No início de uma rodada r, todos os usuários sabem o blockchain até agora, B0, . . . , Br−1, a partir do qual eles deduzem o conjunto de usuários de cada rodada anterior: que é, PK1, . . . , PKr−1. Um potencial líder da rodada r é um usuário i tal que .H SIGi r, 1, Qr−1 \(\leq\)p. Deixe-nos explicar. Observe que, como a quantidade Qr−1 faz parte do bloco Br−1, e o subjacente esquema de assinatura satisfaz a propriedade de exclusividade, SIGi r, 1, Qr−1 é uma string binária exclusivamente associado a i e r. Assim, como H é um oracle aleatório, H SIGi r, 1, Qr−1 é um aleatório de 256 bits string longa associada exclusivamente a i e r. O símbolo “.” na frente de H SIGi r, 1, Qr−1 é o ponto decimal (no nosso caso, binário), de modo que ri \(\triangleq\).H SIGi r, 1, Qr−1 é a expansão binária de um número aleatório de 256 bits entre 0 e 1 associado exclusivamente a i e r. Assim a probabilidade de que ri é menor ou igual a p é essencialmente p. (Nosso mecanismo de seleção de líderes potenciais tem sido inspirado no esquema de micropagamento de Micali e Rivest [28].) A probabilidade p é escolhida de modo que, com probabilidade esmagadora (ou seja, 1 −F), pelo menos um o verificador potencial é honesto. (Se for verdade, p é escolhido como a menor probabilidade.)Observe que, como i é o único capaz de calcular suas próprias assinaturas, só ele pode determinar se ele é um verificador potencial da primeira rodada. No entanto, ao revelar sua própria credencial, \(\sigma\)r eu \(\triangleq\)SIGi r, 1, Qr−1 , posso provar a qualquer um que sou um verificador potencial da rodada r. O líder \(\ell\)r é definido como o líder potencial cuja credencial hashed é menor que a hashed credencial de todos os outros líderes potenciais j: isto é, H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s j). Observe que, como um \(\ell\)r malicioso pode não revelar sua credencial, o líder correto da rodada r pode nunca será conhecido, e que, salvo laços improváveis, \(\ell\)r é de fato o único líder da rodada r. Vamos finalmente trazer um último mas importante detalhe: um usuário pode ser um líder em potencial (e, portanto, o líder) de uma rodada r somente se ele pertencer ao sistema por pelo menos k rodadas. Isso garante a não manipulabilidade de Qr e de todas as quantidades Q futuras. Na verdade, um dos potenciais líderes irá realmente determinar Qr. Seleção do Verificador Cada passo s > 1 da rodada r é executado por um pequeno conjunto de verificadores, SV r,s. Novamente, cada verificador i \(\in\)SV r,s é selecionado aleatoriamente entre os usuários já presentes no sistema k rodadas. antes de r, e novamente através da quantidade especial Qr−1. Especificamente, i \(\in\)PKr−k é um verificador em SV r,s, se .H SIGi r, s, Qr−1 \(\leq\)p′. Mais uma vez, só eu sei se ele pertence a SV r,s, mas, se for esse o caso, ele poderia provar isso exibindo sua credencial \(\sigma\)r,s eu \(\triangleq\)H(SIGi r, s, Qr−1 ). Um verificador i \(\in\)SV r,s envia uma mensagem, mr,s eu, em etapa s da rodada r, e esta mensagem inclui sua credencial \(\sigma\)r,s i , de modo a permitir que os verificadores do passo para reconhecer que o senhor,s eu é uma mensagem legítima de etapas. A probabilidade p′ é escolhida de modo a garantir que, em SV r,s, sendo #good o número de usuários honestos e #bad o número de usuários mal-intencionados, com grande probabilidade o seguinte duas condições são válidas. Para concretização Algorand ′ 1: (1) #bom > 2 \(\cdot\) #ruim e (2) #bom + 4 \(\cdot\) #ruim < 2n, onde n é a cardinalidade esperada de SV r,s. Para concretização Algorand ′ 2: (1) #bom > tH e (2) #bom + 2#ruim < 2tH, onde tH é um limite especificado. Estas condições implicam que, com probabilidade suficientemente alta, (a) na última etapa do BA protocolo, haverá pelo menos um determinado número de jogadores honestos para assinar digitalmente o novo bloco Br, (b) apenas um bloco por rodada poderá ter o número necessário de assinaturas, e (c) o BA utilizado o protocolo tem (em cada etapa) a maioria honesta necessária de 2/3. Esclarecendo a geração de blocos Se o líder da rodada r for honesto, então o bloco correspondente é da forma Br = r, PAGAR r, SIG\(\ell\)r Qr−1 , H Br−1 , onde o payset PAY r é máximo. (lembre-se de que todos os conjuntos de pagamentos são, por definição, válidos coletivamente.) Caso contrário (ou seja, se \(\ell\)r for malicioso), Br terá uma das duas formas possíveis a seguir: Br = r, PAGAR r, SIGi Qr-1 , H Br−1 e Br = Br \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H Br−1 .Na primeira forma, PAY r é um conjunto de pagamentos (não necessariamente máximo) e pode ser PAY r = \(\emptyset\); e eu sou um potencial líder da rodada r. (No entanto, posso não ser o líder \(\ell\)r. Isso pode realmente acontecer se \(\ell\)r mantém em segredo sua credencial e não se revela.) A segunda forma surge quando, na execução da rodada R do protocolo BA, todos os jogadores honestos produza o valor padrão, que é o bloco vazio Br \(\varepsilon\) em nossa aplicação. (Por definição, o possível as saídas de um protocolo BA incluem um valor padrão, genericamente denotado por \(\bot\). Consulte a seção 3.2.) Observe que, embora os paysets estejam vazios em ambos os casos, Br = r, \(\emptyset\), SIGi Qr-1 , H Br−1 e irmão \(\varepsilon\) são blocos sintaticamente diferentes e surgem em duas situações diferentes: respectivamente, “todos correu bem na execução do protocolo BA” e “algo deu errado no Protocolo BA, e o valor padrão foi gerado”. Vamos agora descrever intuitivamente como ocorre a geração do bloco Br na rodada r de Algorand ′. Na primeira etapa, cada jogador elegível, ou seja, cada jogador i \(\in\)PKr−k, verifica se é um potencial líder. Se for esse o caso, então me perguntam, usando todos os pagamentos que ele viu até agora, e o atual blockchain, B0, . . . , Br−1, para preparar secretamente um conjunto de pagamento máximo, PAY r eu, e secretamente monta seu bloco candidato, Br = r, PAGUE r eu, SIGi Qr-1 , H Br−1 . Isto é, ele não apenas incluir no Br i, como segundo componente o conjunto de pagamentos recém-preparado, mas também, como terceiro componente, sua própria assinatura de Qr−1, a terceira componente do último bloco, Br−1. Finalmente, ele propagou seu mensagem round-r-step-1, senhor,1 i , que inclui (a) seu bloco candidato Br eu, (b) sua assinatura adequada de seu bloco candidato (ou seja, sua assinatura do hash do Br i , e (c) sua própria credencial \(\sigma\)r,1 eu, provando que ele é de fato um verificador potencial da rodada r. (Observe que, até que um i honesto produza sua mensagem mr,1 i, o Adversário não tem ideia de que i é um verificador potencial. Se ele quiser corromper potenciais líderes honestos, o Adversário poderia muito bem jogadores honestos aleatórios corruptos. No entanto, uma vez que ele vê o Sr.,1 i , uma vez que contém a credencial de i, o O adversário sabe e pode corromper-me, mas não pode impedir o senhor,1 i , que é propagado viralmente, de atingindo todos os usuários do sistema.) Na segunda etapa, cada verificador selecionado j \(\in\)SV r,2 tenta identificar o líder da rodada. Especificamente, j usa as credenciais da etapa 1, \(\sigma\)r,1 i1 , . . . , \(\sigma\)r,1 in , contido na mensagem apropriada da etapa 1 mr,1 eu ele recebeu; hashes todos eles, ou seja, calcula H \(\sigma\)r,1 e1 , . . . , H \(\sigma\)r,1 em ; encontra a credencial, \(\sigma\)r,1 \(\ell\)j , cujo hash é lexicograficamente mínimo; e considera \(\ell\)r j para ser o líder da rodada r. Lembre-se que cada credencial considerada é uma assinatura digital de Qr−1, que o SIGi r, 1, Qr−1 é determinado exclusivamente por i e Qr−1, que H é aleatório oracle e, portanto, cada H(SIGi r, 1, Qr−1 é uma longa string aleatória de 256 bits exclusiva para cada líder potencial i da rodada r. Disto podemos concluir que, se a string de 256 bits Qr-1 fosse ela mesma aleatória e independentemente selecionados, então seriam as credenciais hashed de todos os líderes potenciais da rodada r. Na verdade, todos líderes potenciais são bem definidos, assim como suas credenciais (sejam realmente computadas ou não). Além disso, o conjunto de líderes potenciais da rodada r é um subconjunto aleatório dos usuários da rodada r −k, e um líder potencial honesto eu sempre constrói e propaga adequadamente sua mensagem, Sr. eu, que contém a credencial de i. Assim, como o percentual de usuários honestos é h, não importa qual seja o potenciais líderes mal-intencionados possam fazer (por exemplo, revelar ou ocultar suas próprias credenciais), o mínimo A credencial de líder potencial hashed pertence a um usuário honesto, que é necessariamente identificado por todos ser o líder \(\ell\)r da rodada r. Conseqüentemente, se a string de 256 bits Qr-1 fosse ela mesma aleatória e selecionado independentemente, com probabilidade exatamente h (a) o líder \(\ell\)r é honesto e (b) \(\ell\)j = \(\ell\)r para todos verificadores honestos da etapa 2 j. Na realidade, as credenciais hashed são, sim, selecionadas aleatoriamente, mas dependem de Qr−1, que énão selecionados de forma aleatória e independente. Provaremos em nossa análise, entretanto, que Qr−1 é suficientemente não manipulável para garantir que o líder de uma rodada seja honesto com a probabilidade h′ suficientemente próximo de h: ou seja, h′ > h2(1 + h −h2). Por exemplo, se h = 80%, então h′ > 0,7424. Tendo identificado o líder da rodada (o que eles fazem corretamente quando o líder \(\ell\)r é honesto), a tarefa dos verificadores da etapa 2 é começar a executar o BA usando como valores iniciais o que eles acreditam ser o bloco do líder. Na verdade, para minimizar a quantidade de comunicação necessária, um verificador j \(\in\)SV r,2 não usa, como seu valor de entrada v′ j para o protocolo bizantino, o bloco Bj que ele realmente recebeu de \(\ell\)j (o usuário j acredita ser o líder), mas o líder, mas o hash desse bloco, ou seja, v′ j = H(Bi). Assim, após o término do protocolo BA, os verificadores da última etapa não calcula o bloco round-r desejado Br, mas calcula (autentica e propagar) H(Br). Assim, uma vez que H(Br) é assinado digitalmente por um número suficiente de verificadores do última etapa do protocolo BA, os usuários do sistema perceberão que H(Br) é o hash do novo bloco. Entretanto, eles também devem recuperar (ou esperar, já que a execução é bastante assíncrona) o próprio bloco Br, que o protocolo garante que está realmente disponível, não importa o que o Adversário poderia fazer. Assincronia e Tempo Algorand ′ 1 e Algorand ′ 2 têm um grau significativo de assincronia. Isso ocorre porque o Adversário tem grande liberdade para programar a entrega das mensagens que estão sendo enviadas. propagado. Além disso, quer o número total de passos numa ronda seja limitado ou não, há a variância contribui com o número de passos realmente dados. Assim que ele souber dos certificados de B0, . . . , Br−1, um usuário i calcula Qr−1 e começa a trabalhar na rodada r, verificando se ele é um líder em potencial ou um verificador em algumas etapas da rodada r. Supondo que devo agir na etapa s, à luz da assincronia discutida, baseio-me em vários estratégias para garantir que ele tenha informações suficientes antes de agir. Por exemplo, ele pode esperar para receber pelo menos um determinado número de mensagens dos verificadores de passo anterior, ou esperar um tempo suficiente para garantir que ele receba as mensagens de pessoas suficientemente muitos verificadores da etapa anterior. O Seed Qr e o Parâmetro Look-Back k Lembre-se que, idealmente, as quantidades Qr deveriam aleatórios e independentes, embora seja suficiente que sejam suficientemente não manipuláveis por o Adversário. À primeira vista, poderíamos escolher Qr−1 para coincidir com H PAGUE r−1 , e assim evitar especifique Qr−1 explicitamente em Br−1. Uma análise elementar revela, contudo, que utilizadores maliciosos podem aproveitar esse mecanismo de seleção.11 Alguns esforços adicionais mostram que miríades de outros 11Estamos no início da rodada r −1. Assim, Qr−2 = PAY r−2 é conhecido publicamente, e o Adversário é privado sabe quem são os líderes potenciais que ele controla. Suponha que o Adversário controle 10% dos usuários, e que, com probabilidade muito alta, um usuário malicioso w é o líder potencial da rodada r −1. Ou seja, suponha que H SIGw r −2, 1, Qr −2 é tão pequeno que é altamente improvável que um líder potencial honesto seja realmente o líder da rodada r −1. (Lembre-se que, uma vez que escolhemos líderes potenciais através de um mecanismo secreto de classificação criptográfica, o Adversário não sabe quem são os líderes potenciais honestos.) O Adversário, portanto, está na invejável posição de escolher o conjunto de pagamentos PAY ′ que ele deseja, e torná-lo o conjunto de pagamentos oficial da rodada r −1. No entanto, ele pode fazer mais. Ele também pode garantir que, com alta probabilidade, () um de seus usuários maliciosos será o líder também da rodada r, para que ele possa escolher livremente qual será o PAY r. (E assim por diante. Pelo menos por um longo tempo, isto é, contanto que esses eventos de alta probabilidade realmente ocorram.) Para garantir (), o Adversário age da seguinte forma. Vamos PAGAR' seja o conjunto de pagamentos que o Adversário prefere para a rodada r −1. Então, ele calcula H(PAY ′) e verifica se, para algum o jogador já malicioso z, SIGz(r, 1, H(PAY ′)) é particularmente pequeno, ou seja, pequeno o suficiente para que com valores muito altos probabilidade z será o líder da rodada r. Se for esse o caso, então ele instrui w a escolher seu bloco candidato a seralternativas, baseadas em quantidades de blocos tradicionais, são facilmente exploráveis pelo Adversário para garantir que líderes maliciosos são muito frequentes. Em vez disso, definimos específica e indutivamente nossa marca nova quantidade Qr para poder provar que ela não é manipulável pelo Adversário. Ou seja, Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), se Br não for o bloco vazio, e Qr \(\triangleq\)H(Qr−1, r) caso contrário. A intuição de por que esta construção de Qr funciona é a seguinte. Suponha por um momento que Qr−1 é verdadeiramente selecionado de forma aleatória e independente. Então, será assim Qr? Quando \(\ell\)r é honesto, o a resposta é (grosso modo) sim. Isto é assim porque H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256 é uma função aleatória. Quando \(\ell\)r é malicioso, entretanto, Qr não é mais definido univocamente a partir de Qr−1 e \(\ell\)r. Existem pelo menos dois valores separados para Qr. Um continua a ser Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), e o outro é H(Qr−1, r). Vamos primeiro argumentar que, embora a segunda escolha seja um tanto arbitrária, uma segunda escolha é absolutamente obrigatória. A razão para isso é que um \(\ell\)r malicioso sempre pode causar blocos candidatos totalmente diferentes a serem recebidos pelos verificadores honestos da segunda etapa.12 Uma vez for esse o caso, é fácil garantir que o bloco finalmente acordado através do protocolo BA de round r será o padrão e, portanto, não conterá a assinatura digital de Qr-1 de ninguém. Mas o sistema deve continuar e, para isso, precisa de um líder para a rodada r. Se este líder for automaticamente e selecionado abertamente, então o Adversário irá corrompê-lo trivialmente. Se for selecionado pelo anterior Qr−1 através do mesmo processo, então \(\ell\)r será novamente o líder na rodada r+1. Propomos especificamente usam o mesmo mecanismo secreto de classificação criptográfica, mas aplicado a uma nova quantidade Q: a saber, H(Qr−1, r). Ter essa quantidade como a saída de H garante que a saída seja aleatória, e incluindo r como a segunda entrada de H, enquanto todos os outros usos de H têm uma ou mais de 3 entradas, “garante” que tal Qr seja selecionado de forma independente. Novamente, nossa escolha específica da alternativa Qr não importa, o que importa é que \(\ell\)r tem duas opções para Qr e, portanto, ele pode dobrar suas chances ter outro usuário mal-intencionado como o próximo líder. As opções para Qr podem ser ainda mais numerosas para o Adversário que controla um \(\ell\)r malicioso. Por exemplo, sejam x, y e z três líderes potenciais maliciosos da rodada r, tais que H \(\sigma\)r,1 x < H \(\sigma\)r,1 sim < H \(\sigma\)r,1 z e H \(\sigma\)r,1 z é particularmente pequeno. Isto é, tão pequeno que há uma boa chance de que H \(\sigma\)r,1 z é menor da credencial hashed de todo líder potencial honesto. Então, pedindo a x para esconder seu credencial, o Adversário tem uma boa chance de fazer com que y se torne o líder da rodada r −1. Isto implica que ele tem outra opção para Qr: a saber, SIGy Qr-1 . Da mesma forma, o Adversário pode peça a x e y que retenham suas credenciais, de modo que z se torne o líder da rodada r −1 e ganhando outra opção para Qr: a saber, SIGz Qr-1 . É claro, porém, que cada uma dessas e outras opções tem uma chance diferente de zero de falhar, porque o O adversário não pode prever o hash das assinaturas digitais dos usuários potenciais honestos. Br−1 eu = (r −1, PAY ′, H(Br−2). Caso contrário, ele tem dois outros usuários maliciosos x e y para continuar gerando um novo pagamento \(\wp\)′, de um para outro, até que, para algum usuário malicioso z (ou mesmo para algum usuário fixo z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) é particularmente pequeno também. Esta experiência irá parar rapidamente. E quando isso acontece, o Adversário pede que você proponha o bloco candidato Br−1 eu = (r −1, PAGUE ′ \(\cup\){\(\wp\)}, H(Br−2). 12Por exemplo, para simplificar (mas extremo), “quando o tempo da segunda etapa estiver prestes a expirar”, \(\ell\)r poderia enviar por e-mail diretamente um bloco candidato Bi diferente para cada usuário i. Dessa forma, sejam quem forem os verificadores da etapa 2, eles terá recebido blocos totalmente diferentes.Uma análise cuidadosa, semelhante à cadeia de Markov, mostra que, independentemente das opções que o Adversário escolha fazer na rodada r −1, desde que ele não possa injetar novos usuários no sistema, ele não poderá diminuir o probabilidade de um usuário honesto ser o líder da rodada r + 40 muito abaixo de h. Esta é a razão que exigimos que os potenciais líderes da rodada r sejam usuários já existentes na rodada r −k. É uma forma de garantir que, na rodada r −k, o Adversário não possa alterar muito a probabilidade de que um usuário honesto se torna o líder da rodada r. Na verdade, não importa quais usuários ele adicione ao sistema nas rodadas r −k até r, eles são inelegíveis para se tornarem líderes em potencial (e a fortiori o líder) da rodada r. Assim, o parâmetro de lookback k é, em última análise, um parâmetro de segurança. (Embora, como veremos na seção 7, também pode ser uma espécie de “parâmetro de conveniência”.) Chaves Efêmeras Embora a execução do nosso protocolo não possa gerar um fork, exceto com probabilidade desprezível, o Adversário poderia gerar uma bifurcação, no bloco r, após o legítimo o bloco r foi gerado. Grosso modo, uma vez gerado Br, o Adversário sabe quem são os verificadores de cada etapa. da rodada r são. Assim, ele poderia corromper todos eles e obrigá-los a certificar um novo bloco f Ir. Como esse bloco falso pode ser propagado somente após o bloco legítimo, os usuários que foram prestar atenção não seria enganado.13 No entanto, f Br estaria sintaticamente correto e nós deseja evitar que seja fabricado. Fazemos isso por meio de uma nova regra. Essencialmente, os membros do conjunto verificador SV r,s de uma etapa s da rodada r use chaves públicas efêmeras pkr,s eu para assinar digitalmente suas mensagens. Essas chaves são de uso único e suas chaves secretas correspondentes skr,s eu são destruídos uma vez usados. Dessa forma, se um verificador for corrompido mais tarde, o Adversário não pode forçá-lo a assinar qualquer outra coisa que ele não tenha assinado originalmente. Naturalmente, devemos garantir que seja impossível para o Adversário calcular uma nova chave g pr,s eu e convencer um usuário honesto de que é a chave efêmera correta do verificador i \(\in\)SV r,s para usar na etapa s. 4.2 Resumo comum de notações, noções e parâmetros Notações • r \(\geq\)0: o número da rodada atual. • s \(\geq\)1: o número do passo atual na rodada r. • Br: bloco gerado na rodada r. • PKr: o conjunto de chaves públicas no final da rodada r −1 e no início da rodada r. • Sr: o status do sistema no final da rodada r −1 e no início da rodada r.14 • PAY r: o payset contido no Br. • \(\ell\)r: líder da rodada r. \(\ell\)r escolhe o payset PAY r da rodada r (e determina o próximo Qr). • Qr: a semente da rodada r, uma quantidade (ou seja, string binária) que é gerada no final da rodada r e é usado para escolher verificadores para a rodada r + 1. Qr é independente dos paysets nos blocos e não pode ser manipulado por \(\ell\)r. 13Considere corromper o âncora de uma grande rede de TV e produzir e transmitir hoje um noticiário mostrando a secretária Clinton vencendo a última eleição presidencial. A maioria de nós reconheceria isso como uma farsa. Mas alguém que sai do coma pode ser enganado. 14Num sistema que não é síncrono, a noção de “fim da ronda r −1” e “início da ronda r” precisam ser cuidadosamente definidos. Matematicamente, PKr e Sr são calculados a partir do status inicial S0 e dos blocos B1, . . . , Br−1.• SV r,s: o conjunto de verificadores escolhidos para a etapa s da rodada r. • SV r: o conjunto de verificadores escolhidos para a rodada r, SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s e HSV r,s: respectivamente, o conjunto de verificadores maliciosos e o conjunto de verificadores honestos em SV r,s. MSV r,s \(\cup\)HSV r,s = SV r,s e MSV r,s ∩HSV r,s = \(\emptyset\). • n1 \(\in\)Z+ e n \(\in\)Z+: respectivamente, os números esperados de potenciais líderes em cada SV r,1, e os números esperados de verificadores em cada SV r,s, para s > 1. Observe que n1 << n, já que precisamos de pelo menos um membro honesto e honesto em SV r,1, mas pelo menos uma maioria de membros honestos em cada SV r,s para s > 1. • h \(\in\)(0, 1): uma constante maior que 2/3. h é o índice de honestidade no sistema. Ou seja, o fração de usuários honestos ou dinheiro honesto, dependendo da suposição utilizada, em cada PKr é pelo menos h. • H: uma função criptográfica hash, modelada como uma oracle aleatória. • \(\bot\): Uma string especial do mesmo comprimento que a saída de H. • F \(\in\)(0, 1): parâmetro que especifica a probabilidade de erro permitida. Uma probabilidade \(\leq\)F é considerada “desprezível”, e uma probabilidade \(\geq\)1 −F é considerada “esmagadora”. • ph \(\in\)(0, 1): a probabilidade de o líder de uma rodada r, \(\ell\)r, ser honesto. Idealmente ph = h. Com a existência do Adversário, o valor de ph será determinado na análise. • k \(\in\)Z+: o parâmetro de retrospectiva. Ou seja, a rodada r −k é onde os verificadores da rodada r estão escolhido entre —ou seja, SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): para o primeiro passo da rodada r, um usuário da rodada r −k é escolhido para estar em SV r,1 com probabilidade p1 \(\triangleq\) n1 |P Kr−k|. • p \(\in\)(0, 1): para cada passo s > 1 da rodada r, um usuário da rodada r −k é escolhido para estar em SV r,s com probabilidade p \(\triangleq\) n |P Kr−k|. • CERT r: o certificado para Br. É um conjunto de assinaturas tH de H(Br) de verificadores apropriados em rodada R. • Br \(\triangleq\)(Br, CERT r) é um bloco comprovado. Um usuário i conhece Br se possuir (e verificar com sucesso) ambas as partes do bloco provado. Observe que o CERT visto por diferentes usuários pode ser diferente. • τr i: a hora (local) em que um usuário i conhece Br. No protocolo Algorand cada usuário tem seu próprio relógio. Os relógios de diferentes usuários não precisam ser sincronizados, mas devem ter a mesma velocidade. Apenas para efeitos de análise, consideramos um relógio de referência e medimos a velocidade dos jogadores. tempos relacionados em relação a ele. • \(\alpha\)r,s eu e \(\beta\)r,s i : respectivamente o horário (local) em que um usuário i inicia e termina sua execução da Etapa s de rodada R. • Λ e \(\lambda\): essencialmente, os limites superiores para, respectivamente, o tempo necessário para executar a Etapa 1 e o tempo necessário para qualquer outra etapa do protocolo Algorand. O parâmetro Λ limita superiormente o tempo para propagar um único bloco de 1 MB. (Em nossa notação, Λ = \(\lambda\) \(\rho\),1MB. Lembrando nossa notação, que definimos \(\rho\) = 1 para simplificar, e que os blocos são escolhido para ter no máximo 1 MB, temos Λ = \(\lambda\)1,1,1MB.) 15A rigor, “r −k” deveria ser “max{0, r −k}”.O parâmetro \(\lambda\) limita o tempo para propagar uma pequena mensagem por verificador em uma Etapa s > 1. (Usando, como em Bitcoin, assinaturas de curvas elípticas com chaves de 32B, uma mensagem do verificador tem 200B de comprimento. Assim, em nossa notação, \(\lambda\) = \(\lambda\)n,\(\rho\),200B.) Assumimos que Λ = O(\(\lambda\)). Noções • Seleção do verificador. Para cada rodada r e etapa s > 1, SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p}. Cada o usuário i \(\in\)PKr−k calcula privadamente sua assinatura usando sua chave de longo prazo e decide se i \(\in\)SV r,s ou não. Se i \(\in\)SV r,s, então SIGi(r, s, Qr−1) é a credencial de i(r, s), denotada de forma compacta por \(\sigma\)r,s eu. Para a primeira etapa da rodada r, SV r,1 e \(\sigma\)r,1 eu são definidos de forma semelhante, com p substituído por p1. O verificadores em SV r,1 são líderes em potencial. • Seleção de líderes. O usuário i \(\in\)SV r,1 é o líder da rodada r, denotado por \(\ell\)r, se H(\(\sigma\)r,1 eu) \(\leq\)H(\(\sigma\)r,1 j) para todo potencial líderes j \(\in\)SV r,1. Sempre que os hashes das credenciais de dois jogadores são comparados, no improvável Em caso de empate, o protocolo sempre rompe o vínculo lexicograficamente de acordo com o (público de longo prazo chaves dos) líderes potenciais. Por definição, o valor hash da credencial do jogador \(\ell\)r também é o menor entre todos os usuários em PKr-k. Observe que um líder potencial não pode decidir privadamente se ele é o líder ou não, sem ver as credenciais dos outros líderes potenciais. Como os valores de hash são uniformes aleatoriamente, quando SV r,1 não é vazio, \(\ell\)r sempre existe e é honesto com probabilidade pelo menos h. O parâmetro n1 é grande o suficiente para garantir que cada SV r,1 não é vazio com probabilidade esmagadora. • Estrutura de bloco. Um bloco não vazio tem a forma Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)), e um bloco vazio é da forma Br ǫ = (r, \(\emptyset\), Qr−1, H(Br−1)). Observe que um bloco não vazio ainda pode conter um conjunto de pagamentos PAY r vazio, se nenhum pagamento ocorrer em nesta rodada ou se o líder for malicioso. No entanto, um bloco não vazio implica que a identidade de \(\ell\)r, sua credencial \(\sigma\)r,1 \(\ell\)r e SIG\(\ell\)r(Qr−1) foram todos revelados em tempo hábil. O protocolo garante que, se o líder for honesto, então o bloco não estará vazio com uma probabilidade esmagadora. • Semente Qr. Se Br não for vazio, então Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), caso contrário Qr \(\triangleq\)H(Qr−1, r). Parâmetros • Relações entre vários parâmetros. — Os verificadores e potenciais líderes da rodada r são selecionados entre os usuários do PKr−k, onde k é escolhido de modo que o Adversário não possa prever Qr−1 na rodada r −k −1 com probabilidade melhor que F: caso contrário, ele poderá introduzir usuários maliciosos para a rodada r −k, todos os quais serão potenciais líderes/verificadores na rodada r, tendo sucesso em
ter um líder malicioso ou uma maioria maliciosa em SV r,s para algumas etapas desejadas por ele. — Para a Etapa 1 de cada rodada r, n1 é escolhido de modo que com probabilidade esmagadora, SV r,1 ̸= \(\emptyset\). • Exemplos de escolhas de parâmetros importantes. — As saídas de H têm 256 bits. — h = 80%, n1 = 35. — Λ = 1 minuto e \(\lambda\) = 10 segundos. • Inicialização do protocolo. O protocolo começa no tempo 0 com r = 0. Como não existe “B−1” ou “CERT −1”, sintaticamente B−1 é um parâmetro público com seu terceiro componente especificando Q−1, e todos os usuários conheça B−1 no tempo 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 Nesta seção, construímos uma versão de Algorand ′ trabalhando sob a seguinte suposição. Suposição da maioria honesta dos usuários: Mais de 2/3 dos usuários em cada PKr são honestos. Na Seção 8, mostramos como substituir a suposição acima pela desejada Maioria Honesta de Suposição de dinheiro. 5.1 Notações e parâmetros adicionais Notações • m \(\in\)Z+: número máximo de passos no protocolo BA binário, múltiplo de 3. • Lr \(\leq\)m/3: uma variável aleatória que representa o número de tentativas de Bernoulli necessárias para ver um 1, quando cada tentativa é 1 com probabilidade ph 2 e há no máximo m/3 tentativas. Se todas as tentativas falharem então Lr\(\triangleq\)m/3. Lr será usado para limitar o tempo necessário para gerar o bloco Br. • tH = 2n 3 + 1: o número de assinaturas necessárias nas condições finais do protocolo. • CERT r: o certificado para Br. É um conjunto de assinaturas tH de H(Br) de verificadores apropriados em rodada R. Parâmetros • Relações entre vários parâmetros. — Para cada passo s > 1 da rodada r, n é escolhido de modo que, com probabilidade esmagadora, |HSV r,s| > 2|MSV r,s| e |HSV r,s| + 4|MSV r,s| <2n. Quanto mais próximo de 1 for o valor de h, menor será n. Em particular, usamos (variantes de) Chernoffbounds para garantir que as condições desejadas se mantenham com uma probabilidade esmagadora. — m é escolhido de modo que Lr < m/3 com probabilidade esmagadora. • Exemplos de escolhas de parâmetros importantes. — F = 10−12. — n \(\approx\)1500, k = 40 e m = 180.5.2 Implementando chaves efêmeras em Algorand ′ 1 Como já mencionado, desejamos que um verificador i \(\in\)SV r,s assine digitalmente sua mensagem mr,s eu de passo s na rodada r, relativo a uma chave pública efêmera pkr,s i , usando uma chave secreta efêmera skr,s eu isso ele destrói prontamente após o uso. Portanto, precisamos de um método eficiente para garantir que cada usuário possa verifique se pkr,s eu é de fato a chave a ser usada para verificar a assinatura do senhor,s eu. Fazemo-lo através de um (da melhor forma do nosso conhecimento) novo uso de esquemas de assinatura baseados em identidade. Em um nível elevado, em tal esquema, uma autoridade central A gera uma chave mestra pública, PMK, e uma chave mestra secreta correspondente, SMK. Dada a identidade, U, de um jogador U, A calcula, via SMK, um skU de chave de assinatura secreta relativo à chave pública U, e fornece skU de forma privada para U. (Na verdade, em um esquema de assinatura digital baseado em identidade, a chave pública de um usuário U é o próprio U!) Desta forma, se A destruir o SMK após calcular as chaves secretas dos usuários que ele deseja habilitar para produz assinaturas digitais e não mantém nenhuma chave secreta computada, então U é o único que pode assinar digitalmente mensagens relativas à chave pública U. Assim, qualquer pessoa que saiba o “nome de U”, conhece automaticamente a chave pública de U e, portanto, pode verificar as assinaturas de U (possivelmente usando também o chave mestra pública PMK). Em nossa aplicação, a autoridade A é o usuário i, e o conjunto de todos os usuários possíveis U coincide com o par de passos redondos (r, s) em —digamos— S = {i}\(\times\){r′, . . . , r′ +106}\(\times\){1, . . . , m+3}, onde r′ é um dado rodada e m + 3 o limite superior para o número de etapas que podem ocorrer dentro de uma rodada. Isto caminho, pkr,s eu \(\triangleq\)(i, r, s), para que todos vejam a assinatura de i SIGr,s pkr,s eu (sr.,s i) pode, com esmagadora probabilidade, verifique-a imediatamente para o primeiro milhão de rodadas r após r′. Em outras palavras, primeiro gero PMK e SMK. Em seguida, ele divulga que PMK é o mestre do i chave pública para qualquer rodada r \(\in\)[r′, r′ + 106], e usa SMK para produzir e armazenar o segredo de forma privada chave skr,s eu para cada triplo (i, r, s) \(\in\)S. Feito isso, ele destrói SMK. Se ele determinar que não está parte de SV r,s, então posso deixar skr,s eu sozinho (já que o protocolo não exige que ele autentique qualquer mensagem na Etapa s da rodada r). Caso contrário, primeiro uso skr,s eu para assinar digitalmente sua mensagem, Sr. eu, e então destrói skr,s eu. Observe que posso divulgar sua primeira chave mestra pública quando ele entrar no sistema pela primeira vez. Isto é, o mesmo pagamento \(\wp\)que traz i para o sistema (em uma rodada r′ ou em uma rodada próxima de r′), também pode especifique, a pedido de i, que a chave mestra pública de i para qualquer rodada r \(\in\)[r′, r′ + 106] é PMK - por exemplo, por incluindo um par da forma (PMK, [r′, r′ + 106]). Observe também que, como m + 3 é o número máximo de passos em uma rodada, assumindo que uma rodada leva um minuto, o estoque de chaves efêmeras assim produzido durará quase dois anos. Ao mesmo tempo, essas chaves secretas efêmeras não levarão muito tempo para serem produzidas. Usando uma curva elíptica baseada sistema com chaves de 32B, cada chave secreta é computada em alguns microssegundos. Assim, se m + 3 = 180, então, todas as 180 milhões de chaves secretas podem ser computadas em menos de uma hora. Quando a rodada atual estiver se aproximando de r′ + 106, para lidar com o próximo milhão de rodadas, i gera um novo par (PMK′, SMK′) e informa qual é seu próximo estoque de chaves efêmeras —por exemplo— fazer com que SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) insira um novo bloco, seja como um “transação” separada ou como alguma informação adicional que faz parte de um pagamento. Ao fazer isso, i informa a todos que devem usar PMK′ para verificar as assinaturas efêmeras de i no próximo milhões de rodadas. E assim por diante. (Observe que, seguindo esta abordagem básica, outras formas de implementar chaves efêmeras sem o uso de assinaturas baseadas em identidade é certamente possível. Por exemplo, via Merkle trees.16) 16Neste método, i gera um par de chaves públicas-secretas (pkr,s eu, skr,s eu ) para cada par de etapas redondas (r, s) em —digamos—Outras maneiras de implementar chaves efêmeras são certamente possíveis — por exemplo, via Merkle trees. 5.3 Correspondendo às etapas de Algorand ′ 1 com os de BA⋆ Como dissemos, uma rodada em Algorand ′ 1 tem no máximo m + 3 passos. Passo 1. Nesta etapa, cada líder potencial i calcula e propaga seu bloco candidato Br eu, juntamente com sua própria credencial, \(\sigma\)r,1 eu. Lembre-se de que esta credencial identifica explicitamente i. Isto é assim porque \(\sigma\)r,1 eu \(\triangleq\)SIGi(r, 1, Qr−1). O verificador potencial i também propaga, como parte de sua mensagem, sua assinatura digital própria de H(Br eu). Não se tratando de um pagamento ou de uma credencial, esta assinatura de i é relativa ao seu efêmero público chave pkr,1 i: isto é, ele propaga sigpkr,1 eu (H(Br eu)). Dadas as nossas convenções, em vez de propagar o Br eu e sigpkr,1 eu (H(Br i)), ele poderia ter SIGpkr propagado,1 eu (H(Br eu)). No entanto, na nossa análise, precisamos de ter acesso explícito a sigpkr,1 eu (H(Br eu)). Etapa 2. Nesta etapa, cada verificador i define \(\ell\)r eu serei o líder em potencial cuja credencial hashed é o menor e Br i será o bloco proposto por \(\ell\)r eu. Como, por uma questão de eficiência, desejar concordar com H(Br), em vez de diretamente com Br, i propaga a mensagem que ele teria propagado na primeira etapa de BA⋆com valor inicial v′ eu = H(Br eu). Ou seja, ele propaga v′ eu, depois de assiná-lo efêmeramente, é claro. (Nomeadamente, depois de assiná-lo relativamente ao direito efémero chave pública, que neste caso é pkr,2 i.) Claro, também transmito sua própria credencial. Como a primeira etapa de BA⋆consiste na primeira etapa do protocolo de consenso graduado GC, Etapa 2 de Algorand ′ corresponde ao primeiro passo do GC. Passo 3. Neste passo, cada verificador i \(\in\)SV r,2 executa o segundo passo de BA⋆. Ou seja, ele envia o mesma mensagem que ele teria enviado na segunda etapa do GC. Novamente, a mensagem de i é efêmera assinado e acompanhado da credencial do i. (De agora em diante, deixaremos de dizer que um verificador assina efêmeramente sua mensagem e também propaga sua credencial.) Etapa 4. Nesta etapa, cada verificador i \(\in\)SV r,4 calcula a saída de GC, (vi, gi), e efêmeramente assina e envia a mesma mensagem que teria enviado na terceira etapa do BA⋆, ou seja, no primeiro passo do BBA⋆, com bit inicial 0 se gi = 2, e 1 caso contrário. Etapa s = 5, . . . , m + 2. Tal passo, se alguma vez alcançado, corresponde ao passo s −1 de BA⋆ e, portanto, a etapa s −3 do BBA⋆. Como nosso modelo de propagação é suficientemente assíncrono, devemos levar em conta a possibilidade que, no meio de tal passo s, um verificador i \(\in\)SV r,s é alcançado por informações que o comprovam aquele bloco Br já foi escolhido. Neste caso, i interrompe sua própria execução da rodada r de Algorand ′ e começa a executar suas instruções round-(r + 1). {r', . . . , r′ + 106} \(\times\) {1, . . . , m + 3}. Então ele ordena essas chaves públicas de forma canônica, armazena a j-ésima chave pública digita a j-ésima folha de um Merkle tree e calcula o valor da raiz Ri, que ele divulga. Quando ele quer assinar uma mensagem relativa à chave pkr,s eu , não apenas forneço a assinatura real, mas também o caminho de autenticação para pkr,s eu em relação a Ri. Observe que este caminho de autenticação também prova que pkr,s eu é armazenado na j-ésima folha. O resto do detalhes podem ser facilmente preenchidos.Assim, as instruções de um verificador i \(\in\)SV r,s, além das instruções correspondentes para a Etapa s −3 do BBA⋆, inclui a verificação se a execução do BBA⋆ foi interrompida em um momento anterior Passo s′. Como o BBA⋆ só pode parar em uma etapa fixada em moeda em 0 ou em uma etapa fixada em moeda em 1, o instruções distinguem se A (Condição Final 0): s′ −2 ≡0 mod 3, ou B (Condição Final 1): s′ −2 ≡1 mod 3. Na verdade, no caso A, o bloco Br não está vazio e, portanto, são necessárias instruções adicionais para garantir que i reconstrói Br adequadamente, juntamente com seu certificado adequado CERT r. No caso B, o bloco Br está vazio e, portanto, i é instruído a definir Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), e para calcular CERT r. Se, durante a execução do passo s, i não vir nenhuma evidência de que o bloco Br já tenha foi gerado, então ele envia a mesma mensagem que teria enviado na etapa s −3 do BBA⋆. Passo m + 3. Se, durante o passo m + 3, i \(\in\)SV r,m+3 vê que o bloco Br já foi gerado em uma etapa anterior s′, então ele prossegue conforme explicado acima. Caso contrário, em vez de enviar a mesma mensagem que ele teria enviado na etapa m do BBA⋆, i é instruído, com base nas informações em sua posse, a calcular Br e seu correspondente certificado CERT r. Lembre-se, de fato, que limitamos em m + 3 o número total de etapas de uma rodada. 5.4 O protocolo real Lembre-se que, em cada passo s de uma rodada r, um verificador i \(\in\)SV r,s usa seu par de chaves secretas públicas de longo prazo para produzir sua credencial, \(\sigma\)r,s eu \(\triangleq\)SIGi(r, s, Qr−1), bem como SIGi Qr-1 no caso s = 1. Verificador i usa sua chave secreta efêmera skr,s eu para assinar sua mensagem (r, s) mr,s eu. Por simplicidade, quando r e s são claro, escrevemos esigi(x) em vez de sigpkr,s i (x) para denotar a assinatura efêmera adequada de um valor de i x na etapa s da rodada r e escreva ESIGi(x) em vez de SIGpkr,s i (x) para denotar (i, x, esigi (x)). Etapa 1: bloquear proposta Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 1 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,1 ou não. • Se i /\(\in\)SV r,1, então i interrompe imediatamente a sua própria execução do Passo 1. • Se i \(\in\)SV r,1, ou seja, se i for um líder em potencial, então ele recebe os pagamentos da rodada r que foram foi propagado para ele até agora e calcula um conjunto de pagamento máximo PAY r eu deles. A seguir, ele calcula seu “bloco de candidatos” Br eu = (r, PAGAR r eu, SIGi(Qr−1), H(Br−1)). Finalmente, ele calcula a mensagem senhor,1 eu = (Br eu , esigi(H(Br eu )), \(\sigma\)r,1 i ), destrói sua chave secreta efêmera skr,1 eu, e então propaga senhor,1 eu.Observação. Na prática, para encurtar a execução global do Passo 1, é importante que o (r, 1)- as mensagens são propagadas seletivamente. Ou seja, para cada usuário i no sistema, para o primeiro (r, 1)- mensagem que ele recebe e verifica com sucesso,17 o jogador i a propaga normalmente. Para todos os outras mensagens (r, 1) que o jogador i recebe e verifica com sucesso, ele as propaga apenas se o hash o valor da credencial que contém é o menor entre os valores hash das credenciais contidas em todas as mensagens (r, 1) que ele recebeu e verificou com sucesso até agora. Além disso, como sugerido por Georgios Vlachos, é útil que cada líder potencial i também propague sua credencial \(\sigma\)r,1 eu separadamente: essas pequenas mensagens viajam mais rápido que os blocos, garantem a propagação oportuna do mr,1 j's onde as credenciais contidas têm valores hash pequenos, enquanto fazem aquelas com valores hash grandes desaparecer rapidamente. Etapa 2: A primeira etapa do GC do protocolo de consenso graduado Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 2 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,2 ou não. • Se i /\(\in\)SV r,2 então i interrompe imediatamente a sua própria execução do Passo 2. • Se i \(\in\)SV r,2, então depois de esperar um período de tempo t2 \(\triangleq\) \(\lambda\) + Λ, i age da seguinte forma. 1. Ele encontra o usuário \(\ell\) tal que H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) para todas as credenciais \(\sigma\)r,1 j que fazem parte as mensagens (r, 1) verificadas com sucesso que ele recebeu até agora.a 2. Se ele recebeu de \(\ell\) uma mensagem válida mr,1 \(\ell\) = (Br \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),b então eu defino v' eu \(\triangleq\)H(Br \(\ell\)); caso contrário, eu defino v′ eu \(\triangleq\) \(\bot\). 3. eu calculo a mensagem senhor,2 eu \(\triangleq\)(ESIGi(v′ eu), \(\sigma\)r,2 i ),c destrói sua chave secreta efêmera skr,2 i , e então propaga mr,2 eu. aEssencialmente, o usuário i decide em particular que o líder da rodada r é o usuário \(\ell\). bNovamente, as assinaturas do jogador \(\ell\) e os hashes foram todos verificados com sucesso e PAGUE r \(\ell\)no Brasil \(\ell\)é um conjunto de pagamento válido para rodada r - embora eu não verifique se PAY r \(\ell\)é máximo para \(\ell\)ou não. cA mensagem senhor,2 eu sinaliza que o jogador i considera v′ i é o hash do próximo bloco, ou considera o próximo bloco fique vazio. 17Ou seja, todas as assinaturas estão corretas e tanto o bloco quanto seu hash são válidos —embora eu não verifique se o conjunto de pagamentos incluído é máximo para o seu proponente ou não.
Etapa 3: A segunda etapa do GC Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 3 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,3 ou não. • Se i /\(\in\)SV r,3, então i interrompe imediatamente a sua própria execução do Passo 3. • Se i \(\in\)SV r,3, então depois de esperar um período de tempo t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ, i age da seguinte forma. 1. Se existe um valor v′ ̸= \(\bot\)tal que, entre todas as mensagens válidas mr,2 j ele recebeu, mais de 2/3 deles são da forma (ESIGj(v′), \(\sigma\)r,2 j ), sem qualquer contradição,a então ele calcula a mensagem mr,3 eu \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 eu). Caso contrário, ele calcula mr,3 eu \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 eu). 2. eu destruo sua chave secreta efêmera skr,3 i , e então propaga mr,3 eu. aOu seja, ele não recebeu duas mensagens válidas contendo ESIGj(v′) e um ESIGj(v′′) diferente respectivamente, de um jogador j. Aqui e daqui em diante, exceto nas Condições Finais definidas posteriormente, sempre que um jogador honesto deseja mensagens de um determinado formato, mensagens contraditórias nunca são contadas ou consideradas válidas.Etapa 4: Resultado do GC e a primeira etapa do BBA⋆ Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 4 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,4 ou não. • Se i /\(\in\)SV r,4, então i his interrompe imediatamente a execução do Passo 4. • Se i \(\in\)SV r,4, então depois de esperar um período de tempo t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ, i age da seguinte forma. 1. Ele calcula vi e gi, a saída do GC, como segue. (a) Se existe um valor v′ ̸= \(\bot\)tal que, entre todas as mensagens válidas mr,3 j ele tem recebidos, mais de 2/3 deles são da forma (ESIGj(v′), \(\sigma\)r,3 j ), então ele define vi \(\triangleq\)v′ e gi \(\triangleq\)2. (b) Caso contrário, se existir um valor v′ ̸= \(\bot\)tal que, entre todas as mensagens válidas senhor,3 j ele recebeu, mais de 1/3 deles são da forma (ESIGj(v′), \(\sigma\)r,3 j), então ele define vi \(\triangleq\)v′ e gi \(\triangleq\)1.a (c) Caso contrário, ele define vi \(\triangleq\)H(Br ǫ ) e gi \(\triangleq\)0. 2. Ele calcula bi, a entrada de BBA⋆, como segue: bi \(\triangleq\)0 se gi = 2, e bi \(\triangleq\)1 caso contrário. 3. Ele calcula a mensagem mr,4 eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), destrói seu efêmero chave secreta skr,4 i , e então propaga mr,4 eu. aPode-se provar que v′ no caso (b), se existir, deve ser único.
Etapa s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Uma etapa de BBA⋆ com moeda fixada em 0 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir da terceira componente de Br−1 e verifica se i \(\in\)SV r,s. • Se i /\(\in\)SV r,s, então i interrompe imediatamente a sua própria execução do Passo s. • Se i \(\in\)SV r,s então ele age da seguinte forma. – Ele espera até que um período de tempo ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ tenha passado. – Condição Final 0: Se, durante essa espera e em qualquer momento, existir uma string v ̸= \(\bot\)e um passo s′ tal que (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda em 0, (b) recebi pelo menos tH = 2n 3 + 1 mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),a e (c) recebi uma mensagem válida senhor,1 j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) com v = H(Br j ), então, eu interrompo sua própria execução do Passo s (e de fato da rodada r) imediatamente, sem propagar qualquer coisa; define Br = Br j; e define seu próprio CERT r como o conjunto de mensagens senhor,s′−1 j da subetapa (b).b – Condição Final 1: Se, durante essa espera e em qualquer momento, existir um passo s′ tal que (a') 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda para 1, e (b') i recebeu pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),c então, eu interrompo sua própria execução do Passo s (e de fato da rodada r) imediatamente, sem propagar qualquer coisa; define Br = Br ǫ; e define seu próprio CERT r como o conjunto de mensagens senhor,s′−1 j da subetapa (b'). – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele define vi como o voto majoritário dos vj nos segundos componentes de todos os votos válidos. senhor,s−1 j é o que ele recebeu. Ele calcula bi da seguinte maneira. Se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)0. Caso contrário, se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)1. Caso contrário, ele define bi \(\triangleq\)0. Ele computa a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), destrói seu efêmero chave secreta skr,s i e então propaga mr,s eu. aEssa mensagem do jogador j é contada mesmo que o jogador i também tenha recebido uma mensagem de j assinando por 1. Coisas semelhantes para a Condição Final 1. Conforme mostrado na análise, isso é feito para garantir que todos os usuários honestos saibam Br dentro do tempo \(\lambda\) um do outro. bO usuário i agora conhece Br e seus próprios acabamentos de rodada. Ele ainda ajuda a propagar mensagens como um usuário genérico, mas não inicia nenhuma propagação como um verificador (r, s). Em particular, ele ajudou a propagar todas as mensagens em seu CERT r, o que é suficiente para o nosso protocolo. Observe que ele também deve definir bi \(\triangleq\)0 para o protocolo BA binário, mas bi não é necessário neste caso de qualquer maneira. Coisas semelhantes para todas as instruções futuras. cNeste caso, não importa quais são os vj’s.Etapa s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Uma etapa de BBA⋆ fixada em moeda para 1 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,s ou não. • Se i /\(\in\)SV r,s, então i interrompe imediatamente a sua própria execução do Passo s. • Se i \(\in\)SV r,s então ele faz o seguinte. – Ele espera até que um período de tempo ts \(\triangleq\)(2s −3)\(\lambda\) + Λ tenha passado. – Condição Final 0: As mesmas instruções das etapas Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções das etapas Coin-Fixed-To-0. – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele define vi como o voto majoritário dos vj nos segundos componentes de todos os votos válidos. senhor,s−1 j é o que ele recebeu. Ele calcula bi da seguinte maneira. Se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)0. Caso contrário, se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)1. Caso contrário, ele define bi \(\triangleq\)1. Ele computa a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), destrói seu efêmero chave secreta skr,s i e então propaga mr,s eu.
Etapa s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Uma etapa de BBA⋆ com moeda genuinamente invertida Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,s ou não. • Se i /\(\in\)SV r,s, então i interrompe imediatamente a sua própria execução do Passo s. • Se i \(\in\)SV r,s então ele faz o seguinte. – Ele espera até que um período de tempo ts \(\triangleq\)(2s −3)\(\lambda\) + Λ tenha passado. – Condição Final 0: As mesmas instruções das etapas Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções das etapas Coin-Fixed-To-0. – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele define vi como o voto majoritário dos vj nos segundos componentes de todos os votos válidos. senhor,s−1 j é o que ele recebeu. Ele calcula bi da seguinte maneira. Se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)0. Caso contrário, se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)1. Caso contrário, seja SV r,s−1 eu ser o conjunto de (r, s −1)-verificadores dos quais ele recebeu um valor válido mensagem senhor,s-1 j . Ele define bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 eu H(\(\sigma\)r,s−1 j )). Ele computa a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), destrói seu efêmero chave secreta skr,s i e então propaga mr,s eu.
Etapa m + 3: A última etapa do BBA⋆a Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa m + 3 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,m+3 ou não. • Se i /\(\in\)SV r,m+3, então i interrompe imediatamente a sua própria execução do Passo m + 3. • Se i \(\in\)SV r,m+3 então ele faz o seguinte. – Ele espera até que um período de tempo tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ tenha passado. – Condição Final 0: As mesmas instruções das etapas Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções das etapas Coin-Fixed-To-0. – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele definei \(\triangleq\)1 e Br \(\triangleq\)Br ǫ. Ele calcula a mensagem mr,m+3 eu = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 eu ), destrói seu chave secreta efêmera skr,m+3 eu , e então propaga mr,m+3 eu para certificar Br.b aCom probabilidade esmagadora, BBA⋆terminou antes desta etapa e especificamos esta etapa para completude. bUm certificado da Etapa m + 3 não precisa incluir ESIGi(outi). Nós o incluímos apenas por uniformidade: o os certificados agora têm um formato uniforme, independentemente da etapa em que são gerados.Reconstrução do Bloco Round-r por Não-Verificadores Instruções para cada usuário i no sistema: O usuário i inicia sua própria rodada r assim que souber Br−1, e espera pelas informações do bloco como segue. – Se, durante essa espera e em qualquer momento, existir uma string v e um passo s′ tal isso (a) 5 \(\leq\)s′ \(\leq\)m + 3 com s′ −2 ≡0 mod 3, (b) recebi pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) e (c) recebi uma mensagem válida senhor,1 j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) com v = H(Br j ), então, i interrompe imediatamente sua própria execução da rodada r; define Br = Br j; e define seu próprio CERT r ser o conjunto de mensagens mr,s′−1 j do subpasso (b). – Se, durante essa espera e em qualquer momento, existir uma etapa s′ tal que (a') 6 \(\leq\)s′ \(\leq\)m + 3 com s′ −2 ≡1 mod 3, e (b') i recebeu pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ), então, i interrompe imediatamente sua própria execução da rodada r; define Br = Br ǫ; e define seu próprio CERT r ser o conjunto de mensagens mr,s′−1 j da subetapa (b'). – Se, durante essa espera e em qualquer momento, recebi pelo menos mensagens válidas senhor,m+3 j = (ESIGj(1), ESIGj(H(Br ǫ )), \(\sigma\)r,m+3 j ), então eu interrompo sua própria execução da rodada r imediatamente, define Br = Br ǫ , e define seu próprio CERT r como o conjunto de mensagens mr,m+3 j por 1 e H(Br ǫ). 5.5 Análise de Algorand ′ 1 Introduzimos as seguintes notações para cada rodada r \(\geq\)0, utilizada na análise. • Seja T r o momento em que o primeiro usuário honesto conhece Br−1. • Seja Ir+1 o intervalo [T r+1, T r+1 + \(\lambda\)]. Observe que T 0 = 0 pela inicialização do protocolo. Para cada s \(\geq\)1 e i \(\in\)SV r,s, lembre-se que ar,s eu e \(\beta\)r,s eu são respectivamente o horário de início e o horário de término da etapa s do jogador i. Além disso, lembre-se que ts = (2s −3)\(\lambda\) + Λ para cada 2 \(\leq\)s \(\leq\)m + 3. Além disso, sejam I0 \(\triangleq\){0} e t1 \(\triangleq\)0. Finalmente, lembre-se que Lr \(\leq\)m/3 é uma variável aleatória que representa o número de tentativas de Bernoulli precisava ver um 1, quando cada tentativa é 1 com probabilidade ph 2 e há no máximo m/3 tentativas. Se tudo as tentativas falham então Lr \(\triangleq\)m/3. Na análise ignoramos o tempo de cálculo, pois é de facto insignificante em relação ao tempo necessário para propagar mensagens. Em qualquer caso, usando \(\lambda\) e Λ ligeiramente maiores, o tempo de cálculo pode ser incorporado diretamente na análise. A maioria das declarações abaixo são sustentadas “com esmagadora probabilidade”, e não podemos enfatizar repetidamente esse fato na análise.5.6 Teorema Principal Teorema 5.1. As seguintes propriedades são válidas com probabilidade esmagadora para cada rodada r \(\geq\)0: 1. Todos os usuários honestos concordam com o mesmo bloco Br. 2. Quando o líder \(\ell\)r é honesto, o bloco Br é gerado por \(\ell\)r, Br contém um conjunto de pagamentos máximo recebido por \(\ell\)r no tempo \(\alpha\)r,1 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ e todos os usuários honestos conhecem Br na época intervalo Ir+1. 3. Quando o líder \(\ell\)r é malicioso, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. 4. ph = h2(1 + h −h2) para Lr, e o líder \(\ell\)r é honesto com probabilidade pelo menos ph. Antes de provar nosso teorema principal, façamos duas observações. Observações. • Geração de blocos e latência real. O tempo para gerar o bloco Br é definido como T r+1 −T r. Ou seja, é definido como a diferença entre a primeira vez que um usuário honesto aprende Br e a primeira vez que algum usuário honesto aprende Br−1. Quando o líder da rodada é honesto, a Propriedade 2 é nossa o teorema principal garante que o tempo exato para gerar Br é 8\(\lambda\) + Λ tempo, não importa o que o valor preciso de h > 2/3 pode ser. Quando o líder é malicioso, a Propriedade 3 implica que o o tempo esperado para gerar Br é limitado por (12 ph + 10)\(\lambda\) + Λ, novamente não importa a precisão valor de h.18 Entretanto, o tempo esperado para gerar Br depende do valor preciso de h. Na verdade, pela Propriedade 4, ph = h2(1 + h −h2) e o líder é honesto com probabilidade pelo menos ph, portanto 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\) + Λ). Por exemplo, se h = 80%, então E[T r+1 −T r] \(\leq\)12,7\(\lambda\) + Λ. • \(\lambda\) versus Λ. Observe que o tamanho das mensagens enviadas pelos verificadores em uma etapa Algorand ′ é dominado pelo comprimento das chaves de assinatura digital, que podem permanecer fixas, mesmo quando o número de usuários é enorme. Observe também que, em qualquer passo s > 1, o mesmo número esperado n de verificadores pode ser usado se o número de usuários for 100 mil, 100 milhões ou 100 milhões. Isso ocorre porque n apenas depende de h e F. Em suma, portanto, salvo uma necessidade repentina de aumentar o comprimento da chave secreta, o valor de \(\lambda\) deve permanecer o mesmo, não importa quão grande seja o número de usuários no futuro previsível. Por outro lado, para qualquer taxa de transação, o número de transações cresce com o número de usuários. Portanto, para processar todas as novas transações em tempo hábil, o tamanho de um bloco deve também cresce com o número de usuários, fazendo com que Λ também cresça. Assim, no longo prazo, deveríamos ter \(\lambda\) << Λ. Conseqüentemente, é apropriado ter um coeficiente maior para \(\lambda\) e, na verdade, um coeficiente de 1 para Λ. Prova do Teorema 5.1. Provamos as Propriedades 1–3 por indução: assumindo que elas são válidas para a rodada r −1 (sem perda de generalidade, eles são válidos automaticamente para “rodada -1” quando r = 0), nós os provamos para rodada R. 18De fato, E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10)\(\lambda\) + Λ.Como Br−1 é definido exclusivamente pela hipótese indutiva, o conjunto SV r,s é definido exclusivamente para cada etapa s da rodada r. Pela escolha de n1, SV r,1 ̸= \(\emptyset\)com probabilidade esmagadora. Nós agora enuncie os dois lemas a seguir, provados nas Seções 5.7 e 5.8. Durante toda a indução e em nas provas dos dois lemas, a análise para a rodada 0 é quase a mesma que a etapa indutiva, e destacaremos as diferenças quando elas ocorrerem. Lema 5.2. [Lema da completude] Assumindo que as propriedades 1–3 são válidas para a rodada r−1, quando o líder \(\ell\)r é honesto, com probabilidade esmagadora, • Todos os usuários honestos concordam com o mesmo bloco Br, que é gerado por \(\ell\)r e contém um valor máximo conjunto de pagamentos recebido por \(\ell\)r no tempo \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; e • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. Lema 5.3. [Lema de Solidez] Assumindo que as Propriedades 1–3 são válidas para a rodada r −1, quando o líder \(\ell\)r é malicioso, com probabilidade esmagadora, todos os usuários honestos concordam com o mesmo bloco Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. As propriedades 1–3 são válidas aplicando os Lemas 5.2 e 5.3 a r = 0 e à etapa indutiva. Finalmente, reafirmamos a Propriedade 4 como o seguinte lema, provado na Seção 5.9. Lema 5.4. Dadas as propriedades 1–3 para cada rodada antes de r, ph = h2(1 + h −h2) para Lr, e o o líder \(\ell\)r é honesto com probabilidade de pelo menos ph. Combinando os três lemas acima, o Teorema 5.1 é válido. ■ O lema abaixo afirma várias propriedades importantes sobre o round r dado o indutivo hipótese, e será usada nas provas dos três lemas acima. Lema 5.5. Suponha que as propriedades 1–3 sejam válidas para a rodada r −1. Para cada etapa s \(\geq\)1 da rodada r e cada verificador honesto i \(\in\)HSV r,s, temos que (a) \(\alpha\)r,s eu \(\in\)Ir; (b) se o jogador i esperou um período de tempo ts, então \(\beta\)r,s eu \(\in\)[T r + ts, T r + \(\lambda\) + ts] para r > 0 e \(\beta\)r,s eu = ts para r = 0; e (c) se o jogador i esperou um período de tempo ts, então no tempo \(\beta\)r,s eu, ele recebeu todas as mensagens enviado por todos os verificadores honestos j \(\in\)HSV r,s′ para todas as etapas s′ < s. Além disso, para cada passo s \(\geq\)3, temos que (d) não existem dois jogadores diferentes i, i′ \(\in\)SV r,s e dois valores diferentes v, v′ do mesmo duração, tal que ambos os jogadores esperaram um período de tempo ts, mais de 2/3 de todos os mensagens válidas senhor,s−1 j jogador que recebo assinou por v, e mais de 2/3 de todos os válidos mensagens senhor,s-1 j o jogador que i′ recebe assinou por v′. Prova. A propriedade (a) segue diretamente da hipótese indutiva, pois o jogador i conhece Br−1 no intervalo de tempo Ir e inicia seus próprios passos imediatamente. A propriedade (b) segue diretamente de (a): uma vez que jogador i esperou um certo tempo ts antes de agir, \(\beta\)r,s eu = \(\alpha\)r,s eu + ts. Observe que \(\alpha\)r,s eu = 0 para r = 0. Provamos agora a Propriedade (c). Se s = 2, então pela Propriedade (b), para todos os verificadores j \(\in\)HSV r,1 temos \(\beta\)r,s eu = \(\alpha\)r,s eu + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j +Λ.Como cada verificador j \(\in\)HSV r,1 envia sua mensagem no tempo \(\beta\)r,1 j e a mensagem chega a todos os honestos usuários em no máximo Λ tempo, por tempo \(\beta\)r,s eu jogador i recebeu as mensagens enviadas por todos os verificadores em HSV r,1 conforme desejado. Se s > 2, então ts = ts−1 + 2\(\lambda\). Pela Propriedade (b), para todas as etapas s′ < s e todos os verificadores j \(\in\)HSV r,s′, \(\beta\)r,s eu = \(\alpha\)r,s eu + 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\). Como cada verificador j \(\in\)HSV r,s′ envia sua mensagem no tempo \(\beta\)r,s′ j e a mensagem chega a todos os honestos usuários em no máximo \(\lambda\) tempo, por tempo \(\beta\)r,s eu jogador i recebeu todas as mensagens enviadas por todos os verificadores honestos em HSV r,s′ para todo s′ < s. Assim, a Propriedade (c) é válida. Finalmente, provamos a Propriedade (d). Observe que os verificadores j \(\in\)SV r,s−1 sinalizam no máximo duas coisas em Etapa s −1 usando suas chaves secretas efêmeras: um valor vj do mesmo comprimento que a saída do Função hash, e também um bit bj \(\in\){0, 1} se s −1 \(\geq\)4. É por isso que no enunciado do lema exigimos que v e v′ tenham o mesmo comprimento: muitos verificadores podem ter assinado um valor hash v e um bit b, portanto, ambos ultrapassam o limite de 2/3. Suponha, por contradição, que existam os verificadores desejados i, i′ e os valores v, v′. Observe que alguns verificadores maliciosos no MSV r,s−1 podem ter assinado v e v′, mas cada um deles honesto O verificador em HSV r,s−1 assinou no máximo um deles. Pela propriedade (c), tanto i quanto i′ receberam todas as mensagens enviadas por todos os verificadores honestos em HSV r,s−1. Seja HSV r,s−1(v) o conjunto de verificadores honestos (r, s −1) que assinaram v, MSV r,s−1 eu o conjunto de verificadores maliciosos (r, s −1) dos quais i recebeu uma mensagem válida, e MSV r,s−1 eu (v) o subconjunto de MSV r,s−1 eu de quem recebi uma assinatura de mensagem válida v. Pelos requisitos para eu e v, temos razão \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 eu (v)| |HSV r,s−1| + |MSV r,s−1 eu |
2 3. (1) Nós primeiro mostramos |MSV r,s−1 eu (v)| \(\leq\)|HSV r,s−1(v)|. (2) Supondo o contrário, pelas relações entre os parâmetros, com probabilidade esmagadora |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 eu |, assim razão < |HSV r,s−1(v)| + |MSV r,s−1 eu (v)| 3|MSV r,s−1 eu | < 2|MSV r,s−1 eu (v)| 3|MSV r,s−1 eu | \(\leq\)2 3, contradizendo a desigualdade 1. A seguir, pela Desigualdade 1 temos 2|HSV r,s−1| + 2|MSV r,s−1 eu | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 eu (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 eu | + |MSV r,s−1 eu (v)|. Combinando com a Desigualdade 2, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 eu (v)| \(\leq\)4|HSV r,s−1(v)|, o que implica |HSV r,s−1(v)| > 1 2|HSV r,s−1|.Da mesma forma, pelos requisitos para i′ e v′, temos |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. Como um verificador honesto j \(\in\)HSV r,s−1 destrói sua chave secreta efêmera skr,s−1 j antes de propagar sua mensagem, o Adversário não pode falsificar a assinatura de j para um valor que j não assinou, após aprendendo que j é um verificador. Assim, as duas desigualdades acima implicam |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|, uma contradição. Consequentemente, os desejados i, i′, v, v′ não existem, e A propriedade (d) é válida. ■ 5.7 O lema da completude Lema 5.2. [Lema da completude, reformulado] Assumindo que as propriedades 1–3 são válidas para a rodada r−1, quando o líder \(\ell\)r é honesto, com probabilidade esmagadora, • Todos os usuários honestos concordam com o mesmo bloco Br, que é gerado por \(\ell\)r e contém um valor máximo conjunto de pagamentos recebido por \(\ell\)r no tempo \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; e • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. Prova. Pela hipótese indutiva e Lema 5.5, para cada etapa s e verificador i \(\in\)HSV r,s, ar,s eu \(\in\)Ir. Abaixo analisamos o protocolo passo a passo. Etapa 1. Por definição, todo verificador honesto i \(\in\)HSV r,1 propaga a mensagem desejada mr,1 eu em tempo \(\beta\)r,1 eu = \(\alpha\)r,1 eu, onde senhor,1 eu = (Br eu , esigi(H(Br eu )), \(\sigma\)r,1 eu), irmão eu = (r, PAGAR r eu, SIGi(Qr−1), H(Br−1)), e PAGUE r i é um conjunto de pagamentos máximo entre todos os pagamentos que vi até o momento \(\alpha\)r,1 eu. Etapa 2. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,2. Pelo Lema 5.5, quando o jogador i termina esperando no tempo \(\beta\)r,2 eu = \(\alpha\)r,2 eu + t2, ele recebeu todas as mensagens enviadas pelos verificadores em HSV r,1, incluindo senhor,1 \(\ell\)r. Pela definição de \(\ell\)r, não existe outro jogador em PKr−k cuja credencial seja hash valor é menor que H(\(\sigma\)r,1 \(\ell\)r). Claro, o Adversário pode corromper \(\ell\)r depois de ver que H(\(\sigma\)r,1 \(\ell\)r) é muito pequeno, mas a essa altura o jogador \(\ell\)r destruiu sua chave efêmera e a mensagem mr,1 \(\ell\)r foi propagado. Assim, o verificador i define seu próprio líder como o jogador \(\ell\)r. Assim, no tempo \(\beta\)r,2 eu, verificador i propaga mr,2 eu = (ESIGi(v′ eu), \(\sigma\)r,2 eu), onde v′ eu = H(Br \(\ell\)r). Quando r = 0, a única diferença é que \(\beta\)r,2 eu = t2 em vez de estar em um intervalo. Coisas semelhantes podem ser ditas para passos futuros e não os enfatizarei novamente. Etapa 3. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,3. Pelo Lema 5.5, quando o jogador i termina esperando no tempo \(\beta\)r,3 eu = \(\alpha\)r,3 eu + t3, ele recebeu todas as mensagens enviadas pelos verificadores em HSV r,2. Pelas relações entre os parâmetros, com probabilidade esmagadora |HSV r,2| > 2|MSV r,2|. Além disso, nenhum verificador honesto assinaria mensagens contraditórias, e o Adversário não pode falsificar a assinatura de um verificador honesto depois que este último tiver destruído seu correspondente chave secreta efêmera. Assim, mais de 2/3 de todas as mensagens (r, 2) válidas que recebi são de verificadores honestos e da forma mr,2 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,2 j ), sem contradição. Assim, no tempo \(\beta\)r,3 eu jogador i propaga mr,3 eu = (ESIGi(v′), \(\sigma\)r,3 eu ), onde v′ = H(Br \(\ell\)r).Etapa 4. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,4. Pelo Lema 5.5, o jogador i recebeu todos mensagens enviadas pelos verificadores no HSV r,3 quando ele termina de esperar no tempo \(\beta\)r,4 eu = \(\alpha\)r,4 eu +t4. Semelhante a Etapa 3, mais de 2/3 de todas as mensagens (r, 3) válidas que recebi são de verificadores honestos e da forma senhor,3 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,3 j). Assim, o jogador i define vi = H(Br \(\ell\)r), gi = 2 e bi = 0. No tempo \(\beta\)r,4 eu = \(\alpha\)r,4 eu +t4 ele propaga senhor,4 eu = (ESIGi(0), ESIGi(H(Br \(\ell\)r)), \(\sigma\)r,4 eu). Etapa 5. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,5. Pelo Lema 5.5, jogador eu teria recebeu todas as mensagens enviadas pelos verificadores no HSV r,4 se ele esperou até o tempo \(\alpha\)r,5 eu + t5. Observe que |HSV r,4| \(\geq\)tH.19 Observe também que todos os verificadores em HSV r,4 assinaram para H(Br \(\ell\)r). Como |MSV r,4| < tH, não existe v′ ̸= H(Br \(\ell\)r) que poderia ter sido assinado por tH verificadores em SV r,4 (que seriam necessariamente maliciosos), então o jogador i não para antes de ter recebeu mensagens válidas mr,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,4 j). Seja T o momento em que o último evento acontece. Algumas dessas mensagens podem ser de jogadores maliciosos, mas porque |MSV r,4| < tH, pelo menos um deles é de um verificador honesto em HSV r,4 e é enviado após o tempo Tr+t4. Assim, T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, e no momento T o jogador i também recebeu a mensagem senhor,1 \(\ell\)r. Pela construção do protocolo, o jogador i para no tempo \(\beta\)r,5 eu = T sem propagar qualquer coisa; define Br = Br \(\ell\)r; e define seu próprio CERT r como o conjunto de (r, 4) mensagens para 0 e H(Br \(\ell\)r) que ele recebeu. Etapa s > 5. Da mesma forma, para qualquer passo s > 5 e qualquer verificador i \(\in\)HSV r,s, o jogador i teria recebeu todas as mensagens enviadas pelos verificadores no HSV r,4 se ele esperou até o tempo \(\alpha\)r,s eu + ts. Pelo mesma análise, jogador i para sem propagar nada, configurando Br = Br \(\ell\)r (e definindo seu próprio CERT r corretamente). É claro que os verificadores maliciosos podem não parar e podem propagar mensagens, mas porque |MSV r,s| <tH, por indução nenhum outro v′ poderia ser assinado pelos verificadores tH em qualquer passo 4 \(\leq\)s′ < s, portanto, os verificadores honestos só param porque receberam o valor válido (r, 4)-mensagens para 0 e H(Br \(\ell\)r). Reconstrução do Bloco Round-r. A análise do Passo 5 aplica-se a uma abordagem honesta genérica. usuário eu quase sem nenhuma alteração. Na verdade, o jogador i inicia sua própria rodada r no intervalo Ir e só irá parar no instante T quando tiver recebido tH mensagens válidas (r, 4) para H(Br \(\ell\)r). Novamente porque pelo menos uma dessas mensagens é de verificadores honestos e é enviada após o tempo T r + t4, o jogador i tem também recebeu senhor,1 \(\ell\)r pelo tempo T. Assim, ele define Br = Br \(\ell\)r com o CERT r adequado. Resta apenas mostrar que todos os usuários honestos terminam sua rodada r dentro do intervalo de tempo Ir+1. Pela análise da Etapa 5, todo verificador honesto i \(\in\)HSV r,5 conhece Br em ou antes de \(\alpha\)r,5 eu + t5 \(\leq\) Tr + \(\lambda\) + t5 = Tr + 8\(\lambda\) + Λ. Como T r+1 é o momento em que o primeiro usuário honesto conhece Br, temos T r+1 \(\leq\)T r + 8\(\lambda\) + Λ conforme desejado. Além disso, quando o jogador conhece o Br, ele já ajudou a propagar as mensagens em seu CERT r. Observe que todas essas mensagens serão recebidas por todos os usuários honestos dentro do tempo \(\lambda\), mesmo que 19Estritamente falando, isto acontece com uma probabilidade muito elevada, mas não necessariamente esmagadora. No entanto, isso a probabilidade afeta ligeiramente o tempo de execução do protocolo, mas não afeta sua correção. Quando h = 80%, então |HSV r,4| \(\geq\)tH com probabilidade 1 −10−8. Se este evento não ocorrer, o protocolo continuará por mais um 3 etapas. Como a probabilidade de isso não ocorrer em duas etapas é insignificante, o protocolo terminará na Etapa 8. Em expectativa, então, o número de etapas necessárias é quase 5.player ir foi o primeiro player a propagá-los. Além disso, seguindo a análise acima, temos T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, portanto, todos os usuários honestos receberam mr,1 \(\ell\)r por tempo T r+1 + \(\lambda\). Assim, todos os usuários honestos conhecem Br no intervalo de tempo Ir+1 = [T r+1, T r+1 + \(\lambda\)]. Finalmente, para r = 0 temos na verdade T 1 \(\leq\)t4 + \(\lambda\) = 6\(\lambda\) + Λ. Combinando tudo junto, O lema 5.2 é válido. ■ 5.8 O Lema da Solidez Lema 5.3. [Lema da Solidez, reformulado] Assumindo que as Propriedades 1–3 são válidas para a rodada r −1, quando o líder \(\ell\)r é malicioso, com grande probabilidade, todos os usuários honestos concordam com o mesmo bloco Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. Prova. Consideramos as duas partes do protocolo, GC e BBA⋆, separadamente. GC. Pela hipótese indutiva e pelo Lema 5.5, para qualquer passo s \(\in\){2, 3, 4} e qualquer passo honesto verificador i \(\in\)HSV r,s, quando o jogador i atua no tempo \(\beta\)r,s eu = \(\alpha\)r,s eu +ts, ele recebeu todas as mensagens enviadas por todos os verificadores honestos nas etapas s′ < s. Distinguimos dois casos possíveis para o passo 4. Caso 1. Nenhum verificador i \(\in\)HSV r,4 define gi = 2. Neste caso, por definição bi = 1 para todos os verificadores i \(\in\)HSV r,4. Ou seja, eles começam com um acordo sobre 1 no protocolo BA binário. Eles podem não ter um acordo sobre seus vis, mas isso não importa, como veremos no BA binário. Caso 2. Existe um verificador ˆi \(\in\)HSV r,4 tal que gˆi = 2. Neste caso, mostramos que (1) gi \(\geq\)1 para todo i \(\in\)HSV r,4, (2) existe um valor v′ tal que vi = v′ para todo i \(\in\)HSV r,4, e (3) existe uma mensagem válida mr,1 \(\ell\) de algum verificador \(\ell\) \(\in\)SV r,1 tal que v′ = H(Br \(\ell\)). Na verdade, como o jogador ˆi é honesto e define gˆi = 2, mais de 2/3 de todas as mensagens válidas mr,3 j ele recebeu são para o mesmo valor v′ ̸= \(\bot\), e ele definiu vˆi = v′. Pela Propriedade (d) no Lema 5.5, para qualquer outro verificador honesto (r, 4) i, não pode ser que mais de 2/3 de todas as mensagens válidas mr,3 j que i′ recebeu têm o mesmo valor v′′ ̸= v′. Conseqüentemente, se i definir gi = 2, deve ser que i tenha visto > 2/3 de maioria para v′ também e defina vi = v′, conforme desejado. Agora considere um verificador arbitrário i \(\in\)HSV r,4 com gi < 2. Semelhante à análise de Propriedade (d) no Lema 5.5, porque o jogador ˆi obteve > 2/3 de maioria para v′, mais de 1 2|HSV r,3| honesto (r, 3)-verificadores assinaram v′. Porque recebi todas as mensagens de verificadores honestos (r, 3) de tempo \(\beta\)r,4 eu = \(\alpha\)r,4 eu + t4, ele recebeu em particular mais de 1 2|HSV r,3| mensagens deles para v'. Porque |HSV r,3| > 2|MSV r,3|, i obteve > 1/3 de maioria para v′. Assim, jogador i define gi = 1 e a propriedade (1) é válida. O jogador i necessariamente define vi = v′? Suponha que exista um valor diferente v′′ ̸= \(\bot\)tal que o jogador i também obteve > 1/3 de maioria para v′′. Algumas dessas mensagens podem ser de mensagens maliciosas verificadores, mas pelo menos um deles é de algum verificador honesto j \(\in\)HSV r,3: de fato, porque |HSV r,3| > 2|MSV r,3| e recebi todas as mensagens do HSV r,3, o conjunto de malware verificadores de quem i recebeu uma mensagem válida (r, 3) conta como <1/3 de todas as mensagens válidas mensagens que recebeu.Por definição, o jogador j deve ter visto > 2/3 de maioria para v′′ entre todas as mensagens (r, 2) válidas ele recebeu. No entanto, já temos que alguns outros verificadores (r, 3) honestos viram Maioria de 2/3 para v′ (porque assinaram v′). Pela Propriedade (d) do Lema 5.5, isso não pode acontecer e tal valor v′′ não existe. Assim, o jogador i deve ter definido vi = v′ conforme desejado, e Propriedade (2) é válida. Finalmente, dado que alguns verificadores (r, 3) honestos viram uma maioria > 2/3 para v′, alguns (na verdade, mais da metade dos verificadores) honestos (r, 2) assinaram v′ e propagaram suas mensagens. Pela construção do protocolo, aqueles verificadores (r, 2) honestos devem ter recebido um valor válido. mensagem senhor,1 \(\ell\) de algum jogador \(\ell\) \(\in\)SV r,1 com v′ = H(Br \(\ell\)), portanto a Propriedade (3) é válida. BBA⋆. Novamente distinguimos dois casos. Caso 1. Todos os verificadores i \(\in\)HSV r,4 possuem bi = 1. Isso acontece seguindo o Caso 1 do GC. Como |MSV r,4| < tH, neste caso não há verificador em SV r,5 poderia coletar ou gerar mensagens válidas (r, 4) para o bit 0. Assim, nenhum verificador honesto em HSV r,5 pararia porque conhece um bloco não vazio, o Ir. Além disso, embora existam pelo menos tH mensagens (r, 4) válidas para o bit 1, s′ = 5 não satisfaz s′ −2 ≡1 mod 3, portanto, nenhum verificador honesto em HSV r,5 pararia porque sabe que Br = Br ǫ. Em vez disso, todo verificador i \(\in\)HSV r,5 atua no tempo \(\beta\)r,5 eu = \(\alpha\)r,5 eu + t5, quando ele tiver recebido todos mensagens enviadas pelo HSV r,4 seguindo o Lema 5.5. Assim, o jogador i obteve > 2/3 de maioria para 1 e define bi = 1. Na Etapa 6, que é uma etapa Coin-Fixed-To-1, embora s′ = 5 satisfaça s′ −2 ≡0 mod 3, há não existem mensagens válidas (r, 4) para o bit 0, portanto, nenhum verificador em HSV r,6 pararia porque ele conhece um bloco não vazio, Ir. No entanto, com s′ = 6, s′ −2 ≡1 mod 3 e existem |HSV r,5| \(\geq\)tH mensagens válidas (r, 5) para o bit 1 do HSV r,5. Para cada verificador i \(\in\)HSV r,6, seguindo o Lema 5.5, no tempo ou antes dele \(\alpha\)r,6 eu + jogador t6 eu recebeu todas as mensagens do HSV r,5, então paro sem propagar nada e configuro Br = Br ǫ. Seu CERT r é o conjunto de tH mensagens válidas (r, 5) mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) recebido por ele quando ele para. Em seguida, seja o jogador i um verificador honesto na etapa s > 6 ou um usuário honesto genérico (ou seja, não verificador). Semelhante à prova do Lema 5.2, o jogador i define Br = Br ǫ e define o seu próprio CERT r como o conjunto de tH mensagens válidas (r, 5) mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) ele tem recebido. Finalmente, semelhante ao Lema 5.2, Tr+1 \(\leq\) min i\(\in\)HSV r,6 \(\alpha\)r,6 eu + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1, porque o primeiro usuário honesto i que sabe que Br ajudou a propagar as mensagens (r, 5) em seu CERT r. Caso 2. Existe um verificador ˆi \(\in\)HSV r,4 com bˆi = 0. Isto acontece seguindo o Caso 2 do GC e é o caso mais complexo. Pela análise do GC, neste caso existe uma mensagem válida mr,1 \(\ell\) tal que vi = H(Br \(\ell\)) para todo i \(\in\)HSV r,4. Nota que os verificadores no HSV r,4 podem não ter um acordo sobre seus bi’s. Para qualquer passo s \(\in\){5, . . . , m + 3} e verificador i \(\in\)HSV r,s, pelo Lema 5.5 jogador eu teria recebeu todas as mensagens enviadas por todos os verificadores honestos em HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 se ele esperou por tempo ts.Consideramos agora o seguinte evento E: existe um passo s∗\(\geq\)5 tal que, pela primeira vez tempo no BA binário, algum jogador i∗\(\in\)SV r,s∗(seja malicioso ou honesto) deveria parar sem propagar nada. Usamos “deveria parar” para enfatizar o fato de que, se o jogador i∗ é malicioso, então ele pode fingir que não deveria parar de acordo com o protocolo e propagar mensagens da escolha do Adversário. Além disso, pela construção do protocolo, quer (E.a) i∗é capaz de coletar ou gerar pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) para os mesmos v e s′, com 5 \(\leq\)s′ \(\leq\)s∗and s′ −2 ≡0 mod 3; ou (E.b) i∗é capaz de coletar ou gerar pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ) para o mesmo s′, com 6 \(\leq\)s′ \(\leq\)s∗e s′ −2 ≡1 mod 3. Porque as mensagens honestas (r, s′ −1) são recebidas por todos os verificadores honestos (r, s′) antes de terminam de esperar na Etapa s′, e porque o Adversário recebe tudo o mais tardar no usuários honestos, sem perda de generalidade temos s′ = s∗e o jogador i∗é malicioso. Observe que não exigimos que o valor v em E.a fosse o hash de um bloco válido: como ficará claro na análise, v = H(Br \(\ell\)) neste subevento. Abaixo analisamos primeiro o Caso 2 após o evento E, e depois mostramos que o valor de s∗é essencialmente distribuído de acordo com Lr (portanto, o evento E acontece antes da Etapa m + 3 com esmagadora probabilidade, dadas as relações dos parâmetros). Para começar, para qualquer etapa 5 \(\leq\)s < s∗, todo verificador honesto i \(\in\)HSV r,s esperou o tempo ts e definiu vi como o voto majoritário do mensagens válidas (r, s−1) que ele recebeu. Como o jogador i recebeu todas as mensagens honestas (r, s−1) seguindo o Lema 5.5, uma vez que todos os verificadores honestos em HSV r,4 assinaram H(Br \(\ell\)) seguinte caso 2 do GC, e já que |HSV r,s−1| > 2|MSV r,s−1| para cada s, por indução temos aquele jogador i definiu vi = H(Br \(\ell\)). O mesmo vale para todo verificador honesto i \(\in\)HSV r,s∗que não para sem propagar qualquer coisa. Agora consideramos a Etapa s∗ e distinguimos quatro subcasos. Caso 2.1.a. O evento E.a acontece e existe um verificador honesto i′ \(\in\)HSV r,s∗que deveria também pare sem propagar nada. Neste caso, temos s∗−2 ≡0 mod 3 e o passo s∗ é um passo Coin-Fixed-To-0. Por definição, o jogador i′ recebeu pelo menos tH mensagens válidas (r, s∗−1) da forma (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 j ). Como todos os verificadores em HSV r,s∗−1 assinaram H(Br \(\ell\)) e |MSV r,s∗−1| <tH, temos v = H(Br \(\ell\)). Como pelo menos tH −|MSV r,s∗−1| \(\geq\)1 das (r, s∗−1)-mensagens recebidas por i′ para 0 e v são enviados por verificadores em HSV r,s∗−1 após o tempo T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\) +Λ, jogador i′ recebeu mr,1 \(\ell\) no momento em que ele recebe essas mensagens (r, s∗−1). Assim jogador i′ para sem propagar nada; define Br = Br \(\ell\); e define seu próprio CERT r para ser o conjunto de mensagens (r, s∗−1) válidas para 0 e v que ele recebeu. A seguir, mostramos que qualquer outro verificador i \(\in\)HSV r,s∗ parou com Br = Br \(\ell\), ou definiu bi = 0 e propagou (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s eu). Na verdade, porque Step s∗ é a primeira vez que algum verificador deve parar sem propagar nada, não há existe uma etapa s′ < s∗com s′ −2 ≡1 mod 3 tal que tH (r, s′ −1)-verificadores assinaram 1. Conseqüentemente, nenhum verificador em HSV r,s∗para com Br = Br ǫ.Além disso, como todos os verificadores honestos nas etapas {4, 5, . . . , s∗−1} assinaram H(Br \(\ell\)), existe não existe uma etapa s′ \(\leq\)s∗com s′ −2 ≡0 mod 3 tal que tH (r, s′ −1)-verificadores assinaram algum v′′ ̸= H(Br \(\ell\)) —de fato, |MSV r,s′−1| < tH. Conseqüentemente, nenhum verificador em HSV r,s∗stops com Br̸= Br ǫ e Br̸= Br \(\ell\). Isto é, se um jogador i \(\in\)HSV r,s∗ parou sem propagando qualquer coisa, ele deve ter definido Br = Br \(\ell\). Se um jogador i \(\in\)HSV r,s∗ esperou o tempo ts∗ e propagou uma mensagem no momento \(\beta\)r,s∗ eu = \(\alpha\)r,s∗ eu + ts∗, ele recebeu todas as mensagens do HSV r,s∗−1, incluindo pelo menos tH −|MSV r,s∗−1| deles para 0 e v. Se eu obtive uma maioria > 2/3 para 1, então ele viu mais de 2(tH −|MSV r,s∗−1|) mensagens (r, s∗−1) válidas para 1, com mais que 2tH −3|MSV r,s∗−1| deles de verificadores (r, s∗−1) honestos. No entanto, isso implica |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, contradizendo o fato de que |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n, que vem dos relacionamentos para os parâmetros. Assim, não vejo > 2/3 maioria para 1, e ele define bi = 0 porque a etapa s∗ é uma etapa com moeda fixada em 0. Como temos visto, vi = H(Br \(\ell\)). Assim i se propaga (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s i) como queríamos mostrar. Para a Etapa s∗+ 1, já que o jogador i′ ajudou a propagar as mensagens em seu CERT r no ou antes do tempo \(\alpha\)r,s∗ eu' + ts∗, todos os verificadores honestos em HSV r,s∗+1 receberam pelo menos mensagens válidas (r, s∗−1) para o bit 0 e valor H(Br \(\ell\)) antes ou antes de terminarem esperando. Além disso, os verificadores em HSV r,s∗+1 não irão parar antes de receber aqueles (r, s∗−1)- mensagens, porque não existem outras tH mensagens válidas (r, s′ −1) para o bit 1 com s′ −2 ≡1 mod 3 e 6 \(\leq\)s′ \(\leq\)s∗+ 1, pela definição do Passo s∗. Em particular, Passo s∗+ 1 em si é uma etapa Coin-Fixed-To-1, mas nenhum verificador honesto em HSV r,s∗ propagou uma mensagem para 1 e |MSV r,s∗| < tH. Assim, todos os verificadores honestos em HSV r,s∗+1 param sem propagar nada e definem Br = irmão \(\ell\): como antes, eles receberam mr,1 \(\ell\) antes de receberem as mensagens (r, s∗−1) desejadas.20 O mesmo pode ser dito de todos os verificadores honestos em etapas futuras e de todos os usuários honestos em geral. Em particular, todos eles sabem Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\) \(\alpha\)r,s∗ eu' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Caso 2.1.b. O evento E.b acontece e existe um verificador honesto i′ \(\in\)HSV r,s∗que deveria também pare sem propagar nada. Neste caso, temos s∗−2 ≡1 mod 3 e o passo s∗ é um passo Coin-Fixed-To-1. A análise é semelhante ao Caso 2.1.a e muitos detalhes foram omitidos. 20Se \(\ell\) for malicioso, ele poderá enviar mr,1 \(\ell\) tarde, esperando que alguns usuários/verificadores honestos não tenham recebido mr,1 \(\ell\) ainda quando receberem o certificado desejado por isso. No entanto, como o verificador ˆi \(\in\)HSV r,4 definiu bˆi = 0 e vˆi = H(Br \(\ell\)), como antes de termos que mais da metade dos verificadores honestos i \(\in\)HSV r,3 definiram vi = H(Br \(\ell\)). Isto implica ainda mais mais da metade dos verificadores honestos i \(\in\)HSV r,2 definiram vi = H(Br \(\ell\)), e todos os verificadores (r, 2) receberam mr,1 \(\ell\). Como o O adversário não consegue distinguir um verificador de um não-verificador, ele não pode visar a propagação de mr,1 \(\ell\) para (r, 2)-verificadores sem que os não-verificadores o vejam. Na verdade, com alta probabilidade, mais da metade (ou uma boa fração constante) de todos os usuários honestos viram mr,1 \(\ell\) depois de esperar por t2 desde o início de sua própria rodada r. A partir daqui, o tempo \(\lambda\)′ necessário para mr,1 \(\ell\) alcançar os usuários honestos restantes é muito menor que Λ e, para simplificar, não escreva na análise. Se 4\(\lambda\) \(\geq\) \(\lambda\)′ então a análise prossegue sem qualquer alteração: ao final da Etapa 4, todos usuários honestos teriam recebido mr,1 \(\ell\). Se o tamanho do bloco se tornar enorme e 4\(\lambda\) < \(\lambda\)′, então nas Etapas 3 e 4, o protocolo poderia pedir a cada verificador que esperasse por \(\lambda\)′/2 em vez de 2\(\lambda\), e a análise continua válida.Como antes, o jogador i′ deve ter recebido pelo menos tH mensagens válidas (r, s∗−1) da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 j ). Novamente pela definição de s∗, não existe um passo 5 \(\leq\)s′ < s∗com s′ −2 ≡0 mod 3, onde pelo menos tH (r, s′ −1)-verificadores assinaram 0 e o mesmo v. Assim o jogador i′ para sem propagar nada; define Br = Br ǫ; e conjuntos seu próprio CERT r seja o conjunto de mensagens (r, s∗−1) válidas para o bit 1 que ele recebeu. Além disso, qualquer outro verificador i \(\in\)HSV r,s∗ parou com Br = Br ǫ , ou definiu bi = 1 e propagado (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ eu ). Já que o jogador i′ ajudou a propagar as mensagens (r, s∗−1) em seu CERT r no tempo \(\alpha\)r,s∗ eu' + ts∗, novamente todos os verificadores honestos em HSV r,s∗+1 para sem propagar nada e define Br = Br ǫ . Da mesma forma, todos os honestos os usuários sabem Br = Br ǫ dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\) \(\alpha\)r,s∗ eu' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Caso 2.2.a. O evento E.a acontece e não existe um verificador honesto i′ \(\in\)HSV r,s∗quem também deve parar sem propagar nada. Neste caso, observe que o jogador i∗ poderia ter um CERT válido r i∗consistindo no tH desejado (r, s∗−1)-mensagens que o Adversário é capaz de coletar ou gerar. No entanto, o malicioso verificadores podem não ajudar a propagar essas mensagens, por isso não podemos concluir que o honesto os usuários os receberão no tempo \(\lambda\). Na verdade, |MSV r,s∗−1| dessas mensagens podem ser de verificadores (r, s∗−1) maliciosos, que não propagaram suas mensagens e apenas enviaram para os verificadores maliciosos na etapa s∗. Semelhante ao Caso 2.1.a, aqui temos s∗−2 ≡0 mod 3, a etapa s∗ é uma etapa com moeda fixada em 0, e as mensagens (r, s∗−1) no CERT r i∗são para o bit 0 e v = H(Br \(\ell\)). Na verdade, todos honestos (r, s∗−1)-verificadores assinam v, portanto o Adversário não pode gerar as mensagens (r, s∗−1) válidas para um v′ diferente. Além disso, todos os verificadores (r, s∗) honestos esperaram o tempo ts∗ e não veem > 2/3 da maioria para o bit 1, novamente porque |HSV r,s∗−1| + 4|MSV r,s∗−1| <2n. Assim, todo verificador honesto i \(\in\)HSV r,s∗conjuntos bi = 0, vi = H(Br \(\ell\)) pela maioria dos votos e propaga mr,s∗ eu = (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s∗ eu ) no tempo \(\alpha\)r,s∗ eu + ts∗. Agora considere os verificadores honestos na Etapa s∗+ 1 (que é uma etapa de Moeda Fixada em 1). Se o O adversário realmente envia as mensagens no CERT r i∗para alguns deles e faz com que eles pare, então semelhante ao Caso 2.1.a, todos os usuários honestos sabem Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+1. Caso contrário, todos os verificadores honestos na Etapa s∗+1 receberam todas as mensagens (r, s∗) para 0 e H(Br \(\ell\)) do HSV r,s∗após o tempo de espera ts∗+1, o que leva a > 2/3 da maioria, porque |HSV r,s∗| > 2|MSV r,s∗|. Assim, todos os verificadores em HSV r,s∗+1 propagam suas mensagens para 0 e H(Br \(\ell\)) em conformidade. Observe que os verificadores em HSV r,s∗+1 não param em Br = Br \(\ell\), porque a etapa s∗+ 1 não é uma etapa com moeda fixada em 0. Agora considere os verificadores honestos na Etapa s∗+2 (que é uma etapa de Inversão Genuína da Moeda). Se o Adversário enviar as mensagens em CERT r i∗para alguns deles e faz com que parem, então, novamente, todos os usuários honestos sabem Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+2.Caso contrário, todos os verificadores honestos na Etapa s∗+ 2 receberam todas as mensagens (r, s∗+ 1) para 0 e H(Br \(\ell\)) do HSV r,s∗+1 após o tempo de espera ts∗+2, o que leva a uma maioria > 2/3. Assim todos eles propagam suas mensagens para 0 e H(Br \(\ell\)) respectivamente: é isso que eles fazem não “jogue uma moeda” neste caso. Novamente, observe que eles não param sem se propagar, porque a etapa s∗+ 2 não é uma etapa com moeda fixada em 0. Finalmente, para os verificadores honestos na Etapa s∗+3 (que é outra etapa de Moeda Fixada em 0), todos deles teriam recebido pelo menos tH mensagens válidas para 0 e H(Br \(\ell\)) de HSV s∗+2, se eles realmente esperarem o tempo ts∗+3. Assim, quer o Adversário envie ou não as mensagens no CERT r i∗para qualquer um deles, todos os verificadores em HSV r,s∗+3 param com Br = Br \(\ell\), sem propagar qualquer coisa. Dependendo de como o Adversário age, alguns deles podem ter seu próprio CERT r consistindo naquelas (r, s∗−1)-mensagens em CERT r i∗, e os outros têm seu próprio CERT r consistindo nessas mensagens (r, s∗+ 2). De qualquer forma, todos os usuários honestos saiba Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3. Caso 2.2.b. O evento E.b acontece e não existe um verificador honesto i′ \(\in\)HSV r,s∗quem também deve parar sem propagar nada. A análise neste caso é semelhante àquelas no Caso 2.1.b e Caso 2.2.a, portanto muitos detalhes foram omitidos. Em particular, CERT r i∗consiste nas tH mensagens desejadas (r, s∗−1) para o bit 1 que o Adversário é capaz de coletar ou gerar, s∗−2 ≡1 mod 3, Etapa s∗é um Etapa Coin-Fixed-To-1, e nenhum verificador (r, s∗) honesto poderia ter visto > 2/3 de maioria para 0. Assim, todo verificador i \(\in\)HSV r,s∗define bi = 1 e propaga mr,s∗ eu = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ eu ) no tempo \(\alpha\)r,s∗ eu + ts∗. Semelhante ao Caso 2.2.a, em no máximo mais 3 etapas (ou seja, o protocolo atinge a Etapa s∗+3, que é outra etapa Coin-Fixed-To-1), todos os usuários honestos sabem Br = Br ǫ dentro do intervalo de tempo Ir+1. Além disso, T r+1 pode ser \(\leq\)T r+\(\lambda\)+ts∗+1, ou \(\leq\)T r+\(\lambda\)+ts∗+2, ou \(\leq\)T r + \(\lambda\) + ts∗+3, dependendo de quando é a primeira vez que um verificador honesto é capaz de parar sem propagação. Combinando os quatro subcasos, temos que todos os usuários honestos conhecem Br dentro do intervalo de tempo Ir+1, com T r+1 \(\leq\)T r + \(\lambda\) + ts∗ nos casos 2.1.a e 2.1.b, e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 nos Casos 2.2.a e 2.2.b. Resta limitar s∗ e, portanto, T r+1 para o Caso 2, e fazemos isso considerando como muitas vezes as etapas Coin-Genuinely-Flipped são realmente executadas no protocolo: isto é, alguns verificadores honestos realmente jogaram uma moeda ao ar. Em particular, corrija arbitrariamente uma etapa s′ de moeda genuinamente invertida (ou seja, 7 \(\leq\)s′ \(\leq\)m + 2 e s′ −2 ≡2 mod 3), e seja \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j ). Por enquanto vamos assumir s′ < s∗, porque de outra forma nenhum verificador honesto realmente joga uma moeda na Etapa s′, de acordo com discussões. Pela definição de SV r,s′−1, o valor hash da credencial de \(\ell\)′ também é o menor entre todos os usuários em PKr-k. Como a função hash é uma oracle aleatória, idealmente o jogador \(\ell\)′ é honesto com probabilidade pelo menos h. Como mostraremos mais tarde, mesmo que o Adversário tente ao máximo prever o saída do aleatório oracle e inclina a probabilidade, o jogador \(\ell\) ′ ainda é honesto com a probabilidadepelo menos ph = h2(1 + h −h2). Abaixo consideramos o caso em que isso realmente acontece: isto é, \(\ell\)′ \(\in\)HSV r,s′−1. Observe que todo verificador honesto i \(\in\)HSV r,s′ recebeu todas as mensagens do HSV r,s′−1 por tempo \(\alpha\)r,s′ eu +ts′. Se o jogador i precisar jogar uma moeda (ou seja, ele não obteve > 2/3 da maioria por o mesmo bit b \(\in\){0, 1}), então ele define bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )). Se existir outro honesto verificador i′ \(\in\)HSV r,s′ que viu > 2/3 maioria para um bit b \(\in\){0, 1}, então por Propriedade (d) do Lema 5.5, nenhum verificador honesto em HSV r,s′ teria visto > 2/3 de maioria por um tempo b′̸=b. Como lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b com probabilidade 1/2, todos os verificadores honestos em HSV r,s′ alcançam um acordo sobre b com probabilidade 1/2. É claro que, se tal verificador i′ não existir, então todos verificadores honestos em HSV r,s′ concordam com o bit lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) com probabilidade 1. Combinando a probabilidade para \(\ell\)′ \(\in\)HSV r,s′−1, temos que os verificadores honestos em HSV r,s′ chegar a um acordo sobre um bit b \(\in\){0, 1} com probabilidade pelo menos ph 2 = h2(1+h−h2) 2 . Além disso, por indução na votação majoritária como antes, todos os verificadores honestos em HSV r,s′ têm seus vi definidos ser H(Br \(\ell\)). Assim, uma vez alcançado um acordo sobre b na Etapa s′, T r+1 é ou \(\leq\)T r + \(\lambda\) + ts′+1 ou \(\leq\)T r + \(\lambda\) + ts′+2, dependendo se b = 0 ou b = 1, seguindo a análise dos Casos 2.1.a e 2.1.b. Em particular, nenhuma etapa adicional de Coin-Genuinely-Flipped será executada: isto é, os verificadores em tais passos ainda verificam se eles são os verificadores e, portanto, esperam, mas todos irão parar sem propagar qualquer coisa. Assim, antes do Passo s∗, o número de vezes que os passos Coin-GenuinelyFlipped são executados é distribuído de acordo com a variável aleatória Lr. Deixando o Passo s′ ser a última etapa de Coin-Genuinely-Flipped de acordo com Lr, pela construção do protocolo nós temos s′ = 4 + 3Lr. Quando o Adversário deve fazer o Step s∗ acontecer se ele quiser atrasar T r+1 tanto quanto possível? Podemos até assumir que o Adversário conhece antecipadamente a realização de Lr. Se s∗> s′ então é inútil, porque os verificadores honestos já chegaram a um acordo em Passo s′. Com certeza, neste caso s∗seria s′ +1 ou s′ +2, novamente dependendo se b = 0 ou b = 1. No entanto, na verdade estes são os Casos 2.1.a e 2.1.b, e o T r+1 resultante é exatamente o o mesmo que nesse caso. Mais precisamente, T r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts′+2. Se s∗< s′ −3 —isto é, s∗está antes da penúltima etapa de lançamento genuíno da moeda— então por a análise dos Casos 2.2.a e 2.2.b, T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < T r + \(\lambda\) + ts′. Ou seja, o Adversário está na verdade fazendo com que o acordo sobre o Br aconteça de forma mais rápida. Se s∗= s′ −2 ou s′ −1 - isto é, a etapa Coin-Fixed-To-0 ou a etapa Coin-Fixed-To-1 imediatamente antes da Etapa s' - então, pela análise dos quatro subcasos, os verificadores honestos em A etapa s′ não consegue mais lançar moedas, porque elas pararam sem se propagar, ou viram maioria > 2/3 para o mesmo bit b. Portanto temos T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts′+2.Em suma, não importa qual seja s∗, temos 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\) + Λ, como queríamos mostrar. O pior caso é quando s∗= s′ −1 e o Caso 2.2.b acontece. Combinando os Casos 1 e 2 do protocolo BA binário, o Lema 5.3 é válido. ■ 5.9 Segurança do Qr Semente e Probabilidade de um Líder Honesto Resta provar o Lema 5.4. Lembre-se de que os verificadores na rodada r são retirados de PKr−k e são escolhidos de acordo com a quantidade Qr−1. A razão para introduzir o parâmetro lookback k é garantir que, na rodada r −k, quando o Adversário for capaz de adicionar novos usuários mal-intencionados para PKr−k, ele não pode prever a quantidade Qr−1 exceto com probabilidade desprezível. Observe que o A função hash é uma oracle aleatória e Qr−1 é uma de suas entradas ao selecionar verificadores para a rodada r. Assim, não importa quão usuários mal-intencionados sejam adicionados ao PKr-k, do ponto de vista do Adversário, cada um deles ainda é selecionado para ser um verificador em uma etapa de rodada r com a probabilidade necessária p (ou p1 para a Etapa 1). Mais precisamente, temos o seguinte lema. Lema 5.6. Com k = O(log1/2 F), para cada rodada r, com probabilidade esmagadora o Adversário não consultou Qr−1 para o oracle aleatório na rodada r −k. Prova. Procedemos por indução. Suponha que para cada rodada \(\gamma\) < r, o Adversário não questionou Q\(\gamma\)−1 ao aleatório oracle na rodada \(\gamma\) −k.21 Considere o seguinte jogo mental jogado por o Adversário na rodada r −k, tentando prever Qr−1. Na Etapa 1 de cada rodada \(\gamma\) = r −k,. . . , r −1, dado um Q\(\gamma\)−1 específico não consultado ao aleatório oracle, ordenando os jogadores i \(\in\)PK\(\gamma\)−k de acordo com os valores hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) cada vez mais, obtemos uma permutação aleatória sobre PK\(\gamma\)−k. Por definição, o líder \(\ell\) \(\gamma\) é o primeiro usuário na permutação e é honesto com probabilidade h. Além disso, quando PK\(\gamma\)−k é grande suficiente, para qualquer número inteiro x \(\geq\)1, a probabilidade de que os primeiros x usuários na permutação sejam todos malicioso, mas o (x + 1)st é honesto é (1 −h)xh. Se \(\ell\) \(\gamma\) for honesto, então Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). Como o Adversário não pode falsificar a assinatura de \(\ell\) \(\gamma\), Q\(\gamma\) é distribuído uniformemente aleatoriamente do ponto de vista do Adversário e, exceto com probabilidade exponencialmente pequena,22 não foi questionado para H na rodada r −k. Desde cada Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1 respectivamente é a saída de H com Q\(\gamma\), Q\(\gamma\)+1, . . . , Qr−2 como uma das entradas, todos eles parecem aleatórios para o Adversário e o Adversário não poderia ter consultado Qr−1 para H em rodada r −k. Conseqüentemente, o único caso em que o Adversário pode prever Qr−1 com boa probabilidade na rodada r−k é quando todos os líderes \(\ell\)r−k,. . . , \(\ell\)r−1 são maliciosos. Considere novamente uma rodada \(\gamma\) \(\in\){r−k . . . , r−1} e a permutação aleatória sobre PK\(\gamma\)−k induzida pelos valores hash correspondentes. Se para alguns x \(\geq\)2, os primeiros x −1 usuários na permutação são todos maliciosos e o x-ésimo é honesto, então o O adversário tem x escolhas possíveis para Q\(\gamma\): qualquer uma da forma H(SIGi(Q\(\gamma\)−1, \(\gamma\))), onde i é um dos 21Como k é um número inteiro pequeno, sem perda de generalidade pode-se assumir que as primeiras k rodadas do protocolo são executadas sob um ambiente seguro e a hipótese indutiva é válida para essas rodadas. 22Isto é, exponencial no comprimento da saída de H. Observe que esta probabilidade é bem menor que F.os primeiros x-1 usuários mal-intencionados, ao tornar o jogador i o verdadeiro líder da rodada \(\gamma\); ou H(Q\(\gamma\)−1, \(\gamma\)), por forçando B\(\gamma\) = B\(\gamma\) ǫ . Caso contrário, o líder da rodada \(\gamma\) será o primeiro usuário honesto na permutação e Qr−1 torna-se imprevisível para o Adversário. Qual das x opções de Q\(\gamma\) acima o Adversário deve seguir? Para ajudar o adversário responder a esta pergunta, no jogo mental nós realmente o tornamos mais poderoso do que ele realmente é, como segue. Em primeiro lugar, na realidade, o Adversário não pode calcular o hash do valor de um usuário honesto. assinatura, portanto não pode decidir, para cada Q\(\gamma\), o número x(Q\(\gamma\)) de usuários mal-intencionados no início da permutação aleatória na rodada \(\gamma\) + 1 induzida por Q\(\gamma\). No jogo mental, damos a ele o números x(Q\(\gamma\)) gratuitamente. Em segundo lugar, na realidade, ter os primeiros x usuários na permutação, todos ser malicioso não significa necessariamente que todos possam ser transformados em líderes, porque o hash os valores de suas assinaturas também devem ser menores que p1. Ignoramos essa restrição na mente jogo, dando ao Adversário ainda mais vantagens. É fácil perceber que no jogo mental a opção ótima para o Adversário, denotada por ˆQ\(\gamma\), é aquele que produz a maior sequência de usuários maliciosos no início do aleatório permutação na rodada \(\gamma\) + 1. Na verdade, dado um Q\(\gamma\) específico, o protocolo não depende de Q\(\gamma\)−1 mais e o Adversário pode focar apenas na nova permutação na rodada \(\gamma\) + 1, que tem o mesma distribuição para o número de usuários mal-intencionados no início. Assim, em cada rodada \(\gamma\), o ˆQ\(\gamma\) mencionado acima dá a ele o maior número de opções para Q\(\gamma\)+1 e, portanto, maximiza a probabilidade de que os líderes consecutivos sejam todos maliciosos. Portanto, no jogo mental o Adversário segue uma Cadeia de Markov da rodada r −k para arredondar r −1, com o espaço de estados sendo {0} \(\cup\){x : x \(\geq\)2}. O estado 0 representa o fato de que o o primeiro usuário na permutação aleatória na rodada atual \(\gamma\) é honesto, portanto o Adversário falha no jogo para previsão de Qr−1; e cada estado x \(\geq\)2 representa o fato de que os primeiros x −1 usuários no permutações são maliciosas e o x-ésimo é honesto, portanto o Adversário tem x opções para Q\(\gamma\). O as probabilidades de transição P(x, y) são as seguintes. • P(0, 0) = 1 e P(0, y) = 0 para qualquer y \(\geq\)2. Ou seja, o Adversário falha no jogo assim que o primeiro o usuário na permutação torna-se honesto. • P(x, 0) = hx para qualquer x \(\geq\)2. Ou seja, com probabilidade hx, todas as x permutações aleatórias têm seus primeiros usuários são honestos, portanto o Adversário falha no jogo na próxima rodada. • Para qualquer x \(\geq\)2 e y \(\geq\)2, P(x, y) é a probabilidade de que, entre as x permutações aleatórias induzida pelas x opções de Q\(\gamma\), a sequência mais longa de usuários mal-intencionados no início de alguns deles são y −1, portanto o Adversário tem y opções para Q\(\gamma\)+1 na próxima rodada. Isto é, P(x, y) = y−1 X eu=0 (1 −h)ih !x - y−2 X eu=0 (1 −h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. Observe que o estado 0 é o único estado absorvente na matriz de transição P, e todos os outros estados x tem uma probabilidade positiva de ir para 0. Estamos interessados em limitar superiormente o número k de rodadas necessárias para a Cadeia de Markov convergir para 0 com probabilidade esmagadora: isto é, não Não importa em que estado a cadeia comece, com uma probabilidade esmagadora de que o Adversário perca o jogo e falha em prever Qr−1 na rodada r −k. Considere a matriz de transição P (2) \(\triangleq\)P \(\cdot\) P após duas rodadas. É fácil ver que P (2) (0, 0) = 1 e P (2)(0, x) = 0 para qualquer x \(\geq\)2. Para qualquer x \(\geq\)2 e y \(\geq\)2, como P(0, y) = 0, temos 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, y).Deixando ¯h \(\triangleq\)1 −h, temos P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x e P(2)(x,y) = X z\(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. Abaixo calculamos o limite de P (2)(x,y) P(x,y) à medida que h vai para 1 - isto é, ¯h vai para 0. Observe que o maior a ordem de ¯h em P(x, y) é ¯hy−1, com coeficiente x. Assim, limão h \(\to\) 1 P(2)(x,y) P(x, y) =lim ¯h \(\to\) 0 P(2)(x,y) P(x, y) =lim ¯h \(\to\) 0 P(2)(x,y) x¯hy−1 + O(¯hy) = limão ¯h \(\to\) 0 P z\(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) =lim ¯h \(\to\) 0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = limão ¯h \(\to\) 0 2x¯h x¯hy−1 = lim ¯h \(\to\) 0 2¯h = 0. Quando h está suficientemente próximo de 1,23, temos P(2)(x,y) P(x, y) \(\leq\)1 2 para qualquer x \(\geq\)2 e y \(\geq\)2. Por indução, para qualquer k > 2, P (k) \(\triangleq\)P k é tal que • P (k)(0, 0) = 1, P (k)(0, x) = 0 para qualquer x \(\geq\)2, e • para qualquer x \(\geq\)2 e 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. Como P(x, y) \(\leq\)1, após 1−log2 F rodadas, a probabilidade de transição para qualquer estado y \(\geq\)2 é insignificante, começando com qualquer estado x \(\geq\)2. Embora existam muitos desses estados, é fácil ver que limão y→+∞ P(x, y) P(x, y + 1) = limão y→+∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = limão y→+∞ ¯hy−1 −¯hy ¯hy −¯hy+1 = 1 ¯h = 1 1-h. Portanto, cada linha x da matriz de transição P diminui como uma sequência geométrica com taxa 1 1-h > 2 quando y é grande o suficiente, e o mesmo vale para P (k). Assim, quando k é grande o suficiente, mas ainda assim na ordem de log1/2 F, P y\(\geq\)2 P (k)(x, y) < F para qualquer x \(\geq\)2. Ou seja, com uma probabilidade esmagadora o Adversário perde o jogo e não consegue prever Qr−1 na rodada r −k. Para h \(\in\)(2/3, 1], mais análise complexa mostra que existe uma constante C ligeiramente maior que 1/2, tal que é suficiente tomar k = O(logC F). Assim, o Lema 5.6 é válido. ■ Lema 5.4. (reapresentado) Dadas as propriedades 1–3 para cada rodada antes de r, ph = h2(1 + h −h2) para Lr, e o líder \(\ell\)r é honesto com probabilidade de pelo menos ph. 23Por exemplo, h = 80% conforme sugerido pelas escolhas específicas de parâmetros.
Prova. Seguindo o Lema 5.6, o Adversário não pode prever Qr−1 na rodada r −k, exceto com probabilidade desprezível. Observe que isso não significa que a probabilidade de um líder honesto seja h para cada rodada. Na verdade, dado o Qr-1, dependendo de quantos usuários mal-intencionados existem no início do a permutação aleatória de PKr−k, o Adversário pode ter mais de uma opção para Qr e portanto, pode aumentar a probabilidade de um líder malicioso na rodada r + 1 - mais uma vez estamos dando a ele algumas vantagens irrealistas como no Lema 5.6, de modo a simplificar a análise. No entanto, para cada Qr−1 que não foi questionado a H pelo Adversário na rodada r −k, por qualquer x \(\geq\)1, com probabilidade (1 −h)x−1h o primeiro usuário honesto ocorre na posição x no resultado permutação aleatória de PKr−k. Quando x = 1, a probabilidade de um líder honesto na rodada r + 1 é na verdade h; enquanto quando x = 2, o Adversário tem duas opções para Qr e a probabilidade resultante é h2. Somente considerando estes dois casos, temos que a probabilidade de um líder honesto na rodada r + 1 é pelo menos h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) conforme desejado. Observe que a probabilidade acima considera apenas a aleatoriedade no protocolo da rodada r −k para arredondar r. Quando toda a aleatoriedade da rodada 0 à rodada r é levada em consideração, Qr−1 é ainda menos previsível para o Adversário e a probabilidade de um líder honesto na rodada r + 1 é de pelo menos h2(1 + h −h2). Substituindo r + 1 por r e retrocedendo tudo em uma rodada, o líder \(\ell\)r é honesto com probabilidade de pelo menos h2(1 + h −h2), conforme desejado. Da mesma forma, em cada etapa s de inversão genuína da moeda, o “líder” dessa etapa - que é o verificador em SV r,s cuja credencial tem o menor valor hash, é honesto com probabilidade de pelo menos h2(1 + h-h2). Assim ph = h2(1 + h −h2) para Lr e o Lema 5.4 é válido. ■
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 Nesta seção, construímos uma versão de Algorand ′ trabalhando sob a seguinte suposição. Suposição da maioria honesta dos usuários: Mais de 2/3 dos usuários em cada PKr são honestos. Na Seção 8, mostramos como substituir a suposição acima pela desejada Maioria Honesta de Suposição de dinheiro. 6.1 Notações e parâmetros adicionais para Algorand ′ 2 Notações • \(\mu\) \(\in\)Z+: um limite superior pragmático para o número de etapas que, com probabilidade esmagadora, será realmente obtido em uma rodada. (Como veremos, o parâmetro \(\mu\) controla quantos eventos efêmeros chaves que um usuário prepara antecipadamente para cada rodada.) • Lr: uma variável aleatória que representa o número de tentativas de Bernoulli necessárias para obter 1, quando cada tentativa é 1 com probabilidade ph 2. Lr será usado para limitar o tempo necessário para gerar bloco Ir. • tH: um limite inferior para o número de verificadores honestos em uma etapa s > 1 da rodada r, tal que com probabilidade esmagadora (dados n e p), existem > tH verificadores honestos em SV r,s. Parâmetros • Relações entre vários parâmetros. — Para cada passo s > 1 da rodada r, n é escolhido de modo que, com probabilidade esmagadora,
|HSV r,s| >tH e |HSV r,s| + 2|MSV r,s| < 2tH. Observe que as duas desigualdades acima juntas implicam |HSV r,s| > 2|MSV r,s|: isto é, há é uma maioria honesta de 2/3 entre os verificadores selecionados. Quanto mais próximo de 1 for o valor de h, menor será n. Em particular, usamos (variantes de) Chernoffbounds para garantir que as condições desejadas se mantenham com uma probabilidade esmagadora. • Exemplos de escolhas de parâmetros importantes. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0,69n, k = 70. 6.2 Implementando chaves efêmeras em Algorand ′ 2 Lembre-se que um verificador i \(\in\)SV r,s assina digitalmente sua mensagem mr,s eu da etapa s na rodada r, em relação a uma chave pública efêmera pkr,s i , usando uma chave secreta efêmera skr,s eu que ele destrua prontamente depois de usar. Quando o número de passos possíveis que uma rodada pode dar é limitado por um determinado inteiro \(\mu\), já vimos como lidar de forma prática com chaves efêmeras. Por exemplo, como nós explicaram em Algorand ′ 1 (onde \(\mu\) = m + 3), para lidar com todas as suas possíveis chaves efêmeras, de uma rodada r′ para uma rodada r′ + 106, i gera um par (PMK, SMK), onde PMK mestre público chave de um esquema de assinatura baseado em identidade e SMK sua chave mestra secreta correspondente. Usuário eu divulga PMK e usa SMK para gerar a chave secreta de cada chave pública efêmera possível (e destrói SMK depois de fazer isso). O conjunto de chaves públicas efêmeras de i para o relevante rodadas é S = {i} \(\times\) {r′,. . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)}. (Conforme discutido, à medida que a rodada r′ + 106 se aproxima, eu “atualizo” seu par (PMK, SMK).) Na prática, se \(\mu\) for grande o suficiente, uma rodada de Algorand ′ 2 não levará mais do que \(\mu\) passos. Em princípio, no entanto, existe a possibilidade remota de que, para alguma rodada r, o número de etapas realmente tomadas excederá \(\mu\). Quando isso acontecer, eu não conseguirei assinar a mensagem dele, Sr. eu para qualquer passo s > \(\mu\), porque ele preparou antecipadamente apenas \(\mu\) chaves secretas para a rodada r. Além disso, ele não poderia preparar e divulgar um novo estoque de chaves efêmeras, conforme discutido anteriormente. Na verdade, fazer então, ele precisaria inserir uma nova chave mestra pública PMK′ em um novo bloco. Mas, deveria arredondar r Se você desse mais e mais passos, nenhum novo bloco seria gerado. No entanto, existem soluções. Por exemplo, posso usar a última chave efêmera da rodada r, pkr,\(\mu\) eu , como segue. Ele gera outro estoque de pares de chaves para a rodada r - por exemplo, (1) gerando outro par de chaves mestras (PMK, SMK); (2) usar este par para gerar outras, digamos, 106 chaves efêmeras, sk r,\(\mu\)+1 eu , . . . , sk r,\(\mu\)+106 eu , correspondendo às etapas \(\mu\)+1, ..., \(\mu\)+106 da rodada r; (3) usando skr,\(\mu\) eu para digitalmente assine PMK (e qualquer mensagem (r, \(\mu\)) se i \(\in\)SV r,\(\mu\)), relativa a pkr,\(\mu\) eu ; e (4) apagar SMK e skr,\(\mu\) eu . Devo me tornar um verificador em uma etapa \(\mu\) + s com s \(\in\){1, . . . , 106}, então eu assino digitalmente seu (r, \(\mu\) + s)- mensagem senhor,\(\mu\)+s eu em relação à sua nova chave pk r,\(\mu\)+s eu = (eu, r, \(\mu\) + s). Claro, para verificar esta assinatura de i, outros precisam ter certeza de que esta chave pública corresponde à nova chave mestra pública PMK de i. Assim, além desta assinatura, i transmite sua assinatura digital de PMK relativa a pkr,\(\mu\) eu . É claro que esta abordagem pode ser repetida quantas vezes forem necessárias, caso a rodada r continue para mais e mais passos! A última chave secreta efêmera é usada para autenticar um novo público mestre chave e, portanto, outro estoque de chaves efêmeras para a rodada r. E assim por diante.6.3 O protocolo real Algorand ′ 2 Lembre-se novamente que, em cada etapa s de uma rodada r, um verificador i \(\in\)SV r,s usa seu segredo público de longo prazo par de chaves para produzir sua credencial, \(\sigma\)r,s eu \(\triangleq\)SIGi(r, s, Qr−1), bem como SIGi Qr-1 no caso s = 1. O verificador i usa seu par de chaves efêmeras, (pkr,s eu, skr,s i ), para assinar qualquer outra mensagem m que possa ser necessário. Para simplificar, escrevemos esigi(m), em vez de sigpkr,s i (m), para denotar o efêmero próprio de i assinatura de m nesta etapa e escreva ESIGi(m) em vez de SIGpkr,s eu (m) \(\triangleq\)(eu, m, esigi(m)). Etapa 1: bloquear proposta Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 1 da rodada r assim que tiver CERT r−1, que permite que i calcule H(Br−1) e Qr−1 de forma inequívoca. • O usuário i usa Qr−1 para verificar se i \(\in\)SV r,1 ou não. Se i /\(\in\)SV r,1, ele não faz nada na Etapa 1. • Se i \(\in\)SV r,1, ou seja, se i for um líder potencial, então ele faz o seguinte. (a) Se eu vi B0, . . . , o próprio Br−1 (qualquer Bj = Bj ǫ pode ser facilmente derivado de seu valor hash no CERT j e, portanto, é assumido como “visto”), então ele coleta os pagamentos da rodada r que foram foi propagado para ele até agora e calcula um conjunto de pagamento máximo PAY r eu deles. (b) Se eu não vi todo B0,. . . , Br−1 ainda, então ele define PAY r eu = \(\emptyset\). (c) Em seguida, i calcula seu “bloco de candidatos” Br eu = (r, PAGAR r eu, SIGi(Qr−1), H(Br−1)). (c) Finalmente, i calcula a mensagem mr,1 eu = (Br eu , esigi(H(Br eu )), \(\sigma\)r,1 i ), destrói seu efêmero chave secreta skr,1 i , e então propaga duas mensagens, mr,1 eu e (SIGi(Qr−1), \(\sigma\)r,1 eu), separadamente, mas simultaneamente.a aQuando i é o líder, SIGi(Qr−1) permite que outros calculem Qr = H(SIGi(Qr−1), r).
Propagação Seletiva Para encurtar a execução global do Passo 1 e de toda a rodada, é importante que o (r, 1)- as mensagens são propagadas seletivamente. Ou seja, para cada usuário j no sistema, • Para a primeira mensagem (r, 1) que ele recebe e verifica com sucesso, se ela contém um bloco ou é apenas uma credencial e uma assinatura de Qr−1, o jogador j o propaga normalmente. • Para todas as outras mensagens (r, 1) que o jogador j recebe e verifica com sucesso, ele propaga somente se o valor hash da credencial que ela contém for o menor entre os valores hash das credenciais contidas em todas as mensagens (r, 1) que ele recebeu e verificou com sucesso para longe. • Entretanto, se j receber duas mensagens diferentes no formato mr,1 eu do mesmo jogador i,b ele descarta o segundo, não importa qual seja o valor hash da credencial de i. Observe que, na propagação seletiva, é útil que cada líder potencial i propague seu credencial \(\sigma\)r,1 eu separadamente do senhor,1 i:c essas pequenas mensagens viajam mais rápido que os blocos, certifique-se propagação oportuna do mr,1 i é onde as credenciais contidas têm valores hash pequenos, enquanto fazer com que aqueles com valores hash grandes desapareçam rapidamente. aOu seja, todas as assinaturas estão corretas e, se for no formato mr,1 i , tanto o bloco quanto seu hash são válidos —embora j não verifique se o conjunto de pagamentos incluído é máximo para i ou não. bO que significa que eu sou malicioso. cAgradecemos a Georgios Vlachos por sugerir isso.Etapa 2: A primeira etapa do GC do protocolo de consenso graduado Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 2 da rodada r assim que tiver CERT r-1. • O usuário i espera um tempo máximo t2 \(\triangleq\) \(\lambda\) + Λ. Enquanto espero, ajo da seguinte maneira. 1. Depois de esperar pelo tempo 2\(\lambda\), ele encontra o usuário \(\ell\) tal que H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j) para todos credenciais \(\sigma\)r,1 j que fazem parte das mensagens (r, 1) verificadas com sucesso que ele recebeu até agora.a 2. Se ele tem recebido um bloquear Br−1, qual partidas o hash valor H(Br−1) contido no CERT r−1,b e se ele recebeu de \(\ell\)uma mensagem válida mr,1 \(\ell\) = (Irmão \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),c então eu paro de esperar e defino v′ eu \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. Caso contrário, quando o tempo t2 acabar, i define v′ eu \(\triangleq\) \(\bot\). 4. Quando o valor de v′ i foi definido, eu calcula Qr−1 a partir do CERT r−1 e verifica se i \(\in\)SV r,2 ou não. 5. Se i \(\in\)SV r,2, i calcula a mensagem mr,2 eu \(\triangleq\)(ESIGi(v′ eu), \(\sigma\)r,2 i),d destrói seu efêmero chave secreta skr,2 i , e então propaga mr,2 eu. Caso contrário, eu para sem propagar qualquer coisa. aEssencialmente, o usuário i decide em particular que o líder da rodada r é o usuário \(\ell\). bClaro, se CERT r−1 indicar que Br−1 = Br−1 ǫ , então eu já “recebi” Br−1 no momento em que ele recebeu CERT r-1. cNovamente, as assinaturas do jogador \(\ell\) e os hashes foram todos verificados com sucesso e PAGUE r \(\ell\)no Brasil \(\ell\)é um conjunto de pagamento válido para rodada r - embora eu não verifique se PAY r \(\ell\)é máximo para \(\ell\)ou não. Se irmão \(\ell\) contém um conjunto de pagamentos vazio, então na verdade, não há necessidade de ver Br−1 antes de verificar se Br \(\ell\)é válido ou não. dA mensagem senhor,2 eu sinaliza que o jogador i considera o primeiro componente de v′ i será o hash do próximo bloco, ou considera o próximo bloco vazio.
Etapa 3: A segunda etapa do GC Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 3 da rodada r assim que tiver CERT r-1. • O usuário i espera um tempo máximo t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ. Enquanto espero, eu ajo como segue. 1. Se existe um valor v tal que ele recebeu pelo menos mensagens válidas mr,2 j de a forma (ESIGj(v), \(\sigma\)r,2 j ), sem qualquer contradição,a então ele para de esperar e define v' = v. 2. Caso contrário, quando o tempo t3 acabar, ele define v′ = \(\bot\). 3. Quando o valor de v′ for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se i \(\in\)SV r,3 ou não. 4. Se i \(\in\)SV r,3, então i calcula a mensagem mr,3 eu \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 i ), destrói seu chave secreta efêmera skr,3 i , e então propaga mr,3 eu. Caso contrário, eu paro sem propagar qualquer coisa. aOu seja, ele não recebeu duas mensagens válidas contendo ESIGj(v) e um ESIGj(ˆv) diferente respectivamente, de um jogador j. Aqui e daqui em diante, exceto nas Condições Finais definidas posteriormente, sempre que um jogador honesto deseja mensagens de um determinado formato, mensagens contraditórias nunca são contadas ou consideradas válidas.
Etapa 4: Resultado do GC e a primeira etapa do BBA⋆ Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 4 da rodada r assim que ele termina seu próprio Passo 3. • O usuário i espera um tempo máximo 2\(\lambda\).a Enquanto espera, i age da seguinte forma. 1. Ele calcula vi e gi, a saída do GC, como segue. (a) Se existe um valor v′ ̸= \(\bot\)tal que ele recebeu pelo menos tH mensagens válidas senhor,3 j = (ESIGj(v′), \(\sigma\)r,3 j ), então ele para de esperar e define vi \(\triangleq\)v′ e gi \(\triangleq\)2. (b) Se ele recebeu pelo menos as mensagens válidas mr,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ), então ele para esperando e define vi \(\triangleq\) \(\bot\) e gi \(\triangleq\)0.b (c) Caso contrário, quando o tempo 2\(\lambda\) acabar, se existir um valor v′ ̸= \(\bot\)tal que ele tenha recebeu pelo menos ⌈tH 2 ⌉mensagens válidas senhor,j j = (ESIGj(v′), \(\sigma\)r,3 j ), então ele define vi \(\triangleq\)v′ e gi \(\triangleq\)1.c (d) Caso contrário, quando o tempo 2\(\lambda\) acabar, ele define vi \(\triangleq\) \(\bot\) e gi \(\triangleq\)0. 2. Quando os valores vi e gi forem definidos, i calcula bi, a entrada de BBA⋆, como segue: bi \(\triangleq\)0 se gi = 2, e bi \(\triangleq\)1 caso contrário. 3. i calcula Qr−1 a partir do CERT r−1 e verifica se i \(\in\)SV r,4 ou não. 4. Se i \(\in\)SV r,4, ele calcula a mensagem mr,4 eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), destrói seu chave secreta efêmera skr,4 i , e propaga mr,4 eu. Caso contrário, eu para sem propagar qualquer coisa. aAssim, o tempo total máximo desde que i inicia sua Etapa 1 da rodada r poderia ser t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ. bSe a Etapa (b) estiver ou não no protocolo, isso não afeta sua correção. No entanto, a presença da Etapa (b) permite que a Etapa 4 termine em menos de 2\(\lambda\) se um número suficiente de verificadores da Etapa 3 tiver “assinado \(\bot\)”. cPode-se provar que v′ neste caso, se existir, deve ser único.Etapa s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Uma etapa de BBA⋆ com moeda fixada em 0 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele termina seu próprio Passo s −1. • O usuário i espera um tempo máximo 2\(\lambda\).a Enquanto espera, i age da seguinte forma. – Condição Final 0: Se em algum ponto existe uma string v ̸= \(\bot\) e um passo s′ tal que (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda em 0, (b) recebi pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),b e (c) i recebeu uma mensagem válida (SIGj(Qr−1), \(\sigma\)r,1 j) com j sendo o segundo componente de v, então, eu para de esperar e termina sua própria execução do Passo s (e de fato da rodada r) imediatamente, sem propagar nada como um verificador (r, s); define H(Br) como o primeiro componente de v; e define seu próprio CERT r como o conjunto de mensagens mr,s′−1 j da etapa (b) junto com (SIGj(Qr−1), \(\sigma\)r,1 j ).c – Condição Final 1: Se em algum ponto existir um passo s′ tal que (a') 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda para 1, e (b') i recebeu pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),d então, eu para de esperar e termina sua própria execução do Passo s (e de fato da rodada r) certo afastado sem propagar nada como um verificador (r, s); define Br = Br ǫ; e define o seu próprio CERT r será o conjunto de mensagens mr,s′−1 j da subetapa (b'). – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)1. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), mas eles não concordam sobre o mesmo v, então ele para esperando e define bi \(\triangleq\)0. – Caso contrário, quando o tempo 2\(\lambda\) acabar, i define bi \(\triangleq\)0. – Quando o valor bi for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se eu \(\in\)SV r,s. – Se i \(\in\)SV r,s, i calcula a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) com vi sendo o valor que ele calculou na Etapa 4, destrói sua chave secreta efêmera skr,s eu, e então propaga senhor,s eu. Caso contrário, paro sem propagar nada. aAssim, o tempo total máximo desde que i inicia sua Etapa 1 da rodada r poderia ser ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ. bEssa mensagem do jogador j é contada mesmo que o jogador i também tenha recebido uma mensagem de j assinando por 1. Coisas semelhantes para a Condição Final 1. Conforme mostrado na análise, isso é para garantir que todos os usuários honestos saibam CERT r dentro do tempo \(\lambda\) um do outro. cO usuário i agora conhece H(Br) e sua própria rodada termina. Ele só precisa esperar até que o bloco Br esteja propagado para ele, o que pode levar algum tempo adicional. Ele ainda ajuda a propagar mensagens como um usuário genérico, mas não inicia nenhuma propagação como um verificador (r, s). Em particular, ele ajudou a propagar todas as mensagens em seu CERT r, que é suficiente para o nosso protocolo. Observe que ele também deve definir bi \(\triangleq\)0 para o protocolo BA binário, mas bi não é necessário neste caso de qualquer maneira. Coisas semelhantes para todas as instruções futuras. dNeste caso, não importa quais são os vj’s. 65Etapa s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Uma etapa de BBA⋆ fixada em moeda para 1 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele termina seu próprio Passo s −1. • O usuário i espera um tempo máximo de 2\(\lambda\). Enquanto espero, ajo da seguinte maneira. – Condição Final 0: As mesmas instruções da etapa Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções da etapa Coin-Fixed-To-0. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)0.a – Caso contrário, quando o tempo 2\(\lambda\) acabar, i define bi \(\triangleq\)1. – Quando o valor bi for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se eu \(\in\)SV r,s. – Se i \(\in\)SV r,s, i calcula a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) com vi sendo o valor que ele calculou na Etapa 4, destrói sua chave secreta efêmera skr,s eu, e então propaga senhor,s eu. Caso contrário, paro sem propagar nada. aObserve que receber mensagens válidas (r, s −1) assinadas para 1 significaria a Condição Final 1. Etapa s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Uma etapa de BBA⋆ com moeda genuinamente invertida Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele termina seu próprio passo s −1. • O usuário i espera um tempo máximo de 2\(\lambda\). Enquanto espero, ajo da seguinte maneira. – Condição Final 0: As mesmas instruções da etapa Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções da etapa Coin-Fixed-To-0. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)0. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)1. – Caso contrário, quando o tempo 2\(\lambda\) acabar, deixando SV r,s−1 eu seja o conjunto de (r, s −1)-verificadores de a quem ele recebeu uma mensagem válida mr,s−1 j , i define bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 eu H(\(\sigma\)r,s−1 j )). – Quando o valor bi for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se eu \(\in\)SV r,s. – Se i \(\in\)SV r,s, i calcula a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) com vi sendo o valor que ele calculou na Etapa 4, destrói sua chave secreta efêmera skr,s eu, e então propaga senhor,s eu. Caso contrário, paro sem propagar nada. Observação. Em princípio, conforme considerado na subseção 6.2, o protocolo pode levar arbitrariamente muitas passos em alguma rodada. Caso isso aconteça, conforme discutido, um usuário i \(\in\)SV r,s com s > \(\mu\) esgotou
seu estoque de chaves efêmeras pré-geradas e precisa autenticar sua mensagem (r, s) mr,s eu por um “cascata” de chaves efêmeras. Assim, a mensagem de i torna-se um pouco mais longa e a transmissão é mais longa as mensagens levarão um pouco mais de tempo. Assim, depois de tantas etapas de uma determinada rodada, o valor de o parâmetro \(\lambda\) aumentará ligeiramente automaticamente. (Mas ele reverte para o \(\lambda\) original uma vez que um novo bloco é produzido e uma nova rodada começa.) Reconstrução do Bloco Round-r por Não-Verificadores Instruções para cada usuário i no sistema: O usuário i inicia sua própria rodada r assim que tiver CERT r-1. • sigo as instruções de cada etapa do protocolo, participa da propagação de todos mensagens, mas não inicia nenhuma propagação em uma etapa se ele não for um verificador nela. • i termina sua própria rodada r inserindo a Condição Final 0 ou a Condição Final 1 em alguma etapa, com o CERT r correspondente. • A partir daí, ele inicia sua rodada r + 1 enquanto espera para receber o bloco real Br (a menos que ele já recebeu), cujo hash H(Br) foi definido pelo CERT r. Novamente, se CERT r indica que Br = Br ǫ, o i conhece Br no momento em que possui CERT r. 6.4 Análise de Algorand ′ 2 A análise de Algorand ′ 2 é facilmente derivado daquele de Algorand ′ 1. Essencialmente, em Algorand ′ 2, com probabilidade esmagadora, (a) todos os usuários honestos concordam com o mesmo bloco Br; o líder de um novo O bloco é honesto com probabilidade de pelo menos 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.
Lidando com usuários honestos off-line
Como dissemos, um usuário honesto segue todas as instruções prescritas, que incluem a de estar online e executando o protocolo. Este não é um grande fardo em Algorand, uma vez que o cálculo e a largura de banda exigida de um usuário honesto é bastante modesta. No entanto, vamos salientar que Algorand pode ser facilmente modificável para funcionar em dois modelos, nos quais usuários honestos podem ficar off-line em grandes números. Antes de discutir estes dois modelos, salientamos que, se a percentagem de jogadores honestos eram 95%, Algorand ainda poderia ser executado definindo todos os parâmetros assumindo que h = 80%. Conseqüentemente, Algorand continuaria a funcionar corretamente mesmo que no máximo metade dos jogadores honestos optaram por ficar off-line (na verdade, um caso importante de “absenteísmo”). Na verdade, em qualquer momento, pelo menos 80% dos jogadores online seriam honestos. Da participação contínua à honestidade preguiçosa Como vimos, Algorand ′ 1 e Algorand ′ 2 escolha o parâmetro de retrospectiva k. Vamos agora mostrar que escolher k adequadamente grande permite remover o requisito de participação contínua. Este requisito garante uma propriedade crucial: a saber, que o protocolo BA subjacente BBA⋆tem uma maioria honesta adequada. Vamos agora explicar o quão preguiçoso a honestidade fornece uma maneira alternativa e atraente de satisfazer essa propriedade.
Lembre-se de que um usuário i é preguiçoso, mas honesto se (1) seguir todas as instruções prescritas, quando ele é convidado a participar do protocolo e (2) ele é convidado a participar apenas do protocolo muito raramente - por exemplo, uma vez por semana - com aviso prévio adequado e potencialmente recebendo recompensas quando ele participa. Para permitir que Algorand trabalhe com tais players, basta “escolher os verificadores do rodada atual entre os usuários que já estão no sistema em uma rodada muito anterior.” Na verdade, lembre-se que os verificadores para uma rodada r são escolhidos entre os usuários da rodada r −k, e as seleções são feitas com base na quantidade Qr−1. Observe que uma semana consiste em aproximadamente 10.000 minutos e suponha que um rodada leva aproximadamente (por exemplo, em média) 5 minutos, então uma semana tem cerca de 2.000 rodadas. Suponha que, em algum momento, um usuário deseja planejar seu tempo e saber se ele estará um verificador na próxima semana. O protocolo agora escolhe os verificadores para uma rodada r entre os usuários em arredondar r −k −2.000, e as seleções são baseadas em Qr−2.001. Na rodada r, jogador que eu já conheço os valores Qr −2.000, . . . , Qr−1, uma vez que na verdade fazem parte do blockchain. Então, para cada M entre 1 e 2.000, i é um verificador em uma etapa s da rodada r + M se e somente se .H SIGi r + M, s, Qr+M−2.001 \(\leq\)p. Assim, para verificar se ele será chamado para atuar como verificador nas próximas 2.000 rodadas, devo calcular \(\sigma\)M,s eu =SIGi r + M, s, Qr+M−2.001 para M = 1 a 2.000 e para cada etapa s, e verifique se .H(\(\sigma\)M,s eu ) \(\leq\)p para alguns deles. Se o cálculo de uma assinatura digital levar um milissegundo, então toda esta operação levará cerca de 1 minuto de cálculo. Se ele não for selecionado como verificador em qualquer uma dessas rodadas, ele poderá ficar off-line com uma “consciência honesta”. Se ele tivesse continuamente participou, ele teria essencialmente dado 0 passos nas próximas 2.000 rodadas de qualquer maneira! Se, em vez disso, ele é selecionado para ser um verificador em uma dessas rodadas, então ele se prepara (por exemplo, obtendo todos as informações necessárias) para atuar como um verificador honesto na rodada apropriada. Ao agir assim, um verificador de potencial preguiçoso, mas honesto, apenas deixa de participar da propagação. de mensagens. Mas a propagação de mensagens é normalmente robusta. Além disso, os pagadores e os beneficiários de espera-se que os pagamentos propagados recentemente estejam on-line para observar o que acontece com seus pagamentos, e assim participarão da propagação da mensagem, se forem honestos.
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.
Protocolo Algorand ′ com maioria honesta de dinheiro
Agora, finalmente, mostramos como substituir a suposição da maioria honesta dos usuários pela hipótese muito mais suposição significativa da Maioria Honesta do Dinheiro. A ideia básica é (em um sabor proof-of-stake) “selecionar um usuário i \(\in\)PKr−k para pertencer a SV r,s com um peso (ou seja, poder de decisão) proporcional a a quantidade de dinheiro possuída por i.”24 Pela nossa suposição HMM, podemos escolher se essa quantia deve ser detida na rodada r −k ou no (início da) rodada r. Supondo que não nos importamos com a participação contínua, optamos por a última escolha. (Para eliminar a participação contínua, teríamos optado pela primeira opção. Melhor dizendo, pela quantidade de dinheiro possuída na rodada r −k −2.000.) Existem muitas maneiras de implementar essa ideia. A maneira mais simples seria manter cada tecla pressionada no máximo 1 unidade de dinheiro e então selecione aleatoriamente n usuários i de PKr−k tal que a(r) eu = 1. 24Deveríamos dizer PKr−k−2.000 para substituir a participação contínua. Por simplicidade, uma vez que se pode querer exigir de qualquer forma, com participação contínua, usamos PKr-k como antes, para carregar um parâmetro a menos.
A próxima implementação mais simples A próxima implementação mais simples pode ser exigir que cada chave pública possua uma quantidade máxima de dinheiro M, para algum M fixo. O valor M é pequeno o suficiente comparado com a quantidade total de dinheiro dinheiro no sistema, de modo que a probabilidade de uma chave pertencer ao conjunto verificador de mais de um intervir —digamos— k rodadas é insignificante. Então, uma chave i \(\in\)PKr−k, possuindo uma quantia de dinheiro a(r) eu na rodada r, é escolhido para pertencer a SV r,s se .H SIGi r, s, Qr−1 \(\leq\)p \(\cdot\) uma(r) eu M . E tudo continua como antes. Uma implementação mais complexa A última implementação “forçou um participante rico no sistema a possuir muitas chaves”. Uma implementação alternativa, descrita abaixo, generaliza a noção de status e considera cada usuário i consiste em K + 1 cópias (i, v), cada uma das quais é selecionada independentemente para ser um verificador, e possuirá sua própria chave efêmera (pkr,s eu,v, skr,s i,v) em uma etapa s de uma rodada r. O valor K depende sobre a quantidade de dinheiro a(r) eu propriedade de i na rodada r. Vejamos agora como esse sistema funciona com mais detalhes. Número de cópias Seja n a cardinalidade esperada desejada de cada conjunto de verificadores e seja a(r) eu seja a quantidade de dinheiro pertencente a um usuário i na rodada r. Seja Ar a quantidade total de dinheiro possuído pelos usuários em PKr−k na rodada r, ou seja, Ar = X i\(\in\)P Kr−k um(r) eu. Se i for um usuário em PKr−k, então as cópias de i são (i, 1), . . . , (i, K + 1), onde K = $ n \(\cdot\) uma(r) eu Ar % . Exemplo. Seja n = 1.000, Ar = 109 e a(r) eu = 3,7 milhões. Então, K = 103 \(\cdot\) (3,7 \(\cdot\) 106) 109 = ⌊3,7⌋= 3 . Verificadores e credenciais Seja eu um usuário em PKr−k com K + 1 cópias. Para cada v = 1,. . . , K, copy (i, v) pertence a SV r,s automaticamente. Ou seja, a credencial de i é \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1), mas a condição correspondente torna-se .H(\(\sigma\)r,s i,v) \(\leq\)1, que é sempre verdadeiro. Para cópia (i, K + 1), para cada etapa s da rodada r, i verifica se .H SIGi (eu, K + 1), r, s, Qr−1 \(\leq\)a(r) eu n Ar-K.
Se sim, a cópia (i, K + 1) pertence a SV r,s. Para provar isso, i propaga a credencial \(\sigma\)r,1 i,K+1 = SIGi (eu, K + 1), r, s, Qr−1 . Exemplo. Como no exemplo anterior, seja n = 1K, a(r) eu = 3,7M, Ar = 1B e i tem 4 cópias: (i, 1), . . . , (eu, 4). Então, as primeiras 3 cópias pertencem a SV r,s automaticamente. Para o 4º, conceitualmente, Algorand ′ lança independentemente uma moeda viciada, cuja probabilidade de cara é 0,7. Copiar (i, 4) é selecionado se e somente se o lançamento da moeda for Cara. (É claro que esse lançamento de moeda tendencioso é implementado hashing, assinando e comparando - como fazemos fiz o tempo todo neste artigo - para me permitir provar seu resultado.) Negócios como sempre Tendo explicado como os verificadores são selecionados e como suas credenciais são calculada a cada etapa de uma rodada r, a execução de uma rodada é semelhante à já explicada.
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.
Tratamento de forks
Tendo reduzido a probabilidade de bifurcações para 10-12 ou 10-18, é praticamente desnecessário lidar com na remota chance de ocorrerem. Algorand, no entanto, também pode empregar vários fork procedimentos de resolução, com ou sem comprovação de trabalho. Uma forma possível de instruir os usuários a resolver bifurcações é a seguinte: • Siga a cadeia mais longa se um usuário vir várias cadeias. • Se houver mais de uma cadeia mais longa, siga aquela com um bloco não vazio no final. Se todos eles têm blocos vazios no final, considere seus penúltimos blocos. • Se houver mais de uma cadeia mais longa com blocos não vazios no final, digamos que as cadeias sejam de comprimento r, siga aquele cujo líder do bloco r possui a menor credencial. Se houver laços, siga aquele cujo bloco r tem o menor valor hash. Se ainda houver empates, siga o aquele cujo bloco r é ordenado lexicograficamente em primeiro lugar.
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.
Lidando com partições de rede
Como dito, assumimos que os tempos de propagação das mensagens entre todos os usuários da rede são limitados por \(\lambda\) e Λ. Esta não é uma suposição forte, já que a Internet de hoje é rápida e robusta, e os valores reais desses parâmetros são bastante razoáveis. Aqui, vamos ressaltar que Algorand ′ 2 continua a funcionar mesmo que a Internet ocasionalmente seja dividida em duas partes. O caso quando a Internet é dividida em mais de duas partes de maneira semelhante. 10.1 Partições Físicas Em primeiro lugar, a partição pode ser causada por motivos físicos. Por exemplo, um grande terremoto pode acabarão por quebrar completamente a ligação entre a Europa e a América. Neste caso, o usuários mal-intencionados também são particionados e não há comunicação entre as duas partes. Assim
haverá dois Adversários, um para a parte 1 e outro para a parte 2. Cada Adversário ainda tenta quebrar o protocolo em sua própria parte. Suponha que a partição aconteça no meio da rodada r. Então cada usuário ainda é selecionado como um verificador baseado em PKr−k, com a mesma probabilidade de antes. Deixe HSV r,s eu e MSV r,s eu respectivamente seja o conjunto de verificadores honestos e maliciosos em uma etapa s da parte i \(\in\){1, 2}. Nós temos |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. Observe que |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| < 2tH com probabilidade esmagadora. Se alguma parte i tiver |HSV r,s eu | + |MSV r,s eu | \(\geq\)tH com probabilidade não desprezível, por exemplo, 1%, então o probabilidade de que |HSV r,s 3−eu| + |MSV r,s 3−eu| \(\geq\)tH é muito baixo, por exemplo, 10−16 quando F = 10−18. Neste caso, podemos muito bem tratar a parte menor como estando off-line, porque não haverá verificadores suficientes em esta parte para gerar as assinaturas para certificar um bloco. Consideremos a parte maior, digamos a parte 1, sem perda de generalidade. Embora |HSV r,s| < tH com probabilidade desprezível em cada passo s, quando a rede é particionada, |HSV r,s 1 | pode ser menor que tH com alguma probabilidade não desprezível. Neste caso o Adversário pode, com alguma outra probabilidade não desprezível, forçar o protocolo BA binário em uma bifurcação na rodada r, com um bloco não vazio Br e o bloco vazio Br ǫ ambos com assinaturas válidas.25 Por exemplo, em um Coin-Fixed-To-0 step s, todos os verificadores em HSV r,s 1 assinado para o bit 0 e H(Br), e propagou seus mensagens. Todos os verificadores em MSV r,s 1 também assinaram 0 e H(Br), mas retiveram suas mensagens. Porque |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tH, o sistema possui assinaturas suficientes para certificar o Br. No entanto, desde o verificadores maliciosos retiveram suas assinaturas, os usuários entram na etapa s + 1, que é uma etapa Coin-Fixed-To1. Porque |HSV r,s 1 | < tH devido à partição, os verificadores em HSV r,s+1 1 não vi assinaturas para o bit 0 e todas assinadas para o bit 1. Todos os verificadores em MSV r,s+1 1 fez o mesmo. Porque |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH, o sistema possui assinaturas suficientes para certificar Br ǫ. O Adversário em seguida, cria uma bifurcação liberando as assinaturas do MSV r,s 1 para 0 e H(Br). Assim, haverá dois Qr’s, definidos pelos blocos correspondentes da rodada r. No entanto, a bifurcação não continuará e apenas um dos dois ramos poderá crescer na rodada r + 1. Instruções adicionais para Algorand ′ 2. Ao ver um bloco não vazio Br e o bloco vazio bloco BR ǫ , segue o não vazio (e o Qr definido por ele). Na verdade, ao instruir os usuários a usarem o bloco não vazio no protocolo, se um grande quantidade de usuários honestos em PKr+1−k percebem que há uma bifurcação no início da rodada r +1, então o o bloco vazio não terá seguidores suficientes e não crescerá. Suponha que o adversário consiga particionar os usuários honestos para que alguns usuários honestos vejam Br (e talvez Br ǫ), e alguns só veem irmão ǫ. Porque o Adversário não pode dizer qual deles será um verificador seguindo Br e qual será um verificador seguindo o Ir. ǫ , os usuários honestos são particionados aleatoriamente e cada um deles ainda torna-se um verificador (seja em relação a Br ou em relação a Br ǫ) em uma etapa s > 1 com probabilidade pág. Para os usuários mal-intencionados, cada um deles pode ter duas chances de se tornar um verificador, uma com Br e outro com Br ǫ, cada um com probabilidade p independentemente. Seja HSV r+1,s 1;Br seja o conjunto de verificadores honestos nas etapas s da rodada r+1 após Br. Outras notações como HSV r+1,s 1;Brǫ , MSV r+1,s 1;Br e MSV r+1,s 1;Brǫ são definidos de forma semelhante. Por Chernoffbound, é fácil 25Ter uma bifurcação com dois blocos não vazios não é possível com ou sem partições, exceto com partições insignificantes probabilidade.ver isso com uma probabilidade esmagadora, |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. Conseqüentemente, as duas filiais não podem ter ambas as assinaturas adequadas certificando um bloco para rodada r + 1 na mesma etapa s. Além disso, uma vez que as probabilidades de seleção para duas etapas s e s′ são as iguais e as seleções são independentes, também com probabilidade esmagadora |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, para quaisquer duas etapas s e s′. Quando F = 10−18, pelo sindicato, desde que o Adversário não possa particionar os usuários honestos por um longo tempo (digamos 104 etapas, o que equivale a mais de 55 horas com \(\lambda\) = 10 segundos26), com alta probabilidade (digamos 1−10−10) no máximo uma ramificação terá as assinaturas adequadas para certificar um bloco na rodada r + 1. Finalmente, se a partição física criou duas partes com aproximadamente o mesmo tamanho, então o probabilidade de que |HSV r,s eu | + |MSV r,s eu | \(\geq\)tH é pequeno para cada parte i. Seguindo uma análise semelhante, mesmo que o Adversário consiga criar uma bifurcação com alguma probabilidade não desprezível em cada parte para a rodada r, no máximo um dos quatro ramos pode crescer na rodada r + 1. 10.2 Partição Adversária Em segundo lugar, a partição pode ser causada pelo Adversário, de modo que as mensagens propagadas pelos usuários honestos de uma parte não alcançará diretamente os usuários honestos da outra parte, mas o Adversário é capaz de encaminhar mensagens entre as duas partes. Ainda assim, uma vez que uma mensagem de um parte chega a um usuário honesto na outra parte, será propagada nesta última como de costume. Se o O adversário está disposto a gastar muito dinheiro, é concebível que ele consiga hackear o Internet e particione-o assim por um tempo. A análise é semelhante à da parte maior da partição física acima (a parte menor parte pode ser considerada como tendo população 0): o Adversário pode ser capaz de criar uma bifurcação e cada usuário honesto vê apenas um dos ramos, mas no máximo um ramo pode crescer. 10.3 Partições de rede em soma Embora possam ocorrer partições de rede e uma bifurcação em uma rodada possa ocorrer nas partições, não há ambigüidade persistente: um garfo dura muito pouco e, na verdade, dura no máximo uma única rodada. Em todas as partes da partição, exceto no máximo uma, os usuários não podem gerar um novo bloco e, portanto, (a) perceber que há uma partição na rede e (b) nunca confiar em blocos que irão “desaparecer”. Agradecimentos Gostaríamos de agradecer primeiro a Sergey Gorbunov, co-autor do citado sistema Democoin. Os mais sinceros agradecimentos a Maurice Herlihy, pelas muitas discussões esclarecedoras, por apontar que o pipelining melhorará o desempenho da taxa de transferência de Algorand e melhorará muito o 26Observe que um usuário termina uma etapa s sem esperar pelo tempo 2\(\lambda\) somente se ele tiver visto pelo menos as assinaturas para o mesma mensagem. Quando não há assinaturas suficientes, cada etapa durará 2\(\lambda\).
exposição de uma versão anterior deste artigo. Muito obrigado a Sergio Rajsbaum, pelos seus comentários sobre uma versão anterior deste artigo. Muito obrigado a Vinod Vaikuntanathan, por várias discussões profundas e percepções. Muito obrigado a Yossi Gilad, Rotem Hamo, Georgios Vlachos e Nickolai Zeldovich por começar a testar essas ideias e por muitos comentários e discussões úteis. Silvio Micali gostaria de agradecer pessoalmente a Ron Rivest pelas inúmeras discussões e orientações em pesquisa criptográfica ao longo de mais de 3 décadas, pela coautoria do sistema de micropagamento citado que inspirou um dos mecanismos de seleção de verificadores de Algorand. Esperamos levar esta tecnologia para o próximo nível. Enquanto isso a viagem e o companheirismo são muito divertidos, pelos quais estamos muito gratos.