Cosmos: una red de libros de contabilidad distribuidos

Por Jae Kwon and Ethan Buchman · 2016

Introdução

O sucesso combinado do ecossistema de código aberto, compartilhamento descentralizado de yle e criptomoedas públicas inspirou um entendimento de que protocolos descentralizados de internet pode ser usado para melhorar radicalmente a infra-estrutura socioeconómica. Vimos aplicativos blockchain especializados como Bitcoin [1] (um criptomoeda), Zerocash [2] (uma criptomoeda para privacidade) e plataformas smart contract generalizadas, como Ethereum [3], com inúmeras aplicações distribuídas para o Etherium Virtual Máquina (EVM), como Augur (um mercado de previsão) e TheDAO [4] (um clube de investimento). Até o momento, entretanto, esses blockchains sofreram com uma série de de inconvenientes, incluindo a sua grave ineficiência energética, fraca ou desempenho limitado e mecanismos de governação imaturos. Propostas para dimensionar a taxa de transferência de transações de Bitcoin, como Segregated-Witness [5] e BitcoinNG [6], são de escala vertical soluções que permanecem limitadas pela capacidade de um único máquina, a fim de garantir a propriedade de completa auditabilidade. A Lightning Network [7] pode ajudar a dimensionar a transação Bitcoin

volume deixando algumas transações completamente fora do razão, e é adequado para micropagamentos e preservação de privacidade trilhos de pagamento, mas pode não ser adequado para pagamentos mais generalizados necessidades de escala. Uma solução ideal é aquela que permite que vários blockchains paralelos sejam interoperar, mantendo suas propriedades de segurança. Isso tem comprovadamente difícil, se não impossível, com proof-of-work. Mesclado a mineração, por exemplo, permite que o trabalho realizado para proteger um pai cadeia a ser reutilizada em uma cadeia filha, mas as transações ainda devem ser validado, em ordem, por cada nó, e um blockchain extraído por mesclagem é vulnerável a ataques se a maioria do poder hashing no o pai não está minerando ativamente o filho. Uma revisão acadêmica de arquiteturas de rede alternativas blockchain são fornecidas para contexto adicional e fornecemos resumos de outras propostas e suas desvantagens em trabalhos relacionados. Aqui apresentamos Cosmos, uma nova arquitetura de rede blockchain que resolve todos esses problemas. Cosmos é uma rede de muitos blockchains independentes, chamados zonas. As zonas são alimentadas por Tendermint Core [8], que fornece um alto desempenho, mecanismo de consenso consistente e seguro do tipo PBFT, onde garantias estritas de responsabilização prevalecem sobre o comportamento de maliciosos atores. O algoritmo de consenso BFT do Tendermint Core é adequado para dimensionar proof-of-stake blockchains públicos. A primeira zona em Cosmos é chamada de Hub Cosmos. O Cosmos Hub é uma criptomoeda proof-of-stake multiativos com um simples mecanismo de governança que permite à rede se adaptar e atualizar. Além disso, o Hub Cosmos pode ser estendido por conectando outras zonas. O hub e as zonas da rede Cosmos se comunicam com entre si por meio de um protocolo de comunicação inter-blockchain (IBC), uma espécie de UDP ou TCP virtual para blockchains. Os tokens podem ser transferido de uma zona para outra com segurança e rapidezsem a necessidade de liquidez cambial entre zonas. Em vez disso, todas as transferências entre zonas token passam pelo hub Cosmos, que mantém registro da quantidade total de tokens mantidos por cada zona. O hub isola cada zona da falha de outras zonas. Porque qualquer pessoa pode conectar uma nova zona ao hub Cosmos, as zonas permitem para compatibilidade futura com novas inovações blockchain. Nesta seção descrevemos o protocolo de consenso Tendermint e a interface usada para construir aplicativos com ele. Para mais detalhes, consulte o apêndice. Nos algoritmos clássicos de tolerância a falhas bizantinas (BFT), cada nó tem o mesmo peso. No Tendermint, os nós têm um valor não negativo quantidade de poder de voto e nós que têm votação positiva potência são chamados de validators. Os validadores participam do protocolo de consenso transmitindo assinaturas criptográficas, ou votos, para chegar a acordo sobre o próximo bloco. Os poderes de voto dos validadores são determinados na génese ou são alterado deterministicamente pelo blockchain, dependendo do aplicação. Por exemplo, em um aplicativo proof-of-stake como no Hub Cosmos, o poder de voto poderá ser determinado pelo valor de staking tokens garantidos como garantia. NOTA: Frações como ⅔ e ⅓ referem-se a frações do total de votos potência, nunca o número total de validators, a menos que todos os validators têm peso igual. >⅔ significa “mais de ⅔”, ≥⅓ significa “pelo menos ⅓”. Tendermint é um protocolo de consenso BFT parcialmente síncrono derivado do algoritmo de consenso DLS [20]. Tendermint é

notável por sua simplicidade, desempenho e responsabilidade de garfo. O protocolo requer um conjunto conhecido yxed de validators, onde cada validator é identificado pela sua chave pública. Os validadores tentam chegar a um consenso sobre um bloco de cada vez, onde um bloco é uma lista de transações. A votação para o consenso sobre um bloco prossegue em rodadas. Cada rodada tem um líder, ou proponente, que propõe um bloqueio. Os validators então votam, em etapas, se aceitar o bloco proposto ou passar para a próxima rodada. O proponente para uma rodada é escolhido de forma determinística a partir do ordenado lista de validators, proporcionalmente ao seu poder de voto. Os detalhes completos do protocolo estão descritos aqui. A segurança do Tendermint deriva do uso de recursos bizantinos ideais tolerância a falhas por meio de votação por supermaioria (>⅔) e bloqueio mecanismo. Juntos, eles garantem que: ≥⅓ o poder de voto deve ser bizantino para causar uma violação do segurança, onde mais de dois valores estão comprometidos. se algum conjunto de validators conseguir violar a segurança, ou mesmo tentativas de fazê-lo, eles podem ser identificados pelo protocolo. Isto inclui votação para bloqueios de conspiração e transmissão votos injustificados. Apesar das suas fortes garantias, o Tendermint oferece resultados excepcionais desempenho. Em benchmarks de 64 nós distribuídos em 7 datacenters nos 5 continentes, em instâncias de nuvem de commodities, O consenso do Tendermint pode processar milhares de transações por segundo, com latências de commit da ordem de um a dois segundos. Notavelmente, o desempenho de bem mais de mil transações por segundo é mantido mesmo em condições adversas adversas, com validator está travando ou transmitindo votos criados com códigos maliciosos. Veja a figura abaixo para obter detalhes.

Tendermint throughput vs block size benchmarked across 64 nodes in 7 datacenters on 5 continents

Um grande benefício do algoritmo de consenso do Tendermint é simplificado leve segurança do cliente, tornando-o um candidato ideal para dispositivos móveis e casos de uso de internet das coisas. Embora um cliente light Bitcoin deva sincronizar cadeias de cabeçalhos de bloco e encontre aquele com maior prova de trabalho, os clientes Tendermint light precisam apenas acompanhar as mudanças para o conjunto validator e, em seguida, verifique os >⅔ PreCommits no bloco mais recente para determinar o estado mais recente. Provas de cliente leves sucintas também permitem inter-blockchain comunicação. Tendermint possui medidas de proteção para prevenir certos ataques notáveis, como gastos duplos de longo alcance e nada em jogo e censura. Eles são discutidos mais detalhadamente no apêndice.O algoritmo de consenso Tendermint é implementado em um programa chamado Tendermint Core. Tendermint Core é um “mecanismo de consenso” independente de aplicação que pode transformar qualquer aplicativo blackbox determinístico em um replicado distribuídamente blockchain. Tendermint Core se conecta a aplicativos blockchain por meio da Interface Blockchain do Aplicativo (ABCI) [17]. Assim, ABCI permite que aplicações blockchain sejam programadas em qualquer linguagem, não apenas a linguagem de programação que o consenso motor está escrito. Além disso, ABCI torna possível facilmente troque a camada de consenso de qualquer pilha blockchain existente. Fazemos uma analogia com a conhecida criptomoeda Bitcoin. Bitcoin é uma criptomoeda blockchain onde cada nó mantém um banco de dados de saída de transação não gasta (UTXO) totalmente auditado. Se queria-se criar um sistema semelhante a Bitcoin em cima de ABCI, O Tendermint Core seria responsável por Compartilhando blocos e transações entre nós Estabelecer uma ordem canônica/imutável de transações (o blockchain) Enquanto isso, o aplicativo ABCI seria responsável por Mantendo o banco de dados UTXO Validando assinaturas criptográficas de transações Evitar que as transações gastem fundos inexistentes Permitindo que clientes consultem o banco de dados UTXO Tendermint é capaz de decompor o design blockchain por oferecendo uma API muito simples entre o processo de inscrição e processo de consenso.

Introducción

El éxito combinado del ecosistema de código abierto, El intercambio de archivos descentralizado y las criptomonedas públicas han inspiró la comprensión de que los protocolos descentralizados de Internet puede utilizarse para mejorar radicalmente la infraestructura socioeconómica. Hemos visto aplicaciones especializadas blockchain como Bitcoin [1] (una criptomoneda), Zerocash [2] (una criptomoneda para la privacidad), y plataformas smart contract generalizadas como Ethereum [3], con innumerables aplicaciones distribuidas para Etherium Virtual Máquina (EVM) como Augur (un mercado de predicción) y TheDAO [4] (un club de inversiones). Sin embargo, hasta la fecha, estos blockchain han sufrido una serie de de desventajas, entre ellas su grave ineficiencia energética, su mala o mala calidad desempeño limitado y mecanismos de gobernanza inmaduros. Propuestas para escalar el rendimiento de transacciones de Bitcoin, como Testigo segregado [5] y BitcoinNG [6], son escalamiento vertical Soluciones que siguen limitadas por la capacidad de un único espacio físico. máquina, con el fin de garantizar la propiedad de completa auditabilidad. Lightning Network [7] puede ayudar a escalar la transacción Bitcoin

volumen dejando algunas transacciones fuera del libro mayor por completo, y es muy adecuado para micropagos y preservación de la privacidad carriles de pago, pero puede no ser adecuado para más generalizados necesidades de escalamiento. Una solución ideal es aquella que permite que múltiples blockchains paralelos interoperar conservando sus propiedades de seguridad. esto tiene resultó difícil, si no imposible, con proof-of-work. Fusionado la minería, por ejemplo, permite que el trabajo realizado para asegurar una matriz cadena para ser reutilizada en una cadena secundaria, pero las transacciones aún deben ser validado, en orden, por cada nodo, y un blockchain extraído por fusión es vulnerable a un ataque si la mayoría del hashing poder en el El padre no está fusionando activamente al niño. Una reseña académica de arquitecturas de red alternativas blockchain se proporciona para contexto adicional y proporcionamos resúmenes de otras propuestas y sus inconvenientes en el Trabajo Relacionado. Aquí presentamos Cosmos, una novedosa arquitectura de red blockchain que aborda todos estos problemas. Cosmos es una red de muchos blockchains independientes, llamados zonas. Las zonas están alimentadas por Tendermint Core [8], que proporciona un alto rendimiento, motor de consenso consistente y seguro similar a PBFT, donde la estricta responsabilidad de forka garantiza el control del comportamiento de malware actores. El algoritmo de consenso BFT de Tendermint Core es muy adecuado para escalar proof-of-stake blockchains públicos. La primera zona en Cosmos se llama Cosmos Hub. El Cosmos Hub es una criptomoneda proof-of-stake multiactivo con un simple mecanismo de gobernanza que permite a la red adaptarse y actualizar. Además, el concentrador Cosmos se puede ampliar mediante conectando otras zonas. El hub y las zonas de la red Cosmos se comunican con entre sí a través de un protocolo de comunicación inter-blockchain (IBC), una especie de UDP o TCP virtual para blockchains. Las fichas pueden ser transferido de una zona a otra de forma segura y rápidasin necesidad de liquidez cambiaria entre zonas. En cambio, todas las transferencias entre zonas token pasan por el concentrador Cosmos, que realiza un seguimiento de la cantidad total de tokens en poder de cada zona. el hub aísla cada zona del fallo de otras zonas. porque cualquiera puede conectar una nueva zona al Cosmos Hub, las zonas lo permiten para compatibilidad futura con las nuevas innovaciones blockchain. En esta sección describimos el protocolo de consenso de Tendermint. y la interfaz utilizada para crear aplicaciones con él. Para más detalles, consulte el apéndice. En los algoritmos bizantinos clásicos tolerantes a fallos (BFT), cada nodo tiene el mismo peso. En Tendermint, los nodos tienen un valor no negativo. cantidad de poder de voto y nodos que tienen voto positivo potencia se llaman validators. Los validadores participan en el protocolo de consenso mediante la difusión de firmas criptográficas, o votos, para acordar el siguiente bloque. Los poderes de voto de los validadores se determinan en la génesis o se cambiado de manera determinista por el blockchain, dependiendo del aplicación. Por ejemplo, en una aplicación proof-of-stake como el Centro Cosmos, el poder de voto puede ser determinado por el monto de staking tokens garantizados como garantía. NOTA: Fracciones como ⅔ y ⅓ se refieren a fracciones del total de la votación. potencia, nunca el número total de validators, a menos que todos los validators tienen igual peso. >⅔ significa “más de ⅔”, ≥⅓ significa “al menos ⅓”. Tendermint es un protocolo de consenso BFT parcialmente sincrónico derivado del algoritmo de consenso DLS [20]. La menta tierna es

destaca por su simplicidad, rendimiento y responsabilidad de bifurcación. El protocolo requiere un conjunto conocido yxed de validators, donde cada validator se identifica por su clave pública. Los validadores intentan llegar a un consenso sobre un bloque a la vez, donde un bloque es una lista de transacciones. La votación por el consenso sobre un bloque se lleva a cabo en rondas. Cada ronda tiene un líder de ronda, o proponente, que propone un bloque. Los validators luego votan, por etapas, sobre si aceptar el bloque propuesto o pasar a la siguiente ronda. el El proponente de una ronda se elige de forma determinista entre los ordenados. lista de validators, en proporción a su poder de voto. Los detalles completos del protocolo se describen aquí. La seguridad de Tendermint se deriva de su uso de bizantino óptimo Tolerancia a fallos mediante votación supermayoría (>⅔) y bloqueo. mecanismo. Juntos, aseguran que: ≥⅓ del poder de voto debe ser bizantino para causar una violación de seguridad, donde se comprometen más de dos valores. si algún conjunto de validator alguna vez logra violar la seguridad, o incluso Si intenta hacerlo, podrá identificarlo mediante el protocolo. esto Incluye tanto la votación de los bloques conflictivos como la retransmisión. Votos injustificados. A pesar de sus sólidas garantías, Tendermint ofrece servicios excepcionales. rendimiento. En benchmarks de 64 nodos distribuidos en 7 centros de datos en 5 continentes, en instancias de nube de productos básicos, El consenso de Tendermint puede procesar miles de transacciones por segundo, con latencias de confirmación del orden de uno o dos segundos. En particular, el desempeño de más de mil transacciones por segundo se mantiene incluso en duras condiciones adversas, con validators fallan o transmiten votos elaborados con fines malintencionados. Ver Consulte la siguiente figura para obtener más detalles.

Tendermint throughput vs block size benchmarked across 64 nodes in 7 datacenters on 5 continents

Un beneficio importante del algoritmo de consenso de Tendermint es la simplificación. seguridad ligera para el cliente, lo que lo convierte en un candidato ideal para dispositivos móviles y Casos de uso de Internet de las cosas. Mientras que un cliente ligero Bitcoin debe sincronizarse cadenas de encabezados de bloque y encuentre el que tenga la mayor prueba de funcionan, los clientes ligeros de Tendermint sólo necesitan mantenerse al día con los cambios al conjunto validator y luego verifique >⅔ PreCommits en el último bloque para determinar el último estado. Las pruebas de cliente ligeras y sucintas también permiten inter-blockchain comunicación. Tendermint tiene medidas de protección para prevenir ciertos ataques notables, como gastos dobles de largo alcance sin nada en juego y censura. Estos se analizan con más detalle en el apéndice.El algoritmo de consenso Tendermint se implementa en un programa llamado Tendermint Core. Tendermint Core es un “motor de consenso” independiente de la aplicación que puede convertir cualquier aplicación determinista de caja negra en una replicación distribuida blockchain. Tendermint Core se conecta a blockchain aplicaciones a través de la interfaz Blockchain de aplicaciones (ABCI) [17]. Por lo tanto, ABCI permite programar aplicaciones blockchain en cualquier lenguaje, no sólo el lenguaje de programación que el consenso motor está escrito. Además, ABCI hace posible fácilmente cambie la capa de consenso de cualquier pila blockchain existente. Hacemos una analogía con la conocida criptomoneda Bitcoin. Bitcoin es una criptomoneda blockchain donde cada nodo mantiene una base de datos de resultados de transacciones no gastadas (UTXO) totalmente auditada. si uno quería crear un sistema similar a Bitcoin encima de ABCI, Tendermint Core sería responsable de Compartir bloques y transacciones entre nodos Establecer un orden canónico/inmutable de transacciones (el blockchain) Mientras tanto, la aplicación ABCI sería responsable de Mantenimiento de la base de datos UTXO Validar firmas criptográficas de transacciones. Evitar que las transacciones gasten fondos inexistentes Permitir a los clientes consultar la base de datos UTXO Tendermint es capaz de descomponer el diseño blockchain mediante ofreciendo una API muy simple entre el proceso de solicitud y proceso de consenso.

Cosmos Arquitetura

Cosmos é uma rede de blockchains paralelos independentes que são cada um alimentado por algoritmos de consenso clássicos BFT como Menta 1. O primeiro blockchain nesta rede será o Hub Cosmos. O Cosmos O hub se conecta a muitos outros blockchains (ou zonas) por meio de um novo protocolo de comunicação inter-blockchain. O Centro Cosmos rastreia vários tipos token e mantém registro do total número de tokens em cada zona conectada. Os tokens podem ser transferido de uma zona para outra com segurança e rapidez sem a necessidade de troca de líquidos entre zonas, porque todos as transferências de moedas entre zonas passam pelo Hub Cosmos. Esta arquitetura resolve muitos problemas que o espaço blockchain enfrenta hoje, como interoperabilidade de aplicativos, escalabilidade e capacidade de atualização perfeita. Por exemplo, zonas derivadas de Bitcoind, Go-Ethereum, CryptoNote, ZCash ou qualquer sistema blockchain pode ser conectado ao hub Cosmos. Essas zonas permitem que Cosmos escalar indefinidamente para atender à demanda global de transações. As zonas também são um ótimo ano para uma troca distribuída, que será suportada como bem. Cosmos não é apenas um único razão distribuído, e o Cosmos Hub não é um jardim murado ou o centro do seu universo. Nós somos projetando um protocolo para uma rede aberta de livros distribuídos que pode servir como uma nova base para futuros sistemas financeiros, baseado em princípios de criptografia, economia sólida, consenso teoria, transparência e responsabilidade. O Cosmos Hub é o primeiro blockchain público no Cosmos Rede, alimentada pelo algoritmo de consenso BFT do Tendermint. O O projeto de código aberto Tendermint nasceu em 2014 para abordar o velocidade, escalabilidade e questões ambientais do algoritmo de consenso de prova de trabalho de Bitcoin. Usando e melhorando os comprovados

