Cosmos: uma rede de livros-razão distribuídos

作者 Jae Kwon and Ethan Buchman · 2016

介绍

开源生态系统的共同成功, 去中心化的yle共享,公共加密货币已经 激发了人们对去中心化互联网协议的理解 可用于从根本上改善社会经济基础设施。 我们已经看到了专门的 blockchain 应用程序,例如 Bitcoin [1] ( 加密货币)、Zerocash [2](一种保护隐私的加密货币)以及 通用 smart contract 平台,例如 Ethereum [3], 以太坊虚拟的无数分布式应用程序 机器(EVM),例如 Augur(预测市场)和 TheDAO [4](投资俱乐部)。 然而,迄今为止,这些 blockchain 已经遭受了许多问题的困扰。 的缺点,包括其总体能源效率低下、贫穷或 绩效有限,治理机制不成熟。 扩大 Bitcoin 交易吞吐量的建议,例如 隔离见证 [5] 和 BitcoinNG [6],是垂直缩放 解决方案仍然受到单个物理容量的限制 机,以保证性能的完全可审核性。 闪电网络 [7] 可以帮助扩展 Bitcoin 交易

通过将一些交易完全从分类账中删除来增加交易量, 非常适合小额支付和隐私保护 支付轨道,但可能不适合更普遍的情况 扩展需求。 理想的解决方案是允许多个并行 blockchain 互操作,同时保留其安全属性。这有 事实证明,对于 proof-of-work 来说,即使不是不可能,也是很困难的。合并 例如,采矿可以确保父母的安全 链可以在子链上重用,但交易仍然必须 按顺序由每个节点进行验证,并合并挖掘 blockchain 如果 hashing 上的大部分功率都容易受到攻击 父级没有积极地对子级进行合并挖掘。学术评论 提供了替代的 blockchain 网络架构 其他背景,我们提供其他提案的摘要 以及它们在相关工作中的缺点。 在这里,我们介绍 Cosmos,一种新颖的 blockchain 网络架构 解决所有这些问题。 Cosmos 是一个由许多人组成的网络 独立的 blockchain,称为区域。这些区域的动力来自 Tendermint Core [8],提供高性能、 一致、安全的类似 PBFT 的共识引擎,其中严格的责任保证可以抑制恶意行为 演员。 Tendermint Core 的 BFT 共识算法非常适合 用于缩放 public proof-of-stake blockchains。 Cosmos 上的第一个区域称为 Cosmos 中心。 Cosmos Hub 是一种多资产 proof-of-stake 加密货币,具有简单的 使网络能够适应和适应的治理机制 升级。此外,Cosmos 集线器可以通过以下方式扩展: 连接其他区域。 Cosmos 网络的集线器和区域与 彼此通过 blockchain 间通信 (IBC) 协议, blockchains 的一种虚拟 UDP 或 TCP。代币可以是 安全、快速地从一个区域转移到另一个区域无需在区域之间交换流动性。相反, 所有区域间 token 传输均通过 Cosmos 中心,该中心 跟踪每个区域持有的 token 总量。的 集线器将每个区域与其他区域的故障隔离开来。因为 任何人都可以将新区域连接到 Cosmos 集线器,区域允许 为了与新的 blockchain 创新未来兼容。 在本节中,我们将描述 Tendermint 共识协议 以及用于构建应用程序的接口。了解更多 详情见附录。 在经典拜占庭容错 (BFT) 算法中,每个节点 具有相同的重量。在 Tendermint 中,节点具有非负数 投票权的大小以及投票赞成的节点 电源称为 validators。验证者参与 通过广播加密签名达成共识协议,或者 投票,就下一个区块达成一致。 验证者的投票权是在创世时决定的,或者是 由 blockchain 确定性地更改,具体取决于 应用程序。例如,在 proof-of-stake 应用程序中,例如 Cosmos Hub,投票权可以由 作为抵押品的 staking token 数量。 注:像 ⅔ 和 ⅓ 这样的分数是指总投票数的分数 功率,绝不是 validator 的总数,除非所有 validator 都 具有相同的权重。 >⅔表示“超过⅔”,≥⅓表示“至少 ⅓”。 Tendermint 是一个部分同步的 BFT 共识协议 源自 DLS 共识算法 [20]。嫩薄荷是

以其简单性、性能和分叉责任而闻名。 该协议需要一组已知的 validator,其中每个 validator 由其公钥识别。验证者试图 一次就一个区块达成共识,其中一个区块就是一个列表 的交易。对区块进行投票以达成共识 回合。每轮都有一位轮次领导者或提议者,他们 提出一个区块。然后 validator 分阶段投票决定是否 接受提议的区块或进入下一轮。的 一轮的提议者是从有序的中确定性地选择的 validator 列表,按其投票权比例。 此处描述了该协议的完整细节。 Tendermint 的安全性源自其对最佳拜占庭式的使用 通过绝对多数 (>⅔) 投票和锁定实现容错 机制。他们共同确保: ≥⅓ 投票权必须是拜占庭式的才会导致违反 安全,承诺两个以上的价值观。 如果任何一组 validator 曾经成功违反安全性,甚至 尝试这样做时,它们可以被协议识别。这个 包括对冲突区块的投票和广播 不公正的选票。 尽管有强有力的保证,Tendermint 仍提供卓越的服务 性能。在分布在 7 个节点的 64 个节点的基准测试中 数据中心遍布五大洲,位于商品云实例上, Tendermint 共识可以处理数千笔交易 其次,提交延迟约为一到两秒。 值得注意的是,每笔交易的性能远远超过一千笔 即使在恶劣的对抗条件下,第二个也能保持, validators 崩溃或广播恶意制作的投票。参见 详情请参见下图。

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

Tendermint 共识算法的一个主要好处是简化 轻客户端安全性,使其成为移动和 物联网用例。虽然 Bitcoin 轻客户端必须同步 区块头链,并找到拥有最多证明的区块头链 工作,Tendermint 轻客户端只需要跟上变化 到 validator 集,然后验证 >⅔ PreCommits 最新块来确定最新状态。 简洁的轻客户端证明还可以实现blockchain之间的交互 沟通。 Tendermint 有保护措施来防止某些 值得注意的攻击,例如远程无利害关系双花 和审查制度。这些在附录中进行了更全面的讨论。Tendermint 共识算法是在 名为 Tendermint Core 的程序。 Tendermint 核心是 与应用程序无关的“共识引擎”,可以改变任何 将确定性黑盒应用程序转化为分布式复制 blockchain。 Tendermint Core 连接到 blockchain 应用程序 通过应用程序区块链接口 (ABCI) [17]。因此,ABCI 允许 blockchain 应用程序在任何 语言,而不仅仅是达成共识的编程语言 引擎被写入。此外,ABCI 可以轻松地 交换任何现有 blockchain 堆栈的共识层。 我们用著名的加密货币Bitcoin进行类比。 Bitcoin 是每个节点维护的加密货币 blockchain 经过全面审核的未花费交易输出 (UTXO) 数据库。如果 有人想在 ABCI 之上创建一个类似 Bitcoin 的系统, Tendermint Core 将负责 节点之间共享区块和交易 建立规范/不可变的交易顺序( blockchain) 同时,ABCI 应用程序将负责 维护 UTXO 数据库 验证交易的加密签名 防止交易花费不存在的资金 允许客户端查询 UTXO 数据库 Tendermint 能够通过以下方式分解 blockchain 设计: 在应用程序进程和 共识过程。

Introdução

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

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

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

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

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

Cosmos 架构

