Algorand: масштабирование византийских соглашений для криптовалют

Por Jing Chen and Silvio Micali · 2017

Resumo

Um livro-razão público é uma sequência de dados inviolável que pode ser lida e aumentada por qualquer pessoa. Os livros-razão públicos têm usos inúmeros e atraentes. Eles podem proteger, à vista de todos, todos os tipos de transações —como títulos, vendas e pagamentos— na ordem exata em que ocorrem. Os livros-razão públicos não apenas reduzem a corrupção, mas também permitem aplicações muito sofisticadas — como criptomoedas e smart contracts. Eles irão revolucionar a forma como uma sociedade democrática opera. No entanto, tal como estão actualmente implementados, eles têm uma fraca escalabilidade e não conseguem atingir o seu potencial. Algorand é uma forma verdadeiramente democrática e eficiente de implementar um livro-razão público. Ao contrário do anterior implementações baseadas em prova de trabalho, requer uma quantidade insignificante de computação e gera um histórico de transações que não será “fork” com probabilidade extremamente alta. Algorand é baseado em um acordo bizantino de transmissão de mensagens (novo e super rápido). Para ser mais concreto, descreveremos Algorand apenas como uma plataforma monetária.

Аннотация

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

Introdução

O dinheiro está se tornando cada vez mais virtual. Estima-se que cerca de 80% dos Estados Unidos dólares hoje existem apenas como entradas contábeis [5]. Outros instrumentos financeiros estão a seguir o exemplo. Num mundo ideal, em que pudéssemos contar com uma entidade central de confiança universal, imunes a todos os ataques cibernéticos possíveis, o dinheiro e outras transações financeiras poderiam ser exclusivamente eletrónicas. Infelizmente, não vivemos num mundo assim. Conseqüentemente, criptomoedas descentralizadas, como como Bitcoin [29], e sistemas “smart contract”, como Ethereum, foram propostos [4]. Em o coração desses sistemas é um livro-razão compartilhado que registra de forma confiável uma sequência de transações, ∗Esta é a versão mais formal (e assíncrona) do artigo ArXiv do segundo autor [24], um artigo em si baseado no de Gorbunov e Micali [18]. As tecnologias de Algorand são objeto do seguinte pedidos de patente: US62/117.138 US62/120.916 US62/142.318 US62/218.817 US62/314.601 PCT/US2016/018300 US62/326.865 62/331.654 US62/333.340 US62/343.369 US62/344.667 US62/346.775 US62/351.011 US62/653.482 US62/352.195 US62/363.970 US62/369.447 US62/378.753 US62/383.299 US62/394.091 US62/400.361 US62/403.403 US62/410.721 US62/416.959 US62/422.883 US62/455.444 US62/458.746 US62/459.652 US62/460.928 US62/465.931tão variados quanto pagamentos e contratos, de forma inviolável. A tecnologia escolhida para garantir tal inviolabilidade é o blockchain. Blockchains estão por trás de aplicativos como criptomoedas [29], aplicações financeiras [4] e Internet das Coisas [3]. Várias técnicas para gerenciar livros contábeis baseados em blockchain foram propostos: prova de trabalho [29], prova de aposta [2], tolerância prática a falhas bizantinas [8], ou alguma combinação. Atualmente, no entanto, os livros contábeis podem ser ineficientes de gerenciar. Por exemplo, Bitcoin de proof-of-work abordagem (baseada no conceito original de [14]) requer uma grande quantidade de computação, é um desperdício e escala mal [1]. Além disso, concentra de facto o poder em muito poucas mãos. Desejamos, portanto, propor um novo método para implementar um livro público que ofereça a conveniência e eficiência de um sistema centralizado administrado por uma autoridade confiável e inviolável, sem as ineficiências e fraquezas das atuais implementações descentralizadas. Chamamos nossa abordagem Algorand, porque usamos aleatoriedade algorítmica para selecionar, com base no livro-razão construído até agora, um conjunto de verificadores encarregados de construir o próximo bloco de transações válidas. Naturalmente, garantimos que tais seleções sejam comprovadamente imunes a manipulações e imprevisíveis até no último minuto, mas também que, em última análise, sejam universalmente claros. A abordagem de Algorand é bastante democrática, no sentido de que nem em princípio nem de facto cria diferentes classes de usuários (como “mineradores” e “usuários comuns” em Bitcoin). Em Algorand “todos o poder reside no conjunto de todos os usuários”. Uma propriedade notável de Algorand é que seu histórico de transações pode bifurcar-se apenas com valores muito pequenos probabilidade (por exemplo, um em um trilhão, isto é, ou mesmo 10-18). Algorand também pode abordar algumas questões legais e preocupações políticas. A abordagem Algorand aplica-se a blockchains e, mais geralmente, a qualquer método de geração uma sequência de blocos inviolável. Na verdade, propusemos um novo método - alternativo e mais eficiente do que blockchains— que pode ser de interesse independente. 1.1 Suposição e problemas técnicos de Bitcoin Bitcoin é um sistema muito engenhoso e inspirou muitas pesquisas subsequentes. Ainda assim, também é problemático. Vamos resumir a sua suposição subjacente e os problemas técnicos - que na verdade, são compartilhados por essencialmente todas as criptomoedas que, como Bitcoin, são baseadas em proof-of-work. Para este resumo, basta lembrar que, em Bitcoin, um usuário pode possuir múltiplas chaves públicas de um esquema de assinatura digital, que o dinheiro está associado a chaves públicas e que um pagamento é um assinatura digital que transfere alguma quantia de dinheiro de uma chave pública para outra. Essencialmente, Bitcoin organiza todos os pagamentos processados em uma cadeia de blocos, B1, B2, . . ., cada um consistindo de múltiplos pagamentos, de modo que todos os pagamentos de B1, efetuados em qualquer ordem, seguidos pelos de B2, em qualquer ordem, etc., constituem uma sequência de pagamentos válidos. Cada bloco é gerado, em média, a cada 10 minutos. Esta sequência de blocos é uma cadeia, pois está estruturada de forma a garantir que qualquer alteração, mesmo em um único bloco, se infiltra em todos os blocos subsequentes, facilitando a detecção de qualquer alteração de o histórico de pagamentos. (Como veremos, isto é conseguido incluindo em cada bloco um código criptográfico hash do anterior.) Essa estrutura de bloco é referida como blockchain. Suposição: Maioria Honesta do Poder Computacional Bitcoin assume que nenhum mal-intencionado entidade (nem uma coalizão de entidades maliciosas coordenadas) controla a maioria dos recursos computacionais poder dedicado à geração de blocos. Tal entidade, de fato, seria capaz de modificar o blockchain,e assim reescrever o histórico de pagamentos, como desejar. Em particular, poderia fazer um pagamento \(\wp\), obter os benefícios pagos e então “apagar” qualquer vestígio de \(\wp\). Problema Técnico 1: Resíduos Computacionais Abordagem de Bitcoin proof-of-work para bloquear a geração requer uma quantidade extraordinária de computação. Atualmente, com apenas algumas centenas milhares de chaves públicas no sistema, os 500 supercomputadores mais poderosos só conseguem reunir apenas 12,8% do poder computacional total exigido dos jogadores Bitcoin. Isto a quantidade de computação aumentaria muito, caso um número significativamente maior de usuários ingressasse no sistema. Problema Técnico 2: Concentração de Poder Hoje, devido à quantidade exorbitante de cálculo necessário, um usuário, tentando gerar um novo bloco usando um desktop comum (sem falar em um celular), espera perder dinheiro. Na verdade, para calcular um novo bloco com um computador comum, o custo esperado da eletricidade necessária para alimentar o cálculo excede a recompensa esperada. Somente usando pools de computadores especialmente construídos (que não fazem nada além de “minerar novos blocos”), pode-se pode esperar obter lucro gerando novos blocos. Assim, hoje existem, de facto, dois classes distintas de usuários: usuários comuns, que apenas fazem pagamentos, e pools de mineração especializados, que apenas procuram novos blocos. Portanto, não deveria ser surpresa que, recentemente, o poder computacional total para blocos geração está dentro de apenas cinco grupos. Nessas condições, a suposição de que a maioria dos o poder computacional é honesto torna-se menos credível. Problema Técnico 3: Ambiguidade Em Bitcoin, blockchain não é necessariamente único. Na verdade sua última parte frequentemente se bifurca: o blockchain pode ser —digamos— B1, . . . , Bk, B' k+1, B′ k+2, de acordo com um usuário e B1, . . . , Bk, B'' k+1, B'' k+2, B'' k+3 de acordo com outro usuário. Somente depois de vários blocos terem sido adicionado à cadeia, podemos ter certeza razoável de que os primeiros k + 3 blocos serão os mesmos para todos os usuários. Assim, não se pode confiar desde já nos pagamentos contidos no último bloco de a corrente. É mais prudente esperar e ver se o bloco se torna suficientemente profundo no blockchain e, portanto, suficientemente estável. Separadamente, também foram levantadas preocupações de aplicação da lei e de política monetária sobre Bitcoin.1 1.2 Algorand, em poucas palavras Configuração Algorand funciona em ambientes muito difíceis. Resumidamente, (a) Ambientes sem permissão e com permissão. Algorand funciona de forma eficiente e segura, mesmo em um ambiente totalmente sem permissão, onde muitos usuários podem ingressar arbitrariamente no sistema a qualquer momento, sem qualquer verificação ou permissão de qualquer tipo. Claro, Algorand funciona ainda melhor em um ambiente permitido. 1O (pseudo) anonimato oferecido pelos pagamentos Bitcoin pode ser utilizado indevidamente para lavagem de dinheiro e/ou financiamento de indivíduos criminosos ou organizações terroristas. Notas tradicionais ou barras de ouro, que em princípio oferecem perfeita anonimato, deveriam representar o mesmo desafio, mas a fisicalidade destas moedas desacelera substancialmente o fluxo de dinheiro transferências, de modo a permitir algum grau de monitorização por parte das agências de aplicação da lei. A capacidade de “imprimir dinheiro” é um dos poderes básicos de um Estado-nação. Em princípio, portanto, a enorme a adopção de uma moeda flutuante independente pode restringir este poder. Atualmente, porém, Bitcoin está longe de ser uma ameaça às políticas monetárias governamentais e, devido aos seus problemas de escalabilidade, poderá nunca o ser.(b) Ambientes muito adversários. Algorand resiste a um Adversário muito poderoso, que pode (1) corromper instantaneamente qualquer usuário que desejar, a qualquer momento que desejar, desde que, de forma ambiente sem permissão, 2/3 do dinheiro do sistema pertence ao usuário honesto. (Em um ambiente permitido, independentemente do dinheiro, basta que 2/3 dos usuários sejam honestos.) (2) controlar totalmente e coordenar perfeitamente todos os usuários corrompidos; e (3) programar a entrega de todas as mensagens, desde que cada mensagem seja enviada por um usuário honesto atinge 95% dos usuários honestos dentro de um tempo \(\lambda\)m, que depende apenas do tamanho de m. Propriedades Principais Apesar da presença do nosso poderoso adversário, em Algorand • A quantidade de cálculo necessária é mínima. Essencialmente, não importa quantos usuários estejam presente no sistema, cada um dos mil e quinhentos usuários deve realizar no máximo alguns segundos de computação. • Um novo bloco é gerado em menos de 10 minutos e, de fato, nunca sairá do blockchain. Por exemplo, na expectativa, o tempo para gerar um bloco na primeira modalidade é menor do que Λ + 12,4\(\lambda\), onde Λ é o tempo necessário para propagar um bloco, em uma fofoca ponto a ponto moda, não importa o tamanho do bloco escolhido, e \(\lambda\) é o tempo para propagar 1.500 mensagens de 200Blong. (Uma vez que num sistema verdadeiramente descentralizado, Λ é essencialmente uma latência intrínseca, em Algorand o fator limitante na geração de blocos é a velocidade da rede.) A segunda modalidade tem na verdade foi testado experimentalmente ( por ?), indicando que um bloco é gerado em menos de 40 segundos. Além disso, blockchain de Algorand pode bifurcar apenas com probabilidade insignificante (ou seja, menos de um em um trilhão), e assim os usuários podem contar com os pagamentos contidos em um novo bloco assim que o bloco aparece. • Todo o poder reside nos próprios usuários. Algorand é um sistema verdadeiramente distribuído. Em particular, não existem entidades exógenas (como os “mineradores” em Bitcoin), que podem controlar quais transações são reconhecidos. Técnicas de Algorand. 1. Um novo e rápido protocolo de acordo bizantino. Algorand gera um novo bloco via um novo protocolo de acordo bizantino (BA) binário, criptográfico e de passagem de mensagens, BA⋆. Protocolo BA⋆não apenas satisfaz algumas propriedades adicionais (que discutiremos em breve), mas também é muito rápido. Grosso modo, sua versão de entrada binária consiste em um loop de 3 etapas, no qual um jogador i envia um único mensagem mi para todos os outros jogadores. Executado em rede completa e síncrona, com mais mais de 2/3 dos jogadores sendo honestos, com probabilidade > 1/3, após cada loop o protocolo termina em acordo. (Enfatizamos que o protocolo BA⋆ satisfaz a definição original do acordo bizantino de Pease, Shostak e Lamport [31], sem quaisquer enfraquecimentos.) Algorand aproveita este protocolo BA binário para chegar a um acordo, em nossas diferentes comunicações modelo, em cada novo bloco. O bloco acordado é então certificado, através de um número prescrito de assinatura digital dos verificadores apropriados e propagada pela rede. 2. Classificação criptográfica. Embora muito rápido, o protocolo BA⋆ se beneficiaria com mais velocidade quando jogado por milhões de usuários. Assim, Algorand escolhe os jogadores da BA⋆para seremum subconjunto muito menor do conjunto de todos os usuários. Para evitar um tipo diferente de concentração de poder problema, cada novo bloco Br será construído e acordado, através de uma nova execução de BA⋆, por um conjunto separado de verificadores selecionados, SV r. Em princípio, selecionar tal conjunto pode ser tão difícil quanto selecionando Br diretamente. Atravessamos este problema potencial através de uma abordagem que denominamos, abrangendo a sugestão perspicaz de Maurice Herlihy, classificação criptográfica. Sortição é a prática de selecionar funcionários aleatoriamente de um grande conjunto de indivíduos elegíveis [6]. (A classificação foi praticada ao longo dos séculos: por exemplo, pelas repúblicas de Atenas, Florença e Veneza. No sistema judicial moderno sistemas, a seleção aleatória é frequentemente usada para escolher os júris. A amostragem aleatória também foi recentemente defendido para as eleições por David Chaum [9].) Num sistema descentralizado, é claro, escolher o moedas aleatórias necessárias para selecionar aleatoriamente os membros de cada conjunto de verificadores SV r é problemático. Recorremos assim à criptografia para selecionar cada conjunto de verificadores, da população de todos os usuários, de uma forma garantidamente automática (ou seja, sem necessidade de troca de mensagens) e aleatória. Em essência, usamos uma função criptográfica para determinar automaticamente, a partir do bloco anterior Br−1, um usuário, o líder, encarregado de propor o novo bloco Br, e o conjunto verificador SV r, em cobrar para chegar a um acordo sobre o bloco proposto pelo líder. Como usuários mal-intencionados podem afetar composição de Br−1 (por exemplo, escolhendo alguns de seus pagamentos), construímos e usamos especialmente entradas adicionais para provar que o líder do r-ésimo bloco e o conjunto verificador SV r são de fato escolhido aleatoriamente. 3. A Quantidade (Semente) Qr. Usamos o último bloco Br−1 em blockchain para determinar automaticamente o próximo conjunto de verificadores e líder responsável pela construção do novo bloco Ir. O desafio desta abordagem é que, ao escolher apenas um pagamento ligeiramente diferente no rodada anterior, nosso poderoso Adversário ganha um tremendo controle sobre o próximo líder. Mesmo que ele controlava apenas 1/1000 dos jogadores/dinheiro no sistema, ele poderia garantir que todos os líderes fossem malicioso. (Veja a Seção Intuição 4.1.) Este desafio é central para todas as abordagens proof-of-stake, e, tanto quanto sabemos, não foi, até agora, resolvido de forma satisfatória. Para enfrentar esse desafio, construímos propositalmente e atualizamos continuamente um relatório separado e cuidadosamente quantidade definida, Qr, que provavelmente é, não apenas imprevisível, mas também não influenciável, pelos nossos adversário poderoso. Podemos nos referir a Qr como a r-ésima semente, pois é de Qr que Algorand seleciona, através de triagem criptográfica secreta, todos os usuários que desempenharão um papel especial na geração do quarto bloco. 4. Classificação criptográfica secreta e credenciais secretas. Usando de forma aleatória e inequívoca o último bloco atual, Br−1, para escolher o conjunto de verificadores e o líder responsável da construção do novo bloco, Br, não é suficiente. Como Br−1 deve ser conhecido antes de gerar Br, a última quantidade não-influenciável Qr−1 contida em Br−1 também deve ser conhecida. Assim, então são os verificadores e o líder encarregados de calcular o bloco Br. Assim, nosso poderoso Adversário pode corromper imediatamente todos eles, antes que se envolvam em qualquer discussão sobre Br, de modo a obter controle total sobre o bloco que certificam. Para evitar este problema, os líderes (e também os verificadores) aprendem secretamente sobre o seu papel, mas podem computar uma credencial adequada, capaz de provar a todos que de fato desempenham esse papel. Quando um usuário percebe secretamente que ele é o líder do próximo bloco, primeiro ele monta secretamente seu próprio novo bloco proposto e, em seguida, divulga-o (para que possa ser certificado) juntamente com o seu próprio credencial. Desta forma, embora o Adversário perceba imediatamente quem é o líder do próximo bloco é, e embora ele possa corrompê-lo imediatamente, será tarde demais para o Adversário influenciar a escolha de um novo bloco. Na verdade, ele não pode mais “revogar” a mensagem do líderdo que um governo poderoso pode colocar de volta na garrafa uma mensagem espalhada de forma viral pelo WikiLeaks. Como veremos, não podemos garantir a singularidade do líder, nem que todos tenham certeza de quem é o líder. é, incluindo o próprio líder! Mas, em Algorand, um progresso inequívoco será garantido. 5. Substituibilidade do Jogador. Depois de propor um novo bloco, o líder pode muito bem “morrer” (ou ser corrompido pelo Adversário), porque seu trabalho está cumprido. Mas, para os verificadores em SV r, as coisas são menos simples. Com efeito, estando encarregado de certificar o novo bloco Br com um número suficiente de assinaturas, eles devem primeiro conseguir um acordo bizantino sobre o bloco proposto pelo líder. O problema é que, não importa quão eficiente seja, BA⋆requer múltiplas etapas e a honestidade de > 2/3 de seus jogadores. Isto é um problema porque, por razões de eficiência, o conjunto de jogadores de BA⋆consiste no pequeno conjunto SV r selecionado aleatoriamente entre o conjunto de todos os usuários. Assim, o nosso poderoso Adversário, embora incapaz de corromper 1/3 de todos os usuários, certamente pode corromper todos os membros do SV r! Felizmente provaremos que o protocolo BA⋆, executado pela propagação de mensagens ponto a ponto, é substituível pelo jogador. Este novo requisito significa que o protocolo corretamente e atinge consenso de forma eficiente, mesmo que cada uma de suas etapas seja executada por um método totalmente novo e aleatório. e conjunto de jogadores selecionados independentemente. Assim, com milhões de usuários, cada pequeno conjunto de jogadores associado a um passo de BA⋆provavelmente possui interseção vazia com o próximo conjunto. Além disso, os conjuntos de jogadores de diferentes etapas do BA⋆provavelmente terão cardinalidades. Além disso, os membros de cada conjunto não sabem quem será o próximo conjunto de jogadores. ser, e não passar secretamente por nenhum estado interno. A propriedade do jogador substituível é realmente crucial para derrotar o dinâmico e muito poderoso Adversário que imaginamos. Acreditamos que os protocolos de jogadores substituíveis serão cruciais em muitos contextos e aplicações. Em particular, eles serão cruciais para executar pequenos subprotocolos com segurança inserido em um universo maior de jogadores com um adversário dinâmico, que, sendo capaz de corromper até mesmo uma pequena fração do total de jogadores, não tem dificuldade em corromper todos os jogadores no menor subprotocolo. Uma propriedade/técnica adicional: honestidade preguiçosa Um usuário honesto segue o que lhe foi prescrito instruções, que incluem estar online e executar o protocolo. Desde então, Algorand tem apenas modesto exigência de computação e comunicação, estar online e rodando o protocolo “no histórico” não é um grande sacrifício. Claro, algumas “ausências” entre jogadores honestos, como aqueles devido à perda repentina de conectividade ou à necessidade de reinicialização, são automaticamente tolerados (porque sempre podemos considerar esses poucos jogadores como temporariamente maliciosos). Destaquemos, porém, que Algorand pode ser simplesmente adaptado para funcionar em um novo modelo, no qual usuários honestos sejam off-line na maior parte do tempo. Nosso novo modelo pode ser apresentado informalmente da seguinte maneira. Honestidade preguiçosa. Grosso modo, um usuário i é preguiçoso, mas honesto se (1) seguir todas as instruções prescritas. instruções, quando ele for solicitado a participar do protocolo, e (2) ele for solicitado a participar ao protocolo apenas raramente e com um aviso prévio adequado. Com uma noção tão relaxada de honestidade, podemos estar ainda mais confiantes de que as pessoas honestas serão à mão quando precisarmos deles, e Algorand garantimos que, quando for o caso, O sistema funciona de forma segura mesmo que, num determinado momento, a maioria dos jogadores participantes são maliciosos.1.3 Trabalho intimamente relacionado As abordagens de prova de trabalho (como as citadas [29] e [4]) são bastante ortogonais às nossas. Assim são os abordagens baseadas no acordo bizantino de passagem de mensagens ou na tolerância prática a falhas bizantinas (como o citado [8]). Na verdade, estes protocolos não podem ser executados entre o conjunto de todos os utilizadores e não podem, em nosso modelo, fique restrito a um conjunto adequadamente pequeno de usuários. Na verdade, nosso poderoso adversário, meu corromper imediatamente todos os usuários envolvidos em um pequeno conjunto encarregado de realmente executar um protocolo BA. Nossa abordagem poderia ser considerada relacionada à prova de aposta [2], no sentido de que o “poder” dos usuários na construção de blocos é proporcional ao dinheiro que possuem no sistema (em oposição a —digamos— para o dinheiro que colocaram em “escrow”). O artigo mais próximo do nosso é o Sleepy Consensus Model of Pass e Shi [30]. Para evitar o computação pesada necessária na abordagem proof-of-work, seu artigo se baseia (e gentilmente créditos) Classificação criptográfica secreta de Algorand. Com este aspecto crucial em comum, vários existem diferenças significativas entre nossos artigos. Em particular, (1) Sua configuração é apenas permitida. Por outro lado, Algorand também é um sistema sem permissão. (2) Eles usam um protocolo estilo Nakamoto e, portanto, seus blockchain se bifurcam com frequência. Embora dispensando proof-of-work, em seu protocolo um líder selecionado secretamente é solicitado a alongar o válido mais longo (em um sentido mais rico) blockchain. Assim, os garfos são inevitáveis e é preciso esperar que o bloco está suficientemente “profundo” na cadeia. Na verdade, para atingir seus objetivos com um adversário capazes de corrupções adaptativas, eles exigem que um bloco seja poli(N) profundo, onde N representa o número total de usuários no sistema. Observe que, mesmo assumindo que um bloco poderia ser produzido em um minuto, se houvesse N = 1 milhão de usuários, seria necessário esperar cerca de 2 milhões de anos para um bloco para se tornar N 2 de profundidade, e por cerca de 2 anos para um bloco se tornar N-profundo. Em contraste, O blockchain de Algorand bifurca-se apenas com probabilidade insignificante, mesmo que o Adversário corrompa usuários imediatamente e de forma adaptativa, e seus novos blocos podem ser imediatamente confiáveis. (3) Eles não tratam de acordos bizantinos individuais. De certa forma, eles apenas garantem “eventual consenso sobre uma sequência crescente de valores”. O protocolo deles é de replicação de estado, em vez do que um BA, e não pode ser usado para chegar a um acordo bizantino sobre um valor individual de juros. Por outro lado, Algorand também pode ser usado apenas uma vez, se desejado, para permitir que milhões de usuários acessem rapidamente chegar a um acordo bizantino sobre um valor específico de juros. (4) Eles exigem relógios fracamente sincronizados. Ou seja, todos os relógios dos usuários são adiantados por um pequeno intervalo de tempo δ. Por outro lado, em Algorand, os relógios precisam apenas ter (essencialmente) a mesma “velocidade”. (5) Seu protocolo funciona com usuários preguiçosos, mas honestos, ou com a maioria honesta dos usuários online. Eles gentilmente creditam Algorand por levantar a questão de usuários honestos ficarem off-line em massa e por apresentando o modelo de honestidade preguiçosa em resposta. O protocolo deles não funciona apenas nos preguiçosos modelo de honestidade, mas também em seu modelo adversário sonolento, onde um adversário escolhe quais usuários estão on-line e quais estão off-line, desde que, em todos os momentos, a maioria dos usuários on-line seja honesta.2 2A versão original do seu artigo, na verdade, considerava apenas a segurança no seu modelo adversário sonolento. O versão original de Algorand, que precede a deles, também explicitamente prevista assumindo que uma determinada maioria do os jogadores online são sempre honestos, mas excluíram-no explicitamente de consideração, em favor do modelo de honestidade preguiçosa. (Por exemplo, se em algum momento metade dos usuários honestos optar por ficar off-line, então a maioria dos usuários on-line pode muito bem ser malicioso. Assim, para evitar que isso aconteça, o Adversário deveria forçar a maior parte de seus jogadores corrompidos também fiquem off-line, o que claramente vai contra o seu próprio interesse.) Observe que um protocolo com maioria de jogadores preguiçosos, mas honestos, funciona muito bem se a maioria dos usuários on-line for sempre mal-intencionada. Isto é assim, porque um número suficiente de jogadores honestos, sabendo que serão cruciais em algum momento raro, elegerá não ficar off-line nesses momentos, nem podem ser forçados a ficar off-line pelo Adversário, já que ele não sabe quem é o jogadores honestos e cruciais podem ser.(6) Eles exigem uma maioria simples e honesta. Por outro lado, a versão atual de Algorand requer uma maioria honesta de 2/3. Outro artigo próximo de nós é Ouroboros: um protocolo Blockchain de prova de participação comprovadamente seguro, por Kiayias, Russell, David e Oliynykov [20]. Além disso, o sistema deles apareceu depois do nosso. Também usa classificação criptográfica para dispensar prova de trabalho de maneira comprovável. No entanto, seus O sistema é, novamente, um protocolo do estilo Nakamoto, no qual as bifurcações são inevitáveis e frequentes. (No entanto, em seu modelo, os bloqueios não precisam ser tão profundos quanto o modelo de consenso sonolento.) Além disso, seu sistema baseia-se nas seguintes suposições: nas palavras dos próprios autores, “(1) o a rede é altamente síncrona, (2) a maioria das partes interessadas selecionadas está disponível conforme necessário para participar em cada época, (3) as partes interessadas não permanecem off-line por longos períodos de tempo, (4) a adaptabilidade das corrupções está sujeita a um pequeno atraso que é medido em rodadas lineares em o parâmetro de segurança.” Por outro lado, Algorand é, com grande probabilidade, livre de bifurcação e não se baseia em nenhuma dessas quatro suposições. Em particular, em Algorand, o Adversário é capaz de corromper instantaneamente os usuários que ele deseja controlar.

Введение

Деньги становятся все более виртуальными. Подсчитано, что около 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 Противник имеет возможность мгновенно развратить пользователей, которых он хочет контролировать.

Preliminares