BFT algoritmos desenvolvidos no MIT em 1988 [20], o Tendermint a equipe foi a primeira a demonstrar conceitualmente um proof-of-stake criptomoeda que resolve o problema do nada em jogo sofrido pelas criptomoedas proof-of-stake de primeira geração, como como NXT e BitShares1.0. Hoje, praticamente todas as carteiras móveis Bitcoin usam servidores confiáveis para fornecer-lhes a verificação da transação. Isso ocorre porque a prova de trabalho exige a espera de muitas confirmações antes de um transação pode ser considerada irreversivelmente comprometida. Ataques de gasto duplo já foram demonstrados em serviços como CoinBase. Ao contrário de outros sistemas de consenso blockchain, o Tendermint oferece verificação de pagamento de cliente móvel instantânea e comprovadamente segura. Como o Tendermint foi projetado para nunca bifurcar, dispositivos móveis carteiras podem receber confirmação instantânea da transação, o que torna pagamentos práticos e confiáveis são uma realidade em smartphones. Isto tem ramificações significativas para aplicações da Internet das Coisas, como bem. Os validadores em Cosmos têm uma função semelhante aos mineradores de Bitcoin, mas em vez disso, use assinaturas criptográficas para votar. Validadores são máquinas seguras e dedicadas que são responsáveis por cometer blocos. Não-validators podem delegar seus staking tokens (chamados “átomos”) para qualquer validator para ganhar uma parte das taxas de bloco e átomo recompensas, mas correm o risco de serem punidos (cortados) se o o delegado validator é hackeado ou viola o protocolo. O comprovado garantias de segurança do consenso Tendermint BFT, e a garantia depósito das partes interessadas –validators e delegantes – fornecer segurança comprovável e quantificável para nós e clientes leves. Os livros-razão públicos distribuídos devem ter uma constituição e um sistema de governança. Bitcoin depende da Fundação Bitcoin emineração para coordenar atualizações, mas este é um processo lento. Ethereum dividido em ETH e ETC após hard fork para endereçar O hackDAO, em grande parte porque não havia contrato social anterior nem mecanismo para tomar tais decisões. Validadores e delegadores no Hub Cosmos podem votar propostas que podem alterar parâmetros predefinidos do sistema automaticamente (como o limite de gás do bloco), coordenar atualizações, como bem como votar em emendas à constituição legível por humanos que regem as políticas do Hub Cosmos. A constituição permite a coesão entre as partes interessadas em questões como roubo e bugs (como o incidente TheDAO), permitindo uma abordagem mais rápida e resolução mais limpa. Cada zona também pode ter sua própria constituição e governança mecanismo também. Por exemplo, o Hub Cosmos poderia ter um constituição que impõe a imutabilidade no Centro (sem retrocessos, exceto para bugs da implementação do nó Hub Cosmos), enquanto cada zona pode definir suas próprias políticas em relação a reversões. Ao permitir a interoperabilidade entre diferentes zonas políticas, o A rede Cosmos oferece aos seus usuários total liberdade e potencial para experimentação sem permissão. Aqui descrevemos um novo modelo de descentralização e escalabilidade. Cosmos é uma rede de muitos blockchains alimentada por Menta macia. Embora as propostas existentes visem criar um “único blockchain” com ordem de transação global total, Cosmos permite que muitos blockchains sejam executados simultaneamente entre si mantendo a interoperabilidade. Basicamente, o Hub Cosmos gerencia muitos blockchains chamadas “zonas” (às vezes chamadas de “fragmentos”, em referência à técnica de escalonamento de banco de dados conhecida como “sharding”).

Um fluxo constante de commits recentes de blocos de zonas postadas em o Hub permite que o Hub acompanhe o estado de cada zona. Da mesma forma, cada zona acompanha o estado do Hub (mas as zonas não se acompanham, exceto indiretamente através do Central). Pacotes de informações são então comunicados de um zona para outra, afixando provas Merkle como evidência de que o informações foram enviadas e recebidas. Este mecanismo é denominado comunicação inter-blockchain ou IBC para abreviar. Qualquer uma das zonas pode ser hubs para formar um gráfico acíclico, mas por uma questão de clareza, descreveremos apenas o simples configuração onde há apenas um hub e muitos não-hub zonas. O Cosmos Hub é um blockchain que hospeda um multiativo razão distribuída, onde tokens podem ser mantidos por usuários individuais ou pelas próprias zonas. Esses tokens podem ser movidos de uma zona para outro em um pacote IBC especial chamado "pacote de moedas". O centro é responsável por preservar a invariância global do total quantidade de cada token nas zonas. IBC pacote de moedas as transações devem ser confirmadas pelo remetente, hub e destinatário blockchains.Como o Hub Cosmos atua como o razão central para todo o sistema, a segurança do Hub é de suma importância. Enquanto cada zona pode ser um Tendermint blockchain que é protegido por como poucos como 4 (ou até menos se o consenso BFT não for necessário), o Hub deve ser protegido por um conjunto globalmente descentralizado de validators que pode suportar os cenários de ataque mais severos, como um partição de rede continental ou um ataque patrocinado por um estado-nação. Uma zona Cosmos é uma blockchain independente que troca IBC mensagens com o Hub. Da perspectiva do Hub, uma zona é um conta com múltiplas assinaturas e associação dinâmica de múltiplos ativos que pode enviar e receber tokens usando pacotes IBC. Como um conta de criptomoeda, uma zona não pode transferir mais tokens do que tem, mas pode receber tokens de outras pessoas que os possuem. Uma zona pode ser designado como uma "fonte" de um ou mais tipos token, concedendo-lhe o poder de injetar aquele suprimento token. Átomos do Hub Cosmos podem ser piquetados por validators de uma zona conectado ao Hub. Embora os ataques de gasto duplo nessas zonas resultaria no corte de átomos com a responsabilidade do Tendermint, uma zona onde> ⅔ do poder de voto são Byzantine pode cometer estado inválido. O hub Cosmos não verificar ou executar transações comprometidas em outras zonas, por isso é é responsabilidade dos usuários enviar tokens para zonas em que confiam. No futuro, o sistema de governança do Hub Cosmos poderá passar pelo Hub propostas de melhoria que levam em conta as falhas da zona. Para por exemplo, transferências de saída token de algumas (ou todas) zonas podem ser estrangulado para permitir a interrupção de emergência das zonas (uma interrupção temporária das transferências token) quando um ataque é detectado. Agora veremos como o Hub e as zonas se comunicam entre si outro. Por exemplo, se houver três blockchains, “Zona1”, “Zona2”,

Cosmos hub and zones architecture showing the Cosmos Hub connecting multiple independent zones via IBC

e “Hub”, e desejamos que “Zone1” produza um pacote destinado para “Zona2” passando por “Hub”. Para mover um pacote de um blockchain para outro, uma prova é postada na cadeia de recebimento. A prova afirma que a cadeia emissora publicou um pacote para o suposto destino. Para que a cadeia receptora verifique esta prova, é deve ser capaz de acompanhar os cabeçalhos de bloco do remetente. Isto O mecanismo é semelhante ao usado pelas cadeias laterais, o que requer duas cadeias interagindo para estarem cientes uma da outra através de um fluxo bidirecional de datagramas de prova de existência (transações). O protocolo IBC pode naturalmente ser definido usando dois tipos de transações: uma transação  IBCBlockCommitTx , que permite um blockchain para provar a qualquer observador seu bloco mais recente - hash, e uma transação  IBCPacketTx , que permite que um blockchain provar a qualquer observador que o pacote fornecido foi de fato publicado pela aplicação do remetente, através de uma prova de Merkle para o recente bloco-hash. Ao dividir a mecânica IBC em duas transações separadas, permitir que o mecanismo de mercado de taxas nativo da cadeia de recebimento determinar quais pacotes serão confirmados (ou seja, reconhecidos), enquanto permitindo total liberdade na cadeia de envio sobre como muitos pacotes de saída são permitidos. No exemplo acima, para atualizar o bloco-hash da "Zona1" no “Hub” (ou de “Hub” na “Zona2”), um  IBCBlockCommitTxa transação deve ser postada no “Hub” com o bloco-hash de “Zona1” (ou em “Zona2” com o bloco-hash de “Hub”). Consulte IBCBlockCommitTx e IBCPacketTx para obter mais informações nos dois tipos de transação IBC. Da mesma forma que Bitcoin é mais seguro por ser distribuído, livro razão replicado em massa, podemos tornar as exchanges menos vulneráveis a hacks externos e internos executando-o em blockchain. Nós chame isso de troca distribuída. O que a comunidade de criptomoedas chama de descentralizada exchange hoje são baseadas em algo chamado de transações “atomic crosschain” (AXC). Com uma transação AXC, dois usuários em duas cadeias diferentes podem fazer duas transações de transferência que são comprometidos juntos em ambos os livros, ou nenhum (ou seja, atomicamente). Por exemplo, dois usuários podem trocar bitcoins por ether (ou quaisquer dois tokens em dois livros razão diferentes) usando transações AXC, mesmo que Bitcoin e Ethereum não estejam conectados um ao outro outro. O benefício de executar uma exchange em transações AXC é que nem os usuários precisam confiar uns nos outros ou na correspondência comercial serviço. A desvantagem é que ambas as partes precisam estar online para que o comércio ocorra. Outro tipo de exchange descentralizada é a replicada em massa troca distribuída que funciona por conta própria blockchain. Usuários ativados esse tipo de exchange pode enviar um pedido com limite e transformar seu computador desligado e a negociação pode ser executada sem que o usuário seja on-line. O blockchain corresponde e conclui a negociação em nome do comerciante.

Cosmos Arquitectura

Cosmos es una red de blockchain paralelos independientes que están cada uno impulsado por algoritmos de consenso clásicos BFT como Menta tierna 1. El primer blockchain en esta red será el Cosmos Hub. el Cosmos El concentrador se conecta a muchos otros blockchains (o zonas) a través de un Nuevo protocolo de comunicación inter-blockchain. El centro Cosmos rastrea numerosos tipos token y mantiene un registro del total número de tokens en cada zona conectada. Las fichas pueden ser transferido de una zona a otra de forma segura y rápida sin necesidad de un intercambio líquido entre zonas, porque todos Las transferencias de monedas entre zonas pasan por el centro Cosmos. Esta arquitectura resuelve muchos problemas que el espacio blockchain enfrenta hoy en día, como la interoperabilidad de aplicaciones, la escalabilidad y capacidad de actualización perfecta. Por ejemplo, zonas derivadas de Bitcoind, Go-Ethereum, CryptoNote, ZCash o cualquier sistema blockchain pueden debe conectarse al concentrador Cosmos. Estas zonas permiten que Cosmos escalar infinitamente para satisfacer la demanda de transacciones globales. Las zonas también son un gran yt para un intercambio distribuido, que será compatible como bueno. Cosmos no es solo un libro mayor distribuido, y el Cosmos Hub no es un jardín amurallado ni el centro de su universo. somos Diseño de un protocolo para una red abierta de libros de contabilidad distribuidos. que puede servir como una nueva base para futuros sistemas financieros, basado en principios de criptografía, economía sólida, consenso teoría, transparencia y rendición de cuentas. El Cosmos Hub es el primer blockchain público en Cosmos Red, impulsada por el algoritmo de consenso BFT de Tendermint. el El proyecto de código abierto Tendermint nació en 2014 para abordar la velocidad, escalabilidad y problemas ambientales del algoritmo de consenso de prueba de trabajo de Bitcoin. Utilizando y mejorando productos probados

BFT algoritmos desarrollados en el MIT en 1988 [20], el Tendermint El equipo fue el primero en demostrar conceptualmente un proof-of-stake criptomoneda que aborda el problema de nada en juego sufrido por las criptomonedas proof-of-stake de primera generación, como como NXT y BitShares1.0. Hoy en día, prácticamente todas las billeteras móviles Bitcoin utilizan servidores confiables para proporcionarles verificación de transacciones. Esto se debe a que la prueba de trabajo requiere esperar muchas confirmaciones antes de La transacción puede considerarse irreversiblemente comprometida. Los ataques de doble gasto ya se han demostrado en servicios como CoinBase. A diferencia de otros sistemas de consenso blockchain, Tendermint ofrece Verificación de pagos de clientes móviles instantánea y demostrablemente segura. Dado que Tendermint está diseñado para no bifurcarse nunca, el móvil Las billeteras pueden recibir confirmación instantánea de la transacción, lo que hace que Los pagos prácticos y sin confianza son una realidad en los teléfonos inteligentes. esto tiene ramificaciones significativas para las aplicaciones de Internet de las cosas como bueno. Los validadores en Cosmos tienen una función similar a la de los mineros Bitcoin, pero en su lugar, utilice firmas criptográficas para votar. Los validadores son máquinas seguras y dedicadas que son responsables de cometer bloques. Los que no son validators pueden delegar sus staking tokens (llamados “átomos”) a cualquier validator para ganar una parte de las tarifas de bloque y átomo recompensas, pero corren el riesgo de ser castigados (recortados) si el delegado validator es pirateado o viola el protocolo. lo probado garantías de seguridad del consenso de Tendermint BFT, y la garantía depósito de partes interesadas–validators y delegados–proporcionar Seguridad demostrable y cuantificable para nodos y clientes ligeros. Los libros públicos distribuidos deben tener una constitución y un sistema de gobernanza. Bitcoin depende de la Fundación Bitcoin yminería para coordinar las actualizaciones, pero este es un proceso lento. Ethereum se dividió en ETH y ETC después de realizar una bifurcación para abordar El hack DAO, en gran parte porque no existía un contrato social previo ni mecanismo para tomar tales decisiones. Los validadores y delegados en el Cosmos Hub pueden votar en Propuestas que pueden cambiar parámetros preestablecidos del sistema. automáticamente (como el límite de gas de bloque), coordinar actualizaciones, como así como votar sobre enmiendas a la constitución legible por humanos que rigen las políticas del Cosmos Hub. la constitucion permite la cohesión entre las partes interesadas en temas como robos y errores (como el incidente TheDAO), lo que permite una solución más rápida y resolución más limpia. Cada zona también puede tener su propia constitución y gobernanza. mecanismo también. Por ejemplo, el concentrador Cosmos podría tener un constitución que impone la inmutabilidad en el Hub (sin retrocesos, salvo errores de la implementación del nodo Hub Cosmos), mientras que Cada zona puede establecer sus propias políticas con respecto a las reversiones. Al permitir la interoperabilidad entre diferentes zonas políticas, el La red Cosmos ofrece a sus usuarios la máxima libertad y potencial para experimentación sin permiso. Aquí describimos un modelo novedoso de descentralización y escalabilidad. Cosmos es una red de muchos blockchains impulsados por Menta tierna. Si bien las propuestas existentes apuntan a crear una “zona única blockchain” con pedido de transacciones globales totales, Cosmos permite que muchos blockchains se ejecuten simultáneamente entre sí manteniendo la interoperabilidad. En la base, el Cosmos Hub gestiona muchos blockchains llamadas “zonas” (a veces denominadas “fragmentos”, en referencia a la técnica de escalado de bases de datos conocida como “sharding”).

Un flujo constante de confirmaciones de bloques recientes de zonas publicadas en el Hub le permite mantenerse al día con el estado de cada zona. Asimismo, cada zona se mantiene al día con el estado del Hub (pero las zonas No se mantienen al día entre sí excepto indirectamente a través del Centro). Luego se comunican paquetes de información desde uno zona a otra publicando pruebas de Merkle como evidencia de que el Se envió y recibió información. Este mecanismo se llama comunicación inter-blockchain, o IBC para abreviar. Cualquiera de las zonas puede ser en sí misma centros para formar un gráfico acíclico, pero en aras de la claridad sólo describiremos los simples configuración donde solo hay un centro y muchos no centros zonas. El Cosmos Hub es un blockchain que aloja un multiactivo libro mayor distribuido, donde tokens pueden ser mantenidos por usuarios individuales o por zonas propias. Estos tokens se pueden mover de una zona a otro en un paquete especial IBC llamado "paquete de monedas". El centro es responsable de preservar la invariancia global del total cantidad de cada token en todas las zonas. IBC paquete de monedas las transacciones deben ser confirmadas por el remitente, el centro y el receptor blockchains.Dado que el Cosmos Hub actúa como el libro mayor central para todo sistema, la seguridad del Hub es de suma importancia. mientras cada zona puede ser un Tendermint blockchain que está asegurado por tan solo 4 (o incluso menos si no se necesita el consenso BFT), el Hub debe estar protegido por un conjunto globalmente descentralizado de validators que puede resistir los escenarios de ataque más severos, como un partición de la red continental o un ataque patrocinado por un estado-nación. Una zona Cosmos es una blockchain independiente que intercambia IBC mensajes con el Hub. Desde la perspectiva del Hub, una zona es un cuenta multi-activos, membresía dinámica y múltiples firmas que Puede enviar y recibir tokens usando IBC paquetes. como un cuenta de criptomonedas, una zona no puede transferir más tokens que lo tiene, pero puede recibir tokens de otras personas que los tengan. una zona puede ser designado como una "fuente" de uno o más tipos token, otorgándole el poder de inzate ese suministro token. Los átomos del concentrador Cosmos pueden ser apostados por validators de una zona conectado al concentrador. Mientras que los ataques de doble gasto en estas zonas resultaría en la reducción de átomos con la responsabilidad de Tendermint, una zona donde >⅔ del poder de voto están Los bizantinos pueden cometer un estado inválido. El concentrador Cosmos no verificar o ejecutar transacciones comprometidas en otras zonas, por lo que es Es responsabilidad de los usuarios enviar tokens a zonas en las que confían. En el futuro, el sistema de gobernanza del Cosmos Hub puede aprobar el Hub propuestas de mejora que den cuenta de las fallas de la zona. Para Por ejemplo, las transferencias salientes token desde algunas (o todas) zonas pueden estrangulado para permitir el corte de circuito de emergencia de zonas (una interrupción temporal de las token transferencias) cuando se detecta un ataque. Ahora veremos cómo el Hub y las zonas se comunican entre sí. otro. Por ejemplo, si hay tres blockchains, “Zona1”, “Zona2”,

Cosmos hub and zones architecture showing the Cosmos Hub connecting multiple independent zones via IBC

y "Hub", y deseamos que "Zone1" produzca un paquete destinado para “Zone2” pasando por “Hub”. Para mover un paquete de uno blockchain a otro, se publica una prueba en la cadena de recepción. La prueba afirma que la cadena de envío publicó un paquete para el supuesto destino. Para que la cadena receptora pueda comprobar esta prueba, debe poder mantenerse al día con los encabezados de bloque del remitente. esto El mecanismo es similar al utilizado por las cadenas laterales, que requiere dos cadenas que interactúan para ser conscientes una de la otra a través de un flujo bidireccional de datagramas de prueba de existencia (transacciones). El protocolo IBC se puede definir naturalmente utilizando dos tipos de transacciones: una transacción  IBCBlockCommitTx , que permite una blockchain para demostrarle a cualquier observador de su bloque más reciente-hash, y una transacción IBCPacketTx , que permite que un blockchain demostrar a cualquier observador que el paquete dado fue efectivamente publicado por la aplicación del remitente, a través de una prueba de Merkle a la reciente bloque-hash. Al dividir la mecánica IBC en dos transacciones separadas, podemos permitir que el mecanismo de mercado de tarifas nativo de la cadena receptora determinar qué paquetes se confirman (es decir, se reconocen), mientras permitiendo total libertad en la cadena de envío en cuanto a cómo Se permiten muchos paquetes salientes. En el ejemplo anterior, para actualizar el bloque-hash de "Zona1" en "Hub" (o de "Hub" en "Zone2"), un  IBCBlockCommitTxLa transacción debe publicarse en "Hub" con el bloque-hash de “Zona1” (o en “Zona2” con el bloque-hash de “Hub”). Consulte IBCBlockCommitTx y IBCPacketTx para obtener más información. en los dos tipos de transacciones IBC. De la misma manera que Bitcoin es más seguro al ser distribuido, libro mayor replicado masivamente, podemos hacer que los intercambios sean menos vulnerables a hacks externos e internos ejecutándolo en el blockchain. nosotros Llame a esto un intercambio distribuido. Lo que la comunidad de criptomonedas llama descentralizado El intercambio actual se basa en algo llamado transacciones de "cadena cruzada atómica" (AXC). Con una transacción AXC, dos usuarios en dos cadenas diferentes pueden realizar dos transacciones de transferencia que son comprometidos juntos en ambos libros mayores, o ninguno en absoluto (es decir, atómicamente). Por ejemplo, dos usuarios pueden intercambiar bitcoins por ether (o dos tokens cualesquiera en dos libros de contabilidad diferentes) utilizando transacciones AXC, aunque Bitcoin y Ethereum no están conectados entre sí otro. El beneficio de ejecutar un intercambio en transacciones AXC es que ninguno de los usuarios necesita confiar entre sí ni en el intercambio comercial servicio. La desventaja es que ambas partes deben estar en línea para que se produzca el comercio. Otro tipo de intercambio descentralizado es el replicado masivamente. intercambio distribuido que se ejecuta por sí solo blockchain. Usuarios en este tipo de intercambio puede enviar una orden limitada y convertir su computadora apagada y la operación se puede ejecutar sin que el usuario sea en línea. El blockchain coincide y completa la operación en nombre del comerciante.

