Algorand: การปรับขนาดข้อตกลง Byzantine สำหรับ Cryptocurrencies

Автор Jing Chen and Silvio Micali · 2017

Обычный режим arxiv.org

Аннотация

Публичный реестр — это защищенная от несанкционированного доступа последовательность данных, которую может прочитать и дополнить каждый. Публичные реестры имеют бесчисленное множество интересных применений. Они могут обеспечить на виду все виды транзакций — таких как права собственности, продажи и платежи — в том порядке, в котором они происходят. Публичные реестры не только сдерживают коррупцию, но и позволяют использовать очень сложные приложения, такие как криптовалюты и smart contracts. Они намерены революционизировать способ построения демократического общества. действует. Однако в нынешнем виде они плохо масштабируются и не могут реализовать свой потенциал. Algorand — это действительно демократичный и эффективный способ внедрения публичного реестра. В отличие от предыдущего реализации, основанные на доказательстве работы, требуют незначительного объема вычислений и генерирует историю транзакций, которая не будет «разветвляться» с чрезвычайно высокой вероятностью. Algorand основан на (новом и сверхбыстром) византийском соглашении о передаче сообщений. Для конкретики мы будем описывать Algorand только как денежную платформу.

บทคัดย่อ

บัญชีแยกประเภทสาธารณะเป็นลำดับข้อมูลที่ป้องกันการปลอมแปลงที่ทุกคนสามารถอ่านและเพิ่มได้ บัญชีแยกประเภทสาธารณะมีประโยชน์มากมายและน่าสนใจ พวกเขาสามารถรักษาความปลอดภัยได้ทุกชนิด ของธุรกรรม เช่น ชื่อ การขาย และการชำระเงิน ในลำดับที่แน่นอนที่เกิดขึ้น บัญชีแยกประเภทสาธารณะไม่เพียงแต่ควบคุมการทุจริตเท่านั้น แต่ยังเปิดใช้งานแอปพลิเคชันที่ซับซ้อนมาก เช่น สกุลเงินดิจิตอลและ smart contracts พวกเขายืนหยัดที่จะปฏิวัติวิถีสังคมประชาธิปไตย ดำเนินการ อย่างไรก็ตาม ตามที่ดำเนินการอยู่ในปัจจุบัน สิ่งเหล่านี้มีขนาดได้ไม่ดีและไม่สามารถบรรลุศักยภาพได้ Algorand เป็นวิธีการที่เป็นประชาธิปไตยและมีประสิทธิภาพอย่างแท้จริงในการดำเนินการบัญชีแยกประเภทสาธารณะ ไม่เหมือนเมื่อก่อน การใช้งานโดยอิงตามหลักฐานการทำงานนั้น ต้องใช้การคำนวณจำนวนเล็กน้อย และ สร้างประวัติการทำธุรกรรมที่จะไม่ "แยก" ด้วยความน่าจะเป็นสูงอย่างท่วมท้น Algorand อิงตามข้อตกลงไบเซนไทน์ในการส่งข้อความ (แบบใหม่และเร็วเป็นพิเศษ) เพื่อความเป็นรูปธรรม เราจะอธิบาย Algorand ว่าเป็นแพลตฟอร์มเงินเท่านั้น

Введение

Деньги становятся все более виртуальными. Подсчитано, что около 80% населения США долларов сегодня существуют только в виде записей в бухгалтерской книге [5]. Другие финансовые инструменты следуют этому примеру. В идеальном мире, в котором мы могли бы рассчитывать на универсальную центральную структуру, неуязвимую для Несмотря на все возможные кибератаки, деньги и другие финансовые операции могут осуществляться исключительно электронно. К сожалению, мы живем не в таком мире. Соответственно, децентрализованные криптовалюты, такие как как Bitcoin [29] и системы «smart contract», такие как Ethereum, были предложены [4]. В сердцем этих систем является общий реестр, в котором надежно фиксируется последовательность транзакций. ∗Это более формальная (и асинхронная) версия статьи ArXiv второго автора [24], статьи сам основан на версии Горбунова и Микали [18]. Технологии Algorand являются объектом следующих патентные заявки: US62/117,138, US62/120,916, US62/142,318, US62/218,817, US62/314,601, PCT/US2016/018300. US62/326,865 62/331,654 US62/333,340 US62/343,369 US62/344,667 US62/346,775 US62/351,011 US62/653,482 US62/352,195 US62/363,970 US62/369,447 US62/378,753 US62/383,299 US62/394,091 US62/400,361 US62/403,403 US62/410,721 US62/416,959 US62/422,883 US62/455,444 US62/458,746 US62/459,652 US62/460,928 US62/465,931так же разнообразны, как платежи и контракты, и защищены от несанкционированного доступа. Технология выбора, гарантией такой защиты от несанкционированного доступа является blockchain. Блокчейны лежат в основе таких приложений, как криптовалюты [29], финансовые приложения [4] и Интернет вещей [3]. Несколько техник для управления реестрами на основе blockchain были предложены: доказательство работы [29], доказательство доли [2], практическая византийская отказоустойчивость [8] или какая-то комбинация. Однако в настоящее время управление реестрами может оказаться неэффективным. Например, proof-of-work Bitcoin. подход (основанный на исходной концепции [14]) требует огромного количества вычислений и является расточительным и плохо масштабируется [1]. Кроме того, она де-факто концентрирует власть в очень немногих руках. Поэтому мы хотим предложить новый метод реализации публичного реестра, который предлагает удобство и эффективность централизованной системы, управляемой доверенным и неприкосновенным органом, без неэффективность и слабости текущих децентрализованных реализаций. Мы называем наш подход Algorand, потому что мы используем алгоритмическую случайность для выбора на основе построенного на данный момент реестра, набор проверяющих, которые отвечают за создание следующего блока действительных транзакций. Естественно, мы гарантируем, что такие выборы будут доказуемо защищены от манипуляций и непредсказуемы до тех пор, пока в последнюю минуту, но также и то, что в конечном итоге они общеизвестны. Подход Algorand вполне демократичен в том смысле, что ни в принципе, ни де-факто он создает разные классы пользователей (как «майнеры» и «обычные пользователи» в Bitcoin). В Algorand «все власть принадлежит группе всех пользователей». Одним из примечательных свойств Algorand является то, что его история транзакций может разветвляться только при очень небольших вероятность (например, один на триллион, то есть или даже 10−18). Algorand также может касаться некоторых юридических вопросов. и политические проблемы. Подход Algorand применим к blockchain и, в более общем плане, к любому методу генерации защищенная от несанкционированного доступа последовательность блоков. Мы фактически предложили новый метод — альтернативный и более эффективен, чем blockchains — это может представлять независимый интерес. 1.1 Предположение Bitcoin и технические проблемы Bitcoin — очень изобретательная система, вдохновившая на большое количество последующих исследований. Тем не менее, это также проблематично. Давайте суммируем лежащее в его основе предположение и технические проблемы, которые фактически используются практически всеми криптовалютами, которые, например Bitcoin, основаны на proof-of-work. Для этого резюме достаточно вспомнить, что в Bitcoin пользователь может владеть несколькими открытыми ключами. схемы цифровой подписи, что деньги связаны с открытыми ключами и что платеж представляет собой цифровая подпись, которая переводит некоторую сумму денег с одного открытого ключа на другой. По сути, Bitcoin организует все обработанные платежи в цепочку блоков B1, B2, . . ., каждый из которых состоит из нескольких платежи, такие, что все платежи B1, взятые в любом порядке, за которыми следуют платежи B2 в любом порядке, и т. д. представляют собой последовательность действительных платежей. Каждый блок генерируется в среднем каждые 10 минут. Эта последовательность блоков представляет собой цепочку, поскольку она построена так, чтобы гарантировать, что любое изменение, даже в одном блоке, проникает во все последующие блоки, что облегчает обнаружение любых изменений история платежей. (Как мы увидим, это достигается за счет включения в каждый блок криптографического hash предыдущего.) Такая блочная структура называется blockchain. Предположение: честное большинство вычислительной мощности Bitcoin предполагает, что никакой злонамеренный организация (а не коалиция скоординированных злоумышленников) контролирует большую часть вычислительных ресурсов. мощность, предназначенная для генерации блоков. Фактически, такой объект сможет изменить blockchain,и таким образом переписать историю платежей, как угодно. В частности, он мог совершить платеж \(\wp\), получить оплаченные льготы, а затем «стирать» любые следы \(\wp\). Техническая проблема 1: Вычислительные отходы Подход Bitcoin proof-of-work к блокированию генерация требует огромного количества вычислений. В настоящее время насчитывается всего несколько сотен тысячи открытых ключей в системе, 500 самых мощных суперкомпьютеров могут только собрать всего 12,8% от общей вычислительной мощности, требуемой от игроков Bitcoin. Это объем вычислений значительно увеличится, если к системе присоединится значительно больше пользователей. Техническая проблема 2: Концентрация власти Сегодня из-за огромного количества требуется вычисление, пользователь, пытающийся сгенерировать новый блок, используя обычный рабочий стол (не говоря уже о сотовый телефон), рассчитывает потерять деньги. Действительно, для вычисления нового блока на обычном компьютере ожидаемая стоимость электроэнергии, необходимой для питания вычислений, превышает ожидаемое вознаграждение. Только используя пулы специально созданных компьютеров (которые не делают ничего, кроме «добычи новых блоков»), один может рассчитывать на получение прибыли за счет создания новых блоков. Соответственно, сегодня де-факто существует два разрозненные классы пользователей: обычные пользователи, которые только совершают платежи, и специализированные майнинговые пулы, которые ищут только новые блоки. Поэтому неудивительно, что с недавнего времени общая вычислительная мощность для блоков поколение находится всего в пяти пулах. В таких условиях предположение о том, что большинство Честная вычислительная мощность становится менее достоверной. Техническая проблема 3: Неясность В Bitcoin blockchain не обязательно уникален. действительно его последняя часть часто разветвляется: blockchain может быть, скажем, B1, . . . , Бк, Б' к+1, Б' k+2, согласно один пользователь и B1, . . . , Бк, Б'' к+1, Б'' к+2, Б'' k+3 по словам другого пользователя. Только после того, как пройдет несколько блоков добавлены в цепочку, можно ли быть достаточно уверенным, что первые k + 3 блока будут одинаковыми? для всех пользователей. Таким образом, нельзя сразу полагаться на выплаты, содержащиеся в последнем блоке цепь. Разумнее подождать и посмотреть, станет ли блок достаточно глубоким в blockchain и, таким образом, достаточно стабилен. Отдельно были высказаны опасения со стороны правоохранительных органов и денежно-кредитной политики в отношении Bitcoin.1. 1.2 Algorand, в двух словах Настройка Algorand работает в очень жестких условиях. Вкратце, (a) Неразрешенные и разрешенные среды. Algorand работает эффективно и безопасно даже в полностью закрытой среде, где сколь угодно много пользователей могут присоединиться к системе в любое время, без какой-либо проверки или разрешения любого рода. Конечно, Algorand работает. еще лучше в разрешенной среде. 1(Псевдо) анонимность, обеспечиваемая платежами Bitcoin, может быть использована неправомерно для отмывания денег и/или финансирования. преступников или террористических организаций. Традиционные банкноты или золотые слитки, которые в принципе предлагают идеальные анонимность должна представлять собой ту же проблему, но физическая форма этих валют существенно замедляет движение денег. переводы, чтобы обеспечить определенную степень контроля со стороны правоохранительных органов. Способность «печатать деньги» является одной из основных полномочий национального государства. Поэтому в принципе массовое принятие независимо плавающей валюты может ограничить эту власть. Однако в настоящее время Bitcoin далек от представляет собой угрозу правительственной денежно-кредитной политике и из-за проблем с масштабируемостью, возможно, никогда ею не станет.(б) Очень враждебная среда. Algorand противостоит очень сильному противнику, который может (1) мгновенно испортить любого пользователя, которого он хочет, в любое время, когда он хочет, при условии, что в неразрешенная среда, 2/3 денег в системе принадлежит честному пользователю. (В разрешенная среда, независимо от денег, достаточно, чтобы 2/3 пользователей были честными.) (2) полностью контролировать и идеально координировать всех коррумпированных пользователей; и (3) запланировать доставку всех сообщений при условии, что каждое сообщение m отправлено честным пользователем. достигает 95% честных пользователей за время \(\lambda\)m, которое зависит исключительно от размера m. Основные свойства Несмотря на присутствие нашего мощного противника, в Algorand • Требуемый объем вычислений минимален. По сути, независимо от того, сколько пользователей присутствующих в системе, каждый из полутора сотен пользователей должен выполнить не более нескольких секунд расчет. • Новый блок создается менее чем за 10 минут и фактически никогда не покидает blockchain. Например, ожидаемое время генерации блока в первом варианте меньше чем Λ + 12,4\(\lambda\), где Λ — время, необходимое для распространения блока в одноранговой сплетне независимо от того, какой размер блока вы выберете, а \(\lambda\) — это время для распространения 1500 сообщений 200Blong. (Поскольку в действительно децентрализованной системе Λ по существу является внутренней задержкой, в Algorand ограничивающим фактором при генерации блоков является скорость сети.) Второй вариант осуществления имеет фактически был протестирован экспериментально (?), что указывает на то, что блок генерируется менее чем за 40 секунды. Кроме того, blockchain из Algorand может разветвляться только с пренебрежимо малой вероятностью (т. е. менее одной в триллионе), и, таким образом, пользователи могут рассчитывать на платежи, содержащиеся в новом блоке, как только появляется блок. • Вся власть принадлежит самим пользователям. Algorand — это настоящая распределенная система. В частности, нет экзогенных объектов (таких как «майнеры» в Bitcoin), которые могли бы контролировать, какие транзакции признаны. Техники Algorand. 1. Новый и быстрый протокол Византийского соглашения. Algorand генерирует новый блок через новый криптографический протокол передачи сообщений двоичного византийского соглашения (BA), BA⋆. Протокол BA⋆не только обладает некоторыми дополнительными свойствами (которые мы вскоре обсудим), но и очень быстр. Грубо говоря, его версия с двоичным вводом состоит из трехэтапного цикла, в котором игрок i отправляет одиночный сигнал. сообщение mi всем остальным игрокам. Выполняется в полной и синхронной сети с более чем 2/3 игроков честны, с вероятностью > 1/3, после каждого цикла протокол заканчивается соглашение. (Мы подчеркиваем, что протокол BA⋆ удовлетворяет первоначальному определению византийского соглашения. Пиза, Шостака и Лэмпорта [31] без каких-либо ослаблений.) Algorand использует этот двоичный протокол BA для достижения соглашения в наших различных коммуникациях. модель, на каждом новом блоке. Согласованный блок затем сертифицируется через заданное количество цифровую подпись соответствующих проверяющих лиц и распространяется по сети. 2. Криптографическая сортировка. Несмотря на то, что протокол BA⋆ очень быстрый, его дальнейшее развитие могло бы принести пользу. скорость, когда в нее играют миллионы пользователей. Соответственно, Algorand выбирает игроков BA⋆, которые будутгораздо меньшее подмножество всех пользователей. Во избежание различного рода концентрации власти проблема, каждый новый блок Br будет построен и согласован посредством нового выполнения BA⋆, отдельным набором выбранных проверяющих, SV r. В принципе, подобрать такой набор может быть так же сложно, как и выбрав Br напрямую. Мы решаем эту потенциальную проблему с помощью подхода, который мы называем проницательное предложение Мориса Херлихи — криптографическая сортировка. Сортировка – это практика выбор должностных лиц случайным образом из большого числа подходящих лиц [6]. (практиковалась сортировка на протяжении веков: например, республиками Афин, Флоренции и Венеции. В современном судебном В системах присяжных часто используется случайный отбор. Случайная выборка также была недавно за выборы выступал Дэвид Чаум [9].) В децентрализованной системе, конечно, выбор случайные монеты, необходимые для случайного выбора членов каждого набора проверяющих SV r, проблематичны. Таким образом, мы прибегаем к криптографии, чтобы выбрать каждый набор проверяющих из совокупности всех пользователей. таким образом, который гарантированно будет автоматическим (т. е. не требующим обмена сообщениями) и случайным. По сути, мы используем криптографическую функцию для автоматического определения по предыдущему блоку Br-1, пользователь, лидер, отвечающий за предложение нового блока Br, и набор верификаторов SV r, в поручить достичь согласия по предложенному лидером блоку. Поскольку злонамеренные пользователи могут повлиять состав Br−1 (например, выбрав некоторые из его платежей) мы специально строим и используем дополнительные входные данные, чтобы доказать, что лидер r-го блока и набор проверяющих SV r действительно являются выбран случайно. 3. Количество (семя) Qr. Мы используем последний блок Br-1 в blockchain, чтобы автоматически определяет следующий набор верификаторов и лидера, отвечающего за построение нового блока Бр. Проблема с этим подходом заключается в том, что, просто выбрав немного другой платеж в В предыдущем раунде наш могущественный противник получает огромный контроль над следующим лидером. Даже если он контролировал только 1/1000 игроков/денег в системе, он мог гарантировать, что все лидеры злонамеренный. (См. раздел «Интуиция» 4.1.) Эта проблема является центральной для всех подходов proof-of-stake, и, насколько нам известно, она до сих пор не решена удовлетворительно. Чтобы решить эту задачу, мы намеренно создаем и постоянно обновляем отдельный и тщательно определенную величину Qr, которая, как доказуемо, не только непредсказуема, но и не поддается влиянию с точки зрения наших мощный противник. Мы можем называть Qr r-м семенем, поскольку именно из Qr выбирает Algorand, посредством секретной криптографической сортировки все пользователи, которые будут играть особую роль в создании й блок. 4. Секретная криптографическая сортировка и секретные учетные данные. Случайным образом и однозначно используя текущий последний блок, Br-1, для выбора набора проверяющих и ответственного лидера. строительства нового блока Бр недостаточно. Поскольку Br−1 должно быть известно до генерации Br, должна быть также известна последняя независимая величина Qr−1, содержащаяся в Br−1. Соответственно, так являются проверяющими и лидером, отвечающим за вычисление блока Br. Таким образом, наш могущественный Противник могли бы немедленно развратить их всех, прежде чем они вступят в какую-либо дискуссию о Бр, чтобы получить полный контроль над блоком, который они сертифицируют. Чтобы предотвратить эту проблему, лидеры (а фактически и проверяющие тоже) тайно узнают о своей роли, но могут вычислить правильные учетные данные, способные доказать всем, кто действительно выполняет эту роль. Когда пользователь тайно осознает, что является лидером следующего блока, сначала он тайно собирает свой самостоятельно предложенный новый блок, а затем распространяет его (чтобы его можно было сертифицировать) вместе со своим собственным учетные данные. Таким образом, хотя Противник сразу поймет, кто лидер следующего блок есть, и хотя он может развратить его сразу, Противнику будет уже слишком поздно повлиять на выбор нового блока. Действительно, он больше не может «перезвонить» посланию лидера.чем могущественное правительство сможет положить обратно в бутылку сообщение, вирусно распространенное WikiLeaks. Как мы увидим, мы не можем гарантировать ни уникальность лидера, ни то, что все точно знают, кто лидер. есть, включая самого лидера! Но в Algorand однозначный прогресс будет гарантирован. 5. Заменяемость игроков. После того, как он предложит новый блок, лидер может с тем же успехом «умереть» (или быть испорчен Противником), потому что его работа выполнена. Но для проверяющих в SV r дела обстоят сложнее. простой. Действительно, отвечая за сертификацию нового блока Br с достаточным количеством подписей, они должны сначала провести византийское соглашение по предложенному вождем блоку. Проблема в том, что независимо от того, насколько он эффективен, BA⋆ требует нескольких шагов и честности > 2/3 своих игроков. Это проблема, поскольку из соображений эффективности набор игроков BA⋆ состоит из небольшого набора SV r случайно выбранный среди множества всех пользователей. Таким образом, наш могущественный Противник, хотя и неспособный испортил 1/3 всех пользователей, безусловно, может испортить всех членов SV r! К счастью, мы докажем, что протокол BA⋆, выполняющийся путем распространения сообщений в одноранговой сети, может быть заменен игроком. Это новое требование означает, что протокол правильно и эффективно достигает консенсуса, даже если каждый его шаг выполняется совершенно новым и случайным образом и независимо выбранный набор игроков. Таким образом, при миллионах пользователей каждая небольшая группа игроков связанный с шагом BA⋆, скорее всего, имеет пустое пересечение со следующим множеством. Кроме того, наборы игроков разных ступеней BA⋆, вероятно, будут иметь совершенно разные мощности. Более того, члены каждой группы не знают, кто будет следующей группой игроков. быть, и не передавать тайно никакого внутреннего состояния. Свойство сменного игрока на самом деле имеет решающее значение для победы над динамичным и очень мощным игроком. Противника мы видим. Мы считаем, что протоколы сменных игроков окажутся решающими во многих контексты и приложения. В частности, они будут иметь решающее значение для безопасного выполнения небольших подпротоколов. встроен в большую вселенную игроков с динамичным противником, который, будучи в состоянии развратить даже небольшая часть от общего числа игроков, не имеет труда развратить всех игроков в меньших субпротокол. Дополнительное свойство/техника: ленивая честность Честный пользователь следует своим предписаниям инструкции, которые включают в себя пребывание в сети и запуск протокола. Поскольку Algorand имеет лишь скромные требования к вычислениям и связи, нахождение в сети и запуск протокола «в фон» не является большой жертвой. Конечно, некоторые «отсутствия» среди честных игроков, как те, из-за внезапной потери соединения или необходимости перезагрузки автоматически допускаются (поскольку мы всегда можем считать таких немногих игроков временно злонамеренными). Отметим, однако, что Algorand можно просто адаптировать для работы в новой модели, в которой будут честные пользователи большую часть времени офлайн. Нашу новую модель можно неформально представить следующим образом. Ленивая честность. Грубо говоря, пользователь i является ленивым, но честным, если (1) он следует всем предписанным ему правилам. инструкции, когда его просят принять участие в протоколе, и (2) его просят принять участие протоколу лишь в редких случаях и с соответствующим предварительным уведомлением. При таком смягченном представлении о честности мы можем быть еще более уверены в том, что честные люди будут под рукой, когда они нам понадобятся, и Algorand гарантирует, что в этом случае Система работает безопасно, даже если в определенный момент времени большинство участвующих игроков являются злонамеренными.1.3 Тесно связанные работы Подходы Proof-of-Work (например, упомянутые [29] и [4]) вполне ортогональны нашим. Как и подходы, основанные на византийском соглашении о передаче сообщений или практической византийской отказоустойчивости (например, процитированный [8]). Действительно, эти протоколы не могут быть запущены среди множества всех пользователей и не могут, в нашей модели быть ограничены достаточно небольшим набором пользователей. Фактически, наш могущественный противник мой немедленно испортить всех пользователей, участвующих в небольшой группе, обвиненной в фактическом запуске протокола BA. Наш подход можно считать связанным с доказательством доли [2] в том смысле, что «власть» пользователей в блочном строительстве пропорциональна деньгам, которыми они владеют в системе (в отличие, скажем, от деньги, которые они положили на «эскроу»). Наиболее близкой к нашей статье является Модель сонного консенсуса Пасса и Ши [30]. Чтобы избежать тяжелые вычисления, необходимые в подходе proof-of-work, на которые опирается их статья (и любезно кредиты) секретная криптографическая сортировка Algorand. Этот решающий аспект является общим для нескольких Между нашими статьями существуют существенные различия. В частности, (1) Их установка разрешена. Напротив, Algorand также является системой без разрешений. (2) Они используют протокол в стиле Накамото, поэтому их blockchain часто разветвляется. Хотя обходясь без proof-of-work, в их протоколе тайно выбранному лидеру предлагается удлинить самый длинный действительный (в более широком смысле) blockchain. Таким образом, вилки неизбежны и приходится ждать, чтобы блок находится достаточно «глубоко» в цепи. Ведь для достижения своих целей с противником способные к адаптивным повреждениям, они требуют, чтобы блок имел глубину поли(N), где N представляет собой общее количество пользователей в системе. Обратите внимание, что даже если предположить, что блок может быть создан в минуту, если бы было N = 1M пользователей, то пришлось бы ждать около 2M лет блок станет глубиной N 2, и в течение примерно 2 лет блок станет глубиной N. Напротив, blockchain Algorand разветвляется с незначительной вероятностью, даже несмотря на то, что Противник повредил пользователи сразу и адаптивно, и на его новые блоки можно сразу же положиться. (3) Они не занимаются отдельными византийскими соглашениями. В каком-то смысле они лишь гарантируют «возможный консенсус в отношении растущей последовательности ценностей». Это протокол репликации состояния, а не чем BA, и не может использоваться для достижения византийского соглашения об индивидуальной ценности интересов. Напротив, Algorand при желании можно использовать только один раз, чтобы позволить миллионам пользователей быстро достичь византийского соглашения о конкретной стоимости процентов. (4) Они требуют слабо синхронизированных часов. То есть часы всех пользователей смещены на небольшое время. δ. Напротив, в Algorand часы должны иметь только (по сути) одинаковую «скорость». (5) Их протокол работает с ленивыми, но честными пользователями или с честным большинством онлайн-пользователей. Они выражают благодарность Algorand за то, что он поднял вопрос о массовом выходе честных пользователей из сети, а также за в ответ выдвигая модель ленивой честности. Их протокол работает не только для ленивых модель честности, но и в их состязательной сонной модели, где противник выбирает, каких пользователей находятся онлайн, а какие оффлайн, при условии, что большинство онлайн-пользователей всегда честны.2 2Первоначальная версия их статьи фактически рассматривала только безопасность в их состязательной сонной модели.

исходная версия Algorand, которая предшествует их версии, также явно предполагала, что определенное большинство онлайн-игроки всегда честны, но явно исключили это из рассмотрения в пользу модели ленивой честности. (Например, если в какой-то момент половина честных пользователей решит выйти из сети, то большинство пользователей on-line вполне может быть вредоносным. Таким образом, чтобы этого не произошло, Противник должен форсировать большую часть своих сил. испорченные игроки тоже выходят из игры, что явно противоречит его собственным интересам.) Обратите внимание, что протокол с большинством голосов ленивых, но честных игроков прекрасно работает, если большинство онлайн-пользователей всегда являются злонамеренными. Это так, потому что достаточное количество честных игроков, зная, что они будут иметь решающее значение в какой-то редкий момент времени, выберут не выходить из сети в эти моменты, и при этом Противник не может заставить их отключиться от сети, поскольку он не знает, кто решающими могут оказаться честные игроки.(6) Они требуют простого честного большинства. Напротив, текущая версия Algorand требует честное большинство в 2/3. Еще одна близкая нам статья — «Уроборос: доказуемо безопасный протокол блокчейна с доказательством доли», Киайяс, Рассел, Дэвид и Олейников [20]. И их система появилась после нашей. Это также использует криптографическую сортировку, чтобы обойтись без доказательства работы доказуемым образом. Однако их Система, опять же, представляет собой протокол в стиле Накамото, в котором разветвления неизбежны и часты. (Однако в их модели блоки не должны быть такими глубокими, как в модели сонного консенсуса.) Более того, их система опирается на следующие предположения: по словам самих авторов, «(1) сеть высокосинхронна, (2) большинство выбранных заинтересованных сторон доступны по мере необходимости участвовать в каждой эпохе, (3) заинтересованные стороны не остаются в автономном режиме в течение длительных периодов времени, (4) адаптивность коррупции подвержена небольшой задержке, которая измеряется в раундах, линейных по параметр безопасности». Напротив, Algorand с подавляющей вероятностью не имеет вилки и не опирается ни на одно из этих 4 предположений. В частности, в Algorand Противник имеет возможность мгновенно развратить пользователей, которых он хочет контролировать.

การแนะนำ

เงินกลายเป็นเสมือนจริงมากขึ้น มีการประเมินว่าประมาณ 80% ของประเทศสหรัฐอเมริกา ดอลลาร์ในวันนี้มีอยู่เป็นรายการบัญชีแยกประเภทเท่านั้น [5] เครื่องมือทางการเงินอื่นๆ เป็นไปตามนั้น ในโลกอุดมคติ ซึ่งเราสามารถพึ่งพาเอนทิตีศูนย์กลางที่เชื่อถือได้ในระดับสากล นั่นคือภูมิคุ้มกัน สำหรับการโจมตีทางไซเบอร์ที่เป็นไปได้ทั้งหมด เงินและธุรกรรมทางการเงินอื่น ๆ อาจเป็นแบบอิเล็กทรอนิกส์เท่านั้น น่าเสียดายที่เราไม่ได้อยู่ในโลกเช่นนี้ ดังนั้น cryptocurrencies แบบกระจายอำนาจเช่นนี้ เนื่องจาก Bitcoin [29] และระบบ “smart contract” เช่น Ethereum ได้รับการเสนอ [4] ณ หัวใจสำคัญของระบบเหล่านี้คือบัญชีแยกประเภทที่ใช้ร่วมกันซึ่งบันทึกลำดับธุรกรรมได้อย่างน่าเชื่อถือ ∗นี่เป็นรายงาน ArXiv เวอร์ชันที่เป็นทางการมากกว่า (และอะซิงโครนัส) โดยผู้เขียนคนที่สอง [24] บทความ อิงตามของ Gorbunov และ Micali [18] เทคโนโลยีของ Algorand มีวัตถุประสงค์ดังต่อไปนี้ การยื่นขอรับสิทธิบัตร: US62/117,138 US62/120,916 US62/142,318 US62/218,817 US62/314,601 PCT/US2016/018300 US62/326,865 62/331,654 US62/333,340 US62/343,369 US62/344,667 US62/346,775 US62/351,011 US62/653,482 US62/352,195 US62/363,970 US62/369,447 US62/378,753 US62/383,299 US62/394,091 US62/400,361 US62/403,403 US62/410,721 US62/416,959 US62/422,883 US62/455,444 US62/458,746 US62/459,652 US62/460,928 US62/465,931แตกต่างกันไปตามการชำระเงินและสัญญา ในลักษณะป้องกันการปลอมแปลง เทคโนโลยีทางเลือกในการ รับประกันการงัดแงะดังกล่าวคือ blockchain Blockchains อยู่เบื้องหลังแอปพลิเคชันเช่น สกุลเงินดิจิตอล [29] แอปพลิเคชันทางการเงิน [4] และอินเทอร์เน็ตของสรรพสิ่ง [3] เทคนิคหลายประการ เพื่อจัดการบัญชีแยกประเภทตาม blockchain ได้รับการเสนอ: หลักฐานการทำงาน [29], หลักฐานการมีส่วนร่วม [2], ความทนทานต่อความผิดพลาดของไบแซนไทน์ในทางปฏิบัติ [8] หรือการรวมกันบางอย่าง อย่างไรก็ตาม ในปัจจุบัน บัญชีแยกประเภทอาจไม่มีประสิทธิภาพในการจัดการ ตัวอย่างเช่น Bitcoin ของ proof-of-work วิธีการ (ตามแนวคิดดั้งเดิมของ [14]) ต้องใช้การคำนวณจำนวนมาก สิ้นเปลือง และปรับขนาดได้ไม่ดี [1] นอกจากนี้โดยพฤตินัยแล้ว มันยังรวมพลังไว้ในมือเพียงไม่กี่คนเท่านั้น ดังนั้นเราจึงต้องการที่จะนำเสนอวิธีการใหม่ในการดำเนินการบัญชีแยกประเภทสาธารณะที่นำเสนอ ความสะดวกและประสิทธิภาพของระบบรวมศูนย์ที่ดำเนินการโดยหน่วยงานที่เชื่อถือได้และไม่อาจขัดขืนได้ โดยไม่มี ความไร้เหตุผลและจุดอ่อนของการใช้งานแบบกระจายอำนาจในปัจจุบัน เราเรียกแนวทางของเรา Algorand เนื่องจากเราใช้การสุ่มอัลกอริทึมในการเลือก โดยอิงจากบัญชีแยกประเภทที่สร้างขึ้นจนถึงตอนนี้ ชุดของผู้ตรวจสอบที่รับผิดชอบในการสร้างบล็อกถัดไปของธุรกรรมที่ถูกต้อง โดยธรรมชาติแล้ว เรารับรองว่าการเลือกดังกล่าวได้รับการยกเว้นจากการบิดเบือนและคาดเดาไม่ได้จนกว่าจะพิสูจน์ได้ นาทีสุดท้ายแต่ท้ายที่สุดแล้วพวกเขาก็ชัดเจนในระดับสากลด้วย แนวทางของ Algorand ค่อนข้างเป็นประชาธิปไตย ในแง่ที่ว่าไม่ว่าจะในหลักการหรือโดยพฤตินัยก็ตาม สร้างคลาสที่แตกต่างกันของผู้ใช้ (เป็น “คนงานเหมือง” และ “ผู้ใช้ทั่วไป” ใน Bitcoin) ใน Algorand “ทั้งหมด อำนาจย่อมอยู่กับกลุ่มผู้ใช้ทุกคน” คุณสมบัติที่โดดเด่นอย่างหนึ่งของ Algorand คือประวัติการทำธุรกรรมอาจแยกได้เพียงเล็กน้อยเท่านั้น ความน่าจะเป็น (เช่น หนึ่งในล้านล้าน นั่นคือ หรือแม้กระทั่ง 10−18) Algorand สามารถแก้ไขปัญหาทางกฎหมายบางประการได้เช่นกัน และความกังวลทางการเมือง วิธีการ Algorand นำไปใช้กับ blockchains และโดยทั่วไปกับวิธีการใด ๆ ของการสร้าง ลำดับของบล็อกป้องกันการงัดแงะ จริงๆ แล้วเราได้เสนอวิธีการใหม่ —ทางเลือกของ และ มีประสิทธิภาพมากกว่า blockchains— ที่อาจเป็นที่สนใจโดยอิสระ 1.1 Bitcoin ข้อสันนิษฐานและปัญหาทางเทคนิค Bitcoin เป็นระบบที่ชาญฉลาดมากและเป็นแรงบันดาลใจให้กับการวิจัยในภายหลังจำนวนมาก ยังไงก็ตาม ก็เป็นปัญหาเช่นกัน ให้เราสรุปสมมติฐานพื้นฐานและปัญหาทางเทคนิค—ซึ่ง จริงๆ แล้วมีการแชร์โดยสกุลเงินดิจิทัลทั้งหมดซึ่งเหมือนกับ Bitcoin อิงตาม proof-of-work สำหรับการสรุปนี้ ควรจำไว้ว่าใน Bitcoin ผู้ใช้อาจเป็นเจ้าของกุญแจสาธารณะหลายอัน ของรูปแบบลายเซ็นดิจิทัล เงินนั้นเชื่อมโยงกับกุญแจสาธารณะ และการชำระเงินคือ ลายเซ็นดิจิทัลที่โอนเงินจำนวนหนึ่งจากคีย์สาธารณะหนึ่งไปยังอีกคีย์หนึ่ง โดยพื้นฐานแล้ว Bitcoin จัดระเบียบการชำระเงินที่ประมวลผลแล้วทั้งหมดในบล็อก B1, B2, . . แต่ละอันประกอบด้วยหลายรายการ การชำระเงิน โดยที่การชำระเงินทั้งหมดของ B1 ดำเนินการในลำดับใดๆ ตามด้วยการชำระเงินของ B2 ในลำดับใดๆ ฯลฯ ถือเป็นลำดับการชำระเงินที่ถูกต้อง แต่ละบล็อกจะถูกสร้างขึ้นโดยเฉลี่ยทุกๆ 10 นาที ลำดับของบล็อกนี้เป็นลูกโซ่ เนื่องจากมีโครงสร้างเพื่อให้แน่ใจว่ามีการเปลี่ยนแปลงใดๆ ก็ตาม ในบล็อกเดียว จะแทรกซึมเข้าไปในบล็อกต่อๆ ไปทั้งหมด ทำให้ง่ายต่อการมองเห็นการเปลี่ยนแปลงใดๆ ประวัติการชำระเงิน (ดังที่เราจะได้เห็น สิ่งนี้สามารถทำได้โดยการรวมการเข้ารหัสไว้ในแต่ละบล็อก hash จากอันก่อนหน้า) โครงสร้างบล็อกดังกล่าวเรียกว่า blockchain ข้อสันนิษฐาน: พลังการคำนวณส่วนใหญ่ที่ซื่อสัตย์ Bitcoin ถือว่าไม่มีอันตราย เอนทิตี (หรือแนวร่วมของเอนทิตีที่เป็นอันตรายที่ประสานงานกัน) ควบคุมการประมวลผลส่วนใหญ่ พลังที่อุทิศให้กับการสร้างบล็อก ที่จริงแล้ว เอนทิตีดังกล่าวจะสามารถแก้ไข blockchain,และเขียนประวัติการชำระเงินใหม่ตามต้องการ โดยเฉพาะอย่างยิ่งมันสามารถชำระเงินได้ \(\wp\) รับผลประโยชน์ที่จ่ายไป จากนั้น "ลบ" ร่องรอยใดๆ ของ \(\wp\) ปัญหาทางเทคนิค 1: ขยะทางคอมพิวเตอร์ Bitcoin proof-of-work วิธีการบล็อก การสร้างต้องใช้การคำนวณจำนวนมากเป็นพิเศษ ปัจจุบันมีเพียงไม่กี่ร้อยเท่านั้น พับลิกคีย์นับพันในระบบ ซูเปอร์คอมพิวเตอร์ที่ทรงพลังที่สุด 500 อันดับแรกทำได้เพียงรวบรวมเท่านั้น เพียงร้อยละ 12.8% ของพลังการคำนวณทั้งหมดที่ต้องการจากผู้เล่น Bitcoin นี้ ปริมาณการคำนวณจะเพิ่มขึ้นอย่างมาก หากมีผู้ใช้เข้าร่วมระบบมากขึ้นอย่างมีนัยสำคัญ ปัญหาทางเทคนิค 2: ความเข้มข้นของพลัง วันนี้เนื่องจากมีปริมาณมากเกินไป ต้องใช้การคำนวณ ผู้ใช้พยายามสร้างบล็อกใหม่โดยใช้เดสก์ท็อปธรรมดา (ไม่ต้องพูดถึง a โทรศัพท์มือถือ) คาดว่าจะสูญเสียเงิน แท้จริงแล้ว สำหรับการคำนวณบล็อกใหม่ด้วยคอมพิวเตอร์ธรรมดา ค่าใช้จ่ายที่คาดหวังของไฟฟ้าที่จำเป็นในการคำนวณเกินกว่ารางวัลที่คาดหวัง ใช้เฉพาะกลุ่มคอมพิวเตอร์ที่สร้างขึ้นเป็นพิเศษ (ซึ่งไม่ทำอะไรเลยนอกจาก "ขุดบล็อกใหม่") หนึ่งเครื่อง อาจคาดหวังการทำกำไรจากการสร้างบล็อกใหม่ ดังนั้น วันนี้จึงมีสองโดยพฤตินัย คลาสของผู้ใช้ที่แยกจากกัน: ผู้ใช้ทั่วไปที่ชำระเงินเท่านั้น และกลุ่มการขุดเฉพาะ ที่ค้นหาเฉพาะบล็อกใหม่เท่านั้น ดังนั้นจึงไม่น่าแปลกใจเลยที่เมื่อเร็ว ๆ นี้ พลังการประมวลผลทั้งหมดสำหรับบล็อก รุ่นอยู่ในกลุ่มเพียงห้ากลุ่ม ในสภาวะดังกล่าวให้สันนิษฐานว่าส่วนใหญ่ พลังการคำนวณที่ซื่อสัตย์จะน่าเชื่อถือน้อยลง ปัญหาทางเทคนิค 3: ความคลุมเครือ ใน Bitcoin blockchain ไม่จำเป็นต้องซ้ำกัน แน่นอน ส่วนล่าสุดมักจะแยก: blockchain อาจเป็น —say— B1, . . . , บีเค, บี′ k+1, บี′ k+2 ตาม ผู้ใช้หนึ่งรายและ B1, . . . , บีเค, บี'' k+1, บี'' k+2, บี'' k+3 ตามผู้ใช้รายอื่น หลังจากผ่านไปหลายบล็อคแล้ว เมื่อเพิ่มเข้าไปในลูกโซ่แล้ว จะแน่ใจได้อย่างไรว่าบล็อก k + 3 แรกจะเหมือนกัน สำหรับผู้ใช้ทุกคน ดังนั้นจึงไม่มีใครสามารถพึ่งพาการชำระเงินที่อยู่ในบล็อกสุดท้ายของได้ทันที ห่วงโซ่ ควรระมัดระวังมากกว่าที่จะรอดูว่าบล็อกนั้นลึกลงไปในนั้นหรือไม่ blockchain และมีเสถียรภาพเพียงพอ นอกจากนี้ ยังมีการหยิบยกข้อกังวลเกี่ยวกับการบังคับใช้กฎหมายและนโยบายการเงินเกี่ยวกับ Bitcoin.1 อีกด้วย 1.2 Algorand โดยสรุป การตั้งค่า Algorand ทำงานในสภาวะที่ยากลำบากมาก สั้นๆ, (a) สภาพแวดล้อมที่ไม่ได้รับอนุญาตและได้รับอนุญาต Algorand ทำงานได้อย่างมีประสิทธิภาพและปลอดภัย ในสภาพแวดล้อมที่ไม่ได้รับอนุญาตโดยสิ้นเชิง ซึ่งผู้ใช้จำนวนมากได้รับอนุญาตให้เข้าร่วมโดยพลการ ได้ตลอดเวลา โดยไม่ต้องมีการตรวจสอบหรืออนุญาตใดๆ แน่นอนว่า Algorand ได้ผล ดียิ่งขึ้นในสภาพแวดล้อมที่ได้รับอนุญาต 1การไม่เปิดเผยตัวตน (หลอก) ที่นำเสนอโดย Bitcoin การชำระเงินอาจถูกนำไปใช้ในทางที่ผิดเพื่อการฟอกเงินและ/หรือการจัดหาเงินทุน ของอาชญากรหรือองค์กรก่อการร้าย ธนบัตรหรือทองคำแท่งแบบดั้งเดิมซึ่งโดยหลักการแล้วสมบูรณ์แบบ การไม่เปิดเผยตัวตนควรก่อให้เกิดความท้าทายเช่นเดียวกัน แต่ลักษณะทางกายภาพของสกุลเงินเหล่านี้ทำให้เงินช้าลงอย่างมาก การโอนเพื่อให้สามารถติดตามตรวจสอบโดยหน่วยงานบังคับใช้กฎหมายได้ในระดับหนึ่ง ความสามารถในการ “พิมพ์เงิน” เป็นหนึ่งในอำนาจขั้นพื้นฐานของรัฐชาติ โดยหลักการแล้วจึงยิ่งใหญ่ การยอมรับสกุลเงินที่หมุนเวียนอย่างอิสระอาจบั่นทอนอำนาจนี้ อย่างไรก็ตาม ในปัจจุบัน Bitcoin ยังห่างไกลจากความเป็นอยู่ ภัยคุกคามต่อนโยบายการเงินของรัฐบาล และเนื่องจากปัญหาด้านความสามารถในการขยายขนาด อาจไม่เป็นเช่นนั้นเลย(b) สภาพแวดล้อมที่ขัดแย้งกันอย่างมาก Algorand ต้านทานศัตรูที่ทรงพลังมากที่สามารถต้านทานได้ (1) สร้างความเสื่อมเสียแก่ผู้ใช้ใด ๆ ที่เขาต้องการทันทีในเวลาใดก็ได้ที่เขาต้องการ โดยมีเงื่อนไขว่าใน สภาพแวดล้อมที่ไม่ได้รับอนุญาต เงิน 2/3 ในระบบเป็นของผู้ใช้ที่ซื่อสัตย์ (ในก สภาพแวดล้อมที่ได้รับอนุญาต โดยไม่คำนึงถึงเงิน ถือว่า 2/3 ของผู้ใช้มีความซื่อสัตย์) (2) ควบคุมและประสานงานผู้ใช้ที่เสียหายทั้งหมดอย่างสมบูรณ์แบบ; และ (3) กำหนดเวลาการส่งข้อความทั้งหมด โดยมีเงื่อนไขว่าแต่ละข้อความ m ส่งโดยผู้ใช้ที่ซื่อสัตย์ เข้าถึงผู้ใช้ที่ซื่อสัตย์ถึง 95% ภายในระยะเวลา แลม ซึ่งขึ้นอยู่กับขนาดของ ม. เท่านั้น คุณสมบัติหลัก แม้จะมีศัตรูที่ทรงพลังของเราปรากฏตัวใน Algorand • จำนวนการคำนวณที่ต้องการมีเพียงเล็กน้อย โดยพื้นฐานแล้วไม่ว่าผู้ใช้จะมีจำนวนเท่าใดก็ตาม ที่มีอยู่ในระบบ ผู้ใช้แต่ละรายจาก 1500 คนจะต้องดำเนินการในเวลาไม่เกินไม่กี่วินาที การคำนวณ • บล็อกใหม่จะถูกสร้างขึ้นในเวลาน้อยกว่า 10 นาที และโดยพฤตินัยจะไม่มีวันออกจาก blockchain ตัวอย่างเช่น ตามความคาดหวัง เวลาในการสร้างบล็อกในรูปลักษณ์แรกจะน้อยกว่า มากกว่า Λ + 12.4แล โดยที่ Λ คือเวลาที่จำเป็นในการเผยแพร่บล็อกในการซุบซิบแบบ peer-to-peer แฟชั่น ไม่ว่าใครจะเลือกบล็อกขนาดใดก็ตาม และ \(\lambda\) คือเวลาที่จะเผยแพร่ข้อความขนาดยาว 1,500,200 ข้อความ (เนื่องจากในระบบการกระจายอำนาจอย่างแท้จริง Λ โดยพื้นฐานแล้วคือเวลาแฝงที่แท้จริงใน Algorand ปัจจัยจำกัดในการสร้างบล็อกคือความเร็วเครือข่าย) รูปลักษณ์ที่สองมี จริง ๆ แล้วได้รับการทดสอบทดลอง (โดย ?) ซึ่งบ่งชี้ว่าบล็อกถูกสร้างขึ้นในเวลาน้อยกว่า 40 วินาที นอกจากนี้ Algorand ของ blockchain อาจแยกได้ด้วยความน่าจะเป็นเพียงเล็กน้อยเท่านั้น (เช่น น้อยกว่าหนึ่ง ในล้านล้าน) และผู้ใช้สามารถส่งต่อการชำระเงินที่มีอยู่ในบล็อกใหม่ได้ทันทีที่ บล็อกปรากฏขึ้น • อำนาจทั้งหมดอยู่ที่ตัวผู้ใช้เอง Algorand เป็นระบบกระจายที่แท้จริง โดยเฉพาะอย่างยิ่ง ไม่มีหน่วยงานภายนอก (ในฐานะ "นักขุด" ใน Bitcoin) ที่สามารถควบคุมธุรกรรมใดได้ ได้รับการยอมรับ เทคนิคของ Algorand 1. โปรโตคอลข้อตกลงไบเซนไทน์ใหม่และรวดเร็ว Algorand สร้างบล็อกใหม่ผ่าน โปรโตคอลการเข้ารหัสลับแบบใหม่ การส่งข้อความ ข้อตกลงไบเซนไทน์แบบไบนารี (BA) BA⋆ พิธีสาร BA⋆ไม่เพียงแต่ตอบสนองคุณสมบัติเพิ่มเติมบางอย่างเท่านั้น (ซึ่งเราจะพูดถึงเร็วๆ นี้) แต่ยังรวดเร็วมากอีกด้วย กล่าวโดยคร่าวๆ เวอร์ชันอินพุตไบนารี่ประกอบด้วยการวนซ้ำ 3 ขั้นตอน ซึ่งผู้เล่นที่ฉันส่งเพียงครั้งเดียว ส่งข้อความ mi ถึงผู้เล่นคนอื่นๆ ทั้งหมด ดำเนินการในเครือข่ายที่สมบูรณ์และซิงโครนัสและอีกมากมาย ผู้เล่นมากกว่า 2/3 ที่มีความซื่อสัตย์ โดยมีความน่าจะเป็น > 1/3 หลังจากแต่ละวงสิ้นสุดโปรโตคอล ข้อตกลง (เราเน้นย้ำว่าระเบียบการ BA⋆ เป็นไปตามคำจำกัดความดั้งเดิมของข้อตกลงไบแซนไทน์ ของ Pease, Shostak และ Lamport [31] โดยไม่มีจุดอ่อนใดๆ) Algorand ใช้ประโยชน์จากโปรโตคอล BA ไบนารีนี้เพื่อบรรลุข้อตกลงในการสื่อสารที่แตกต่างของเรา โมเดลในแต่ละบล็อกใหม่ บล็อกที่ตกลงกันไว้จะได้รับการรับรองตามจำนวนที่กำหนด ลายเซ็นดิจิทัลของผู้ตรวจสอบที่เหมาะสม และเผยแพร่ผ่านเครือข่าย 2. การเรียงลำดับการเข้ารหัส แม้ว่าจะรวดเร็วมาก แต่โปรโตคอล BA⋆ ก็จะได้รับประโยชน์เพิ่มเติม ความเร็วเมื่อเล่นโดยผู้ใช้หลายล้านคน ดังนั้น Algorand จึงเลือกผู้เล่นของ BA⋆ ให้เป็นชุดย่อยที่เล็กกว่ามากของกลุ่มผู้ใช้ทั้งหมด เพื่อหลีกเลี่ยงการรวมตัวของอำนาจที่แตกต่างกัน ปัญหา แต่ละบล็อกใหม่ Br จะถูกสร้างขึ้นและตกลงกัน ผ่านการดำเนินการใหม่ของ BA⋆ โดยชุดผู้ตรวจสอบที่เลือกแยกกัน SV r. โดยหลักการแล้วการเลือกชุดดังกล่าวอาจจะยากพอๆ กัน การเลือก Br โดยตรง เราแก้ไขปัญหาที่อาจเกิดขึ้นนี้ด้วยแนวทางที่เรายึดถือ คำแนะนำอันชาญฉลาดของ Maurice Herlihy การเรียงลำดับการเข้ารหัส การเรียงลำดับคือการปฏิบัติของ สุ่มเลือกเจ้าหน้าที่จากบุคคลที่มีสิทธิ์จำนวนมาก [6] (มีการฝึกฝนการเรียงลำดับ ตลอดหลายศตวรรษ เช่น โดยสาธารณรัฐเอเธนส์ ฟลอเรนซ์ และเวนิส ในการพิจารณาคดีสมัยใหม่ ระบบการสุ่มเลือกมักใช้ในการเลือกคณะลูกขุน การสุ่มตัวอย่างก็เพิ่งเกิดขึ้นเช่นกัน สนับสนุนการเลือกตั้งโดย David Chaum [9].) แน่นอนว่าในระบบกระจายอำนาจ การเลือก เหรียญสุ่มที่จำเป็นในการสุ่มเลือกสมาชิกของชุดผู้ตรวจสอบแต่ละชุด SV r เป็นปัญหา ดังนั้นเราจึงใช้การเข้ารหัสเพื่อเลือกชุดผู้ตรวจสอบแต่ละชุดจากประชากรของผู้ใช้ทั้งหมด ในลักษณะที่รับประกันว่าเป็นไปโดยอัตโนมัติ (เช่น ไม่ต้องมีการแลกเปลี่ยนข้อความ) และสุ่ม โดยพื้นฐานแล้ว เราใช้ฟังก์ชันการเข้ารหัสเพื่อกำหนดโดยอัตโนมัติจากบล็อกก่อนหน้า Br−1 ผู้ใช้ ผู้นำ รับผิดชอบในการเสนอบล็อกใหม่ Br และผู้ตรวจสอบตั้งค่า SV r ใน เรียกเก็บเงินเพื่อบรรลุข้อตกลงในบล็อกที่เสนอโดยผู้นำ เนื่องจากผู้ใช้ที่เป็นอันตรายสามารถส่งผลกระทบได้ องค์ประกอบของ Br−1 (เช่น โดยการเลือกการชำระเงินบางส่วน) เราสร้างและใช้งานเป็นพิเศษ อินพุตเพิ่มเติมเพื่อพิสูจน์ว่าตัวนำสำหรับบล็อก rth และชุดตัวตรวจสอบ SV r เป็นจริง สุ่มเลือก 3. ปริมาณ (เมล็ด) Qr. เราใช้บล็อกสุดท้าย Br−1 ใน blockchain เพื่อที่จะ กำหนดชุดตรวจสอบถัดไปและผู้นำที่รับผิดชอบในการสร้างบล็อกใหม่โดยอัตโนมัติ บ. ความท้าทายของแนวทางนี้คือ โดยเพียงแค่เลือกการชำระเงินที่แตกต่างกันเล็กน้อยใน รอบที่แล้ว ศัตรูที่ทรงพลังของเราจะควบคุมผู้นำคนต่อไปได้อย่างมหาศาล แม้ว่าเขา ควบคุมผู้เล่น/เงินในระบบได้เพียง 1/1000 เท่านั้น เขาสามารถมั่นใจได้ว่าผู้นำทั้งหมดจะเป็นเช่นนั้น เป็นอันตราย (ดูสัญชาตญาณมาตรา 4.1) ความท้าทายนี้เป็นศูนย์กลางของแนวทาง proof-of-stake ทั้งหมด และเท่าที่ทราบมาจนถึงตอนนี้ก็ยังไม่ได้รับการแก้ไขอย่างน่าพอใจ เพื่อตอบสนองความท้าทายนี้ เราตั้งใจสร้างและปรับปรุงอย่างต่อเนื่อง แยกต่างหากและระมัดระวัง ปริมาณที่กำหนด (Qr) ซึ่งพิสูจน์ได้ว่าไม่เพียงแต่คาดเดาไม่ได้ แต่ยังวัดไม่ได้ด้วย ศัตรูที่ทรงพลัง เราอาจเรียก Qr ว่าเป็นเมล็ดที่ r เนื่องจากมาจาก Qr ที่ Algorand เลือก ผ่านการเรียงลำดับการเข้ารหัสลับ ผู้ใช้ทั้งหมดที่จะมีบทบาทพิเศษในยุคของ บล็อกที่ 1 4. การเรียงลำดับด้วยการเข้ารหัสลับและข้อมูลประจำตัวที่เป็นความลับ สุ่มและไม่คลุมเครือโดยใช้บล็อกสุดท้ายปัจจุบัน Br−1 เพื่อเลือกชุดผู้ตรวจสอบและผู้นำที่รับผิดชอบ การสร้างบล็อกใหม่ Br นั้นยังไม่เพียงพอ เนื่องจากต้องรู้จัก Br−1 ก่อนสร้าง Br ปริมาณ Qr−1 ที่ไม่สามารถประเมินได้สุดท้ายที่มีอยู่ใน Br−1 จะต้องทราบด้วย ตามนั้นครับ เป็นผู้ตรวจสอบและเป็นผู้นำที่รับผิดชอบในการคำนวณบล็อก Br. ดังนั้นศัตรูผู้ทรงพลังของเรา อาจทำให้ทุกคนเสียหายทันที ก่อนที่พวกเขาจะพูดคุยเรื่อง Br เพื่อให้ได้มา ควบคุมบล็อกที่พวกเขารับรองได้อย่างสมบูรณ์ เพื่อป้องกันปัญหานี้ ผู้นำ (และผู้ตรวจสอบด้วย) แอบเรียนรู้เกี่ยวกับบทบาทของตน แต่ก็สามารถทำได้ คำนวณข้อมูลประจำตัวที่เหมาะสม สามารถพิสูจน์ให้ทุกคนที่มีบทบาทนั้นได้อย่างแท้จริง เมื่อ ผู้ใช้ตระหนักเป็นการส่วนตัวว่าเขาเป็นผู้นำในบล็อกถัดไป อันดับแรกเขาแอบรวบรวมบล็อกของเขา เสนอบล็อกใหม่ของตนเองแล้วเผยแพร่ (เพื่อให้ได้รับการรับรอง) ร่วมกับบล็อกของตนเอง หนังสือรับรอง ด้วยวิธีนี้แม้ว่าฝ่ายตรงข้ามจะรู้ได้ทันทีว่าใครคือผู้นำคนต่อไป ถูกบล็อก และถึงแม้ว่าเขาจะทำให้เขาเสียหายได้ในทันที แต่ก็สายเกินไปที่ฝ่ายตรงข้ามจะทำได้ มีอิทธิพลต่อการเลือกบล็อกใหม่ แท้จริงแล้วเขาไม่สามารถ "โทรกลับ" ข้อความของผู้นำได้อีกต่อไปเกินกว่าที่รัฐบาลที่มีอำนาจจะสามารถนำข้อความที่ WikiLeaks แพร่กระจายแบบไวรัลกลับเข้าไปในขวดได้ ดังที่เราจะได้เห็น เราไม่สามารถรับประกันเอกลักษณ์ของผู้นำได้ และทุกคนก็ไม่แน่ใจว่าใครเป็นผู้นำ รวมถึงตัวผู้นำเองด้วย! แต่ใน Algorand รับประกันความก้าวหน้าที่ชัดเจน 5. ความสามารถในการเปลี่ยนผู้เล่น หลังจากที่เขาเสนอบล็อกใหม่ ผู้นำอาจจะ "ตาย" เช่นกัน (หรือเป็น) ถูกปรปักษ์เสียหาย) เพราะงานของเขาเสร็จแล้ว แต่สำหรับผู้ตรวจสอบใน SV r สิ่งต่างๆ ยังน้อยอยู่ เรียบง่าย โดยแท้จริงแล้ว มีหน้าที่รับรองบล็อกใหม่ Br พร้อมด้วยลายเซ็นมากมายเพียงพอ พวกเขาจะต้องดำเนินการตามข้อตกลงไบแซนไทน์ในบล็อกที่ผู้นำเสนอก่อน ปัญหาก็คือว่า ไม่ว่าจะมีประสิทธิภาพเพียงใด BA⋆ต้องการหลายขั้นตอนและความซื่อสัตย์ของผู้เล่น> 2/3 นี่เป็นปัญหา เพราะด้วยเหตุผลด้านประสิทธิภาพ ชุดผู้เล่นของ BA⋆ ประกอบด้วยชุดเล็ก SV r สุ่มเลือกจากชุดผู้ใช้ทั้งหมด ดังนั้นศัตรูผู้ทรงพลังของเราถึงแม้จะทำไม่ได้ก็ตาม เสียหาย 1/3 ของผู้ใช้ทั้งหมด สามารถทำให้สมาชิก SV r ทุกคนเสียหายได้อย่างแน่นอน! โชคดีที่เราจะพิสูจน์ได้ว่าโปรโตคอล BA⋆ ซึ่งดำเนินการโดยการเผยแพร่ข้อความในลักษณะเพียร์โทเพียร์นั้นเป็นสิ่งที่ผู้เล่นสามารถแทนที่ได้ ข้อกำหนดใหม่นี้หมายความว่าโปรโตคอลถูกต้องและ บรรลุฉันทามติอย่างมีประสิทธิภาพแม้ว่าแต่ละขั้นตอนจะดำเนินการโดยขั้นตอนใหม่ทั้งหมดและแบบสุ่ม และเลือกชุดผู้เล่นอย่างอิสระ ดังนั้นด้วยจำนวนผู้ใช้หลายล้านคน แต่ละกลุ่มผู้เล่นเล็กๆ ที่เกี่ยวข้องกับขั้นตอนของ BA ⋆ส่วนใหญ่น่าจะมีจุดตัดว่างกับเซตถัดไป นอกจากนี้ ชุดของผู้เล่นที่มีขั้นตอนต่างกันของ BA⋆ อาจจะมีความแตกต่างกันโดยสิ้นเชิง ภาวะคาร์ดินัล นอกจากนี้สมาชิกของแต่ละชุดยังไม่รู้ว่าผู้เล่นชุดต่อไปจะเป็นใคร เป็นและไม่แอบผ่านสภาพภายในใด ๆ คุณสมบัติของผู้เล่นที่ทดแทนได้นั้นมีความสำคัญอย่างยิ่งในการเอาชนะความไดนามิกและทรงพลังมาก ศัตรูที่เราจินตนาการ เราเชื่อว่าโปรโตคอลของผู้เล่นที่ทดแทนได้จะพิสูจน์ได้ว่ามีความสำคัญในหลายๆ อย่าง บริบทและการประยุกต์ โดยเฉพาะอย่างยิ่ง สิ่งเหล่านี้จะมีความสำคัญอย่างยิ่งในการรันโปรโตคอลย่อยขนาดเล็กอย่างปลอดภัย ฝังอยู่ในจักรวาลที่ใหญ่ขึ้นของผู้เล่นพร้อมกับศัตรูที่มีพลังซึ่งสามารถทำลายล้างได้ เป็นส่วนเล็กๆ ของผู้เล่นทั้งหมด ไม่มีความยุ่งยากในการทำให้ผู้เล่นในกลุ่มเล็กๆ เสียหายทั้งหมด โปรโตคอลย่อย คุณสมบัติ/เทคนิคเพิ่มเติม: Lazy Honesty ผู้ใช้ที่ซื่อสัตย์ปฏิบัติตามคำสั่งของเขา คำแนะนำซึ่งรวมถึงการออนไลน์และเรียกใช้โปรโตคอล เนื่องจาก Algorand มีเพียงความเรียบง่ายเท่านั้น ข้อกำหนดด้านการคำนวณและการสื่อสาร ออนไลน์และใช้งานโปรโตคอล “ใน พื้นหลัง” ไม่ใช่การเสียสละครั้งใหญ่ แน่นอนว่ามี "การขาดหายไป" บ้างในหมู่ผู้เล่นที่ซื่อสัตย์เช่นเดียวกับพวกเขา เนื่องจากการสูญเสียการเชื่อมต่ออย่างกะทันหันหรือจำเป็นต้องรีบูตเครื่อง จะต้องได้รับการยอมรับโดยอัตโนมัติ (เพราะ เราถือว่าผู้เล่นไม่กี่คนดังกล่าวเป็นอันตรายชั่วคราวได้เสมอ) ให้เราชี้ให้เห็นว่าอย่างไรก็ตาม Algorand นั้นสามารถปรับเปลี่ยนได้อย่างง่ายดายเพื่อให้ทำงานในรูปแบบใหม่ซึ่งผู้ใช้ที่ซื่อสัตย์จะเป็น มักจะไม่เป็นเช่นนั้น รุ่นใหม่ของเราสามารถแนะนำอย่างไม่เป็นทางการได้ดังนี้ ขี้เกียจซื่อสัตย์. พูดโดยคร่าวๆ ผู้ใช้ที่ฉันขี้เกียจแต่ซื่อสัตย์ถ้า (1) เขาปฏิบัติตามที่เขากำหนดไว้ทั้งหมด คำแนะนำ เมื่อเขาถูกขอให้เข้าร่วมในระเบียบการ และ (2) เขาถูกขอให้เข้าร่วม ถึงโปรโตคอลเพียงเล็กน้อยเท่านั้น และมีการแจ้งล่วงหน้าที่เหมาะสม ด้วยแนวคิดที่ผ่อนคลายในเรื่องความซื่อสัตย์ เราอาจมั่นใจมากขึ้นว่าคนที่ซื่อสัตย์จะเป็นเช่นไร พร้อมเสมอเมื่อเราต้องการ และ Algorand รับประกันว่า เมื่อเป็นกรณีนี้ ระบบทำงานอย่างปลอดภัย แม้ว่า ณ เวลาที่กำหนด ผู้เล่นที่เข้าร่วมส่วนใหญ่เป็นคนที่เป็นอันตราย1.3 งานที่เกี่ยวข้องอย่างใกล้ชิด วิธีการพิสูจน์การทำงาน (เช่น [29] และ [4] ที่อ้างถึง) ค่อนข้างตั้งฉากกับแนวทางของเรา ก็เช่นกัน วิธีการตามข้อตกลงไบเซนไทน์ในการส่งข้อความหรือการยอมรับข้อบกพร่องของไบแซนไทน์ในทางปฏิบัติ (เช่นที่อ้างถึง [8]) แท้จริงแล้ว โปรโตคอลเหล่านี้ไม่สามารถทำงานในกลุ่มผู้ใช้ทั้งหมดได้ และไม่สามารถ ในโมเดลของเรา ให้จำกัดเฉพาะผู้ใช้กลุ่มเล็กๆ ที่เหมาะสม อันที่จริงศัตรูที่ทรงพลังของเราของฉัน สร้างความเสียหายให้กับผู้ใช้ทั้งหมดที่เกี่ยวข้องกับชุดเล็ก ๆ ที่ถูกกล่าวหาว่าใช้งานโปรโตคอล BA จริง ๆ ทันที แนวทางของเราถือได้ว่าเกี่ยวข้องกับหลักฐานการมีส่วนได้ส่วนเสีย [2] ในแง่ที่ว่า "อำนาจ" ของผู้ใช้ ในการสร้างบล็อกจะเป็นสัดส่วนกับเงินที่พวกเขาเป็นเจ้าของในระบบ (ตรงข้ามกับ —พูด— ถึง เงินที่พวกเขาใส่ไว้ใน “เอสโครว์”) บทความที่ใกล้เคียงที่สุดของเราคือ Sleepy Consensus Model ของ Pass และ Shi [30] เพื่อหลีกเลี่ยง การคำนวณจำนวนมากที่จำเป็นในแนวทาง proof-of-work เอกสารของพวกเขาอาศัย (และกรุณา เครดิต) Algorand การเรียงลำดับการเข้ารหัสลับ โดยมีประเด็นสำคัญหลายประการที่เหมือนกันหลายประการ มีความแตกต่างที่สำคัญระหว่างเอกสารของเรา โดยเฉพาะอย่างยิ่ง (1) การตั้งค่าของพวกเขาได้รับอนุญาตเท่านั้น ในทางตรงกันข้าม Algorand ก็เป็นระบบที่ไม่ได้รับอนุญาตเช่นกัน (2) พวกเขาใช้โปรโตคอลสไตล์ Nakamoto และทำให้ blockchain ของพวกเขาแยกบ่อยครั้ง แม้ว่า แจกจ่าย proof-of-work ในระเบียบการของพวกเขา ผู้นำที่ได้รับการคัดเลือกอย่างลับๆ จะถูกขอให้ยืดเวลา ใช้ได้ยาวนานที่สุด (ในแง่ที่สมบูรณ์ยิ่งขึ้น) blockchain ดังนั้นจึงหลีกเลี่ยงไม่ได้ที่จะต้องใช้ส้อมและต้องรอ บล็อกนั้นมี "ความลึก" เพียงพอในห่วงโซ่ แท้จริงแล้วการบรรลุเป้าหมายร่วมกับศัตรู ความสามารถในการเสียหายแบบปรับตัวได้ พวกเขาต้องการบล็อกที่มีความลึกแบบโพลี (N) โดยที่ N แสดงถึง จำนวนผู้ใช้ทั้งหมดในระบบ โปรดสังเกตว่า แม้จะสมมติว่าสามารถสร้างบล็อกได้ ในหนึ่งนาที หากมีผู้ใช้ N = 1 ล้านคน ก็จะต้องรอประมาณ 2 ล้านปี บล็อกจะกลายเป็น N ลึก และใช้เวลาประมาณ 2 ปีกว่าบล็อกจะกลายเป็น N ลึก ในทางตรงกันข้าม blockchain ของ Algorand ส้อมด้วยความน่าจะเป็นเพียงเล็กน้อยเท่านั้น แม้ว่าฝ่ายตรงข้ามจะเสียหาย ผู้ใช้ทันทีและปรับเปลี่ยนได้ และสามารถพึ่งพาบล็อกใหม่ได้ทันที (3) พวกเขาไม่ได้จัดการข้อตกลงไบเซนไทน์แต่ละรายการ ในแง่หนึ่งพวกเขารับประกันเท่านั้น “ฉันทามติในที่สุดเกี่ยวกับลำดับค่านิยมที่เพิ่มขึ้น” พวกเขาเป็นโปรโตคอลการจำลองแบบของรัฐ กว่า BA one และไม่สามารถใช้เพื่อบรรลุข้อตกลง Byzantine เกี่ยวกับมูลค่าดอกเบี้ยส่วนบุคคลได้ ในทางตรงกันข้าม Algorand สามารถใช้เพียงครั้งเดียว หากต้องการ เพื่อให้ผู้ใช้หลายล้านคนสามารถใช้งานได้อย่างรวดเร็ว บรรลุข้อตกลงไบเซนไทน์เกี่ยวกับมูลค่าดอกเบี้ยเฉพาะ (4) พวกเขาต้องการนาฬิกาที่ซิงโครไนซ์อย่างอ่อน นั่นคือนาฬิกาของผู้ใช้ทุกคนจะถูกตั้งเวลาเพียงเล็กน้อย δ. ในทางตรงกันข้าม ใน Algorand นาฬิกาจำเป็นต้องมี "ความเร็ว" ที่เท่ากัน (โดยพื้นฐานแล้ว) เท่านั้น (5) โปรโตคอลของพวกเขาใช้งานได้กับผู้ใช้ที่ขี้เกียจแต่ซื่อสัตย์หรือกับผู้ใช้ออนไลน์ส่วนใหญ่ที่ซื่อสัตย์ พวกเขากรุณาให้เครดิต Algorand สำหรับการหยิบยกปัญหาของผู้ใช้ที่ซื่อสัตย์ออกไปเป็นจำนวนมาก และสำหรับ หยิบยกโมเดลความซื่อสัตย์ที่เกียจคร้านมาตอบสนอง โปรโตคอลของพวกเขาไม่เพียงแต่ใช้งานได้กับคนขี้เกียจเท่านั้น รูปแบบความซื่อสัตย์ แต่ยังอยู่ในรูปแบบง่วงนอนของฝ่ายตรงข้ามด้วย โดยที่ฝ่ายตรงข้ามเลือกว่าผู้ใช้รายใด ออนไลน์และเป็นของออฟไลน์ โดยมีเงื่อนไขว่าผู้ใช้ออนไลน์ส่วนใหญ่มีความซื่อสัตย์ตลอดเวลา2 2รายงานฉบับดั้งเดิมถือว่าเป็นเพียงการรักษาความปลอดภัยในรูปแบบง่วงนอนของฝ่ายตรงข้ามเท่านั้น ที่ เวอร์ชันดั้งเดิมของ Algorand ซึ่งอยู่ก่อนหน้าเวอร์ชันของพวกเขา ยังมองเห็นอย่างชัดเจนโดยสมมติว่าส่วนใหญ่ที่กำหนด ผู้เล่นออนไลน์มีความซื่อสัตย์อยู่เสมอ แต่ได้แยกออกจากการพิจารณาอย่างชัดเจน เพื่อสนับสนุนโมเดลความซื่อสัตย์ที่ขี้เกียจ (ตัวอย่างเช่น หาก ณ จุดใดจุดหนึ่งของผู้ใช้ที่ซื่อสัตย์เลือกที่จะออฟไลน์ ผู้ใช้ส่วนใหญ่ ออนไลน์อาจเป็นอันตรายได้ ดังนั้น เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้น ปฏิปักษ์ควรบังคับส่วนใหญ่ของเขา ผู้เล่นที่เสียหายให้ไปออฟไลน์ด้วย ซึ่งเห็นได้ชัดว่าขัดต่อผลประโยชน์ของตนเอง) โปรดสังเกตว่าโปรโตคอลที่มีเสียงข้างมาก ของผู้เล่นที่เกียจคร้านแต่ซื่อสัตย์จะทำงานได้ดีหากผู้ใช้ออนไลน์ส่วนใหญ่มักเป็นอันตราย ที่เป็นเช่นนี้ก็เพราะว่า ผู้เล่นที่ซื่อสัตย์จำนวนเพียงพอ โดยรู้ว่าพวกเขาจะมีความสำคัญในช่วงเวลาที่หายาก จะเลือก ย่อมไม่หลุดพ้นไปในขณะนั้น และมิให้ปรปักษ์บังคับให้หลุดพ้นได้ เพราะไม่รู้ว่าใครเป็นผู้ ผู้เล่นที่ซื่อสัตย์ที่สำคัญอาจเป็นได้(6) พวกเขาต้องการเสียงส่วนใหญ่ที่ซื่อสัตย์ ในทางตรงกันข้าม Algorand ต้องใช้เวอร์ชันปัจจุบัน 2/3 ส่วนใหญ่ที่ซื่อสัตย์ เอกสารอีกฉบับที่อยู่ใกล้เราคือ Ouroboros: โปรโตคอล Blockchain ที่พิสูจน์ได้ว่ามีความปลอดภัยที่พิสูจน์ได้ โดย Kiayias, Russell, David และ Oliynykov [20] ระบบของพวกเขาก็ปรากฏตามหลังเราด้วย มันยัง ใช้การเรียงลำดับด้วยความเย็นเพื่อแจกจ่ายหลักฐานการทำงานในลักษณะที่พิสูจน์ได้ อย่างไรก็ตามของพวกเขา ระบบเป็นโปรโตคอลสไตล์ Nakamoto อีกครั้งซึ่งทางแยกเป็นสิ่งที่หลีกเลี่ยงไม่ได้และบ่อยครั้ง (อย่างไรก็ตาม ในโมเดลของพวกเขา บล็อกไม่จำเป็นต้องลึกเท่ากับโมเดลฉันทามติที่ง่วงนอน) นอกจากนี้ ระบบของพวกเขาขึ้นอยู่กับสมมติฐานดังต่อไปนี้: ตามคำพูดของผู้เขียนเอง "(1) เครือข่ายมีการซิงโครไนซ์สูง (2) ผู้มีส่วนได้ส่วนเสียส่วนใหญ่ที่ได้รับการคัดเลือกพร้อมให้บริการตามความจำเป็น ที่จะเข้าร่วมในแต่ละยุค (3) ผู้มีส่วนได้ส่วนเสียจะไม่ถูกเปิดเผยเป็นเวลานาน (4) การปรับตัวของการทุจริตอาจมีความล่าช้าเล็กน้อยซึ่งวัดเป็นเส้นตรง พารามิเตอร์ความปลอดภัย” ในทางตรงกันข้าม Algorand มีความน่าจะเป็นอย่างล้นหลาม ไม่มีการฟอร์ค และ ไม่ได้ขึ้นอยู่กับสมมติฐานทั้ง 4 ข้อนี้ โดยเฉพาะอย่างยิ่งใน Algorand ฝ่ายตรงข้ามสามารถทำได้ สร้างความเสียหายให้กับผู้ใช้ที่เขาต้องการควบคุมทันที

Предварительные сведения

2.1 Криптографические примитивы Идеальное хеширование. Мы будем полагаться на эффективно вычислимую криптографическую hash функцию H, которая отображает строки произвольной длины в двоичные строки фиксированной длины. Следуя давней традиции, мы моделируем H как случайное oracle, по существу функция, отображающая каждую возможную строку s в случайную и независимо выбранная (а затем фиксированная) двоичная строка H(s) выбранной длины. В этой статье H имеет выходные данные длиной 256 бит. Действительно, такая длина достаточно коротка, чтобы сделать эффективность системы и достаточно длительный срок, чтобы сделать систему безопасной. Например, мы хотим, чтобы H был устойчив к столкновениям. То есть должно быть сложно найти две разные строки x и y такие, что H(x) = H(y). Когда H представляет собой случайное число oracle с выходными данными длиной 256 бит, найти любую такую пару строк действительно сложно. сложно. (Для случайной попытки и использования парадокса дня рождения потребуется 2256/2 = 2128. испытания.) Цифровая подпись. Цифровые подписи позволяют пользователям удостоверять подлинность информации друг друга. не разглашая никаких секретных ключей. Схема цифровой подписи состоит из трех быстрых Алгоритмы: вероятностный генератор ключей G, алгоритм подписи S и алгоритм проверки V. Учитывая параметр безопасности k, достаточно большое целое число, пользователь i использует G для создания пары k-битные ключи (т. е. строки): «открытый» ключ pki и соответствующий «секретный» ключ подписи Ski. Крайне важно, открытый ключ не «выдает» соответствующий секретный ключ. То есть, даже учитывая знание pki, нет еще один человек, кроме меня, способен рассчитать лыжи менее чем за астрономическое время. Пользователь i использует лыжи для цифровой подписи сообщений. Для каждого возможного сообщения (двоичной строки) m я сначала hashes m, а затем запускает алгоритм S на входах H(m) и на лыжах, чтобы создать k-битную строку sigpki(м) \(\triangleq\)S(H(м), лыжи) .3 3Поскольку H устойчив к коллизиям, практически невозможно, чтобы, подписав m, кто-то «случайно подписал» другой сообщение м'.Двоичная строка sigpki(m) называется цифровой подписью i m (относительно pki) и может быть проще обозначается sigi(m), когда открытый ключ pki ясен из контекста. Каждый, кто знает pki, может использовать его для проверки цифровых подписей, созданных i. В частности, на вводит (a) открытый ключ pki игрока i, (b) сообщение m и (c) строку s, то есть предполагаемый i цифровую подпись сообщения m, алгоритм проверки V выдает либо ДА, либо НЕТ. Свойства, которые нам необходимы от схемы цифровой подписи: 1. Легитимность подписей всегда проверяется: если s = sigi(m), то V (pki, m, s) = Y ES; и 2. Цифровые подписи сложно подделать: без знания лыж время найти такую строку что V (pki, m, s) = Y ES для сообщения m, никогда не подписанного i, является астрономически длинным. (Следуя строгим требованиям безопасности Голдвассера, Микали и Ривеста [17], это правда. даже если можно получить подпись любого другого сообщения.) Соответственно, чтобы никто другой не мог подписывать сообщения от его имени, игрок i должен сохранить подписывание секретного ключа (отсюда и термин «секретный ключ») и предоставление возможности любому человеку проверять сообщения. он подписывает, и я заинтересован в обнародовании его ключа PKI (отсюда и термин «открытый ключ»). В общем, сообщение m невозможно получить по его сигнатуре sigi(m). Чтобы виртуально разобраться с цифровыми подписями, которые удовлетворяют концептуально удобному свойству «извлекаемости» (т.е. гарантировать, что подписывающее лицо и сообщение легко вычислимы по подписи, мы определяем SIGpki(m) = (i, m, sigpki(m)) и SIGi(m) = (i, m, sigi(m)), если pki ясен. Уникальная цифровая подпись. Мы также рассматриваем схемы цифровой подписи (G, S, V), удовлетворяющие следующее дополнительное имущество. 3. Уникальность. Трудно найти строки pk', m, s и s' такие, что s ̸= s′ и V (pk′,m,s) = V (pk′,m,s′) = 1. (Обратите внимание, что свойство уникальности справедливо и для строк pk', которые не были сгенерированы законным образом. открытые ключи. Однако, в частности, свойство уникальности подразумевает, что если использовать указанный генератор ключей G для вычисления открытого ключа pk вместе с соответствующим секретным ключом sk, и, таким образом, зная sk, для него было бы практически невозможно найти два разных цифровых подписи одного и того же сообщения относительно pk.) Примечания • От уникальных подписей до проверяемых случайных функций. По отношению к цифровому схеме подписи со свойством единственности отображение m \(\to\) H(sigi(m)) соответствует каждая возможная строка m, уникальная, случайно выбранная 256-битная строка, и правильность этого отображение можно доказать с помощью сигнатуры sigi(m). То есть идеальная hashing и схема цифровой подписи, по существу удовлетворяющая свойству уникальности. обеспечить элементарную реализацию проверяемой случайной функции, как это было введено и Микали, Рабин и Вадхан [27]. (Их первоначальная реализация была обязательно более сложной, поскольку они не полагались на идеальное hashing.)• Три различных потребности в цифровых подписях. В Algorand пользователь i полагается на цифровые подписи для (1) Аутентификация собственных платежей. В этом приложении ключи могут быть «долгосрочными» (т.е. использоваться для подписывать множество сообщений в течение длительного периода времени) и исходят из обычной схемы подписи. (2) Генерация учетных данных, доказывающих, что i имеет право действовать на каком-то этапе s раунда r. Здесь, ключи могут быть долгосрочными, но должны исходить из схемы, удовлетворяющей свойству уникальности. (3) Аутентификация сообщения, которое я отправляю на каждом этапе своих действий. Здесь ключи должны быть эфемерны (т. е. уничтожаются после первого использования), но могут исходить из обычной схемы подписи. • Небольшое упрощение. Для простоты мы предполагаем, что у каждого пользователя i будет один долгосрочный ключ. Соответственно, такой ключ должен исходить из схемы подписи с уникальностью собственность. Такая простота требует небольших вычислительных затрат. Обычно, по сути, уникальные цифровые Изготовление и проверка подписей немного дороже, чем обычные подписи. 2.2 Идеализированный публичный реестр Algorand пытается имитировать следующую платежную систему, основанную на идеализированном публичном реестре. 1. Исходное состояние. Деньги связаны с отдельными открытыми ключами (генерируемыми частным образом и принадлежат пользователям). Сдача pk1, . . . , pkj — начальные открытые ключи и a1, . . . , адж их соответствующие начальные суммы денежных единиц, то начальный статус S0 = (pk1, a1), . . . , (pkj, aj) , которая считается общеизвестной в системе. 2. Платежи. Пусть pk — открытый ключ, имеющий в данный момент \(\geq\)0 денежных единиц, pk’ — другой открытый ключ. ключ и a' - неотрицательное число, не превышающее a. Тогда (действительный) платеж \(\wp\) является цифровым подпись относительно pk, определяющая перевод a' денежных единиц из pk в pk' вместе с некоторой дополнительной информацией. В символах, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), где я представляю любую дополнительную информацию, которая считается полезной, но не конфиденциальной (например, время информацию и идентификатор платежа), а также любую дополнительную информацию, которая считается конфиденциальной (например, причина платежа, возможно, личности владельцев ПК и ПК' и так далее). Мы называем pk (или его владельца) плательщиком, каждого pk' (или его владельца) - получателем платежа, а a' - сумма платежа \(\wp\). Бесплатное присоединение через платежи. Обратите внимание, что пользователи могут присоединиться к системе, когда захотят. генерация собственных пар открытого/секретного ключей. Соответственно, открытый ключ pk', который появляется в платеж \(\wp\)выше может быть недавно сгенерированным открытым ключом, который никогда не «владел» деньгами раньше. 3. Волшебная книга. В идеализированной системе все платежи действительны и отображаются в защищенном от несанкционированного доступа виде. список L наборов платежей, «размещенных на небе» на всеобщее обозрение: L = ПЛАТИТЕ 1, ПЛАТИТЕ 2, . . . ,Каждый блок PAY r+1 состоит из совокупности всех платежей, совершенных с момента появления блока ПЛАТИТЬ р. В идеальной системе новый блок появляется через фиксированное (или конечное) время. Обсуждение. • Больше общих платежей и неизрасходованных выходных транзакций. В более общем смысле, если открытый ключ pk владеет суммой a, то действительный платеж \(\wp\)pk может перевести суммы a' 1, а' 2, . . ., соответственно клавишам pk' 1, пк' 2, . . ., пока P джа' j \(\leq\)а. В Bitcoin и подобных системах деньги, принадлежащие ПК с открытым ключом, разделены на отдельные суммы, и платеж \(\wp\), произведенный pk, должен передать такую отдельную сумму a полностью. Если pk хочет передать на другой ключ только часть a' < a, то он должен также передать баланс, неизрасходованный вывод транзакции, на другой ключ, возможно, на сам ПК. Algorand также работает с ключами, имеющими отдельные суммы. Однако для того, чтобы сосредоточиться на новые аспекты Algorand, концептуально проще придерживаться наших более простых форм платежей и ключи, имеющие одну связанную с ними сумму. • Текущий статус. Идеализированная схема не предоставляет напрямую информацию о текущем состоянии. статус системы (т. е. сколько денежных единиц имеет каждый открытый ключ). Эта информация выводится из Magic Ledger. В идеальной системе активный пользователь постоянно сохраняет и обновляет самую свежую информацию о состоянии. иначе ему пришлось бы восстанавливать его либо с нуля, либо с того момента, когда он в последний раз вычислил это. (В следующей версии этой статьи мы дополним Algorand, чтобы сделать его пользователи могут эффективно восстановить текущий статус.) • Безопасность и «Конфиденциальность». Цифровые подписи гарантируют, что никто не сможет подделать платеж другой пользователь. При платеже \(\wp\) открытые ключи и сумма не скрыты, а конфиденциальные информация я есть. Действительно, в \(\wp\) появляется только H(I), и поскольку H — идеальная hash функция, H(I) — это случайное 256-битное значение, и поэтому нет способа выяснить, в чем я был лучше, чем с помощью просто догадываюсь об этом. Тем не менее, чтобы доказать, кем я был (например, доказать причину выплаты), плательщик может просто раскрыть I. Правильность раскрытого I можно проверить, вычислив H(I) и сравниваем полученное значение с последним элементом \(\wp\). Фактически, поскольку H устойчив к столкновениям, трудно найти второе значение I′ такое, что H(I) = H(I′). 2.3 Основные понятия и обозначения Ключи, пользователи и владельцы Если не указано иное, каждый открытый ключ («ключ» для краткости) является долгосрочным и относится к схеме цифровой подписи со свойством уникальности. Открытый ключ, к которому я присоединяюсь системе, когда другой открытый ключ j, уже находящийся в системе, производит платеж i. Для цвета мы персонифицируем ключи. Мы называем ключ i «он», говорим, что я честен, что я посылаю и получает сообщения и т. д. Пользователь — синоним ключа. Когда мы хотим отличить ключ от лицу, которому он принадлежит, мы соответственно используем термины «цифровой ключ» и «владелец». Безразрешительные и разрешенные системы. Система является недоступной, если цифровой ключ свободен. присоединиться в любое время, и владелец может владеть несколькими цифровыми ключами; и это разрешено, в противном случае.Уникальное представление Каждый объект в Algorand имеет уникальное представление. В частности, каждое множество {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} упорядочивается заранее заданным образом: например, сначала лексикографически по x, затем по y и т. д. Односкоростные часы Глобальных часов нет: у каждого пользователя свои часы. Пользовательские часы ни в коем случае не нужно синхронизировать. Однако мы предполагаем, что все они имеют одинаковую скорость. Например, если по часам пользователя i сейчас 12:00, по часам пользователя i это может быть 14:30. часы другого пользователя j, но когда по часам i будет 12:01, по часам i будет 2:31 на часы Джей. То есть «одна минута одинакова (достаточно, по сути одинакова) для каждого пользователя». Раунды Algorand организован в логических единицах, r = 0, 1, . . ., называемые раундами. Мы постоянно используем верхние индексы для обозначения раундов. Чтобы указать, что нечисловая величина Q (например, строка, открытый ключ, набор, цифровая подпись и т. д.) относится к раунду r, мы просто пишем Qr. Только когда Q является настоящим числом (в отличие от двоичной строки, интерпретируемой как число), выполните мы пишем Q(r), так что символ r нельзя интерпретировать как показатель степени Q. В (начале a) раунда r > 0 набор всех открытых ключей равен PKr, а состояние системы равно Ср = н я, а(р) я, . . .  : я €PKro , где а(г) я это сумма денег, доступная для открытого ключа i. Заметим, что PKr выводится из Sr, и что Sr может также указывать другие компоненты для каждого открытого ключа i. Для раунда 0 PK0 — это набор начальных открытых ключей, а S0 — начальный статус. И ПК0, и Предполагается, что S0 являются общеизвестными в системе. Для простоты в начале раунда r, так что ПК1, . . . , ПКр и S1, . . . , сэр. В раунде r статус системы меняется с Sr на Sr+1: символически, Раунд r: Sr −→Sr+1. Платежи В Algorand пользователи постоянно совершают платежи (и распространяют их описано в подразделе 2.7). Платеж \(\wp\) пользователя i \(\in\)PKr имеет тот же формат и семантику. как в идеальной системе. А именно, \(\wp\)= SIGi(i, i′, a, I, H(I)) . Платеж \(\wp\) индивидуально действителен в раунде r (для краткости это платеж в раунде r), если (1) его сумма a меньше или равно a(r) i , и (2) он не появляется ни в одном официальном наборе выплат PAY r' для r' < r. (Как поясняется ниже, второе условие означает, что \(\wp\) еще не вступило в силу. Набор раундов r платежей i является коллективно действительным, если сумма их сумм не превышает a(r) я. Платёжные системы Набор выплат P в раунде r — это набор платежей в раунде r, такой, что для каждого пользователя i платежи из i в P (возможно, ни одного) являются коллективно действительными. Набор всех наборов выплат раунда r равен PAY(r). Раунд-р набор выплат P является максимальным, если ни один надмножество P не является набором выплат раунда r. Фактически мы предполагаем, что платеж \(\wp\)также определяет раунд \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , и не может быть действительным ни в одном раунде за пределами [\(\rho\), \(\rho\) + k] для некоторого фиксированного неотрицательного целого числа k.4 4Это упрощает проверку того, стал ли \(\wp\) «эффективным» (т. е. упрощает определение того, является ли некоторый набор выплат PAY r содержит \(\wp\). Когда k = 0, если \(\wp\)= SIGi(r, i, i′, a, I, H(I)) и \(\wp\)/\(\varepsilon\)PAY r, то я должен повторно отправить \(\wp\).Официальные платежные системы В каждом раунде r Algorand публично выбирает (способом, описанным ниже) один (возможно, пустой) набор выплат, PAY r, официальный набор выплат раунда. (По сути, PAY r представляет собой платежи раунда R, которые «на самом деле» произошли.) Как и в идеальной системе (и Bitcoin), (1) единственный способ для нового пользователя j войти в систему должен быть получателем платежа, принадлежащего официальному набору платежей PAY r данного раунда r; и (2) PAY r определяет статус следующего раунда Sr+1 на основе статуса текущего раунда Sr. Символически, ПЛАТА r : Sr −→Sr+1. В частности, 1. набор открытых ключей раунда r+1, PKr+1, состоит из объединения PKr и множества всех ключи получателя платежа, которые впервые появляются в платежах PAY r; и 2. количество денег a(r+1) я которым владеет пользователь i в раунде r + 1, представляет собой сумму ai(r) — т. е. сумма денег, которой я владел в предыдущем раунде (0, если i ̸\(\varepsilon\)PKr) — и сумма сумм выплачивается i согласно выплатам PAY р. В целом, как и в идеальной системе, каждый статус Sr+1 выводится из предыдущей истории платежей: ПЛАТИТЬ 0, . . . , ПЛАТИТЕ р. 2.4 Блоки и проверенные блоки В Algorand0 блок Br, соответствующий раунду r, определяет: сам r; набор платежей круглый r, ЗАПЛАТИТЕ r; количество Qr, которое необходимо объяснить, и hash предыдущего блока, H(Br-1). Таким образом, начиная с некоторого фиксированного блока B0, мы имеем традиционный blockchain: B1 = (1, ПЛАТИТЬ 1, Q0, H(B0)), B2 = (2, ПЛАТИТЬ 2, Q1, H(B1)), B3 = (3, ПЛАТИТЬ 3, Q2, H(B2)), . . . В Algorand подлинность блока фактически подтверждается отдельной информацией, «сертификат блока» CERT r, который превращает Br в проверенный блок, Br. Таким образом, Волшебная книга реализуется последовательностью проверенных блоков, Б1, Б2, . . . Обсуждение Как мы увидим, CERT r состоит из набора цифровых подписей для H(Br), большинства членов SV r вместе с доказательством того, что каждый из этих членов действительно принадлежит до СВ р. Мы могли бы, конечно, включить сертификаты CERT r в сами блоки, но обнаружили бы, что концептуально чище, если держать его отдельно.) В Bitcoin каждый блок должен удовлетворять специальному свойству, то есть должен «содержать решение задачи». крипто-головоломка», что делает генерацию блоков вычислительно интенсивной и форки неизбежны. и не редкость. Напротив, Algorand blockchain имеет два основных преимущества: он генерируется с помощью минимальные вычисления, и он не будет разделяться с чрезвычайно высокой вероятностью. Каждый блок Bi безопасным финалом, как только он войдет в blockchain.2,5 Приемлемая вероятность отказа Чтобы проанализировать безопасность Algorand, мы указываем вероятность F, с которой мы готовы признать, что что-то идет не так (например, что набор проверяющих SV r не имеет честного большинства). Как и в случае с выходной длиной криптографической hash функции H, F также является параметром. Но, как и в этом случае, мы считаем полезным присвоить F конкретное значение, чтобы получить более интуитивное представление. понимание того факта, что в Algorand действительно возможно одновременно наслаждаться достаточной безопасностью и достаточная эффективность. Чтобы подчеркнуть, что F — это параметр, который можно установить по желанию, в первом и второй варианты осуществления мы соответственно установили Ф = 10−12 и Ф = 10−18 . Обсуждение Обратите внимание, что 10−12 на самом деле меньше одного на триллион, и мы считаем, что такое выбор F является адекватным для нашего приложения. Подчеркнем, что 10−12 — это не вероятность с помощью которого Злоумышленник может подделать платежи честного пользователя. Все платежи в цифровом формате подписано, и, таким образом, если используются надлежащие цифровые подписи, вероятность подделки платежа намного ниже, чем 10−12, и фактически равно 0. Плохое событие, которое мы готовы терпеть с вероятностью F то, что blockchain Algorand разветвляется. Обратите внимание, что с нашими настройками F и продолжительностью в одну минуту, ожидается, что вилка будет происходить в blockchain Algorand так редко, как (примерно) раз в 1,9 миллиона лет. Напротив, в Bitcoin вилки возникают довольно часто. Более требовательный человек может установить F на более низкое значение. Для этого в нашем втором варианте мы рассматриваем установку F равным 10−18. Обратите внимание: если предположить, что блок генерируется каждую секунду, 1018 — приблизительное количество секунд, затраченное Вселенной на данный момент: от Большого взрыва до настоящего времени. время. Таким образом, при F = 10−18, если блок генерируется за секунду, следует ожидать возраста Вселенная, чтобы увидеть развилку. 2.6 Состязательная модель Algorand предназначен для обеспечения безопасности в очень состязательной модели. Давайте объясним. Честные и злонамеренные пользователи Пользователь честен, если он следует всем инструкциям протокола и прекрасно способен отправлять и получать сообщения. Пользователь является злонамеренным (т.е. византийским, в на языке распределенных вычислений), если он может произвольно отклоняться от предписанных инструкций. Противник Противник — это эффективный (технически полиномиальный) алгоритм, олицетворяемый цветом, который может немедленно сделать злонамеренным любого пользователя, которого он хочет, в любое время, когда он захочет (субъект только до верхнего предела числа пользователей, которых он может испортить). Злоумышленник полностью контролирует и прекрасно координирует всех злоумышленников. Он предпринимает все действия от их имени, включая получение и отправку всех их сообщений, и может позволить им отклоняться от предписанные им инструкции произвольным образом. Или он может просто изолировать отправку поврежденного пользователя и получение сообщений. Уточним, что никто больше автоматически не узнает, что пользователь i является злонамеренным, хотя моя злонамеренность может проявиться в действиях, которые Противник заставляет его предпринять. Однако этот могущественный противник • Не обладает неограниченной вычислительной мощностью и не может успешно создавать цифровые подпись добросовестного пользователя, за исключением случаев с незначительной вероятностью; и• Не может каким-либо образом вмешиваться в обмен сообщениями между честными пользователями. Более того, его способность атаковать честных пользователей ограничена одним из следующих предположений. Честность Большинство денег Мы рассматриваем континуум честного большинства денег (HMM). предположения: а именно, для каждого неотрицательного целого числа k и действительного h > 1/2, HHMk > h: честные пользователи в каждом раунде r владели долей, большей, чем h, от всех денег в система на раунде r −k. Обсуждение. Если предположить, что все злоумышленники прекрасно координируют свои действия (как будто контролируют одним существом, Противником) — довольно пессимистическая гипотеза. Идеальная координация между собой многим людям трудно достичь. Возможно, координация происходит только внутри отдельных групп. злонамеренных игроков. Но, поскольку нельзя быть уверенным в уровне координации злоумышленников может понравится, лучше перестраховаться, чем потом сожалеть. Предполагать, что Злоумышленник может тайно, динамически и немедленно развращать пользователей, также является неверным. пессимистичный. В конце концов, на самом деле получение полного контроля над действиями пользователя должно занять некоторое время. Предположение HMMk > h подразумевает, например, что если раунд (в среднем) реализуется в одну минуту, то большая часть денег в данном раунде останется в честных руках на не менее двух часов, если k = 120, и не менее одной недели, если k = 10 000. Обратите внимание, что предположения HMM и предыдущее «Честное большинство вычислительных мощностей» предположения связаны в том смысле, что, поскольку вычислительную мощность можно купить за деньги, если злоумышленники владеют большей частью денег, то они могут получить большую часть вычислительной мощности. 2,7 Коммуникационная модель Мы считаем, что распространение сообщений — то есть «одноранговые сплетни»5 — будет единственным средством общение. Временное предположение: своевременная доставка сообщений по всей сети. Для Большую часть этой статьи мы предполагаем, что каждое распространяемое сообщение достигает почти всех честных пользователей. своевременно. Мы устраним это предположение в разделе 10, где будем иметь дело с сетью перегородки, возникающие естественным путем или вызванные враждебностью. (Как мы увидим, мы только предполагаем своевременная доставка сообщений внутри каждого подключенного компонента сети.) Одним из конкретных способов обеспечения своевременной доставки распространяемых сообщений (во всей сети) является следующее: Для любой достижимости \(\rho\) > 95% и размера сообщения \(\mu\) \(\in\)Z+ существует \(\lambda\) \(\rho\),\(\mu\) такое, что если честный пользователь распространяет микробайтовое сообщение m в момент времени t, тогда m к моменту времени t + \(\lambda\) \(\rho\),\(\mu\) достигнет, по крайней мере, части \(\rho\) честных пользователей. 5По сути, как и в Bitcoin, когда пользователь распространяет сообщение m, каждый активный пользователь i получает m впервые, случайным образом и независимо выбирает достаточно небольшое количество активных пользователей, своих «соседей», которым он пересылает m, возможно, пока он не получит от них подтверждение. Распространение m прекращается, когда ни один пользователь не получает м впервые.Однако указанное выше свойство не может поддерживать наш протокол Algorand без явного и отдельного обеспечения механизма получения последней версии blockchain другим пользователем/хранилищем/и т. д. Фактически, чтобы построить новый блок Br, необходимо не только правильное множество верификаторов своевременно получить round-r сообщения, но и сообщения предыдущих раундов, чтобы знать Br-1 и все остальные предыдущие раунды. блоков, что необходимо для определения достоверности платежей в рублях. Следующие вместо этого достаточно предположения. Допущение о распространении сообщений (MP): Для всех \(\rho\) > 95% и \(\mu\) \(\in\)Z+ существует \(\lambda\) \(\rho\),\(\mu\) такие, что для всех моментов времени t и всех \(\mu\)-байтовых сообщений m, переданных честным пользователем до t −\(\lambda\) \(\rho\),\(\mu\), m к моменту времени t получает по крайней мере часть \(\rho\) честных пользователей. Протокол Algorand ’ фактически инструктирует каждого из небольшого числа пользователей (т. е. проверяющих заданный шаг раунда в Algorand ′, чтобы распространить отдельное сообщение (маленького) заданного размера, и нам нужно ограничить время, необходимое для выполнения этих инструкций. Мы делаем это, обогащая депутата предположение следующим образом. Для всех n, \(\rho\) > 95% и \(\mu\) \(\in\)Z+ существует \(\lambda\)n,\(\rho\),\(\mu\) такие, что для всех моментов времени t и всех \(\mu\)-байт сообщения m1, . . . , mn, каждый из которых был распространен честным пользователем до t −\(\lambda\)n,\(\rho\),\(\mu\), m1, . . . , млн получено, к моменту времени t, по крайней мере, долей \(\rho\) честных пользователей. Примечание • Вышеупомянутое предположение намеренно простое, но в то же время более сильное, чем необходимо в нашей статье.6 • Для простоты мы предполагаем \(\rho\) = 1 и поэтому оставляем упоминание \(\rho\). • Мы пессимистично предполагаем, что, если он не нарушит предположение МП, Противник полностью контролирует доставку всех сообщений. В частности, незаметно для честных пользователей, Противник может произвольно решить, какой честный игрок какое сообщение получит, когда, и произвольно ускорять доставку любого сообщения, которое он хочет.7

เบื้องต้น

2.1 การเข้ารหัสลับเบื้องต้น การแฮชในอุดมคติ เราจะพึ่งพาฟังก์ชัน hash การเข้ารหัสลับที่สามารถคำนวณได้อย่างมีประสิทธิภาพ H ซึ่ง จับคู่สตริงที่ยาวตามอำเภอใจกับสตริงไบนารีที่มีความยาวคงที่ ตามประเพณีอันยาวนาน เราสร้างแบบจำลอง H เป็นแบบสุ่ม oracle โดยพื้นฐานแล้วฟังก์ชันที่แมปแต่ละสตริงที่เป็นไปได้ s กับการสุ่มและ สตริงไบนารีที่เลือกอย่างอิสระ (และแก้ไขแล้ว) H(s) ของความยาวที่เลือก ในบทความนี้ H มีเอาต์พุตยาว 256 บิต แท้จริงแล้วความยาวดังกล่าวสั้นพอที่จะทำให้ ระบบมีประสิทธิภาพและยาวนานเพียงพอที่จะทำให้ระบบมีความปลอดภัย ตัวอย่างเช่น เราต้องการให้ H มีความยืดหยุ่นในการชนกัน กล่าวคือ มันควรจะเป็นเรื่องยากที่จะหาสตริง x และ y สองสตริงที่แตกต่างกันเพื่อให้ H(x) = H(y) เมื่อ H เป็น oracle แบบสุ่มที่มีเอาต์พุตยาว 256 บิต การค้นหาคู่ของสตริงดังกล่าวย่อมเป็นเช่นนั้น ความยากลำบาก (ลองสุ่มแล้วอาศัยความขัดแย้งวันเกิดจะได้ 2256/2 = 2128 การทดลอง) การลงนามแบบดิจิทัล ลายเซ็นดิจิทัลช่วยให้ผู้ใช้สามารถตรวจสอบข้อมูลระหว่างกันได้ โดยไม่ต้องแชร์คีย์ลับใดๆ ร่วมกัน รูปแบบลายเซ็นดิจิทัลประกอบด้วยสามอย่างรวดเร็ว อัลกอริธึม: ตัวสร้างคีย์ความน่าจะเป็น G อัลกอริธึมการลงนาม S และอัลกอริธึมการตรวจสอบ V เมื่อกำหนดพารามิเตอร์ความปลอดภัย k ซึ่งเป็นจำนวนเต็มที่สูงพอสมควร ผู้ใช้ i ใช้ G เพื่อสร้างคู่ของ คีย์ k-bit (เช่น สตริง): pki คีย์ "สาธารณะ" และสกีคีย์เซ็นชื่อ "ลับ" ที่ตรงกัน สิ่งสำคัญที่สุดคือ รหัสสาธารณะไม่ได้ "ทรยศ" รหัสลับที่เกี่ยวข้อง นั่นคือแม้จะได้รับความรู้เกี่ยวกับ pki แล้วก็ตาม อีกอย่างหนึ่งคือฉันสามารถคำนวณสกีได้ในเวลาน้อยกว่าทางดาราศาสตร์ ผู้ใช้ฉันใช้สกีเพื่อเซ็นข้อความแบบดิจิทัล สำหรับแต่ละข้อความที่เป็นไปได้ (สตริงไบนารี่) m อันดับแรก hashes m จากนั้นรันอัลกอริทึม S บนอินพุต H(m) และ ski เพื่อสร้างสตริง k-bit sigpki(m) \(\triangleq\)S(H(m), สกี) .3 3เนื่องจาก H ทนทานต่อการชน จึงเป็นไปไม่ได้ในทางปฏิบัติที่การลงนาม m จะเป็นการ "ส่งสัญญาณ" ที่แตกต่างโดยไม่ได้ตั้งใจ ข้อความม'สตริงไบนารี่ sigpki(m) เรียกว่าลายเซ็นดิจิทัลของ i ของ m (สัมพันธ์กับ pki) และสามารถเป็น แสดงได้ง่ายยิ่งขึ้นด้วย sigi(m) เมื่อกุญแจสาธารณะ pki นั้นชัดเจนจากบริบท ทุกคนที่รู้จัก pki สามารถใช้มันเพื่อตรวจสอบลายเซ็นดิจิทัลที่สร้างโดย i โดยเฉพาะเปิด อินพุต (a) คีย์สาธารณะ pki ของผู้เล่น i, (b) ข้อความ m และ (c) สตริง s นั่นคือฉันถูกกล่าวหาว่า ลายเซ็นดิจิทัลของข้อความ m อัลกอริธึมการยืนยัน V จะส่งเอาต์พุต YES หรือ NO คุณสมบัติที่เราต้องการจากแผนลายเซ็นดิจิทัลคือ: 1. ลายเซ็นที่ถูกต้องตามกฎหมายจะได้รับการตรวจสอบเสมอ: ถ้า s = sigi(m) ดังนั้น V (pki, m, s) = Y ES; และ 2. ลายเซ็นดิจิทัลนั้นปลอมแปลงได้ยาก: หากปราศจากความรู้เรื่องการเล่นสกีก็ถึงเวลาที่จะค้นหาสตริงเช่นนั้น V (pki, m, s) = Y ES สำหรับข้อความที่ m ไม่เคยลงนามโดย i นั้นยาวมาก (ตามข้อกำหนดด้านความปลอดภัยที่เข้มงวดของ Goldwasser, Micali และ Rivest [17] นี่เป็นเรื่องจริง แม้ว่าจะสามารถรับลายเซ็นของข้อความอื่นก็ตาม) ด้วยเหตุนี้ เพื่อป้องกันไม่ให้ใครก็ตามเซ็นข้อความในนามของเขา ผู้เล่นคนหนึ่งจะต้องรักษาเขาไว้ การลงนามความลับของสกีที่สำคัญ (ดังนั้นคำว่า "รหัสลับ") และเพื่อให้ทุกคนสามารถตรวจสอบข้อความได้ เขาลงนาม ฉันมีความสนใจในการเผยแพร่ pki คีย์ของเขา (เพราะฉะนั้นคำว่า "คีย์สาธารณะ") โดยทั่วไป ข้อความ m ไม่สามารถเรียกได้จากลายเซ็น sigi(m) เพื่อที่จะจัดการได้อย่างแท้จริง ด้วยลายเซ็นดิจิทัลที่ตอบสนองคุณสมบัติ "ความสามารถในการเรียกคืน" ที่สะดวกตามแนวคิด (เช่น ถึง รับประกันว่าผู้ลงนามและข้อความสามารถคำนวณได้อย่างง่ายดายจากลายเซ็น เรากำหนดไว้ SIGpki(ม.) = (i, m, sigpki(ม.)) และ SIGi(m) = (i, m, sigi(m)) ถ้า pki ชัดเจน การลงนามดิจิทัลที่ไม่ซ้ำใคร นอกจากนี้เรายังพิจารณารูปแบบลายเซ็นดิจิทัล (G, S, V ) ที่เป็นไปตามข้อกำหนด ดังต่อไปนี้ทรัพย์สินเพิ่มเติม 3. เอกลักษณ์ เป็นการยากที่จะหาสตริง pk′, m, s และ s′ เช่นนั้น ส ̸= ส′ และ V (pk′, m, s) = V (pk′, m, s′) = 1 (โปรดทราบว่าคุณสมบัติเฉพาะนั้นมีไว้สำหรับสตริง pk′ ที่ไม่ได้สร้างขึ้นอย่างถูกกฎหมายด้วย กุญแจสาธารณะ อย่างไรก็ตาม โดยเฉพาะอย่างยิ่ง คุณสมบัติเอกลักษณ์บ่งบอกว่า ถ้าใครใช้ ตัวสร้างคีย์ที่ระบุ G เพื่อคำนวณคีย์สาธารณะ pk พร้อมกับคีย์ลับที่ตรงกัน sk และด้วยเหตุนี้ เมื่อรู้จัก sk มันคงเป็นไปไม่ได้เลยที่เขาจะค้นพบดิจิทัลสองแบบที่แตกต่างกัน ลายเซ็นของข้อความเดียวกันที่เกี่ยวข้องกับ pk) หมายเหตุ • จากลายเซ็นเฉพาะไปจนถึงฟังก์ชันสุ่มที่ตรวจสอบได้ สัมพันธ์กับดิจิทัล รูปแบบลายเซ็นที่มีคุณสมบัติเฉพาะตัว การแมป m \(\to\) H(sigi(m)) เชื่อมโยงถึง แต่ละสตริง m ที่เป็นไปได้ สตริง 256 บิตที่ไม่ซ้ำใคร สุ่มเลือก และความถูกต้องของสิ่งนี้ การทำแผนที่สามารถพิสูจน์ได้ด้วยลายเซ็น sigi(m) นั่นคือ hashing ในอุดมคติและโครงร่างลายเซ็นดิจิทัลที่ตอบสนองคุณสมบัติที่เป็นเอกลักษณ์โดยพื้นฐานแล้ว จัดให้มีการใช้งานเบื้องต้นของฟังก์ชันสุ่มที่ตรวจสอบได้ ตามที่แนะนำและโดย มิกาลี ราบิน และวาดาน [27]. (การนำไปปฏิบัติดั้งเดิมนั้นจำเป็นต้องซับซ้อนกว่านี้ เนื่องจากพวกเขาไม่ได้พึ่งพาอุดมคติ hashing)• ความต้องการที่แตกต่างกันสามประการสำหรับลายเซ็นดิจิทัล ใน Algorand ผู้ใช้ที่ฉันพึ่งพาดิจิทัล ลายเซ็นสำหรับ (1) ตรวจสอบการชำระเงินของตัวเอง ในแอปพลิเคชันนี้ คีย์อาจเป็น "ระยะยาว" (เช่น ใช้เพื่อ ลงนามข้อความจำนวนมากในช่วงเวลานาน) และมาจากรูปแบบลายเซ็นทั่วไป (2) การสร้างข้อมูลรับรองเพื่อพิสูจน์ว่าฉันมีสิทธิ์ดำเนินการในบางขั้นตอนของรอบ r ที่นี่ คีย์อาจเป็นระยะยาวได้ แต่ต้องมาจากรูปแบบที่ตอบสนองคุณสมบัติที่เป็นเอกลักษณ์ (3) ตรวจสอบข้อความที่ฉันส่งในแต่ละขั้นตอนที่เขาดำเนินการ ที่นี่ต้องมีกุญแจ ชั่วคราว (เช่น ถูกทำลายหลังจากการใช้งานครั้งแรก) แต่อาจมาจากรูปแบบลายเซ็นธรรมดา • ลดความซับซ้อนด้วยต้นทุนเพียงเล็กน้อย เพื่อความเรียบง่าย เราจินตนาการว่าผู้ใช้แต่ละคน i จะมีคีย์ระยะยาวเพียงคีย์เดียว ดังนั้นคีย์ดังกล่าวจะต้องมาจากรูปแบบลายเซ็นที่มีเอกลักษณ์เฉพาะตัว ทรัพย์สิน ความเรียบง่ายดังกล่าวมีต้นทุนการคำนวณเพียงเล็กน้อย โดยทั่วไปแล้ว ในความเป็นจริงแล้ว ดิจิทัลที่มีเอกลักษณ์เฉพาะตัว ลายเซ็นมีราคาแพงกว่าเล็กน้อยในการผลิตและตรวจสอบมากกว่าลายเซ็นทั่วไป 2.2 บัญชีแยกประเภทสาธารณะในอุดมคติ Algorand พยายามเลียนแบบระบบการชำระเงินต่อไปนี้ โดยอิงตามบัญชีแยกประเภทสาธารณะในอุดมคติ 1. สถานะเริ่มต้น เงินมีความเกี่ยวข้องกับกุญแจสาธารณะส่วนบุคคล (สร้างขึ้นโดยส่วนตัวและ เป็นเจ้าของโดยผู้ใช้) ให้ pk1, . . . , pkj เป็นกุญแจสาธารณะเริ่มต้นและ a1, . . , aj ตามลำดับ จำนวนเงินเริ่มต้นของหน่วยเงิน จากนั้นสถานะเริ่มต้นคือ S0 = (พีเค 1, เอ 1), . . . , (pkj, aj) , ซึ่งถือเป็นความรู้ทั่วไปในระบบ 2. การชำระเงิน ให้ pk เป็นกุญแจสาธารณะในปัจจุบันที่มีหน่วยเงิน \(\geq\)0 และ pk′ สาธารณะอีกอันหนึ่ง คีย์ และ a′ เป็นจำนวนที่ไม่เป็นลบซึ่งไม่มากกว่า a จากนั้น การชำระเงิน (ถูกต้อง) \(\wp\) จะเป็นดิจิทัล ลายเซ็นสัมพันธ์กับ pk โดยระบุการโอน a′ หน่วยการเงินจาก pk ไปยัง pk′ พร้อมกัน พร้อมข้อมูลเพิ่มเติมบางอย่าง ในสัญลักษณ์ \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), โดยที่ฉันแสดงข้อมูลเพิ่มเติมใด ๆ ที่ถือว่ามีประโยชน์แต่ไม่ละเอียดอ่อน (เช่น เวลา ข้อมูลและตัวระบุการชำระเงิน) และฉันข้อมูลเพิ่มเติมใด ๆ ที่ถือว่าละเอียดอ่อน (เช่น เหตุผลในการชำระเงิน อาจเป็นข้อมูลประจำตัวของเจ้าของ pk และ pk′ เป็นต้น) เราเรียก pk (หรือเจ้าของ) ว่าเป็นผู้ชำระเงิน โดยเรียก pk′ (หรือเจ้าของ) แต่ละรายว่าเป็นผู้รับเงิน และ a′ เป็น จำนวนเงินที่ชำระ \(\wp\) เข้าร่วมฟรีผ่านการชำระเงิน โปรดทราบว่าผู้ใช้สามารถเข้าร่วมระบบได้ทุกเมื่อที่ต้องการ สร้างคู่คีย์สาธารณะ/คีย์ลับของตนเอง ดังนั้นรหัสสาธารณะ pk′ ที่ปรากฏใน การชำระเงิน\(\wp\)ด้านบนอาจเป็นรหัสสาธารณะที่สร้างขึ้นใหม่ซึ่งไม่เคย "เป็นเจ้าของ" เงินใดๆ ก่อน 3. บัญชีแยกประเภทเวทย์มนตร์ ในระบบอุดมคติ การชำระเงินทั้งหมดถูกต้องและปรากฏอยู่ในหลักฐานการงัดแงะ รายการ L ชุดการชำระเงิน “โพสต์บนท้องฟ้า” ให้ทุกคนเห็น: L = จ่าย 1, จ่าย 2, . . . ,แต่ละบล็อก PAY r+1 ประกอบด้วยชุดการชำระเงินทั้งหมดที่ทำตั้งแต่การปรากฏตัวของบล็อก จ่ายอาร์ ในระบบอุดมคติ บล็อกใหม่จะปรากฏขึ้นหลังจากระยะเวลาที่กำหนด (หรือจำกัด) การอภิปราย. • การชำระเงินทั่วไปเพิ่มเติมและธุรกรรมที่ยังไม่ได้ใช้ โดยทั่วไปถ้าเป็นกุญแจสาธารณะ pk เป็นเจ้าของจำนวนเงิน a ดังนั้นการชำระเงินที่ถูกต้อง \(\wp\)ของ pk อาจโอนจำนวนเงิน a′ 1, อ' 2, . . ., ตามลำดับกับคีย์ pk′ 1, พีเค' 2, . . . ตราบใดที่ P เจ' เจ \(\leq\)a ใน Bitcoin และระบบที่คล้ายกัน เงินที่เป็นของกุญแจสาธารณะ pk จะถูกแยกออกเป็นสองส่วน จำนวนเงินและการชำระเงิน\(\wp\)ที่ทำโดย pk จะต้องโอนจำนวนเงินที่แยกออกมาดังกล่าว a ทั้งหมด หาก pk ต้องการถ่ายโอนเพียงเศษส่วน a′ < a ของ a ไปยังคีย์อื่น ก็จะต้องถ่ายโอน the ด้วย ยอดคงเหลือ, เอาต์พุตธุรกรรมที่ยังไม่ได้ใช้, ไปยังคีย์อื่น, อาจเป็น pk เอง Algorand ยังใช้งานได้กับคีย์ที่มีจำนวนแยกกัน อย่างไรก็ตามเพื่อที่จะให้ความสำคัญกับการ แง่มุมใหม่ๆ ของ Algorand ตามแนวคิดแล้ว ง่ายกว่าที่จะยึดติดกับรูปแบบการชำระเงินที่ง่ายกว่าของเรา และกุญแจที่มีจำนวนเดียวที่เกี่ยวข้องกัน • สถานะปัจจุบัน โครงการอุดมคติไม่ได้ให้ข้อมูลเกี่ยวกับปัจจุบันโดยตรง สถานะของระบบ (เช่น เกี่ยวกับจำนวนหน่วยเงินที่คีย์สาธารณะแต่ละคีย์มี) ข้อมูลนี้ สามารถสรุปได้จาก Magic Ledger ในระบบอุดมคติ ผู้ใช้ที่ใช้งานอยู่จะจัดเก็บและอัปเดตข้อมูลสถานะล่าสุดอย่างต่อเนื่อง หรือมิฉะนั้นเขาจะต้องสร้างมันขึ้นมาใหม่ ไม่ว่าจะตั้งแต่เริ่มต้นหรือจากครั้งสุดท้ายที่เขา คำนวณมัน (ในเวอร์ชันถัดไปของบทความนี้ เราจะเพิ่ม Algorand เพื่อเปิดใช้งาน ผู้ใช้เพื่อสร้างสถานะปัจจุบันใหม่อย่างมีประสิทธิภาพ) • ความปลอดภัยและ “ความเป็นส่วนตัว” ลายเซ็นดิจิทัลรับประกันว่าจะไม่มีใครสามารถปลอมแปลงการชำระเงินได้ ผู้ใช้รายอื่น ในการชำระเงิน \(\wp\) กุญแจสาธารณะและจำนวนเงินจะไม่ถูกซ่อน แต่เป็นความลับ ข้อมูลฉันเป็น อันที่จริง มีเพียง H(I) เท่านั้นที่ปรากฏใน \(\wp\) และเนื่องจาก H เป็นฟังก์ชัน hash ในอุดมคติ ดังนั้น H(I) เป็นค่าสุ่ม 256 บิต ดังนั้นจึงไม่มีทางที่จะรู้ว่าอะไรดีกว่าฉัน แค่เดาเท่านั้น แต่เพื่อพิสูจน์ว่าฉันเป็นใคร (เช่น เพื่อพิสูจน์เหตุผลในการชำระเงิน) ผู้ชำระเงินอาจเพียงเปิดเผย I ความถูกต้องของข้อมูลที่เปิดเผยสามารถตรวจสอบได้โดยการคำนวณ H(I) และเปรียบเทียบค่าผลลัพธ์กับรายการสุดท้ายของ \(\wp\) อันที่จริง เนื่องจาก H มีความยืดหยุ่นในการชนกัน เป็นการยากที่จะหาค่าที่สอง I′ โดยที่ H(I) = H(I′) 2.3 แนวคิดพื้นฐานและสัญลักษณ์ คีย์ ผู้ใช้ และเจ้าของ คีย์สาธารณะแต่ละคีย์ ("คีย์" เรียกสั้น ๆ ) คีย์สาธารณะแต่ละคีย์จะมีระยะยาวและสัมพันธ์กับรูปแบบลายเซ็นดิจิทัลที่มีคุณสมบัติเฉพาะตัว เว้นแต่จะระบุไว้เป็นอย่างอื่น รหัสสาธารณะที่ฉันเข้าร่วม ระบบเมื่อมีคีย์สาธารณะ j อื่นอยู่แล้วในระบบชำระเงินให้กับ i สำหรับสี เรากำหนดลักษณะเฉพาะของกุญแจ เราเรียกคีย์ i ว่า "เขา" บอกว่าฉันซื่อสัตย์ที่ฉันส่งไป และรับข้อความ ฯลฯ User เป็นคำพ้องความหมายสำหรับคีย์ เมื่อเราต้องการแยกแยะคีย์จาก บุคคลที่เป็นเจ้าของ เราใช้คำว่า "กุญแจดิจิทัล" และ "เจ้าของ" ตามลำดับ ระบบที่ไม่ได้รับอนุญาตและได้รับอนุญาต ระบบไม่ได้รับอนุญาตหากกุญแจดิจิทัลว่าง เพื่อเข้าร่วมได้ตลอดเวลาและเจ้าของสามารถเป็นเจ้าของกุญแจดิจิทัลได้หลายอัน และได้รับอนุญาตเป็นอย่างอื่นการนำเสนอที่ไม่ซ้ำใคร แต่ละอ็อบเจ็กต์ใน Algorand มีการแสดงที่เป็นเอกลักษณ์ โดยเฉพาะอย่างยิ่ง แต่ละเซต {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} ถูกเรียงลำดับในลักษณะที่กำหนดไว้ล่วงหน้า: เช่น อันดับแรก พจนานุกรมใน x จากนั้นใน y เป็นต้น นาฬิกาความเร็วเดียวกัน ไม่มีนาฬิกาทั่วโลก แต่ผู้ใช้แต่ละคนมีนาฬิกาของตัวเอง นาฬิกาของผู้ใช้ ไม่จำเป็นต้องซิงโครไนซ์แต่อย่างใด อย่างไรก็ตาม เราถือว่าพวกมันทั้งหมดมีความเร็วเท่ากัน ตัวอย่างเช่น เมื่อเป็นเวลา 12.00 น. ตามนาฬิกาของผู้ใช้ i อาจเป็น 14.30 น. ตามเวลา นาฬิกาของผู้ใช้อื่น j แต่เมื่อเป็น 12:01 ตามนาฬิกาของฉันจะเป็น 2:31 ตาม ไปที่นาฬิกาของเจ นั่นคือ “หนึ่งนาทีจะเท่ากัน (โดยพื้นฐานแล้วเหมือนกัน) สำหรับผู้ใช้ทุกคน” รอบ Algorand ถูกจัดเรียงเป็นหน่วยทางลอจิคัล r = 0, 1, . ., เรียกว่ารอบ. เราใช้ตัวยกเพื่อระบุรอบอย่างสม่ำเสมอ เพื่อระบุว่าปริมาณที่ไม่ใช่ตัวเลข Q (เช่น สตริง คีย์สาธารณะ ชุด ลายเซ็นดิจิทัล ฯลฯ) หมายถึงรอบ r เราเพียงแค่เขียน Qr เฉพาะเมื่อ Q เป็นตัวเลขแท้ (ตรงข้ามกับสตริงไบนารี่ที่สามารถตีความได้ว่าเป็นตัวเลข) ให้ทำ เราเขียน Q(r) ดังนั้นสัญลักษณ์ r จึงไม่สามารถตีความได้ว่าเป็นเลขชี้กำลังของ Q ที่ (จุดเริ่มต้นของ a) รอบ r > 0 ชุดของกุญแจสาธารณะทั้งหมดคือ PKr และสถานะของระบบคือ ซีเนียร์ = n ฉัน เป็น(r) ฉัน , . . .  : ฉัน \(\in\)PKro , ที่ไหน (r) ฉัน คือจำนวนเงินที่มีให้กับกุญแจสาธารณะ i โปรดทราบว่า PKr สามารถอนุมานได้จาก Sr และ Sr นั้นอาจระบุส่วนประกอบอื่น ๆ สำหรับกุญแจสาธารณะแต่ละตัว i สำหรับรอบ 0 PK0 คือชุดของคีย์สาธารณะเริ่มต้น และ S0 คือสถานะเริ่มต้น ทั้ง PK0 และ S0 ถือเป็นความรู้ทั่วไปในระบบ เพื่อความง่าย เมื่อเริ่มรอบ r ดังนั้น คือ PK1, . . . , PKr และ S1, . . . , ซีเนียร์ ในรอบ r สถานะของระบบจะเปลี่ยนจาก Sr เป็น Sr+1: ในเชิงสัญลักษณ์ รอบ r: Sr −→Sr+1 การชำระเงิน ใน Algorand ผู้ใช้ชำระเงินอย่างต่อเนื่อง (และเผยแพร่ในลักษณะดังกล่าว) อธิบายไว้ในหัวข้อย่อย 2.7) การชำระเงิน \(\wp\) ของผู้ใช้ i \(\in\)PKr มีรูปแบบและความหมายเหมือนกัน เช่นเดียวกับในระบบอุดมคติ กล่าวคือ \(\wp\)= SIGi(i, i′, a, I, H(I)) . การชำระเงิน \(\wp\) ใช้ได้เป็นรายบุคคลในรอบ r (เป็นการชำระแบบรอบ r หรือเรียกสั้น ๆ ) หาก (1) จำนวนเงิน a น้อยกว่าหรือเท่ากับ a(r) i และ (2) ไม่ปรากฏในชุดการจ่ายเงินอย่างเป็นทางการใดๆ PAY r′ สำหรับ r′ < r (ตามที่อธิบายไว้ด้านล่าง เงื่อนไขที่สองหมายความว่า \(\wp\) ยังไม่มีผลบังคับใช้ ชุดการจ่ายแบบปัดเศษของ i จะมีผลรวมหากผลรวมของจำนวนเงินนั้นไม่เกิน a(r) ฉัน ชุดจ่ายเงิน ชุดการจ่ายเงินแบบ Round-r P คือชุดของการชำระเงินแบบ Round-r โดยที่การชำระเงินสำหรับผู้ใช้แต่ละราย i ของ i ใน P (อาจไม่มีเลย) ใช้ได้โดยรวม ชุดของการจ่ายเงินทุกรอบคือ PAY(r) รอบ-r payset P จะเป็นค่าสูงสุด หากไม่มี superset ของ P เป็น payset แบบปัดเศษ จริงๆ แล้ว เราแนะนำว่าการชำระเงิน \(\wp\)ยังระบุรอบ \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , และไม่สามารถใช้ในรอบใดๆ ภายนอก [\(\rho\), \(\rho\) + k] สำหรับจำนวนเต็มคงที่ที่ไม่ใช่ลบ k.4 4วิธีนี้ทำให้การตรวจสอบง่ายขึ้นว่า \(\wp\) กลายเป็น "มีประสิทธิภาพ" หรือไม่ (เช่น ทำให้การพิจารณาว่าชุดจ่ายเงินบางชุดง่ายขึ้นหรือไม่ PAY r มี \(\wp\) เมื่อ k = 0 ถ้า \(\wp\)= SIGi(r, i, i′, a, I, H(I)) และ \(\wp\)/\(\in\)PAY r แล้วฉันต้องส่ง \(\wp\) ใหม่การจ่ายเงินอย่างเป็นทางการ สำหรับทุกรอบ r Algorand จะเลือกแบบสาธารณะ (ในลักษณะที่อธิบายไว้ในภายหลัง) ชุดจ่ายเงินเดียว (อาจว่างเปล่า), PAY r, ชุดจ่ายเงินอย่างเป็นทางการของรอบ (โดยพื้นฐานแล้ว PAY r แสดงถึง การชำระรอบที่ "เกิดขึ้นจริง" ) เช่นเดียวกับในระบบอุดมคติ (และ Bitcoin) (1) วิธีเดียวที่ผู้ใช้ใหม่ j จะเข้าสู่ระบบได้ คือการเป็นผู้รับการชำระเงินที่อยู่ในชุดการชำระเงินอย่างเป็นทางการ PAY r ของรอบที่กำหนด r; และ (2) PAY r กำหนดสถานะของรอบต่อไป Sr+1 จากรอบปัจจุบัน Sr ในเชิงสัญลักษณ์ จ่าย r : Sr −→Sr+1 โดยเฉพาะ 1. ชุดกุญแจสาธารณะของรอบ r + 1, PKr+1 ประกอบด้วยการรวมกันของ PKr และชุดของทั้งหมด รหัสผู้รับเงินที่ปรากฏเป็นครั้งแรกในการชำระเงิน PAY r; และ 2. จำนวนเงิน a(r+1) ฉัน ที่ผู้ใช้ที่ฉันเป็นเจ้าของในรอบ r + 1 คือผลรวมของ ai(r) —i.e. จำนวนเงินที่ฉันเป็นเจ้าของในรอบที่แล้ว (0 ถ้า i ̸\(\in\)PKr)— และผลรวมของจำนวนเงิน จ่ายให้กับฉันตามการชำระเงินของ PAY r โดยสรุป เช่นเดียวกับในระบบอุดมคติ แต่ละสถานะ Sr+1 สามารถหักจากประวัติการชำระเงินครั้งก่อนได้: จ่าย 0, . . . , จ่าย r. 2.4 บล็อกและบล็อกที่พิสูจน์แล้ว ใน Algorand0 บล็อก Br สอดคล้องกับรอบ r ระบุ: r ตัวมันเอง; ชุดการชำระเงินของ รอบ r, จ่าย r; ปริมาณ Qr ที่จะอธิบาย และ hash ของบล็อกก่อนหน้า H(Br−1) ดังนั้น เริ่มต้นจากบล็อกคงที่ B0 เรามี blockchain แบบเดิม: B1 = (1, จ่าย 1, Q0, H(B0)), B2 = (2, จ่าย 2, Q1, H(B1)), B3 = (3, จ่าย 3, Q2, H(B2)), . . . ใน Algorand ความถูกต้องของบล็อกนั้นได้รับการรับรองโดยข้อมูลที่แยกต่างหาก “ใบรับรองบล็อก” CERT r ซึ่งเปลี่ยน Br ให้เป็นบล็อกที่ได้รับการพิสูจน์แล้ว Br. ดังนั้นบัญชีแยกประเภทเวทย์มนตร์ ถูกนำมาใช้ตามลำดับของบล็อกที่พิสูจน์แล้ว บี1 บี2 . . . การอภิปราย ดังที่เราจะได้เห็น CERT r ประกอบด้วยชุดลายเซ็นดิจิทัลสำหรับ H(Br) ของ a สมาชิกส่วนใหญ่ของ SV r พร้อมด้วยหลักฐานว่าสมาชิกแต่ละคนเป็นสมาชิกจริงๆ ถึง SV อาร์ แน่นอนว่าเราสามารถรวมใบรับรอง CERT r ไว้ในบล็อกได้ แต่ก็พบว่า สะอาดยิ่งขึ้นเพื่อแยกมันออกจากกัน) ใน Bitcoin แต่ละบล็อกจะต้องเป็นไปตามคุณสมบัติพิเศษ กล่าวคือ ต้อง "ประกอบด้วยวิธีแก้ปัญหาของ crypto puzzle” ซึ่งทำให้การสร้างบล็อกมีความเข้มข้นในการคำนวณและทางแยกเป็นสิ่งที่หลีกเลี่ยงไม่ได้ และไม่หายาก ในทางตรงกันข้าม blockchain ของ Algorand มีข้อดีหลักสองประการ: มันถูกสร้างขึ้นด้วย การคำนวณขั้นต่ำ และจะไม่แยกความเป็นไปได้สูงอย่างท่วมท้น แต่ละบล็อกบินั้น สิ้นสุดอย่างปลอดภัยทันทีที่เข้าสู่ blockchain2.5 ความน่าจะเป็นของความล้มเหลวที่ยอมรับได้ เพื่อวิเคราะห์ความปลอดภัยของ Algorand เราระบุความน่าจะเป็น F ที่เรายินดี ยอมรับว่ามีบางอย่างผิดพลาด (เช่น ชุดผู้ตรวจสอบ SV r ไม่มีเสียงส่วนใหญ่ที่ซื่อสัตย์) เช่นเดียวกับในกรณีของความยาวเอาต์พุตของฟังก์ชันการเข้ารหัส hash H F ก็เป็นพารามิเตอร์เช่นกัน แต่ในกรณีนั้น เราพบว่าการตั้งค่า F ให้เป็นค่าที่เป็นรูปธรรมนั้นมีประโยชน์ เพื่อให้ได้สัญชาตญาณมากขึ้น เข้าใจถึงความจริงที่ว่าเป็นไปได้จริงใน Algorand ที่จะเพลิดเพลินกับการรักษาความปลอดภัยที่เพียงพอไปพร้อมๆ กัน และประสิทธิภาพที่เพียงพอ เพื่อเน้นย้ำว่า F เป็นพารามิเตอร์ที่สามารถตั้งค่าได้ตามต้องการในตอนแรก และรูปลักษณ์ที่สองที่เรากำหนดไว้ตามลำดับ ฉ = 10−12 และ ฉ = 10−18 . การอภิปราย โปรดทราบว่าจริงๆ แล้ว 10−12 นั้นน้อยกว่าหนึ่งในล้านล้าน และเราเชื่อว่า a การเลือก F นั้นเพียงพอในใบสมัครของเรา ให้เราเน้นว่า 10−12 ไม่ใช่ความน่าจะเป็น ซึ่งฝ่ายตรงข้ามสามารถปลอมแปลงการชำระเงินของผู้ใช้ที่ซื่อสัตย์ได้ การชำระเงินทั้งหมดเป็นแบบดิจิทัล ลงนาม ดังนั้น หากใช้ลายเซ็นดิจิทัลที่เหมาะสม ความน่าจะเป็นในการปลอมการชำระเงินก็คือ ต่ำกว่า 10−12 มาก และแท้จริงแล้วคือ 0 เหตุการณ์เลวร้ายที่เรายินดีจะยอมรับ ด้วยความน่าจะเป็น F คือทางแยกของ Algorand blockchain โปรดสังเกตว่า ด้วยการตั้งค่าของเราเป็น F และ รอบยาวหนึ่งนาที คาดว่าทางแยกจะเกิดขึ้นใน Algorand's blockchain ไม่บ่อยนัก (ประมาณ) หนึ่งครั้งใน 1.9 ล้านปี ในทางตรงกันข้าม ใน Bitcoin การ fork เกิดขึ้นค่อนข้างบ่อย คนที่มีความต้องการมากกว่าอาจตั้งค่า F ให้เป็นค่าที่ต่ำกว่า ด้วยเหตุนี้ ในรูปลักษณ์ที่สองของเรา เราพิจารณาตั้งค่า F เป็น 10−18 โปรดทราบว่า สมมติว่ามีการสร้างบล็อกทุกวินาที 1,018 คือจำนวนวินาทีโดยประมาณที่เอกภพทำได้ตั้งแต่บิกแบงจนถึงปัจจุบัน เวลา. ดังนั้น เมื่อ F = 10−18 ถ้าบล็อกถูกสร้างขึ้นในหนึ่งวินาที เราควรจะคาดหวังได้ว่าจะมีอายุเท่ากับ จักรวาลจะเห็นทางแยก 2.6 โมเดลปฏิปักษ์ Algorand ได้รับการออกแบบให้มีความปลอดภัยในรูปแบบที่ไม่เป็นมิตร ให้เราอธิบาย ผู้ใช้ที่ซื่อสัตย์และเป็นอันตราย ผู้ใช้จะซื่อสัตย์หากเขาปฏิบัติตามคำแนะนำโปรโตคอลทั้งหมดของเขาและ สามารถส่งและรับข้อความได้อย่างสมบูรณ์แบบ ผู้ใช้เป็นอันตราย (เช่น Byzantine ในไฟล์ คำพูดของการคำนวณแบบกระจาย) หากเขาสามารถเบี่ยงเบนไปจากคำสั่งที่เขากำหนดโดยพลการ ศัตรู ฝ่ายตรงข้ามเป็นอัลกอริธึมที่มีประสิทธิภาพ (ในทางเทคนิคพหุนาม-เวลา) ซึ่งสร้างขึ้นตามสี ซึ่งสามารถสร้างอันตรายให้กับผู้ใช้คนใดก็ตามที่เขาต้องการได้ทันที ในเวลาใดก็ได้ที่เขาต้องการ (หัวเรื่อง เฉพาะขอบเขตบนของจำนวนผู้ใช้ที่เขาสามารถคอร์รัปชั่นได้) Adversary ควบคุมและประสานงานผู้ใช้ที่เป็นอันตรายทั้งหมดได้อย่างสมบูรณ์แบบ เขาดำเนินการทั้งหมด ในนามของตนรวมทั้งรับและส่งข้อความของตนทั้งหมดและสามารถปล่อยให้เบี่ยงเบนไปจากได้ คำแนะนำที่กำหนดไว้โดยพลการ หรือเขาสามารถแยกการส่งผู้ใช้ที่เสียหายออกไปได้ และรับข้อความ ให้เราชี้แจงว่าไม่มีใครเรียนรู้โดยอัตโนมัติว่าผู้ใช้ที่ฉันเป็นอันตราย แม้ว่าความมุ่งร้ายของฉันอาจเกิดขึ้นได้จากการกระทำของปฏิปักษ์ที่ทำให้เขาทำ ศัตรูที่ทรงพลังนี้อย่างไรก็ตาม • ไม่มีพลังในการคำนวณที่ไม่จำกัด และไม่สามารถปลอมแปลงดิจิทัลได้สำเร็จ ลายเซ็นของผู้ใช้ที่ซื่อสัตย์ ยกเว้นความน่าจะเป็นเล็กน้อย และ• ไม่สามารถแทรกแซงการแลกเปลี่ยนข้อความระหว่างผู้ใช้ที่ซื่อสัตย์ในทางใดทางหนึ่ง นอกจากนี้ ความสามารถของเขาในการโจมตีผู้ใช้ที่ซื่อสัตย์นั้นถูกผูกไว้ด้วยสมมติฐานข้อใดข้อหนึ่งต่อไปนี้ เงินส่วนใหญ่ที่ซื่อสัตย์ เราพิจารณาความต่อเนื่องของ Honest Majority of Money (HMM) สมมติฐาน: กล่าวคือ สำหรับจำนวนเต็มที่ไม่ใช่ลบแต่ละตัว k และจำนวนจริง h > 1/2 HHMk > h: ผู้ใช้ที่ซื่อสัตย์ในทุกรอบ r เป็นเจ้าของเศษส่วนที่มากกว่า h ของเงินทั้งหมด ระบบที่รอบ r −k การอภิปราย. สมมติว่าผู้ใช้ที่เป็นอันตรายทั้งหมดประสานการกระทำของตนได้อย่างสมบูรณ์แบบ (ราวกับถูกควบคุม โดยเอนทิตีเดียวคือปฏิปักษ์) เป็นสมมติฐานที่ค่อนข้างมองโลกในแง่ร้าย การประสานงานที่สมบูรณ์แบบระหว่างกันด้วย บุคคลจำนวนมากเป็นเรื่องยากที่จะบรรลุเป้าหมาย บางทีการประสานงานอาจเกิดขึ้นเฉพาะภายในกลุ่มที่แยกจากกันเท่านั้น ของผู้เล่นตัวร้าย แต่เนื่องจากไม่มีใครแน่ใจเกี่ยวกับระดับการประสานงานของผู้ใช้ที่เป็นอันตราย อาจจะสนุกได้ เราควรปลอดภัยดีกว่าเสียใจ สมมติว่าฝ่ายตรงข้ามสามารถโจมตีผู้ใช้อย่างลับๆ ไดนามิก และเสียหายได้ทันทีเช่นกัน ในแง่ร้าย ท้ายที่สุดแล้ว ตามความเป็นจริงแล้ว การควบคุมการดำเนินงานของผู้ใช้อย่างสมบูรณ์ควรใช้เวลาสักระยะหนึ่ง สมมติฐาน HMMk > h บ่งบอกเป็นนัย เช่น หากมีการใช้รอบ (โดยเฉลี่ย) ภายในหนึ่งนาที เงินส่วนใหญ่ในรอบที่กำหนดจะยังคงอยู่ในมือของผู้ที่ซื่อสัตย์ อย่างน้อยสองชั่วโมง ถ้า k = 120 และอย่างน้อยหนึ่งสัปดาห์ ถ้า k = 10, 000 โปรดทราบว่าสมมติฐาน HMM และพลังการประมวลผลส่วนใหญ่ที่ซื่อสัตย์ก่อนหน้านี้ สมมติฐานมีความเกี่ยวข้องในแง่ที่ว่า เนื่องจากพลังการประมวลผลสามารถซื้อได้ด้วยเงิน หากผู้ใช้ที่เป็นอันตรายเป็นเจ้าของเงินส่วนใหญ่ พวกเขาก็จะสามารถรับพลังการประมวลผลส่วนใหญ่ได้ 2.7 รูปแบบการสื่อสาร เรามองเห็นการเผยแพร่ข้อความ —เช่น “การนินทาแบบเพื่อนต่อเพื่อน”5— เป็นเพียงวิธีเดียวในการ การสื่อสาร ข้อสันนิษฐานชั่วคราว: การส่งข้อความในเครือข่ายทั้งหมดอย่างทันท่วงที สำหรับ ส่วนใหญ่ของบทความนี้เราถือว่าข้อความที่เผยแพร่ทุกข้อความเข้าถึงผู้ใช้ที่ซื่อสัตย์เกือบทั้งหมด ในเวลาที่เหมาะสม เราจะลบสมมติฐานนี้ในมาตรา 10 ที่เราจัดการกับเครือข่าย พาร์ทิชันทั้งที่เกิดขึ้นตามธรรมชาติหรือถูกชักนำให้เกิดปฏิปักษ์ (ดังที่เราจะได้เห็นเราเพียงสันนิษฐานเท่านั้น การส่งข้อความภายในแต่ละองค์ประกอบที่เชื่อมต่อของเครือข่ายอย่างทันท่วงที) วิธีหนึ่งที่เป็นรูปธรรมในการจับภาพการส่งข้อความที่เผยแพร่อย่างทันท่วงที (ในเครือข่ายทั้งหมด) คือ ต่อไปนี้: สำหรับความสามารถในการเข้าถึงทั้งหมด \(\rho\) > 95% และขนาดข้อความ \(\mu\) \(\in\)Z+ จะมี \(\gamma\) \(\rho\),\(\mu\) อยู่เช่นนั้น ถ้าผู้ใช้จริงเผยแพร่ข้อความ \(\mu\)-ไบต์ m ณ เวลา t จากนั้น m ถึง ตามเวลา t + \(\gamma\) \(\rho\),\(\mu\) อย่างน้อยก็เศษส่วน \(\rho\) ของผู้ใช้ที่ซื่อสัตย์ 5โดยพื้นฐานแล้ว เช่นเดียวกับใน Bitcoin เมื่อผู้ใช้เผยแพร่ข้อความ m ผู้ใช้ที่ใช้งานอยู่ทุกคนที่ฉันได้รับ m เป็นครั้งแรก สุ่มและสุ่มเลือกผู้ใช้งานจำนวนน้อยที่เหมาะสมซึ่งเป็น "เพื่อนบ้าน" ของเขาซึ่งเขาส่งต่อให้ m อาจจะจนกว่าเขาจะได้รับการยอมรับจากพวกเขา การแพร่กระจายของ m สิ้นสุดลงเมื่อไม่มีผู้ใช้ได้รับ ม. เป็นครั้งแรกอย่างไรก็ตาม คุณสมบัติข้างต้นไม่สามารถรองรับโปรโตคอล Algorand ของเราได้ หากไม่มีการมองเห็นกลไกในการรับ blockchain ล่าสุดอย่างชัดเจนและแยกจากกัน — โดยผู้ใช้/คลังข้อมูล/อื่นๆ อื่น ในความเป็นจริง การสร้างบล็อกใหม่ Br ไม่เพียงแต่ชุดผู้ตรวจสอบที่เหมาะสมจะได้รับ Round-r ในเวลาที่เหมาะสมเท่านั้น ข้อความ แต่ยังรวมถึงข้อความของรอบที่แล้วด้วย เพื่อจะได้ทราบ Br−1 และข้อความอื่นๆ ทั้งหมดก่อนหน้านี้ บล็อกซึ่งจำเป็นในการพิจารณาว่าการชำระเงินใน Br นั้นถูกต้องหรือไม่ ต่อไปนี้ สมมติฐานกลับประสบผลสำเร็จ สมมติฐานการเผยแพร่ข้อความ (MP): สำหรับ \(\rho\) ทั้งหมด > 95% และ \(\mu\) \(\in\)Z+ จะมี \(\gamma\) \(\rho\),\(\mu\) อยู่ เช่นนั้นตลอดเวลา t และข้อความ \(\mu\)-byte ทั้งหมด m เผยแพร่โดยผู้ใช้ที่ซื่อสัตย์ก่อน t −\(\gamma\) \(\rho\),\(\mu\), m ได้รับตามเวลา t อย่างน้อยก็เศษส่วน \(\rho\) ของผู้ใช้ที่ซื่อสัตย์ โปรโตคอล Algorand ′ จริงๆ แล้วแนะนำผู้ใช้แต่ละรายในจำนวนเล็กน้อย (เช่น ผู้ตรวจสอบของ กำหนดขั้นตอนของรอบใน Algorand ′ เพื่อเผยแพร่ข้อความแยกต่างหากในขนาดที่กำหนด (เล็ก) และเราต้องจำกัดเวลาที่จำเป็นเพื่อปฏิบัติตามคำแนะนำเหล่านี้ เราทำเช่นนั้นโดยการเพิ่มคุณค่าให้กับ MP สมมติฐานดังต่อไปนี้ สำหรับทั้งหมด n, \(\rho\) > 95% และ \(\mu\) \(\in\)Z+ จะมี \(\lambda\)n,\(\rho\),\(\mu\) ในลักษณะที่ว่า สำหรับทุกเวลา t และ \(\mu\)-ไบต์ทั้งหมด ข้อความ m1, . . . , mn แต่ละรายการเผยแพร่โดยผู้ใช้ที่ซื่อสัตย์ก่อน t −\(\gamma\)n,\(\rho\),\(\mu\), m1, . . , ล้านที่ได้รับ ตามเวลา t อย่างน้อยก็เศษ \(\rho\) ของผู้ใช้ที่ซื่อสัตย์ หมายเหตุ • สมมติฐานข้างต้นจงใจเรียบง่าย แต่ยังแข็งแกร่งเกินความจำเป็นในรายงานของเรา6 • เพื่อความง่าย เราถือว่า \(\rho\) = 1 และเลิกกล่าวถึง \(\rho\) • เราสันนิษฐานในแง่ร้ายว่า หากเขาไม่ละเมิดสมมติฐานของ MP นั่นก็คือปฏิปักษ์ ควบคุมการส่งข้อความทั้งหมดโดยสิ้นเชิง โดยเฉพาะโดยไม่ถูกสังเกตจากคนซื่อสัตย์ ผู้ใช้ ฝ่ายตรงข้าม เขาสามารถตัดสินใจได้โดยพลการว่าผู้เล่นที่ซื่อสัตย์คนใดจะได้รับข้อความใดเมื่อใด และเร่งส่งข้อความใด ๆ ที่เขาต้องการโดยพลการ7

Протокол BA BA⋆ в традиционной обстановке

Как уже подчеркивалось, византийское соглашение является ключевым ингредиентом Algorand. Действительно, это через использование такого протокола BA, на который Algorand не влияет вилка. Однако, чтобы быть в безопасности от наших Могущественный противник, Algorand должен полагаться на протокол BA, который удовлетворяет новой возможности замены игроков. ограничение. Кроме того, чтобы Algorand был эффективным, такой протокол BA должен быть очень эффективным. Протоколы BA были впервые определены для идеализированной модели связи, синхронной полной сети (сети SC). Такая модель позволяет упростить разработку и анализ протоколов БА. 6 Учитывая честный процент h и приемлемую вероятность отказа F, Algorand вычисляет верхнюю границу N, максимальному числу членов проверяющих на шаге. Таким образом, предположение MP должно выполняться только при n \(\leq\)N. Кроме того, как уже говорилось, предположение MP сохраняется независимо от того, сколько других сообщений может распространяться одновременно с MJ's. Однако, как мы увидим, в Algorand сообщения at распространяются практически за неперекрывающееся время. интервалы, в течение которых либо распространяется один блок, либо не более N верификаторов распространяются небольшой (например, 200B) сообщение. Таким образом, мы могли бы переформулировать предположение MP в более слабом, но и более сложном виде. 7Например, он может сразу узнать сообщения, отправленные честными игроками. Таким образом, злонамеренный пользователь i', который которого попросили распространить сообщение одновременно с честным пользователем i, всегда может выбрать свое собственное сообщение m' на основе сообщение m фактически распространяется i. Эта способность связана с спешкой, на языке распределенных вычислений. литература.Соответственно, в этом разделе мы вводим новый протокол BA, BA⋆, для сетей SC и игнорируя вообще вопрос взаимозаменяемости игроков. Протокол BA⋆ представляет собой вклад отдельной ценности. Действительно, это наиболее эффективный из известных на сегодняшний день криптографических протоколов BA для сетей SC. Чтобы использовать его в нашем протоколе Algorand, мы немного модифицируем BA⋆, чтобы учесть наши различные модель и контекст общения, но не забудьте в разделе X указать, как используется BA⋆. в рамках нашего фактического протокола Algorand ′. Начнем с напоминания о модели, в которой действует BA⋆, и о понятии византийского соглашения. 3.1 Синхронные полные сети и соответствующие противники В сети SC имеются общие часы, отсчитывающие время каждого целого числа r = 1, 2, . . . При каждом четном нажатии r каждый игрок i мгновенно и одновременно отправляет один сообщение мистеру i,j (возможно, пустое сообщение) каждому игроку j, включая себя. Каждый мистер я, j получен в момент времени щелкните r + 1 игроком j вместе с личностью отправителя i. Опять же, в протоколе связи игрок честен, если он следует всем предписанным ему правилам. инструкции и злонамеренные в противном случае. Все злонамеренные игроки полностью контролируются и прекрасно координируется Противником, который, в частности, немедленно получает все сообщения, адресованные злонамеренные игроки и выбирает сообщения, которые они отправляют. Злоумышленник может немедленно сделать злонамеренным любого честного пользователя, которого он захочет, в любое нечетное время. он хочет, с учетом только возможного верхнего предела числа злонамеренных игроков. То есть, Противник «не может вмешиваться в сообщения, уже отправленные честным пользователем i», которые будут доставили как обычно. Противник также имеет дополнительную возможность мгновенно, в каждом четном раунде, видеть сообщения, которые отправляют честные на данный момент игроки, и мгновенно использовать эту информацию для выбора сообщения, которые злоумышленники отправляют одновременно, отмечаются галочкой. Примечания • Сила противника. Вышеуказанная установка является очень враждебной. Действительно, в Византийском договоре литературе, многие параметры менее враждебны. Однако есть еще некоторые состязательные настройки. также рассматривалось, где Противник, увидев сообщения, отправленные честным игроком, в данный момент нажмите r, есть возможность стереть все эти сообщения из сети, сразу поврежденный i, выберите сообщение, которое теперь отправляет вредоносный i, нажмите r и получите его доставили как обычно. Предполагаемая сила Противника соответствует той, которую он имеет в наших условиях. • Физическая абстракция. Предполагаемая модель коммуникации абстрагирует более физическую модель, в котором каждая пара игроков (i, j) связана отдельной частной линией связи li,j. То есть никто другой не может внедрять сообщения, вмешиваться в них или получать информацию о них. Ли, Дж. Единственный способ для злоумышленника получить доступ к li,j — это повредить i или j. • Конфиденциальность и аутентификация. В сетях SC гарантируется конфиденциальность и аутентификация сообщений. по предположению. Напротив, в нашей сети связи, где распространяются сообщения между узлами аутентификация гарантируется цифровыми подписями, а конфиденциальность отсутствует. Таким образом, чтобы адаптировать протокол BA⋆ к нашим условиям, каждое обмениваемое сообщение должно быть подписано цифровой подписью. (дальнейшее определение состояния, в котором оно было отправлено). К счастью, протоколы БА, которые мы рассмотрите возможность использования в Algorand не требующих конфиденциальности сообщений.3.2 Понятие византийского соглашения Понятие византийского соглашения было введено Пизом Шостаком и Лэмпортом [31] для двоичный случай, то есть когда каждое начальное значение состоит из бита. Однако его быстро продлили. произвольным начальным значениям. (См. обзоры Фишера [16] и Чора и Дворка [10].) Бакалавр протокол, мы имеем в виду протокол произвольного значения. Определение 3.1. В синхронной сети пусть P — протокол для n игроков, набор игроков которого общий. знаний среди игроков, t — положительное целое число такое, что n \(\geq\)2t + 1. Мы говорим, что P является произвольного (соответственно двоичного) (n, t)-византийского протокола согласования с корректностью \(\sigma\) \(\in\)(0, 1) если для любого набора значений V, не содержащего специального символа \(\bot\) (соответственно, для V = {0, 1}), в исполнение, в котором не более t игроков являются злонамеренными и в котором каждый игрок i начинает с начальное значение vi \(\in\)V , каждый честный игрок j останавливается с вероятностью 1, выдавая значение outi \(\in\)V \(\cup\){\(\bot\)} так, чтобы с вероятностью не менее \(\sigma\) удовлетворить следующим двум условиям: 1. Соглашение: существует out \(\in\)V \(\cup\){\(\bot\)} такой, что outi = out для всех честных игроков i. 2. Непротиворечивость: если для некоторого значения v \(\in\)V vi = v для всех честных игроков, то out = v. Мы называем out выходом P, а каждый outi — выходом игрока i. 3.3 Обозначение BA В наших протоколах БА игрок обязан посчитать, сколько игроков отправили ему заданное сообщение в заданный шаг. Соответственно, для каждого возможного значения v, которое может быть отправлено,

с

я (в) (или просто #i(v), если s ясно) — это количество игроков j, от которых я получил v на шаге s. Вспоминая, что игрок i получает ровно одно сообщение от каждого игрока j, если число игроков равно n, то для всех i и s P в #с я(v) = п. 3.4 Бинарный протокол BA BBA⋆ В этом разделе мы представляем новый бинарный протокол BA, BBA⋆, который опирается на честность большего количества чем две трети игроков и очень быстро: что бы ни делали злонамеренные игроки, каждое выполнение основного цикла приводит игроков к соглашению с вероятностью 1/3. Каждый игрок имеет свой открытый ключ схемы цифровой подписи, удовлетворяющий требованиям уникальной подписи. собственность. Поскольку этот протокол предназначен для работы в полной синхронной сети, нет нужно, чтобы игрок подписывал каждое свое сообщение. Цифровые подписи используются для генерации достаточно распространенного случайного бита на этапе 3. (В Algorand цифровые подписи также используются для аутентификации всех остальных сообщений.) Протокол требует минимальной настройки: общая случайная строка r, независимая от игроков. ключи. (В Algorand r фактически заменяется величиной Qr.) Протокол BBA⋆ представляет собой трехэтапный цикл, в котором игроки неоднократно обмениваются логическими значениями, а разные игроки могут выйти из этого цикла в разное время. Игрок i выходит из этого цикла, распространяя на каком-то этапе либо специальное значение 0∗, либо специальное значение 1∗, тем самым инструктируя всех игроков «представьте», что они получают соответственно 0 и 1 от i на всех последующих шагах. (В качестве альтернативы: предположимчто последнее сообщение, полученное игроком j от другого игрока i, было битом b. Тогда на любом шаге в котором он не получает никакого сообщения от i, j действует так, как если бы я отправил ему бит b.) В протоколе используется счетчик \(\gamma\), показывающий, сколько раз был выполнен трехэтапный цикл. В начале BBA⋆ \(\gamma\) = 0. (Можно думать о \(\gamma\) как о глобальном счетчике, но на самом деле он увеличен каждым отдельным игроком каждый раз при выполнении цикла.) Их n \(\geq\)3t + 1, где t — максимально возможное количество злоумышленников. Бинарный файл строка x идентифицируется с целым числом, двоичное представление которого (с возможными начальными нулями) равно x; а lsb(x) обозначает младший значащий бит числа x. Протокол BBA⋆ (Связь) Шаг 1. [Шаг фиксирования монеты до 0] Каждый игрок i отправляет bi. 1.1 Если №1 i (0) \(\geq\)2t + 1, затем я устанавливает bi = 0, отправляет 0∗, выводит outi = 0, и ОСТАНАВЛИВАЕТСЯ. 1.2 Если №1 i (1) \(\geq\)2t + 1, то тогда я устанавливаю bi = 1. 1.3 В противном случае я устанавливаю bi = 0. (Связь) Шаг 2. [Шаг фиксированной монеты-1] Каждый игрок i отправляет bi. 2.1 Если №2 i (1) \(\geq\)2t + 1, то я устанавливаю bi = 1, отправляет 1∗, выходы outi = 1, и ОСТАНАВЛИВАЕТСЯ. 2.2 Если №2 i (0) \(\geq\)2t + 1, то я устанавливаю bi = 0. 2.3 В противном случае я устанавливаю bi = 1. (Общение) Шаг 3. [Шаг истинного подбрасывания монеты] Каждый игрок i отправляет bi и SIGi(r, \(\gamma\)). 3.1 Если №3 i (0) \(\geq\)2t + 1, то я устанавливаю bi = 0. 3.2 Если №3 i (1) \(\geq\)2t + 1, то я устанавливаю bi = 1. 3.3 Иначе, полагая Si = {j \(\in\)N, который отправил i правильное сообщение на этом шаге 3 }, я устанавливаю bi = c \(\triangleq\)lsb(minj\(\varepsilon\)Si H(SIGi(r, \(\gamma\)))); увеличивает \(\gamma\)i на 1; и возвращается к шагу 1. Теорема 3.1. Всякий раз, когда n \(\geq\)3t + 1, BBA⋆ является бинарным (n, t)-протоколом BA с надежностью 1. Доказательство теоремы 3.1 приведено в [26]. Его адаптация к нашим условиям и возможность замены игроков. свойства являются новыми. Историческое замечание Вероятностные бинарные протоколы БА были впервые предложены Бен-Ором в асинхронные настройки [7]. Протокол BBA⋆ — это новая адаптация к нашим условиям открытого ключа двоичный протокол BA Фельдмана и Микали [15]. Их протокол был первым, который сработал ожидаемым образом. постоянное количество шагов. Это сработало благодаря тому, что игроки сами реализовали общую монету. идея, предложенная Рабином, который реализовал ее через внешнюю доверенную сторону [32].3,5 Градуированный консенсус и Протокол GC Давайте вспомним, что касается произвольных ценностей, понятие консенсуса, гораздо более слабое, чем византийское соглашение. Определение 3.2. Пусть P — протокол, в котором множество всех игроков общеизвестно, и каждый игрок i лично знает произвольное начальное значение v' я. Мы говорим, что P является (n, t)-градуированным протоколом консенсуса, если в каждом исполнении с n игроками в большинство из которых являются вредоносными, каждый честный игрок i прекращает выводить пару ценных значений (vi, gi), где gi \(\in\){0, 1, 2}, чтобы удовлетворить следующим трем условиям: 1. Для всех честных игроков i и j |gi −gj| \(\leq\)1. 2. Для всех честных игроков i и j gi, gj > 0 ⇒vi = vj. 3. Если v' 1 = \(\cdots\) = v′ n = v для некоторого значения v, тогда vi = v и gi = 2 для всех честных игроков i. Историческая справка Понятие дифференцированного консенсуса просто вытекает из понятия дифференцированного консенсуса. трансляция, выдвинутая Фельдманом и Микали в [15], путем укрепления понятия крестоносца соглашение, представленное Долевым [12] и уточненное Терпином и Коаном [33].8 В [15] авторы также предоставили трехэтапный (n, t) протокол вещания Gradecast для n \(\geq\)3t+1. Позже был найден более сложный (n, t)-градуированный протокол вещания для n > 2t+1. Кац и Ку [19]. Следующий двухэтапный протокол GC состоит из двух последних этапов Gradecast, выраженных в нашем обозначения. Чтобы подчеркнуть этот факт и соответствовать шагам протокола Algorand ′ раздела 4.1, мы соответственно назовите 2 и 3 шаги GC. Протокол GC Шаг 2. Каждый игрок i отправляет v' я всем игрокам. Шаг 3. Каждый игрок i отправляет всем игрокам строку x тогда и только тогда, когда #2 я (х) \(\geq\)2t + 1. Определение выхода. Каждый игрок i выводит пару (vi, gi), рассчитанную следующим образом: • Если для некоторого x, #3 i (x) \(\geq\)2t + 1, тогда vi = x и gi = 2. • Если для некоторого x, #3 i (x) \(\geq\)t + 1, тогда vi = x и gi = 1. • В противном случае vi = \(\bot\) и gi = 0. Теорема 3.2. Если n \(\geq\)3t + 1, то GC является (n, t)-градуированным широковещательным протоколом. Доказательство непосредственно следует из протокола Gradecast в [15] и поэтому опускается9. 8По сути, в протоколе дифференцированного вещания (а) вклад каждого игрока представляет собой личность выдающегося игрок, отправитель, который имеет произвольное значение v в качестве дополнительных частных входных данных, и (б) выходные данные должны удовлетворять те же свойства 1 и 2 градуированного консенсуса, плюс следующее свойство 3': если отправитель честен, то vi = v и gi = 2 для всех честных игроков i. 9Действительно, в их протоколе на шаге 1 отправитель отправляет свое личное значение v всем игрокам, и каждый игрок i позволяет v' я состою из значения, которое он фактически получил от отправителя на шаге 1.3.6 Протокол BA⋆ Теперь мы опишем протокол BA с произвольными значениями BA⋆ через двоичный протокол BA BBA⋆ и протокол постепенного консенсуса GC. Ниже начальная стоимость каждого игрока i равна v' я. Протокол BA⋆ Шаги 1 и 2. Каждый игрок i выполняет GC на входе v' i, чтобы вычислить пару (vi, gi). Шаг 3, . . . Каждый игрок i выполняет BBA⋆ — с начальным вводом 0, если gi = 2, и 1 в противном случае — так что как вычислить бит outi. Определение выхода. Каждый игрок i выводит vi, если outi = 0, и \(\bot\) в противном случае. Теорема 3.3. Всякий раз, когда n \(\geq\)3t + 1, BA⋆ представляет собой (n, t)-BA-протокол с надежностью 1. Доказательство. Сначала мы доказываем непротиворечивость, а затем согласие. Доказательство согласованности. Предположим, что для некоторого значения v \(\in\)V , v′ i = v. Тогда по свойству 3 градуированный консенсус, после выполнения GC, все честные игроки выводят (v, 2). Соответственно, 0 начальный бит всех честных игроков в конце исполнения BBA⋆. Таким образом, Соглашением свойство бинарного византийского соглашения, в конце исполнения BA⋆, outi = 0 для всех честных игроки. Это означает, что результат каждого честного игрока i в BA⋆ равен vi = v. ✷ Доказательство соглашения. Поскольку BBA⋆ — это двоичный протокол BA, либо (A) outi = 1 для всех честных игроков i, или (B) outi = 0 для всех честных игроков i. В случае А все честные игроки выводят \(\bot\)в BA⋆, и, таким образом, Соглашение выполняется. Рассмотрим теперь случай Б. В в этом случае при выполнении BBA⋆ начальный бит хотя бы одного честного игрока i равен 0. (Действительно, если начальный бит всех честных игроков был равен 1, то, согласно свойству согласованности BBA⋆, мы бы имели outj = 1 для всех честных j.) Соответственно, после выполнения GC i выводит пару (v, 2) для некоторых значение v. Таким образом, по свойству 1 градуированного консенсуса gj > 0 для всех честных игроков j. Соответственно, по свойство 2 градуированного консенсуса: vj = v для всех честных игроков j. Это означает, что в конце BA⋆, каждый честный игрок j выводит v. Таким образом, Соглашение справедливо и в случае B. ✷ Поскольку соблюдаются как согласованность, так и согласованность, BA⋆ является протоколом BA с произвольным значением. Историческая справка Терпин и Коан первыми показали, что при n \(\geq\)3t+1 любой бинарный (n, t)-BA протокол может быть преобразован в протокол произвольного значения (n, t)-BA. Приведение произвольного значения Византийское соглашение к бинарному Византийское соглашение посредством ступенчатого консенсуса является более модульным и чище и упрощает анализ нашего Algorand протокола Algorand ′. Обобщающий BA⋆для использования в Algorand Algorand работает, даже если вся связь осуществляется через сплетни. Однако, несмотря на то, что они представлены в традиционной и знакомой сети связи, так как Чтобы обеспечить лучшее сравнение с предшествующим уровнем техники и облегчить понимание, работает протокол BA⋆. также в сетях сплетен. Фактически, в наших детальных вариантах реализации Algorand мы представим его непосредственно для сетей сплетен. Отметим также, что оно удовлетворяет заменимости игроков свойство, которое имеет решающее значение для безопасности Algorand в предусмотренной очень состязательной модели.

Любой заменяемый игроком BA протокол, работающий в сети сплетничающей связи, может быть надежно используется в системе Algorand изобретения. В частности, Микали и Вайкунтханатан. расширили BA⋆, чтобы он мог очень эффективно работать и с простым большинством честных игроков. Это протокол тоже можно использовать в Algorand.

พิธีสาร BA ⋆ในการตั้งค่าแบบดั้งเดิม

ตามที่ได้เน้นย้ำไปแล้ว ข้อตกลงไบเซนไทน์เป็นองค์ประกอบสำคัญของ Algorand จริงอยู่ว่ามันผ่านไปแล้ว การใช้โปรโตคอล BA ที่ Algorand ไม่ได้รับอิทธิพลจากส้อม อย่างไรก็ตามเพื่อความปลอดภัยของเรา ฝ่ายตรงข้ามที่ทรงพลัง Algorand ต้องพึ่งพาโปรโตคอล BA ที่ตอบสนองความสามารถในการเปลี่ยนผู้เล่นใหม่ ข้อ จำกัด นอกจากนี้ เพื่อให้ Algorand มีประสิทธิภาพ โปรโตคอล BA ดังกล่าวจะต้องมีประสิทธิภาพอย่างมาก โปรโตคอล BA ถูกกำหนดครั้งแรกสำหรับรูปแบบการสื่อสารในอุดมคติ ซิงโครนัสสมบูรณ์ เครือข่าย (เครือข่าย SC) โมเดลดังกล่าวช่วยให้การออกแบบและการวิเคราะห์โปรโตคอล BA ง่ายขึ้น 6เมื่อพิจารณาจากเปอร์เซ็นต์ h ที่แท้จริงและความน่าจะเป็นความล้มเหลวที่ยอมรับได้ F, Algorand คำนวณขอบเขตบน, N, จนถึงจำนวนสมาชิกของผู้ตรวจสอบสูงสุดในขั้นตอนเดียว ดังนั้นสมมติฐานของ MP จำเป็นต้องคงไว้เพียง n \(\leq\)N เท่านั้น นอกจากนี้ตามที่ระบุไว้ ข้อสันนิษฐานของ MP ยังคงอยู่ไม่ว่าจะมีข้อความอื่น ๆ อีกกี่ข้อความที่สามารถเผยแพร่ควบคู่ไปกับก็ตาม เอ็มเจ ดังที่เราจะได้เห็นใน Algorand ข้อความที่ ได้รับการเผยแพร่ในเวลาที่ไม่ทับซ้อนกัน ช่วงเวลา ในระหว่างที่มีการแพร่กระจายบล็อกเดียวหรือผู้ตรวจสอบ N ส่วนใหญ่เผยแพร่ขนาดเล็ก (เช่น 200B) ข้อความ ดังนั้นเราจึงสามารถย้ำสมมติฐานของ MP ด้วยวิธีที่อ่อนแอกว่า แต่ก็ซับซ้อนกว่าเช่นกัน 7ตัวอย่างเช่น เขาสามารถเรียนรู้ข้อความที่ผู้เล่นซื่อสัตย์ส่งมาได้ทันที ดังนั้นผู้ใช้ที่เป็นอันตราย i′ ซึ่งเป็น ขอให้เผยแพร่ข้อความพร้อมกันกับผู้ใช้ที่ซื่อสัตย์ i สามารถเลือกข้อความของตัวเองได้ตลอดเวลา m′ ตาม ข้อความ m เผยแพร่จริงโดย i ความสามารถนี้เกี่ยวข้องกับการวิ่ง ในสำนวนของการคำนวณแบบกระจาย วรรณกรรมดังนั้น ในส่วนนี้ เราจึงแนะนำโปรโตคอล BA ใหม่ BA⋆ สำหรับเครือข่าย SC และไม่สนใจ ปัญหาเรื่องการเปลี่ยนตัวผู้เล่นโดยสิ้นเชิง โปรโตคอล BA⋆เป็นการมีส่วนร่วมของค่าที่แยกจากกัน แท้จริงแล้ว มันเป็นโปรโตคอล BA เข้ารหัสที่มีประสิทธิภาพมากที่สุดสำหรับเครือข่าย SC ที่รู้จักกันจนถึงตอนนี้ หากต้องการใช้ภายในโปรโตคอล Algorand ของเรา เราจะแก้ไข BA⋆ เล็กน้อย เพื่อที่จะคำนึงถึงความแตกต่างของเรา รูปแบบการสื่อสารและบริบท แต่ต้องแน่ใจว่าในส่วน X เพื่อเน้นวิธีการใช้ BA⋆ ภายในโปรโตคอลจริงของเรา Algorand ′ เราเริ่มต้นด้วยการนึกถึงแบบจำลองที่BA⋆ดำเนินการและแนวคิดของข้อตกลงไบแซนไทน์ 3.1 เครือข่ายที่สมบูรณ์แบบซิงโครนัสและการจับคู่ฝ่ายตรงข้าม ในเครือข่าย SC มีนาฬิกาทั่วไป โดยทำเครื่องหมายที่แต่ละเวลารวม r = 1, 2, . . ในแต่ละช่วงเวลาให้คลิก r ผู้เล่นแต่ละคนที่ฉันจะส่งหนึ่งรายการพร้อมกันทันที ส่งข้อความถึงคุณ i,j (อาจเป็นข้อความว่างเปล่า) ถึงผู้เล่นแต่ละคน j รวมถึงตัวเขาเองด้วย นายแต่ละคน i,j ได้รับแล้ว ในเวลาคลิก r + 1 โดยผู้เล่น j พร้อมด้วยตัวตนของผู้ส่ง i อีกครั้งในโปรโตคอลการสื่อสาร ผู้เล่นจะต้องซื่อสัตย์หากเขาปฏิบัติตามคำสั่งทั้งหมดของเขา คำแนะนำและเป็นอันตรายอย่างอื่น ผู้เล่นที่เป็นอันตรายทั้งหมดได้รับการควบคุมอย่างสมบูรณ์และสมบูรณ์แบบ ประสานงานโดยฝ่ายตรงข้ามซึ่งโดยเฉพาะจะได้รับข้อความทั้งหมดที่จ่าหน้าถึงทันที ผู้เล่นที่เป็นอันตราย และเลือกข้อความที่พวกเขาส่ง ฝ่ายตรงข้ามสามารถสร้างอันตรายให้กับผู้ใช้ที่ซื่อสัตย์ที่เขาต้องการได้ทันทีเมื่อคลิกในเวลาคี่ เขาต้องการ ขึ้นอยู่กับขอบเขตบนที่เป็นไปได้เท่านั้นกับจำนวนผู้เล่นที่เป็นอันตราย นั่นคือ ฝ่ายตรงข้าม "ไม่สามารถรบกวนข้อความที่ส่งโดยผู้ใช้ที่ซื่อสัตย์ i" ซึ่งจะเป็นได้ จัดส่งตามปกติ ฝ่ายตรงข้ามมีความสามารถเพิ่มเติมในการมองเห็นได้ทันทีในแต่ละรอบคู่ ข้อความที่ผู้เล่นที่ซื่อสัตย์ในปัจจุบันส่งและใช้ข้อมูลนี้เพื่อเลือกทันที ข้อความที่ผู้เล่นที่เป็นอันตรายส่งพร้อมกันถูกทำเครื่องหมาย หมายเหตุ • อำนาจของฝ่ายตรงข้าม การตั้งค่าข้างต้นเป็นปฏิปักษ์อย่างมาก แท้จริงแล้วในข้อตกลงไบแซนไทน์ วรรณกรรม การตั้งค่าหลายอย่างมีความขัดแย้งน้อยกว่า อย่างไรก็ตาม มีการตั้งค่าฝ่ายตรงข้ามเพิ่มเติมบางประการ ยังได้รับการพิจารณาว่าฝ่ายตรงข้ามหลังจากเห็นข้อความที่ส่งมาจากผู้เล่นที่ซื่อสัตย์แล้ว ในเวลาที่กำหนดให้คลิก r มีความสามารถในการลบข้อความเหล่านี้ทั้งหมดออกจากเครือข่ายได้ทันที เสียหายฉันเลือกข้อความที่ฉันส่งที่เป็นอันตรายตอนนี้คลิก r และให้พวกเขา จัดส่งตามปกติ พลังที่จินตนาการไว้ของฝ่ายตรงข้ามตรงกับที่เขามีในสภาพแวดล้อมของเรา • สิ่งที่เป็นนามธรรมทางกายภาพ รูปแบบการสื่อสารที่จินตนาการไว้จะเป็นนามธรรมของแบบจำลองทางกายภาพมากขึ้น โดยที่ผู้เล่นแต่ละคู่ (i, j) เชื่อมโยงกันด้วยสายสื่อสารส่วนตัวที่แยกจากกัน li,j นั่นคือไม่มีใครสามารถแทรกแซงหรือรับข้อมูลเกี่ยวกับข้อความที่ส่งไปได้ ลี เจ วิธีเดียวที่ฝ่ายตรงข้ามจะสามารถเข้าถึง li,j ได้คือการทำให้ i หรือ j เสียหาย • ความเป็นส่วนตัวและการรับรองความถูกต้อง ในเครือข่าย SC รับประกันความเป็นส่วนตัวและการรับรองความถูกต้องของข้อความ โดยสมมติฐาน ในทางตรงกันข้าม ในเครือข่ายการสื่อสารของเราซึ่งมีการเผยแพร่ข้อความ จากเพียร์ทูเพียร์ การรับรองความถูกต้องรับประกันด้วยลายเซ็นดิจิทัล และไม่มีความเป็นส่วนตัว ดังนั้น เพื่อนำโปรโตคอล BA⋆ มาใช้กับการตั้งค่าของเรา แต่ละข้อความที่แลกเปลี่ยนควรมีการเซ็นชื่อแบบดิจิทัล (ระบุสถานะที่ถูกส่งต่อไป) โชคดีที่ระเบียบการบริติชแอร์เวย์ที่เรา พิจารณาใช้ใน Algorand ไม่ต้องการความเป็นส่วนตัวของข้อความ3.2 แนวคิดของข้อตกลงไบเซนไทน์ แนวคิดเรื่องข้อตกลงไบแซนไทน์ได้รับการเสนอโดย Pease Shostak และ Lamport [31] สำหรับ กรณีไบนารี นั่นคือเมื่อทุกค่าเริ่มต้นประกอบด้วยบิต อย่างไรก็ตาม ได้มีการขยายออกไปอย่างรวดเร็ว เป็นค่าเริ่มต้นตามอำเภอใจ (ดูการสำรวจของ Fischer [16] และ Chor และ Dwork [10].) โดย BA โปรโตคอล เราหมายถึงหนึ่งค่าที่กำหนดเอง คำจำกัดความ 3.1 ในเครือข่ายซิงโครนัส ให้ P เป็นโปรโตคอล n-player ซึ่งชุดผู้เล่นเป็นเรื่องธรรมดา ความรู้ในหมู่ผู้เล่น t จำนวนเต็มบวก โดยที่ n \(\geq\)2t + 1 เราบอกว่า P คือ an ค่าตามอำเภอใจ (ตามลำดับไบนารี่) (n, t) - โปรโตคอลข้อตกลงไบแซนไทน์ที่มีความสมบูรณ์ \(\sigma\) \(\in\) (0, 1) ถ้าสำหรับทุกชุดของค่า V ที่ไม่มีสัญลักษณ์พิเศษ \(\bot\) (ตามลำดับ สำหรับ V = {0, 1}) ใน การดำเนินการที่ผู้เล่นส่วนใหญ่เป็นอันตรายและผู้เล่นทุกคนที่ฉันเริ่มต้นด้วย ค่าเริ่มต้น vi \(\in\)V ผู้เล่นที่ซื่อสัตย์ทุกคน j หยุดด้วยความน่าจะเป็น 1 โดยส่งออกค่า outi \(\in\)V \(\cup\){\(\bot\)} เพื่อให้เป็นไปตามเงื่อนไขสองประการต่อไปนี้ด้วยความน่าจะเป็นอย่างน้อย \(\sigma\): 1. ข้อตกลง: มี \(\in\)V \(\cup\){\(\bot\)} อยู่ ซึ่ง outi = out สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i 2. ความสม่ำเสมอ: ถ้าสำหรับค่าบางค่า v \(\in\)V , vi = v สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน แล้ว out = v เราเรียก out ว่าเป็นเอาต์พุตของ P และเรียก outi แต่ละรายการว่าเป็นเอาต์พุตของผู้เล่น 3.3 สัญกรณ์ BA # ในระเบียบการ BA ของเรา ผู้เล่นจะต้องนับจำนวนผู้เล่นที่ส่งข้อความถึงเขา ขั้นตอนที่กำหนด ดังนั้น สำหรับแต่ละค่าที่เป็นไปได้ v ที่อาจถูกส่งไป

ฉัน(วี) (หรือเพียงแค่ #i(v) เมื่อ s ชัดเจน) คือจำนวนผู้เล่น j ที่ฉันได้รับ v ในขั้นตอน s จำได้ว่าผู้เล่นคนหนึ่งฉันได้รับข้อความหนึ่งข้อความจากผู้เล่นแต่ละคน j ถ้าเป็นจำนวน ผู้เล่นคือ n ดังนั้นสำหรับทุก i และ s, P วี #ส ผม(วี) = n. 3.4 ไบนารี BA Protocol BBA⋆ ในส่วนนี้เราจะนำเสนอโปรโตคอล BA ไบนารีใหม่ BBA⋆ ซึ่งอาศัยความซื่อสัตย์มากกว่า มากกว่าสองในสามของผู้เล่นและเร็วมาก ไม่ว่าผู้เล่นที่เป็นอันตรายจะทำอะไรก็ตาม การดำเนินการของลูปหลักแต่ละครั้งจะทำให้ผู้เล่นตกลงกับความน่าจะเป็น 1/3 ผู้เล่นแต่ละคนมีกุญแจสาธารณะของตนเองสำหรับรูปแบบลายเซ็นดิจิทัลที่สอดคล้องกับลายเซ็นที่เป็นเอกลักษณ์ ทรัพย์สิน เนื่องจากโปรโตคอลนี้มีวัตถุประสงค์เพื่อให้ทำงานบนเครือข่ายแบบซิงโครนัสที่สมบูรณ์ จึงไม่มี ต้องการผู้เล่นที่จะลงนามในข้อความของเขาแต่ละข้อความ ลายเซ็นดิจิทัลใช้เพื่อสร้างบิตสุ่มทั่วไปเพียงพอในขั้นตอนที่ 3 (ใน Algorand ลายเซ็นดิจิทัลจะใช้ในการตรวจสอบข้อความอื่นๆ ทั้งหมดเช่นกัน) โปรโตคอลต้องการการตั้งค่าขั้นต่ำ: สตริงสุ่มทั่วไป r โดยไม่ขึ้นกับผู้เล่น กุญแจ (ใน Algorand จริงๆ แล้ว r จะถูกแทนที่ด้วยปริมาณ Qr) Protocol BBA⋆เป็นการวนซ้ำ 3 ขั้นตอนที่ผู้เล่นแลกเปลี่ยนค่าบูลีนซ้ำ ๆ และ ผู้เล่นที่แตกต่างกันอาจออกจากวงนี้ในเวลาที่แตกต่างกัน ผู้เล่นที่ฉันออกจากวงนี้โดยการแพร่กระจาย ในบางขั้นตอน ไม่ว่าจะเป็นค่าพิเศษ 0∗ หรือค่าพิเศษ 1∗ ดังนั้นจึงแนะนำให้ผู้เล่นทุกคน “แกล้งทำเป็น” พวกเขาได้รับ 0 และ 1 จาก i ตามลำดับในขั้นตอนต่อๆ ไป (อีกนัยหนึ่งกล่าวว่า: สมมติว่าข้อความสุดท้ายที่ผู้เล่น j ได้รับจากผู้เล่นคนอื่น ฉันค่อนข้างจะ b แล้วในขั้นตอนใดก็ตาม โดยที่เขาไม่ได้รับข้อความใด ๆ จาก i, j ทำท่าเหมือนกับว่าฉันส่งบิตไปให้เขา b.) โปรโตคอลใช้ตัวนับ \(\gamma\) ซึ่งแสดงถึงจำนวนครั้งที่ดำเนินการวนซ้ำ 3 ขั้นตอน ที่จุดเริ่มต้นของ BBA⋆ \(\gamma\) = 0 (บางคนอาจคิดว่า \(\gamma\) เป็นตัวนับทั่วโลก แต่จริงๆ แล้วเพิ่มขึ้น โดยผู้เล่นแต่ละคนทุกครั้งที่มีการวนซ้ำ) มี n \(\geq\)3t + 1 โดยที่ t คือจำนวนผู้เล่นที่เป็นอันตรายสูงสุดที่เป็นไปได้ ไบนารี สตริง x ถูกระบุด้วยจำนวนเต็มที่มีการแทนค่าไบนารี่ (โดยมี 0 นำหน้าที่เป็นไปได้) คือ x; และ lsb(x) หมายถึงบิตที่มีนัยสำคัญน้อยที่สุดของ x พิธีสาร BBA⋆ (การสื่อสาร) ขั้นตอนที่ 1. [ขั้นตอน Coin-Fixed-To-0] ผู้เล่นแต่ละคนที่ฉันส่งไป 1.1 ถ้า #1 i (0) \(\geq\)2t + 1 จากนั้นฉันตั้งค่า bi = 0 ส่ง 0∗ เอาต์พุต outi = 0 และหยุด 1.2 ถ้า #1 i (1) \(\geq\)2t + 1 จากนั้น i ตั้งค่า bi = 1 1.3 อย่างอื่น ผมตั้งค่า bi = 0 (การสื่อสาร) ขั้นตอนที่ 2 [ขั้นตอน Coin-Fixed-To-1] ผู้เล่นแต่ละคนที่ฉันส่ง Bi 2.1 ถ้า #2 i (1) \(\geq\)2t + 1 จากนั้นฉันตั้งค่า bi = 1 ส่ง 1∗, เอาต์พุตออก = 1, และหยุด 2.2 ถ้า #2 i (0) \(\geq\)2t + 1 จากนั้นฉันตั้งค่า bi = 0 2.3 อย่างอื่น ผมกำหนด bi = 1 (การสื่อสาร) ขั้นตอนที่ 3 [ขั้นตอนการพลิกเหรียญอย่างแท้จริง] ผู้เล่นแต่ละคนที่ฉันส่ง bi และ SIGi(r, \(\gamma\)) 3.1 ถ้า #3 i (0) \(\geq\)2t + 1 จากนั้น i กำหนดให้ bi = 0 3.2 ถ้า #3 i (1) \(\geq\)2t + 1 จากนั้น i กำหนดให้ bi = 1 3.3 มิฉะนั้น ให้ Si = {j \(\in\)N ที่ส่งข้อความที่ถูกต้องให้ฉันในขั้นตอนที่ 3 } ฉันตั้งค่า bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); เพิ่ม\(\gamma\)i 1; และกลับสู่ขั้นตอนที่ 1 ทฤษฎีบท 3.1 เมื่อใดก็ตามที่ n \(\geq\)3t + 1 BBA⋆เป็นโปรโตคอลไบนารี (n, t)-BA ที่มีความสมบูรณ์ 1 การพิสูจน์ทฤษฎีบท 3.1 ให้ไว้ใน [26] การปรับให้เข้ากับการตั้งค่าของเรา และความสามารถในการเปลี่ยนผู้เล่นได้ ทรัพย์สินเป็นเรื่องแปลกใหม่ หมายเหตุทางประวัติศาสตร์ โปรโตคอล BA ไบนารีที่น่าจะเป็นถูกเสนอครั้งแรกโดย Ben-Or ใน การตั้งค่าแบบอะซิงโครนัส [7] Protocol BBA⋆เป็นการดัดแปลงแบบใหม่ให้เข้ากับการตั้งค่าคีย์สาธารณะของเรา โปรโตคอล BA ไบนารีของ Feldman และ Micali [15] ระเบียบวิธีของพวกเขาเป็นสิ่งแรกที่ทำงานตามที่คาดหวัง จำนวนขั้นตอนคงที่ มันทำงานโดยให้ผู้เล่นใช้เหรียญทั่วไป แนวคิดที่เสนอโดย Rabin ซึ่งนำไปใช้ผ่านฝ่ายที่เชื่อถือได้ภายนอก [32]3.5 ฉันทามติแบบให้คะแนนและพิธีสาร GC ให้เราระลึกถึงคุณค่าตามอำเภอใจ แนวคิดฉันทามติที่อ่อนแอกว่าข้อตกลงไบเซนไทน์มาก คำจำกัดความ 3.2 ให้ P เป็นโปรโตคอลที่ชุดของผู้เล่นทุกคนเป็นความรู้ทั่วไปและแต่ละชุด ผู้เล่น โดยส่วนตัวแล้วฉันรู้ค่าเริ่มต้นโดยพลการ v′ ฉัน เราบอกว่า P เป็นโปรโตคอลฉันทามติแบบให้คะแนน (n, t) หากในทุกการดำเนินการที่มีผู้เล่น n คน ที่ ซึ่งส่วนใหญ่เป็นอันตราย ผู้เล่นที่ซื่อสัตย์ทุกคนฉันหยุดส่งออกคู่ระดับมูลค่า (vi, gi) โดยที่ gi \(\in\){0, 1, 2} เพื่อให้เป็นไปตามเงื่อนไขสามประการต่อไปนี้: 1. สำหรับผู้เล่นตัวจริงทุกคน i และ j |gi −gj| \(\leq\)1 2. สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i และ j, gi, gj > 0 ⇒vi = vj 3. ถ้า v′ 1 = \(\cdots\) = วี′ n = v สำหรับค่า v บางส่วน จากนั้น vi = v และ gi = 2 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i หมายเหตุทางประวัติศาสตร์ แนวคิดของการให้คะแนนอย่างเป็นเอกฉันท์นั้นได้มาจากแนวคิดของการให้คะแนนอย่างเป็นเอกฉันท์ ออกอากาศ นำเสนอโดย Feldman และ Micali ใน [15] โดยการเสริมสร้างแนวคิดของสงครามครูเสด ตามที่แนะนำโดย Dolev [12] และปรับปรุงโดย Turpin และ Coan [33].8 ใน [15] ผู้เขียนยังได้จัดเตรียมโปรโตคอลการออกอากาศแบบให้คะแนน 3 ขั้นตอน (n, t) เกรดแคสต์ สำหรับ n \(\geq\)3t+1 พบโปรโตคอลการออกอากาศแบบให้คะแนนที่ซับซ้อนมากขึ้น (n, t) สำหรับ n > 2t+1 ในภายหลัง โดย แคทซ์ และคู [19]. GC โปรโตคอลสองขั้นตอนต่อไปนี้ประกอบด้วยสองขั้นตอนสุดท้ายของ gradecast ดังที่แสดงในของเรา สัญกรณ์ เพื่อเน้นย้ำข้อเท็จจริงนี้ และเพื่อให้ตรงกับขั้นตอนของโปรโตคอล Algorand ′ ของหัวข้อ 4.1 เรา ตั้งชื่อขั้นตอนที่ 2 และ 3 ของ GC ตามลำดับ พิธีสาร GC ขั้นตอนที่ 2 ผู้เล่นแต่ละคนที่ฉันส่ง v′ ฉันถึงผู้เล่นทุกคน ขั้นตอนที่ 3 ผู้เล่นแต่ละคนที่ฉันส่งสตริง x ให้กับผู้เล่นทุกคนถ้าหาก #2 ผม (x) \(\geq\)2t + 1 การกำหนดเอาท์พุท ผู้เล่นแต่ละคน i ส่งออกคู่ (vi, gi) ที่คำนวณดังนี้: • ถ้าสำหรับ x บางอัน #3 i (x) \(\geq\)2t + 1 จากนั้น vi = x และ gi = 2 • ถ้าสำหรับ x บางอัน #3 i (x) \(\geq\)t + 1 จากนั้น vi = x และ gi = 1 • อย่างอื่น vi = \(\bot\) และ gi = 0 ทฤษฎีบท 3.2 ถ้า n \(\geq\)3t + 1 ดังนั้น GC จะเป็นโปรโตคอลการออกอากาศแบบให้คะแนน (n, t) การพิสูจน์จะตามมาจากโปรโตคอล gradecast ใน [15] ทันที และละเว้นไว้ 9 8โดยพื้นฐานแล้ว ในโปรโตคอลการออกอากาศแบบแบ่งระดับ (ก) ข้อมูลของผู้เล่นทุกคนคืออัตลักษณ์ของผู้มีความโดดเด่น ผู้เล่น ผู้ส่ง ซึ่งมีค่า v เป็นอินพุตส่วนตัวเพิ่มเติม และ (b) เอาต์พุตต้องเป็นไปตามข้อกำหนด คุณสมบัติเดียวกัน 1 และ 2 ของคะแนนฉันทามติ บวกคุณสมบัติต่อไปนี้ 3′: หากผู้ส่งซื่อสัตย์ ดังนั้น vi = v และ gi = 2 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i 9แท้จริงแล้ว ในโปรโตคอลของพวกเขา ในขั้นตอนที่ 1 ผู้ส่งส่งมูลค่าส่วนตัวของเขาเอง v ไปยังผู้เล่นทุกคน และผู้เล่นแต่ละคนที่ฉันอนุญาต วี' ฉันประกอบด้วยมูลค่าที่เขาได้รับจริงจากผู้ส่งในขั้นตอนที่ 13.6 พิธีสาร BA⋆ ตอนนี้เราอธิบายโปรโตคอล BA มูลค่าตามอำเภอใจผ่านโปรโตคอล BA ไบนารี BBA⋆และ โปรโตคอลฉันทามติแบบให้คะแนน GC ด้านล่างนี้คือค่าเริ่มต้นของผู้เล่นแต่ละคน i คือ v′ ฉัน พิธีสารBA⋆ ขั้นตอนที่ 1 และ 2 ผู้เล่นแต่ละคนที่ฉันเรียกใช้งาน GC บนอินพุต v′ ฉัน เพื่อคำนวณคู่ (vi, gi) ขั้นตอนที่ 3, . . . ผู้เล่นแต่ละคนที่ฉันรัน BBA⋆—ด้วยอินพุตเริ่มต้น 0 ถ้า gi = 2 และ 1 มิฉะนั้น— ดังนั้น ในการคำนวณบิต outi การกำหนดเอาท์พุท ผู้เล่นแต่ละคน i ส่งออก vi ถ้า outi = 0 และ \(\bot\) มิฉะนั้น ทฤษฎีบท 3.3 เมื่อใดก็ตามที่ n \(\geq\)3t + 1 BA⋆เป็นโปรโตคอล (n, t)-BA ที่มีความสมบูรณ์ 1 หลักฐาน ก่อนอื่นเราพิสูจน์ความสม่ำเสมอ จากนั้นจึงตกลง หลักฐานความสม่ำเสมอ สมมติว่าสำหรับค่าบางค่า v \(\in\)V , v′ i = v จากนั้นตามคุณสมบัติ 3 ของ ฉันทามติอย่างให้คะแนน หลังจากการดำเนินการของ GC ผู้เล่นที่ซื่อสัตย์ทุกคนก็เอาท์พุต (v, 2) ดังนั้น 0 คือ บิตเริ่มต้นของผู้เล่นที่ซื่อสัตย์ทุกคนในตอนท้ายของการดำเนินการ BBA⋆ ดังนั้นตามข้อตกลง คุณสมบัติของข้อตกลงไบเซนไทน์ไบนารี เมื่อสิ้นสุดการดำเนินการของ BA⋆, outi = 0 สำหรับทุกความซื่อสัตย์ ผู้เล่น นี่หมายความว่าผลลัพธ์ของผู้เล่นที่ซื่อสัตย์แต่ละคน i ใน BA⋆is vi = v ✷ หลักฐานข้อตกลง เนื่องจาก BBA⋆เป็นโปรโตคอล BA แบบไบนารีเช่นกัน (A) outi = 1 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i หรือ (B) outi = 0 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i. ในกรณี A ผู้เล่นที่ซื่อสัตย์ทุกคนจะส่งออก \(\bot\) ใน BA⋆ และด้วยเหตุนี้ ข้อตกลงจึงถืออยู่ พิจารณากรณี B. In ในกรณีนี้ ในการดำเนินการ BBA⋆ บิตเริ่มต้นของผู้เล่นที่ซื่อสัตย์อย่างน้อยหนึ่งคน i จะเป็น 0 (อันที่จริง ถ้า บิตเริ่มต้นของผู้เล่นที่ซื่อสัตย์ทั้งหมดคือ 1 จากนั้นด้วยคุณสมบัติความสม่ำเสมอของ BBA⋆ เราจะได้ outj = 1 สำหรับทุก j.) ดังนั้น หลังจากดำเนินการ GC แล้ว i จะเอาท์พุตคู่ (v, 2) สำหรับบางค่า ค่า v ดังนั้น ตามคุณสมบัติ 1 ของคะแนนฉันทามติ gj > 0 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน j ตามนั้น โดย คุณสมบัติ 2 ของคะแนนฉันทามติ vj = v สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน j นี่ก็หมายความว่าในตอนท้ายของ BA⋆ ผู้เล่นที่ซื่อสัตย์ทุกคน j เอาท์พุต v ดังนั้นข้อตกลงจึงถือเป็นกรณี B ✷ เนื่องจากทั้งความสอดคล้องและข้อตกลงถือ BA⋆เป็นโปรโตคอล BA ที่มีมูลค่าตามอำเภอใจ หมายเหตุทางประวัติศาสตร์ เทอร์ปินและโคอันเป็นคนแรกที่แสดงให้เห็นว่า สำหรับ n \(\geq\)3t+1 ไบนารีใดๆ (n, t)-BA โปรโตคอลสามารถแปลงเป็นโปรโตคอลค่าใดก็ได้ (n, t) -BA การลดค่าตามอำเภอใจ ข้อตกลงไบเซนไทน์กับข้อตกลงไบเซนไทน์แบบไบนารีผ่านฉันทามติแบบให้คะแนนเป็นแบบแยกส่วนมากกว่าและ สะอาดยิ่งขึ้น และลดความยุ่งยากในการวิเคราะห์โปรโตคอล Algorand ของเรา Algorand ′ การสรุปBA⋆สำหรับใช้ใน Algorand Algorand ทำงานได้แม้ว่าการสื่อสารทั้งหมดจะผ่านก็ตาม นินทา อย่างไรก็ตามแม้จะนำเสนอในรูปแบบเครือข่ายการสื่อสารแบบดั้งเดิมและคุ้นเคยก็ตาม เพื่อให้การเปรียบเทียบที่ดีขึ้นกับงานศิลปะก่อนหน้าและความเข้าใจที่ง่ายขึ้น โปรโตคอล BA⋆works ในเครือข่ายซุบซิบด้วย ในความเป็นจริง ในรูปลักษณ์โดยละเอียดของเราของ Algorand เราจะนำเสนอมัน โดยตรงสำหรับเครือข่ายซุบซิบ นอกจากนี้เรายังจะชี้ให้เห็นว่าสิ่งนี้ทำให้สามารถเปลี่ยนผู้เล่นได้ คุณสมบัติที่มีความสำคัญสำหรับ Algorand ให้มีความปลอดภัยในรูปแบบที่เป็นปฏิปักษ์ที่คิดไว้

โปรโตคอลที่เปลี่ยนผู้เล่น BA ใด ๆ ที่ทำงานอยู่ในเครือข่ายการสื่อสารซุบซิบสามารถทำได้ ทำงานอย่างปลอดภัยภายในระบบ Algorand ที่สร้างสรรค์ โดยเฉพาะมิคาลีและไวกุนธนาธาน ได้ขยายขอบเขต BA⋆ ให้ทำงานอย่างมีประสิทธิภาพอย่างมากกับผู้เล่นที่ซื่อสัตย์ส่วนใหญ่ นั่น โปรโตคอลก็สามารถใช้ใน Algorand ได้เช่นกัน

Два варианта реализации Algorand

Как уже говорилось, на очень высоком уровне раунд Algorand в идеале протекает следующим образом. Сначала случайно выбранный пользователь, лидер, предлагает и распространяет новый блок. (Этот процесс первоначально включает в себя выбрать несколько потенциальных лидеров, а затем убедиться, что, по крайней мере, значительную часть времени, появляется единый общий лидер.) Во-вторых, выбирается случайно выбранный комитет пользователей, и достигает византийского соглашения по предложенному вождём блоку. (Этот процесс включает в себя каждый шаг протокола БА выполняется отдельно выбранной комиссией.) Согласованный блок затем подписывается цифровой подписью заданного порогового значения (TH) членов комитета. Эти цифровые подписи распространяются так, чтобы все были уверены в том, какой блок является новым. (Это включает в себя распространение учетные данные подписывающих сторон и аутентифицируя только hash нового блока, гарантируя, что каждый гарантированно изучит блок, как только его hash станет ясным.) В следующих двух разделах мы представляем два варианта реализации Algorand, Algorand ′ 1 и Algorand ′ 2, это работает при предположении большинства честных пользователей. В разделе 8 мы покажем, как принять эти варианты реализации, работающие в предположении честного большинства денег. Algorand ′ 1 предусматривает лишь то, что > 2/3 членов комитета будут честными. Кроме того, в Algorand ′ 1, количество шагов для достижения византийского соглашения ограничено достаточно высоким число, так что соглашение гарантировано будет достигнуто с подавляющей вероятностью в течение фиксированное количество шагов (но потенциально требующее больше времени, чем шаги Algorand ′ 2). В В отдаленном случае, когда соглашение еще не достигнуто на последнем этапе, комитет согласовывает пустой блок, который всегда действителен. Algorand ′ 2 предусматривает, что число честных членов комитета всегда больше, чем или равен фиксированному порогу tH (который гарантирует, что с подавляющей вероятностью по крайней мере 2/3 членов комитета честные). Кроме того, Algorand ′ 2 позволяет византийскому соглашению быть достигнуто за произвольное количество шагов (но потенциально за более короткое время, чем Algorand ′ 1). Легко получить множество вариантов этих основных вариантов осуществления. В частности, это легко, учитывая Algorand ′ 2, чтобы изменить Algorand ′ 1, чтобы дать возможность достичь византийского соглашения в произвольном порядке. количество шагов. Оба варианта осуществления имеют следующее общее ядро, обозначения, понятия и параметры. 4.1 Общее ядро Цели В идеале для каждого раунда r Algorand должен удовлетворять следующим свойствам: 1. Совершенная корректность. Все честные пользователи согласны с тем же блоком Бр. 2. Полнота 1. С вероятностью 1 набор выплат Br, PAY r, является максимальным10. 10Поскольку наборы выплат должны содержать действительные платежи, а честные пользователи должны совершать только действительные платежи, максимальный PAY r содержит «невыплаченные на данный момент» платежи всех честных пользователей.Конечно, гарантировать абсолютную правильность само по себе тривиально: каждый всегда выбирает официальную версию. payset PAY r должен быть пустым. Но в этом случае система имела бы полноту 0. К сожалению, гарантировать как абсолютную правильность, так и полноту 1 непросто при наличии вредоносных пользователи. Таким образом, Algorand ставит более реалистичную цель. Неформально, пусть h обозначает процент честных пользователей, h > 2/3, цель Algorand — Гарантируя с подавляющей вероятностью полную правильность и полноту, близкую к h. Отдавать предпочтение правильности перед полнотой кажется разумным выбором: платежи не обрабатываются в один раунд может быть обработан в следующем, но следует по возможности избегать вилок. Под руководством Византийского соглашения Совершенную правильность можно гарантировать следующим образом. В начале раунда r каждый пользователь i создает свой собственный блок-кандидат Br i, а затем все пользователи доходят до Byzantine соглашение по одному кандидатскому блоку. Согласно нашему введению, используемый протокол BA требует честное большинство в 2/3 и возможность замены игрока. Каждый его шаг может быть выполнен маленьким и случайно выбранный набор проверяющих, которые не имеют общих внутренних переменных. К сожалению, этот подход не имеет гарантий полноты. Это так, потому что кандидат блоки честных пользователей, скорее всего, кардинально отличаются друг от друга. Таким образом, в конечном итоге согласованный блок всегда может быть блоком с немаксимальным набором выплат. На самом деле, это всегда может быть пустой блок B\(\varepsilon\), то есть блок, набор выплат которого пуст. ну, это будет пустое значение по умолчанию. Algorand ′ позволяет избежать этой проблемы полноты следующим образом. Сначала выбирается лидер раунда r, \(\ell\)r. Затем \(\ell\)r распространяет свой собственный блок кандидатов, Br \(\ell\)р. Наконец, пользователи достигают соглашения по блокировке они фактически получают от \(\ell\)r. Потому что всякий раз, когда \(\ell\)r честен, Совершенная правильность и полнота 1 оба верны, Algorand ′ гарантирует, что \(\ell\)r честен с вероятностью, близкой к h. (Когда лидер вредоносный, нас не волнует, является ли согласованный блок блоком с пустой платёжной системой. В конце концов, злонамеренный лидер \(\ell\)r всегда может злонамеренно выбрать Br \(\ell\)r быть пустым блоком, а потом честно распространять его, тем самым заставляя честных пользователей согласиться на пустой блок.) Выбор лидера В Algorand r-й блок имеет вид Br = (r, PAY r, Qr, H(Br-1). Как уже упоминалось во введении, величина Qr−1 тщательно строится так, чтобы быть по сути, нашим очень могущественным противником невозможно манипулировать. (Далее в этом разделе мы рассмотрим дайте некоторое представление о том, почему это так.) В начале раунда r все пользователи знают blockchain на данный момент, B0, . . . , Br−1, из которого они выводят набор пользователей каждого предыдущего раунда: есть, ПК1, . . . , ПКр−1. Потенциальным лидером раунда r является пользователь i такой, что .Х СИГи г, 1, Qr−1 \(\leq\)р. Давайте объясним. Обратите внимание, что, поскольку величина Qr−1 является частью блока Br−1, а лежащее в ее основе схема подписи удовлетворяет свойству уникальности SIGi г, 1, Qr−1 однозначно является двоичной строкой связанный с i и r. Таким образом, поскольку H является случайным oracle, H СИГи г, 1, Qr−1 это случайный 256-битный длинная строка, однозначно связанная с i и r. Символ «.» перед Х СИГи г, 1, Qr−1 это десятичная (в нашем случае двоичная) точка, так что ri \(\triangleq\).H СИГи г, 1, Qr−1 представляет собой двоичное разложение случайное 256-битное число от 0 до 1, однозначно связанное с i и r. Таким образом, вероятность того, что ri меньше или равно p, по существу, p. (Наш механизм отбора потенциальных лидеров был вдохновлен схемой микроплатежей Микали и Ривеста [28].) Вероятность p выбирается так, чтобы с подавляющей (т. е. 1 −F) вероятностью хотя бы один потенциальный проверяющий честен. (Если это действительно так, то p выбирается как наименьшая такая вероятность.)Обратите внимание: поскольку i — единственный, кто способен вычислить свои собственные подписи, он один может определить, является ли он потенциальным проверяющим в раунде 1. Однако, раскрыв свои собственные учетные данные, \(\sigma\)р я \(\triangleq\)SIGi г, 1, Qr−1 , я могу доказать любому, что являюсь потенциальным проверяющим раунда r. Лидером \(\ell\)r считается потенциальный лидер, чьи учетные данные hash меньше, чем у hashed учетные данные всех остальных потенциальных лидеров j: то есть H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s дж). Обратите внимание: поскольку злонамеренный \(\ell\)r может не раскрыть свои полномочия, правильный лидер раунда r может никогда не будет известно, и что, если не считать невероятных связей, \(\ell\)r действительно является единственным лидером раунда r. Давайте, наконец, коснемся последней, но важной детали: пользователь i может быть потенциальным лидером (и, следовательно, лидер) раунда r только в том случае, если он принадлежал системе не менее k раундов. Это гарантирует невозможность манипулирования Qr и всеми будущими Q-величинами. Фактически один из потенциальных лидеров фактически определит Qr. Выбор проверяющего Каждый шаг s > 1 раунда r выполняется небольшим набором проверяющих SV r,s. Опять же, каждый верификатор i \(\in\)SV r,s выбирается случайным образом среди пользователей, уже находящихся в системе k раундов. перед r и снова через специальную величину Qr−1. В частности, i \(\in\)PKr−k является верификатором в SV r,s, если .Х СИГи г, с, Qr−1 \(\leq\)p'. Опять же, только я знаю, принадлежит ли он к SV r,s, но если это так, то он мог бы доказать это, предъявляя свои полномочия \(\sigma\)r,s я \(\triangleq\)H(SIGi г, с, Qr−1 ). Верификатор i \(\in\)SV r,s отправляет сообщение mr,s я, в шаг s раунда r, и это сообщение включает его учетные данные \(\sigma\)r,s i , чтобы дать возможность верификаторам Следующий шаг, чтобы признать, что мистер, с я является законным сообщением шага. Вероятность p' выбирается так, чтобы гарантировать, что в SV r,s, пусть #good будет числом честные пользователи и #bad количество злонамеренных пользователей, с подавляющей вероятностью следующее выполняются два условия. Для варианта реализации Algorand ′ 1: (1) #хорошо > 2 \(\cdot\) #плохо и (2) #good + 4 \(\cdot\) #bad < 2n, где n — ожидаемая мощность SV r,s. Для варианта реализации Algorand ′ 2: (1) #good > tH и (2) #good + 2#bad < 2tH, где tH — заданный порог. Из этих условий следует, что с достаточно большой вероятностью: (а) на последнем шаге БА протоколу, будет как минимум заданное количество честных игроков, которые подпишут цифровой подписью новый блок Br, (б) только один блок за раунд может иметь необходимое количество подписей, и (в) используемый БА протокол имеет (на каждом этапе) необходимое честное большинство в 2/3. Уточнение генерации блоков Если лидер раунда \(\ell\)r честен, то соответствующий блок имеет форму Бр = r, PAY r, SIG\(\ell\)r Qr−1 , Ч Бр-1 , где набор выплат PAY r является максимальным. (напомним, что все наборы выплат по определению действительны коллективно.) В противном случае (т. е. если \(\ell\)r является вредоносным), Br имеет одну из следующих двух возможных форм: Бр = р, ПЛАТИТЕ р, СИГи Qr−1 , Ч Бр-1 и Бр = Бр \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H Бр-1 .В первой форме PAY r — это (не обязательно максимальный) набор выплат, и это может быть PAY r = \(\emptyset\); и я потенциальный лидер раунда r. (Однако я не могу быть лидером \(\ell\)r. Это действительно может случиться, если \(\ell\)r хранит в тайне свои полномочия и не раскрывает себя.) Вторая форма возникает, когда при выполнении раунда-r протокола БА все честные игроки выведите значение по умолчанию, то есть пустой блок Br \(\varepsilon\) в нашем приложении. (По определению, возможный выходные данные протокола BA включают значение по умолчанию, обычно обозначаемое \(\bot\). См. раздел 3.2.) Обратите внимание: хотя в обоих случаях платежные наборы пусты, Br = r, \(\emptyset\), СИГи Qr−1 , Ч Бр-1 и Бр \(\varepsilon\) являются синтаксически разными блоками и возникают в двух разных ситуациях: соответственно, «все в исполнении протокола БА прошло достаточно гладко», а «что-то пошло не так в протокол BA, и было выведено значение по умолчанию». Давайте теперь интуитивно опишем, как происходит генерация блока Br в раунде r Algorand ′. На первом этапе каждый подходящий игрок, то есть каждый игрок i \(\in\)PKr−k, проверяет, является ли он потенциальным игроком. лидер. Если это так, то меня спрашивают, используя все платежи, которые он видел до сих пор, и текущий blockchain, B0, . . . , Br−1, чтобы тайно подготовить максимальный набор выплат, PAY r я и тайно собирает свой блок кандидатов, Br = р, ПЛАТИТЕ р я, СИГи Qr−1 , Ч Бр-1 . То есть он не только включить в руб. i , в качестве второго компонента только что подготовленный набор выплат, но также, в качестве третьего компонента, его собственная подпись Qr−1, третьего компонента последнего блока, Br−1. Наконец, он пропагандирует свою сообщение round-r-step-1, мистер, 1 i , который включает в себя (а) его блок-кандидат Br я , (б) его собственная подпись своего блока-кандидата (т. е. его подпись hash Br i , и (c) его собственные полномочия \(\sigma\)r,1 я, доказывая что он действительно является потенциальным проверяющим раунда r. (Обратите внимание, что до тех пор, пока честный i не выдаст свое сообщение mr,1 i, Противник понятия не имеет, что я потенциальный проверяющий. Если он захочет развратить честных потенциальных лидеров, Противник также может коррумпированные случайные честные игроки. Однако, как только он увидит мистера,1 i , поскольку он содержит учетные данные i, Противник знает и может испортить меня, но не может предотвратить мистера,1 i , который распространяется вирусно, из охват всех пользователей системы.) На втором этапе каждый выбранный проверяющий j \(\in\)SV r,2 пытается определить лидера раунда. В частности, j принимает учетные данные шага 1, \(\sigma\)r,1 я1 , . . . , \(\sigma\)r,1 in , содержащийся в соответствующем сообщении шага 1 mr,1 я он получил; hashпроверяет все из них, то есть вычисляет H  \(\sigma\)р,1 я1  , . . . , Ч  \(\sigma\)р,1 в  ; находит удостоверение, \(\sigma\)р,1 \(\ell\)j , hash которого является лексикографически минимальным; и считает \(\ell\)r j стать лидером раунда r. Напомним, что каждая рассматриваемая учетная запись представляет собой цифровую подпись Qr-1, что SIGi г, 1, Qr−1 есть однозначно определяется i и Qr−1, что H является случайным oracle и, таким образом, каждый H(SIGi г, 1, Qr−1 — это случайная 256-битная длинная строка, уникальная для каждого потенциального лидера i раунда r. Отсюда мы можем заключить, что если бы 256-битная строка Qr−1 сама была случайным и независимым выбраны, чем будут hashed полномочия всех потенциальных лидеров раунда r. Фактически, все потенциальные лидеры четко определены, как и их полномочия (будь то фактически вычисленные или нет). Далее, множество потенциальных лидеров раунда r представляет собой случайное подмножество пользователей раунда r −k, и честный потенциальный лидер i всегда правильно формирует и распространяет свое послание, мистер я, который содержит мои учетные данные. Таким образом, поскольку процент честных пользователей равен h, независимо от злонамеренные потенциальные лидеры могут сделать (например, раскрыть или скрыть свои полномочия), как минимум hashed удостоверение потенциального лидера принадлежит честному пользователю, которого все обязательно идентифицируют. быть лидером \(\ell\)r раунда r. Соответственно, если бы 256-битная строка Qr-1 сама была случайной и независимо выбираются с вероятностью ровно h (а) лидер \(\ell\)r честен и (б) \(\ell\)j = \(\ell\)r для всех честные проверяющие второго этапа j. В действительности, да, учетные данные hashed выбираются случайным образом, но зависят от Qr-1, которыйвыбраны не случайно и независимо. Однако в нашем анализе мы докажем, что Qr−1 достаточно не поддается манипулированию, чтобы гарантировать, что лидер раунда честен с вероятностью h′ достаточно близко к h: а именно h′ > h2(1 + h −h2). Например, если h = 80%, то h' > 0,7424. Определив лидера раунда (что они правильно делают, если ведущий честен), задача верификаторов шага 2 — начать выполнение БА, используя в качестве начальных значений то, что они считают быть блоком лидера. На самом деле, чтобы минимизировать объем необходимого общения, верификатор j \(\in\)SV r,2 не использует в качестве входного значения v′ j к византийскому протоколу, блок Bj, который он фактически получил от \(\ell\)j (пользователь j считает себя лидером), но лидер, но hash этого блока, то есть v' j = H(Bi). Таким образом, по завершении протокола БА верификаторы последнего шага не вычисляют желаемый блок round-r Br, а вычисляют (аутентифицируют и распространять) H(Br). Соответственно, поскольку H(Br) имеет цифровую подпись достаточного числа верификаторов последнем этапе протокола BA, пользователи системы поймут, что H(Br) — это hash нового блок. Однако они также должны получить (или дождаться, поскольку выполнение достаточно асинхронно) заблокировать сам Br, что протокол гарантирует, что он действительно доступен, независимо от того, что делает Противник может сделать. Асинхронность и время Algorand ′ 1 и Algorand ' 2 имеют значительную степень асинхронности. Это происходит потому, что Противник имеет большую свободу в планировании доставки сообщений. распространяется. Кроме того, независимо от того, ограничено ли общее количество шагов в раунде или нет, существует вклад дисперсии зависит от количества фактически предпринятых шагов. Как только он узнает сертификаты B0, . . . , Br−1, пользователь i вычисляет Qr−1 и начинает работать в раунде r, проверяя, является ли он потенциальным лидером или проверяющим на некоторых шагах s раунда r. Предполагая, что я должен действовать на шагах s, в свете обсуждаемой асинхронности я полагаюсь на различные стратегии, позволяющие гарантировать, что он располагает достаточной информацией, прежде чем действовать. Например, он может дождаться получения хотя бы заданного количества сообщений от проверяющих предыдущий шаг, или подождите достаточно времени, чтобы убедиться, что он получил сообщения достаточно многие проверяющие предыдущего шага. Начальное значение Qr и параметр обратного анализа k Напомним, что в идеале величины Qr должны случайны и независимы, хотя для того, чтобы ими было достаточно не поддаваться манипулированию со стороны Противник. На первый взгляд, мы могли бы выбрать Qr−1 таким, чтобы он совпадал с H ПЛАТИТЬ r−1 и, таким образом, избежать задайте Qr−1 явно в Br−1. Однако элементарный анализ показывает, что злонамеренные пользователи могут воспользоваться этим механизмом отбора.11 Некоторые дополнительные усилия показывают, что мириады других 11Мы находимся в начале раунда r−1. Таким образом, Qr−2 = PAY r−2 общеизвестно, а Противник — конфиденциально. знает, кто является потенциальными лидерами, которых он контролирует. Предположим, что Злоумышленник контролирует 10% пользователей и что с очень высокой вероятностью злонамеренный пользователь w является потенциальным лидером раунда r−1. То есть предположим, что Ч СИГв г −2, 1, Qr−2 настолько мал, что крайне маловероятно, что честный потенциальный лидер действительно окажется лидер раунда r−1. (Напомним, что, поскольку мы выбираем потенциальных лидеров с помощью секретного механизма криптографической сортировки, Противник не знает, кто такие честные потенциальные лидеры.) Противник, следовательно, находится в завидном положении. позицию выбора набора выплат PAY ′, который он хочет, и сделать его официальным набором выплат в раунде r −1. Однако, он может сделать больше. Он также может гарантировать, что с высокой вероятностью () один из его злонамеренных пользователей станет лидером. также раунда r, чтобы он мог свободно выбирать, какой будет PAY r. (И так далее. По крайней мере, надолго, т.е. до тех пор, пока эти события с высокой вероятностью действительно происходят.) Чтобы гарантировать (), Противник действует следующим образом. Пусть ПЛАТИТ' — набор выплат, который противник предпочитает для раунда r −1. Затем он вычисляет H(PAY ′) и проверяет, существует ли для некоторых уже злонамеренного игрока z, SIGz(r, 1, H(PAY ′)) особенно мал, то есть настолько мал, что с очень высоким вероятность z будет лидером раунда r. Если это так, то он дает команду w выбрать блок-кандидат на рольальтернативы, основанные на традиционном количестве блоков, легко могут быть использованы злоумышленником для обеспечения что злонамеренные лидеры встречаются очень часто. Вместо этого мы конкретно и индуктивно определяем наш бренд. новую величину Qr, чтобы иметь возможность доказать, что Противник не может манипулировать ею. А именно, Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), если Br не пустой блок, и Qr \(\triangleq\)H(Qr−1, r) в противном случае. Интуиция того, почему эта конструкция Qr работает, заключается в следующем. Предположим на мгновение, что Qr-1 действительно выбирается случайно и независимо. Тогда Qr будет таким же? Когда \(\ell\)r честен, ответ (грубо говоря) да. Это так, потому что H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→ {0, 1}256 является случайной функцией. Однако когда \(\ell\)r является злонамеренным, Qr больше не определяется однозначно из Qr-1. и \(\ell\)р. Существует как минимум два отдельных значения для Qr. Один продолжает оставаться Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), а другой — H(Qr−1, r). Давайте сначала покажем, что, хотя второй выбор несколько произволен, второй выбор абсолютно обязателен. Причина этого в том, что злонамеренный \(\ell\)r всегда может вызвать совершенно разные блоки-кандидаты, которые будут получены честными проверяющими на втором этапе.12 Однажды это так, легко гарантировать, что блокировка в конечном итоге будет согласована через протокол BA раунд r будет использоваться по умолчанию и, следовательно, не будет содержать ничьей цифровой подписи Qr-1. Но система должна продолжать свое существование, а для этого ей нужен лидер раунда r. Если этот лидер автоматически и открыто выбран, то Противник банально развратит его. Если он выбран предыдущим Qr−1 посредством того же процесса, тогда \(\ell\)r снова станет лидером в раунде r+1. Мы специально предлагаем использовать тот же секретный механизм криптографической сортировки, но примененный к новой величине Q: а именно, H(Qr−1, r). Поскольку эта величина является выходом H, гарантируется, что результат будет случайным, и включив r в качестве второго входа H, в то время как все другие варианты использования H имеют один или более 3 входов, «гарантирует», что такой Qr будет выбран независимо. Опять же, наш конкретный выбор альтернативы Qr не имеет значения, важно то, что у \(\ell\)r есть два варианта для Qr, и, таким образом, он может удвоить свои шансы чтобы следующим лидером стал еще один злонамеренный пользователь. Вариантов Qr может быть даже больше для Противника, который управляет злонамеренным \(\ell\)r. Например, пусть x, y и z — три потенциальных злонамеренных лидера раунда r такие, что Ч \(\sigma\)р,1 х  < Ч \(\sigma\)р,1 й  < Ч \(\sigma\)р,1 я  и Х  \(\sigma\)р,1 я  особенно мал. То есть настолько мал, что есть большая вероятность, что H  \(\sigma\)р,1 я  есть меньший из __PH_0004__ed удостоверений каждого честного потенциального лидера. Затем, попросив x скрыть свое Если у вас есть полномочия, Противник имеет хорошие шансы на то, что y станет лидером раунда r −1. Это подразумевает, что у него есть другой вариант для Qr: а именно SIGy Qr−1 . Аналогично, Противник может попросить x и y скрыть свои полномочия, чтобы z стал лидером раунда r −1. и получаем еще один вариант для Qr: а именно SIGz Qr−1 . Однако, конечно, каждый из этих и других вариантов имеет ненулевой шанс потерпеть неудачу, поскольку Злоумышленник не может предсказать hash цифровых подписей честных потенциальных пользователей. Бр-1 я = (r −1, PAY ′, H(Br−2). В противном случае у него есть еще два злоумышленника x и y, которые продолжат генерировать новый платеж. \(\wp\)', от одного к другому, пока для какого-нибудь злонамеренного пользователя z (или даже для какого-то фиксированного пользователя z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) не станет особенно маленький. Этот эксперимент прекратится довольно быстро. И когда это произойдет, Противник попросит нас предложить блок-кандидат Br−1 я = (r−1, PAY ′ \(\cup\){\(\wp\)}, H(Br−2). 12Например, для простоты (но экстремальности): «когда время второго шага подходит к концу», \(\ell\)r мог бы напрямую отправьте по электронной почте разные блоки-кандидаты Bi каждому пользователю i. Таким образом, кем бы ни были верификаторы второго шага, они получат совершенно другие блоки.Тщательный анализ, подобный цепочке Маркова, показывает, что независимо от того, какие варианты выберет Противник сделать в раунде r-1, пока он не может ввести в систему новых пользователей, он не может уменьшить вероятность того, что честный пользователь окажется лидером раунда r + 40, намного ниже h. Это причина для чего мы требуем, чтобы потенциальными лидерами раунда r были пользователи, уже существующие в раунде r −k. Это способ гарантировать, что в раунде r −k Противник не сможет существенно изменить вероятность того, что честный пользователь станет лидером раунда r. Фактически, независимо от того, каких пользователей он может добавить в системе в раундах от r −k до r, они не имеют права стать потенциальными лидерами (и, тем более, лидер) раунда r. Таким образом, параметр обратного просмотра k в конечном итоге является параметром безопасности. (Хотя, как мы увидим в разделе 7, он также может быть своего рода «параметром удобства».) Эфемерные ключи Хотя выполнение нашего протокола не может генерировать форк, кроме как с помощью с незначительной вероятностью, злоумышленник может сгенерировать форк в r-м блоке после законного блок r был сгенерирован. Грубо говоря, как только Br был сгенерирован, Противник узнал, кто является проверяющим каждого шага. круглых r. Таким образом, он мог бы испортить их всех и обязать сертифицировать новый блок. ж Бр. Поскольку этот фальшивый блок может распространяться только после легитимного, пользователи, которые были обративший внимание не будет обманут.13 Тем не менее, f Br было бы синтаксически правильно, и мы хочу предотвратить производство. Мы делаем это посредством нового правила. По сути, члены проверяющего множества SV r,s шага s раунда r использовать эфемерные открытые ключи pkr,s я подписывать свои сообщения цифровой подписью. Эти ключи предназначены только для одноразового использования, а соответствующие им секретные ключи skr,s я уничтожаются после использования. Таким образом, если проверяющий позже испорченный, Противник не может заставить его подписать что-либо еще, что он не подписывал изначально. Естественно, мы должны гарантировать, что Противник не сможет вычислить новый ключ g пр,с я и убедить честного пользователя, что это правильный эфемерный ключ проверяющего устройства i \(\in\)SV r,s для использования на шаге s. 4.2 Общая сводка обозначений, понятий и параметров Обозначения • r \(\geq\)0: текущий номер раунда. • s \(\geq\)1: текущий номер шага в раунде r. • Br: блок, созданный в раунде r. • PKr: набор открытых ключей к концу раунда r−1 и в начале раунда r. • Sr: состояние системы к концу раунда r−1 и к началу раунда r.14. • PAY r: набор выплат, содержащийся в Br. • \(\ell\)r: лидер раунда r. \(\ell\)r выбирает набор выплат PAY r в раунде r (и определяет следующий Qr). • Qr: начальное число раунда r, величина (т. е. двоичная строка), которая генерируется в конце раунда r. и используется для выбора верификаторов для раунда r + 1. Qr не зависит от наборов выплат в блоках и им нельзя манипулировать с помощью \(\ell\)r. 13Подумайте о том, чтобы подкупить ведущего новостей крупной телесети, а сегодня создать и транслировать кинохронику. показывая, что госсекретарь Клинтон победила на последних президентских выборах. Большинство из нас признало бы это мистификацией. Но кого-то, выходящего из комы, можно обмануть. 14В несинхронной системе понятия «конец раунда r −1» и «начало раунда r» необходимо тщательно определить. Математически PKr и Sr вычисляются из исходного состояния S0 и блоков В1, . . . , Бр−1.• SV r,s: набор верификаторов, выбранных для шага s раунда r. • SV r: набор верификаторов, выбранных для раунда r, SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s и HSV r,s: соответственно набор злонамеренных проверяющих и набор честных проверяющих. в СВ р,с. MSV r,s \(\cup\)HSV r,s = SV r,s и MSV r,s ∩HSV r,s = \(\emptyset\). • n1 \(\in\)Z+ и n \(\in\)Z+: соответственно ожидаемое количество потенциальных лидеров в каждом СВ r,1, и ожидаемое количество проверяющих в каждом SV r,s для s > 1. Обратите внимание, что n1 << n, так как нам нужен хотя бы один честный честный член в SV r,1, но хотя бы большинство честных членов в каждом СВ r,s при s > 1. • h \(\in\)(0, 1): константа больше 2/3. h — коэффициент честности в системе. То есть доля честных пользователей или честных денег, в зависимости от использованного предположения, в каждом PKr составляет по крайней мере ч. • H: криптографическая функция hash, смоделированная как случайная oracle. • \(\bot\): специальная строка той же длины, что и выходные данные H. • F \(\in\)(0, 1): параметр, определяющий допустимую вероятность ошибки. Вероятность \(\leq\)F равна считается «незначительной», а вероятность \(\geq\)1 −F считается «подавляющей». • ph \(\in\)(0, 1): вероятность того, что лидер раунда r, \(\ell\)r, честен. В идеале ph = h. С существования Противника, значение ph будет определено в ходе анализа. • k \(\in\)Z+: параметр просмотра назад. То есть раунд r −k — это место, где проверяющими для раунда r являются выбран из — а именно SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): на первом этапе раунда r пользователь в раунде r−k выбирается находящимся в SV r,1 с вероятность p1 \(\triangleq\) n1 |П Кр−к|. • p \(\in\)(0, 1): для каждого шага s > 1 раунда r пользователь в раунде r−k выбирается для пребывания в SV r,s с вероятность р \(\triangleq\) н |П Кр−к|. • CERT r: сертификат для Br. Это набор tH сигнатур H(Br) от собственных проверяющих в круглый р. • Br \(\triangleq\)(Br, CERT r) — проверенный блок. Пользователь i знает Br, если он владеет (и успешно верифицирует) обе части проверенного блока. Обратите внимание, что CERT r, видимый разными пользователями, может быть разным. • τ р i : (местное) время, в которое пользователь i знает Br. В протоколе Algorand каждый пользователь имеет свой собственные часы. Часы разных пользователей не обязательно должны быть синхронизированы, но должны иметь одинаковую скорость. Только в целях анализа мы рассматриваем эталонные часы и измеряем результативность игроков. связанные с ним времена. • \(\alpha\)r,s я и \(\beta\)r,s i : соответственно (локальное) время, когда пользователь i начинает и заканчивает выполнение шагов s круглый р. • Λ и \(\lambda\): по сути, верхние границы времени, необходимого для выполнения Шага 1 и Шага 1, соответственно. время, необходимое для любого другого шага протокола Algorand. Параметр Λ ограничивает время распространения одного блока размером 1 МБ. (В наших обозначениях Λ = \(\lambda\) \(\rho\),1MB. Вспоминая наши обозначения, мы установили \(\rho\) = 1 для простоты и что блоки если длина выбрана не более 1 МБ, то Λ = \(\lambda\)1,1,1MB.) 15Строго говоря, «r−k» должно быть «max{0, r−k}».Параметр \(\lambda\) ограничивает время распространения одного небольшого сообщения на одного верификатора за шаг s > 1. (При использовании, как в Bitcoin, подписей в форме эллиптической кривой с ключами длиной 32 байта, длина проверяющего сообщения составляет 200 байт. Таким образом, в наших обозначениях \(\lambda\) = \(\lambda\)n,\(\rho\),200B.) Предположим, что Λ = O(\(\lambda\)). Понятия • Выбор проверяющего. Для каждого раунда r и шага s > 1 SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p}. Каждый пользователь i \(\in\)PKr-k конфиденциально вычисляет свою подпись, используя свой долгосрочный ключ, и решает, стоит ли i \(\in\)SV r,s или нет. Если i \(\in\)SV r,s, то SIGi(r, s, Qr−1) является (r, s)-удостоверением i, компактно обозначаемым по \(\sigma\)r,s я. Для первого шага раунда r SV r,1 и \(\sigma\)r,1 я определяются аналогично, с заменой p на p1. проверяющие в SV r,1 являются потенциальными лидерами. • Выбор лидера. Пользователь i \(\in\)SV r,1 является лидером раунда r, обозначается \(\ell\)r, если H(\(\sigma\)r,1 i ) \(\leq\)H(\(\sigma\)r,1 j) для всех потенциальных лидеры j \(\in\)SV r,1. Всякий раз, когда сравниваются hash учетных данных двух игроков, в маловероятном случае В случае возникновения связей протокол всегда разрывает связи лексикографически в соответствии с (долгосрочными публичными ключи) потенциальных лидеров. По определению, значение hash учетных данных игрока \(\ell\)r также является наименьшим среди всех пользователей в ПКр−к. Обратите внимание, что потенциальный лидер не может в частном порядке решить, является он лидером или нет. не видя полномочий других потенциальных лидеров. Поскольку значения hash случайны и однородны, когда SV r,1 непусто, \(\ell\)r всегда существует и честный с вероятностью не менее h. Параметр n1 достаточно велик, чтобы гарантировать, что каждый SV r,1 непусто с подавляющей вероятностью. • Блочная структура. Непустой блок имеет вид Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)), а пустой блок имеет вид Br \(\varepsilon\) = (r, \(\emptyset\), Qr−1, H(Br−1)). Обратите внимание, что непустой блок все еще может содержать пустой набор платежей PAY r, если в в этом раунде или если лидер злонамерен. Однако непустой блок подразумевает, что тождество \(\ell\)r, его полномочия \(\sigma\)r,1 \(\ell\)r и SIG\(\ell\)r(Qr-1) были своевременно обнаружены. Протокол гарантирует что если лидер честен, то блок с подавляющей вероятностью окажется непустым. • Семена Qr. Если Br непусто, то Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), иначе Qr \(\triangleq\) H(Qr−1, r). Параметры • Отношения между различными параметрами. — Проверяющие и потенциальные лидеры раунда r выбираются из пользователей PKr−k, где k выбрано таким образом, чтобы противник не мог предсказать Qr−1 обратно в раунде r −k −1. с вероятностью лучше F: в противном случае он сможет внедрить злонамеренных пользователей для раунда r −k, все из которых будут потенциальными лидерами/проверяющими в раунде r, добившимися успеха в

наличие злонамеренного лидера или злонамеренного большинства в СВ для некоторых шагов, желаемых его. — Для шага 1 каждого раунда r n1 выбирается так, чтобы с подавляющей вероятностью SV r,1 ̸= \(\emptyset\). • Пример выбора важных параметров. — Выходные данные H имеют длину 256 бит. — h = 80%, n1 = 35. — Λ = 1 минута и \(\lambda\) = 10 секунд. • Инициализация протокола. Протокол начинается в момент 0 с r = 0. Поскольку не существует «B-1» или «CERT-1», синтаксически B-1 является общедоступным параметром, третий компонент которого определяет Q-1, и все пользователи знать B-1 в момент времени 0.

สองรูปลักษณ์ของ Algorand

ตามที่กล่าวไว้แล้ว ในระดับที่สูงมาก รอบที่ Algorand จะดำเนินไปอย่างเหมาะสมดังนี้ ขั้นแรกให้สุ่ม ผู้ใช้ที่เลือกซึ่งเป็นผู้นำเสนอและหมุนเวียนบล็อกใหม่ (กระบวนการนี้รวมถึงในขั้นต้นด้วย เลือกผู้นำที่มีศักยภาพสักสองสามคน จากนั้นตรวจสอบให้แน่ใจว่าอย่างน้อยก็มีส่วนที่ดีของเวลา ก ผู้นำร่วมคนเดียวปรากฏตัวออกมา) ประการที่สอง คณะกรรมการผู้ใช้ที่ได้รับการสุ่มเลือกจะถูกเลือก และ บรรลุข้อตกลงไบแซนไทน์ในบล็อกที่ผู้นำเสนอ (กระบวนการนี้รวมถึงสิ่งนั้นด้วย แต่ละขั้นตอนของโปรโตคอล BA ดำเนินการโดยคณะกรรมการที่ได้รับการคัดเลือกแยกต่างหาก) บล็อกที่ตกลงกันไว้ จากนั้นจะมีการลงนามแบบดิจิทัลโดยเกณฑ์ที่กำหนด (TH) ของสมาชิกคณะกรรมการ ลายเซ็นดิจิทัลเหล่านี้ มีการหมุนเวียนเพื่อให้ทุกคนมั่นใจได้ว่าเป็นบล็อกใหม่ (ซึ่งรวมถึงการหมุนเวียนของ ข้อมูลรับรองของผู้ลงนาม และรับรองความถูกต้องเพียง hash ของบล็อกใหม่ เพื่อให้มั่นใจว่าทุกคน รับประกันว่าจะเรียนรู้บล็อก เมื่อ hash ถูกทำให้ชัดเจน) ในสองส่วนถัดไป เราจะนำเสนอสองรูปลักษณ์ของ Algorand, Algorand ′ 1 และ Algorand ′ 2, ที่ทำงานภายใต้สมมติฐานของผู้ใช้ส่วนใหญ่ที่ซื่อสัตย์ ในส่วนที่ 8 เราจะแสดงวิธีนำสิ่งเหล่านี้ไปใช้ รูปลักษณ์ที่จะทำงานภายใต้สมมติฐานที่ซื่อสัตย์โดยส่วนใหญ่ของเงิน Algorand ′ 1 เพียงจินตนาการว่า > 2/3 ของสมาชิกคณะกรรมการมีความซื่อสัตย์ นอกจากนี้ใน Algorand ′ 1 จำนวนขั้นตอนในการบรรลุข้อตกลงไบเซนไทน์ถูกจำกัดไว้ที่ระดับสูงพอสมควร จำนวน ดังนั้นข้อตกลงดังกล่าวจึงรับประกันว่าจะบรรลุข้อตกลงด้วยความน่าจะเป็นอย่างล้นหลามภายใน จำนวนขั้นตอนคงที่ (แต่อาจต้องใช้เวลานานกว่าขั้นตอนของ Algorand ′ 2). ใน กรณีระยะไกลที่ยังไม่บรรลุข้อตกลงในขั้นตอนสุดท้าย คณะกรรมการเห็นชอบด้วย บล็อกว่างซึ่งใช้ได้เสมอ Algorand ′ 2 คิดว่าจำนวนสมาชิกที่ซื่อสัตย์ในคณะกรรมการจะมีมากกว่าเสมอ หรือเท่ากับเกณฑ์คงที่ (ซึ่งรับประกันว่า อย่างน้อยก็มีความน่าจะเป็นอย่างท่วมท้น) 2/3 ของกรรมการมีความซื่อสัตย์) นอกจากนี้ Algorand ′ 2 อนุญาตให้มีข้อตกลงไบแซนไทน์ สามารถเข้าถึงได้ในจำนวนขั้นตอนที่กำหนดเอง (แต่อาจใช้เวลาน้อยกว่า Algorand ′ 1). เป็นเรื่องง่ายที่จะได้มาซึ่งแวเรียนต์จำนวนมากของรูปลักษณ์พื้นฐานเหล่านี้ โดยเฉพาะอย่างยิ่งมันเป็นเรื่องง่าย Algorand ′ 2 เพื่อแก้ไข Algorand ′ 1 เพื่อให้สามารถบรรลุข้อตกลงไบเซนไทน์ได้ตามอำเภอใจ จำนวนขั้นตอน ทั้งสองรูปลักษณ์มีแกนกลาง สัญลักษณ์ แนวคิด และพารามิเตอร์ร่วมกันดังต่อไปนี้ 4.1 แกนกลางทั่วไป วัตถุประสงค์ ตามหลักการแล้ว สำหรับแต่ละรอบ r Algorand จะเป็นไปตามคุณสมบัติต่อไปนี้: 1. ความถูกต้องสมบูรณ์แบบ ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br. 2. ความสมบูรณ์ 1. ด้วยความน่าจะเป็น 1 ชุดการจ่ายเงินของ Br, PAY r มีค่าสูงสุด 10 10เนื่องจากชุดการจ่ายเงินถูกกำหนดให้มีการชำระเงินที่ถูกต้อง และผู้ใช้ที่ซื่อสัตย์จะชำระเงินที่ถูกต้องเท่านั้น PAY r ประกอบด้วยการชำระเงิน "ค้างชำระในปัจจุบัน" ของผู้ใช้ที่ซื่อสัตย์ทั้งหมดแน่นอนว่าการรับประกันความถูกต้องสมบูรณ์แบบเพียงอย่างเดียวนั้นเป็นเรื่องเล็กน้อย ทุกคนมักจะเลือกสิ่งที่เป็นทางการเสมอ payset PAY r ให้ว่างเปล่า แต่ในกรณีนี้ระบบก็จะมีความสมบูรณ์เป็น 0 น่าเสียดาย การรับประกันทั้งความถูกต้องและครบถ้วนสมบูรณ์ 1 ไม่ใช่เรื่องง่ายเมื่อมีผู้ประสงค์ร้าย ผู้ใช้ Algorand จึงใช้วัตถุประสงค์ที่สมจริงยิ่งขึ้น อย่างไม่เป็นทางการ ให้ h แทนเปอร์เซ็นต์ ของผู้ใช้ที่มีความซื่อสัตย์ h > 2/3 เป้าหมายของ Algorand คือ รับประกันความน่าจะเป็นอย่างล้นหลาม ความถูกต้องสมบูรณ์แบบและครบถ้วนใกล้เคียงกับ h สิทธิพิเศษความถูกต้องเหนือความครบถ้วนดูเหมือนเป็นทางเลือกที่สมเหตุสมผล: การชำระเงินไม่ได้รับการประมวลผล รอบหนึ่งสามารถดำเนินการได้ในรอบถัดไป แต่ควรหลีกเลี่ยงทางแยกหากเป็นไปได้ ข้อตกลงนำไบแซนไทน์ สามารถรับประกันความถูกต้องสมบูรณ์แบบได้ดังนี้ ในช่วงเริ่มต้น ของรอบ r ผู้ใช้แต่ละคนที่ฉันสร้างบล็อกผู้สมัครของตัวเอง Br ฉัน จากนั้นผู้ใช้ทั้งหมดจะเข้าถึง Byzantine ข้อตกลงในหนึ่งกลุ่มผู้สมัคร ตามการแนะนำของเรา ต้องใช้ระเบียบวิธี BA ที่ใช้ ส่วนใหญ่ซื่อสัตย์ 2/3 และสามารถเปลี่ยนผู้เล่นได้ แต่ละขั้นตอนสามารถดำเนินการได้โดยกลุ่มเล็กๆ และ ชุดผู้ตรวจสอบที่เลือกแบบสุ่ม ซึ่งไม่มีตัวแปรภายในใด ๆ ร่วมกัน น่าเสียดายที่แนวทางนี้ไม่รับประกันความสมบูรณ์ ที่เป็นเช่นนี้เพราะว่าผู้สมัคร การบล็อกของผู้ใช้ที่ซื่อสัตย์มักจะมีความแตกต่างกันโดยสิ้นเชิง ดังนั้นในที่สุด การบล็อกที่ตกลงไว้อาจเป็นหนึ่งเดียวกับการจ่ายเงินที่ไม่สูงสุดเสมอ จริงๆแล้วมันอาจจะเป็นเสมอไป บล็อกว่าง B\(\varepsilon\) นั่นคือบล็อกที่ชุดการจ่ายเงินว่างเปล่า เป็นค่าเริ่มต้นอันว่างเปล่า Algorand ′ หลีกเลี่ยงปัญหาความสมบูรณ์นี้ดังนี้ ขั้นแรก มีการเลือกผู้นำสำหรับรอบ r, ër จากนั้น ër เผยแพร่บล็อกผู้สมัครของเขาเอง Br lr. ในที่สุดผู้ใช้ก็บรรลุข้อตกลงในบล็อก พวกเขาได้รับจาก ër จริงๆ เพราะทุกครั้งที่มีความซื่อสัตย์ความถูกต้องสมบูรณ์และความสมบูรณ์ 1 ถือทั้งคู่ Algorand ′ ทำให้แน่ใจได้ว่า ër ซื่อสัตย์กับความน่าจะเป็นที่ใกล้กับ h (เมื่อผู้นำเป็น เป็นอันตราย เราไม่สนใจว่าบล็อกที่ตกลงกันไว้นั้นเป็นบล็อคที่มีการจ่ายเงินว่างเปล่าหรือไม่ ท้ายที่สุดแล้ว ผู้นำที่ประสงค์ร้าย ër อาจเลือก Br ในทางที่มุ่งร้ายเสมอ ërเป็นบล็อกว่างแล้วบอกตามตรง เผยแพร่จึงบังคับให้ผู้ใช้ที่ซื่อสัตย์เห็นด้วยกับบล็อกว่าง) การคัดเลือกผู้นำ ใน Algorand บล็อก r อยู่ในรูปแบบ Br = (r, PAY r, Qr, H(Br−1) ดังที่ได้กล่าวไปแล้วในบทนำ ปริมาณ Qr−1 ได้รับการสร้างขึ้นอย่างระมัดระวังเพื่อที่จะเป็น โดยพื้นฐานแล้วไม่สามารถจัดการได้โดยศัตรูที่ทรงพลังมากของเรา (ต่อไปในส่วนนี้เราจะ ให้สัญชาตญาณว่าทำไมถึงเป็นเช่นนี้) เมื่อเริ่มต้นรอบ r ผู้ใช้ทุกคนจะทราบดี blockchain จนถึงตอนนี้ B0, . . . , Br−1 ซึ่งพวกเขาอนุมานชุดผู้ใช้ของทุกรอบก่อนหน้า: นั่น คือ PK1, . . . , PKr−1 ผู้นำที่มีศักยภาพของ Round r คือผู้ใช้ i เช่นนั้น .H ซิจี r, 1, Qr−1 \(\leq\)p ให้เราอธิบาย โปรดสังเกตว่า เนื่องจากปริมาณ Qr−1 เป็นส่วนหนึ่งของบล็อก Br−1 และปริมาณที่อยู่ข้างใต้ รูปแบบลายเซ็นเป็นไปตามคุณสมบัติที่เป็นเอกลักษณ์ SIGi r, 1, Qr−1 เป็นสตริงไบนารี่ที่ไม่ซ้ำใคร เกี่ยวข้องกับฉันและอาร์ ดังนั้น เนื่องจาก H เป็นการสุ่ม oracle, H ซิจี r, 1, Qr−1 เป็นการสุ่ม 256 บิต สตริงยาวที่เกี่ยวข้องกับ i และ r โดยเฉพาะ สัญลักษณ์ “” ด้านหน้าของ H ซิจี r, 1, Qr−1 คือ จุดทศนิยม (ในกรณีของเราคือไบนารี่) ดังนั้น ri \(\triangleq\).H ซิจี r, 1, Qr−1 คือการขยายตัวแบบไบนารีของ a ตัวเลขสุ่ม 256 บิตระหว่าง 0 ถึง 1 ที่เกี่ยวข้องกับ i และ r โดยเฉพาะ ดังนั้นความน่าจะเป็นนั้น ri น้อยกว่าหรือเท่ากับ p โดยพื้นฐานแล้วคือ p (กลไกการคัดเลือกผู้นำที่มีศักยภาพของเราคือ แรงบันดาลใจจากรูปแบบการชำระเงินแบบไมโครของ Micali และ Rivest [28].) ความน่าจะเป็น p ถูกเลือกเพื่อให้มีความน่าจะเป็นอย่างท่วมท้น (เช่น 1 −F) อย่างน้อยหนึ่งค่า ผู้ตรวจสอบที่มีศักยภาพมีความซื่อสัตย์ (หากข้อเท็จจริง เลือก p ให้เป็นความน่าจะเป็นที่น้อยที่สุด)โปรดทราบว่าเนื่องจากฉันเป็นเพียงคนเดียวที่สามารถคำนวณลายเซ็นของเขาเองได้ เขาคนเดียวจึงสามารถทำได้ ตรวจสอบว่าเขาเป็นผู้ตรวจสอบที่มีศักยภาพของรอบที่ 1 หรือไม่ อย่างไรก็ตาม ด้วยการเปิดเผยข้อมูลประจำตัวของเขาเอง ซิร ฉัน \(\triangleq\)SIGi r, 1, Qr−1 ฉันสามารถพิสูจน์ให้ทุกคนเห็นว่าเป็นผู้ตรวจสอบที่มีศักยภาพของรอบ r ผู้นำ ër ถูกกำหนดให้เป็นผู้นำที่มีศักยภาพซึ่งข้อมูลประจำตัว hashed น้อยกว่าที่ hashed หนังสือรับรองของผู้ที่มีศักยภาพเป็นผู้นำคนอื่นๆ ทั้งหมด j: นั่นคือ H(\(\sigma\)r,s มอร์ ) \(\leq\)H(\(\sigma\)r,s เจ) โปรดทราบว่า เนื่องจากผู้ประสงค์ร้าย ër อาจไม่เปิดเผยข้อมูลประจำตัวของเขา ผู้นำที่ถูกต้องของรอบ r อาจ ไม่เคยมีใครรู้ และนั่น ยกเว้นความสัมพันธ์ที่ไม่น่าจะเป็นไปได้ ër เป็นผู้นำเพียงคนเดียวของรอบ r ในที่สุดเราจะนำเสนอรายละเอียดสุดท้ายแต่สำคัญ: ผู้ใช้ที่ฉันสามารถเป็นผู้นำที่มีศักยภาพได้ (และด้วยเหตุนี้ ผู้นำ) ของรอบ r เฉพาะในกรณีที่เขาอยู่ในระบบอย่างน้อย k รอบ นี้รับประกัน การไม่สามารถจัดการได้ของ Qr และปริมาณ Q ในอนาคตทั้งหมด อันที่จริงแล้วหนึ่งในผู้นำที่มีศักยภาพ จะกำหนดคิวอาร์จริงๆ การเลือกผู้ตรวจสอบ แต่ละขั้นตอน s > 1 ของรอบ r จะถูกดำเนินการโดยชุดตรวจสอบขนาดเล็ก SV r,s อีกครั้ง แต่ละ veriifier i \(\in\)SV r,s จะถูกสุ่มเลือกจากผู้ใช้ที่อยู่ในระบบ k รอบ ก่อน r และอีกครั้งผ่านปริมาณพิเศษ Qr−1 โดยเฉพาะอย่างยิ่ง i \(\in\)PKr−k เป็นตัวยืนยันใน SV r,s ถ้า .H ซิจี r, s, Qr−1 \(\leq\)p′ . อีกครั้งหนึ่ง มีเพียงฉันเท่านั้นที่รู้ว่าเขาเป็นของ SV r,s หรือไม่ แต่ถ้าเป็นกรณีนี้ เขาพิสูจน์ได้โดย แสดงหนังสือรับรองของเขา \(\sigma\)r, s ฉัน \(\triangleq\)H(SIGi r, s, Qr−1 ). ผู้ตรวจสอบ i \(\in\)SV r,s ส่งข้อความ mr,s ฉัน ใน ขั้นตอนที่ s ของรอบ r และข้อความนี้รวมข้อมูลรับรอง \(\sigma\)r,s ของเขาด้วย ฉัน เพื่อที่จะเปิดใช้งานผู้ตรวจสอบ f ขั้นทำรังให้รู้ว่าคุณนาย ฉัน เป็นข้อความขั้นตอนที่ถูกต้องตามกฎหมาย ความน่าจะเป็น p′ ถูกเลือกเพื่อให้แน่ใจว่า ใน SV r,s ให้ #good เป็นจำนวนของ ผู้ใช้ที่ซื่อสัตย์และ #bad จำนวนผู้ใช้ที่เป็นอันตราย โดยมีความน่าจะเป็นอย่างล้นหลามดังต่อไปนี้ ถือสองเงื่อนไข สำหรับศูนย์รวม Algorand ′ 1: (1) #ดี > 2 \(\cdot\) #ไม่ดี และ (2) #ดี + 4 \(\cdot\) #ไม่ดี < 2n โดยที่ n คือจำนวนเชิงการนับที่คาดหวังของ SV r,s สำหรับศูนย์รวม Algorand ′ 2: (1) #ดี > ทและ (2) #ดี + 2#ไม่ดี < 2tH โดยที่ th เป็นเกณฑ์ที่กำหนด เงื่อนไขเหล่านี้บอกเป็นนัยว่า ด้วยความเป็นไปได้สูงพอสมควร (a) ในขั้นตอนสุดท้ายของ BA โปรโตคอล อย่างน้อยก็จะมีผู้เล่นที่ซื่อสัตย์จำนวนหนึ่งให้ลงนามแบบดิจิทัลในบล็อกใหม่ Br (b) เพียงหนึ่งบล็อกต่อรอบอาจมีจำนวนลายเซ็นที่จำเป็น และ (c) BA ที่ใช้ โปรโตคอลมี (ในแต่ละขั้นตอน) เสียงข้างมากที่ซื่อสัตย์ 2/3 ที่จำเป็น ชี้แจงการสร้างบล็อก ถ้าผู้นำ Round-r ër ซื่อสัตย์ บล็อกที่เกี่ยวข้อง อยู่ในรูปแบบ บร = r, จ่าย r, SIGLRr Qr−1 , เอช เบอร์−1 , โดยที่ payset PAY r มีค่าสูงสุด (โปรดจำไว้ว่าชุดการจ่ายเงินทั้งหมดมีผลใช้ได้โดยรวม) อย่างอื่น (เช่น ถ้า ër เป็นอันตราย) Br จะมีรูปแบบใดรูปแบบหนึ่งจากสองรูปแบบต่อไปนี้: บร = r, จ่าย r, SIgi คิวอาร์−1 , เอช เบอร์−1 และ บร = บร \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H เบอร์−1 .ในรูปแบบแรก PAY r คือชุดการจ่ายเงิน (สูงสุดที่ไม่จำเป็น) และอาจเป็น PAY r = \(\emptyset\); และฉันคือ ผู้นำที่มีศักยภาพของรอบ r (แต่ผมอาจไม่ใช่หัวหน้านะ เรื่องนี้อาจจะเกิดขึ้นได้ถ้าถ้า (หมอเก็บความลับข้อมูลประจำตัวของเขาไว้และไม่เปิดเผยตัวเอง) รูปแบบที่สองเกิดขึ้นเมื่อในการดำเนินการตามระเบียบการของ BA ผู้เล่นที่ซื่อสัตย์ทุกคน ส่งออกค่าเริ่มต้นซึ่งเป็นบล็อกว่าง Br \(\varepsilon\)ในใบสมัครของเรา (โดยนิยามแล้วเป็นไปได้. เอาต์พุตของโปรโตคอล BA จะมีค่าเริ่มต้น ซึ่งแสดงโดยทั่วไปด้วย \(\bot\) ดูหัวข้อ 3.2.) โปรดทราบว่าแม้ว่าชุดการจ่ายเงินจะว่างเปล่าในทั้งสองกรณี แต่ Br = r, \(\emptyset\), SIGI คิวอาร์−1 , เอช เบอร์−1 และบรา \(\varepsilon\) เป็นบล็อกที่แตกต่างกันทางวากยสัมพันธ์และเกิดขึ้นในสองสถานการณ์ที่แตกต่างกัน: ตามลำดับ “ทั้งหมด ดำเนินไปอย่างราบรื่นเพียงพอในการดำเนินการตามโปรโตคอล BA” และ “มีบางอย่างผิดพลาดใน โปรโตคอล BA และค่าเริ่มต้นคือเอาต์พุต” ตอนนี้ให้เราอธิบายอย่างสังหรณ์ใจว่าการสร้างบล็อก Br ดำเนินไปอย่างไรในรอบ r ของ Algorand ′ ในขั้นตอนแรก ผู้เล่นแต่ละคนที่มีสิทธิ์ นั่นคือ ผู้เล่นแต่ละคน i \(\in\)PKr−k ตรวจสอบว่าเขามีศักยภาพหรือไม่ ผู้นำ หากเป็นกรณีนี้ ฉันจะถูกขอให้ใช้การชำระเงินทั้งหมดที่เขาเห็นมาและ ปัจจุบัน blockchain, B0, . . . , Br−1 เพื่อแอบเตรียมชุดการชำระเงินสูงสุด PAY r ฉัน และอย่างลับๆ ประกอบบล็อกผู้สมัครของเขา Br = r จ่าย r ฉัน , SIGI คิวอาร์−1 , เอช เบอร์−1 . นั่นคือไม่เพียงแต่เขาเท่านั้น รวมไว้ใน Br i เป็นองค์ประกอบที่สองของชุดจ่ายเงินที่เพิ่งเตรียมไว้ แต่ยังเป็นองค์ประกอบที่สามด้วย ลายเซ็นของเขาเองของ Qr−1 ซึ่งเป็นองค์ประกอบที่สามของบล็อกสุดท้าย Br−1 ในที่สุดเขาก็เผยแพร่ของเขา ข้อความรอบ-r-ขั้นตอน-1 คุณ 1 ฉัน ซึ่งรวมถึง (ก) บล็อกผู้สมัครของเขา Br ฉัน , (b) ลายเซ็นที่ถูกต้องของเขา ของบล็อกผู้สมัครของเขา (เช่น ลายเซ็นของเขา hash ของ Br ฉัน และ (c) หนังสือรับรองของเขาเอง \(\sigma\)r,1 ฉัน, พิสูจน์ ว่าเขาเป็นผู้ตรวจสอบที่มีศักยภาพของรอบ r จริงๆ (โปรดทราบว่า จนกว่าฉันจะซื่อสัตย์ ฉันส่งข้อความถึงนาย 1) ฉัน ปฏิปักษ์ไม่มีเบาะแสว่าฉันเป็น ผู้ตรวจสอบศักยภาพ หากเขาต้องการจะทำให้ผู้นำที่ซื่อสัตย์เสื่อมเสีย ปฏิปักษ์ก็อาจทำได้เช่นกัน ผู้เล่นที่ซื่อสัตย์สุ่มทุจริต อย่างไรก็ตาม เมื่อเขาได้พบกับนาย 1 ฉัน เนื่องจากมีข้อมูลประจำตัวของฉัน ฝ่ายตรงข้ามรู้และอาจทุจริตได้ แต่ไม่สามารถป้องกันนายได้1 ฉัน ซึ่งมีการแพร่กระจายของไวรัสจาก เข้าถึงผู้ใช้งานทุกคนในระบบ) ในขั้นตอนที่สอง ผู้ตรวจสอบที่เลือกแต่ละคน j \(\in\)SV r,2 จะพยายามระบุผู้นำของรอบ โดยเฉพาะอย่างยิ่ง j ใช้ข้อมูลรับรองขั้นตอนที่ 1, \(\sigma\)r,1 i1 , . . . , \(\sigma\)r,1 ใน ซึ่งมีอยู่ในข้อความขั้นตอนที่ 1 ที่เหมาะสม mr,1 ฉัน เขาได้รับ; hashes ทั้งหมดนั่นคือคำนวณ H  ซิร,1 i1  , . . . , เอช  ซิร,1 ใน  ; ค้นหาหนังสือรับรอง ซิร,1 ëj ซึ่ง hash เป็นคำศัพท์ขั้นต่ำ; และถือว่า LRr j เป็นผู้นำของรอบ r โปรดจำไว้ว่าข้อมูลประจำตัวที่พิจารณาแต่ละรายการนั้นเป็นลายเซ็นดิจิทัลของ Qr−1 ซึ่ง SIGi นั้น r, 1, Qr−1 คือ ถูกกำหนดโดยไม่ซ้ำกันโดย i และ Qr−1 ว่า H นั้นเป็นแบบสุ่ม oracle และด้วยเหตุนี้ แต่ละ H(SIGi r, 1, Qr−1 เป็นสตริงสุ่มแบบยาว 256 บิตที่ไม่ซ้ำกันสำหรับผู้นำที่มีศักยภาพ i แต่ละคนของรอบ r จากนี้เราสามารถสรุปได้ว่า ถ้าสตริง 256 บิต Qr−1 เป็นตัวของตัวเองแบบสุ่มและเป็นอิสระ เลือกไว้ ยิ่งกว่านั้นจะเป็นข้อมูลรับรอง hashed ของผู้นำที่มีศักยภาพทั้งหมดในรอบ r ในความเป็นจริงทั้งหมด ผู้ที่อาจเป็นผู้นำนั้นได้รับการกำหนดอย่างดี และข้อมูลประจำตัวของพวกเขาก็เช่นกัน (ไม่ว่าจะคำนวณจริงหรือ ไม่) นอกจากนี้ ชุดของผู้นำที่มีศักยภาพของรอบ r ยังเป็นสับเซตแบบสุ่มของผู้ใช้ของรอบ r −k และผู้นำที่มีศักยภาพที่ซื่อสัตย์ ฉันมักจะสร้างและเผยแพร่ข้อความของเขาอย่างเหมาะสมเสมอ ฉัน ซึ่งมีข้อมูลรับรองของฉัน ดังนั้น เนื่องจากเปอร์เซ็นต์ของผู้ใช้ที่ซื่อสัตย์คือ h ไม่ว่าจะอย่างไรก็ตาม ผู้ที่อาจเป็นผู้นำที่เป็นอันตรายอาจทำ (เช่น เปิดเผยหรือปกปิดข้อมูลประจำตัวของตนเอง) น้อยที่สุด hashed ข้อมูลรับรองที่มีศักยภาพในการเป็นผู้นำเป็นของผู้ใช้ที่ซื่อสัตย์ ซึ่งทุกคนจำเป็นต้องระบุตัวตน เพื่อเป็นผู้นำของรอบr ดังนั้น ถ้าสตริง 256 บิต Qr−1 เป็นตัวสุ่มและ เลือกอย่างอิสระ โดยมีความน่าจะเป็นอย่างแน่นอน h (a) ผู้นำ ër ซื่อสัตย์และ (b) ëj = ër สำหรับทุกคน ผู้ตรวจสอบขั้นตอนที่ 2 อย่างซื่อสัตย์ ในความเป็นจริง หนังสือรับรอง hashed ใช่ เป็นการสุ่มเลือก แต่ขึ้นอยู่กับ Qr−1 ซึ่งก็คือไม่ใช่การสุ่มและคัดเลือกอย่างอิสระ อย่างไรก็ตาม เราจะพิสูจน์ในการวิเคราะห์ของเราว่า Qr−1 เป็นเช่นนั้น ไม่สามารถจัดการได้อย่างเหมาะสมเพื่อรับประกันว่าผู้นำของรอบจะซื่อสัตย์กับความน่าจะเป็น h′ ใกล้เคียงกับ h มากพอ กล่าวคือ h′ > h2(1 + h −h2) ตัวอย่างเช่น ถ้า h = 80% แล้ว h′ > .7424 โดยระบุผู้นำของรอบแล้ว (ซึ่งจะทำอย่างถูกต้องเมื่อผู้นำ ër ซื่อสัตย์) งานของผู้ตรวจสอบขั้นตอนที่ 2 คือการเริ่มดำเนินการ BA โดยใช้ค่าเริ่มต้นในสิ่งที่พวกเขาเชื่อ เพื่อเป็นแกนนำของผู้นำ จริงๆ แล้ว เพื่อลดปริมาณการสื่อสารที่จำเป็นให้เหลือน้อยที่สุด ผู้ตรวจสอบ j \(\in\)SV r,2 ไม่ได้ใช้ เนื่องจากเป็นค่าอินพุต v′ j ไปยังโปรโตคอล Byzantine บล็อก Bj นั้น เขาได้รับจริงๆ จาก ëj (ผู้ใช้ j เชื่อว่าเป็นผู้นำ) แต่เป็นผู้นำ แต่ hash ของบล็อกนั้น นั่นคือ v′ เจ = H(บี) ดังนั้น เมื่อยกเลิกโปรโตคอล BA ผู้ตรวจสอบ ของขั้นตอนสุดท้ายไม่ได้คำนวณบล็อก round-r Br ที่ต้องการ แต่คำนวณ (authenticate and เผยแพร่) H(Br) ดังนั้น เนื่องจาก H(Br) ได้รับการลงนามแบบดิจิทัลโดยผู้ตรวจสอบจำนวนมากเพียงพอ ขั้นตอนสุดท้ายของโปรโตคอล BA ผู้ใช้ในระบบจะทราบว่า H(Br) คือ hash ของใหม่ บล็อก อย่างไรก็ตาม พวกเขายังต้องดึงข้อมูล (หรือรอ เนื่องจากการดำเนินการค่อนข้างไม่พร้อมกัน) บล็อก Br เอง ซึ่งโปรโตคอลทำให้มั่นใจได้ว่าจะพร้อมใช้งานจริง ไม่ว่าฝ่ายตรงข้ามจะเป็นอย่างไรก็ตาม อาจจะทำ ความไม่ตรงกันและการกำหนดเวลา Algorand ′ 1 และ Algorand ′ 2 มีระดับความไม่ตรงกันอย่างมีนัยสำคัญ ที่เป็นเช่นนี้เพราะปฏิปักษ์มีละติจูดมากในการจัดตารางเวลาการส่งข้อความ แพร่กระจาย นอกจากนี้ไม่ว่าจำนวนก้าวทั้งหมดในแต่ละรอบจะจำกัดหรือไม่ก็ตาม ความแปรปรวนมีส่วนช่วยตามจำนวนขั้นตอนที่ดำเนินการจริง ทันทีที่เขาเรียนรู้ใบรับรองของ B0 . . , Br−1 ผู้ใช้ที่ฉันคำนวณ Qr−1 และเริ่มทำงาน ในรอบ r ตรวจสอบว่าเขาเป็นผู้นำที่มีศักยภาพหรือเป็นผู้ตรวจสอบในบางขั้นตอนของรอบ r สมมติว่าฉันต้องดำเนินการในขั้นตอน s เนื่องจากความไม่ซิงโครนัสที่กล่าวถึง ฉันอาศัยปัจจัยต่างๆ กลยุทธ์เพื่อให้แน่ใจว่าเขามีข้อมูลที่เพียงพอก่อนดำเนินการ ตัวอย่างเช่น เขาอาจรอรับข้อความอย่างน้อยตามจำนวนที่กำหนดจากผู้ตรวจสอบ ขั้นที่แล้ว หรือรอสักระยะ เพื่อให้ได้รับข้อความอย่างเพียงพอ ผู้ตรวจสอบจำนวนมากของขั้นตอนก่อนหน้า Seed Qr และพารามิเตอร์ Look-Back k จำไว้ว่าตามหลักการแล้ว ปริมาณ Qr ควรจะเป็น สุ่มและเป็นอิสระ แม้ว่าพวกเขาจะไม่ถูกควบคุมโดย ฝ่ายตรงข้าม เมื่อมองแวบแรก เราสามารถเลือก Qr−1 ให้ตรงกับ H จ่าย r−1 และด้วยเหตุนี้จึงหลีกเลี่ยงที่จะ ระบุ Qr−1 อย่างชัดเจนใน Br−1 อย่างไรก็ตาม การวิเคราะห์เบื้องต้นเผยให้เห็นว่าผู้ใช้ที่เป็นอันตรายอาจทำได้ ใช้ประโยชน์จากกลไกการคัดเลือกนี้11 ความพยายามเพิ่มเติมบางอย่างแสดงให้เห็นว่ามีกลไกอื่นๆ มากมาย 11เราอยู่ที่จุดเริ่มต้นของรอบ r −1 ดังนั้น Qr−2 = PAY r−2 จึงเป็นที่รู้จักอย่างเปิดเผย และปฏิปักษ์เป็นการส่วนตัว รู้ว่าใครคือผู้นำที่มีศักยภาพที่เขาควบคุม สมมติว่าฝ่ายตรงข้ามควบคุมผู้ใช้ 10% และ ด้วยความน่าจะเป็นที่สูงมาก ผู้ใช้ที่เป็นอันตราย w เป็นผู้นำที่มีศักยภาพของรอบ r −1 นั่นก็คือ สมมุติว่า ฮ เอสไอจี r −2, 1, Qr−2 มีขนาดเล็กมากจนไม่น่าเป็นไปได้อย่างยิ่งที่ผู้นำที่ซื่อสัตย์จะเป็นเช่นนั้นจริงๆ ผู้นำของรอบ r −1 (โปรดจำไว้ว่า เนื่องจากเราเลือกผู้นำที่มีศักยภาพผ่านกลไกการเรียงลำดับการเข้ารหัสลับ ปฏิปักษ์ไม่รู้ว่าใครเป็นผู้นำที่ซื่อสัตย์) ปฏิปักษ์จึงอยู่ในที่น่าอิจฉา ตำแหน่งในการเลือกชุดการจ่ายเงิน PAY ′ ที่เขาต้องการ และให้กลายเป็นชุดการจ่ายเงินอย่างเป็นทางการของรอบ r −1 อย่างไรก็ตาม เขาสามารถทำได้มากกว่านี้ เขายังสามารถมั่นใจได้ว่า มีความเป็นไปได้สูงที่ () ผู้ใช้ที่เป็นอันตรายรายหนึ่งของเขาจะเป็นผู้นำ ของรอบ r ด้วย เพื่อให้เขาสามารถเลือกได้ว่า PAY r จะเป็นอย่างไร (และอื่นๆ อย่างน้อยก็เป็นเวลานานๆ นั่นก็คือ ตราบใดที่เหตุการณ์ความน่าจะเป็นสูงเหล่านี้เกิดขึ้นจริง) เพื่อรับประกัน () ฝ่ายตรงข้ามจะดำเนินการดังต่อไปนี้ ให้จ่าย ′ เป็นค่าตอบแทนที่ฝ่ายตรงข้ามชอบสำหรับรอบ r −1 จากนั้น เขาจะคำนวณ H(PAY ′) และตรวจสอบว่าสำหรับบางส่วนหรือไม่ ผู้เล่นที่เป็นอันตรายอยู่แล้ว z, SIGz(r, 1, H(PAY ′)) มีขนาดเล็กเป็นพิเศษ นั่นคือ เล็กพอที่จะมีค่าสูงมาก ความน่าจะเป็น z จะเป็นผู้นำของรอบ r หากเป็นกรณีนี้ เขาสั่งให้ w เลือกกลุ่มผู้สมัครของเขาที่จะเป็นทางเลือกอื่นซึ่งขึ้นอยู่กับปริมาณบล็อกแบบดั้งเดิมนั้นฝ่ายตรงข้ามสามารถหาประโยชน์ได้อย่างง่ายดายเพื่อให้มั่นใจ ที่ผู้นำใจร้ายมีบ่อยมาก เรากลับกำหนดแบรนด์ของเราอย่างเจาะจงและจูงใจแทน ปริมาณใหม่ Qr เพื่อที่จะสามารถพิสูจน์ได้ว่าฝ่ายตรงข้ามไม่สามารถจัดการได้ กล่าวคือ Qr \(\triangleq\)H(SIGër(Qr−1), r) ถ้า Br ไม่ใช่บล็อกว่าง และ Qr \(\triangleq\)H(Qr−1, r) มิฉะนั้น สัญชาตญาณว่าทำไมการก่อสร้างงาน Qr จึงมีดังต่อไปนี้ สมมติสักครู่ว่า Qr−1 ถูกเลือกแบบสุ่มและเป็นอิสระอย่างแท้จริง แล้วจะเป็น Qr ไหม? เมื่อ LRr ซื่อสัตย์ คำตอบคือ (พูดประมาณ) ใช่ ที่เป็นเช่นนี้ก็เพราะว่า H(SIGLRr( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256 เป็นฟังก์ชันสุ่ม อย่างไรก็ตาม เมื่อ ër เป็นอันตราย Qr จะไม่ถูกกำหนดจาก Qr−1 อีกต่อไป และ LRr มีค่าแยกกันอย่างน้อยสองค่าสำหรับ Qr หนึ่งยังคงเป็น Qr \(\triangleq\)H(SIGër(Qr−1), r) และอีกอันคือ H(Qr−1, r) ก่อนอื่นให้เราโต้แย้งว่า แม้ว่าตัวเลือกที่สองจะค่อนข้างจะไร้เหตุผล ทางเลือกที่สองเป็นสิ่งจำเป็นอย่างยิ่ง เหตุผลก็คือผู้ประสงค์ร้ายสามารถก่อเหตุได้เสมอ บล็อกผู้สมัครที่แตกต่างกันโดยสิ้นเชิงที่จะได้รับโดยผู้ตรวจสอบที่ซื่อสัตย์ของขั้นตอนที่สอง 12 หนึ่งครั้ง ในกรณีนี้ มันเป็นเรื่องง่ายที่จะตรวจสอบให้แน่ใจว่าในที่สุดบล็อกก็ตกลงกันผ่านโปรโตคอล BA ของ รอบ r จะเป็นค่าดีฟอลต์ และจะไม่มีลายเซ็นดิจิทัลของ Qr−1 ของใครเลย แต่ ระบบจะต้องดำเนินต่อไป และเพื่อสิ่งนี้ มันต้องมีผู้นำในรอบ r หากผู้นำคนนี้เป็นไปโดยอัตโนมัติ และเลือกอย่างเปิดเผย แล้วปฏิปักษ์ก็จะทำร้ายเขาเล็กน้อย หากถูกเลือกโดยก่อนหน้านี้ Qr−1 ผ่านกระบวนการเดียวกัน มากกว่า ër จะเป็นผู้นำในรอบ r+1 อีกครั้ง เราเสนอให้โดยเฉพาะ ใช้กลไกการเรียงลำดับการเข้ารหัสลับแบบเดียวกัน แต่นำไปใช้กับปริมาณ Q ใหม่: กล่าวคือ H(Qr−1, r) การให้ปริมาณนี้เป็นเอาท์พุตของ H รับประกันว่าเอาท์พุตจะเป็นแบบสุ่ม และโดยการรวม r เป็นอินพุตที่สองของ H ในขณะที่การใช้ H อื่น ๆ ทั้งหมดมีอินพุตหนึ่งหรือ 3+ “รับประกัน” ว่า Qr ดังกล่าวได้รับการคัดเลือกอย่างอิสระ อีกครั้ง ตัวเลือก Qr ทางเลือกเฉพาะของเรา ไม่สำคัญ สิ่งที่สำคัญคือ ër มีทางเลือกสองทางสำหรับ Qr และด้วยเหตุนี้เขาจึงสามารถเพิ่มโอกาสเป็นสองเท่าได้ เพื่อให้มีผู้ใช้ที่เป็นอันตรายรายอื่นเป็นผู้นำคนต่อไป ตัวเลือกสำหรับ Qr อาจมีมากมายสำหรับฝ่ายตรงข้ามที่ควบคุม ër ที่เป็นอันตราย ตัวอย่างเช่น ให้ x, y และ z เป็นผู้นำที่มีศักยภาพอันตรายสามคนของรอบ r เช่นนั้น ฮ ซิร,1 x  < ฮ ซิร,1 ย  < ฮ ซิร,1 z  และเอช  ซิร,1 z  มีขนาดเล็กเป็นพิเศษ นั่นคือน้อยมากจนมีโอกาสที่ดีที่ H  ซิร,1 z  คือ น้อยกว่าข้อมูลรับรอง hashed ของผู้ที่มีศักยภาพเป็นผู้นำที่ซื่อสัตย์ทุกคน จากนั้นโดยขอให้ x ซ่อนของเขา หนังสือรับรอง ฝ่ายตรงข้ามมีโอกาสที่ดีที่จะให้ y เป็นผู้นำของรอบ r −1 นี้ บ่งบอกเป็นนัยว่าเขามีทางเลือกอื่นสำหรับ Qr: คือ SIGy คิวอาร์−1 . ปฏิปักษ์ก็อาจทำเช่นเดียวกัน ขอให้ทั้ง x และ y ระงับข้อมูลประจำตัวของตน เพื่อให้ z เป็นผู้นำของรอบ r −1 และได้รับตัวเลือกอื่นสำหรับ Qr: คือ SIGz คิวอาร์−1 . อย่างไรก็ตาม แน่นอนว่าแต่ละตัวเลือกเหล่านี้และตัวเลือกอื่นๆ มีโอกาสล้มเหลวไม่เป็นศูนย์ เพราะว่า ฝ่ายตรงข้ามไม่สามารถคาดเดา hash ของลายเซ็นดิจิทัลของผู้ใช้ที่ซื่อสัตย์ได้ เบอร์−1 ฉัน = (r −1, PAY ′, H(Br−2) มิฉะนั้น เขามีผู้ใช้ที่เป็นอันตรายอีกสองคน x และ y เพื่อสร้างการชำระเงินใหม่ต่อไป \(\wp\)′ จากที่หนึ่งไปยังอีกที่หนึ่ง จนกระทั่งสำหรับผู้ใช้ที่เป็นอันตรายบางราย z (หรือแม้แต่สำหรับผู้ใช้คงที่บางราย z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) คือ เล็กมากเช่นกัน การทดลองนี้จะหยุดลงอย่างรวดเร็ว และเมื่อปฏิปักษ์ร้องขอให้เสนอ บล็อกผู้สมัคร Br−1 ฉัน = (r −1, จ่าย ′ \(\cup\){\(\wp\)}, H(Br−2) 12เช่น เพื่อให้ง่าย (แต่สุดโต่ง) “เมื่อเวลาของขั้นตอนที่สองกำลังจะหมดลง” ër สามารถ ส่งอีเมลถึงบล็อกผู้สมัคร Bi ที่แตกต่างกันโดยตรงไปยังผู้ใช้แต่ละคน i ด้วยวิธีนี้ ไม่ว่าใครก็ตามที่เป็นผู้ตรวจสอบขั้นตอนที่ 2 อาจเป็นพวกเขา จะได้รับบล็อกที่แตกต่างกันโดยสิ้นเชิงการวิเคราะห์อย่างรอบคอบเหมือน Markov-chain แสดงให้เห็นว่า ไม่ว่าฝ่ายตรงข้ามจะเลือกตัวเลือกใดก็ตาม ที่จะทำในรอบ r −1 ตราบใดที่เขาไม่สามารถฉีดผู้ใช้ใหม่เข้าสู่ระบบได้ เขาไม่สามารถลดค่าได้ ความน่าจะเป็นของผู้ใช้ที่ซื่อสัตย์ที่จะเป็นผู้นำของรอบ r + 40 ต่ำกว่า h มาก นี่คือสาเหตุที่ทำให้ ซึ่งเราเรียกร้องให้ผู้นำที่มีศักยภาพของรอบ r เป็นผู้ใช้ที่มีอยู่แล้วในรอบ r −k มันเป็นวิธีที่จะทำให้แน่ใจว่า ในรอบ r −k ปฏิปักษ์ไม่สามารถเปลี่ยนแปลงความน่าจะเป็นที่ ผู้ใช้ที่ซื่อสัตย์จะเป็นผู้นำของ Round r ในความเป็นจริงไม่ว่าเขาจะเพิ่มผู้ใช้คนใดก็ตาม ระบบในรอบ r −k ถึง r พวกเขาไม่มีคุณสมบัติที่จะเป็นผู้นำที่มีศักยภาพ (และ fortiori ผู้นำ) ของรอบ r ดังนั้นพารามิเตอร์การมองย้อนกลับ k ในที่สุดจึงเป็นพารามิเตอร์ความปลอดภัย (ถึงแม้ว่า ดังที่เราจะเห็นในหัวข้อที่ 7 มันสามารถเป็น “พารามิเตอร์ความสะดวกสบาย” ได้เช่นกัน) กุญแจชั่วคราว แม้ว่าการดำเนินการตามโปรโตคอลของเราไม่สามารถสร้างทางแยกได้ ยกเว้นด้วย ความน่าจะเป็นเล็กน้อย ฝ่ายตรงข้ามสามารถสร้างทางแยกที่บล็อก rth หลังจากถูกต้องตามกฎหมาย บล็อก r ถูกสร้างขึ้นแล้ว โดยคร่าวๆ เมื่อ Br ถูกสร้างขึ้น ฝ่ายตรงข้ามจะได้เรียนรู้ว่าใครเป็นผู้ตรวจสอบแต่ละขั้นตอน ของรอบ r คือ ดังนั้นเขาจึงสามารถทุจริตทั้งหมดและบังคับให้พวกเขารับรองบล็อกใหม่ได้ ฉ บ. เนื่องจากบล็อกปลอมนี้อาจเผยแพร่ได้หลังจากบล็อกที่ถูกต้องเท่านั้น นั่นคือผู้ใช้ที่เผยแพร่ไปแล้ว การเอาใจใส่จะไม่ถูกหลอก13 อย่างไรก็ตาม ฉ Br จะถูกทางวากยสัมพันธ์และเรา ต้องการป้องกันไม่ให้ถูกผลิต เราทำเช่นนั้นโดยใช้กฎใหม่ โดยพื้นฐานแล้ว สมาชิกของผู้ตรวจสอบจะตั้งค่า SV r,s ของขั้นตอน s ของรอบ r ใช้กุญแจสาธารณะชั่วคราว pkr,s ฉัน เพื่อเซ็นข้อความแบบดิจิทัล คีย์เหล่านี้เป็นคีย์แบบใช้ครั้งเดียวเท่านั้นและมีคีย์ลับที่เกี่ยวข้อง skr,s ฉัน จะถูกทำลายทันทีที่ใช้ ด้วยวิธีนี้ ถ้ามีผู้ตรวจสอบ เสียหายในภายหลัง ฝ่ายตรงข้ามไม่สามารถบังคับให้เขาลงนามสิ่งอื่นใดที่เขาไม่ได้ลงนามในตอนแรก โดยปกติแล้ว เราต้องแน่ใจว่าเป็นไปไม่ได้ที่ฝ่ายตรงข้ามจะคำนวณคีย์ใหม่ g ประชาสัมพันธ์ ฉัน และโน้มน้าวผู้ใช้โดยสุจริตว่านี่คือคีย์ชั่วคราวที่ถูกต้องของตัวตรวจสอบ i \(\in\)SV r,s ที่จะใช้ในขั้นตอน s 4.2 สรุปทั่วไปของสัญกรณ์ แนวคิด และพารามิเตอร์ สัญกรณ์ • r \(\geq\)0: หมายเลขรอบปัจจุบัน • s \(\geq\)1: หมายเลขขั้นตอนปัจจุบันในรอบ r • Br: บล็อกที่สร้างขึ้นในรอบ r • PKr: ชุดของกุญแจสาธารณะในตอนท้ายของรอบ r −1 และที่จุดเริ่มต้นของรอบ r • Sr: สถานะของระบบเมื่อสิ้นสุดรอบ r −1 และเมื่อเริ่มรอบ r.14 • PAY r: ชุดการจ่ายเงินที่อยู่ใน Br. • ër: ผู้นำแบบ Round-R ër เลือกชุดการจ่ายเงิน PAY r ของรอบ r (และกำหนด Qr ถัดไป) • Qr: เมล็ดของรอบ r ซึ่งเป็นปริมาณ (เช่น สตริงไบนารี่) ที่สร้างขึ้นเมื่อสิ้นสุดรอบ r และใช้เพื่อเลือกผู้ตรวจสอบสำหรับรอบ r + 1 Qr ไม่ขึ้นอยู่กับชุดการจ่ายเงินในบล็อก และไม่สามารถถูกควบคุมโดย LRr ได้ 13พิจารณาสร้างความเสียหายให้กับผู้ประกาศข่าวของเครือข่ายโทรทัศน์รายใหญ่ และผลิตและออกอากาศรายการข่าวในปัจจุบัน แสดงให้เห็นเลขาธิการคลินตันชนะการเลือกตั้งประธานาธิบดีครั้งล่าสุด พวกเราส่วนใหญ่จะรับรู้ว่ามันเป็นเรื่องหลอกลวง แต่ คนที่ออกจากอาการโคม่าอาจถูกหลอกได้ 14ในระบบที่ไม่ซิงโครนัส แนวคิดเรื่อง "จุดสิ้นสุดของรอบ r −1" และ "จุดเริ่มต้นของรอบ r" จำเป็นต้องกำหนดอย่างรอบคอบ ในทางคณิตศาสตร์ PKr และ Sr คำนวณจากสถานะเริ่มต้น S0 และบล็อก บี1, . . . , Br−1• SV r,s: ชุดของตัวตรวจสอบที่เลือกสำหรับขั้นตอน s ของรอบ r • SV r: ชุดของตัวตรวจสอบที่เลือกสำหรับรอบ r, SV r = \(\cup\)s\(\geq\)1SV r,s • MSV r,s และ HSV r,s: ตามลำดับ ชุดของตัวตรวจสอบที่เป็นอันตรายและชุดของตัวตรวจสอบที่ซื่อสัตย์ ใน SV r,s MSV r,s \(\cup\)HSV r,s = SV r,s และ MSV r,s ∩HSV r,s = \(\emptyset\) • n1 \(\in\)Z+ และ n \(\in\)Z+: ตามลำดับ จำนวนที่คาดหวังของผู้นำที่มีศักยภาพในแต่ละ SV r,1 และจำนวนผู้ตรวจสอบที่คาดหวังในแต่ละ SV r,s สำหรับ s > 1 โปรดสังเกตว่า n1 << n เนื่องจากเราต้องการสมาชิกที่ซื่อสัตย์และซื่อสัตย์อย่างน้อยหนึ่งคนใน SV r,1 แต่อย่างน้อย สมาชิกที่ซื่อสัตย์ส่วนใหญ่ในแต่ละ SV r,s สำหรับ s > 1 • h \(\in\)(0, 1): ค่าคงที่มากกว่า 2/3 h คืออัตราส่วนความซื่อสัตย์ในระบบ นั่นก็คือ เศษของผู้ใช้ที่ซื่อสัตย์หรือเงินที่ซื่อสัตย์ ขึ้นอยู่กับสมมติฐานที่ใช้ในแต่ละ PKr อย่างน้อยชั่วโมง • H: ฟังก์ชันการเข้ารหัสลับ hash ซึ่งจำลองเป็นแบบสุ่ม oracle • \(\bot\): สตริงพิเศษที่มีความยาวเท่ากับเอาต์พุตของ H. • F \(\in\)(0, 1): พารามิเตอร์ที่ระบุความน่าจะเป็นของข้อผิดพลาดที่อนุญาต ความน่าจะเป็น \(\leq\)F คือ ถือว่า "เล็กน้อย" และความน่าจะเป็น \(\geq\)1 −F ถือว่า "ล้นหลาม" • ph \(\in\)(0, 1): ความน่าจะเป็นที่ผู้นำของรอบ r, ër มีความเที่ยงตรง ตามหลักการแล้ว ph = h ด้วย การมีอยู่ของฝ่ายตรงข้าม ค่า ph จะถูกกำหนดในการวิเคราะห์ • k \(\in\)Z+: พารามิเตอร์การมองย้อนกลับ นั่นคือ รอบ r −k คือตำแหน่งที่ตัวยืนยันสำหรับรอบ r อยู่ เลือกจาก —ได้แก่ SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): สำหรับขั้นตอนแรกของรอบ r ผู้ใช้ในรอบ r −k จะถูกเลือกให้อยู่ใน SV r,1 ด้วย ความน่าจะเป็น p1 \(\triangleq\) n1 |P Kr−k|. • p \(\in\)(0, 1): สำหรับแต่ละขั้นตอน s > 1 ของรอบ r ผู้ใช้ในรอบ r −k จะถูกเลือกให้อยู่ใน SV r,s โดยมี ความน่าจะเป็น p \(\triangleq\) n |P Kr−k|. • CERT r: ใบรับรองสำหรับ Br. เป็นชุดลายเซ็นต์ของ H(Br) จากผู้ตรวจสอบที่เหมาะสม รอบร. • Br \(\triangleq\)(Br, CERT r) เป็นบล็อกที่ได้รับการพิสูจน์แล้ว ผู้ใช้ที่ฉันรู้จัก Br ว่าเขาครอบครอง (และยืนยันได้สำเร็จ) ทั้งสองส่วนของบล็อกที่พิสูจน์แล้วหรือไม่ โปรดทราบว่า CERT ที่ผู้ใช้รายอื่นเห็นอาจแตกต่างกัน • τ ร i : เวลา (ท้องถิ่น) ที่ผู้ใช้ที่ฉันรู้จัก Br ในโปรโตคอล Algorand ผู้ใช้แต่ละคนมีของเขา นาฬิกาของตัวเอง นาฬิกาของผู้ใช้ที่แตกต่างกันไม่จำเป็นต้องซิงโครไนซ์ แต่ต้องมีความเร็วเท่ากัน เพื่อจุดประสงค์ในการวิเคราะห์เท่านั้น เราจะพิจารณานาฬิกาอ้างอิงและวัดผลผู้เล่น เวลาที่เกี่ยวข้องด้วยความเคารพ • \(\alpha\)r,s ฉัน และ \(\beta\)r,s i : เวลา (ท้องถิ่น) ตามลำดับที่ผู้ใช้ที่ฉันเริ่มต้นและสิ้นสุดการดำเนินการตามขั้นตอน s ของ รอบร. • Λ และ แลมบ์: โดยพื้นฐานแล้ว คือขอบเขตบนของเวลาที่ต้องใช้ในการดำเนินการขั้นตอนที่ 1 และตามลำดับ เวลาที่จำเป็นสำหรับขั้นตอนอื่นใดของโปรโตคอล Algorand พารามิเตอร์ Λ ขอบเขตบนของเวลาในการเผยแพร่บล็อกขนาด 1MB เดียว (ในสัญกรณ์ของเรา Λ = แลร์,1MB. เมื่อนึกถึงสัญกรณ์ของเรา ที่เราตั้งค่า \(\rho\) = 1 เพื่อความเรียบง่าย และบล็อกนั้นก็คือ เลือกให้มีความยาวสูงสุด 1MB เรามี Λ = แลมบ์ดา 1,1,1MB) 15ถ้าพูดอย่างเคร่งครัด “r −k” ควรเป็น “สูงสุด{0, r −k}”พารามิเตอร์ แล เหนือเวลาในการเผยแพร่ข้อความขนาดเล็กหนึ่งข้อความต่อผู้ตรวจสอบในขั้นตอน s > 1 (การใช้ลายเซ็นเส้นโค้งวงรีที่มีคีย์ 32B เช่นเดียวกับใน Bitcoin ข้อความยืนยันจะมีความยาว 200B ดังนั้นในสัญกรณ์ของเรา แล = แลม, \(\rho\), 200B.) เราถือว่า Λ = O(แล) แนวคิด • การเลือกผู้ตรวจสอบ สำหรับแต่ละรอบ r และขั้นตอน s > 1, SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p} แต่ละ ผู้ใช้ i \(\in\)PKr−k คำนวณลายเซ็นของเขาเป็นการส่วนตัวโดยใช้คีย์ระยะยาวของเขาและตัดสินใจว่า ฉัน \(\in\)SV r,s หรือไม่ ถ้า i \(\in\)SV r,s แล้ว SIGi(r, s, Qr−1) จะเป็น i (r, s) -credential แทนด้วยเครื่องหมายย่อ โดย \(\sigma\)r,s ฉัน สำหรับขั้นตอนแรกของรอบ r, SV r,1 และ \(\sigma\)r,1 ฉัน ถูกกำหนดในทำนองเดียวกัน โดยที่ p แทนที่ด้วย p1 ที่ ผู้ตรวจสอบใน SV r,1 เป็นผู้นำที่มีศักยภาพ • การคัดเลือกผู้นำ ผู้ใช้ i \(\in\)SV r,1 เป็นผู้นำของรอบ r เขียนแทนด้วย ër ถ้า H(\(\sigma\)r,1 ผม ) \(\leq\)H(\(\sigma\)r,1 j ) เพื่อศักยภาพทั้งหมด ผู้นำ j \(\in\)SV r,1 เมื่อใดก็ตามที่มีการเปรียบเทียบ hashes ของข้อมูลประจำตัวของผู้เล่นสองคน ในสถานการณ์ที่ไม่น่าเป็นไปได้ ในกรณีที่มีความสัมพันธ์ โปรโตคอลจะตัดความสัมพันธ์ตามพจนานุกรมเสมอตาม (สาธารณะระยะยาว กุญแจของ) ผู้นำที่มีศักยภาพ ตามคำจำกัดความแล้ว ค่า hash ของข้อมูลประจำตัวของผู้เล่น ër ก็มีค่าน้อยที่สุดในบรรดาผู้ใช้ทั้งหมดใน PKr−k โปรดทราบว่าผู้ที่มีศักยภาพเป็นผู้นำไม่สามารถตัดสินใจเป็นการส่วนตัวได้ว่าเขาเป็นผู้นำหรือไม่ โดยไม่เห็นข้อมูลรับรองของผู้ที่อาจเป็นผู้นำคนอื่นๆ เนื่องจากค่า hash เป็นค่าเดียวกันโดยการสุ่ม เมื่อ SV r,1 ไม่ว่างเปล่า ดังนั้น ër จึงมีอยู่เสมอและเป็น ซื่อสัตย์กับความน่าจะเป็นอย่างน้อย h พารามิเตอร์ n1 มีขนาดใหญ่พอที่จะทำให้มั่นใจว่าแต่ละรายการ SV r,1 ไม่ว่างเปล่าและมีความน่าจะเป็นอย่างท่วมท้น • โครงสร้างบล็อก บล็อกที่ไม่ว่างจะมีรูปแบบ Br = (r, PAY r, SIGër(Qr−1), H(Br−1)) และบล็อกว่าง อยู่ในรูปแบบ Br ǫ = (r, \(\emptyset\), Qr−1, H(Br−1)) โปรดทราบว่าบล็อกที่ไม่ว่างเปล่าอาจยังคงมีชุดการจ่ายเงินว่าง PAY r หากไม่มีการชำระเงินเกิดขึ้น รอบนี้หรือถ้าผู้นำมีเจตนาร้าย อย่างไรก็ตาม บล็อกที่ไม่ว่างเปล่าแสดงถึงตัวตนของ ër หนังสือรับรองของเขา \(\sigma\)r,1 ër และ SIGër(Qr−1) ทั้งหมดได้รับการเปิดเผยอย่างทันท่วงที โปรโตคอลรับประกัน ว่าถ้าผู้นำมีความซื่อสัตย์ บล็อกก็จะไม่ว่างเปล่าและมีความเป็นไปได้อย่างท่วมท้น • เมล็ดพันธุ์คิวอาร์ ถ้า Br ไม่ว่างเปล่า ดังนั้น Qr \(\triangleq\)H(SIGër(Qr−1), r) มิฉะนั้น Qr \(\triangleq\)H(Qr−1, r) พารามิเตอร์ • ความสัมพันธ์ระหว่างพารามิเตอร์ต่างๆ — ผู้ตรวจสอบและผู้ที่อาจเป็นผู้นำของรอบ r จะถูกเลือกจากผู้ใช้ใน PKr−k โดยที่ k ถูกเลือกเพื่อให้ปฏิปักษ์ไม่สามารถทำนาย Qr−1 ย้อนกลับไปที่รอบ r −k −1 ด้วยความน่าจะเป็นที่ดีกว่า F: ไม่เช่นนั้นเขาจะสามารถแนะนำผู้ใช้ที่เป็นอันตรายได้ สำหรับรอบ r −k ซึ่งทั้งหมดจะเป็นผู้นำ/ผู้ตรวจสอบในรอบ r สำเร็จ

มีผู้นำที่ประสงค์ร้ายหรือเสียงส่วนใหญ่ที่ประสงค์ร้ายใน SV r สำหรับบางขั้นตอนที่ต้องการ เขา — สำหรับขั้นตอนที่ 1 ของแต่ละรอบ r จะมีการเลือก n1 เพื่อให้มีความน่าจะเป็นอย่างท่วมท้น SV r,1 ̸= \(\emptyset\) • ตัวอย่างตัวเลือกของพารามิเตอร์ที่สำคัญ — ผลลัพธ์ของ H มีความยาว 256 บิต — ชั่วโมง = 80%, n1 = 35 — Λ = 1 นาที และ แล = 10 วินาที • การเริ่มต้นของโปรโตคอล โปรโตคอลเริ่มต้นที่เวลา 0 โดย r = 0 เนื่องจากไม่มี “B−1” หรือ “CERT −1” ทางวากยสัมพันธ์ B−1 เป็นพารามิเตอร์สาธารณะที่มีองค์ประกอบที่สามระบุ Q−1 และผู้ใช้ทั้งหมด ทราบ B−1 ณ เวลา 0

Algorand ′

1 В этом разделе мы создадим версию Algorand ′, работающую при следующем предположении. Допущение о честном большинстве пользователей: более 2/3 пользователей в каждом PKr честны. В разделе 8 мы покажем, как заменить приведенное выше предположение желаемым «Честным большинством». Денежное предположение. 5.1 Дополнительные обозначения и параметры Обозначения • m \(\in\)Z+: максимальное количество шагов в бинарном протоколе BA, кратное 3. • Lr \(\leq\)m/3: случайная величина, представляющая количество испытаний Бернулли, необходимых для получения 1, когда каждое испытание равно 1 с вероятностью ph 2 и имеется не более m/3 испытаний. Если все испытания провалятся, то Lr \(\triangleq\)м/3. Lr будет использоваться для верхней границы времени, необходимого для генерации блока Br. • ТН = 2n 3 + 1: количество подписей, необходимое в конечных условиях протокола. • CERT r: сертификат для Br. Это набор tH сигнатур H(Br) от собственных проверяющих в круглый р. Параметры • Отношения между различными параметрами. — Для каждого шага s > 1 раунда r n выбирается так, чтобы с подавляющей вероятностью |HSV r,s| > 2|MSV r,s| и |HSV r,s| + 4|MSV r,s| < 2н. Чем ближе к 1 значение h, тем меньше должно быть n. В частности, мы используем (варианты из) границ Чернова, обеспечивающих выполнение желаемых условий с подавляющей вероятностью. — m выбирается таким, что Lr < m/3 с подавляющей вероятностью. • Пример выбора важных параметров. — F = 10−12. — n \(\approx\)1500, k = 40 и m = 180.5.2 Реализация эфемерных ключей в Algorand ′ 1 Как уже упоминалось, мы хотим, чтобы проверяющий i \(\in\)SV r,s подписывал свое сообщение цифровой подписью mr,s я шага s в раунде r относительно эфемерного открытого ключа pkr,s i, используя эфемерный секретный ключ skr,s я что он сразу уничтожает после использования. Таким образом, нам нужен эффективный метод, гарантирующий, что каждый пользователь сможет убедитесь, что pkr,s я это действительно ключ, который можно использовать для проверки моей подписи мистера. я. Мы делаем это (в лучшем случае насколько нам известно) новое использование схем подписи на основе идентичности. На высоком уровне в такой схеме центральный орган A генерирует открытый главный ключ PMK, и соответствующий секретный главный ключ SMK. Учитывая личность U игрока U, A вычисляет: через SMK, секретный ключ подписи skU относительно открытого ключа U, и конфиденциально передает skU U. (Действительно, в схеме цифровой подписи на основе личности открытый ключ пользователя U — это сам U!) Таким образом, если А уничтожит SMK после вычисления секретных ключей пользователей, которых он хочет разрешить создавать цифровые подписи и не хранить никакого вычисленного секретного ключа, то U — единственный, кто может подписывать сообщения цифровой подписью относительно открытого ключа U. Таким образом, любой, кто знает «имя U», автоматически знает открытый ключ U и, таким образом, может проверить подписи U (возможно, используя также открытый главный ключ ПМК). В нашем приложении авторитетом A является пользователь i, а набор всех возможных пользователей U совпадает с пара круговых шагов (r, s) в, скажем, S = {i}\(\times\){r′, . . . , r′ +106}\(\times\){1, . . . , m+3}, где r′ — заданное раунд, а m + 3 — верхняя граница количества шагов, которые могут произойти в течение раунда. Это путь, пкр, с я \(\triangleq\)(i, r, s), чтобы все видели подпись i SIGr,s пкр,с я (мистер, с я) могу, с подавляющим вероятности, немедленно проверьте ее для первого миллиона раундов r, следующих за r'. Другими словами, сначала я генерирую PMK и SMK. Затем он заявляет, что ПМК — мой хозяин. открытый ключ для любого раунда r \(\in\)[r', r' + 106] и использует SMK для частного создания и хранения секрета. ключ скр,с я для каждой тройки (i, r, s) \(\in\)S. Сделав это, он уничтожает СМК. Если он решит, что он не часть СВ р,с, тогда я могу уйти из скр,с я один (поскольку протокол не требует, чтобы он аутентифицировал любое сообщение на шаге s раунда r). В противном случае я сначала использую skr,s я поставить цифровую подпись на своем сообщении, мистер, с я и затем уничтожает скр,с я. Обратите внимание: я могу опубликовать его первый открытый мастер-ключ, когда он впервые войдет в систему. То есть, тот же самый платеж \(\wp\), который приводит i в систему (в раунде r' или в раунде, близком к r'), может также указать по запросу i, что его открытый главный ключ для любого раунда r \(\in\)[r', r' + 106] равен PMK — например, включая пару вида (ПМК, [r', r' + 106]). Также обратите внимание, что, поскольку m + 3 — максимальное количество шагов в раунде, предполагая, что раунд занимает минуту, запаса созданных таким образом эфемерных ключей хватит почти на два года. В то же время Со временем изготовление этих эфемерных секретных ключей не займет много времени. Используя эллиптическую кривую В системе с 32B ключей каждый секретный ключ вычисляется за несколько микросекунд. Таким образом, если m + 3 = 180, тогда все 180 миллионов секретных ключей можно будет вычислить менее чем за час. Когда текущий раунд приближается к r' + 106, для обработки следующего миллиона раундов i генерирует новую пару (PMK', SMK') и сообщает, какой у него следующий запас эфемерных ключей. Например, если SIGi(PMK', [r' + 106 + 1, r' + 2 \(\cdot\) 106 + 1]) вводит новый блок, либо как отдельная «транзакция» или как некоторая дополнительная информация, являющаяся частью платежа. Тем самым, я сообщаю всем, что он/она должен использовать PMK' для проверки своих эфемерных подписей в следующем миллион раундов. И так далее. (Обратите внимание, что, следуя этому базовому подходу, другие способы реализации эфемерных ключей без использование подписей на основе личности, безусловно, возможно. Например, через Merkle trees.16) 16В этом методе я генерирую пару публично-секретных ключей (pkr,s я, скр,с я ) для каждой пары шагов раунда (r, s) в —скажем—Конечно, возможны и другие способы реализации эфемерных ключей — например, через Merkle trees. 5.3 Соответствие шагам Algorand ′ 1 с таковыми у BA⋆ Как мы уже говорили, раунд в Algorand ′ 1 имеет не более m + 3 шагов. Шаг 1. На этом этапе каждый потенциальный лидер i вычисляет и распространяет свой блок-кандидат Br я, вместе с собственным удостоверением \(\sigma\)r,1 я. Напомним, что эти учетные данные явно идентифицируют i. Это так, поскольку \(\sigma\)r,1 я \(\triangleq\)SIGi(r, 1, Qr−1). Потенциальный проверяющий i также распространяет как часть своего сообщения свою собственную цифровую подпись H(Br я). Не имеющая отношения к платежу или учетным данным, эта подпись i относится к его эфемерному обществу. ключ пкр,1 i: то есть он распространяет sigpkr,1 я (H(Br я)). Учитывая наши условности, вместо того, чтобы пропагандировать Бр я и сигпкр,1 я (H(Br я )) он мог бы распространяется SIGpkr,1 я (H(Br я)). Однако в нашем анализе нам необходим явный доступ к сигпкр,1 я (H(Br я)). Шаг 2. На этом этапе каждый верификатор i устанавливает \(\ell\)r Я буду потенциальным лидером, чьи полномочия hashed самый маленький, а Br i - блок, предложенный \(\ell\)r я. Поскольку в целях эффективности мы желает договориться о H(Br), а не непосредственно о Br, я распространяю сообщение, которое он хотел бы получить распространяется на первом этапе BA⋆с начальным значением v' я = H(Br я). То есть он распространяет v' я, после эфемерного подписания, конечно. (А именно, после его подписания относительно правого эфемерного открытый ключ, в данном случае это pkr,2 я .) Конечно, я также передаю свои собственные полномочия. Поскольку первый шаг BA⋆ состоит из первого шага протокола градуированного консенсуса GC, шаг 2 из Algorand соответствует первому шагу GC. Шаг 3. На этом шаге каждый верификатор i \(\in\)SV r,2 выполняет второй шаг BA⋆. То есть он отправляет то же сообщение, которое он отправил бы на втором этапе GC. Опять же, мое сообщение эфемерно подписано и сопровождается удостоверением личности. (В дальнейшем мы не будем говорить, что верификатор эфемерно подписывает свое сообщение, а также распространяет свои полномочия.) Шаг 4. На этом этапе каждый верификатор i \(\in\)SV r,4 вычисляет выходные данные GC (vi, gi) и эфемерно подписывает и отправляет то же сообщение, которое он отправил бы на третьем этапе BA⋆, то есть на первый шаг BBA⋆, с начальным битом 0, если gi = 2, и 1 в противном случае. Шаг s = 5, . . . , m + 2. Такой шаг, если он когда-либо был достигнут, соответствует шагу s−1 BA⋆ и, следовательно, шаг s−3 BBA⋆. Поскольку наша модель распространения достаточно асинхронна, мы должны учитывать возможность что в середине такого шага s проверяющий i \(\in\)SV r,s достигает информации, доказывающей его этот блок Br уже выбран. В этом случае я прекращает собственное выполнение раунда r Algorand ′ и начинает выполнять инструкции раунда (r + 1). {р', . . . , r′ + 106} \(\times\) {1, . . . , м + 3}. Затем он упорядочивает эти публичные ключи каноническим образом, сохраняет j-й публичный вводит j-й лист Merkle tree и вычисляет корневое значение Ri, которое он публикует. Когда он хочет подписать сообщение относительно ключа pkr,s я , я предоставляю не только фактическую подпись, но и путь аутентификации для pkr,s я относительно Ри. Обратите внимание, что этот путь аутентификации также доказывает, что pkr,s я хранится в j-м листе. Остальное детали могут быть легко заполнены.Соответственно, инструкции верификатора i \(\in\)SV r,s, помимо инструкций, соответствующих до шага s−3 BBA⋆, включая проверку того, остановлено ли выполнение BBA⋆ ранее. Шаг с'. Поскольку BBA⋆can только останавливается на этапе с фиксированной монетой на 0 или на шаге с фиксированной монетой на 1, инструкции различают, A (Конечное условие 0): s′ −2 ≡0 mod 3, или B (Конечное условие 1): s′ −2 ≡1 mod 3. Действительно, в случае А блок Br непуст, и поэтому необходимы дополнительные инструкции для убедитесь, что i правильно реконструирует Br вместе с соответствующим сертификатом CERT r. В случае Б, блок Br пуст, и поэтому мне дано указание установить Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), и вычислить CERT r. Если во время выполнения шага s я не увижу никаких свидетельств того, что блок Br уже был сгенерирован, то он отправляет то же сообщение, которое он отправил бы на шаге s-3 BBA⋆. Шаг m + 3. Если на шаге m + 3 i \(\in\)SV r,m+3 видит, что блок Br уже был сгенерирован в предыдущий шаг s', то он действует так же, как объяснено выше. В противном случае, вместо отправки того же сообщения, которое он отправил бы на шаге m BBA⋆, i ему было поручено на основе имеющейся у него информации вычислить Br и соответствующий ему сертификат CERT r. Напомним, что мы ограничиваем общее количество шагов раунда сверху m + 3. 5.4 Фактический протокол Напомним, что на каждом шаге s раунда r проверяющий i \(\in\)SV r,s использует свою долговременную пару публично-секретных ключей. предъявить свои полномочия, \(\sigma\)r,s я \(\triangleq\)SIGi(r, s, Qr−1), а также SIGi Qr−1 в случае s = 1. Верификатор i использует свой эфемерный секретный ключ skr,s я подписать его (r,s)-сообщение mr,s я. Для простоты, когда r и s равны ясно, мы пишем esigi(x), а не sigpkr,s i (x) для обозначения собственной эфемерной подписи значения i. x на шаге s раунда r и напишите ESIGi(x) вместо SIGpkr,s i (x) для обозначения (i, x, esigi(x)). Шаг 1. Блокируйте предложение Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг 1 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,1 или нет. • Если i /\(\varepsilon\)SV r,1, то я немедленно прекращает выполнение шага 1. • Если i \(\in\)SV r,1, то есть если i является потенциальным лидером, то он собирает выплаты в раунде r, которые было передано ему на данный момент и вычисляет максимальный набор выплат PAY r я от них. Далее он вычисляет свой «кандидатский блок» Br i = (r, PAY r i , SIGi(Qr−1), H(Br−1)). Наконец, он вычисляет сообщение мистер 1 я = (Бр i , esigi(H(Br i ))), \(\sigma\)r,1 i ), уничтожает свой эфемерный секретный ключ skr,1 я, а потом распространяет г-на, 1 я.Замечание. На практике, чтобы сократить глобальное выполнение шага 1, важно, чтобы (r, 1)- сообщения распространяются выборочно. То есть для каждого пользователя i в системе для первого (r, 1)- сообщение, которое он когда-либо получает и успешно проверяет17, игрок i распространяет его как обычно. Для всех другие (r, 1)-сообщения, которые игрок i получает и успешно проверяет, он распространяет их только в том случае, если hash значение содержащихся в нем учетных данных является наименьшим среди hash значений содержащихся учетных данных во всех (r, 1)-сообщениях, которые он получил и успешно проверил на данный момент. Кроме того, как предложил Георгиос Влахос, полезно, чтобы каждый потенциальный лидер i также распространял свои полномочия \(\sigma\)r,1 я отдельно: эти небольшие сообщения передаются быстрее, чем блоки, что обеспечивает своевременное распространение mr,1 Джей где содержащиеся учетные данные имеют небольшие значения hash, а те, которые содержат большие значения hash быстро исчезнуть. Шаг 2: Первый шаг Протокола поэтапного консенсуса GC Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг 2 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,2 или нет. • Если i /\(\varepsilon\)SV r,2, то я немедленно прекращает выполнение шага 2. • Если i \(\in\)SV r,2, то после ожидания времени t2 \(\triangleq\) \(\lambda\) + Λ i действует следующим образом. 1. Он находит пользователя \(\ell\) такого, что H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) для всех учетных данных \(\sigma\)r,1 дж которые являются частью успешно проверенные (r, 1)-сообщения, которые он получил на данный момент. 2. Если он получил от \(\ell\)действительное сообщение mr,1 \(\ell\) = (Бр \(\ell\), esig\(\ell\)(H(Br \(\ell\))) \(\sigma\)r,1 \(\ell\)),b, то я устанавливаю v' я \(\triangleq\)H(Br \(\ell\)); в противном случае я устанавливаю v' я \(\triangleq\) \(\bot\). 3. я вычисляю сообщение mr,2 я \(\triangleq\)(ESIGi(v′ i), \(\sigma\)r,2 i ),c уничтожает свой эфемерный секретный ключ скр, 2 i , а затем распространяет mr,2 я. aПо сути, пользователь i в частном порядке решает, что лидером раунда r является пользователь \(\ell\). bОпять же, подписи игрока \(\ell\) и hash успешно проверены, и PAY r \(\ell\)в Бр \(\ell\)действителен для round r — хотя я не проверяю, PAY ли r \(\ell\)максимальен для \(\ell\)или нет. c Сообщение г-н, 2 я сигнализирует о том, что игрок i рассматривает v' i быть hash следующего блока или считать следующий блок должен быть пустым. 17То есть все подписи верны и и блок, и его hash валидны — хотя я и не проверяю является ли включенный набор выплат максимальным для его предлагающего или нет.

Шаг 3: Второй шаг GC Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный Шаг 3 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,3 или нет. • Если i /\(\varepsilon\)SV r,3, то я немедленно прекращает выполнение шага 3. • Если i \(\in\)SV r,3, то после ожидания времени t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ я действую следующим образом. 1. Если существует значение v′ ̸= \(\bot\) такое, что среди всех допустимых сообщений mr,2 дж он получил, из них более 2/3 имеют вид (ESIGj(v′), \(\sigma\)r,2 j ), без всякого противоречия,a затем он вычисляет сообщение mr,3 я \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 я). В противном случае он вычисляет mr,3 я \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 я). 2. я уничтожаю его эфемерный секретный ключ skr,3 i , а затем распространяет mr,3 я. aТо есть он не получил двух действительных сообщений, содержащих ESIGj(v') и другой ESIGj(v'') соответственно, от игрока j. Здесь и далее, за исключением Конечных условий, определенных позже, всякий раз, когда честный игрок хочет сообщений заданной формы, сообщения, противоречащие друг другу, никогда не учитываются и не считаются действительными.Шаг 4: Выходные данные GC и первый шаг BBA⋆ Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный Шаг 4 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,4 или нет. • Если i /\(\varepsilon\)SV r,4, то он немедленно прекращает выполнение шага 4. • Если i \(\in\)SV r,4, то после ожидания времени t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ я действую следующим образом. 1. Он вычисляет vi и gi, выходные данные GC, следующим образом. (a) Если существует значение v′ ̸= \(\bot\) такое, что среди всех допустимых сообщений mr,3 дж у него есть полученных, более 2/3 из них имеют вид (ESIGj(v′), \(\sigma\)r,3 j ), то он устанавливает vi \(\triangleq\)v′ и gi \(\triangleq\)2. (б) В противном случае, если существует значение v′ ̸= \(\bot\) такое, что среди всех допустимых сообщений мистер, 3 дж он получил, более 1/3 из них имеют вид (ESIGj(v′), \(\sigma\)r,3 j ), тогда он устанавливает vi \(\triangleq\)v′ и gi \(\triangleq\)1.a (c) В противном случае он полагает vi \(\triangleq\)H(Br \(\varepsilon\) ) и gi \(\triangleq\)0. 2. Он вычисляет bi, вход BBA⋆, следующим образом: bi \(\triangleq\)0, если gi = 2, и bi \(\triangleq\)1 в противном случае. 3. Он вычисляет сообщение mr,4 я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 я), уничтожает его эфемерное секретный ключ скр, 4 i , а затем распространяет mr,4 я. aМожно доказать, что v′ в случае (b), если он существует, должен быть единственным.

Шаг s, 5 \(\leq\)s \(\leq\)m + 2, s−2 ≡0 mod 3: шаг BBA⋆ с фиксированной монетой до 0 Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,s. • Если i /\(\varepsilon\)SV r,s, то я немедленно прекращает выполнение шага s. • Если i \(\in\)SV r,s, то он действует следующим образом. – Он ждет, пока не пройдет время ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ. – Конечное условие 0: Если во время такого ожидания и в любой момент времени существует строка v ̸= \(\bot\) и шаг s′ такой, что (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 — то есть шаг s′ является шагом с фиксированной монетой до 0, (б) я получил как минимум tH = 2н 3 + 1 действительных сообщений mr,s′−1 дж = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 дж ),а и (c) я получил действительное сообщение, мистер 1 дж = (Бр j , esigj(H(Br j )), \(\sigma\)r,1 j ) с v = H(Br дж), затем я немедленно прекращаю выполнение шага s (и фактически раунда r), не пропаганда чего-либо; устанавливает Br = Br Дж; и устанавливает свой собственный CERT r как набор сообщений г-н,с'-1 дж подэтапа (b).b – Конечное условие 1: Если во время такого ожидания и в любой момент времени существует шаг s′ такой, что (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 — то есть шаг s′ является шагом с фиксированной монетой-1, и (b’) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 дж ),с затем я немедленно прекращаю выполнение шага s (и фактически раунда r), не пропаганда чего-либо; устанавливает Br = Br й; и устанавливает свой собственный CERT r как набор сообщений г-н,с'-1 дж подэтапа (b’). – В противном случае в конце ожидания пользователь i выполняет следующее. Он устанавливает vi как большинство голосов vj во вторых компонентах всех действительных мистер, с-1 дж он получил. Он вычисляет bi следующим образом. Если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)0. В противном случае, если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)1. В противном случае он устанавливает bi \(\triangleq\)0. Он вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s я), уничтожает его эфемерное секретный ключ скр,с i , а затем распространяет mr,s я. aТакое сообщение от игрока j засчитывается, даже если игрок i также получил сообщение от j, подписавшегося за 1. Аналогично для Конечного условия 1. Как показано в анализе, это сделано для того, чтобы все честные пользователи знали Br за время \(\lambda\) друг от друга. bUser i теперь знает Br и свои собственные варианты завершения раунда r. Он по-прежнему помогает распространять сообщения как обычный пользователь, но не инициирует никакого распространения в качестве (r, s)-верификатора. В частности, он помогал распространять все сообщения в своей CERT r, чего достаточно для нашего протокола. Обратите внимание, что ему также следует установить bi \(\triangleq\)0 для бинарного протокола BA, но bi в любом случае в этом случае не нужен. Аналогичные вещи для всех будущих инструкций. cВ этом случае не имеет значения, кто такие виджеи.Шаг s, 6 \(\leq\)s \(\leq\)m + 2, s−2 ≡1 mod 3: шаг BBA⋆ с фиксированной монетой-1 Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,s или нет. • Если i /\(\varepsilon\)SV r,s, то я немедленно прекращает выполнение шага s. • Если i \(\in\)SV r,s, то он делает следующее. – Он ждет, пока не пройдет время ts \(\triangleq\)(2s −3)\(\lambda\) + Λ. – Конечное условие 0: те же инструкции, что и для шагов Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и для шагов Coin-Fixed-To-0. – В противном случае в конце ожидания пользователь i выполняет следующее. Он устанавливает vi как большинство голосов vj во вторых компонентах всех действительных мистер, с-1 дж он получил. Он вычисляет bi следующим образом. Если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)0. В противном случае, если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)1. В противном случае он устанавливает bi \(\triangleq\)1. Он вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s я), уничтожает его эфемерное секретный ключ скр,с i , а затем распространяет mr,s я.

Шаг s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Шаг BBA⋆ с подбрасыванием монеты Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,s или нет. • Если i /\(\varepsilon\)SV r,s, то я немедленно прекращает выполнение шага s. • Если i \(\in\)SV r,s, то он делает следующее. – Он ждет, пока не пройдет время ts \(\triangleq\)(2s −3)\(\lambda\) + Λ. – Конечное условие 0: те же инструкции, что и для шагов Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и для шагов Coin-Fixed-To-0. – В противном случае в конце ожидания пользователь i выполняет следующее. Он устанавливает vi как большинство голосов vj во вторых компонентах всех действительных мистер, с-1 дж он получил. Он вычисляет bi следующим образом. Если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)0. В противном случае, если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)1. Иначе, пусть SV r,s−1 я — множество (r, s−1)-верификаторов, от которых он получил валидное сообщение мистер, с-1 дж . Он устанавливает bi \(\triangleq\)lsb(minj\(\varepsilon\)SV r,s−1 я H(\(\sigma\)r,s−1 дж )). Он вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s я), уничтожает его эфемерное секретный ключ скр,с i , а затем распространяет mr,s я.

Шаг m + 3: Последний шаг BBA⋆a Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг m + 3 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr−1 из третьего компонента Br−1 и проверяет, принадлежит ли i SV r,m+3 или нет. • Если i /\(\varepsilon\)SV r,m+3, то я немедленно прекращает выполнение шага m + 3. • Если i \(\in\)SV r,m+3, то он делает следующее. – Он ждет, пока не пройдет время tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ. – Конечное условие 0: те же инструкции, что и для шагов Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и для шагов Coin-Fixed-To-0. – В противном случае в конце ожидания пользователь i выполняет следующее. Он устанавливает outi \(\triangleq\)1 и Br \(\triangleq\)Br. й. Он вычисляет сообщение mr,m+3 я = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 я ), уничтожает его эфемерный секретный ключ skr,m+3 я , а затем распространяет mr,m+3 я сертифицировать Бр.б aС огромной вероятностью BBA⋆ завершился до этого шага, и мы указываем этот шаг для полноты. b Сертификат, полученный на этапе m + 3, не обязательно должен включать ESIGi(outi). Мы включили его только для единообразия: сертификаты теперь имеют единый формат независимо от того, на каком этапе они создаются.Реконструкция блока Round-r неверификаторами Инструкции для каждого пользователя i в системе: Пользователь i начинает свой собственный раунд r, как только узнает Br-1 и ожидает информацию о блоке следующим образом. – Если во время такого ожидания и в любой момент времени существует строка v и шаг s′ такие что (a) 5 \(\leq\)s′ \(\leq\)m + 3 с s′ −2 ≡0 mod 3, (b) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 дж ), и (c) я получил действительное сообщение, мистер 1 дж = (Бр j , esigj(H(Br j )), \(\sigma\)r,1 j ) с v = H(Br дж), затем я немедленно останавливаю его собственное выполнение раунда r; устанавливает Br = Br дж; и устанавливает свой собственный CERT r быть набором сообщений mr,s′−1 дж подэтапа (b). – Если во время такого ожидания и в любой момент времени существует шаг s′ такой, что (a’) 6 \(\leq\)s′ \(\leq\)m + 3 с s′ −2 ≡1 mod 3, и (b’) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 дж ), затем я немедленно останавливаю его собственное выполнение раунда r; устанавливает Br = Br й; и устанавливает свой собственный CERT r быть набором сообщений mr,s′−1 дж подэтапа (b’). – Если во время такого ожидания и в любой момент времени я получил хотя бы tH действительных сообщений мистер, м+3 дж = (ESIGj(1), ESIGj(H(Br ϫ )) \(\sigma\)r,m+3 дж ), затем я останавливаю его собственное выполнение раунда r сразу устанавливает Br = Br ǫ и устанавливает свой собственный CERT r как набор сообщений mr,m+3 дж за 1 и H(Br й). 5,5 Анализ Algorand ′ 1 Введем следующие обозначения для каждого раунда r \(\geq\)0, используемого в анализе. • Пусть T r — это время, когда первый честный пользователь узнает Br−1. • Пусть Ir+1 — интервал [T r+1, Tr+1 + \(\lambda\)]. Обратите внимание, что T 0 = 0 при инициализации протокола. Напомним, что для каждого s \(\geq\)1 и i \(\in\)SV r,s \(\alpha\)r,s я и \(\beta\)r,s я соответственно время начала и время окончания шага s игрока i. Более того, напомним, что ts = (2s −3)\(\lambda\) + Λ для каждого 2 ⩽ s ⩽ m + 3. Кроме того, пусть I0 \(\triangleq\){0} и t1 \(\triangleq\)0. Наконец, напомним, что Lr \(\leq\)m/3 — случайная величина, представляющая количество испытаний Бернулли. нужно увидеть 1, когда каждое испытание равно 1 с вероятностью ph 2 и имеется не более m/3 испытаний. Если все испытания терпят неудачу, тогда Lr \(\triangleq\)m/3. В анализе мы игнорируем время вычислений, поскольку оно на самом деле незначительно по сравнению с необходимым временем. для распространения сообщений. В любом случае, используя немного большие \(\lambda\) и Λ, время вычисления может включаться непосредственно в анализ. Большинство приведенных ниже утверждений справедливы «с подавляющим вероятность», и мы не можем неоднократно подчеркивать этот факт в анализе.5,6 Основная теорема Теорема 5.1. Следующие свойства с подавляющей вероятностью выполняются для каждого раунда r \(\geq\)0: 1. Все честные пользователи согласны с тем же блоком Бр. 2. Когда лидер \(\ell\)r честен, блок Br генерируется \(\ell\)r, Br содержит максимальный набор выплат. получено \(\ell\)r за время \(\alpha\)r,1 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ, и все честные пользователи знают Br за время интервал Ir+1. 3. Когда лидер \(\ell\)r злонамерен, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ и все честные пользователи знают Br в интервале времени Ir+1. 4. ph = h2(1 + h−h2) для Lr, и лидер \(\ell\)r честен с вероятностью не ниже ph. Прежде чем доказывать нашу основную теорему, сделаем два замечания. Замечания. • Генерация блоков и реальная задержка. Время генерации блока Br определяется как T r+1 -T r. То есть, это разница между первым разом, когда честный пользователь изучает Br, и когда честный пользователь впервые узнает Br-1. Когда лидер раунда R честен, Свойство 2 наше. Основная теорема гарантирует, что точное время генерации Br составляет 8\(\lambda\) + Λ времени, независимо от того, что точное значение h > 2/3 может быть. Когда лидер злонамерен, свойство 3 подразумевает, что ожидаемое время генерации Br ограничено сверху ( 12 ph + 10)\(\lambda\) + Λ, опять же независимо от точного значение h.18 Однако ожидаемое время генерации Br зависит от точного значения h. Действительно, по свойству 4 ph = h2(1 + h−h2) и лидер честен с вероятностью не менее ph, таким образом 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\) + Λ). Например, если h = 80%, то E[T r+1 −T r] \(\leq\)12,7\(\lambda\) + Λ. • \(\lambda\) против Λ. Обратите внимание, что размер сообщений, отправленных проверяющими на этапе Algorand ′, доминирует. длиной ключей цифровой подписи, которая может оставаться фиксированной, даже если число пользователей огромно. Также обратите внимание, что на любом шаге s > 1 одно и то же ожидаемое количество n проверяющих может использоваться независимо от того, составляет ли количество пользователей 100 тыс., 100 млн или 100 млн. Это так, потому что n исключительно зависит от h и F. Таким образом, в целом, если не считать внезапной необходимости увеличить длину секретного ключа, значение \(\lambda\) должно оставаться неизменным независимо от того, насколько велико количество пользователей в сети. обозримое будущее. Напротив, при любой скорости транзакций количество транзакций растет с увеличением количества пользователи. Следовательно, для своевременной обработки всех новых транзакций размер блока должен также растут вместе с числом пользователей, в результате чего Λ тоже растет. Таким образом, в долгосрочной перспективе мы должны иметь \(\lambda\) << Λ. Соответственно, правильно иметь больший коэффициент для \(\lambda\), и фактически коэффициент 1 для Λ. Доказательство теоремы 5.1. Свойства 1–3 докажем по индукции: предполагая, что они выполняются для раунда r −1 (без ограничения общности они автоматически справедливы для «раунда -1» при r = 0), докажем их для круглый р. 18Действительно, E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10)\(\lambda\) + Λ.Поскольку Br−1 однозначно определяется по предположению индукции, множество SV r,s однозначно определяется для каждого шага s раунда r. По выбору n1 SV r,1 ̸= \(\emptyset\) с подавляющей вероятностью. Мы сейчас сформулируйте следующие две леммы, доказанные в разделах 5.7 и 5.8. На протяжении всей индукции и в доказательства двух лемм, анализ для раунда 0 практически аналогичен индуктивному шагу, и мы выделим различия, когда они возникнут. Лемма 5.2. [Лемма о полноте] Предполагая, что свойства 1–3 выполняются для раунда r−1, когда лидер \(\ell\)r честен, с подавляющей вероятностью, • Все честные пользователи соглашаются на один и тот же блок Br, который генерируется \(\ell\)r и содержит максимальное набор выплат, полученный \(\ell\)r к моменту времени \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; и • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ и все честные пользователи знают Br в интервале времени Ir+1. Лемма 5.3. [Лемма о надежности] Предполагая, что свойства 1–3 выполняются для раунда r −1, когда лидер \(\ell\)r является вредоносным, с подавляющей вероятностью все честные пользователи согласны с одним и тем же блоком Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ и все честные пользователи знают Br на интервале времени Ir+1. Свойства 1–3 выполняются при применении лемм 5.2 и 5.3 к r = 0 и индуктивному шагу. Наконец, переформулируем свойство 4 в виде следующей леммы, доказанной в разделе 5.9. Лемма 5.4. Учитывая свойства 1–3 для каждого раунда до r, ph = h2(1 + h −h2) для Lr и лидер \(\ell\)r честен с вероятностью не менее тел. Объединив вместе предыдущие три леммы, теорема 5.1 верна. ■ В приведенной ниже лемме утверждается несколько важных свойств раунда r с учетом индуктивности. гипотезу и будет использоваться при доказательстве трех приведенных выше лемм. Лемма 5.5. Предположим, что свойства 1–3 выполняются для раунда r−1. Для каждого шага s \(\geq\)1 раунда r и каждого честного проверяющего i \(\in\)HSV r,s, мы имеем, что (а) \(\alpha\)r,s я €Ир; (б) если игрок i ждал некоторое время ts, то \(\beta\)r,s я \(\in\)[T r + ts, Tr + \(\lambda\) + ts] для r > 0 и \(\beta\)р,с я = ts для r = 0; и (c) если игрок i ждал некоторое время ts, то к времени \(\beta\)r,s я, он получил все сообщения отправлено всеми честными проверяющими j \(\in\)HSV r,s′ для всех шагов s′ < s. Более того, для каждого шага s \(\geq\)3 имеем (г) не существует двух разных игроков i, i′ \(\in\)SV r,s и двух разных значений v, v′ одного и того же такой длины, что оба игрока ждали время ts, более 2/3 всех действительные сообщения mr,s-1 дж игрок, которого я получаю, подписался на v, и более 2/3 всех действительных сообщения г-н, с-1 дж игрок i' получает, подписался на v'. Доказательство. Свойство (a) следует непосредственно из индуктивного предположения, поскольку игрок i знает Br−1 в интервал времени Ir и сразу же начинает свой собственный шаг s. Свойство (б) непосредственно следует из (а): поскольку игрок i ждал некоторое время ts, прежде чем действовать, \(\beta\)r,s я = \(\alpha\)r,s я + ц. Заметим, что \(\alpha\)r,s я = 0 для р = 0. Теперь мы докажем свойство (в). Если s = 2, то по свойству (б) для всех верификаторов j \(\in\)HSV r,1 имеем \(\beta\)р,с я = \(\alpha\)r,s я + ts \(\geq\)T r + ts = Tr + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 дж + Л.Поскольку каждый верификатор j \(\in\)HSV r,1 отправляет свое сообщение в момент времени \(\beta\)r,1 дж и сообщение дойдет до всех честных пользователей не более чем за Λ время, за время \(\beta\)r,s я Игрок i получил сообщения, отправленные всеми верификаторами в HSV r,1 по желанию. Если s > 2, то ts = ts−1 + 2\(\lambda\). По свойству (b) для всех шагов s′ < s и всех верификаторов j \(\in\)HSV r,s′ \(\beta\)р,с я = \(\alpha\)r,s я + ts \(\geq\)T r + ts = Tr + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = Tr + \(\lambda\) + ts′ + \(\lambda\) \(\geq\) \(\beta\)r,s′ дж + \(\lambda\). Поскольку каждый верификатор j \(\in\)HSV r,s′ отправляет свое сообщение в момент времени \(\beta\)r,s′ дж и сообщение дойдет до всех честных пользователей не более чем за \(\lambda\) время, за время \(\beta\)r,s я игрок i получил все сообщения, отправленные всеми честными проверяющими в HSV r,s′ для всех s′ < s. Таким образом, свойство (c) выполнено. Наконец, мы докажем свойство (d). Обратите внимание, что верификаторы j \(\in\)SV r,s−1 подписывают не более двух вещей в Шаг s-1 с использованием их эфемерных секретных ключей: значение vj той же длины, что и выходные данные hash, а также бит bj \(\in\){0, 1}, если s−1 \(\geq\)4. Поэтому в формулировке леммы мы требуем, чтобы v и v' имели одинаковую длину: многие верификаторы могли подписать оба значения hash v и бит b, таким образом, оба проходят порог 2/3. Предположим от противного, что существуют искомые верификаторы i, i' и значения v, v'. Обратите внимание, что некоторые злонамеренные проверяющие в MSV r,s-1 могли подписать как v, так и v', но каждый честный верификатор в HSV r,s−1 подписал не более одного из них. По свойству (c) и i, и i′ получили все сообщения, отправленные всеми честными проверяющими в HSV r,s-1. Пусть HSV r,s−1(v) — множество честных (r, s−1)-верификаторов, подписавших v, MSV r,s−1 я набор злонамеренных (r, s−1)-верификаторов, от которых i получил допустимое сообщение, и MSV r,s−1 я (v) подмножество MSV r,s−1 я от которого я получил действительную подпись сообщения v. По требованиям к я и в, у нас есть отношение \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 я (в)| |HSV r,s−1| + |MSV r,s−1 я |

2 3. (1) Мы сначала показываем |MSV r,s−1 я (в)| \(\leq\)|HSV r,s−1(v)|. (2) Если предположить обратное, то по соотношениям параметров с подавляющей вероятностью |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 я |, таким образом отношение < |HSV r,s−1(v)| + |MSV r,s−1 я (в)| 3|MSV r,s−1 я | < 2|MSV r,s−1 я (в)| 3|MSV r,s−1 я | \(\leq\)2 3, противоречит неравенству 1. Далее, по неравенству 1 имеем 2|HSV r,s−1| + 2|MSV r,s−1 я | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 я (в)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 я | + |MSV r,s−1 я (в)|. В сочетании с неравенством 2, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 я (в)| \(\leq\)4|HSV r,s−1(v)|, что подразумевает |HSV r,s−1(v)| > 1 2|HSV r,s−1|.Аналогично, согласно требованиям к i′ и v′, имеем |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. Поскольку честный проверяющий j \(\in\)HSV r,s−1 уничтожает свой эфемерный секретный ключ skr,s−1 дж перед распространением свое сообщение, Противник не может подделать подпись j для значения, которое j не подписывал, после узнав, что j является проверяющим. Таким образом, из двух приведенных выше неравенств следует |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|, противоречие. Соответственно, искомых i, i′, v, v′ не существует, и Свойство (d) выполнено. ■ 5,7 Лемма о полноте Лемма 5.2. [Лемма о полноте, переформулированная] Предполагая, что свойства 1–3 выполняются для раунда r−1, когда лидер \(\ell\)r честен, с подавляющей вероятностью, • Все честные пользователи соглашаются на один и тот же блок Br, который генерируется \(\ell\)r и содержит максимальное набор выплат, полученный \(\ell\)r к моменту времени \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; и • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ и все честные пользователи знают Br в интервале времени Ir+1. Доказательство. По индуктивному предположению и лемме 5.5 для каждого шага s и верификатора i \(\in\)HSV r,s \(\alpha\)r,s я €Ир. Ниже мы шаг за шагом анализируем протокол. Шаг 1. По определению, каждый честный проверяющий i \(\in\)HSV r,1 распространяет желаемое сообщение mr,1 я в время \(\beta\)r,1 я = \(\alpha\)r,1 я, где мистер, 1 я = (Бр i , esigi(H(Br i ))), \(\sigma\)r,1 я ), Бр i = (r, PAY r i , SIGi(Qr−1), H(Br−1)), и ПЛАТИТЬ р i — максимальный набор выплат среди всех платежей, которые я видел к моменту времени \(\alpha\)r,1 я. Шаг 2. Произвольно зафиксируем честный проверяющий элемент i \(\in\)HSV r,2. По лемме 5.5, когда игрок i закончил ожидание во время \(\beta\)r,2 я = \(\alpha\)r,2 я + t2, он получил все сообщения, отправленные верификаторами в HSV r,1, включая мистер, 1 \(\ell\)р. По определению \(\ell\)r, в PKr-k не существует другого игрока, чьи полномочия hash значение меньше, чем H(\(\sigma\)r,1 \(\ell\)р). Конечно, Противник может испортить \(\ell\)r, увидев, что H(\(\sigma\)r,1 \(\ell\)р) очень мал, но к этому моменту игрок \(\ell\)r уничтожил свой эфемерный ключ и сообщение mr,1 \(\ell\)р был распространен. Таким образом, проверяющий i назначает своим лидером игрока \(\ell\)r. Соответственно, в момент времени \(\beta\)r,2 я, проверяющий i распространяет mr,2 я = (ESIGi(v′ i), \(\sigma\)r,2 i ), где v′ я = H(Br \(\ell\)р). Когда r = 0, единственная разница это \(\beta\)r,2 я = t2, а не находиться в диапазоне. То же самое можно сказать и о будущих шагах, и мы не буду подчеркивать их снова. Шаг 3. Произвольно зафиксируем честный проверяющий элемент i \(\in\)HSV r,3. По лемме 5.5, когда игрок i закончил ожидание во время \(\beta\)r,3 я = \(\alpha\)r,3 я + t3, он получил все сообщения, отправленные верификаторами в HSV r,2. По соотношениям параметров с подавляющей вероятностью |HSV r,2| > 2|МСВ г,2|. Более того, ни один честный проверяющий не стал бы подписывать противоречивые сообщения, а Противник не может подделать подпись честного проверяющего после того, как последний уничтожил свою соответствующую подпись. эфемерный секретный ключ. Таким образом, более 2/3 всех действительных (r, 2)-сообщений, которые я получил, поступили от честные проверяющие и в форме mr,2 дж = (ESIGj(H(Br \(\ell\)r)) \(\sigma\)r,2 j ), без противоречия. Соответственно, в момент времени \(\beta\)r,3 я Игрок я распространяет мистера, 3 я = (ESIGi(v′), \(\sigma\)r,3 i ), где v′ = H(Br \(\ell\)р).Шаг 4. Произвольно зафиксируем честный проверяющий элемент i \(\in\)HSV r,4. По лемме 5.5 игрок i получил все сообщения, отправленные верификаторами в HSV r,3, когда он закончил ожидание в момент времени \(\beta\)r,4 я = \(\alpha\)r,4 я + т4. Похоже на: Шаг 3: более 2/3 всех действительных (r, 3)-сообщений, которые я получил, получены от честных проверяющих и формы г-н,3 дж = (ESIGj(H(Br \(\ell\)r)) \(\sigma\)r,3 дж). Соответственно, игрок i устанавливает vi = H(Br \(\ell\)r), gi = 2 и bi = 0. В момент времени \(\beta\)r,4 я = \(\alpha\)r,4 я +t4 он размножается мистер, 4 я = (ESIGi(0), ESIGi(H(Br \(\ell\)r)) \(\sigma\)r,4 я). Шаг 5. Произвольно зафиксируем честный проверяющий элемент i \(\in\)HSV r,5. По лемме 5.5 у меня был бы игрок получил все сообщения, отправленные верификаторами в HSV r,4, если он дождался времени \(\alpha\)r,5 я + т5. Обратите внимание, что |HSV р,4| \(\geq\)tH.19 Также обратите внимание, что все верификаторы в HSV r,4 подписались за H(Br \(\ell\)р). Так как |MSV r,4| < tH, не существует v′ ̸= H(Br \(\ell\)r), который мог быть подписан tH проверяющие в SV r,4 (которые обязательно будут злонамеренными), поэтому игрок i не останавливается, пока не получил действительные сообщения г-н, 4 дж = (ESIGj(0), ESIGj(H(Br \(\ell\)r)) \(\sigma\)r,4 дж). Пусть Т — время, когда происходит последнее событие. Некоторые из этих сообщений могут исходить от злонамеренных игроков, но поскольку |МСВ р,4| < tH, хотя бы одно из них от честного верификатора в HSV r,4 и отправлено спустя время Т р +t4. Соответственно, T \(\geq\)T r +t4 > Tr +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, и к моменту T игрок i также получил сообщение мистер 1 \(\ell\)р. По построению протокола игрок i останавливается в момент \(\beta\)r,5 я = Т без пропаганда чего-либо; устанавливает Br = Br \(\ell\)р; и устанавливает свой собственный CERT r как набор (r, 4)-сообщений для 0 и H(Br \(\ell\)r), что он получил. Шаг s > 5. Аналогично, для любого шага s > 5 и любого проверяющего i \(\in\)HSV r,s игрок i будет иметь получил все сообщения, отправленные верификаторами в HSV r,4, если он дождался времени \(\alpha\)r,s я + ц. По тот же анализ, игрок i останавливается, ничего не распространяя, устанавливая Br = Br \(\ell\)r (и устанавливая свой собственный CERT r правильно). Конечно, злонамеренные верификаторы могут не останавливаться и распространять произвольные сообщений, но поскольку |MSV r,s| < tH, по индукции никакое другое v' не может быть подписано проверяющими tH на любом шаге 4 \(\leq\)s' < s, таким образом, честные проверяющие останавливаются только потому, что они получили действительный результат. (r, 4)-сообщения для 0 и H(Br \(\ell\)р). Реконструкция блока «Раунд-р». Анализ шага 5 применим к общему честному пользователь i почти без каких-либо изменений. Действительно, игрок i начинает свой раунд r в интервале Ir и остановится в момент T только тогда, когда он получит tH действительных (r, 4)-сообщений для H(Br \(\ell\)р). Опять же, потому что хотя бы одно из этих сообщений отправлено честными проверяющими и отправлено через время T r + t4, игрок i имеет также получил мистер 1 \(\ell\)r на время T. Таким образом, он устанавливает Br = Br \(\ell\)r с соответствующим CERT r. Осталось только показать, что все честные пользователи завершают свой раунд r за интервал времени Ir+1. Согласно анализу шага 5, каждый честный проверяющий i \(\in\)HSV r,5 знает Br на или раньше \(\alpha\)r,5 я + t5 \(\leq\) Т r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ. Поскольку T r+1 — это момент, когда первый честный пользователь ir узнает Br, мы имеем Т r+1 \(\leq\)T r + 8\(\lambda\) + Λ по желанию. Более того, когда игрок знает Br, он уже помогает распространять сообщения в его CERT р. Обратите внимание, что все эти сообщения будут получены всеми честными пользователями в течение времени \(\lambda\), даже если 19Строго говоря, это происходит с очень высокой вероятностью, но не обязательно ошеломляющей. Однако это вероятность незначительно влияет на время работы протокола, но не влияет на его корректность. Когда h = 80%, то |HSV р,4| \(\geq\)tH с вероятностью 1−10−8. Если это событие не произойдет, протокол продолжится еще 3 шага. Поскольку вероятность того, что это не произойдет за два шага, ничтожна, протокол завершится на шаге 8. ожидание, то количество необходимых шагов будет почти 5.игрок ir был первым игроком, который их распространил. Более того, согласно приведенному выше анализу, мы имеем Т r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, таким образом, все честные пользователи получили mr,1 \(\ell\)r по времени T r+1 + \(\lambda\). Соответственно, все честные пользователи знают Br в интервале времени Ir+1 = [T r+1, T r+1 + \(\lambda\)]. Наконец, при r = 0 фактически имеем T 1 ⩽t4 + \(\lambda\) = 6\(\lambda\) + Λ. Соединив всё воедино, Лемма 5.2 справедлива. ■ 5,8 Лемма о разумности Лемма 5.3. [Лемма о правильности, переформулированная] Предполагая, что свойства 1–3 выполняются для раунда r −1, когда лидер \(\ell\)r является вредоносным, с подавляющей вероятностью все честные пользователи соглашаются на один и тот же блок Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ, и все честные пользователи знают Br на интервале времени Ir+1. Доказательство. Мы рассматриваем две части протокола, GC и BBA⋆, отдельно. ГК. По индуктивному предположению и лемме 5.5 для любого шага s \(\in\){2, 3, 4} и любого честного верификатор i \(\in\)HSV r,s, когда игрок i действует в момент времени \(\beta\)r,s я = \(\alpha\)r,s я + тс, он получил все отправленные сообщения всеми честными проверяющими на шагах s' < s. Выделим два возможных случая для шага 4. Случай 1. Ни один верификатор i \(\in\)HSV r,4 не устанавливает gi = 2. В этом случае по определению bi = 1 для всех верификаторов i \(\in\)HSV r,4. То есть они начинаются с соглашение о 1 в бинарном протоколе BA. У них может не быть согласия по поводу их VI, но это не имеет значения, как мы увидим в двоичном BA. Случай 2. Существует верификатор ˆi \(\in\)HSV r,4 такой, что gˆi = 2. В данном случае мы показываем, что (1) gi \(\geq\)1 для всех i \(\in\)HSV r,4, (2) существует значение v′ такое, что vi = v′ для всех i \(\in\)HSV r,4, и (3) существует допустимое сообщение mr,1 \(\ell\) из некоторого верификатора \(\ell\) \(\varepsilon\)SV r,1 такого, что v′ = H(Br \(\ell\)). Действительно, поскольку игрок ˆi честен и устанавливает gˆi = 2, более 2/3 всех действительных сообщений mr,3 дж он получил для того же значения v′ ̸= \(\bot\) и установил vˆi = v′. По свойству (d) леммы 5.5 для любого другого честного (r, 4)-верификатора i не может быть более чем 2/3 всех действительных сообщений mr,3 дж которые i' получил, относятся к одному и тому же значению v'' ̸= v'. Соответственно, если я устанавливаю gi = 2, должно быть так, что я также видел > 2/3 большинства для v 'и установил vi = v', по желанию. Теперь рассмотрим произвольный верификатор i \(\in\)HSV r,4 с gi < 2. Аналогично анализу свойства (d) в лемме 5.5, поскольку игрок ˆi получил большинство > 2/3 за v′, более 1 2|HSV г,3| честный (r, 3)-верификаторы имеют знак v'. Поскольку я получил все сообщения от честных (r, 3)-верификаторов время \(\beta\)r,4 я = \(\alpha\)r,4 я + t4, в частности он получил более 1 2|HSV г,3| сообщения от них для v'. Поскольку |HSV r,3| > 2|MSV r,3|, я набрал > 1/3 большинства за v'. Соответственно, игрок я устанавливаю gi = 1, и свойство (1) выполняется. Обязательно ли игрок i устанавливает vi = v′? Предположим, что существует другое значение v′′ ̸= \(\bot\) такое, что игрок i также получил большинство в > 1/3 за v''. Некоторые из этих сообщений могут быть от вредоносного верификаторов, но по крайней мере один из них принадлежит какому-то честному верификатору j \(\in\)HSV r,3: действительно, поскольку |HSV г,3| > 2|МСВ г,3| и я получил все сообщения от HSV r,3, набора вредоносных верификаторы, от которых я получил валидное (r, 3)-сообщение, составляют <1/3 всех валидных сообщений. сообщения, которые он получил.По определению, игрок j должен был видеть > 2/3 большинства для v'' среди всех действительных (r, 2)-сообщений. он получил. Однако мы уже знаем, что некоторые другие честные (r, 3)-верификаторы видели 2/3 большинства за v' (потому что они подписались v'). По свойству (г) леммы 5.5 это не может случаются, и такого значения v'' не существует. Таким образом, игрок i должен установить vi = v′ по своему желанию, и свойство (2) выполнено. Наконец, учитывая, что некоторые честные (r, 3)-верификаторы получили большинство > 2/3 для v', некоторые (фактически, более половины) честных (r, 2)-верификаторов подписались за v' и распространили свои сообщения. Согласно построению протокола, эти честные (r, 2)-верификаторы должны были получить действительный сообщение, мистер 1 \(\ell\) от некоторого игрока \(\ell\) \(\varepsilon\)SV r,1 такого, что v′ = H(Br \(\ell\)), поэтому свойство (3) выполнено. ББА⋆. Мы снова различаем два случая. Случай 1. Все верификаторы i \(\in\)HSV r,4 имеют bi = 1. Это происходит после случая 1 GC. Так как |MSV r,4| < tH, в этом случае верификатора в SV r,5 нет. мог бы собрать или сгенерировать tH действительных (r, 4)-сообщений для бита 0. Таким образом, ни один честный верификатор в HSV r,5 остановился бы, потому что знает непустой блок Бр. Более того, хотя для бита 1 существует не менее tH допустимых (r, 4)-сообщений, s′ = 5 не удовлетворяет s′ −2 ≡1 mod 3, поэтому ни один честный проверяющий в HSV r,5 не остановится, потому что он знает Br = Br й. Вместо этого каждый верификатор i \(\in\)HSV r,5 действует в момент времени \(\beta\)r,5 я = \(\alpha\)r,5 я + t5, когда он получит все сообщения, отправленные HSV r,4 согласно лемме 5.5. Таким образом, игрок i получил большинство в 2/3 за 1. и устанавливает bi = 1. На шаге 6, который представляет собой шаг с фиксированной монетой до 1, хотя s′ = 5 удовлетворяет условию s′ −2 ≡0 mod 3, существует не существует действительных (r, 4)-сообщений для бита 0, поэтому ни один верификатор в HSV r,6 не остановится, потому что он знает непустой блок Бр. Однако при s′ = 6 s′ −2 ≡1 mod 3 и существуют |HSV р,5| \(\geq\)tH действительных (r,5)-сообщений для бита 1 из HSV r,5. Для каждого верификатора i \(\in\)HSV r,6, согласно лемме 5.5, в момент времени \(\alpha\)r,6 или раньше я + игрок t6 я получил все сообщения от HSV r,5, поэтому останавливаюсь, ничего не распространяя, и устанавливаю Бр = Бр й. Его CERT r представляет собой набор действительных (r, 5)-сообщений mr,5. дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 к) получено им, когда он останавливается. Далее, пусть игрок i будет либо честным проверяющим на шаге s > 6, либо обычным честным пользователем (т. е. не проверяющий). Аналогично доказательству леммы 5.2, игрок i устанавливает Br = Br ǫ и устанавливает свой собственный CERT r — набор действительных (r, 5)-сообщений mr,5. дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 к) у него есть получил. Наконец, аналогично лемме 5.2, Т р+1 \(\leq\) мин i\(\varepsilon\)HSV r,6 \(\alpha\)r,6 я + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, и все честные пользователи знают Br в интервале времени Ir+1, потому что первый честный пользователь i, который знает, что Br помог распространить (r, 5)-сообщения в своем CERT r. Случай 2. Существует верификатор ˆi \(\in\)HSV r,4 такой, что bˆi = 0. Это происходит после случая 2 GC и является более сложным случаем. По анализу GC, в этом случае существует допустимое сообщение mr,1 \(\ell\) такая, что vi = H(Br \(\ell\)) для всех i \(\in\)HSV r,4. Примечание что верификаторы в HSV r,4 могут не прийти к согласию относительно своих bi. Для любого шага s \(\in\){5, . . . , m + 3} и проверяющий i \(\in\)HSV r,s, по лемме 5.5 игроку я бы получил все сообщения, отправленные всеми честными проверяющими в HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1, если он дождался за время ц.Теперь рассмотрим следующее событие E: существует шаг s∗\(\geq\)5 такой, что для первого время в двоичном BA, какой-то игрок i∗\(\varepsilon\)SV r,s∗ (злонамеренный или честный) должен остановиться ничего не пропагандируя. Мы используем слово «следует остановиться», чтобы подчеркнуть тот факт, что, если игрок i∗ злонамерен, то он может сделать вид, что не должен останавливаться по протоколу и распространять сообщения по выбору Противника. Более того, по построению протокола либо (E.a) i∗ способен собирать или генерировать не менее tH действительных сообщений mr,s′−1 дж = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 дж ) для тех же v и s′, при этом 5 \(\leq\)s′ \(\leq\)s∗ и s′ −2 ≡0 mod 3; или (E.b) i∗ способен собирать или генерировать не менее tH действительных сообщений mr,s′−1 дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 дж ) для того же s′, где 6 \(\leq\)s′ \(\leq\)s∗ и s′ −2 ≡1 mod 3. Поскольку честные (r, s′ −1)-сообщения принимаются всеми честными (r, s′)-верификаторами до того, как они закончились ожидания в Шагах s', и поскольку Противник получает все не позднее, чем честные пользователи, без ограничения общности имеем s′ = s∗ и игрок i∗ является злонамеренным. Обратите внимание, что мы не требовали, чтобы значение v в E.a было hash допустимого блока: как станет ясно при анализе v = H(Br \(\ell\)) в этом подсобытии. Ниже мы сначала анализируем случай 2, следующий за событием E, а затем показываем, что значение s∗ существенно распределяется соответственно Lr (таким образом, событие E происходит до шага m + 3 с подавляющим вероятность с учетом соотношений параметров). Начнем с того, что для любого шага 5 \(\leq\)s < s∗ каждый честный проверяющий i \(\in\)HSV r,s ждал время ts и установил vi как большинство голосов действительные (r, s−1)-сообщения, которые он получил. Поскольку игрок i получил все честные (r, s−1)-сообщения следуя лемме 5.5, поскольку все честные верификаторы в HSV r,4 имеют подпись H(Br \(\ell\)) следующий случай 2 GC, и поскольку |HSV r,s−1| > 2|MSV r,s−1| для каждого s по индукции мы имеем игрока i установил vi = H(Br \(\ell\)). То же самое справедливо для каждого честного проверяющего i \(\in\)HSV r,s∗, который не останавливается, не распространяя что угодно. Теперь рассмотрим шаг s∗ и выделим четыре подслучая. Случай 2.1.а. Событие E.a происходит и существует честный проверяющий i′ \(\in\)HSV r,s∗, который должен также остановиться, ничего не пропагандируя. В этом случае мы имеем s∗−2 ≡0 mod 3 и шаг s∗ — это шаг с фиксированной монетой до 0. Автор Согласно определению, игрок i получил не менее tH действительных (r, s∗−1)-сообщений вида (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 дж ). Поскольку все верификаторы в HSV r,s∗−1 имеют знак H(Br \(\ell\)) и |MSV r,s∗−1| < tH, имеем v = H(Br \(\ell\)). Поскольку хотя бы tH −|MSV r,s∗−1| \(\geq\)1 (r, s∗−1)-сообщений, полученных i′ для 0 и v отправляются верификаторами в HSV r,s∗−1 через время T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\) +Λ, игрок i' получил мистера, 1 \(\ell\) к тому моменту, когда он получит эти (r, s∗−1)-сообщения. Таким образом, игрок я останавливаюсь, ничего не распространяя; устанавливает Br = Br \(\ell\); и устанавливает свой CERT r в качестве набор действительных (r, s∗−1)-сообщений для 0 и v, которые он получил. Далее мы покажем, что любой другой верификатор i \(\in\)HSV r,s∗ либо остановился с Br = Br \(\ell\), или установил bi = 0 и распространил (ESIGi(0), ESIGi(H(Br \(\ell\))) \(\sigma\)r,s я). Действительно, поскольку шаг s∗ это первый раз, когда какой-то верификатор должен остановиться, ничего не распространяя, здесь нет существует шаг s′ < s∗ с s′ −2 ≡1 mod 3 такой, что tH (r, s′ −1)-верификаторы имеют знак 1. Соответственно, ни один верификатор в HSV r,s∗ не останавливается с Br = Br й.Более того, поскольку все честные проверяющие на этапах {4, 5, . . . , s∗−1} имеют знак H(Br \(\ell\)), есть не существует шага s′ \(\leq\)s∗ с s′ −2 ≡0 mod 3 такого, что tH (r, s′ −1)-верификаторы подписались некоторый v′′ ̸= H(Br \(\ell\)) — действительно, |MSV r,s′−1| < тХ. Соответственно, ни один верификатор в HSV r,s∗ не останавливает где Br ̸= Br ϫ и Br ̸= Br \(\ell\). То есть, если игрок i \(\in\)HSV r,s∗ остановился без распространяя что-либо, он, должно быть, установил Br = Br \(\ell\). Если игрок i \(\in\)HSV r,s∗ ждал время ts∗ и распространил сообщение в момент времени \(\beta\)r,s∗ я = \(\alpha\)r,s∗ я + ts∗, он получил все сообщения от HSV r,s∗−1, включая как минимум tH −|MSV r,s∗−1| из них для 0 и v. Если я видел > 2/3 большинства за 1, то он видел более 2(tH −|MSV r,s∗−1|) допустимых (r, s∗−1)-сообщений для 1, причем более чем 2tH−3|MSV r,s∗−1| из них от честных (r, s∗−1)-верификаторов. Однако это подразумевает |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, что противоречит тот факт, что |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n, который исходит из отношений для параметров. Соответственно я не вижу > 2/3 большинство за 1, и он устанавливает bi = 0, поскольку шаг s∗ — это шаг с фиксированной монетой до 0. Как у нас есть видно, vi = H(Br \(\ell\)). Таким образом, i распространяет (ESIGi(0), ESIGi(H(Br \(\ell\))) \(\sigma\)r,s я) как мы и хотели показать. Для шага s∗+ 1, поскольку игрок i′ помог распространить сообщения в своем CERT r не позднее времени \(\alpha\)r,s∗ я' + ts∗, все честные проверяющие в HSV r,s∗+1 получили как минимум tH допустимых (r, s∗−1)-сообщений для бита 0 и значения H(Br \(\ell\)) не позднее, чем они будут готовы ожидание. Более того, верификаторы в HSV r,s∗+1 не остановятся, пока не получат те (r, s∗−1)- сообщений, поскольку не существует других действительных (r, s′ −1)-сообщений для бита 1 с s′ −2 ≡1 mod 3 и 6 \(\leq\)s′ \(\leq\)s∗+ 1 по определению шага s∗. В частности, Шаг s∗+ 1 сам по себе является шагом Coin-Fixed-To-1, но ни один честный верификатор в HSV r,s∗ не распространил сообщение для 1 и |MSV r,s∗| < тХ. Таким образом, все честные верификаторы в HSV r,s∗+1 останавливаются, ничего не распространяя, и устанавливают Br = Бр \(\ell\): как и прежде, они получили г-н,1 \(\ell\) прежде чем они получат желаемые (r, s∗−1)-сообщения.20 То же самое можно сказать обо всех честных верификаторах будущих шагов и обо всех честных пользователях в целом. В частности, все они знают Br = Br \(\ell\)в интервале времени Ir+1 и Т r+1 \(\leq\) \(\alpha\)r,s∗ я' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Случай 2.1.б. Событие E.b происходит и существует честный проверяющий i′ \(\in\)HSV r,s∗, который должен также остановиться, ничего не пропагандируя. В этом случае мы имеем s∗−2 ≡1 mod 3 и шаг s∗ — это шаг с фиксированной монетой до 1. Анализ аналогичен случаю 2.1.а, но многие детали опущены. 20Если он злонамерен, он может послать господина,1 \(\ell\) поздно, надеясь, что некоторые честные пользователи/верификаторы не получили mr,1 \(\ell\) еще когда они получат за это желаемый сертификат. Однако, поскольку верификатор ˆi \(\in\)HSV r,4 установил bˆi = 0 и vˆi = H(Br \(\ell\)), как прежде чем мы увидим, что более половины честных проверяющих i \(\in\)HSV r,3 установили vi = H(Br \(\ell\)). Это далее подразумевает больше более половины честных проверяющих i \(\in\)HSV r,2 установили vi = H(Br \(\ell\)), и все эти (r, 2)-верификаторы получили mr,1 \(\ell\). Как Злоумышленник не может отличить проверяющего от непроверяющего, он не может нацелиться на распространение mr,1 \(\ell\) к (r, 2)-верификаторам так, чтобы это не увидели те, кто не проверял. На самом деле, с большой вероятностью, более половины (или хорошая постоянная доля) всех честных пользователей видели mr,1 \(\ell\) после ожидания t2 с начала своего раунда r. С этого момента время \(\lambda\)′, необходимое для mr,1 \(\ell\) чтобы охватить оставшихся честных пользователей, намного меньше Λ, и для простоты мы не напишите это в анализе. Если 4\(\lambda\) \(\geq\) \(\lambda\)′, то анализ проходит без изменений: к концу шага 4 все честные пользователи получили бы mr,1 \(\ell\). Если размер блока становится огромным и 4\(\lambda\) < \(\lambda\)′, то на шагах 3 и 4 протокол может попросить каждого проверяющего дождаться \(\lambda\)'/2, а не 2\(\lambda\), и анализ продолжится.Как и раньше, игрок i′ должен получить не менее tH действительных (r, s∗−1)-сообщений вида (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 дж ). Опять же, по определению s∗, не существует шага 5 \(\leq\)s′ < s∗ с s′ −2 ≡0 mod 3, где по крайней мере tH (r, s′ −1)-верификаторов имеют знак 0 и тот же v. Таким образом, игрок i' останавливается, ничего не распространяя; устанавливает Br = Br й; и наборы его собственный CERT r — это набор действительных (r, s∗−1)-сообщений для бита 1, которые он получил. Более того, любой другой верификатор i \(\in\)HSV r,s∗ либо остановился с Br = Br ϫ или установил bi = 1 и распространяется (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ я ). Поскольку игрок i' способствовал распространению (r, s∗−1)-сообщения в его CERT r к моменту времени \(\alpha\)r,s∗ я' + ts∗, снова все честные проверяющие в HSV r,s∗+1 останавливаемся, ничего не распространяя, и устанавливаем Br = Br й. Аналогично, все честно пользователи знают Br = Br ϫ в интервале времени Ir+1 и Т r+1 \(\leq\) \(\alpha\)r,s∗ я' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Случай 2.2.а. Событие E.a происходит, и не существует честного проверяющего i′ \(\in\)HSV r,s∗, который также должен остановиться, ничего не распространяя. В этом случае обратите внимание, что игрок i∗ может иметь действительный CERT r i∗состоящий из желаемого tH (r, s∗−1)-сообщения, которые Противник может собирать или генерировать. Однако злонамеренный проверяющие могут не способствовать распространению этих сообщений, поэтому мы не можем заключить, что честный пользователи получат их за время \(\lambda\). В самом деле, |MSV r,s∗−1| из этих сообщений могут быть от злонамеренные (r, s∗−1)-верификаторы, которые вообще не распространяли свои сообщения, а только отправляли их злонамеренным проверяющим на этапе s∗. Как и в случае 2.1.a, здесь мы имеем s∗−2 ≡0 mod 3, шаг s∗ — это шаг с фиксированной монетой до 0, и (r, s∗−1)-сообщения в CERT r i∗ относятся к биту 0 и v = H(Br \(\ell\)). Действительно, все честно (r, s∗−1)-верификаторы знака v, поэтому Противник не может сгенерировать tH действительных (r, s∗−1)-сообщений для другого v'. Более того, все честные (r, s∗)-верификаторы дождались времени ts∗ и не увидели > 2/3 большинства для бита 1, опять же потому, что |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2н. Таким образом, каждый честный проверяющий i \(\in\)HSV r,s∗sets bi = 0, vi = H(Br \(\ell\)) большинством голосов и распространяет mr,s∗ я = (ESIGi(0), ESIGi(H(Br \(\ell\))) \(\sigma\)r,s∗ я ) в момент времени \(\alpha\)r,s∗ я + тс∗. Теперь рассмотрим честных проверяющих на шаге s∗+ 1 (это шаг с фиксированной монетой до 1). Если Злоумышленник фактически отправляет сообщения в CERT r. i∗ к некоторым из них и заставляет их стоп, тогда аналогично случаю 2.1.а все честные пользователи знают Br = Br \(\ell\)в пределах временного интервала ИК+1 и Т r+1 \(\leq\)T r + \(\lambda\) + ts∗+1. В противном случае все честные проверяющие на шаге s∗+1 получили все (r, s∗)-сообщения для 0 и Ч(Бр \(\ell\)) от HSV r,s∗ после времени ожидания ts∗+1, что приводит к большинству > 2/3, поскольку |HSV r,s∗| > 2|MSV r,s∗|. Таким образом, все верификаторы в HSV r,s∗+1 распространяют свои сообщения для 0 и H(Br \(\ell\)) соответственно. Обратите внимание, что верификаторы в HSV r,s∗+1 не останавливаются на Br = Br. \(\ell\), потому что шаг s∗+ 1 не является шагом с фиксированной монетой до 0. Теперь рассмотрим честных проверяющих на шаге s∗+2 (который является шагом подбрасывания монеты). Если злоумышленник отправляет сообщения в CERT r i∗ к некоторым из них и заставляет их остановиться, опять же все честные пользователи знают Бр = Бр \(\ell\)в интервале времени Ir+1 и Т r+1 \(\leq\)T r + \(\lambda\) + ts∗+2.В противном случае все честные проверяющие на шаге s∗+ 2 получили все (r, s∗+ 1)-сообщения для 0 и H(Br \(\ell\)) от HSV r,s∗+1 после времени ожидания ts∗+2, что приводит к большинству > 2/3. Таким образом, все они распространяют свои сообщения для 0 и H(Br \(\ell\)) соответственно: вот они и делают в данном случае не стоит «подбрасывать монетку». Опять же, обратите внимание, что они не прекращаются, не распространяясь. потому что шаг s∗+ 2 не является шагом с фиксированной монетой до 0. Наконец, для честных проверяющих на этапе s∗+3 (который является еще одним шагом Coin-Fixed-To-0) все из них получили бы как минимум tH действительных сообщений для 0 и H(Br \(\ell\)) из HSV s∗+2, если они действительно ждут время ts∗+3. Таким образом, независимо от того, отправляет ли Противник сообщения в CERT р i∗ к любому из них, все верификаторы в HSV r,s∗+3 останавливаются с Br = Br \(\ell\), без пропагандируя что-либо. В зависимости от того, как действует Противник, некоторые из них могут иметь собственный CERT r, состоящий из этих (r, s∗−1)-сообщений в CERT r i∗, а остальные имеют свой собственный CERT r, состоящий из этих (r, s∗+ 2)-сообщений. В любом случае, все честные пользователи знать Br = Br \(\ell\)в интервале времени Ir+1 и Т r+1 \(\leq\)T r + \(\lambda\) + ts∗+3. Случай 2.2.б. Событие E.b происходит, и не существует честного проверяющего i′ \(\in\)HSV r,s∗, который также должен остановиться, ничего не распространяя. Анализ в этом случае аналогичен анализам в случае 2.1.b и случае 2.2.a, поэтому много деталей. были опущены. В частности, CERT r i∗состоит из tH искомых (r, s∗−1)-сообщений для бита 1, который противник может собрать или сгенерировать, s∗−2 ≡1 mod 3, шаг s∗ — это Шаг Coin-Fixed-To-1, и ни один честный (r, s∗)-верификатор не смог бы увидеть большинство > 2/3 для 0. Таким образом, каждый верификатор i \(\in\)HSV r,s∗ устанавливает bi = 1 и распространяет mr,s∗ я = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ я ) в момент времени \(\alpha\)r,s∗ я + тс∗. Как и в случае 2.2.а, не более чем за 3 шага (т. е. протокол достигает шага s∗+3, что является еще одним шагом Coin-Fixed-To-1), все честные пользователи знают Br = Br ψ в интервале времени Ir+1. Более того, T r+1 может быть \(\leq\)T r+\(\lambda\)+ts∗+1 или \(\leq\)T r+\(\lambda\)+ts∗+2, или \(\leq\)T r + \(\lambda\) + ts∗+3, в зависимости от того, когда честный проверяющий впервые сможет остановить без распространения. Объединив четыре подслучая, мы получаем, что все честные пользователи знают Br в пределах временного интервала. ИК+1, с T r+1 \(\leq\)T r + \(\lambda\) + ts∗ в случаях 2.1.a и 2.1.b, и T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 в случаях 2.2.a и 2.2.b. Осталось оценить сверху s∗ и, следовательно, T r+1 для случая 2, и мы делаем это, рассматривая, как много раз этапы «Genuinely-Flipped» действительно выполняются в протоколе: то есть некоторые честные проверяющие действительно подбросили монетку. В частности, произвольно зафиксируйте шаг «подлинно подброшенной монеты» s′ (т. е. 7 \(\leq\)s′ \(\leq\)m + 2 и s′ −2 ≡2 mod 3), и пусть \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 дж ). А пока предположим, что s′ < s∗, потому что в противном случае ни один честный проверяющий на самом деле не подбросит монету на шагах s', согласно предыдущему дискуссии. По определению SV r,s'-1, значение hash учетных данных \(\ell\)' также является наименьшим среди все пользователи в PKr-k. Поскольку функция hash является случайной oracle, в идеале игрок \(\ell\)′ честен с вероятность не менее h. Как мы покажем позже, даже если Противник изо всех сил старается предсказать исход событий, выведите случайный oracle и наклоните вероятность, игрок \(\ell\)' все еще честен с вероятностьюхотя бы ph = h2(1 + h−h2). Ниже мы рассмотрим случай, когда это действительно имеет место, т. е. \(\ell\)′ \(\in\)HSV r,s′−1. Обратите внимание, что каждый честный проверяющий i \(\in\)HSV r,s′ получил все сообщения от HSV r,s′−1 по время \(\alpha\)r,s′ я + ц'. Если игроку i нужно подбросить монетку (т. е. он не набрал большинства более 2/3 за тот же бит b \(\in\) {0, 1}), то он устанавливает bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)' )). Если существует еще один честный проверяющий i′ \(\in\)HSV r,s′, который набрал > 2/3 большинства для бита b \(\in\) {0, 1}, то по свойству (d) из леммы 5.5 ни один честный проверяющий в HSV r,s' какое-то время не получил бы большинства > 2/3 б′ ̸= б. Поскольку lsb(H(\(\sigma\)r,s′−1 \(\ell\)' )) = b с вероятностью 1/2 все честные проверяющие в HSV r,s′ достигают согласие по b с вероятностью 1/2. Конечно, если такого верификатора i' не существует, то все честные верификаторы в HSV r,s' согласовывают бит lsb(H(\(\sigma\)r,s'−1 \(\ell\)' )) с вероятностью 1. Объединив вероятность для \(\ell\)′ \(\in\)HSV r,s′−1, мы получаем, что честные проверяющие в HSV r,s′ достичь согласия по биту b \(\in\){0, 1} с вероятностью не менее ph 2 = h2(1+h−h2) 2 . Более того, путем индукции по большинству голосов, как и раньше, все честные проверяющие в HSV r,s' имеют набор vi быть H(Br \(\ell\)). Таким образом, как только на шаге s будет достигнуто соглашение по b, Tr+1 будет либо \(\leq\)T r + \(\lambda\) + ts′+1, либо \(\leq\)T r + \(\lambda\) + ts′+2, в зависимости от того, b = 0 или b = 1, после анализа случаев 2.1.a и 2.1.b. В В частности, дальнейший шаг Coin-Genuinely-Flipped выполняться не будет: то есть проверяющие в такие шаги по-прежнему проверяют, что они являются проверяющими, и поэтому ждут, но все они остановятся без пропагандируя что-либо. Соответственно, перед шагом s∗ количество раз выполнения шагов Coin-GenuinelyFlipped распределяется согласно случайной величине Lr. Позволяя шагу s' быть последним шагом действительно подброшенной монеты согласно Lr, согласно построению протокола у нас есть s′ = 4 + 3Lr. Когда Противнику следует сделать Шаг s∗, если он хочет задержать T r+1 настолько, насколько возможно? Можно даже предположить, что Противник заранее знает реализацию Lr. Если s∗> s′, то это бесполезно, потому что честные проверяющие уже пришли к соглашению в Шаг с'. Конечно, в этом случае s∗ будет s′ +1 или s′ +2, опять же в зависимости от того, b = 0 или b = 1. Однако на самом деле это случаи 2.1.a и 2.1.b, и результирующий T r+1 в точности соответствует так же, как и в том случае. Точнее, Т r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts′+2. Если s∗< s′ −3, то есть s∗ находится перед предпоследним шагом «подлинного подбрасывания монеты», то по анализ случаев 2.2.а и 2.2.б, T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < Tr + \(\lambda\) + ts′. То есть Противник фактически ускоряет достижение соглашения по Бр. Если s∗= s′ −2 или s′ −1, то есть шаг Coin-Fixed-To-0 или шаг Coin-Fixed-To-1 непосредственно перед шагом s', а затем путем анализа четырех подслучаев честные проверяющие в Шаги s' больше не могут подбрасывать монеты, потому что они либо остановились, не распространяясь, или видели > 2/3 большинства для того же бита b. Поэтому у нас есть Т r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts′+2.В общем, как бы то ни было, мы имеем Т r+1 \(\leq\)T r + \(\lambda\) + ts′+2 = T r + \(\lambda\) + t3Lr+6 = Т r + \(\lambda\) + (2(3Lr + 6) −3)\(\lambda\) + Λ = Т г + (6Lr + 10)\(\lambda\) + Λ, как мы хотели показать. Худший случай — когда s∗= s′ −1 и имеет место случай 2.2.b. Объединяя случаи 1 и 2 бинарного протокола BA, лемма 5.3 верна. ■ 5,9 Безопасность начального Qr и вероятность честного лидера Осталось доказать лемму 5.4. Напомним, что верификаторы в раунде r берутся из PKr−k и выбираются по величине Qr−1. Причина введения параметра ретроспективного анализа k состоит в том, чтобы убедиться, что на этапе r -k, когда Противник сможет добавить новых злонамеренных пользователей относительно PKr−k, он не может предсказать величину Qr−1, кроме как с пренебрежимо малой вероятностью. Обратите внимание, что Функция hash представляет собой случайную oracle, а Qr-1 является одним из ее входных данных при выборе проверяющих для раунда r. Таким образом, сколько бы злонамеренных пользователей ни добавляли в PKr-k, с точки зрения Злоумышленника каждый один из них по-прежнему выбирается в качестве проверяющего на этапе раунда r с требуемой вероятностью p (или p1 для шага 1). Точнее, имеем следующую лемму. Лемма 5.6. При k = O(log1/2 F) в каждом раунде r с подавляющей вероятностью Противник не запрашивал Qr-1 случайному oracle еще в раунде r -k. Доказательство. Мы действуем по индукции. Предположим, что для каждого раунда \(\gamma\) < r Противник не запрашивал Q\(\gamma\)−1 случайному oracle в раунде \(\gamma\) −k.21. Рассмотрим следующую мысленную игру, в которую играет Противник на раунде r−k пытается предсказать Qr−1. На шаге 1 каждого раунда \(\gamma\) = r −k, . . . , r−1, учитывая конкретный Q\(\gamma\)−1, не запрашиваемый в случайном oracle, упорядочив игроков i \(\in\)PK\(\gamma\)−k в соответствии со значениями hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) все чаще мы получаем случайную перестановку над PK\(\gamma\)−k. По определению, лидер \(\ell\) \(\gamma\) – это первый пользователь в перестановке и честен с вероятностью h. Более того, когда PK\(\gamma\)−k велико достаточно, чтобы для любого целого числа x \(\geq\)1 вероятность того, что все первые x пользователей в перестановке являются злонамеренный, но (x + 1)-й честный — это (1 −h)xh. Если \(\ell\) \(\gamma\) честный, то Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). Поскольку Противник не может подделать подпись от \(\ell\) \(\gamma\), Q\(\gamma\) распределяется равномерно случайным образом с точки зрения Противника и, за исключением с экспоненциально малой вероятностью22 не был запрошен H на этапе r −k. Поскольку каждый Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1 соответственно является выходом H с Q\(\gamma\), Q\(\gamma\)+1, . . . , Qr−2 в качестве одного из входов, все они кажутся противнику случайными, и противник не мог запросить Qr-1 к H в раунд r −k. Соответственно, единственный случай, когда Противник может с хорошей вероятностью предсказать Qr-1 на раунде r−k — это когда все лидеры \(\ell\)r−k, . . . , \(\ell\)r−1 являются вредоносными. Снова рассмотрим раунд \(\gamma\) \(\in\){r−k. . . , r−1} и случайная перестановка над PK\(\gamma\)-k, вызванная соответствующими значениями hash. Если для некоторых x \(\geq\)2, все первые x−1 пользователей в перестановке являются злонамеренными, а x-й — честными, тогда У противника есть x возможных вариантов выбора Q\(\gamma\): любой из форм H(SIGi(Q\(\gamma\)−1, \(\gamma\))), где i — один из 21Поскольку k — небольшое целое число, без ограничения общности можно предположить, что первые k раундов протокола выполняются в безопасной среде, и индуктивная гипотеза справедлива для этих раундов. 22То есть экспоненциально зависит от длины вывода H. Обратите внимание, что эта вероятность намного меньше, чем F.первых x-1 злоумышленников, сделав игрока i фактическим лидером раунда \(\gamma\); или H(Q\(\gamma\)−1, \(\gamma\)), по формуле заставляя B\(\gamma\) = B\(\gamma\) й. В противном случае лидер раунда \(\gamma\) будет первым честным пользователем в перестановке. и Qr-1 становится непредсказуемым для Противника. Какой из вышеперечисленных x вариантов Q\(\gamma\) должен использовать Противник? Чтобы помочь противнику ответьте на этот вопрос, в мысленной игре мы на самом деле делаем его более могущественным, чем он есть на самом деле заключается в следующем. Прежде всего, на самом деле Злоумышленник не может вычислить hash аккаунта честного пользователя. подпись, таким образом, не может определить для каждого Q\(\gamma\) количество x(Q\(\gamma\)) злонамеренных пользователей в начале случайной перестановки в раунде \(\gamma\) + 1, индуцированной Q\(\gamma\). В мысленной игре мы даем ему числа x(Q\(\gamma\)) бесплатно. Во-вторых, на самом деле, если в перестановке есть первые x пользователей, то все злонамеренность не обязательно означает, что их всех можно сделать лидерами, потому что hash значения их сигнатур также должны быть меньше p1. Мы проигнорировали это ограничение в мысленном игре, давая Противнику еще больше преимуществ. Легко видеть, что в мысленной игре оптимальный вариант Противника, обозначаемый ˆQ\(\gamma\), тот, который создает самую длинную последовательность злонамеренных пользователей в начале случайного перестановка в раунде \(\gamma\) + 1. Действительно, при заданном Q\(\gamma\) протокол не зависит от Q\(\gamma\)−1 больше, и Противник может сосредоточиться исключительно на новой перестановке в раунде \(\gamma\) + 1, которая имеет такое же распределение по количеству злоумышленников в начале. Соответственно, в каждом раунде \(\gamma\), упомянутый выше ˆQ\(\gamma\) дает ему наибольшее количество вариантов для Q\(\gamma\)+1 и тем самым максимизирует вероятность того, что все последовательные лидеры являются злонамеренными. Таким образом, в ментальной игре Противник следует Цепи Маркова с раунда r −k. для округления r−1, при этом пространство состояний равно {0} \(\cup\){x : x \(\geq\)2}. Состояние 0 представляет собой тот факт, что первый пользователь в случайной перестановке в текущем раунде \(\gamma\) честен, таким образом, Противник терпит неудачу игра по предсказанию Qr−1; и каждое состояние x \(\geq\)2 представляет собой тот факт, что первые x −1 пользователей в перестановки вредоносны, а x-я честна, таким образом, у Противника есть x вариантов для Q\(\gamma\). вероятности перехода P(x, y) следующие. • P(0, 0) = 1 и P(0, y) = 0 для любого y \(\geq\)2. То есть Противник проигрывает игру, как только первый раз пользователь в перестановке становится честным. • P(x, 0) = hx для любого x \(\geq\)2. То есть с вероятностью hx все случайные перестановки x имеют их первые пользователи честны, поэтому Противник проигрывает игру в следующем раунде. • Для любых x \(\geq\)2 и y \(\geq\)2 P(x, y) — это вероятность того, что среди случайных перестановок x вызванный опциями x Q\(\gamma\), самой длинной последовательностью злонамеренных пользователей в начале некоторые из них равны y−1, поэтому у Противника есть y вариантов для Q\(\gamma\)+1 в следующем раунде. То есть, Р(х, у) = у-1 Х я = 0 (1 −h)ih !х − у-2 Х я = 0 (1 −h)ih !х = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. Обратите внимание, что состояние 0 является уникальным поглощающим состоянием в матрице перехода P, а любое другое состояние x имеет положительную вероятность перехода к 0. Нас интересует ограничение сверху числа k раундов, необходимых для того, чтобы цепь Маркова с подавляющей вероятностью сошлась к 0: то есть нет независимо от того, в каком состоянии начинается цепочка, с подавляющей вероятностью Противник проиграет игру и не может предсказать Qr−1 на раунде r−k. Рассмотрим матрицу перехода P (2) \(\triangleq\)P \(\cdot\) P после двух раундов. Легко видеть, что P (2)(0, 0) = 1 и P (2)(0, x) = 0 для любого x \(\geq\)2. Для любых x \(\geq\)2 и y \(\geq\)2, поскольку P(0, y) = 0, имеем P (2)(x, y) = P(x, 0)P(0, y) + Х z\(\geq\)2 P(x, z)P(z, y) = Х z\(\geq\)2 Р(х, z)Р(z, у).Полагая ¯h \(\triangleq\)1 −h, имеем P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x и Р (2)(х, у) = Х z\(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. Ниже мы вычисляем предел P (2)(x,y) Р (х,у) когда h стремится к 1, то есть ¯h стремится к 0. Обратите внимание, что наивысший порядок ¯h в P(x, y) равен ¯hy−1 с коэффициентом x. Соответственно, Лим ч→1 Р (2)(х, у) Р(х, у) = Лим ¯ч→0 Р (2)(х, у) Р(х, у) = Лим ¯ч→0 Р (2)(х, у) x¯hy−1 + O(¯hy) = Лим ¯ч→0 П z\(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) = Лим ¯ч→0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = Лим ¯ч→0 2x¯hy x¯hy−1 = lim ¯h \(\to\) 0 2¯h = 0. Когда h достаточно близко к 1,23, мы имеем Р (2)(х, у) Р(х, у) \(\leq\)1 2 для любых x \(\geq\)2 и y \(\geq\)2. По индукции для любого k > 2 P (k) \(\triangleq\)P k таково, что • P (k)(0, 0) = 1, P (k)(0, x) = 0 для любого x \(\geq\)2 и • для любых x \(\geq\)2 и y \(\geq\)2, P (k)(x, y) = P (k−1)(x, 0)P(0, y) + Х z\(\geq\)2 P (k−1)(x, z)P(z, y) = Х z\(\geq\)2 P (k−1)(x, z)P(z, y) \(\leq\) Х z\(\geq\)2 Р(х, г) 2k−2 \(\cdot\) P(z, y) = P (2)(x, y) 2k−2 \(\leq\)Р(х, у) 2к-1. Поскольку P(x, y) \(\leq\)1, после 1−log2 F раундов вероятность перехода в любое состояние y \(\geq\)2 пренебрежимо мала, начиная с любого состояния x \(\geq\)2. Хотя таких состояний много, легко видеть, что Лим y→+∞ Р(х, у) Р(х, у + 1) = Лим y→+∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = Лим y→+∞ ¯hy−1 −¯hy ¯hy −¯hy+1 = 1 ¯h = 1 1-ч. Поэтому каждая строка x матрицы перехода P убывает как геометрическая последовательность со скоростью 1 1−h > 2 когда y достаточно велико, и то же самое справедливо и для P (k). Соответственно, когда k достаточно велико, но все же порядка log1/2 F, P y\(\geq\)2 P (k)(x, y) < F для любого x \(\geq\)2. То есть с большой вероятностью Противник проигрывает игру и не может предсказать Qr−1 в раунде r −k. Для h \(\in\)(2/3, 1] более комплексный анализ показывает, что существует константа C, немного большая, чем 1/2, такая, что ее достаточно взять k = O(logC F). Таким образом, лемма 5.6 верна. ■ Лемма 5.4. (переформулировано) Учитывая свойства 1–3 для каждого раунда до r, ph = h2(1 + h −h2) для Lr, а лидер \(\ell\)r честен с вероятностью не менее тел. 23Например, h = 80%, как следует из конкретного выбора параметров.

Доказательство. Согласно лемме 5.6, противник не может предсказать Qr-1 обратно в раунде r-k, за исключением случаев, когда ничтожная вероятность. Обратите внимание, что это не означает, что вероятность честного лидера равна h для каждый раунд. Действительно, учитывая Qr-1, в зависимости от того, сколько злоумышленников было в начале случайной перестановки PKr−k, противник может иметь более одного варианта для Qr и таким образом, может увеличить вероятность злонамеренного лидера в раунде r + 1 — мы снова даем ему некоторые нереальные преимущества, как в лемме 5.6, чтобы упростить анализ. Однако для каждого Qr−1, который не был запрошен H противником в раунде r −k, для любой x \(\geq\)1, с вероятностью (1−h)x−1h первый честный пользователь встречается на позиции x в результирующем случайная перестановка PKr−k. При x = 1 вероятность честного лидера в раунде r + 1 равна действительно ч; а когда x = 2, у Противника есть два варианта Qr, и результирующая вероятность равна ч2. Только рассмотрев эти два случая, мы получаем, что вероятность честного лидера в раунде r + 1 равно как минимум h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2), как и хотелось. Обратите внимание, что приведенная выше вероятность учитывает только случайность в протоколе из раунда r −k. округлить р. Если принять во внимание всю случайность от раунда 0 до раунда r, Qr−1 равен еще менее предсказуем для Противника и вероятность честного лидера в раунде r+1 равна минимум h2(1 + h −h2). Заменив r+1 на r и сдвигая всё назад на один раунд, лидер \(\ell\)r честно с вероятностью не менее h2(1 + h−h2), как и хотелось. Аналогично, на каждом этапе «подлинного подбрасывания монеты» «лидер» этого шага — то есть проверяющий. в SV r,s, чьи учетные данные имеют наименьшее значение hash, честны с вероятностью не менее h2(1 + ч − h2). Таким образом, ph = h2(1 + h −h2) для Lr и лемма 5.4 выполнена. ■

Algorand ′

1 ในส่วนนี้ เราสร้างเวอร์ชันของ Algorand ′ ที่ทำงานภายใต้สมมติฐานต่อไปนี้ ข้อสันนิษฐานของผู้ใช้ส่วนใหญ่ที่ซื่อสัตย์: มากกว่า 2/3 ของผู้ใช้ในแต่ละ PKr มีความซื่อสัตย์ ในส่วนที่ 8 เราจะแสดงวิธีแทนที่สมมติฐานข้างต้นด้วย Honest Majority ที่ต้องการ สมมติฐานเรื่องเงิน 5.1 สัญลักษณ์และพารามิเตอร์เพิ่มเติม สัญกรณ์ • m \(\in\)Z+: จำนวนขั้นตอนสูงสุดในโปรโตคอล BA ไบนารี ซึ่งเป็นผลคูณของ 3 • Lr \(\leq\)m/3: ตัวแปรสุ่มที่แสดงถึงจำนวนการทดลองเบอร์นูลลีที่จำเป็นในการดู 1 เมื่อการทดลองแต่ละครั้งมีค่า 1 ด้วยความน่าจะเป็น ph 2 และมีการทดลองสูงสุด m/3 หากการทดลองทั้งหมดล้มเหลว ซ้าย \(\triangleq\)m/3 Lr จะถูกใช้เพื่อขอบเขตบนของเวลาที่จำเป็นในการสร้างบล็อก Br • TH = 2n 3 + 1: จำนวนลายเซ็นที่จำเป็นในเงื่อนไขการสิ้นสุดของโปรโตคอล • CERT r: ใบรับรองสำหรับ Br. เป็นชุดลายเซ็นต์ของ H(Br) จากผู้ตรวจสอบที่เหมาะสม รอบร. พารามิเตอร์ • ความสัมพันธ์ระหว่างพารามิเตอร์ต่างๆ — สำหรับแต่ละขั้นตอน s > 1 ของรอบ r, n จะถูกเลือก ดังนั้น ด้วยความน่าจะเป็นอย่างล้นหลาม |HSV r,s| > 2|MSV r,s| และ |HSV r,s| + 4|MSV r,s| <2น. ยิ่งค่า h ใกล้ 1 มากเท่าใด n ก็ต้องมีค่าน้อยลงเท่านั้น โดยเฉพาะเราใช้ (variants ของ) ขอบเขตเชอร์โนฟเพื่อให้แน่ใจว่าเงื่อนไขที่ต้องการมีความน่าจะเป็นอย่างล้นหลาม — m ถูกเลือกโดยที่ Lr < m/3 มีความน่าจะเป็นอย่างท่วมท้น • ตัวอย่างตัวเลือกของพารามิเตอร์ที่สำคัญ — ฉ = 10−12. — n asym1500, k = 40 และ m = 1805.2 การใช้คีย์ชั่วคราวใน Algorand ′ 1 ดังที่ได้กล่าวไปแล้ว เราหวังว่าผู้ตรวจสอบ i \(\in\)SV r,s จะลงนามข้อความของเขาแบบดิจิทัล mr,s ฉัน ของขั้นตอน s ในรอบ r สัมพันธ์กับคีย์สาธารณะชั่วคราว pkr,s ฉัน ใช้คีย์ลับชั่วคราว skr,s ฉัน นั่น เขาทำลายทันทีหลังใช้ ดังนั้นเราจึงจำเป็นต้องมีวิธีการที่มีประสิทธิภาพเพื่อให้แน่ใจว่าผู้ใช้ทุกคนสามารถทำได้ ตรวจสอบว่า pkr,s ฉัน เป็นกุญแจสำคัญในการใช้ตรวจสอบลายเซ็นของนาย ฉัน เราทำเช่นนั้นโดย a (ให้ดีที่สุด ความรู้ของเรา) การใช้รูปแบบลายเซ็นตามข้อมูลประจำตัวแบบใหม่ ในระดับสูง ในรูปแบบดังกล่าว หน่วยงานกลาง A จะสร้างคีย์หลักสาธารณะ PMK และรหัสลับที่เกี่ยวข้อง SMK เมื่อพิจารณาถึงตัวตน U ของผู้เล่น U การคำนวณ ผ่าน SMK ซึ่งเป็นคีย์ลายเซ็นลับ skU ที่สัมพันธ์กับคีย์สาธารณะ U และมอบ skU ให้กับแบบส่วนตัว U. (อันที่จริง ในรูปแบบลายเซ็นดิจิทัลตามข้อมูลประจำตัว กุญแจสาธารณะของผู้ใช้ U คือ U นั่นเอง!) ด้วยวิธีนี้ หาก A ทำลาย SMK หลังจากคำนวณคีย์ลับของผู้ใช้ที่เขาต้องการเปิดใช้งาน สร้างลายเซ็นดิจิทัล และไม่เก็บรหัสลับที่คำนวณไว้ ดังนั้น U จึงเป็นคนเดียวที่ สามารถเซ็นข้อความแบบดิจิทัลที่เกี่ยวข้องกับกุญแจสาธารณะ U ได้ ดังนั้นใครก็ตามที่รู้จัก "ชื่อ U" รู้กุญแจสาธารณะของ U โดยอัตโนมัติ และสามารถตรวจสอบลายเซ็นของ U ได้ (อาจใช้ the PMK คีย์หลักสาธารณะ) ในแอปพลิเคชันของเรา สิทธิ์ A คือผู้ใช้ i และชุดของผู้ใช้ที่เป็นไปได้ทั้งหมด U เกิดขึ้นพร้อมกัน คู่ขั้นบันได (r, s) ใน —say— S = {i}\(\times\){r′, . . , r′ +106}\(\times\){1, . . . , m+3} โดยที่ r′ ถูกกำหนดไว้ ปัดเศษ และ m + 3 ขอบเขตบนของจำนวนก้าวที่อาจเกิดขึ้นภายในหนึ่งรอบ นี้ ทาง pkr,s ฉัน \(\triangleq\)(i, r, s) เพื่อให้ทุกคนเห็นลายเซ็นต์ i SIGr,s พีเคอาร์เอส ฉัน (นายส ฉัน ) สามารถทำได้อย่างท่วมท้น ความน่าจะเป็น ให้ตรวจสอบทันทีสำหรับล้านรอบแรก r ต่อไปนี้ r′ กล่าวอีกนัยหนึ่ง ฉันจะสร้าง PMK และ SMK ก่อน แล้วเขาก็ประชาสัมพันธ์ว่า PMK คือผมเจ้านาย กุญแจสาธารณะสำหรับทุกรอบ r \(\in\)[r′, r′ + 106] และใช้ SMK เพื่อสร้างและจัดเก็บความลับเป็นการส่วนตัว คีย์ skr,s ฉัน สำหรับแต่ละสาม (i, r, s) \(\in\)S เสร็จแล้วเขาทำลาย SMK หากเขาตัดสินแล้วว่าไม่ใช่ เป็นส่วนหนึ่งของ SV r,s จากนั้นฉันก็อาจทิ้ง skr,s ไว้ ฉัน เพียงอย่างเดียว (เนื่องจากโปรโตคอลไม่ต้องการให้เขาตรวจสอบสิทธิ์) ข้อความใด ๆ ในขั้นตอนที่ s ของรอบ r) อย่างอื่นฉันใช้ skr,s ก่อน ฉัน เพื่อลงนามข้อความของเขาแบบดิจิทัล ฉัน และ จากนั้นทำลาย skr,s ฉัน โปรดทราบว่าฉันสามารถเผยแพร่คีย์หลักสาธารณะคีย์แรกของเขาได้เมื่อเขาเข้าสู่ระบบครั้งแรก นั่นคือ การจ่ายแบบเดียวกัน \(\wp\)ที่นำ i เข้าสู่ระบบ (ที่รอบ r′ หรือที่รอบที่ใกล้กับ r′) ก็อาจจะเช่นกัน ระบุตามคำร้องขอของฉันว่า i เป็นคีย์หลักสาธารณะสำหรับรอบใด ๆ r \(\in\)[r′, r′ + 106] คือ PMK — เช่น โดย รวมถึงคู่ของแบบฟอร์ม (PMK, [r′, r′ + 106]) โปรดทราบด้วยว่า เนื่องจาก m + 3 คือจำนวนก้าวสูงสุดในรอบ โดยสมมติว่าเป็นรอบ ใช้เวลาสักครู่ กุญแจชั่วคราวที่ผลิตออกมาจะคงอยู่ได้เกือบสองปี ในเวลาเดียวกัน เวลา กุญแจลับชั่วคราวเหล่านี้จะใช้เวลาไม่นานในการสร้าง การใช้เส้นโค้งรูปไข่ ระบบที่มีคีย์ 32B แต่ละคีย์ลับจะถูกคำนวณภายในเวลาไม่กี่ไมโครวินาที ดังนั้น ถ้า m + 3 = 180 ดังนั้นคีย์ลับทั้งหมด 180M จึงสามารถคำนวณได้ภายในเวลาไม่ถึงหนึ่งชั่วโมง เมื่อรอบปัจจุบันเข้าใกล้ r′ + 106 เพื่อรองรับล้านรอบถัดไป i สร้างคู่ใหม่ (PMK′, SMK′) และแจ้งให้ทราบว่ากุญแจชั่วคราวถัดไปของเขาคืออะไร —ตัวอย่าง— ให้ SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) เข้าบล็อกใหม่ โดยอาจเป็น a “ธุรกรรม” แยกกันหรือเป็นข้อมูลเพิ่มเติมบางส่วนที่เป็นส่วนหนึ่งของการชำระเงิน โดยการทำเช่นนั้น ฉันแจ้งให้ทุกคนทราบว่าเขา/เธอควรใช้ PMK′ เพื่อตรวจสอบลายเซ็นชั่วคราวของฉันในครั้งต่อไป ล้านรอบ และอื่นๆ (โปรดทราบว่า การปฏิบัติตามแนวทางพื้นฐานนี้ จะมีวิธีอื่นๆ ในการนำคีย์ชั่วคราวไปใช้โดยไม่ต้องใช้ การใช้ลายเซ็นตามข้อมูลประจำตัวเป็นไปได้อย่างแน่นอน ตัวอย่างเช่น ผ่าน Merkle trees.16) 16ในวิธีนี้ ฉันสร้างคู่คีย์ลับสาธารณะ (pkr,s ฉัน , skr, s ฉัน ) สำหรับแต่ละคู่แบบปัดเศษ (r, s) ใน —say—วิธีอื่นๆ ในการนำคีย์ชั่วคราวไปใช้นั้นเป็นไปได้อย่างแน่นอน เช่น ผ่าน Merkle trees 5.3 จับคู่ขั้นตอนของ Algorand ′ 1 กับ BA⋆ อย่างที่เราบอกไป รอบใน Algorand ′ 1 มีมากที่สุด m + 3 ขั้นตอน ขั้นตอนที่ 1 ในขั้นตอนนี้ ผู้ที่มีศักยภาพเป็นผู้นำแต่ละคน ฉันจะคำนวณและเผยแพร่บล็อกผู้สมัครของเขา Br ฉัน พร้อมด้วยหนังสือรับรองของเขาเอง \(\sigma\)r,1 ฉัน โปรดจำไว้ว่าข้อมูลรับรองนี้ระบุถึง i อย่างชัดเจน ที่เป็นเช่นนี้ เพราะ \(\sigma\)r,1 ฉัน \(\triangleq\)SIGi(r, 1, Qr−1) ผู้ตรวจสอบที่เป็นไปได้ฉันยังเผยแพร่ลายเซ็นดิจิทัลที่เหมาะสมของ H(Br ซึ่งเป็นส่วนหนึ่งของข้อความของเขาด้วย ฉัน) ไม่ได้เกี่ยวข้องกับการชำระเงินหรือหนังสือรับรอง ลายเซ็นของฉันนี้สัมพันธ์กับสาธารณะชั่วคราวของเขา คีย์ pkr,1 ฉัน : นั่นคือเขาเผยแพร่ siggpkr,1 ฉัน (H(Br ฉัน )) ตามแบบแผนของเรา แทนที่จะเผยแพร่บรา ฉัน และ sigpkr,1 ฉัน (H(Br ฉัน )) เขาสามารถมีได้ เผยแพร่ SIGpkr,1 ฉัน (H(Br ฉัน )) อย่างไรก็ตาม ในการวิเคราะห์ของเรา เราจำเป็นต้องเข้าถึงได้อย่างชัดเจน ซิกพีอาร์,1 ฉัน (H(Br ฉัน )) ขั้นตอนที่ 2 ในขั้นตอนนี้ แต่ละผู้ยืนยันที่ฉันตั้งค่า ër ฉันเป็นผู้นำที่มีศักยภาพซึ่งมีใบรับรอง hashed มีขนาดเล็กที่สุดและ Br i เป็นบล็อกที่เสนอโดย LRr ฉัน เนื่องจากเพื่อประโยชน์ด้านประสิทธิภาพ เราจึง ต้องการเห็นด้วยกับ H(Br) แทนที่จะเห็นด้วยกับ Br โดยตรง ฉันเผยแพร่ข้อความที่เขาต้องการ แพร่กระจายในขั้นตอนแรกของ BA⋆ด้วยค่าเริ่มต้น v′ ผม = H(br ฉัน) นั่นคือเขาเผยแพร่ v′ ฉัน หลังจากเซ็นสัญญาชั่วคราวแน่นอน (กล่าวคือหลังจากลงนามแล้วสัมพันธ์กับช่วงเวลาชั่วคราวที่ถูกต้อง พับลิกคีย์ ซึ่งในกรณีนี้คือ pkr,2 ฉัน .) แน่นอน ฉันก็ส่งข้อมูลรับรองของเขาเองด้วย เนื่องจากขั้นตอนแรกของ BA⋆ประกอบด้วยขั้นตอนแรกของโปรโตคอลฉันทามติแบบให้คะแนน GC ขั้นตอน 2 ของ Algorand ′ สอดคล้องกับขั้นตอนแรกของ GC ขั้นตอนที่ 3 ในขั้นตอนนี้ แต่ละผู้ตรวจสอบ i \(\in\)SV r,2 ดำเนินการขั้นตอนที่สองของ BA⋆ นั่นคือเขาส่ง ข้อความเดียวกับที่เขาจะส่งในขั้นตอนที่สองของ GC อีกครั้งข้อความของฉันเป็นเพียงชั่วคราว ลงนามและมาพร้อมกับหนังสือรับรองของฉัน (ตั้งแต่บัดนี้เป็นต้นไปเราจะละเว้นการกล่าวคำยืนยันนั้น ลงนามในข้อความของเขาชั่วคราวและเผยแพร่หนังสือรับรองของเขาด้วย) ขั้นที่ 4 ในขั้นตอนนี้ ผู้ตรวจสอบทุกตัว i \(\in\)SV r,4 จะคำนวณเอาท์พุตของ GC, (vi, gi) และแบบชั่วคราว ลงนามและส่งข้อความเดียวกันกับที่เขาจะส่งในขั้นตอนที่สามของBA⋆ นั่นคือใน ขั้นตอนแรกของ BBA⋆ ด้วยบิตเริ่มต้น 0 ถ้า gi = 2 และ 1 เป็นอย่างอื่น ขั้นตอน ส = 5, . . . , m + 2 ขั้นตอนดังกล่าวหากไปถึงจะสอดคล้องกับขั้นตอน s −1 ของ BA⋆ และด้วยเหตุนี้ ขั้นตอนที่ s −3 ของ BBA⋆ เนื่องจากโมเดลการขยายพันธุ์ของเราเป็นแบบอะซิงโครนัสเพียงพอ เราจึงต้องคำนึงถึงความเป็นไปได้ด้วย ว่าในระหว่างขั้นตอน s นั้น ผู้ตรวจสอบ i \(\in\)SV r,s เข้าถึงได้ด้วยข้อมูลที่พิสูจน์เขา บล็อก Br นั้นได้ถูกเลือกแล้ว ในกรณีนี้ ฉันหยุดการดำเนินการรอบ r ของเขาเอง Algorand ′ และเริ่มดำเนินการตามคำสั่งการปัดเศษ (r + 1) {r', . . . , r′ + 106} \(\times\) {1, . . . , ม. + 3} จากนั้นเขาก็สั่งกุญแจสาธารณะเหล่านี้ด้วยวิธีที่เป็นที่ยอมรับ และจัดเก็บสาธารณะ jth ป้อน jth leaf ของ Merkle tree และคำนวณค่ารูต Ri ซึ่งเขาเผยแพร่ เมื่อเขาต้องการลงนาม ข้อความที่เกี่ยวข้องกับคีย์ pkr,s ฉัน ฉันไม่เพียงแต่จัดเตรียมลายเซ็นจริงเท่านั้น แต่ยังรวมถึงเส้นทางการรับรองความถูกต้องสำหรับ pkr,s ด้วย ฉัน สัมพันธ์กับริ โปรดสังเกตว่าเส้นทางการรับรองความถูกต้องนี้ยังพิสูจน์ว่า pkr,s ฉัน ถูกเก็บไว้ในใบไม้ jth ส่วนที่เหลือ สามารถกรอกรายละเอียดได้อย่างง่ายดายตามนั้น คำแนะนำของผู้ตรวจสอบ i \(\in\)SV r,s นอกเหนือจากคำแนะนำที่เกี่ยวข้องกัน ไปยังขั้นตอนที่ s −3 ของ BBA⋆ รวมถึงการตรวจสอบว่าการดำเนินการของ BBA⋆ ได้หยุดลงก่อนหน้านี้หรือไม่ ขั้นตอน เนื่องจาก BBA⋆สามารถหยุดได้เพียงขั้นตอน Coin-Fixed-to-0 หรือในขั้นตอน Coin-Fixed-to-1 เท่านั้น คำแนะนำแยกแยะได้ว่า A (เงื่อนไขการสิ้นสุด 0): s′ −2 ≡0 mod 3 หรือ B (เงื่อนไขการสิ้นสุด 1): s′ −2 ≡1 mod 3 ในความเป็นจริง ในกรณี A บล็อก Br ไม่ว่างเปล่า และจำเป็นต้องมีคำแนะนำเพิ่มเติม ตรวจสอบให้แน่ใจว่าฉันสร้าง Br ใหม่อย่างถูกต้อง พร้อมด้วยใบรับรอง CERT r ที่เหมาะสม ในกรณี ข บล็อก Br ว่างเปล่า ดังนั้นฉันจึงได้รับคำสั่งให้ตั้งค่า Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)) และเพื่อคำนวณ CERT r หากในระหว่างดำเนินการตามขั้นตอน s ฉันไม่เห็นหลักฐานใด ๆ ที่แสดงว่าบล็อก Br มีอยู่แล้ว ถูกสร้างขึ้น จากนั้นเขาก็ส่งข้อความเดียวกับที่เขาจะส่งในขั้นตอน s −3 ของ BBA⋆ ขั้นตอนที่ m + 3 หากในระหว่างขั้นตอน m + 3 i \(\in\)SV r,m+3 เห็นว่าบล็อก Br ถูกสร้างขึ้นแล้ว ขั้นตอนก่อนหน้า s′ จากนั้นเขาก็ดำเนินการตามที่อธิบายไว้ข้างต้น มิฉะนั้น แทนที่จะส่งข้อความแบบเดียวกับที่เขาจะส่งในขั้นตอน m ของ BBA ⋆ ฉันก็เป็นเช่นนั้น ได้รับคำสั่งตามข้อมูลที่อยู่ในความครอบครองของเขาให้คำนวณ Br และข้อมูลที่เกี่ยวข้อง ใบรับรอง CERT r. จำได้ว่าในความเป็นจริง เรากำหนดขอบเขตบนด้วย m + 3 ซึ่งเป็นจำนวนก้าวทั้งหมดของรอบ 5.4 พิธีสารจริง ระลึกว่าในแต่ละขั้นตอนของรอบ r ผู้ตรวจสอบ i \(\in\)SV r,s ใช้คู่กุญแจลับสาธารณะระยะยาวของเขา เพื่อสร้างหนังสือรับรองของเขา \(\sigma\)r, s ฉัน \(\triangleq\)SIGi(r, s, Qr−1) เช่นเดียวกับ SIGi คิวอาร์−1 ในกรณี s = 1. ผู้ตรวจสอบ i ใช้รหัสลับชั่วคราวของเขา skr,s ฉัน เพื่อลงนามในข้อความของเขา (r, s) คุณ ฉัน เพื่อความง่าย เมื่อ r และ s เป็น ชัดเจน เราเขียน esigi(x) มากกว่า sigpkr,s i (x) เพื่อแสดงถึงลายเซ็นชั่วคราวที่เหมาะสมของค่า x ในขั้นตอน s ของรอบ r และเขียน ESIGi(x) แทน SIGpkr,s i (x) เพื่อแสดงถึง (i, x, esigi(x)) ขั้นตอนที่ 1: บล็อกข้อเสนอ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 1 ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,1 หรือ ไม่. • ถ้า i /\(\in\)SV r,1, แล้วฉันจะหยุดการดำเนินการขั้นตอนที่ 1 ของเขาเองทันที • ถ้า i \(\in\)SV r,1 นั่นคือ ถ้า i เป็นผู้นำที่มีศักยภาพ เขาจะเรียกเก็บเงินตามรอบที่มี ได้รับการเผยแพร่ไปยังเขาจนถึงตอนนี้และคำนวณ payset สูงสุด PAY r ฉันมาจากพวกเขา ต่อไปเขา คำนวณ "กลุ่มผู้สมัคร" ของเขา i = (r, จ่าย r ผม , SIGI(Qr−1), H(Br−1)) ในที่สุดเขาก็คำนวณ ข้อความคุณ1 ฉัน = (พี่ ฉัน , esigi(H(Br ผม )), \(\sigma\)r,1 i ) ทำลายคีย์ลับชั่วคราวของเขา skr,1 ฉัน แล้ว เผยแพร่นาย 1 ฉันหมายเหตุ. ในทางปฏิบัติ เพื่อลดระยะเวลาการดำเนินการทั่วโลกของขั้นตอนที่ 1 ให้สั้นลง สิ่งสำคัญคือ (r, 1)- ข้อความถูกเผยแพร่แบบเลือกสรร นั่นคือสำหรับผู้ใช้ทุกคนที่อยู่ในระบบ สำหรับครั้งแรก (r, 1)- ข้อความที่เขาได้รับและยืนยันได้สำเร็จ ผู้เล่น 17 คนก็เผยแพร่ตามปกติ สำหรับทั้งหมด อื่น ๆ (r, 1) - ข้อความที่ผู้เล่นที่ฉันได้รับและยืนยันได้สำเร็จ เขาเผยแพร่เฉพาะในกรณีที่ hash ค่าของข้อมูลรับรองที่มีอยู่นั้นน้อยที่สุดในบรรดาค่า hash ของข้อมูลรับรองที่มีอยู่ ในข้อความทั้งหมด (r, 1) ที่เขาได้รับและได้รับการยืนยันเรียบร้อยแล้ว นอกจากนี้ตามที่แนะนำ โดย Georgios Vlachos มันมีประโยชน์ที่ผู้นำที่มีศักยภาพแต่ละคน i จะเผยแพร่ข้อมูลรับรองของเขาด้วย \(\sigma\)r,1 ฉัน แยกจากกัน: ข้อความเล็กๆ เหล่านั้นเดินทางเร็วกว่าบล็อก ทำให้แน่ใจได้ว่าการเผยแพร่ mr,1 จะเป็นไปอย่างทันท่วงที เจ โดยที่ข้อมูลประจำตัวที่มีอยู่มีค่า hash น้อย ในขณะที่ทำให้มีค่า hash ขนาดใหญ่ หายไปอย่างรวดเร็ว ขั้นตอนที่ 2: ขั้นตอนแรกของ GC ของโปรโตคอลฉันทามติแบบให้คะแนน คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 2 ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,2 หรือ ไม่. • ถ้า i /\(\in\)SV r,2 แล้วฉันจะหยุดการดำเนินการขั้นตอนที่ 2 ของเขาเองทันที • ถ้า i \(\in\)SV r,2 หลังจากรอเป็นระยะเวลาหนึ่ง t2 \(\triangleq\)แล + Λ ฉันจะทำหน้าที่ดังนี้ 1. เขาค้นหาผู้ใช้ ëเช่นนั้น H(\(\sigma\)r,1 มอร์) \(\leq\)H(\(\sigma\)r,1 j ) สำหรับข้อมูลรับรองทั้งหมด \(\sigma\)r,1 เจ ที่เป็นส่วนหนึ่งของ ข้อความที่ได้รับการยืนยันเรียบร้อยแล้ว (r, 1) ที่เขาได้รับจนถึงขณะนี้ 2. หากได้รับข้อความที่ถูกต้องจากคุณ 1 ฎ = (พี่ มอร์, ซิกล์(H(Br ̵)), \(\sigma\)r,1 ̵), b จากนั้นฉันจะตั้งค่า วี' ฉัน \(\triangleq\)H(br ë); มิฉะนั้นฉันจะตั้งค่า v′ ฉัน \(\triangleq\) \(\bot\) 3. ฉันคำนวณข้อความคุณ 2 ฉัน \(\triangleq\)(ESIGi(วี′ ผม), \(\sigma\)r,2 i ),c ทำลายรหัสลับชั่วคราวของเขา เอสเคอาร์,2 ฉัน แล้วเผยแพร่นาย 2 ฉัน โดยพื้นฐานแล้ว ผู้ใช้ i ตัดสินใจเป็นการส่วนตัวว่าผู้นำของรอบ r คือผู้ใช้ ë b ขอย้ำอีกครั้งว่าลายเซ็นของผู้เล่น ë และ hashes ได้รับการตรวจสอบเรียบร้อยแล้ว และชำระเงิน r ริน Br ëเป็นชุดการจ่ายเงินที่ถูกต้องสำหรับ รอบ r —แม้ว่าฉันจะไม่ได้ตรวจสอบว่า PAY r หรือไม่ ̵ เป็นค่าสูงสุดสำหรับ ̃ หรือไม่ คข้อความคุณนาย2 ฉัน ส่งสัญญาณว่าผู้เล่นที่ฉันถือว่า v′ i เป็น hash ของบล็อกถัดไป หรือพิจารณาบล็อกถัดไป บล็อกให้ว่างเปล่า 17นั่นคือ ลายเซ็นทั้งหมดถูกต้อง และทั้งบล็อกและ hash ของมันนั้นถูกต้อง แม้ว่าฉันจะไม่ได้ตรวจสอบก็ตาม ไม่ว่าค่าตอบแทนที่รวมไว้จะเป็นจำนวนสูงสุดสำหรับผู้เสนอหรือไม่

ขั้นตอนที่ 3: ขั้นตอนที่สองของ GC คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 3 ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,3 หรือ ไม่. • ถ้า i /\(\in\)SV r,3, แล้วฉันจะหยุดการดำเนินการขั้นตอนที่ 3 ของเขาเองทันที • ถ้า i \(\in\)SV r,3 หลังจากรอเป็นระยะเวลาหนึ่ง t3 \(\triangleq\)t2 + 2\(\lambda\) = 3l + Λ ฉันจะทำหน้าที่ดังนี้ 1. หากมีค่า v′ ̸= \(\bot\)เช่นนั้น ในบรรดาข้อความที่ถูกต้อง mr,2 เจ เขาได้รับ มากกว่า 2/3 อยู่ในรูปแบบ (ESIGj(v′), \(\sigma\)r,2 j ) โดยไม่มีความขัดแย้งใดๆ ก จากนั้นเขาก็คำนวณข้อความคุณ 3 ฉัน \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 ฉัน) มิฉะนั้นเขาจะคำนวณนาย 3 ฉัน \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 ฉัน) 2. ฉันทำลายคีย์ลับชั่วคราวของเขา skr3 ฉัน แล้วเผยแพร่นาย 3 ฉัน aนั่นคือเขายังไม่ได้รับข้อความที่ถูกต้องสองข้อความที่มี ESIGj(v′) และ ESIGj(v′′) ที่แตกต่างกันตามลำดับ จากผู้เล่นเจ ที่นี่และต่อจากนี้ ยกเว้นในเงื่อนไขการสิ้นสุดที่กำหนดไว้ในภายหลัง เมื่อใดก็ตามที่เป็นผู้เล่นที่ซื่อสัตย์ ต้องการข้อความในรูปแบบที่กำหนด ข้อความที่ขัดแย้งกันจะไม่นับหรือถือว่าถูกต้องขั้นตอนที่ 4: ผลลัพธ์ของ GC และขั้นตอนแรกของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 4 ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,4 หรือ ไม่. • ถ้า i /\(\in\)SV r,4 แล้ว i เขาจะหยุดการดำเนินการขั้นตอนที่ 4 ทันที • หาก i \(\in\)SV r,4 หลังจากรอเป็นระยะเวลาหนึ่ง t4 \(\triangleq\)t3 + 2แล = 5แล + Λ ฉันจะทำหน้าที่ดังต่อไปนี้ 1. เขาคำนวณ vi และ gi ซึ่งเป็นผลลัพธ์ของ GC ดังนี้ (a) ถ้ามีค่า v′ ̸= \(\bot\)เช่นนั้น ในบรรดาข้อความที่ถูกต้อง mr,3 เจ เขามี ได้รับมากกว่า 2/3 อยู่ในรูปแบบ (ESIGj(v′), \(\sigma\)r,3 j ) จากนั้นเขาก็ตั้งค่า vi \(\triangleq\)v′ และ gi \(\triangleq\)2. (b) มิฉะนั้น ถ้ามีค่า v′ ̸= \(\bot\)เช่นนั้น ในบรรดาข้อความที่ถูกต้องทั้งหมด นาย 3 เจ เขาได้รับ มากกว่า 1/3 อยู่ในรูปแบบ (ESIGj(v′), \(\sigma\)r,3 เจ ) จากนั้น เขาตั้งค่า vi \(\triangleq\)v′ และ gi \(\triangleq\)1.a (c) อย่างอื่นเขากำหนด vi \(\triangleq\)H(Br ǫ ) และ gi \(\triangleq\)0 2. เขาคำนวณ bi ซึ่งเป็นอินพุตของ BBA⋆ ดังนี้: bi \(\triangleq\)0 ถ้า gi = 2 และ bi \(\triangleq\)1 มิฉะนั้น 3. เขาคำนวณข้อความ คุณ4 ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,4 i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,4 ฉัน แล้วเผยแพร่นาย 4 ฉัน aพิสูจน์ได้ว่า v′ ในกรณี (b) ถ้ามี จะต้องไม่ซ้ำกัน

ขั้นตอนที่ s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: ขั้นตอน Coin-Fixed-To-0 ของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,s หรือไม่ • หาก i /\(\in\)SV r,s ฉันจะหยุดการดำเนินการ Step s ของเขาทันที • ถ้า i \(\in\)SV r,s แล้วเขาจะทำหน้าที่ดังต่อไปนี้ – เขารอจนกระทั่งผ่านไประยะเวลาหนึ่ง ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ – เงื่อนไขการสิ้นสุด 0: หากในระหว่างการรอดังกล่าวและ ณ เวลาใด ๆ มี a string v ̸= \(\bot\)และขั้นตอน s′ เช่นนั้น (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 —นั่นคือ ขั้นตอน s′ เป็นขั้นตอน Coin-Fixed-To-0 (b) ฉันได้รับอย่างน้อยแล้ว = 2น 3 + 1 ข้อความที่ถูกต้อง mr,s′−1 เจ = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 เจ ) และ (ค) ฉันได้รับข้อความที่ถูกต้อง คุณ 1 เจ = (พี่ j , esigj(H(Br เจ )), \(\sigma\)r,1 เจ ) ด้วย โวลต์ = H(Br เจ) จากนั้น ฉันจะหยุดการดำเนินการขั้นตอน s ของเขาเอง (และในความเป็นจริงของรอบ r) ทันทีโดยไม่ต้อง เผยแพร่สิ่งใด ๆ เซต Br = Br เจ ; และกำหนดให้ CERT r ของเขาเองเป็นชุดข้อความ นาย,s′−1 เจ ของขั้นตอนย่อย (ข)ข – เงื่อนไขการสิ้นสุดที่ 1: หากในระหว่างการรอดังกล่าวและ ณ เวลาใดก็ตาม มี ขั้นตอนที่ s′ เช่นนั้น (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 —นั่นคือ Step s′ เป็นขั้นตอน Coin-Fixed-To-1 และ (b’) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 เจ ),ค จากนั้น ฉันจะหยุดการดำเนินการขั้นตอน s ของเขาเอง (และในความเป็นจริงของรอบ r) ทันทีโดยไม่ต้อง เผยแพร่สิ่งใด ๆ เซต Br = Br ; และกำหนดให้ CERT r ของเขาเองเป็นชุดข้อความ นาย,s′−1 เจ ของขั้นตอนย่อย (b’) – มิฉะนั้น เมื่อสิ้นสุดการรอ ผู้ใช้จะดำเนินการดังต่อไปนี้ เขากำหนดให้ vi เป็นคะแนนเสียงข้างมากของ vj ในองค์ประกอบที่สองของคะแนนเสียงที่ถูกต้องทั้งหมด นายส−1 เจ เขาได้รับแล้ว เขาคำนวณไบดังนี้ ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)0 มิฉะนั้น ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)1 มิฉะนั้นเขาจะตั้งค่า bi \(\triangleq\)0 เขาคำนวณข้อความของคุณนาย ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,s ฉัน แล้วเผยแพร่นายส ฉัน aข้อความดังกล่าวจากผู้เล่น j จะถูกนับแม้ว่าผู้เล่น i จะได้รับข้อความจากการลงนาม j สำหรับ 1 ก็ตาม สิ่งที่คล้ายกันสำหรับเงื่อนไขการสิ้นสุด 1 ดังที่แสดงในการวิเคราะห์ การดำเนินการนี้ทำเพื่อให้แน่ใจว่าผู้ใช้ที่ซื่อสัตย์ทุกคนทราบ Br ภายในเวลา แล จากกัน bUser ตอนนี้ฉันรู้จัก Br และรอบสุดท้ายของเขาแล้ว เขายังคงช่วยเผยแพร่ข้อความในฐานะผู้ใช้ทั่วไปแต่ ไม่ได้เริ่มต้นการแพร่กระจายใด ๆ ในฐานะ (r, s) - ผู้ตรวจสอบ โดยเฉพาะเขาได้ช่วยเผยแพร่ข้อความทั้งหมดในตัวเขา CERT r ซึ่งเพียงพอสำหรับโปรโตคอลของเรา โปรดทราบว่าเขาควรตั้งค่า bi \(\triangleq\)0 สำหรับโปรโตคอล BA ไบนารี่ด้วย แต่ตั้งค่าเป็น bi ไม่จำเป็นในกรณีนี้อยู่แล้ว สิ่งที่คล้ายกันสำหรับคำแนะนำทั้งหมดในอนาคต cในกรณีนี้ มันไม่สำคัญว่าวีเจจะเป็นอะไรขั้นตอนที่ s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: ขั้นตอนแบบ Coin-Fixed-To-1 ของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,s หรือ ไม่. • หาก i /\(\in\)SV r,s ฉันจะหยุดการดำเนินการ Step s ของเขาทันที • ถ้า i \(\in\)SV r,s แล้วเขาจะทำดังต่อไปนี้ – เขารอจนกระทั่งผ่านไประยะเวลาหนึ่ง ts \(\triangleq\)(2s −3)\(\lambda\) + Λ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – มิฉะนั้น เมื่อสิ้นสุดการรอ ผู้ใช้จะดำเนินการดังต่อไปนี้ เขากำหนดให้ vi เป็นคะแนนเสียงข้างมากของ vj ในองค์ประกอบที่สองของคะแนนเสียงที่ถูกต้องทั้งหมด นายส−1 เจ เขาได้รับแล้ว เขาคำนวณไบดังนี้ ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)0 มิฉะนั้น ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)1 มิฉะนั้นเขาจะตั้งค่า bi \(\triangleq\)1 เขาคำนวณข้อความของคุณนาย ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,s ฉัน แล้วเผยแพร่นายส ฉัน

ขั้นตอนที่ s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: ขั้นตอนการพลิกเหรียญอย่างแท้จริงของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,s หรือ ไม่. • หาก i /\(\in\)SV r,s ฉันจะหยุดการดำเนินการ Step s ของเขาทันที • ถ้า i \(\in\)SV r,s แล้วเขาจะทำดังต่อไปนี้ – เขารอจนกระทั่งผ่านไประยะเวลาหนึ่ง ts \(\triangleq\)(2s −3)\(\lambda\) + Λ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – มิฉะนั้น เมื่อสิ้นสุดการรอ ผู้ใช้จะดำเนินการดังต่อไปนี้ เขากำหนดให้ vi เป็นคะแนนเสียงข้างมากของ vj ในองค์ประกอบที่สองของคะแนนเสียงที่ถูกต้องทั้งหมด นายส−1 เจ เขาได้รับแล้ว เขาคำนวณไบดังนี้ ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)0 มิฉะนั้น ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)1 มิฉะนั้น ให้ SV r,s−1 ฉัน เป็นเซตของ (r, s −1) - ผู้ตรวจสอบที่เขาได้รับความถูกต้อง ส่งข้อความถึงคุณ s−1 เจ . เขาตั้งค่า bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 ฉัน H(\(\sigma\)r,s−1 เจ )). เขาคำนวณข้อความของคุณนาย ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,s ฉัน แล้วเผยแพร่นายส ฉัน

ขั้นตอนที่ m + 3: ขั้นตอนสุดท้ายของ BBA⋆a คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มขั้นตอนของตนเอง m + 3 ของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,m+3 หรือ ไม่. • ถ้า i /\(\in\)SV r,m+3 ฉันจะหยุดการดำเนินการขั้นตอน m + 3 ของเขาเองทันที • ถ้า i \(\in\)SV r,m+3 แล้วเขาจะทำดังต่อไปนี้ – เขารอจนกระทั่งผ่านไประยะเวลาหนึ่ง tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – มิฉะนั้น เมื่อสิ้นสุดการรอ ผู้ใช้จะดำเนินการดังต่อไปนี้ เขากำหนด \(\triangleq\)1 และ Br \(\triangleq\)Br ī. เขาคำนวณข้อความ mr,m+3 ฉัน = (ESIGi(ออกิ), ESIGi(H(Br)), \(\sigma\)r,m+3 ฉัน ) ทำลายของเขา คีย์ลับชั่วคราว skr,m+3 ฉัน แล้วเผยแพร่ mr,m+3 ฉัน เพื่อรับรอง Br.b aด้วยความน่าจะเป็นอย่างท่วมท้น BBA⋆ได้สิ้นสุดลงก่อนขั้นตอนนี้ และเราระบุขั้นตอนนี้เพื่อความสมบูรณ์ ใบรับรอง ba จากขั้นตอน m + 3 ไม่จำเป็นต้องรวม ESIGi(outi) เรารวมไว้เพื่อความสม่ำเสมอเท่านั้น: ขณะนี้ใบรับรองมีรูปแบบที่เหมือนกันไม่ว่าจะสร้างในขั้นตอนใดก็ตามการสร้าง Round-r Block ขึ้นมาใหม่โดยผู้ที่ไม่ใช่ผู้ตรวจสอบ คำแนะนำสำหรับผู้ใช้ทุกคน i ในระบบ: ผู้ใช้ i เริ่มรอบ r ของตนเองทันทีที่ทราบ Br−1 และรอข้อมูลบล็อกดังนี้ – หากในระหว่างการรอและ ณ เวลาใดก็ตาม มีสตริง v และขั้นตอน s′ ดังกล่าวอยู่ นั่น (a) 5 \(\leq\)s′ \(\leq\)m + 3 โดยมี s′ −2 ≡0 mod 3 (b) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 เจ ) และ (ค) ฉันได้รับข้อความที่ถูกต้อง คุณ 1 เจ = (พี่ j , esigj(H(Br เจ )), \(\sigma\)r,1 เจ ) ด้วย โวลต์ = H(Br เจ) จากนั้นฉันก็หยุดการดำเนินการรอบ r ของเขาเองทันที เซต Br = Br เจ; และกำหนด CERT r ของเขาเอง เป็นชุดข้อความ mr,s′−1 เจ ของขั้นตอนย่อย (b) – หากในระหว่างการรอคอยและ ณ จุดใดเวลาหนึ่ง มีขั้นตอนเช่นนั้นอยู่ (a’) 6 \(\leq\)s′ \(\leq\)m + 3 โดยมี s′ −2 ≡1 mod 3 และ (b’) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 เจ ) จากนั้นฉันก็หยุดการดำเนินการรอบ r ของเขาเองทันที เซต Br = Br ǫ; และกำหนด CERT r ของเขาเอง เป็นชุดข้อความ mr,s′−1 เจ ของขั้นตอนย่อย (b’) – หากในระหว่างการรอและ ณ เวลาใดก็ตาม ฉันได้รับข้อความที่ถูกต้องเป็นอย่างน้อย คุณม+3 เจ = (ESIGj(1), ESIGj(H(Br ī )), \(\sigma\)r,m+3 เจ ) จากนั้นฉันก็หยุดการประมวลผลรอบ r ของเขาเอง ทันที ให้ตั้ง Br = Br ǫ และตั้งค่า CERT r ของเขาเองให้เป็นชุดข้อความ mr,m+3 เจ สำหรับ 1 และ H(br ǫ) 5.5 การวิเคราะห์ Algorand ′ 1 เราแนะนำสัญลักษณ์ต่อไปนี้สำหรับแต่ละรอบ r \(\geq\)0 ซึ่งใช้ในการวิเคราะห์ • ให้ T r เป็นเวลาที่ผู้ใช้ที่ซื่อสัตย์คนแรกรู้จัก Br−1 • ให้ Ir+1 เป็นช่วง [T r+1, T r+1 + \(\lambda\)] โปรดทราบว่า T 0 = 0 โดยการเริ่มต้นของโปรโตคอล สำหรับแต่ละ s \(\geq\)1 และ i \(\in\)SV r,s ให้จำไว้ เอลอาร์ส ฉัน และ \(\beta\)r,s ฉัน คือเวลาเริ่มต้นและเวลาสิ้นสุดของผู้เล่น i's step s ตามลำดับ นอกจากนี้ จำได้ว่า ts = (2s −3)\(\lambda\) + Λ สำหรับแต่ละ 2 \(\leq\)s \(\leq\)m + 3 นอกจากนี้ ให้ I0 \(\triangleq\){0} และ t1 \(\triangleq\)0 สุดท้ายนี้ จำไว้ว่า Lr \(\leq\)m/3 เป็นตัวแปรสุ่มที่แสดงถึงจำนวนการทดลองเบอร์นูลลี จำเป็นต้องดู 1 เมื่อการทดลองแต่ละครั้งคือ 1 โดยมีความน่าจะเป็น ph 2 และมีการทดลองสูงสุด m/3 ถ้าทั้งหมด การทดลองล้มเหลวจากนั้น Lr \(\triangleq\)m/3 ในการวิเคราะห์ เราไม่สนใจเวลาในการคำนวณ เนื่องจากจริงๆ แล้วมีเวลาน้อยมากเมื่อเทียบกับเวลาที่ต้องการ เพื่อเผยแพร่ข้อความ ไม่ว่าในกรณีใด หากใช้ แลมบ์ดา และ Λ ที่มีขนาดใหญ่ขึ้นเล็กน้อย เวลาในการคำนวณก็สามารถทำได้ เข้าสู่การวิเคราะห์โดยตรง ข้อความด้านล่างส่วนใหญ่ถือ “อย่างล้นหลาม ความน่าจะเป็น” และเราอาจไม่ได้เน้นย้ำข้อเท็จจริงนี้ซ้ำๆ ในการวิเคราะห์5.6 ทฤษฎีบทหลัก ทฤษฎีบท 5.1 คุณสมบัติต่อไปนี้มีความน่าจะเป็นอย่างล้นหลามสำหรับแต่ละรอบ r \(\geq\)0: 1. ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br. 2. เมื่อผู้นำ ër ซื่อสัตย์ บล็อก Br จะถูกสร้างขึ้นโดย ër โดยที่ Br จะมีค่าตอบแทนสูงสุด ได้รับโดย LRr ตามเวลา \(\alpha\)r,1 ër , T r+1 \(\leq\)T r + 8แล + Λ และผู้ใช้ที่ซื่อสัตย์ทุกคนรู้จัก Br ในเวลานั้น ช่วงเวลา Ir+1 3. เมื่อผู้นำ ër เป็นอันตราย T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ และผู้ใช้ที่ซื่อสัตย์ทุกคนจะรู้ Br ในช่วงเวลา Ir+1 4. ph = h2(1 + h −h2) สำหรับ Lr และตัวนำ ër ซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph ก่อนที่จะพิสูจน์ทฤษฎีบทหลักของเรา ขอให้เราตั้งข้อสังเกตไว้สองประการ หมายเหตุ. • Block-Generation และ True Latency เวลาในการสร้างบล็อก Br ถูกกำหนดให้เป็น T r+1 −T r นั่นคือ มันถูกกำหนดให้เป็นความแตกต่างระหว่างครั้งแรกที่ผู้ใช้ที่ซื่อสัตย์บางคนเรียนรู้ Br และ ครั้งแรกที่ผู้ใช้ที่ซื่อสัตย์เรียนรู้ Br−1 เมื่อผู้นำรอบนั้นซื่อสัตย์ ทรัพย์สินที่ 2 ของเรา ทฤษฎีบทหลักรับประกันว่าเวลาที่แน่นอนในการสร้าง Br คือเวลา 8 แล + Λ ไม่ว่าจะเป็นอะไรก็ตาม ค่าที่แน่นอนของ h > 2/3 อาจเป็นได้ เมื่อผู้นำมีเจตนาร้าย คุณสมบัติที่ 3 หมายความว่า เวลาที่คาดว่าจะสร้าง Br นั้นมีขอบเขตบน ( 12 ph + 10)\(\lambda\) + Λ อีกครั้งไม่ว่าจะแม่นยำแค่ไหนก็ตาม ค่า h.18 อย่างไรก็ตาม เวลาที่คาดว่าจะสร้าง Br ขึ้นอยู่กับค่าที่แน่นอนของ h โดยแท้จริงแล้ว โดยคุณสมบัติ 4, ph = h2(1 + h −h2) และผู้นำมีความซื่อสัตย์กับความน่าจะเป็นเป็นอย่างน้อย ph ดังนั้น E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8แล + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)แล + Λ) ตัวอย่างเช่น ถ้า h = 80% แล้ว E[T r+1 −T r] \(\leq\)12.7แล + Λ • แลมบ์ดา กับ Λ. โปรดทราบว่าขนาดของข้อความที่ส่งโดยผู้ตรวจสอบในขั้นตอน Algorand ′ นั้นถูกครอบงำ ตามความยาวของคีย์ลายเซ็นดิจิทัลซึ่งสามารถแก้ไขได้แม้ว่าจะมีจำนวนก็ตาม ผู้ใช้มีมหาศาล โปรดทราบด้วยว่าในขั้นตอนใดๆ > 1 จำนวนผู้ตรวจสอบที่คาดหวังไว้จะเท่ากัน สามารถใช้ได้ไม่ว่าจำนวนผู้ใช้จะเป็น 100K, 100M หรือ 100M ที่เป็นเช่นนี้ก็เพราะว่า n เพียงอย่างเดียว ขึ้นอยู่กับ h และ F โดยสรุปแล้ว หากไม่จำเป็นต้องเพิ่มความยาวของคีย์ลับอย่างกะทันหัน ค่าของ \(\gamma\) ควรคงเดิมไม่ว่าจำนวนผู้ใช้จะมากเพียงใด อนาคตอันใกล้ ในทางตรงกันข้าม สำหรับอัตราธุรกรรมใดๆ จำนวนธุรกรรมจะเพิ่มขึ้นตามจำนวน ผู้ใช้ ดังนั้นเพื่อประมวลผลธุรกรรมใหม่ทั้งหมดให้ทันเวลา ขนาดของบล็อกควรจะเป็น ยังเติบโตตามจำนวนผู้ใช้งาน ทำให้ Λ เติบโตขึ้นด้วย ดังนั้นในระยะยาวเราควรจะมี แล << Λ. ดังนั้นจึงเป็นเรื่องเหมาะสมที่จะมีโคอีfficientที่ใหญ่กว่าสำหรับ แล และจริงๆ แล้ว coefficient จาก 1 สำหรับ Λ. การพิสูจน์ทฤษฎีบท 5.1 เราพิสูจน์คุณสมบัติ 1–3 โดยการเหนี่ยวนํา: สมมติว่าคุณสมบัติเหล่านั้นคงไว้เป็นรอบ r −1 (โดยไม่สูญเสียลักษณะทั่วไป มันจะถือเป็น "รอบ -1" โดยอัตโนมัติเมื่อ r = 0) เราพิสูจน์มันแล้ว รอบร. 18แท้จริงแล้ว E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)แล + Λ = (6 \(\cdot\) 2 ค่า pH + 10)แล + Λ = ( 12 ค่าพีเอช + 10)แล + Λเนื่องจาก Br−1 ถูกกำหนดอย่างไม่ซ้ำกันโดยสมมติฐานอุปนัย เซต SV r,s จึงถูกกำหนดอย่างไม่ซ้ำกัน สำหรับแต่ละขั้นตอนของรอบ r โดยการเลือก n1, SV r,1 ̸= \(\emptyset\) ด้วยความน่าจะเป็นอย่างล้นหลาม เราตอนนี้ ระบุบทแทรกสองบทต่อไปนี้ ซึ่งพิสูจน์แล้วในส่วนที่ 5.7 และ 5.8 ตลอดการปฐมนิเทศและใน การพิสูจน์บทแทรกทั้งสองบทการวิเคราะห์รอบ 0 เกือบจะเหมือนกับขั้นตอนอุปนัย และเราจะเน้นถึงความแตกต่างเมื่อเกิดขึ้น เลมมา 5.2 [ความสมบูรณ์ของเล็มมา] สมมติคุณสมบัติ 1–3 ค้างไว้รอบ r−1 เมื่อผู้นำ ër เป็นคนซื่อสัตย์ ด้วยความน่าจะเป็นอย่างล้นหลาม • ผู้ใช้จริงทุกคนเห็นด้วยกับบล็อกเดียวกัน Br ซึ่งสร้างโดย ër และมีค่าสูงสุด ชุดจ่ายเงินที่ได้รับโดย ër ตามเวลา \(\alpha\)r, 1 ër \(\in\)Ir; และ • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ และผู้ใช้จริงทุกคนจะทราบ Br ในช่วงเวลา Ir+1 เลมมา 5.3 [Soundness Lemma] สมมติคุณสมบัติ 1–3 ค้างไว้รอบ r −1 เมื่อผู้นำ ër เป็นอันตราย ด้วยความน่าจะเป็นอย่างล้นหลาม ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ และผู้ใช้ที่ซื่อสัตย์ทุกคนทราบ Br ในช่วงเวลา Ir+1 คุณสมบัติ 1–3 คงไว้โดยการใช้บทแทรก 5.2 และ 5.3 กับ r = 0 และกับขั้นตอนอุปนัย สุดท้ายนี้ เรากล่าวย้ำคุณสมบัติ 4 ว่าเป็นบทแทรกต่อไปนี้ ซึ่งพิสูจน์แล้วในส่วนที่ 5.9 เลมมา 5.4 ให้คุณสมบัติ 1–3 สำหรับแต่ละรอบก่อน r, ph = h2(1 + h −h2) สำหรับ Lr และ ผู้นำ ër ซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph เมื่อรวมบทแทรกสามบทข้างต้นเข้าด้วยกัน ทฤษฎีบท 5.1 ก็ถือได้ ■ บทแทรกด้านล่างระบุคุณสมบัติที่สำคัญหลายประการเกี่ยวกับรอบ r เมื่อพิจารณาจากอุปนัย สมมติฐาน และจะนำไปใช้ในการพิสูจน์บทแทรกสามบทข้างต้น เลมมา 5.5 สมมติว่าคุณสมบัติ 1–3 คงไว้สำหรับรอบ r −1 สำหรับแต่ละขั้นตอน s \(\geq\)1 ของรอบ r และ ผู้ตรวจสอบที่ซื่อสัตย์แต่ละคน i \(\in\)HSV r,s เรามีสิ่งนั้น (ก) \(\alpha\)r, s ฉัน \(\in\)ฉัน; (b) ถ้าผู้เล่นฉันรอมาเป็นระยะเวลา ts แล้ว \(\beta\)r,s ฉัน \(\in\)[T r + ts, T r + \(\lambda\) + ts] สำหรับ r > 0 และ \(\beta\)r,s ฉัน = ts สำหรับ r = 0; และ (c) ถ้าผู้เล่นฉันรอมาเป็นระยะเวลา ts แล้วตามเวลา \(\beta\)r,s ฉัน เขาได้รับข้อความทั้งหมดแล้ว ส่งโดยผู้ตรวจสอบที่ซื่อสัตย์ทุกคน j \(\in\)HSV r,s′ สำหรับทุกขั้นตอน s′ < s ยิ่งไปกว่านั้น สำหรับแต่ละขั้นตอน s \(\geq\)3 เรามีสิ่งนั้น (d) ไม่มีผู้เล่นที่แตกต่างกันสองคน i, i′ \(\in\)SV r,s และค่าที่ต่างกันสองค่า v, v′ ที่เหมือนกัน ความยาวจนผู้เล่นทั้งสองคนต้องรอเป็นระยะเวลา ts มากกว่า 2/3 ของทั้งหมด ข้อความที่ถูกต้อง mr,s−1 เจ ผู้เล่นที่ฉันได้รับได้ลงนามใน v และมากกว่า 2/3 ของทั้งหมดที่ถูกต้อง ข้อความคุณ, s−1 เจ ผู้เล่นที่ฉันได้รับได้เซ็นสัญญากับ v′ การพิสูจน์. คุณสมบัติ (a) ตามมาจากสมมติฐานอุปนัยโดยตรง เนื่องจากผู้เล่นที่ฉันรู้จัก Br−1 ใน ช่วงเวลา Ir และเริ่มก้าวของเขาเองทันที คุณสมบัติ (b) ติดตามโดยตรงจาก (a): เนื่องจาก ผู้เล่น ฉันรอมาระยะหนึ่งแล้วก่อนที่จะลงมือ \(\beta\)r,s ฉัน = \(\alpha\)r,s ฉัน + ทีเอส โปรดทราบว่า \(\alpha\)r,s ฉัน = 0 สำหรับ ร = 0 ตอนนี้เราพิสูจน์คุณสมบัติ (c) ถ้า s = 2 ดังนั้นโดยคุณสมบัติ (b) สำหรับผู้ตรวจสอบทั้งหมด j \(\in\)HSV r,1 เรามี \(\beta\)r,s ฉัน = \(\alpha\)r,s ฉัน + ts \(\geq\)T r + ts = T r + แล + Λ \(\geq\) \(\beta\)r,1 เจ + Λ.เนื่องจากผู้ตรวจสอบแต่ละคน j \(\in\)HSV r,1 ส่งข้อความของเขาในเวลา \(\beta\)r,1 เจ และข้อความไปถึงความซื่อสัตย์ทั้งหมด ผู้ใช้ในเวลาสูงสุด Λ ตามเวลา \(\beta\)r, s ฉัน ผู้เล่นที่ฉันได้รับข้อความที่ส่งมาจากผู้ตรวจสอบทั้งหมด HSV r,1 ตามต้องการ ถ้า s > 2 แล้ว ts = ts−1 + 2แล ตามคุณสมบัติ (b) สำหรับทุกขั้นตอน s′ < s และผู้ตรวจสอบทั้งหมด j \(\in\)HSV r,s′, \(\beta\)r,s ฉัน = \(\alpha\)r,s ฉัน + ts \(\geq\)T r + ts = T r + ts−1 + 2แล \(\geq\)T r + ts′ + 2แล = T r + แล + ts′ + แลม \(\geq\) \(\beta\)r,s′ เจ + แล. เนื่องจากผู้ตรวจสอบแต่ละคน j \(\in\)HSV r,s′ ส่งข้อความของเขาในเวลา \(\beta\)r,s′ เจ และข้อความไปถึงความซื่อสัตย์ทั้งหมด ผู้ใช้ในเวลาสูงสุด , ตามเวลา \(\beta\)r, s ฉัน ผู้เล่น ฉันได้รับข้อความทั้งหมดที่ส่งมาจากผู้ตรวจสอบที่ซื่อสัตย์ทุกคน ใน HSV r,s′ สำหรับทุก s′ < s ดังนั้นทรัพย์สิน (c) ถืออยู่ ในที่สุด เราก็พิสูจน์คุณสมบัติ (d) โปรดทราบว่าผู้ตรวจสอบ j \(\in\)SV r,s−1 ลงชื่อไม่เกินสองสิ่ง ขั้นตอนที่ s −1 โดยใช้คีย์ลับชั่วคราว: ค่า vj ที่มีความยาวเท่ากับเอาต์พุตของ ฟังก์ชัน hash และบิต bj \(\in\){0, 1} ถ้า s −1 \(\geq\)4 นั่นคือเหตุผลในบทแทรก เราต้องการให้ v และ v′ มีความยาวเท่ากัน: ผู้ตรวจสอบหลายคนอาจลงนามทั้งค่า hash v และบิต b ดังนั้น ทั้งคู่จึงผ่านเกณฑ์ 2/3 สมมุติเพื่อประโยชน์แห่งความขัดแย้งว่ามีตัวตรวจสอบที่ต้องการ i, i′ และค่า v, v′ อยู่ โปรดทราบว่าผู้ตรวจสอบที่เป็นอันตรายบางรายใน MSV r,s−1 อาจลงนามทั้ง v และ v′ แต่แต่ละคนก็ซื่อสัตย์ ผู้ตรวจสอบใน HSV r,s−1 ได้ลงนามมากที่สุดหนึ่งฉบับ โดยทรัพย์สิน (c) ทั้งฉันและฉันได้รับ ข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,s−1 ให้ HSV r,s−1(v) เป็นเซตของผู้ตรวจสอบที่ซื่อสัตย์ (r, s −1) ซึ่งลงนามใน v, MSV r,s−1 ฉัน ชุด ของผู้ตรวจสอบที่เป็นอันตราย (r, s −1) ซึ่งฉันได้รับข้อความที่ถูกต้องและ MSV r, s−1 ฉัน (v) ที่ เซตย่อยของ MSV r,s−1 ฉัน จากผู้ที่ฉันได้รับข้อความลงนามที่ถูกต้อง v. ตามข้อกำหนดสำหรับ ฉันและวี เรามี อัตราส่วน \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 ฉัน (ก)| |HSV r,s−1| + |MSV r,s−1 ฉัน |

2 3. (1) เราแสดงก่อน |MSV r,s−1 ฉัน (ก)| \(\leq\)|HSV r,s−1(v)| (2) สมมติเป็นอย่างอื่นโดยความสัมพันธ์ระหว่างพารามิเตอร์ที่มีความน่าจะเป็นอย่างท่วมท้น |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 ฉัน | ดังนั้น อัตราส่วน < |HSV r,s−1(v)| + |MSV r,s−1 ฉัน (ก)| 3|MSV r,s−1 ฉัน | < 2|MSV r,s−1 ฉัน (ก)| 3|MSV r,s−1 ฉัน | \(\leq\)2 3, ความไม่เท่าเทียมกันที่ขัดแย้งกัน 1. ต่อไป โดยอสมการ 1 เรามี 2|HSV r,s−1| + 2|MSV r,s−1 ฉัน | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 ฉัน (ก)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 ฉัน | + |MSV r,s−1 ฉัน (ก)|. เมื่อรวมกับความไม่เท่าเทียมกัน 2 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 ฉัน (ก)| \(\leq\)4|HSV r,s−1(v)|, ซึ่งหมายถึง |HSV r,s−1(v)| > 1 2|HSV r,s−1|ในทำนองเดียวกัน ตามข้อกำหนดสำหรับ i′ และ v′ เรามี |HSV r,s−1(วี′)| > 1 2|HSV r,s−1| เนื่องจากผู้ตรวจสอบที่ซื่อสัตย์ j \(\in\)HSV r,s−1 ทำลายคีย์ลับชั่วคราวของเขา skr,s−1 เจ ก่อนที่จะแพร่กระจาย ข้อความของเขา ปฏิปักษ์ไม่สามารถปลอมลายเซ็นของ j สำหรับค่าที่ j ไม่ได้ลงนามหลังจากนั้น การเรียนรู้ว่า j เป็นผู้ยืนยัน ดังนั้น อสมการทั้งสองข้างต้นจึงหมายถึง |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(วี′)| > |HSV r,s−1| ซึ่งเป็นข้อขัดแย้ง ดังนั้นจึงไม่มีสิ่งที่ต้องการ i, i′, v, v′ และ ทรัพย์สิน (ง) ถือครอง ■ 5.7 ความสมบูรณ์เลมมา เลมมา 5.2 [ความสมบูรณ์ของเล็มมา ปรับปรุงใหม่] สมมุติว่าคุณสมบัติ 1–3 คงไว้สำหรับรอบ r−1 เมื่อ ผู้นำ ër เป็นคนซื่อสัตย์ มีความเป็นไปได้อย่างล้นหลาม • ผู้ใช้จริงทุกคนเห็นด้วยกับบล็อกเดียวกัน Br ซึ่งสร้างโดย ër และมีค่าสูงสุด ชุดจ่ายเงินที่ได้รับโดย ër ตามเวลา \(\alpha\)r, 1 ër \(\in\)Ir; และ • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ และผู้ใช้จริงทุกคนจะทราบ Br ในช่วงเวลา Ir+1 การพิสูจน์. ตามสมมติฐานอุปนัยและบทแทรก 5.5 สำหรับแต่ละขั้นตอน s และตัวตรวจสอบ i \(\in\)HSV r,s เอลอาร์ส ฉัน \(\in\)ไอร์ ด้านล่างเราจะวิเคราะห์โปรโตคอลทีละขั้นตอน ขั้นตอนที่ 1 ตามคำจำกัดความ ผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,1 จะเผยแพร่ข้อความที่ต้องการ mr,1 ฉัน ที่ เวลา \(\beta\)r,1 ฉัน = แอลอาร์,1 ฉัน ที่ไหน คุณ1 ฉัน = (พี่ ฉัน , esigi(H(Br ผม )), \(\sigma\)r,1 ฉัน ) Br i = (r, จ่าย r ผม , SIGI(Qr−1), H(Br−1)), และจ่าย r ฉันเป็นค่าตอบแทนสูงสุดในบรรดาการชำระเงินทั้งหมดที่ฉันเห็นตามเวลา \(\alpha\)r,1 ฉัน ขั้นตอนที่ 2 แก้ไขผู้ตรวจสอบที่ซื่อสัตย์โดยพลการ i \(\in\)HSV r,2 โดย Lemma 5.5 เมื่อผู้เล่นทำเสร็จแล้ว รอเวลา \(\beta\)r,2 ฉัน = แอลอาร์,2 ฉัน + t2 เขาได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบใน HSV r,1 รวมถึง นาย 1 lr. ตามคำจำกัดความของ ër ไม่มีผู้เล่นคนอื่นใน PKr−k ที่มีข้อมูลรับรอง hash ค่าน้อยกว่า H(\(\sigma\)r,1 ër) แน่นอนว่าปฏิปักษ์สามารถทำให้เสื่อมทราม ër ได้หลังจากเห็นว่า H(\(\sigma\)r,1 ) มีขนาดเล็กมาก แต่เมื่อถึงเวลานั้น ผู้เล่น ër ได้ทำลายกุญแจชั่วคราวของเขาและข้อความ mr,1 lr ได้รับการเผยแพร่ ดังนั้นจึงเป็นการยืนยันว่าฉันได้ตั้งผู้นำของเขาเองให้เป็นผู้เล่นแล้ว ดังนั้น ณ เวลา \(\beta\)r,2 ฉัน ผู้ตรวจสอบฉันเผยแพร่นาย 2 ฉัน = (ESIGi(วี′ ผม), \(\sigma\)r,2 ฉัน ) โดยที่ v′ ผม = H(br ër) เมื่อ r = 0 จะเกิดผลต่างเพียงอย่างเดียว นั่นคือ \(\beta\)r,2 ฉัน = t2 แทนที่จะอยู่ในช่วง สิ่งที่คล้ายกันสามารถพูดได้สำหรับขั้นตอนในอนาคตและเรา จะไม่เน้นย้ำพวกเขาอีก ขั้นตอนที่ 3 แก้ไขผู้ตรวจสอบที่ซื่อสัตย์โดยพลการ i \(\in\)HSV r,3 โดย Lemma 5.5 เมื่อผู้เล่นทำเสร็จแล้ว รอเวลา \(\beta\)r,3 ฉัน = แอลอาร์,3 ฉัน + t3 เขาได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบใน HSV r,2 โดยความสัมพันธ์ระหว่างพารามิเตอร์ต่างๆ ที่มีความน่าจะเป็นอย่างล้นหลาม |HSV r,2| > 2|MSV r,2|. ยิ่งไปกว่านั้น ไม่มีผู้ตรวจสอบที่ซื่อสัตย์คนใดจะลงนามในข้อความที่ขัดแย้งและปฏิปักษ์ ไม่สามารถปลอมลายเซ็นของผู้ตรวจสอบที่ซื่อสัตย์ได้หลังจากที่คนหลังได้ทำลายผู้ตรวจสอบที่เกี่ยวข้องแล้ว กุญแจลับชั่วคราว ดังนั้นมากกว่า 2/3 ของข้อความที่ถูกต้อง (r, 2) ทั้งหมดที่ฉันได้รับมาจาก ผู้ตรวจสอบที่ซื่อสัตย์และอยู่ในแบบฟอร์ม mr,2 เจ = (ESIGj(H(Br ër)), \(\sigma\)r,2 j ) โดยไม่มีความขัดแย้ง ดังนั้น ณ เวลา \(\beta\)r,3 ฉัน ผู้เล่นที่ฉันเผยแพร่นาย 3 ฉัน = (ESIGi(v′), \(\sigma\)r,3 i ) โดยที่ v′ = H(Br ër)ขั้นตอนที่ 4 แก้ไขผู้ตรวจสอบที่ซื่อสัตย์โดยพลการ i \(\in\)HSV r,4 โดย Lemma 5.5 ผู้เล่นที่ฉันได้รับทั้งหมด ข้อความที่ส่งโดยผู้ตรวจสอบใน HSV r,3 เมื่อเขารอเสร็จแล้วที่เวลา \(\beta\)r,4 ฉัน = \(\alpha\)อาร์,4 ฉัน +t4. คล้ายกับ ขั้นตอนที่ 3 มากกว่า 2/3 ของข้อความที่ถูกต้อง (r, 3) ทั้งหมดที่ฉันได้รับมาจากผู้ตรวจสอบที่ซื่อสัตย์และ ของแบบฟอร์มนาย3 เจ = (ESIGj(H(Br ër)), \(\sigma\)r,3 เจ) ดังนั้น ผู้เล่น i ตั้งค่า vi = H(Br ër), gi = 2 และ bi = 0 ณ เวลา \(\beta\)r,4 ฉัน = \(\alpha\)อาร์,4 ฉัน +t4 เขาแพร่กระจาย นาย4 ฉัน = (ESIGi(0), ESIGi(H(Br ër)), \(\sigma\)r,4 ฉัน) ขั้นตอนที่ 5 แก้ไขผู้ตรวจสอบที่ซื่อสัตย์โดยพลการ i \(\in\)HSV r,5 โดย Lemma 5.5 ผู้เล่นที่ผมอยากได้ ได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบใน HSV r,4 หากเขารอจนถึงเวลา \(\alpha\)r,5 ฉัน +t5. โปรดทราบว่า |HSV r,4| \(\geq\)tH.19 โปรดทราบว่าผู้ตรวจสอบทั้งหมดใน HSV r,4 ได้ลงนามใน H(Br ër) เป็น |MSV r,4| < tH ไม่มี v′ ̸= H(Br lr) ที่อาจได้รับการลงนามโดย th ผู้ตรวจสอบใน SV r,4 (ซึ่งจำเป็นต้องเป็นอันตราย) ดังนั้นผู้เล่น ฉันจะไม่หยุดก่อนที่เขาจะทำเช่นนั้น ได้รับข้อความที่ถูกต้องแล้วคุณ 4 เจ = (ESIGj(0), ESIGj(H(Br ër)), \(\sigma\)r,4 เจ) ให้ T เป็นเวลาที่ เหตุการณ์หลังเกิดขึ้น ข้อความเหล่านั้นบางส่วนอาจมาจากผู้เล่นที่เป็นอันตราย แต่เนื่องจาก |MSV r,4| < อย่างน้อยหนึ่งในนั้นมาจากผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,4 และถูกส่งตามเวลา ที อาร์ +ที4. ดังนั้น T \(\geq\)T r +t4 > T r +แล+Λ \(\geq\) \(\beta\)r,1 LRr +Λ และตามเวลาที่ผู้เล่น T ฉันก็ได้รับเช่นกัน ข้อความคุณ1 lr. โดยการสร้างโปรโตคอล ผู้เล่น ฉัน หยุดที่เวลา \(\beta\)r,5 ฉัน = T ไม่มี เผยแพร่สิ่งใด ๆ เซต Br = Br lr; และตั้งค่า CERT r ของเขาเองให้เป็นชุดของ (r, 4) - ข้อความสำหรับ 0 และ H(br lr) ที่เขาได้รับ ขั้นตอนที่ > 5 ในทำนองเดียวกัน สำหรับขั้นตอนใดๆ ที่ s > 5 และตัวตรวจสอบใดๆ i \(\in\)HSV r,s ผู้เล่น ฉันจะมี ได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบใน HSV r,4 หากเขารอจนถึงเวลา \(\alpha\)r,s ฉัน + ทีเอส โดย การวิเคราะห์เดียวกัน ผู้เล่นฉันหยุดโดยไม่เผยแพร่อะไรเลย การตั้งค่า Br = Br ër (และตั้งค่าของเขาเอง CERT r อย่างถูกต้อง) แน่นอนว่าผู้ตรวจสอบที่เป็นอันตรายไม่สามารถหยุดและอาจแพร่กระจายโดยพลการ ข้อความ แต่เนื่องจาก |MSV r,s| < tH โดยการเหนี่ยวนำไม่มี v′ อื่นใดที่สามารถลงนามโดยผู้ตรวจสอบได้ ในขั้นตอนที่ 4 \(\leq\)s′ < s ดังนั้นผู้ตรวจสอบที่ซื่อสัตย์จึงหยุดเพียงเพราะพวกเขาได้รับความถูกต้องแล้ว (r, 4) - ข้อความสำหรับ 0 และ H (Br ër) การสร้างบล็อก Round-r ใหม่ การวิเคราะห์ขั้นตอนที่ 5 นำไปใช้กับความซื่อสัตย์ทั่วไป ผู้ใช้ฉันเกือบจะไม่มีการเปลี่ยนแปลงใด ๆ อันที่จริง ผู้เล่น i เริ่มรอบของตัวเอง r ในช่วงเวลา Ir และ จะหยุดที่เวลา T เมื่อเขาได้รับข้อความที่ถูกต้อง (r, 4) สำหรับ H (Br ër) อีกครั้งเพราะ อย่างน้อยหนึ่งในข้อความเหล่านั้นมาจากผู้ตรวจสอบที่ซื่อสัตย์และถูกส่งหลังจากเวลาผ่านไป T r + t4 ผู้เล่นที่ฉันมี รับนาย1ด้วย ër ตามเวลา T ดังนั้นเขาจึงกำหนดให้ Br = Br lr ด้วย CERT r ที่เหมาะสม เหลือเพียงการแสดงให้ผู้ใช้ที่ซื่อสัตย์ทุกคนจบรอบ r ภายในระยะเวลา Ir+1 จากการวิเคราะห์ขั้นตอนที่ 5 ผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,5 รู้ Br บนหรือก่อน \(\alpha\)r,5 ฉัน + t5 \(\leq\) T r + แล + t5 = T r + 8แล + Λ เนื่องจาก T r+1 คือเวลาที่ผู้ใช้ที่ซื่อสัตย์คนแรก ir รู้จัก Br เราก็เลยมี T r+1 \(\leq\)T r + 8แล + Λ ตามต้องการ ยิ่งไปกว่านั้น เมื่อผู้เล่นรู้จัก Br เขาได้ช่วยเผยแพร่ข้อความไปแล้ว CERT r ของเขา โปรดทราบว่าข้อความเหล่านั้นทั้งหมดจะได้รับจากผู้ใช้ที่ซื่อสัตย์ทุกคนภายในเวลา \(\lambda\) แม้ว่าก็ตาม 19พูดอย่างเคร่งครัด สิ่งนี้เกิดขึ้นโดยมีความเป็นไปได้สูงมาก แต่ก็ไม่ได้เกินความจำเป็นเสมอไป อย่างไรก็ตามสิ่งนี้ ความน่าจะเป็นจะส่งผลต่อเวลาการทำงานของโปรโตคอลเล็กน้อย แต่ไม่ส่งผลต่อความถูกต้อง เมื่อ h = 80% แล้ว |HSV r,4| \(\geq\)tH ด้วยความน่าจะเป็น 1 −10−8 หากเหตุการณ์นี้ไม่เกิดขึ้น โปรโตคอลก็จะดำเนินต่อไปอีกเหตุการณ์หนึ่ง 3 ขั้นตอน เนื่องจากความน่าจะเป็นที่สิ่งนี้จะไม่เกิดขึ้นในสองขั้นตอนนั้นมีน้อยมาก โปรโตคอลจะสิ้นสุดที่ขั้นตอนที่ 8 ใน ความคาดหวังจำนวนขั้นตอนที่ต้องการคือเกือบ 5ผู้เล่น ir เป็นผู้เล่นคนแรกที่เผยแพร่สิ่งเหล่านี้ ยิ่งกว่านั้นตามการวิเคราะห์ข้างต้นที่เรามี T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 LRr + Λ ดังนั้นผู้ใช้ที่ซื่อสัตย์ทุกคนจึงได้รับ mr,1 ërตามเวลา T r+1 + แล ดังนั้น ผู้ใช้ที่ซื่อสัตย์ทุกคนรู้จัก Br ในช่วงเวลา Ir+1 = [T r+1, T r+1 + แล] ในที่สุด สำหรับ r = 0 เรามี T 1 \(\leq\)t4 + แล = 6แล + Λ ผสมผสานทุกอย่างเข้าด้วยกัน แผ่นแทรก 5.2 ถือ ■ 5.8 ความสมบูรณ์ของเล็มมา เลมมา 5.3 [ความสมบูรณ์ของเล็มมา ปรับปรุงใหม่] สมมุติว่าคุณสมบัติ 1–3 คงไว้สำหรับรอบ r −1 เมื่อ ผู้นำ lr เป็นคนที่เป็นอันตราย ด้วยความน่าจะเป็นอย่างล้นหลาม ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ และผู้ใช้ที่ซื่อสัตย์ทุกคนจะทราบ Br ในช่วงเวลา Ir+1 การพิสูจน์. เราพิจารณาทั้งสองส่วนของโปรโตคอล GC และ BBA⋆ แยกกัน GC. ตามสมมติฐานอุปนัยและบทแทรก 5.5 สำหรับขั้นตอนใดๆ s \(\in\){2, 3, 4} และความซื่อสัตย์ใดๆ ตรวจสอบ i \(\in\)HSV r,s เมื่อผู้เล่น i ทำหน้าที่ ณ เวลา \(\beta\)r,s ฉัน = \(\alpha\)r,s ฉัน + ts เขาได้รับข้อความที่ส่งทั้งหมดแล้ว โดยผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอน s′ < s เราแยกความแตกต่างสองกรณีที่เป็นไปได้สำหรับขั้นตอนที่ 4 กรณีที่ 1 ไม่มีการยืนยัน i \(\in\)HSV r,4 เซ็ต gi = 2 ในกรณีนี้ ตามคำจำกัดความ bi = 1 สำหรับผู้ตรวจสอบทั้งหมด i \(\in\)HSV r,4 นั่นคือพวกเขาเริ่มต้นด้วย ข้อตกลงในวันที่ 1 ในโปรโตคอล BA ไบนารี พวกเขาอาจไม่มีข้อตกลงเกี่ยวกับ vi ของพวกเขา แต่นั่นไม่สำคัญอย่างที่เราเห็นในไบนารี่ BA กรณีที่ 2 มีตัวยืนยัน ˆi \(\in\)HSV r,4 อยู่ โดยที่ gˆi = 2 ในกรณีนี้ เราแสดงให้เห็นแล้วว่า (1) gi \(\geq\)1 สำหรับ i \(\in\)HSV r,4 ทั้งหมด (2) มีค่า v′ อยู่ โดยที่ vi = v′ สำหรับ i \(\in\)HSV r,4 ทั้งหมด และ (3) มีข้อความที่ถูกต้องคือ mr,1 ฎ จากผู้ตรวจสอบบางราย ë\(\in\)SV r,1 โดยที่ v′ = H(Br ë) เนื่องจากผู้เล่น ˆi ซื่อสัตย์และตั้งค่า gˆi = 2 มากกว่า 2/3 ของข้อความที่ถูกต้องทั้งหมด mr,3 เจ เขาได้รับเป็นค่าเดียวกัน v′ ̸= \(\bot\) และเขาได้ตั้งค่า vˆi = v′ โดยคุณสมบัติ (d) ในบทแทรก 5.5 สำหรับผู้ตรวจสอบที่ซื่อสัตย์ (r, 4) อื่น ๆ จะไม่สามารถเป็นได้มากไปกว่านี้ มากกว่า 2/3 ของข้อความที่ถูกต้องทั้งหมด mr,3 เจ ที่ฉันได้รับนั้นมีค่าเท่ากัน v′′ ̸= v′ ดังนั้น หากฉันตั้งค่า gi = 2 จะต้องเห็นว่าฉันเห็น > 2/3 ส่วนใหญ่สำหรับ v′ ด้วยเช่นกัน และตั้งค่า vi = v′ ตามต้องการ ตอนนี้ให้พิจารณาตัวยืนยันโดยพลการ i \(\in\)HSV r,4 ด้วย gi < 2 คล้ายกับการวิเคราะห์คุณสมบัติ (d) ในบทแทรก 5.5 เนื่องจากผู้เล่น ˆi ได้เห็น > 2/3 ส่วนใหญ่สำหรับ v′ มากกว่า 1 2|HSV r,3| ซื่อสัตย์ (r, 3) - ผู้ตรวจสอบได้ลงนาม v′ เพราะฉันได้รับข้อความทั้งหมดจากผู้ตรวจสอบที่ซื่อสัตย์ (r, 3) โดย เวลา \(\beta\)r,4 ฉัน = \(\alpha\)อาร์,4 ฉัน +t4 โดยเฉพาะเขาได้รับมากกว่า 1 2|HSV r,3| ข้อความจากพวกเขา สำหรับวี' เพราะ |HSV r,3| > 2|MSV r,3|, ฉันได้เห็นแล้ว > 1/3 ส่วนใหญ่สำหรับ v′ ตามนั้นครับ ผู้เล่น ฉันตั้งค่า gi = 1 และทรัพย์สิน (1) ถืออยู่ ผู้เล่นจำเป็นต้องตั้งค่า vi = v′ หรือไม่? สมมติว่ามีค่าที่แตกต่างกัน v′′ ̸= \(\bot\)เช่นนั้น ผู้เล่นที่ฉันเคยเห็น > 1/3 ส่วนใหญ่สำหรับ v′′ ข้อความเหล่านั้นบางส่วนอาจมาจากที่เป็นอันตราย ผู้ตรวจสอบ แต่อย่างน้อยหนึ่งในนั้นมาจากผู้ตรวจสอบที่ซื่อสัตย์บางคน j \(\in\)HSV r,3: แน่นอน เพราะ |HSV r,3| > 2|MSV r,3| และฉันได้รับข้อความทั้งหมดจาก HSV r,3 กลุ่มผู้ประสงค์ร้าย ผู้ตรวจสอบที่ฉันได้รับข้อความที่ถูกต้อง (r, 3) นับเป็น < 1/3 ของข้อความที่ถูกต้องทั้งหมด ข้อความที่เขาได้รับตามคำจำกัดความ ผู้เล่น j ต้องเห็น > 2/3 ส่วนใหญ่สำหรับ v′′ ในบรรดาข้อความที่ถูกต้อง (r, 2) ทั้งหมด เขาได้รับ. อย่างไรก็ตาม เรามีผู้ตรวจสอบที่ซื่อสัตย์ (r, 3) คนอื่นๆ ได้เห็นแล้ว 2/3 ส่วนใหญ่สำหรับ v′ (เพราะพวกเขาเซ็นชื่อ v′) โดยคุณสมบัติ (d) ของ Lemma 5.5 สิ่งนี้ไม่สามารถทำได้ เกิดขึ้นและไม่มีค่าดังกล่าว v′′ อยู่ ดังนั้นผู้เล่นฉันต้องตั้งค่า vi = v′ ตามต้องการ และทรัพย์สิน (2) ถือครอง ท้ายที่สุด เมื่อพิจารณาว่าผู้ตรวจสอบที่ซื่อสัตย์ (r, 3) บางคนได้เห็น > 2/3 ส่วนใหญ่สำหรับ v′ บางคน (จริงๆ แล้ว มากกว่าครึ่งหนึ่งของ) ผู้ตรวจสอบที่ซื่อสัตย์ (r, 2) ได้ลงนามใน v′ และเผยแพร่ข้อความของพวกเขา โดยการสร้างเกณฑ์วิธี ผู้ตรวจสอบที่ซื่อสัตย์ (r, 2) เหล่านั้นจะต้องได้รับใบรับรองที่ถูกต้อง ส่งข้อความถึงคุณ1 ฎ จากผู้เล่นบางคน ë\(\in\)SV r,1 โดยมี v′ = H(Br ̵) ดังนั้นทรัพย์สิน (3) ถืออยู่ บีบีเอ⋆. เราแยกสองกรณีอีกครั้ง กรณีที่ 1 ผู้ตรวจสอบทั้งหมด i \(\in\)HSV r,4 มี bi = 1 สิ่งนี้เกิดขึ้นหลังจากกรณีที่ 1 ของ GC เป็น |MSV r,4| < tH ในกรณีนี้ไม่มีผู้ยืนยันใน SV r,5 สามารถรวบรวมหรือสร้างข้อความที่ถูกต้อง (r, 4) สำหรับบิต 0 ดังนั้นจึงไม่มีผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,5 จะหยุดเพราะเขารู้จักบล็อกที่ไม่ว่างเปล่า Br. ยิ่งไปกว่านั้น แม้ว่าจะมีข้อความที่ถูกต้อง (r, 4) เป็นอย่างน้อยสำหรับบิต 1 แต่ s′ = 5 ก็ไม่เป็นไปตามนั้น s′ −2 ≡1 mod 3 ดังนั้น จึงไม่มีผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,5 จะหยุดลงเพราะเขารู้ว่า Br = Br ī. ในทางกลับกัน ผู้ตรวจสอบทุกราย i \(\in\)HSV r,5 ทำหน้าที่ ณ เวลา \(\beta\)r,5 ฉัน = \(\alpha\)อาร์,5 ฉัน +t5 โดยเมื่อเขาได้รับครบแล้ว ข้อความที่ส่งโดย HSV r,4 ตามบทแทรก 5.5 ดังนั้นผู้เล่นฉันจึงเห็น > 2/3 ส่วนใหญ่สำหรับ 1 และกำหนดให้ bi = 1 ในขั้นตอนที่ 6 ซึ่งเป็นขั้นตอน Coin-Fixed-To-1 แม้ว่า s′ = 5 จะเป็นไปตาม s′ −2 ≡0 mod 3 ก็ตาม ไม่มีข้อความที่ถูกต้อง (r, 4) สำหรับบิต 0 ดังนั้นจึงไม่มีผู้ตรวจสอบใน HSV r,6 ที่จะหยุดเพราะว่า เขารู้จักบล็อกที่ไม่ว่างเปล่า Br อย่างไรก็ตาม ด้วย s′ = 6, s′ −2 ≡1 mod 3 และมีอยู่จริง |HSV r,5| \(\geq\)tH ข้อความที่ถูกต้อง (r, 5) สำหรับบิต 1 จาก HSV r,5 สำหรับทุกผู้ตรวจสอบ i \(\in\)HSV r,6 ตามบทแทรก 5.5 ในหรือก่อนเวลา \(\alpha\)r,6 ฉัน + ผู้เล่น t6 ฉัน ได้รับข้อความทั้งหมดจาก HSV r,5 ดังนั้นฉันจึงหยุดโดยไม่เผยแพร่สิ่งใดและตั้งค่า บร = บร ī. CERT r ของเขาคือชุดของข้อความที่ถูกต้อง (r, 5) mr,5 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 เจ) เขาได้รับเมื่อเขาหยุด ถัดไป ให้ฉันเป็นผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอนที่ > 6 หรือเป็นผู้ใช้ที่ซื่อสัตย์ทั่วไป (เช่น ไม่ใช่ผู้ตรวจสอบ) คล้ายกับการพิสูจน์ Lemma 5.2 ผู้เล่น i ตั้งค่า Br = Br ǫและกำหนดของเขาเอง CERT r เป็นชุดของข้อความที่ถูกต้อง (r, 5) mr,5 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 เจ) เขามี ได้รับ. สุดท้ายก็คล้ายกับ Lemma 5.2 ที อาร์+1 \(\leq\) นาที i\(\in\)HSV r,6 \(\alpha\)r,6 ฉัน + t6 \(\leq\)T r + แล + t6 = T r + 10แล + Λ, และผู้ใช้ที่ซื่อสัตย์ทุกคนจะรู้จัก Br ในช่วงเวลา Ir+1 เพราะผู้ใช้ที่ซื่อสัตย์คนแรกคือใคร รู้ว่า Br ได้ช่วยเผยแพร่ข้อความ (r, 5) ใน CERT r ของเขา กรณีที่ 2 มีตัวยืนยัน ˆi \(\in\)HSV r,4 โดยมี bˆi = 0 สิ่งนี้เกิดขึ้นหลังจากกรณีที่ 2 ของ GC และเป็นกรณีที่มีความซับซ้อนมากขึ้น โดยการวิเคราะห์ของ GC พบว่า ในกรณีนี้มีข้อความที่ถูกต้อง mr,1 ฎ โดยที่ vi = H(Br ̵) สำหรับ i \(\in\)HSV r,4 ทั้งหมด หมายเหตุ ว่าผู้ตรวจสอบใน HSV r,4 อาจไม่มีข้อตกลงเกี่ยวกับ Bi's ของตน สำหรับขั้นตอนใดๆ s \(\in\){5, . . . , m + 3} และตัวตรวจสอบ i \(\in\)HSV r,s โดยผู้เล่น Lemma 5.5 ฉันจะมี ได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 หากเขารออยู่ เป็นเวลา tsตอนนี้เราพิจารณาเหตุการณ์ต่อไปนี้ E: มีขั้นตอน s∗\(\geq\)5 เช่นนั้น สำหรับขั้นตอนแรก เวลาในไบนารี BA ผู้เล่นบางคน i∗\(\in\)SV r,s∗ (ไม่ว่าจะเป็นอันตรายหรือซื่อสัตย์) ควรหยุด โดยไม่ต้องเผยแพร่อะไรเลย เราใช้คำว่า "ควรหยุด" เพื่อเน้นย้ำความจริงที่ว่า หากผู้เล่น i∗ เป็นอันตรายแล้วอาจแสร้งทำเป็นว่าไม่ควรหยุดตามระเบียบและ เผยแพร่ข้อความที่ฝ่ายตรงข้ามเลือก อีกทั้งโดยการสร้างโปรโตคอลอีกด้วย (E.a) ฉันสามารถรวบรวมหรือสร้างข้อความที่ถูกต้องได้อย่างน้อย mr,s′−1 เจ = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 เจ ) สำหรับ v และ s′ เดียวกัน โดยมี 5 \(\leq\)s′ \(\leq\)s∗ และ s′ −2 ≡0 mod 3; หรือ (E.b) ฉัน∗สามารถรวบรวมหรือสร้างข้อความที่ถูกต้องได้อย่างน้อย mr,s′−1 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 เจ ) สำหรับ s′ เดียวกัน โดยมี 6 \(\leq\)s′ \(\leq\)s∗ และ s′ −2 ≡1 mod 3 เนื่องจากข้อความที่ซื่อสัตย์ (r, s′ −1) ได้รับจากผู้ตรวจสอบที่ซื่อสัตย์ (r, s′) ทั้งหมดก่อนหน้าพวกเขา เสร็จสิ้นการรอคอยในขั้นตอน s′ และเนื่องจากปฏิปักษ์ได้รับทุกสิ่งไม่ช้ากว่านั้น ผู้ใช้ที่ซื่อสัตย์ โดยไม่สูญเสียความทั่วไป เรามี s′ = s∗และผู้เล่น i∗เป็นอันตราย โปรดทราบว่า เราไม่ต้องการให้ค่า v ใน E.a เป็น hash ของบล็อกที่ถูกต้อง เนื่องจากจะชัดเจนขึ้น ในการวิเคราะห์ v = H(Br ̵) ในกิจกรรมย่อยนี้ ด้านล่างนี้ เราจะวิเคราะห์กรณีที่ 2 ตามเหตุการณ์ E ก่อน แล้วจึงแสดงว่าค่าของ s∗ นั้นสำคัญมาก กระจายไปตาม Lr (เหตุการณ์ E เกิดขึ้นก่อนขั้นตอน m + 3 อย่างท่วมท้น) ความน่าจะเป็นที่กำหนดความสัมพันธ์สำหรับพารามิเตอร์) เริ่มต้นด้วย สำหรับขั้นตอนใดๆ ที่ 5 \(\leq\)s < s∗ ผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,s ได้รอเวลา ts และกำหนดให้ vi เป็นเสียงข้างมากของ ถูกต้อง (r, s−1) - ข้อความที่เขาได้รับ เนื่องจากผู้เล่นฉันได้รับข้อความที่ซื่อสัตย์ (r, s−1) ทั้งหมด ตามบทแทรก 5.5 เนื่องจากผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,4 ได้ลงนาม H(Br ̵) ต่อไปนี้กรณี 2 ของ GC และตั้งแต่ |HSV r,s−1| > 2|MSV r,s−1| สำหรับแต่ละ s โดยการเหนี่ยวนำเรามีผู้เล่นคนนั้น i ได้ตั้งค่าแล้ว วี = H(br ë) สิ่งเดียวกันนี้ใช้ได้กับผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,s∗ ซึ่งไม่หยุดโดยไม่เผยแพร่ อะไรก็ได้ ตอนนี้เราพิจารณาขั้นตอน s∗ และแยกแยะกรณีย่อยสี่กรณี กรณี 2.1.ก. เหตุการณ์ E.a เกิดขึ้นและมีผู้ยืนยันอย่างตรงไปตรงมาว่า i′ \(\in\)HSV r,s∗ใครควร ก็หยุดไม่เผยแพร่อะไรทั้งนั้น ในกรณีนี้ เรามี s∗−2 ≡0 mod 3 และขั้นตอน s∗เป็นขั้นตอน Coin-Fixed-To-0 โดย คำจำกัดความ ผู้เล่นที่ i′ ได้รับข้อความที่ถูกต้อง (r, s∗−1) ของแบบฟอร์มอย่างน้อย (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 เจ ). เนื่องจากผู้ตรวจสอบทั้งหมดใน HSV r,s∗−1 ได้ลงนาม H(Br ̵) และ |MSV r,s∗−1| < tH เรามี v = H(Br ë) เนื่องจากอย่างน้อย tH −|MSV r,s∗−1| \(\geq\)1ของ (r, s∗−1) - ข้อความที่ได้รับโดย i′ สำหรับ 0 และ v ถูกส่งโดยผู้ตรวจสอบใน HSV r,s∗−1 หลังจากเวลา T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +แล+Λ \(\geq\) \(\beta\)r,1 ฎ +Λ, ผู้เล่นที่ฉันได้รับ mr,1 ฎ เมื่อถึงเวลาที่เขาได้รับข้อความ (r, s∗−1) เหล่านั้น ดังนั้นผู้เล่น ฉันหยุดโดยไม่เผยแพร่อะไรเลย เซต Br = Br ̵;; และกำหนดให้ CERT r ของเขาเองเป็น ชุดของข้อความที่ถูกต้อง (r, s∗−1) สำหรับ 0 และ v ที่เขาได้รับ ต่อไป เราจะแสดงว่า ผู้ตรวจสอบอื่นๆ i \(\in\)HSV r,s∗ หยุดโดยที่ Br = Br ̵, หรือ ได้ตั้งค่า bi = 0 และเผยแพร่ (ESIGi(0), ESIGi(H(Br ë)), \(\sigma\)r,s ฉัน) แน่นอน เพราะขั้นตอนs∗ เป็นครั้งแรกที่ผู้ตรวจสอบควรหยุดโดยไม่เผยแพร่สิ่งใดๆ เลย แต่กลับไม่เป็นเช่นนั้น มีขั้นตอน s′ < s∗กับ s′ −2 ≡1 mod 3 โดยที่ tH (r, s′ −1) -ผู้ตรวจสอบได้ลงนาม 1 ดังนั้น จึงไม่มีผู้ยืนยันใน HSV r,s∗หยุดด้วย Br = Br ī.ยิ่งไปกว่านั้น ในฐานะผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอนที่ {4, 5, . . , s∗−1} ได้ลงนาม H(Br ̵) มีแล้ว ไม่มีขั้นตอน s′ \(\leq\)s∗กับ s′ −2 ≡0 mod 3 ซึ่งผู้ตรวจสอบ tH (r, s′ −1) ได้ลงนามแล้ว บ้าง v′′ ̸= H(Br ë) —แท้จริงแล้ว |MSV r,s′−1| < TH. ดังนั้น จึงไม่มีผู้ยืนยันใน HSV r,s∗stop ด้วย Br ̸= Br ǫ และ Br ̸= Br ฎ. นั่นคือหากผู้เล่น i \(\in\)HSV r,s∗ หยุดโดยไม่มี เผยแพร่อะไรเขาก็ต้องตั้ง Br = Br ฎ. หากผู้เล่น i \(\in\)HSV r,s∗ รอเวลา ts∗ และเผยแพร่ข้อความในตอนนั้น \(\beta\)r,s∗ ฉัน = \(\alpha\)r,s∗ ฉัน + ts∗ เขาได้รับข้อความทั้งหมดจาก HSV r,s∗−1 รวมถึงอย่างน้อย TH −|MSV r,s∗−1| ของพวกเขาสำหรับ 0 และ v หากฉันเห็น > 2/3 ส่วนใหญ่สำหรับ 1 แสดงว่าเขา ได้เห็นข้อความที่ถูกต้องมากกว่า 2(tH −|MSV r,s∗−1|) (r, s∗−1) สำหรับ 1 โดยมีมากกว่านั้น มากกว่า 2tH −3|MSV r,s∗−1| ของพวกเขาจากผู้ซื่อสัตย์ (r, s∗−1) - ผู้ตรวจสอบ อย่างไรก็ตาม นี่หมายถึง |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, ขัดแย้งกัน ความจริงที่ว่า |HSV r,s∗−1| + 4|MSV r,s∗−1| <2n, ซึ่งมาจากความสัมพันธ์ของพารามิเตอร์ ดังนั้น ฉันไม่เห็น > 2/3 ส่วนใหญ่สำหรับ 1 และเขาตั้งค่า bi = 0 เพราะขั้นตอน s∗ เป็นขั้นตอน Coin-Fixed-To-0 ตามที่เรามี เห็นแล้ว vi = H(Br ë) ดังนั้นฉันจึงเผยแพร่ (ESIGi(0), ESIGi(H(Br ë)), \(\sigma\)r,s ผม ) ตามที่เราต้องการ แสดง สำหรับขั้นตอน s∗+ 1 เนื่องจากผู้เล่น i′ ได้ช่วยเผยแพร่ข้อความใน CERT r ของเขา ในหรือก่อนเวลา \(\alpha\)r,s∗ ฉัน' + ts∗ ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,s∗+1 ได้รับอย่างน้อย ข้อความที่ถูกต้อง (r, s∗−1) สำหรับบิต 0 และค่า H(Br ̵) ในหรือก่อนที่จะเสร็จสิ้น กำลังรอ นอกจากนี้ ผู้ตรวจสอบใน HSV r,s∗+1 จะไม่หยุดก่อนรับ (r, s∗−1)- ข้อความ เนื่องจากไม่มีข้อความที่ถูกต้อง (r, s′ −1) อื่นใดสำหรับบิต 1 ด้วย s′ −2 ≡1 mod 3 และ 6 \(\leq\)s′ \(\leq\)s∗+ 1 โดยนิยามของขั้นตอน s∗ โดยเฉพาะขั้นตอน s∗+ 1 นั้นเป็นขั้นตอน Coin-Fixed-To-1 แต่ไม่มีผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,s∗ ได้แพร่กระจาย ข้อความสำหรับ 1 และ |MSV r,s∗| < TH. ดังนั้นผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,s∗+1 หยุดโดยไม่เผยแพร่อะไรเลยและตั้งค่า Br = บ ̵: เหมือนเมื่อก่อนพวกเขาได้รับนาย 1 แล้ว ฎ ก่อนที่พวกเขาจะได้รับข้อความที่ต้องการ (r, s∗−1)-20 สิ่งเดียวกันนี้อาจกล่าวได้สำหรับผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอนต่อๆ ไปและผู้ใช้ที่ซื่อสัตย์โดยทั่วไป โดยเฉพาะพวกเขาทุกคนรู้จัก Br = Br ่ภายในช่วงเวลา Ir+1 และ T r+1 \(\leq\) \(\alpha\)r,s∗ ฉัน' + ts∗\(\leq\)T r + แล + ts∗ กรณี 2.1.ข. เหตุการณ์ E.b เกิดขึ้นและมีผู้ยืนยันอย่างตรงไปตรงมาว่า i′ \(\in\)HSV r,s∗ใครควร ก็หยุดไม่เผยแพร่อะไรทั้งนั้น ในกรณีนี้เรามี s∗−2 ≡1 mod 3 และขั้นตอน s∗เป็นขั้นตอน Coin-Fixed-To-1 การวิเคราะห์ คล้ายกับกรณีที่ 2.1.a และละเว้นรายละเอียดหลายอย่าง 20หากมีเจตนาร้าย เขาอาจจะส่งนาย1ออกไป ฎ ล่าช้า หวังว่าผู้ใช้/ผู้ตรวจสอบที่ซื่อสัตย์บางคนยังไม่ได้รับ mr,1 ฎ ยัง เมื่อพวกเขาได้รับใบรับรองที่ต้องการแล้ว อย่างไรก็ตาม เนื่องจากตัวตรวจสอบ ˆi \(\in\)HSV r,4 ได้ตั้งค่า bˆi = 0 และ vˆi = H(Br ë) เช่น ก่อนที่เราจะมีผู้ตรวจสอบที่ซื่อสัตย์มากกว่าครึ่งหนึ่ง i \(\in\)HSV r,3 ได้ตั้งค่า vi = H(Br ë) นี่ยังหมายความอีกว่า กว่าครึ่งหนึ่งของผู้ตรวจสอบที่ซื่อสัตย์ i \(\in\)HSV r,2 ได้ตั้งค่า vi = H(Br ë) และผู้ตรวจสอบ (r, 2) ทั้งหมดได้รับ mr, 1 แล้ว ฎ. ในฐานะที่เป็น ฝ่ายตรงข้ามไม่สามารถแยกแยะผู้ตรวจสอบจากผู้ไม่ยืนยันได้ เขาไม่สามารถกำหนดเป้าหมายการแพร่กระจายของนาย1 ฎ ถึง (r, 2) - ผู้ตรวจสอบ โดยไม่ให้ผู้ไม่ยืนยันเห็นมัน จริงๆแล้วมีโอกาสสูงเกินครึ่ง (หรือเศษส่วนคงที่ที่ดี) ของผู้ใช้ที่ซื่อสัตย์ทุกคนได้เห็นคุณ 1 ฎ หลังจากรอ t2 มาตั้งแต่เริ่มรอบ r ของตัวเองแล้ว ทั้งนี้ ตั้งแต่บัดนี้เป็นต้นไป เวลา แล ′ ที่จำเป็นสำหรับนาย 1 ฎ การเข้าถึงผู้ใช้ที่ซื่อสัตย์ที่เหลืออยู่นั้นมีขนาดเล็กกว่า Λ มากและเพื่อความเรียบง่ายเราไม่ทำ เขียนมันออกมาในการวิเคราะห์ ถ้า 4แล \(\geq\)แลต การวิเคราะห์ดำเนินไปโดยไม่มีการเปลี่ยนแปลงใดๆ: เมื่อสิ้นสุดขั้นตอนที่ 4 ทั้งหมด ผู้ใช้ที่ซื่อสัตย์จะได้รับ mr,1 ฎ. หากขนาดของบล็อกใหญ่ขึ้นและ 4แล < แล' ดังนั้นในขั้นตอนที่ 3 และ 4 โปรโตคอลสามารถขอให้ผู้ตรวจสอบแต่ละคนรอ \(\gamma\)′/2 แทนที่จะเป็น 2แล และการวิเคราะห์ยังคงดำเนินต่อไปเหมือนเมื่อก่อน ผู้เล่น i′ ต้องได้รับข้อความที่ถูกต้อง (r, s∗−1) ของแบบฟอร์มอย่างน้อย (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 เจ ). อีกครั้งตามคำจำกัดความของ s∗ ไม่มีขั้นตอนใดอยู่ 5 \(\leq\)s′ < s∗กับ s′ −2 ≡0 mod 3 โดยที่อย่างน้อย tH (r, s′ −1) -ผู้ตรวจสอบได้ลงนาม 0 และ v เดียวกัน ดังนั้นผู้เล่นจึงหยุดโดยไม่เผยแพร่อะไรเลย เซต Br = Br ǫ; และชุด CERT r ของเขาเองจะเป็นชุดของข้อความที่ถูกต้อง (r, s∗−1) สำหรับบิต 1 ที่เขาได้รับ ยิ่งไปกว่านั้น ตัวตรวจสอบอื่นๆ i \(\in\)HSV r,s∗ ได้หยุดโดยที่ Br = Br ǫ หรือตั้งไว้ว่า bi = 1 และเผยแพร่ (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ ฉัน ). เนื่องจากผู้เล่นฉันได้ช่วยเผยแพร่ ข้อความ (r, s∗−1) ใน CERT ของเขา r ตามเวลา \(\alpha\)r,s∗ ฉัน' + ts∗ ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนเข้ามาอีกครั้ง HSV r,s∗+1 หยุดโดยไม่มีการแพร่กระจายใดๆ และตั้งค่า Br = Br ī. ในทำนองเดียวกันทุกคนซื่อสัตย์ ผู้ใช้รู้ว่า Br = Br ǫ ภายในระยะเวลา Ir+1 และ T r+1 \(\leq\) \(\alpha\)r,s∗ ฉัน' + ts∗\(\leq\)T r + แล + ts∗ กรณี 2.2.ก. เหตุการณ์ E.a เกิดขึ้นและไม่มีผู้ตรวจสอบที่ซื่อสัตย์ i′ \(\in\)HSV r,s∗who ควรหยุดโดยไม่เผยแพร่สิ่งใดๆ ในกรณีนี้ โปรดทราบว่าผู้เล่น i∗ อาจมี CERT r ที่ถูกต้อง ฉัน∗ประกอบด้วยสิ่งที่ต้องการ (r, s∗−1)-ข้อความที่ฝ่ายตรงข้ามสามารถรวบรวมหรือสร้างได้ อย่างไรก็ตามผู้ที่เป็นอันตราย ผู้ตรวจสอบอาจไม่ช่วยเผยแพร่ข้อความเหล่านั้น ดังนั้นเราจึงไม่สามารถสรุปได้ว่าผู้ซื่อสัตย์ ผู้ใช้จะได้รับทันเวลา แล ในความเป็นจริง |MSV r,s∗−1| ข้อความเหล่านั้นอาจมาจาก ผู้ตรวจสอบที่เป็นอันตราย (r, s∗−1) ซึ่งไม่ได้เผยแพร่ข้อความของตนเลยและเพียงส่งเท่านั้น ไปยังผู้ตรวจสอบที่เป็นอันตรายในขั้นตอนs∗ คล้ายกับกรณี 2.1.a ที่นี่เรามี s∗−2 ≡0 mod 3 ขั้นตอน s∗ เป็นขั้นตอน Coin-Fixed-To-0 และ (r, s∗−1) - ข้อความใน CERT r i∗ อยู่ที่บิต 0 และ v = H(Br ë) จริงใจทุกคนจริงๆ (r, s∗−1) - ผู้ตรวจสอบลงชื่อ v ดังนั้นฝ่ายตรงข้ามจึงไม่สามารถสร้างข้อความที่ถูกต้องได้ (r, s∗−1) สำหรับ v′ ที่แตกต่างกัน ยิ่งไปกว่านั้น ผู้ตรวจสอบที่ซื่อสัตย์ (r, s∗) ทุกคนต้องรอเวลา ts∗ และไม่เห็น > 2/3 ส่วนใหญ่ สำหรับบิต 1 อีกครั้งเพราะ |HSV r,s∗−1| + 4|MSV r,s∗−1| <2น. ดังนั้นผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,s∗sets bi = 0, vi = H(Br ë) ด้วยคะแนนเสียงข้างมาก และเผยแพร่ mr,s∗ ฉัน = (ESIGi(0), ESIGi(H(Br ë)), \(\sigma\)r,s∗ ฉัน ) ที่เวลา \(\alpha\)r,s∗ ฉัน + ts∗ ตอนนี้ให้พิจารณาผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอน s∗+ 1 (ซึ่งเป็นขั้นตอน Coin-Fixed-To-1) ถ้า ฝ่ายตรงข้ามส่งข้อความใน CERT r จริงๆ ฉัน∗กับบางคนและทำให้พวกเขาเป็นเช่นนั้น หยุด แล้วก็คล้ายกับกรณี 2.1.a ผู้ใช้ที่ซื่อสัตย์ทุกคนรู้ว่า Br = Br ∆ภายในช่วงเวลา IR+1 และ T r+1 \(\leq\)T r + แล + ts∗+1 มิฉะนั้น ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอน s∗+1 จะได้รับข้อความ (r, s∗) ทั้งหมดสำหรับ 0 และ เอช(บรา ë) จาก HSV r,s∗ หลังจากเวลาที่รอคอย ts∗+1 ซึ่งนำไปสู่ > 2/3 ส่วนใหญ่ เนื่องจาก |HSV r,s∗| > 2|MSV r,s∗|. ดังนั้นผู้ตรวจสอบทั้งหมดใน HSV r,s∗+1 จึงเผยแพร่ข้อความของตนเพื่อ 0 และ H(br ̵) ตามนั้น โปรดทราบว่าผู้ตรวจสอบใน HSV r,s∗+1 ไม่ได้หยุดด้วย Br = Br ̵, เพราะขั้นตอน s∗+ 1 ไม่ใช่ขั้นตอน Coin-Fixed-To-0 ตอนนี้ให้พิจารณาผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอน s∗+2 (ซึ่งเป็นขั้นตอนการพลิกเหรียญอย่างแท้จริง) หากฝ่ายตรงข้ามส่งข้อความใน CERT r ฉัน∗กับบางคนแล้วทำให้พวกเขาหยุด ผู้ใช้ที่ซื่อสัตย์ทุกคนจะรู้อีกครั้งว่า Br = Br ่ภายในช่วงเวลา Ir+1 และ T r+1 \(\leq\)T r + แล + ts∗+2มิฉะนั้น ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอน s∗+ 2 จะได้รับข้อความ (r, s∗+ 1) ทั้งหมดสำหรับ 0 และ H(br ë) จาก HSV r,s∗+1 หลังจากเวลาที่รอ ts∗+2 ซึ่งนำไปสู่ > 2/3 ส่วนใหญ่ ดังนั้นพวกเขาทั้งหมดจึงเผยแพร่ข้อความของพวกเขาสำหรับ 0 และ H(Br ̵) ตามนั้น: นั่นคือสิ่งที่พวกเขาทำ ไม่ใช่ "พลิกเหรียญ" ในกรณีนี้ ขอย้ำอีกครั้งว่าพวกมันจะไม่หยุดโดยไม่แพร่กระจาย เพราะขั้นตอน s∗+ 2 ไม่ใช่ขั้นตอน Coin-Fixed-To-0 สุดท้ายนี้ สำหรับผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอน s∗+3 (ซึ่งเป็นอีกขั้นตอน Coin-Fixed-To-0) ทั้งหมด ในจำนวนนี้จะได้รับข้อความที่ถูกต้องอย่างน้อยสำหรับ 0 และ H(Br ë) จาก HSV s∗+2, หากพวกเขารอเวลาจริงๆ ts∗+3 ดังนั้นไม่ว่าฝ่ายตรงข้ามจะส่งข้อความมาหรือไม่ก็ตาม ใน CERT r i∗ สำหรับพวกเขาคนใดคนหนึ่ง ผู้ตรวจสอบทั้งหมดใน HSV r,s∗+3 หยุดโดย Br = Br ̵, ไม่มี เผยแพร่สิ่งใดๆ ขึ้นอยู่กับว่าปฏิปักษ์กระทำอย่างไร บางส่วนอาจมี CERT r ของตนเองประกอบด้วยข้อความ (r, s∗−1) เหล่านั้นใน CERT r ฉัน∗ และคนอื่นๆ มี CERT r ของตนเองประกอบด้วยข้อความ (r, s∗+ 2) เหล่านั้น ไม่ว่าในกรณีใด ผู้ใช้บริการที่ซื่อสัตย์ทุกท่าน รู้ Br = Br ่ภายในช่วงเวลา Ir+1 และ T r+1 \(\leq\)T r + แล + ts∗+3 กรณี 2.2.ข. เหตุการณ์ E.b เกิดขึ้นและไม่มีผู้ตรวจสอบที่ซื่อสัตย์ i′ \(\in\)HSV r,s∗who ควรหยุดโดยไม่เผยแพร่สิ่งใดๆ การวิเคราะห์ในกรณีนี้จะคล้ายคลึงกับกรณีที่ 2.1.b และกรณีที่ 2.2.a จึงมีรายละเอียดมากมาย ได้รับการละเว้น โดยเฉพาะ CERT r i∗ประกอบด้วยข้อความที่ต้องการ (r, s∗−1) สำหรับบิต 1 ที่ฝ่ายตรงข้ามสามารถรวบรวมหรือสร้างได้ s∗−2 ≡1 mod 3 ขั้นตอน s∗คือ ขั้นตอน Coin-Fixed-To-1 และไม่มีผู้ตรวจสอบ (r, s∗) ที่ซื่อสัตย์คนใดที่เคยเห็น > 2/3 ส่วนใหญ่สำหรับ 0 ดังนั้น ทุกผู้ตรวจสอบ i \(\in\)HSV r,s∗ จะตั้งค่า bi = 1 และเผยแพร่ mr,s∗ ฉัน = (ESIGi(1), ESIGi(vi), ซิร,ส∗ ฉัน ) ที่เวลา \(\alpha\)r,s∗ ฉัน + ts∗ คล้ายกับกรณี 2.2.a โดยเพิ่มได้สูงสุด 3 ขั้นตอน (เช่น โปรโตคอล ถึงขั้นตอน s∗+3 ซึ่งเป็นอีกขั้นตอน Coin-Fixed-To-1) ผู้ใช้ที่ซื่อสัตย์ทุกคนจะรู้ว่า Br = Br ī ภายในระยะเวลา Ir+1 ยิ่งกว่านั้น T r+1 อาจเป็น \(\leq\)T r+แล+ts∗+1 หรือ \(\leq\)T r+แล+ts∗+2 หรือ \(\leq\)T r + แล + ts∗+3 ขึ้นอยู่กับว่าเมื่อใดคือครั้งแรกที่ผู้ตรวจสอบที่ซื่อสัตย์สามารถหยุดได้ โดยไม่ต้องแพร่กระจาย เมื่อรวมกรณีย่อยสี่กรณีเข้าด้วยกัน เราพบว่าผู้ใช้ที่ซื่อสัตย์ทุกคนทราบ Br ภายในระยะเวลา Ir+1 ด้วย T r+1 \(\leq\)T r + แล + ts∗ ในกรณี 2.1.a และ 2.1.b และ T r+1 \(\leq\)T r + แล + ts∗+3 ในกรณี 2.2.a และ 2.2.b มันยังคงอยู่ที่ขอบเขตบน s∗ และด้วยเหตุนี้ T r+1 สำหรับกรณีที่ 2 และเราทำเช่นนั้นโดยพิจารณาว่า หลายครั้งที่ขั้นตอน Coin-Genuinely-Flipped ถูกดำเนินการจริงในโปรโตคอล: นั่นคือ ผู้ตรวจสอบที่ซื่อสัตย์บางคนได้พลิกเหรียญจริง ๆ โดยเฉพาะอย่างยิ่ง แก้ไขขั้นตอนที่พลิกเหรียญอย่างแท้จริง s′ (เช่น 7 \(\leq\)s′ \(\leq\)m + 2 และ s′ −2 ≡2 mod 3) และให้ ë \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 เจ ). ตอนนี้ให้เราสมมติ s′ < s∗, เพราะไม่อย่างนั้นไม่มีผู้ตรวจสอบที่ซื่อสัตย์คนใดที่จะพลิกเหรียญในขั้นตอนที่ s′ ตามที่ระบุไว้ก่อนหน้านี้ การอภิปราย ตามคำจำกัดความของ SV r,s′−1 ค่า hash ของหนังสือรับรองของ ë ก็มีค่าน้อยที่สุดเช่นกัน ผู้ใช้ทั้งหมดใน PKr−k เนื่องจากฟังก์ชัน hash เป็นการสุ่ม oracle ดังนั้น ผู้เล่น ë จะซื่อสัตย์กับ ความน่าจะเป็นอย่างน้อย h ดังที่เราจะแสดงในภายหลัง แม้ว่าปฏิปักษ์จะพยายามทำนายเหตุการณ์นี้อย่างเต็มที่ก็ตาม ผลลัพธ์ของการสุ่ม oracle และเอียงความน่าจะเป็น ผู้เล่น ë ยังคงซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph = h2(1 + h −h2) ด้านล่างเราจะพิจารณากรณีที่สิ่งนั้นเกิดขึ้นจริง: นั่นคือ ë \(\in\)HSV r,s′−1 โปรดทราบว่าผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,s′ ได้รับข้อความทั้งหมดจาก HSV r,s′−1 โดย เวลา \(\alpha\)r,s′ ฉัน + ทีเอส' หากผู้เล่นฉันต้องหงายเหรียญ (เช่น เขาไม่ได้เห็น > 2/3 ส่วนใหญ่สำหรับ บิตเดียวกัน b \(\in\){0, 1}) จากนั้นเขาตั้งค่า bi = lsb(H(\(\sigma\)r,s′−1 l' )). หากมีความจริงอีกประการหนึ่ง ผู้ตรวจสอบ i′ \(\in\)HSV r,s′ ที่ได้เห็น > 2/3 ส่วนใหญ่สำหรับบิต b \(\in\){0, 1} แล้วโดยคุณสมบัติ (d) ของเลมมา 5.5 ไม่มีผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,s′ จะเห็น > 2/3 ส่วนใหญ่เพียงเล็กน้อย ข′ ̸= ข. เนื่องจาก lsb(H(\(\sigma\)r,s′−1 l' )) = b ด้วยความน่าจะเป็น 1/2 ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนเข้าถึง HSV r,s′ ข้อตกลงบน b ด้วยความน่าจะเป็น 1/2 แน่นอน ถ้าไม่มีตัวยืนยัน i′ เช่นนั้นแล้ว ก็ทั้งหมด ผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,s′ เห็นด้วยกับบิต lsb(H(\(\sigma\)r,s′−1 l' )) ด้วยความน่าจะเป็น 1. เมื่อรวมความน่าจะเป็นของ ë \(\in\)HSV r,s′−1 เราพบว่าผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,s′ บรรลุข้อตกลงด้วยบิต b \(\in\){0, 1} โดยมีความน่าจะเป็นอย่างน้อย ph 2 = h2(1+h−h2) 2 . นอกจากนี้ โดยการชักนำให้ลงคะแนนเสียงข้างมากเหมือนเมื่อก่อน ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,s′ จะมีชุด vi ของพวกเขา จะเป็น H(Br ë) ดังนั้น เมื่อบรรลุข้อตกลงเกี่ยวกับ b ในขั้นตอน s′ แล้ว T r+1 ก็คือ \(\leq\)T r + แลม + ts′+1 หรือ \(\leq\)T r + แลม + ts′+2 ขึ้นอยู่กับว่า b = 0 หรือ b = 1 ตามการวิเคราะห์กรณี 2.1.a และ 2.1.b ใน โดยเฉพาะอย่างยิ่ง จะไม่มีการดำเนินการขั้นตอน Coin-Genuinely-Flipped อีกต่อไป นั่นคือ ผู้ตรวจสอบใน ขั้นตอนดังกล่าวยังคงตรวจสอบว่าพวกเขาเป็นผู้ตรวจสอบแล้วจึงรอ แต่ทั้งหมดจะหยุดโดยไม่ต้อง เผยแพร่สิ่งใดๆ ดังนั้น ก่อนขั้นตอน s∗ จำนวนครั้งที่ขั้นตอน Coin-GenuinelyFlipped ถูกดำเนินการจะถูกกระจายตามตัวแปรสุ่ม Lr ปล่อยให้ขั้นตอน s' เป็นขั้นตอนสุดท้ายที่พลิกเหรียญอย่างแท้จริงตาม Lr โดยการสร้างโปรโตคอล เรามี s' = 4 + 3Lr. เมื่อใดที่ฝ่ายตรงข้ามควรทำให้สเต็ปเกิดขึ้นหากเขาต้องการหน่วงเวลา T r+1 มากเท่ากับ เป็นไปได้เหรอ? เรายังสามารถสันนิษฐานได้ว่าฝ่ายตรงข้ามรู้ถึงการตระหนักถึง Lr ล่วงหน้า ถ้า s∗> s′ ดังนั้นมันจึงไม่มีประโยชน์ เพราะผู้ตรวจสอบที่ซื่อสัตย์ได้บรรลุข้อตกลงใน ขั้นตอน เพื่อให้มั่นใจว่า ในกรณีนี้ s∗ จะเป็น s′ +1 หรือ s′ +2 อีกครั้ง ขึ้นอยู่กับว่า b = 0 หรือ b = 1 อย่างไรก็ตาม นี่คือกรณี 2.1.a และ 2.1.b และผลลัพธ์ T r+1 ก็คือ เช่นเดียวกับในกรณีนั้น แม่นยำยิ่งขึ้น T r+1 \(\leq\)T r + แล + ts∗\(\leq\)T r + แล + ts′+2 ถ้า s∗< s′ −3 —นั่นคือ s∗ อยู่ก่อนขั้นตอน Coin-Genuinely-Flipped สุดท้ายที่สอง— แล้วโดย การวิเคราะห์กรณี 2.2.a และ 2.2.b T r+1 \(\leq\)T r + แล + ts∗+3 < T r + แล + ts′ นั่นคือฝ่ายตรงข้ามกำลังทำให้ข้อตกลงเกี่ยวกับ Br เกิดขึ้นเร็วขึ้น ถ้า s∗= s′ −2 หรือ s′ −1 —นั่นคือ ขั้นตอน Coin-Fixed-To-0 หรือขั้นตอน Coin-Fixed-To-1 ทันทีก่อนขั้นตอน s′— จากนั้นด้วยการวิเคราะห์กรณีย่อยสี่กรณี ผู้ตรวจสอบที่ซื่อสัตย์เข้ามา ขั้นตอนที่ s′ ไม่ต้องพลิกเหรียญอีกต่อไป เพราะพวกเขาหยุดโดยไม่แพร่กระจาย หรือเคยเห็น > 2/3 ส่วนใหญ่สำหรับบิต b เดียวกัน ดังนั้นเราจึงมี T r+1 \(\leq\)T r + แล + ts∗+3 \(\leq\)T r + แล + ts′+2โดยสรุป ไม่ว่า s∗ คืออะไร เราก็มี T r+1 \(\leq\)T r + แล + ts′+2 = T r + แล + t3Lr+6 = T r + แล + (2(3Lr + 6) −3)แล + Λ = T r + (6Lr + 10)แล + Λ, ตามที่เราต้องการจะแสดง กรณีที่เลวร้ายที่สุดคือเมื่อ s∗= s′ −1 และกรณีที่ 2.2.b เกิดขึ้น การรวมกรณีที่ 1 และ 2 ของโปรโตคอล BA ไบนารีเข้าด้วยกัน Lemma 5.3 ถือไว้ ■ 5.9 ความปลอดภัยของ Seed Qr และความน่าจะเป็นของผู้นำที่ซื่อสัตย์ มันยังคงต้องพิสูจน์ Lemma 5.4 จำได้ว่าผู้ตรวจสอบในรอบ r นำมาจาก PKr−k และ ถูกเลือกตามปริมาณ Qr−1 เหตุผลในการแนะนำพารามิเตอร์การมองย้อนกลับ k คือเพื่อให้แน่ใจว่า ย้อนกลับไปที่รอบ r −k เมื่อฝ่ายตรงข้ามสามารถเพิ่มผู้ใช้ที่เป็นอันตรายรายใหม่ได้ สำหรับ PKr−k เขาไม่สามารถทำนายปริมาณ Qr−1 ได้ ยกเว้นความน่าจะเป็นเล็กน้อย โปรดทราบว่า ฟังก์ชัน hash เป็นการสุ่ม oracle และ Qr−1 เป็นหนึ่งในอินพุตเมื่อเลือกตัวตรวจสอบสำหรับรอบ r ดังนั้นไม่ว่าผู้ใช้ที่เป็นอันตรายจะถูกเพิ่มเข้าไปใน PKr−k แค่ไหนก็ตาม จากมุมมองของฝ่ายตรงข้าม หนึ่งในนั้นยังคงถูกเลือกให้เป็นผู้ตรวจสอบในขั้นตอนของรอบ r ด้วยความน่าจะเป็นที่ต้องการ p (หรือ p1 สำหรับขั้นตอนที่ 1) แม่นยำยิ่งขึ้น เรามีบทแทรกต่อไปนี้ เลมมา 5.6 ด้วย k = O(log1/2 F) สำหรับแต่ละรอบ r โดยมีความน่าจะเป็นอย่างท่วมท้นที่ฝ่ายตรงข้าม ไม่ได้สอบถาม Qr−1 ไปยัง oracle แบบสุ่ม ย้อนกลับไปที่รอบ r −k การพิสูจน์. เราดำเนินการโดยการเหนี่ยวนำ สมมติว่าในแต่ละรอบ \(\gamma\) < r ฝ่ายตรงข้ามไม่ได้สอบถาม Q\(\gamma\)−1 สุ่ม oracle กลับมาที่รอบ \(\gamma\) −k.21 พิจารณาเกมทางจิตต่อไปนี้ที่เล่นโดย ฝ่ายตรงข้ามที่รอบ r −k พยายามทำนาย Qr−1 ในขั้นตอนที่ 1 ของแต่ละรอบ \(\gamma\) = r −k, . . , r −1 โดยกำหนด Q\(\gamma\)−1 ที่เฉพาะเจาะจงซึ่งไม่ได้ถูกสอบถามไปยังการสุ่ม oracle โดยการสั่งผู้เล่น i \(\in\)PK\(\gamma\)−k ตามค่า hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) มากขึ้นเรื่อยๆ เราได้รับการเรียงสับเปลี่ยนแบบสุ่มบน PK\(\gamma\)−k ตามคำนิยามแล้ว ผู้นำ ë\(\gamma\) คือ ผู้ใช้รายแรกในการเรียงสับเปลี่ยนและซื่อสัตย์กับความน่าจะเป็น h ยิ่งกว่านั้นเมื่อ PK\(\gamma\)−k มีขนาดใหญ่ เพียงพอแล้ว สำหรับจำนวนเต็ม x \(\geq\)1 ใดๆ ความน่าจะเป็นที่ผู้ใช้ x แรกในการเรียงสับเปลี่ยนล้วนเป็นทั้งหมด เป็นอันตราย แต่ (x + 1)st มีความซื่อสัตย์คือ (1 −h)xh ถ้า ë\(\gamma\) ซื่อสัตย์ แล้ว Q\(\gamma\) = H(SIGLR\(\gamma\)(Q\(\gamma\)−1), \(\gamma\)) เนื่องจากฝ่ายตรงข้ามไม่สามารถปลอมลายเซ็นได้ ของ ë\(\gamma\), Q\(\gamma\) จะถูกกระจายอย่างสม่ำเสมอโดยการสุ่มจากมุมมองของฝ่ายตรงข้าม และ ยกเว้น ด้วยความน่าจะเป็นเพียงเล็กน้อยแบบเอ็กซ์โพเนนเชียล 22 ไม่ถูกสอบถามถึง H ที่รอบ r -k เนื่องจากแต่ละ คิว\(\gamma\)+1, คิว\(\gamma\)+2, . . , Qr−1 ตามลำดับคือผลลัพธ์ของ H ด้วย Q\(\gamma\), Q\(\gamma\)+1, . . , Qr−2 เป็นหนึ่งในอินพุต พวกเขาทั้งหมดดูสุ่มไปที่ปฏิปักษ์และปฏิปักษ์ไม่สามารถสอบถาม Qr−1 ถึง H ที่ รอบ r -k ดังนั้น เป็นกรณีเดียวที่ฝ่ายตรงข้ามสามารถทำนาย Qr−1 ด้วยความน่าจะเป็นที่ดีในรอบนั้น r−k คือเมื่อผู้นำทั้งหมด ër−k, . . . , ër−1 เป็นอันตราย พิจารณารอบอีกครั้ง \(\gamma\) \(\in\){r−k . . , r−1} และการเรียงสับเปลี่ยนแบบสุ่มเหนือ PK\(\gamma\) − k เกิดจากค่า hash ที่สอดคล้องกัน ถ้าสำหรับบางคน x \(\geq\)2 ผู้ใช้ x −1 คนแรกในการเรียงสับเปลี่ยนล้วนเป็นอันตรายและ x-th นั้นซื่อสัตย์ จากนั้น ฝ่ายตรงข้ามมี x ตัวเลือกที่เป็นไปได้สำหรับ Q\(\gamma\): รูปแบบใดรูปแบบหนึ่ง H(SIGi(Q\(\gamma\)−1, \(\gamma\))) โดยที่ i เป็นหนึ่งใน 21เนื่องจาก k เป็นจำนวนเต็มขนาดเล็ก โดยไม่สูญเสียลักษณะทั่วไป เราสามารถสรุปได้ว่า k รอบแรกของโปรโตคอลกำลังทำงานอยู่ ภายใต้สภาพแวดล้อมที่ปลอดภัยและมีสมมติฐานอุปนัยสำหรับรอบเหล่านั้น 22นั่นคือ เอ็กซ์โปเนนเชียลในความยาวของเอาท์พุตของ H โปรดทราบว่าความน่าจะเป็นนี้น้อยกว่า F มากผู้ใช้ที่เป็นอันตราย x−1 คนแรก โดยทำให้ผู้เล่น i เป็นผู้นำที่แท้จริงของรอบ \(\gamma\); หรือ H(Q\(\gamma\)−1, \(\gamma\)) โดย บังคับให้B\(\gamma\) = B\(\gamma\) ī. มิฉะนั้นผู้นำของรอบ \(\gamma\) จะเป็นผู้ใช้ที่ซื่อสัตย์คนแรกในการเรียงสับเปลี่ยน และ Qr−1 เป็นสิ่งที่คาดเดาไม่ได้สำหรับปฏิปักษ์ ตัวเลือก x ใดข้างต้นของQ\(\gamma\)ที่ฝ่ายตรงข้ามควรติดตาม? เพื่อช่วยเหลือศัตรู ตอบคำถามนี้ ในเกมทางจิต เราทำให้เขามีพลังมากกว่าเขาจริงๆ คือดังนี้ ประการแรก ในความเป็นจริงแล้วฝ่ายตรงข้ามไม่สามารถคำนวณ hash ของผู้ใช้ที่ซื่อสัตย์ได้ ลายเซ็นต์ จึงไม่สามารถตัดสินใจสำหรับแต่ละ Q\(\gamma\) ได้ว่าจำนวน x(Q\(\gamma\)) ของผู้ใช้ที่เป็นอันตรายในตอนเริ่มต้น ของการเรียงสับเปลี่ยนแบบสุ่มในรอบ \(\gamma\) + 1 ที่เกิดจาก Q\(\gamma\) ในเกมทางจิตเราให้เขา ตัวเลข x(Q\(\gamma\)) ฟรี ประการที่สอง ในความเป็นจริง มีผู้ใช้ x คนแรกในการเรียงสับเปลี่ยนทั้งหมด การเป็นคนใจร้ายไม่ได้หมายความว่าพวกเขาทุกคนจะถูกทำให้เป็นผู้นำได้ เพราะว่า hash ค่าของลายเซ็นต้องน้อยกว่า p1 ด้วย เราละเลยข้อจำกัดนี้ในจิตใจ เกมทำให้ฝ่ายตรงข้ามได้เปรียบมากยิ่งขึ้น มันง่ายที่จะเห็นว่าในเกมทางจิต ตัวเลือกที่ดีที่สุดสำหรับฝ่ายตรงข้าม แสดงโดย ˆQ\(\gamma\) คือสิ่งที่สร้างลำดับผู้ใช้ที่เป็นอันตรายที่ยาวที่สุดในช่วงเริ่มต้นของการสุ่ม การเรียงสับเปลี่ยนในรอบ \(\gamma\) + 1 โดยแท้จริงแล้ว เมื่อกำหนด Q\(\gamma\) ที่เฉพาะเจาะจง โปรโตคอลไม่ได้ขึ้นอยู่กับ Q\(\gamma\)−1 อีกต่อไปและฝ่ายตรงข้ามสามารถมุ่งความสนใจไปที่การเรียงสับเปลี่ยนใหม่ในรอบ \(\gamma\) + 1 ได้เพียงอย่างเดียวซึ่งมี การกระจายเดียวกันสำหรับจำนวนผู้ใช้ที่เป็นอันตรายตั้งแต่เริ่มต้น ตามนั้นในแต่ละรอบ \(\gamma\) ที่กล่าวมาข้างต้น ˆQ\(\gamma\) ทำให้เขามีทางเลือกจำนวนมากที่สุดสำหรับ Q\(\gamma\)+1 และจึงขยายให้สูงสุด ความน่าจะเป็นที่ผู้นำต่อเนื่องกันล้วนเป็นอันตราย ดังนั้น ในเกมทางจิต ฝ่ายตรงข้ามกำลังติดตาม Markov Chain จากรอบ r -k เพื่อปัดเศษ r −1 โดยมีปริภูมิสถานะเป็น {0} \(\cup\){x : x \(\geq\)2} สถานะ 0 แสดงถึงความจริงที่ว่า ผู้ใช้รายแรกในการเรียงสับเปลี่ยนแบบสุ่มในรอบปัจจุบัน \(\gamma\) เป็นคนซื่อสัตย์ ดังนั้นฝ่ายตรงข้ามจึงล้มเหลว เกมทำนาย Qr−1; และแต่ละสถานะ x \(\geq\)2 แสดงถึงความจริงที่ว่าผู้ใช้ x −1 คนแรกใน การเรียงสับเปลี่ยนเป็นอันตรายและ x-th นั้นซื่อสัตย์ ดังนั้นฝ่ายตรงข้ามจึงมีตัวเลือก x สำหรับQ\(\gamma\) ที่ ความน่าจะเป็นของการเปลี่ยนแปลง P(x, y) มีดังนี้ • P(0, 0) = 1 และ P(0, y) = 0 สำหรับ y ใดๆ \(\geq\)2 นั่นคือฝ่ายตรงข้ามล้มเหลวในเกมครั้งแรก ผู้ใช้ในการเรียงสับเปลี่ยนกลายเป็นความซื่อสัตย์ • P(x, 0) = hx สำหรับ x \(\geq\)2 ใดๆ นั่นคือ ด้วยความน่าจะเป็น hx การเรียงสับเปลี่ยนสุ่ม x ทั้งหมดมี ผู้ใช้กลุ่มแรกมีความซื่อสัตย์ ดังนั้นฝ่ายตรงข้ามจึงล้มเหลวในเกมในรอบถัดไป • สำหรับ x \(\geq\)2 และ y \(\geq\)2 ใดๆ P(x, y) คือความน่าจะเป็นที่ระหว่างการเรียงสับเปลี่ยนแบบสุ่มของ x เกิดจากตัวเลือก x ของ Q\(\gamma\) ซึ่งเป็นลำดับที่ยาวที่สุดของผู้ใช้ที่เป็นอันตรายในตอนต้น บางส่วนเป็น y −1 ดังนั้นฝ่ายตรงข้ามจึงมีตัวเลือก y สำหรับ Q\(\gamma\)+1 ในรอบถัดไป นั่นคือ ป(x, ย) = ย−1 เอ็กซ์ ผม=0 (1 −ซ)เอ่อ !x - ย−2 เอ็กซ์ ผม=0 (1 −ซ)เอ่อ !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x โปรดทราบว่าสถานะ 0 คือสถานะการดูดซับเฉพาะในเมทริกซ์ทรานซิชัน P และสถานะอื่นๆ ทุกสถานะ x มีความน่าจะเป็นเชิงบวกที่จะเป็น 0 เราสนใจขอบเขตบนของจำนวน k ของ รอบที่จำเป็นสำหรับ Markov Chain เพื่อบรรจบกันเป็น 0 ด้วยความน่าจะเป็นอย่างท่วมท้น นั่นคือ ไม่ เรื่องที่สถานะเริ่มต้นของห่วงโซ่ ด้วยความน่าจะเป็นที่ฝ่ายตรงข้ามจะแพ้ในเกม และล้มเหลวในการทำนาย Qr−1 ที่รอบ r −k พิจารณาเมทริกซ์ทรานซิชัน P (2) \(\triangleq\)P \(\cdot\) P หลังจากผ่านไปสองรอบ จะสังเกตได้ง่ายว่า P (2)(0, 0) = 1 และ P (2)(0, x) = 0 สำหรับ x \(\geq\)2 ใดๆ สำหรับ x \(\geq\)2 และ y \(\geq\)2 ใดๆ โดยที่ P(0, y) = 0 เรามี P (2)(x, y) = P(x, 0)P(0, y) + เอ็กซ์ z\(\geq\)2 P(x, z)P(z, y) = เอ็กซ์ z\(\geq\)2 P(x, z)P(z, y)ปล่อยให้ èh \(\triangleq\)1 −h เราได้ P(x, y) = (1 −′hy)x −(1 −′hy−1)x และ ป (2)(x, y) = เอ็กซ์ z\(\geq\)2 [(1 −เลเยอร์เฮิร์ตซ์)x −(1 −เลเยอร์เฮิร์ตซ์−1)x][(1 −เลเยอร์ไฮ)z −(1 −เลเยอร์ไฮ−1)z] ด้านล่างเราคำนวณขีดจำกัดของ P (2)(x,y) ป (x,ย) เมื่อ h ไปที่ 1 —นั่นคือ ′h ไปที่ 0 โปรดทราบว่าค่าสูงสุด ลำดับของ aph ใน P(x, y) คือ aphy−1 โดยมี coefficient x ดังนั้น ลิม ชั่วโมง→1 P (2)(x, ย) ป(x, ย) = ลิม Âh \(\to\) 0 P (2)(x, ย) ป(x, ย) = ลิม Âh \(\to\) 0 P (2)(x, ย) x′hy−1 + O(′hy) = ลิม Âh \(\to\) 0 ป z\(\geq\)2[xÂhz−1 + O(Âhz)][zÂhy−1 + O(Âhy)] x′hy−1 + O(′hy) = ลิม Âh \(\to\) 0 2x′hy + O(′hy+1) x′hy−1 + O(′hy) = ลิม Âh \(\to\) 0 2xhy x′hy−1 = ลิม Âh \(\to\) 0 2Âh = 0 เมื่อ h เข้าใกล้ 1,23 มากพอ เราก็จะได้ P (2)(x, ย) ป(x, ย) \(\leq\)1 2 สำหรับ x \(\geq\)2 และ y \(\geq\)2 ใดๆ โดยการเหนี่ยวนํา สำหรับ k > 2 ใดๆ P (k) \(\triangleq\)P k เป็นเช่นนั้น • P (k)(0, 0) = 1, P (k)(0, x) = 0 สำหรับ x \(\geq\)2 ใดๆ และ • สำหรับ x \(\geq\)2 และ y \(\geq\)2 ใดๆ P (k)(x, y) = P (k−1)(x, 0)P(0, y) + เอ็กซ์ z\(\geq\)2 P (k−1)(x, z)P(z, y) = เอ็กซ์ z\(\geq\)2 P (k−1)(x, z)P(z, y) \(\leq\) เอ็กซ์ z\(\geq\)2 พี(x, ซ) 2k−2 \(\cdot\) P(z, y) = P (2)(x, y) 2k−2 \(\leq\)P(x, y) 2k−1 . เมื่อ P(x, y) \(\leq\)1 หลังจาก 1−log2 F รอบ ความน่าจะเป็นในการเปลี่ยนผ่านไปสู่สถานะใดๆ y \(\geq\)2 นั้นน้อยมาก เริ่มต้นด้วยสถานะใดๆ x \(\geq\)2 แม้ว่าจะมีสถานะดังกล่าวอยู่มากมาย แต่ก็เห็นได้ง่าย ลิม ย→+∞ ป(x, ย) ป(x, y + 1) = ลิม ย→+∞ (1 −เลเยอร์ไฮ)x −(1 −เลเยอร์ไฮ−1)x (1 −′hy+1)x −(1 −′hy)x = ลิม ย→+∞ ′hy−1 −′hy ′ไฮ −′ไฮ+1 = 1 Âh = 1 1 −ชม. ดังนั้นแต่ละแถว x ของเมทริกซ์การเปลี่ยนแปลง P จะลดลงเป็นลำดับเรขาคณิตพร้อมอัตรา 1 1−ชั่วโมง > 2 เมื่อ y มีขนาดใหญ่พอ และค่า P (k) ก็จะเท่ากัน ดังนั้น เมื่อ k มีขนาดใหญ่พอแต่ยังคงอยู่ ตามลำดับ log1/2 F, P y\(\geq\)2 P (k)(x, y) < F สำหรับ x \(\geq\)2 ใดๆ นั่นคือมีความน่าจะเป็นอย่างล้นหลาม ฝ่ายตรงข้ามแพ้ในเกมและล้มเหลวในการทำนาย Qr−1 ที่รอบ r −k สำหรับ h \(\in\)(2/3, 1] มากขึ้น การวิเคราะห์ที่ซับซ้อนแสดงให้เห็นว่ามีค่าคงที่ C มากกว่า 1/2 เล็กน้อย ดังนั้นจึงได้ผล เพื่อรับ k = O(logC F) ดังนั้น Lemma 5.6 จึงถืออยู่ ■ เลมมา 5.4 (ปรับปรุงใหม่) ให้คุณสมบัติ 1–3 สำหรับแต่ละรอบก่อน r, ph = h2(1 + h −h2) สำหรับ Lr, และผู้นำ ër มีความซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph 23ตัวอย่างเช่น h = 80% ตามที่แนะนำโดยตัวเลือกพารามิเตอร์เฉพาะ

หลักฐาน หลังจากบทแทรก 5.6 ฝ่ายตรงข้ามไม่สามารถทำนาย Qr−1 ย้อนกลับไปที่รอบ r −k ยกเว้น ความน่าจะเป็นเล็กน้อย โปรดทราบว่านี่ไม่ได้หมายความว่าความน่าจะเป็นของผู้นำที่ซื่อสัตย์จะเป็นเช่นนั้น แต่ละรอบ อันที่จริง ให้ Qr−1 ขึ้นอยู่กับจำนวนผู้ใช้ที่เป็นอันตรายในตอนเริ่มต้น การเรียงสับเปลี่ยนแบบสุ่มของ PKr−k ฝ่ายตรงข้ามอาจมีได้มากกว่าหนึ่งตัวเลือกสำหรับ Qr และ จึงสามารถเพิ่มความน่าจะเป็นของผู้นำที่เป็นอันตรายได้ในรอบ r + 1 - เราให้เขาอีกครั้ง ข้อดีบางอย่างที่ไม่สมจริงเช่นเดียวกับใน Lemma 5.6 เพื่อให้การวิเคราะห์ง่ายขึ้น อย่างไรก็ตาม สำหรับแต่ละ Qr−1 ที่ฝ่ายตรงข้ามไม่ได้สอบถามถึง H ที่รอบ r −k สำหรับ x \(\geq\)1 ใดๆ ด้วยความน่าจะเป็น (1 −h)x−1h ผู้ใช้ที่ซื่อสัตย์คนแรกเกิดขึ้นที่ตำแหน่ง x ในผลลัพธ์ การเรียงสับเปลี่ยนแบบสุ่มของ PKr−k เมื่อ x = 1 ความน่าจะเป็นของผู้นำที่ซื่อสัตย์ในรอบ r + 1 คือ แน่นอนชั่วโมง; ในขณะที่เมื่อ x = 2 ฝ่ายตรงข้ามมีสองตัวเลือกสำหรับ Qr และความน่าจะเป็นผลลัพธ์คือ h2. เมื่อพิจารณาทั้งสองกรณีนี้แล้ว เราจึงมีโอกาสเป็นผู้นำที่ซื่อสัตย์ในรอบนั้น r + 1 มีค่าอย่างน้อย h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) ตามต้องการ โปรดทราบว่าความน่าจะเป็นข้างต้นพิจารณาเฉพาะการสุ่มในโปรโตคอลจากรอบ r −k เพื่อปัดเศษ r เมื่อพิจารณาความสุ่มทั้งหมดจากรอบ 0 ถึงรอบ r แล้ว Qr−1 จะเป็น ฝ่ายตรงข้ามคาดเดาได้น้อยกว่าและความน่าจะเป็นของผู้นำที่ซื่อสัตย์ในรอบ r + 1 อยู่ที่ h2(1 + h −h2) น้อยที่สุด แทนที่ r + 1 ด้วย r และเลื่อนทุกอย่างกลับไปหนึ่งรอบ ซึ่งเป็นผู้นำ ër ซื่อสัตย์กับความน่าจะเป็นอย่างน้อย h2(1 + h −h2) ตามที่ต้องการ ในทำนองเดียวกัน ในแต่ละขั้นตอน Coin-Genuinely-Flipped s “ผู้นำ” ของขั้นตอนนั้น — นั่นคือผู้ตรวจสอบ ใน SV rs ซึ่งหนังสือรับรองมีค่า hash น้อยที่สุด มีความเที่ยงตรงกับความน่าจะเป็นอย่างน้อย h2(1 + ชั่วโมง −h2) ดังนั้น ph = h2(1 + h −h2) สำหรับ Lr และ Lemma 5.4 ถือเป็น ■

Algorand ′

2 В этом разделе мы создадим версию Algorand ′, работающую при следующем предположении. Допущение о честном большинстве пользователей: более 2/3 пользователей в каждом PKr честны. В разделе 8 мы покажем, как заменить приведенное выше предположение желаемым «Честным большинством». Денежное предположение. 6.1 Дополнительные обозначения и параметры для Algorand ′ 2 Обозначения • \(\mu\) \(\in\)Z+: прагматическая верхняя граница числа шагов, которые с подавляющей вероятностью фактически будет принято за один раунд. (Как мы увидим, параметр \(\mu\) контролирует количество эфемерных ключи, которые пользователь готовит заранее для каждого раунда.) • Lr: случайная величина, представляющая количество испытаний Бернулли, необходимых для получения 1, когда каждое испытание равно 1 с вероятностью ph 2 . Lr будет использоваться для верхней границы времени, необходимого для генерации блок Бр. • tH: нижняя граница числа честных проверяющих на этапе s > 1 раунда r, такая, что при с подавляющей вероятностью (при n и p), в SV r,s имеется > tH честных проверяющих. Параметры • Отношения между различными параметрами. — Для каждого шага s > 1 раунда r n выбирается так, чтобы с подавляющей вероятностью

|HSV r,s| > ТХ и |HSV r,s| + 2|МСВ г,с| < 2tH. Обратите внимание, что из двух приведенных выше неравенств вместе следует |HSV r,s| > 2|MSV r,s|: т.е. составляет 2/3 честного большинства среди выбранных проверяющих. Чем ближе к 1 значение h, тем меньше должно быть n. В частности, мы используем (варианты из) границ Чернова, обеспечивающих выполнение желаемых условий с подавляющей вероятностью. • Пример выбора важных параметров. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0,69n, k = 70. 6.2 Реализация эфемерных ключей в Algorand ′ 2 Напомним, что верификатор i \(\in\)SV r,s подписывает свое сообщение mr,s цифровой подписью. я шага s в раунде r относительно эфемерный открытый ключ pkr,s i, используя эфемерный секретный ключ skr,s я что он тут же уничтожает после использования. Когда количество возможных шагов, которые может сделать раунд, ограничено заданным целое число \(\mu\), мы уже видели, как практически обрабатывать эфемерные ключи. Например, как мы объяснили в Algorand ′ 1 (где \(\mu\) = m + 3), чтобы обрабатывать все возможные эфемерные ключи, начиная с от раунда r' до раунда r' + 106, я генерирует пару (PMK, SMK), где публичный мастер PMK ключ схемы подписи на основе идентичности, а SMK — соответствующий секретный главный ключ. Пользователь я публикует PMK и использует SMK для генерации секретного ключа каждого возможного эфемерного открытого ключа (и после этого уничтожает SMK). Набор эфемерных открытых ключей i для соответствующих раундов составляет S = {i} \(\times\) {r′, . . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)}. (Как уже говорилось, по мере приближения раунда r' + 106 «обновляю» его пару (ПМК, СМК).) На практике, если \(\mu\) достаточно велико, раунд Algorand ′ 2 не займет более \(\mu\) шагов. В Однако в принципе существует отдаленная вероятность того, что для некоторого раунда r число шагов фактически принятое значение будет превышать \(\mu\). Когда это произойдет, я не смогу подписать его сообщение, мистер С. я для любой шаг s > \(\mu\), поскольку он заранее подготовил только \(\mu\) секретных ключей для раунда r. Более того, он не смог подготовить и опубликовать новый запас эфемерных ключей, как обсуждалось ранее. На самом деле, чтобы сделать поэтому ему нужно будет вставить новый открытый главный ключ PMK' в новый блок. Но если вокруг r делать все больше и больше шагов, новые блоки не будут генерироваться. Однако решения существуют. Например, я могу использовать последний эфемерный ключ раунда r, pkr,\(\mu\) я , следующим образом. Он генерирует еще один запас пар ключей для раунда r — например, с помощью (1) создания еще одного пара мастер-ключей (ПМК, СМК); (2) использование этой пары для генерации еще, скажем, 106 эфемерных ключей, ск г, \(\mu\)+1 я , . . . , ск г, \(\mu\)+106 я , соответствующий шагам \(\mu\)+1, ..., \(\mu\)+106 раунда r; (3) используя skr,\(\mu\) я в цифровом формате подпишите PMK (и любое (r, \(\mu\))-сообщение, если i \(\in\)SV r,\(\mu\)) относительно pkr,\(\mu\) я ; и (4) стирание SMK и skr,\(\mu\) я . Должен ли я стать проверяющим на шаге \(\mu\) + s с s \(\in\) {1, . . . , 106}, то я подписываю его цифровую подпись (r, \(\mu\) + s)- сообщение г-н,\(\mu\)+s я относительно его нового ключа ПК r,\(\mu\)+s я = (i, r, \(\mu\) + s). Разумеется, для проверки этой подписи из i другие должны быть уверены, что этот открытый ключ соответствует новому открытому главному ключу PMK i. Таким образом, в дополнение к этой подписи i передает свою цифровую подпись ПМК относительно pkr,\(\mu\) я . Конечно, этот подход можно повторять столько раз, сколько необходимо, если раунд r продолжится. для все большего и большего количества шагов! Последний эфемерный секретный ключ используется для аутентификации нового главного публичного ключа. ключ и, таким образом, еще один запас эфемерных ключей для раунда r. И так далее.6.3 Фактический протокол Algorand ′ 2 Напомним еще раз, что на каждом шаге s раунда r проверяющий i \(\in\)SV r,s использует свою долгосрочную общедоступную тайну. пара ключей для получения его учетных данных, \(\sigma\)r,s я \(\triangleq\)SIGi(r, s, Qr−1), а также SIGi Qr−1 в случае s = 1. Верификатор i использует свою пару эфемерных ключей (pkr,s я, скр,с i ), чтобы подписать любое другое сообщение m, которое может быть требуется. Для простоты будем писать esigi(m), а не sigpkr,s. i (m), чтобы обозначить собственное эфемерное значение i подпись m на этом этапе и напишите ESIGi(m) вместо SIGpkr,s i (m) \(\triangleq\) (i, m, esigi(m)). Шаг 1. Блокируйте предложение Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг 1 раунда r, как только он CERT r−1, который позволяет i однозначно вычислить H(Br−1) и Qr−1. • Пользователь i использует Qr-1, чтобы проверить, принадлежит ли i SV r,1 или нет. Если i /\(\varepsilon\)SV r,1, он ничего не делает на шаге 1. • Если i \(\in\)SV r,1, то есть если я потенциальный лидер, то он делает следующее. (a) Если я увидел B0, . . . , сам Br−1 (любой Bj = Bj ǫ можно легко получить из его значения hash в CERT j и, таким образом, считается «просмотренным»), то он получает платежи раунда r, которые было передано ему на данный момент и вычисляет максимальный набор выплат PAY r я от них. (b) Если я не видел все B0, . . . , Br−1, то он устанавливает PAY r я = \(\emptyset\). (c) Далее я вычисляю его «блок кандидатов» Br i = (r, PAY r i , SIGi(Qr−1), H(Br−1)). (c) Наконец, я вычисляю сообщение mr,1 я = (Бр i , esigi(H(Br i ))), \(\sigma\)r,1 я), уничтожает его эфемерное секретный ключ скр,1 i , а затем распространяет два сообщения, mr,1 я и (SIGi(Qr−1), \(\sigma\)r,1 я), отдельно, но одновременно. aКогда i является лидером, SIGi(Qr-1) позволяет другим вычислить Qr = H(SIGi(Qr-1), r).

Выборочное распространение Чтобы сократить глобальное выполнение шага 1 и всего раунда, важно, чтобы (r, 1)- сообщения распространяются выборочно. То есть для каждого пользователя j в системе • Для первого (r, 1)-сообщения, которое он когда-либо получает и успешно проверяет, содержит ли оно блок или является просто учетными данными и подписью Qr-1, игрок j распространяет его как обычно. • Для всех остальных (r, 1)-сообщений, которые игрок j получает и успешно проверяет, он распространяет это только в том случае, если значение hash содержащихся в нем учетных данных является наименьшим среди значений hash учетных данных, содержащихся во всех (r, 1)-сообщениях, которые он получил и успешно проверил, далеко. • Однако, если j получает два разных сообщения вида mr,1 я от того же игрока я,б он отбрасывает второй независимо от значения hash учетных данных i. Обратите внимание, что при избирательном распространении полезно, чтобы каждый потенциальный лидер i распространял свой учетные данные \(\sigma\)r,1 я отдельно от мистера 1 i :c эти маленькие сообщения передаются быстрее, чем блоки, убедитесь, что своевременное распространение г-на,1 Здесь содержащиеся учетные данные имеют небольшие значения hash, а заставьте те, у кого большие значения hash, быстро исчезнуть. aТо есть все подписи верны и, если она имеет вид mr,1 i, и блок, и его hash действительны — хотя j не проверяет, является ли включенный набор выплат максимальным для i или нет. bЭто означает, что я злонамерен. cМы благодарим Георгиоса Влахоса за это предложение.Шаг 2: Первый шаг Протокола поэтапного консенсуса GC Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг 2 раунда r, как только он CERT r-1. • Пользователь i ожидает максимальное время t2 \(\triangleq\) \(\lambda\) + Λ. Во время ожидания я действую следующим образом. 1. Подождав время 2\(\lambda\), он находит пользователя \(\ell\) такого, что H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 к) для всех учетные данные \(\sigma\)r,1 дж которые являются частью успешно проверенных (r, 1)-сообщений, которые он получил пока.а 2. Если он имеет получил а блокировать Бр−1, который спички тот hash ценность Н(Бр-1) содержится в CERT r-1,b, и если он получил от \(\ell\) действительное сообщение mr,1 \(\ell\) = (Бр \(\ell\), esig\(\ell\)(H(Br \(\ell\))) \(\sigma\)r,1 \(\ell\)),c, то я перестаю ждать и устанавливаю v′ я \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. В противном случае, когда время t2 истечет, я устанавливаю v' я \(\triangleq\) \(\bot\). 4. Когда значение v' i был установлен, я вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,2 или нет. 5. Если i \(\in\)SV r,2, i вычисляет сообщение mr,2 я \(\triangleq\)(ESIGi(v′ i), \(\sigma\)r,2 я ),д уничтожает его эфемерное секретный ключ скр,2 i , а затем распространяет mr,2 я. В противном случае я останавливаюсь, не распространяя что угодно. aПо сути, пользователь i в частном порядке решает, что лидером раунда r является пользователь \(\ell\). bКонечно, если CERT r−1 указывает, что Br−1 = Br−1 ψ , то я уже «получил» Br−1 в тот момент, когда он CERT r-1. cОпять же, подписи игрока \(\ell\) и hash успешно проверены, и PAY r \(\ell\)в Бр \(\ell\)действителен для round r — хотя я не проверяю, PAY ли r \(\ell\)максимальен для \(\ell\)или нет. Если Бр \(\ell\)содержит пустой набор выплат, тогда на самом деле мне нет необходимости видеть Br−1, прежде чем проверять, является ли Br \(\ell\)действителен или нет. d Сообщение мистера, 2 я сигнализирует о том, что игрок i рассматривает первый компонент v' i быть hash следующего блока, или считает следующий блок пустым.

Шаг 3: Второй шаг GC Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный Шаг 3 раунда r, как только он CERT r-1. • Пользователь i ожидает максимальное время t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ. Во время ожидания я действую как следует. 1. Если существует значение v такое, что он получил как минимум tH действительных сообщений mr,2 дж из вид (ESIGj(v), \(\sigma\)r,2 j ), без всякого противоречия,a тогда он перестает ждать и устанавливает v' = v. 2. В противном случае, когда время t3 истечет, он установит v′ = \(\bot\). 3. Когда значение v' установлено, я вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,3 или нет. 4. Если i \(\in\)SV r,3, то я вычисляет сообщение mr,3 я \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 я), уничтожает его эфемерный секретный ключ skr,3 i , а затем распространяет mr,3 я. В противном случае я остановлюсь без пропагандируя что-либо. aТо есть он не получил двух действительных сообщений, содержащих ESIGj(v) и другой ESIGj(ˆv) соответственно, от игрока j. Здесь и далее, за исключением Конечных условий, определенных позже, всякий раз, когда честный игрок хочет сообщений заданной формы, сообщения, противоречащие друг другу, никогда не учитываются и не считаются действительными.

Шаг 4: Выходные данные GC и первый шаг BBA⋆ Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный Шаг 4 раунда r, как только он завершает свой Шаг 3. • Пользователь i ожидает максимальное время 2\(\lambda\).a. Во время ожидания я действует следующим образом. 1. Он вычисляет vi и gi, выходные данные GC, следующим образом. (a) Если существует значение v′ ̸= \(\bot\) такое, что он получил как минимум tH действительных сообщений мистер, 3 дж = (ESIGj(v′), \(\sigma\)r,3 j ), затем он перестает ждать и устанавливает vi \(\triangleq\)v′ и gi \(\triangleq\)2. (b) Если он получил хотя бы tH действительных сообщений mr,3 дж = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ), затем он останавливается ждет и устанавливает vi \(\triangleq\) \(\bot\) и gi \(\triangleq\)0.b (c) В противном случае, когда время 2\(\lambda\) истечет, если существует значение v′ ̸= \(\bot\) такое, что он имеет получил не менее ⌈tH 2 ⌉действительные сообщения mr,j дж = (ESIGj(v′), \(\sigma\)r,3 j ), то он устанавливает vi \(\triangleq\)v′ и gi \(\triangleq\)1.c (d) В противном случае, когда время 2\(\lambda\) истечет, он установит vi \(\triangleq\) \(\bot\) и gi \(\triangleq\)0. 2. Когда значения vi и gi установлены, я вычисляет bi, вход BBA⋆, следующим образом: bi \(\triangleq\)0, если gi = 2, и bi \(\triangleq\)1 в противном случае. 3. i вычисляет Qr−1 из CERT r−1 и проверяет, принадлежит ли i SV r,4 или нет. 4. Если i \(\in\)SV r,4, он вычисляет сообщение mr,4 я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 я), уничтожает его эфемерный секретный ключ skr,4 i и распространяет mr,4 я. В противном случае я останавливаюсь, не распространяя что угодно. aТаким образом, максимальное общее количество времени с момента начала первого шага раунда r может составлять t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ. bОтсутствие шага (b) в протоколе не влияет на его правильность. Однако наличие этапа (b) позволяет шагу 4 завершиться менее чем за 2\(\lambda\), если достаточное количество верификаторов шага 3 имеют «подпись \(\bot\)». cМожно доказать, что v′ в этом случае, если он существует, должен быть единственным.Шаг s, 5 \(\leq\)s \(\leq\)m + 2, s−2 ≡0 mod 3: шаг BBA⋆ с фиксированной монетой до 0 Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он завершает свой шаг s−1. • Пользователь i ожидает максимальное время 2\(\lambda\).a. Во время ожидания я действует следующим образом. – Конечное условие 0: если в любой точке существует строка v ̸= \(\bot\) и шаг s′ такие, что (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 — то есть шаг s′ является шагом с фиксированной монетой до 0, (b) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 дж ),б и (c) я получил действительное сообщение (SIGj(Qr-1), \(\sigma\)r,1 j), где j является вторым компонент v, затем я перестаю ждать и заканчиваю выполнение шага s (и фактически раунда r) сразу, ничего не выдавая в качестве (r,s)-верификатора; устанавливает H(Br) в качестве первого компонент v; и устанавливает свой собственный CERT r как набор сообщений mr,s′−1 дж шага (б) вместе с (SIGj(Qr−1), \(\sigma\)r,1 j ).c – Конечное условие 1: Если в какой-либо точке существует шаг s′ такой, что (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 — то есть шаг s′ является шагом с фиксированной монетой-1, и (b’) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 дж ),д затем я перестаю ждать и заканчиваю выполнение шага s (и фактически раунда r) правильно прочь, не распространяя ничего в качестве (r, s)-верификатора; устанавливает Br = Br й; и устанавливает свой собственный CERT r — набор сообщений mr,s′−1 дж подэтапа (b’). – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он перестает ждать и устанавливает bi \(\triangleq\)1. – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), но они не соглашаются на одно и то же v, тогда он останавливается ждет и устанавливает bi \(\triangleq\)0. – В противном случае, когда время 2\(\lambda\) истечет, я устанавливаю bi \(\triangleq\)0. – Когда значение bi установлено, i вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,s. – Если i \(\in\)SV r,s, i вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) с vi, являющимся значение, которое он вычислил на шаге 4, уничтожает его эфемерный секретный ключ skr,s я, а потом пропагандирует мистера, с я. В противном случае я останавливаюсь, ничего не распространяя. aТаким образом, максимальное общее количество времени с момента начала первого шага раунда r может составлять ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s−3)\(\lambda\) + Λ. bТакое сообщение от игрока j засчитывается, даже если игрок i также получил сообщение от j, подписавшегося за 1. Аналогично для конечного условия 1. Как показано в анализе, это сделано для того, чтобы все честные пользователи знали CERT r в пределах времени \(\lambda\) друг от друга. cПользователь i теперь знает H(Br) и результаты своего раунда r. Ему просто нужно дождаться, пока собственно блок Br не будет передается ему, что может занять некоторое дополнительное время. Он по-прежнему помогает распространять сообщения как обычный пользователь. но не инициирует никакого распространения в качестве (r, s)-верификатора. В частности, он помогал распространять все сообщения в его CERT r, которого достаточно для нашего протокола. Обратите внимание, что ему также следует установить bi \(\triangleq\)0 для бинарного протокола BA, но bi в этом случае в любом случае не нужен. Аналогичные вещи для всех будущих инструкций. dВ этом случае не имеет значения, кто такие виджеи. 65Шаг s, 6 \(\leq\)s \(\leq\)m + 2, s−2 ≡1 mod 3: шаг BBA⋆ с фиксированной монетой-1 Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он завершает свой шаг s−1. • Пользователь i ожидает максимальное время 2\(\lambda\). Во время ожидания я действую следующим образом. – Конечное условие 0: те же инструкции, что и на этапе Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и на этапе Coin-Fixed-To-0. – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), затем он перестает ждать и устанавливает bi \(\triangleq\)0.a – В противном случае, когда время 2\(\lambda\) истечет, я устанавливаю bi \(\triangleq\)1. – Когда значение bi установлено, i вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,s. – Если i \(\in\)SV r,s, i вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) с vi, являющимся значение, которое он вычислил на шаге 4, уничтожает его эфемерный секретный ключ skr,s я, а потом пропагандирует мистера, с я. В противном случае я останавливаюсь, ничего не распространяя. aОбратите внимание, что получение tH действительных (r, s −1)-сообщений, подписанных за 1, будет означать конечное условие 1. Шаг s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Шаг BBA⋆ с подбрасыванием монеты Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он завершает свой шаг s−1. • Пользователь i ожидает максимальное время 2\(\lambda\). Во время ожидания я действую следующим образом. – Конечное условие 0: те же инструкции, что и на этапе Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и на этапе Coin-Fixed-To-0. – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он перестает ждать и устанавливает bi \(\triangleq\)0. – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он перестает ждать и устанавливает bi \(\triangleq\)1. – В противном случае, когда время 2\(\lambda\) истечет, позволяя SV r,s−1 я — множество (r, s−1)-верификаторов из которому он получил действительное сообщение mr,s−1 дж , я устанавливаю bi \(\triangleq\)lsb(minj\(\varepsilon\)SV r,s−1 я H(\(\sigma\)r,s−1 дж )). – Когда значение bi установлено, i вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,s. – Если i \(\in\)SV r,s, i вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) с vi, являющимся значение, которое он вычислил на шаге 4, уничтожает его эфемерный секретный ключ skr,s я, а потом пропагандирует мистера, с я. В противном случае я останавливаюсь, ничего не распространяя. Замечание. В принципе, как указано в подразделе 6.2, протокол может занимать сколь угодно много шаги в каком-то раунде. Если это произойдет, как обсуждалось, пользователь i \(\in\)SV r,s с s > \(\mu\) исчерпал

его запас заранее сгенерированных эфемерных ключей и должен подтвердить подлинность своего (r, s)-сообщения mr,s я по «каскад» эфемерных ключей. Таким образом, мое сообщение становится немного длиннее, и его передача длиннее. сообщения займут немного больше времени. Соответственно, после стольких шагов данного раунда значение параметр \(\lambda\) автоматически немного увеличится. (Но он возвращается к исходному \(\lambda\) при каждом новом блок создается и начинается новый раунд.) Реконструкция блока Round-r неверификаторами Инструкции для каждого пользователя i в системе: Пользователь i начинает свой собственный раунд r, как только он CERT r-1. • я следую инструкциям каждого шага протокола, участвует в распространении всех сообщений, но не инициирует никакого распространения на шаге, если он не является на нем проверяющим. • я заканчиваю свой раунд r, введя либо Конечное условие 0, либо Конечное условие 1 в каком-либо шаг, с соответствующим CERT r. • С этого момента он начинает свой раунд r + 1, ожидая получения фактического блока Br (если только он уже получил его), чей hash H(Br) был зафиксирован CERT r. Опять же, если CERT r указывает, что Br = Br ϫ, я узнает Бр в тот момент, когда у него есть CERT r. 6.4 Анализ Algorand ′ 2 Анализ Algorand ′ 2 легко получить из Algorand ′ 1. По сути, в Algorand ′ 2, с подавляющая вероятность, (а) все честные пользователи согласны на один и тот же блок Br; лидер нового блок честен с вероятностью не менее ph = h2(1 + h −h2).

Algorand ′

2 ในส่วนนี้ เราสร้างเวอร์ชันของ Algorand ′ ที่ทำงานภายใต้สมมติฐานต่อไปนี้ ข้อสันนิษฐานของผู้ใช้ส่วนใหญ่ที่ซื่อสัตย์: มากกว่า 2/3 ของผู้ใช้ในแต่ละ PKr มีความซื่อสัตย์ ในส่วนที่ 8 เราจะแสดงวิธีแทนที่สมมติฐานข้างต้นด้วย Honest Majority ที่ต้องการ สมมติฐานเรื่องเงิน 6.1 สัญลักษณ์และพารามิเตอร์เพิ่มเติมสำหรับ Algorand ′ 2 สัญกรณ์ • \(\mu\) \(\in\)Z+: ขอบเขตบนเชิงปฏิบัติของจำนวนขั้นตอนที่มีความน่าจะเป็นอย่างท่วมท้น จะถ่ายจริงในรอบเดียว (ดังที่เราจะเห็น พารามิเตอร์ \(\mu\) ควบคุมจำนวนข้อมูลชั่วคราว คีย์ที่ผู้ใช้เตรียมไว้ล่วงหน้าในแต่ละรอบ) • Lr: ตัวแปรสุ่มที่แสดงถึงจำนวนการทดลองเบอร์นูลลีที่จำเป็นในการดู 1 เมื่อแต่ละครั้ง การทดลองคือ 1 ด้วยความน่าจะเป็น ph 2. Lr จะถูกใช้เพื่อขอบเขตบนของเวลาที่จำเป็นในการสร้าง บล็อกเบอร์ • th: ขอบเขตล่างสำหรับจำนวนผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอน s > 1 ของรอบ r โดยที่ ความน่าจะเป็นอย่างท่วมท้น (ให้ n และ p) มี > ผู้ตรวจสอบที่ซื่อสัตย์ใน SV r,s พารามิเตอร์ • ความสัมพันธ์ระหว่างพารามิเตอร์ต่างๆ — สำหรับแต่ละขั้นตอน s > 1 ของรอบ r, n จะถูกเลือก ดังนั้น ด้วยความน่าจะเป็นอย่างล้นหลาม

|HSV r,s| > ที และ |HSV r,s| + 2|MSV r,s| < 2tH โปรดทราบว่าอสมการทั้งสองข้างต้นรวมกันหมายถึง |HSV r,s| > 2|MSV r,s|: นั่นคือตรงนั้น เป็นเสียงข้างมากที่ซื่อสัตย์ 2/3 ของผู้ตรวจสอบที่เลือก ยิ่งค่า h ใกล้ 1 มากเท่าใด n ก็ต้องมีค่าน้อยลงเท่านั้น โดยเฉพาะเราใช้ (variants ของ) ขอบเขตเชอร์โนฟเพื่อให้แน่ใจว่าเงื่อนไขที่ต้องการมีความน่าจะเป็นอย่างล้นหลาม • ตัวอย่างตัวเลือกของพารามิเตอร์ที่สำคัญ — ฉ = 10−18. — n \(\mu\)4000, tH \(\mu\)0.69n, k = 70 6.2 การใช้คีย์ชั่วคราวใน Algorand ′ 2 จำได้ว่าผู้ตรวจสอบ i \(\in\)SV r,s ลงนามข้อความของเขาแบบดิจิทัล mr,s ฉัน ของขั้นตอน s ในรอบ r สัมพันธ์กับ กุญแจสาธารณะชั่วคราว pkr,s ฉัน ใช้คีย์ลับชั่วคราว skr,s ฉัน ที่เขาทำลายทันที หลังจากใช้งาน เมื่อจำนวนขั้นตอนที่เป็นไปได้ที่รอบอาจใช้นั้นถูกจำกัดด้วยจำนวนที่กำหนด จำนวนเต็ม \(\mu\) เราได้เห็นวิธีจัดการกับคีย์ชั่วคราวแล้ว เช่นอย่างที่เรา ได้อธิบายไว้ใน Algorand ′ 1 (โดยที่ \(\mu\) = m + 3) เพื่อจัดการคีย์ชั่วคราวที่เป็นไปได้ทั้งหมดจาก รอบ r′ ถึงรอบ r′ + 106 ฉันสร้างคู่ (PMK, SMK) โดยที่ PMK ปรมาจารย์สาธารณะ คีย์ของรูปแบบลายเซ็นตามข้อมูลประจำตัว และ SMK เป็นคีย์หลักลับที่เกี่ยวข้อง ผู้ใช้ฉัน เผยแพร่ PMK และใช้ SMK เพื่อสร้างคีย์ลับของคีย์สาธารณะชั่วคราวที่เป็นไปได้แต่ละรายการ (และทำลาย SMK หลังจากทำเช่นนั้น) ชุดกุญแจสาธารณะชั่วคราวของ i สำหรับผู้เกี่ยวข้อง รอบคือ S = {i} \(\times\) {r′, . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)} (ตามที่กล่าวไว้ เมื่อรอบ r′ + 106 ใกล้เข้ามา ฉัน "รีเฟรช" คู่ของเขา (PMK, SMK)) ในทางปฏิบัติ ถ้า \(\mu\) มีขนาดใหญ่พอ รอบของ Algorand ′ 2 จะต้องไม่เกิน \(\mu\) ขั้นตอน ใน อย่างไรก็ตาม โดยหลักการแล้ว มีความเป็นไปได้ที่ระยะไกลสำหรับบางรอบคือจำนวนก้าว ที่ถ่ายจริงจะเกิน \(\mu\) เมื่อสิ่งนี้เกิดขึ้น ฉันจะไม่สามารถลงนามในข้อความของคุณนายได้ ฉัน สำหรับ ขั้นตอนใดก็ได้ s > \(\mu\) เนื่องจากเขาได้เตรียมคีย์ลับไว้ล่วงหน้าเฉพาะ \(\mu\) สำหรับรอบ r เท่านั้น นอกจากนี้เขา ไม่สามารถจัดเตรียมและเผยแพร่กุญแจชั่วคราวชุดใหม่ตามที่กล่าวไว้ก่อนหน้านี้ ในความเป็นจริงที่จะทำ ดังนั้นเขาจะต้องแทรกคีย์สาธารณะใหม่ PMK′ ลงในบล็อกใหม่ แต่ควรปัดเศษ r ทำตามขั้นตอนมากขึ้นเรื่อยๆ จะไม่มีการสร้างบล็อกใหม่ อย่างไรก็ตาม ยังมีวิธีแก้ปัญหาอยู่ ตัวอย่างเช่น ฉันอาจใช้คีย์ชั่วคราวตัวสุดท้ายของ round r, pkr,\(\mu\) ฉัน , ดังต่อไปนี้ เขาสร้างคู่คีย์อีกชุดหนึ่งสำหรับรอบ r —เช่น โดย (1) สร้างอีกคู่หนึ่ง คู่คีย์หลัก (PMK, SMK); (2) การใช้คู่นี้เพื่อสร้างอีกอัน เช่น 106 คีย์ชั่วคราว สค r,\(\mu\)+1 ฉัน , . . . , ถาม r,\(\mu\)+106 ฉัน สอดคล้องกับขั้นตอน \(\mu\)+1, ..., \(\mu\)+106 ของรอบ r; (3) การใช้ skr,\(\mu\) ฉัน สู่ดิจิทัล ลงชื่อ PMK (และข้อความ (r, \(\mu\)) ใดๆ หาก i \(\in\)SV r,\(\mu\)) สัมพันธ์กับ pkr,\(\mu\) ฉัน ; และ (4) การลบ SMK และ skr,\(\mu\) ฉัน . ฉันควรจะเป็นผู้ตรวจสอบในขั้นตอน \(\mu\) + s ด้วย s \(\in\){1, . . . , 106} จากนั้นฉันจะเซ็นชื่อแบบดิจิทัลของเขา (r, \(\mu\) + s)- ส่งข้อความถึงคุณ,\(\mu\)+s ฉัน สัมพันธ์กับ pk คีย์ใหม่ของเขา r,\(\mu\)+s ฉัน = (i, r, \(\mu\) + s) แน่นอนว่าต้องตรวจสอบลายเซ็นนี้ ของ i คนอื่นๆ ต้องแน่ใจว่าคีย์สาธารณะนี้สอดคล้องกับ PMK คีย์สาธารณะใหม่ของ i ดังนั้น นอกเหนือจากลายเซ็นนี้แล้ว ฉันยังส่งลายเซ็นดิจิทัลของ PMK ของเขาโดยสัมพันธ์กับ pkr,\(\mu\) ฉัน . แน่นอนว่าแนวทางนี้สามารถทำซ้ำได้บ่อยเท่าที่จำเป็น โดยควรปัด r ต่อไป เพื่อก้าวที่มากขึ้นเรื่อยๆ! รหัสลับชั่วคราวสุดท้ายจะใช้ในการตรวจสอบสิทธิ์สาธารณะหลักใหม่ กุญแจ และกุญแจชั่วคราวอีกอันสำหรับรอบ r และอื่นๆ6.3 พิธีสารจริง Algorand ′ 2 ระลึกอีกครั้งว่าในแต่ละขั้นตอน s ของรอบ r ผู้ตรวจสอบ i \(\in\)SV r,s ใช้ความลับสาธารณะระยะยาวของเขา คู่คีย์เพื่อสร้างหนังสือรับรองของเขา \(\sigma\)r, s ฉัน \(\triangleq\)SIGi(r, s, Qr−1) เช่นเดียวกับ SIGi คิวอาร์−1 ในกรณีที่ s = 1 ผู้ตรวจสอบฉันใช้คู่กุญแจชั่วคราวของเขา (pkr, s ฉัน , skr, s i ) เพื่อลงนามในข้อความอื่นใดที่อาจเป็น จำเป็น เพื่อความง่าย เราเขียน esigi(m) แทน sigpkr,s ฉัน (ม.) เพื่อแสดงว่าฉันเป็นเพียงชั่วคราว ลายเซ็นของ m ในขั้นตอนนี้ และเขียน ESIGi(m) แทน SIGpkr,s i (m) \(\triangleq\)(i, m, esigi(m)) ขั้นตอนที่ 1: บล็อกข้อเสนอ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มขั้นตอนที่ 1 ของตัวเองของรอบ r ทันทีที่เขามี CERT r−1 ซึ่งช่วยให้ i คำนวณ H(Br−1) และ Qr−1 ได้อย่างชัดเจน • ผู้ใช้ i ใช้ Qr−1 เพื่อตรวจสอบว่า i \(\in\)SV r,1 หรือไม่ ถ้า i /\(\in\)SV r,1 เขาไม่ทำอะไรเลยในขั้นตอนที่ 1 • ถ้าฉัน \(\in\)SV r,1 นั่นคือ ถ้าฉันเป็นผู้นำที่มีศักยภาพ เขาก็จะทำสิ่งต่อไปนี้ (ก) ถ้าฉันได้เห็น B0 ​​แล้ว . . , Br−1 เอง (ใดๆ Bj = Bj ǫ สามารถหามาได้อย่างง่ายดายจากค่า hash ของมัน ใน CERT j และถือว่า "เห็นแล้ว") จากนั้นเขาจะรวบรวมการชำระเงินรอบที่มี ได้รับการเผยแพร่ไปยังเขาจนถึงตอนนี้และคำนวณ payset สูงสุด PAY r ฉันมาจากพวกเขา (b) ถ้าฉันไม่เห็น B0 ​​ทั้งหมด . . , Br−1 แล้วเขาก็ตั้งค่า PAY r ฉัน = \(\emptyset\) (c) ต่อไป ฉันจะคำนวณ “candidate block” Br i = (r, จ่าย r ผม , SIGI(Qr−1), H(Br−1)) (c) สุดท้ายนี้ ฉันคำนวณข้อความ mr,1 ฉัน = (พี่ ฉัน , esigi(H(Br ผม )), \(\sigma\)r,1 i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,1 i แล้วเผยแพร่สองข้อความ mr,1 ฉัน และ (SIGi(Qr−1), \(\sigma\)r,1 ฉัน) แยกกันแต่พร้อมกัน ก aเมื่อฉันเป็นผู้นำ SIGi(Qr−1) ยอมให้ผู้อื่นคำนวณ Qr = H(SIGi(Qr−1), r)

การขยายพันธุ์แบบคัดเลือก เพื่อย่นระยะเวลาการดำเนินการทั่วโลกของขั้นตอนที่ 1 และรอบทั้งหมดให้สั้นลง สิ่งสำคัญคือ (r, 1)- ข้อความถูกเผยแพร่แบบเลือกสรร นั่นคือสำหรับผู้ใช้ j ทุกคนในระบบ • สำหรับข้อความแรก (r, 1) ที่เขาเคยได้รับและยืนยันได้สำเร็จ ก ว่าข้อความนั้นมี บล็อกหรือเป็นเพียงข้อมูลประจำตัวและลายเซ็นของ Qr−1 ผู้เล่น j จะเผยแพร่ตามปกติ • สำหรับข้อความอื่นๆ (r, 1) ทั้งหมดที่ผู้เล่น j ได้รับและยืนยันได้สำเร็จ เขาจะเผยแพร่ เฉพาะในกรณีที่ค่า hash ของข้อมูลรับรองที่มีอยู่นั้นน้อยที่สุดในบรรดาค่า hash ของข้อมูลรับรองที่มีอยู่ในข้อความทั้งหมด (r, 1) ที่เขาได้รับและตรวจสอบได้สำเร็จ ไกล • อย่างไรก็ตาม ถ้า j ได้รับข้อความสองข้อความที่แตกต่างกันในรูปแบบ mr,1 ฉัน จากผู้เล่นคนเดียวกัน i,b he ละทิ้งอันที่สองไม่ว่าค่า hash ของข้อมูลประจำตัวของ i จะเป็นเท่าใด โปรดทราบว่าภายใต้การคัดเลือกเผยแพร่ จะมีประโยชน์ที่ผู้ที่มีศักยภาพเป็นผู้นำแต่ละคนจะเผยแพร่ของตน หนังสือรับรอง \(\sigma\)r,1 ฉัน แยกจากนาย 1 i :c ข้อความเล็กๆ เหล่านั้นเดินทางเร็วกว่าบล็อกแน่นอน การขยายพันธุ์นาย 1 อย่างทันท่วงที ฉัน โดยที่ข้อมูลประจำตัวที่มีอยู่มีค่า hash น้อยในขณะที่ ทำให้ค่าที่มีค่า hash มากหายไปอย่างรวดเร็ว กกล่าวคือ ลายเซ็นทั้งหมดถูกต้อง และหากอยู่ในแบบ นาย 1 i ทั้งบล็อกและ hash นั้นถูกต้อง —แม้ว่า j จะไม่ตรวจสอบว่า payset ที่รวมไว้นั้นสูงสุดสำหรับ i หรือไม่ bซึ่งหมายความว่าฉันเป็นอันตราย cเราขอขอบคุณ Georgios Vlachos ที่แนะนำสิ่งนี้ขั้นตอนที่ 2: ขั้นตอนแรกของ GC ของโปรโตคอลฉันทามติแบบให้คะแนน คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มขั้นตอนที่ 2 ของตัวเองของรอบ r ทันทีที่มี ใบรับรองr−1 • ผู้ใช้ i รอเป็นระยะเวลาสูงสุด t2 \(\triangleq\)แล + Λ ระหว่างรอผมก็ทำดังนี้ครับ 1. หลังจากรอเวลา 2แล เขาพบผู้ใช้ ëเช่นนั้น H(\(\sigma\)r,1 มอร์) \(\leq\)H(\(\sigma\)r,1 เจ ) สำหรับทุกคน หนังสือรับรอง\(\sigma\)r,1 เจ ซึ่งเป็นส่วนหนึ่งของข้อความที่ได้รับการตรวจสอบ (r, 1) เรียบร้อยแล้ว จนถึงตอนนี้ 2. ถ้า เขา มี ได้รับ ก บล็อก เบอร์-1, ซึ่ง ไม้ขีด ที่ hash ค่า H(Br−1) อยู่ใน CERT r−1,b และหากเขาได้รับจาก la ข้อความที่ถูกต้อง mr,1 ฎ = (นาย มอร์, ซิกล์(H(Br ̵)), \(\sigma\)r,1 ̵) c จากนั้นฉันก็หยุดรอและตั้งค่า v′ ฉัน \(\triangleq\)(H(Br ë), ë) 3. มิฉะนั้น เมื่อหมดเวลา t2 ฉันจะตั้งค่า v′ ฉัน \(\triangleq\) \(\bot\) 4. เมื่อค่าของ v′ ฉันตั้งค่าไว้แล้ว ฉันคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,2 หรือไม่ 5. ถ้าฉัน \(\in\)SV r,2 ฉันจะคำนวณข้อความ mr,2 ฉัน \(\triangleq\)(ESIGi(วี′ ผม), \(\sigma\)r,2 i ) d ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,2 ฉัน แล้วเผยแพร่นาย 2 ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่ อะไรก็ได้ โดยพื้นฐานแล้ว ผู้ใช้ i ตัดสินใจเป็นการส่วนตัวว่าผู้นำของรอบ r คือผู้ใช้ ë bแน่นอน ถ้า CERT r−1 ระบุว่า Br−1 = Br−1 ī แล้วฉันก็ "ได้รับ" Br−1 ทันทีที่เขามี ใบรับรองr−1 cอีกครั้ง ลายเซ็นของผู้เล่น ë และ hashes ได้รับการตรวจสอบเรียบร้อยแล้ว และชำระเงิน ริน Br ëเป็นชุดการจ่ายเงินที่ถูกต้องสำหรับ รอบ r —แม้ว่าฉันจะไม่ได้ตรวจสอบว่า PAY r หรือไม่ ̵ เป็นค่าสูงสุดสำหรับ ̃ หรือไม่ ถ้า Br tellประกอบด้วยชุดการจ่ายเงินที่ว่างเปล่า จริงๆ แล้วไม่จำเป็นต้องเห็น Br−1 ก่อนที่จะตรวจสอบว่า Br ่ถูกต้องหรือไม่ งข้อความคุณนาย2 ฉัน ส่งสัญญาณว่าผู้เล่น i พิจารณาองค์ประกอบแรกของ v′ ฉันเป็น hash ของบล็อกถัดไป หรือ ถือว่าบล็อกถัดไปว่างเปล่า

ขั้นตอนที่ 3: ขั้นตอนที่สองของ GC คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 3 ของตัวเองของรอบ r ทันทีที่เขามี ใบรับรองr−1 • ผู้ใช้ i รอเป็นระยะเวลาสูงสุด t3 \(\triangleq\)t2 + 2แล = 3แล + Λ ระหว่างรอฉันก็ทำหน้าที่เป็น ดังต่อไปนี้ 1. หากมีค่า v อยู่จนเขาได้รับข้อความที่ถูกต้อง mr,2 เป็นอย่างน้อย เจ ของ แบบฟอร์ม (ESIGj(v), \(\sigma\)r,2 j ) โดยไม่มีข้อขัดแย้งใด ๆ ก แล้วเขาก็หยุดรอและออกเดินทาง วี' = โวลต์ 2. มิฉะนั้น เมื่อหมดเวลา t3 เขาจะตั้งค่า v′ = \(\bot\) 3. เมื่อตั้งค่า v′ ไว้แล้ว ฉันจะคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,3 หรือไม่ 4. ถ้าฉัน \(\in\)SV r,3 ฉันจะคำนวณข้อความ mr,3 ฉัน \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 ผม ) ทำลายของเขา คีย์ลับชั่วคราว skr,3 ฉัน แล้วเผยแพร่นาย 3 ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่มี เผยแพร่สิ่งใดๆ aนั่นคือ เขาไม่ได้รับข้อความที่ถูกต้องสองข้อความที่มี ESIGj(v) และ ESIGj(ˆv) ที่แตกต่างกันตามลำดับ จากผู้เล่นเจ ที่นี่และต่อจากนี้ ยกเว้นในเงื่อนไขการสิ้นสุดที่กำหนดไว้ในภายหลัง เมื่อใดก็ตามที่เป็นผู้เล่นที่ซื่อสัตย์ ต้องการข้อความในรูปแบบที่กำหนด ข้อความที่ขัดแย้งกันจะไม่นับหรือถือว่าถูกต้อง

ขั้นตอนที่ 4: ผลลัพธ์ของ GC และขั้นตอนแรกของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 4 ของตัวเองของรอบ r ทันทีที่เขา เสร็จสิ้นขั้นตอนที่ 3 ของเขาเอง • ผู้ใช้ ฉันรอเป็นเวลาสูงสุด 2แล.a ขณะรอ ฉันดำเนินการดังนี้ 1. เขาคำนวณ vi และ gi ซึ่งเป็นผลลัพธ์ของ GC ดังนี้ (ก) หากมีค่า v′ ̸= \(\bot\) แสดงว่าเขาได้รับข้อความที่ถูกต้องอย่างน้อย นาย 3 เจ = (ESIGj(v′), \(\sigma\)r,3 j ) จากนั้นเขาก็หยุดรอและตั้งค่า vi \(\triangleq\)v′ และ gi \(\triangleq\)2 (b) หากเขาได้รับข้อความที่ถูกต้องอย่างน้อย mr,3 เจ = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ) จากนั้นเขาก็หยุด รอและตั้งค่า vi \(\triangleq\) \(\bot\)และ gi \(\triangleq\)0.b (ค) มิฉะนั้น เมื่อเวลา 2แล หมดลง ถ้ามีค่า v′ ̸= \(\bot\)เช่นนั้น ได้รับอย่างน้อย ⌈tH 2 ⌉ข้อความที่ถูกต้อง mr,j เจ = (ESIGj(v′), \(\sigma\)r,3 j ) จากนั้นเขาก็ตั้งค่า vi \(\triangleq\)v′ และ gi \(\triangleq\)1.c (d) มิฉะนั้น เมื่อเวลา 2แล หมดลง เขาจะกำหนดให้ vi \(\triangleq\) \(\bot\) และ gi \(\triangleq\)0 2. เมื่อตั้งค่า vi และ gi แล้ว ฉันจะคำนวณ bi ซึ่งเป็นอินพุตของ BBA⋆ ดังนี้: bi \(\triangleq\)0 ถ้า gi = 2 และ bi \(\triangleq\)1 มิฉะนั้น 3. ฉันคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า i \(\in\)SV r,4 หรือไม่ 4. ถ้า i \(\in\)SV r,4, เขาคำนวณข้อความ mr,4 ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,4 ผม ) ทำลายของเขา คีย์ลับชั่วคราว skr,4 ฉัน และเผยแพร่นาย 4 ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่ อะไรก็ได้ ดังนั้น ระยะเวลารวมสูงสุดนับตั้งแต่ฉันเริ่มขั้นตอนที่ 1 ของรอบ r อาจเป็น t4 \(\triangleq\)t3 + 2แล = 5แล + Λ bไม่ว่าขั้นตอน (b) จะอยู่ในโปรโตคอลหรือไม่ก็ตามก็ไม่ส่งผลต่อความถูกต้อง อย่างไรก็ตาม การมีอยู่ของขั้นตอน (b) อนุญาตให้ขั้นตอนที่ 4 สิ้นสุดในเวลาน้อยกว่า 2′ หากผู้ตรวจสอบขั้นตอนที่ 3 จำนวนมากเพียงพอได้ "ลงนาม \(\bot\)" สามารถพิสูจน์ได้ว่า v′ ในกรณีนี้ ถ้ามี จะต้องไม่ซ้ำกันขั้นตอนที่ s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: ขั้นตอน Coin-Fixed-To-0 ของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา เสร็จสิ้นขั้นตอน s −1 ของเขาเอง • ผู้ใช้ ฉันรอเป็นเวลาสูงสุด 2แล.a ขณะรอ ฉันดำเนินการดังนี้ – เงื่อนไขการสิ้นสุด 0: หาก ณ จุดใดมีสตริง v ̸= \(\bot\) และขั้นตอน s′ เช่นนั้น (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 —นั่นคือ ขั้นตอน s′ เป็นขั้นตอน Coin-Fixed-To-0 (b) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 เจ )ข และ (c) ฉันได้รับข้อความที่ถูกต้อง (SIGj(Qr−1), \(\sigma\)r,1 j ) โดยที่ j เป็นอันที่สอง องค์ประกอบของวี จากนั้นฉันก็หยุดรอและสิ้นสุดการดำเนินการตามขั้นตอน s ของเขาเอง (และอันที่จริงคือรอบ r) ทันทีโดยไม่ต้องเผยแพร่สิ่งใด ๆ ในฐานะผู้ตรวจสอบ (r, s) กำหนดให้ H(Br) เป็นลำดับแรก องค์ประกอบของวี; และกำหนดให้ CERT r ของเขาเองเป็นชุดของข้อความ mr,s′−1 เจ ของขั้นตอน (b) ร่วมกับ (SIGj(Qr−1), \(\sigma\)r,1 เจ ).ค – เงื่อนไขการสิ้นสุดที่ 1: หาก ณ จุดใดมีขั้นตอนเช่นนั้น (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 —นั่นคือ Step s′ เป็นขั้นตอน Coin-Fixed-To-1 และ (b’) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 เจ )ง จากนั้น ฉันหยุดรอและสิ้นสุดการดำเนินการขั้นตอน s ของเขาเอง (และในความเป็นจริงของรอบ r) อย่างถูกต้อง ออกไปโดยไม่เผยแพร่สิ่งใด ๆ ในฐานะผู้ตรวจสอบ (r, s) เซต Br = Br ; และกำหนดของเขาเอง CERT r เป็นชุดของข้อความ mr,s′−1 เจ ของขั้นตอนย่อย (b’) – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็หยุดรอและตั้งค่า bi \(\triangleq\)1 – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ )แต่ตนไม่เห็นด้วยกับข้อvแล้วเขาก็หยุด รอและตั้งค่า bi \(\triangleq\)0 – มิฉะนั้น เมื่อเวลา 2แล หมดลง ฉันจะตั้งค่า bi \(\triangleq\)0 – เมื่อตั้งค่า bi แล้ว ฉันจะคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,s – ถ้าฉัน \(\in\)SV r,s ฉันจะคำนวณข้อความ mr,s ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) โดยที่ vi เป็น ค่าที่เขาคำนวณได้ในขั้นตอนที่ 4 จะทำลายคีย์ลับชั่วคราวของเขา skr,s ฉัน แล้ว เผยแพร่นายส ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่อะไรเลย ดังนั้น ระยะเวลารวมสูงสุดตั้งแต่ฉันเริ่มขั้นตอนที่ 1 ของรอบ r อาจเป็น ts \(\triangleq\)ts−1 + 2แล = (2 วินาที −3)แล + Λ bข้อความดังกล่าวจากผู้เล่น j จะถูกนับแม้ว่าผู้เล่น i จะได้รับข้อความจากการลงนาม j สำหรับ 1 ก็ตาม สิ่งที่คล้ายกันสำหรับเงื่อนไขการสิ้นสุด 1 ดังที่แสดงในการวิเคราะห์ นี่คือเพื่อให้แน่ใจว่าผู้ใช้ที่ซื่อสัตย์ทุกคนทราบ CERT r ภายในเวลา lam จากกัน cUser ตอนนี้ฉันรู้จัก H(Br) และการตกแต่งรอบของเขาเองแล้ว เขาแค่ต้องรอจนกว่าบล็อก Br จริง ๆ จะมาถึง แพร่กระจายไปยังเขาซึ่งอาจต้องใช้เวลาเพิ่มเติมอีกระยะหนึ่ง เขายังคงช่วยเผยแพร่ข้อความในฐานะผู้ใช้ทั่วไป แต่ไม่ได้เริ่มต้นการแพร่กระจายใด ๆ ในฐานะผู้ตรวจสอบ (r, s) โดยเฉพาะเขาได้ช่วยเผยแพร่ข้อความทั้งหมดมาใน CERT r ของเขา ซึ่งเพียงพอสำหรับโปรโตคอลของเรา โปรดทราบว่าเขาควรตั้งค่า bi \(\triangleq\)0 สำหรับโปรโตคอล BA ไบนารีด้วย แต่ bi ไม่จำเป็นในกรณีนี้อยู่แล้ว สิ่งที่คล้ายกันสำหรับคำแนะนำทั้งหมดในอนาคต dในกรณีนี้ มันไม่สำคัญว่า vj คืออะไร 65ขั้นตอนที่ s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: ขั้นตอนแบบ Coin-Fixed-To-1 ของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา เสร็จสิ้นขั้นตอน s −1 ของเขาเอง • ผู้ใช้ฉันรอเป็นระยะเวลาสูงสุด 2 \(\gamma\) ระหว่างรอผมก็ทำดังนี้ครับ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับในขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับในขั้นตอน Coin-Fixed-To-0 – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็หยุดรอและตั้งค่า bi \(\triangleq\)0.a – มิฉะนั้น เมื่อเวลา 2แล หมดลง ฉันจะตั้งค่า bi \(\triangleq\)1 – เมื่อตั้งค่า bi แล้ว ฉันจะคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,s – ถ้าฉัน \(\in\)SV r,s ฉันจะคำนวณข้อความ mr,s ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) โดยที่ vi เป็น ค่าที่เขาคำนวณได้ในขั้นตอนที่ 4 จะทำลายคีย์ลับชั่วคราวของเขา skr,s ฉัน แล้ว เผยแพร่นายส ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่อะไรเลย โปรดทราบว่าการรับข้อความที่ถูกต้อง (r, s −1) การลงนามสำหรับ 1 จะหมายถึงการสิ้นสุดเงื่อนไข 1 ขั้นตอนที่ s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: ขั้นตอนการพลิกเหรียญอย่างแท้จริงของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา เสร็จสิ้นขั้นตอนของเขาเอง s −1 • ผู้ใช้ฉันรอเป็นระยะเวลาสูงสุด 2 \(\gamma\) ระหว่างรอผมก็ทำดังนี้ครับ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับในขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับในขั้นตอน Coin-Fixed-To-0 – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็หยุดรอและตั้งค่า bi \(\triangleq\)0 – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็หยุดรอและตั้งค่า bi \(\triangleq\)1 – มิฉะนั้น เมื่อเวลา 2แล หมดลง ให้ SV r,s−1 ฉัน เป็นเซตของ (r, s −1) - ผู้ตรวจสอบจาก ซึ่งเขาได้รับข้อความที่ถูกต้อง Mr,s−1 เจ ฉันตั้งค่า bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 ฉัน H(\(\sigma\)r,s−1 เจ )). – เมื่อตั้งค่า bi แล้ว ฉันจะคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,s – ถ้าฉัน \(\in\)SV r,s ฉันจะคำนวณข้อความ mr,s ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) โดยที่ vi เป็น ค่าที่เขาคำนวณได้ในขั้นตอนที่ 4 จะทำลายคีย์ลับชั่วคราวของเขา skr,s ฉัน แล้ว เผยแพร่นายส ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่อะไรเลย หมายเหตุ. ตามหลักการ ตามที่พิจารณาในหัวข้อย่อย 6.2 โปรโตคอลอาจใช้หลายรายการตามอำเภอใจ ขั้นตอนในบางรอบ หากสิ่งนี้เกิดขึ้น ตามที่กล่าวไว้ ผู้ใช้ i \(\in\)SV r,s ที่มี s > \(\mu\) ได้หมดลงแล้ว

ที่เก็บคีย์ชั่วคราวที่สร้างไว้ล่วงหน้าของเขา และต้องตรวจสอบสิทธิ์ (r, s) ข้อความของเขา ฉัน โดย “น้ำตก” ของกุญแจชั่วคราว ดังนั้นข้อความของฉันจึงยาวขึ้นเล็กน้อยและส่งสัญญาณได้นานขึ้น ข้อความจะใช้เวลาอีกสักหน่อย ดังนั้น หลังจากหลายขั้นตอนของรอบที่กำหนด มูลค่าของ พารามิเตอร์ แล จะเพิ่มขึ้นเล็กน้อยโดยอัตโนมัติ (แต่มันจะกลับคืนสู่แบบเดิม lam อีกครั้งหนึ่ง บล็อกถูกสร้างขึ้นและเริ่มรอบใหม่) การสร้าง Round-r Block ขึ้นมาใหม่โดยผู้ที่ไม่ใช่ผู้ตรวจสอบ คำแนะนำสำหรับผู้ใช้ทุกคน i ในระบบ: ผู้ใช้ i เริ่มรอบ r ของตนเองทันทีที่มี ใบรับรองr−1 • ฉันปฏิบัติตามคำแนะนำของแต่ละขั้นตอนของระเบียบการ มีส่วนร่วมในการเผยแพร่ทั้งหมด ข้อความ แต่ไม่ได้เริ่มต้นการแพร่กระจายใด ๆ ในขั้นตอนหนึ่งหากเขาไม่ใช่ผู้ยืนยันในนั้น • ฉันจบรอบของตัวเองด้วยการเข้าสู่เงื่อนไขการสิ้นสุด 0 หรือเงื่อนไขการสิ้นสุด 1 ในบางข้อ ขั้นตอนด้วย CERT r ที่สอดคล้องกัน • จากนั้น เขาเริ่มรอบ r + 1 ขณะที่รอรับบล็อก Br จริง (เว้นแต่ เขาได้รับมันแล้ว) ซึ่ง hash H(Br) ถูกตรึงไว้โดย CERT r อีกครั้งหาก CERT r ระบุว่า Br = Br ǫ ฉันรู้จัก Br ทันทีที่เขามี CERT r 6.4 การวิเคราะห์ Algorand ′ 2 การวิเคราะห์ของ Algorand ′ 2 ได้มาอย่างง่ายดายจาก Algorand ′ 1. โดยพื้นฐานแล้ว ใน Algorand ′ 2 ด้วย ความน่าจะเป็นอย่างล้นหลาม (a) ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br; ผู้นำคนใหม่ บล็อกจะซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph = h2(1 + h −h2)

Обращение с честными пользователями в режиме оффлайн

Как мы уже говорили, честный пользователь следует всем предписанным ему инструкциям, в том числе и по нахождению в сети. и запускаем протокол. Это не является большой нагрузкой в Algorand, поскольку вычисления и Требуемая пропускная способность от честного пользователя весьма скромна. Тем не менее, отметим, что Algorand может легко модифицировать для работы в двух моделях, в которых честным пользователям разрешено находиться в автономном режиме отличные цифры. Прежде чем обсуждать эти две модели, отметим, что если процент честных игроков составляли 95 %, Algorand все равно можно было запустить, задав все параметры, предполагая, что вместо этого h = 80 %. Соответственно, Algorand продолжит работать корректно, даже если не более половины честных игроков решил уйти в офлайн (действительно, это серьезный случай «прогулов»). Фактически, в любой момент времени, по крайней мере, 80% игроков онлайн будут честными. От постоянного участия к ленивой честности Как мы видели, Algorand ′ 1 и Algorand ′ 2 выбрать параметр ретроспективного просмотра k. Покажем теперь, что выбор k должным образом большим позволяет удалить требование постоянного участия. Это требование обеспечивает важнейшее свойство: а именно: что базовый протокол BA BBA⋆ имеет надлежащее честное большинство. Давайте теперь объясним, насколько ленивы честность обеспечивает альтернативный и привлекательный способ удовлетворить это свойство.

Напомним, что пользователь i является ленивым, но честным, если (1) он следует всем предписанным инструкциям, когда его просят участвовать в протоколе, и (2) его просят участвовать только в протоколе очень редко — например, раз в неделю — с соответствующим предварительным уведомлением и потенциально получая значительные награды, когда он участвует. Чтобы Algorand мог работать с такими плеерами, достаточно «выбрать верификаторы текущий раунд среди пользователей, уже находящихся в системе в гораздо более раннем раунде». Действительно, напомним, что проверяющие для раунда r выбираются из пользователей в раунде r -k, и выбор делается на основе от величины Qr−1. Обратите внимание, что неделя состоит примерно из 10 000 минут, и предположим, что раунд занимает примерно (например, в среднем) 5 минут, поэтому в неделе около 2000 раундов. Предположим что в какой-то момент пользователь хочет спланировать свое время и знать, будет ли он проверяющий на следующей неделе. Протокол теперь выбирает проверяющих для раунда r из пользователей в раунд r-k-2000, а выбор основан на Qr-2001. В раунде R игрок, которого я уже знаю значения Qr−2000, . . . , Qr-1, поскольку они фактически являются частью blockchain. Тогда для каждого М между 1 и 2000, i является проверяющим на шаге s раунда r + M тогда и только тогда, когда .Х СИГи г + М, с, Qr+M−2,001 \(\leq\)р. Таким образом, чтобы проверить, будет ли он вызван для выполнения функций проверяющего в следующих 2000 раундах, я должен вычислить \(\sigma\)M,s я = СИГи г + М, с, Qr+M−2,001 для M = от 1 до 2000 и для каждого шага s и проверьте является ли .H(\(\sigma\)M,s я ) \(\leq\)p для некоторых из них. Если вычисление цифровой подписи занимает миллисекунду, то вся эта операция займет у него около 1 минуты вычислений. Если он не выбран в качестве проверяющего в любом из этих раундов он может выйти из игры с «чистой совестью». Если бы он постоянно участвовал, то в любом случае он, по сути, сделал бы 0 шагов в следующих 2000 раундах! Если вместо этого его выбирают в качестве проверяющего в одном из этих раундов, затем он готовится (например, получая все необходимую информацию), чтобы выступать в качестве честного проверяющего на соответствующем раунде. Действуя таким образом, ленивый, но честный потенциальный проверяющий только упускает возможность участвовать в распространении информации. сообщений. Но распространение сообщений обычно является надежным. При этом плательщики и получатели ожидается, что недавно распространенные платежи будут онлайн, чтобы наблюдать, что происходит с их платежами, и, таким образом, они будут участвовать в распространении сообщений, если они честны.

การจัดการผู้ใช้ Offline ที่ซื่อสัตย์

ดังที่เราได้กล่าวไปแล้ว ผู้ใช้ที่ซื่อสัตย์จะปฏิบัติตามคำแนะนำที่กำหนดไว้ทั้งหมด ซึ่งรวมถึงคำแนะนำในการออนไลน์ด้วย และเรียกใช้โปรโตคอล นี่ไม่ใช่ภาระสำคัญใน Algorand เนื่องจากการคำนวณและ แบนด์วิธที่ต้องการจากผู้ใช้ที่ซื่อสัตย์นั้นค่อนข้างเรียบง่าย แต่ให้เราชี้ให้เห็นว่า Algorand สามารถทำได้ ปรับเปลี่ยนได้ง่ายเพื่อให้ทำงานได้เป็น 2 รูปแบบ โดยที่ผู้ใช้จริงได้รับอนุญาตให้เข้าใช้งาน ตัวเลขที่ดี ก่อนที่จะพูดถึงทั้งสองรุ่นนี้ ให้เราชี้ให้เห็นว่า หากเปอร์เซ็นต์ของผู้เล่นที่ซื่อสัตย์ คือ 95%, Algorand ยังคงสามารถรันได้โดยตั้งค่าพารามิเตอร์ทั้งหมดโดยสมมติว่า h = 80% แทน ดังนั้น Algorand จะยังคงทำงานได้อย่างถูกต้องต่อไป แม้ว่าจะเป็นผู้เล่นที่ซื่อสัตย์เกือบครึ่งหนึ่งก็ตาม เลือกที่จะไป (อันที่จริงเป็นกรณีสำคัญของ "การขาดงาน") ที่จริงแล้ว ณ จุดใดเวลาหนึ่งอย่างน้อยที่สุด 80% ของผู้เล่นออนไลน์จะซื่อสัตย์ จากการมีส่วนร่วมอย่างต่อเนื่องสู่ความซื่อสัตย์ที่ขี้เกียจ อย่างที่เราเห็น Algorand ′ 1 และ Algorand ′ 2 เลือก พารามิเตอร์การมองย้อนกลับ k ตอนนี้ให้เราแสดงให้เห็นว่าการเลือก k ขนาดใหญ่อย่างถูกต้องจะทำให้สามารถลบออกได้ ข้อกำหนดการมีส่วนร่วมอย่างต่อเนื่อง ข้อกำหนดนี้ทำให้มั่นใจได้ว่ามีคุณสมบัติที่สำคัญ: กล่าวคือ ว่าโปรโตคอล BA พื้นฐาน BBA ⋆มีเสียงข้างมากที่ซื่อสัตย์อย่างเหมาะสม ให้เราอธิบายว่าขี้เกียจแค่ไหน ความซื่อสัตย์เป็นอีกทางเลือกหนึ่งและน่าดึงดูดใจในการสร้างความพึงพอใจให้กับสถานที่ให้บริการแห่งนี้

โปรดจำไว้ว่าผู้ใช้ ฉันขี้เกียจแต่ซื่อสัตย์ ถ้า (1) เขาปฏิบัติตามคำแนะนำทั้งหมดที่กำหนดไว้ เมื่อใด เขาถูกขอให้เข้าร่วมในระเบียบการ และ (2) เขาถูกขอให้เข้าร่วมในระเบียบการเท่านั้น น้อยมาก —เช่น สัปดาห์ละครั้ง— โดยต้องแจ้งให้ทราบล่วงหน้าอย่างเหมาะสม และอาจได้รับอย่างมีนัยสำคัญ รางวัลเมื่อเขาเข้าร่วม เพื่อให้ Algorand ทำงานร่วมกับผู้เล่นดังกล่าวได้ ก็เพียงพอที่จะ "เลือกผู้ตรวจสอบของ รอบปัจจุบันในหมู่ผู้ใช้ที่อยู่ในระบบในรอบก่อนหน้านี้มาก” จริงสิ จำไว้เลย ผู้ตรวจสอบสำหรับรอบ r จะถูกเลือกจากผู้ใช้ในรอบ r −k และการเลือกจะทำขึ้นตาม กับปริมาณ Qr−1 โปรดทราบว่าหนึ่งสัปดาห์ประกอบด้วยประมาณ 10,000 นาที และสมมติว่า a รอบใช้เวลาประมาณ (เช่น โดยเฉลี่ย) 5 นาที ดังนั้นในหนึ่งสัปดาห์จึงมีประมาณ 2,000 รอบ สมมติ ในบางช่วงเวลา ผู้ใช้ฉันต้องการวางแผนเวลาของเขาและรู้ว่าเขาจะเป็นอย่างไร ผู้ตรวจสอบในสัปดาห์หน้า โปรโตคอลจะเลือกผู้ตรวจสอบสำหรับรอบ r จากผู้ใช้ใน รอบ r −k −2, 000 และการเลือกจะขึ้นอยู่กับ Qr−2,001 ที่รอบ r ผู้เล่นที่ฉันรู้จักอยู่แล้ว ค่า Qr−2,000, . . , Qr−1 เนื่องจากจริงๆ แล้วพวกมันเป็นส่วนหนึ่งของ blockchain แล้วสำหรับเอ็มแต่ละคน ระหว่าง 1 ถึง 2,000 i เป็นตัวยืนยันในขั้นตอน s ของรอบ r + M ถ้าหาก .H ซิจี r + M, s, Qr+M−2,001 \(\leq\)p ดังนั้นเพื่อจะตรวจสอบว่าจะถูกเรียกมาเป็นผู้ตรวจสอบในอีก 2,000 รอบข้างหน้าหรือไม่ ผมจะต้อง คำนวณ\(\sigma\)M,s ฉัน = เอสไอจี r + M, s, Qr+M−2,001 สำหรับ M = 1 ถึง 2,000 และสำหรับแต่ละขั้นตอน s และตรวจสอบ ไม่ว่าจะเป็น .H(\(\sigma\)M,s ฉัน ) \(\leq\)p สำหรับบางส่วน หากการประมวลผลลายเซ็นดิจิทัลใช้เวลาหนึ่งมิลลิวินาที การดำเนินการทั้งหมดนี้จะใช้เวลาคำนวณประมาณ 1 นาที ถ้าเขาไม่เลือกเป็นผู้ตรวจสอบ ในรอบใดรอบหนึ่งเขาก็สามารถไปแบบออฟไลน์ด้วย "มโนธรรมที่ซื่อสัตย์" มีเขาอย่างต่อเนื่อง เข้าร่วม เขาจะต้องเดิน 0 ก้าวใน 2,000 รอบถัดไปอยู่แล้ว! ถ้าแทน เขาได้รับเลือกให้เป็นผู้ตรวจสอบในรอบใดรอบหนึ่ง จากนั้นเขาก็เตรียมตัวเองให้พร้อม (เช่น โดยการได้รับทั้งหมด ข้อมูลที่จำเป็น) เพื่อทำหน้าที่เป็นผู้ตรวจสอบที่ซื่อสัตย์ในรอบที่เหมาะสม ด้วยการกระทำเช่นนั้น ผู้ตรวจสอบศักยภาพที่เกียจคร้านแต่ซื่อสัตย์ ฉันแค่พลาดการมีส่วนร่วมในการเผยแพร่เท่านั้น ของข้อความ แต่โดยทั่วไปแล้วการเผยแพร่ข้อความจะมีประสิทธิภาพ อีกทั้งผู้ชำระเงินและผู้รับเงินของ การชำระเงินที่เผยแพร่เมื่อเร็วๆ นี้คาดว่าจะออนไลน์เพื่อดูว่าเกิดอะไรขึ้นกับการชำระเงินของพวกเขา และพวกเขาจะมีส่วนร่วมในการเผยแพร่ข้อความหากพวกเขาซื่อสัตย์

Протокол Algorand ′ с честным большинством денег

Теперь мы, наконец, покажем, как заменить предположение о честном большинстве пользователей гораздо более значимое предположение о честном большинстве денег. Основная идея такова (в варианте proof-of-stake) «выбрать пользователя i \(\in\)PKr−k, принадлежащего SV r,s, с весом (т. е. способностью решения), пропорциональным количество денег, принадлежащих i»24. Согласно нашему предположению HMM, мы можем выбрать, будет ли эта сумма принадлежать в раунде r -k. или в (начале) раунда r. Предполагая, что мы не против постоянного участия, мы выбираем последний выбор. (Чтобы исключить постоянное участие, мы бы выбрали первый вариант. Проще говоря, для суммы денег, имевшейся в раунде r −k −2 000.) Есть много способов реализовать эту идею. Самый простой способ - удержать каждую клавишу не более 1 денежной единицы, а затем случайным образом выберите n пользователей i из PKr−k таких, что a(r) я = 1. 24Мы должны сказать PKr-k-2000, чтобы заменить постоянное участие. Для простоты, поскольку можно пожелать потребовать В любом случае постоянное участие мы используем PKr-k, как и раньше, чтобы нести на один параметр меньше.

Следующая простейшая реализация Следующей простейшей реализацией может быть требование, чтобы каждый открытый ключ владел максимальным количеством ключей. денег М при некоторой фиксированной величине М. Стоимость М достаточно мала по сравнению с общей суммой денег М. денег в системе, так что вероятность того, что ключ принадлежит набору проверяющих, состоящему из более чем одного шаг за, скажем, k раундов пренебрежимо мал. Тогда ключ i \(\in\)PKr−k, владеющий суммой денег a(r) я в раунде r выбирается принадлежащим SV r,s, если .Х СИГи г, с, Qr−1 \(\leq\)p \(\cdot\) а(г) я М . И все идет по-прежнему. Более сложная реализация Последняя реализация «заставила богатого участника системы владеть множеством ключей». Альтернативная реализация, описанная ниже, обобщает понятие статуса и рассматривает каждый пользователь i должен состоять из K + 1 копий (i, v), каждая из которых независимо выбирается в качестве проверяющего, и будет владеть собственным эфемерным ключом (pkr,s я,в,скр,с i,v) на шаге s раунда r. Значение K зависит от суммы денег a(r) я принадлежит мне в раунде r. Давайте теперь посмотрим, как работает такая система более подробно. Количество копий Пусть n — целевая ожидаемая мощность каждого набора проверяющих, и пусть a(r) я быть суммой денег, принадлежащей пользователю i в раунде r. Пусть Ar — общая сумма денег, принадлежащих пользователями в PKr−k в раунде r, то есть Ар = Х i\(\varepsilon\)P Кр−k а (р) я. Если я — пользователь в PKr-k, то его копиями будут (i, 1), . . . , (i, K + 1), где К = $ п \(\cdot\) а(г) я Ар % . Пример. Пусть n = 1000, Ar = 109 и a(r) я = 3,7 миллиона. Тогда, К = 103 \(\cdot\) (3,7 \(\cdot\) 106) 109  = ⌊3,7⌋= 3 . Подтверждающие лица и учетные данные Пусть я пользователь в PKr−k с K + 1 копией. Для каждого v = 1, . . . , K, копия (i, v) автоматически принадлежит SV r,s. То есть мои учетные данные \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1), но соответствующее условие принимает вид .H(\(\sigma\)r,s i,v) \(\leq\)1, что всегда правда. Для копии (i, K + 1) для каждого шага s раунда r я проверяю, .Х СИГи (i, K + 1), r, s, Qr−1 \(\leq\)а(г) я н Ар-К.

Если да, то копия (i, K + 1) принадлежит SV r,s. Чтобы доказать это, я распространяю учетные данные \(\sigma\)р,1 i,K+1 = SIGi (i, K + 1), r, s, Qr−1 . Пример. Как и в предыдущем примере, пусть n = 1K, a(r) я = 3,7M, Ar = 1B, а у меня 4 копии: (i, 1), . . . , (я, 4). Тогда первые три копии автоматически принадлежат SV r,s. Для 4-го, концептуально Algorand ′ независимо бросает смещенную монету, вероятность выпадения орла которой равна 0,7. Копировать (i, 4) выбирается тогда и только тогда, когда монета подбрасывается орлом. (Конечно, это предвзятое подбрасывание монеты реализуется путем hash подписания, подписи и сравнения — поскольку мы все это сделал в этой статье, чтобы иметь возможность доказать свой результат.) Бизнес как обычно Объяснив, как отбираются проверяющие и как проверяются их полномочия вычисляется на каждом шаге раунда r, выполнение раунда аналогично уже объясненному.

พิธีสาร Algorand ′ ด้วยเงินส่วนใหญ่ที่ซื่อสัตย์

ในที่สุดเราก็แสดงวิธีแทนที่สมมติฐานผู้ใช้ส่วนใหญ่ที่ซื่อสัตย์ด้วยข้อสันนิษฐานอื่นๆ อีกมากมาย สมมติฐานเงินส่วนใหญ่ที่ซื่อสัตย์ที่มีความหมาย แนวคิดพื้นฐานคือ (ใน proof-of-stake รสชาติ) “เพื่อเลือกผู้ใช้ i \(\in\)PKr−k ให้เป็นของ SV r,s โดยมีน้ำหนัก (เช่น อำนาจการตัดสินใจ) เป็นสัดส่วนกับ จำนวนเงินที่ i เป็นเจ้าของ”24 ตามสมมติฐาน HMM ของเรา เราสามารถเลือกได้ว่าจำนวนนั้นควรเป็นเจ้าของที่รอบ r −k หรือไม่ หรือที่ (จุดเริ่มต้นของ) รอบ r สมมติว่าเราไม่รังเกียจที่จะมีส่วนร่วมอย่างต่อเนื่อง เราก็เลือก ทางเลือกหลัง (หากต้องการยกเลิกการเข้าร่วมอย่างต่อเนื่อง เราจะเลือกใช้ตัวเลือกเดิม พูดได้ดีกว่าสำหรับจำนวนเงินที่มีอยู่ในรอบ r −k −2, 000) มีหลายวิธีในการนำแนวคิดนี้ไปใช้ วิธีที่ง่ายที่สุดคือการกดปุ่มแต่ละปุ่มค้างไว้ มากที่สุด 1 หน่วยของเงิน แล้วเลือกสุ่ม n ผู้ใช้ i จาก PKr−k โดยที่ a(r) ฉัน = 1. 24เราควรพูดว่า PKr−k−2,000 เพื่อที่จะทดแทนการมีส่วนร่วมอย่างต่อเนื่อง เพื่อความเรียบง่ายเนื่องจากใครๆ ก็อาจจะต้องการ การมีส่วนร่วมอย่างต่อเนื่อง เราใช้ PKr−k เหมือนเมื่อก่อน เพื่อให้มีพารามิเตอร์น้อยลงหนึ่งตัว

การใช้งานที่ง่ายที่สุดครั้งต่อไป การใช้งานที่ง่ายที่สุดถัดไปอาจเป็นการเรียกร้องให้แต่ละคีย์สาธารณะเป็นเจ้าของจำนวนเงินสูงสุด ของเงิน M สำหรับ M คงที่บางส่วน ค่า M นั้นน้อยพอเมื่อเทียบกับจำนวนทั้งหมด เงินในระบบ โดยความน่าจะเป็นที่คีย์จะเป็นของชุดผู้ตรวจสอบมากกว่าหนึ่งชุด ก้าวเข้ามา —พูด— k รอบนั้นน้อยมาก จากนั้น กุญแจ i \(\in\)PKr−k ซึ่งมีเงินอยู่จำนวนหนึ่ง a(r) ฉัน ในรอบ r ถูกเลือกให้เป็นของ SV r,s if .H ซิจี r, s, Qr−1 \(\leq\)p \(\cdot\) ก(r) ฉัน ม . และทุกอย่างดำเนินไปดังเดิม การใช้งานที่ซับซ้อนมากขึ้น การใช้งานครั้งล่าสุด "บังคับให้ผู้เข้าร่วมที่มีฐานะร่ำรวยในระบบต้องเป็นเจ้าของคีย์จำนวนมาก" การนำไปปฏิบัติทางเลือกที่อธิบายไว้ด้านล่างนี้เป็นการสรุปแนวคิดเกี่ยวกับสถานะและพิจารณา ผู้ใช้แต่ละคน i จะประกอบด้วยสำเนา K + 1 ชุด (i, v) ซึ่งแต่ละชุดจะถูกเลือกอย่างอิสระให้เป็นผู้ตรวจสอบ และจะเป็นเจ้าของกุญแจชั่วคราวของเขาเอง (pkr,s ฉัน,v,skr,s i,v) ในขั้น s ของรอบ r ค่า K ขึ้นอยู่กับ กับจำนวนเงิน a(r) ฉัน ฉันเป็นเจ้าของในรอบ r ตอนนี้เรามาดูกันว่าระบบดังกล่าวทำงานอย่างไรในรายละเอียดมากขึ้น จำนวนสำเนา ให้ n เป็นจำนวนเชิงการนับที่คาดไว้ที่เป็นเป้าหมายของชุดตัวตรวจสอบแต่ละชุด และให้ a(r) ฉัน เป็นจำนวนเงินที่ผู้ใช้ i เป็นเจ้าของในรอบ r ให้ Ar เป็นจำนวนเงินทั้งหมดที่มี โดยผู้ใช้ใน PKr−k ที่รอบ r นั่นคือ อาร์= เอ็กซ์ ฉัน\(\in\)P Kr−k ก(ร) ฉัน หากฉันเป็นผู้ใช้ใน PKr−k สำเนาของฉันคือ (i, 1) . . , (i, K + 1) โดยที่ เค = $ n \(\cdot\) ก(r) ฉัน อาร์ % . ตัวอย่าง. ให้ n = 1, 000, Ar = 109 และ a(r) ฉัน = 3.7 ล้าน. จากนั้น เค = 103 \(\cdot\) (3.7 \(\cdot\) 106) 109  = ⌊3.7⌋= 3 . ผู้ตรวจสอบและข้อมูลรับรอง ให้ฉันเป็นผู้ใช้ใน PKr−k ด้วยสำเนา K + 1 สำหรับแต่ละ v = 1, . . , K, copy (i, v) เป็นของ SV r,s โดยอัตโนมัติ นั่นคือข้อมูลประจำตัวของฉันคือ \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1) แต่เงื่อนไขที่สอดคล้องกันกลายเป็น .H(\(\sigma\)r,s i,v) \(\leq\)1 ซึ่งก็คือ จริงเสมอ สำหรับการคัดลอก (i, K + 1) สำหรับแต่ละขั้นตอนของรอบ r ฉันจะตรวจสอบว่า .H ซิจี (i, K + 1), r, s, Qr−1 \(\leq\)a(r) ฉัน n อาร์-เค

ถ้าเป็นเช่นนั้น สำเนา (i, K + 1) เป็นของ SV r,s เพื่อพิสูจน์ ฉันจึงเผยแพร่หนังสือรับรอง ซิร,1 ผม,K+1 = SIGI (i, K + 1), r, s, Qr−1 . ตัวอย่าง. ดังตัวอย่างที่แล้ว ให้ n = 1K, a(r) ฉัน = 3.7M, Ar = 1B และฉันมี 4 สำเนา: (i, 1), . . . , (ฉัน, 4) จากนั้น 3 สำเนาแรกจะเป็นของ SV r,s โดยอัตโนมัติ สำหรับอันที่ 4 นั้น ตามแนวคิด Algorand ′ หมุนเหรียญเอนเอียงอย่างอิสระ ซึ่งความน่าจะเป็นของหัวคือ 0.7 คัดลอก (i, 4) จะถูกเลือกก็ต่อเมื่อการโยนเหรียญเป็นแบบหัวเท่านั้น (แน่นอนว่าการพลิกเหรียญแบบเอนเอียงนี้ถูกนำไปใช้โดย hashing ลงนาม และเปรียบเทียบ — ในขณะที่เรา ได้กระทำมาโดยตลอดในบทความนี้ เพื่อให้ข้าพเจ้าสามารถพิสูจน์ผลของเขาได้) ดำเนินธุรกิจตามปกติ ต้องอธิบายว่าผู้ตรวจสอบได้รับการคัดเลือกอย่างไรและหนังสือรับรองของพวกเขาเป็นอย่างไร เมื่อคำนวณในแต่ละขั้นตอนของรอบ r การดำเนินการของรอบจะคล้ายกับที่อธิบายไว้แล้ว

Обработка форков

Уменьшив вероятность вилок до 10−12 или 10−18, обрабатывать их в малой вероятности того, что они произойдут. Однако Algorand также может использовать различные вилки. процедуры урегулирования, с подтверждением работы или без него. Один из возможных способов проинструктировать пользователей о разрешении вилок заключается в следующем: • Следуйте самой длинной цепочке, если пользователь видит несколько цепочек. • Если существует более одной самой длинной цепочки, следует следовать той, у которой в конце есть непустой блок. Если все они имеют пустые блоки в конце, считайте их предпоследними блоками. • Если существует более одной самой длинной цепочки с непустыми блоками на конце, скажем, что цепочки длины r, следуйте за тем, чей лидер блока r имеет наименьшие полномочия. Если есть связи, следовать за тем, чей блок r имеет наименьшее значение hash. Если связи еще остались, следуйте тот, чей блок r лексикографически упорядочен первым.

การจัดการ Fork

เมื่อลดความน่าจะเป็นของส้อมลงเหลือ 10−12 หรือ 10−18 ก็ไม่จำเป็นต้องจัดการในทางปฏิบัติ ในโอกาสอันห่างไกลที่จะเกิดขึ้น อย่างไรก็ตาม Algorand สามารถใช้ fork ได้หลากหลาย ขั้นตอนการแก้ปัญหาโดยมีหรือไม่มีหลักฐานการทำงาน วิธีหนึ่งที่เป็นไปได้ในการแนะนำให้ผู้ใช้แก้ไขส้อมมีดังนี้: • เดินตามสายโซ่ที่ยาวที่สุดหากผู้ใช้เห็นสายโซ่หลายเส้น • หากมีโซ่ที่ยาวที่สุดมากกว่าหนึ่งเส้น ให้ต่อสายโซ่ที่มีบล็อกไม่ว่างที่ส่วนท้าย ถ้า ทั้งหมดมีบล็อกว่างในตอนท้าย ลองพิจารณาบล็อกที่สองสุดท้าย • หากมีโซ่ที่ยาวที่สุดมากกว่าหนึ่งเส้นและมีบล็อกที่ไม่ว่างที่ส่วนท้าย แสดงว่าโซ่นั้นยาวที่สุด ที่มีความยาว r ให้ทำตามอันที่ผู้นำของบล็อก r มีหนังสือรับรองน้อยที่สุด หากมีความผูกพัน ติดตามอันที่บล็อก r มีค่า hash น้อยที่สุด หากยังมีความผูกพันติดตาม. บล็อก r ถูกเรียงลำดับตามพจนานุกรมคำแรก

Обработка сетевых разделов

Как уже говорилось, мы предполагаем, что время распространения сообщений среди всех пользователей в сети ограничено сверху значениями \(\lambda\) и Λ. Это не слишком сильное предположение, поскольку современный Интернет является быстрым и надежным, и фактические значения этих параметров вполне разумны. Здесь отметим, что Algorand ′ 2 продолжает работать, даже если Интернет иногда разделяется на две части. Тот случай, когда Интернет разделен более чем на две части аналогично. 10.1 Физические разделы Прежде всего, перегородка может быть вызвана физическими причинами. Например, сильное землетрясение может в конечном итоге полностью разорвёт связь между Европой и Америкой. В этом случае злонамеренные пользователи также разделены, и между двумя частями нет связи. Таким образом

будет два Противника: один для части 1, другой для части 2. Каждый Противник по-прежнему пытается нарушить протокол в своей части. Предположим, что раздел происходит в середине раунда r. Тогда каждый пользователь по-прежнему выбирается в качестве верификатор на основе PKr−k с той же вероятностью, что и раньше. Пусть HSV r,s я и MSV r,s я соответственно — множество честных и злонамеренных проверяющих на шаге s в части i \(\in\) {1, 2}. У нас есть |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. Обратите внимание, что |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|МСВ г,с| < 2tH с подавляющей вероятностью. Если какая-то часть i имеет |HSV r,s я | + |MSV r,s я | \(\geq\)tH с немалой вероятностью, например, 1%, то вероятность того, что |HSV r,s 3−i| + |MSV r,s 3−i| \(\geq\)tH очень низкое, например, 10–16, когда F = 10–18. В этом случае мы можем с таким же успехом рассматривать меньшую часть как отключенную, потому что в ней не будет достаточного количества верификаторов. эта часть предназначена для генерации подписей для сертификации блока. Рассмотрим большую часть, скажем, часть 1, не ограничивая общности. Хотя |HSV r,s| < tH с пренебрежимо малой вероятностью на каждом шаге s, когда сеть разделена, |HSV r,s 1 | может быть меньше, чем tH с некоторой немалой вероятностью. В этом случае Противник может с некоторым другая, немалая вероятность, приведет к разветвлению двоичного протокола BA в раунде r с непустым блоком Br и пустым блоком Br. ƫ оба имеют действительные подписи.25 Например, в Шаги Coin-Fixed-To-0 s, все верификаторы в HSV r,s 1 подписались для бита 0 и H(Br) и распространили их сообщения. Все верификаторы в MSV r,s 1 также подписали 0 и H(Br), но свои сообщения воздержали. Потому что |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tH, в системе достаточно подписей для сертификации Br. Однако, поскольку злонамеренные верификаторы скрыли свои подписи, пользователи вводят шаг s + 1, который является шагом Coin-Fixed-To1. Поскольку |HSV r,s 1 | < tH из-за разделения, верификаторы в HSV r,s+1 1 не видел этого подписи для бита 0, и все они подписаны для бита 1. Все верификаторы в MSV r,s+1 1 сделал то же самое. Потому что |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH, в системе достаточно подписей для сертификации Br й. Противник затем создает форк, освобождая подписи MSV r,s 1 для 0 и H(Br). Соответственно, будет два Qr, определяемых соответствующими блоками раунда r. Однако, вилка не будет продолжаться, и в раунде r + 1 может вырасти только одна из двух ветвей. Дополнительные инструкции для Algorand ′ 2. При виде непустого блока Br и пустого блок Бр ϫ , следует за непустым номером (и определяемым им Qr). Действительно, поручив пользователям использовать непустой блок в протоколе, если большой количество честных пользователей в PKr+1−k понимают, что в начале раунда r +1 происходит разветвление, тогда у пустого блока не будет достаточно подписчиков, и он не будет расти. Предположим, что противнику удастся разделите честных пользователей так, чтобы некоторые честные пользователи видели Br (и, возможно, Br ǫ), а некоторые видят только Бр й. Потому что Противник не может сказать, какой из них будет проверяющим после Br, а какой будет проверяющим после Br ϫ, честные пользователи распределяются случайным образом, и каждый из них по-прежнему становится проверяющим (либо по отношению к Br, либо по отношению к Br ϫ) на шаге s > 1 с вероятностью п. У злоумышленников каждый из них может иметь два шанса стать проверяющим, один с Бр и другой с Бр ϫ, каждый с вероятностью p независимо. Пусть HSV r+1,s 1;Бр — множество честных проверяющих на шагах s раунда r+1 после Br. Другие обозначения например HSV r+1,s 1;Br , MSV r+1,s 1;Бр и MSV r+1,s 1; Брю определяются аналогично. По Чернову легко 25Иметь вилку с двумя непустыми блоками невозможно ни с перегородками, ни без них, кроме как с пренебрежимо малыми вероятность.увидеть это с подавляющей вероятностью, |HSV r+1,s 1;Бр | + |HSV r+1,s 1;Бру | + |MSV r+1,s 1;Бр | + |MSV r+1,s 1;Бру | < 2tH. Соответственно, две ветви не могут обе иметь правильные подписи, удостоверяющие блок для раунда. r + 1 на том же шаге s. Более того, поскольку вероятности выбора для двух шагов s и s′ равны то же самое, и выборы независимы, также с подавляющей вероятностью |HSV r+1,s 1;Бр | + |MSV r+1,s 1;Бр | + |HSV r+1,s' 1; Брю | + |MSV r+1,s' 1; Брю | < 2tH, для любых двух шагов s и s'. Когда F = 10−18, по объединению, пока Противник не может разделять честных пользователей на длительное время (скажем, 104 шага, это более 55 часов при \(\lambda\) = 10 секунд26), с высокой вероятностью (скажем, 1−10−10) не более одной ветки будет иметь tH правильных сигнатур. для подтверждения блока в раунде r + 1. Наконец, если в физическом разделе созданы две части примерно одинакового размера, то вероятность того, что |HSV r,s я | + |MSV r,s я | \(\geq\)tH мало для каждой части i. После аналогичного анализа даже если Противнику удастся создать форк с некоторой немалой вероятностью в каждой части в раунде r не более одной из четырех ветвей может вырасти в раунде r + 1. 10.2 Состязательный раздел Во-вторых, перегородка может быть вызвана Противником, поэтому сообщения распространялись честными пользователями в одной части, не дойдет напрямую до честных пользователей в другой части, но Противник может пересылать сообщения между двумя частями. И все же однажды сообщение от одного часть доходит до честного пользователя в другой части, в последней она будет распространяться как обычно. Если Злоумышленник готов потратить много денег, вполне возможно, что он сможет взломать Интернет и разделите его на некоторое время вот так. Анализ аналогичен анализу большей части физического раздела выше (меньшая часть часть можно рассматривать как имеющую население 0): Противник может создать вилку и каждый честный пользователь видит только одну из ветвей, но может вырасти не более одной ветки. 10.3 Сетевые разделы в сумме Несмотря на то, что сетевые разделы могут возникнуть, а под разделами может произойти ветвление за один раунд, Нет никакой затяжной двусмысленности: вилка очень недолговечна и фактически длится не более одного раунда. В все части раздела, кроме не более чем одной, пользователи не могут создать новый блок и, следовательно, (а) понимать, что в сети есть раздел, и (б) никогда не полагаться на блоки, которые «исчезнут». Благодарности Прежде всего мы хотели бы выразить признательность Сергею Горбунову, соавтору упомянутой системы Democoin. Самая искренняя благодарность Морису Херлихи за множество поучительных обсуждений и за указание что конвейеризация улучшит производительность Algorand, а также значительно улучшит 26Обратите внимание, что пользователь завершает шаг s, не дожидаясь времени 2\(\lambda\), только если он увидел хотя бы tH подписей для то же сообщение. Если подписей недостаточно, каждый шаг будет длиться 2\(\lambda\).

изложение более ранней версии этой статьи. Большое спасибо Серджио Райсбауму за его комментарии по поводу более ранняя версия этой статьи. Большое спасибо Виноду Вайкунтанатану за несколько глубоких обсуждений. и идеи. Большое спасибо Йосси Гиладу, Ротему Хамо, Георгиосу Влахосу и Николаю Зельдовичу. за начало проверки этих идей, а также за множество полезных комментариев и обсуждений. Сильвио Микали хотел бы лично поблагодарить Рона Ривеста за бесчисленные обсуждения и рекомендации. в криптографических исследованиях на протяжении более трех десятилетий за соавторство упомянутой системы микроплатежей. это послужило вдохновением для создания одного из механизмов выбора верификатора Algorand. Мы надеемся вывести эту технологию на новый уровень. Тем временем путешествие и общение это очень весело, за что мы очень благодарны.

การจัดการพาร์ติชันเครือข่าย

ดังที่กล่าวไว้ เราถือว่าเวลาการแพร่กระจายของข้อความระหว่างผู้ใช้ทั้งหมดในเครือข่ายนั้นมีขอบเขตบนด้วย แลมบ์ดา และ Λ นี่ไม่ใช่สมมติฐานที่ชัดเจน เนื่องจากอินเทอร์เน็ตในปัจจุบันมีความรวดเร็วและแข็งแกร่ง และ ค่าที่แท้จริงของพารามิเตอร์เหล่านี้ค่อนข้างสมเหตุสมผล ที่นี่ให้เราชี้ให้เห็นว่า Algorand ′ 2 ยังคงทำงานต่อไปแม้ว่าอินเทอร์เน็ตจะถูกแบ่งพาร์ติชันออกเป็นสองส่วนเป็นครั้งคราวก็ตาม กรณีเมื่อ อินเทอร์เน็ตจะถูกแบ่งพาร์ติชันมากกว่าสองส่วนคล้ายคลึงกัน 10.1 พาร์ติชันทางกายภาพ ประการแรก พาร์ติชันอาจเกิดจากสาเหตุทางกายภาพ เช่น แผ่นดินไหวใหญ่อาจเกิดขึ้น ท้ายที่สุดก็ทำลายความสัมพันธ์ระหว่างยุโรปและอเมริกาโดยสิ้นเชิง ในกรณีนี้ ผู้ใช้ที่เป็นอันตรายจะถูกแบ่งพาร์ติชันด้วย และไม่มีการสื่อสารระหว่างทั้งสองส่วน ดังนั้น

จะมีศัตรูอยู่สองคน คนหนึ่งสำหรับส่วนที่ 1 และอีกคนหนึ่งสำหรับส่วนที่ 2 ฝ่ายตรงข้ามแต่ละคนยังคงพยายาม ทำลายโปรโตคอลในส่วนของตัวเอง สมมติว่าพาร์ติชันเกิดขึ้นในช่วงกลางของรอบ r จากนั้นผู้ใช้แต่ละคนยังคงถูกเลือกเป็น ผู้ตรวจสอบขึ้นอยู่กับ PKr−k โดยมีความน่าจะเป็นเท่าเดิม ให้ HSV r,s ฉัน และ MSV r, s ฉัน ตามลำดับ เป็นกลุ่มของผู้ตรวจสอบที่ซื่อสัตย์และประสงค์ร้ายในขั้นตอนในส่วนที่ i \(\in\){1, 2} เรามี |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. โปรดทราบว่า |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| < 2tH ด้วยความน่าจะเป็นอย่างล้นหลาม หากบางส่วนฉันมี |HSV r,s ฉัน | + |MSV r,s ฉัน | \(\geq\)tH ที่มีความน่าจะเป็นที่ไม่มีนัยสำคัญ เช่น 1% จากนั้น ความน่าจะเป็นที่ |HSV r,s 3−ฉัน| + |MSV r,s 3−ฉัน| \(\geq\)tH ต่ำมาก เช่น 10−16 เมื่อ F = 10−18 ในกรณีนี้ เราอาจถือว่าส่วนที่เล็กกว่านั้นหายไปเช่นกัน เพราะจะไม่มีผู้ตรวจสอบเพียงพอใน ส่วนนี้จะสร้างลายเซ็นเพื่อรับรองบล็อก ให้เราพิจารณาส่วนที่ใหญ่กว่า เช่น ตอนที่ 1 โดยไม่สูญเสียความทั่วไป แม้ว่า |HSV r,s| < มีความน่าจะเป็นเล็กน้อยในแต่ละขั้นตอน เมื่อเครือข่ายถูกแบ่งพาร์ติชัน |HSV r,s 1 | อาจจะ น้อยกว่าด้วยความน่าจะเป็นที่ไม่สามารถละเลยได้ ในกรณีนี้ปฏิปักษ์อาจทำได้บ้าง ความน่าจะเป็นอื่นๆ ที่ไม่สามารถละเลยได้ บังคับให้โปรโตคอลไบนารี่ BA เข้าสู่ทางแยกในรอบ r โดยมีบล็อกที่ไม่มีช่องว่าง Br และบล็อกว่าง Br ǫ ทั้งสองมีลายเซ็นที่ถูกต้อง25 เช่น ใน ขั้นตอน Coin-Fixed-To-0 s ผู้ตรวจสอบทั้งหมดใน HSV r, s 1 ลงนามในบิต 0 และ H(Br) และเผยแพร่พวกมัน ข้อความ ผู้ตรวจสอบทั้งหมดใน MSV r,s 1 ลงนาม 0 และ H(Br) ด้วย แต่ระงับข้อความของพวกเขา เพราะว่า |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tHระบบมีลายเซ็นเพียงพอที่จะรับรอง Br. อย่างไรก็ตาม เนื่องจาก ผู้ตรวจสอบที่เป็นอันตรายระงับลายเซ็น ผู้ใช้เข้าสู่ขั้นตอน s + 1 ซึ่งเป็นขั้นตอน Coin-Fixed-To1 เพราะ |HSV r,s 1 | < เนื่องจากพาร์ติชัน ตัวตรวจสอบใน HSV r,s+1 1 ไม่เห็นท่าน ลายเซ็นสำหรับบิต 0 และทั้งหมดลงนามในบิต 1 ผู้ตรวจสอบทั้งหมดใน MSV r,s+1 1 ทำเช่นเดียวกัน เพราะว่า |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tHระบบมีลายเซ็นเพียงพอที่จะรับรอง Br ī. ศัตรู จากนั้นสร้างทางแยกโดยปล่อยลายเซ็นของ MSV r,s 1 สำหรับ 0 และ H(Br) ดังนั้น จะมี Qr สองตัว ซึ่งกำหนดโดยบล็อกที่สอดคล้องกันของรอบ r อย่างไรก็ตาม ทางแยกจะไม่ดำเนินต่อไปและมีเพียงหนึ่งในสองกิ่งเท่านั้นที่สามารถเติบโตได้ในรอบ r + 1 คำแนะนำเพิ่มเติมสำหรับ Algorand ′ 2. เมื่อเห็นบล็อกที่ไม่ว่าง Br และบล็อกว่าง บล็อกเบอร์ ǫ ทำตามอันที่ไม่ว่างเปล่า (และ Qr กำหนดโดยมัน) โดยแนะนำให้ผู้ใช้ใช้บล็อกที่ไม่ว่างเปล่าในโปรโตคอล หากมีขนาดใหญ่ จำนวนผู้ใช้ที่ซื่อสัตย์ใน PKr+1−k ตระหนักว่ามีทางแยกที่จุดเริ่มต้นของรอบ r +1 จากนั้น บล็อกว่างจะมีผู้ติดตามไม่เพียงพอและจะไม่เติบโต สมมติว่าฝ่ายตรงข้ามจัดการได้ แบ่งพาร์ติชันผู้ใช้ที่ซื่อสัตย์เพื่อให้ผู้ใช้ที่ซื่อสัตย์บางคนเห็น Br (และบางทีอาจ Br ǫ) และบางคนก็มองเห็นเท่านั้น บ ī. เพราะปฏิปักษ์ไม่สามารถบอกได้ว่าคนใดในพวกเขาจะเป็นผู้ยืนยันที่ติดตาม Br และคนไหน จะเป็นผู้ตรวจสอบติดตาม Br ǫ ผู้ใช้ที่ซื่อสัตย์จะถูกแบ่งพาร์ติชันแบบสุ่มและแต่ละคนยังคงอยู่ กลายเป็นผู้ยืนยัน (ไม่ว่าจะเกี่ยวกับ Br หรือเกี่ยวกับ Br ǫ) ในขั้นที่ s > 1 ด้วยความน่าจะเป็น พี สำหรับผู้ใช้ที่เป็นอันตราย แต่ละคนอาจมีโอกาสสองครั้งในการเป็นผู้ยืนยัน Br และอีกอันกับ Br ǫ แต่ละอันมีความน่าจะเป็น p เป็นอิสระต่อกัน ให้ HSV r+1,s 1;บรา เป็นกลุ่มผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอนที่ s ของรอบ r+1 ตาม Br. สัญกรณ์อื่น ๆ เช่น HSV r+1,s 1;Brū , MSV r+1,s 1;บรา และ MSV r+1,s 1;บริ้ มีการกำหนดไว้เช่นเดียวกัน โดย Chernoffbound มันเป็นเรื่องง่าย 25การมีทางแยกที่มีสองบล็อกที่ไม่ว่างนั้นเป็นไปไม่ได้โดยมีหรือไม่มีพาร์ติชั่น ยกเว้นที่มีเล็กน้อย ความน่าจะเป็นเพื่อดูว่ามีความเป็นไปได้อย่างล้นหลาม |HSV r+1,s 1;br | + |HSV r+1,s 1;บรา | + |MSV r+1,s 1;br | + |MSV r+1,s 1;บรา | < 2tH ดังนั้นทั้งสองสาขาจึงไม่สามารถมีลายเซ็นที่ถูกต้องรับรองบล็อกสำหรับรอบได้ r + 1 ในขั้นตอนเดียวกัน s ยิ่งไปกว่านั้น เนื่องจากความน่าจะเป็นในการเลือกสำหรับสองขั้นตอน s และ s′ คือ เหมือนกันและการเลือกมีความเป็นอิสระ อีกทั้งยังมีความน่าจะเป็นอย่างล้นหลามอีกด้วย |HSV r+1,s 1;br | + |MSV r+1,s 1;br | + |HSV r+1,s′ 1;บริ้ | + |MSV r+1,s′ 1;บริ้ | <2thH, สำหรับสองขั้นตอนใดๆ s และ s′ เมื่อ F = 10−18 โดยผูกมัด ตราบเท่าที่ปฏิปักษ์ทำไม่ได้ แบ่งพาร์ติชั่นผู้ใช้ที่ซื่อสัตย์เป็นเวลานาน (เช่น 104 ขั้นตอนซึ่งมากกว่า 55 ชั่วโมงโดยที่ แล = 10 วินาทีที่ 26) ซึ่งมีความเป็นไปได้สูง (เช่น 1−10−10) มากที่สุดหนึ่งสาขาจะมีลายเซ็นที่ถูกต้อง เพื่อรับรองบล็อกในรอบ r + 1 ท้ายที่สุด หากฟิสิคัลพาร์ติชันสร้างสองส่วนที่มีขนาดเท่ากันโดยประมาณ แล้ว ความน่าจะเป็นที่ |HSV r,s ฉัน | + |MSV r,s ฉัน | \(\geq\)tH มีขนาดเล็กสำหรับแต่ละส่วน i หลังจากการวิเคราะห์ที่คล้ายกัน แม้ว่าฝ่ายตรงข้ามจะสามารถสร้างทางแยกที่มีความน่าจะเป็นที่ไม่สามารถละเลยได้ในแต่ละส่วนก็ตาม สำหรับรอบ r กิ่งก้านสูงสุด 1 ใน 4 ต้นอาจเติบโตได้ในรอบ r + 1 10.2 พาร์ทิชันฝ่ายตรงข้าม ประการที่สอง พาร์ติชันอาจเกิดจากฝ่ายตรงข้าม ดังนั้นข้อความจึงแพร่กระจาย โดยผู้ใช้ที่ซื่อสัตย์ส่วนหนึ่งจะไม่เข้าถึงผู้ใช้ที่ซื่อสัตย์ในอีกส่วนหนึ่งโดยตรงแต่ ฝ่ายตรงข้ามสามารถส่งต่อข้อความระหว่างทั้งสองส่วนได้ ถึงกระนั้นก็มีข้อความจากคนหนึ่ง ส่วนหนึ่งจะเข้าถึงผู้ใช้ที่ซื่อสัตย์ ส่วนอีกส่วนหนึ่งก็จะเผยแพร่ในส่วนหลังตามปกติ ถ้า ฝ่ายตรงข้ามยินดีจ่ายเงินเป็นจำนวนมาก เป็นไปได้ว่าเขาอาจจะสามารถแฮ็กข้อมูลได้ อินเตอร์เน็ตแล้วแบ่งพาร์ติชั่นแบบนี้สักพัก การวิเคราะห์จะคล้ายคลึงกับการวิเคราะห์ส่วนที่ใหญ่กว่าในฟิสิคัลพาร์ติชันด้านบน (การวิเคราะห์ที่เล็กกว่า ส่วนหนึ่งถือได้ว่ามีประชากร 0): ฝ่ายตรงข้ามอาจสร้างทางแยกและได้ ผู้ใช้ที่ซื่อสัตย์แต่ละคนจะเห็นเพียงสาขาเดียว แต่อาจมีสาขาเดียวที่สามารถเติบโตได้ 10.3 พาร์ติชันเครือข่ายในผลรวม แม้ว่าพาร์ติชั่นเครือข่ายสามารถเกิดขึ้นได้และทางแยกในรอบเดียวอาจเกิดขึ้นภายใต้พาร์ติชั่นที่นั่น ไม่มีความกำกวมที่ยืดเยื้อ: ทางแยกมีอายุสั้นมากและในความเป็นจริงจะอยู่ได้ไม่เกินรอบเดียว ใน ทุกส่วนของพาร์ติชั่นยกเว้นส่วนใหญ่ ผู้ใช้ไม่สามารถสร้างบล็อกใหม่ได้ ดังนั้น (a) ตระหนักว่ามีพาร์ติชันในเครือข่ายและ (b) ไม่เคยพึ่งพาบล็อกที่จะ "หายไป" รับทราบ ก่อนอื่นเราขอขอบคุณ Sergey Gorbunov ผู้ร่วมเขียนระบบ Democoin ที่อ้างถึง ขอขอบคุณอย่างจริงใจที่สุดต่อ Maurice Herlihy สำหรับการอภิปรายที่ให้ความรู้มากมายสำหรับการชี้แนะ การวางท่อจะปรับปรุงประสิทธิภาพการรับส่งข้อมูลของ Algorand และสำหรับการปรับปรุงอย่างมาก 26โปรดทราบว่าผู้ใช้เสร็จสิ้นขั้นตอนหนึ่งโดยไม่ต้องรอเป็นเวลา2\(\gamma\)เฉพาะในกรณีที่เขาเห็นลายเซ็นของ ข้อความเดียวกัน เมื่อมีลายเซ็นไม่เพียงพอ แต่ละขั้นตอนจะคงอยู่เป็นเวลา 2แล

การนำเสนอบทความฉบับก่อนหน้านี้ ขอบคุณมากสำหรับ Sergio Rajsbaum สำหรับความคิดเห็นของเขาเกี่ยวกับ เอกสารฉบับก่อนหน้านี้ ขอขอบคุณ Vinod Vaikuntanathan สำหรับการพูดคุยอย่างลึกซึ้งหลายครั้ง และข้อมูลเชิงลึก ขอขอบคุณ Yossi Gilad, Rotem Hamo, Georgios Vlachos และ Nickolai Zeldovich สำหรับการเริ่มต้นทดสอบแนวคิดเหล่านี้ และสำหรับความคิดเห็นและการอภิปรายที่เป็นประโยชน์มากมาย Silvio Micali ขอขอบคุณ Ron Rivest เป็นการส่วนตัวสำหรับการสนทนาและคำแนะนำมากมาย ในการวิจัยด้านการเข้ารหัสมานานกว่า 3 ทศวรรษ สำหรับการเขียนร่วมระบบการชำระเงินแบบไมโครที่อ้างถึง ที่เป็นแรงบันดาลใจให้เกิดกลไกการคัดเลือกผู้ตรวจสอบของ Algorand เราหวังว่าจะนำเทคโนโลยีนี้ไปสู่อีกระดับหนึ่ง ขณะเดียวกันการเดินทางและมิตรภาพ สนุกมากซึ่งเรารู้สึกขอบคุณมาก