2.1 Primitivos criptográficos Hashing ideal. Contaremos com uma função criptográfica hash eficientemente computável, H, que mapeia cadeias arbitrariamente longas em cadeias binárias de comprimento fixo. Seguindo uma longa tradição, modelamos H como um oracle aleatório, essencialmente uma função que mapeia cada string s possível para um aleatório e string binária selecionada independentemente (e então fixa), H(s), do comprimento escolhido. Neste artigo, H tem saídas longas de 256 bits. Na verdade, esse comprimento é curto o suficiente para tornar o sistema eficiente e longo o suficiente para torná-lo seguro. Por exemplo, queremos que H seja resistente a colisões. Ou seja, deveria ser difícil encontrar duas strings diferentes x e y tais que H(x) = H(y). Quando H é um oracle aleatório com saídas longas de 256 bits, encontrar qualquer par de strings é de fato difícil. (Tentar aleatoriamente e confiar no paradoxo do aniversário exigiria 2.256/2 = 2.128 testes.) Assinatura digital. As assinaturas digitais permitem que os usuários autentiquem informações entre si sem compartilhar nenhuma chave secreta. Um esquema de assinatura digital consiste em três algoritmos: um gerador de chave probabilística G, um algoritmo de assinatura S e um algoritmo de verificação V. Dado um parâmetro de segurança k, um número inteiro suficientemente alto, um usuário i usa G para produzir um par de Chaves de k bits (ou seja, strings): uma chave “pública” pki e uma chave de assinatura “secreta” correspondente ski. Crucialmente, um a chave pública não “trai” sua chave secreta correspondente. Ou seja, mesmo com conhecimento de pki, não outro além de mim é capaz de calcular esqui em menos de um tempo astronômico. O usuário i usa ski para assinar mensagens digitalmente. Para cada mensagem possível (string binária) m, primeiro hashes m e então executa o algoritmo S nas entradas H(m) e ski para produzir a string de k bits sigpki(m) \(\triangleq\)S(H(m), esqui) .3 3Como H é resistente a colisões, é praticamente impossível que, ao assinar m, alguém “assine acidentalmente” uma mensagem diferente mensagem m'.A string binária sigpki(m) é chamada de assinatura digital de i de m (relativa a pki) e pode ser denotado mais simplesmente por sigi(m), quando a chave pública pki está clara no contexto. Qualquer pessoa que conheça o pki pode usá-lo para verificar as assinaturas digitais produzidas pelo i. Especificamente, em insere (a) a chave pública pki de um jogador i, (b) uma mensagem m e (c) uma string s, ou seja, i é alegado assinatura digital da mensagem m, o algoritmo de verificação V produz SIM ou NÃO. As propriedades que exigimos de um esquema de assinatura digital são: 1. Assinaturas legítimas são sempre verificadas: Se s = sigi(m), então V (pki, m, s) = Y ES; e 2. Assinaturas digitais são difíceis de falsificar: sem conhecimento de esqui, é hora de encontrar uma string como essa. que V (pki, m, s) = Y ES, para uma mensagem m nunca assinada por i, é astronomicamente longo. (Seguindo os fortes requisitos de segurança de Goldwasser, Micali e Rivest [17], isso é verdade mesmo que se possa obter a assinatura de qualquer outra mensagem.) Assim, para evitar que qualquer outra pessoa assine mensagens em seu nome, um jogador deve manter o seu assinando a chave secreta de esqui (daí o termo “chave secreta”) e para permitir que qualquer pessoa verifique as mensagens ele assina, tenho interesse em divulgar sua chave pki (daí o termo “chave pública”). Em geral, uma mensagem m não é recuperável a partir da sua assinatura sigi(m). Para negociar virtualmente com assinaturas digitais que satisfaçam a propriedade de “recuperabilidade” conceitualmente conveniente (ou seja, para garantir que o signatário e a mensagem sejam facilmente computáveis a partir de uma assinatura, definimos SIGpki(m) = (i, m, sigpki(m)) e SIGi(m) = (i, m, sigi(m)), se pki estiver claro. Assinatura digital exclusiva. Consideramos também esquemas de assinatura digital (G, S, V ) que satisfazem a seguinte propriedade adicional. 3. Singularidade. É difícil encontrar strings pk′, m, s e s′ tais que ̸= s′ e V (pk′, m, s) = V (pk′, m, s′) = 1. (Observe que a propriedade de exclusividade também é válida para strings pk′ que não são geradas legitimamente chaves públicas. Em particular, porém, a propriedade de unicidade implica que, se alguém usasse a propriedade gerador de chave especificado G para calcular uma chave pública pk junto com uma chave secreta correspondente sk, e, portanto, sabia que sk, seria essencialmente impossível também para ele encontrar dois dispositivos digitais diferentes. assinaturas de uma mesma mensagem relativa a pk.) Observações • De assinaturas exclusivas a funções aleatórias verificáveis. Em relação a um digital esquema de assinatura com a propriedade de exclusividade, o mapeamento m \(\to\) H(sigi(m)) associa-se a cada string m possível, uma string única de 256 bits selecionada aleatoriamente e a exatidão disso o mapeamento pode ser provado dada a assinatura sigi(m). Ou seja, esquema ideal de hashing e assinatura digital que satisfaz a propriedade de exclusividade essencialmente fornecer uma implementação elementar de uma função aleatória verificável, conforme introduzida e por Micali, Rabin e Vadhan [27]. (Sua implementação original era necessariamente mais complexa, já que eles não dependiam do hashing ideal.)• Três necessidades diferentes para assinaturas digitais. Em Algorand, um usuário depende de recursos digitais assinaturas para (1) Autenticação dos próprios pagamentos do i. Nesta aplicação, as chaves podem ser de “longo prazo” (ou seja, usadas para assinar muitas mensagens durante um longo período de tempo) e vêm de um esquema de assinatura comum. (2) Gerar credenciais provando que i tem o direito de agir em alguma etapa s de uma rodada r. Aqui, as chaves podem ser de longo prazo, mas devem vir de um esquema que satisfaça a propriedade de exclusividade. (3) Autenticar a mensagem que envio em cada etapa em que atua. Aqui, as chaves devem ser efêmero (ou seja, destruído após seu primeiro uso), mas pode vir de um esquema de assinatura comum. • Uma simplificação de pequeno custo. Para simplificar, imaginamos que cada usuário i tenha uma única chave de longo prazo. Conseqüentemente, tal chave deve vir de um esquema de assinatura com a exclusividade propriedade. Essa simplicidade tem um pequeno custo computacional. Normalmente, na verdade, digital único as assinaturas são um pouco mais caras para produzir e verificar do que as assinaturas comuns. 2.2 O livro-razão público idealizado Algorand tenta imitar o seguinte sistema de pagamento, baseado em um livro-razão público idealizado. 1. O Status Inicial. O dinheiro está associado a chaves públicas individuais (geradas de forma privada e propriedade dos usuários). Deixando pk1, . . . , pkj são as chaves públicas iniciais e a1, . . . , e seus respectivos quantias iniciais de unidades monetárias, então o status inicial é S0 = (pk1, a1), . . . , (pkj, aj) , que é assumido como conhecimento comum no sistema. 2. Pagamentos. Seja pk uma chave pública atualmente com \(\geq\)0 unidades monetárias, pk′ outra chave pública chave, e a′ um número não negativo não maior que a. Então, um pagamento (válido) \(\wp\)é um pagamento digital assinatura, relativa a pk, especificando a transferência de a′ unidades monetárias de pk para pk′, juntamente com algumas informações adicionais. Em símbolos, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), onde I representa qualquer informação adicional considerada útil, mas não sensível (por exemplo, tempo informações e um identificador de pagamento) e qualquer informação adicional considerada sensível (por exemplo, o motivo do pagamento, possivelmente as identidades dos proprietários do pk e do pk′, e assim por diante). Referimo-nos a pk (ou seu proprietário) como pagador, a cada pk′ (ou seu proprietário) como beneficiário e a a′ como o valor do pagamento \(\wp\). Adesão gratuita por meio de pagamentos. Observe que os usuários podem ingressar no sistema quando quiserem, gerando seus próprios pares de chaves pública/secreta. Assim, a chave pública pk′ que aparece em o pagamento \(\wp\)acima pode ser uma chave pública recém-gerada que nunca “possuíu” nenhum dinheiro antes. 3. O Livro Mágico. No Sistema Idealizado, todos os pagamentos são válidos e aparecem em formato inviolável lista L de conjuntos de pagamentos “postados no céu” para que todos possam ver: L = PAGUE 1, PAGUE 2, . . . ,Cada bloco PAY r+1 consiste no conjunto de todos os pagamentos efetuados desde o aparecimento do bloco PAGAR R. No sistema ideal, um novo bloco aparece após um período de tempo fixo (ou finito). Discussão. • Pagamentos mais gerais e resultados de transações não gastas. De forma mais geral, se uma chave pública pk possui um valor a, então um pagamento válido \(\wp\)of pk pode transferir os valores a′ 1, uma' 2, . . ., respectivamente às chaves pk′ 1, pk' 2, . . ., desde que P eu' j \(\leq\)a. Em Bitcoin e sistemas similares, o dinheiro pertencente a um pacote de chave pública é segregado em valores, e um pagamento \(\wp\)feito por pk deve transferir esse valor segregado em sua totalidade. Se pk deseja transferir apenas uma fração a′ < a de a para outra chave, então ele também deve transferir a fração saldo, a saída da transação não gasta, para outra chave, possivelmente o próprio pk. Algorand também funciona com chaves com valores segregados. Contudo, para focar no aspectos novos de Algorand, é conceitualmente mais simples manter nossas formas de pagamento mais simples e chaves com um único valor associado a elas. • Status atual. O Esquema Idealizado não fornece diretamente informações sobre o atual status do sistema (ou seja, sobre quantas unidades monetárias cada chave pública possui). Esta informação é dedutível do Magic Ledger. No sistema ideal, um usuário ativo armazena e atualiza continuamente as informações de status mais recentes, ou ele teria que reconstruí-lo, seja do zero, ou desde a última vez que ele calculou. (Na próxima versão deste artigo, aumentaremos Algorand para permitir seu usuários reconstruam o status atual de maneira eficiente.) • Segurança e “Privacidade”. As assinaturas digitais garantem que ninguém pode falsificar um pagamento outro usuário. Em um \(\wp\) de pagamento, as chaves públicas e o valor não ficam ocultos, mas sim o sensível informação que eu sou. Na verdade, apenas H(I) aparece em \(\wp\), e como H é uma função hash ideal, H(I) é um valor aleatório de 256 bits e, portanto, não há como descobrir o que eu era melhor do que simplesmente adivinhando. No entanto, para provar o que eu era (por exemplo, para provar o motivo do pagamento), o o pagador pode apenas revelar I. A exatidão do I revelado pode ser verificada calculando H(I) e comparando o valor resultante com o último item de \(\wp\). Na verdade, como H é resiliente a colisões, é difícil encontrar um segundo valor I′ tal que H(I) = H(I′). 2.3 Noções e notações básicas Chaves, usuários e proprietários A menos que especificado de outra forma, cada chave pública (“chave” para abreviar) é de longo prazo e relativa a um esquema de assinatura digital com a propriedade de exclusividade. Uma chave pública que eu juntei o sistema quando outra chave pública j já no sistema faz um pagamento para i. Para a cor, personificamos as chaves. Referimo-nos a uma chave i como “ele”, dizemos que sou honesto, que envio e recebe mensagens, etc. Usuário é sinônimo de chave. Quando queremos distinguir uma chave de a quem pertence, utilizamos respectivamente os termos “chave digital” e “proprietário”. Sistemas sem permissão e com permissão. Um sistema não tem permissão se uma chave digital for gratuita aderir a qualquer momento e um proprietário pode possuir várias chaves digitais; e é permitido, caso contrário.Representação Única Cada objeto em Algorand possui uma representação única. Em particular, cada conjunto {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} é ordenado de uma maneira pré-especificada: por exemplo, primeiro lexicograficamente em x, depois em y, etc. Relógios da mesma velocidade Não existe um relógio global: cada usuário tem seu próprio relógio. Relógios do usuário não precisa ser sincronizado de forma alguma. Assumimos, no entanto, que todos eles têm a mesma velocidade. Por exemplo, quando são 12h de acordo com o relógio de um usuário i, podem ser 14h30 de acordo com o relógio de outro usuário j, mas quando for 12h01 de acordo com o relógio de i, serão 2h31 de acordo para o relógio de j. Ou seja, “um minuto é igual (suficientemente, essencialmente igual) para todos os usuários”. Rodadas Algorand está organizado em unidades lógicas, r = 0, 1, . . ., chamadas rodadas. Usamos consistentemente sobrescritos para indicar rodadas. Para indicar que uma quantidade não numérica Q (por exemplo, uma string, uma chave pública, um conjunto, uma assinatura digital, etc.) refere-se a uma rodada r, simplesmente escrevemos Qr. Somente quando Q for um número genuíno (em oposição a uma sequência binária interpretável como um número), faça escrevemos Q(r), de modo que o símbolo r não possa ser interpretado como o expoente de Q. No (início de uma) rodada r > 0, o conjunto de todas as chaves públicas é PKr e o status do sistema é Sr = n eu, um (r) eu,. . .  : eu \(\in\)PKro , onde um(r) eu é a quantidade de dinheiro disponível para a chave pública i. Observe que PKr é dedutível de Sr, e esse Sr também pode especificar outros componentes para cada chave pública i. Para a rodada 0, PK0 é o conjunto de chaves públicas iniciais e S0 é o status inicial. Tanto PK0 quanto S0 são considerados de conhecimento comum no sistema. Para simplificar, no início da rodada r, então são PK1, . . . , PKr e S1, . . . , Sr. Numa rodada r, o status do sistema transita de Sr para Sr+1: simbolicamente, Rodada r: Sr −→Sr+1. Pagamentos Em Algorand, os usuários realizam pagamentos continuamente (e os divulgam na forma descrito na subseção 2.7). Um pagamento \(\wp\)de um usuário i \(\in\)PKr tem o mesmo formato e semântica como no Sistema Ideal. Ou seja, \(\wp\)= SIGi(i, i′, a, I, H(I)) . O pagamento \(\wp\)é individualmente válido em uma rodada r (é um pagamento redondo, para abreviar) se (1) seu valor a é menor ou igual a a(r) i, e (2) não aparece em nenhum conjunto de pagamentos oficial PAY r′ para r′ < r. (Conforme explicado abaixo, a segunda condição significa que \(\wp\) ainda não entrou em vigor. Um conjunto de pagamentos redondos de i é coletivamente válido se a soma de seus valores for no máximo a(r) eu. Conjuntos de pagamentos Um conjunto de pagamentos redondo P é um conjunto de pagamentos redondos tais que, para cada usuário i, os pagamentos de i em P (possivelmente nenhum) são coletivamente válidos. O conjunto de todos os conjuntos de pagamentos da rodada r é PAY(r). Um round-r payset P é máximo se nenhum superconjunto de P for um payset round-r. Na verdade, sugerimos que um pagamento \(\wp\)também especifica uma rodada \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , e não pode ser válido em qualquer rodada fora de [\(\rho\), \(\rho\) + k], para algum inteiro não negativo fixo k.4 4Isso simplifica a verificação se \(\wp\)se tornou “eficaz” (ou seja, simplifica a determinação se algum conjunto de salários PAGAR r contém \(\wp\). Quando k = 0, se \(\wp\)= SIGi(r, i, i′, a, I, H(I)) e \(\wp\)/\(\in\)PAY r, então devo reenviar \(\wp\).Pagamentos oficiais Para cada rodada r, Algorand seleciona publicamente (da maneira descrita mais adiante) um único conjunto de pagamentos (possivelmente vazio), PAY r, o conjunto de pagamentos oficial da rodada. (Essencialmente, PAY r representa os pagamentos redondos que “realmente” aconteceram.) Assim como no Sistema Ideal (e Bitcoin), (1) a única maneira de um novo usuário j entrar no sistema deve ser o destinatário de um pagamento pertencente ao conjunto de pagamentos oficial PAY r de uma determinada rodada r; e (2) PAY r determina o status da próxima rodada, Sr+1, daquele da rodada atual, Sr. Simbolicamente, PAGAR r: Sr −→Sr+1. Especificamente, 1. o conjunto de chaves públicas da rodada r + 1, PKr+1, consiste na união de PKr e no conjunto de todos chaves de beneficiário que aparecem, pela primeira vez, nos pagamentos de PAY r; e 2. a quantidade de dinheiro a(r+1) eu que um usuário i possui na rodada r + 1 é a soma de ai(r) - ou seja, o quantidade de dinheiro que possuo na rodada anterior (0 se i̸\(\in\)PKr) - e a soma das quantias pago a i de acordo com os pagamentos de PAY r. Em suma, tal como no Sistema Ideal, cada estado Sr+1 é dedutível do histórico de pagamentos anteriores: PAGUE 0, . . . , PAGUE R. 2.4 Blocos e Blocos Comprovados Em Algorand0, o bloco Br correspondente a uma rodada r especifica: o próprio r; o conjunto de pagamentos de rodada r, PAGAR r; uma quantidade Qr, a ser explicada, e o hash do bloco anterior, H(Br−1). Assim, partindo de algum bloco fixo B0, temos um blockchain tradicional: B1 = (1, PAGUE 1, Q0, H(B0)), B2 = (2, PAGUE 2, Q1, H(B1)), B3 = (3, PAGUE 3, Q2, H(B2)), . . . Em Algorand, a autenticidade de um bloco é na verdade comprovada por uma informação separada, um “certificado de bloco” CERT r, que transforma Br em um bloco comprovado, Br. O livro mágico, portanto, é implementado pela sequência dos blocos comprovados, B1, B2, . . . Discussão Como veremos, o CERT r consiste em um conjunto de assinaturas digitais para H(Br), aquelas de um maioria dos membros do SV r, juntamente com uma prova de que cada um desses membros pertence efectivamente para SV r. Poderíamos, é claro, incluir os certificados CERT r nos próprios blocos, mas conceitualmente mais limpo para mantê-lo separado.) Em Bitcoin cada bloco deve satisfazer uma propriedade especial, ou seja, deve “conter uma solução de um crypto puzzle”, o que torna a geração de blocos computacionalmente intensiva e bifurcações inevitáveis e não raro. Por outro lado, blockchain de Algorand tem duas vantagens principais: é gerado com cálculo mínimo e não será bifurcado com probabilidade extremamente alta. Cada bloco Bi é final com segurança assim que entrar em blockchain.2,5 Probabilidade de falha aceitável Para analisar a segurança de Algorand especificamos a probabilidade, F, com a qual estamos dispostos a aceitar que algo dê errado (por exemplo, que um conjunto verificador SV r não tenha uma maioria honesta). Como no caso do comprimento de saída da função criptográfica hash H, também F é um parâmetro. Mas, como nesse caso, achamos útil definir F para um valor concreto, de modo a obter uma estimativa mais intuitiva. compreensão do fato de que é de fato possível, em Algorand, desfrutar simultaneamente de segurança suficiente e eficiência suficiente. Para enfatizar que F é um parâmetro que pode ser definido conforme desejado, na primeira e segundas modalidades, definimos respectivamente F = 10−12 e F = 10−18 . Discussão Observe que 10-12 é, na verdade, menos que um em um trilhão, e acreditamos que tal a escolha de F é adequada em nossa aplicação. Vamos enfatizar que 10−12 não é a probabilidade com o qual o Adversário pode falsificar os pagamentos de um usuário honesto. Todos os pagamentos são digitalmente assinado e, portanto, se as assinaturas digitais adequadas forem usadas, a probabilidade de falsificar um pagamento é muito inferior a 10-12 e é, na verdade, essencialmente 0. O evento ruim que estamos dispostos a tolerar com probabilidade F é que as bifurcações de Algorand blockchain. Observe que, com nossa configuração de F e rodadas de um minuto, espera-se que uma bifurcação ocorra no blockchain de Algorand tão raramente quanto (aproximadamente) uma vez em 1,9 milhões de anos. Por outro lado, em Bitcoin, bifurcações ocorrem com bastante frequência. Uma pessoa mais exigente pode definir F para um valor mais baixo. Para este fim, em nossa segunda modalidade consideramos definir F como 10−18. Observe que, supondo que um bloco seja gerado a cada segundo, 1018 é o número estimado de segundos que o Universo levou até agora: desde o Big Bang até o presente tempo. Assim, com F = 10−18, se um bloco for gerado em um segundo, deve-se esperar para a idade de o Universo para ver uma bifurcação. 2.6 O modelo adversário Algorand foi projetado para ser seguro em um modelo muito adversário. Deixe-nos explicar. Usuários honestos e maliciosos Um usuário é honesto se seguir todas as instruções do protocolo e é perfeitamente capaz de enviar e receber mensagens. Um usuário é malicioso (ou seja, bizantino, no linguagem da computação distribuída) se ele puder desviar-se arbitrariamente de suas instruções prescritas. O Adversário O Adversário é um algoritmo eficiente (tecnicamente em tempo polinomial), personificado pela cor, que pode imediatamente tornar malicioso qualquer usuário que ele quiser, a qualquer hora que ele quiser (sujeito apenas para um limite superior ao número de usuários que ele pode corromper). O Adversário controla totalmente e coordena perfeitamente todos os usuários maliciosos. Ele realiza todas as ações em seu nome, incluindo receber e enviar todas as suas mensagens, e pode permitir que eles se desviem de suas instruções prescritas de maneira arbitrária. Ou ele pode simplesmente isolar um usuário corrompido enviando e recebimento de mensagens. Deixe-nos esclarecer que ninguém mais fica sabendo automaticamente que um usuário i é malicioso, embora a maldade de i possa transparecer nas ações que o Adversário o faz tomar. Este poderoso adversário, no entanto, • Não possui poder computacional ilimitado e não consegue forjar com sucesso o digital assinatura de um usuário honesto, exceto com probabilidade insignificante; e• Não poderá interferir de forma alguma nas trocas de mensagens entre usuários honestos. Além disso, sua capacidade de atacar usuários honestos é limitada por uma das seguintes suposições. Honestidade Maioria do Dinheiro Consideramos um continuum de Maioria Honesta de Dinheiro (HMM) suposições: ou seja, para cada inteiro não negativo k e h real > 1/2, HHMk > h: os usuários honestos em cada rodada r possuíam uma fração maior que h de todo o dinheiro em o sistema na rodada r −k. Discussão. Supondo que todos os usuários mal-intencionados coordenem perfeitamente suas ações (como se fossem controlados por uma única entidade, o Adversário) é uma hipótese bastante pessimista. Coordenação perfeita entre também muitos indivíduos é difícil de alcançar. Talvez a coordenação só ocorra dentro de grupos separados de jogadores maliciosos. Mas, como não se pode ter certeza sobre o nível de coordenação dos usuários mal-intencionados podemos aproveitar, é melhor prevenir do que remediar. Presumir que o Adversário possa corromper secreta, dinâmica e imediatamente os usuários também é pessimista. Afinal, de forma realista, assumir o controle total das operações de um usuário deve levar algum tempo. A suposição HMMk > h implica, por exemplo, que, se uma rodada (em média) for implementada em um minuto, então, a maior parte do dinheiro em uma determinada rodada permanecerá em mãos honestas por pelo menos duas horas, se k = 120, e pelo menos uma semana, se k = 10.000. Observe que as suposições do HMM e a maioria honesta anterior do poder de computação suposições estão relacionadas no sentido de que, uma vez que o poder computacional pode ser comprado com dinheiro, se usuários mal-intencionados possuírem a maior parte do dinheiro, eles poderão obter a maior parte do poder de computação. 2.7 O modelo de comunicação Prevemos que a propagação de mensagens — isto é, “fofoca entre pares”5 — seja o único meio de comunicação. Suposição temporária: entrega oportuna de mensagens em toda a rede. Para na maior parte deste artigo assumimos que toda mensagem propagada atinge quase todos os usuários honestos em tempo hábil. Removeremos essa suposição na Seção 10, onde tratamos de redes partições, sejam de ocorrência natural ou induzidas adversamente. (Como veremos, apenas assumimos entrega oportuna de mensagens dentro de cada componente conectado da rede.) Uma maneira concreta de capturar a entrega oportuna de mensagens propagadas (em toda a rede) é o seguinte: Para toda alcançabilidade \(\rho\) > 95% e tamanho de mensagem \(\mu\) \(\in\)Z+, existe \(\lambda\) \(\rho\),\(\mu\) tal que, se um usuário honesto propagar uma mensagem m de \(\mu\) bytes no tempo t, então m atinge, no tempo t + \(\lambda\) \(\rho\),\(\mu\), pelo menos uma fração \(\rho\) dos usuários honestos. 5Essencialmente, como em Bitcoin, quando um usuário propaga uma mensagem m, todo usuário ativo recebe m pela primeira vez, seleciona aleatoriamente e de forma independente um número adequadamente pequeno de usuários ativos, seus “vizinhos”, para os quais ele encaminha m, possivelmente até que ele receba um reconhecimento deles. A propagação de m termina quando nenhum usuário recebe m pela primeira vez.A propriedade acima, no entanto, não pode suportar nosso protocolo Algorand, sem prever explícita e separadamente um mecanismo para obter o blockchain mais recente - por outro usuário/depositório/etc. Na verdade, para construir um novo bloco Br, não apenas um conjunto adequado de verificadores deve receber atempadamente rodadas-r mensagens, mas também as mensagens das rodadas anteriores, para conhecer o Br−1 e todos os outros blocos, o que é necessário para determinar se os pagamentos em Br são válidos. O seguinte suposição, em vez disso, é suficiente. Suposição de propagação de mensagens (MP): Para todo \(\rho\) > 95% e \(\mu\) \(\in\)Z+, existe \(\lambda\) \(\rho\),\(\mu\) tal que, para todos os tempos t e todas as mensagens de \(\mu\) bytes m propagadas por um usuário honesto antes de t −\(\lambda\) \(\rho\), \(\mu\), m é recebido, no tempo t, por pelo menos uma fração \(\rho\) dos usuários honestos. O protocolo Algorand ′ na verdade instrui cada um de um pequeno número de usuários (ou seja, os verificadores de um dada etapa de uma rodada em Algorand ′, para propagar uma mensagem separada de tamanho (pequeno) prescrito, e precisamos limitar o tempo necessário para cumprir essas instruções. Fazemo-lo enriquecendo o MP suposição da seguinte forma. Para todo n, \(\rho\) > 95% e \(\mu\) \(\in\)Z+, existe \(\lambda\)n,\(\rho\),\(\mu\) tal que, para todos os tempos t e todos \(\mu\)-byte mensagens m1, . . . , mn, cada um propagado por um usuário honesto antes de t −\(\lambda\)n,\(\rho\),\(\mu\), m1, . . . , mn são recebidos, no tempo t, por pelo menos uma fração \(\rho\) dos usuários honestos. Nota • A suposição acima é deliberadamente simples, mas também mais forte do que o necessário em nosso artigo.6 • Para simplificar, assumimos \(\rho\) = 1 e, portanto, deixamos de mencionar \(\rho\). • Presumimos pessimistamente que, desde que não viole a suposição do MP, o Adversário controla totalmente a entrega de todas as mensagens. Em particular, sem ser notado pelos honestos usuários, o Adversário pode decidir arbitrariamente qual jogador honesto recebe qual mensagem quando, e acelerar arbitrariamente a entrega de qualquer mensagem que desejar.7

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

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

O protocolo BA BA⋆ em um ambiente tradicional

Como já enfatizado, o acordo bizantino é um ingrediente chave de Algorand. Na verdade, é através o uso de um protocolo BA que Algorand não seja afetado por bifurcações. No entanto, para estarmos seguros contra os nossos Adversário poderoso, Algorand deve contar com um protocolo BA que satisfaça a nova capacidade de substituição do jogador restrição. Além disso, para que Algorand seja eficiente, tal protocolo BA deve ser muito eficiente. Os protocolos BA foram definidos pela primeira vez para um modelo de comunicação idealizado, síncrono completo redes (redes SC). Tal modelo permite um projeto e análise mais simples de protocolos BA. 6Dada a porcentagem honesta h e a probabilidade de falha aceitável F, Algorand calcula um limite superior, N, ao número máximo de membros dos verificadores em uma etapa. Assim, a suposição de MP só precisa ser válida para n \(\leq\)N. Além disso, como afirmado, a suposição de MP é válida, não importa quantas outras mensagens possam ser propagadas ao lado o mj. Como veremos, entretanto, em Algorand as mensagens são propagadas em tempo essencialmente não sobreposto intervalos, durante os quais um único bloco é propagado, ou no máximo N verificadores propagam um pequeno (por exemplo, 200B) mensagem. Assim, poderíamos reafirmar o pressuposto do MP de uma forma mais fraca, mas também mais complexa. 7Por exemplo, ele pode aprender imediatamente as mensagens enviadas por jogadores honestos. Assim, um usuário malicioso i′, que é solicitado a propagar uma mensagem simultaneamente com um usuário honesto i, pode sempre escolher sua própria mensagem m′ com base em a mensagem m realmente propagada por i. Essa habilidade está relacionada à pressa, no jargão da computação distribuída literatura.Assim, nesta seção, apresentamos um novo protocolo BA, BA⋆, para redes SC e ignorando a questão da substituibilidade do jogador. O protocolo BA⋆é uma contribuição de valor separado. Na verdade, é o protocolo BA criptográfico mais eficiente para redes SC conhecido até agora. Para usá-lo em nosso protocolo Algorand, modificamos BA⋆ um pouco, de modo a levar em conta nossos diferentes modelo de comunicação e contexto, mas certifique-se, na seção X, de destacar como BA⋆é usado dentro do nosso protocolo real Algorand ′. Começamos por relembrar o modelo em que BA⋆opera e a noção de acordo bizantino. 3.1 Redes Síncronas Completas e Adversários Correspondentes Em uma rede SC, existe um relógio comum, marcando a cada tempo integral r = 1, 2, . . . A cada clique par em r, cada jogador i envia instantânea e simultaneamente um único mensagem senhor i,j (possivelmente a mensagem vazia) para cada jogador j, incluindo ele mesmo. Cada senhor i,j é recebido naquele momento clique em r + 1 do jogador j, junto com a identidade do remetente i. Novamente, num protocolo de comunicação, um jogador é honesto se seguir todas as instruções prescritas. instruções e malicioso de outra forma. Todos os jogadores maliciosos são totalmente controlados e perfeitamente coordenado pelo Adversário, que, em particular, recebe imediatamente todas as mensagens dirigidas a jogadores maliciosos e escolhe as mensagens que eles enviam. O Adversário pode imediatamente tornar malicioso qualquer usuário honesto que ele quiser, a qualquer momento, clicar ele deseja, sujeito apenas a um possível limite máximo para o número de jogadores mal-intencionados. Isto é, o Adversário “não pode interferir nas mensagens já enviadas por um usuário honesto i”, o que será entregue normalmente. O Adversário também tem a capacidade adicional de ver instantaneamente, em cada rodada par, o mensagens que os jogadores atualmente honestos enviam e usam instantaneamente essas informações para escolher as mensagens que os jogadores maliciosos enviam ao mesmo tempo são marcadas. Observações • Poder Adversário. A configuração acima é muito contraditória. Na verdade, no acordo bizantino literatura, muitos ambientes são menos antagônicos. No entanto, algumas configurações mais adversárias também foi considerado, onde o Adversário, após ver as mensagens enviadas por um jogador honesto, em um determinado momento clique em r, tem a capacidade de apagar todas essas mensagens da rede, imediatamente corrupto i, escolha a mensagem que o agora malicioso i envia na hora clique em r, e faça com que eles entregue normalmente. O poder previsto do Adversário corresponde ao que ele tem em nosso cenário. • Abstração Física. O modelo de comunicação previsto abstrai um modelo mais físico, em que cada par de jogadores (i, j) está ligado por uma linha de comunicação separada e privada li,j. Ou seja, ninguém mais pode injetar, interferir ou obter informações sobre as mensagens enviadas. li, j. A única maneira de o Adversário ter acesso a li,j é corromper i ou j. • Privacidade e Autenticação. Nas redes SC a privacidade e a autenticação das mensagens são garantidas por suposição. Por outro lado, na nossa rede de comunicação, onde as mensagens são propagadas ponto a ponto, a autenticação é garantida por assinaturas digitais e a privacidade é inexistente. Assim, para adotar o protocolo BA⋆ ao nosso cenário, cada mensagem trocada deverá ser assinada digitalmente (identificando ainda o estado para o qual foi enviado). Felizmente, os protocolos BA que usamos considere usar em Algorand não requer privacidade de mensagem.3.2 A noção de um acordo bizantino A noção de acordo bizantino foi introduzida por Pease Shostak e Lamport [31] para o caso binário, isto é, quando todo valor inicial consiste em um bit. No entanto, foi rapidamente prorrogado para valores iniciais arbitrários. (Veja as pesquisas de Fischer [16] e Chor e Dwork [10].) Por um BA protocolo, queremos dizer um de valor arbitrário. Definição 3.1. Em uma rede síncrona, seja P um protocolo de n jogadores, cujo conjunto de jogadores é comum conhecimento entre os jogadores, t um número inteiro positivo tal que n \(\geq\)2t + 1. Dizemos que P é um valor arbitrário (respectivamente, binário) (n, t) - Protocolo de acordo bizantino com solidez \(\sigma\) \(\in\) (0, 1) se, para cada conjunto de valores V que não contém o símbolo especial \(\bot\) (respectivamente, para V = {0, 1}), em um execução em que no máximo t dos jogadores são maliciosos e em que cada jogador i começa com um valor inicial vi \(\in\)V , todo jogador honesto j para com probabilidade 1, gerando um valor outi \(\in\)V \(\cup\){\(\bot\)} de modo a satisfazer, com probabilidade pelo menos \(\sigma\), as duas condições seguintes: 1. Acordo: Existe out \(\in\)V \(\cup\){\(\bot\)} tal que outi = out para todos os jogadores honestos i. 2. Consistência: se, para algum valor v \(\in\)V , vi = v para todos os jogadores honestos, então out = v. Referimo-nos a out como saída de P e a cada outi como saída do jogador i. 3.3 A notação BA # Em nossos protocolos BA, um jogador é obrigado a contar quantos jogadores lhe enviaram uma determinada mensagem em um determinado passo. Assim, para cada valor possível v que possa ser enviado,

s

eu(v) (ou apenas #i(v) quando s estiver limpo) é o número de jogadores j dos quais i recebeu v na etapa s. Lembrando que um jogador i recebe exatamente uma mensagem de cada jogador j, se o número de jogadores é n, então, para todos i e s, P v#s eu(v) = n. 3.4 O Protocolo Binário BA BBA⋆ Nesta seção apresentamos um novo protocolo BA binário, BBA⋆, que depende da honestidade de mais mais de dois terços dos jogadores e é muito rápido: não importa o que os jogadores maliciosos possam fazer, cada execução de seu loop principal faz com que os jogadores concordem com a probabilidade 1/3. Cada jogador tem sua própria chave pública de um esquema de assinatura digital que satisfaz a assinatura única. propriedade. Como este protocolo se destina a ser executado em rede completa síncrona, não há necessidade de um jogador assinar cada uma de suas mensagens. Assinaturas digitais são usadas para gerar um bit aleatório suficientemente comum na Etapa 3. (Em Algorand, assinaturas digitais também são usadas para autenticar todas as outras mensagens.) O protocolo requer uma configuração mínima: uma string aleatória comum r, independente da posição dos jogadores. chaves. (Em Algorand, r é na verdade substituído pela quantidade Qr.) O protocolo BBA⋆é um loop de 3 etapas, onde os jogadores trocam repetidamente valores booleanos e diferentes jogadores podem sair deste ciclo em momentos diferentes. Um jogador i sai deste loop propagando, em alguma etapa, um valor especial 0∗ou um valor especial 1∗, instruindo assim todos os jogadores a “fingir” que recebem respectivamente 0 e 1 de i em todas as etapas futuras. (Alternativamente dito: assumirque a última mensagem recebida por um jogador j de outro jogador i foi um pouco b. Então, em qualquer passo em que ele não recebe nenhuma mensagem de i, j age como se eu tivesse enviado a ele o bit b.) O protocolo utiliza um contador \(\gamma\), representando quantas vezes seu loop de 3 etapas foi executado. No início do BBA⋆, \(\gamma\) = 0. (Pode-se pensar em \(\gamma\) como um contador global, mas na verdade é aumentado por cada jogador individual toda vez que o loop é executado.) Existem n \(\geq\)3t + 1, onde t é o número máximo possível de jogadores maliciosos. Um binário a string x é identificada com o inteiro cuja representação binária (com possíveis 0s iniciais) é x; e lsb(x) denota o bit menos significativo de x. Protocolo BBA⋆ (Comunicação) Etapa 1. [Coin-Fixed-To-0 Step] Cada jogador envia bi. 1.1 Se #1 i (0) \(\geq\)2t + 1, então i define bi = 0, envia 0∗, gera outi = 0, e PARA. 1.2 Se #1 i (1) \(\geq\)2t + 1, então, então i define bi = 1. 1.3 Caso contrário, i define bi = 0. (Comunicação) Etapa 2. [Coin-Fixed-To-1 Step] Cada jogador envia bi. 2.1 Se #2 i (1) \(\geq\)2t + 1, então i define bi = 1, envia 1∗, saídas outi = 1, e PARA. 2.2 Se #2 i (0) \(\geq\)2t + 1, então defino bi = 0. 2.3 Caso contrário, i define bi = 1. (Comunicação) Etapa 3. [Etapa da Moeda Genuinamente Invertida] Cada jogador i envia bi e SIGi(r, \(\gamma\)). 3.1 Se #3 i (0) \(\geq\)2t + 1, então i define bi = 0. 3.2 Se #3 i (1) \(\geq\)2t + 1, então i define bi = 1. 3.3 Caso contrário, deixando Si = {j \(\in\)N que enviou i uma mensagem adequada nesta etapa 3}, i define bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); aumenta \(\gamma\)i em 1; e retorna ao Passo 1. Teorema 3.1. Sempre que n \(\geq\)3t + 1, BBA⋆é um protocolo binário (n, t)-BA com solidez 1. Uma prova do Teorema 3.1 é dada em [26]. Sua adaptação ao nosso ambiente e sua capacidade de substituição do jogador propriedade são novos. Observação histórica Protocolos BA binários probabilísticos foram propostos pela primeira vez por Ben-Or em configurações assíncronas [7]. O protocolo BBA⋆é uma nova adaptação, para nossa configuração de chave pública, do protocolo BA binário de Feldman e Micali [15]. Seu protocolo foi o primeiro a funcionar da maneira esperada. número constante de etapas. Funcionou fazendo com que os próprios jogadores implementassem uma moeda comum, uma noção proposta por Rabin, que a implementou por meio de uma parte externa confiável [32].3.5 Consenso Graduado e Protocolo GC Recordemos, para valores arbitrários, uma noção de consenso muito mais fraca do que o acordo bizantino. Definição 3.2. Seja P um protocolo no qual o conjunto de todos os jogadores é de conhecimento comum, e cada jogador i conhece em particular um valor inicial arbitrário v′ eu. Dizemos que P é um protocolo de consenso com classificação (n, t) se, em cada execução com n jogadores, em a maioria dos quais são maliciosos, todo jogador honesto pára de produzir um par de valor-grau (vi, gi), onde gi \(\in\){0, 1, 2}, de modo a satisfazer as três condições a seguir: 1. Para todos os jogadores honestos i e j, |gi −gj| \(\leq\)1. 2. Para todos os jogadores honestos i e j, gi, gj > 0 ⇒vi = vj. 3. Se v′ 1 = \(\cdots\) =v′ n = v para algum valor v, então vi = v e gi = 2 para todos os jogadores honestos i. Nota Histórica A noção de consenso graduado é simplesmente derivada daquela de consenso graduado. transmitido, apresentado por Feldman e Micali em [15], ao fortalecer a noção de um cruzado acordo, conforme introduzido por Dolev [12], e refinado por Turpin e Coan [33].8 Em [15], os autores também forneceram um protocolo de transmissão graduado em 3 etapas (n, t), gradecast, para n \(\geq\)3t+1. Um protocolo de transmissão graduado (n, t) mais complexo para n> 2t + 1 foi encontrado posteriormente por Katz e Koo [19]. O seguinte protocolo GC de duas etapas consiste nas duas últimas etapas do gradecast, expressas em nosso notação. Para enfatizar este fato, e para corresponder às etapas do protocolo Algorand ′ da seção 4.1, nós nomeie respectivamente 2 e 3 as etapas do GC. Protocolo GC Passo 2. Cada jogador envia v′ eu para todos os jogadores. Etapa 3. Cada jogador i envia a todos os jogadores a string x se e somente se #2 eu(x) \(\geq\)2t + 1. Determinação de saída. Cada jogador i gera o par (vi, gi) calculado da seguinte forma: • Se, para algum x, #3 i (x) \(\geq\)2t + 1, então vi = x e gi = 2. • Se, para algum x, #3 eu (x) \(\geq\)t + 1, então vi = x e gi = 1. • Caso contrário, vi = \(\bot\) e gi = 0. Teorema 3.2. Se n \(\geq\)3t + 1, então GC é um protocolo de transmissão com classificação (n, t). A prova segue imediatamente aquela da classificação do protocolo em [15] e, portanto, é omitida.9 8Em essência, num protocolo de transmissão gradual, (a) a entrada de cada jogador é a identidade de um distinto jogador, o remetente, que tem um valor arbitrário v como uma entrada privada adicional, e (b) as saídas devem satisfazer o mesmas propriedades 1 e 2 do consenso graduado, mais a seguinte propriedade 3′: se o remetente for honesto, então vi = v e gi = 2 para todos os jogadores honestos i. 9Na verdade, no protocolo deles, na etapa 1, o remetente envia seu próprio valor privado v para todos os jogadores, e cada jogador i deixa v' consisto no valor que ele realmente recebeu do remetente na etapa 1.3.6 O Protocolo BA⋆ Descrevemos agora o protocolo BA de valor arbitrário BA⋆por meio do protocolo BA binário BBA⋆e o protocolo de consenso graduado GC. Abaixo, o valor inicial de cada jogador i é v′ eu. Protocolo BA⋆ Etapas 1 e 2. Cada jogador i executa GC, na entrada v′ i, para calcular um par (vi, gi). Etapa 3, . . . Cada jogador i executa BBA⋆ - com entrada inicial 0, se gi = 2, e 1 caso contrário - então como calcular o bit outi. Determinação de saída. Cada jogador i gera vi, se outi = 0, e \(\bot\)caso contrário. Teorema 3.3. Sempre que n \(\geq\)3t + 1, BA⋆é um protocolo (n, t)-BA com solidez 1. Prova. Primeiro provamos a consistência e depois a concordância. Prova de consistência. Suponha que, para algum valor v \(\in\)V , v′ i = v. Então, pela propriedade 3 de consenso graduado, após a execução do GC, todos os jogadores honestos produzem (v, 2). Assim, 0 é a parte inicial de todos os jogadores honestos no final da execução do BBA⋆. Assim, pelo Acordo propriedade do acordo bizantino binário, ao final da execução de BA⋆, outi = 0 para todos os honestos jogadores. Isto implica que a saída de cada jogador honesto i em BA⋆é vi = v. ✷ Prova de acordo. Como BBA⋆é um protocolo BA binário, (A) outi = 1 para todo jogador honesto i, ou (B) outi = 0 para todos os jogadores honestos i. No caso A, todos os jogadores honestos produzem \(\bot\)em BA⋆ e, portanto, o acordo é válido. Considere agora o caso B. Em neste caso, na execução de BBA⋆, o bit inicial de pelo menos um jogador honesto i é 0. (Na verdade, se inicial de todos os jogadores honestos fosse 1, então, pela propriedade Consistência do BBA⋆, teríamos outj = 1 para todos os j honestos.) Assim, após a execução do GC, i gera o par (v, 2) para alguns valor v. Assim, pela propriedade 1 do consenso graduado, gj > 0 para todos os jogadores honestos j. Assim, por propriedade 2 do consenso graduado, vj = v para todos os jogadores honestos j. Isto implica que, no final do BA⋆, todo jogador honesto j produz v. Assim, o acordo também é válido no caso B. ✷ Como tanto a Consistência quanto o Acordo são válidos, BA⋆é um protocolo BA de valor arbitrário. Nota Histórica Turpin e Coan foram os primeiros a mostrar que, para n \(\geq\)3t+1, qualquer binário (n, t)-BA O protocolo pode ser convertido em um protocolo de valor arbitrário (n, t)-BA. O valor arbitrário de redução O acordo bizantino para o acordo bizantino binário via consenso gradual é mais modular e mais limpo e simplifica a análise do nosso protocolo Algorand Algorand ′. Generalizando BA⋆para uso em Algorand Algorand funciona mesmo quando toda a comunicação é via fofocando. Contudo, embora apresentado numa rede de comunicação tradicional e familiar, por assim dizer para permitir uma melhor comparação com o estado da técnica e uma compreensão mais fácil, o protocolo BA⋆works também em redes de fofoca. Na verdade, em nossas concretizações detalhadas de Algorand, iremos apresentá-lo diretamente para redes de fofocas. Devemos também salientar que satisfaz a substituibilidade do jogador propriedade que é crucial para que Algorand esteja seguro no modelo muito adversário previsto.

Qualquer protocolo substituível por jogador BA trabalhando em uma rede de comunicação de fofoca pode ser empregado com segurança dentro do sistema inventivo Algorand. Em particular, Micali e Vaikunthanatan estenderam o BA⋆ para trabalhar de forma muito eficiente também com uma maioria simples de jogadores honestos. Isso o protocolo também pode ser usado em Algorand.

Протокол 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.

Duas Modalidades de Algorand

Conforme discutido, em um nível muito alto, uma rodada de Algorand idealmente procede da seguinte forma. Primeiro, aleatoriamente o usuário selecionado, o líder, propõe e circula um novo bloco. (Este processo inclui inicialmente selecionando alguns líderes potenciais e depois garantindo que, pelo menos uma boa fração do tempo, um surge um único líder comum.) Em segundo lugar, um comitê de usuários selecionado aleatoriamente é selecionado e chega a um acordo bizantino sobre o bloco proposto pelo líder. (Este processo inclui que cada etapa do protocolo BA é executada por um comitê selecionado separadamente.) O bloco acordado é então assinado digitalmente por um determinado limite (TH) de membros do comitê. Essas assinaturas digitais são circulados para que todos tenham certeza de qual é o novo bloco. (Isto inclui a circulação do credencial dos signatários, e autenticando apenas o hash do novo bloco, garantindo que todos tem a garantia de aprender o bloco, uma vez que seu hash seja esclarecido.) Nas próximas duas seções, apresentamos duas modalidades de Algorand, Algorand ′ 1 e Algorand ′ 2, que funcionam sob a suposição da maioria dos usuários honestos. Na Seção 8 mostramos como adotar essas incorporações para trabalhar sob uma suposição de maioria honesta de dinheiro. Algorand ′ 1 prevê apenas que > 2/3 dos membros do comitê sejam honestos. Além disso, em Algorand ′ 1, o número de passos para chegar a um acordo bizantino é limitado a um nível adequadamente elevado número, de modo que é garantido que o acordo será alcançado com probabilidade esmagadora dentro de um número fixo de etapas (mas potencialmente exigindo mais tempo do que as etapas de Algorand ′ 2). No caso remoto em que o acordo ainda não foi alcançado na última etapa, a comissão concorda com a bloco vazio, que é sempre válido. Algorand ′ 2 prevê que o número de membros honestos em uma comissão seja sempre maior do que ou igual a um limite fixo tH (o que garante que, com probabilidade esmagadora, pelo menos 2/3 dos membros do comitê são honestos). Além disso, Algorand ′ 2 permite que o acordo bizantino ser alcançado em um número arbitrário de etapas (mas potencialmente em um tempo menor que Algorand ′ 1). É fácil derivar muitas variantes destas modalidades básicas. Em particular, é fácil, dado Algorand ′ 2, para modificar Algorand ′ 1, de modo a permitir chegar a um acordo bizantino de forma arbitrária número de etapas. Ambas as modalidades compartilham o seguinte núcleo, notações, noções e parâmetros comuns. 4.1 Um núcleo comum Objetivos Idealmente, para cada rodada r, Algorand satisfaria as seguintes propriedades: 1. Correção Perfeita. Todos os usuários honestos concordam com o mesmo bloco Br. 2. Completude 1. Com probabilidade 1, o conjunto de pagamentos de Br, PAY r, é máximo.10 10Como os conjuntos de pagamentos são definidos para conter pagamentos válidos e os usuários honestos para fazer apenas pagamentos válidos, um valor máximo PAY r contém os pagamentos “atualmente pendentes” de todos os usuários honestos.É claro que garantir a correção perfeita por si só é trivial: todo mundo sempre escolhe o modelo oficial. payset PAY r fique vazio. Mas neste caso, o sistema teria completude 0. Infelizmente, garantir tanto a correção perfeita quanto a integridade 1 não é fácil na presença de malware usuários. Algorand adota assim um objetivo mais realista. Informalmente, deixando h denotar a porcentagem de usuários honestos, h > 2/3, o objetivo de Algorand é Garantindo, com probabilidade esmagadora, correção perfeita e completude próxima de h. Privilegiar a correcção em detrimento da integralidade parece ser uma escolha razoável: os pagamentos não processados em uma rodada pode ser processada na próxima, mas deve-se evitar garfos, se possível. Acordo Bizantino Liderado A correção perfeita pode ser garantida da seguinte forma. No início da rodada r, cada usuário i constrói seu próprio bloco candidato Br i , e então todos os usuários alcançam o Byzantine acordo sobre um bloco candidato. De acordo com nossa introdução, o protocolo BA empregado requer uma maioria honesta de 2/3 e é substituível pelo jogador. Cada uma de suas etapas pode ser executada por um pequeno e conjunto de verificadores selecionados aleatoriamente, que não compartilham nenhuma variável interna. Infelizmente, esta abordagem não tem garantias de integridade. Isso ocorre porque o candidato blocos de usuários honestos são provavelmente totalmente diferentes uns dos outros. Assim, em última análise O bloco acordado pode sempre ser aquele com um conjunto de pagamentos não máximo. Na verdade, pode ser sempre o bloco vazio, B\(\varepsilon\), ou seja, o bloco cujo payset está vazio. bem, será o padrão, vazio. Algorand ′ evita esse problema de completude da seguinte maneira. Primeiro, um líder para a rodada r, \(\ell\)r, é selecionado. Então, \(\ell\)r propaga seu próprio bloco candidato, Br \(\ell\)r. Finalmente, os usuários chegam a um acordo sobre o bloqueio eles realmente recebem de \(\ell\)r. Porque, sempre que \(\ell\)r for honesto, perfeita correção e integridade 1 ambos são válidos, Algorand ′ garante que \(\ell\)r é honesto com probabilidade próxima de h. (Quando o líder é malicioso, não nos importamos se o bloco acordado é aquele com um conjunto de pagamentos vazio. Afinal, um o líder malicioso \(\ell\)r pode sempre escolher Br de forma maliciosa \(\ell\)r para ser o bloco vazio e, honestamente propagá-lo, forçando assim os usuários honestos a concordar com o bloco vazio.) Seleção de Líder Em Algorand's, o r-ésimo bloco tem a forma Br = (r, PAY r, Qr, H(Br−1). Como já mencionado na introdução, a quantidade Qr−1 é cuidadosamente construída de modo a ser essencialmente não manipulável pelo nosso poderoso Adversário. (Mais adiante nesta seção, iremos fornecer alguma intuição sobre por que isso acontece.) No início de uma rodada r, todos os usuários sabem o blockchain até agora, B0, . . . , Br−1, a partir do qual eles deduzem o conjunto de usuários de cada rodada anterior: que é, PK1, . . . , PKr−1. Um potencial líder da rodada r é um usuário i tal que .H SIGi r, 1, Qr−1 \(\leq\)p. Deixe-nos explicar. Observe que, como a quantidade Qr−1 faz parte do bloco Br−1, e o subjacente esquema de assinatura satisfaz a propriedade de exclusividade, SIGi r, 1, Qr−1 é uma string binária exclusivamente associado a i e r. Assim, como H é um oracle aleatório, H SIGi r, 1, Qr−1 é um aleatório de 256 bits string longa associada exclusivamente a i e r. O símbolo “.” na frente de H SIGi r, 1, Qr−1 é o ponto decimal (no nosso caso, binário), de modo que ri \(\triangleq\).H SIGi r, 1, Qr−1 é a expansão binária de um número aleatório de 256 bits entre 0 e 1 associado exclusivamente a i e r. Assim a probabilidade de que ri é menor ou igual a p é essencialmente p. (Nosso mecanismo de seleção de líderes potenciais tem sido inspirado no esquema de micropagamento de Micali e Rivest [28].) A probabilidade p é escolhida de modo que, com probabilidade esmagadora (ou seja, 1 −F), pelo menos um o verificador potencial é honesto. (Se for verdade, p é escolhido como a menor probabilidade.)Observe que, como i é o único capaz de calcular suas próprias assinaturas, só ele pode determinar se ele é um verificador potencial da primeira rodada. No entanto, ao revelar sua própria credencial, \(\sigma\)r eu \(\triangleq\)SIGi r, 1, Qr−1 , posso provar a qualquer um que sou um verificador potencial da rodada r. O líder \(\ell\)r é definido como o líder potencial cuja credencial hashed é menor que a hashed credencial de todos os outros líderes potenciais j: isto é, H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s j). Observe que, como um \(\ell\)r malicioso pode não revelar sua credencial, o líder correto da rodada r pode nunca será conhecido, e que, salvo laços improváveis, \(\ell\)r é de fato o único líder da rodada r. Vamos finalmente trazer um último mas importante detalhe: um usuário pode ser um líder em potencial (e, portanto, o líder) de uma rodada r somente se ele pertencer ao sistema por pelo menos k rodadas. Isso garante a não manipulabilidade de Qr e de todas as quantidades Q futuras. Na verdade, um dos potenciais líderes irá realmente determinar Qr. Seleção do Verificador Cada passo s > 1 da rodada r é executado por um pequeno conjunto de verificadores, SV r,s. Novamente, cada verificador i \(\in\)SV r,s é selecionado aleatoriamente entre os usuários já presentes no sistema k rodadas. antes de r, e novamente através da quantidade especial Qr−1. Especificamente, i \(\in\)PKr−k é um verificador em SV r,s, se .H SIGi r, s, Qr−1 \(\leq\)p′. Mais uma vez, só eu sei se ele pertence a SV r,s, mas, se for esse o caso, ele poderia provar isso exibindo sua credencial \(\sigma\)r,s eu \(\triangleq\)H(SIGi r, s, Qr−1 ). Um verificador i \(\in\)SV r,s envia uma mensagem, mr,s eu, em etapa s da rodada r, e esta mensagem inclui sua credencial \(\sigma\)r,s i , de modo a permitir que os verificadores do passo para reconhecer que o senhor,s eu é uma mensagem legítima de etapas. A probabilidade p′ é escolhida de modo a garantir que, em SV r,s, sendo #good o número de usuários honestos e #bad o número de usuários mal-intencionados, com grande probabilidade o seguinte duas condições são válidas. Para concretização Algorand ′ 1: (1) #bom > 2 \(\cdot\) #ruim e (2) #bom + 4 \(\cdot\) #ruim < 2n, onde n é a cardinalidade esperada de SV r,s. Para concretização Algorand ′ 2: (1) #bom > tH e (2) #bom + 2#ruim < 2tH, onde tH é um limite especificado. Estas condições implicam que, com probabilidade suficientemente alta, (a) na última etapa do BA protocolo, haverá pelo menos um determinado número de jogadores honestos para assinar digitalmente o novo bloco Br, (b) apenas um bloco por rodada poderá ter o número necessário de assinaturas, e (c) o BA utilizado o protocolo tem (em cada etapa) a maioria honesta necessária de 2/3. Esclarecendo a geração de blocos Se o líder da rodada r for honesto, então o bloco correspondente é da forma Br = r, PAGAR r, SIG\(\ell\)r Qr−1 , H Br−1 , onde o payset PAY r é máximo. (lembre-se de que todos os conjuntos de pagamentos são, por definição, válidos coletivamente.) Caso contrário (ou seja, se \(\ell\)r for malicioso), Br terá uma das duas formas possíveis a seguir: Br = r, PAGAR r, SIGi Qr-1 , H Br−1 e Br = Br \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H Br−1 .Na primeira forma, PAY r é um conjunto de pagamentos (não necessariamente máximo) e pode ser PAY r = \(\emptyset\); e eu sou um potencial líder da rodada r. (No entanto, posso não ser o líder \(\ell\)r. Isso pode realmente acontecer se \(\ell\)r mantém em segredo sua credencial e não se revela.) A segunda forma surge quando, na execução da rodada R do protocolo BA, todos os jogadores honestos produza o valor padrão, que é o bloco vazio Br \(\varepsilon\) em nossa aplicação. (Por definição, o possível as saídas de um protocolo BA incluem um valor padrão, genericamente denotado por \(\bot\). Consulte a seção 3.2.) Observe que, embora os paysets estejam vazios em ambos os casos, Br = r, \(\emptyset\), SIGi Qr-1 , H Br−1 e irmão \(\varepsilon\) são blocos sintaticamente diferentes e surgem em duas situações diferentes: respectivamente, “todos correu bem na execução do protocolo BA” e “algo deu errado no Protocolo BA, e o valor padrão foi gerado”. Vamos agora descrever intuitivamente como ocorre a geração do bloco Br na rodada r de Algorand ′. Na primeira etapa, cada jogador elegível, ou seja, cada jogador i \(\in\)PKr−k, verifica se é um potencial líder. Se for esse o caso, então me perguntam, usando todos os pagamentos que ele viu até agora, e o atual blockchain, B0, . . . , Br−1, para preparar secretamente um conjunto de pagamento máximo, PAY r eu, e secretamente monta seu bloco candidato, Br = r, PAGUE r eu, SIGi Qr-1 , H Br−1 . Isto é, ele não apenas incluir no Br i, como segundo componente o conjunto de pagamentos recém-preparado, mas também, como terceiro componente, sua própria assinatura de Qr−1, a terceira componente do último bloco, Br−1. Finalmente, ele propagou seu mensagem round-r-step-1, senhor,1 i , que inclui (a) seu bloco candidato Br eu, (b) sua assinatura adequada de seu bloco candidato (ou seja, sua assinatura do hash do Br i , e (c) sua própria credencial \(\sigma\)r,1 eu, provando que ele é de fato um verificador potencial da rodada r. (Observe que, até que um i honesto produza sua mensagem mr,1 i, o Adversário não tem ideia de que i é um verificador potencial. Se ele quiser corromper potenciais líderes honestos, o Adversário poderia muito bem jogadores honestos aleatórios corruptos. No entanto, uma vez que ele vê o Sr.,1 i , uma vez que contém a credencial de i, o O adversário sabe e pode corromper-me, mas não pode impedir o senhor,1 i , que é propagado viralmente, de atingindo todos os usuários do sistema.) Na segunda etapa, cada verificador selecionado j \(\in\)SV r,2 tenta identificar o líder da rodada. Especificamente, j usa as credenciais da etapa 1, \(\sigma\)r,1 i1 , . . . , \(\sigma\)r,1 in , contido na mensagem apropriada da etapa 1 mr,1 eu ele recebeu; hashes todos eles, ou seja, calcula H  \(\sigma\)r,1 e1  , . . . , H  \(\sigma\)r,1 em  ; encontra a credencial, \(\sigma\)r,1 \(\ell\)j , cujo hash é lexicograficamente mínimo; e considera \(\ell\)r j para ser o líder da rodada r. Lembre-se que cada credencial considerada é uma assinatura digital de Qr−1, que o SIGi r, 1, Qr−1 é determinado exclusivamente por i e Qr−1, que H é aleatório oracle e, portanto, cada H(SIGi r, 1, Qr−1 é uma longa string aleatória de 256 bits exclusiva para cada líder potencial i da rodada r. Disto podemos concluir que, se a string de 256 bits Qr-1 fosse ela mesma aleatória e independentemente selecionados, então seriam as credenciais hashed de todos os líderes potenciais da rodada r. Na verdade, todos líderes potenciais são bem definidos, assim como suas credenciais (sejam realmente computadas ou não). Além disso, o conjunto de líderes potenciais da rodada r é um subconjunto aleatório dos usuários da rodada r −k, e um líder potencial honesto eu sempre constrói e propaga adequadamente sua mensagem, Sr. eu, que contém a credencial de i. Assim, como o percentual de usuários honestos é h, não importa qual seja o potenciais líderes mal-intencionados possam fazer (por exemplo, revelar ou ocultar suas próprias credenciais), o mínimo A credencial de líder potencial hashed pertence a um usuário honesto, que é necessariamente identificado por todos ser o líder \(\ell\)r da rodada r. Conseqüentemente, se a string de 256 bits Qr-1 fosse ela mesma aleatória e selecionado independentemente, com probabilidade exatamente h (a) o líder \(\ell\)r é honesto e (b) \(\ell\)j = \(\ell\)r para todos verificadores honestos da etapa 2 j. Na realidade, as credenciais hashed são, sim, selecionadas aleatoriamente, mas dependem de Qr−1, que énão selecionados de forma aleatória e independente. Provaremos em nossa análise, entretanto, que Qr−1 é suficientemente não manipulável para garantir que o líder de uma rodada seja honesto com a probabilidade h′ suficientemente próximo de h: ou seja, h′ > h2(1 + h −h2). Por exemplo, se h = 80%, então h′ > 0,7424. Tendo identificado o líder da rodada (o que eles fazem corretamente quando o líder \(\ell\)r é honesto), a tarefa dos verificadores da etapa 2 é começar a executar o BA usando como valores iniciais o que eles acreditam ser o bloco do líder. Na verdade, para minimizar a quantidade de comunicação necessária, um verificador j \(\in\)SV r,2 não usa, como seu valor de entrada v′ j para o protocolo bizantino, o bloco Bj que ele realmente recebeu de \(\ell\)j (o usuário j acredita ser o líder), mas o líder, mas o hash desse bloco, ou seja, v′ j = H(Bi). Assim, após o término do protocolo BA, os verificadores da última etapa não calcula o bloco round-r desejado Br, mas calcula (autentica e propagar) H(Br). Assim, uma vez que H(Br) é assinado digitalmente por um número suficiente de verificadores do última etapa do protocolo BA, os usuários do sistema perceberão que H(Br) é o hash do novo bloco. Entretanto, eles também devem recuperar (ou esperar, já que a execução é bastante assíncrona) o próprio bloco Br, que o protocolo garante que está realmente disponível, não importa o que o Adversário poderia fazer. Assincronia e Tempo Algorand ′ 1 e Algorand ′ 2 têm um grau significativo de assincronia. Isso ocorre porque o Adversário tem grande liberdade para programar a entrega das mensagens que estão sendo enviadas. propagado. Além disso, quer o número total de passos numa ronda seja limitado ou não, há a variância contribui com o número de passos realmente dados. Assim que ele souber dos certificados de B0, . . . , Br−1, um usuário i calcula Qr−1 e começa a trabalhar na rodada r, verificando se ele é um líder em potencial ou um verificador em algumas etapas da rodada r. Supondo que devo agir na etapa s, à luz da assincronia discutida, baseio-me em vários estratégias para garantir que ele tenha informações suficientes antes de agir. Por exemplo, ele pode esperar para receber pelo menos um determinado número de mensagens dos verificadores de passo anterior, ou esperar um tempo suficiente para garantir que ele receba as mensagens de pessoas suficientemente muitos verificadores da etapa anterior. O Seed Qr e o Parâmetro Look-Back k Lembre-se que, idealmente, as quantidades Qr deveriam aleatórios e independentes, embora seja suficiente que sejam suficientemente não manipuláveis por o Adversário. À primeira vista, poderíamos escolher Qr−1 para coincidir com H PAGUE r−1 , e assim evitar especifique Qr−1 explicitamente em Br−1. Uma análise elementar revela, contudo, que utilizadores maliciosos podem aproveitar esse mecanismo de seleção.11 Alguns esforços adicionais mostram que miríades de outros 11Estamos no início da rodada r −1. Assim, Qr−2 = PAY r−2 é conhecido publicamente, e o Adversário é privado sabe quem são os líderes potenciais que ele controla. Suponha que o Adversário controle 10% dos usuários, e que, com probabilidade muito alta, um usuário malicioso w é o líder potencial da rodada r −1. Ou seja, suponha que H SIGw r −2, 1, Qr −2 é tão pequeno que é altamente improvável que um líder potencial honesto seja realmente o líder da rodada r −1. (Lembre-se que, uma vez que escolhemos líderes potenciais através de um mecanismo secreto de classificação criptográfica, o Adversário não sabe quem são os líderes potenciais honestos.) O Adversário, portanto, está na invejável posição de escolher o conjunto de pagamentos PAY ′ que ele deseja, e torná-lo o conjunto de pagamentos oficial da rodada r −1. No entanto, ele pode fazer mais. Ele também pode garantir que, com alta probabilidade, () um de seus usuários maliciosos será o líder também da rodada r, para que ele possa escolher livremente qual será o PAY r. (E assim por diante. Pelo menos por um longo tempo, isto é, contanto que esses eventos de alta probabilidade realmente ocorram.) Para garantir (), o Adversário age da seguinte forma. Vamos PAGAR' seja o conjunto de pagamentos que o Adversário prefere para a rodada r −1. Então, ele calcula H(PAY ′) e verifica se, para algum o jogador já malicioso z, SIGz(r, 1, H(PAY ′)) é particularmente pequeno, ou seja, pequeno o suficiente para que com valores muito altos probabilidade z será o líder da rodada r. Se for esse o caso, então ele instrui w a escolher seu bloco candidato a seralternativas, baseadas em quantidades de blocos tradicionais, são facilmente exploráveis pelo Adversário para garantir que líderes maliciosos são muito frequentes. Em vez disso, definimos específica e indutivamente nossa marca nova quantidade Qr para poder provar que ela não é manipulável pelo Adversário. Ou seja, Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), se Br não for o bloco vazio, e Qr \(\triangleq\)H(Qr−1, r) caso contrário. A intuição de por que esta construção de Qr funciona é a seguinte. Suponha por um momento que Qr−1 é verdadeiramente selecionado de forma aleatória e independente. Então, será assim Qr? Quando \(\ell\)r é honesto, o a resposta é (grosso modo) sim. Isto é assim porque H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256 é uma função aleatória. Quando \(\ell\)r é malicioso, entretanto, Qr não é mais definido univocamente a partir de Qr−1 e \(\ell\)r. Existem pelo menos dois valores separados para Qr. Um continua a ser Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), e o outro é H(Qr−1, r). Vamos primeiro argumentar que, embora a segunda escolha seja um tanto arbitrária, uma segunda escolha é absolutamente obrigatória. A razão para isso é que um \(\ell\)r malicioso sempre pode causar blocos candidatos totalmente diferentes a serem recebidos pelos verificadores honestos da segunda etapa.12 Uma vez for esse o caso, é fácil garantir que o bloco finalmente acordado através do protocolo BA de round r será o padrão e, portanto, não conterá a assinatura digital de Qr-1 de ninguém. Mas o sistema deve continuar e, para isso, precisa de um líder para a rodada r. Se este líder for automaticamente e selecionado abertamente, então o Adversário irá corrompê-lo trivialmente. Se for selecionado pelo anterior Qr−1 através do mesmo processo, então \(\ell\)r será novamente o líder na rodada r+1. Propomos especificamente usam o mesmo mecanismo secreto de classificação criptográfica, mas aplicado a uma nova quantidade Q: a saber, H(Qr−1, r). Ter essa quantidade como a saída de H garante que a saída seja aleatória, e incluindo r como a segunda entrada de H, enquanto todos os outros usos de H têm uma ou mais de 3 entradas, “garante” que tal Qr seja selecionado de forma independente. Novamente, nossa escolha específica da alternativa Qr não importa, o que importa é que \(\ell\)r tem duas opções para Qr e, portanto, ele pode dobrar suas chances ter outro usuário mal-intencionado como o próximo líder. As opções para Qr podem ser ainda mais numerosas para o Adversário que controla um \(\ell\)r malicioso. Por exemplo, sejam x, y e z três líderes potenciais maliciosos da rodada r, tais que H \(\sigma\)r,1 x  < H \(\sigma\)r,1 sim  < H \(\sigma\)r,1 z  e H  \(\sigma\)r,1 z  é particularmente pequeno. Isto é, tão pequeno que há uma boa chance de que H  \(\sigma\)r,1 z  é menor da credencial hashed de todo líder potencial honesto. Então, pedindo a x para esconder seu credencial, o Adversário tem uma boa chance de fazer com que y se torne o líder da rodada r −1. Isto implica que ele tem outra opção para Qr: a saber, SIGy Qr-1 . Da mesma forma, o Adversário pode peça a x e y que retenham suas credenciais, de modo que z se torne o líder da rodada r −1 e ganhando outra opção para Qr: a saber, SIGz Qr-1 . É claro, porém, que cada uma dessas e outras opções tem uma chance diferente de zero de falhar, porque o O adversário não pode prever o hash das assinaturas digitais dos usuários potenciais honestos. Br−1 eu = (r −1, PAY ′, H(Br−2). Caso contrário, ele tem dois outros usuários maliciosos x e y para continuar gerando um novo pagamento \(\wp\)′, de um para outro, até que, para algum usuário malicioso z (ou mesmo para algum usuário fixo z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) é particularmente pequeno também. Esta experiência irá parar rapidamente. E quando isso acontece, o Adversário pede que você proponha o bloco candidato Br−1 eu = (r −1, PAGUE ′ \(\cup\){\(\wp\)}, H(Br−2). 12Por exemplo, para simplificar (mas extremo), “quando o tempo da segunda etapa estiver prestes a expirar”, \(\ell\)r poderia enviar por e-mail diretamente um bloco candidato Bi diferente para cada usuário i. Dessa forma, sejam quem forem os verificadores da etapa 2, eles terá recebido blocos totalmente diferentes.Uma análise cuidadosa, semelhante à cadeia de Markov, mostra que, independentemente das opções que o Adversário escolha fazer na rodada r −1, desde que ele não possa injetar novos usuários no sistema, ele não poderá diminuir o probabilidade de um usuário honesto ser o líder da rodada r + 40 muito abaixo de h. Esta é a razão que exigimos que os potenciais líderes da rodada r sejam usuários já existentes na rodada r −k. É uma forma de garantir que, na rodada r −k, o Adversário não possa alterar muito a probabilidade de que um usuário honesto se torna o líder da rodada r. Na verdade, não importa quais usuários ele adicione ao sistema nas rodadas r −k até r, eles são inelegíveis para se tornarem líderes em potencial (e a fortiori o líder) da rodada r. Assim, o parâmetro de lookback k é, em última análise, um parâmetro de segurança. (Embora, como veremos na seção 7, também pode ser uma espécie de “parâmetro de conveniência”.) Chaves Efêmeras Embora a execução do nosso protocolo não possa gerar um fork, exceto com probabilidade desprezível, o Adversário poderia gerar uma bifurcação, no bloco r, após o legítimo o bloco r foi gerado. Grosso modo, uma vez gerado Br, o Adversário sabe quem são os verificadores de cada etapa. da rodada r são. Assim, ele poderia corromper todos eles e obrigá-los a certificar um novo bloco f Ir. Como esse bloco falso pode ser propagado somente após o bloco legítimo, os usuários que foram prestar atenção não seria enganado.13 No entanto, f Br estaria sintaticamente correto e nós deseja evitar que seja fabricado. Fazemos isso por meio de uma nova regra. Essencialmente, os membros do conjunto verificador SV r,s de uma etapa s da rodada r use chaves públicas efêmeras pkr,s eu para assinar digitalmente suas mensagens. Essas chaves são de uso único e suas chaves secretas correspondentes skr,s eu são destruídos uma vez usados. Dessa forma, se um verificador for corrompido mais tarde, o Adversário não pode forçá-lo a assinar qualquer outra coisa que ele não tenha assinado originalmente. Naturalmente, devemos garantir que seja impossível para o Adversário calcular uma nova chave g pr,s eu e convencer um usuário honesto de que é a chave efêmera correta do verificador i \(\in\)SV r,s para usar na etapa s. 4.2 Resumo comum de notações, noções e parâmetros Notações • r \(\geq\)0: o número da rodada atual. • s \(\geq\)1: o número do passo atual na rodada r. • Br: bloco gerado na rodada r. • PKr: o conjunto de chaves públicas no final da rodada r −1 e no início da rodada r. • Sr: o status do sistema no final da rodada r −1 e no início da rodada r.14 • PAY r: o payset contido no Br. • \(\ell\)r: líder da rodada r. \(\ell\)r escolhe o payset PAY r da rodada r (e determina o próximo Qr). • Qr: a semente da rodada r, uma quantidade (ou seja, string binária) que é gerada no final da rodada r e é usado para escolher verificadores para a rodada r + 1. Qr é independente dos paysets nos blocos e não pode ser manipulado por \(\ell\)r. 13Considere corromper o âncora de uma grande rede de TV e produzir e transmitir hoje um noticiário mostrando a secretária Clinton vencendo a última eleição presidencial. A maioria de nós reconheceria isso como uma farsa. Mas alguém que sai do coma pode ser enganado. 14Num sistema que não é síncrono, a noção de “fim da ronda r −1” e “início da ronda r” precisam ser cuidadosamente definidos. Matematicamente, PKr e Sr são calculados a partir do status inicial S0 e dos blocos B1, . . . , Br−1.• SV r,s: o conjunto de verificadores escolhidos para a etapa s da rodada r. • SV r: o conjunto de verificadores escolhidos para a rodada r, SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s e HSV r,s: respectivamente, o conjunto de verificadores maliciosos e o conjunto de verificadores honestos em SV r,s. MSV r,s \(\cup\)HSV r,s = SV r,s e MSV r,s ∩HSV r,s = \(\emptyset\). • n1 \(\in\)Z+ e n \(\in\)Z+: respectivamente, os números esperados de potenciais líderes em cada SV r,1, e os números esperados de verificadores em cada SV r,s, para s > 1. Observe que n1 << n, já que precisamos de pelo menos um membro honesto e honesto em SV r,1, mas pelo menos uma maioria de membros honestos em cada SV r,s para s > 1. • h \(\in\)(0, 1): uma constante maior que 2/3. h é o índice de honestidade no sistema. Ou seja, o fração de usuários honestos ou dinheiro honesto, dependendo da suposição utilizada, em cada PKr é pelo menos h. • H: uma função criptográfica hash, modelada como uma oracle aleatória. • \(\bot\): Uma string especial do mesmo comprimento que a saída de H. • F \(\in\)(0, 1): parâmetro que especifica a probabilidade de erro permitida. Uma probabilidade \(\leq\)F é considerada “desprezível”, e uma probabilidade \(\geq\)1 −F é considerada “esmagadora”. • ph \(\in\)(0, 1): a probabilidade de o líder de uma rodada r, \(\ell\)r, ser honesto. Idealmente ph = h. Com a existência do Adversário, o valor de ph será determinado na análise. • k \(\in\)Z+: o parâmetro de retrospectiva. Ou seja, a rodada r −k é onde os verificadores da rodada r estão escolhido entre —ou seja, SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): para o primeiro passo da rodada r, um usuário da rodada r −k é escolhido para estar em SV r,1 com probabilidade p1 \(\triangleq\) n1 |P Kr−k|. • p \(\in\)(0, 1): para cada passo s > 1 da rodada r, um usuário da rodada r −k é escolhido para estar em SV r,s com probabilidade p \(\triangleq\) n |P Kr−k|. • CERT r: o certificado para Br. É um conjunto de assinaturas tH de H(Br) de verificadores apropriados em rodada R. • Br \(\triangleq\)(Br, CERT r) é um bloco comprovado. Um usuário i conhece Br se possuir (e verificar com sucesso) ambas as partes do bloco provado. Observe que o CERT visto por diferentes usuários pode ser diferente. • τr i: a hora (local) em que um usuário i conhece Br. No protocolo Algorand cada usuário tem seu próprio relógio. Os relógios de diferentes usuários não precisam ser sincronizados, mas devem ter a mesma velocidade. Apenas para efeitos de análise, consideramos um relógio de referência e medimos a velocidade dos jogadores. tempos relacionados em relação a ele. • \(\alpha\)r,s eu e \(\beta\)r,s i : respectivamente o horário (local) em que um usuário i inicia e termina sua execução da Etapa s de rodada R. • Λ e \(\lambda\): essencialmente, os limites superiores para, respectivamente, o tempo necessário para executar a Etapa 1 e o tempo necessário para qualquer outra etapa do protocolo Algorand. O parâmetro Λ limita superiormente o tempo para propagar um único bloco de 1 MB. (Em nossa notação, Λ = \(\lambda\) \(\rho\),1MB. Lembrando nossa notação, que definimos \(\rho\) = 1 para simplificar, e que os blocos são escolhido para ter no máximo 1 MB, temos Λ = \(\lambda\)1,1,1MB.) 15A rigor, “r −k” deveria ser “max{0, r −k}”.O parâmetro \(\lambda\) limita o tempo para propagar uma pequena mensagem por verificador em uma Etapa s > 1. (Usando, como em Bitcoin, assinaturas de curvas elípticas com chaves de 32B, uma mensagem do verificador tem 200B de comprimento. Assim, em nossa notação, \(\lambda\) = \(\lambda\)n,\(\rho\),200B.) Assumimos que Λ = O(\(\lambda\)). Noções • Seleção do verificador. Para cada rodada r e etapa s > 1, SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p}. Cada o usuário i \(\in\)PKr−k calcula privadamente sua assinatura usando sua chave de longo prazo e decide se i \(\in\)SV r,s ou não. Se i \(\in\)SV r,s, então SIGi(r, s, Qr−1) é a credencial de i(r, s), denotada de forma compacta por \(\sigma\)r,s eu. Para a primeira etapa da rodada r, SV r,1 e \(\sigma\)r,1 eu são definidos de forma semelhante, com p substituído por p1. O verificadores em SV r,1 são líderes em potencial. • Seleção de líderes. O usuário i \(\in\)SV r,1 é o líder da rodada r, denotado por \(\ell\)r, se H(\(\sigma\)r,1 eu) \(\leq\)H(\(\sigma\)r,1 j) para todo potencial líderes j \(\in\)SV r,1. Sempre que os hashes das credenciais de dois jogadores são comparados, no improvável Em caso de empate, o protocolo sempre rompe o vínculo lexicograficamente de acordo com o (público de longo prazo chaves dos) líderes potenciais. Por definição, o valor hash da credencial do jogador \(\ell\)r também é o menor entre todos os usuários em PKr-k. Observe que um líder potencial não pode decidir privadamente se ele é o líder ou não, sem ver as credenciais dos outros líderes potenciais. Como os valores de hash são uniformes aleatoriamente, quando SV r,1 não é vazio, \(\ell\)r sempre existe e é honesto com probabilidade pelo menos h. O parâmetro n1 é grande o suficiente para garantir que cada SV r,1 não é vazio com probabilidade esmagadora. • Estrutura de bloco. Um bloco não vazio tem a forma Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)), e um bloco vazio é da forma Br ǫ = (r, \(\emptyset\), Qr−1, H(Br−1)). Observe que um bloco não vazio ainda pode conter um conjunto de pagamentos PAY r vazio, se nenhum pagamento ocorrer em nesta rodada ou se o líder for malicioso. No entanto, um bloco não vazio implica que a identidade de \(\ell\)r, sua credencial \(\sigma\)r,1 \(\ell\)r e SIG\(\ell\)r(Qr−1) foram todos revelados em tempo hábil. O protocolo garante que, se o líder for honesto, então o bloco não estará vazio com uma probabilidade esmagadora. • Semente Qr. Se Br não for vazio, então Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), caso contrário Qr \(\triangleq\)H(Qr−1, r). Parâmetros • Relações entre vários parâmetros. — Os verificadores e potenciais líderes da rodada r são selecionados entre os usuários do PKr−k, onde k é escolhido de modo que o Adversário não possa prever Qr−1 na rodada r −k −1 com probabilidade melhor que F: caso contrário, ele poderá introduzir usuários maliciosos para a rodada r −k, todos os quais serão potenciais líderes/verificadores na rodada r, tendo sucesso em