Aplicativos

Uma exchange centralizada pode criar uma carteira de pedidos profunda e limitada ordens e, assim, atrair mais comerciantes. Liquidez gera mais liquidez no mundo cambial e, portanto, existe uma rede forte efeito (ou pelo menos um efeito do tipo "o vencedor leva mais") na troca negócio. O atual líder em trocas de criptomoedas hoje está a Poloniex com um volume de US$ 20 milhões em 24 horas, e em segundo lugar está Bitynex com um volume de 24 horas de US$ 5 milhões. Dada uma rede tão forte efeitos, é improvável que as exchanges descentralizadas baseadas em AXC ganhar volume sobre as exchanges centralizadas. Para uma descentralização exchange para competir com uma exchange centralizada, seria necessário para oferecer suporte a carteiras de pedidos profundas com pedidos limitados. Apenas um distribuído exchange em blockchain pode fornecer isso. Tendermint oferece benefícios adicionais de transações mais rápidas compromete. Priorizando a sinalidade rápida sem sacrificar consistência, as zonas em Cosmos podem ynalizar transações rapidamente – por tanto as transações de ordens de câmbio quanto as transferências de IBC token para e de outras zonas. Dado o estado atual das trocas de criptomoedas, um grande aplicação para Cosmos é a troca distribuída (também conhecida como CosmosDEX). A capacidade de transferência de transações, bem como a latência de commit pode ser comparável àquelas de centralizado trocas. Os traders podem enviar ordens limitadas que podem ser executadas sem que ambas as partes tenham que estar online. E com Tendermint, o hub Cosmos e IBC, os traders podem movimentar fundos para dentro e para fora a troca de e para outras zonas com rapidez. Uma zona privilegiada pode atuar como fonte de uma ponte token de outra criptomoeda. Uma ponte é semelhante ao relacionamento entre um hub e uma zona Cosmos; ambos devem acompanhar o últimos blocos do outro para verificar provas de que tokens possuem passou de um para outro. Uma "zona de ponte" no Cosmos A rede acompanha o Hub, bem como os outros

criptomoeda. A indireção através da zona-ponte permite a lógica do Hub permanecer simples e agnóstica em relação a outros blockchain estratégias de consenso, como proof-of-work de Bitcoin mineração. Cada zona de ponte validator executaria um sistema alimentado por Tendermint blockchain com um aplicativo de ponte ABCI especial, mas também um nó completo de a “origem” blockchain. Quando novos blocos são minerados na origem, a zona-ponte validators chegarão a um acordo sobre os blocos comprometidos assinando e compartilhando sua respectiva visão local do blockchain da origem dica. Quando uma zona-ponte recebe pagamento na origem (e concordaram que confirmações suficientes foram vistas no caso de uma cadeia PoW como Ethereum ou Bitcoin), um correspondente conta é criada na zona de ponte com esse saldo. No caso de Ethereum, a zona de ponte pode compartilhar o mesmo validator-definido como o hub Cosmos. No lado Ethereum (o origem), um contrato-ponte permitiria que os detentores de Ether enviassem Ether para a zona de ponte, enviando-o para o contrato de ponte em Ethereum. Uma vez que o Ether é recebido pelo contrato-ponte, o ether não pode ser retirado a menos que um pacote IBC apropriado seja recebido pelo contrato-ponte da zona-ponte. O bridge-contract rastreia o conjunto validator da zona de ponte, que pode ser idêntico ao conjunto validator do Hub Cosmos. No caso de Bitcoin, o conceito é semelhante, exceto que em vez de um único contrato-ponte, cada UTXO seria controlado por um limite de multiassinatura P2SH pubscript. Devido às limitações de no sistema P2SH, os signatários não podem ser idênticos ao Cosmos Conjunto de hub validator.O éter na zona de ponte (“éter em ponte”) pode ser transferido para e do Hub, e posteriormente destruído com uma transação que envia para um endereço de retirada específico em Ethereum. Um IBC pacote provando que a transação ocorreu na zona de ponte pode ser postado no contrato de ponte Ethereum para permitir o ether para ser retirado. No caso de Bitcoin, o sistema de script restrito torna difícil espelhar o mecanismo de transferência de moedas IBC. Cada UTXO tem seu próprio pubscript independente, então cada UTXO deve ser migrado para um novo UTXO quando há alteração no conjunto de Bitcoin signatários de garantia. Uma solução é comprimir e descompacte o conjunto UTXO conforme necessário para manter o número total de UTXOs inativos. O risco de tal contrato de transição é um conjunto desonesto validator. ≥⅓ O poder de voto bizantino pode causar uma bifurcação, retirando o éter do contrato de ponte em Ethereum enquanto mantém o bridgedether na zona de ponte. Pior ainda, >⅔ o poder de voto bizantino pode roubar éter imediatamente daqueles que o enviaram para o contrato de ponte desviando-se da lógica de ponte original da zona de ponte. É possível resolver estas questões projetando a ponte para ser totalmente responsável. Por exemplo, todos os pacotes IBC, do hub e a origem, pode exigir reconhecimento pela zona de ponte em de tal forma que todas as transições de estado da zona de ponte possam ser eficientemente desafiado e verificado pelo centro ou pela origem contrato-ponte. O Centro e a origem devem permitir que os validators da zona-ponte depositem garantias e que token transfiram para fora do o contrato-ponte deve ser adiado (e a dissolução da garantia período suficientemente longo) para permitir quaisquer desafios a serem feitos por auditores independentes. Deixamos o desenho da especificação e implementação deste sistema aberta como um futuro Cosmos

proposta de melhoria, a ser aprovada pelo Hub Cosmos sistema de governança. Resolver o problema de dimensionamento é um problema em aberto para Ethereum. Atualmente, os nós Ethereum processam cada transação e também armazene todos os estados. link. Como o Tendermint pode confirmar blocos muito mais rápido que o de Ethereum Zonas proof-of-work, EVM alimentadas por consenso Tendermint e operar em éter em ponte pode fornecer maior desempenho para Ethereum blockchains. Além disso, embora o Hub Cosmos e IBC a mecânica de pacotes não permite lógica de contrato arbitrária execução por si só, pode ser usado para coordenar movimentos token entre Ethereum contratos executados em zonas diferentes, fornecendo uma base para o escalonamento token centrado em Ethereum por meio de fragmentação. Cosmos zonas executam lógica de aplicativo arbitrária, que é definida em o início da vida da zona e pode potencialmente ser atualizada ao longo do tempo pela governação. Essa zexibilidade permite que zonas Cosmos atuam como pontes para outras criptomoedas, como Ethereum ou Bitcoin, e também permite derivados desses blockchains, utilizando a mesma base de código, mas com um conjunto validator diferente e distribuição inicial. Isso permite que muitas criptomoedas existentes estruturas, como as de Ethereum, Zerocash, Bitcoin, CryptoNote e assim por diante, para ser usado com Tendermint Core, que é um mecanismo de consenso de maior desempenho, em uma rede comum, abrindo uma tremenda oportunidade para a interoperabilidade entre plataformas. Além disso, como um multiativo blockchain, um único transação pode conter múltiplas entradas e saídas, onde cada a entrada pode ser de qualquer tipo token, permitindo que Cosmos sirva diretamente como uma plataforma para troca descentralizada, embora as ordens sejam assumidaspara ser correspondido através de outras plataformas. Alternativamente, uma zona pode servir como uma troca distribuída tolerante a falhas (com carteiras de pedidos), que pode ser uma melhoria estrita em relação à centralização existente trocas de criptomoedas que tendem a ser hackeadas com o tempo. As zonas também podem servir como versões corporativas apoiadas por blockchain e sistemas governamentais, onde partes de um determinado serviço que são tradicionalmente administrados por uma organização ou grupo de organizações em vez disso, são executados como um aplicativo ABCI em uma determinada zona, que permite-lhe herdar a segurança e a interoperabilidade do público Cosmos rede sem sacrificar o controle sobre o subjacente serviço. Assim, Cosmos pode oferecer o melhor dos dois mundos para organizações que desejam utilizar a tecnologia blockchain, mas que estão cauteloso em ceder completamente o controle a um terceiro distribuído festa. Alguns afirmam que um grande problema com o favorecimento da consistência algoritmos de consenso como o Tendermint é que qualquer rede partição que faz com que não haja uma partição única com >⅔ o poder de voto (por exemplo, ≥⅓ sair do zine) interromperá completamente o consenso. A arquitetura Cosmos pode ajudar a mitigar esse problema usando um centro global com zonas autónomas regionais, onde o poder de voto para cada zona são distribuídos com base em uma área geográfica comum região. Por exemplo, um paradigma comum pode ser para indivíduos cidades, ou regiões, para operar suas próprias zonas enquanto compartilham um centro comum (por exemplo, o Centro Cosmos), permitindo que a atividade municipal persistir no caso de o hub parar devido a uma rede temporária partição. Observe que isso permite que dados geológicos, políticos e recursos topológicos de rede a serem considerados no projeto robusto sistemas federados tolerantes a falhas.

NameCoin foi um dos primeiros blockchains a tentar resolver o problema de resolução de nomes adaptando o Bitcoin blockchain. Infelizmente, houve vários problemas com essa abordagem. Com Namecoin podemos verificar que, por exemplo, @satoshi foi registrado com uma chave pública específica em algum momento no passado, mas não saberíamos se a chave pública já havia sido atualizado recentemente, a menos que baixemos todos os blocos desde o último atualização desse nome. Isso se deve à limitação de Bitcoin’s UTXO modelo de merkle-ização de transação, onde apenas o transações (mas não o estado mutável do aplicativo) são Merkle-izadas no bloco-hash. Isso nos permite provar a existência, mas não a inexistência de atualizações posteriores de um nome. Assim, não podemos saber por certo o valor mais recente de um nome sem confiar em um valor completo nó, ou incorrer em custos significativos em largura de banda baixando todo o blockchain. Mesmo que uma árvore de pesquisa Merkleizada fosse implementada no NameCoin, sua dependência de proof-of-work facilita a verificação do cliente problemático. Os clientes Light devem baixar uma cópia completa do cabeçalhos para todos os blocos em todo o blockchain (ou pelo menos todos os cabeçalhos desde a última atualização de um nome). Isto significa que o os requisitos de largura de banda aumentam linearmente com a quantidade de tempo [21]. Além disso, mudanças de nome em proof-of-work blockchain requer espera por blocos de confirmação proof-of-work adicionais, o que pode levar até uma hora em Bitcoin. Com o Tendermint, tudo que precisamos é do bloco mais recente-hash assinado por um quórum de validators (por poder de voto) e um Merkle prova para o valor atual associado ao nome. Isso faz com que possível ter um light-client sucinto, rápido e seguro verificação dos valores dos nomes. Em Cosmos, podemos pegar esse conceito e estendê-lo ainda mais. Cada zona de registro de nome em Cosmos pode ter um nome de domínio de nível superior (TLD) associado, como “.com” ou “.org”, e cada nome-

zona de registro pode ter sua própria governança e registro regras.

Aplicaciones

Un intercambio centralizado puede crear una cartera de pedidos profunda y limitada pedidos y así atraer a más comerciantes. La liquidez engendra más liquidez en el mundo cambiario, por lo que existe una fuerte red efecto (o al menos un efecto de que el ganador se lleva la mayor parte) en el intercambio negocio. El líder actual en intercambios de criptomonedas en la actualidad. es Poloniex con un volumen de 24 horas de $20M, y en segundo lugar está Bitynex con un volumen de 5 millones de dólares en 24 horas. Dada una red tan fuerte efectos, es poco probable que los intercambios descentralizados basados ​​en AXC ganar volumen sobre los intercambios centralizados. Por una descentralización intercambio para competir con un intercambio centralizado, necesitaría para soportar carteras de pedidos profundas con órdenes limitadas. Sólo un distribuido El intercambio en un blockchain puede proporcionar eso. Tendermint proporciona beneficios adicionales para transacciones más rápidas se compromete. Priorizando la finalización rápida sin sacrificar coherencia, las zonas en Cosmos pueden analizar transacciones rápidamente, por tanto transacciones de orden de cambio como IBC token transferencias a y de otras zonas. Dado el estado actual de los intercambios de criptomonedas, una gran La aplicación para Cosmos es el intercambio distribuido (también conocido como el CosmosDEX). La capacidad de rendimiento de transacciones, así como La latencia de confirmación puede ser comparable a la de la centralizada. intercambios. Los comerciantes pueden enviar órdenes limitadas que se pueden ejecutar sin que ambas partes tengan que estar en línea. Y con Tendermint, el centro Cosmos y IBC, los operadores pueden mover fondos dentro y fuera de el intercambio hacia y desde otras zonas con rapidez. Una zona privilegiada puede actuar como fuente de un token puenteado de Otra criptomoneda. Un puente es similar a la relación. entre un centro y una zona Cosmos; ambos deben mantenerse al día con el últimos bloques del otro para verificar las pruebas de que tokens tienen pasó de uno a otro. Una "zona puente" en la Cosmos La red se mantiene al día con el Hub y con los demás.

criptomoneda. La dirección indirecta a través de la zona del puente permite La lógica del Hub es permanecer simple y agnóstica con respecto a otros. blockchain estrategias de consenso como Bitcoin proof-of-work minería. Cada zona puente validator ejecutaría un sistema impulsado por Tendermint blockchain con una aplicación puente especial ABCI, pero también un nodo completo de el “origen” blockchain. Cuando se extraen nuevos bloques en el origen, la zona del puente validators llegarán a un acuerdo sobre los bloques comprometidos firmando y compartir su respectiva visión local del blockchain del origen. propina. Cuando una zona puente recibe el pago en el origen (y Se acordó haber visto suficientes confirmaciones en el caso. de una cadena PoW como Ethereum o Bitcoin), un correspondiente Se crea una cuenta en la zona puente con ese saldo. En el caso de Ethereum, la zona puente puede compartir la misma validator: establecido como el concentrador Cosmos. En el lado Ethereum (el origen), un contrato puente permitiría a los titulares de ether enviar ether a la zona puente enviándolo al contrato puente en Ethereum. Una vez que el contrato puente recibe el éter, el El éter no se puede retirar a menos que se envíe un paquete IBC apropiado. recibido por el contrato puente de la zona puente. el El contrato-puente rastrea el conjunto validator de la zona-puente, que puede ser idéntico al conjunto validator del Cosmos Hub. En el caso de Bitcoin, el concepto es similar excepto que en lugar de un único contrato puente, cada UTXO estaría controlado por un umbral de pubscript P2SH multifirma. Debido a las limitaciones de En el sistema P2SH, los firmantes no pueden ser idénticos al Cosmos. Buje validator-conjunto.El éter en la zona del puente (“éter puenteado”) se puede transferir a y desde el Hub, y luego ser destruido con una transacción que lo envía a una dirección de retiro particular en Ethereum. Un IBC paquete que prueba que la transacción ocurrió en la zona puente se puede publicar en el contrato puente Ethereum para permitir que el éter para ser retirado. En el caso de Bitcoin, el sistema de secuencias de comandos restringido hace que sea Es difícil reflejar el mecanismo de transferencia de monedas IBC. Cada UTXO tiene su propio pubscript independiente, por lo que cada UTXO debe ser migrado a un nuevo UTXO cuando hay un cambio en el conjunto de Bitcoin firmantes del depósito de garantía. Una solución es comprimir y descomprima el conjunto UTXO según sea necesario para mantener el número total de UTXOs caídos. El riesgo de un contrato puente de este tipo es un conjunto validator deshonesto. ≥⅓ El poder de voto bizantino podría provocar una bifurcación y retirar el éter del contrato de puente en Ethereum mientras se mantiene el puente en la zona del puente. Peor aún, >⅔ del poder de voto bizantino puede robar éter directamente de quienes lo enviaron al contrato puente desviándose de la lógica de puenteo original de la zona del puente. Es posible abordar estos problemas diseñando el puente para que sea totalmente responsable. Por ejemplo, todos los paquetes IBC, desde el concentrador y el origen, podría requerir el reconocimiento por parte de la zona del puente en de tal manera que todas las transiciones de estado de la zona del puente puedan ser desafiado y verificado eficientemente por el centro o por el origen contrato-puente. El Hub y el origen deben permitir que la zona puente validators publique garantías y token transferencias fuera de la El contrato puente debe retrasarse (y la desvinculación de la garantía período lo suficientemente largo) para permitir que cualquier impugnación sea realizada por auditores independientes. Dejamos el diseño de la especificación y Implementación de este sistema abierto como futuro Cosmos

propuesta de mejora, que será aprobada por el Cosmos Hub sistema de gobernanza. Resolver el problema de escala es un tema abierto para Ethereum. Actualmente, los nodos Ethereum procesan cada transacción y También almacena todos los estados. enlace. Dado que Tendermint puede confirmar bloques mucho más rápido que los de Ethereum Zonas proof-of-work, EVM impulsadas por el consenso de Tendermint y operar con éter puenteado puede proporcionar un mayor rendimiento a Ethereum blockchains. Además, aunque el Cosmos Hub y IBC la mecánica de paquetes no permite una lógica de contrato arbitraria ejecución per se, se puede utilizar para coordinar token movimientos entre Ethereum contratos que se ejecutan en diferentes zonas, proporcionando una base para el escalamiento centrado en token Ethereum a través de fragmentación. Las zonas Cosmos ejecutan una lógica de aplicación arbitraria, que se define en el comienzo de la vida de la zona y potencialmente puede actualizarse a lo largo del tiempo por la gobernanza. Esta flexibilidad permite que Cosmos zonas actuar como puentes hacia otras criptomonedas como Ethereum o Bitcoin, y también permite derivados de esos blockchains, utilizando la misma base de código pero con un conjunto validator diferente y distribución inicial. Esto permite que muchas criptomonedas existentes frameworks, como los de Ethereum, Zerocash, Bitcoin, CryptoNote, etc., para usar con Tendermint Core, que es un motor de consenso de mayor rendimiento, en una red común, abriendo una tremenda oportunidad para la interoperabilidad entre plataformas. Además, como multiactivo blockchain, un único La transacción puede contener múltiples entradas y salidas, donde cada una La entrada puede ser de cualquier tipo token, lo que permite que Cosmos sirva directamente como una plataforma para el intercambio descentralizado, aunque se asumen pedidospara ser emparejado a través de otras plataformas. Alternativamente, una zona puede servir como un intercambio distribuido tolerante a fallas (con libros de pedidos), que Puede ser una mejora estricta con respecto a la centralizada existente. intercambios de criptomonedas que tienden a ser pirateados con el tiempo. Las zonas también pueden servir como versiones empresariales respaldadas por blockchain y sistemas gubernamentales, donde partes de un servicio particular que tradicionalmente están dirigidos por una organización o grupo de organizaciones en su lugar, se ejecutan como una aplicación ABCI en una zona determinada, que le permite heredar la seguridad y la interoperabilidad del público Cosmos red sin sacrificar el control sobre la red subyacente servicio. Por lo tanto, Cosmos puede ofrecer lo mejor de ambos mundos para organizaciones que buscan utilizar la tecnología blockchain pero que están desconfiado de ceder completamente el control a un tercero distribuido fiesta. Algunos afirman que un problema importante con las políticas que favorecen la coherencia algoritmos de consenso como Tendermint es que cualquier red partición que hace que no haya una sola partición con >⅔ el poder de voto (por ejemplo, ≥⅓ salir de una revista) detendrá el consenso por completo. La arquitectura Cosmos puede ayudar a mitigar este problema mediante el uso un centro global con zonas autónomas regionales, donde el poder de voto para cada zona se distribuyen en base a una zona geográfica común región. Por ejemplo, un paradigma común puede ser el de individuos ciudades o regiones para operar sus propias zonas mientras comparten una eje común (por ejemplo, el Cosmos Hub), que permite que la actividad municipal persistir en caso de que el concentrador se detenga debido a una red temporal partición. Tenga en cuenta que esto permite una verdadera geología, política y Características topológicas de la red que se deben considerar al diseñar sistemas robustos. Sistemas federados tolerantes a fallos.