Cosmos 是一个独立并行 blockchain 的网络,它们是 每个都由经典的 BFT 共识算法提供支持,例如 嫩薄荷 1. 该网络中的第一个 blockchain 将是 Cosmos 中心。的 Cosmos 集线器通过一个连接到许多其他 blockchain(或区域) 新颖的blockchain间通信协议。 Cosmos 中心 跟踪众多 token 类型并记录总数 每个连接区域中的 token 数量。代币可以是 安全、快速地从一个区域转移到另一个区域 无需在区域之间进行液体交换,因为所有 区域间硬币转账通过 Cosmos 中心。 该架构解决了 blockchain 空间的许多问题 今天面临的问题,例如应用程序互操作性、可扩展性和 无缝升级能力。例如,从 Bitcoind 派生的区域, Go-Ethereum、CryptoNote、ZCash 或任何 blockchain 系统都可以 插入 Cosmos 集线器。这些区域允许 Cosmos 无限扩展以满足全球交易需求。区域还有 对于分布式交换来说,这是一个很棒的 yt,它将得到以下支持: 好吧。 Cosmos 不仅仅是一个分布式账本,而且 Cosmos Hub 不是一个有围墙的花园,也不是宇宙的中心。我们是 为分布式账本的开放网络设计协议 可以作为未来金融系统的新基础, 基于密码学原理、健全的经济学、共识 理论、透明度和问责制。 Cosmos 中心是 Cosmos 中的第一个公共 blockchain 网络,由 Tendermint 的 BFT 共识算法提供支持。的 Tendermint 开源项目诞生于 2014 年,旨在解决 Bitcoin 的工作量证明共识算法的速度、可扩展性和环境问题。通过使用和改进经过验证的

BFT 于 1988 年在 MIT 开发的算法 [20],Tendermint 团队是第一个概念性地演示 proof-of-stake 解决无利害关系问题的加密货币 遭受第一代 proof-of-stake 加密货币的困扰,例如 如 NXT 和 BitShares1.0。 如今,几乎所有 Bitcoin 移动钱包都使用可信服务器来 为他们提供交易验证。这是因为工作量证明需要在执行之前等待许多确认。 事务可以被视为不可逆转地提交。双花攻击已经在诸如 币库。 与其他 blockchain 共识系统不同,Tendermint 提供 即时且可证明安全的移动客户端支付验证。 由于 Tendermint 被设计为根本不会分叉,因此移动 钱包可以接收即时交易确认,这使得 无需信任且实用的支付在智能手机上成为现实。这个 对物联网应用具有重大影响,如 好吧。 Cosmos 中的验证者与 Bitcoin 矿工具有类似的角色,但是 而是使用加密签名进行投票。验证器是 负责提交的安全、专用机器 块。非 validator 可以委托其 staking token(称为 “atoms”)到任何 validator 以赚取部分区块费用和atom 奖励,但如果 委托 validator 被黑客攻击或违反协议。经证实的 Tendermint BFT 共识的安全保证以及抵押品 利益相关者的押金 –validators 和委托人 – 提供 节点和轻客户端的可证明、可量化的安全性。 分布式公共账本应该有一个章程和一个 治理体系。 Bitcoin 依赖于 Bitcoin 基金会并且挖矿来协调升级,但这是一个缓慢的过程。 Ethereum 硬分叉后分裂为 ETH 和 ETC 以解决 DAO 黑客攻击,很大程度上是因为没有事先的社会契约 也没有做出此类决定的机制。 Cosmos Hub 上的验证者和委托者可以投票 可以更改系统预设参数的建议 自动(例如区块gas limit),坐标升级,如 并对人类可读的宪法修正案进行投票 管理 Cosmos 中心的政策。宪法 允许利益相关者在以下问题上保持凝聚力: 盗窃和错误(例如TheDAO事件),允许更快和 更清晰的分辨率。 每个区域也可以有自己的宪法和治理 机制也是如此。例如,Cosmos 集线器可能有一个 强制中心不变性的宪法(无回滚, 保存 Cosmos Hub 节点实现的错误),同时 每个区域都可以设置自己的回滚策略。 通过实现不同政策区域之间的互操作性, Cosmos 网络为其用户提供最终的自由和潜力 未经许可的实验。 在这里,我们描述了一种去中心化和可扩展性的新颖模型。 Cosmos 是一个由许多 blockchain 组成的网络,由 嫩薄荷。虽然现有提案旨在创建“单一 blockchain”,全局交易排序总额为 Cosmos 允许许多 blockchain 彼此同时运行 同时保留互操作性。 在此基础上,Cosmos Hub 管理着许多独立的 blockchain 称为“区域”(有时称为“分片”,在 参考称为“分片”的数据库扩展技术)。

来自发布的区域的最近块提交的持续流 Hub 允许 Hub 跟上每个区域的状态。 同样,每个区域都与集线器的状态保持同步(但区域 除非间接通过 枢纽)。然后,信息包从一个 通过发布默克尔证明作为证据,将区域转移到另一个区域 信息已发送和接收。这种机制被称为 blockchain 间通信,简称 IBC。 任何区域本身都可以成为形成非循环图的中心, 但为了清楚起见,我们只描述简单的 只有一个集线器和许多非集线器的配置 区。 Cosmos 中心是托管多资产的 blockchain 分布式账本,其中 token 可以由个人用户持有或 由区域本身。这些 token 可以从一个区域移动 到另一个特殊的 IBC 数据包中,称为“硬币数据包”。枢纽是 负责保持总的全局不变性 跨区域的每个 token 的数量。 IBC 硬币包 交易必须由发送者、集线器和接收者提交 blockchains。由于 Cosmos Hub 充当整个系统的中央分类账 系统中,Hub 的安全至关重要。同时 每个区域都可以是 Tendermint blockchain,由 as 保护 少至 4 个(如果不需要 BFT 共识,甚至更少),Hub 必须由一组全球分散的 validator 来保证安全 可以承受最严重的攻击场景,例如 大陆网络分区或民族国家发起的攻击。 Cosmos 区域是一个独立的 blockchain,可交换 IBC 与 Hub 的消息。从 Hub 的角度来看,一个区域就是一个 多资产动态会员多重签名账户 可以使用 IBC 数据包发送和接收 tokens。就像一个 加密货币账户,一个区域不能传输超过 tokens 它有,但可以从拥有它们的其他人那里接收 token。 A区 可以被指定为一种或多种 token 类型的“源”, 授予其启动 token 电源的权力。 Cosmos 中心的原子可以由区域的 validator 质押 连接到集线器。虽然对这些区域进行双花攻击 将导致 Tendermint 的 forkaccountability 中的原子被削减,在该区域中,>⅔ 的投票权是 拜占庭可以提交无效状态。 Cosmos 集线器不 验证或执行在其他区域提交的交易,因此 用户有责任将 token 发送到他们信任的区域。 未来Cosmos Hub的治理体系可能会通过Hub 解决区域故障的改进建议。对于 例如,从某些(或所有)区域出站 token 传输可能会 被限制以允许区域紧急断路 (暂时停止 token 传输)当检测到攻击时。 现在我们看看中心和区域如何相互通信 其他。例如,如果有三个blockchain,“Zone1”,“Zone2”,

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

和“Hub”,我们希望“Zone1”生成一个数据包 “Zone2”穿过“Hub”。从一个数据包中移动一个数据包 blockchain 到另一个,一个证明被发布在接收链上。 该证明表明发送链发布了一个数据包 所谓的目的地。为了让接收链检查这个证明,它 必须能够跟上发送者的块头。这个 机制与侧链使用的机制类似,需要 两个相互作用的链通过 存在性数据报的双向流 (交易)。 IBC 协议自然可以使用两种类型来定义 交易:一个 IBCBlockCommitTx 交易,它允许 blockchain 向任何观察者证明其最新区块-hash, 和一个 IBCPacketTx 交易,它允许 blockchain 向任何观察者证明给定的数据包确实已发布 通过发送者的应用程序,通过对最近的 Merkle 证明 块-hash。 通过将 IBC 机制拆分为两个单独的事务,我们 允许接收链的原生费用市场机制 确定哪些数据包被提交(即确认),同时 允许发送链上完全自由地决定如何 允许许多出站数据包。 上例中,为了更新“Zone1”的块-hash 在“Hub”(或“Zone2”上的“Hub”)上,一个 IBCBlockCommitTx交易必须发布在“Hub”上,区块为hash “Zone1”(或在“Zone2”上,具有“Hub”的块hash)。 有关更多信息,请参阅 IBCBlockCommitTx 和 IBCPacketTx 关于两种 IBC 交易类型。 同样,Bitcoin 通过分布式更安全, 大规模复制的账本,我们可以使交易所不易受到 通过在 blockchain 上运行它来进行外部和内部黑客攻击。我们 称之为分布式交换。 加密货币社区所谓的去中心化 今天的交易所基于所谓的“原子跨链”(AXC)交易。通过 AXC 交易,两个用户 两条不同的链可以进行两笔转账交易 在两个分类账上一起承诺,或者根本没有承诺(即 原子地)。例如,两个用户可以用比特币交换以太币(或 两个不同分类账上的任意两个 token)使用 AXC 交易, 即使 Bitcoin 和 Ethereum 没有连接到每个 其他。在 AXC 交易上运行交易所的好处是 用户不需要互相信任或交易匹配 服务。缺点是双方都需要在线 交易发生。 另一种类型的去中心化交易所是大规模复制的 自行运行的分布式交换 blockchain。用户在 这种交易所可以提交限价订单并将其转为 计算机关闭,无需用户操作即可执行交易 在线。 blockchain 代表匹配并完成交易 交易者的。