ter um líder malicioso ou uma maioria maliciosa em SV r,s para algumas etapas desejadas por ele. — Para a Etapa 1 de cada rodada r, n1 é escolhido de modo que com probabilidade esmagadora, SV r,1 ̸= \(\emptyset\). • Exemplos de escolhas de parâmetros importantes. — As saídas de H têm 256 bits. — h = 80%, n1 = 35. — Λ = 1 minuto e \(\lambda\) = 10 segundos. • Inicialização do protocolo. O protocolo começa no tempo 0 com r = 0. Como não existe “B−1” ou “CERT −1”, sintaticamente B−1 é um parâmetro público com seu terceiro componente especificando Q−1, e todos os usuários conheça B−1 no tempo 0.

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

Как уже говорилось, на очень высоком уровне раунд 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 ′

1 Nesta seção, construímos uma versão de Algorand ′ trabalhando sob a seguinte suposição. Suposição da maioria honesta dos usuários: Mais de 2/3 dos usuários em cada PKr são honestos. Na Seção 8, mostramos como substituir a suposição acima pela desejada Maioria Honesta de Suposição de dinheiro. 5.1 Notações e parâmetros adicionais Notações • m \(\in\)Z+: número máximo de passos no protocolo BA binário, múltiplo de 3. • Lr \(\leq\)m/3: uma variável aleatória que representa o número de tentativas de Bernoulli necessárias para ver um 1, quando cada tentativa é 1 com probabilidade ph 2 e há no máximo m/3 tentativas. Se todas as tentativas falharem então Lr\(\triangleq\)m/3. Lr será usado para limitar o tempo necessário para gerar o bloco Br. • tH = 2n 3 + 1: o número de assinaturas necessárias nas condições finais do protocolo. • CERT r: o certificado para Br. É um conjunto de assinaturas tH de H(Br) de verificadores apropriados em rodada R. Parâmetros • Relações entre vários parâmetros. — Para cada passo s > 1 da rodada r, n é escolhido de modo que, com probabilidade esmagadora, |HSV r,s| > 2|MSV r,s| e |HSV r,s| + 4|MSV r,s| <2n. Quanto mais próximo de 1 for o valor de h, menor será n. Em particular, usamos (variantes de) Chernoffbounds para garantir que as condições desejadas se mantenham com uma probabilidade esmagadora. — m é escolhido de modo que Lr < m/3 com probabilidade esmagadora. • Exemplos de escolhas de parâmetros importantes. — F = 10−12. — n \(\approx\)1500, k = 40 e m = 180.5.2 Implementando chaves efêmeras em Algorand ′ 1 Como já mencionado, desejamos que um verificador i \(\in\)SV r,s assine digitalmente sua mensagem mr,s eu de passo s na rodada r, relativo a uma chave pública efêmera pkr,s i , usando uma chave secreta efêmera skr,s eu isso ele destrói prontamente após o uso. Portanto, precisamos de um método eficiente para garantir que cada usuário possa verifique se pkr,s eu é de fato a chave a ser usada para verificar a assinatura do senhor,s eu. Fazemo-lo através de um (da melhor forma do nosso conhecimento) novo uso de esquemas de assinatura baseados em identidade. Em um nível elevado, em tal esquema, uma autoridade central A gera uma chave mestra pública, PMK, e uma chave mestra secreta correspondente, SMK. Dada a identidade, U, de um jogador U, A calcula, via SMK, um skU de chave de assinatura secreta relativo à chave pública U, e fornece skU de forma privada para U. (Na verdade, em um esquema de assinatura digital baseado em identidade, a chave pública de um usuário U é o próprio U!) Desta forma, se A destruir o SMK após calcular as chaves secretas dos usuários que ele deseja habilitar para produz assinaturas digitais e não mantém nenhuma chave secreta computada, então U é o único que pode assinar digitalmente mensagens relativas à chave pública U. Assim, qualquer pessoa que saiba o “nome de U”, conhece automaticamente a chave pública de U e, portanto, pode verificar as assinaturas de U (possivelmente usando também o chave mestra pública PMK). Em nossa aplicação, a autoridade A é o usuário i, e o conjunto de todos os usuários possíveis U coincide com o par de passos redondos (r, s) em —digamos— S = {i}\(\times\){r′, . . . , r′ +106}\(\times\){1, . . . , m+3}, onde r′ é um dado rodada e m + 3 o limite superior para o número de etapas que podem ocorrer dentro de uma rodada. Isto caminho, pkr,s eu \(\triangleq\)(i, r, s), para que todos vejam a assinatura de i SIGr,s pkr,s eu (sr.,s i) pode, com esmagadora probabilidade, verifique-a imediatamente para o primeiro milhão de rodadas r após r′. Em outras palavras, primeiro gero PMK e SMK. Em seguida, ele divulga que PMK é o mestre do i chave pública para qualquer rodada r \(\in\)[r′, r′ + 106], e usa SMK para produzir e armazenar o segredo de forma privada chave skr,s eu para cada triplo (i, r, s) \(\in\)S. Feito isso, ele destrói SMK. Se ele determinar que não está parte de SV r,s, então posso deixar skr,s eu sozinho (já que o protocolo não exige que ele autentique qualquer mensagem na Etapa s da rodada r). Caso contrário, primeiro uso skr,s eu para assinar digitalmente sua mensagem, Sr. eu, e então destrói skr,s eu. Observe que posso divulgar sua primeira chave mestra pública quando ele entrar no sistema pela primeira vez. Isto é, o mesmo pagamento \(\wp\)que traz i para o sistema (em uma rodada r′ ou em uma rodada próxima de r′), também pode especifique, a pedido de i, que a chave mestra pública de i para qualquer rodada r \(\in\)[r′, r′ + 106] é PMK - por exemplo, por incluindo um par da forma (PMK, [r′, r′ + 106]). Observe também que, como m + 3 é o número máximo de passos em uma rodada, assumindo que uma rodada leva um minuto, o estoque de chaves efêmeras assim produzido durará quase dois anos. Ao mesmo tempo, essas chaves secretas efêmeras não levarão muito tempo para serem produzidas. Usando uma curva elíptica baseada sistema com chaves de 32B, cada chave secreta é computada em alguns microssegundos. Assim, se m + 3 = 180, então, todas as 180 milhões de chaves secretas podem ser computadas em menos de uma hora. Quando a rodada atual estiver se aproximando de r′ + 106, para lidar com o próximo milhão de rodadas, i gera um novo par (PMK′, SMK′) e informa qual é seu próximo estoque de chaves efêmeras —por exemplo— fazer com que SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) insira um novo bloco, seja como um “transação” separada ou como alguma informação adicional que faz parte de um pagamento. Ao fazer isso, i informa a todos que devem usar PMK′ para verificar as assinaturas efêmeras de i no próximo milhões de rodadas. E assim por diante. (Observe que, seguindo esta abordagem básica, outras formas de implementar chaves efêmeras sem o uso de assinaturas baseadas em identidade é certamente possível. Por exemplo, via Merkle trees.16) 16Neste método, i gera um par de chaves públicas-secretas (pkr,s eu, skr,s eu ) para cada par de etapas redondas (r, s) em —digamos—Outras maneiras de implementar chaves efêmeras são certamente possíveis — por exemplo, via Merkle trees. 5.3 Correspondendo às etapas de Algorand ′ 1 com os de BA⋆ Como dissemos, uma rodada em Algorand ′ 1 tem no máximo m + 3 passos. Passo 1. Nesta etapa, cada líder potencial i calcula e propaga seu bloco candidato Br eu, juntamente com sua própria credencial, \(\sigma\)r,1 eu. Lembre-se de que esta credencial identifica explicitamente i. Isto é assim porque \(\sigma\)r,1 eu \(\triangleq\)SIGi(r, 1, Qr−1). O verificador potencial i também propaga, como parte de sua mensagem, sua assinatura digital própria de H(Br eu). Não se tratando de um pagamento ou de uma credencial, esta assinatura de i é relativa ao seu efêmero público chave pkr,1 i: isto é, ele propaga sigpkr,1 eu (H(Br eu)). Dadas as nossas convenções, em vez de propagar o Br eu e sigpkr,1 eu (H(Br i)), ele poderia ter SIGpkr propagado,1 eu (H(Br eu)). No entanto, na nossa análise, precisamos de ter acesso explícito a sigpkr,1 eu (H(Br eu)). Etapa 2. Nesta etapa, cada verificador i define \(\ell\)r eu serei o líder em potencial cuja credencial hashed é o menor e Br i será o bloco proposto por \(\ell\)r eu. Como, por uma questão de eficiência, desejar concordar com H(Br), em vez de diretamente com Br, i propaga a mensagem que ele teria propagado na primeira etapa de BA⋆com valor inicial v′ eu = H(Br eu). Ou seja, ele propaga v′ eu, depois de assiná-lo efêmeramente, é claro. (Nomeadamente, depois de assiná-lo relativamente ao direito efémero chave pública, que neste caso é pkr,2 i.) Claro, também transmito sua própria credencial. Como a primeira etapa de BA⋆consiste na primeira etapa do protocolo de consenso graduado GC, Etapa 2 de Algorand ′ corresponde ao primeiro passo do GC. Passo 3. Neste passo, cada verificador i \(\in\)SV r,2 executa o segundo passo de BA⋆. Ou seja, ele envia o mesma mensagem que ele teria enviado na segunda etapa do GC. Novamente, a mensagem de i é efêmera assinado e acompanhado da credencial do i. (De agora em diante, deixaremos de dizer que um verificador assina efêmeramente sua mensagem e também propaga sua credencial.) Etapa 4. Nesta etapa, cada verificador i \(\in\)SV r,4 calcula a saída de GC, (vi, gi), e efêmeramente assina e envia a mesma mensagem que teria enviado na terceira etapa do BA⋆, ou seja, no primeiro passo do BBA⋆, com bit inicial 0 se gi = 2, e 1 caso contrário. Etapa s = 5, . . . , m + 2. Tal passo, se alguma vez alcançado, corresponde ao passo s −1 de BA⋆ e, portanto, a etapa s −3 do BBA⋆. Como nosso modelo de propagação é suficientemente assíncrono, devemos levar em conta a possibilidade que, no meio de tal passo s, um verificador i \(\in\)SV r,s é alcançado por informações que o comprovam aquele bloco Br já foi escolhido. Neste caso, i interrompe sua própria execução da rodada r de Algorand ′ e começa a executar suas instruções round-(r + 1). {r', . . . , r′ + 106} \(\times\) {1, . . . , m + 3}. Então ele ordena essas chaves públicas de forma canônica, armazena a j-ésima chave pública digita a j-ésima folha de um Merkle tree e calcula o valor da raiz Ri, que ele divulga. Quando ele quer assinar uma mensagem relativa à chave pkr,s eu , não apenas forneço a assinatura real, mas também o caminho de autenticação para pkr,s eu em relação a Ri. Observe que este caminho de autenticação também prova que pkr,s eu é armazenado na j-ésima folha. O resto do detalhes podem ser facilmente preenchidos.Assim, as instruções de um verificador i \(\in\)SV r,s, além das instruções correspondentes para a Etapa s −3 do BBA⋆, inclui a verificação se a execução do BBA⋆ foi interrompida em um momento anterior Passo s′. Como o BBA⋆ só pode parar em uma etapa fixada em moeda em 0 ou em uma etapa fixada em moeda em 1, o instruções distinguem se A (Condição Final 0): s′ −2 ≡0 mod 3, ou B (Condição Final 1): s′ −2 ≡1 mod 3. Na verdade, no caso A, o bloco Br não está vazio e, portanto, são necessárias instruções adicionais para garantir que i reconstrói Br adequadamente, juntamente com seu certificado adequado CERT r. No caso B, o bloco Br está vazio e, portanto, i é instruído a definir Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), e para calcular CERT r. Se, durante a execução do passo s, i não vir nenhuma evidência de que o bloco Br já tenha foi gerado, então ele envia a mesma mensagem que teria enviado na etapa s −3 do BBA⋆. Passo m + 3. Se, durante o passo m + 3, i \(\in\)SV r,m+3 vê que o bloco Br já foi gerado em uma etapa anterior s′, então ele prossegue conforme explicado acima. Caso contrário, em vez de enviar a mesma mensagem que ele teria enviado na etapa m do BBA⋆, i é instruído, com base nas informações em sua posse, a calcular Br e seu correspondente certificado CERT r. Lembre-se, de fato, que limitamos em m + 3 o número total de etapas de uma rodada. 5.4 O protocolo real Lembre-se que, em cada passo s de uma rodada r, um verificador i \(\in\)SV r,s usa seu par de chaves secretas públicas de longo prazo para produzir sua credencial, \(\sigma\)r,s eu \(\triangleq\)SIGi(r, s, Qr−1), bem como SIGi Qr-1 no caso s = 1. Verificador i usa sua chave secreta efêmera skr,s eu para assinar sua mensagem (r, s) mr,s eu. Por simplicidade, quando r e s são claro, escrevemos esigi(x) em vez de sigpkr,s i (x) para denotar a assinatura efêmera adequada de um valor de i x na etapa s da rodada r e escreva ESIGi(x) em vez de SIGpkr,s i (x) para denotar (i, x, esigi (x)). Etapa 1: bloquear proposta Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 1 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,1 ou não. • Se i /\(\in\)SV r,1, então i interrompe imediatamente a sua própria execução do Passo 1. • Se i \(\in\)SV r,1, ou seja, se i for um líder em potencial, então ele recebe os pagamentos da rodada r que foram foi propagado para ele até agora e calcula um conjunto de pagamento máximo PAY r eu deles. A seguir, ele calcula seu “bloco de candidatos” Br eu = (r, PAGAR r eu, SIGi(Qr−1), H(Br−1)). Finalmente, ele calcula a mensagem senhor,1 eu = (Br eu , esigi(H(Br eu )), \(\sigma\)r,1 i ), destrói sua chave secreta efêmera skr,1 eu, e então propaga senhor,1 eu.Observação. Na prática, para encurtar a execução global do Passo 1, é importante que o (r, 1)- as mensagens são propagadas seletivamente. Ou seja, para cada usuário i no sistema, para o primeiro (r, 1)- mensagem que ele recebe e verifica com sucesso,17 o jogador i a propaga normalmente. Para todos os outras mensagens (r, 1) que o jogador i recebe e verifica com sucesso, ele as propaga apenas se o hash o valor da credencial que contém é o menor entre os valores hash das credenciais contidas em todas as mensagens (r, 1) que ele recebeu e verificou com sucesso até agora. Além disso, como sugerido por Georgios Vlachos, é útil que cada líder potencial i também propague sua credencial \(\sigma\)r,1 eu separadamente: essas pequenas mensagens viajam mais rápido que os blocos, garantem a propagação oportuna do mr,1 j's onde as credenciais contidas têm valores hash pequenos, enquanto fazem aquelas com valores hash grandes desaparecer rapidamente. Etapa 2: A primeira etapa do GC do protocolo de consenso graduado Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 2 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,2 ou não. • Se i /\(\in\)SV r,2 então i interrompe imediatamente a sua própria execução do Passo 2. • Se i \(\in\)SV r,2, então depois de esperar um período de tempo t2 \(\triangleq\) \(\lambda\) + Λ, i age da seguinte forma. 1. Ele encontra o usuário \(\ell\) tal que H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) para todas as credenciais \(\sigma\)r,1 j que fazem parte as mensagens (r, 1) verificadas com sucesso que ele recebeu até agora.a 2. Se ele recebeu de \(\ell\) uma mensagem válida mr,1 \(\ell\) = (Br \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),b então eu defino v' eu \(\triangleq\)H(Br \(\ell\)); caso contrário, eu defino v′ eu \(\triangleq\) \(\bot\). 3. eu calculo a mensagem senhor,2 eu \(\triangleq\)(ESIGi(v′ eu), \(\sigma\)r,2 i ),c destrói sua chave secreta efêmera skr,2 i , e então propaga mr,2 eu. aEssencialmente, o usuário i decide em particular que o líder da rodada r é o usuário \(\ell\). bNovamente, as assinaturas do jogador \(\ell\) e os hashes foram todos verificados com sucesso e PAGUE r \(\ell\)no Brasil \(\ell\)é um conjunto de pagamento válido para rodada r - embora eu não verifique se PAY r \(\ell\)é máximo para \(\ell\)ou não. cA mensagem senhor,2 eu sinaliza que o jogador i considera v′ i é o hash do próximo bloco, ou considera o próximo bloco fique vazio. 17Ou seja, todas as assinaturas estão corretas e tanto o bloco quanto seu hash são válidos —embora eu não verifique se o conjunto de pagamentos incluído é máximo para o seu proponente ou não.

