Cosmos: сеть распределенных реестров
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.

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.
Введение
Совокупный успех экосистемы с открытым исходным кодом, децентрализованный обмен данными и публичные криптовалюты вдохновило на понимание того, что децентрализованные интернет-протоколы могут быть использованы для радикального улучшения социально-экономической инфраструктуры. Мы видели специализированные приложения blockchain, такие как Bitcoin PH_0000 ( криптовалюта), Zerocash [2] (криптовалюта для конфиденциальности) и обобщенные платформы smart contract, такие как Ethereum [3], с бесчисленное количество распределенных приложений для Etherium Virtual Машина (PH_0007), такая как Augur (рынок прогнозов) и TheDAO. [4] (инвестиционный клуб). Однако на сегодняшний день эти blockchain пострадали от ряда недостатков, включая их общую энергетическую неэффективность, плохое или ограниченная производительность и незрелые механизмы управления. Предложения по масштабированию пропускной способности транзакций Bitcoin, например: Segregated-Witness [5] и BitcoinNG [6] — вертикальное масштабирование. решения, которые остаются ограниченными емкостью одного физического машина, чтобы обеспечить свойство полной проверяемости. Lightning Network [7] может помочь масштабировать транзакцию Bitcoin.
объем, полностью исключив некоторые транзакции из реестра, и хорошо подходит для микроплатежей и обеспечения конфиденциальности платежные рельсы, но могут не подойти для более универсальных потребности в масштабировании. Идеальным решением является решение, позволяющее нескольким параллельным blockchain взаимодействовать, сохраняя при этом свои свойства безопасности. Это имеет оказалось трудным, если не невозможным, с proof-of-work. Объединено например, майнинг позволяет выполнить работу по защите родительского цепочку для повторного использования в дочерней цепочке, но транзакции все равно должны быть проверяется по порядку каждым узлом и слитным майнингом blockchain уязвим для атаки, если большая часть hashing мощности на родитель не занимается активным слитным майнингом дочернего процесса. Академический обзор альтернативных сетевых архитектур blockchain предусмотрены для дополнительный контекст, и мы предоставляем краткое изложение других предложений и их недостатки в смежных работах. Здесь мы представляем Cosmos, новую сетевую архитектуру blockchain. который решает все эти проблемы. Cosmos — это сеть из многих независимые blockchain, называемые зонами. Зоны питаются от Tendermint Core [8], обеспечивающий высокую производительность, согласованный, безопасный механизм консенсуса, подобный PBFT, в котором строгая ответственность за действия гарантирует сдерживание поведения злоумышленников. актеры. Алгоритм консенсуса BFT Tendermint Core хорошо подходит для масштабирования общедоступных proof-of-stake blockchains. Первая зона на Cosmos называется Cosmos Hub. Cosmos Hub — это мультиактивная криптовалюта proof-of-stake с простой механизм управления, который позволяет сети адаптироваться и обновление. Кроме того, концентратор Cosmos можно расширить за счет подключение других зон. Хаб и зоны сети Cosmos обмениваются данными с друг с другом через протокол связи между blockchain (IBC), своего рода виртуальный UDP или TCP для blockchains. Токены могут быть безопасно и быстро переносить из одной зоны в другуюбез необходимости обмена ликвидности между зонами. Вместо этого, все межзональные передачи token проходят через концентратор Cosmos, который отслеживает общее количество token, находящихся в каждой зоне. концентратор изолирует каждую зону от сбоя других зон. Потому что любой может подключить новую зону к хабу Cosmos, зоны позволяют для будущей совместимости с новыми blockchain инновациями. В этом разделе мы описываем консенсусный протокол Tendermint. и интерфейс, используемый для создания приложений с его помощью. Для более подробности смотрите в приложении. В классических византийских отказоустойчивых алгоритмах (BFT) каждый узел имеет одинаковый вес. В Tendermint узлы имеют неотрицательное значение. количество голосов и узлы, которые имеют положительное голосование мощности называются validators. Валидаторы участвуют в протокол консенсуса путем трансляции криптографических подписей или голосов, чтобы согласовать следующий блок. Право голоса валидаторов определяется на этапе генезиса или детерминировано изменено blockchain, в зависимости от приложение. Например, в приложении proof-of-stake, таком как концентратор Cosmos, право голоса может определяться сумма staking tokens, переданная в качестве залога. ПРИМЕЧАНИЕ. Такие дроби, как ⅔ и ⅓, относятся к долям общего числа голосов. мощность, а не общее количество validator, если только не все validator. иметь равный вес. >⅔ означает «более ⅔», ≥⅓ означает «по крайней мере ⅓». Tendermint — это частично синхронный консенсусный протокол BFT. получено на основе алгоритма консенсуса DLS [20]. Тендерминт - это
отличается своей простотой, производительностью и ответственностью за форк. Протокол требует yxed известного набора validators, где каждый validator идентифицируется по открытому ключу. Валидаторы пытаются прийти к консенсусу по одному блоку за раз, где блок представляет собой список сделок. Голосование за консенсус по блоку продолжается в раунды. В каждом раунде есть лидер раунда или предлагающий, который предлагает блок. Затем validator поэтапно голосуют за то, будет ли принять предложенный блок или перейти к следующему раунду. предлагающий раунд выбирается детерминированно из заказанных список validators, пропорционально их голосу. Полная информация о протоколе описана здесь. Безопасность Tendermint основана на использовании оптимального византийского отказоустойчивость посредством голосования сверхбольшинством (>⅔) и блокировки механизм. Вместе они гарантируют, что: ≥⅓ голосов должно быть византийским, чтобы вызвать нарушение безопасность, где зафиксировано более двух значений. если какой-либо группе validator когда-либо удастся нарушить безопасность или даже попытки сделать это, они могут быть идентифицированы протоколом. Это включает в себя как голосование за составные блоки, так и трансляцию необоснованные голоса. Несмотря на свои серьезные гарантии, Tendermint обеспечивает исключительные производительность. В тестах 64 узла, распределенных по 7 центры обработки данных на 5 континентах, на обычных облачных экземплярах, Консенсус Tendermint может обрабатывать тысячи транзакций за во-вторых, с задержкой фиксации порядка одной-двух секунд. Примечательно, что производительность более тысячи транзакций в второе сохраняется даже в суровых противоборствующих условиях, при validator происходит сбой или трансляция злонамеренно созданных голосов. См. Подробности приведены на рисунке ниже.