Cosmos Arquitetura

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

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

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

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

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

应用领域

中心化交易所可以创建深度限价订单簿 订单,从而吸引更多的交易者。流动性产生更多 交易所世界的流动性,因此有强大的网络 交换中的效应(或至少是赢家通吃的效应) 业务。当今加密货币交易所的当前领导者 Poloniex 的 24 小时交易量为 2000 万美元,位居第二的是 Bitynex 24 小时交易量为 500 万美元。鉴于如此强大的网络 影响,基于 AXC 的去中心化交易所不太可能 赢得中心化交易所的交易量。对于去中心化的 交易所要与中心化交易所竞争,需要 支持带有限价订单的深度订单簿。只有一个分布式 blockchain 上的交换可以提供这一点。 Tendermint 提供更快交易的额外好处 承诺。通过优先考虑快速性而不牺牲 一致性,Cosmos 中的区域可以快速分析事务 – 用于 交换订单交易以及 IBC token 转账至 以及来自其他区域的。 鉴于当今加密货币交易所的状况,一个伟大的 Cosmos 的应用程序是分布式交换(又名 Cosmos DEX)。交易吞吐能力以及 提交延迟可以与集中式的延迟相媲美 交流。交易者可以提交可以执行的限价订单 无需双方都在线。和 Tendermint 一起, Cosmos 中心和 IBC,交易者可以将资金转入和转出 与其他区域的快速交换。 特权区域可以充当桥接 token 的源 另一种加密货币。桥梁类似于关系 Cosmos 中心和区域之间;两者都必须跟上 另一个的最新区块,以验证 tokens 拥有的证据 从一个移动到另一个。 Cosmos 上的“桥接区” 网络与集线器以及其他设备保持同步

加密货币。通过桥接区的间接允许 中心的逻辑保持简单并且与其他人无关 blockchain 共识策略,例如 Bitcoin 的 proof-of-work 采矿。 每个桥区 validator 将运行由 Tendermint 驱动的 blockchain 具有特殊的 ABCI 桥接应用程序,而且也是一个全节点 “起源”blockchain。 当在原点开采新区块时,桥接区 validators 将通过签名就承诺区块达成一致 并分享他们各自对原产地 blockchain 的本地看法 小费。当桥接区域在来源处收到付款时(以及 已同意在本案中看到足够的确认 PoW 链(例如 Ethereum 或 Bitcoin),相应的 帐户是在桥接区域上用该余额创建的。 在 Ethereum 的情况下,桥接区域可以共享相同的 validator-设置为 Cosmos 集线器。在 Ethereum 一侧( 起源),桥接合约将允许以太币持有者发送以太币 通过将其发送到桥接合约来发送到桥接区 Ethereum。一旦桥接合约收到以太币, 除非有适当的 IBC 数据包,否则无法提取以太币 由桥接合同从桥接区接收。的 桥接合约跟踪桥接区域的 validator 集,其中 可能与 Cosmos 集线器的 validator 集相同。 在 Bitcoin 的情况下,概念类似,只不过不是 一个桥梁合约,每个 UTXO 将由 阈值多重签名 P2SH pubscript。由于限制 P2SH 系统中,签名者不能与 Cosmos 相同 轮毂 validator-套。桥接区域上的以太币(“桥接以太币”)可以转移到 并从中心,然后通过交易销毁 将其发送到 Ethereum 上的特定提款地址。 IBC 证明事务发生在桥接区域的数据包 可以发布到 Ethereum 桥接合约以允许以太币 被撤回。 在 Bitcoin 的情况下,受限脚本系统使其 很难反映 IBC 硬币转移机制。每个 UTXO 有自己独立的pubscript,因此每个 UTXO 必须是 当集合发生变化时迁移到新的 UTXO Bitcoin 托管签名者。一种解决方案是压缩并 根据需要解压 UTXO-set 以保留总数 UTXO 秒下降。 这种桥接合约的风险是流氓 validator 集。 ≥⅓ 拜占庭投票权可能会导致分叉,提取以太币 来自 Ethereum 的桥接合约,同时将桥接以太币保持在桥接区域。更糟糕的是,>⅔ 拜占庭投票权可以 从发送到桥接合约的人那里直接窃取以太币 偏离了桥接区的原始桥接逻辑。 可以通过设计桥梁来解决这些问题 完全负责。例如,来自集线器的所有 IBC 数据包和 起源,可能需要桥接区的确认 这样桥区的所有状态转换都可以 受到枢纽或始发地的有效挑战和验证 过桥合同。中心和来源应允许桥区 validators 发布抵押品,并且 token 转出 过渡合同应该被推迟(并且抵押品解绑 足够长的时间)以允许提出任何挑战 独立审计师。我们留下规格的设计和 该系统的实施作为未来开放 Cosmos

改进提案,由 Cosmos 中心通过 治理体系。 解决缩放问题是 Ethereum 的一个悬而未决的问题。 目前,Ethereum 节点处理每笔交易并 还存储所有状态。关联。 由于 Tendermint 提交区块的速度比 Ethereum 快得多 proof-of-work、EVM 由 Tendermint 共识支持的区域和 在桥接以太网上运行可以提供更高的性能 Ethereum blockchains。此外,虽然 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 中心),使市政活动能够 在集线器由于临时网络而停止的情况下继续存在 分区。请注意,这允许真实的地质、政治和 设计鲁棒性时要考虑的网络拓扑特征 联合容错系统。

NameCoin 是第一个尝试解决这个问题的 blockchain 之一 通过调整 Bitcoin blockchain 来解决名称解析问题。 不幸的是,这种方法存在几个问题。 通过 Namecoin,我们可以验证,例如,@satoshi 是 在过去的某个时刻使用特定的公钥注册, 但我们不知道公钥是否已经被 最近更新,除非我们下载自上次以来的所有块 该名称的更新。这是由于 Bitcoin 的限制 UTXO 交易默克尔化模型,其中只有 交易(但不是可变的应用程序状态)是 Merkle 化的 进入块-hash。这让我们可以证明名称的存在,但不能证明名称的后续更新不存在。因此,我们无法得知 确定名称的最新值而不信任完整的 节点,或者通过下载产生大量带宽成本 整个blockchain。 即使在 NameCoin 中实现了 Merkle 化的搜索树, 它对 proof-of-work 的依赖使得轻客户端验证 有问题的。轻客户端必须下载完整的副本 整个 blockchain 中所有块的标头(或者至少是所有 自上次更新名称以来的标题)。这意味着 带宽需求随时间量线性变化 [21]。此外,proof-of-work blockchain 上的名称更改 需要等待额外的 proof-of-work 确认块, Bitcoin 上最多可能需要一个小时。 对于 Tendermint,我们只需要最新的区块 -hash 由 validator 的法定人数(通过投票权)和 Merkle 签署 证明与该名称关联的当前值。这使得 可以拥有一个简洁、快速、安全的轻客户端 名称值的验证。 在Cosmos中,我们可以采用这个概念并进一步扩展它。每个 Cosmos 中的名称注册区域可以有一个关联的顶级域 (TLD) 名称,例如“.com”或“.org”,并且每个名称-

注册区可以有自己的治理和注册 规则。

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.