Etapa 3: A segunda etapa do GC Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 3 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,3 ou não. • Se i /\(\in\)SV r,3, então i interrompe imediatamente a sua própria execução do Passo 3. • Se i \(\in\)SV r,3, então depois de esperar um período de tempo t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ, i age da seguinte forma. 1. Se existe um valor v′ ̸= \(\bot\)tal que, entre todas as mensagens válidas mr,2 j ele recebeu, mais de 2/3 deles são da forma (ESIGj(v′), \(\sigma\)r,2 j ), sem qualquer contradição,a então ele calcula a mensagem mr,3 eu \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 eu). Caso contrário, ele calcula mr,3 eu \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 eu). 2. eu destruo sua chave secreta efêmera skr,3 i , e então propaga mr,3 eu. aOu seja, ele não recebeu duas mensagens válidas contendo ESIGj(v′) e um ESIGj(v′′) diferente respectivamente, de um jogador j. Aqui e daqui em diante, exceto nas Condições Finais definidas posteriormente, sempre que um jogador honesto deseja mensagens de um determinado formato, mensagens contraditórias nunca são contadas ou consideradas válidas.Etapa 4: Resultado do GC e a primeira etapa do BBA⋆ Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 4 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,4 ou não. • Se i /\(\in\)SV r,4, então i his interrompe imediatamente a execução do Passo 4. • Se i \(\in\)SV r,4, então depois de esperar um período de tempo t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ, i age da seguinte forma. 1. Ele calcula vi e gi, a saída do GC, como segue. (a) Se existe um valor v′ ̸= \(\bot\)tal que, entre todas as mensagens válidas mr,3 j ele tem recebidos, mais de 2/3 deles são da forma (ESIGj(v′), \(\sigma\)r,3 j ), então ele define vi \(\triangleq\)v′ e gi \(\triangleq\)2. (b) Caso contrário, se existir um valor v′ ̸= \(\bot\)tal que, entre todas as mensagens válidas senhor,3 j ele recebeu, mais de 1/3 deles são da forma (ESIGj(v′), \(\sigma\)r,3 j), então ele define vi \(\triangleq\)v′ e gi \(\triangleq\)1.a (c) Caso contrário, ele define vi \(\triangleq\)H(Br ǫ ) e gi \(\triangleq\)0. 2. Ele calcula bi, a entrada de BBA⋆, como segue: bi \(\triangleq\)0 se gi = 2, e bi \(\triangleq\)1 caso contrário. 3. Ele calcula a mensagem mr,4 eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), destrói seu efêmero chave secreta skr,4 i , e então propaga mr,4 eu. aPode-se provar que v′ no caso (b), se existir, deve ser único.