NameCoin fue uno de los primeros blockchains en intentar resolver el problema de resolución de nombres adaptando el Bitcoin blockchain. Lamentablemente, ha habido varios problemas con este enfoque. Con Namecoin podemos comprobar que, por ejemplo, @satoshi fue registrado con una clave pública particular en algún momento en el pasado, pero no sabríamos si la clave pública había sido desde entonces actualizado recientemente a menos que descarguemos todos los bloques desde el último actualización de ese nombre. Esto se debe a la limitación de Bitcoin UTXO transacción Modelo de merkle-ización, donde solo el las transacciones (pero no el estado de la aplicación mutable) están adaptadas a Merkle en el bloque-hash. Esto nos permite probar la existencia, pero no la inexistencia de actualizaciones posteriores de un nombre. Por lo tanto, no podemos saber por seguro el valor más reciente de un nombre sin confiar en un completo nodo, o incurrir en costos significativos en ancho de banda al descargar todo el blockchain. Incluso si se implementara un árbol de búsqueda tipo Merkle en NameCoin, su dependencia de proof-of-work facilita la verificación del cliente problemático. Los clientes Light deben descargar una copia completa del encabezados para todos los bloques en todo el blockchain (o al menos todos los encabezados desde la última actualización de un nombre). Esto significa que el Los requisitos de ancho de banda aumentan linealmente con la cantidad de tiempo. [21]. Además, cambios de nombre en un proof-of-work blockchain requiere esperar proof-of-work bloques de confirmación adicionales, lo que puede tardar hasta una hora el Bitcoin. Con Tendermint, todo lo que necesitamos es el bloque más reciente: hash firmado por un quórum de validators (por poder de voto) y un Merkle prueba del valor actual asociado con el nombre. Esto lo hace Es posible tener un cliente ligero conciso, rápido y seguro. verificación de valores de nombres. En Cosmos, podemos tomar este concepto y ampliarlo más. cada uno La zona de registro de nombres en Cosmos puede tener un nombre de dominio de nivel superior (TLD) asociado, como “.com” o “.org”, y cada nombre-

La zona de registro puede tener su propia gobernanza y registro. reglas.

Governança e Economia

Embora o Hub Cosmos seja um livro-razão distribuído de vários ativos, há um nativo especial token chamado átomo. Os átomos são os únicos staking token do hub Cosmos. Os átomos são uma licença para o titular votar, validar ou delegar para outros validators. Como Ethereum éter, os átomos também podem ser usados para pagar taxas de transação para mitigar spam. Átomos inzacionários adicionais e transação em bloco as taxas são recompensadas para validators e delegadores que delegam para validators. A transação  BurnAtomTx  pode ser usada para recuperar qualquer quantidade proporcional de tokens do pool de reserva. A distribuição inicial dos átomos tokens e validators no Gênesis irá para os doadores da arrecadação de fundos Cosmos (75%), doadores principais (5%), Cosmos Network Foundation (10%) e ALL IN BITS, Inc. (10%). Da gênese em diante, 1/3 da quantidade total de átomos será ser recompensado a validators e delegadores vinculados todos os anos. Consulte o Plano Cosmos para obter detalhes adicionais. Ao contrário de Bitcoin ou outros proof-of-work blockchains, um Tendermint blockchain fica mais lento com mais validators devido ao aumento complexidade da comunicação. Felizmente, podemos apoiar o suficiente validators para criar um blockchain robusto e globalmente distribuído com tempos de confirmação de transação muito rápidos e, como largura de banda,

armazenamento e aumento da capacidade de computação paralela, seremos capazes para oferecer suporte a mais validators no futuro. No dia da gênese, o número máximo de validators será definido para 100, e esse número aumentará a uma taxa de 13% durante 10 anos, e estabilize em 300 validators. Os detentores de átomos que ainda não o são podem se tornar validators por assinar e enviar uma transação  BondTx . A quantidade de os átomos fornecidos como garantia devem ser diferentes de zero. Qualquer um pode se tornar a validator a qualquer momento, exceto quando o tamanho do atual validator conjunto é maior que o número máximo de validators permitido. Nesse caso, a transação só é válida se o valor do átomos é maior que a quantidade de átomos efetivos mantidos pelo menor validator, onde átomos efetivos incluem átomos delegados. Quando um novo validator substitui um validator existente dessa forma, o validator existente torna-se inativo e todos os átomos e átomos delegados entram no estado de desvinculação. Deve haver alguma penalidade imposta aos validators para qualquer desvio intencional ou não intencional do sancionado protocolo. Algumas provas são imediatamente admissíveis, como uma sinal duplo na mesma altura e redondo, ou violação de Ano 0: 100  Ano 1: 113  Ano 2: 127  Ano 3: 144  Ano 4: 163  Ano 5: 184  Ano 6: 208  Ano 7: 235  Ano 8: 265  Ano 9: 300  Ano 10: 300  ...

“prevote-the-lock” (uma regra do protocolo de consenso Tendermint). Tal evidência resultará na perda de sua regularidade por validator e seus átomos ligados, bem como sua parcela proporcional de tokens em o conjunto de reservas – coletivamente chamado de “participação” – será reduzido. Às vezes, validators não estarão disponíveis, seja devido a questões regionais interrupções de rede, falha de energia ou outros motivos. Se, em qualquer ponto nos últimos blocos  ValidatorTimeoutWindow , um validator commit vote não está incluído em blockchain mais de  ValidatorTimeoutMaxAbsent, esse validator se tornará inativo e perderá  ValidatorTimeoutPenalty  (PADRÃO 1%) de seu aposta. Alguns comportamentos “maliciosos” não produzem resultados obviamente discerníveis evidências em blockchain. Nestes casos, os validators podem coordenar fora da banda para forçar o tempo limite desses maliciosos validators, se houver consenso por maioria qualificada. Em situações em que o Hub Cosmos para devido a uma coalizão ≥⅓ de poder de voto saindo do zine ou em situações em que uma coalizão ≥⅓ do poder de voto censurar evidências de comportamento malicioso de entrando no blockchain, o hub deve se recuperar com um hard-fork proposta de reorganização. (Link para “Forks e ataques de censura”). Cosmos Hub validators podem aceitar qualquer tipo ou combinação de token de tipos como taxas para processar uma transação. Cada validator pode definir subjetivamente qualquer taxa de câmbio desejada e escolher quaisquer transações que desejar, desde que o  BlockGasLimit  seja não excedido. As taxas cobradas, menos quaisquer impostos especificados abaixo, são redistribuídos às partes interessadas vinculadas na proporção seus átomos ligados, cada  ValidatorPayoutPeriod  (DEFAULT 1 hora).Das taxas de transação cobradas,  ReserveTax  (PADRÃO 2%) será vá em direção ao pool de reserva para aumentar o pool de reserva e aumentar a segurança e o valor da rede Cosmos. Estes os fundos também podem ser distribuídos de acordo com as decisões feita pelo sistema de governança. Detentores de átomos que delegam seu poder de voto a outros validators pagar uma comissão ao delegado validator. A comissão pode ser definido por cada validator. A segurança do Hub Cosmos é uma função da segurança do validators subjacentes e a escolha da delegação pelos delegantes. A fim de encorajar a descoberta e a notificação precoce de vulnerabilidades, o Hub Cosmos incentiva os hackers a publicar explorações bem-sucedidas por meio de uma transação  ReportHackTx  que diz: “Este validator foi hackeado. Por favor, envie recompensa para este endereço”. Após tal exploração, o validator e os delegantes ficarão inativos,  HackPunishmentRatio  (padrão 5%) dos átomos de todos receberão cortado e  HackRewardRatio  (padrão 5%) dos átomos de todos será recompensado no endereço de recompensa do hacker. O validator deve recuperar os átomos restantes usando sua chave de backup. Para evitar que este recurso seja abusado para transferir átomos não adquiridos, a porção de átomos adquiridos versus átomos não adquiridos de validators e delegadores antes e depois do  ReportHackTx  permanecem os mesmos, e a recompensa do hacker incluirá alguns átomos não adquiridos, se houver. O Cosmos Hub é operado por uma organização distribuída que requer um mecanismo de governança bem definido para coordenar várias alterações no blockchain, como a variável

parâmetros do sistema, bem como atualizações de software e emendas constitucionais. Todos os validators são responsáveis ​​pela votação de todas as propostas. Falhando em votar uma proposta em tempo hábil resultará em validator sendo desativado automaticamente por um período de tempo denominado  AbsenteísmoPenaltyPeriod  (PADRÃO 1 semana). Os delegadores herdam automaticamente o voto do delegado validator. Esta votação pode ser anulada manualmente. Átomos não ligados não obtenha voto. Cada proposta exige um depósito de  MinimumProposalDeposit  tokens, que pode ser uma combinação de um ou mais tokens incluindo átomos. Para cada proposta, os eleitores poderão votar para o depósito. Se mais de metade dos eleitores optarem por depósito (por exemplo, porque a proposta era spam), o depósito vai para reserva, exceto quaisquer átomos que sejam queimados. Para cada proposta, os eleitores poderão votar com as seguintes opções: Sim Sim com força Não NayWithForce Abster-se Uma maioria estrita de votos Sim ou Sim com Força (ou Não ou votos NayWithForce) é necessário para que a proposta seja decidida como aprovado (ou considerado reprovado), mas 1/3+ pode vetar a maioria decisão votando “com força”. Quando uma maioria estrita é vetada, todos são punidos com a perda de VetoPenaltyFeeBlocks  (PADRÃO 1 dia de blocos) valor de taxas (exceto impostos que não será afetado), e o partido que vetou a maioria

a decisão será punida adicionalmente com a perda de VetoPenaltyAtoms  (PADRÃO 0,1%) de seus átomos. Qualquer um dos parâmetros aqui definidos pode ser alterado com o passagem de uma  ParameterChangeProposal . Os átomos podem ser injetados e os fundos do pool de reserva gastos com o aprovação de uma  Proposta de Recompensa . Todas as outras propostas, como uma proposta para atualizar o protocolo, será coordenado por meio da  TextProposal  genérica. Veja o Plano. Houve muitas inovações no consenso blockchain e escalabilidade nos últimos dois anos. Esta seção fornece um breve levantamento de um seleto número de importantes. O consenso na presença de participantes mal-intencionados é um problema que remonta ao início da década de 1980, quando Leslie Lamport cunhou o frase “falha bizantina” para se referir ao comportamento arbitrário do processo que se desvia do comportamento pretendido, em contraste com uma “falha de colisão”, em que um processo simplesmente falha. As primeiras soluções foram descobertas para redes síncronas onde existe um limite superiorlatência da mensagem, embora o uso prático fosse limitado a altamente ambientes controlados, como controladores de aviões e datacenters sincronizados por meio de relógios atômicos. Não foi até o final dos anos 90 que a tolerância prática a falhas bizantinas (PBFT) [11] foi introduzido como um consenso eficiente parcialmente síncrono algoritmo capaz de tolerar até ⅓ dos processos se comportando arbitrariamente. PBFT tornou-se o algoritmo padrão, gerando muitos variações, incluindo mais recentemente uma criada pela IBM como parte do sua contribuição para o Hyperledger. O principal benefício do consenso do Tendermint sobre PBFT é que Tendermint tem uma estrutura subjacente melhorada e simplificada, alguns dos quais são resultado da adoção do paradigma blockchain. Os blocos do Tendermint devem ser confirmados em ordem, o que evita o complexidade e sobrecarga de comunicação associada a PBFT's mudanças de visualização. Em Cosmos e em muitas criptomoedas, não há precisa permitir que o bloco N+i onde i >= 1 seja confirmado, quando o bloco N em si ainda não se comprometeu. Se a largura de banda é a razão pela qual o bloco N não fez commit em uma zona Cosmos, então não ajuda usar votos de compartilhamento de largura de banda para blocos N+i. Se uma partição de rede ou nós ofzine é a razão pela qual o bloco N não foi confirmado, então N+i não vou me comprometer de qualquer maneira. Além disso, o agrupamento de transações em blocos permite Merkle-hashing regular do estado do aplicativo, em vez de resumos periódicos como no esquema de checkpoint de PBFT. Isso permite para commits de transações comprováveis mais rápidos para clientes leves e mais rápidos comunicação inter-blockchain. Tendermint Core também inclui muitas otimizações e recursos que vão além do especificado em PBFT. Por exemplo, os blocos propostos por validators são divididos em partes, Merkle-izados, e fofocaram de uma forma que melhorou a transmissão desempenho (veja LibSwift [19] para inspiração). Além disso, Tendermint Core não faz nenhuma suposição sobre ponto a ponto

conectividade e funções enquanto a rede P2P estiver fracamente conectado. Embora não seja o primeiro a implantar proof-of-stake (PoS), BitShares1.0 [12] contribuiu consideravelmente para a pesquisa e adoção de PoS blockchains, especialmente aqueles conhecidos como PoS “delegados”. Em BitShares, stakeholders elegem “testemunhas”, responsáveis pelo pedido e cometer transações, e "delegados", responsáveis por coordenar atualizações de software e alterações de parâmetros. BitShares2.0 visa alcançar alto desempenho (100k tx/s, 1s latência) em condições ideais, com cada bloco assinado por um único assinante e a ynalidade da transação demorando um pouco mais do que o intervalo de bloco. Uma especificação canônica ainda está em desenvolvimento. As partes interessadas podem remover ou substituir testemunhas que se comportam mal em uma diariamente, mas não há nenhuma garantia significativa de testemunhas ou delegadores à semelhança do Tendermint PoS que são cortados o caso de um ataque de gasto duplo bem-sucedido. Com base em uma abordagem pioneira em Ripple, Stellar [13] refina um modelo de Acordo Federado Bizantino em que os processos participar em consenso não constitui uma situação yxa e global conjunto conhecido. Em vez disso, cada nó do processo faz a curadoria de um ou mais “fatias de quórum”, cada uma constituindo um conjunto de processos confiáveis. Um “quorum” em Stellar é definido como um conjunto de nós que contém pelo menos pelo menos uma fatia de quorum para cada nó do conjunto, de modo que um acordo pode ser alcançado. A segurança do mecanismo Stellar depende da suposição que a interseção de quaisquer dois quóruns não é vazia, enquanto o a disponibilidade de um nó requer que pelo menos uma de suas fatias de quorum seja consistem inteiramente em nós corretos, criando um trade-off entre usando fatias de quórum grandes ou pequenas que podem ser difíceis de equilibrar sem impor suposições significativas sobre confiança. Em última análise,os nós devem de alguma forma escolher fatias de quorum adequadas para que haja ter tolerância a falhas suficiente (ou quaisquer “nós intactos”, dos quais muitos dos resultados do artigo dependem), e o único estratégia fornecida para garantir que tal configuração seja hierárquica e semelhante ao Border Gateway Protocol (BGP), usado por ISPs de primeira linha na Internet para estabelecer tabelas de roteamento globais, e por aquele usado pelos navegadores para gerenciar certificados TLS; ambos notórios pela sua insegurança. As críticas no artigo Stellar aos sistemas de prova de participação baseados no Tendermint são atenuadas pela estratégia token descrita aqui, onde um novo tipo de token chamado átomo é emitido que representam reivindicações de parcelas futuras de taxas e recompensas. O vantagem do proof-of-stake baseado em Tendermint, então, é seu relativo simplicidade, ao mesmo tempo que fornece segurança suficiente e comprovável garantias. BitcoinNG é uma melhoria proposta para Bitcoin que permitiria para formas de escalabilidade vertical, como aumentar o tamanho do bloco, sem as consequências económicas negativas normalmente associadas com tal mudança, como o impacto desproporcionalmente grande em pequenos mineiros. Esta melhoria é conseguida através da separação eleição do líder a partir da transmissão da transação: os líderes são os primeiros eleito por proof-of-work em “microblocos”, e então capaz de transações de transmissão a serem confirmadas até um novo microbloco é encontrado. Isto reduz os requisitos de largura de banda necessários para vencer a corrida PoW, permitindo que pequenos mineiros concorram de forma mais justa, e permitindo que as transações sejam cometidas com mais regularidade pelos último mineiro a encontrar um microbloco. Casper [16] é um algoritmo de consenso proof-of-stake proposto para Ethereum. Seu principal modo de operação é “consenso por aposta”. Por deixando validators apostar iterativamente em qual bloco eles acreditam que irá

tornar-se comprometido com blockchain com base nas outras apostas que eles viram até agora, a inalidade pode ser alcançada eventualmente. link. Esta é uma área ativa de pesquisa da equipe Casper. O desafio está na construção de um mecanismo de apostas que possa ser provou ser uma estratégia evolutivamente estável. O principal benefício de Casper, em comparação com Tendermint, pode oferecer “disponibilidade consistência excessiva” – o consenso não requer um quórum >⅔ de poder de voto - talvez ao custo da velocidade de confirmação ou complexidade de implementação. O Protocolo Interledger [14] não é estritamente uma solução de escalabilidade. Isso fornece uma interoperação ad hoc entre diferentes livros contábeis sistemas através de uma rede de relacionamento bilateral fracamente acoplada. Assim como a Lightning Network, o objetivo do ILP é facilitar pagamentos, mas concentra-se especificamente em pagamentos em diferentes tipos de razão e estende o mecanismo de transação atômica para incluem não apenas hash-locks, mas também um quórum de notários (chamado Protocolo de Transporte Atômico). Este último mecanismo para impor a atomicidade em transações entre livros é semelhante a O mecanismo SPV de cliente leve do Tendermint, portanto, uma ilustração do a distinção entre ILP e Cosmos/IBC é garantida, e fornecido abaixo. 1. Os cartórios de um conector no ILP não apoiam a adesão mudanças, e não permitem ponderação zexível entre notários. Por outro lado, IBC foi projetado especificamente para blockchains, onde validators podem ter pesos diferentes, e onde a adesão pode mudar ao longo do blockchain. 2. Assim como na Lightning Network, o destinatário do pagamento no ILP deve estar on-line para enviar uma confirmação ao remetente. Em umtoken transferência sobre IBC, o conjunto validator do receptor blockchain é responsável por fornecer a confirmação, não o usuário receptor. 3. A diferença mais marcante é que os conectores do ILP não são responsável ou mantendo estado de autoridade sobre pagamentos, enquanto em Cosmos, os validators de um hub são autoridade de o estado de IBC token transfere, bem como a autoridade do quantidade de tokens mantidos por cada zona (mas não a quantidade de tokens mantidos por cada conta dentro de uma zona). Este é o inovação fundamental que permite segurança assimétrica transferência de tokens de zona para zona; o análogo ao ILP conector em Cosmos é persistente e maximamente seguro blockchain razão, o hub Cosmos. 4. Os pagamentos entre livros no ILP precisam ser respaldados por um carteira de ordens de câmbio, pois não há transferência assimétrica de moedas de um livro-razão para outro, apenas a transferência de valor ou equivalentes de mercado. Sidechains [15] são um mecanismo proposto para dimensionar o Bitcoin rede por meio de blockchains alternativos que são “atrelados bidirecionalmente” a o Bitcoin blockchain. (A indexação bidirecional é equivalente a ponte. Em Cosmos dizemos "ponte" para distinguir de marketpegging). Sidechains permitem que os bitcoins se movam efetivamente do Bitcoin blockchain para a cadeia lateral e para trás, e permitir experimentação de novos recursos na cadeia lateral. Como no Cosmos Hub, o sidechain e Bitcoin servem como clientes leves de entre si, usando provas SPV para determinar quando as moedas devem ser transferido para a cadeia lateral e vice-versa. Claro, desde Bitcoin usa proof-of-work, cadeias laterais centradas em Bitcoin sofrem dos muitos problemas e riscos de proof-of-work como um mecanismo de consenso. Além disso, este é um Bitcoin-maximalista solução que não suporta nativamente uma variedade de tokens e