治理与经济

虽然 Cosmos Hub 是一个多资产分布式账本,但 一个特殊的原生 token 称为原子。原子是唯一的 staking Cosmos 中心的 token。原子是持有者的许可证 投票、验证或委托给其他 validator。就像 Ethereum 的 以太,原子也可以用来支付交易费用 减少垃圾邮件。额外的信息原子和区块交易 费用奖励给 validator 和委托给的委托人 validators。 BurnAtomTx 交易可用于恢复任何 从储备池中按比例分配 token。 Genesis 上原子 tokens 和 validators 的初始分布 将捐给 Cosmos 筹款活动的捐助者 (75%),主要捐助者 (5%)、Cosmos 网络基金会 (10%) 和 ALL IN BITS, Inc (10%)。从创世开始,原子总数的 1/3 将 每年都会奖励给绑定的 validator 和委托人。 有关更多详细信息,请参阅 Cosmos 计划。 与 Bitcoin 或其他 proof-of-work blockchain 不同,Tendermint 由于 validator 的数量增加,blockchain 会变慢 通信复杂性。幸运的是,我们可以支持足够多的人 validators 打造强大的全球分布式 blockchain 具有非常快的交易确认时间和带宽,

存储和并行计算能力的增加,我们将能够 将来支持更多 validator。 在创世日,validator 的最大数量将设置为 100,并且这个数字将在10年内以13%的速度增长,并且 稳定在 300 validators。 尚未成为 validators 的 Atom 持有者可以通过以下方式成为 validators: 签署并提交 BondTx 交易。金额 作为抵押品提供的原子必须非零。任何人都可以成为 a validator 在任何时候,除非当前的大小 validator 设置大于 validator 的最大数量 允许。在这种情况下,交易仅在金额达到 原子数大于所持有的有效原子数 最小的 validator,其中有效原子包括委托原子。 当新的 validator 以这种方式替换现有的 validator 时, 现有的 validator 变得不活跃,所有原子和 委托原子进入脱键状态。 必须对 validator 处以任何处罚 有意或无意偏离制裁规定 协议。有些证据可以立即采纳,例如 在相同的高度和轮次处进行双重签名,或者违反 第 0 年:100  第一年:113  第二年:127  第三年:144  第四年:163  5 年:184  第六年:208  7 年:235  8 年:265  9 年:300  10 年:300  ...

“prevote-the-lock”(Tendermint 共识协议的规则)。 此类证据将导致 validator 失去良好信誉 及其键合原子以及 tokens 的比例份额 储备池——统称为“股份”——将被削减。 有时,由于区域原因,validators 将不可用 网络中断、电源故障或其他原因。如果,在任何 在过去的 ValidatorTimeoutWindow 块中,validator 的点 提交投票未包含在 blockchain 中超过  ValidatorTimeoutMaxAbsent 次,validator 将变为 不活动,并失去其 ValidatorTimeoutPenalty(默认 1%) 股份。 一些“恶意”行为不会产生明显可辨别的结果 blockchain 上的证据。在这些情况下,validator 可以 带外协调以强制这些恶意软件超时 validators,如果达成绝大多数共识。 在 Cosmos 集线器因 ≥⅓ 联盟而停止的情况下 投票权消失,或者在 ≥⅓ 联盟的情况下 投票权审查的恶意行为证据 进入blockchain,集线器必须通过硬分叉恢复 重组提案。 (链接至“分叉和审查攻击”)。 Cosmos 集线器 validators 可接受任何 token 类型或组合 作为处理交易的费用的类型。每个 validator 可以 主观设定想要的汇率,然后选择 无论它想要什么交易,只要 BlockGasLimit 是 没有超过。收取的费用减去下面指定的任何税费, 按比例重新分配给担保利益相关者 他们的键合原子,每个 ValidatorPayoutPeriod (默认 1 小时)。在收取的交易费用中,保留税(默认 2%)将 前往储备池增加储备池并 提高 Cosmos 网络的安全性和价值。这些 资金也可以根据决定进行分配 由治理体系制定。 将投票权委托给其他 validator 的 Atom 持有者 向受委托人 validator 支付佣金。委员会可以 由每个 validator 设置。 Cosmos 集线器的安全性取决于 底层 validator 以及委托人的委托选择。 为了鼓励发现并及早报告所发现的 漏洞,Cosmos 中心鼓励黑客发布 通过 ReportHackTx 交易成功利用该交易,该交易表示:“这 validator 被黑了。请将赏金发送至此地址”。之上 这样的漏洞,validator 和委托人将变得不活跃,  每个人的原子都会受到 HackPunishmentRatio(默认 5%) 削减,以及每个人原子的 HackRewardRatio(默认 5%) 将获得奖励至黑客的赏金地址。 validator 必须使用其备份密钥恢复剩余的原子。 为了防止该功能被滥用进行转账 未归属原子,已归属原子与未归属原子的部分 ReportHackTx 之前和之后的 validators 和委托人将 保持不变,黑客赏金将包括一些 未归属的原子,如果有的话。 Cosmos 中心由一个分布式组织运营,该组织 需要一个明确的治理机制 协调对 blockchain 的各种更改,例如变量

系统参数,以及软件升级和 宪法修正案。 所有 validator 负责对所有提案进行投票。未能 及时对提案进行投票将产生 validator 自动停用一段时间,称为  缺勤处罚期(默认 1 周)。 委托人自动继承被委托人的投票权 validator。该投票可能会被手动覆盖。未键合的原子 没有投票权。 每个提案都需要缴纳最低提案存款 (MinimumProposalDeposit)  tokens,可以是一个或多个tokens的组合 包括原子。对于每项提案,选民可以投票通过 押金。如果超过半数选民选择投票 存款(例如,因为该提案是垃圾邮件),存款将转到 储备池,除了被燃烧的任何原子。 对于每项提案,选民可以对以下选项进行投票: 是啊 力挺 不 强行反对 弃权 绝对多数赞成票或 YeaWithForce 票(或反对票或反对票) NayWithForce 投票)需要提案被决定为 通过(或判定失败),但 1/3+ 可以否决多数 通过“强力”投票做出决定。当绝对多数被否决时, 每个人都会因失去 VetoPenaltyFeeBlocks 而受到惩罚  (默认 1 天的区块)价值的费用(税费除外) 不会受到影响),以及否决多数票的一方

决定将受到失去 VetoPenaltyAtoms 的额外惩罚  (默认 0.1%)其原子。 此处定义的任何参数都可以通过以下命令更改 传递 ParameterChangeProposal。 原子可以被注入,储备池资金可以用在 通过赏金提案。 所有其他提案,例如升级协议的提案, 将通过通用的 TextProposal 进行协调。 参见计划。 blockchain 共识有很多创新, 过去几年的可扩展性。本节提供了一个简短的 对选定的一些重要问题进行的调查。 存在恶意参与者的共识是一个问题 可以追溯到 20 世纪 80 年代初,当时 Leslie Lamport 创造了 短语“拜占庭错误”指的是任意进程行为 与“崩溃故障”相比,偏离了预期的行为, 其中一个进程简单地崩溃了。发现了早期的解决方案 对于有上限的同步网络消息延迟,尽管实际使用仅限于高度 受控环境,例如飞机控制器和 通过原子钟同步的数据中心。直到 90 年代末,实用拜占庭容错 (PBFT) [11] 作为有效的部分同步共识引入 算法能够容忍多达 ⅓ 的进程行为 任意地。 PBFT 成为标准算法,催生了许多 变体,包括 IBM 最近创建的一个变体,作为 他们对超级账本的贡献。 Tendermint 共识对 PBFT 的主要好处是 Tendermint 具有改进和简化的底层结构, 其中一些是采用 blockchain 范式的结果。 Tendermint 区块必须按顺序提交,这可以避免 与 PBFT 相关的复杂性和通信开销 视图更改。在 Cosmos 和许多加密货币中,没有 需要允许块 N+i(其中 i >= 1)提交,当块 N 本身还没有承诺。如果带宽是阻止 N 的原因 尚未在 Cosmos 区域中提交,那么使用它无济于事 N+i 块的带宽共享投票。如果网络分区或 ofzine节点是区块N没有提交的原因,那么 无论如何,N+i 都不会承诺。 此外,将交易分批放入区块允许 应用程序状态的常规 Merkle-hashing,而不是 与 PBFT 的检查点方案一样的定期摘要。这允许 为轻客户端提供更快的可证明事务提交,并且速度更快 blockchain 之间的通信。 Tendermint Core 还包括许多优化和功能 超出 PBFT 中指定的范围。例如, validators 提出的区块被分成几个部分,默克尔化, 并以改善广播的方式传播八卦 性能(请参阅 LibSwift [19] 以获取灵感)。还有,嫩薄荷 Core 不做任何关于点对点的假设