Etapa s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Uma etapa de BBA⋆ com moeda fixada em 0 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir da terceira componente de Br−1 e verifica se i \(\in\)SV r,s. • Se i /\(\in\)SV r,s, então i interrompe imediatamente a sua própria execução do Passo s. • Se i \(\in\)SV r,s então ele age da seguinte forma. – Ele espera até que um período de tempo ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ tenha passado. – Condição Final 0: Se, durante essa espera e em qualquer momento, existir uma string v ̸= \(\bot\)e um passo s′ tal que (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda em 0, (b) recebi pelo menos tH = 2n 3 + 1 mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),a e (c) recebi uma mensagem válida senhor,1 j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) com v = H(Br j ), então, eu interrompo sua própria execução do Passo s (e de fato da rodada r) imediatamente, sem propagar qualquer coisa; define Br = Br j; e define seu próprio CERT r como o conjunto de mensagens senhor,s′−1 j da subetapa (b).b – Condição Final 1: Se, durante essa espera e em qualquer momento, existir um passo s′ tal que (a') 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda para 1, e (b') i recebeu pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),c então, eu interrompo sua própria execução do Passo s (e de fato da rodada r) imediatamente, sem propagar qualquer coisa; define Br = Br ǫ; e define seu próprio CERT r como o conjunto de mensagens senhor,s′−1 j da subetapa (b'). – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele define vi como o voto majoritário dos vj nos segundos componentes de todos os votos válidos. senhor,s−1 j é o que ele recebeu. Ele calcula bi da seguinte maneira. Se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)0. Caso contrário, se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)1. Caso contrário, ele define bi \(\triangleq\)0. Ele computa a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), destrói seu efêmero chave secreta skr,s i e então propaga mr,s eu. aEssa mensagem do jogador j é contada mesmo que o jogador i também tenha recebido uma mensagem de j assinando por 1. Coisas semelhantes para a Condição Final 1. Conforme mostrado na análise, isso é feito para garantir que todos os usuários honestos saibam Br dentro do tempo \(\lambda\) um do outro. bO usuário i agora conhece Br e seus próprios acabamentos de rodada. Ele ainda ajuda a propagar mensagens como um usuário genérico, mas não inicia nenhuma propagação como um verificador (r, s). Em particular, ele ajudou a propagar todas as mensagens em seu CERT r, o que é suficiente para o nosso protocolo. Observe que ele também deve definir bi \(\triangleq\)0 para o protocolo BA binário, mas bi não é necessário neste caso de qualquer maneira. Coisas semelhantes para todas as instruções futuras. cNeste caso, não importa quais são os vj’s.Etapa s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Uma etapa de BBA⋆ fixada em moeda para 1 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,s ou não. • Se i /\(\in\)SV r,s, então i interrompe imediatamente a sua própria execução do Passo s. • Se i \(\in\)SV r,s então ele faz o seguinte. – Ele espera até que um período de tempo ts \(\triangleq\)(2s −3)\(\lambda\) + Λ tenha passado. – Condição Final 0: As mesmas instruções das etapas Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções das etapas Coin-Fixed-To-0. – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele define vi como o voto majoritário dos vj nos segundos componentes de todos os votos válidos. senhor,s−1 j é o que ele recebeu. Ele calcula bi da seguinte maneira. Se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)0. Caso contrário, se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)1. Caso contrário, ele define bi \(\triangleq\)1. Ele computa a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), destrói seu efêmero chave secreta skr,s i e então propaga mr,s eu.

Etapa s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Uma etapa de BBA⋆ com moeda genuinamente invertida Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,s ou não. • Se i /\(\in\)SV r,s, então i interrompe imediatamente a sua própria execução do Passo s. • Se i \(\in\)SV r,s então ele faz o seguinte. – Ele espera até que um período de tempo ts \(\triangleq\)(2s −3)\(\lambda\) + Λ tenha passado. – Condição Final 0: As mesmas instruções das etapas Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções das etapas Coin-Fixed-To-0. – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele define vi como o voto majoritário dos vj nos segundos componentes de todos os votos válidos. senhor,s−1 j é o que ele recebeu. Ele calcula bi da seguinte maneira. Se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)0. Caso contrário, se mais de 2/3 de todos os mr,s−1 válidos j que ele recebeu são da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele define bi \(\triangleq\)1. Caso contrário, seja SV r,s−1 eu ser o conjunto de (r, s −1)-verificadores dos quais ele recebeu um valor válido mensagem senhor,s-1 j . Ele define bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 eu H(\(\sigma\)r,s−1 j )). Ele computa a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), destrói seu efêmero chave secreta skr,s i e então propaga mr,s eu.