topologia de rede entre zonas como Cosmos faz. Dito isto, o núcleo O mecanismo da cavilha bidirecional é, em princípio, o mesmo que empregado pela rede Cosmos. Ethereum está atualmente pesquisando diversas estratégias diferentes para fragmentar o estado de Ethereum blockchain para resolver necessidades de escalabilidade. Esses esforços têm como objetivo manter a camada de abstração oferecida pela máquina virtual Ethereum atual em todo o espaço de estado compartilhado. Múltiplos esforços de pesquisa são em andamento neste momento. [18][22] Cosmos e Ethereum 2.0 Mauve [22] têm objetivos de design diferentes. Cosmos é especificamente sobre tokens. Mauve é sobre dimensionamento cálculo geral. Cosmos não está vinculado a EVM, portanto, mesmo VMs diferentes podem interoperar. Cosmos permite que o criador da zona determine quem valida o zona. Qualquer pessoa pode iniciar uma nova zona em Cosmos (a menos que a governança decide de outra forma). O hub isola falhas de zona para que invariantes token globais sejam preservado. A Lightning Network é uma rede de transferência proposta token operando em uma camada acima de Bitcoin blockchain (e outros públicos blockchains), permitindo melhorias em muitas ordens de magnitude no rendimento da transação, movendo a maioria das transações fora do livro-razão de consenso nos chamados “canais de pagamento”.Isso é possível graças aos scripts de criptomoeda on-chain, que permitir que as partes celebrem contratos bilaterais estatais onde o o estado pode ser atualizado compartilhando assinaturas digitais e contratos pode ser encerrado publicando inicialmente evidências no blockchain, um mecanismo inicialmente popularizado por trocas atômicas entre cadeias. Por abrindo canais de pagamento com muitas partes, participantes do A Lightning Network pode se tornar pontos focais para rotear o pagamentos de terceiros, levando a um canal de pagamento totalmente conectado rede, ao custo do capital estar vinculado aos canais de pagamento. Embora a Lightning Network também possa se estender facilmente por vários blockchains independentes para permitir a transferência de valor através de um mercado de câmbio, não pode ser usado para transferir tokens de um blockchain para outro. O principal benefício da rede Cosmos descrita aqui é permitir tal token transferências. Dito isto, esperamos que os canais de pagamento e o Lightning Network será amplamente adotada junto com nosso token mecanismo de transferência, por razões de economia de custos e privacidade. Segregated Witness é um link de proposta de melhoria Bitcoin que visa aumentar o rendimento da transação por bloco em 2X ou 3X, ao mesmo tempo que torna a sincronização de blocos mais rápida para novos nós. O brilho desta solução está em como ela funciona dentro do limitações do protocolo atual de Bitcoin e permite um soft-fork atualização (ou seja, clientes com versões mais antigas do software continuar a funcionar após a atualização). Tendermint, sendo um novo protocolo, não tem restrições de design, portanto tem um escalonamento diferente prioridades. Principalmente, o Tendermint usa um algoritmo round-robin BFT baseado em assinaturas criptográficas em vez de mineração, que permite trivialmente o escalonamento horizontal através de múltiplos paralelos blockchains, enquanto commits de bloco regulares e mais frequentes permitem escala vertical também.

Gobernanza y economía

Si bien el Cosmos Hub es un libro mayor distribuido de activos múltiples, existe un token nativo especial llamado átomo. Los átomos son los únicos staking token del concentrador Cosmos. Los átomos son una licencia para que su poseedor pueda votar, validar o delegar en otros validators. Me gusta Ethereum éter, los átomos también se pueden utilizar para pagar las tarifas de transacción para mitigar el spam. Átomos inzacionarios adicionales y transacción en bloque. las tarifas se recompensan a validators y a los delegados que delegan en validators. La transacción  BurnAtomTx  se puede utilizar para recuperar cualquier cantidad proporcional de tokens del fondo de reserva. La distribución inicial del átomo tokens y validators en Génesis se destinará a los donantes de la recaudación de fondos Cosmos (75%), donantes principales (5%), Cosmos Network Foundation (10%) y ALL IN BITS, Inc. (10%). Desde la génesis en adelante, 1/3 de la cantidad total de átomos Se recompensará a los validators vinculados y a los delegados cada año. Consulte el Plan Cosmos para obtener detalles adicionales. A diferencia de Bitcoin u otros proof-of-work blockchains, un Tendermint blockchain se vuelve más lento con más validator debido al aumento Complejidad de la comunicación. Afortunadamente, podemos apoyar lo suficiente validators para crear un blockchain robusto distribuido globalmente con tiempos de confirmación de transacciones muy rápidos y, como ancho de banda,

almacenamiento y capacidad de computación paralela, podremos para admitir más validators en el futuro. El día de la génesis, el número máximo de validators se establecerá en 100, y este número aumentará a una tasa del 13% durante 10 años, y liquidarse en 300 validators. Los poseedores de átomos que aún no lo son pueden convertirse en validators al firmar y enviar una transacción  BondTx . la cantidad de Los átomos proporcionados como garantía deben ser distintos de cero. Cualquiera puede convertirse a validator en cualquier momento, excepto cuando el tamaño del actual El conjunto validator es mayor que el número máximo de validators permitido. En ese caso, la transacción sólo es válida si el monto de átomos es mayor que la cantidad de átomos efectivos que contiene el más pequeño validator, donde los átomos efectivos incluyen átomos delegados. Cuando un nuevo validator reemplaza un validator existente de tal manera, el validator existente se vuelve inactivo y todos los átomos y Los átomos delegados entran en el estado desligado. Debe imponerse alguna sanción a los validators por cualquier Desviación intencional o no intencional de lo sancionado. protocolo. Algunas pruebas son inmediatamente admisibles, como una doble señal a la misma altura y vuelta, o una violación de Año 0: 100  Año 1: 113  Año 2: 127  Año 3: 144  Año 4: 163  Año 5: 184  Año 6: 208  Año 7: 235  Año 8: 265  Año 9: 300  Año 10: 300  ...

“prevote-the-lock” (una regla del protocolo de consenso de Tendermint). Dicha evidencia resultará en que el validator pierda su buena reputación. y sus átomos enlazados, así como su participación proporcional de tokens en el fondo de reserva –llamado colectivamente su “participación”– se reducirá drásticamente. A veces, los validators no estarán disponibles, ya sea debido a cuestiones regionales interrupciones de la red, cortes de energía u otras razones. Si, en cualquier punto en los últimos bloques  ValidatorTimeoutWindow , un validator El voto de confirmación no está incluido en el blockchain más de  ValidatorTimeoutMaxAbsent veces, ese validator se convertirá en inactivo y perderá  ValidatorTimeoutPenalty  (POR PREDETERMINADO 1%) de su estaca. Algunos comportamientos “maliciosos” no producen resultados evidentemente discernibles. evidencia sobre el blockchain. En estos casos, los validators pueden coordinar fuera de banda para forzar el tiempo de espera de estos maliciosos validators, si hay un consenso de supermayoría. En situaciones en las que el Centro Cosmos se detiene debido a una coalición ≥⅓ de el poder de voto sale de la revista, o en situaciones en las que una coalición ≥⅓ del poder de voto censurar evidencia de comportamiento malicioso por parte de ingresando al blockchain, el hub debe recuperarse con un hard-fork propuesta de reorganización. (Enlace a “Bifurcaciones y ataques de censura”). Cosmos Hub validators puede aceptar cualquier token tipo o combinación de tipos como tarifas por procesar una transacción. Cada validator puede establecer subjetivamente el tipo de cambio que desee y elegir cualquier transacción que desee, siempre y cuando el  BlockGasLimit  sea no superado. Las tarifas cobradas, menos los impuestos que se especifican a continuación, se redistribuyen entre los accionistas vinculados en proporción a sus átomos enlazados, cada  ValidatorPayoutPeriod  (POR PREDETERMINADO 1 hora).De las tarifas de transacción cobradas, se aplicará el impuesto de reserva (2 % POR DEFECTO). ir hacia el grupo de reserva para aumentar el grupo de reserva y aumentar la seguridad y el valor de la red Cosmos. estos Los fondos también se pueden distribuir de acuerdo con las decisiones. realizadas por el sistema de gobierno. Poseedores de átomos que delegan su poder de voto a otros validators pagar una comisión al delegado validator. La comisión puede ser establecido por cada validator. La seguridad del Cosmos Hub es una función de la seguridad del validators subyacentes y la elección de delegación por parte de los delegados. Para fomentar el descubrimiento y la notificación temprana de los hallazgos vulnerabilidades, el Cosmos Hub alienta a los piratas informáticos a publicar exploits exitosos a través de una transacción  ReportHackTx  que dice: "Este validator fue pirateado. Por favor envíe la recompensa a esta dirección”. sobre tal exploit, el validator y los delegados quedarán inactivos,  HackPunishmentRatio (predeterminado 5%) de los átomos de todos obtendrán cortado y  HackRewardRatio  (5 %) de los átomos de todos será recompensado en la dirección de recompensa del hacker. El validator debe recuperar los átomos restantes utilizando su clave de respaldo. Para evitar que se abuse de esta característica para transferir átomos no adquiridos, la porción de átomos adquiridos frente a los no adquiridos de validators y delegados antes y después del  ReportHackTx  siguen siendo los mismos, y la recompensa por hackers incluirá algunos átomos no adquiridos, si los hay. El Cosmos Hub es operado por una organización distribuida que requiere un mecanismo de gobernanza bien definido para coordinar varios cambios en el blockchain, como la variable

parámetros del sistema, así como actualizaciones de software y enmiendas constitucionales. Todos los validator son responsables de votar todas las propuestas. No poder votar una propuesta de manera oportuna resultará en el validator siendo desactivado automáticamente durante un período de tiempo llamado  Período de penalización por ausentismo (POR PREDETERMINADO, 1 semana). Los delegados heredan automáticamente el voto del delegado. validator. Esta votación puede anularse manualmente. Átomos no enlazados no obtener ningún voto. Cada propuesta requiere un depósito de  MinimumProposalDeposit  tokens, que puede ser una combinación de uno o más tokens incluyendo los átomos. Para cada propuesta, los votantes pueden votar para tomar el depósito. Si más de la mitad de los votantes optan por tomar la depósito (por ejemplo, porque la propuesta era spam), el depósito va a reserva, excepto los átomos que se queman. Para cada propuesta, los votantes podrán votar con las siguientes opciones: si Sí con fuerza No No con fuerza abstenerse Una mayoría estricta de votos Sí o SíConFuerza (o No o votos NayWithForce) es necesario para que la propuesta se decida como aprobado (o decidido como fallido), pero 1/3+ puede vetar la mayoría decisión votando “con fuerza”. Cuando se veta por mayoría estricta, todos son castigados con la pérdida de VetoPenaltyFeeBlocks  (POR DEFECTO el valor de 1 día de bloques) valor de tarifas (excepto impuestos que no se verá afectado), y el partido que vetó la mayoría

La decisión será castigada adicionalmente con la pérdida de VetoPenaltyAtoms.  (POR DEFECTO 0,1%) de sus átomos. Cualquiera de los parámetros definidos aquí se puede cambiar con el paso de una  ParameterChangeProposal . Los átomos pueden ser inzatados y los fondos del fondo de reserva gastados con el aprobación de una  BountyProposal . Todas las demás propuestas, como la propuesta para mejorar el protocolo, se coordinará a través de la  TextProposal  genérica. Ver el plano. Ha habido muchas innovaciones en el consenso blockchain y escalabilidad en los últimos años. Esta sección proporciona una breve encuesta de un número selecto de importantes. El consenso en presencia de participantes malintencionados es un problema que se remonta a principios de la década de 1980, cuando Leslie Lamport acuñó el frase “falla bizantina” para referirse al comportamiento arbitrario del proceso que se desvía del comportamiento previsto, a diferencia de un "fallo de accidente", donde un proceso simplemente falla. Se descubrieron las primeras soluciones para redes síncronas donde hay un límite superior enlatencia del mensaje, aunque el uso práctico se limitó a niveles altamente entornos controlados, como controladores de aviones y Centros de datos sincronizados mediante relojes atómicos. No fue hasta el A finales de los 90 se creó la Tolerancia práctica a fallos bizantinos (PBFT) [11]. presentado como un consenso eficiente parcialmente sincrónico algoritmo capaz de tolerar hasta ⅓ de los procesos que se comportan arbitrariamente. PBFT se convirtió en el algoritmo estándar, generando muchos variaciones, incluida la más reciente creada por IBM como parte de su contribución a Hyperledger. El principal beneficio del consenso de Tendermint sobre PBFT es que Tendermint tiene una estructura subyacente mejorada y simplificada, algo de lo cual es el resultado de adoptar el paradigma blockchain. Los bloques de Tendermint deben comprometerse en orden, lo que evita la complejidad y sobrecarga de comunicación asociados con PBFT cambios de vista. En Cosmos y muchas criptomonedas, no existe Es necesario permitir que el bloque N+i donde i >= 1 se confirme, cuando el bloque N en sí aún no se ha comprometido. Si el ancho de banda es la razón por la cual bloquear N no se ha comprometido en una zona Cosmos, entonces no ayuda usar Votos para compartir ancho de banda por los bloques N+i. Si una partición de red o Los nodos de ofzine son la razón por la cual el bloque N no se ha comprometido, entonces N+i no me comprometeré de todos modos. Además, la agrupación de transacciones en bloques permite Merkle-hashing regular del estado de la aplicación, en lugar de resúmenes periódicos como con el esquema de puntos de control de PBFT. Esto permite para compromisos de transacciones demostrables más rápidos para clientes ligeros y más rápidos comunicación inter-blockchain. Tendermint Core también incluye muchas optimizaciones y características que van más allá de lo especificado en PBFT. Por ejemplo, los bloques propuestos por validators están divididos en partes, Merkle-izados, y chismear de tal manera que mejore la difusión rendimiento (consulte LibSwift [19] para inspirarse). Además, menta Core no hace ninguna suposición sobre el punto a punto

conectividad y funciones mientras la red P2P esté débilmente conectado. Si bien no es el primero en implementar proof-of-stake (PoS), BitShares1.0 [12] contribuyó considerablemente a la investigación y adopción de PoS blockchains, particularmente aquellos conocidos como PoS “delegados”. en BitShares, las partes interesadas eligen "testigos", responsables de realizar pedidos y realizar transacciones, y "delegados", responsables de Coordinar actualizaciones de software y cambios de parámetros. BitShares2.0 tiene como objetivo lograr un alto rendimiento (100k tx/s, 1s latencia) en condiciones ideales, con cada bloque firmado por un único firmante y la duración de la transacción tardan bastante más que el intervalo de bloque. Aún se está desarrollando una especificación canónica. Las partes interesadas pueden eliminar o reemplazar a los testigos que se portan mal en un diariamente, pero no hay ninguna garantía significativa de testigos o delegados a semejanza de Tendermint PoS que son cortados el caso de un ataque de doble gasto exitoso. Basándose en un enfoque iniciado por Ripple, Stellar [13] creó un modelo de Acuerdo Bizantino Federado en el que los procesos participar en el consenso no constituye un acuerdo fijo y global. conjunto conocido. Más bien, cada nodo de proceso selecciona uno o más “porciones de quórum”, cada una de las cuales constituye un conjunto de procesos confiables. un “quórum” en Stellar se define como un conjunto de nodos que contienen al menos al menos un segmento de quórum para cada nodo del conjunto, de modo que se puede llegar a un acuerdo. La seguridad del mecanismo Stellar se basa en la suposición que la intersección de dos quórums cualesquiera no esté vacía, mientras que la La disponibilidad de un nodo requiere que al menos uno de sus sectores de quórum constan enteramente de nodos correctos, creando un equilibrio entre Usar porciones de quórum grandes o pequeñas que pueden ser difíciles de equilibrar. sin imponer supuestos significativos sobre la confianza. Al final,los nodos deben de alguna manera elegir porciones de quórum adecuadas para que ser suficiente tolerancia a fallas (o cualquier "nodo intacto", de los cuales dependen gran parte de los resultados del artículo), y el único La estrategia proporcionada para garantizar que dicha configuración sea jerárquica. y similar al Border Gateway Protocol (BGP), utilizado por los principales ISP de Internet para establecer tablas de enrutamiento globales, y por el utilizado por los navegadores para gestionar certificados TLS; ambos notorios por su inseguridad. La crítica en el artículo Stellar a los sistemas de prueba de participación basados en Tendermint se ve mitigada por la estrategia token descrita. aquí, donde se emite un nuevo tipo de token llamado átomo que representan reclamaciones sobre porciones futuras de honorarios y recompensas. el La ventaja de proof-of-stake basado en Tendermint, entonces, es su relativo simplicidad, sin dejar de proporcionar seguridad suficiente y demostrable garantías. BitcoinNG es una mejora propuesta para Bitcoin que permitiría para formas de escalabilidad vertical, como aumentar el tamaño del bloque, sin las consecuencias económicas negativas típicamente asociadas con tal cambio, como el impacto desproporcionadamente grande sobre los pequeños mineros. Esta mejora se consigue separando elección de líder a partir de la transmisión de transacciones: los líderes son los primeros elegido por proof-of-work en “microbloques”, y luego capaz de transmitir transacciones que se confirmarán hasta un nuevo microbloque se encuentra. Esto reduce los requisitos de ancho de banda necesarios para ganar la carrera de PoW, permitiendo a los pequeños mineros competir de manera más justa, y permitir que las transacciones se realicen con mayor regularidad por parte del último minero en encontrar un microbloque. Casper [16] es un algoritmo de consenso propuesto proof-of-stake para Ethereum. Su modo principal de operación es el “consenso por apuesta”. Por dejar que validators apuesten iterativamente sobre qué bloque creen que será

comprometerse con el blockchain según las otras apuestas que han visto hasta ahora, eventualmente se podrá lograr la ynalidad. enlace. Esta es un área activa de investigación por parte del equipo de Casper. el El desafío está en construir un mecanismo de apuestas que pueda ser ha demostrado ser una estrategia evolutivamente estable. El principal beneficio de Casper, en comparación con Tendermint, puede ofrecer "disponibilidad exceso de coherencia” – el consenso no requiere > 2/3 de quórum de poder de voto, tal vez a costa de la velocidad de compromiso o complejidad de implementación. El protocolo Interledger [14] no es estrictamente una solución de escalabilidad. eso Proporciona una interoperación ad hoc entre diferentes libros de contabilidad. sistemas a través de una red de relaciones bilaterales poco acopladas. Al igual que Lightning Network, el propósito de ILP es facilitar pagos, pero se centra específicamente en pagos en diferentes tipos de libro mayor y extiende el mecanismo de transacciones atómicas a incluir no sólo hash-candados, sino también un quórum de notarios (llamado el Protocolo de Transporte Atómico). Este último mecanismo para hacer cumplir la atomicidad en las transacciones entre libros mayores es similar a El mecanismo SPV de cliente ligero de Tendermint, por lo que una ilustración del se justifica la distinción entre ILP y Cosmos/IBC, y proporcionado a continuación. 1. Los notarios de un conector en ILP no admiten membresía cambios y no permiten ponderaciones flexibles entre notarios. Por otro lado, IBC está diseñado específicamente para blockchains, donde validators pueden tener diferentes pesos, y donde la membresía puede cambiar en el transcurso del blockchain. 2. Al igual que en Lightning Network, el receptor del pago en ILP debe estar en línea para enviar una confirmación al remitente. en untoken transferencia sobre IBC, el conjunto validator del receptor blockchain es responsable de proporcionar confirmación, no el usuario receptor. 3. La diferencia más sorprendente es que los conectores del ILP no son responsable o mantener un estado autoritario sobre los pagos, mientras que en Cosmos, los validators de un hub son la autoridad de el estado de las transferencias IBC token así como la autoridad del cantidad de tokens retenidos por cada zona (pero no la cantidad de tokens mantenidos por cada cuenta dentro de una zona). Este es el innovación fundamental que permite una seguridad asimétrica transferencia de tokens de zona a zona; el análogo de ILP El conector en Cosmos es persistente y de máxima seguridad. blockchain libro mayor, el Cosmos Hub. 4. Los pagos entre libros contables en ILP deben estar respaldados por un libro de órdenes de intercambio, ya que no hay transferencia asimétrica de monedas de un libro mayor a otro, sólo la transferencia de valor o equivalentes de mercado. Las cadenas laterales [15] son un mecanismo propuesto para escalar el Bitcoin red a través de blockchains alternativos que están "vinculados en dos direcciones" a el Bitcoin blockchain. (La vinculación bidireccional equivale a puente. En Cosmos decimos "puente" para distinguirlo de la vinculación al mercado). Las cadenas laterales permiten que los bitcoins se muevan efectivamente desde el Bitcoin blockchain a la cadena lateral y viceversa, y permita Experimentación de nuevas funciones en la cadena lateral. Como en el Cosmos Hub, la cadena lateral y Bitcoin sirven como clientes ligeros de entre sí, utilizando pruebas SPV para determinar cuándo se deben transferido a la cadena lateral y viceversa. Por supuesto, desde Bitcoin usa proof-of-work, las cadenas laterales centradas alrededor de Bitcoin sufren de los muchos problemas y riesgos de proof-of-work como mecanismo de consenso. Además, este es un Bitcoin-maximalista solución que no admite de forma nativa una variedad de token y