只要 P2P 网络存在,连接性和功能就一直存在 弱连接。 虽然不是第一次部署 proof-of-stake (PoS),但 BitShares1.0 [12] 为 PoS 的研究和采用做出了巨大贡献 blockchains,特别是那些被称为“委托”PoS 的。在 比特股,利益相关者选举“见证人”,负责排序 并提交交易,以及“代表”,负责 协调软件更新和参数更改。 BitShares2.0旨在实现高性能(100k tx/s,1s 延迟)在理想条件下,每个块由单个签名 签名者和交易 ynality 花费的时间比 块间隔。规范规范仍在开发中。 利益相关者可以删除或更换行为不端的证人 每日进行,但没有重要的证人或证据 Tendermint PoS 中的委托人被削减 成功的双花攻击的情况。 基于 Ripple 首创的方法,Stellar [13] 雷尼德 联邦拜占庭协议模型,其中的过程 参与共识并不构成yxed和全球性的 已知集。相反,每个流程节点都会策划一个或多个 “仲裁切片”,每个切片构成一组可信进程。一个 Stellar 中的“quorum”被定义为包含以下内容的一组节点: 集合中的每个节点至少有一个仲裁片,这样 可以达成协议。 Stellar 机制的安全性依赖于以下假设 任意两个法定人数的交集非空,而 节点的可用性至少需要其仲裁片之一 完全由正确的节点组成,在之间创建一个权衡 使用可能难以平衡的大或小的仲裁片 无需对信任强加重大假设。最终,节点必须以某种方式选择足够的仲裁片 具有足够的容错能力(或任何“完整节点”,其中 论文的大部分结果取决于),并且唯一的 提供了确保这种配置是分层的策略 类似于边界网关协议 (BGP),互联网上的顶级 ISP 使用它来建立全球路由表,并且 浏览器用来管理 TLS 证书;都臭名昭著 因为他们的不安全感。 Stellar 论文中对基于 Tendermint 的权益证明系统的批评通过所描述的 token 策略得到了缓解 这里,发出了一种称为原子的新类型 token 代表对未来部分费用和奖励的要求。的 那么,基于 Tendermint 的 proof-of-stake 的优势是它的相对优势 简单性,同时仍然提供充分且可证明的安全性 保证。 BitcoinNG 是对 Bitcoin 的拟议改进,允许 对于垂直可扩展性的形式,例如增加块大小, 不会产生通常相关的负面经济后果 有了这样的变化,比如不成比例的巨大影响 关于小矿工。这种改进是通过分离来实现的 交易广播中的领导者选举:领导者是第一名 由 proof-of-work 在“微块”中选出,然后能够 广播要提交的交易,直到出现新的微块 被发现。这降低了所需的带宽要求 赢得 PoW 竞赛,让小矿工更公平地竞争, 并允许交易更定期地由 最后一个矿工创建一个微块。 Casper [16] 是一种提议的 proof-of-stake 共识算法 Ethereum。其主要运作模式是“投注共识”。由 让 validators 迭代地押注他们认为会出现的区块

根据其他赌注投入 blockchain 到目前为止,他们已经看到,最终可以实现 ynality。关联。 这是 Casper 团队的一个活跃研究领域。的 挑战在于构建一个可以 被证明是一种进化稳定的策略。主要好处是 Casper 与 Tendermint 相比可能在于提供“可用性” 过度一致性”——共识不需要>⅔法定人数 投票权 – 可能以牺牲提交速度或 实施复杂度。 Interledger 协议 [14] 严格来说并不是一个可扩展性解决方案。它 提供不同账本之间的临时互操作 系统通过松散耦合的双边关系网络。 与闪电网络一样,ILP 的目的是促进 支付,但它特别关注不同领域的支付 账本类型,并将原子交易机制扩展到 不仅包括 hash-锁,还包括法定人数的公证人(称为 原子传输协议)。后一种机制用于 在账本间交易中强制执行原子性类似于 Tendermint 的轻客户端 SPV 机制,因此说明 ILP 和 Cosmos/IBC 之间的区别是有保证的,并且 下面提供。 1. ILP中连接器的公证人不支持会员资格 变化,并且不允许在之间进行灵活的权重 公证人。另一方面,IBC 是专门为 blockchains,其中 validators 可以有不同的权重,并且 成员资格可以在整个过程中发生变化 blockchain。 2. 与闪电网络一样,ILP中的付款接收方 必须在线才能将确认信息发送回发件人。在一个token 通过 IBC 传输,即接收器的 validator 集 blockchain 负责提供确认,而不是 接收用户。 3. 最显着的区别是 ILP 的连接器不是 对付款负责或保持权威状态, 而在 Cosmos 中,集线器的 validator 是 IBC token 的状态转移以及权限 每个区域持有的 token 数量(但不是 区域内每个账户持有的 tokens)。这是 允许安全不对称的根本性创新 将 tokens 从一个区域转移到另一个区域; ILP 的类似物 Cosmos 中的连接器是持久且高度安全的 blockchain 分类账,Cosmos 中心。 4. ILP 中的账本间支付需要有一个 交换订单簿,因为不存在非对称转移 硬币从一个分类账到另一个分类账,仅转移价值或 市场等价物。 侧链 [15] 是一种提议的用于扩展 Bitcoin 的机制 通过“双向挂钩”的替代 blockchain 网络 Bitcoin blockchain。 (双向挂钩相当于 桥接。在 Cosmos 中,我们说“桥接”以区别于市场挂钩)。侧链允许比特币有效地从 Bitcoin blockchain 到侧链和后面,并允许 侧链新功能的实验。正如在 Cosmos Hub、侧链和 Bitcoin 作为轻客户端 彼此之间,使用 SPV 证明来确定硬币何时应该被 转移到侧链并返回。当然,从 Bitcoin 开始 使用 proof-of-work,以 Bitcoin 为中心的侧链受到影响 从 proof-of-work 作为一个 共识机制。此外,这是一个 Bitcoin-最大化主义 本身不支持各种 token 的解决方案和

区域间网络拓扑如 Cosmos 那样。也就是说,核心 双向挂钩的机制原理上是一样的 受雇于 Cosmos 网络。 Ethereum 目前正在研究多种不同的策略 将 Ethereum blockchain 的状态分片以寻址 可扩展性需求。这些努力的目标是维持 当前 Ethereum 虚拟机提供的抽象层 跨越共享状态空间。多项研究工作正在 此时正在进行。 [18][22] Cosmos 和 Ethereum 2.0 Mauve [22] 具有不同的设计目标。 Cosmos 特别是关于 tokens。紫红色是关于缩放 一般计算。 Cosmos 未绑定到 EVM,因此即使不同的虚拟机也可以 互操作。 Cosmos 让区域创建者确定谁验证该区域 区。 任何人都可以在 Cosmos 中启动一个新区域(除非治理 另有决定)。 集线器隔离区域故障,因此全局 token 不变量是 保存下来。 闪电网络是提议的 token 传输网络 在 Bitcoin blockchain (以及其他公共 blockchains),实现多个数量级的改进 通过移动大部分交易来提高交易吞吐量 在共识账本之外进入所谓的“支付渠道”。这是通过链上加密货币脚本实现的,该脚本 使各方能够签订双边国家合同,其中 状态可以通过共享数字签名和合约来更新 可以通过将证据发布到 blockchain 来关闭,a 这种机制最早是通过跨链原子交换而普及的。由 与多方、参与者开放支付渠道 闪电网络可以成为路由的焦点 他人支付,形成全连接的支付通道 网络,代价是资金被束缚在支付渠道上。 虽然闪电网络也可以轻松地跨 多个独立的 blockchain 允许价值转移 通过交易市场,它不能被用来不对称地 将 token 从一个 blockchain 转移到另一个。主要收益 这里描述的 Cosmos 网络的目的是启用这种直接 token 转账。也就是说,我们期望支付渠道和 闪电网络将与我们一起被广泛采用 token 传输机制,出于节省成本和隐私的原因。 隔离见证是一个 Bitcoin 改进提案链接, 旨在将每块交易吞吐量提高 2 倍或 3 倍, 同时使新节点的块同步速度更快。 该解决方案的出色之处在于它如何在 Bitcoin 当前协议的限制并允许软分叉 升级(即使用旧版本软件的客户端将 升级后继续使用)。 Tendermint,成为新的 协议,没有设计限制,所以它有不同的缩放比例 优先事项。 Tendermint 主要使用 BFT 循环算法 基于加密签名而不是挖掘,这 简单地允许通过多个并行进行水平缩放 blockchains,而定期、更频繁的块提交允许 垂直缩放也是如此。

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.