Etapa m + 3: A última etapa do BBA⋆a Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa m + 3 da rodada r assim que ele conhece Br−1. • O usuário i calcula Qr−1 a partir do terceiro componente de Br−1 e verifica se i \(\in\)SV r,m+3 ou não. • Se i /\(\in\)SV r,m+3, então i interrompe imediatamente a sua própria execução do Passo m + 3. • Se i \(\in\)SV r,m+3 então ele faz o seguinte. – Ele espera até que um período de tempo tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ tenha passado. – Condição Final 0: As mesmas instruções das etapas Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções das etapas Coin-Fixed-To-0. – Caso contrário, ao final da espera, o usuário i faz o seguinte. Ele definei \(\triangleq\)1 e Br \(\triangleq\)Br ǫ. Ele calcula a mensagem mr,m+3 eu = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 eu ), destrói seu chave secreta efêmera skr,m+3 eu , e então propaga mr,m+3 eu para certificar Br.b aCom probabilidade esmagadora, BBA⋆terminou antes desta etapa e especificamos esta etapa para completude. bUm certificado da Etapa m + 3 não precisa incluir ESIGi(outi). Nós o incluímos apenas por uniformidade: o os certificados agora têm um formato uniforme, independentemente da etapa em que são gerados.Reconstrução do Bloco Round-r por Não-Verificadores Instruções para cada usuário i no sistema: O usuário i inicia sua própria rodada r assim que souber Br−1, e espera pelas informações do bloco como segue. – Se, durante essa espera e em qualquer momento, existir uma string v e um passo s′ tal isso (a) 5 \(\leq\)s′ \(\leq\)m + 3 com s′ −2 ≡0 mod 3, (b) recebi pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) e (c) recebi uma mensagem válida senhor,1 j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) com v = H(Br j ), então, i interrompe imediatamente sua própria execução da rodada r; define Br = Br j; e define seu próprio CERT r ser o conjunto de mensagens mr,s′−1 j do subpasso (b). – Se, durante essa espera e em qualquer momento, existir uma etapa s′ tal que (a') 6 \(\leq\)s′ \(\leq\)m + 3 com s′ −2 ≡1 mod 3, e (b') i recebeu pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ), então, i interrompe imediatamente sua própria execução da rodada r; define Br = Br ǫ; e define seu próprio CERT r ser o conjunto de mensagens mr,s′−1 j da subetapa (b'). – Se, durante essa espera e em qualquer momento, recebi pelo menos mensagens válidas senhor,m+3 j = (ESIGj(1), ESIGj(H(Br ǫ )), \(\sigma\)r,m+3 j ), então eu interrompo sua própria execução da rodada r imediatamente, define Br = Br ǫ , e define seu próprio CERT r como o conjunto de mensagens mr,m+3 j por 1 e H(Br ǫ). 5.5 Análise de Algorand ′ 1 Introduzimos as seguintes notações para cada rodada r \(\geq\)0, utilizada na análise. • Seja T r o momento em que o primeiro usuário honesto conhece Br−1. • Seja Ir+1 o intervalo [T r+1, T r+1 + \(\lambda\)]. Observe que T 0 = 0 pela inicialização do protocolo. Para cada s \(\geq\)1 e i \(\in\)SV r,s, lembre-se que ar,s eu e \(\beta\)r,s eu são respectivamente o horário de início e o horário de término da etapa s do jogador i. Além disso, lembre-se que ts = (2s −3)\(\lambda\) + Λ para cada 2 \(\leq\)s \(\leq\)m + 3. Além disso, sejam I0 \(\triangleq\){0} e t1 \(\triangleq\)0. Finalmente, lembre-se que Lr \(\leq\)m/3 é uma variável aleatória que representa o número de tentativas de Bernoulli precisava ver um 1, quando cada tentativa é 1 com probabilidade ph 2 e há no máximo m/3 tentativas. Se tudo as tentativas falham então Lr \(\triangleq\)m/3. Na análise ignoramos o tempo de cálculo, pois é de facto insignificante em relação ao tempo necessário para propagar mensagens. Em qualquer caso, usando \(\lambda\) e Λ ligeiramente maiores, o tempo de cálculo pode ser incorporado diretamente na análise. A maioria das declarações abaixo são sustentadas “com esmagadora probabilidade”, e não podemos enfatizar repetidamente esse fato na análise.5.6 Teorema Principal Teorema 5.1. As seguintes propriedades são válidas com probabilidade esmagadora para cada rodada r \(\geq\)0: 1. Todos os usuários honestos concordam com o mesmo bloco Br. 2. Quando o líder \(\ell\)r é honesto, o bloco Br é gerado por \(\ell\)r, Br contém um conjunto de pagamentos máximo recebido por \(\ell\)r no tempo \(\alpha\)r,1 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ e todos os usuários honestos conhecem Br na época intervalo Ir+1. 3. Quando o líder \(\ell\)r é malicioso, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. 4. ph = h2(1 + h −h2) para Lr, e o líder \(\ell\)r é honesto com probabilidade pelo menos ph. Antes de provar nosso teorema principal, façamos duas observações. Observações. • Geração de blocos e latência real. O tempo para gerar o bloco Br é definido como T r+1 −T r. Ou seja, é definido como a diferença entre a primeira vez que um usuário honesto aprende Br e a primeira vez que algum usuário honesto aprende Br−1. Quando o líder da rodada é honesto, a Propriedade 2 é nossa o teorema principal garante que o tempo exato para gerar Br é 8\(\lambda\) + Λ tempo, não importa o que o valor preciso de h > 2/3 pode ser. Quando o líder é malicioso, a Propriedade 3 implica que o o tempo esperado para gerar Br é limitado por (12 ph + 10)\(\lambda\) + Λ, novamente não importa a precisão valor de h.18 Entretanto, o tempo esperado para gerar Br depende do valor preciso de h. Na verdade, pela Propriedade 4, ph = h2(1 + h −h2) e o líder é honesto com probabilidade pelo menos ph, portanto E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8\(\lambda\) + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)\(\lambda\) + Λ). Por exemplo, se h = 80%, então E[T r+1 −T r] \(\leq\)12,7\(\lambda\) + Λ. • \(\lambda\) versus Λ. Observe que o tamanho das mensagens enviadas pelos verificadores em uma etapa Algorand ′ é dominado pelo comprimento das chaves de assinatura digital, que podem permanecer fixas, mesmo quando o número de usuários é enorme. Observe também que, em qualquer passo s > 1, o mesmo número esperado n de verificadores pode ser usado se o número de usuários for 100 mil, 100 milhões ou 100 milhões. Isso ocorre porque n apenas depende de h e F. Em suma, portanto, salvo uma necessidade repentina de aumentar o comprimento da chave secreta, o valor de \(\lambda\) deve permanecer o mesmo, não importa quão grande seja o número de usuários no futuro previsível. Por outro lado, para qualquer taxa de transação, o número de transações cresce com o número de usuários. Portanto, para processar todas as novas transações em tempo hábil, o tamanho de um bloco deve também cresce com o número de usuários, fazendo com que Λ também cresça. Assim, no longo prazo, deveríamos ter \(\lambda\) << Λ. Conseqüentemente, é apropriado ter um coeficiente maior para \(\lambda\) e, na verdade, um coeficiente de 1 para Λ. Prova do Teorema 5.1. Provamos as Propriedades 1–3 por indução: assumindo que elas são válidas para a rodada r −1 (sem perda de generalidade, eles são válidos automaticamente para “rodada -1” quando r = 0), nós os provamos para rodada R. 18De fato, E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10)\(\lambda\) + Λ.Como Br−1 é definido exclusivamente pela hipótese indutiva, o conjunto SV r,s é definido exclusivamente para cada etapa s da rodada r. Pela escolha de n1, SV r,1 ̸= \(\emptyset\)com probabilidade esmagadora. Nós agora enuncie os dois lemas a seguir, provados nas Seções 5.7 e 5.8. Durante toda a indução e em nas provas dos dois lemas, a análise para a rodada 0 é quase a mesma que a etapa indutiva, e destacaremos as diferenças quando elas ocorrerem. Lema 5.2. [Lema da completude] Assumindo que as propriedades 1–3 são válidas para a rodada r−1, quando o líder \(\ell\)r é honesto, com probabilidade esmagadora, • Todos os usuários honestos concordam com o mesmo bloco Br, que é gerado por \(\ell\)r e contém um valor máximo conjunto de pagamentos recebido por \(\ell\)r no tempo \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; e • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. Lema 5.3. [Lema de Solidez] Assumindo que as Propriedades 1–3 são válidas para a rodada r −1, quando o líder \(\ell\)r é malicioso, com probabilidade esmagadora, todos os usuários honestos concordam com o mesmo bloco Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. As propriedades 1–3 são válidas aplicando os Lemas 5.2 e 5.3 a r = 0 e à etapa indutiva. Finalmente, reafirmamos a Propriedade 4 como o seguinte lema, provado na Seção 5.9. Lema 5.4. Dadas as propriedades 1–3 para cada rodada antes de r, ph = h2(1 + h −h2) para Lr, e o o líder \(\ell\)r é honesto com probabilidade de pelo menos ph. Combinando os três lemas acima, o Teorema 5.1 é válido. ■ O lema abaixo afirma várias propriedades importantes sobre o round r dado o indutivo hipótese, e será usada nas provas dos três lemas acima. Lema 5.5. Suponha que as propriedades 1–3 sejam válidas para a rodada r −1. Para cada etapa s \(\geq\)1 da rodada r e cada verificador honesto i \(\in\)HSV r,s, temos que (a) \(\alpha\)r,s eu \(\in\)Ir; (b) se o jogador i esperou um período de tempo ts, então \(\beta\)r,s eu \(\in\)[T r + ts, T r + \(\lambda\) + ts] para r > 0 e \(\beta\)r,s eu = ts para r = 0; e (c) se o jogador i esperou um período de tempo ts, então no tempo \(\beta\)r,s eu, ele recebeu todas as mensagens enviado por todos os verificadores honestos j \(\in\)HSV r,s′ para todas as etapas s′ < s. Além disso, para cada passo s \(\geq\)3, temos que (d) não existem dois jogadores diferentes i, i′ \(\in\)SV r,s e dois valores diferentes v, v′ do mesmo duração, tal que ambos os jogadores esperaram um período de tempo ts, mais de 2/3 de todos os mensagens válidas senhor,s−1 j jogador que recebo assinou por v, e mais de 2/3 de todos os válidos mensagens senhor,s-1 j o jogador que i′ recebe assinou por v′. Prova. A propriedade (a) segue diretamente da hipótese indutiva, pois o jogador i conhece Br−1 no intervalo de tempo Ir e inicia seus próprios passos imediatamente. A propriedade (b) segue diretamente de (a): uma vez que jogador i esperou um certo tempo ts antes de agir, \(\beta\)r,s eu = \(\alpha\)r,s eu + ts. Observe que \(\alpha\)r,s eu = 0 para r = 0. Provamos agora a Propriedade (c). Se s = 2, então pela Propriedade (b), para todos os verificadores j \(\in\)HSV r,1 temos \(\beta\)r,s eu = \(\alpha\)r,s eu + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j +Λ.Como cada verificador j \(\in\)HSV r,1 envia sua mensagem no tempo \(\beta\)r,1 j e a mensagem chega a todos os honestos usuários em no máximo Λ tempo, por tempo \(\beta\)r,s eu jogador i recebeu as mensagens enviadas por todos os verificadores em HSV r,1 conforme desejado. Se s > 2, então ts = ts−1 + 2\(\lambda\). Pela Propriedade (b), para todas as etapas s′ < s e todos os verificadores j \(\in\)HSV r,s′, \(\beta\)r,s eu = \(\alpha\)r,s eu + ts \(\geq\)T r + ts = T r + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = T r + \(\lambda\) + ts′ + \(\lambda\) \(\geq\) \(\beta\)r,s′ j +\(\lambda\). Como cada verificador j \(\in\)HSV r,s′ envia sua mensagem no tempo \(\beta\)r,s′ j e a mensagem chega a todos os honestos usuários em no máximo \(\lambda\) tempo, por tempo \(\beta\)r,s eu jogador i recebeu todas as mensagens enviadas por todos os verificadores honestos em HSV r,s′ para todo s′ < s. Assim, a Propriedade (c) é válida. Finalmente, provamos a Propriedade (d). Observe que os verificadores j \(\in\)SV r,s−1 sinalizam no máximo duas coisas em Etapa s −1 usando suas chaves secretas efêmeras: um valor vj do mesmo comprimento que a saída do Função hash, e também um bit bj \(\in\){0, 1} se s −1 \(\geq\)4. É por isso que no enunciado do lema exigimos que v e v′ tenham o mesmo comprimento: muitos verificadores podem ter assinado um valor hash v e um bit b, portanto, ambos ultrapassam o limite de 2/3. Suponha, por contradição, que existam os verificadores desejados i, i′ e os valores v, v′. Observe que alguns verificadores maliciosos no MSV r,s−1 podem ter assinado v e v′, mas cada um deles honesto O verificador em HSV r,s−1 assinou no máximo um deles. Pela propriedade (c), tanto i quanto i′ receberam todas as mensagens enviadas por todos os verificadores honestos em HSV r,s−1. Seja HSV r,s−1(v) o conjunto de verificadores honestos (r, s −1) que assinaram v, MSV r,s−1 eu o conjunto de verificadores maliciosos (r, s −1) dos quais i recebeu uma mensagem válida, e MSV r,s−1 eu (v) o subconjunto de MSV r,s−1 eu de quem recebi uma assinatura de mensagem válida v. Pelos requisitos para eu e v, temos razão \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 eu (v)| |HSV r,s−1| + |MSV r,s−1 eu |

2 3. (1) Nós primeiro mostramos |MSV r,s−1 eu (v)| \(\leq\)|HSV r,s−1(v)|. (2) Supondo o contrário, pelas relações entre os parâmetros, com probabilidade esmagadora |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 eu |, assim razão < |HSV r,s−1(v)| + |MSV r,s−1 eu (v)| 3|MSV r,s−1 eu | < 2|MSV r,s−1 eu (v)| 3|MSV r,s−1 eu | \(\leq\)2 3, contradizendo a desigualdade 1. A seguir, pela Desigualdade 1 temos 2|HSV r,s−1| + 2|MSV r,s−1 eu | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 eu (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 eu | + |MSV r,s−1 eu (v)|. Combinando com a Desigualdade 2, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 eu (v)| \(\leq\)4|HSV r,s−1(v)|, o que implica |HSV r,s−1(v)| > 1 2|HSV r,s−1|.Da mesma forma, pelos requisitos para i′ e v′, temos |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. Como um verificador honesto j \(\in\)HSV r,s−1 destrói sua chave secreta efêmera skr,s−1 j antes de propagar sua mensagem, o Adversário não pode falsificar a assinatura de j para um valor que j não assinou, após aprendendo que j é um verificador. Assim, as duas desigualdades acima implicam |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|, uma contradição. Consequentemente, os desejados i, i′, v, v′ não existem, e A propriedade (d) é válida. ■ 5.7 O lema da completude Lema 5.2. [Lema da completude, reformulado] Assumindo que as propriedades 1–3 são válidas para a rodada r−1, quando o líder \(\ell\)r é honesto, com probabilidade esmagadora, • Todos os usuários honestos concordam com o mesmo bloco Br, que é gerado por \(\ell\)r e contém um valor máximo conjunto de pagamentos recebido por \(\ell\)r no tempo \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; e • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. Prova. Pela hipótese indutiva e Lema 5.5, para cada etapa s e verificador i \(\in\)HSV r,s, ar,s eu \(\in\)Ir. Abaixo analisamos o protocolo passo a passo. Etapa 1. Por definição, todo verificador honesto i \(\in\)HSV r,1 propaga a mensagem desejada mr,1 eu em tempo \(\beta\)r,1 eu = \(\alpha\)r,1 eu, onde senhor,1 eu = (Br eu , esigi(H(Br eu )), \(\sigma\)r,1 eu), irmão eu = (r, PAGAR r eu, SIGi(Qr−1), H(Br−1)), e PAGUE r i é um conjunto de pagamentos máximo entre todos os pagamentos que vi até o momento \(\alpha\)r,1 eu. Etapa 2. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,2. Pelo Lema 5.5, quando o jogador i termina esperando no tempo \(\beta\)r,2 eu = \(\alpha\)r,2 eu + t2, ele recebeu todas as mensagens enviadas pelos verificadores em HSV r,1, incluindo senhor,1 \(\ell\)r. Pela definição de \(\ell\)r, não existe outro jogador em PKr−k cuja credencial seja hash valor é menor que H(\(\sigma\)r,1 \(\ell\)r). Claro, o Adversário pode corromper \(\ell\)r depois de ver que H(\(\sigma\)r,1 \(\ell\)r) é muito pequeno, mas a essa altura o jogador \(\ell\)r destruiu sua chave efêmera e a mensagem mr,1 \(\ell\)r foi propagado. Assim, o verificador i define seu próprio líder como o jogador \(\ell\)r. Assim, no tempo \(\beta\)r,2 eu, verificador i propaga mr,2 eu = (ESIGi(v′ eu), \(\sigma\)r,2 eu), onde v′ eu = H(Br \(\ell\)r). Quando r = 0, a única diferença é que \(\beta\)r,2 eu = t2 em vez de estar em um intervalo. Coisas semelhantes podem ser ditas para passos futuros e não os enfatizarei novamente. Etapa 3. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,3. Pelo Lema 5.5, quando o jogador i termina esperando no tempo \(\beta\)r,3 eu = \(\alpha\)r,3 eu + t3, ele recebeu todas as mensagens enviadas pelos verificadores em HSV r,2. Pelas relações entre os parâmetros, com probabilidade esmagadora |HSV r,2| > 2|MSV r,2|. Além disso, nenhum verificador honesto assinaria mensagens contraditórias, e o Adversário não pode falsificar a assinatura de um verificador honesto depois que este último tiver destruído seu correspondente chave secreta efêmera. Assim, mais de 2/3 de todas as mensagens (r, 2) válidas que recebi são de verificadores honestos e da forma mr,2 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,2 j ), sem contradição. Assim, no tempo \(\beta\)r,3 eu jogador i propaga mr,3 eu = (ESIGi(v′), \(\sigma\)r,3 eu ), onde v′ = H(Br \(\ell\)r).Etapa 4. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,4. Pelo Lema 5.5, o jogador i recebeu todos mensagens enviadas pelos verificadores no HSV r,3 quando ele termina de esperar no tempo \(\beta\)r,4 eu = \(\alpha\)r,4 eu +t4. Semelhante a Etapa 3, mais de 2/3 de todas as mensagens (r, 3) válidas que recebi são de verificadores honestos e da forma senhor,3 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,3 j). Assim, o jogador i define vi = H(Br \(\ell\)r), gi = 2 e bi = 0. No tempo \(\beta\)r,4 eu = \(\alpha\)r,4 eu +t4 ele propaga senhor,4 eu = (ESIGi(0), ESIGi(H(Br \(\ell\)r)), \(\sigma\)r,4 eu). Etapa 5. Fixe arbitrariamente um verificador honesto i \(\in\)HSV r,5. Pelo Lema 5.5, jogador eu teria recebeu todas as mensagens enviadas pelos verificadores no HSV r,4 se ele esperou até o tempo \(\alpha\)r,5 eu + t5. Observe que |HSV r,4| \(\geq\)tH.19 Observe também que todos os verificadores em HSV r,4 assinaram para H(Br \(\ell\)r). Como |MSV r,4| < tH, não existe v′ ̸= H(Br \(\ell\)r) que poderia ter sido assinado por tH verificadores em SV r,4 (que seriam necessariamente maliciosos), então o jogador i não para antes de ter recebeu mensagens válidas mr,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,4 j). Seja T o momento em que o último evento acontece. Algumas dessas mensagens podem ser de jogadores maliciosos, mas porque |MSV r,4| < tH, pelo menos um deles é de um verificador honesto em HSV r,4 e é enviado após o tempo Tr+t4. Assim, T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, e no momento T o jogador i também recebeu a mensagem senhor,1 \(\ell\)r. Pela construção do protocolo, o jogador i para no tempo \(\beta\)r,5 eu = T sem propagar qualquer coisa; define Br = Br \(\ell\)r; e define seu próprio CERT r como o conjunto de (r, 4) mensagens para 0 e H(Br \(\ell\)r) que ele recebeu. Etapa s > 5. Da mesma forma, para qualquer passo s > 5 e qualquer verificador i \(\in\)HSV r,s, o jogador i teria recebeu todas as mensagens enviadas pelos verificadores no HSV r,4 se ele esperou até o tempo \(\alpha\)r,s eu + ts. Pelo mesma análise, jogador i para sem propagar nada, configurando Br = Br \(\ell\)r (e definindo seu próprio CERT r corretamente). É claro que os verificadores maliciosos podem não parar e podem propagar mensagens, mas porque |MSV r,s| <tH, por indução nenhum outro v′ poderia ser assinado pelos verificadores tH em qualquer passo 4 \(\leq\)s′ < s, portanto, os verificadores honestos só param porque receberam o valor válido (r, 4)-mensagens para 0 e H(Br \(\ell\)r). Reconstrução do Bloco Round-r. A análise do Passo 5 aplica-se a uma abordagem honesta genérica. usuário eu quase sem nenhuma alteração. Na verdade, o jogador i inicia sua própria rodada r no intervalo Ir e só irá parar no instante T quando tiver recebido tH mensagens válidas (r, 4) para H(Br \(\ell\)r). Novamente porque pelo menos uma dessas mensagens é de verificadores honestos e é enviada após o tempo T r + t4, o jogador i tem também recebeu senhor,1 \(\ell\)r pelo tempo T. Assim, ele define Br = Br \(\ell\)r com o CERT r adequado. Resta apenas mostrar que todos os usuários honestos terminam sua rodada r dentro do intervalo de tempo Ir+1. Pela análise da Etapa 5, todo verificador honesto i \(\in\)HSV r,5 conhece Br em ou antes de \(\alpha\)r,5 eu + t5 \(\leq\) Tr + \(\lambda\) + t5 = Tr + 8\(\lambda\) + Λ. Como T r+1 é o momento em que o primeiro usuário honesto conhece Br, temos T r+1 \(\leq\)T r + 8\(\lambda\) + Λ conforme desejado. Além disso, quando o jogador conhece o Br, ele já ajudou a propagar as mensagens em seu CERT r. Observe que todas essas mensagens serão recebidas por todos os usuários honestos dentro do tempo \(\lambda\), mesmo que 19Estritamente falando, isto acontece com uma probabilidade muito elevada, mas não necessariamente esmagadora. No entanto, isso a probabilidade afeta ligeiramente o tempo de execução do protocolo, mas não afeta sua correção. Quando h = 80%, então |HSV r,4| \(\geq\)tH com probabilidade 1 −10−8. Se este evento não ocorrer, o protocolo continuará por mais um 3 etapas. Como a probabilidade de isso não ocorrer em duas etapas é insignificante, o protocolo terminará na Etapa 8. Em expectativa, então, o número de etapas necessárias é quase 5.player ir foi o primeiro player a propagá-los. Além disso, seguindo a análise acima, temos T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, portanto, todos os usuários honestos receberam mr,1 \(\ell\)r por tempo T r+1 + \(\lambda\). Assim, todos os usuários honestos conhecem Br no intervalo de tempo Ir+1 = [T r+1, T r+1 + \(\lambda\)]. Finalmente, para r = 0 temos na verdade T 1 \(\leq\)t4 + \(\lambda\) = 6\(\lambda\) + Λ. Combinando tudo junto, O lema 5.2 é válido. ■ 5.8 O Lema da Solidez Lema 5.3. [Lema da Solidez, reformulado] Assumindo que as Propriedades 1–3 são válidas para a rodada r −1, quando o líder \(\ell\)r é malicioso, com grande probabilidade, todos os usuários honestos concordam com o mesmo bloco Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1. Prova. Consideramos as duas partes do protocolo, GC e BBA⋆, separadamente. GC. Pela hipótese indutiva e pelo Lema 5.5, para qualquer passo s \(\in\){2, 3, 4} e qualquer passo honesto verificador i \(\in\)HSV r,s, quando o jogador i atua no tempo \(\beta\)r,s eu = \(\alpha\)r,s eu +ts, ele recebeu todas as mensagens enviadas por todos os verificadores honestos nas etapas s′ < s. Distinguimos dois casos possíveis para o passo 4. Caso 1. Nenhum verificador i \(\in\)HSV r,4 define gi = 2. Neste caso, por definição bi = 1 para todos os verificadores i \(\in\)HSV r,4. Ou seja, eles começam com um acordo sobre 1 no protocolo BA binário. Eles podem não ter um acordo sobre seus vis, mas isso não importa, como veremos no BA binário. Caso 2. Existe um verificador ˆi \(\in\)HSV r,4 tal que gˆi = 2. Neste caso, mostramos que (1) gi \(\geq\)1 para todo i \(\in\)HSV r,4, (2) existe um valor v′ tal que vi = v′ para todo i \(\in\)HSV r,4, e (3) existe uma mensagem válida mr,1 \(\ell\) de algum verificador \(\ell\) \(\in\)SV r,1 tal que v′ = H(Br \(\ell\)). Na verdade, como o jogador ˆi é honesto e define gˆi = 2, mais de 2/3 de todas as mensagens válidas mr,3 j ele recebeu são para o mesmo valor v′ ̸= \(\bot\), e ele definiu vˆi = v′. Pela Propriedade (d) no Lema 5.5, para qualquer outro verificador honesto (r, 4) i, não pode ser que mais de 2/3 de todas as mensagens válidas mr,3 j que i′ recebeu têm o mesmo valor v′′ ̸= v′. Conseqüentemente, se i definir gi = 2, deve ser que i tenha visto > 2/3 de maioria para v′ também e defina vi = v′, conforme desejado. Agora considere um verificador arbitrário i \(\in\)HSV r,4 com gi < 2. Semelhante à análise de Propriedade (d) no Lema 5.5, porque o jogador ˆi obteve > 2/3 de maioria para v′, mais de 1 2|HSV r,3| honesto (r, 3)-verificadores assinaram v′. Porque recebi todas as mensagens de verificadores honestos (r, 3) de tempo \(\beta\)r,4 eu = \(\alpha\)r,4 eu + t4, ele recebeu em particular mais de 1 2|HSV r,3| mensagens deles para v'. Porque |HSV r,3| > 2|MSV r,3|, i obteve > 1/3 de maioria para v′. Assim, jogador i define gi = 1 e a propriedade (1) é válida. O jogador i necessariamente define vi = v′? Suponha que exista um valor diferente v′′ ̸= \(\bot\)tal que o jogador i também obteve > 1/3 de maioria para v′′. Algumas dessas mensagens podem ser de mensagens maliciosas verificadores, mas pelo menos um deles é de algum verificador honesto j \(\in\)HSV r,3: de fato, porque |HSV r,3| > 2|MSV r,3| e recebi todas as mensagens do HSV r,3, o conjunto de malware verificadores de quem i recebeu uma mensagem válida (r, 3) conta como <1/3 de todas as mensagens válidas mensagens que recebeu.Por definição, o jogador j deve ter visto > 2/3 de maioria para v′′ entre todas as mensagens (r, 2) válidas ele recebeu. No entanto, já temos que alguns outros verificadores (r, 3) honestos viram Maioria de 2/3 para v′ (porque assinaram v′). Pela Propriedade (d) do Lema 5.5, isso não pode acontecer e tal valor v′′ não existe. Assim, o jogador i deve ter definido vi = v′ conforme desejado, e Propriedade (2) é válida. Finalmente, dado que alguns verificadores (r, 3) honestos viram uma maioria > 2/3 para v′, alguns (na verdade, mais da metade dos verificadores) honestos (r, 2) assinaram v′ e propagaram suas mensagens. Pela construção do protocolo, aqueles verificadores (r, 2) honestos devem ter recebido um valor válido. mensagem senhor,1 \(\ell\) de algum jogador \(\ell\) \(\in\)SV r,1 com v′ = H(Br \(\ell\)), portanto a Propriedade (3) é válida. BBA⋆. Novamente distinguimos dois casos. Caso 1. Todos os verificadores i \(\in\)HSV r,4 possuem bi = 1. Isso acontece seguindo o Caso 1 do GC. Como |MSV r,4| < tH, neste caso não há verificador em SV r,5 poderia coletar ou gerar mensagens válidas (r, 4) para o bit 0. Assim, nenhum verificador honesto em HSV r,5 pararia porque conhece um bloco não vazio, o Ir. Além disso, embora existam pelo menos tH mensagens (r, 4) válidas para o bit 1, s′ = 5 não satisfaz s′ −2 ≡1 mod 3, portanto, nenhum verificador honesto em HSV r,5 pararia porque sabe que Br = Br ǫ. Em vez disso, todo verificador i \(\in\)HSV r,5 atua no tempo \(\beta\)r,5 eu = \(\alpha\)r,5 eu + t5, quando ele tiver recebido todos mensagens enviadas pelo HSV r,4 seguindo o Lema 5.5. Assim, o jogador i obteve > 2/3 de maioria para 1 e define bi = 1. Na Etapa 6, que é uma etapa Coin-Fixed-To-1, embora s′ = 5 satisfaça s′ −2 ≡0 mod 3, há não existem mensagens válidas (r, 4) para o bit 0, portanto, nenhum verificador em HSV r,6 pararia porque ele conhece um bloco não vazio, Ir. No entanto, com s′ = 6, s′ −2 ≡1 mod 3 e existem |HSV r,5| \(\geq\)tH mensagens válidas (r, 5) para o bit 1 do HSV r,5. Para cada verificador i \(\in\)HSV r,6, seguindo o Lema 5.5, no tempo ou antes dele \(\alpha\)r,6 eu + jogador t6 eu recebeu todas as mensagens do HSV r,5, então paro sem propagar nada e configuro Br = Br ǫ. Seu CERT r é o conjunto de tH mensagens válidas (r, 5) mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) recebido por ele quando ele para. Em seguida, seja o jogador i um verificador honesto na etapa s > 6 ou um usuário honesto genérico (ou seja, não verificador). Semelhante à prova do Lema 5.2, o jogador i define Br = Br ǫ e define o seu próprio CERT r como o conjunto de tH mensagens válidas (r, 5) mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) ele tem recebido. Finalmente, semelhante ao Lema 5.2, Tr+1 \(\leq\) min i\(\in\)HSV r,6 \(\alpha\)r,6 eu + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, e todos os usuários honestos conhecem Br no intervalo de tempo Ir+1, porque o primeiro usuário honesto i que sabe que Br ajudou a propagar as mensagens (r, 5) em seu CERT r. Caso 2. Existe um verificador ˆi \(\in\)HSV r,4 com bˆi = 0. Isto acontece seguindo o Caso 2 do GC e é o caso mais complexo. Pela análise do GC, neste caso existe uma mensagem válida mr,1 \(\ell\) tal que vi = H(Br \(\ell\)) para todo i \(\in\)HSV r,4. Nota que os verificadores no HSV r,4 podem não ter um acordo sobre seus bi’s. Para qualquer passo s \(\in\){5, . . . , m + 3} e verificador i \(\in\)HSV r,s, pelo Lema 5.5 jogador eu teria recebeu todas as mensagens enviadas por todos os verificadores honestos em HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 se ele esperou por tempo ts.Consideramos agora o seguinte evento E: existe um passo s∗\(\geq\)5 tal que, pela primeira vez tempo no BA binário, algum jogador i∗\(\in\)SV r,s∗(seja malicioso ou honesto) deveria parar sem propagar nada. Usamos “deveria parar” para enfatizar o fato de que, se o jogador i∗ é malicioso, então ele pode fingir que não deveria parar de acordo com o protocolo e propagar mensagens da escolha do Adversário. Além disso, pela construção do protocolo, quer (E.a) i∗é capaz de coletar ou gerar pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) para os mesmos v e s′, com 5 \(\leq\)s′ \(\leq\)s∗and s′ −2 ≡0 mod 3; ou (E.b) i∗é capaz de coletar ou gerar pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ) para o mesmo s′, com 6 \(\leq\)s′ \(\leq\)s∗e s′ −2 ≡1 mod 3. Porque as mensagens honestas (r, s′ −1) são recebidas por todos os verificadores honestos (r, s′) antes de terminam de esperar na Etapa s′, e porque o Adversário recebe tudo o mais tardar no usuários honestos, sem perda de generalidade temos s′ = s∗e o jogador i∗é malicioso. Observe que não exigimos que o valor v em E.a fosse o hash de um bloco válido: como ficará claro na análise, v = H(Br \(\ell\)) neste subevento. Abaixo analisamos primeiro o Caso 2 após o evento E, e depois mostramos que o valor de s∗é essencialmente distribuído de acordo com Lr (portanto, o evento E acontece antes da Etapa m + 3 com esmagadora probabilidade, dadas as relações dos parâmetros). Para começar, para qualquer etapa 5 \(\leq\)s < s∗, todo verificador honesto i \(\in\)HSV r,s esperou o tempo ts e definiu vi como o voto majoritário do mensagens válidas (r, s−1) que ele recebeu. Como o jogador i recebeu todas as mensagens honestas (r, s−1) seguindo o Lema 5.5, uma vez que todos os verificadores honestos em HSV r,4 assinaram H(Br \(\ell\)) seguinte caso 2 do GC, e já que |HSV r,s−1| > 2|MSV r,s−1| para cada s, por indução temos aquele jogador i definiu vi = H(Br \(\ell\)). O mesmo vale para todo verificador honesto i \(\in\)HSV r,s∗que não para sem propagar qualquer coisa. Agora consideramos a Etapa s∗ e distinguimos quatro subcasos. Caso 2.1.a. O evento E.a acontece e existe um verificador honesto i′ \(\in\)HSV r,s∗que deveria também pare sem propagar nada. Neste caso, temos s∗−2 ≡0 mod 3 e o passo s∗ é um passo Coin-Fixed-To-0. Por definição, o jogador i′ recebeu pelo menos tH mensagens válidas (r, s∗−1) da forma (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 j ). Como todos os verificadores em HSV r,s∗−1 assinaram H(Br \(\ell\)) e |MSV r,s∗−1| <tH, temos v = H(Br \(\ell\)). Como pelo menos tH −|MSV r,s∗−1| \(\geq\)1 das (r, s∗−1)-mensagens recebidas por i′ para 0 e v são enviados por verificadores em HSV r,s∗−1 após o tempo T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\) +Λ, jogador i′ recebeu mr,1 \(\ell\) no momento em que ele recebe essas mensagens (r, s∗−1). Assim jogador i′ para sem propagar nada; define Br = Br \(\ell\); e define seu próprio CERT r para ser o conjunto de mensagens (r, s∗−1) válidas para 0 e v que ele recebeu. A seguir, mostramos que qualquer outro verificador i \(\in\)HSV r,s∗ parou com Br = Br \(\ell\), ou definiu bi = 0 e propagou (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s eu). Na verdade, porque Step s∗ é a primeira vez que algum verificador deve parar sem propagar nada, não há existe uma etapa s′ < s∗com s′ −2 ≡1 mod 3 tal que tH (r, s′ −1)-verificadores assinaram 1. Conseqüentemente, nenhum verificador em HSV r,s∗para com Br = Br ǫ.Além disso, como todos os verificadores honestos nas etapas {4, 5, . . . , s∗−1} assinaram H(Br \(\ell\)), existe não existe uma etapa s′ \(\leq\)s∗com s′ −2 ≡0 mod 3 tal que tH (r, s′ −1)-verificadores assinaram algum v′′ ̸= H(Br \(\ell\)) —de fato, |MSV r,s′−1| < tH. Conseqüentemente, nenhum verificador em HSV r,s∗stops com Br̸= Br ǫ e Br̸= Br \(\ell\). Isto é, se um jogador i \(\in\)HSV r,s∗ parou sem propagando qualquer coisa, ele deve ter definido Br = Br \(\ell\). Se um jogador i \(\in\)HSV r,s∗ esperou o tempo ts∗ e propagou uma mensagem no momento \(\beta\)r,s∗ eu = \(\alpha\)r,s∗ eu + ts∗, ele recebeu todas as mensagens do HSV r,s∗−1, incluindo pelo menos tH −|MSV r,s∗−1| deles para 0 e v. Se eu obtive uma maioria > 2/3 para 1, então ele viu mais de 2(tH −|MSV r,s∗−1|) mensagens (r, s∗−1) válidas para 1, com mais que 2tH −3|MSV r,s∗−1| deles de verificadores (r, s∗−1) honestos. No entanto, isso implica |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, contradizendo o fato de que |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n, que vem dos relacionamentos para os parâmetros. Assim, não vejo > 2/3 maioria para 1, e ele define bi = 0 porque a etapa s∗ é uma etapa com moeda fixada em 0. Como temos visto, vi = H(Br \(\ell\)). Assim i se propaga (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s i) como queríamos mostrar. Para a Etapa s∗+ 1, já que o jogador i′ ajudou a propagar as mensagens em seu CERT r no ou antes do tempo \(\alpha\)r,s∗ eu' + ts∗, todos os verificadores honestos em HSV r,s∗+1 receberam pelo menos mensagens válidas (r, s∗−1) para o bit 0 e valor H(Br \(\ell\)) antes ou antes de terminarem esperando. Além disso, os verificadores em HSV r,s∗+1 não irão parar antes de receber aqueles (r, s∗−1)- mensagens, porque não existem outras tH mensagens válidas (r, s′ −1) para o bit 1 com s′ −2 ≡1 mod 3 e 6 \(\leq\)s′ \(\leq\)s∗+ 1, pela definição do Passo s∗. Em particular, Passo s∗+ 1 em si é uma etapa Coin-Fixed-To-1, mas nenhum verificador honesto em HSV r,s∗ propagou uma mensagem para 1 e |MSV r,s∗| < tH. Assim, todos os verificadores honestos em HSV r,s∗+1 param sem propagar nada e definem Br = irmão \(\ell\): como antes, eles receberam mr,1 \(\ell\) antes de receberem as mensagens (r, s∗−1) desejadas.20 O mesmo pode ser dito de todos os verificadores honestos em etapas futuras e de todos os usuários honestos em geral. Em particular, todos eles sabem Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\) \(\alpha\)r,s∗ eu' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Caso 2.1.b. O evento E.b acontece e existe um verificador honesto i′ \(\in\)HSV r,s∗que deveria também pare sem propagar nada. Neste caso, temos s∗−2 ≡1 mod 3 e o passo s∗ é um passo Coin-Fixed-To-1. A análise é semelhante ao Caso 2.1.a e muitos detalhes foram omitidos. 20Se \(\ell\) for malicioso, ele poderá enviar mr,1 \(\ell\) tarde, esperando que alguns usuários/verificadores honestos não tenham recebido mr,1 \(\ell\) ainda quando receberem o certificado desejado por isso. No entanto, como o verificador ˆi \(\in\)HSV r,4 definiu bˆi = 0 e vˆi = H(Br \(\ell\)), como antes de termos que mais da metade dos verificadores honestos i \(\in\)HSV r,3 definiram vi = H(Br \(\ell\)). Isto implica ainda mais mais da metade dos verificadores honestos i \(\in\)HSV r,2 definiram vi = H(Br \(\ell\)), e todos os verificadores (r, 2) receberam mr,1 \(\ell\). Como o O adversário não consegue distinguir um verificador de um não-verificador, ele não pode visar a propagação de mr,1 \(\ell\) para (r, 2)-verificadores sem que os não-verificadores o vejam. Na verdade, com alta probabilidade, mais da metade (ou uma boa fração constante) de todos os usuários honestos viram mr,1 \(\ell\) depois de esperar por t2 desde o início de sua própria rodada r. A partir daqui, o tempo \(\lambda\)′ necessário para mr,1 \(\ell\) alcançar os usuários honestos restantes é muito menor que Λ e, para simplificar, não escreva na análise. Se 4\(\lambda\) \(\geq\) \(\lambda\)′ então a análise prossegue sem qualquer alteração: ao final da Etapa 4, todos usuários honestos teriam recebido mr,1 \(\ell\). Se o tamanho do bloco se tornar enorme e 4\(\lambda\) < \(\lambda\)′, então nas Etapas 3 e 4, o protocolo poderia pedir a cada verificador que esperasse por \(\lambda\)′/2 em vez de 2\(\lambda\), e a análise continua válida.Como antes, o jogador i′ deve ter recebido pelo menos tH mensagens válidas (r, s∗−1) da forma (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 j ). Novamente pela definição de s∗, não existe um passo 5 \(\leq\)s′ < s∗com s′ −2 ≡0 mod 3, onde pelo menos tH (r, s′ −1)-verificadores assinaram 0 e o mesmo v. Assim o jogador i′ para sem propagar nada; define Br = Br ǫ; e conjuntos seu próprio CERT r seja o conjunto de mensagens (r, s∗−1) válidas para o bit 1 que ele recebeu. Além disso, qualquer outro verificador i \(\in\)HSV r,s∗ parou com Br = Br ǫ , ou definiu bi = 1 e propagado (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ eu ). Já que o jogador i′ ajudou a propagar as mensagens (r, s∗−1) em seu CERT r no tempo \(\alpha\)r,s∗ eu' + ts∗, novamente todos os verificadores honestos em HSV r,s∗+1 para sem propagar nada e define Br = Br ǫ . Da mesma forma, todos os honestos os usuários sabem Br = Br ǫ dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\) \(\alpha\)r,s∗ eu' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Caso 2.2.a. O evento E.a acontece e não existe um verificador honesto i′ \(\in\)HSV r,s∗quem também deve parar sem propagar nada. Neste caso, observe que o jogador i∗ poderia ter um CERT válido r i∗consistindo no tH desejado (r, s∗−1)-mensagens que o Adversário é capaz de coletar ou gerar. No entanto, o malicioso verificadores podem não ajudar a propagar essas mensagens, por isso não podemos concluir que o honesto os usuários os receberão no tempo \(\lambda\). Na verdade, |MSV r,s∗−1| dessas mensagens podem ser de verificadores (r, s∗−1) maliciosos, que não propagaram suas mensagens e apenas enviaram para os verificadores maliciosos na etapa s∗. Semelhante ao Caso 2.1.a, aqui temos s∗−2 ≡0 mod 3, a etapa s∗ é uma etapa com moeda fixada em 0, e as mensagens (r, s∗−1) no CERT r i∗são para o bit 0 e v = H(Br \(\ell\)). Na verdade, todos honestos (r, s∗−1)-verificadores assinam v, portanto o Adversário não pode gerar as mensagens (r, s∗−1) válidas para um v′ diferente. Além disso, todos os verificadores (r, s∗) honestos esperaram o tempo ts∗ e não veem > 2/3 da maioria para o bit 1, novamente porque |HSV r,s∗−1| + 4|MSV r,s∗−1| <2n. Assim, todo verificador honesto i \(\in\)HSV r,s∗conjuntos bi = 0, vi = H(Br \(\ell\)) pela maioria dos votos e propaga mr,s∗ eu = (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s∗ eu ) no tempo \(\alpha\)r,s∗ eu + ts∗. Agora considere os verificadores honestos na Etapa s∗+ 1 (que é uma etapa de Moeda Fixada em 1). Se o O adversário realmente envia as mensagens no CERT r i∗para alguns deles e faz com que eles pare, então semelhante ao Caso 2.1.a, todos os usuários honestos sabem Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+1. Caso contrário, todos os verificadores honestos na Etapa s∗+1 receberam todas as mensagens (r, s∗) para 0 e H(Br \(\ell\)) do HSV r,s∗após o tempo de espera ts∗+1, o que leva a > 2/3 da maioria, porque |HSV r,s∗| > 2|MSV r,s∗|. Assim, todos os verificadores em HSV r,s∗+1 propagam suas mensagens para 0 e H(Br \(\ell\)) em conformidade. Observe que os verificadores em HSV r,s∗+1 não param em Br = Br \(\ell\), porque a etapa s∗+ 1 não é uma etapa com moeda fixada em 0. Agora considere os verificadores honestos na Etapa s∗+2 (que é uma etapa de Inversão Genuína da Moeda). Se o Adversário enviar as mensagens em CERT r i∗para alguns deles e faz com que parem, então, novamente, todos os usuários honestos sabem Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+2.Caso contrário, todos os verificadores honestos na Etapa s∗+ 2 receberam todas as mensagens (r, s∗+ 1) para 0 e H(Br \(\ell\)) do HSV r,s∗+1 após o tempo de espera ts∗+2, o que leva a uma maioria > 2/3. Assim todos eles propagam suas mensagens para 0 e H(Br \(\ell\)) respectivamente: é isso que eles fazem não “jogue uma moeda” neste caso. Novamente, observe que eles não param sem se propagar, porque a etapa s∗+ 2 não é uma etapa com moeda fixada em 0. Finalmente, para os verificadores honestos na Etapa s∗+3 (que é outra etapa de Moeda Fixada em 0), todos deles teriam recebido pelo menos tH mensagens válidas para 0 e H(Br \(\ell\)) de HSV s∗+2, se eles realmente esperarem o tempo ts∗+3. Assim, quer o Adversário envie ou não as mensagens no CERT r i∗para qualquer um deles, todos os verificadores em HSV r,s∗+3 param com Br = Br \(\ell\), sem propagar qualquer coisa. Dependendo de como o Adversário age, alguns deles podem ter seu próprio CERT r consistindo naquelas (r, s∗−1)-mensagens em CERT r i∗, e os outros têm seu próprio CERT r consistindo nessas mensagens (r, s∗+ 2). De qualquer forma, todos os usuários honestos saiba Br = Br \(\ell\)dentro do intervalo de tempo Ir+1 e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3. Caso 2.2.b. O evento E.b acontece e não existe um verificador honesto i′ \(\in\)HSV r,s∗quem também deve parar sem propagar nada. A análise neste caso é semelhante àquelas no Caso 2.1.b e Caso 2.2.a, portanto muitos detalhes foram omitidos. Em particular, CERT r i∗consiste nas tH mensagens desejadas (r, s∗−1) para o bit 1 que o Adversário é capaz de coletar ou gerar, s∗−2 ≡1 mod 3, Etapa s∗é um Etapa Coin-Fixed-To-1, e nenhum verificador (r, s∗) honesto poderia ter visto > 2/3 de maioria para 0. Assim, todo verificador i \(\in\)HSV r,s∗define bi = 1 e propaga mr,s∗ eu = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ eu ) no tempo \(\alpha\)r,s∗ eu + ts∗. Semelhante ao Caso 2.2.a, em no máximo mais 3 etapas (ou seja, o protocolo atinge a Etapa s∗+3, que é outra etapa Coin-Fixed-To-1), todos os usuários honestos sabem Br = Br ǫ dentro do intervalo de tempo Ir+1. Além disso, T r+1 pode ser \(\leq\)T r+\(\lambda\)+ts∗+1, ou \(\leq\)T r+\(\lambda\)+ts∗+2, ou \(\leq\)T r + \(\lambda\) + ts∗+3, dependendo de quando é a primeira vez que um verificador honesto é capaz de parar sem propagação. Combinando os quatro subcasos, temos que todos os usuários honestos conhecem Br dentro do intervalo de tempo Ir+1, com T r+1 \(\leq\)T r + \(\lambda\) + ts∗ nos casos 2.1.a e 2.1.b, e T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 nos Casos 2.2.a e 2.2.b. Resta limitar s∗ e, portanto, T r+1 para o Caso 2, e fazemos isso considerando como muitas vezes as etapas Coin-Genuinely-Flipped são realmente executadas no protocolo: isto é, alguns verificadores honestos realmente jogaram uma moeda ao ar. Em particular, corrija arbitrariamente uma etapa s′ de moeda genuinamente invertida (ou seja, 7 \(\leq\)s′ \(\leq\)m + 2 e s′ −2 ≡2 mod 3), e seja \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j ). Por enquanto vamos assumir s′ < s∗, porque de outra forma nenhum verificador honesto realmente joga uma moeda na Etapa s′, de acordo com discussões. Pela definição de SV r,s′−1, o valor hash da credencial de \(\ell\)′ também é o menor entre todos os usuários em PKr-k. Como a função hash é uma oracle aleatória, idealmente o jogador \(\ell\)′ é honesto com probabilidade pelo menos h. Como mostraremos mais tarde, mesmo que o Adversário tente ao máximo prever o saída do aleatório oracle e inclina a probabilidade, o jogador \(\ell\) ′ ainda é honesto com a probabilidadepelo menos ph = h2(1 + h −h2). Abaixo consideramos o caso em que isso realmente acontece: isto é, \(\ell\)′ \(\in\)HSV r,s′−1. Observe que todo verificador honesto i \(\in\)HSV r,s′ recebeu todas as mensagens do HSV r,s′−1 por tempo \(\alpha\)r,s′ eu +ts′. Se o jogador i precisar jogar uma moeda (ou seja, ele não obteve > 2/3 da maioria por o mesmo bit b \(\in\){0, 1}), então ele define bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )). Se existir outro honesto verificador i′ \(\in\)HSV r,s′ que viu > 2/3 maioria para um bit b \(\in\){0, 1}, então por Propriedade (d) do Lema 5.5, nenhum verificador honesto em HSV r,s′ teria visto > 2/3 de maioria por um tempo b′̸=b. Como lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b com probabilidade 1/2, todos os verificadores honestos em HSV r,s′ alcançam um acordo sobre b com probabilidade 1/2. É claro que, se tal verificador i′ não existir, então todos verificadores honestos em HSV r,s′ concordam com o bit lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) com probabilidade 1. Combinando a probabilidade para \(\ell\)′ \(\in\)HSV r,s′−1, temos que os verificadores honestos em HSV r,s′ chegar a um acordo sobre um bit b \(\in\){0, 1} com probabilidade pelo menos ph 2 = h2(1+h−h2) 2 . Além disso, por indução na votação majoritária como antes, todos os verificadores honestos em HSV r,s′ têm seus vi definidos ser H(Br \(\ell\)). Assim, uma vez alcançado um acordo sobre b na Etapa s′, T r+1 é ou \(\leq\)T r + \(\lambda\) + ts′+1 ou \(\leq\)T r + \(\lambda\) + ts′+2, dependendo se b = 0 ou b = 1, seguindo a análise dos Casos 2.1.a e 2.1.b. Em particular, nenhuma etapa adicional de Coin-Genuinely-Flipped será executada: isto é, os verificadores em tais passos ainda verificam se eles são os verificadores e, portanto, esperam, mas todos irão parar sem propagar qualquer coisa. Assim, antes do Passo s∗, o número de vezes que os passos Coin-GenuinelyFlipped são executados é distribuído de acordo com a variável aleatória Lr. Deixando o Passo s′ ser a última etapa de Coin-Genuinely-Flipped de acordo com Lr, pela construção do protocolo nós temos s′ = 4 + 3Lr. Quando o Adversário deve fazer o Step s∗ acontecer se ele quiser atrasar T r+1 tanto quanto possível? Podemos até assumir que o Adversário conhece antecipadamente a realização de Lr. Se s∗> s′ então é inútil, porque os verificadores honestos já chegaram a um acordo em Passo s′. Com certeza, neste caso s∗seria s′ +1 ou s′ +2, novamente dependendo se b = 0 ou b = 1. No entanto, na verdade estes são os Casos 2.1.a e 2.1.b, e o T r+1 resultante é exatamente o o mesmo que nesse caso. Mais precisamente, T r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts′+2. Se s∗< s′ −3 —isto é, s∗está antes da penúltima etapa de lançamento genuíno da moeda— então por a análise dos Casos 2.2.a e 2.2.b, T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < T r + \(\lambda\) + ts′. Ou seja, o Adversário está na verdade fazendo com que o acordo sobre o Br aconteça de forma mais rápida. Se s∗= s′ −2 ou s′ −1 - isto é, a etapa Coin-Fixed-To-0 ou a etapa Coin-Fixed-To-1 imediatamente antes da Etapa s' - então, pela análise dos quatro subcasos, os verificadores honestos em A etapa s′ não consegue mais lançar moedas, porque elas pararam sem se propagar, ou viram maioria > 2/3 para o mesmo bit b. Portanto temos T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts′+2.Em suma, não importa qual seja s∗, temos T r+1 \(\leq\)T r + \(\lambda\) + ts′+2 = T r + \(\lambda\) + t3Lr+6 = T r + \(\lambda\) + (2(3Lr + 6) −3)\(\lambda\) + Λ = T r + (6Lr + 10)\(\lambda\) + Λ, como queríamos mostrar. O pior caso é quando s∗= s′ −1 e o Caso 2.2.b acontece. Combinando os Casos 1 e 2 do protocolo BA binário, o Lema 5.3 é válido. ■ 5.9 Segurança do Qr Semente e Probabilidade de um Líder Honesto Resta provar o Lema 5.4. Lembre-se de que os verificadores na rodada r são retirados de PKr−k e são escolhidos de acordo com a quantidade Qr−1. A razão para introduzir o parâmetro lookback k é garantir que, na rodada r −k, quando o Adversário for capaz de adicionar novos usuários mal-intencionados para PKr−k, ele não pode prever a quantidade Qr−1 exceto com probabilidade desprezível. Observe que o A função hash é uma oracle aleatória e Qr−1 é uma de suas entradas ao selecionar verificadores para a rodada r. Assim, não importa quão usuários mal-intencionados sejam adicionados ao PKr-k, do ponto de vista do Adversário, cada um deles ainda é selecionado para ser um verificador em uma etapa de rodada r com a probabilidade necessária p (ou p1 para a Etapa 1). Mais precisamente, temos o seguinte lema. Lema 5.6. Com k = O(log1/2 F), para cada rodada r, com probabilidade esmagadora o Adversário não consultou Qr−1 para o oracle aleatório na rodada r −k. Prova. Procedemos por indução. Suponha que para cada rodada \(\gamma\) < r, o Adversário não questionou Q\(\gamma\)−1 ao aleatório oracle na rodada \(\gamma\) −k.21 Considere o seguinte jogo mental jogado por o Adversário na rodada r −k, tentando prever Qr−1. Na Etapa 1 de cada rodada \(\gamma\) = r −k,. . . , r −1, dado um Q\(\gamma\)−1 específico não consultado ao aleatório oracle, ordenando os jogadores i \(\in\)PK\(\gamma\)−k de acordo com os valores hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) cada vez mais, obtemos uma permutação aleatória sobre PK\(\gamma\)−k. Por definição, o líder \(\ell\) \(\gamma\) é o primeiro usuário na permutação e é honesto com probabilidade h. Além disso, quando PK\(\gamma\)−k é grande suficiente, para qualquer número inteiro x \(\geq\)1, a probabilidade de que os primeiros x usuários na permutação sejam todos malicioso, mas o (x + 1)st é honesto é (1 −h)xh. Se \(\ell\) \(\gamma\) for honesto, então Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). Como o Adversário não pode falsificar a assinatura de \(\ell\) \(\gamma\), Q\(\gamma\) é distribuído uniformemente aleatoriamente do ponto de vista do Adversário e, exceto com probabilidade exponencialmente pequena,22 não foi questionado para H na rodada r −k. Desde cada Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1 respectivamente é a saída de H com Q\(\gamma\), Q\(\gamma\)+1, . . . , Qr−2 como uma das entradas, todos eles parecem aleatórios para o Adversário e o Adversário não poderia ter consultado Qr−1 para H em rodada r −k. Conseqüentemente, o único caso em que o Adversário pode prever Qr−1 com boa probabilidade na rodada r−k é quando todos os líderes \(\ell\)r−k,. . . , \(\ell\)r−1 são maliciosos. Considere novamente uma rodada \(\gamma\) \(\in\){r−k . . . , r−1} e a permutação aleatória sobre PK\(\gamma\)−k induzida pelos valores hash correspondentes. Se para alguns x \(\geq\)2, os primeiros x −1 usuários na permutação são todos maliciosos e o x-ésimo é honesto, então o O adversário tem x escolhas possíveis para Q\(\gamma\): qualquer uma da forma H(SIGi(Q\(\gamma\)−1, \(\gamma\))), onde i é um dos 21Como k é um número inteiro pequeno, sem perda de generalidade pode-se assumir que as primeiras k rodadas do protocolo são executadas sob um ambiente seguro e a hipótese indutiva é válida para essas rodadas. 22Isto é, exponencial no comprimento da saída de H. Observe que esta probabilidade é bem menor que F.os primeiros x-1 usuários mal-intencionados, ao tornar o jogador i o verdadeiro líder da rodada \(\gamma\); ou H(Q\(\gamma\)−1, \(\gamma\)), por forçando B\(\gamma\) = B\(\gamma\) ǫ . Caso contrário, o líder da rodada \(\gamma\) será o primeiro usuário honesto na permutação e Qr−1 torna-se imprevisível para o Adversário. Qual das x opções de Q\(\gamma\) acima o Adversário deve seguir? Para ajudar o adversário responder a esta pergunta, no jogo mental nós realmente o tornamos mais poderoso do que ele realmente é, como segue. Em primeiro lugar, na realidade, o Adversário não pode calcular o hash do valor de um usuário honesto. assinatura, portanto não pode decidir, para cada Q\(\gamma\), o número x(Q\(\gamma\)) de usuários mal-intencionados no início da permutação aleatória na rodada \(\gamma\) + 1 induzida por Q\(\gamma\). No jogo mental, damos a ele o números x(Q\(\gamma\)) gratuitamente. Em segundo lugar, na realidade, ter os primeiros x usuários na permutação, todos ser malicioso não significa necessariamente que todos possam ser transformados em líderes, porque o hash os valores de suas assinaturas também devem ser menores que p1. Ignoramos essa restrição na mente jogo, dando ao Adversário ainda mais vantagens. É fácil perceber que no jogo mental a opção ótima para o Adversário, denotada por ˆQ\(\gamma\), é aquele que produz a maior sequência de usuários maliciosos no início do aleatório permutação na rodada \(\gamma\) + 1. Na verdade, dado um Q\(\gamma\) específico, o protocolo não depende de Q\(\gamma\)−1 mais e o Adversário pode focar apenas na nova permutação na rodada \(\gamma\) + 1, que tem o mesma distribuição para o número de usuários mal-intencionados no início. Assim, em cada rodada \(\gamma\), o ˆQ\(\gamma\) mencionado acima dá a ele o maior número de opções para Q\(\gamma\)+1 e, portanto, maximiza a probabilidade de que os líderes consecutivos sejam todos maliciosos. Portanto, no jogo mental o Adversário segue uma Cadeia de Markov da rodada r −k para arredondar r −1, com o espaço de estados sendo {0} \(\cup\){x : x \(\geq\)2}. O estado 0 representa o fato de que o o primeiro usuário na permutação aleatória na rodada atual \(\gamma\) é honesto, portanto o Adversário falha no jogo para previsão de Qr−1; e cada estado x \(\geq\)2 representa o fato de que os primeiros x −1 usuários no permutações são maliciosas e o x-ésimo é honesto, portanto o Adversário tem x opções para Q\(\gamma\). O as probabilidades de transição P(x, y) são as seguintes. • P(0, 0) = 1 e P(0, y) = 0 para qualquer y \(\geq\)2. Ou seja, o Adversário falha no jogo assim que o primeiro o usuário na permutação torna-se honesto. • P(x, 0) = hx para qualquer x \(\geq\)2. Ou seja, com probabilidade hx, todas as x permutações aleatórias têm seus primeiros usuários são honestos, portanto o Adversário falha no jogo na próxima rodada. • Para qualquer x \(\geq\)2 e y \(\geq\)2, P(x, y) é a probabilidade de que, entre as x permutações aleatórias induzida pelas x opções de Q\(\gamma\), a sequência mais longa de usuários mal-intencionados no início de alguns deles são y −1, portanto o Adversário tem y opções para Q\(\gamma\)+1 na próxima rodada. Isto é, P(x, y) = y−1 X eu=0 (1 −h)ih !x - y−2 X eu=0 (1 −h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. Observe que o estado 0 é o único estado absorvente na matriz de transição P, e todos os outros estados x tem uma probabilidade positiva de ir para 0. Estamos interessados em limitar superiormente o número k de rodadas necessárias para a Cadeia de Markov convergir para 0 com probabilidade esmagadora: isto é, não Não importa em que estado a cadeia comece, com uma probabilidade esmagadora de que o Adversário perca o jogo e falha em prever Qr−1 na rodada r −k. Considere a matriz de transição P (2) \(\triangleq\)P \(\cdot\) P após duas rodadas. É fácil ver que P (2) (0, 0) = 1 e P (2)(0, x) = 0 para qualquer x \(\geq\)2. Para qualquer x \(\geq\)2 e y \(\geq\)2, como P(0, y) = 0, temos P(2)(x, y) = P(x, 0)P(0, y) + X z\(\geq\)2 P(x, z)P(z, y) = X z\(\geq\)2 P(x, z)P(z, y).Deixando ¯h \(\triangleq\)1 −h, temos P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x e P(2)(x,y) = X z\(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. Abaixo calculamos o limite de P (2)(x,y) P(x,y) à medida que h vai para 1 - isto é, ¯h vai para 0. Observe que o maior a ordem de ¯h em P(x, y) é ¯hy−1, com coeficiente x. Assim, limão h \(\to\) 1 P(2)(x,y) P(x, y) =lim ¯h \(\to\) 0 P(2)(x,y) P(x, y) =lim ¯h \(\to\) 0 P(2)(x,y) x¯hy−1 + O(¯hy) = limão ¯h \(\to\) 0 P z\(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) =lim ¯h \(\to\) 0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = limão ¯h \(\to\) 0 2x¯h x¯hy−1 = lim ¯h \(\to\) 0 2¯h = 0. Quando h está suficientemente próximo de 1,23, temos P(2)(x,y) P(x, y) \(\leq\)1 2 para qualquer x \(\geq\)2 e y \(\geq\)2. Por indução, para qualquer k > 2, P (k) \(\triangleq\)P k é tal que • P (k)(0, 0) = 1, P (k)(0, x) = 0 para qualquer x \(\geq\)2, e • para qualquer x \(\geq\)2 e y \(\geq\)2, P(k)(x, y) = P(k−1)(x, 0)P(0, y) + X z\(\geq\)2 P(k−1)(x, z)P(z, y) = X z\(\geq\)2 P(k−1)(x, z)P(z, y) \(\leq\) X z\(\geq\)2 P(x,z) 2k−2 \(\cdot\) P(z, y) = P(2)(x, y) 2k−2 \(\leq\)P(x, y) 2k−1. Como P(x, y) \(\leq\)1, após 1−log2 F rodadas, a probabilidade de transição para qualquer estado y \(\geq\)2 é insignificante, começando com qualquer estado x \(\geq\)2. Embora existam muitos desses estados, é fácil ver que limão y→+∞ P(x, y) P(x, y + 1) = limão y→+∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = limão y→+∞ ¯hy−1 −¯hy ¯hy −¯hy+1 = 1 ¯h = 1 1-h. Portanto, cada linha x da matriz de transição P diminui como uma sequência geométrica com taxa 1 1-h > 2 quando y é grande o suficiente, e o mesmo vale para P (k). Assim, quando k é grande o suficiente, mas ainda assim na ordem de log1/2 F, P y\(\geq\)2 P (k)(x, y) < F para qualquer x \(\geq\)2. Ou seja, com uma probabilidade esmagadora o Adversário perde o jogo e não consegue prever Qr−1 na rodada r −k. Para h \(\in\)(2/3, 1], mais análise complexa mostra que existe uma constante C ligeiramente maior que 1/2, tal que é suficiente tomar k = O(logC F). Assim, o Lema 5.6 é válido. ■ Lema 5.4. (reapresentado) Dadas as propriedades 1–3 para cada rodada antes de r, ph = h2(1 + h −h2) para Lr, e o líder \(\ell\)r é honesto com probabilidade de pelo menos ph. 23Por exemplo, h = 80% conforme sugerido pelas escolhas específicas de parâmetros.

Prova. Seguindo o Lema 5.6, o Adversário não pode prever Qr−1 na rodada r −k, exceto com probabilidade desprezível. Observe que isso não significa que a probabilidade de um líder honesto seja h para cada rodada. Na verdade, dado o Qr-1, dependendo de quantos usuários mal-intencionados existem no início do a permutação aleatória de PKr−k, o Adversário pode ter mais de uma opção para Qr e portanto, pode aumentar a probabilidade de um líder malicioso na rodada r + 1 - mais uma vez estamos dando a ele algumas vantagens irrealistas como no Lema 5.6, de modo a simplificar a análise. No entanto, para cada Qr−1 que não foi questionado a H pelo Adversário na rodada r −k, por qualquer x \(\geq\)1, com probabilidade (1 −h)x−1h o primeiro usuário honesto ocorre na posição x no resultado permutação aleatória de PKr−k. Quando x = 1, a probabilidade de um líder honesto na rodada r + 1 é na verdade h; enquanto quando x = 2, o Adversário tem duas opções para Qr e a probabilidade resultante é h2. Somente considerando estes dois casos, temos que a probabilidade de um líder honesto na rodada r + 1 é pelo menos h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) conforme desejado. Observe que a probabilidade acima considera apenas a aleatoriedade no protocolo da rodada r −k para arredondar r. Quando toda a aleatoriedade da rodada 0 à rodada r é levada em consideração, Qr−1 é ainda menos previsível para o Adversário e a probabilidade de um líder honesto na rodada r + 1 é de pelo menos h2(1 + h −h2). Substituindo r + 1 por r e retrocedendo tudo em uma rodada, o líder \(\ell\)r é honesto com probabilidade de pelo menos h2(1 + h −h2), conforme desejado. Da mesma forma, em cada etapa s de inversão genuína da moeda, o “líder” dessa etapa - que é o verificador em SV r,s cuja credencial tem o menor valor hash, é honesto com probabilidade de pelo menos h2(1 + h-h2). Assim ph = h2(1 + h −h2) para Lr e o Lema 5.4 é válido. ■

Algorand ′

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 ′

2 Nesta seção, construímos uma versão de Algorand ′ trabalhando sob a seguinte suposição. Suposição da maioria honesta dos usuários: Mais de 2/3 dos usuários em cada PKr são honestos. Na Seção 8, mostramos como substituir a suposição acima pela desejada Maioria Honesta de Suposição de dinheiro. 6.1 Notações e parâmetros adicionais para Algorand ′ 2 Notações • \(\mu\) \(\in\)Z+: um limite superior pragmático para o número de etapas que, com probabilidade esmagadora, será realmente obtido em uma rodada. (Como veremos, o parâmetro \(\mu\) controla quantos eventos efêmeros chaves que um usuário prepara antecipadamente para cada rodada.) • Lr: uma variável aleatória que representa o número de tentativas de Bernoulli necessárias para obter 1, quando cada tentativa é 1 com probabilidade ph 2. Lr será usado para limitar o tempo necessário para gerar bloco Ir. • tH: um limite inferior para o número de verificadores honestos em uma etapa s > 1 da rodada r, tal que com probabilidade esmagadora (dados n e p), existem > tH verificadores honestos em SV r,s. Parâmetros • Relações entre vários parâmetros. — Para cada passo s > 1 da rodada r, n é escolhido de modo que, com probabilidade esmagadora,

|HSV r,s| >tH e |HSV r,s| + 2|MSV r,s| < 2tH. Observe que as duas desigualdades acima juntas implicam |HSV r,s| > 2|MSV r,s|: isto é, há é uma maioria honesta de 2/3 entre os verificadores selecionados. Quanto mais próximo de 1 for o valor de h, menor será n. Em particular, usamos (variantes de) Chernoffbounds para garantir que as condições desejadas se mantenham com uma probabilidade esmagadora. • Exemplos de escolhas de parâmetros importantes. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0,69n, k = 70. 6.2 Implementando chaves efêmeras em Algorand ′ 2 Lembre-se que um verificador i \(\in\)SV r,s assina digitalmente sua mensagem mr,s eu da etapa s na rodada r, em relação a uma chave pública efêmera pkr,s i , usando uma chave secreta efêmera skr,s eu que ele destrua prontamente depois de usar. Quando o número de passos possíveis que uma rodada pode dar é limitado por um determinado inteiro \(\mu\), já vimos como lidar de forma prática com chaves efêmeras. Por exemplo, como nós explicaram em Algorand ′ 1 (onde \(\mu\) = m + 3), para lidar com todas as suas possíveis chaves efêmeras, de uma rodada r′ para uma rodada r′ + 106, i gera um par (PMK, SMK), onde PMK mestre público chave de um esquema de assinatura baseado em identidade e SMK sua chave mestra secreta correspondente. Usuário eu divulga PMK e usa SMK para gerar a chave secreta de cada chave pública efêmera possível (e destrói SMK depois de fazer isso). O conjunto de chaves públicas efêmeras de i para o relevante rodadas é S = {i} \(\times\) {r′,. . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)}. (Conforme discutido, à medida que a rodada r′ + 106 se aproxima, eu “atualizo” seu par (PMK, SMK).) Na prática, se \(\mu\) for grande o suficiente, uma rodada de Algorand ′ 2 não levará mais do que \(\mu\) passos. Em princípio, no entanto, existe a possibilidade remota de que, para alguma rodada r, o número de etapas realmente tomadas excederá \(\mu\). Quando isso acontecer, eu não conseguirei assinar a mensagem dele, Sr. eu para qualquer passo s > \(\mu\), porque ele preparou antecipadamente apenas \(\mu\) chaves secretas para a rodada r. Além disso, ele não poderia preparar e divulgar um novo estoque de chaves efêmeras, conforme discutido anteriormente. Na verdade, fazer então, ele precisaria inserir uma nova chave mestra pública PMK′ em um novo bloco. Mas, deveria arredondar r Se você desse mais e mais passos, nenhum novo bloco seria gerado. No entanto, existem soluções. Por exemplo, posso usar a última chave efêmera da rodada r, pkr,\(\mu\) eu , como segue. Ele gera outro estoque de pares de chaves para a rodada r - por exemplo, (1) gerando outro par de chaves mestras (PMK, SMK); (2) usar este par para gerar outras, digamos, 106 chaves efêmeras, sk r,\(\mu\)+1 eu , . . . , sk r,\(\mu\)+106 eu , correspondendo às etapas \(\mu\)+1, ..., \(\mu\)+106 da rodada r; (3) usando skr,\(\mu\) eu para digitalmente assine PMK (e qualquer mensagem (r, \(\mu\)) se i \(\in\)SV r,\(\mu\)), relativa a pkr,\(\mu\) eu ; e (4) apagar SMK e skr,\(\mu\) eu . Devo me tornar um verificador em uma etapa \(\mu\) + s com s \(\in\){1, . . . , 106}, então eu assino digitalmente seu (r, \(\mu\) + s)- mensagem senhor,\(\mu\)+s eu em relação à sua nova chave pk r,\(\mu\)+s eu = (eu, r, \(\mu\) + s). Claro, para verificar esta assinatura de i, outros precisam ter certeza de que esta chave pública corresponde à nova chave mestra pública PMK de i. Assim, além desta assinatura, i transmite sua assinatura digital de PMK relativa a pkr,\(\mu\) eu . É claro que esta abordagem pode ser repetida quantas vezes forem necessárias, caso a rodada r continue para mais e mais passos! A última chave secreta efêmera é usada para autenticar um novo público mestre chave e, portanto, outro estoque de chaves efêmeras para a rodada r. E assim por diante.6.3 O protocolo real Algorand ′ 2 Lembre-se novamente que, em cada etapa s de uma rodada r, um verificador i \(\in\)SV r,s usa seu segredo público de longo prazo par de chaves para produzir sua credencial, \(\sigma\)r,s eu \(\triangleq\)SIGi(r, s, Qr−1), bem como SIGi Qr-1 no caso s = 1. O verificador i usa seu par de chaves efêmeras, (pkr,s eu, skr,s i ), para assinar qualquer outra mensagem m que possa ser necessário. Para simplificar, escrevemos esigi(m), em vez de sigpkr,s i (m), para denotar o efêmero próprio de i assinatura de m nesta etapa e escreva ESIGi(m) em vez de SIGpkr,s eu (m) \(\triangleq\)(eu, m, esigi(m)). Etapa 1: bloquear proposta Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 1 da rodada r assim que tiver CERT r−1, que permite que i calcule H(Br−1) e Qr−1 de forma inequívoca. • O usuário i usa Qr−1 para verificar se i \(\in\)SV r,1 ou não. Se i /\(\in\)SV r,1, ele não faz nada na Etapa 1. • Se i \(\in\)SV r,1, ou seja, se i for um líder potencial, então ele faz o seguinte. (a) Se eu vi B0, . . . , o próprio Br−1 (qualquer Bj = Bj ǫ pode ser facilmente derivado de seu valor hash no CERT j e, portanto, é assumido como “visto”), então ele coleta os pagamentos da rodada r que foram foi propagado para ele até agora e calcula um conjunto de pagamento máximo PAY r eu deles. (b) Se eu não vi todo B0,. . . , Br−1 ainda, então ele define PAY r eu = \(\emptyset\). (c) Em seguida, i calcula seu “bloco de candidatos” Br eu = (r, PAGAR r eu, SIGi(Qr−1), H(Br−1)). (c) Finalmente, i calcula a mensagem mr,1 eu = (Br eu , esigi(H(Br eu )), \(\sigma\)r,1 i ), destrói seu efêmero chave secreta skr,1 i , e então propaga duas mensagens, mr,1 eu e (SIGi(Qr−1), \(\sigma\)r,1 eu), separadamente, mas simultaneamente.a aQuando i é o líder, SIGi(Qr−1) permite que outros calculem Qr = H(SIGi(Qr−1), r).