topología de red entre zonas como lo hace Cosmos. Dicho esto, el núcleo El mecanismo de la clavija de dos vías es en principio el mismo que el empleado por la red Cosmos. Ethereum actualmente está investigando varias estrategias diferentes. para fragmentar el estado de Ethereum blockchain para abordar necesidades de escalabilidad. Estos esfuerzos tienen como objetivo mantener la capa de abstracción que ofrece la máquina virtual Ethereum actual a través del espacio estatal compartido. Múltiples esfuerzos de investigación son en marcha en este momento. [18][22] Cosmos y Ethereum 2.0 Mauve [22] tienen diferentes objetivos de diseño. Cosmos se trata específicamente de tokens. Mauve se trata de escalar cálculo general. Cosmos no está vinculado a EVM, por lo que incluso diferentes VM pueden interoperar. Cosmos permite al creador de la zona determinar quién valida la zona. Cualquiera puede iniciar una nueva zona en Cosmos (a menos que la gobernanza decide lo contrario). El concentrador aísla las fallas de zona para que las invariantes token globales sean conservado. Lightning Network es una red de transferencia propuesta token operando en una capa por encima del Bitcoin blockchain (y otros blockchains), permitiendo mejoras de muchos órdenes de magnitud en el rendimiento de las transacciones al mover la mayoría de las transacciones fuera del libro de consenso hacia los llamados "canales de pago".Esto es posible gracias a los scripts de criptomonedas en cadena, que permitir a las partes celebrar contratos estatales bilaterales donde el El estado se puede actualizar compartiendo firmas digitales y contratos. se puede cerrar publicando finalmente evidencia en el blockchain, un Mecanismo popularizado por primera vez mediante intercambios atómicos entre cadenas. Por abriendo canales de pago con muchas partes, participantes en el Lightning Network puede convertirse en puntos focales para enrutar el pagos de otros, lo que lleva a un canal de pago totalmente conectado red, a costa de que el capital quede inmovilizado en los canales de pago. Si bien Lightning Network también puede extenderse fácilmente a través de Múltiples blockchains independientes para permitir la transferencia de valor. a través de un mercado de cambios, no se puede utilizar para negociar asimétricamente transferir tokens de un blockchain a otro. El principal beneficio de la red Cosmos descrita aquí es para permitir dicha conexión directa token transferencias. Dicho esto, esperamos que los canales de pago y la Lightning Network será ampliamente adoptada junto con nuestra token mecanismo de transferencia, por motivos de ahorro de costes y privacidad. Testigo Segregado es un enlace de propuesta de mejora Bitcoin que tiene como objetivo aumentar el rendimiento de las transacciones por bloque 2X o 3X, y al mismo tiempo acelera la sincronización de bloques para nuevos nodos. La brillantez de esta solución está en cómo funciona dentro del limitaciones del protocolo actual de Bitcoin y permite una bifurcación suave actualización (es decir, los clientes con versiones anteriores del software seguirá funcionando después de la actualización). Tendermint, al ser nuevo protocolo, no tiene restricciones de diseño, por lo que tiene un escalado diferente prioridades. Principalmente, Tendermint utiliza un algoritmo de operación por turnos BFT basado en firmas criptográficas en lugar de minería, lo que trivialmente permite el escalado horizontal a través de múltiples paralelos blockchains, mientras que las confirmaciones de bloque regulares y más frecuentes permiten escala vertical también.

Consenso e detalhes técnicos

Um protocolo de consenso bem concebido deve fornecer algumas garantias caso a capacidade de tolerância seja ultrapassada e o consenso falha. Isto é especialmente necessário na economia sistemas, onde o comportamento bizantino pode ter um impacto financeiro substancial recompensa. A garantia mais importante é uma forma de responsabilização, onde os processos que levaram ao consenso falhar (ou seja, fez com que os clientes do protocolo aceitassem valores diferentes - um garfo) pode ser identificado e punido de acordo com as regras do protocolo, ou, possivelmente, o sistema legal. Quando o sistema jurídico é não confiável ou excessivamente caro para invocar, validators podem ser forçados a fazer depósitos de segurança para participar, e aqueles os depósitos podem ser revogados ou cortados quando um comportamento malicioso é detectado [10]. Observe que isso é diferente de Bitcoin, onde a bifurcação é uma ocorrência regular devido à assincronia da rede e à natureza probabilística da localização colisões parciais hash. Como em muitos casos um fork malicioso é indistinguível de uma bifurcação devido à assincronia, Bitcoin não pode implementar de forma confiável a responsabilidade do fork, além da implícita custo de oportunidade pago pelos mineradores para minerar um bloco órfão. Chamamos os estágios de votação de PreVote e PreCommit. Uma votação pode ser a favor um bloco específico ou para Nil. Chamamos uma coleção de >⅔ Pré-Votos para um único bloco na mesma rodada, uma Polca e uma coleção de >⅔ Pré-Commits para um único bloco na mesma rodada de um Commit. Se >⅔ Pré-Commit para Nil na mesma rodada, eles passam para a próxima redondo. Observe que o determinismo estrito no protocolo incorre em uma fraqueza suposição de sincronia, pois líderes defeituosos devem ser detectados e

ignorado. Assim, validators esperam algum tempo, TimeoutPropose, antes de Prevote Nil, e o valor de TimeoutPropose aumenta a cada rodada. Progressão através o resto da rodada é totalmente assíncrona, pois o progresso só é feito assim que um validator recebe notícias de >⅔ da rede. Na prática, seria necessário um adversário extremamente forte para frustrar indefinidamente a suposição de sincronia fraca (fazendo com que o consenso não consiga já cometeu um bloco), e isso pode ser ainda mais difícil usando valores aleatórios de TimeoutPropose em cada validator. Um conjunto adicional de restrições, ou regras de bloqueio, garantem que o a rede eventualmente comprometerá apenas um bloco em cada altura. Qualquer tentativa maliciosa de fazer com que mais de um bloco seja confirmado a uma determinada altura pode ser identificado. Primeiro, um PreCommit para um bloco deve vir com justificativa, em forma de Polca para aquele bloco. Se o validator já tiver pré-comprometido um bloco na rodada R_1, nós dizem que estão trancados naquele quarteirão, e a Polca costumava justificar o novo PreCommit na rodada R_2 deve vir em uma rodada R_polka onde R_1 < R_polka <= R_2. Em segundo lugar, validators devem propor e/ou pré-votar o bloco em que estão bloqueados. Juntos, esses condições garantem que um validator não faça Pré-Commit sem evidências suficientes como justificativa, e que validators que têm já o PreCommit não pode contribuir com evidências para o PreCommit outra coisa. Isso garante a segurança e a vivacidade do algoritmo de consenso. Os detalhes completos do protocolo estão descritos aqui. A necessidade de sincronizar todos os cabeçalhos de bloco é eliminada no TendermintPoS, pois a existência de uma cadeia alternativa (um fork) significa ≥⅓ de a participação vinculada pode ser reduzida. Claro, já que cortar requer que alguém compartilhe evidências de um fork, os clientes leves devem armazenar qualquer block-hash confirma que vê. Além disso, clientes levespoderia ficar periodicamente sincronizado com as alterações no conjunto validator, em para evitar ataques de longo alcance (mas outras soluções são possível). Com espírito semelhante ao Ethereum, o Tendermint permite que os aplicativos incorporar uma raiz Merkle global hash em cada bloco, permitindo facilmente consultas de estado verificáveis para coisas como saldos de contas, o valor armazenado em um contrato, ou a existência de uma transação não gasta saída, dependendo da natureza da aplicação. Assumindo uma coleção de redes de transmissão suficientemente resiliente e um conjunto validator estático, qualquer bifurcação no blockchain pode ser detectado e os depósitos dos validators infratores cortados. Isto inovação, sugerida pela primeira vez por Vitalik Buterin no início de 2014, resolve o problema de nada em jogo de outros proof-of-stake criptomoedas (ver Trabalho Relacionado). No entanto, como validator define deve ser capaz de alterar, durante um longo período de tempo, o original validators podem todos se tornar desvinculados e, portanto, estariam livres para criar uma nova cadeia a partir do bloco gênese, sem incorrer em nenhum custo, pois eles não têm mais depósitos bloqueados. Este ataque veio a ser conhecido como Ataque de Longo Alcance (LRA), em contraste com um Ataque de Curto Alcance Ataque à distância, onde validators que estão atualmente vinculados causam um fork e são, portanto, puníveis (assumindo um fork responsável BFT algoritmo como consenso Tendermint). Ataques de longo alcance são muitas vezes considerado um golpe crítico para proof-of-stake. Felizmente, o LRA pode ser mitigado da seguinte forma. Primeiro, por um validator para desvincular (recuperando assim seu depósito de garantia e não ganhando mais taxas para participar do consenso), o o depósito deve ser intransferível por um período de tempo conhecido como “período de desvinculação”, que pode ser da ordem de semanas ou meses. Segundo, para que um cliente leve esteja seguro, o primeiro vez que se conecta à rede, ele deve verificar um bloco recente-hash contra uma fonte confiável ou, de preferência, múltiplas fontes. Isto

Essa condição é às vezes chamada de “subjetividade fraca”. Finalmente, para permanecer seguro, ele deve sincronizar com o validator mais recente definido em menos tão frequentemente quanto a duração do período de desvinculação. Isto garante que o cliente light saiba sobre as alterações no validator definido antes de um validator ter seu capital não garantido e, portanto, não mais em jogo, o que lhe permitiria enganar o cliente realizando um ataque de longo alcance criando novos blocos começando em um altura onde foi colado (assumindo que tenha controle de muitas das primeiras chaves privadas). Note-se que superar o LRA desta forma requer uma revisão o modelo de segurança original de proof-of-work. No PoW, é assumiu que um cliente leve pode sincronizar com a altura atual do bloco genesis confiável a qualquer momento, simplesmente processando a prova de trabalho em cada cabeçalho do bloco. Para superar o LRA, no entanto, exigem que um cliente light fique online com alguma regularidade para rastrear alterações no conjunto validator e que na primeira vez elas ficam on-line, eles devem ter cuidado especial para autenticar o que ouvem da rede em relação a fontes confiáveis. De claro, este último requisito é semelhante ao de Bitcoin, onde o protocolo e o software também devem ser obtidos de um confiável fonte. O método acima para prevenir LRA é adequado para validators e nós completos de um blockchain alimentado por Tendermint porque estes os nós devem permanecer conectados à rede. O método também é adequado para clientes leves que podem esperar sincronizar com a rede frequentemente. No entanto, para clientes leves que não se espera que tenham acesso frequente à Internet ou ao blockchain rede, ainda outra solução pode ser usada para superar o LRA. Titulares que não sejam validator token podem postar seus tokens como garantia com um período de desvinculação muito longo (por exemplo, muito mais longo do que o período de desvinculação para validators) e atender clientes light com um método secundário de atestar a validade dos dados atuais e bloco passado-hashes. Embora esses tokens não contem para o segurança do consenso de blockchain, eles podem, no entanto,fornecer fortes garantias para clientes leves. Se bloco histórico-hash consultas eram suportadas em Ethereum, qualquer um poderia vincular seus tokens em um smart contract especialmente projetado e fornece serviços de atestado pagos, criando efetivamente um mercado para segurança LRA lightclient. Devido à definição de um bloco commit, qualquer coalizão ≥⅓ de o poder de voto pode interromper o blockchain ficando offzine ou não transmitindo seus votos. Tal coligação também pode censurar transações específicas, rejeitando blocos que incluem esses transações, embora isso resultasse em uma proporção significativa de propostas de bloco a serem rejeitadas, o que desaceleraria o ritmo de commits de bloco do blockchain, reduzindo sua utilidade e valor. A coalizão maliciosa também pode transmitir votos aos poucos, para que quanto a moer o bloco blockchain quase paralisar ou se envolver em qualquer combinação desses ataques. Finalmente, pode causar blockchain para bifurcar, assinando duas vezes ou violando o bloqueio regras. Se um adversário globalmente activo também estivesse envolvido, poderia particionar a rede de tal forma que pode parecer que o errado subconjunto de validators foram responsáveis pela desaceleração. Isto não é apenas uma limitação do Tendermint, mas sim uma limitação de todos protocolos de consenso cuja rede é potencialmente controlada por um adversário ativo. Para esses tipos de ataques, um subconjunto de validators deve coordenar através de meios externos para assinar uma proposta de reorganização que escolhe uma bifurcação (e qualquer evidência dela) e o subconjunto inicial de validators com suas assinaturas. Os validadores que assinam tal proposta de reorganização renunciam à sua garantia em todos os outros forks. Os clientes devem verificar as assinaturas na proposta de reorganização, verificar qualquer evidência, e fazer um julgamento ou solicitar uma decisão ao usuário final. Para Por exemplo, um aplicativo de carteira telefônica pode solicitar ao usuário uma mensagem de segurança

aviso, embora uma geladeira possa aceitar qualquer proposta de reorganização assinado por +½ dos validators originais com poder de voto. Nenhum algoritmo bizantino tolerante a falhas não síncrono pode surgir ao consenso quando ≥⅓ do poder de voto são desonestos, mas uma bifurcação assume que ≥⅓ do poder de voto já foi desonesto por assinatura dupla ou alteração de bloqueio sem justificativa. Então, assinando a proposta de reorganização é um problema de coordenação que não pode ser resolvido por qualquer protocolo não síncrono (isto é, automaticamente, e sem fazer suposições sobre a confiabilidade do rede subjacente). Por enquanto, deixamos o problema da coordenação de propostas de reorganização para a coordenação humana via consenso social na mídia da internet. Os validadores devem ter cuidado para garantir que haja não há partições de rede restantes antes de assinar uma proposta de reorganização, para evitar situações em que duas propostas de reorganização conflitantes sejam assinadas. Supondo que o meio e o protocolo de coordenação externa sejam robusto, segue-se que os forks são menos preocupantes do que a censura ataques. Além de bifurcações e censura, que exigem ≥⅓ Bizantina poder de voto, uma coalizão com >⅔ poder de voto pode comprometer estado arbitrário e inválido. Isso é característico de qualquer (BFT) sistema de consenso. Ao contrário da assinatura dupla, que cria bifurcações com evidências facilmente verificáveis, detectando o comprometimento de um estado inválido requer pares não validados para verificar blocos inteiros, o que implica que eles mantenham uma cópia local do estado e executem cada transação, calculando a raiz do estado de forma independente para eles mesmos. Uma vez detectada, a única maneira de lidar com tal falha é através do consenso social. Por exemplo, em situações onde Bitcoin falhou, seja bifurcação devido a bugs de software (como em março 2013), ou cometendo estado inválido devido ao comportamento bizantino de mineiros (como em julho de 2015), a comunidade bem conectada de empresas, desenvolvedores, mineradores e outras organizações estabeleceu um consenso social sobre quais ações manuais eramexigido pelos participantes para curar a rede. Além disso, desde Pode-se esperar que validators de um Tendermint blockchain sejam identificável, o comprometimento de um estado inválido pode até ser punível por lei ou alguma jurisprudência externa, se desejado. ABCI consiste em 3 tipos de mensagens principais que são entregues de o núcleo da aplicação. O aplicativo responde com mensagens de resposta correspondentes. A mensagem  AppendTx  é o carro-chefe do aplicativo. Cada a transação em blockchain é entregue com esta mensagem. O aplicativo precisa validar cada transação recebida com o Mensagem AppendTx em relação ao estado atual, protocolo de aplicação, e as credenciais criptográficas da transação. Um validado transação então precisa atualizar o estado do aplicativo - por vinculando um valor a um armazenamento de valores-chave ou atualizando o UTXO banco de dados. A mensagem  CheckTx  é semelhante a AppendTx, mas é apenas para validando transações. Primeiras verificações do mempool do Tendermint Core a validade de uma transação com CheckTx, e apenas retransmite válido transações para seus pares. Os aplicativos podem verificar um incremento nonce na transação e retornará um erro no CheckTx se o nonce é antigo. A mensagem  Commit  é usada para calcular uma criptografia compromisso com o estado atual da aplicação, para ser colocado no cabeçalho do próximo bloco. Isso tem algumas propriedades úteis. Inconsistências na atualização desse estado agora aparecerão como blockchain bifurcações que capturam toda uma classe de programação erros. Isso também simplifica o desenvolvimento de soluções leves e seguras clientes, como as provas Merkle-hash podem ser verificadas verificando-se o bloco-hash, e o bloco-hash é assinado por um quórum de validators (por poder de voto).

Mensagens ABCI adicionais permitem que o aplicativo acompanhe e alterar o conjunto validator, e para que a aplicação receba o bloquear informações, como a altura e os votos de confirmação. ABCI solicitações/respostas são mensagens simples do Protobuf. Verifique o esquema yle. Argumentos: Dados ([]byte): os bytes da transação da solicitação Retorna: Código (uint32): código de resposta Dados ([]byte): bytes de resultado, se houver Log (string): mensagem de depuração ou erro Uso:

Anexe e execute uma transação. Se a transação for válida, retorna CodeType.OK Argumentos: Dados ([]byte): os bytes da transação da solicitação Retorna: Código (uint32): código de resposta Dados ([]byte): bytes de resultado, se houver Log (string): mensagem de depuração ou erro Uso:

Valide uma transação. Esta mensagem não deve alterar o estado. As transações são executadas primeiro através do CheckTx antes transmitir para pares na camada mempool. Você pode fazer CheckTx semi-stateful e limpe o estado após Commit ou BeginBlock , para permitir sequências dependentes de transações no mesmo bloco.

Retorna: Dados ([]byte): raiz Merkle hash Log (string): mensagem de depuração ou erro Uso:

Retorne uma raiz Merkle hash do estado do aplicativo. Argumentos: Dados ([]byte): os bytes da solicitação de consulta Retorna: Código (uint32): código de resposta Dados ([]byte): os bytes de resposta da consulta Log (string): mensagem de depuração ou erro Uso:

Limpe a fila de respostas. Aplicativos que implementam types.Application não precisa implementar esta mensagem – é manipulados pelo projeto. Retorna: Dados ([]byte): os bytes de informação Uso:

Retorne informações sobre o estado do aplicativo. Aplicação específico. Argumentos: Chave (string): chave a ser definida

Valor (string): valor a ser definido para a chave Retorna: Log (string): mensagem de depuração ou erro Uso:

Defina as opções do aplicativo. Por exemplo Chave=“modo”, Valor=“mempool” para uma conexão mempool, ou Key=“mode”, Value=“consensus” para uma conexão de consenso. Outras opções são específicas do aplicativo. Argumentos: Validadores ([]Validador): gênese inicial-validators Uso:

Chamado uma vez no Gênesis Argumentos: Altura (uint64): a altura do bloco que está começando Uso:

Sinaliza o início de um novo bloco. Chamado antes de qualquer ApêndiceTxs. Argumentos: Altura (uint64): a altura do bloco que terminou Retorna: Validadores ([]Validador): validators alterados com novos poderes de voto (0 para remover) Uso:

Sinaliza o fim de um bloco. Afinal, chamado antes de cada Commit transações Consulte o repositório ABCI para obter mais detalhes.Existem vários motivos pelos quais um remetente pode querer que o confirmação da entrega de um pacote pela cadeia receptora. Por exemplo, o remetente pode não saber o status do cadeia de destino, se for esperado que esteja com defeito. Ou o remetente pode deseja impor um tempo limite ao pacote (com o parâmetro  MaxHeight  rendimento de pacotes), enquanto qualquer cadeia de destino pode sofrer um ataque de negação de serviço com um aumento repentino no número de mensagens recebidas. pacotes. Nestes casos, o remetente pode exigir confirmação de entrega definindo o status inicial do pacote como  AckPending . Então, é o responsabilidade da cadeia de recebimento de confirmar a entrega, incluindo um abreviado como  IBCPacket  no aplicativo Merkle hash. Primeiro, um  IBCBlockCommit  e um  IBCPacketTx  são postados no “Hub” isso comprova a existência de um  IBCPacket  na “Zona1”. Diga isso  IBCPacketTx  tem o seguinte valor: FromChainID: “Zona1” FromBlockHeight: 100 (digamos) Pacote: um IBCPacket:

Cabeçalho: um IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número: 200 (digamos) Status: ConfirmadoPendente Tipo: “moeda” MaxHeight: 350 (digamos que “Hub” está atualmente na altura 300) Carga útil: Em seguida, um  IBCBlockCommit  e  IBCPacketTx  são postados na “Zona2” isso comprova a existência de um  IBCPacket  no “Hub”. Diga isso  IBCPacketTx  tem o seguinte valor: FromChainID: “Hub” FromBlockHeight: 300 Pacote: um IBCPacket: Cabeçalho: um IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número: 200 Status: ConfirmadoPendente Tipo: “moeda” Altura máxima: 350 Carga útil: A seguir, “Zone2” deve incluir em seu app-hash um pacote abreviado que mostra o novo status de  AckSent . Um  IBCBlockCommit  e  IBCPacketTx  são postados de volta no “Hub” que comprova a existência de um  IBCPacket abreviado  na "Zona2". Diga isso  IBCPacketTx  tem o seguinte valor: FromChainID: “Zona2”

FromBlockHeight: 400 (digamos) Pacote: um IBCPacket: Cabeçalho: um IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número: 200 Status: AckSent Tipo: “moeda” Altura máxima: 350 PayloadHash: Finalmente, o “Hub” deve atualizar o status do pacote desde  AckPending  para  AckReceived . Evidência deste novo status ynalizado deve voltar para "Zona2". Digamos que  IBCPacketTx  tenha o seguinte valor: FromChainID: “Hub” FromBlockHeight: 301 Pacote: um IBCPacket: Cabeçalho: um IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número: 200 Status: AckRecebido Tipo: “moeda” Altura máxima: 350 PayloadHash: Enquanto isso, “Zona1” pode assumir com otimismo uma entrega bem-sucedida de um pacote de "moedas", salvo prova em contrário “Centro”. No exemplo acima, se “Hub” não tivesse recebido um  AckSent

status de “Zona2” pelo bloco 350, teria definido o status automaticamente para  Tempo limite . Esta evidência de um tempo limite pode ser postado de volta em “Zone1”, e qualquer tokens pode ser retornado. Existem dois tipos de Merkle trees suportados no Ecossistema Tendermint/Cosmos: A Árvore Simples e o IAVL+ Árvore. A Árvore Simples é um Merkle tree para uma lista estática de elementos. Se o número de itens não é uma potência de dois, algumas folhas estarão em níveis diferentes. Simple Tree tenta manter ambos os lados da árvore mesma altura, mas a esquerda pode ser uma maior. Este Merkle tree é usado para Merkle-ize as transações de um bloco, e o nível superior elementos da raiz do estado do aplicativo.O objetivo da estrutura de dados IAVL+ é fornecer dados persistentes armazenamento para pares de valores-chave no estado do aplicativo, de modo que um A raiz determinística de Merkle hash pode ser calculada de forma eficiente. O árvore é balanceada usando uma variante do algoritmo AVL, e todos as operações são O (log (n)). Em uma árvore AVL, as alturas das duas subárvores filhas de qualquer nó diferem em no máximo um. Sempre que esta condição for violada por um atualização, a árvore é reequilibrada criando O(log(n)) novos nós que apontam para nós não modificados da árvore antiga. No AVL original algoritmo, os nós internos também podem conter pares de valores-chave. O AVL+ algoritmo (observe o sinal de mais) modifica o algoritmo AVL para manter todos valores em nós folha, enquanto usa apenas nós de ramificação para armazenar chaves. Isso simplifica o algoritmo enquanto mantém a trilha merkle hash curto. A árvore AVL + é análoga às tentativas de Patricia de Ethereum. Existem compensações. As chaves não precisam ser hashed antes da inserção em Árvores IAVL+, portanto, isso fornece iteração ordenada mais rápida na chave espaço que pode beneficiar algumas aplicações. A lógica é mais simples de implementar, exigindo apenas dois tipos de nós – nós internos e nós de folha. A prova de Merkle é em média mais curta, sendo uma                 *                 / \               /     \             /         \           /             \          *               *         / \             / \        /   \           /   \       /     \         /     \      *       *       *       h6     / \     / \     / \    h0  h1  h2  h3  h4  h5    Uma SimpleTree com 7 elementos

árvore binária balanceada. Por outro lado, a raiz Merkle de um A árvore IAVL+ depende da ordem das atualizações. Apoiaremos Merkle trees eficientes adicionais, como Patricia Trie de Ethereum quando a variante binária se torna disponível. Na implementação canônica, as transações são transmitidas para o Aplicativo hub Cosmos por meio da interface ABCI. O hub Cosmos aceitará uma série de transações primárias tipos, incluindo  SendTx ,  BondTx ,  UnbondTx ,  ReportHackTx ,  SlashTx ,  BurnAtomTx ,  ProposalCreateTx  e  ProposalVoteTx , que são bastante autoexplicativos e serão documentados em um revisão futura deste artigo. Aqui documentamos os dois principais tipos de transação para IBC:  IBCBlockCommitTx  e  IBCPacketTx . Uma transação  IBCBlockCommitTx  é composta por: ChainID (string): o ID de blockchain BlockHash ([]byte): O bloco-hash bytes, a raiz Merkle que inclui o aplicativo-hash BlockPartsHeader (PartSetHeader): o cabeçalho do conjunto parcial do bloco bytes, necessários apenas para verificar assinaturas de votos BlockHeight (int): a altura do commit BlockRound (int): a rodada do commit Commit ([]Vote): O >⅔ Tendermint Precommit vota que compreende um commit de bloco ValidatorsHash ([]byte): uma raiz Merkle-tree hash do novo validator conjunto

ValidatorsHashProof (SimpleProof): um SimpleTree Merkleproof para provar o ValidatorsHash em relação ao BlockHash AppHash ([]byte): uma raiz da árvore IAVLTree Merkle hash do estado do aplicativo AppHashProof (SimpleProof): uma prova SimpleTree Merkle para provando o AppHash contra o BlockHash Um  IBCPacket  é composto por: Cabeçalho (IBCPacketHeader): o cabeçalho do pacote Carga útil ([]byte): os bytes da carga útil do pacote. Opcional PayloadHash ([]byte) : o hash para os bytes do pacote. Opcional Um dos  Payload  ou  PayloadHash  deve estar presente. O hash de um  IBCPacket  é uma raiz simples de Merkle dos dois itens,  Header  e  Carga útil . Um  IBCPacket  sem a carga completa é chamado de pacote abreviado. Um  IBCPacketHeader  é composto por: SrcChainID (string): o ID blockchain de origem DstChainID (string): o ID de destino blockchain Número (int): um número exclusivo para todos os pacotes Status (enum): pode ser AckPending , AckSent , AckReceived , NoAck ou Tempo limite Tipo (string): os tipos dependem do aplicativo. Cosmos reserva o tipo de pacote "moeda" MaxHeight (int): se o status não for NoAckWanted ou AckReceived nesta altura, o status se torna Timeout . Opcional Uma transação  IBCPacketTx  é composta por:FromChainID (string): o ID do blockchain que é fornecendo este pacote; não necessariamente a fonte FromBlockHeight (int): a altura blockchain em que o O seguinte pacote está incluído (Merkle-izado) no bloco-hash de a cadeia de origem Pacote (IBCPacket): um pacote de dados, cujo status pode ser um de AckPending , AckSent , AckReceived , NoAck ou Timeout PacketProof (IAVLProof): uma prova IAVLTree Merkle para prova o hash do pacote em relação ao AppHash da cadeia de origem em dada altura A sequência para enviar um pacote de “Zona1” para “Zona2” através do "Hub" está representado na {Figura X}. Primeiro, um  IBCPacketTx  prova ao "Hub" que o pacote está incluído no estado do aplicativo de “Zona1”. Então, outro  IBCPacketTx  prova para “Zona2” que o o pacote está incluído no estado do aplicativo “Hub”. Durante este procedimento, os rendimentos  IBCPacket  são idênticos: o  SrcChainID  é sempre “Zone1” e o  DstChainID  é sempre "Zone2". O  PacketProof  deve ter o caminho à prova de Merkle correto, conforme segue: Quando “Zone1” deseja enviar um pacote para “Zone2” através de “Hub”, os dados de  IBCPacket  são idênticos, quer o pacote seja Merkleizado na “Zona1”, no “Hub” ou na “Zona2”. O único rendimento mutável é  Status para rastreamento de entrega. Agradecemos aos nossos amigos e colegas pela ajuda na conceituação, revisando e fornecendo suporte para nosso trabalho com Tendermint e Cosmos. IBC///

Zaki Manian do SkuChain forneceu muita ajuda na formatação e redação, especialmente na seção ABCI Jehan Tremback da Althea e Dustin Byington por ajudar com iterações iniciais Andrew Miller da Honey Badger pelo feedback sobre o consenso Greg Slepak pelo feedback sobre consenso e redação Também obrigado a Bill Gleim e Seunghwan Han por vários contribuições. Seu nome e organização aqui pela sua contribuição 1 Bitcoin: https://bitcoin.org/bitcoin.pdf 2ZeroCash: http://zerocash-project.org/paper 3 Ethereum: https://github.com/ethereum/wiki/wiki/WhitePaper 4 ODAO: https://download.slock.it/public/DAO/WhitePaper.pdf 5 Testemunha Segregada: https://github.com/bitcoin/bips/blob/master/bip0141.mediawiki 6 BitcoinNG: https://arxiv.org/pdf/1510.02037v2.pdf 7 Rede Lightning: https://lightning.network/lightningnetwork-paper-DRAFT-0.5.pdf 8Tendermint: https://github.com/tendermint/tendermint/wiki 9 Impossibilidade de FLP: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf 10Cortador: https://blog.ethereum.org/2014/01/15/slasher-apunitive-proof-of-stake-algorithm/ 11 PBFT: http://pmg.csail.mit.edu/papers/osdi99.pdf Compartilhamentos de 12 bits: https://bitshares.org/technology/delegatedproof-of-stake-consensus/

13 Stellar: https://www.stellar.org/papers/stellar-consensusprotocol.pdf 14 Registro intermediário: https://interledger.org/rfcs/0001-interledgerarchitecture/ 15 Cadeias laterais: https://blockstream.com/sidechains.pdf 16 Cáspero: https://blog.ethereum.org/2015/08/01/introducing-casperfriendly-ghost/ 17 ABCI: https://github.com/tendermint/abci 18 Ethereum Fragmentação: https://github.com/ethereum/EIPs/issues/53 19LibSwift: http://www.ds.ewi.tudelft.nl/yleadmin/pds/papers/Performa nceAnalysisOfLibswift.pdf 20 DLS: http://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf 21 Segurança de Thin Client: https://en.bitcoin.it/wiki/Thin_Client_Security 22 Ethereum Papel Malva 2.0: http://vitalik.ca/yles/mauve_paper.html https://www.docdroid.net/ec7xGzs/314477721-ethereumplatform-review-opportunities-and-challenges-for-privateand-consortium-blockchains.pdf.html

³ é

Consenso y detalles técnicos

Un protocolo de consenso bien diseñado debería proporcionar algunas Garantías en caso de que se supere la capacidad de tolerancia. y el consenso falla. Esto es especialmente necesario en el ámbito económico. sistemas, donde el comportamiento bizantino puede tener importantes consecuencias financieras. recompensa. La garantía más importante de este tipo es una forma de rendición de cuentas, en la que los procesos que provocaron que se alcanzara el consenso fallar (es decir, provocó que los clientes del protocolo aceptaran valores diferentes; tenedor) puede ser identificado y castigado de acuerdo con las reglas de la protocolo o, posiblemente, el sistema jurídico. Cuando el sistema legal es poco confiable o excesivamente costoso invocar, los validators pueden ser obligados a realizar depósitos de seguridad para poder participar, y aquellos Los depósitos pueden ser revocados o recortados cuando se detecta un comportamiento malicioso. detectado [10]. Tenga en cuenta que esto es diferente a Bitcoin, donde la bifurcación es algo habitual debido a la asincronía de la red y la naturaleza probabilística de ynding colisiones parciales hash. Dado que en muchos casos se produce una bifurcación maliciosa indistinguible de una bifurcación debido a la asincronía, Bitcoin no puede implementar de manera confiable la responsabilidad fork, aparte de la implícita Costo de oportunidad pagado por los mineros por extraer un bloque huérfano. A las etapas de votación las llamamos PreVote y PreCommit. Un voto puede ser a favor un bloque en particular o para Nil. Llamamos a una colección de >⅔ PreVotes para un solo bloque en la misma ronda, una polca y una colección de >⅔ PreCommits para un solo bloque en la misma ronda un Commit. Si >⅔ PreCommit for Nil en la misma ronda, pasan a la siguiente redondo. Tenga en cuenta que el determinismo estricto en el protocolo incurre en una débil Se debe detectar el supuesto de sincronía como líderes defectuosos y

saltado. Por lo tanto, validators esperan un tiempo, TimeoutPropose, antes de que Prevote Nil, y el valor de TimeoutPropose aumenta con cada ronda. Progresión a través de el resto de una ronda es completamente asincrónica, en el sentido de que el progreso es sólo realizado una vez que un validator escucha desde >⅔ de la red. En la práctica, Se necesitaría un adversario extremadamente fuerte para frustrar indefinidamente el supuesto de sincronía débil (lo que hace que el consenso no logre alguna vez comete un bloqueo), y hacerlo puede ser aún más difícil mediante el uso de valores aleatorios de TimeoutPropose en cada validator. Un conjunto adicional de restricciones, o reglas de bloqueo, garantiza que el La red eventualmente comprometerá solo un bloque en cada altura. Cualquiera Intento malicioso de provocar que se cometa más de un bloque. a una altura determinada se puede identificar. Primero, un PreCommit para un bloque. debe venir con justificación, en forma de polca para ese bloque. Si validator ya ha confirmado previamente un bloque en la ronda R_1, dicen que están encerrados en ese bloque, y la Polka solía justificar el El nuevo PreCommit en la ronda R_2 debe realizarse en una ronda R_polka donde R_1 < R_polka <= R_2. En segundo lugar, validators deben proponer y/o PreVote el bloque en el que están bloqueados. Juntos, estos condiciones garantizan que un validator no realice una confirmación previa sin evidencia suficiente como justificación, y que validators que tienen PreCommit ya no puede contribuir con evidencia al PreCommit algo más. Esto garantiza tanto la seguridad como la vitalidad del algoritmo de consenso. Los detalles completos del protocolo se describen aquí. La necesidad de sincronizar todos los encabezados de los bloques se elimina en TendermintPoS ya que la existencia de una cadena alternativa (una bifurcación) significa ≥⅓ de la participación en condiciones de servidumbre puede reducirse drásticamente. Por supuesto, dado que cortar requiere que alguien comparta evidencia de una bifurcación, los clientes ligeros deben almacenar cualquier bloque-hash confirma que ve. Además, los clientes ligerospodría permanecer sincronizado periódicamente con los cambios en el conjunto validator, en para evitar ataques de largo alcance (pero otras soluciones son posible). En espíritu similar a Ethereum, Tendermint permite que las aplicaciones incrustar una raíz global de Merkle hash en cada bloque, lo que permite consultas de estado verificables para cosas como saldos de cuentas, el valor almacenado en un contrato, o la existencia de una transacción no gastada salida, dependiendo de la naturaleza de la aplicación. Suponiendo un conjunto de redes de difusión suficientemente resiliente y un conjunto estático validator, cualquier bifurcación en el blockchain puede ser detectado y los depósitos de los validators infractores cortados. esto La innovación, sugerida por primera vez por Vitalik Buterin a principios de 2014, resuelve el problema de nada en juego de otros proof-of-stake criptomonedas (ver Trabajo Relacionado). Sin embargo, dado que validator establece debe poder cambiar, durante un largo período de tiempo, el original validators pueden desvincularse y, por lo tanto, serían libres de crear una nueva cadena a partir del bloque de génesis, sin incurrir en ningún coste ya que ya no tienen depósitos bloqueados. Este ataque llegó a ser conocido como ataque de largo alcance (LRA), en contraste con un ataque de corto alcance. Range Attack, donde los validators que actualmente están vinculados causan un fork y, por lo tanto, son punibles (suponiendo que un BFT responsable de fork algoritmo como el consenso de Tendermint). Los ataques de largo alcance son A menudo se piensa que es un golpe crítico para proof-of-stake. Afortunadamente, el LRA se puede mitigar de la siguiente manera. Primero, por un validator para desvincularse (recuperando así su depósito de garantía) y ya no gana honorarios por participar en el consenso), el El depósito debe hacerse intransferible por un período de tiempo. conocido como “período de desvinculación”, que puede ser del orden de semanas o meses. En segundo lugar, para que un cliente ligero esté seguro, el primer vez que se conecta a la red debe verificar un bloque reciente-hash contra una fuente confiable, o preferiblemente múltiples fuentes. esto

Esta condición a veces se denomina “subjetividad débil”. Finalmente, Para permanecer seguro, debe sincronizarse con la última versión validator configurada en menos con tanta frecuencia como la duración del período de desvinculación. esto garantiza que el cliente ligero conozca los cambios en validator establecido antes de que un validator tenga su capital no vinculado y, por lo tanto, ya no en juego, lo que le permitiría engañar al cliente realizando un ataque de largo alcance creando nuevos bloques comenzando en un altura donde fue adherido (suponiendo que tenga control de suficiente muchas de las primeras claves privadas). Tenga en cuenta que superar al LRA de esta manera requiere una revisión de el modelo de seguridad original de proof-of-work. En PoW, es Se supone que un cliente ligero puede sincronizarse con la altura actual desde el bloque de génesis confiable en cualquier momento simplemente procesando la prueba de trabajo en cada encabezado de bloque. Sin embargo, para superar al LRA debemos requieren que un cliente ligero se conecte con cierta regularidad para realizar un seguimiento de los cambios en el conjunto validator y que la primera vez que se conectan, deben tener especial cuidado al autenticarse lo que escuchan de la red contra fuentes confiables. de Por supuesto, este último requisito es similar al de Bitcoin, donde El protocolo y el software también deben obtenerse de un proveedor de confianza. fuente. El método anterior para prevenir LRA es muy adecuado para validators y nodos completos de un blockchain impulsado por Tendermint porque estos Los nodos están destinados a permanecer conectados a la red. el El método también es adecuado para clientes ligeros de los que se puede esperar que sincronizar con la red con frecuencia. Sin embargo, para clientes ligeros que No se espera que tengan acceso frecuente a Internet o a la red. blockchain red, se puede utilizar otra solución para superar el ERS. Los titulares que no sean validator token pueden publicar sus token como garantía con un período de desvinculación muy largo (por ejemplo, mucho más largo que el período de desvinculación para validators) y atender a clientes ligeros con un método secundario para dar fe de la validez de la información actual y pasado bloque-hashes. Si bien estos tokens no cuentan para el seguridad del consenso de blockchain, no obstante puedenProporcionar fuertes garantías para clientes ligeros. Si bloque histórico-hash Las consultas fueron admitidas en Ethereum, cualquiera podría vincular sus tokens en un smart contract especialmente diseñado y proporcionar servicios de certificación de pago, creando efectivamente un mercado para la seguridad LRA de clientes ligeros. Debido a la definición de compromiso en bloque, cualquier ≥⅓ coalición de El poder de voto puede detener el blockchain si sale de la revista o no. difundir sus votos. Una coalición así también puede censurar transacciones particulares rechazando bloques que incluyen estos transacciones, aunque esto resultaría en una proporción significativa de propuestas en bloque que serán rechazadas, lo que ralentizaría el ritmo de confirmaciones de bloque del blockchain, reduciendo su utilidad y valor. La maliciosa coalición también podría difundir los votos a cuentagotas, de modo que en cuanto a moler el bloque blockchain se compromete a detenerse casi por completo o participar en cualquier combinación de estos ataques. Finalmente, puede provocar la blockchain a bifurcar, mediante doble firma o violando el bloqueo reglas. Si también estuviera involucrado un adversario globalmente activo, podría dividirse la red de tal manera que pueda parecer que el error El subconjunto de validators fue responsable de la desaceleración. esto no es solo una limitación de Tendermint, sino más bien una limitación de todos protocolos de consenso cuya red está potencialmente controlada por un adversario activo. Para este tipo de ataques, un subconjunto de validators debería coordinar a través de medios externos para firmar una propuesta de reorganización que elige una bifurcación (y cualquier evidencia de la misma) y el subconjunto inicial de validators con sus firmas. Los validadores que firman dicha propuesta de reorganización renuncian a su garantía en todas las demás bifurcaciones. Los clientes deben verificar las firmas en la propuesta de reorganización, verificar cualquier evidencia, y emitir un juicio o solicitar una decisión al usuario final. Para Por ejemplo, una aplicación de billetera telefónica puede solicitar al usuario una información de seguridad.