共识和技术细节

一个设计良好的共识协议应该提供一些 超出耐受能力时的保证 并且共识失败。这在经济上尤其必要 系统中,拜占庭行为可能会产生大量的经济影响 奖励。最重要的此类保证是一种责任形式,其中导致共识的过程 失败(即导致协议的客户端接受不同的值 - a fork)可以根据规则进行识别和惩罚 协议,或者可能是法律体系。当法律制度 不可靠或调用成本过高, validators 可能是 被迫缴纳保证金才能参加,以及那些 当恶意行为发生时,存款可以被撤销或削减 检测到 [10]。 请注意,这与 Bitcoin 不同,其中分叉是经常发生的 由于网络异步性和 ynding 的概率性质 部分 hash 碰撞。因为在很多情况下,恶意分叉是 由于异步,与分叉无法区分,Bitcoin 不能 可靠地实施分叉责任,而不是隐式的 矿工为开采孤立区块而支付的机会成本。 我们将投票阶段称为 PreVote 和 PreCommit。投票可以是 特定块或 Nil。我们称之为>⅔预投票的集合 对于同一轮 Polka 中的单个块,以及 >⅔ 的集合 在同一轮提交中预提交单个块。如果>⅔ 在同一轮中预提交为零,他们进入下一轮 圆形。 请注意,协议中的严格决定论会导致较弱的 同步假设,因为必须检测到错误的领导者并

跳过了。因此,validators 等待一段时间, TimeoutPropose,在 Prevote Nil 之前,以及值 TimeoutPropose 随着每一轮的增加而增加。进展通过 一轮的其余部分是完全异步的,因为进度只是 一旦 validator 收到来自 >⅔ 的网络消息。在实践中, 需要一个极其强大的对手才能无限期地挫败 弱同步假设(导致共识无法达成) 曾经提交过一个区块),这样做可以使更多 通过在每个上使用 TimeoutPropose 的随机值来实现困难 validator。 一组附加的约束或锁定规则,确保 网络最终将在每个高度只提交一个区块。任意 恶意尝试导致多个区块被提交 可以识别给定高度。首先,对块进行 PreCommit 必须以 Polka 的形式为该块提供合理性。 如果 validator 已经在 R_1 轮预提交了一个区块,我们 说他们被锁定在那个街区,波尔卡用来证明 R_2 轮的新 PreCommit 必须出现在 R_polka 轮中 其中 R_1 < R_polka <= R_2。其次,validators 必须提出 和/或对他们锁定的区块进行预投票。在一起,这些 条件确保 validator 不会在没有预提交的情况下进行预提交 有足够的证据作为正当理由,并且 validators PreCommit 已经无法为 PreCommit 提供证据 其他的东西。这既保证了安全性又保证了活跃性 共识算法。 此处描述了该协议的完整细节。 TendermintPoS 消除了同步所有区块头的需要,因为替代链(分叉)的存在意味着 ≥⅓ 担保权益可以被削减。当然,由于削减需要 有人分享分叉的证据,轻客户端应该存储 任何 block-hash 提交它看到的。此外,轻客户端可以定期与 validator 集的更改保持同步, 为了避免远程攻击(但其他解决方案是 可能)。 本着与 Ethereum 类似的精神,Tendermint 使应用程序能够 在每个块中嵌入一个全局 Merkle 根 hash ,从而轻松地允许 可验证的状态查询,例如帐户余额、价值 存储在合约中,或存在未花费的交易 输出,取决于应用程序的性质。 假设广播网络具有足够的弹性集合 和静态 validator 集,blockchain 中的任何分叉都可以 被发现并削减了违规 validator 的存款。这个 Vitalik Buterin 在 2014 年初提出的创新解决了 其他 proof-of-stake 的无利害关系问题 加密货币(参见相关工作)。但是,由于 validator 设置 必须能够在很长一段时间内改变原来的 validators 可能全部变为非绑定状态,因此可以自由 从创世块创建一条新链,不产生任何成本 他们不再锁定存款。这次攻击发生了 与短程攻击相比,称为远程攻击 (LRA) 范围攻击,当前绑定的 validator 会造成 分叉,因此会受到惩罚(假设分叉负责 BFT 像 Tendermint 共识这样的算法)。远程攻击是 通常被认为是对 proof-of-stake 的致命打击。 幸运的是,LRA 可以通过以下方式缓解。首先,对于一个 validator 解绑(从而收回其抵押存款 并且不再赚取参与共识的费用), 存款必须在一段时间内不可转让 称为“解绑期”,可能约为 几周或几个月。其次,为了保证轻客户端的安全,第一 当它连接到网络时,它必须验证最近的块-hash 针对可信来源,或者最好是多个来源。这个

这种情况有时被称为“弱主观性”。最后, 为了保持安全,它必须与最新的 validator 设置同步 最少与解绑期的长度一样频繁。这个 确保轻客户端知道 validator 的更改 在 validator 的资本解除绑定之前设置,因此不再 处于危险之中,这将使其能够通过执行来欺骗客户 通过从某个位置开始创建新块来进行远程攻击 它粘合的高度(假设它有足够的控制 许多早期的私钥)。 请注意,以这种方式克服 LRA 需要彻底修改 proof-of-work 的原始安全模型。在 PoW 中,是 假设轻客户端可以从 只需处理每个块头中的工作量证明即可随时获得可信创世块。然而,为了战胜上帝抵抗军,我们 要求轻客户端定期上线 跟踪 validator 集中的变化,并且第一时间他们 上网时他们必须特别小心地进行身份验证 他们从网络上听到的来自可信来源的信息。的 当然,后一个要求类似于 Bitcoin 的要求,其中 协议和软件还必须从受信任的机构获得 来源。 上述预防 LRA 的方法非常适合 validators 以及 Tendermint 支持的 blockchain 的完整节点,因为这些 节点旨在保持与网络的连接。的 该方法也适用于可以预期的轻客户端 经常与网络同步。然而,对于轻量级客户来说 预计不会经常访问互联网或 blockchain 网络,可以使用另一种解决方案来克服 圣主抵抗军。非 validator token 持有者可以将其 token 发布为 具有很长解绑期限的抵押品(例如更长的 超过 validators 的解绑期)并为轻客户端提供服务 使用第二种方法来证明当前和的有效性 过去的区块-hashes。虽然这些 token 不计入 blockchain 共识的安全性,但他们仍然可以为轻客户提供有力保障。如果历史区块-hash Ethereum 支持查询,任何人都可以绑定他们的 tokens 在专门设计的 smart contract 中并提供 付费认证服务,有效地为轻客户端 LRA 安全创造了市场。 由于块提交的定义,任何 ≥⅓ 的联盟 投票权可以通过是否关闭 blockchain 来阻止 blockchain 广播他们的选票。这样的联盟也可以审查 通过拒绝包含这些的块来特定交易 交易,尽管这会导致相当大的比例 的区块提案被拒绝,这将减慢速度 blockchain 的块提交,降低了其实用性和价值。 恶意联盟也可能会少量广播投票,以便 为了磨炼 blockchain 块,承诺几乎停止,或从事 这些攻击的任意组合。最后,它可能会导致 blockchain 通过双重签名或违反锁定来分叉 规则。 如果全球活跃的对手也参与其中,它可能会分裂 网络的方式可能会出现错误 validator 的子集导致了速度下降。这不是 只是 Tendermint 的限制,而是所有的限制 其网络可能由某个人控制的共识协议 积极的对手。 对于这些类型的攻击,validator 的子集应该 通过外部手段协调签署重组提案 选择一个分叉(及其任何证据)和初始子集 validator 及其签名。签署此类重组提案的验证者将放弃所有其他分叉上的抵押品。客户应该 验证重组提案上的签名,验证任何证据, 并做出判断或提示最终用户做出决定。对于 例如,手机钱包应用程序可能会提示用户安全