Propagação Seletiva Para encurtar a execução global do Passo 1 e de toda a rodada, é importante que o (r, 1)- as mensagens são propagadas seletivamente. Ou seja, para cada usuário j no sistema, • Para a primeira mensagem (r, 1) que ele recebe e verifica com sucesso, se ela contém um bloco ou é apenas uma credencial e uma assinatura de Qr−1, o jogador j o propaga normalmente. • Para todas as outras mensagens (r, 1) que o jogador j recebe e verifica com sucesso, ele propaga somente se o valor hash da credencial que ela contém for o menor entre os valores hash das credenciais contidas em todas as mensagens (r, 1) que ele recebeu e verificou com sucesso para longe. • Entretanto, se j receber duas mensagens diferentes no formato mr,1 eu do mesmo jogador i,b ele descarta o segundo, não importa qual seja o valor hash da credencial de i. Observe que, na propagação seletiva, é útil que cada líder potencial i propague seu credencial \(\sigma\)r,1 eu separadamente do senhor,1 i:c essas pequenas mensagens viajam mais rápido que os blocos, certifique-se propagação oportuna do mr,1 i é onde as credenciais contidas têm valores hash pequenos, enquanto fazer com que aqueles com valores hash grandes desapareçam rapidamente. aOu seja, todas as assinaturas estão corretas e, se for no formato mr,1 i , tanto o bloco quanto seu hash são válidos —embora j não verifique se o conjunto de pagamentos incluído é máximo para i ou não. bO que significa que eu sou malicioso. cAgradecemos a Georgios Vlachos por sugerir isso.Etapa 2: A primeira etapa do GC do protocolo de consenso graduado Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 2 da rodada r assim que tiver CERT r-1. • O usuário i espera um tempo máximo t2 \(\triangleq\) \(\lambda\) + Λ. Enquanto espero, ajo da seguinte maneira. 1. Depois de esperar pelo tempo 2\(\lambda\), ele encontra o usuário \(\ell\) tal que H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j) para todos credenciais \(\sigma\)r,1 j que fazem parte das mensagens (r, 1) verificadas com sucesso que ele recebeu até agora.a 2. Se ele tem recebido um bloquear Br−1, qual partidas o hash valor H(Br−1) contido no CERT r−1,b e se ele recebeu de \(\ell\)uma mensagem válida mr,1 \(\ell\) = (Irmão \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),c então eu paro de esperar e defino v′ eu \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. Caso contrário, quando o tempo t2 acabar, i define v′ eu \(\triangleq\) \(\bot\). 4. Quando o valor de v′ i foi definido, eu calcula Qr−1 a partir do CERT r−1 e verifica se i \(\in\)SV r,2 ou não. 5. Se i \(\in\)SV r,2, i calcula a mensagem mr,2 eu \(\triangleq\)(ESIGi(v′ eu), \(\sigma\)r,2 i),d destrói seu efêmero chave secreta skr,2 i , e então propaga mr,2 eu. Caso contrário, eu para sem propagar qualquer coisa. aEssencialmente, o usuário i decide em particular que o líder da rodada r é o usuário \(\ell\). bClaro, se CERT r−1 indicar que Br−1 = Br−1 ǫ , então eu já “recebi” Br−1 no momento em que ele recebeu CERT r-1. cNovamente, as assinaturas do jogador \(\ell\) e os hashes foram todos verificados com sucesso e PAGUE r \(\ell\)no Brasil \(\ell\)é um conjunto de pagamento válido para rodada r - embora eu não verifique se PAY r \(\ell\)é máximo para \(\ell\)ou não. Se irmão \(\ell\) contém um conjunto de pagamentos vazio, então na verdade, não há necessidade de ver Br−1 antes de verificar se Br \(\ell\)é válido ou não. dA mensagem senhor,2 eu sinaliza que o jogador i considera o primeiro componente de v′ i será o hash do próximo bloco, ou considera o próximo bloco vazio.