advertencia, mientras que un refrigerador puede aceptar cualquier propuesta de reorganización firmado por +½ de los validators originales por poder de voto. No puede surgir ningún algoritmo bizantino tolerante a fallas no síncrono al consenso cuando ≥⅓ del poder de voto es deshonesto, pero un tenedor supone que ≥⅓ del poder de voto ya ha sido deshonesto al doble firma o cambio de cerradura sin justificación. Entonces, firmando La propuesta de reorganización es un problema de coordinación que no puede solucionarse. resuelto por cualquier protocolo no síncrono (es decir, automáticamente, y sin hacer suposiciones sobre la confiabilidad de la red subyacente). Por ahora, dejamos el problema de la coordinación de propuestas de reorganización a la coordinación humana a través del consenso social. en los medios de internet. Los validadores deben tener cuidado de garantizar que haya No quedan particiones de red restantes antes de firmar una propuesta de reorganización, para evitar situaciones en las que se firmen dos propuestas de reorganización contradictorias. Suponiendo que el medio y protocolo de coordinación externa sea robusto, se deduce que las bifurcaciones son menos preocupantes que la censura ataques. Además de las bifurcaciones y la censura, que requieren ≥⅓ bizantinos poder de voto, una coalición de >⅔ de poder de voto puede comprometerse Estado arbitrario e inválido. Esto es característico de cualquier (BFT) sistema de consenso. A diferencia de la doble firma, que crea bifurcaciones con evidencia fácilmente verificable, detectando la comisión de un el estado no válido requiere pares no validadores para verificar bloques completos, lo que implica que guardan una copia local del estado y ejecutan cada transacción, calculando la raíz del estado de forma independiente para ellos mismos. Una vez detectado, la única manera de manejar tal falla es a través del consenso social. Por ejemplo, en situaciones donde Bitcoin ha fallado, ya sea que se haya bifurcado debido a errores de software (como en marzo 2013), o cometer un estado inválido debido al comportamiento bizantino de mineros (como en julio de 2015), la comunidad bien conectada de empresas, desarrolladores, mineros y otras organizaciones estableció un consenso social sobre qué acciones manuales eranrequerido por los participantes para sanar la red. Además, desde Se puede esperar que validators de un Tendermint blockchain sean identificable, el compromiso de un estado inválido puede incluso ser punible por la ley o alguna jurisprudencia externa, si así se desea. ABCI consta de 3 tipos de mensajes principales que se entregan desde el núcleo de la aplicación. La aplicación responde con mensajes de respuesta correspondientes. El mensaje  AppendTx  es el caballo de batalla de la aplicación. cada uno La transacción en el blockchain se entrega con este mensaje. el La aplicación necesita validar cada transacción recibida con el Mensaje AppendTx contra el estado actual, protocolo de aplicación, y las credenciales criptográficas de la transacción. Un validado La transacción luego necesita actualizar el estado de la aplicación, mediante vinculando un valor en un almacén de valores clave o actualizando el UTXO base de datos. El mensaje  CheckTx  es similar a AppendTx, pero es solo para validar transacciones. Primeros controles de mempool de Tendermint Core la validez de una transacción con CheckTx, y solo los relés son válidos transacciones con sus pares. Las aplicaciones pueden comprobar un incremento nonce en la transacción y devolver un error en CheckTx si el nonce es viejo. El mensaje  Commit  se utiliza para calcular una criptografía compromiso con el estado actual de la aplicación, que se colocará en el encabezado del siguiente bloque. Esto tiene algunas propiedades útiles. Las inconsistencias en la actualización de ese estado ahora aparecerán como blockchain bifurcaciones que captan toda una clase de programación errores. Esto también simplifica el desarrollo de sistemas ligeros y seguros. clientes, ya que las pruebas de Merkle-hash se pueden verificar cotejándolas el bloque-hash, y el bloque-hash está firmado por un quórum de validators (por poder de voto).

Los mensajes ABCI adicionales permiten que la aplicación realice un seguimiento de y cambiar el conjunto validator, y para que la aplicación reciba el información del bloque, como la altura y los votos de confirmación. ABCI solicitudes/respuestas son mensajes simples de Protobuf. comprobar fuera del esquema yle. Argumentos: Datos ([]byte): los bytes de la transacción de solicitud. Devoluciones: Código (uint32): código de respuesta Datos ([]byte): bytes de resultado, si los hay Registro (cadena): mensaje de error o depuración Uso:

Adjunte y ejecute una transacción. Si la transacción es válida, devuelve CodeType.OK Argumentos: Datos ([]byte): los bytes de la transacción de solicitud. Devoluciones: Código (uint32): código de respuesta Datos ([]byte): bytes de resultado, si los hay Registro (cadena): mensaje de error o depuración Uso:

Validar una transacción. Este mensaje no debe mutar el estado. Las transacciones se ejecutan por primera vez a través de CheckTx antes transmitir a pares en la capa de mempool. puedes hacer CheckTx semi-estado y borre el estado al confirmar o BeginBlock, para permitir secuencias dependientes de transacciones en el mismo bloque.

Devoluciones: Datos ([]byte): La raíz de Merkle hash Registro (cadena): mensaje de error o depuración Uso:

Devuelve una raíz de Merkle hash del estado de la aplicación. Argumentos: Datos ([]byte): los bytes de solicitud de consulta. Devoluciones: Código (uint32): código de respuesta Datos ([]byte): los bytes de respuesta a la consulta. Registro (cadena): mensaje de error o depuración Uso:

Vacíe la cola de respuestas. Aplicaciones que implementan tipos. La aplicación no necesita implementar este mensaje: es manejado por el proyecto. Devoluciones: Datos ([]byte): los bytes de información Uso:

Devuelve información sobre el estado de la aplicación. Solicitud específico. Argumentos: Clave (cadena): clave para configurar

Valor (cadena): valor que se establecerá para la clave Devoluciones: Registro (cadena): mensaje de error o depuración Uso:

Establecer opciones de aplicación. P.ej. Clave = “modo”, Valor = “mempool” para una conexión de mempool, o Clave=“modo”, Valor=“consenso” para una conexión de consenso. Otras opciones son específicas de la aplicación. Argumentos: Validadores ([]Validador): Génesis inicial-validators Uso:

Llamado una vez sobre la génesis Argumentos: Altura (uint64): la altura del bloque que comienza Uso:

Señala el comienzo de un nuevo bloque. Llamado antes de cualquier AnexarTxs. Argumentos: Altura (uint64): la altura del bloque que finalizó Devoluciones: Validadores ([]Validador): validators modificados con nuevos poderes de voto (0 para eliminar) Uso:

Señala el final de un bloque. Después de todo, se llama antes de cada compromiso. transacciones Consulte el repositorio ABCI para obtener más detalles.Hay varias razones por las que un remitente puede querer el acuse de recibo de la entrega de un paquete por parte de la cadena receptora. Por ejemplo, es posible que el remitente no conozca el estado del cadena de destino, si se espera que esté defectuosa. O bien, el remitente puede desea imponer un tiempo de espera al paquete (con el parámetro  MaxHeight  rendimiento del paquete), mientras que cualquier cadena de destino puede sufrir un ataque de denegación de servicio con un aumento repentino en el número de mensajes entrantes. paquetes. En estos casos, el remitente puede exigir acuse de entrega configurando el estado del paquete inicial en  AckPending . Entonces, es el responsabilidad de la cadena receptora de confirmar la entrega incluyendo un abreviado IBCPacket  en la aplicación Merkle hash. Primero, se publican  IBCBlockCommit  y  IBCPacketTx  en "Hub". que prueba la existencia de un IBCPaquete  en “Zona1”. di eso  IBCPacketTx  tiene el siguiente valor: DeChainID: "Zona1" FromBlockHeight: 100 (digamos) Paquete: un IBCPaquete:

Encabezado: un IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número: 200 (digamos) Estado: Confirmación pendiente Tipo: “moneda” MaxHeight: 350 (digamos que "Hub" está actualmente a una altura de 300) Carga útil: A continuación, se publican  IBCBlockCommit  y  IBCPacketTx  en "Zone2". que prueba la existencia de un IBCPaquete  en "Hub". di eso  IBCPacketTx  tiene el siguiente valor: FromChainID: "Centro" DesdeBlockHeight: 300 Paquete: un IBCPaquete: Encabezado: un IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número : 200 Estado: Confirmación pendiente Tipo: “moneda” Altura máxima: 350 Carga útil: A continuación, “Zone2” debe incluir en su aplicación-hash un paquete abreviado que muestra el nuevo estado de  AckSent . Un IBCBlockCommit  y  IBCPacketTx  se publican nuevamente en "Hub" que demuestra la existencia de un  IBCPaquete  abreviado en "Zone2". Di que IBCPacketTx  tiene el siguiente valor: DeChainID: "Zona2"

FromBlockHeight: 400 (digamos) Paquete: un IBCPaquete: Encabezado: un IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número : 200 Estado: Acuse de recibo Tipo: “moneda” Altura máxima: 350 PayloadHash: Finalmente, “Hub” debe actualizar el estado del paquete desde  Acuse de recibo pendiente a Acuse de recibo. Evidencias de este nuevo estatus analizado debería volver a "Zona2". Digamos que IBCPacketTx  tiene lo siguiente valor: FromChainID: "Centro" DesdeBlockHeight: 301 Paquete: un IBCPaquete: Encabezado: un IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número : 200 Estado: Acuse de recibo Tipo: “moneda” Altura máxima: 350 PayloadHash: Mientras tanto, “Zone1” puede asumir con optimismo una entrega exitosa de un paquete de "monedas" a menos que se demuestre lo contrario en “Centro”. En el ejemplo anterior, si "Hub" no hubiera recibido un  AckSent

estado de “Zona2” por el bloque 350, habría establecido el estado automáticamente al  Tiempo de espera . Esta evidencia de un tiempo de espera puede obtener se vuelve a publicar en "Zona1" y se puede devolver cualquier token. Hay dos tipos de Merkle trees admitidos en el Ecosistema Tendermint/Cosmos: El árbol simple y el IAVL+ Árbol. El árbol simple es un Merkle tree para una lista estática de elementos. si el número de elementos no es una potencia de dos, algunas hojas estarán en diferentes niveles. Simple Tree intenta mantener ambos lados del árbol misma altura, pero la izquierda puede ser una mayor. Este Merkle tree es utilizado para Merkle-izar las transacciones de un bloque, y el nivel superior elementos de la raíz del estado de la aplicación.El propósito de la estructura de datos IAVL+ es proporcionar información persistente almacenamiento para pares clave-valor en el estado de la aplicación, de modo que La raíz determinista de Merkle hash se puede calcular de manera eficiente. el El árbol se equilibra utilizando una variante del algoritmo AVL, y todos las operaciones son O (log (n)). En un árbol AVL, las alturas de los dos subárboles secundarios de cualquier nodo difieren como máximo en uno. Siempre que se viole esta condición por una actualización, el árbol se reequilibra creando O(log(n)) nuevos nodos que señalar los nodos no modificados del árbol viejo. En el AVL original algoritmo, los nodos internos también pueden contener pares clave-valor. El AVL+ algoritmo (tenga en cuenta el signo más) modifica el algoritmo AVL para mantener todos valores en los nodos hoja, mientras que solo se utilizan nodos de rama para almacenar claves. Esto simplifica el algoritmo manteniendo el rastro merkle hash corto. El árbol AVL+ es análogo a los intentos de Patricia de Ethereum. hay compensaciones. No es necesario hashed las claves antes de insertarlas en Árboles IAVL+, por lo que esto proporciona una iteración ordenada más rápida en la clave espacio que puede beneficiar algunas aplicaciones. La lógica es más sencilla implementar, requiriendo sólo dos tipos de nodos: nodos internos y nodos de las hojas. La prueba de Merkle es en promedio más corta, siendo una                 *                 / \               /     \             /         \           /             \          *               *         / \             / \        /   \           /   \       /     \         /     \      *       *       *       h6     / \     / \     / \    h0  h1  h2  h3  h4  h5    Un SimpleTree con 7 elementos

árbol binario equilibrado. Por otro lado, la raíz Merkle de un El árbol IAVL+ depende del orden de las actualizaciones. Admitiremos Merkle trees eficientes adicionales, como Patricia Trie de Ethereum cuando la variante binaria se convierte en disponible. En la implementación canónica, las transacciones se transmiten al Cosmos aplicación central a través de la interfaz ABCI. El Cosmos Hub aceptará una cantidad de transacciones principales tipos, incluidos  SendTx ,  BondTx ,  UnbondTx ,  ReportHackTx ,  SlashTx ,  BurnAtomTx ,  ProposalCreateTx  y  ProposalVoteTx , que se explican por sí solos y se documentarán en un revisión futura de este documento. Aquí documentamos los dos principales tipos de transacciones para IBC:  IBCBlockCommitTx  y  IBCPacketTx . Una transacción  IBCBlockCommitTx  se compone de: ChainID (cadena): el ID del blockchain BlockHash ([]byte): el bloque-hash bytes, la raíz de Merkle que incluye la aplicación-hash BlockPartsHeader (PartSetHeader): el encabezado del conjunto de piezas del bloque bytes, sólo necesarios para verificar las firmas de los votos BlockHeight (int): la altura de la confirmación BlockRound (int): la ronda de confirmación Comprometerse ([]Vote): El >⅔ Precommit de Tendermint vota que Comprende un compromiso de bloque. ValidatorsHash ([]byte): una raíz del árbol Merkle hash del nuevo validator conjunto

ValidatorsHashProof (SimpleProof): un SimpleTree Merkleproof para probar ValidatorsHash contra BlockHash AppHash ([]byte): una raíz del árbol IAVLTree Merkle hash del estado de la aplicación AppHashProof (SimpleProof): un SimpleTree Merkle a prueba de probando AppHash contra BlockHash Un  IBCPaquete  se compone de: Encabezado (IBCPacketHeader): el encabezado del paquete. Carga útil ([]byte): los bytes de la carga útil del paquete. Opcional PayloadHash ([]byte): el hash para los bytes del paquete. Opcional Debe estar presente uno de los tipos  Payload  o  PayloadHash . El hash de un IBCPaquete  es una raíz Merkle simple de los dos elementos,  Encabezado  y  carga útil . Un  IBCPacket  sin la carga útil completa se denomina paquete abreviado. Un  IBCPacketHeader  se compone de: SrcChainID (cadena): la fuente blockchain ID DstChainID (cadena): el ID de destino blockchain Número (int): un número único para todos los paquetes Estado (enum): puede ser uno de AckPending, AckSent, Confirmación recibida, No confirmación o tiempo de espera Tipo (cadena): los tipos dependen de la aplicación. Cosmos reserva el tipo de paquete "moneda" MaxHeight (int): si el estado no es NoAckWanted o AckReceived a esta altura, el estado pasa a ser Timeout. Opcional Una transacción  IBCPacketTx  se compone de:FromChainID (cadena): el ID del blockchain que es proporcionar este paquete; no necesariamente la fuente FromBlockHeight (int): la altura blockchain en la que se El siguiente paquete está incluido (Merkle-izado) en el bloque-hash de la cadena de origen Paquete (IBCPaquete): un paquete de datos, cuyo estado puede ser uno de AckPending, AckSent, AckReceived, NoAck o Timeout PacketProof (IAVLProof): un IAVLTree Merkle a prueba de pruebas el hash del paquete contra el AppHash de la cadena de origen en altura dada La secuencia para enviar un paquete de “Zona1” a “Zona2” a través del "Hub" se muestra en la {Figura X}. Primero, un  IBCPacketTx  demuestra al "Hub" que el paquete está incluido en el estado de la aplicación de “Zona1”. Luego, otro IBCPacketTx  le demuestra a "Zone2" que el El paquete está incluido en el estado de la aplicación de "Hub". Durante este procedimiento, los rendimientos del  IBCPacket  son idénticos: el  SrcChainID  es siempre "Zona1" y  DstChainID  siempre es "Zona2". El  PacketProof  debe tener la ruta correcta a prueba de Merkle, como sigue: Cuando “Zone1” quiere enviar un paquete a “Zone2” a través de “Hub”, los datos del IBCPacket son idénticos ya sea que el paquete esté Merkleizado en "Zone1", el "Hub" o "Zone2". El único yeld mutable es  Estado para el seguimiento de la entrega. Agradecemos a nuestros amigos y pares por su ayuda en la conceptualización, Revisar y brindar apoyo para nuestro trabajo con Tendermint. y Cosmos. IBC///

Zaki Manian de SkuChain brindó mucha ayuda para formatear y redacción, especialmente en la sección ABCI Jehan Tremback de Althea y Dustin Byington por ayudar con iteraciones iniciales Andrew Miller de Honey Badger por sus comentarios sobre el consenso Greg Slepak por sus comentarios sobre el consenso y la redacción También gracias a Bill Gleim y Seunghwan Han por varios contribuciones. Su nombre y organización aquí por su contribución. 1 Bitcoin: https://bitcoin.org/bitcoin.pdf 2CeroCash: http://zerocash-project.org/paper 3 Ethereum: https://github.com/ethereum/wiki/wiki/WhitePaper 4 ElDAO: https://download.slock.it/public/DAO/WhitePaper.pdf 5 Testigo Segregado: https://github.com/bitcoin/bips/blob/master/bip0141.mediawiki 6 BitcoinNG: https://arxiv.org/pdf/1510.02037v2.pdf 7 Red Lightning: https://lightning.network/lightningnetwork-paper-DRAFT-0.5.pdf 8 menta tierna: https://github.com/tendermint/tendermint/wiki 9 FLP Imposibilidad: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf 10 Asesino: https://blog.ethereum.org/2014/01/15/slasher-apunitive-proof-of-stake-algorithm/ 11 PBFT: http://pmg.csail.mit.edu/papers/osdi99.pdf 12 bits compartidos: https://bitshares.org/technology/delegatedproof-of-stake-consensus/

13 Stellar: https://www.stellar.org/papers/stellar-consensusprotocol.pdf 14 Libro interior: https://interledger.org/rfcs/0001-interledgerarchitecture/ 15 cadenas laterales: https://blockstream.com/sidechains.pdf 16 Casper: https://blog.ethereum.org/2015/08/01/introducing-casperfriendly-ghost/ 17 ABCI: https://github.com/tendermint/abci 18 Ethereum Fragmentación: https://github.com/ethereum/EIPs/issues/53 19LibSwift: http://www.ds.ewi.tudelft.nl/yleadmin/pds/papers/Performa nceAnalysisOfLibswift.pdf 20 DLS: http://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf 21 Seguridad del cliente ligero: https://en.bitcoin.it/wiki/Thin_Client_Security 22 Ethereum 2.0 Papel Malva: http://vitalik.ca/yles/mauve_paper.html https://www.docdroid.net/ec7xGzs/314477721-ethereumplatform-review-opportunities-and-challenges-for-privateand-consortium-blockchains.pdf.html

½ è