警告,而冰箱可以接受任何重组建议 由原始 validator 的 +1/2 投票权签署。 没有非同步的拜占庭容错算法可以来 当 ≥⅓ 的投票权不诚实时达成共识,但仍存在分叉 假设 ≥⅓ 的投票权已经被不诚实 没有正当理由的双重签名或锁更改。所以,签 重组提案是一个协调问题,无法解决 通过任何非同步协议解决(即自动,并且 不对可靠性做出假设 底层网络)。目前,我们将重组提案的协调问题留给人类通过社会共识进行协调 在网络媒体上。验证者必须注意确保 在签署重组提案之前没有剩余的网络分区,以避免签署两个相互冲突的重组提案的情况。 假设外部协调介质和协议是 稳健,因此与审查相比,分叉更受关注 攻击。 除了分叉和审查,需要≥⅓拜占庭 投票权,超过⅔投票权的联盟可以承诺 任意的、无效的状态。这是任何 (BFT) 的特征 共识系统。与创建分叉的双重签名不同 通过易于验证的证据,检测某人的承诺 无效状态需要非验证节点来验证整个块, 这意味着他们保留状态的本地副本并执行 每笔交易,独立计算状态根 他们自己。一旦检测到,处理此类故障的唯一方法 是通过社会共识。例如,在 Bitcoin 的情况下 失败了,是否由于软件 bug 导致分叉(如 3 月份 2013),或者由于拜占庭行为而提交无效状态 矿工(截至 2015 年 7 月),紧密联系的社区 企业、开发商、矿工和其他组织 关于什么是手动操作建立了社会共识参与者需要治愈网络。此外,由于 Tendermint blockchain 的 validator 可能预计为 无效国家的承诺甚至可能是可识别的 如果需要的话,可以受到法律或某些外部判例的惩罚。 ABCI 由 3 种主要消息类型组成,这些消息类型从 应用程序的核心。应用程序回复 相应的响应消息。 AppendTx 消息是应用程序的主力。每个 blockchain 中的事务随此消息一起传递。的 应用程序需要验证收到的每笔交易 针对当前状态、应用程序协议的 AppendTx 消息, 以及交易的加密凭证。经过验证的 然后事务需要更新应用程序状态 - 通过 将值绑定到键值存储中,或者通过更新 UTXO 数据库。 CheckTx 消息与 AppendTx 类似,但仅适用于 验证交易。 Tendermint Core 的内存池首次检查 与 CheckTx 交易的有效性,并且仅中继有效 与其同行的交易。应用程序可以检查递增 nonce 在交易中,并在 CheckTx 上返回错误,如果 nonce 已旧。 “提交”消息用于计算密码 对当前应用程序状态的承诺,将被放入 下一个块头。这有一些方便的属性。 更新该状态时的不一致现在将显示为 blockchain fork 捕获整个类的编程 错误。这也简化了安全轻量化的开发 客户,因为 Merkle-hash 证明可以通过检查来验证 区块-hash,区块-hash由法定人数签名 validators(按投票权)。

额外的 ABCI 消息允许应用程序跟踪 并更改 validator 设置,并让应用程序接收 区块信息,例如高度和提交投票。 ABCI 请求/响应是简单的 Protobuf 消息。检查 出架构yle。 论据: 数据([]byte):请求交易字节 返回: 代码 (uint32):响应代码 数据([]byte):结果字节(如果有) 日志(字符串):调试或错误消息 用途:

追加并运行事务。如果交易有效, 返回 CodeType.OK 论据: 数据([]byte):请求交易字节 返回: 代码 (uint32):响应代码 数据([]byte):结果字节(如果有) 日志(字符串):调试或错误消息 用途:

验证交易。此消息不应改变 状态。交易首先通过 CheckTx 运行 广播到内存池层中的对等点。你可以使 CheckTx 半状态并在提交时清除状态或 BeginBlock ,允许依赖的交易序列 在同一个街区。

返回: 数据([]byte):Merkle 根 hash 日志(字符串):调试或错误消息 用途:

返回应用程序状态的 Merkle 根 hash。 论据: Data ([]byte) :查询请求字节 返回: 代码 (uint32):响应代码 数据([]byte):查询响应字节 日志(字符串):调试或错误消息 用途:

刷新响应队列。实施的应用程序 types.Application 不需要实现此消息 - 它是 由项目处理。 返回: 数据([]byte):信息字节 用途:

返回有关应用程序状态的信息。应用 具体。 论据: Key(字符串):要设置的键

值(字符串):为键设置的值 返回: 日志(字符串):调试或错误消息 用途:

设置应用程序选项。例如。键=“模式”,值=“mempool” 内存池连接,或 Key=“mode”,Value=“consensus” 共识连接。其他选项是特定于应用程序的。 论据: 验证器([]Validator):初始起源-validators 用途:

创世时被召唤一次 论据: 高度 (uint64):起始区块高度 用途:

表示新块的开始。在任何之前调用 追加 Txs。 论据: 高度 (uint64):结束的区块高度 返回: 验证器([]Validator):将 validators 更改为新的 投票权(0表示删除) 用途:

发出块结束的信号。毕竟在每次提交之前调用 交易 有关更多详细信息,请参阅 ABCI 存储库。发件人可能想要的原因有多种 接收链对数据包传送的确认。 例如,发送者可能不知道消息的状态 目标链(如果预计会出现故障)。或者,发件人可以 想要对数据包施加超时(使用 MaxHeight  数据包产量),而任何目标链都可能遭受拒绝服务攻击,传入数量突然激增 数据包。 在这些情况下,发件人可以要求送达确认 将初始数据包状态设置为 AckPending。那么,就是 接收链有责任通过包括 Merkle 应用程序中缩写为 IBCPacket hash。 首先,在“Hub”上发布 IBCBlockCommit 和 IBCPacketTx 这证明了“Zone1”上存在 IBCPacket。这么说  IBCPacketTx 具有以下值: FromChainID:“Zone1” FromBlockHeight : 100 (比如说) 数据包:IBC数据包:

标头:IBCPacketHeader: 源链ID:“Zone1” 目标链 ID:“Zone2” 数量:200(比如说) 状态:确认待处理 类型:“硬币” MaxHeight:350(假设“Hub”当前高度为 300) Payload : <“硬币”有效负载的字节> 接下来,在“Zone2”上发布 IBCBlockCommit 和 IBCPacketTx 这证明了“Hub”上存在IBCPacket。这么说  IBCPacketTx 具有以下值: FromChainID : “Hub” 从块高度:300 数据包: IBC 数据包: 标头:IBCPacketHeader: 源链ID:“Zone1” 目标链 ID:“Zone2” 数量:200 状态:确认待处理 类型:“硬币” 最大高度:350 有效负载:<“硬币”有效负载的相同字节> 接下来,“Zone2”必须在其应用程序-hash中包含一个缩写数据包 显示 AckSent 的新状态。 IBCBlockCommit 和  IBCPacketTx 被发布回“Hub”,证明存在 “Zone2”上的缩写IBCPacket。说 IBCPacketTx  具有以下值: FromChainID:“Zone2”