Основное преимущество алгоритма консенсуса Tendermint — простота. легкая безопасность клиентов, что делает его идеальным кандидатом для мобильных и Варианты использования Интернета вещей. Хотя легкий клиент Bitcoin должен синхронизироваться цепочки заголовков блоков и найти тот, у которого больше всего доказательств работы, легким клиентам Tendermint нужно только идти в ногу с изменениями в набор validator, а затем проверьте >⅔ PreCommits в последний блок для определения последнего состояния. Краткие легкие доказательства клиента также позволяют использовать inter-blockchain общение. В Tendermint предусмотрены защитные меры для предотвращения определенных заметные атаки, такие как двойные траты на большие расстояния по принципу «ничего не поставлено на карту» и цензура. Более подробно они обсуждаются в приложении.Алгоритм консенсуса Tendermint реализован в программа под названием Tendermint Core. Tendermint Core — это независимый от приложения «механизм консенсуса», который может превратить любую детерминированное приложение «черный ящик» в распределенно реплицируемую blockchain. Tendermint Core подключается к blockchain приложениям через интерфейс блокчейна приложения (ABCI) [17]. Таким образом, ABCI позволяет программировать blockchain приложений в любом язык, а не только язык программирования, на котором существует консенсус engine. Кроме того, ABCI позволяет легко замените уровень консенсуса любого существующего стека blockchain. Проведем аналогию с известной криптовалютой Bitcoin. Bitcoin — это криптовалюта blockchain, в которой каждый узел поддерживает полностью проверенная база данных вывода неизрасходованных транзакций (UTXO). Если хотелось создать систему, подобную Bitcoin, поверх ABCI, Tendermint Core будет отвечать за Совместное использование блоков и транзакций между узлами Установление канонического/неизменяемого порядка транзакций ( blockchain) Между тем, приложение ABCI будет отвечать за Ведение базы данных UTXO Проверка криптографических подписей транзакций Предотвращение траты транзакций на несуществующие средства Разрешение клиентам запрашивать базу данных UTXO Tendermint может разложить дизайн blockchain по предлагая очень простой API между процессом приложения и процесс консенсуса.
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”,

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 Архитектура
Cosmos — это сеть независимых параллельных blockchain, которые каждый из них основан на классических алгоритмах консенсуса BFT, таких как Тендерминт 1. Первым blockchain в этой сети будет концентратор Cosmos. Cosmos Хаб подключается ко многим другим blockchain (или зонам) через новый протокол связи между blockchain. Концентратор Cosmos отслеживает многочисленные типы token и ведет учет общего количества количество tokens в каждой подключенной зоне. Токены могут быть безопасно и быстро переносить из одной зоны в другую без необходимости обмена жидкостью между зонами, поскольку все межзональные переводы монет проходят через концентратор Cosmos. Эта архитектура решает многие проблемы, с которыми сталкивается пространство blockchain. сегодняшние проблемы, такие как совместимость приложений, масштабируемость и возможность бесшовной модернизации. Например, зоны, производные от Bitcoind, Go-Ethereum, CryptoNote, ZCash или любая другая система blockchain может быть подключен к концентратору Cosmos. Эти зоны позволяют Cosmos бесконечно масштабироваться для удовлетворения глобального спроса на транзакции. Зоны также отличный вариант для распределенного обмена, который будет поддерживаться как ну. Cosmos — это не просто один распределенный реестр, а Cosmos Хаб — это не огороженный сад и не центр вселенной. Мы разработка протокола для открытой сети распределенных реестров которые могут послужить новой основой для будущих финансовых систем, основанный на принципах криптографии, разумной экономики, консенсуса теория, прозрачность и подотчетность. Хаб Cosmos является первым общедоступным blockchain в PH_0005. Сеть, основанная на алгоритме консенсуса BFT Tendermint. Проект с открытым исходным кодом Tendermint родился в 2014 году для решения скорость, масштабируемость и экологические проблемы алгоритма консенсуса доказательства работы Bitcoin. Используя и совершенствуя проверенные
BFT алгоритмы, разработанные в Массачусетском технологическом институте в 1988 году [20], Tendermint команда была первой, кто концептуально продемонстрировал proof-of-stake криптовалюта, которая решает проблему «ничего на кону» пострадали от криптовалют proof-of-stake первого поколения, таких как как NXT и BitShares1.0. Сегодня практически все мобильные кошельки Bitcoin используют доверенные серверы для предоставить им проверку транзакции. Это связано с тем, что доказательство работы требует ожидания множества подтверждений, прежде чем транзакция может считаться необратимо совершенной. Атаки двойной траты уже были продемонстрированы на таких сервисах, как CoinBase. В отличие от других консенсусных систем blockchain, Tendermint предлагает Мгновенная и доказуемо безопасная проверка платежей мобильного клиента. Поскольку Tendermint вообще никогда не разветвляется, мобильные кошельки могут получать мгновенное подтверждение транзакции, что делает надежные и практичные платежи – реальность на смартфонах. Это имеет значительные последствия для приложений Интернета вещей, поскольку ну. Валидаторы в Cosmos выполняют аналогичную роль майнерам Bitcoin, но вместо этого используйте криптографические подписи для голосования. Валидаторы безопасные, выделенные машины, которые отвечают за совершение блоки. Лица, не validator, могут делегировать свои staking token (называемые «атомы») любому validator, чтобы заработать часть комиссий за блок и атом награды, но они подвергаются риску быть наказанными (урезанными), если делегат validator взломан или нарушает протокол. Проверенный гарантии безопасности консенсуса Tendermint BFT и сопутствующие депозит заинтересованных сторон – validator и делегаторов – обеспечивают доказуемая, количественная безопасность для узлов и легких клиентов. Распределенные публичные реестры должны иметь конституцию и система управления. Bitcoin опирается на Фонд Bitcoin имайнинг для координации обновлений, но это медленный процесс. Ethereum разделился на ETH и ETC после хард-форка по адресу Взлом DAO, в основном потому, что не было предварительного общественного договора. ни механизма принятия таких решений. Валидаторы и делегаты в хабе Cosmos могут голосовать за предложения, позволяющие изменить заданные параметры системы автоматически (например, лимит газа блока), координировать обновления, как а также голосовать по поправкам в удобочитаемую конституцию которые регулируют политику Cosmos Hub. Конституция позволяет обеспечить сплоченность заинтересованных сторон по таким вопросам, как кражи и ошибки (например, инцидент TheDAO), что позволяет быстрее и более чистое разрешение. Каждая зона также может иметь свою собственную конституцию и управление. механизм тоже. Например, концентратор Cosmos может иметь конституция, которая обеспечивает неизменность в Хабе (без откатов, за исключением ошибок реализации узла концентратора Cosmos), в то время как каждая зона может устанавливать свою собственную политику в отношении откатов. Обеспечивая совместимость между различными зонами политики, Сеть Cosmos предоставляет своим пользователям максимальную свободу и возможности для несанкционированные эксперименты. Здесь мы описываем новую модель децентрализации и масштабируемости. Cosmos — это сеть из множества blockchain, работающих на Мята. Хотя существующие предложения направлены на создание «единой blockchain» с общим заказом глобальных транзакций, Cosmos позволяет многим blockchain работать одновременно друг с другом сохраняя при этом совместимость. По сути, хаб Cosmos управляет множеством независимых blockchains, называемые «зонами» (иногда называемые «осколками», в ссылка на метод масштабирования базы данных, известный как «шардинг»).
Постоянный поток последних коммитов блоков из зон, опубликованных на Hub позволяет Hub отслеживать состояние каждой зоны. Аналогично, каждая зона следит за состоянием Хаба (но зоны не идти в ногу друг с другом, кроме как косвенно через Хаб). Пакеты информации затем передаются от одного зону другому, разместив доказательства Меркла в качестве доказательства того, что информация была отправлена и получена. Этот механизм называется связь между blockchain или сокращенно IBC. Любая из зон сама может быть хабом для формирования ациклического графа. но для ясности мы опишем только простое конфигурация, в которой есть только один концентратор и множество неконцентраторов зоны. Хаб Cosmos — это blockchain, на котором размещено несколько активов. распределенный реестр, в котором token могут храниться отдельными пользователями или по самим зонам. Эти token можно переместить из одной зоны. другому в специальном пакете IBC, называемом «пакет монет». Концентратор ответственный за сохранение глобальной инвариантности полной количество каждого token в зонах. IBC пачка монет транзакции должны быть зафиксированы отправителем, концентратором и получателем blockchainс.Поскольку Cosmos Hub действует как центральный реестр для всего системы, безопасность Хаба имеет первостепенное значение. Пока каждая зона может представлять собой Tendermint blockchain, защищенный всего 4 (или даже меньше, если консенсус BFT не требуется), Hub должен быть защищен глобально децентрализованным набором validator, который может противостоять самым серьезным сценариям атак, таким как раздел континентальной сети или атака, спонсируемая национальным государством. Зона Cosmos — это независимая зона blockchain, которая обменивается IBC. сообщения с помощью Hub. С точки зрения Хаба, зона — это учетная запись с несколькими подписями и динамическим членством, которая может отправлять и получать token, используя пакеты IBC. Как криптовалютный счет, зона не может перевести более tokens, чем он имеет, но может получать token от других, у которых они есть. Зона может быть обозначен как «источник» одного или нескольких типов token, предоставив ему возможность инзацировать этот источник token. Атомы Cosmos Hub могут быть застейканы validators зоны подключен к хабу. В то время как атаки двойного расходования на эти зоны приведет к разделению атомов с помощью системы подотчетности Tendermint, зоны, в которой > ⅔ голосов Византийский может совершить недействительное состояние. Концентратор Cosmos не поддерживает проверять или выполнять транзакции, совершенные в других зонах, поэтому ответственность пользователей отправлять token в зоны, которым они доверяют. В будущем система управления Cosmos Hub может пройти мимо Hub. предложения по улучшению, учитывающие сбои зон. Для например, исходящие переводы token из некоторых (или всех) зон могут регулироваться для обеспечения аварийного отключения зон (временная остановка передачи token) при обнаружении атаки. Теперь посмотрим, как Хаб и зоны общаются друг с другом. другое. Например, если есть три blockchain: «Зона1», «Зона2»,