Etapa 3: A segunda etapa do GC Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 3 da rodada r assim que tiver CERT r-1. • O usuário i espera um tempo máximo t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ. Enquanto espero, eu ajo como segue. 1. Se existe um valor v tal que ele recebeu pelo menos mensagens válidas mr,2 j de a forma (ESIGj(v), \(\sigma\)r,2 j ), sem qualquer contradição,a então ele para de esperar e define v' = v. 2. Caso contrário, quando o tempo t3 acabar, ele define v′ = \(\bot\). 3. Quando o valor de v′ for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se i \(\in\)SV r,3 ou não. 4. Se i \(\in\)SV r,3, então i calcula a mensagem mr,3 eu \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 i ), destrói seu chave secreta efêmera skr,3 i , e então propaga mr,3 eu. Caso contrário, eu paro sem propagar qualquer coisa. aOu seja, ele não recebeu duas mensagens válidas contendo ESIGj(v) e um ESIGj(ˆv) diferente respectivamente, de um jogador j. Aqui e daqui em diante, exceto nas Condições Finais definidas posteriormente, sempre que um jogador honesto deseja mensagens de um determinado formato, mensagens contraditórias nunca são contadas ou consideradas válidas.

Etapa 4: Resultado do GC e a primeira etapa do BBA⋆ Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia sua própria Etapa 4 da rodada r assim que ele termina seu próprio Passo 3. • O usuário i espera um tempo máximo 2\(\lambda\).a Enquanto espera, i age da seguinte forma. 1. Ele calcula vi e gi, a saída do GC, como segue. (a) Se existe um valor v′ ̸= \(\bot\)tal que ele recebeu pelo menos tH mensagens válidas senhor,3 j = (ESIGj(v′), \(\sigma\)r,3 j ), então ele para de esperar e define vi \(\triangleq\)v′ e gi \(\triangleq\)2. (b) Se ele recebeu pelo menos as mensagens válidas mr,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ), então ele para esperando e define vi \(\triangleq\) \(\bot\) e gi \(\triangleq\)0.b (c) Caso contrário, quando o tempo 2\(\lambda\) acabar, se existir um valor v′ ̸= \(\bot\)tal que ele tenha recebeu pelo menos ⌈tH 2 ⌉mensagens válidas senhor,j j = (ESIGj(v′), \(\sigma\)r,3 j ), então ele define vi \(\triangleq\)v′ e gi \(\triangleq\)1.c (d) Caso contrário, quando o tempo 2\(\lambda\) acabar, ele define vi \(\triangleq\) \(\bot\) e gi \(\triangleq\)0. 2. Quando os valores vi e gi forem definidos, i calcula bi, a entrada de BBA⋆, como segue: bi \(\triangleq\)0 se gi = 2, e bi \(\triangleq\)1 caso contrário. 3. i calcula Qr−1 a partir do CERT r−1 e verifica se i \(\in\)SV r,4 ou não. 4. Se i \(\in\)SV r,4, ele calcula a mensagem mr,4 eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), destrói seu chave secreta efêmera skr,4 i , e propaga mr,4 eu. Caso contrário, eu para sem propagar qualquer coisa. aAssim, o tempo total máximo desde que i inicia sua Etapa 1 da rodada r poderia ser t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ. bSe a Etapa (b) estiver ou não no protocolo, isso não afeta sua correção. No entanto, a presença da Etapa (b) permite que a Etapa 4 termine em menos de 2\(\lambda\) se um número suficiente de verificadores da Etapa 3 tiver “assinado \(\bot\)”. cPode-se provar que v′ neste caso, se existir, deve ser único.Etapa s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Uma etapa de BBA⋆ com moeda fixada em 0 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele termina seu próprio Passo s −1. • O usuário i espera um tempo máximo 2\(\lambda\).a Enquanto espera, i age da seguinte forma. – Condição Final 0: Se em algum ponto existe uma string v ̸= \(\bot\) e um passo s′ tal que (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda em 0, (b) recebi pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),b e (c) i recebeu uma mensagem válida (SIGj(Qr−1), \(\sigma\)r,1 j) com j sendo o segundo componente de v, então, eu para de esperar e termina sua própria execução do Passo s (e de fato da rodada r) imediatamente, sem propagar nada como um verificador (r, s); define H(Br) como o primeiro componente de v; e define seu próprio CERT r como o conjunto de mensagens mr,s′−1 j da etapa (b) junto com (SIGj(Qr−1), \(\sigma\)r,1 j ).c – Condição Final 1: Se em algum ponto existir um passo s′ tal que (a') 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 - isto é, a etapa s′ é uma etapa fixada em moeda para 1, e (b') i recebeu pelo menos tH mensagens válidas mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),d então, eu para de esperar e termina sua própria execução do Passo s (e de fato da rodada r) certo afastado sem propagar nada como um verificador (r, s); define Br = Br ǫ; e define o seu próprio CERT r será o conjunto de mensagens mr,s′−1 j da subetapa (b'). – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)1. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), mas eles não concordam sobre o mesmo v, então ele para esperando e define bi \(\triangleq\)0. – Caso contrário, quando o tempo 2\(\lambda\) acabar, i define bi \(\triangleq\)0. – Quando o valor bi for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se eu \(\in\)SV r,s. – Se i \(\in\)SV r,s, i calcula a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) com vi sendo o valor que ele calculou na Etapa 4, destrói sua chave secreta efêmera skr,s eu, e então propaga senhor,s eu. Caso contrário, paro sem propagar nada. aAssim, o tempo total máximo desde que i inicia sua Etapa 1 da rodada r poderia ser ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ. bEssa mensagem do jogador j é contada mesmo que o jogador i também tenha recebido uma mensagem de j assinando por 1. Coisas semelhantes para a Condição Final 1. Conforme mostrado na análise, isso é para garantir que todos os usuários honestos saibam CERT r dentro do tempo \(\lambda\) um do outro. cO usuário i agora conhece H(Br) e sua própria rodada termina. Ele só precisa esperar até que o bloco Br esteja propagado para ele, o que pode levar algum tempo adicional. Ele ainda ajuda a propagar mensagens como um usuário genérico, mas não inicia nenhuma propagação como um verificador (r, s). Em particular, ele ajudou a propagar todas as mensagens em seu CERT r, que é suficiente para o nosso protocolo. Observe que ele também deve definir bi \(\triangleq\)0 para o protocolo BA binário, mas bi não é necessário neste caso de qualquer maneira. Coisas semelhantes para todas as instruções futuras. dNeste caso, não importa quais são os vj’s. 65Etapa s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Uma etapa de BBA⋆ fixada em moeda para 1 Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele termina seu próprio Passo s −1. • O usuário i espera um tempo máximo de 2\(\lambda\). Enquanto espero, ajo da seguinte maneira. – Condição Final 0: As mesmas instruções da etapa Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções da etapa Coin-Fixed-To-0. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)0.a – Caso contrário, quando o tempo 2\(\lambda\) acabar, i define bi \(\triangleq\)1. – Quando o valor bi for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se eu \(\in\)SV r,s. – Se i \(\in\)SV r,s, i calcula a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) com vi sendo o valor que ele calculou na Etapa 4, destrói sua chave secreta efêmera skr,s eu, e então propaga senhor,s eu. Caso contrário, paro sem propagar nada. aObserve que receber mensagens válidas (r, s −1) assinadas para 1 significaria a Condição Final 1. Etapa s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Uma etapa de BBA⋆ com moeda genuinamente invertida Instruções para cada usuário i \(\in\)PKr−k: O usuário i inicia suas próprias etapas da rodada r assim que ele termina seu próprio passo s −1. • O usuário i espera um tempo máximo de 2\(\lambda\). Enquanto espero, ajo da seguinte maneira. – Condição Final 0: As mesmas instruções da etapa Coin-Fixed-To-0. – Condição Final 1: As mesmas instruções da etapa Coin-Fixed-To-0. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)0. – Se em qualquer ponto ele tem recebido em menos o válido senhor,s−1 j é de o formulário (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), então ele para de esperar e define bi \(\triangleq\)1. – Caso contrário, quando o tempo 2\(\lambda\) acabar, deixando SV r,s−1 eu seja o conjunto de (r, s −1)-verificadores de a quem ele recebeu uma mensagem válida mr,s−1 j , i define bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 eu H(\(\sigma\)r,s−1 j )). – Quando o valor bi for definido, i calcula Qr−1 a partir do CERT r−1 e verifica se eu \(\in\)SV r,s. – Se i \(\in\)SV r,s, i calcula a mensagem mr,s eu \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) com vi sendo o valor que ele calculou na Etapa 4, destrói sua chave secreta efêmera skr,s eu, e então propaga senhor,s eu. Caso contrário, paro sem propagar nada. Observação. Em princípio, conforme considerado na subseção 6.2, o protocolo pode levar arbitrariamente muitas passos em alguma rodada. Caso isso aconteça, conforme discutido, um usuário i \(\in\)SV r,s com s > \(\mu\) esgotou

seu estoque de chaves efêmeras pré-geradas e precisa autenticar sua mensagem (r, s) mr,s eu por um “cascata” de chaves efêmeras. Assim, a mensagem de i torna-se um pouco mais longa e a transmissão é mais longa as mensagens levarão um pouco mais de tempo. Assim, depois de tantas etapas de uma determinada rodada, o valor de o parâmetro \(\lambda\) aumentará ligeiramente automaticamente. (Mas ele reverte para o \(\lambda\) original uma vez que um novo bloco é produzido e uma nova rodada começa.) Reconstrução do Bloco Round-r por Não-Verificadores Instruções para cada usuário i no sistema: O usuário i inicia sua própria rodada r assim que tiver CERT r-1. • sigo as instruções de cada etapa do protocolo, participa da propagação de todos mensagens, mas não inicia nenhuma propagação em uma etapa se ele não for um verificador nela. • i termina sua própria rodada r inserindo a Condição Final 0 ou a Condição Final 1 em alguma etapa, com o CERT r correspondente. • A partir daí, ele inicia sua rodada r + 1 enquanto espera para receber o bloco real Br (a menos que ele já recebeu), cujo hash H(Br) foi definido pelo CERT r. Novamente, se CERT r indica que Br = Br ǫ, o i conhece Br no momento em que possui CERT r. 6.4 Análise de Algorand ′ 2 A análise de Algorand ′ 2 é facilmente derivado daquele de Algorand ′ 1. Essencialmente, em Algorand ′ 2, com probabilidade esmagadora, (a) todos os usuários honestos concordam com o mesmo bloco Br; o líder de um novo O bloco é honesto com probabilidade de pelo menos ph = h2(1 + h −h2).

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).

Lidando com usuários honestos off-line

Como dissemos, um usuário honesto segue todas as instruções prescritas, que incluem a de estar online e executando o protocolo. Este não é um grande fardo em Algorand, uma vez que o cálculo e a largura de banda exigida de um usuário honesto é bastante modesta. No entanto, vamos salientar que Algorand pode ser facilmente modificável para funcionar em dois modelos, nos quais usuários honestos podem ficar off-line em grandes números. Antes de discutir estes dois modelos, salientamos que, se a percentagem de jogadores honestos eram 95%, Algorand ainda poderia ser executado definindo todos os parâmetros assumindo que h = 80%. Conseqüentemente, Algorand continuaria a funcionar corretamente mesmo que no máximo metade dos jogadores honestos optaram por ficar off-line (na verdade, um caso importante de “absenteísmo”). Na verdade, em qualquer momento, pelo menos 80% dos jogadores online seriam honestos. Da participação contínua à honestidade preguiçosa Como vimos, Algorand ′ 1 e Algorand ′ 2 escolha o parâmetro de retrospectiva k. Vamos agora mostrar que escolher k adequadamente grande permite remover o requisito de participação contínua. Este requisito garante uma propriedade crucial: a saber, que o protocolo BA subjacente BBA⋆tem uma maioria honesta adequada. Vamos agora explicar o quão preguiçoso a honestidade fornece uma maneira alternativa e atraente de satisfazer essa propriedade.

Lembre-se de que um usuário i é preguiçoso, mas honesto se (1) seguir todas as instruções prescritas, quando ele é convidado a participar do protocolo e (2) ele é convidado a participar apenas do protocolo muito raramente - por exemplo, uma vez por semana - com aviso prévio adequado e potencialmente recebendo recompensas quando ele participa. Para permitir que Algorand trabalhe com tais players, basta “escolher os verificadores do rodada atual entre os usuários que já estão no sistema em uma rodada muito anterior.” Na verdade, lembre-se que os verificadores para uma rodada r são escolhidos entre os usuários da rodada r −k, e as seleções são feitas com base na quantidade Qr−1. Observe que uma semana consiste em aproximadamente 10.000 minutos e suponha que um rodada leva aproximadamente (por exemplo, em média) 5 minutos, então uma semana tem cerca de 2.000 rodadas. Suponha que, em algum momento, um usuário deseja planejar seu tempo e saber se ele estará um verificador na próxima semana. O protocolo agora escolhe os verificadores para uma rodada r entre os usuários em arredondar r −k −2.000, e as seleções são baseadas em Qr−2.001. Na rodada r, jogador que eu já conheço os valores Qr −2.000, . . . , Qr−1, uma vez que na verdade fazem parte do blockchain. Então, para cada M entre 1 e 2.000, i é um verificador em uma etapa s da rodada r + M se e somente se .H SIGi r + M, s, Qr+M−2.001 \(\leq\)p. Assim, para verificar se ele será chamado para atuar como verificador nas próximas 2.000 rodadas, devo calcular \(\sigma\)M,s eu =SIGi r + M, s, Qr+M−2.001 para M = 1 a 2.000 e para cada etapa s, e verifique se .H(\(\sigma\)M,s eu ) \(\leq\)p para alguns deles. Se o cálculo de uma assinatura digital levar um milissegundo, então toda esta operação levará cerca de 1 minuto de cálculo. Se ele não for selecionado como verificador em qualquer uma dessas rodadas, ele poderá ficar off-line com uma “consciência honesta”. Se ele tivesse continuamente participou, ele teria essencialmente dado 0 passos nas próximas 2.000 rodadas de qualquer maneira! Se, em vez disso, ele é selecionado para ser um verificador em uma dessas rodadas, então ele se prepara (por exemplo, obtendo todos as informações necessárias) para atuar como um verificador honesto na rodada apropriada. Ao agir assim, um verificador de potencial preguiçoso, mas honesto, apenas deixa de participar da propagação. de mensagens. Mas a propagação de mensagens é normalmente robusta. Além disso, os pagadores e os beneficiários de espera-se que os pagamentos propagados recentemente estejam on-line para observar o que acontece com seus pagamentos, e assim participarão da propagação da mensagem, se forem honestos.

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

Как мы уже говорили, честный пользователь следует всем предписанным ему инструкциям, в том числе и по нахождению в сети. и запускаем протокол. Это не является большой нагрузкой в 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 раундах! Если вместо этого его выбирают в качестве проверяющего в одном из этих раундов, затем он готовится (например, получая все необходимую информацию), чтобы выступать в качестве честного проверяющего на соответствующем раунде. Действуя таким образом, ленивый, но честный потенциальный проверяющий только упускает возможность участвовать в распространении информации. сообщений. Но распространение сообщений обычно является надежным. При этом плательщики и получатели ожидается, что недавно распространенные платежи будут онлайн, чтобы наблюдать, что происходит с их платежами, и, таким образом, они будут участвовать в распространении сообщений, если они честны.

Protocolo Algorand ′ com maioria honesta de dinheiro

Agora, finalmente, mostramos como substituir a suposição da maioria honesta dos usuários pela hipótese muito mais suposição significativa da Maioria Honesta do Dinheiro. A ideia básica é (em um sabor proof-of-stake) “selecionar um usuário i \(\in\)PKr−k para pertencer a SV r,s com um peso (ou seja, poder de decisão) proporcional a a quantidade de dinheiro possuída por i.”24 Pela nossa suposição HMM, podemos escolher se essa quantia deve ser detida na rodada r −k ou no (início da) rodada r. Supondo que não nos importamos com a participação contínua, optamos por a última escolha. (Para eliminar a participação contínua, teríamos optado pela primeira opção. Melhor dizendo, pela quantidade de dinheiro possuída na rodada r −k −2.000.) Existem muitas maneiras de implementar essa ideia. A maneira mais simples seria manter cada tecla pressionada no máximo 1 unidade de dinheiro e então selecione aleatoriamente n usuários i de PKr−k tal que a(r) eu = 1. 24Deveríamos dizer PKr−k−2.000 para substituir a participação contínua. Por simplicidade, uma vez que se pode querer exigir de qualquer forma, com participação contínua, usamos PKr-k como antes, para carregar um parâmetro a menos.

A próxima implementação mais simples A próxima implementação mais simples pode ser exigir que cada chave pública possua uma quantidade máxima de dinheiro M, para algum M fixo. O valor M é pequeno o suficiente comparado com a quantidade total de dinheiro dinheiro no sistema, de modo que a probabilidade de uma chave pertencer ao conjunto verificador de mais de um intervir —digamos— k rodadas é insignificante. Então, uma chave i \(\in\)PKr−k, possuindo uma quantia de dinheiro a(r) eu na rodada r, é escolhido para pertencer a SV r,s se .H SIGi r, s, Qr−1 \(\leq\)p \(\cdot\) uma(r) eu M . E tudo continua como antes. Uma implementação mais complexa A última implementação “forçou um participante rico no sistema a possuir muitas chaves”. Uma implementação alternativa, descrita abaixo, generaliza a noção de status e considera cada usuário i consiste em K + 1 cópias (i, v), cada uma das quais é selecionada independentemente para ser um verificador, e possuirá sua própria chave efêmera (pkr,s eu,v, skr,s i,v) em uma etapa s de uma rodada r. O valor K depende sobre a quantidade de dinheiro a(r) eu propriedade de i na rodada r. Vejamos agora como esse sistema funciona com mais detalhes. Número de cópias Seja n a cardinalidade esperada desejada de cada conjunto de verificadores e seja a(r) eu seja a quantidade de dinheiro pertencente a um usuário i na rodada r. Seja Ar a quantidade total de dinheiro possuído pelos usuários em PKr−k na rodada r, ou seja, Ar = X i\(\in\)P Kr−k um(r) eu. Se i for um usuário em PKr−k, então as cópias de i são (i, 1), . . . , (i, K + 1), onde K = $ n \(\cdot\) uma(r) eu Ar % . Exemplo. Seja n = 1.000, Ar = 109 e a(r) eu = 3,7 milhões. Então, K = 103 \(\cdot\) (3,7 \(\cdot\) 106) 109  = ⌊3,7⌋= 3 . Verificadores e credenciais Seja eu um usuário em PKr−k com K + 1 cópias. Para cada v = 1,. . . , K, copy (i, v) pertence a SV r,s automaticamente. Ou seja, a credencial de i é \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1), mas a condição correspondente torna-se .H(\(\sigma\)r,s i,v) \(\leq\)1, que é sempre verdadeiro. Para cópia (i, K + 1), para cada etapa s da rodada r, i verifica se .H SIGi (eu, K + 1), r, s, Qr−1 \(\leq\)a(r) eu n Ar-K.

Se sim, a cópia (i, K + 1) pertence a SV r,s. Para provar isso, i propaga a credencial \(\sigma\)r,1 i,K+1 = SIGi (eu, K + 1), r, s, Qr−1 . Exemplo. Como no exemplo anterior, seja n = 1K, a(r) eu = 3,7M, Ar = 1B e i tem 4 cópias: (i, 1), . . . , (eu, 4). Então, as primeiras 3 cópias pertencem a SV r,s automaticamente. Para o 4º, conceitualmente, Algorand ′ lança independentemente uma moeda viciada, cuja probabilidade de cara é 0,7. Copiar (i, 4) é selecionado se e somente se o lançamento da moeda for Cara. (É claro que esse lançamento de moeda tendencioso é implementado hashing, assinando e comparando - como fazemos fiz o tempo todo neste artigo - para me permitir provar seu resultado.) Negócios como sempre Tendo explicado como os verificadores são selecionados e como suas credenciais são calculada a cada etapa de uma rodada r, a execução de uma rodada é semelhante à já explicada.

Протокол 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, выполнение раунда аналогично уже объясненному.

Tratamento de forks

Tendo reduzido a probabilidade de bifurcações para 10-12 ou 10-18, é praticamente desnecessário lidar com na remota chance de ocorrerem. Algorand, no entanto, também pode empregar vários fork procedimentos de resolução, com ou sem comprovação de trabalho. Uma forma possível de instruir os usuários a resolver bifurcações é a seguinte: • Siga a cadeia mais longa se um usuário vir várias cadeias. • Se houver mais de uma cadeia mais longa, siga aquela com um bloco não vazio no final. Se todos eles têm blocos vazios no final, considere seus penúltimos blocos. • Se houver mais de uma cadeia mais longa com blocos não vazios no final, digamos que as cadeias sejam de comprimento r, siga aquele cujo líder do bloco r possui a menor credencial. Se houver laços, siga aquele cujo bloco r tem o menor valor hash. Se ainda houver empates, siga o aquele cujo bloco r é ordenado lexicograficamente em primeiro lugar.

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

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

Lidando com partições de rede

Como dito, assumimos que os tempos de propagação das mensagens entre todos os usuários da rede são limitados por \(\lambda\) e Λ. Esta não é uma suposição forte, já que a Internet de hoje é rápida e robusta, e os valores reais desses parâmetros são bastante razoáveis. Aqui, vamos ressaltar que Algorand ′ 2 continua a funcionar mesmo que a Internet ocasionalmente seja dividida em duas partes. O caso quando a Internet é dividida em mais de duas partes de maneira semelhante. 10.1 Partições Físicas Em primeiro lugar, a partição pode ser causada por motivos físicos. Por exemplo, um grande terremoto pode acabarão por quebrar completamente a ligação entre a Europa e a América. Neste caso, o usuários mal-intencionados também são particionados e não há comunicação entre as duas partes. Assim

haverá dois Adversários, um para a parte 1 e outro para a parte 2. Cada Adversário ainda tenta quebrar o protocolo em sua própria parte. Suponha que a partição aconteça no meio da rodada r. Então cada usuário ainda é selecionado como um verificador baseado em PKr−k, com a mesma probabilidade de antes. Deixe HSV r,s eu e MSV r,s eu respectivamente seja o conjunto de verificadores honestos e maliciosos em uma etapa s da parte i \(\in\){1, 2}. Nós temos |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. Observe que |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| < 2tH com probabilidade esmagadora. Se alguma parte i tiver |HSV r,s eu | + |MSV r,s eu | \(\geq\)tH com probabilidade não desprezível, por exemplo, 1%, então o probabilidade de que |HSV r,s 3−eu| + |MSV r,s 3−eu| \(\geq\)tH é muito baixo, por exemplo, 10−16 quando F = 10−18. Neste caso, podemos muito bem tratar a parte menor como estando off-line, porque não haverá verificadores suficientes em esta parte para gerar as assinaturas para certificar um bloco. Consideremos a parte maior, digamos a parte 1, sem perda de generalidade. Embora |HSV r,s| < tH com probabilidade desprezível em cada passo s, quando a rede é particionada, |HSV r,s 1 | pode ser menor que tH com alguma probabilidade não desprezível. Neste caso o Adversário pode, com alguma outra probabilidade não desprezível, forçar o protocolo BA binário em uma bifurcação na rodada r, com um bloco não vazio Br e o bloco vazio Br ǫ ambos com assinaturas válidas.25 Por exemplo, em um Coin-Fixed-To-0 step s, todos os verificadores em HSV r,s 1 assinado para o bit 0 e H(Br), e propagou seus mensagens. Todos os verificadores em MSV r,s 1 também assinaram 0 e H(Br), mas retiveram suas mensagens. Porque |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tH, o sistema possui assinaturas suficientes para certificar o Br. No entanto, desde o verificadores maliciosos retiveram suas assinaturas, os usuários entram na etapa s + 1, que é uma etapa Coin-Fixed-To1. Porque |HSV r,s 1 | < tH devido à partição, os verificadores em HSV r,s+1 1 não vi assinaturas para o bit 0 e todas assinadas para o bit 1. Todos os verificadores em MSV r,s+1 1 fez o mesmo. Porque |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH, o sistema possui assinaturas suficientes para certificar Br ǫ. O Adversário em seguida, cria uma bifurcação liberando as assinaturas do MSV r,s 1 para 0 e H(Br). Assim, haverá dois Qr’s, definidos pelos blocos correspondentes da rodada r. No entanto, a bifurcação não continuará e apenas um dos dois ramos poderá crescer na rodada r + 1. Instruções adicionais para Algorand ′ 2. Ao ver um bloco não vazio Br e o bloco vazio bloco BR ǫ , segue o não vazio (e o Qr definido por ele). Na verdade, ao instruir os usuários a usarem o bloco não vazio no protocolo, se um grande quantidade de usuários honestos em PKr+1−k percebem que há uma bifurcação no início da rodada r +1, então o o bloco vazio não terá seguidores suficientes e não crescerá. Suponha que o adversário consiga particionar os usuários honestos para que alguns usuários honestos vejam Br (e talvez Br ǫ), e alguns só veem irmão ǫ. Porque o Adversário não pode dizer qual deles será um verificador seguindo Br e qual será um verificador seguindo o Ir. ǫ , os usuários honestos são particionados aleatoriamente e cada um deles ainda torna-se um verificador (seja em relação a Br ou em relação a Br ǫ) em uma etapa s > 1 com probabilidade pág. Para os usuários mal-intencionados, cada um deles pode ter duas chances de se tornar um verificador, uma com Br e outro com Br ǫ, cada um com probabilidade p independentemente. Seja HSV r+1,s 1;Br seja o conjunto de verificadores honestos nas etapas s da rodada r+1 após Br. Outras notações como HSV r+1,s 1;Brǫ , MSV r+1,s 1;Br e MSV r+1,s 1;Brǫ são definidos de forma semelhante. Por Chernoffbound, é fácil 25Ter uma bifurcação com dois blocos não vazios não é possível com ou sem partições, exceto com partições insignificantes probabilidade.ver isso com uma probabilidade esmagadora, |HSV r+1,s 1;Br | + |HSV r+1,s 1;Brǫ | + |MSV r+1,s 1;Br | + |MSV r+1,s 1;Brǫ | < 2tH. Conseqüentemente, as duas filiais não podem ter ambas as assinaturas adequadas certificando um bloco para rodada r + 1 na mesma etapa s. Além disso, uma vez que as probabilidades de seleção para duas etapas s e s′ são as iguais e as seleções são independentes, também com probabilidade esmagadora |HSV r+1,s 1;Br | + |MSV r+1,s 1;Br | + |HSV r+1,s′ 1;Brǫ | + |MSV r+1,s′ 1;Brǫ | < 2tH, para quaisquer duas etapas s e s′. Quando F = 10−18, pelo sindicato, desde que o Adversário não possa particionar os usuários honestos por um longo tempo (digamos 104 etapas, o que equivale a mais de 55 horas com \(\lambda\) = 10 segundos26), com alta probabilidade (digamos 1−10−10) no máximo uma ramificação terá as assinaturas adequadas para certificar um bloco na rodada r + 1. Finalmente, se a partição física criou duas partes com aproximadamente o mesmo tamanho, então o probabilidade de que |HSV r,s eu | + |MSV r,s eu | \(\geq\)tH é pequeno para cada parte i. Seguindo uma análise semelhante, mesmo que o Adversário consiga criar uma bifurcação com alguma probabilidade não desprezível em cada parte para a rodada r, no máximo um dos quatro ramos pode crescer na rodada r + 1. 10.2 Partição Adversária Em segundo lugar, a partição pode ser causada pelo Adversário, de modo que as mensagens propagadas pelos usuários honestos de uma parte não alcançará diretamente os usuários honestos da outra parte, mas o Adversário é capaz de encaminhar mensagens entre as duas partes. Ainda assim, uma vez que uma mensagem de um parte chega a um usuário honesto na outra parte, será propagada nesta última como de costume. Se o O adversário está disposto a gastar muito dinheiro, é concebível que ele consiga hackear o Internet e particione-o assim por um tempo. A análise é semelhante à da parte maior da partição física acima (a parte menor parte pode ser considerada como tendo população 0): o Adversário pode ser capaz de criar uma bifurcação e cada usuário honesto vê apenas um dos ramos, mas no máximo um ramo pode crescer. 10.3 Partições de rede em soma Embora possam ocorrer partições de rede e uma bifurcação em uma rodada possa ocorrer nas partições, não há ambigüidade persistente: um garfo dura muito pouco e, na verdade, dura no máximo uma única rodada. Em todas as partes da partição, exceto no máximo uma, os usuários não podem gerar um novo bloco e, portanto, (a) perceber que há uma partição na rede e (b) nunca confiar em blocos que irão “desaparecer”. Agradecimentos Gostaríamos de agradecer primeiro a Sergey Gorbunov, co-autor do citado sistema Democoin. Os mais sinceros agradecimentos a Maurice Herlihy, pelas muitas discussões esclarecedoras, por apontar que o pipelining melhorará o desempenho da taxa de transferência de Algorand e melhorará muito o 26Observe que um usuário termina uma etapa s sem esperar pelo tempo 2\(\lambda\) somente se ele tiver visto pelo menos as assinaturas para o mesma mensagem. Quando não há assinaturas suficientes, cada etapa durará 2\(\lambda\).

exposição de uma versão anterior deste artigo. Muito obrigado a Sergio Rajsbaum, pelos seus comentários sobre uma versão anterior deste artigo. Muito obrigado a Vinod Vaikuntanathan, por várias discussões profundas e percepções. Muito obrigado a Yossi Gilad, Rotem Hamo, Georgios Vlachos e Nickolai Zeldovich por começar a testar essas ideias e por muitos comentários e discussões úteis. Silvio Micali gostaria de agradecer pessoalmente a Ron Rivest pelas inúmeras discussões e orientações em pesquisa criptográfica ao longo de mais de 3 décadas, pela coautoria do sistema de micropagamento citado que inspirou um dos mecanismos de seleção de verificadores de Algorand. Esperamos levar esta tecnologia para o próximo nível. Enquanto isso a viagem e o companheirismo são muito divertidos, pelos quais estamos muito gratos.

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

Как уже говорилось, мы предполагаем, что время распространения сообщений среди всех пользователей в сети ограничено сверху значениями \(\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. Мы надеемся вывести эту технологию на новый уровень. Тем временем путешествие и общение это очень весело, за что мы очень благодарны.