FromBlockHeight : 400 (比如说) 数据包: IBC 数据包: 标头:IBCPacketHeader: 源链ID:“Zone1” 目标链 ID:“Zone2” 数量:200 状态:已发送 类型:“硬币” 最大高度:350 PayloadHash : <同一“硬币”有效负载的 hash 字节> 最后,“集线器”必须更新数据包的状态  AckPending 到 AckReceived。这种新的分析状态的证据 应该回到“Zone2”。假设 IBCPacketTx 具有以下内容 值: FromChainID : “Hub” 从块高度:301 数据包: IBC 数据包: 标头:IBCPacketHeader: 源链ID:“Zone1” 目标链 ID:“Zone2” 数量:200 状态:已收到 类型:“硬币” 最大高度:350 PayloadHash : <同一“硬币”有效负载的 hash 字节> 同时,“Zone1”可能乐观地认为交付成功 除非有相反的证据证明是“硬币”包 “枢纽”。在上面的示例中,如果“Hub”未收到 AckSent

块 350 来自“Zone2”的状态,它会设置状态 自动超时。这个超时的证据可以得到 发回“Zone1”,并且可以返回任何 token。 支持两种类型的 Merkle tree Tendermint/Cosmos 生态系统:简单树和 IAVL+ 树。 简单树是一个静态元素列表的 Merkle tree 。如果 项目数不是 2 的幂,有些叶子将位于 不同的级别。简单树试图保持树的两侧 高度相同,但左侧可能更大。这个 Merkle tree 是 用于对区块的交易进行 Merkle 化,顶层 应用程序状态根的元素。IAVL+数据结构的目的是提供持久性 应用程序状态中键值对的存储,以便 可以有效地计算确定性 Merkle 根 hash。的 使用 AVL 算法的变体来平衡树,并且所有 操作是 O(log(n))。 在AVL树中,任意节点的两个子子树的高度 最多相差一。每当违反此条件时 更新时,通过创建 O(log(n)) 个新节点来重新平衡树 指向旧树中未修改的节点。在原来的AVL中 算法中,内部节点也可以保存键值对。 AVL+ 算法(注意加号)修改AVL算法以保留所有 叶节点上的值,而仅使用分支节点来存储键。 这简化了算法,同时保留了 Merkle hash 踪迹 短。 AVL+ 树类似于 Ethereum 的 Patricia 尝试。有 权衡。键在插入之前不需要 hashed IAVL+ 树,因此这可以在键中提供更快的有序迭代 空间可能有利于某些应用程序。逻辑更简单 实现,只需要两种类型的节点——内部节点和 叶节点。 Merkle 证明平均较短,是                 *                 / \               /     \             /         \           /             \          *               *         / \             / \        /   \           /   \       /     \         /     \      *       *       *       h6     / \     / \     / \    h0 h1 h2 h3 h4 h5    具有 7 个元素的 SimpleTree

平衡二叉树。另一方面,默克尔根 IAVL+树取决于更新的顺序。 我们将支持额外的高效 Merkle tree,例如 当二进制变体变为 Ethereum 的 Patricia Trie 时 可用。 在规范的实现中,交易被流式传输到 Cosmos 集线器应用程序通过 ABCI 接口。 Cosmos Hub将接受一些主要交易 类型,包括 SendTx、BondTx、UnbondTx、ReportHackTx、  SlashTx、BurnAtomTx、ProposalCreateTx 和 ProposalVoteTx、 这是相当不言自明的,并将记录在 本文的未来修订。在这里我们记录了两个主要的 IBC 的交易类型:IBCBlockCommitTx 和 IBCPacketTx。 IBCBlockCommitTx 交易由以下部分组成: ChainID(字符串):blockchain 的 ID BlockHash ([]byte) :块 hash 字节,Merkle 根 其中包括应用程序-hash BlockPartsHeader (PartSetHeader) :块部件集标头 字节,仅需要验证投票签名 BlockHeight (int) :提交的高度 BlockRound (int) :提交的轮次 提交([]投票):>⅔ Tendermint 预提交投票表明 包含一个块提交 ValidatorsHash ([]byte) :新的 Merkle 树根 hash validator 设置

ValidatorsHashProof (SimpleProof):一个 SimpleTree Merkleproof,用于根据 BlockHash 证明 ValidatorsHash AppHash ([]byte) :IAVLTree Merkle 树根 hash 应用状态 AppHashProof (SimpleProof):SimpleTree Merkle 证明 对照 BlockHash 证明 AppHash IBC数据包由以下部分组成: 标头 (IBCPacketHeader) :数据包标头 Payload ([]byte) :数据包有效负载的字节。可选 PayloadHash ([]byte) :数据包字节的 hash 。 可选 Payload 或 PayloadHash 之一必须存在。 hash IBCPacket 的 是两个项目的简单 Merkle 根,即 Header  和有效负载。没有完整负载的 IBC 数据包称为 缩写数据包。 IBCPacketHeader 由以下部分组成: SrcChainID(字符串):源 blockchain ID DstChainID(字符串):目的地 blockchain ID Number(int):所有数据包的唯一编号 状态(枚举):可以是 AckPending 、 AckSent 之一, AckReceived 、 NoAck 或超时 类型(字符串):类型取决于应用程序。 Cosmos 保留“coin”数据包类型 MaxHeight (int) :如果状态不是 NoAckWanted 或 AckReceived 到了这个高度,状态就变成 Timeout 。可选 IBCPacketTx 交易由以下部分组成:FromChainID(字符串):blockchain 的 ID,即 提供此数据包;不一定是来源 FromBlockHeight (int) : blockchain 高度,其中 以下数据包包含(Merkle 化)在块 hash 中 源链 Packet (IBCPacket) :数据包,其状态可能是一个 AckPending 、 AckSent 、 AckReceived 、 NoAck 或 Timeout PacketProof (IAVLProof):用于证明的 IAVLTree Merkle-proof 数据包的 hash 与源链的 AppHash 相对应 给定高度 从“Zone1”到“Zone2”发送数据包的顺序 通过“集线器”的情况如{图X}所示。首先,一个 IBCPacketTx  向“Hub”证明该数据包包含在应用程序状态中 “1区”。然后,另一个 IBCPacketTx 向“Zone2”证明 数据包包含在“Hub”的应用程序状态中。在此期间 过程中,IBCPacket 的结果是相同的:SrcChainID 是 始终为“Zone1”,DstChainID 始终为“Zone2”。 PacketProof 必须具有正确的 Merkle-proof 路径,如下所示 如下: 当“Zone1”想要通过“Hub”向“Zone2”发送数据包时, 无论数据包在“Zone1”、“Hub”还是“Zone2”上进行 Merkleized,IBCPacket 数据都是相同的。唯一可变的yield是  跟踪递送的状态。 我们感谢我们的朋友和同行在概念化方面提供的帮助, 审查并为我们与 Tendermint 的合作提供支持 和 Cosmos。 IBC/<源链ID>/<目标链ID>/<编号>

SkuChain 的 Zaki Manian 在格式化和 措辞,特别是在 ABCI 部分下 Althea 的 Jehan Tremback 和达斯汀·拜因顿 (Dustin Byington) 提供的帮助 初始迭代 Honey Badger 的 Andrew Miller 对共识的反馈 Greg Slepak 对共识和措辞的反馈 还要感谢 Bill Gleim 和 Seunghwan Han 所做的各种努力 贡献。 此处提供您的姓名和组织以供您贡献 1 Bitcoin:https://bitcoin.org/bitcoin.pdf 2 零现金:http://zerocash-project.org/paper 3Ethereum:https://github.com/ethereum/wiki/wiki/WhitePaper 4DAO: 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 闪电网络:https://lightning.network/lightningnetwork-paper-DRAFT-0.5.pdf 8 嫩薄荷: https://github.com/tendermint/tendermint/wiki 9 FLP 不可能: 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 种比特股:https://bitshares.org/technology/delegatedproof-of-stake-consensus/

13Stellar: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/ 17ABCI:https://github.com/tendermint/abci 18 Ethereum 分片: https://github.com/ethereum/EIPs/issues/53 19 LibSwift: 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 瘦客户端安全: 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

Ø è

Consenso e detalhes técnicos

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

³ é