и «Хаб», и мы хотим, чтобы «Зона 1» создавала пакет, предназначенный для «Зоны 2» через «Хаб». Чтобы переместить пакет из одного blockchain другому, доказательство отправляется в принимающую цепочку. Доказательство гласит, что передающая цепочка опубликовала пакет для предполагаемое место назначения. Чтобы принимающая цепочка могла проверить это доказательство, она должен быть в состоянии успевать за заголовками блоков отправителя. Это механизм аналогичен тому, который используется в сайдчейнах, что требует две взаимодействующие цепи, чтобы знать друг о друге через двунаправленный поток датаграмм подтверждения существования (транзакции). Протокол IBC естественным образом может быть разработан с использованием двух типов транзакции: транзакция IBCBlockCommitTx , которая позволяет blockchain, чтобы доказать любому наблюдателю свой последний блок - hash, и транзакция IBCPacketTx , которая позволяет blockchain доказать любому наблюдателю, что данный пакет действительно был опубликован приложением отправителя, через доказательство Меркла к недавнему блок-hash. Разделив механику IBC на две отдельные транзакции, мы позволить внутреннему рыночному механизму комиссий принимающей цепочки определить, какие пакеты будут зафиксированы (т.е. подтверждены), в то время как предоставляя полную свободу в цепочке отправки относительно того, как разрешено много исходящих пакетов. В приведенном выше примере для обновления блока hash «Zone1» на «Hub» (или «Hub» на «Zone2»), IBCBlockCommitTxтранзакция должна быть размещена на «Хабе» с блоком hash «Зона1» (или «Зона2» с блоком hash «Хаба»). Дополнительную информацию см. в IBCBlockCommitTx и IBCPacketTx. для двух типов транзакций IBC. Точно так же, как Bitcoin более безопасен, поскольку является распределенным, массово тиражируемый реестр, мы можем сделать биржи менее уязвимыми для внешние и внутренние хаки, запустив его на blockchain. Мы назовите это распределенным обменом. То, что криптовалютное сообщество называет децентрализованным сегодняшние обмены основаны на так называемых транзакциях «атомной кроссчейн» (AXC). При транзакции AXC два пользователя на две разные цепочки могут совершать две транзакции перевода, которые зафиксировано одновременно в обоих реестрах или не зафиксировано вообще (т. е. атомарно). Например, два пользователя могут обменять биткойны на эфир (или любые два token в двух разных реестрах) с использованием транзакций AXC, хотя Bitcoin и Ethereum не подключены друг к другу другое. Преимущество обмена транзакциями AXC заключается в что ни пользователям не нужно доверять друг другу, ни системе сопоставления сделок. сервис. Обратной стороной является то, что обе стороны должны быть онлайн для торговля произойдет. Другой тип децентрализованной биржи — это массово тиражируемая биржа. распределенный обмен, работающий самостоятельно blockchain. Пользователи на этот вид биржи может подать лимитный ордер и развернуть свои компьютер выключен, и сделка может выполняться без участия пользователя. онлайн. blockchain соответствует и завершает сделку от имени трейдера.
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.
Приложения
Централизованная биржа может создать глубокую книгу заказов с лимитами. заказов и тем самым привлечь больше трейдеров. Ликвидность порождает больше ликвидность в биржевом мире, поэтому существует сильная сеть эффект (или, по крайней мере, эффект «победитель получает большую часть») при обмене бизнес. Текущий лидер криптовалютных бирж сегодня находится Poloniex с 24-часовым объемом $20 млн, а на втором месте находится Bitynex с 24-часовым объемом в 5 миллионов долларов. Учитывая такую сильную сеть эффектов, маловероятно, что децентрализованные биржи на базе AXC выиграть объем над централизованными биржами. Для децентрализованного биржа, чтобы конкурировать с централизованной биржей, ей потребуется для поддержки глубоких книг заказов с лимитными ордерами. Только распределенный обмен на blockchain может это обеспечить. Tendermint обеспечивает дополнительные преимущества более быстрой транзакции. совершает. Отдавая приоритет быстрой динамичности, не жертвуя при этом согласованность, зоны в Cosmos могут быстро анализировать транзакции – для как транзакции обменных заказов, так и переводы IBC token на и из других зон. Учитывая сегодняшнее состояние криптовалютных бирж, отличный приложение для Cosmos — это распределенный обмен (он же Cosmos DEX). Пропускная способность транзакций, а также задержка фиксации может быть сравнима с задержкой централизованного обмены. Трейдеры могут отправлять лимитные ордера, которые могут быть исполнены. без необходимости присутствия обеих сторон в сети. И с Тендерминтом, хаб Cosmos и IBC, трейдеры могут вводить и выводить средства быстрый обмен данными с другими зонами. Привилегированная зона может выступать в качестве источника мостового token еще одна криптовалюта. Мост похож на отношения между концентратором Cosmos и зоной; оба должны идти в ногу с последние блоки друг друга, чтобы проверить доказательства того, что tokens имеют перешел из одного в другой. «Мост-зона» на Cosmos. сеть не отстает от концентратора, а также от других
криптовалюта. Косвенное направление через зону моста позволяет логика Хаба должна оставаться простой и независимой от других blockchain консенсусные стратегии, такие как proof-of-work Bitcoin добыча полезных ископаемых. В каждой зоне моста validator будет работать сервер на базе Tendermint. blockchain со специальным мостовым приложением ABCI, а также с полным узлом «происхождение» blockchain. Когда в источнике добываются новые блоки, зона моста validators придут к соглашению о зафиксированных блоках, подписав и делятся своим местным мнением об источнике blockchain. совет. Когда мостовая зона получает платеж от источника (и было решено, что по делу были рассмотрены достаточные подтверждения цепочки PoW, например Ethereum или Bitcoin), соответствующий аккаунт создается в бридж-зоне с этим балансом. В случае Ethereum зона моста может использовать один и тот же validator — установлен как концентратор Cosmos. На стороне Ethereum ( origin), мостовой контракт позволит держателям эфира отправлять эфир в бридж-зону, отправив его в бридж-контракт на Ethereum. Как только эфир будет получен бридж-контрактом, эфир нельзя вывести, пока не будет получен соответствующий пакет IBC. полученные по бридж-контракту от бридж-зоны. Bridge-contract отслеживает набор validator зоны моста, который может быть идентичен набору validator концентратора Cosmos. В случае Bitcoin концепция аналогична, за исключением того, что вместо один мостовой контракт, каждый UTXO будет контролироваться пороговая мультиподпись P2SH. Из-за ограничений системе P2SH подписывающие стороны не могут быть идентичными Cosmos Ступица validator-комплект.Эфир в бридж-зоне («мостовой эфир») можно перевести на и из Хаба, а затем быть уничтожены с помощью транзакции, которая отправляет его на определенный адрес вывода средств Ethereum. IBC пакет, подтверждающий, что транзакция произошла в зоне моста может быть опубликован в мостовом контракте Ethereum, чтобы разрешить эфир быть отозванным. В случае Bitcoin система ограниченных сценариев делает это сложно отразить механизм перевода монет IBC. Каждый UTXO имеет свою собственную независимую публикацию, поэтому каждый UTXO должен быть перенесен на новый UTXO при изменении набора Bitcoin лица, подписавшие условное депонирование. Одним из решений является сжатие и распакуйте набор UTXO по мере необходимости, чтобы сохранить общее число из UTXOс не работает. Риск такого промежуточного контракта представляет собой мошеннический набор validator. ≥⅓ Византийское право голоса может вызвать форк, выводящий эфир из контракта о мосте на Ethereum, сохраняя при этом мост в зоне моста. Хуже того, более ⅔ византийского права голоса может украсть эфир начисто у тех, кто отправил его на бридж-контракт отклоняясь от исходной логики мостовой зоны. Решить эти проблемы можно, спроектировав мост так, чтобы он был полностью подотчетен. Например, все пакеты IBC от концентратора и происхождения, может потребоваться подтверждение со стороны мостовой зоны в таким образом, чтобы все переходы состояний мостовой зоны могли быть эффективно оспаривается и проверяется либо хабом, либо источником мост-контракт. Хаб и источник должны разрешить мостовой зоне validators размещать обеспечение, а token переводить из бридж-контракт должен быть отложен (и расторжение залога достаточно длительный период), чтобы можно было решать любые проблемы, независимые аудиторы. Мы оставляем дизайн спецификации и реализация этой системы открыта в будущем Cosmos
предложение по улучшению, которое должно быть принято Cosmos Hub система управления. Решение проблемы масштабирования является открытой проблемой для Ethereum. В настоящее время узлы Ethereum обрабатывают каждую транзакцию и также сохраните все состояния. связь. Поскольку Tendermint может фиксировать блоки намного быстрее, чем Ethereum Зоны proof-of-work, EVM, основанные на консенсусе Tendermint и работа на мостовом эфире может обеспечить более высокую производительность Ethereum blockchainс. Кроме того, хотя концентратор Cosmos и Механика пакетов IBC не допускает произвольной логики контракта исполнение как таковое, его можно использовать для координации token движений между Ethereum контрактами, работающими в разных зонах, обеспечивая основу для token-центричного Ethereum масштабирования с помощью шардинг. Зоны Cosmos выполняют произвольную логику приложения, которая определяется начало жизни зоны и потенциально может обновляться со временем правительством. Такая гибкость позволяет Cosmos зонам действовать как мосты к другим криптовалютам, таким как Ethereum или Bitcoin, а также допускает производные от этих blockchain, используя ту же кодовую базу, но с другим набором validator и первоначальное распространение. Это позволяет многим существующим криптовалютам фреймворки, такие как Ethereum, Zerocash, Bitcoin, CryptoNote и т. д. для использования с Tendermint Core, который механизм консенсуса с более высокой производительностью в общей сети, открывая огромные возможности для взаимодействия между платформы. Кроме того, в качестве мультиактива blockchain один транзакция может содержать несколько входов и выходов, где каждый ввод может быть любого типа token, что позволяет Cosmos служить непосредственно в качестве платформа для децентрализованного обмена, хотя заказы предполагаютсядля сопоставления через другие платформы. В качестве альтернативы зона может служить как распределенная отказоустойчивая биржа (с книгами заказов), которая может быть строгим улучшением по сравнению с существующими централизованными криптовалютные биржи, которые со временем часто подвергаются взлому. Зоны также могут служить blockchain версиями корпоративных и правительственные системы, где части конкретной услуги, которые традиционно управляются организацией или группой организаций вместо этого запускаются как приложение ABCI в определенной зоне, что позволяет ему унаследовать безопасность и совместимость общедоступных Cosmos сети, не жертвуя контролем над базовой сервис. Таким образом, Cosmos может предложить лучшее из обоих миров для организации, желающие использовать технологию blockchain, но которые опасаясь полностью передать контроль распределенной третьей стороне вечеринка. Некоторые утверждают, что основная проблема с обеспечением согласованности консенсусных алгоритмов, таких как Tendermint, заключается в том, что любая сеть раздел, из-за которого не существует ни одного раздела с размером >⅔ Количество голосов (например, выход из журнала ≥⅓) полностью остановит консенсус. Архитектура Cosmos может помочь смягчить эту проблему, используя глобальный центр с региональными автономными зонами, где право голоса для каждой зоны распределяются на основе общего географического регион. Например, общая парадигма может быть для отдельных города или регионы, чтобы управлять своими собственными зонами, разделяя при этом общий центр (например, Cosmos Hub), позволяющий муниципальной деятельности сохраняться в случае остановки хаба из-за временной неисправности сети перегородка. Обратите внимание, что это позволяет реальным геологическим, политическим и топологические особенности сети, которые следует учитывать при проектировании надежного федеративные отказоустойчивые системы.
NameCoin был одним из первых blockchain, попытавшихся решить проблема разрешения имен путем адаптации Bitcoin blockchain. К сожалению, при таком подходе возникло несколько проблем. С помощью Namecoin мы можем убедиться, что, например, @satoshi был зарегистрированный с определенным открытым ключом в какой-то момент в прошлом, но мы не будем знать, был ли с тех пор открытый ключ обновлено недавно, если мы не загрузим все блоки с момента последнего обновление этого имени. Это связано с ограничением Bitcoin UTXO транзакция Модель Мерклеизации, где только транзакции (но не изменяемое состояние приложения) являются меркловскими в блок-hash. Это позволяет нам доказать существование, а не несуществование более поздних обновлений имени. Таким образом, мы не можем знать, определить самое последнее значение имени, не доверяя полной узла или понести значительные затраты на пропускную способность из-за загрузки весь blockchain. Даже если бы в NameCoin было реализовано дерево поиска в стиле Меркла, его зависимость от proof-of-work упрощает проверку клиента проблематично. Легкие клиенты должны загрузить полную копию заголовки для всех блоков всего blockchain (или, по крайней мере, всех заголовки с момента последнего обновления имени). Это означает, что Требования к пропускной способности линейно масштабируются с течением времени [21]. Кроме того, имя меняется на proof-of-work blockchain. требует ожидания дополнительных блоков подтверждения proof-of-work, это может занять до часа на Bitcoin. В случае с Tendermint все, что нам нужно, это самый последний блок — hash. подписано кворумом в validators (по числу голосов) и членом Меркла подтверждение текущего значения, связанного с именем. Это делает это возможно иметь краткий, быстрый и безопасный легкий клиент проверка значений имени. В Cosmos мы можем взять эту концепцию и расширить ее. Каждый Зона регистрации имен в Cosmos может иметь связанное имя домена верхнего уровня (TLD), например «.com» или «.org», и каждое имя-
зона регистрации может иметь собственное управление и регистрацию правила.
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.
Управление и экономика
Хотя Cosmos Hub представляет собой распределенный реестр с несколькими активами, существует особый природный объект token, называемый атомом. Атомы — единственные staking token узла Cosmos. Атомы — это лицензия для владельца на голосуйте, подтверждайте или делегируйте полномочия другим validator. Нравится Ethereum эфира, атомы также можно использовать для оплаты комиссий за транзакции уменьшить спам. Дополнительные инзационные атомы и блочная транзакция гонорары вознаграждаются validator и делегаторов, делегирующих полномочия validatorс. Транзакция BurnAtomTx может использоваться для восстановления любого пропорциональная сумма tokens из резервного пула. Первоначальное распределение атомов tokens и validators в книге Бытия. пойдут донорам Cosmos Сбора средств (75%), ведущие доноры (5%), Cosmos Network Foundation (10%) и ALL IN BITS, Inc. (10%). Начиная с зарождения, 1/3 общего количества атомов будет будут вознаграждены связанным validator и делегатам каждый год. Дополнительные сведения см. в плане Cosmos. В отличие от Bitcoin или других proof-of-work blockchain, Tendermint blockchain становится медленнее при увеличении количества validator из-за увеличения сложность общения. К счастью, мы можем поддержать достаточно validators для создания надежного глобально распределенного blockchain с очень быстрым временем подтверждения транзакций и, что касается пропускной способности,
хранилища и увеличится мощность параллельных вычислений, мы сможем для поддержки большего количества validator в будущем. В день создания максимальное количество validator будет установлено равным 100, и это число будет увеличиваться со скоростью 13% в течение 10 лет, и расчет на уровне 300 validators. Владельцы атомов, которые еще этого не сделали, могут стать validators путем подписание и отправка транзакции BondTx . Сумма атомы, предоставленные в качестве залога, должны быть ненулевыми. Любой может стать validator в любое время, за исключением случаев, когда размер текущего Набор validator превышает максимальное количество validator. разрешено. В этом случае сделка действительна только в том случае, если сумма атомов больше, чем количество эффективных атомов, удерживаемых наименьший validator, где эффективные атомы включают делегированные атомы. Когда новый validator заменяет существующий validator таким образом, существующий validator становится неактивным, и все атомы и делегированные атомы переходят в состояние разъединения. На validators должен быть наложен какой-то штраф за любое умышленное или неумышленное отклонение от санкционированного протокол. Некоторые доказательства являются допустимыми сразу, например, двойной знак на одной и той же высоте и витке, либо нарушение Год 0: 100 Год 1: 113 Год 2: 127 Год 3: 144 Год 4: 163 Год 5: 184 Год 6: 208 Год 7: 235 Год 8: 265 Год 9: 300 10 год: 300 ...
«prevote-the-lock» (правило консенсусного протокола Tendermint). Подобные доказательства приведут к потере validator своей хорошей репутации. и его связанные атомы, а также его пропорциональную долю tokens в резервный пул, который в совокупности называется «долей», будет сокращен. Иногда validator будут недоступны либо из-за региональных сбои в сети, сбой питания или другие причины. Если в любой момент точка в прошлых блоках ValidatorTimeoutWindow , validator голосование за принятие не включено в blockchain более чем ValidatorTimeoutMaxAbsent раз, то validator станет неактивен и теряет ValidatorTimeoutPenalty (ПО УМОЛЧАНИЮ 1 %) ставка. Некоторые «злонамеренные» действия не приводят к явно различимым последствиям. доказательства по делу blockchain. В этих случаях validator могут координировать внеполосные действия, чтобы принудительно отключить эти вредоносные validators, если существует консенсус сверхбольшинства. В ситуациях, когда хаб Cosmos останавливается из-за коалиции ≥⅓ количество голосов теряется в журнале или в ситуациях, когда коалиция ≥⅓ Цензура голосов, свидетельствующая о злонамеренном поведении со стороны входя в blockchain, хаб должен восстановиться с помощью хард-форка реорг-предложение. (Ссылка на «Форки и цензурные атаки»). Cosmos Концентратор validators может принимать любой тип token или комбинацию типов в качестве комиссий за обработку транзакции. Каждый validator может субъективно установить любой обменный курс, который он хочет, и выбрать любые транзакции, которые он хочет, при условии, что BlockGasLimit не превышен. Собранные сборы за вычетом любых налогов, указанных ниже, перераспределяются среди связанных стейкхолдеров пропорционально их связанные атомы, каждый ValidatorPayoutPeriod (ПО УМОЛЧАНИЮ 1 час).Из собранной комиссии за транзакцию ReserveTax (ПО УМОЛЧАНИЮ 2%) будет идите к резервному пулу, чтобы увеличить резервный пул и повысить безопасность и ценность сети Cosmos. Эти средства также могут распределяться в соответствии с решениями производится системой управления. Владельцы атомов, которые делегируют свое право голоса другим validator. выплатить комиссию делегированному validator. Комиссия может устанавливается каждым validator. Безопасность хаба Cosmos является функцией безопасности лежащие в основе validators и выбор делегирования делегирующими лицами. Чтобы стимулировать обнаружение и раннее сообщение о найденных уязвимостей, хаб Cosmos призывает хакеров публиковать успешные эксплойты через транзакцию ReportHackTx , в которой говорится: «Этот validator был взломан. Пожалуйста, пришлите награду на этот адрес». После такой эксплойт, validator и делегаторы станут неактивными, HackPunishmentRatio (по умолчанию 5%) всех атомов получит сокращено, а HackRewardRatio (по умолчанию 5%) всех атомов получит вознаграждение на баунти-адрес хакера. validator должен восстановить оставшиеся атомы, используя их резервный ключ. Чтобы предотвратить злоупотребление этой функцией для передачи неинвестированные атомы, доля наделенных и неинвестированных атомов validators и делегаторы до и после ReportHackTx будут останется прежним, а награда за хакера будет включать в себя некоторые нераспределенные атомы, если таковые имеются. Хаб Cosmos управляется распределенной организацией, которая требует хорошо продуманного механизма управления, чтобы координировать различные изменения в blockchain, например переменную
параметры системы, а также обновления программного обеспечения и конституционные поправки. Все validator несут ответственность за голосование по всем предложениям. Не удалось Своевременное голосование по предложению приведет к validator автоматически деактивируется на период времени, называемый Прогул на штрафной период (ПО УМОЛЧАНИЮ 1 неделя). Делегаторы автоматически наследуют голоса делегированных validator. Это голосование может быть отменено вручную. Несвязанные атомы не получить голоса. Для каждого предложения требуется внести депозит в размере MinimumProposalDeposit. token, которые могут представлять собой комбинацию одного или нескольких token. включая атомы. По каждому предложению избиратели могут проголосовать за принятие депозит. Если более половины избирателей выберут депозит (например, потому что предложение было спамом), депозит переходит на резервный пул, за исключением сгоревших атомов. По каждому предложению избиратели могут голосовать следующими вариантами: Да ДаСфорс Нет NayWithForce Воздерживаться Строгое большинство голосов за или YeaWithForce (или против, или голосов NayWithForce) требуется для того, чтобы предложение было принято как принято (или решено как проваленное), но 1/3+ могут наложить вето на большинство решение путем голосования «принудительным». Когда строгое большинство накладывает вето, все будут наказаны потерей VetoPenaltyFeeBlocks (ПО УМОЛЧАНИЮ блоков за 1 день) стоимость сборов (кроме налогов которая не будет затронута), и партия, наложившая вето на большинство
решение будет дополнительно наказано потерей VetoPenaltyAtoms (ПО УМОЛЧАНИЮ 0,1%) его атомов. Любой из определенных здесь параметров можно изменить с помощью передача ParameterChangeProposal. Атомы можно интегрировать и резервировать средства пула, потраченные с помощью принятие BountyProposal. Все остальные предложения, такие как предложение по обновлению протокола, будет координироваться с помощью общего TextProposal . См. План. В консенсусе blockchain было много нововведений и масштабируемость за последние пару лет. В этом разделе представлено краткое обзор избранного числа важных из них. Консенсус в присутствии злонамеренных участников является проблемой восходит к началу 1980-х годов, когда Лесли Лэмпорт придумал фраза «Византийская ошибка» относится к произвольному поведению процесса, которое отклоняется от запланированного поведения, в отличие от «аварии», при этом процесс просто аварийно завершает работу. Были обнаружены ранние решения для синхронных сетей, где существует верхняя границазадержка сообщения, хотя практическое использование было ограничено высокой контролируемые среды, такие как диспетчеры самолетов и центры обработки данных синхронизируются с помощью атомных часов. Так было до тех пор, пока В конце 90-х годов «Практическая византийская отказоустойчивость» (PBFT) PH_0000 была представлен как эффективный частично синхронный консенсус алгоритм, способный выдерживать поведение до ⅓ процессов произвольно. PBFT стал стандартным алгоритмом, породив множество вариации, включая самый последний, созданный IBM в рамках их вклад в Hyperledger. Основное преимущество консенсуса Tendermint по сравнению с PBFT заключается в том, что Tendermint имеет улучшенную и упрощенную базовую структуру. некоторые из них являются результатом принятия парадигмы blockchain. Блоки Tendermint должны фиксироваться по порядку, что позволяет избежать сложность и накладные расходы на связь, связанные с PBFT просмотр-изменения. В Cosmos и многих криптовалютах нет необходимо разрешить блок N+i, где i >= 1, для фиксации, когда блок N сама еще не взяла на себя обязательства. Если пропускная способность является причиной блокировки N не совершил коммит в зоне Cosmos, то использование не поможет голосование за разделение полосы пропускания для блоков N+i. Если сетевой раздел или узлы журнала являются причиной того, что блок N не зафиксировался, тогда Н+я в любом случае не буду брать на себя обязательства. Кроме того, группировка транзакций в блоки позволяет регулярное Merkle-hash состояние приложения, а не периодические дайджесты, как в схеме контрольных точек PBFT. Это позволяет для более быстрого и доказуемого подтверждения транзакций для легких клиентов и более быстрого меж-blockchain связь. Tendermint Core также включает в себя множество оптимизаций и функций. которые выходят за рамки того, что указано в PBFT. Например, блоки, предложенные validators, разделены на части, Меркле-изированы, и сплетничали таким образом, чтобы улучшить вещание производительность (для вдохновения см. LibSwift [19]). А еще Тендерминт Core не делает никаких предположений о двухточечном соединении.
возможность подключения и работает до тех пор, пока работает P2P-сеть. слабо связан. Хотя BitShares1.0 [12] не является первым развертыванием proof-of-stake (PoS), внес значительный вклад в исследование и внедрение PoS blockchain, особенно те, которые известны как «делегированные» PoS. В BitShares, заинтересованные стороны выбирают «свидетелей», ответственных за оформление заказа и совершение транзакций, а также «делегаты», ответственные за координация обновлений программного обеспечения и изменений параметров. BitShares2.0 нацелен на достижение высокой производительности (100 тыс. транзакций в секунду, 1 с). задержка) в идеальных условиях, когда каждый блок подписан одним подписывающему лицу, а качество транзакции занимает немного больше времени, чем интервал блока. Каноническая спецификация все еще находится в разработке. Заинтересованные стороны могут удалить или заменить свидетелей, плохо себя ведущих ежедневно, но нет существенного залога в виде свидетелей или делегаты по подобию Tendermint PoS, которые врезаются в случае успешной атаки двойной траты. Опираясь на подход, впервые предложенный Ripple, Stellar [13] Рейнед модель Федеративного Византийского соглашения, в которой процессы участие в консенсусе не представляют собой фиксированного и глобального известный набор. Скорее, каждый узел процесса курирует один или несколько «куски кворума», каждый из которых представляет собой набор доверенных процессов. А «Кворум» в Stellar определяется как набор узлов, содержащих хотя бы один срез кворума для каждого узла в наборе, такой, что соглашение может быть достигнуто. Безопасность механизма Stellar основана на предположении что пересечение любых двух кворумов непусто, а доступность узла требует, чтобы хотя бы один из его срезов кворума был полностью состоять из правильных узлов, создавая компромисс между использование больших или малых фрагментов кворума, которые может быть сложно сбалансировать без навязывания существенных предположений о доверии. В конечном счете,узлы должны каким-то образом выбрать адекватные фрагменты кворума, чтобы иметь достаточную отказоустойчивость (или вообще любые «неповреждённые узлы», из которых от этого зависит большая часть результатов статьи), и единственное предоставленная стратегия обеспечения иерархичности такой конфигурации и похож на протокол пограничного шлюза (BGP), используемый интернет-провайдерами высшего уровня для создания глобальных таблиц маршрутизации, а также который используется браузерами для управления сертификатами TLS; оба печально известные из-за их неуверенности. Критика в статье Stellar систем доказательства доли на основе Tendermint смягчается описанной стратегией token. здесь выдается новый тип token, называемый атомом, который представляют собой претензии на будущие части гонораров и вознаграждений. Таким образом, преимущество proof-of-stake на основе Tendermint является его относительным простота, но при этом обеспечивает достаточную и доказуемую безопасность гарантии. BitcoinNG — это предлагаемое улучшение Bitcoin, которое позволит для форм вертикальной масштабируемости, таких как увеличение размера блока, без негативных экономических последствий, обычно связанных с с таким изменением, таким как непропорционально большое влияние на мелких майнерах. Это улучшение достигается за счет разделения выборы лидера из трансляции транзакций: лидеры впервые избранный proof-of-work в «микроблоках», а затем имеющий возможность широковещательные транзакции, которые будут зафиксированы до появления нового микроблока найден. Это снижает требования к полосе пропускания, необходимые для выиграть гонку PoW, что позволит мелким майнерам более честно конкурировать, и разрешить более регулярное совершение транзакций со стороны последний майнер, нашедший микроблок. Casper [16] — это предложенный алгоритм консенсуса proof-of-stake для Ethereum. Его основной режим работы – «консенсус за ставкой». Автор позволяя validators итеративно делать ставки на то, какой блок, по их мнению, будет
стать приверженцем blockchain на основании других ставок что они видели до сих пор, инальность может быть достигнута в конечном итоге. связь. Это активная область исследований команды Casper. Задача состоит в создании механизма ставок, который можно было бы оказалась эволюционно стабильной стратегией. Основная польза от Casper по сравнению с Tendermint может предлагать «доступность» чрезмерная последовательность» – для достижения консенсуса не требуется кворум >⅔ количество голосов – возможно, за счет скорости принятия решений или сложность реализации. Протокол Interledger [14] не является строго решением масштабируемости. Это обеспечивает специальное взаимодействие между различными реестрами системы через слабосвязанную сеть двусторонних отношений. Как и в случае с Lightning Network, цель ILP – облегчить платежи, но он специально фокусируется на платежах по разным типы реестров и расширяет механизм атомарных транзакций для включать не только hash-замки, но и кворум нотариусов (так называемый «Атомный транспортный протокол»). Последний механизм для обеспечение атомарности в транзакциях между реестрами аналогично Механизм SPV легкого клиента Tendermint, поэтому иллюстрация различие между ILP и Cosmos/IBC гарантировано, и представлено ниже. 1. Нотариусы коннектора в ILP не поддерживают членство изменения и не допускают гибкого взвешивания между нотариусы. С другой стороны, IBC разработан специально для blockchains, где validators могут иметь разные веса, и где членство может меняться в течение blockchain. 2. Как и в Lightning Network, получатель платежа в ILP должен быть онлайн, чтобы отправить подтверждение отправителю. Вtoken передача через IBC, набор validator получателя За предоставление подтверждения отвечает blockchain, а не принимающий пользователь. 3. Самое поразительное отличие заключается в том, что разъемы ILP не ответственное или авторитетное государство в отношении платежей, тогда как в Cosmos validator концентратора являются полномочиями состояние IBC token передается, а также полномочия количество tokens, удерживаемое каждой зоной (но не количество tokens принадлежат каждой учетной записи в зоне). Это фундаментальная инновация, позволяющая обеспечить безопасную асимметричную перенос tokens из зоны в зону; аналог ILP соединитель в Cosmos — это постоянный и максимально безопасный blockchain реестр, концентратор Cosmos. 4. Платежи между реестрами в рамках ILP должны быть подкреплены биржевой стакан заявок, так как нет асимметричной передачи монеты из одного реестра в другой, только передача стоимости или рыночные эквиваленты. Сайдчейны [15] — это предлагаемый механизм масштабирования Bitcoin. сеть через альтернативные blockchain, которые «двусторонне привязаны» к Bitcoin blockchain. (Двусторонняя привязка эквивалентна мост. В Cosmos мы говорим «мост», чтобы отличить его от рыночной привязки). Сайдчейны позволяют биткойнам эффективно перемещаться из Bitcoin blockchain в сайдчейн и обратно, а также разрешить экспериментирование с новыми функциями сайдчейна. Как и в Cosmos Хаб, сайдчейн и Bitcoin служат лёгкими клиентами друг друга, используя доказательства SPV, чтобы определить, когда монеты должны быть переносится в сайдчейн и обратно. Конечно, поскольку Bitcoin использует proof-of-work, страдают сайдчейны, сосредоточенные вокруг Bitcoin. от многих проблем и рисков proof-of-work как механизм консенсуса. Кроме того, это Bitcoin-максималист решение, которое изначально не поддерживает различные token и
топология межзоновой сети, как это делает Cosmos. Тем не менее, ядро механизм двусторонней привязки в принципе такой же, как и у работает в сети Cosmos. Ethereum в настоящее время исследует ряд различных стратегий. сегментировать состояние Ethereum blockchain по адресу потребности в масштабируемости. Эти усилия имеют целью поддержание уровень абстракции, предлагаемый текущей виртуальной машиной Ethereum через общее пространство состояний. Многочисленные исследовательские усилия в настоящее время ведется. [18][22] Cosmos и Ethereum 2.0 Сиреневый [22] преследуют разные цели дизайна. Cosmos конкретно относится к token. Mauve — это масштабирование общий расчет. Cosmos не привязан к EVM, поэтому даже разные виртуальные машины могут взаимодействовать. Cosmos позволяет создателю зоны определить, кто проверяет зона. Любой может создать новую зону в Cosmos (кроме случаев, когда управление решит иначе). Концентратор изолирует сбои зон, поэтому глобальные инварианты token сохранился. Lightning Network — это предлагаемая сеть передачи данных token. работающий на уровне выше Bitcoin blockchain (и других общедоступных blockchains), позволяющие улучшить ситуацию на многие порядки. в пропускной способности транзакций за счет перемещения большинства транзакций за пределы консенсусного реестра в так называемые «платёжные каналы».Это стало возможным благодаря внутрисетевым скриптам криптовалюты, которые позволяют сторонам заключать двусторонние договоры, предусматривающие статус государства, в которых состояние можно обновлять путем обмена цифровыми подписями и контрактами. можно закрыть, опубликовав доказательства на blockchain, Механизм впервые популяризировался посредством атомных свопов между цепочками. Автор открытие каналов оплаты со многими сторонами, участниками Lightning Network может стать центром маршрутизации платежи других, что приводит к полностью подключенному платежному каналу сети, за счет капитала, привязанного к платежным каналам. Хотя сеть Lightning также может легко распространяться на несколько независимых blockchain для обеспечения передачи стоимости через валютный рынок, его нельзя использовать для асимметричного перенести token с одного blockchain на другой. Основная польза описанной здесь сети Cosmos заключается в том, чтобы обеспечить такую прямую token переводы. Тем не менее, мы ожидаем, что каналы оплаты и Lightning Network получит широкое распространение вместе с нашей token механизм передачи, предназначенный для экономии средств и обеспечения конфиденциальности. Segregated Witness — это Bitcoin ссылка на предложение по улучшению, которая направлен на увеличение пропускной способности транзакций на блок в 2 или 3 раза, одновременно ускоряя синхронизацию блоков для новых узлов. Гениальность этого решения в том, как оно работает внутри ограничения текущего протокола Bitcoin и допускает софт-форк обновление (т. е. клиенты с более старыми версиями программного обеспечения будут продолжать работать после обновления). Tendermint — новый продукт протокол, не имеет конструктивных ограничений, поэтому имеет другое масштабирование приоритеты. В первую очередь, Tendermint использует алгоритм циклического перебора BFT. на основе криптографических подписей вместо майнинга, что тривиально позволяет горизонтальное масштабирование посредством нескольких параллельных blockchains, в то время как регулярные, более частые фиксации блоков позволяют вертикальное масштабирование.
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:
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:
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
³ é
Консенсус и технические детали
Хорошо разработанный протокол консенсуса должен обеспечить некоторые гарантии в случае превышения допускаемой мощности и консенсус терпит неудачу. Это особенно необходимо в экономической сфере. системы, в которых византийское поведение может иметь существенные финансовые последствия. награда. Самой важной такой гарантией является форма форкаподотчетности, при которой процессы, вызвавшие консенсус, сбой (т. е. заставил клиентов протокола принимать разные значения - вилка) могут быть выявлены и наказаны в соответствии с правилами протокол или, возможно, правовая система. Когда правовая система ненадежны или слишком дороги в вызове, validator могут быть были вынуждены внести залог для участия, и те депозиты могут быть отозваны или сокращены в случае выявления злонамеренного поведения. обнаружен [10]. Обратите внимание, что это не похоже на Bitcoin, где разветвление происходит регулярно. из-за сетевой асинхронности и вероятностного характера поиска частичные hash коллизии. Поскольку во многих случаях вредоносный форк неотличим от форка из-за асинхронности, Bitcoin не может надежно реализовать форк-подотчетность, кроме неявной Альтернативная стоимость, которую платят майнеры за добычу потерянного блока. Мы называем этапы голосования PreVote и PreCommit. Голосование может быть за конкретный блок или для Nil. Мы называем коллекцию из >⅔ PreVotes за один блок в одном раунде Полька и коллекция >⅔ PreCommits для одного блока в одном раунде фиксации. Если >⅔ PreCommit for Nil в том же раунде, они переходят к следующему круглый. Обратите внимание, что строгий детерминизм в протоколе влечет за собой слабую предположение синхронности, поскольку дефектные лидеры должны быть обнаружены и
пропущен. Таким образом, validator ждут некоторое время, TimeoutPropose, прежде чем они проголосуют за ноль, и значение TimeoutPropose увеличивается с каждым раундом. Прогресс через оставшаяся часть раунда полностью асинхронна, то есть прогресс только сделано, как только validator получит сообщение от >⅔ сети. На практике потребуется чрезвычайно сильный противник, чтобы навсегда помешать предположение о слабой синхронности (из-за которого консенсус не может быть достигнут) когда-либо фиксировать блок), и это можно сделать еще более сложно использовать случайные значения TimeoutPropose для каждого validator. Дополнительный набор ограничений или правил блокировки гарантирует, что сеть в конечном итоге зафиксирует только один блок на каждой высоте. Любой злонамеренная попытка вызвать фиксацию более одного блока на заданной высоте можно идентифицировать. Во-первых, PreCommit для блока должно прийти с обоснованием, в виде польки для этого блока. Если validator уже имеет PreCommit блок на этапе R_1, мы говорят, что они заперты в этом квартале, и полька раньше оправдывала новый PreCommit в раунде R_2 должен прийти в раунде R_polka где Р_1 < Р_полька <= Р_2. Во-вторых, validator должны сделать предложение. и/или предварительно проголосовать за блок, на котором они заблокированы. Вместе эти условия гарантируют, что validator не выполняет PreCommit без достаточные доказательства в качестве оправдания, и что validators, которые имеют PreCommit уже не может предоставлять доказательства PreCommit что-то еще. Это обеспечивает безопасность и жизнеспособность алгоритм консенсуса. Полная информация о протоколе описана здесь. Необходимость синхронизации всех заголовков блоков в TendermintPoS устранена, поскольку существование альтернативной цепочки (форка) означает ≥⅓ облигационную ставку можно сократить. Конечно, поскольку слэшинг требует что кто-то поделится доказательствами форка, легкие клиенты должны хранить любой блок-hash фиксирует то, что видит. Кроме того, легкие клиентыможет периодически синхронизироваться с изменениями в наборе validator, в чтобы избежать атак на большие расстояния (но есть и другие решения). возможно). По духу схожий с Ethereum, Tendermint позволяет приложениям встроить глобальный корень Меркла hash в каждый блок, что позволяет легко проверяемые запросы состояния для таких вещей, как баланс счетов, значение хранится в контракте или наличие неизрасходованной транзакции выход в зависимости от характера приложения. Предполагая, что набор широковещательных сетей достаточно устойчив. и статический набор validator, любая вилка в blockchain может быть обнаружены, а депозиты нарушителей validator удалены. Это инновация, впервые предложенная Виталиком Бутериным в начале 2014 года, решает проблема «ничего на кону» другого proof-of-stake криптовалюты (см. раздел «Связанные работы»). Однако, поскольку validator устанавливает должен иметь возможность изменять в течение длительного периода времени исходный Все validator могут потерять связь и, следовательно, смогут свободно создать новую цепочку из генезис-блока, не неся никаких затрат, поскольку у них больше нет заблокированных депозитов. Эта атака произошла известная как Атака на дальнюю дистанцию (LRA), в отличие от Короткой атаки. Атака на расстоянии, при которой validator, которые в данный момент связаны, вызывают форк и, следовательно, наказуемы (при условии, что форк несет ответственность BFT алгоритм, такой как консенсус Tendermint). Атаки на дальние дистанции часто считается критическим ударом по proof-of-stake. К счастью, влияние LRA можно смягчить следующим образом. Во-первых, для validator разорвать связь (тем самым вернув залоговый депозит и больше не получаю комиссию за участие в консенсусе), депозит должен быть непереводимым в течение определенного периода времени известный как «период разъединения», который может быть порядка недели или месяцы. Во-вторых, чтобы легкий клиент был безопасным, в первую очередь при подключении к сети он должен проверить недавний блок — hash против надежного источника или, предпочтительно, нескольких источников. Это
Это состояние иногда называют «слабой субъективностью». Наконец, чтобы оставаться в безопасности, он должен синхронизироваться с последней версией validator, установленной по адресу по крайней мере так часто, как продолжительность периода отсоединения. Это гарантирует, что легкий клиент узнает об изменениях в validator устанавливается до того, как капитал validator будет освобожден от обязательств и, следовательно, больше не будет на кону, что позволило бы обмануть клиента, выполняя атака на дальнюю дистанцию путем создания новых блоков, начиная с высота, на которой он был прикреплен (при условии, что он контролирует достаточно многие из ранних закрытых ключей). Отметим, что преодоление ЛРА таким путем требует пересмотра исходная модель безопасности proof-of-work. В PoW это предположил, что легкий клиент может синхронизироваться с текущей высотой из доверенный блок генезиса в любое время, просто обрабатывая подтверждение работы в каждом заголовке блока. Однако, чтобы победить ЛРА, мы требуют, чтобы легкий клиент подключался к сети с некоторой регулярностью для отслеживать изменения в наборе validator и что в первый раз они выходят в Интернет, они должны быть особенно осторожны при аутентификации что они слышат из сети в отношении проверенных источников. Из конечно, последнее требование аналогично требованию Bitcoin, где протокол и программное обеспечение также должны быть получены от доверенного лица. источник. Вышеописанный метод предотвращения LRA хорошо подходит для validators. и полные узлы blockchain на базе Tendermint, потому что эти узлы предназначены для того, чтобы оставаться подключенными к сети. метод также подходит для легких клиентов, от которых можно ожидать часто синхронизируйтесь с сетью. Однако для легких клиентов, которые не предполагается, что они будут иметь частый доступ к Интернету или blockchain, можно использовать еще одно решение для преодоления ЛРА. Владельцы validator token могут публиковать свои token как залог с очень длительным периодом отсоединения (например, гораздо более длительный чем период отсоединения для validators) и обслуживать легких клиентов с вторичным методом подтверждения действительности текущих и прошлый блок-hashes. Хотя эти token не засчитываются в счет безопасности консенсуса blockchain, они, тем не менее, могутпредоставить надежные гарантии для легких клиентов. Если исторический блок-hash запросы поддерживались в Ethereum, любой мог связать свои tokens в специально разработанном smart contract и обеспечивают платные услуги по аттестации, что эффективно создает рынок безопасности LRA для легких клиентов. В связи с определением фиксации блока любая коалиция ≥⅓ блоков Право голоса может остановить blockchain, выйдя из журнала или нет транслируя свои голоса. Такая коалиция может также подвергать цензуре определенные транзакции, отклоняя блоки, которые включают в себя эти транзакций, хотя это привело бы к значительной доле блоков предложений, которые будут отклонены, что замедлит скорость блоковых коммитов blockchain, что снижает его полезность и ценность. Злонамеренная коалиция также может транслировать голоса небольшими порциями, поэтому при измельчении blockchain блок почти останавливается или вступает в любая комбинация этих атак. Наконец, это может привести к blockchain для разветвления путем двойной подписи или нарушения блокировки правила. Если бы в дело вмешался и глобально активный противник, он мог бы разделить сети таким образом, что может показаться, что это неправильный за замедление ответственно подмножество validators. Это не просто ограничение Tendermint, а скорее ограничение всех консенсусные протоколы, сеть которых потенциально контролируется активный противник. Для этих типов атак следует использовать подмножество validator. координировать действия с помощью внешних средств для подписания предложения о реорганизации, которое выбирает ответвление (и любые его доказательства) и начальное подмножество validators со своими подписями. Валидаторы, подписавшие такое предложение о реорганизации, отказываются от обеспечения на всех других форках. Клиенты должны проверить подписи на предложении о реорганизации, проверить любые доказательства, и вынести суждение или предложить конечному пользователю принять решение. Для Например, приложение телефонного кошелька может предложить пользователю ввести пароль безопасности.
предупреждение, а холодильник может принять любое предложение по реорганизации подписано +½ исходного числа validator по числу голосов. Никакой асинхронный византийский отказоустойчивый алгоритм не может прийти к консенсусу, когда ≥⅓ голосов нечестны, но это форк предполагает, что ≥⅓ голосов уже были нечестны двойное подписание или смена блокировки без обоснования. Итак, подписываем предложение о реорганизации представляет собой проблему координации, которую невозможно решить. решается любым несинхронным протоколом (т.е. автоматически, и не делая предположений о надежности базовая сеть). На данный момент мы оставляем проблему координации предложений по реорганизации на усмотрение человека посредством социального консенсуса. в интернет-СМИ. Валидаторы должны позаботиться о том, чтобы до подписания предложения о реорганизации не осталось никаких сетевых разделов, чтобы избежать ситуаций, когда подписываются два противоречивых предложения о реорганизации. Предполагая, что внешняя среда и протокол координации надежный, из этого следует, что форки вызывают меньшую озабоченность, чем цензура. атаки. Помимо форков и цензуры, требующей ≥⅓ византийского голосов, коалиция с числом голосов >⅔ может взять на себя обязательство произвольное, недействительное состояние. Это свойственно любому (BFT) система консенсуса. В отличие от двойной подписи, которая создает форки с помощью легко проверяемых доказательств, выявляющих совершение недействительное состояние требует, чтобы непроверяющие узлы проверяли целые блоки, что означает, что они сохраняют локальную копию состояния и выполняют каждой транзакции, вычисляя корень состояния независимо для себя. После обнаружения единственный способ справиться с таким сбоем происходит через социальный консенсус. Например, в ситуациях, когда Bitcoin не удалось, то ли форк из-за ошибок в программном обеспечении (как в марте 2013), или совершение недопустимого состояния из-за византийского поведения майнеры (как и в июле 2015 г.), сообщество с хорошими связями предприятия, разработчики, майнеры и другие организации установил социальный консенсус относительно того, какие ручные действия былинеобходимые участникам для исцеления сети. Кроме того, поскольку Можно ожидать, что validators Tendermint blockchain будут идентифицироваться, принятие недействительного состояния может даже быть наказуемо по закону или какой-либо внешней судебной практике, если это необходимо. ABCI состоит из трех основных типов сообщений, которые доставляются ядро приложения. Приложение отвечает соответствующие ответные сообщения. Сообщение AppendTx — это рабочая лошадка приложения. Каждый транзакция в blockchain доставляется с этим сообщением. приложению необходимо проверять каждую транзакцию, полученную с помощью Сообщение AppendTx о текущем состоянии, протоколе приложения, и криптографические учетные данные транзакции. проверенный затем транзакция должна обновить состояние приложения — путем привязка значения к хранилищу значений ключей или обновление UTXO база данных. Сообщение CheckTx похоже на AppendTx, но предназначено только для проверка транзакций. Ежегодные проверки мемпула Tendermint Core достоверность транзакции с CheckTx, действительны только реле транзакции со своими коллегами. Приложения могут проверять возрастающее nonce в транзакции и возвращает ошибку при CheckTx, если nonce старый. Сообщение Commit используется для вычисления криптографического обязательство по текущему состоянию приложения, которое будет помещено в заголовок следующего блока. У этого есть несколько полезных свойств. Несоответствия в обновлении этого состояния теперь будут отображаться как blockchain разветвляется, охватывая целый класс программирования ошибки. Это также упрощает разработку безопасных и легких клиентов, поскольку доказательства Merkle-hash можно проверить, проверив блок-hash и блок-hash подписаны кворумом из validators (по количеству голосов).
Дополнительные сообщения ABCI позволяют приложению отслеживать и измените набор validator, чтобы приложение получало информация о блоке, такая как высота и голоса за фиксацию. ABCI запросы/ответы — это простые сообщения Protobuf. Проверить из схемы yle. Аргументы: Данные ([]byte): байты транзакции запроса. Возврат: Код (uint32): код ответа. Данные ([]byte): байты результата, если таковые имеются. Журнал (строка): сообщение об отладке или ошибке. Использование:
Добавьте и запустите транзакцию. Если сделка действительна, возвращает КодТип.ОК Аргументы: Данные ([]byte): байты транзакции запроса. Возврат: Код (uint32): код ответа. Данные ([]byte): байты результата, если таковые имеются. Журнал (строка): сообщение об отладке или ошибке. Использование:
Подтвердить транзакцию. Это сообщение не должно изменять государство. Транзакции сначала проходят через CheckTx, а затем широковещательная рассылка одноранговым узлам на уровне мемпула. Вы можете сделать CheckTx полусохраняет состояние и очищает состояние при фиксации или BeginBlock, чтобы разрешить зависимые последовательности транзакций. в том же блоке.
Возврат: Данные ([]байт): корень Меркла hash Журнал (строка): сообщение об отладке или ошибке. Использование:
Возвращает корень Merkle hash состояния приложения. Аргументы: Данные ([]byte): байты запроса запроса. Возврат: Код (uint32): код ответа. Данные ([]byte): байты ответа на запрос. Журнал (строка): сообщение об отладке или ошибке. Использование:
Очистить очередь ответов. Приложения, реализующие типы. Приложению не обязательно реализовывать это сообщение – оно обрабатывается проектом. Возврат: Данные ([]byte): информационные байты. Использование:
Возвращает информацию о состоянии приложения. Приложение специфический. Аргументы: Ключ (строка): ключ для установки.
Значение (строка): значение, которое нужно установить для ключа. Возврат: Журнал (строка): сообщение об отладке или ошибке. Использование:
Установите параметры приложения. Например. Key="mode", Value="mempool" для соединение с мемпулом или Key="mode", Value="consensus" для консенсусная связь. Другие параметры зависят от приложения. Аргументы: Валидаторы ([]Валидатор): Начальное происхождение — validators. Использование:
Вызванный однажды при зарождении Аргументы: Высота (uint64): высота блока, начиная с Использование:
Сигнализирует о начале нового блока. Вызывается перед любым AppendTxs. Аргументы: Высота (uint64): высота блока, который закончился. Возврат: Валидаторы ([]Validator): изменены validator на новые. право голоса (0 для удаления) Использование:
Сигнализирует об окончании блока. Вызывается перед каждым коммитом в конце концов транзакции Дополнительную информацию см. в репозитории ABCI.Существует несколько причин, по которым отправитель может захотеть подтверждение доставки пакета принимающей цепочкой. Например, отправитель может не знать статус сообщения. цепочка назначения, если ожидается, что она неисправна. Или отправитель может хотите установить для пакета тайм-аут (с помощью параметра MaxHeight пакетный ответ), в то время как любая цепочка назначения может пострадать от атаки типа «отказ в обслуживании» с внезапным всплеском количества входящих пакетов. пакеты. В этих случаях отправитель может потребовать подтверждение доставки. установив первоначальный статус пакета на AckPending . Тогда это ответственность принимающей сети за подтверждение доставки путем включения сокращенно IBCPacket в приложении Merkle hash. Сначала IBCBlockCommit и IBCPacketTx публикуются в «Hub». это доказывает существование IBCПакета в «Зоне1». Скажи это IBCPacketTx имеет следующее значение: FromChainID: «Зона1» FromBlockHeight: 100 (скажем) Пакет: IBCПакет:
Заголовок: IBCPacketHeader: SrcChainID: «Зона1» DstChainID: «Зона2» Число: 200 (скажем) Статус: Подтверждено Тип: «монета» MaxHeight: 350 (скажем, «Hub» сейчас находится на высоте 300) Полезная нагрузка: <Байты полезной нагрузки «монеты»> Затем IBCBlockCommit и IBCPacketTx публикуются в «Zone2». это доказывает существование IBCПакета на «Хабе». Скажи это IBCPacketTx имеет следующее значение: FromChainID: «Хаб» ФромБлокХигхт: 300 Пакет: IBCПакет: Заголовок: IBCPacketHeader: SrcChainID: «Зона1» DstChainID: «Зона2» Количество : 200 Статус: Подтверждено Тип: «монета» Макс.Высота: 350 Полезная нагрузка: <Те же байты полезной нагрузки «монеты»> Далее «Зона2» должна включить в свое приложение-hash сокращенный пакет. который показывает новый статус AckSent . IBCBlockCommit и IBCPacketTx отправляются обратно на «Хаб», что доказывает существование сокращенного IBCПакета в "Zone2". Скажите, что IBCPacketTx имеет следующее значение: FromChainID: «Зона2»
FromBlockHeight: 400 (скажем)
Пакет: IBCПакет:
Заголовок: IBCPacketHeader:
SrcChainID: «Зона1»
DstChainID: «Зона2»
Количество : 200
Статус: Подтверждено
Тип: «монета»
Макс.Высота: 350
PayloadHash:
статус из «Зоны2» в блоке 350, он бы установил статус автоматически на Тайм-аут . Это свидетельство тайм-аута можно получить отправлено обратно в «Зону1», и любые token могут быть возвращены. В файле поддерживается два типа Merkle tree. Экосистема Tendermint/Cosmos: Простое дерево и IAVL+ Дерево. Простое дерево — это Merkle tree для статического списка элементов. Если количество предметов не является степенью двойки, некоторые листья будут находиться в разные уровни. Simple Tree пытается сохранить обе стороны дерева одинаковой высоты, но левая может быть на единицу больше. Это Merkle tree используется для Мерклеизации транзакций блока, а верхний уровень элементы корня состояния приложения.Целью структуры данных IAVL+ является обеспечение постоянного хранилище для пар ключ-значение в состоянии приложения, так что детерминированный корень Меркла hash может быть эффективно вычислен. дерево сбалансировано с использованием варианта алгоритма AVL, и все операции - O(log(n)). В дереве AVL высоты двух дочерних поддеревьев любого узла отличаются не более чем на единицу. Всякий раз, когда это условие нарушается обновлении, дерево перебалансируется путем создания новых узлов O(log(n)) указать на неизмененные узлы старого дерева. В оригинальном АВЛ алгоритме внутренние узлы также могут содержать пары ключ-значение. АВЛ+ алгоритм (обратите внимание на плюс) модифицирует алгоритм AVL, чтобы сохранить все значения на конечных узлах, используя только узлы ветвей для хранения ключей. Это упрощает алгоритм, сохраняя при этом след Меркла hash. короткий. Дерево AVL+ аналогично попыткам Патрисии Ethereum. Есть компромиссы. Ключи не требуется hash перед вставкой в Деревья IAVL+, что обеспечивает более быструю упорядоченную итерацию ключа. пространство, которое может принести пользу некоторым приложениям. Логика проще реализовать, требуя только два типа узлов – внутренние узлы и листовые узлы. Доказательство Меркла в среднем короче, поскольку * / \ / \ / \ / \ * * / \ / \ / \ / \ / \ / \ * * * h6 / \ / \ / \ h0 h1 h2 h3 h4 h5 Простое дерево с 7 элементами.
сбалансированное двоичное дерево. С другой стороны, корень Меркла Дерево IAVL+ зависит от порядка обновлений. Мы будем поддерживать дополнительные эффективные Merkle tree, такие как Патриция Три из Ethereum, когда бинарный вариант становится доступен. В канонической реализации транзакции передаются в Приложение-концентратор Cosmos через интерфейс ABCI. Хаб Cosmos примет ряд первичных транзакций. типы, включая SendTx , BondTx , UnbondTx , ReportHackTx , SlashTx, BurnAtomTx, ProposalCreateTx и ProposalVoteTx, которые достаточно очевидны и будут задокументированы в будущая редакция этой статьи. Здесь мы документируем два основных типы транзакций для IBC: IBCBlockCommitTx и IBCPacketTx . Транзакция IBCBlockCommitTx состоит из: ChainID (строка): идентификатор blockchain. BlockHash ([]byte): блок — hash байт, корень Меркла. который включает приложение-hash BlockPartsHeader (PartSetHeader): заголовок набора частей блока. байты, необходимы только для проверки подписей голосований BlockHeight (int): высота фиксации. BlockRound (int) : раунд фиксации. Commit ([]Vote): Предварительное принятие Tendermint >⅔ голосует за то, включать фиксацию блока ValidatorsHash ([]byte): корень дерева Меркла hash нового validator набор
ValidatorsHashProof (SimpleProof): SimpleTree Merkleproof для проверки ValidatorsHash на соответствие BlockHash.
AppHash ([]byte): корень дерева Меркла IAVLTree hash
состояние приложения
AppHashProof (SimpleProof): SimpleTree, защищенный Мерклем для
сравнение AppHash с BlockHash
IBCПакет состоит из:
Заголовок (IBCPacketHeader): заголовок пакета.
Полезная нагрузка ([]byte): байты полезной нагрузки пакета. Необязательно
PayloadHash ([]byte): hash для байтов пакета.
Необязательно
Должен присутствовать любой из Payload или PayloadHash . hash
пакета IBCPacket является простым корнем Меркла двух элементов: Header
и Полезная нагрузка . Пакет IBC без полной полезной нагрузки называется пакетом.
сокращенный пакет.
IBCPacketHeader состоит из:
SrcChainID (строка): идентификатор источника blockchain.
DstChainID (строка): идентификатор пункта назначения blockchain.
Номер (int): уникальный номер для всех пакетов.
Статус (перечисление): может быть одним из AckPending, AckSent,
AckReceived, NoAck или Timeout
Тип (строка): типы зависят от приложения. Cosmos
резервирует тип пакета «монета»
MaxHeight (int): если статус не NoAckWanted или AckReceived.
на этой высоте статус становится Timeout . Необязательно
Транзакция IBCPacketTx состоит из:FromChainID (строка): идентификатор blockchain, который
предоставление этого пакета; не обязательно источник
FromBlockHeight (int) : высота blockchain, на которой
следующий пакет включен (в формате Меркла) в блок - hash из
исходная цепочка
Пакет (IBCPacket): пакет данных, статус которого может быть одним
из AckPending, AckSent, AckReceived, NoAck или Timeout
PacketProof (IAVLProof): IAVLTree-доказательство Меркла для доказательства
hash пакета по AppHash исходной цепочки по адресу
заданная высота
Последовательность отправки пакета из «Зоны1» в «Зону2»
через «Хаб» изображен на {Рис. X}. Сначала IBCPacketTx
доказывает «Хабу», что пакет включен в app-состояние
«Зона1». Затем другой IBCPacketTx доказывает «Зоне2», что
пакет включен в состояние приложения «Хаб». Во время этого
процедуры, поля IBCPacket идентичны: SrcChainID
всегда «Зона1», а DstChainID — всегда «Зона2».
PacketProof должен иметь правильный путь, защищенный Меркле, так как
следует:
Когда «Зона 1» хочет отправить пакет в «Зону 2» через «Хаб»,
Данные IBCPacket идентичны независимо от того, зарегистрирован ли пакет в «Зоне 1», «Хабе» или «Зоне 2». Единственный изменяемый Yeld - это
Статус для отслеживания доставки.
Мы благодарим наших друзей и коллег за помощь в концептуализации,
проверка и поддержка нашей работы с Tendermint
и Cosmos.
IBC/
Заки Маниан из SkuChain оказал большую помощь в форматировании и формулировка, особенно в разделе ABCI Джехану Трембаку из Althea и Дастину Байингтону за помощь с начальные итерации Эндрю Миллер из Honey Badger за отзыв о консенсусе Грег Слепак за отзыв о консенсусе и формулировках Также спасибо Биллу Глейму и Сынхван Хану за различные взносы. Ваше имя и организация здесь за ваш вклад 1 Bitcoin: https://bitcoin.org/bitcoin.pdf 2 ZeroCash: http://zerocash-project.org/paper 3 Ethereum: https://github.com/ethereum/wiki/wiki/WhitePaper 4 DAO: https://download.slock.it/public/DAO/WhitePaper.pdf 5 отдельных свидетелей: https://github.com/bitcoin/bips/blob/master/bip0141.mediawiki 6 BitcoinNG: https://arxiv.org/pdf/1510.02037v2.pdf 7 Сеть Lightning: https://lightning.network/lightningnetwork-paper-DRAFT-0.5.pdf 8 Тендерминт: https://github.com/tendermint/tendermint/wiki 9 Невозможность ФЛП: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf 10 Слэшер: https://blog.ethereum.org/2014/01/15/slasher-apunitive-proof-of-stake-algorithm/ 11 PBFT: http://pmg.csail.mit.edu/papers/osdi99.pdf 12 BitShares: https://bitshares.org/technology/delegatedproof-of-stake-consensus/
13 Stellar: https://www.stellar.org/papers/stellar-consensusprotocol.pdf 14 Интерледжер: https://interledger.org/rfcs/0001-interledgerarchitecture/ 15 сайдчейнов: https://blockstream.com/sidechains.pdf 16 Каспер: https://blog.ethereum.org/2015/08/01/introducing-casperfriendly-ghost/ 17 ABCI: https://github.com/tendermint/abci 18 Ethereum Шардинг: https://github.com/ethereum/EIPs/issues/53 19 ЛибСвифт: http://www.ds.ewi.tudelft.nl/yleadmin/pds/papers/Performa nceAnaлизOfLibswift.pdf 20 ДЛС: http://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf 21 Безопасность тонкого клиента: https://en.bitcoin.it/wiki/Thin_Client_Security 22 Ethereum 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
гл è