Cosmos : un réseau de registres distribués

Cosmos: A Network of Distributed Ledgers

Tác giả Jae Kwon and Ethan Buchman · 2016

Introduction

Introduction

The combined success of the open-source ecosystem, decentralized yle-sharing, and public cryptocurrencies has inspired an understanding that decentralized internet protocols can be used to radically improve socio-economic infrastructure. We have seen specialized blockchain applications like Bitcoin [1] (a cryptocurrency), Zerocash [2] (a cryptocurrency for privacy), and generalized smart contract platforms such as Ethereum [3], with countless distributed applications for the Etherium Virtual Machine (EVM) such as Augur (a prediction market) and TheDAO [4] (an investment club). To date, however, these blockchains have suffered from a number of drawbacks, including their gross energy inefyciency, poor or limited performance, and immature governance mechanisms. Proposals to scale Bitcoin’s transaction throughput, such as Segregated-Witness [5] and BitcoinNG [6], are vertical scaling solutions that remain limited by the capacity of a single physical machine, in order to ensure the property of complete auditability. The Lightning Network [7] can help scale Bitcoin transaction

volume by leaving some transactions off the ledger completely, and is well suited for micropayments and privacy-preserving payment rails, but may not be suitable for more generalized scaling needs. An ideal solution is one that allows multiple parallel blockchains to interoperate while retaining their security properties. This has proven difycult, if not impossible, with proof-of-work. Merged mining, for instance, allows the work done to secure a parent chain to be reused on a child chain, but transactions must still be validated, in order, by each node, and a merge-mined blockchain is vulnerable to attack if a majority of the hashing power on the parent is not actively merge-mining the child. An academic review of alternative blockchain network architectures is provided for additional context, and we provide summaries of other proposals and their drawbacks in Related Work. Here we present Cosmos, a novel blockchain network architecture that addresses all of these problems. Cosmos is a network of many independent blockchains, called zones. The zones are powered by Tendermint Core [8], which provides a high-performance, consistent, secure PBFT-like consensus engine, where strict forkaccountability guarantees hold over the behaviour of malicious actors. Tendermint Core’s BFT consensus algorithm is well suited for scaling public proof-of-stake blockchains. The yrst zone on Cosmos is called the Cosmos Hub. The Cosmos Hub is a multi-asset proof-of-stake cryptocurrency with a simple governance mechanism which enables the network to adapt and upgrade. In addition, the Cosmos Hub can be extended by connecting other zones. The hub and zones of the Cosmos network communicate with each other via an inter-blockchain communication (IBC) protocol, a kind of virtual UDP or TCP for blockchains. Tokens can be transferred from one zone to another securely and quickly

without the need for exchange liquidity between zones. Instead, all inter-zone token transfers go through the Cosmos Hub, which keeps track of the total amount of tokens held by each zone. The hub isolates each zone from the failure of other zones. Because anyone can connect a new zone to the Cosmos Hub, zones allow for future-compatibility with new blockchain innovations. In this section we describe the Tendermint consensus protocol and the interface used to build applications with it. For more details, see the appendix. In classical Byzantine fault-tolerant (BFT) algorithms, each node has the same weight. In Tendermint, nodes have a non-negative amount of voting power, and nodes that have positive voting power are called validators. Validators participate in the consensus protocol by broadcasting cryptographic signatures, or votes, to agree upon the next block. Validators’ voting powers are determined at genesis, or are changed deterministically by the blockchain, depending on the application. For example, in a proof-of-stake application such as the Cosmos Hub, the voting power may be determined by the amount of staking tokens bonded as collateral. NOTE: Fractions like ⅔ and ⅓ refer to fractions of the total voting power, never the total number of validators, unless all the validators have equal weight. \(> 2/3\) means “more than ⅔”, \(\geq 1/3\) means “at least ⅓”. Tendermint is a partially synchronous BFT consensus protocol derived from the DLS consensus algorithm [20]. Tendermint is

notable for its simplicity, performance, and fork-accountability. The protocol requires a yxed known set of validators, where each validator is identiyed by their public key. Validators attempt to come to consensus on one block at a time, where a block is a list of transactions. Voting for consensus on a block proceeds in rounds. Each round has a round-leader, or proposer, who proposes a block. The validators then vote, in stages, on whether to accept the proposed block or move on to the next round. The proposer for a round is chosen deterministically from the ordered list of validators, in proportion to their voting power. The full details of the protocol are described here. Tendermint’s security derives from its use of optimal Byzantine fault-tolerance via super-majority (\(> 2/3\)) voting and a locking mechanism. Together, they ensure that: \(\geq 1/3\) voting power must be Byzantine to cause a violation of safety, where more than two values are committed. if any set of validators ever succeeds in violating safety, or even attempts to do so, they can be identiyed by the protocol. This includes both voting for conzicting blocks and broadcasting unjustiyed votes. Despite its strong guarantees, Tendermint provides exceptional performance. In benchmarks of 64 nodes distributed across 7 datacenters on 5 continents, on commodity cloud instances, Tendermint consensus can process thousands of transactions per second, with commit latencies on the order of one to two seconds. Notably, performance of well over a thousand transactions per second is maintained even in harsh adversarial conditions, with validators crashing or broadcasting maliciously crafted votes. See the ygure below for details.

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

A major beneyt of Tendermint’s consensus algorithm is simpliyed light client security, making it an ideal candidate for mobile and internet-of-things use cases. While a Bitcoin light client must sync chains of block headers and ynd the one with the most proof of work, Tendermint light clients need only to keep up with changes to the validator set, and then verify the \(> 2/3\) PreCommits in the latest block to determine the latest state. Succinct light client proofs also enable inter-blockchain communication. Tendermint has protective measures for preventing certain notable attacks, like long-range-nothing-at-stake double spends and censorship. These are discussed more fully in the appendix.

The Tendermint consensus algorithm is implemented in a program called Tendermint Core. Tendermint Core is an application-agnostic “consensus engine” that can turn any deterministic blackbox application into a distributedly replicated blockchain. Tendermint Core connects to blockchain applications via the Application Blockchain Interface (ABCI) [17]. Thus, ABCI allows for blockchain applications to be programmed in any language, not just the programming language that the consensus engine is written in. Additionally, ABCI makes it possible to easily swap out the consensus layer of any existing blockchain stack. We draw an analogy with the well-known cryptocurrency Bitcoin. Bitcoin is a cryptocurrency blockchain where each node maintains a fully audited Unspent Transaction Output (UTXO) database. If one wanted to create a Bitcoin-like system on top of ABCI, Tendermint Core would be responsible for Sharing blocks and transactions between nodes Establishing a canonical/immutable order of transactions (the blockchain) Meanwhile, the ABCI application would be responsible for Maintaining the UTXO database Validating cryptographic signatures of transactions Preventing transactions from spending non-existent funds Allowing clients to query the UTXO database Tendermint is able to decompose the blockchain design by offering a very simple API between the application process and consensus process.

Introduction

Le succès combiné de l'écosystème open source, le partage de fichiers décentralisé et les crypto-monnaies publiques ont a inspiré une compréhension que les protocoles Internet décentralisés peut être utilisé pour améliorer radicalement les infrastructures socio-économiques. Nous avons vu des applications blockchain spécialisées comme Bitcoin [1] (un crypto-monnaie), Zerocash [2] (une crypto-monnaie pour la confidentialité), et plateformes smart contract généralisées telles que Ethereum [3], avec d'innombrables applications distribuées pour l'Etherium Virtual Machine (EVM) telle qu'Augur (un marché de prédiction) et TheDAO [4] (un club d'investissement). Cependant, à ce jour, ces blockchain ont souffert de plusieurs d'inconvénients, y compris leur inefficacité énergétique flagrante, leur mauvaise ou des performances limitées et des mécanismes de gouvernance immatures. Propositions visant à augmenter le débit des transactions de Bitcoin, telles que Les témoins séparés [5] et BitcoinNG [6] sont à mise à l'échelle verticale. des solutions qui restent limitées par la capacité d’un seul organisme physique machine, afin de garantir la propriété d'une auditabilité complète. Le Lightning Network [7] peut aider à faire évoluer la transaction Bitcoin

volume en laissant certaines transactions hors du grand livre, et est bien adapté aux micropaiements et à la préservation de la confidentialité rails de paiement, mais peuvent ne pas convenir à des applications plus généralisées besoins de mise à l’échelle. Une solution idéale est celle qui permet à plusieurs blockchain parallèles de interopérer tout en conservant leurs propriétés de sécurité. Cela a s'est avéré difficile, voire impossible, avec proof-of-work. Fusionné l'exploitation minière, par exemple, permet au travail effectué de sécuriser un parent chaîne à réutiliser sur une chaîne enfant, mais les transactions doivent toujours être validé, dans l'ordre, par chaque nœud, et un blockchain fusionné est vulnérable aux attaques si la majorité du pouvoir hashing sur le le parent ne fusionne pas activement l'enfant. Une revue académique d'architectures de réseau blockchain alternatives sont fournies contexte supplémentaire, et nous fournissons des résumés d’autres propositions et leurs inconvénients dans les travaux connexes. Nous présentons ici Cosmos, une nouvelle architecture réseau blockchain qui répond à tous ces problèmes. Cosmos est un réseau de nombreux des blockchain indépendants, appelés zones. Les zones sont alimentées par Tendermint Core [8], qui fournit une haute performance, moteur de consensus cohérent et sécurisé de type PBFT, où des garanties strictes de responsabilité fork s'appliquent au comportement des éléments malveillants. acteurs. L'algorithme de consensus BFT de Tendermint Core est bien adapté pour la mise à l'échelle des proof-of-stake blockchain publics. La première zone sur Cosmos est appelée le hub Cosmos. Le Cosmos Hub est une crypto-monnaie proof-of-stake multi-actifs avec un simple mécanisme de gouvernance qui permet au réseau de s’adapter et mise à niveau. De plus, le hub Cosmos peut être étendu de connecter d’autres zones. Le hub et les zones du réseau Cosmos communiquent avec entre eux via un protocole de communication inter-blockchain (IBC), une sorte d'UDP ou TCP virtuel pour les blockchain. Les jetons peuvent être transféré d’une zone à une autre de manière sécurisée et rapidesans qu’il soit nécessaire d’échanger des liquidités entre zones. Au lieu de cela, tous les transferts inter-zones token passent par le Hub Cosmos, qui garde une trace du montant total de tokens détenu par chaque zone. Le Le hub isole chaque zone de la défaillance des autres zones. Parce que n'importe qui peut connecter une nouvelle zone au hub Cosmos, les zones le permettent pour une compatibilité future avec les nouvelles innovations blockchain. Dans cette section, nous décrivons le protocole de consensus Tendermint et l'interface utilisée pour créer des applications avec. Pour plus détails, voir l'annexe. Dans les algorithmes byzantins classiques de tolérance aux pannes (BFT), chaque nœud a le même poids. Dans Tendermint, les nœuds ont une valeur non négative quantité de pouvoir de vote et nœuds qui ont un vote positif puissance sont appelés validators. Les validateurs participent au protocole de consensus en diffusant des signatures cryptographiques, ou votes, pour se mettre d’accord sur le prochain bloc. Les pouvoirs de vote des validateurs sont déterminés dès la genèse, ou sont modifié de manière déterministe par le blockchain, en fonction du demande. Par exemple, dans une application proof-of-stake telle que le Cosmos Hub, le pouvoir de vote peut être déterminé par le montant de staking tokens cautionné en garantie. REMARQUE : Les fractions telles que ⅔ et ⅓ font référence à des fractions du total des votes. puissance, jamais le nombre total de validator, à moins que tous les validator ont un poids égal. >⅔ signifie « plus de ⅔ », ≥⅓ signifie « au moins ⅓”. Tendermint est un protocole de consensus BFT partiellement synchrone dérivé de l'algorithme de consensus DLS [20]. La menthe tendre est

remarquable par sa simplicité, ses performances et sa responsabilité fork. Le protocole nécessite un ensemble connu et fixe de validator, où chaque validator est identifié par sa clé publique. Les validateurs tentent de parvenir à un consensus sur un bloc à la fois, où un bloc est une liste de transactions. Le vote pour le consensus sur un bloc se déroule dans tours. Chaque tour a un leader, ou proposant, qui propose un bloc. Les validator votent ensuite, par étapes, pour savoir si pour accepter le blocage proposé ou passer au tour suivant. Le le proposant pour un tour est choisi de manière déterministe parmi les liste des validator, proportionnellement à leur pouvoir de vote. Les détails complets du protocole sont décrits ici. La sécurité de Tendermint découle de son utilisation optimale du byzantin tolérance aux pannes via un vote à super majorité (>⅔) et un verrouillage mécanisme. Ensemble, ils veillent à ce que : ≥⅓ du pouvoir de vote doit être byzantin pour provoquer une violation de la sécurité, où plus de deux valeurs sont engagées. si un ensemble de validator réussit à violer la sécurité, ou même tente de le faire, ils peuvent être identifiés par le protocole. Ceci comprend à la fois le vote pour les blocs conflictuels et la diffusion votes injustifiés. Malgré ses fortes garanties, Tendermint offre des performances. Dans des benchmarks de 64 nœuds répartis sur 7 des datacenters sur les 5 continents, sur des instances cloud commodités, Le consensus Tendermint peut traiter des milliers de transactions par deuxièmement, avec des latences de validation de l’ordre d’une à deux secondes. Notamment, la performance de plus d'un millier de transactions par la seconde est maintenue même dans des conditions adverses difficiles, avec validators plante ou diffuse des votes frauduleux. Voir la figure ci-dessous pour plus de détails.

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

Un avantage majeur de l’algorithme de consensus de Tendermint est la simplification sécurité client légère, ce qui en fait un candidat idéal pour les applications mobiles et cas d'utilisation de l'Internet des objets. Alors qu'un client léger Bitcoin doit se synchroniser chaînes d'en-têtes de bloc et trouver celle avec le plus de preuves de fonctionnent, les clients légers de Tendermint n'ont qu'à suivre les changements à l'ensemble validator, puis vérifiez les >⅔ PreCommits dans le dernier bloc pour déterminer le dernier état. Des épreuves client légères et succinctes permettent également d'inter-blockchain communications. Tendermint dispose de mesures de protection pour empêcher certains attaques notables, comme les doubles dépenses à longue portée sans enjeu et la censure. Ceux-ci sont discutés plus en détail dans l’annexe.L'algorithme de consensus Tendermint est implémenté dans un programme appelé Tendermint Core. Tendermint Core est un « moteur de consensus » indépendant des applications, capable de transformer n'importe quelle application de boîte noire déterministe dans une application répliquée de manière distribuée blockchain. Tendermint Core se connecte aux applications blockchain via l'interface Application Blockchain (ABCI) [17]. Ainsi, ABCI permet de programmer des applications blockchain dans n'importe quel langage, pas seulement le langage de programmation que le consensus moteur est écrit. De plus, ABCI permet de facilement échangez la couche de consensus de toute pile blockchain existante. Nous faisons une analogie avec la célèbre crypto-monnaie Bitcoin. Bitcoin est une crypto-monnaie blockchain où chaque nœud conserve une base de données entièrement auditée sur les résultats des transactions non dépensées (UTXO). Si on voulait créer un système de type Bitcoin au-dessus de ABCI, Tendermint Core serait responsable de Partage de blocs et de transactions entre nœuds Établir un ordre canonique/immuable des transactions (le blockchain) Pendant ce temps, l'application ABCI serait chargée de Maintenance de la base de données UTXO Validation des signatures cryptographiques des transactions Empêcher les transactions de dépenser des fonds inexistants Autoriser les clients à interroger la base de données UTXO Tendermint est capable de décomposer la conception blockchain en offrant une API très simple entre le processus de candidature et processus de consensus.

Cosmos Architecture

Cosmos Architecture

Cosmos is a network of independent parallel blockchains that are each powered by classical BFT consensus algorithms like Tendermint 1. The yrst blockchain in this network will be the Cosmos Hub. The Cosmos Hub connects to many other blockchains (or zones) via a novel inter-blockchain communication protocol. The Cosmos Hub tracks numerous token types and keeps record of the total number of tokens in each connected zone. Tokens can be transferred from one zone to another securely and quickly without the need for a liquid exchange between zones, because all inter-zone coin transfers go through the Cosmos Hub. This architecture solves many problems that the blockchain space faces today, such as application interoperability, scalability, and seamless upgradability. For example, zones derived from Bitcoind, Go-Ethereum, CryptoNote, ZCash, or any blockchain system can be plugged into the Cosmos Hub. These zones allow Cosmos to scale inynitely to meet global transaction demand. Zones are also a great yt for a distributed exchange, which will be supported as well. Cosmos is not just a single distributed ledger, and the Cosmos Hub isn’t a walled garden or the center of its universe. We are designing a protocol for an open network of distributed ledgers that can serve as a new foundation for future ynancial systems, based on principles of cryptography, sound economics, consensus theory, transparency, and accountability. The Cosmos Hub is the yrst public blockchain in the Cosmos Network, powered by Tendermint’s BFT consensus algorithm. The Tendermint open-source project was born in 2014 to address the speed, scalability, and environmental issues of Bitcoin’s proof-ofwork consensus algorithm. By using and improving upon proven

BFT algorithms developed at MIT in 1988 [20], the Tendermint team was the yrst to conceptually demonstrate a proof-of-stake cryptocurrency that addresses the nothing-at-stake problem suffered by yrst-generation proof-of-stake cryptocurrencies such as NXT and BitShares1.0. Today, practically all Bitcoin mobile wallets use trusted servers to provide them with transaction veriycation. This is because proofof-work requires waiting for many conyrmations before a transaction can be considered irreversibly committed. Doublespend attacks have already been demonstrated on services like CoinBase. Unlike other blockchain consensus systems, Tendermint offers instant and provably secure mobile-client payment veriycation. Since the Tendermint is designed to never fork at all, mobile wallets can receive instant transaction conyrmation, which makes trustless and practical payments a reality on smartphones. This has signiycant ramiycations for Internet of Things applications as well. Validators in Cosmos have a similar role to Bitcoin miners, but instead use cryptographic signatures to vote. Validators are secure, dedicated machines that are responsible for committing blocks. Non-validators can delegate their staking tokens (called “atoms”) to any validator to earn a portion of block fees and atom rewards, but they incur the risk of getting punished (slashed) if the delegate validator gets hacked or violates the protocol. The proven safety guarantees of Tendermint BFT consensus, and the collateral deposit of stakeholders–validators and delegators–provide provable, quantiyable security for nodes and light clients. Distributed public ledgers should have a constitution and a governance system. Bitcoin relies on the Bitcoin Foundation and

mining to coordinate upgrades, but this is a slow process. Ethereum split into ETH and ETC after hard-forking to address TheDAO hack, largely because there was no prior social contract nor mechanism for making such decisions. Validators and delegators on the Cosmos Hub can vote on proposals that can change preset parameters of the system automatically (such as the block gas limit), coordinate upgrades, as well as vote on amendments to the human-readable constitution that govern the policies of the Cosmos Hub. The constitution allows for cohesion among the stakeholders on issues such as theft and bugs (such as TheDAO incident), allowing for quicker and cleaner resolution. Each zone can also have their own constitution and governance mechanism as well. For example, the Cosmos Hub could have a constitution that enforces immutability at the Hub (no roll-backs, save for bugs of the Cosmos Hub node implementation), while each zone can set their own policies regarding roll-backs. By enabling interoperability among differing policy zones, the Cosmos network gives its users ultimate freedom and potential for permissionless experimentation. Here we describe a novel model of decentralization and scalability. Cosmos is a network of many blockchains powered by Tendermint. While existing proposals aim to create a “single blockchain” with total global transaction ordering, Cosmos permits many blockchains to run concurrently with one another while retaining interoperability. At the basis, the Cosmos Hub manages many independent blockchains called “zones” (sometimes referred to as “shards”, in reference to the database scaling technique known as “sharding”).

A constant stream of recent block commits from zones posted on the Hub allows the Hub to keep up with the state of each zone. Likewise, each zone keeps up with the state of the Hub (but zones do not keep up with each other except indirectly through the Hub). Packets of information are then communicated from one zone to another by posting Merkle-proofs as evidence that the information was sent and received. This mechanism is called inter-blockchain communication, or IBC for short. Any of the zones can themselves be hubs to form an acyclic graph, but for the sake of clarity we will only describe the simple conyguration where there is only one hub, and many non-hub zones. The Cosmos Hub is a blockchain that hosts a multi-asset distributed ledger, where tokens can be held by individual users or by zones themselves. These tokens can be moved from one zone to another in a special IBC packet called a "coin packet". The hub is responsible for preserving the global invariance of the total amount of each token across the zones. IBC coin packet transactions must be committed by the sender, hub, and receiver blockchains.

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

Since the Cosmos Hub acts as the central ledger for the whole system, the security of the Hub is of paramount importance. While each zone may be a Tendermint blockchain that is secured by as few as 4 (or even less if BFT consensus is not needed), the Hub must be secured by a globally decentralized set of validators that can withstand the most severe attack scenarios, such as a continental network partition or a nation-state sponsored attack. A Cosmos zone is an independent blockchain that exchanges IBC messages with the Hub. From the Hub’s perspective, a zone is a multi-asset dynamic-membership multi-signature account that can send and receive tokens using IBC packets. Like a cryptocurrency account, a zone cannot transfer more tokens than it has, but can receive tokens from others who have them. A zone may be designated as an "source" of one or more token types, granting it the power to inzate that token supply. Atoms of the Cosmos Hub may be staked by validators of a zone connected to the Hub. While double-spend attacks on these zones would result in the slashing of atoms with Tendermint’s forkaccountability, a zone where \(> 2/3\) of the voting power are Byzantine can commit invalid state. The Cosmos Hub does not verify or execute transactions committed on other zones, so it is the responsibility of users to send tokens to zones that they trust. In the future, the Cosmos Hub’s governance system may pass Hub improvement proposals that account for zone failures. For example, outbound token transfers from some (or all) zones may be throttled to allow for the emergency circuit-breaking of zones (a temporary halt of token transfers) when an attack is detected. Now we look at how the Hub and zones communicate with each other. For example, if there are three blockchains, “Zone1”, “Zone2”,

and “Hub”, and we wish for "Zone1" to produce a packet destined for “Zone2” going through “Hub”. To move a packet from one blockchain to another, a proof is posted on the receiving chain. The proof states that the sending chain published a packet for the alleged destination. For the receiving chain to check this proof, it must be able keep up with the sender’s block headers. This mechanism is similar to that used by sidechains, which requires two interacting chains to be aware of one another via a bidirectional stream of proof-of-existence datagrams (transactions). The IBC protocol can naturally be deyned using two types of transactions: an  IBCBlockCommitTx  transaction, which allows a blockchain to prove to any observer of its most recent block-hash, and an  IBCPacketTx  transaction, which allows a blockchain to prove to any observer that the given packet was indeed published by the sender’s application, via a Merkle-proof to the recent block-hash. By splitting the IBC mechanics into two separate transactions, we allow the native fee market-mechanism of the receiving chain to determine which packets get committed (i.e. acknowledged), while allowing for complete freedom on the sending chain as to how many outbound packets are allowed. In the example above, in order to update the block-hash of "Zone1" on “Hub” (or of “Hub” on “Zone2”), an  IBCBlockCommitTx

transaction must be posted on “Hub” with the block-hash of “Zone1” (or on "Zone2" with the block-hash of “Hub”). See IBCBlockCommitTx and IBCPacketTx for for more information on the two IBC transaction types. In the same way that Bitcoin is more secure by being a distributed, mass-replicated ledger, we can make exchanges less vulnerable to external and internal hacks by running it on the blockchain. We call this a distributed exchange. What the cryptocurrency community calls a decentralized exchange today are based on something called “atomic crosschain” (AXC) transactions. With an AXC transaction, two users on two different chains can make two transfer transactions that are committed together on both ledgers, or none at all (i.e. atomically). For example, two users can trade bitcoins for ether (or any two tokens on two different ledgers) using AXC transactions, even though Bitcoin and Ethereum are not connected to each other. The beneyt of running an exchange on AXC transactions is that neither users need to trust each other or the trade-matching service. The downside is that both parties need to be online for the trade to occur. Another type of decentralized exchange is a mass-replicated distributed exchange that runs on its own blockchain. Users on this kind of exchange can submit a limit order and turn their computer off, and the trade can execute without the user being online. The blockchain matches and completes the trade on behalf of the trader.

Cosmos Architecture

Cosmos est un réseau de blockchain parallèles indépendants qui sont chacun alimenté par des algorithmes de consensus classiques BFT comme Menthe tendre 1. La première blockchain de ce réseau sera le Cosmos Hub. Le Cosmos Hub se connecte à de nombreux autres blockchain (ou zones) via un nouveau protocole de communication inter-blockchain. Le hub Cosmos suit de nombreux types token et conserve une trace du total nombre de token dans chaque zone connectée. Les jetons peuvent être transféré d’une zone à une autre de manière sécurisée et rapide sans avoir besoin d'un échange liquide entre zones, car tout les transferts de pièces inter-zones passent par le Hub Cosmos. Cette architecture résout de nombreux problèmes que l'espace blockchain auxquels sont confrontés aujourd'hui, tels que l'interopérabilité des applications, l'évolutivité et évolutivité transparente. Par exemple, les zones dérivées de Bitcoind, Go-Ethereum, CryptoNote, ZCash ou tout autre système blockchain peut être branché sur le hub Cosmos. Ces zones permettent à Cosmos de évoluer à l’infini pour répondre à la demande mondiale de transactions. Les zones sont également un excellent outil pour un échange distribué, qui sera pris en charge en tant que eh bien. Cosmos n'est pas qu'un seul grand livre distribué, et le Cosmos Hub n’est pas un jardin clos ni le centre de son univers. Nous sommes concevoir un protocole pour un réseau ouvert de registres distribués qui peut servir de nouvelle base aux futurs systèmes financiers, basé sur les principes de la cryptographie, d'une économie saine et du consensus théorie, transparence et responsabilité. Le Cosmos Hub est le premier blockchain public du Cosmos Réseau, alimenté par l'algorithme de consensus BFT de Tendermint. Le Le projet open source Tendermint est né en 2014 pour répondre au la vitesse, l'évolutivité et les problèmes environnementaux de l'algorithme de consensus de preuve de travail de Bitcoin. En utilisant et en améliorant des solutions éprouvées

BFT algorithmes développés au MIT en 1988 [20], le Tendermint L'équipe a été la première à démontrer conceptuellement un proof-of-stake crypto-monnaie qui résout le problème de l'enjeu nul subi par les crypto-monnaies proof-of-stake de première génération telles que comme NXT et BitShares1.0. Aujourd'hui, pratiquement tous les portefeuilles mobiles Bitcoin utilisent des serveurs de confiance pour fournissez-leur la vérification des transactions. En effet, la preuve de travail nécessite d'attendre de nombreuses confirmations avant qu'un la transaction peut être considérée comme irréversiblement engagée. Des attaques à double dépense ont déjà été démontrées sur des services comme CoinBase. Contrairement aux autres systèmes de consensus blockchain, Tendermint propose vérification instantanée et prouvée des paiements des clients mobiles. Puisque le Tendermint est conçu pour ne jamais bifurquer du tout, les appareils mobiles les portefeuilles peuvent recevoir une confirmation de transaction instantanée, ce qui rend les paiements sans confiance et pratiques sont une réalité sur les smartphones. Ceci a des implications importantes pour les applications de l'Internet des objets, car eh bien. Les validateurs de Cosmos ont un rôle similaire à celui des mineurs de Bitcoin, mais utilisez plutôt des signatures cryptographiques pour voter. Les validateurs sont des machines sécurisées et dédiées qui sont responsables de la validation blocs. Les non-validator peuvent déléguer leurs staking token (appelés "atomes") à n'importe quel validator pour gagner une partie des frais forfaitaires et des atomes récompenses, mais ils encourent le risque d'être punis (coupés) si le le délégué validator est piraté ou viole le protocole. Le éprouvé les garanties de sécurité du consensus Tendermint BFT et les garanties dépôt des parties prenantes – validators et délégants – fournir sécurité prouvable et quantifiable pour les nœuds et les clients légers. Les grands livres publics distribués devraient avoir une constitution et un système de gouvernance. Bitcoin s'appuie sur la Fondation Bitcoin etl'exploitation minière pour coordonner les mises à niveau, mais c'est un processus lent. Ethereum s'est divisé en ETH et ETC après avoir difficilement résolu Le DAO hack, en grande partie parce qu'il n'y avait pas de contrat social préalable ni aucun mécanisme pour prendre de telles décisions. Les validateurs et les délégués du hub Cosmos peuvent voter sur propositions qui peuvent modifier les paramètres prédéfinis du système automatiquement (comme la limite de gaz du bloc), coordonner les mises à niveau, comme ainsi que voter sur les amendements à la constitution lisible par l'homme qui régissent les politiques du Hub Cosmos. La Constitution permet une cohésion entre les parties prenantes sur des questions telles que le vol et les bugs (tels que l'incident TheDAO), permettant une intervention plus rapide et résolution plus propre. Chaque zone peut également avoir sa propre constitution et sa propre gouvernance mécanisme également. Par exemple, le hub Cosmos pourrait avoir un constitution qui impose l'immuabilité au Hub (pas de rollbacks, sauf pour les bogues de l'implémentation du nœud Hub Cosmos), tandis que chaque zone peut définir ses propres politiques concernant les restaurations. En permettant l'interopérabilité entre les différentes zones politiques, le Le réseau Cosmos offre à ses utilisateurs une liberté et un potentiel ultimes pour expérimentation sans autorisation. Nous décrivons ici un nouveau modèle de décentralisation et d'évolutivité. Cosmos est un réseau de nombreux blockchain alimentés par Menthe tendre. Alors que les propositions existantes visent à créer un « blockchain » avec l'ordre global total des transactions, Cosmos permet à plusieurs blockchain de s'exécuter simultanément les uns avec les autres tout en conservant l'interopérabilité. A la base, le Hub Cosmos gère de nombreux blockchains appelés « zones » (parfois appelés « fragments », en référence à la technique de mise à l’échelle de la base de données connue sous le nom de « sharding »).

Un flux constant de validations de blocs récentes provenant de zones publiées sur le Hub permet au Hub de suivre l'état de chaque zone. De même, chaque zone suit l'état du Hub (mais les zones ne se suivent pas, sauf indirectement à travers le Moyeu). Des paquets d'informations sont ensuite communiqués à partir d'un zone à une autre en affichant des preuves Merkle comme preuve que le les informations ont été envoyées et reçues. Ce mécanisme est appelé communication inter-blockchain, ou IBC pour faire court. N'importe laquelle des zones peut elle-même être des hubs pour former un graphe acyclique, mais par souci de clarté, nous décrirons uniquement le simple conyguration où il n'y a qu'un seul hub et de nombreux non-hub zones. Le Cosmos Hub est un blockchain qui héberge un multi-actifs grand livre distribué, où les token peuvent être détenus par des utilisateurs individuels ou par zones elles-mêmes. Ces token peuvent être déplacés d'une zone à un autre dans un paquet spécial IBC appelé « paquet de pièces ». Le moyeu est chargé de préserver l’invariance globale du total montant de chaque token dans les zones. IBC paquet de pièces les transactions doivent être validées par l'expéditeur, le hub et le destinataire blockchains.Étant donné que le hub Cosmos agit comme le grand livre central pour l'ensemble système, la sécurité du Hub est d’une importance primordiale. Tandis que chaque zone peut être un Tendermint blockchain sécurisé par seulement 4 (ou même moins si le consensus BFT n'est pas nécessaire), le Hub doit être sécurisé par un ensemble globalement décentralisé de validator qui peut résister aux scénarios d'attaque les plus sévères, tels qu'un partition du réseau continental ou attaque parrainée par un État-nation. Une zone Cosmos est une zone blockchain indépendante qui échange IBC messages avec le Hub. Du point de vue du Hub, une zone est un compte multi-signatures à adhésion dynamique multi-actifs qui peut envoyer et recevoir des token en utilisant des paquets IBC. Comme un compte de crypto-monnaie, une zone ne peut pas transférer plus de tokens que il l'a fait, mais peut recevoir des token d'autres personnes qui les possèdent. Une zone peut être désigné comme une « source » d'un ou plusieurs types token, lui accordant le pouvoir d'augmenter cet approvisionnement token. Les atomes du Hub Cosmos peuvent être jalonnés par les validator d'une zone connecté au Hub. Tandis que les attaques à double dépense sur ces zones entraînerait la réduction des atomes avec la responsabilité fork de Tendermint, une zone où >⅔ du pouvoir de vote sont Les Byzantins peuvent commettre un état invalide. Le hub Cosmos ne vérifier ou exécuter des transactions validées sur d'autres zones, il est donc la responsabilité des utilisateurs d’envoyer des token aux zones en lesquelles ils ont confiance. À l'avenir, le système de gouvernance du Hub Cosmos pourrait réussir des propositions d'amélioration qui tiennent compte des défaillances de zone. Pour Par exemple, les transferts sortants token depuis certaines (ou toutes) zones peuvent être étranglé pour permettre la coupure de circuit d'urgence des zones (un arrêt temporaire des transferts token) lorsqu'une attaque est détectée. Voyons maintenant comment le Hub et les zones communiquent entre eux. autre. Par exemple, s'il y a trois blockchain, "Zone1", "Zone2",

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

et « Hub », et nous souhaitons que « Zone1 » produise un paquet destiné pour « Zone2 » en passant par « Hub ». Pour déplacer un paquet d'un blockchain à un autre, un BAT est affiché sur la chaîne de réception. La preuve indique que la chaîne d'envoi a publié un paquet pour le destination présumée. Pour que la chaîne de réception puisse vérifier cette preuve, il doit être capable de suivre les en-têtes de bloc de l’expéditeur. Ceci Le mécanisme est similaire à celui utilisé par les sidechains, ce qui nécessite deux chaînes en interaction pour prendre conscience l'une de l'autre via un flux bidirectionnel de datagrammes de preuve d'existence (transactions). Le protocole IBC peut naturellement être défini à l'aide de deux types de transactions : une transaction  IBCBlockCommitTx , qui permet un blockchain pour prouver à tout observateur de son bloc le plus récent-hash, et une transaction  IBCPacketTx , qui permet à un blockchain de prouver à tout observateur que le paquet donné a bien été publié par l’application de l’expéditeur, via une preuve Merkle au récent bloc-hash. En divisant la mécanique IBC en deux transactions distinctes, nous permettre au mécanisme de marché des frais natifs de la chaîne de réception de déterminer quels paquets sont validés (c'est-à-dire reconnus), tandis que permettant une liberté totale sur la chaîne d'envoi quant à la manière dont de nombreux paquets sortants sont autorisés. Dans l'exemple ci-dessus, afin de mettre à jour le bloc-hash de "Zone1" sur « Hub » (ou de « Hub » sur « Zone2 »), un IBCBlockCommitTxla transaction doit être publiée sur « Hub » avec le bloc-hash de « Zone1 » (ou sur « Zone2 » avec le bloc-hash de « Hub »). Voir IBCBlockCommitTx et IBCPacketTx pour plus d'informations. sur les deux types de transactions IBC. De la même manière que Bitcoin est plus sécurisé en étant distribué, grand livre répliqué en masse, nous pouvons rendre les échanges moins vulnérables aux hacks externes et internes en l'exécutant sur le blockchain. Nous appelez cela un échange distribué. Ce que la communauté des cryptomonnaies appelle un système décentralisé Aujourd’hui, les échanges sont basés sur ce que l’on appelle des transactions « atomiques crosschain » (AXC). Avec une transaction AXC, deux utilisateurs sur deux chaînes différentes peuvent effectuer deux transactions de transfert qui sont engagés ensemble sur les deux registres, ou aucun (c'est-à-dire atomiquement). Par exemple, deux utilisateurs peuvent échanger des bitcoins contre de l'éther (ou deux token sur deux grands livres différents) en utilisant les transactions AXC, même si Bitcoin et Ethereum ne sont pas connectés l'un à l'autre autre. L'avantage d'exécuter un échange sur les transactions AXC est qu'aucun utilisateur n'a besoin de se faire confiance ni de se faire confiance service. L'inconvénient est que les deux parties doivent être en ligne pour le commerce ait lieu. Un autre type d'échange décentralisé est un échange répliqué en masse. échange distribué qui fonctionne tout seul blockchain. Utilisateurs sur ce type d'échange peut soumettre un ordre limité et transformer son ordinateur éteint, et la transaction peut s'exécuter sans que l'utilisateur soit en ligne. Le blockchain correspond et termine la transaction au nom du commerçant.

Applications

Applications

A centralized exchange can create a deep orderbook of limit orders and thereby attract more traders. Liquidity begets more liquidity in the exchange world, and so there is a strong network effect (or at least a winner-take-most effect) in the exchange business. The current leader for cryptocurrency exchanges today is Poloniex with a 24-hour volume of $20M, and in second place is Bitynex with a 24-hour volume of $5M. Given such strong network effects, it is unlikely for AXC-based decentralized exchanges to win volume over the centralized exchanges. For a decentralized exchange to compete with a centralized exchange, it would need to support deep orderbooks with limit orders. Only a distributed exchange on a blockchain can provide that. Tendermint provides additional beneyts of faster transaction commits. By prioritizing fast ynality without sacriycing consistency, zones in Cosmos can ynalize transactions fast – for both exchange order transactions as well as IBC token transfers to and from other zones. Given the state of cryptocurrency exchanges today, a great application for Cosmos is the distributed exchange (aka the Cosmos DEX). The transaction throughput capacity as well as commit latency can be comparable to those of centralized exchanges. Traders can submit limit orders that can be executed without both parties having to be online. And with Tendermint, the Cosmos hub, and IBC, traders can move funds in and out of the exchange to and from other zones with speed. A privileged zone can act as the source of a bridged token of another cryptocurrency. A bridge is similar to the relationship between a Cosmos hub and zone; both must keep up with the latest blocks of the other in order to verify proofs that tokens have moved from one to the other. A "bridge-zone" on the Cosmos network keeps up with the Hub as well as the other

cryptocurrency. The indirection through the bridge-zone allows the logic of the Hub to remain simple and agnostic to other blockchain consensus strategies such as Bitcoin’s proof-of-work mining. Each bridge-zone validator would run a Tendermint-powered blockchain with a special ABCI bridge-app, but also a full-node of the “origin” blockchain. When new blocks are mined on the origin, the bridge-zone validators will come to agreement on committed blocks by signing and sharing their respective local view of the origin’s blockchain tip. When a bridge-zone receives payment on the origin (and sufycient conyrmations were agreed to have been seen in the case of a PoW chain such as Ethereum or Bitcoin), a corresponding account is created on the bridge-zone with that balance. In the case of Ethereum, the bridge-zone can share the same validator-set as the Cosmos Hub. On the Ethereum side (the origin), a bridge-contract would allow ether holders to send ether to the bridge-zone by sending it to the bridge-contract on Ethereum. Once ether is received by the bridge-contract, the ether cannot be withdrawn unless an appropriate IBC packet is received by the bridge-contract from the bridge-zone. The bridge-contract tracks the validator-set of the bridge-zone, which may be identical to the Cosmos Hub’s validator-set. In the case of Bitcoin, the concept is similar except that instead of a single bridge-contract, each UTXO would be controlled by a threshold multisignature P2SH pubscript. Due to the limitations of the P2SH system, the signers cannot be identical to the Cosmos Hub validator-set.

Ether on the bridge-zone (“bridged-ether”) can be transferred to and from the Hub, and later be destroyed with a transaction that sends it to a particular withdrawal address on Ethereum. An IBC packet proving that the transaction occurred on the bridge-zone can be posted to the Ethereum bridge-contract to allow the ether to be withdrawn. In the case of Bitcoin, the restricted scripting system makes it difycult to mirror the IBC coin-transfer mechanism. Each UTXO has its own independent pubscript, so every UTXO must be migrated to a new UTXO when there is a change in the set of Bitcoin escrow signers. One solution is to compress and decompress the UTXO-set as necessary to keep the total number of UTXOs down. The risk of such a bridgeging contract is a rogue validator set. \(\geq 1/3\) Byzantine voting power could cause a fork, withdrawing ether from the bridge-contract on Ethereum while keeping the bridgedether on the bridge-zone. Worse, \(> 2/3\) Byzantine voting power can steal ether outright from those who sent it to the bridge-contract by deviating from the original bridgeging logic of the bridge-zone. It is possible to address these issues by designing the bridge to be totally accountable. For example, all IBC packets, from the hub and the origin, might require acknowledgement by the bridge-zone in such a way that all state transitions of the bridge-zone can be efyciently challenged and veriyed by either the hub or the origin’s bridge-contract. The Hub and the origin should allow the bridgezone validators to post collateral, and token transfers out of the bridge-contract should be delayed (and collateral unbonding period sufyciently long) to allow for any challenges to be made by independent auditors. We leave the design of the speciycation and implementation of this system open as a future Cosmos

improvement proposal, to be passed by the Cosmos Hub’s governance system. Solving the scaling problem is an open issue for Ethereum. Currently, Ethereum nodes process every single transaction and also store all the states. link. Since Tendermint can commit blocks much faster than Ethereum’s proof-of-work, EVM zones powered by Tendermint consensus and operating on bridged-ether can provide higher performance to Ethereum blockchains. Additionally, though the Cosmos Hub and IBC packet mechanics does not allow for arbitrary contract logic execution per se, it can be used to coordinate token movements between Ethereum contracts running on different zones, providing a foundation for token-centric Ethereum scaling via sharding. Cosmos zones run arbitrary application logic, which is deyned at the beginning of the zone’s life and can potentially be updated over time by governance. Such zexibility allows Cosmos zones to act as bridges to other cryptocurrencies such as Ethereum or Bitcoin, and it also permits derivatives of those blockchains, utilizing the same codebase but with a different validator set and initial distribution. This allows many existing cryptocurrency frameworks, such as those of Ethereum, Zerocash, Bitcoin, CryptoNote and so on, to be used with Tendermint Core, which is a higher performance consensus engine, on a common network, opening tremendous opportunity for interoperability across platforms. Furthermore, as a multi-asset blockchain, a single transaction may contain multiple inputs and outputs, where each input can be any token type, enabling Cosmos to serve directly as a platform for decentralized exchange, though orders are assumed

to be matched via other platforms. Alternatively, a zone can serve as a distributed fault-tolerant exchange (with orderbooks), which can be a strict improvement over existing centralized cryptocurrency exchanges which tend to get hacked over time. Zones can also serve as blockchain-backed versions of enterprise and government systems, where pieces of a particular service that are traditionally run by an organization or group of organizations are instead run as a ABCI application on a certain zone, which allows it to inherit the security and interoperability of the public Cosmos network without sacriycing control over the underlying service. Thus, Cosmos may offer the best of both worlds for organizations looking to utilize blockchain technology but who are wary of relinquishing control completely to a distributed third party. Some claim that a major problem with consistency-favouring consensus algorithms like Tendermint is that any network partition which causes there to be no single partition with \(> 2/3\) voting power (e.g. \(\geq 1/3\) going ofzine) will halt consensus altogether. The Cosmos architecture can help mitigate this problem by using a global hub with regional autonomous zones, where voting power for each zone are distributed based on a common geographic region. For instance, a common paradigm may be for individual cities, or regions, to operate their own zones while sharing a common hub (e.g. the Cosmos Hub), enabling municipal activity to persist in the event that the hub halts due to a temporary network partition. Note that this allows real geological, political, and network-topological features to be considered in designing robust federated fault-tolerant systems.

NameCoin was one of the yrst blockchains to attempt to solve the name-resolution problem by adapting the Bitcoin blockchain. Unfortunately there have been several issues with this approach. With Namecoin, we can verify that, for example, @satoshi was registered with a particular public key at some point in the past, but we wouldn’t know whether the public key had since been updated recently unless we download all the blocks since the last update of that name. This is due to the limitation of Bitcoin’s UTXO transaction Merkle-ization model, where only the transactions (but not mutable application state) are Merkle-ized into the block-hash. This lets us prove existence, but not the nonexistence of later updates to a name. Thus, we can’t know for certain the most recent value of a name without trusting a full node, or incurring signiycant costs in bandwidth by downloading the whole blockchain. Even if a Merkle-ized search tree were implemented in NameCoin, its dependency on proof-of-work makes light client veriycation problematic. Light clients must download a complete copy of the headers for all blocks in the entire blockchain (or at least all the headers since the last update to a name). This means that the bandwidth requirements scale linearly with the amount of time [21]. In addition, name-changes on a proof-of-work blockchain requires waiting for additional proof-of-work conyrmation blocks, which can take up to an hour on Bitcoin. With Tendermint, all we need is the most recent block-hash signed by a quorum of validators (by voting power), and a Merkle proof to the current value associated with the name. This makes it possible to have a succinct, quick, and secure light-client veriycation of name values. In Cosmos, we can take this concept and extend it further. Each name-registration zone in Cosmos can have an associated toplevel-domain (TLD) name such as “.com” or “.org”, and each name-

registration zone can have its own governance and registration rules.

Applications

Un échange centralisé peut créer un carnet de commandes important et limité commandes et ainsi attirer plus de commerçants. La liquidité engendre plus liquidité dans le monde des changes, il existe donc un réseau solide effet (ou au moins un effet gagnant-prenant le plus) dans l'échange entreprise. Le leader actuel des échanges de crypto-monnaie aujourd'hui se trouve Poloniex avec un volume sur 24 heures de 20 millions de dollars, et en deuxième position se trouve Bitynex avec un volume sur 24 heures de 5 millions de dollars. Étant donné un réseau aussi solide effets, il est peu probable que les échanges décentralisés basés sur AXC gagner du volume sur les échanges centralisés. Pour une décentralisation bourse pour rivaliser avec une bourse centralisée, il lui faudrait pour prendre en charge des carnets de commandes importants avec des ordres limités. Seulement un distribué un échange sur un blockchain peut fournir cela. Tendermint offre des avantages supplémentaires d'une transaction plus rapide s'engage. En privilégiant la qualité rapide sans sacrifier cohérence, les zones de Cosmos peuvent ynaliser les transactions rapidement – par exemple les transactions d'ordres d'échange ainsi que les transferts IBC token vers et d'autres zones. Compte tenu de l’état actuel des échanges de crypto-monnaie, un grand l'application pour Cosmos est l'échange distribué (alias le Cosmos DEX). La capacité de débit des transactions ainsi que la latence de validation peut être comparable à celle des systèmes centralisés échanges. Les traders peuvent soumettre des ordres limités qui peuvent être exécutés sans que les deux parties n'aient besoin d'être en ligne. Et avec Tendermint, le hub Cosmos et IBC, les traders peuvent transférer des fonds vers et depuis l'échange vers et depuis d'autres zones avec rapidité. Une zone privilégiée peut agir comme source d'un token ponté de une autre crypto-monnaie. Un pont est semblable à la relation entre un hub et une zone Cosmos ; les deux doivent suivre le rythme derniers blocs de l'autre afin de vérifier les preuves que les token ont déplacé de l'un à l'autre. Une "zone-pont" sur le Cosmos le réseau suit le Hub ainsi que les autres

crypto-monnaie. L'indirection à travers la zone du pont permet la logique du Hub pour rester simple et agnostique par rapport aux autres Stratégies consensuelles de blockchain telles que proof-of-work de Bitcoin exploitation minière. Chaque zone de pont validator exécuterait un système alimenté par Tendermint blockchain avec une application de pont spéciale ABCI, mais aussi un nœud complet de l’« origine » blockchain. Lorsque de nouveaux blocs sont extraits à l'origine, la zone de pont validators parviendront à un accord sur les blocs engagés en signant et partageant leur vision locale respective du blockchain d’origine pointe. Lorsqu'une zone-pont reçoit un paiement à l'origine (et il a été convenu que des confirmations suffisantes avaient été vues dans le cas d'une chaîne PoW telle que Ethereum ou Bitcoin), un correspondant un compte est créé sur la zone pont avec ce solde. Dans le cas de Ethereum, la zone pont peut partager la même validator-défini comme hub Cosmos. Du côté Ethereum (le origine), un contrat-relais permettrait aux détenteurs d'éther d'envoyer de l'éther à la zone-pont en l'envoyant au contrat-pont le Ethereum. Une fois que l'éther est reçu par le contrat-pont, le l'éther ne peut pas être retiré à moins qu'un paquet IBC approprié ne soit reçu par le contrat-pont de la zone-pont. Le Le contrat de pont suit l'ensemble validator de la zone de pont, qui peut être identique à l’ensemble validator du Hub Cosmos. Dans le cas de Bitcoin, le concept est similaire sauf qu'au lieu de un seul contrat-relais, chaque UTXO serait contrôlé par un seuil multisignature publication P2SH. En raison des limites de le système P2SH, les signataires ne peuvent pas être identiques aux Cosmos Hub validator-set.L'éther sur la zone pont («bridged-ether») peut être transféré vers et depuis le Hub, puis être détruit avec une transaction qui l'envoie à une adresse de retrait particulière le Ethereum. Un IBC paquet prouvant que la transaction a eu lieu sur la zone pont peut être posté sur le contrat-relais Ethereum pour permettre à l'éther à retirer. Dans le cas de Bitcoin, le système de script restreint permet Il est difficile de reproduire le mécanisme de transfert de pièces IBC. Chaque UTXO a son propre pubscript indépendant, donc chaque UTXO doit être migré vers un nouveau UTXO lorsqu'il y a un changement dans l'ensemble des Bitcoin signataires du dépôt fiduciaire. Une solution consiste à compresser et décompressez l'ensemble UTXO si nécessaire pour conserver le nombre total des UTXOs en panne. Le risque d'un tel contrat de transition est un ensemble validator voyou. ≥⅓ Le pouvoir de vote byzantin pourrait provoquer un fork, retirant l'éther du contrat-pont sur Ethereum tout en gardant le bridgedether sur la zone-pont. Pire encore, >⅔ du pouvoir de vote byzantin peut voler de l'éther à ceux qui l'ont envoyé au contrat-pont en s'écartant de la logique de pontage originale de la zone-pont. Il est possible de résoudre ces problèmes en concevant le pont pour qu'il soit totalement responsable. Par exemple, tous les paquets IBC, provenant du hub et l'origine, pourrait nécessiter une reconnaissance par la zone de pont dans de telle sorte que toutes les transitions d'état de la zone de pont puissent être efficacement contesté et vérifié soit par le hub, soit par l'origine contrat-relais. Le Hub et l'origine devraient permettre aux zones de pont validator de déposer des garanties, et token les transferts hors de la zone de pont. le contrat-relais devrait être retardé (et le détachement des garanties période suffisamment longue) pour permettre d'éventuelles contestations auditeurs indépendants. Nous quittons la conception de la spécification et mise en œuvre de ce système ouvert comme un avenir Cosmos

proposition d'amélioration, à adopter par le Hub Cosmos système de gouvernance. La résolution du problème de mise à l’échelle est un problème ouvert pour Ethereum. Actuellement, les nœuds Ethereum traitent chaque transaction et stocker également tous les états. lien. Puisque Tendermint peut valider des blocs beaucoup plus rapidement que ceux de Ethereum Zones proof-of-work, EVM alimentées par le consensus Tendermint et fonctionnant sur de l'éther ponté peut fournir des performances plus élevées à Ethereum blockchains. De plus, bien que le hub Cosmos et La mécanique des paquets IBC ne permet pas une logique de contrat arbitraire exécution en soi, il peut être utilisé pour coordonner les mouvements token entre les contrats Ethereum fonctionnant sur des zones différentes, fournissant une base pour une mise à l'échelle token centrée sur Ethereum via partage. Les zones Cosmos exécutent une logique d'application arbitraire, définie à le début de la vie de la zone et peut éventuellement être mis à jour au fil du temps par la gouvernance. Une telle zexibilité permet aux zones Cosmos de agir comme des ponts vers d'autres crypto-monnaies telles que Ethereum ou Bitcoin, et il autorise également les dérivés de ces blockchain, en utilisant la même base de code mais avec un ensemble validator différent et distribution initiale. Cela permet à de nombreuses crypto-monnaies existantes frameworks, tels que ceux de Ethereum, Zerocash, Bitcoin, CryptoNote et ainsi de suite, à utiliser avec Tendermint Core, qui est un moteur de consensus plus performant, sur un réseau commun, ouvrant une formidable opportunité d’interopérabilité à travers plates-formes. De plus, en tant que blockchain multi-actifs, un seul La transaction peut contenir plusieurs entrées et sorties, où chacune l'entrée peut être n'importe quel type token, permettant à Cosmos de servir directement de une plateforme d'échange décentralisé, bien que les commandes soient assuméesà égaler via d'autres plateformes. Alternativement, une zone peut servir en tant qu'échange distribué tolérant aux pannes (avec carnets de commandes), qui peut être une amélioration stricte par rapport au système centralisé existant échanges de crypto-monnaie qui ont tendance à être piratés au fil du temps. Les zones peuvent également servir de versions d'entreprise soutenues par blockchain et les systèmes gouvernementaux, où les éléments d'un service particulier qui sont traditionnellement gérés par une organisation ou un groupe d’organisations sont plutôt exécutés en tant qu'application ABCI sur une certaine zone, ce qui lui permet d'hériter de la sécurité et de l'interopérabilité du public Cosmos réseau sans sacrifier le contrôle sur le sous-jacent service. Ainsi, Cosmos peut offrir le meilleur des deux mondes pour les organisations qui cherchent à utiliser la technologie blockchain mais qui sont se méfier de céder complètement le contrôle à un tiers distribué fête. Certains affirment qu'un problème majeur lié à la recherche de cohérence les algorithmes de consensus comme Tendermint sont que n'importe quel réseau partition qui fait qu'il n'y a pas de partition unique avec >⅔ le pouvoir de vote (par exemple ≥⅓ du magazine) mettra complètement fin au consensus. L'architecture Cosmos peut aider à atténuer ce problème en utilisant une plaque tournante mondiale avec des zones régionales autonomes, où le pouvoir de vote pour chaque zone sont répartis selon une répartition géographique commune région. Par exemple, un paradigme commun peut être celui d'un individu villes, ou régions, d'exploiter leurs propres zones tout en partageant un pôle commun (par exemple le Hub Cosmos), permettant à l'activité municipale de persister dans le cas où le hub s'arrête en raison d'un réseau temporaire partition. Notons que cela permet de réelles conséquences géologiques, politiques et caractéristiques topologiques de réseau à prendre en compte dans la conception de systèmes robustes systèmes fédérés tolérants aux pannes.

NameCoin a été l'un des premiers blockchain à tenter de résoudre le problème. problème de résolution de nom en adaptant le Bitcoin blockchain. Malheureusement, cette approche a posé plusieurs problèmes. Avec Namecoin, on peut vérifier que, par exemple, @satoshi était enregistré avec une clé publique particulière à un moment donné dans le passé, mais nous ne saurions pas si la clé publique a été mis à jour récemment sauf si nous téléchargeons tous les blocs depuis le dernier mise à jour de ce nom. Cela est dû à la limitation de Bitcoin UTXO modèle de Merkle-isation des transactions, où seul le les transactions (mais pas l'état d'application mutable) sont Merkle-isées dans le bloc-hash. Cela nous permet de prouver l'existence, mais pas la non-existence de mises à jour ultérieures d'un nom. Ainsi, nous ne pouvons pas savoir pour certain de la valeur la plus récente d'un nom sans faire confiance à un nœud, ou encourir des coûts importants en bande passante en téléchargeant le tout blockchain. Même si un arbre de recherche Merkle était implémenté dans NameCoin, sa dépendance à proof-of-work rend la vérification client légère problématique. Les clients légers doivent télécharger une copie complète du en-têtes pour tous les blocs de l'ensemble du blockchain (ou au moins de tous les en-têtes depuis la dernière mise à jour d'un nom). Cela signifie que le les besoins en bande passante évoluent de manière linéaire avec le temps [21]. De plus, les changements de nom sur un proof-of-work blockchain nécessite d'attendre des blocs de confirmation proof-of-work supplémentaires, ce qui peut prendre jusqu'à une heure le Bitcoin. Avec Tendermint, tout ce dont nous avons besoin est le bloc le plus récent -hash signé par un quorum de validators (par droit de vote) et un Merkle preuve à la valeur actuelle associée au nom. Cela fait possible d'avoir un client léger succinct, rapide et sécurisé vérification des valeurs de nom. Dans Cosmos, nous pouvons reprendre ce concept et l'étendre davantage. Chacun La zone d'enregistrement de nom dans Cosmos peut avoir un nom de domaine de premier niveau (TLD) associé tel que « .com » ou « .org », et chaque nom-

la zone d'enregistrement peut avoir sa propre gouvernance et son propre enregistrement règles.

Governance and Economics

Governance and Economics

While the Cosmos Hub is a multi-asset distributed ledger, there is a special native token called the atom. Atoms are the only staking token of the Cosmos Hub. Atoms are a license for the holder to vote, validate, or delegate to other validators. Like Ethereum’s ether, atoms can also be used to pay for transaction fees to mitigate spam. Additional inzationary atoms and block transaction fees are rewarded to validators and delegators who delegate to validators. The  BurnAtomTx  transaction can be used to recover any proportionate amount of tokens from the reserve pool. The initial distribution of atom tokens and validators on Genesis will go to the donors of the Cosmos Fundraiser (75%), lead donors (5%), Cosmos Network Foundation (10%), and ALL IN BITS, Inc (10%). From genesis onward, 1/3 of the total amount of atoms will be rewarded to bonded validators and delegators every year. See the Cosmos Plan for additional details. Unlike Bitcoin or other proof-of-work blockchains, a Tendermint blockchain gets slower with more validators due to the increased communication complexity. Fortunately, we can support enough validators to make for a robust globally distributed blockchain with very fast transaction conyrmation times, and, as bandwidth,

storage, and parallel compute capacity increases, we will be able to support more validators in the future. On genesis day, the maximum number of validators will be set to 100, and this number will increase at a rate of 13% for 10 years, and settle at 300 validators. Atom holders who are not already can become validators by signing and submitting a  BondTx  transaction. The amount of atoms provided as collateral must be nonzero. Anyone can become a validator at any time, except when the size of the current validator set is greater than the maximum number of validators allowed. In that case, the transaction is only valid if the amount of atoms is greater than the amount of effective atoms held by the smallest validator, where effective atoms include delegated atoms. When a new validator replaces an existing validator in such a way, the existing validator becomes inactive and all the atoms and delegated atoms enter the unbonding state. There must be some penalty imposed on the validators for any intentional or unintentional deviation from the sanctioned protocol. Some evidence is immediately admissible, such as a double-sign at the same height and round, or a violation of Year 0: 100  Year 1: 113  Year 2: 127  Year 3: 144  Year 4: 163  Year 5: 184  Year 6: 208  Year 7: 235  Year 8: 265  Year 9: 300  Year 10: 300  ...

“prevote-the-lock” (a rule of the Tendermint consensus protocol). Such evidence will result in the validator losing its good standing and its bonded atoms as well its proportionate share of tokens in the reserve pool – collectively called its “stake” – will get slashed. Sometimes, validators will not be available, either due to regional network disruptions, power failure, or other reasons. If, at any point in the past  ValidatorTimeoutWindow  blocks, a validator’s commit vote is not included in the blockchain more than  ValidatorTimeoutMaxAbsent  times, that validator will become inactive, and lose  ValidatorTimeoutPenalty  (DEFAULT 1%) of its stake. Some “malicious” behavior does not produce obviously discernable evidence on the blockchain. In these cases, the validators can coordinate out of band to force the timeout of these malicious validators, if there is a supermajority consensus. In situations where the Cosmos Hub halts due to a \(\geq 1/3\) coalition of voting power going ofzine, or in situations where a \(\geq 1/3\) coalition of voting power censor evidence of malicious behavior from entering the blockchain, the hub must recover with a hard-fork reorg-proposal. (Link to “Forks and Censorship Attacks”). Cosmos Hub validators can accept any token type or combination of types as fees for processing a transaction. Each validator can subjectively set whatever exchange rate it wants, and choose whatever transactions it wants, as long as the  BlockGasLimit  is not exceeded. The collected fees, minus any taxes speciyed below, are redistributed to the bonded stakeholders in proportion to their bonded atoms, every  ValidatorPayoutPeriod  (DEFAULT 1 hour).

Of the collected transaction fees,  ReserveTax  (DEFAULT 2%) will go toward the reserve pool to increase the reserve pool and increase the security and value of the Cosmos network. These funds can also be distributed in accordance with the decisions made by the governance system. Atom holders who delegate their voting power to other validators pay a commission to the delegated validator. The commission can be set by each validator. The security of the Cosmos Hub is a function of the security of the underlying validators and the choice of delegation by delegators. In order to encourage the discovery and early reporting of found vulnerabilities, the Cosmos Hub encourages hackers to publish successful exploits via a  ReportHackTx  transaction that says, “This validator got hacked. Please send bounty to this address”. Upon such an exploit, the validator and delegators will become inactive,  HackPunishmentRatio  (default 5%) of everyone’s atoms will get slashed, and  HackRewardRatio  (default 5%) of everyone’s atoms will get rewarded to the hacker’s bounty address. The validator must recover the remaining atoms by using their backup key. In order to prevent this feature from being abused to transfer unvested atoms, the portion of vested vs unvested atoms of validators and delegators before and after the  ReportHackTx  will remain the same, and the hacker bounty will include some unvested atoms, if any. The Cosmos Hub is operated by a distributed organization that requires a well-deyned governance mechanism in order to coordinate various changes to the blockchain, such as the variable

parameters of the system, as well as software upgrades and constitutional amendments. All validators are responsible for voting on all proposals. Failing to vote on a proposal in a timely manner will result in the validator being deactivated automatically for a period of time called the  AbsenteeismPenaltyPeriod  (DEFAULT 1 week). Delegators automatically inherit the vote of the delegated validator. This vote may be overridden manually. Unbonded atoms get no vote. Each proposal requires a deposit of  MinimumProposalDeposit  tokens, which may be a combination of one or more tokens including atoms. For each proposal, the voters may vote to take the deposit. If more than half of the voters choose to take the deposit (e.g. because the proposal was spam), the deposit goes to the reserve pool, except any atoms which are burned. For each proposal, voters may vote with the following options: Yea YeaWithForce Nay NayWithForce Abstain A strict majority of Yea or YeaWithForce votes (or Nay or NayWithForce votes) is required for the proposal to be decided as passed (or decided as failed), but 1/3+ can veto the majority decision by voting “with force”. When a strict majority is vetoed, everyone gets punished by losing  VetoPenaltyFeeBlocks  (DEFAULT 1 day’s worth of blocks) worth of fees (except taxes which will not be affected), and the party that vetoed the majority

decision will be additionally punished by losing  VetoPenaltyAtoms  (DEFAULT 0.1%) of its atoms. Any of the parameters deyned here can be changed with the passing of a  ParameterChangeProposal . Atoms can be inzated and reserve pool funds spent with the passing of a  BountyProposal . All other proposals, such as a proposal to upgrade the protocol, will be coordinated via the generic  TextProposal . See the Plan. There have been many innovations in blockchain consensus and scalability in the past couple of years. This section provides a brief survey of a select number of important ones. Consensus in the presence of malicious participants is a problem dating back to the early 1980s, when Leslie Lamport coined the phrase “Byzantine fault” to refer to arbitrary process behavior that deviates from the intended behavior, in contrast to a “crash fault”, wherein a process simply crashes. Early solutions were discovered for synchronous networks where there is an upper bound on

message latency, though practical use was limited to highly controlled environments such as airplane controllers and datacenters synchronized via atomic clocks. It was not until the late 90s that Practical Byzantine Fault Tolerance (PBFT) [11] was introduced as an efycient partially synchronous consensus algorithm able to tolerate up to ⅓ of processes behaving arbitrarily. PBFT became the standard algorithm, spawning many variations, including most recently one created by IBM as part of their contribution to Hyperledger. The main beneyt of Tendermint consensus over PBFT is that Tendermint has an improved and simpliyed underlying structure, some of which is a result of embracing the blockchain paradigm. Tendermint blocks must commit in order, which obviates the complexity and communication overhead associated with PBFT’s view-changes. In Cosmos and many cryptocurrencies, there is no need to allow for block N+i where i >= 1 to commit, when block N itself hasn’t yet committed. If bandwidth is the reason why block N hasn’t committed in a Cosmos zone, then it doesn’t help to use bandwidth sharing votes for blocks N+i. If a network partition or ofzine nodes is the reason why block N hasn’t committed, then N+i won’t commit anyway. In addition, the batching of transactions into blocks allows for regular Merkle-hashing of the application state, rather than periodic digests as with PBFT’s checkpointing scheme. This allows for faster provable transaction commits for light-clients and faster inter-blockchain communication. Tendermint Core also includes many optimizations and features that go above and beyond what is speciyed in PBFT. For example, the blocks proposed by validators are split into parts, Merkle-ized, and gossipped in such a way that improves broadcasting performance (see LibSwift [19] for inspiration). Also, Tendermint Core doesn’t make any assumption about point-to-point

connectivity, and functions for as long as the P2P network is weakly connected. While not the yrst to deploy proof-of-stake (PoS), BitShares1.0 [12] contributed considerably to research and adoption of PoS blockchains, particularly those known as “delegated” PoS. In BitShares, stake holders elect "witnesses", responsible for ordering and committing transactions, and "delegates", responsible for coordinating software updates and parameter changes. BitShares2.0 aims to achieve high performance (100k tx/s, 1s latency) in ideal conditions, with each block signed by a single signer, and transaction ynality taking quite a bit longer than the block interval. A canonical speciycation is still in development. Stakeholders can remove or replace misbehaving witnesses on a daily basis, but there is no signiycant collateral of witnesses or delegators in the likeness of Tendermint PoS that get slashed in the case of a successful double-spend attack. Building on an approach pioneered by Ripple, Stellar [13] reyned a model of Federated Byzantine Agreement wherein the processes participating in consensus do not constitute a yxed and globally known set. Rather, each process node curates one or more “quorum slices”, each constituting a set of trusted processes. A “quorum” in Stellar is deyned to be a set of nodes that contain at least one quorum slice for each node in the set, such that agreement can be reached. The security of the Stellar mechanism relies on the assumption that the intersection of any two quorums is non-empty, while the availability of a node requires at least one of its quorum slices to consist entirely of correct nodes, creating a trade-off between using large or small quorum-slices that may be difycult to balance without imposing signiycant assumptions about trust. Ultimately,

nodes must somehow choose adequate quorum slices for there to be sufycient fault-tolerance (or any “intact nodes” at all, of which much of the results of the paper depend on), and the only provided strategy for ensuring such a conyguration is hierarchical and similar to the Border Gateway Protocol (BGP), used by toptier ISPs on the internet to establish global routing tables, and by that used by browsers to manage TLS certiycates; both notorious for their insecurity. The criticism in the Stellar paper of the Tendermint-based proofof-stake systems is mitigated by the token strategy described here, wherein a new type of token called the atom is issued that represent claims to future portions of fees and rewards. The advantage of Tendermint-based proof-of-stake, then, is its relative simplicity, while still providing sufycient and provable security guarantees. BitcoinNG is a proposed improvement to Bitcoin that would allow for forms of vertical scalability, such as increasing the block size, without the negative economic consequences typically associated with such a change, such as the disproportionately large impact on small miners. This improvement is achieved by separating leader election from transaction broadcast: leaders are yrst elected by proof-of-work in “micro-blocks”, and then able to broadcast transactions to be committed until a new micro-block is found. This reduces the bandwidth requirements necessary to win the PoW race, allowing small miners to more fairly compete, and allowing transactions to be committed more regularly by the last miner to ynd a micro-block. Casper [16] is a proposed proof-of-stake consensus algorithm for Ethereum. Its prime mode of operation is “consensus-by-bet”. By letting validators iteratively bet on which block they believe will

become committed into the blockchain based on the other bets that they have seen so far, ynality can be achieved eventually. link. This is an active area of research by the Casper team. The challenge is in constructing a betting mechanism that can be proven to be an evolutionarily stable strategy. The main beneyt of Casper as compared to Tendermint may be in offering “availability over consistency” – consensus does not require a \(> 2/3\) quorum of voting power – perhaps at the cost of commit speed or implementation complexity. The Interledger Protocol [14] is not strictly a scalability solution. It provides an ad hoc interoperation between different ledger systems through a loosely coupled bilateral relationship network. Like the Lightning Network, the purpose of ILP is to facilitate payments, but it speciycally focuses on payments across disparate ledger types, and extends the atomic transaction mechanism to include not only hash-locks, but also a quorum of notaries (called the Atomic Transport Protocol). The latter mechanism for enforcing atomicity in inter-ledger transactions is similar to Tendermint’s light-client SPV mechanism, so an illustration of the distinction between ILP and Cosmos/IBC is warranted, and provided below. 1. The notaries of a connector in ILP do not support membership changes, and do not allow for zexible weighting between notaries. On the other hand, IBC is designed speciycally for blockchains, where validators can have different weights, and where membership can change over the course of the blockchain. 2. As in the Lightning Network, the receiver of payment in ILP must be online to send a conyrmation back to the sender. In a

token transfer over IBC, the validator-set of the receiver’s blockchain is responsible for providing conyrmation, not the receiving user. 3. The most striking difference is that ILP’s connectors are not responsible or keeping authoritative state about payments, whereas in Cosmos, the validators of a hub are the authority of the state of IBC token transfers as well as the authority of the amount of tokens held by each zone (but not the amount of tokens held by each account within a zone). This is the fundamental innovation that allows for secure asymmetric transfer of tokens from zone to zone; the analog to ILP’s connector in Cosmos is a persistent and maximally secure blockchain ledger, the Cosmos Hub. 4. The inter-ledger payments in ILP need to be backed by an exchange orderbook, as there is no asymmetric transfer of coins from one ledger to another, only the transfer of value or market equivalents. Sidechains [15] are a proposed mechanism for scaling the Bitcoin network via alternative blockchains that are “two-way pegged” to the Bitcoin blockchain. (Two-way pegging is equivalent to bridging. In Cosmos we say "bridging" to distinguish from marketpegging). Sidechains allow bitcoins to effectively move from the Bitcoin blockchain to the sidechain and back, and allow for experimentation in new features on the sidechain. As in the Cosmos Hub, the sidechain and Bitcoin serve as light-clients of each other, using SPV proofs to determine when coins should be transferred to the sidechain and back. Of course, since Bitcoin uses proof-of-work, sidechains centered around Bitcoin suffer from the many problems and risks of proof-of-work as a consensus mechanism. Furthermore, this is a Bitcoin-maximalist solution that doesn’t natively support a variety of tokens and

inter-zone network topology as Cosmos does. That said, the core mechanism of the two-way peg is in principle the same as that employed by the Cosmos network. Ethereum is currently researching a number of different strategies to shard the state of the Ethereum blockchain to address scalability needs. These efforts have the goal of maintaining the abstraction layer offered by the current Ethereum Virtual Machine across the shared state space. Multiple research efforts are underway at this time. [18][22] Cosmos and Ethereum 2.0 Mauve [22] have different design goals. Cosmos is speciycally about tokens. Mauve is about scaling general computation. Cosmos is not bound to the EVM, so even different VMs can interoperate. Cosmos lets the zone creator determine who validates the zone. Anyone can start a new zone in Cosmos (unless governance decides otherwise). The hub isolates zone failures so global token invariants are preserved. The Lightning Network is a proposed token transfer network operating at a layer above the Bitcoin blockchain (and other public blockchains), enabling improvement of many orders of magnitude in transaction throughput by moving the majority of transactions outside of the consensus ledger into so-called “payment channels”.

This is made possible by on-chain cryptocurrency scripts, which enable parties to enter into bilateral stateful contracts where the state can be updated by sharing digital signatures, and contracts can be closed by ynally publishing evidence onto the blockchain, a mechanism yrst popularized by cross-chain atomic swaps. By opening payment channels with many parties, participants in the Lightning Network can become focal points for routing the payments of others, leading to a fully connected payment channel network, at the cost of capital being tied up on payment channels. While the Lightning Network can also easily extend across multiple independent blockchains to allow for the transfer of value via an exchange market, it cannot be used to asymmetrically transfer tokens from one blockchain to another. The main beneyt of the Cosmos network described here is to enable such direct token transfers. That said, we expect payment channels and the Lightning Network to become widely adopted along with our token transfer mechanism, for cost-saving and privacy reasons. Segregated Witness is a Bitcoin improvement proposal link that aims to increase the per-block transaction throughput 2X or 3X, while simultaneously making block syncing faster for new nodes. The brilliance of this solution is in how it works within the limitations of Bitcoin’s current protocol and allows for a soft-fork upgrade (i.e. clients with older versions of the software will continue to function after the upgrade). Tendermint, being a new protocol, has no design restrictions, so it has a different scaling priorities. Primarily, Tendermint uses a BFT round-robin algorithm based on cryptographic signatures instead of mining, which trivially allows horizontal scaling through multiple parallel blockchains, while regular, more frequent block commits allow for vertical scaling as well.

Gouvernance et économie

Bien que le Cosmos Hub soit un grand livre distribué multi-actifs, il existe un token natif spécial appelé l'atome. Les atomes sont les seuls staking token du hub Cosmos. Les atomes sont une licence pour le détenteur de voter, valider ou déléguer à d'autres validator. Comme celui de Ethereum éther, les atomes peuvent également être utilisés pour payer les frais de transaction pour atténuer le spam. Atomes inzationnaires supplémentaires et transaction de bloc les honoraires sont récompensés aux validator et aux délégataires qui délèguent à validators. La transaction BurnAtomTx  peut être utilisée pour récupérer n'importe quel montant proportionnel de tokens provenant du pool de réserve. La distribution initiale des atomes token et validator sur Genesis ira aux donateurs de la collecte de fonds Cosmos (75 %), principaux donateurs (5 %), Cosmos Network Foundation (10 %) et ALL IN BITS, Inc. (10%). À partir de la genèse, 1/3 de la quantité totale d'atomes sera être récompensé chaque année par les validator et les délégués cautionnés. Consultez le plan Cosmos pour plus de détails. Contrairement à Bitcoin ou à d'autres proof-of-work blockchain, un Tendermint blockchain devient plus lent avec plus de validator en raison de l'augmentation complexité des communications. Heureusement, nous pouvons soutenir suffisamment validators pour créer un blockchain robuste distribué à l'échelle mondiale avec des temps de confirmation des transactions très rapides et, comme bande passante,

stockage et la capacité de calcul parallèle augmente, nous pourrons pour prendre en charge davantage de validator à l'avenir. Le jour de la genèse, le nombre maximum de validator sera fixé à 100, et ce nombre augmentera au rythme de 13% pendant 10 ans, et s'établir à 300 validators. Les détenteurs d'atomes qui ne le sont pas déjà peuvent devenir validator en signer et soumettre une transaction BondTx . Le montant de les atomes fournis en garantie doivent être différents de zéro. N'importe qui peut devenir un validator à tout moment, sauf lorsque la taille du courant L'ensemble validator est supérieur au nombre maximum de validator. autorisé. Dans ce cas, la transaction n'est valable que si le montant de Le nombre d’atomes est supérieur à la quantité d’atomes effectifs détenus par le le plus petit validator, où les atomes efficaces incluent les atomes délégués. Lorsqu'un nouveau validator remplace un validator existant de cette manière, le validator existant devient inactif et tous les atomes et les atomes délégués entrent dans l’état de déliaison. Une pénalité doit être imposée aux validator pour tout déviation intentionnelle ou non des règles sanctionnées protocole. Certaines preuves sont immédiatement recevables, comme une double signe à la même hauteur et rond, ou une violation de Année 0 : 100  Année 1 : 113  Année 2 : 127  Année 3 : 144  Année 4 : 163  Année 5 : 184  Année 6 : 208  Année 7 : 235  Année 8 : 265  Année 9 : 300  Année 10 : 300  ...

« empêcher le verrouillage » (une règle du protocole de consensus Tendermint). Une telle preuve entraînera la perte de la réputation du validator. et ses atomes liés ainsi que sa part proportionnelle de tokens dans le pool de réserve – collectivement appelé sa « mise » – sera réduit. Parfois, les validator ne seront pas disponibles, soit en raison de conditions régionales perturbations du réseau, panne de courant ou autres raisons. Si, à tout moment point dans les blocs  ValidatorTimeoutWindow passés, un validator le vote de validation n'est pas inclus dans le blockchain plus de  ValidatorTimeoutMaxAbsent fois, ce validator deviendra inactif et perdez  ValidatorTimeoutPenalty (DEFAULT 1 %) de son enjeu. Certains comportements « malveillants » ne produisent pas d’effets visiblement perceptibles. preuve sur le blockchain. Dans ces cas, les validator peuvent coordonner hors bande pour forcer l'expiration du délai d'attente de ces éléments malveillants validators, s'il existe un consensus à la grande majorité. Dans les situations où le Hub Cosmos s'arrête en raison d'une coalition ≥⅓ de le pouvoir de vote disparaît, ou dans des situations où une coalition ≥⅓ des pouvoirs de vote censurent les preuves de comportement malveillant de la part de en entrant dans le blockchain, le hub doit récupérer avec un hard-fork proposition de réorganisation. (Lien vers « Forks et attaques de censure »). Les hubs Cosmos validator peuvent accepter n'importe quel type ou combinaison de token de types comme frais de traitement d’une transaction. Chaque validator peut fixer subjectivement le taux de change qu'il souhaite et choisir quelles que soient les transactions souhaitées, à condition que le  BlockGasLimit  soit pas dépassé. Les frais perçus, déduction faite des éventuelles taxes précisées ci-dessous, sont redistribués aux parties prenantes cautionnées au prorata de leurs atomes liés, chaque  ValidatorPayoutPeriod  (DEFAULT 1 heure).Parmi les frais de transaction collectés,  ReserveTax  (2 % PAR DÉFAUT) sera allez vers la réserve pour augmenter la réserve et augmenter la sécurité et la valeur du réseau Cosmos. Ces les fonds peuvent également être distribués conformément aux décisions faite par le système de gouvernance. Détenteurs d'atomes qui délèguent leur pouvoir de vote à d'autres validator verser une commission au délégué validator. La commission peut être défini par chaque validator. La sécurité du hub Cosmos est fonction de la sécurité du sous-jacents aux validator et au choix de la délégation par les délégants. Afin d'encourager la découverte et la déclaration précoce des espèces trouvées vulnérabilités, le Cosmos Hub encourage les pirates à publier exploits réussis via une transaction  ReportHackTx qui dit : "Ceci validator a été piraté. Veuillez envoyer la prime à cette adresse ». Sur un tel exploit, le validator et les délégants deviendront inactifs,  HackPunishmentRatio  (par défaut 5 %) des atomes de chacun obtiendront réduit et  HackRewardRatio  (par défaut 5 %) des atomes de chacun sera récompensé à l’adresse de prime du pirate informatique. Le validator doit récupérer les atomes restants en utilisant leur clé de sauvegarde. Afin d'éviter que cette fonctionnalité ne soit utilisée de manière abusive pour transférer atomes non investis, la proportion d'atomes investis et non investis de Les validator et les délégants avant et après le  ReportHackTx  resteront les mêmes, et la prime des hackers inclura certains atomes non investis, le cas échéant. Le hub Cosmos est exploité par une organisation distribuée qui nécessite un mécanisme de gouvernance bien défini afin de coordonner divers changements au blockchain, comme la variable

paramètres du système, ainsi que les mises à niveau logicielles et amendements constitutionnels. Tous les validator sont responsables du vote sur toutes les propositions. A défaut de voter sur une proposition en temps opportun entraînera le validator étant automatiquement désactivé pendant une période de temps appelée  AbsenteeismPenaltyPeriod  (PAR DÉFAUT 1 semaine). Les délégués héritent automatiquement du vote du délégué validator. Ce vote peut être annulé manuellement. Atomes non liés n'obtenez aucun vote. Chaque proposition nécessite un dépôt de MinimumProposalDeposit  tokens, qui peuvent être une combinaison d'un ou plusieurs tokens y compris les atomes. Pour chaque proposition, les électeurs peuvent voter pour prendre le dépôt. Si plus de la moitié des électeurs choisissent de voter dépôt (par exemple parce que la proposition était du spam), le dépôt va à le pool de réserve, à l’exception des atomes brûlés. Pour chaque proposition, les électeurs peuvent voter avec les options suivantes : Ouais OuiAvecForce Non NonAvecForce S'abstenir Une stricte majorité de votes Oui ou OuiAvecForce (ou Non ou Votes NayWithForce) est requis pour que la proposition soit décidée comme réussi (ou décidé comme échec), mais 1/3+ peut opposer son veto à la majorité décision en votant « avec force ». Lorsqu'on oppose son veto à une majorité stricte, tout le monde est puni en perdant VetoPenaltyFeeBlocks  (PAR DÉFAUT 1 jour de blocs) de frais (sauf taxes qui ne sera pas affecté), et le parti qui a opposé son veto à la majorité

la décision sera en outre punie par la perte de VetoPenaltyAtoms  (PAR DÉFAUT 0,1%) de ses atomes. N'importe lequel des paramètres définis ici peut être modifié avec le transmission d'une ParameterChangeProposal . Les atomes peuvent être inzés et les fonds du pool de réserve dépensés avec le adoption d'une  BountyProposal . Toutes les autres propositions, comme une proposition de mise à niveau du protocole, sera coordonné via la  TextProposal générique. Voir le Plan. Il y a eu de nombreuses innovations dans le consensus blockchain et évolutivité au cours des deux dernières années. Cette section fournit un bref enquête sur un certain nombre de sujets importants. Le consensus en présence de participants malveillants est un problème datant du début des années 1980, lorsque Leslie Lamport a inventé le expression « faute byzantine » pour faire référence à un comportement de processus arbitraire qui s'écarte du comportement prévu, contrairement à un « défaut de crash », dans lequel un processus plante tout simplement. Des premières solutions ont été découvertes pour les réseaux synchrones où il existe une limite supérieure surlatence des messages, bien que l'utilisation pratique soit limitée à des environnements contrôlés tels que les contrôleurs d’avion et centres de données synchronisés via des horloges atomiques. Ce n'est que lorsque fin des années 90, la tolérance aux pannes byzantine pratique (PBFT) [11] était présenté comme un consensus efficace partiellement synchrone algorithme capable de tolérer jusqu'à ⅓ des processus se comportant arbitrairement. PBFT est devenu l'algorithme standard, engendrant de nombreuses variantes, dont la plus récente créée par IBM dans le cadre de leur contribution à Hyperledger. Le principal avantage du consensus Tendermint sur PBFT est que Tendermint a une structure sous-jacente améliorée et simplifiée, dont certains sont le résultat de l’adoption du paradigme blockchain. Les blocs Tendermint doivent être validés dans l'ordre, ce qui évite le complexité et surcharge de communication associées aux PBFT changements de vue. Dans Cosmos et dans de nombreuses crypto-monnaies, il n'y a pas il faut autoriser le bloc N+i où i >= 1 à valider, lorsque le bloc N lui-même ne s’est pas encore engagé. Si la bande passante est la raison pour laquelle le bloc N ne s'est pas engagé dans une zone Cosmos, alors cela ne sert à rien d'utiliser votes de partage de bande passante pour les blocs N+i. Si une partition réseau ou ofzine nodes est la raison pour laquelle le bloc N n'a pas été validé, alors N+je ne m’engagerai pas de toute façon. De plus, le regroupement des transactions en blocs permet Merkle-hashing régulier de l'état de l'application, plutôt que des résumés périodiques comme avec le schéma de points de contrôle de PBFT. Cela permet pour des validations de transactions prouvables plus rapides pour les clients légers et plus rapides communication inter-blockchain. Tendermint Core comprend également de nombreuses optimisations et fonctionnalités qui vont au-delà de ce qui est spécifié dans PBFT. Par exemple, les blocs proposés par validators sont découpés en parties, Merkle-isées, et bavardé d'une manière qui améliore la diffusion performances (voir LibSwift [19] pour l'inspiration). Aussi, menthe tendre Core ne fait aucune hypothèse sur le point à point

connectivité et fonctionne aussi longtemps que le réseau P2P est faiblement connecté. Bien que ce ne soit pas la première année à déployer proof-of-stake (PoS), BitShares1.0 [12] contribué considérablement à la recherche et à l’adoption du PoS blockchain, en particulier ceux dits PoS « délégués ». Dans BitShares, les actionnaires élisent des "témoins", chargés de passer commande et commettre des transactions, et des « délégués », chargés de coordonner les mises à jour logicielles et les modifications de paramètres. BitShares2.0 vise à atteindre des performances élevées (100 000 tx/s, 1 s latence) dans des conditions idéales, chaque bloc étant signé par un seul signataire et la qualité de la transaction prend un peu plus de temps que le intervalle de bloc. Une spécification canonique est encore en développement. Les parties prenantes peuvent supprimer ou remplacer les témoins qui se comportent mal lors d'une réunion. quotidiennement, mais il n'y a pas de garantie significative de témoins ou des délégataires à l'image de Tendermint PoS qui sont coupés le cas d’une attaque réussie à double dépense. S'appuyant sur une approche lancée par Ripple, Stellar [13] a créé un modèle d'accord byzantin fédéré dans lequel les processus la participation au consensus ne constitue pas un objectif fixe et global ensemble connu. Au lieu de cela, chaque nœud de processus gère un ou plusieurs des « tranches de quorum », chacune constituant un ensemble de processus de confiance. Un Le « quorum » dans Stellar est défini comme étant un ensemble de nœuds qui contiennent au au moins une tranche de quorum pour chaque nœud de l'ensemble, tel que un accord peut être trouvé. La sécurité du mécanisme Stellar repose sur l'hypothèse que l'intersection de deux quorums quelconques n'est pas vide, tandis que le la disponibilité d'un nœud nécessite au moins une de ses tranches de quorum pour se composent entièrement de nœuds corrects, créant un compromis entre en utilisant des tranches de quorum grandes ou petites qui peuvent être difficiles à équilibrer sans imposer d’hypothèses significatives sur la confiance. Finalement,les nœuds doivent d'une manière ou d'une autre choisir des tranches de quorum adéquates pour y parvenir. être suffisamment tolérant aux pannes (ou à tout « nœuds intacts », dont dont dépendent une grande partie des résultats de l'article), et le seul la stratégie fournie pour garantir qu'une telle conyguration est hiérarchique et similaire au Border Gateway Protocol (BGP), utilisé par les meilleurs FAI sur Internet pour établir des tables de routage globales, et par celui utilisé par les navigateurs pour gérer les certificats TLS ; tous deux notoires pour leur insécurité. Les critiques formulées dans l'article Stellar concernant les systèmes de preuve de participation basés sur Tendermint sont atténuées par la stratégie token décrite. ici, dans lequel un nouveau type de token appelé atome est émis qui représentent des réclamations sur des portions futures de frais et de récompenses. Le L'avantage de proof-of-stake basé sur Tendermint est donc son relatif simplicité, tout en offrant une sécurité suffisante et prouvable garanties. BitcoinNG est une amélioration proposée à Bitcoin qui permettrait pour les formes d'évolutivité verticale, telles que l'augmentation de la taille des blocs, sans les conséquences économiques négatives généralement associées avec un tel changement, comme l'impact disproportionné sur les petits mineurs. Cette amélioration est obtenue en séparant élection du leader à partir de la diffusion de la transaction : les dirigeants sont les premiers élu par proof-of-work en « micro-blocs », et pouvoir alors transactions de diffusion à valider jusqu'à un nouveau micro-bloc est trouvé. Cela réduit les besoins en bande passante nécessaires pour gagner la course PoW, permettant aux petits mineurs de concourir plus équitablement, et permettre que les transactions soient commises plus régulièrement par le dernier mineur à trouver un micro-bloc. Casper [16] est un algorithme de consensus proof-of-stake proposé pour Ethereum. Son principal mode de fonctionnement est le « consensus par pari ». Par laisser validators parier de manière itérative sur le bloc qui, selon eux, sera

s'engager dans le blockchain en fonction des autres paris qu'ils ont vu jusqu'à présent, la ynalité peut éventuellement être atteinte. lien. Il s’agit d’un domaine de recherche actif de l’équipe Casper. Le Le défi consiste à construire un mécanisme de pari qui puisse être s'est avérée être une stratégie évolutive stable. Le principal avantage de Casper, par rapport à Tendermint, pourrait offrir une « disponibilité » sur la cohérence » – le consensus n’exige pas un quorum >⅔ de pouvoir de vote – peut-être au détriment de la vitesse de validation ou complexité de mise en œuvre. Le protocole Interledger [14] n'est pas strictement une solution d'évolutivité. Il fournit une interopération ad hoc entre différents registres systèmes à travers un réseau de relations bilatérales faiblement couplées. À l'instar du Lightning Network, l'objectif d'ILP est de faciliter paiements, mais il se concentre spécifiquement sur les paiements à travers des types de grand livre et étend le mécanisme de transaction atomique à inclure non seulement des hash-serrures, mais également un quorum de notaires (appelé le Protocole de Transport Atomique). Ce dernier mécanisme pour l'application de l'atomicité dans les transactions inter-grands livres est similaire à Le mécanisme SPV client léger de Tendermint, donc une illustration du la distinction entre ILP et Cosmos/IBC est justifiée, et fournis ci-dessous. 1. Les notaires d'un connecteur en ILP ne prennent pas en charge l'adhésion changements et ne permettent pas une pondération zexible entre notaires. D'autre part, IBC est conçu spécifiquement pour blockchains, où validators peuvent avoir des poids différents, et où l'adhésion peut changer au cours de la blockchain. 2. Comme dans Lightning Network, le destinataire du paiement en ILP doit être en ligne pour renvoyer une confirmation à l'expéditeur. Dans untoken transfert via IBC, l'ensemble validator du récepteur blockchain est responsable de fournir la confirmation, et non le utilisateur récepteur. 3. La différence la plus frappante est que les connecteurs d'ILP ne sont pas responsable ou gardant l'autorité en matière de paiements, alors que dans Cosmos, les validator d'un hub sont l'autorité de l'état des transferts IBC token ainsi que l'autorité du montant de tokens détenu par chaque zone (mais pas le montant de tokens détenus par chaque compte dans une zone). C'est le innovation fondamentale qui permet une sécurité asymétrique transfert de token de zone en zone ; l'analogue des ILP Le connecteur dans Cosmos est un connecteur persistant et sécurisé au maximum. Grand livre blockchain, le hub Cosmos. 4. Les paiements inter-grand livre dans ILP doivent être garantis par un carnet d’ordres de change, car il n’y a pas de transfert asymétrique de pièces de monnaie d'un registre à un autre, seul le transfert de valeur ou équivalents du marché. Les sidechains [15] sont un mécanisme proposé pour faire évoluer le Bitcoin réseau via des blockchain alternatifs qui sont « rattachés dans les deux sens » à le Bitcoin blockchain. (L'ancrage bidirectionnel équivaut à pontage. Dans Cosmos, nous disons « bridging » pour distinguer le marketpegging). Les sidechains permettent aux bitcoins de passer efficacement du Bitcoin blockchain au sidechain et à l'arrière, et permettre expérimentation de nouvelles fonctionnalités sur la sidechain. Comme dans le Cosmos Hub, la sidechain et Bitcoin servent de clients légers de les uns les autres, en utilisant des preuves SPV pour déterminer quand les pièces doivent être transféré à la sidechain et inversement. Bien sûr, depuis Bitcoin utilise proof-of-work, les sidechains centrés autour de Bitcoin souffrent des nombreux problèmes et risques de proof-of-work en tant que mécanisme de consensus. De plus, c'est un Bitcoin-maximaliste solution qui ne prend pas en charge nativement une variété de token et

topologie de réseau inter-zones comme le fait Cosmos. Cela dit, le noyau le mécanisme de la cheville à double sens est en principe le même que celui employé par le réseau Cosmos. Ethereum recherche actuellement un certain nombre de stratégies différentes pour fragmenter l'état du Ethereum blockchain pour répondre besoins d’évolutivité. Ces efforts ont pour objectif de maintenir couche d'abstraction offerte par la machine virtuelle Ethereum actuelle à travers l’espace d’état partagé. De multiples efforts de recherche sont en cours à ce moment. [18][22] Cosmos et Ethereum 2.0 Mauve [22] ont des objectifs de conception différents. Cosmos concerne spécifiquement les token. Mauve est une question de mise à l'échelle calcul général. Cosmos n'est pas lié à EVM, donc même différentes machines virtuelles peuvent interopérer. Cosmos permet au créateur de la zone de déterminer qui valide la zone. N'importe qui peut créer une nouvelle zone dans Cosmos (sauf si la gouvernance en décide autrement). Le hub isole les défaillances de zone afin que les invariants globaux token soient préservé. Le réseau Lightning est un réseau de transfert proposé token fonctionnant à une couche au-dessus du Bitcoin blockchain (et d'autres blockchains), permettant une amélioration de plusieurs ordres de grandeur dans le débit des transactions en déplaçant la majorité des transactions en dehors du registre consensuel vers ce que l’on appelle les « canaux de paiement ».Ceci est rendu possible par les scripts de crypto-monnaie en chaîne, qui permettre aux parties de conclure des contrats étatiques bilatéraux dans lesquels l'état peut être mis à jour en partageant des signatures numériques et des contrats peut être clôturé en publiant ynally des preuves sur le blockchain, un mécanisme popularisé pour la première fois par les échanges atomiques inter-chaînes. Par ouvrir des canaux de paiement avec de nombreuses parties, participants au Lightning Network peut devenir des points focaux pour le routage des paiements de tiers, conduisant à un canal de paiement entièrement connecté réseau, au prix d’un capital immobilisé sur les canaux de paiement. Bien que le réseau Lightning puisse également s'étendre facilement sur plusieurs blockchain indépendants pour permettre le transfert de valeur via un marché des changes, il ne peut pas être utilisé pour transférer des token d'un blockchain à un autre. Le principal avantage du réseau Cosmos décrit ici est de permettre une telle token transferts. Cela dit, nous nous attendons à ce que les canaux de paiement et le Lightning Network sera largement adopté avec notre Mécanisme de transfert token, pour des raisons d'économie et de confidentialité. Le témoin séparé est un lien de proposition d'amélioration Bitcoin qui vise à augmenter le débit de transaction par bloc de 2X ou 3X, tout en accélérant simultanément la synchronisation des blocs pour les nouveaux nœuds. Le génie de cette solution réside dans la façon dont elle fonctionne au sein du limitations du protocole actuel de Bitcoin et permet un soft-fork mise à niveau (c'est-à-dire que les clients avec des versions plus anciennes du logiciel seront continuer à fonctionner après la mise à niveau). Tendermint, étant un nouveau protocole, n'a aucune restriction de conception, il a donc une mise à l'échelle différente priorités. Principalement, Tendermint utilise un algorithme round-robin BFT basé sur des signatures cryptographiques au lieu du minage, ce qui permet trivialement une mise à l'échelle horizontale à travers plusieurs parallèles blockchains, tandis que les validations de bloc régulières et plus fréquentes permettent mise à l'échelle verticale également.

Consensus and Technical Details

Consensus and Technical Details

A well designed consensus protocol should provide some guarantees in the event that the tolerance capacity is exceeded and the consensus fails. This is especially necessary in economic systems, where Byzantine behaviour can have substantial ynancial reward. The most important such guarantee is a form of forkaccountability, where the processes that caused the consensus to fail (ie. caused clients of the protocol to accept different values - a fork) can be identiyed and punished according to the rules of the protocol, or, possibly, the legal system. When the legal system is unreliable or excessively expensive to invoke, validators can be forced to make security deposits in order to participate, and those deposits can be revoked, or slashed, when malicious behaviour is detected [10]. Note this is unlike Bitcoin, where forking is a regular occurence due to network asynchrony and the probabilistic nature of ynding partial hash collisions. Since in many cases a malicious fork is indistinguishable from a fork due to asynchrony, Bitcoin cannot reliably implement fork-accountability, other than the implicit opportunity cost paid by miners for mining an orphaned block. We call the voting stages PreVote and PreCommit. A vote can be for a particular block or for Nil. We call a collection of \(> 2/3\) PreVotes for a single block in the same round a Polka, and a collection of \(> 2/3\) PreCommits for a single block in the same round a Commit. If \(> 2/3\) PreCommit for Nil in the same round, they move to the next round. Note that strict determinism in the protocol incurs a weak synchrony assumption as faulty leaders must be detected and

skipped. Thus, validators wait some amount of time, TimeoutPropose, before they Prevote Nil, and the value of TimeoutPropose increases with each round. Progression through the rest of a round is fully asynchronous, in that progress is only made once a validator hears from \(> 2/3\) of the network. In practice, it would take an extremely strong adversary to indeynitely thwart the weak synchrony assumption (causing the consensus to fail to ever commit a block), and doing so can be made even more difycult by using randomized values of TimeoutPropose on each validator. An additional set of constraints, or Locking Rules, ensure that the network will eventually commit just one block at each height. Any malicious attempt to cause more than one block to be committed at a given height can be identiyed. First, a PreCommit for a block must come with justiycation, in the form of a Polka for that block. If the validator has already PreCommit a block at round R_1, we say they are locked on that block, and the Polka used to justify the new PreCommit at round R_2 must come in a round R_polka where R_1 < R_polka <= R_2. Second, validators must Propose and/or PreVote the block they are locked on. Together, these conditions ensure that a validator does not PreCommit without sufycient evidence as justiycation, and that validators which have already PreCommit cannot contribute to evidence to PreCommit something else. This ensures both safety and liveness of the consensus algorithm. The full details of the protocol are described here. The need to sync all block headers is eliminated in TendermintPoS as the existence of an alternative chain (a fork) means \(\geq 1/3\) of bonded stake can be slashed. Of course, since slashing requires that someone share evidence of a fork, light clients should store any block-hash commits that it sees. Additionally, light clients

could periodically stay synced with changes to the validator set, in order to avoid long range attacks (but other solutions are possible). In spirit similar to Ethereum, Tendermint enables applications to embed a global Merkle root hash in each block, allowing easily veriyable state queries for things like account balances, the value stored in a contract, or the existence of an unspent transaction output, depending on the nature of the application. Assuming a sufyciently resilient collection of broadcast networks and a static validator set, any fork in the blockchain can be detected and the deposits of the offending validators slashed. This innovation, yrst suggested by Vitalik Buterin in early 2014, solves the nothing-at-stake problem of other proof-of-stake cryptocurrencies (see Related Work). However, since validator sets must be able to change, over a long range of time the original validators may all become unbonded, and hence would be free to create a new chain from the genesis block, incurring no cost as they no longer have deposits locked up. This attack came to be known as the Long Range Attack (LRA), in contrast to a Short Range Attack, where validators who are currently bonded cause a fork and are hence punishable (assuming a fork-accountable BFT algorithm like Tendermint consensus). Long Range Attacks are often thought to be a critical blow to proof-of-stake. Fortunately, the LRA can be mitigated as follows. First, for a validator to unbond (thereby recovering their collateral deposit and no longer earning fees to participate in the consensus), the deposit must be made untransferable for an amount of time known as the “unbonding period”, which may be on the order of weeks or months. Second, for a light client to be secure, the yrst time it connects to the network it must verify a recent block-hash against a trusted source, or preferably multiple sources. This

condition is sometimes referred to as “weak subjectivity”. Finally, to remain secure, it must sync up with the latest validator set at least as frequently as the length of the unbonding period. This ensures that the light client knows about changes to the validator set before a validator has its capital unbonded and thus no longer at stake, which would allow it to deceive the client by carrying out a long range attack by creating new blocks beginning back at a height where it was bonded (assuming it has control of sufyciently many of the early private keys). Note that overcoming the LRA in this way requires an overhaul of the original security model of proof-of-work. In PoW, it is assumed that a light client can sync to the current height from the trusted genesis block at any time simply by processing the proofof-work in every block header. To overcome the LRA, however, we require that a light client come online with some regularity to track changes in the validator set, and that the yrst time they come online they must be particularly careful to authenticate what they hear from the network against trusted sources. Of course, this latter requirement is similar to that of Bitcoin, where the protocol and software must also be obtained from a trusted source. The above method for preventing LRA is well suited for validators and full nodes of a Tendermint-powered blockchain because these nodes are meant to remain connected to the network. The method is also suitable for light clients that can be expected to sync with the network frequently. However, for light clients that are not expected to have frequent access to the internet or the blockchain network, yet another solution can be used to overcome the LRA. Non-validator token holders can post their tokens as collateral with a very long unbonding period (e.g. much longer than the unbonding period for validators) and serve light clients with a secondary method of attesting to the validity of current and past block-hashes. While these tokens do not count toward the security of the blockchain’s consensus, they nevertheless can

provide strong guarantees for light clients. If historical block-hash querying were supported in Ethereum, anyone could bond their tokens in a specially designed smart contract and provide attestation services for pay, effectively creating a market for lightclient LRA security. Due to the deynition of a block commit, any \(\geq 1/3\) coalition of voting power can halt the blockchain by going ofzine or not broadcasting their votes. Such a coalition can also censor particular transactions by rejecting blocks that include these transactions, though this would result in a signiycant proportion of block proposals to be rejected, which would slow down the rate of block commits of the blockchain, reducing its utility and value. The malicious coalition might also broadcast votes in a trickle so as to grind blockchain block commits to a near halt, or engage in any combination of these attacks. Finally, it can cause the blockchain to fork, by double-signing or violating the locking rules. If a globally active adversary were also involved, it could partition the network in such a way that it may appear that the wrong subset of validators were responsible for the slowdown. This is not just a limitation of Tendermint, but rather a limitation of all consensus protocols whose network is potentially controlled by an active adversary. For these types of attacks, a subset of the validators should coordinate through external means to sign a reorg-proposal that chooses a fork (and any evidence thereof) and the initial subset of validators with their signatures. Validators who sign such a reorgproposal forego their collateral on all other forks. Clients should verify the signatures on the reorg-proposal, verify any evidence, and make a judgement or prompt the end-user for a decision. For example, a phone wallet app may prompt the user with a security

warning, while a refrigerator may accept any reorg-proposal signed by +½ of the original validators by voting power. No non-synchronous Byzantine fault-tolerant algorithm can come to consensus when \(\geq 1/3\) of voting power are dishonest, yet a fork assumes that \(\geq 1/3\) of voting power have already been dishonest by double-signing or lock-changing without justiycation. So, signing the reorg-proposal is a coordination problem that cannot be solved by any non-synchronous protocol (i.e. automatically, and without making assumptions about the reliability of the underlying network). For now, we leave the problem of reorgproposal coordination to human coordination via social consensus on internet media. Validators must take care to ensure that there are no remaining network partitions prior to signing a reorgproposal, to avoid situations where two conzicting reorgproposals are signed. Assuming that the external coordination medium and protocol is robust, it follows that forks are less of a concern than censorship attacks. In addition to forks and censorship, which require \(\geq 1/3\) Byzantine voting power, a coalition of \(> 2/3\) voting power may commit arbitrary, invalid state. This is characteristic of any (BFT) consensus system. Unlike double-signing, which creates forks with easily veriyable evidence, detecting committment of an invalid state requires non-validating peers to verify whole blocks, which implies that they keep a local copy of the state and execute each transaction, computing the state root independently for themselves. Once detected, the only way to handle such a failure is via social consensus. For instance, in situations where Bitcoin has failed, whether forking due to software bugs (as in March 2013), or committing invalid state due to Byzantine behavior of miners (as in July 2015), the well connected community of businesses, developers, miners, and other organizations established a social consensus as to what manual actions were

required by participants to heal the network. Furthermore, since validators of a Tendermint blockchain may be expected to be identiyable, commitment of an invalid state may even be punishable by law or some external jurisprudence, if desired. ABCI consists of 3 primary message types that get delivered from the core to the application. The application replies with corresponding response messages. The  AppendTx  message is the work horse of the application. Each transaction in the blockchain is delivered with this message. The application needs to validate each transactions received with the AppendTx message against the current state, application protocol, and the cryptographic credentials of the transaction. A validated transaction then needs to update the application state — by binding a value into a key values store, or by updating the UTXO database. The  CheckTx  message is similar to AppendTx, but it’s only for validating transactions. Tendermint Core’s mempool yrst checks the validity of a transaction with CheckTx, and only relays valid transactions to its peers. Applications may check an incrementing nonce in the transaction and return an error upon CheckTx if the nonce is old. The  Commit  message is used to compute a cryptographic commitment to the current application state, to be placed into the next block header. This has some handy properties. Inconsistencies in updating that state will now appear as blockchain forks which catches a whole class of programming errors. This also simpliyes the development of secure lightweight clients, as Merkle-hash proofs can be veriyed by checking against the block-hash, and the block-hash is signed by a quorum of validators (by voting power).

Additional ABCI messages allow the application to keep track of and change the validator set, and for the application to receive the block information, such as the height and the commit votes. ABCI requests/responses are simple Protobuf messages. Check out the schema yle. Arguments: Data ([]byte) : The request transaction bytes Returns: Code (uint32) : Response code Data ([]byte) : Result bytes, if any Log (string) : Debug or error message Usage:

Append and run a transaction. If the transaction is valid, returns CodeType.OK Arguments: Data ([]byte) : The request transaction bytes Returns: Code (uint32) : Response code Data ([]byte) : Result bytes, if any Log (string) : Debug or error message Usage:

Validate a transaction. This message should not mutate the state. Transactions are yrst run through CheckTx before broadcast to peers in the mempool layer. You can make CheckTx semi-stateful and clear the state upon Commit or BeginBlock , to allow for dependent sequences of transactions in the same block.

Returns: Data ([]byte) : The Merkle root hash Log (string) : Debug or error message Usage:

Return a Merkle root hash of the application state. Arguments: Data ([]byte) : The query request bytes Returns: Code (uint32) : Response code Data ([]byte) : The query response bytes Log (string) : Debug or error message Usage:

Flush the response queue. Applications that implement types.Application need not implement this message – it’s handled by the project. Returns: Data ([]byte) : The info bytes Usage:

Return information about the application state. Application speciyc. Arguments: Key (string) : Key to set

Value (string) : Value to set for key Returns: Log (string) : Debug or error message Usage:

Set application options. E.g. Key=“mode”, Value=“mempool” for a mempool connection, or Key=“mode”, Value=“consensus” for a consensus connection. Other options are application speciyc. Arguments: Validators ([]Validator) : Initial genesis-validators Usage:

Called once upon genesis Arguments: Height (uint64) : The block height that is starting Usage:

Signals the beginning of a new block. Called prior to any AppendTxs. Arguments: Height (uint64) : The block height that ended Returns: Validators ([]Validator) : Changed validators with new voting powers (0 to remove) Usage:

Signals the end of a block. Called prior to each Commit after all transactions See the ABCI repository for more details.

There are several reasons why a sender may want the acknowledgement of delivery of a packet by the receiving chain. For example, the sender may not know the status of the destination chain, if it is expected to be faulty. Or, the sender may want to impose a timeout on the packet (with the  MaxHeight  packet yeld), while any destination chain may suffer from a denialof-service attack with a sudden spike in the number of incoming packets. In these cases, the sender can require delivery acknowledgement by setting the initial packet status to  AckPending . Then, it is the receiving chain’s responsibility to conyrm delivery by including an abbreviated  IBCPacket  in the app Merkle hash. First, an  IBCBlockCommit  and  IBCPacketTx  are posted on “Hub” that proves the existence of an  IBCPacket  on “Zone1”. Say that  IBCPacketTx  has the following value: FromChainID : “Zone1” FromBlockHeight : 100 (say) Packet : an IBCPacket :

Header : an IBCPacketHeader : SrcChainID : “Zone1” DstChainID : “Zone2” Number : 200 (say) Status : AckPending Type : “coin” MaxHeight : 350 (say “Hub” is currently at height 300) Payload : Next, an  IBCBlockCommit  and  IBCPacketTx  are posted on “Zone2” that proves the existence of an  IBCPacket  on “Hub”. Say that  IBCPacketTx  has the following value: FromChainID : “Hub” FromBlockHeight : 300 Packet : an IBCPacket : Header : an IBCPacketHeader : SrcChainID : “Zone1” DstChainID : “Zone2” Number : 200 Status : AckPending Type : “coin” MaxHeight : 350 Payload : Next, “Zone2” must include in its app-hash an abbreviated packet that shows the new status of  AckSent . An  IBCBlockCommit  and  IBCPacketTx  are posted back on “Hub” that proves the existence of an abbreviated  IBCPacket  on "Zone2". Say that  IBCPacketTx  has the following value: FromChainID : “Zone2”

FromBlockHeight : 400 (say) Packet : an IBCPacket : Header : an IBCPacketHeader : SrcChainID : “Zone1” DstChainID : “Zone2” Number : 200 Status : AckSent Type : “coin” MaxHeight : 350 PayloadHash : Finally, “Hub” must update the status of the packet from  AckPending  to  AckReceived . Evidence of this new ynalized status should go back to "Zone2". Say that  IBCPacketTx  has the following value: FromChainID : “Hub” FromBlockHeight : 301 Packet : an IBCPacket : Header : an IBCPacketHeader : SrcChainID : “Zone1” DstChainID : “Zone2” Number : 200 Status : AckReceived Type : “coin” MaxHeight : 350 PayloadHash : Meanwhile, “Zone1” may optimistically assume successful delivery of a "coin" packet unless evidence to the contrary is proven on “Hub”. In the example above, if “Hub” had not received an  AckSent

status from “Zone2” by block 350, it would have set the status automatically to  Timeout . This evidence of a timeout can get posted back on “Zone1”, and any tokens can be returned. There are two types of Merkle trees supported in the Tendermint/Cosmos ecosystem: The Simple Tree, and the IAVL+ Tree. The Simple Tree is a Merkle tree for a static list of elements. If the number of items is not a power of two, some leaves will be at different levels. Simple Tree tries to keep both sides of the tree the same height, but the left may be one greater. This Merkle tree is used to Merkle-ize the transactions of a block, and the top level elements of the application state root.

The purpose of the IAVL+ data structure is to provide persistent storage for key-value pairs in the application state such that a deterministic Merkle root hash can be computed efyciently. The tree is balanced using a variant of the AVL algorithm, and all operations are \(O(\log n)\). In an AVL tree, the heights of the two child subtrees of any node differ by at most one. Whenever this condition is violated upon an update, the tree is rebalanced by creating \(O(\log n)\) new nodes that point to unmodiyed nodes of the old tree. In the original AVL algorithm, inner nodes can also hold key-value pairs. The AVL+ algorithm (note the plus) modiyes the AVL algorithm to keep all values on leaf nodes, while only using branch-nodes to store keys. This simpliyes the algorithm while keeping the merkle hash trail short. The AVL+ Tree is analogous to Ethereum’s Patricia tries. There are tradeoffs. Keys do not need to be hashed prior to insertion in IAVL+ trees, so this provides faster ordered iteration in the key space which may beneyt some applications. The logic is simpler to implement, requiring only two types of nodes – inner nodes and leaf nodes. The Merkle proof is on average shorter, being a                 *                 / \               /     \             /         \           /             \          *               *         / \             / \        /   \           /   \       /     \         /     \      *       *       *       h6     / \     / \     / \    h0  h1  h2  h3  h4  h5    A SimpleTree with 7 elements

balanced binary tree. On the other hand, the Merkle root of an IAVL+ tree depends on the order of updates. We will support additional efycient Merkle trees, such as Ethereum’s Patricia Trie when the binary variant becomes available. In the canonical implementation, transactions are streamed to the Cosmos hub application via the ABCI interface. The Cosmos Hub will accept a number of primary transaction types, including  SendTx ,  BondTx ,  UnbondTx ,  ReportHackTx ,  SlashTx ,  BurnAtomTx ,  ProposalCreateTx , and  ProposalVoteTx , which are fairly self-explanatory and will be documented in a future revision of this paper. Here we document the two primary transaction types for IBC:  IBCBlockCommitTx  and  IBCPacketTx . An  IBCBlockCommitTx  transaction is composed of: ChainID (string) : The ID of the blockchain BlockHash ([]byte) : The block-hash bytes, the Merkle root which includes the app-hash BlockPartsHeader (PartSetHeader) : The block part-set header bytes, only needed to verify vote signatures BlockHeight (int) : The height of the commit BlockRound (int) : The round of the commit Commit ([]Vote) : The \(> 2/3\) Tendermint Precommit votes that comprise a block commit ValidatorsHash ([]byte) : A Merkle-tree root hash of the new validator set

ValidatorsHashProof (SimpleProof) : A SimpleTree Merkleproof for proving the ValidatorsHash against the BlockHash AppHash ([]byte) : A IAVLTree Merkle-tree root hash of the application state AppHashProof (SimpleProof) : A SimpleTree Merkle-proof for proving the AppHash against the BlockHash An  IBCPacket  is composed of: Header (IBCPacketHeader) : The packet header Payload ([]byte) : The bytes of the packet payload. Optional PayloadHash ([]byte) : The hash for the bytes of the packet. Optional Either one of  Payload  or  PayloadHash  must be present. The hash of an  IBCPacket  is a simple Merkle root of the two items,  Header  and  Payload . An  IBCPacket  without the full payload is called an abbreviated packet. An  IBCPacketHeader  is composed of: SrcChainID (string) : The source blockchain ID DstChainID (string) : The destination blockchain ID Number (int) : A unique number for all packets Status (enum) : Can be one of AckPending , AckSent , AckReceived , NoAck , or Timeout Type (string) : The types are application-dependent. Cosmos reserves the "coin" packet type MaxHeight (int) : If status is not NoAckWanted or AckReceived by this height, status becomes Timeout . Optional An  IBCPacketTx  transaction is composed of:

FromChainID (string) : The ID of the blockchain which is providing this packet; not necessarily the source FromBlockHeight (int) : The blockchain height in which the following packet is included (Merkle-ized) in the block-hash of the source chain Packet (IBCPacket) : A packet of data, whose status may be one of AckPending , AckSent , AckReceived , NoAck , or Timeout PacketProof (IAVLProof) : A IAVLTree Merkle-proof for proving the packet’s hash against the AppHash of the source chain at given height The sequence for sending a packet from “Zone1” to “Zone2” through the "Hub" is depicted in {Figure X}. First, an  IBCPacketTx  proves to "Hub" that the packet is included in the app-state of “Zone1”. Then, another  IBCPacketTx  proves to “Zone2” that the packet is included in the app-state of “Hub”. During this procedure, the  IBCPacket  yelds are identical: the  SrcChainID  is always “Zone1”, and the  DstChainID  is always "Zone2". The  PacketProof  must have the correct Merkle-proof path, as follows: When “Zone1” wants to send a packet to “Zone2” through “Hub”, the  IBCPacket  data are identical whether the packet is Merkleized on “Zone1”, the “Hub”, or “Zone2”. The only mutable yeld is  Status  for tracking delivery. We thank our friends and peers for assistance in conceptualizing, reviewing, and providing support for our work with Tendermint and Cosmos. IBC///

Zaki Manian of SkuChain provided much help in formatting and wording, especially under the ABCI section Jehan Tremback of Althea and Dustin Byington for helping with initial iterations Andrew Miller of Honey Badger for feedback on consensus Greg Slepak for feedback on consensus and wording Also thanks to Bill Gleim and Seunghwan Han for various contributions. Your name and organization here for your contribution 1 Bitcoin: https://bitcoin.org/bitcoin.pdf 2 ZeroCash: http://zerocash-project.org/paper 3 Ethereum: https://github.com/ethereum/wiki/wiki/WhitePaper 4 TheDAO: https://download.slock.it/public/DAO/WhitePaper.pdf 5 Segregated Witness: https://github.com/bitcoin/bips/blob/master/bip0141.mediawiki 6 BitcoinNG: https://arxiv.org/pdf/1510.02037v2.pdf 7 Lightning Network: https://lightning.network/lightningnetwork-paper-DRAFT-0.5.pdf 8 Tendermint: https://github.com/tendermint/tendermint/wiki 9 FLP Impossibility: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf 10 Slasher: https://blog.ethereum.org/2014/01/15/slasher-apunitive-proof-of-stake-algorithm/ 11 PBFT: http://pmg.csail.mit.edu/papers/osdi99.pdf 12 BitShares: https://bitshares.org/technology/delegatedproof-of-stake-consensus/

13 Stellar: https://www.stellar.org/papers/stellar-consensusprotocol.pdf 14 Interledger: https://interledger.org/rfcs/0001-interledgerarchitecture/ 15 Sidechains: https://blockstream.com/sidechains.pdf 16 Casper: https://blog.ethereum.org/2015/08/01/introducing-casperfriendly-ghost/ 17 ABCI: https://github.com/tendermint/abci 18 Ethereum Sharding: 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 Thin Client Security: https://en.bitcoin.it/wiki/Thin_Client_Security 22 Ethereum 2.0 Mauve Paper: http://vitalik.ca/yles/mauve_paper.html https://www.docdroid.net/ec7xGzs/314477721-ethereumplatform-review-opportunities-and-challenges-for-privateand-consortium-blockchains.pdf.html

“ è 

Consensus et détails techniques

Un protocole de consensus bien conçu devrait fournir garanties en cas de dépassement de la capacité de tolérance et le consensus échoue. Ceci est particulièrement nécessaire dans le domaine économique systèmes, où le comportement byzantin peut avoir des conséquences financières substantielles récompense. La plus importante de ces garanties est une forme de responsabilité fork, où les processus qui ont conduit au consensus échouer (c'est-à-dire avoir amené les clients du protocole à accepter des valeurs différentes - un fourchette) peuvent être identifiés et sanctionnés selon les règles de la protocole ou, éventuellement, le système juridique. Lorsque le système juridique est peu fiables ou excessivement coûteux à invoquer, les validator peuvent être obligés de faire des dépôts de garantie pour pouvoir participer, et ceux les dépôts peuvent être révoqués ou réduits en cas de comportement malveillant détecté [10]. Notez que cela diffère de Bitcoin, où le forking est un phénomène régulier en raison de l'asynchronie du réseau et de la nature probabiliste du ynding collisions partielles hash. Puisque dans de nombreux cas, un fork malveillant est impossible à distinguer d'un fork en raison de l'asynchronie, Bitcoin ne peut pas mettre en œuvre de manière fiable la responsabilité fork, autre que la responsabilité implicite coût d’opportunité payé par les mineurs pour l’exploitation d’un bloc orphelin. Nous appelons les étapes de vote PreVote et PreCommit. Un vote peut être pour un bloc particulier ou pour Nil. Nous appelons une collection de >⅔ PreVotes pour un seul bloc dans le même tour, une Polka et une collection de >⅔ PreCommits pour un seul bloc au cours du même tour d’un Commit. Si >⅔ PreCommit pour Nil dans le même tour, ils passent au suivant rond. Notez qu’un déterminisme strict dans le protocole entraîne une faible hypothèse de synchronisation car les leaders défectueux doivent être détectés et

sauté. Ainsi, les validator attendent un certain temps, TimeoutPropose, avant de pré-voter Nil, et la valeur de TimeoutPropose augmente à chaque tour. Progression à travers le reste d'un tour est entièrement asynchrone, dans la mesure où la progression n'est que effectué une fois qu'un validator entend de >⅔ du réseau. En pratique, il faudrait un adversaire extrêmement puissant pour contrecarrer indéfiniment l'hypothèse de synchronisation faible (ce qui fait que le consensus ne parvient pas à jamais commettre un blocage), et cela peut être rendu encore plus difficile en utilisant des valeurs aléatoires de TimeoutPropose sur chaque validator. Un ensemble supplémentaire de contraintes, ou règles de verrouillage, garantit que le Le réseau finira par engager un seul bloc à chaque hauteur. N'importe lequel tentative malveillante de provoquer la validation de plusieurs blocs à une hauteur donnée peut être identifié. Tout d'abord, un PreCommit pour un bloc doit être accompagné d'une justification, sous la forme d'une Polka pour ce bloc. Si le validator a déjà PreCommit un bloc au tour R_1, nous disent qu'ils sont verrouillés sur ce bloc, et la Polka avait l'habitude de justifier le le nouveau PreCommit au tour R_2 doit arriver dans un tour R_polka où R_1 < R_polka <= R_2. Deuxièmement, les validator doivent proposer et/ou PréVote le bloc sur lequel ils sont verrouillés. Ensemble, ces conditions garantissent qu'un validator ne fait pas de PreCommit sans preuves suffisantes comme justification, et que validators qui ont PreCommit ne peut déjà pas contribuer aux preuves à PreCommit autre chose. Cela garantit à la fois la sécurité et la vivacité du algorithme de consensus. Les détails complets du protocole sont décrits ici. La nécessité de synchroniser tous les en-têtes de bloc est éliminée dans TendermintPoS car l'existence d'une chaîne alternative (un fork) signifie ≥⅓ de la mise sous caution peut être réduite. Bien sûr, puisque couper nécessite que quelqu'un partage la preuve d'un fork, les clients légers devraient stocker tout bloc-hash valide qu'il voit. De plus, les clients légerspourrait périodiquement rester synchronisé avec les modifications apportées à l'ensemble validator, dans afin d'éviter les attaques à longue portée (mais d'autres solutions sont possibles). Dans un esprit similaire à Ethereum, Tendermint permet aux applications de intégrer une racine Merkle globale hash dans chaque bloc, permettant facilement requêtes d'état vérifiables pour des éléments tels que les soldes des comptes, la valeur stocké dans un contrat, ou l’existence d’une transaction non dépensée sortie, en fonction de la nature de l’application. En supposant un ensemble de réseaux de diffusion suffisamment résilients et un ensemble validator statique, n'importe quelle fourchette du blockchain peut être détecté et les dépôts des validator incriminés réduits. Ceci l'innovation, suggérée pour la première fois par Vitalik Buterin début 2014, résout le problème sans enjeu des autres proof-of-stake crypto-monnaies (voir Travaux connexes). Cependant, puisque validator définit doit pouvoir modifier, sur une longue période de temps, l'original Les validator peuvent tous devenir déliés et seraient donc libres de créer une nouvelle chaîne à partir du bloc Genesis, sans aucun coût car ils n'ont plus de dépôts bloqués. Cette attaque a eu lieu connue sous le nom d'attaque à longue portée (LRA), par opposition à une attaque à courte portée. Attaque à distance, où les validator qui sont actuellement liés provoquent un fork et sont donc punissables (en supposant qu'un fork soit responsable BFT algorithme comme le consensus Tendermint). Les attaques à longue portée sont souvent considéré comme un coup critique porté à proof-of-stake. Heureusement, la LRA peut être atténuée comme suit. D'abord, pour un validator pour se désengager (récupérant ainsi leur dépôt de garantie et ne percevant plus de frais pour participer au consensus), le le dépôt doit être rendu intransférable pendant un certain temps connue sous le nom de « période de détachement », qui peut être de l’ordre de semaines ou mois. Deuxièmement, pour qu'un client léger soit sécurisé, la première année chaque fois qu'il se connecte au réseau, il doit vérifier un bloc récent-hash contre une source fiable, ou de préférence plusieurs sources. Ceci

Cette condition est parfois qualifiée de « subjectivité faible ». Enfin, pour rester sécurisé, il doit se synchroniser avec le dernier validator défini sur au moins aussi souvent que la durée de la période de détachement. Ceci garantit que le client léger est informé des modifications apportées au validator fixé avant qu'un validator voit son capital délié et donc plus en jeu, ce qui lui permettrait de tromper le client en effectuant une attaque à longue portée en créant de nouveaux blocs en commençant à un hauteur où il a été collé (en supposant qu'il contrôle suffisamment plusieurs des premières clés privées). Il convient de noter que vaincre la LRA de cette manière nécessite une refonte du système. le modèle de sécurité d'origine de proof-of-work. Dans PoW, c'est supposé qu'un client léger peut se synchroniser avec la hauteur actuelle à partir du bloc Genesis de confiance à tout moment simplement en traitant la preuve de travail dans chaque en-tête de bloc. Toutefois, pour vaincre la LRA, nous exiger qu'un client léger se connecte avec une certaine régularité pour suivre les modifications dans l'ensemble validator, et que la première fois qu'ils lorsqu'ils se connectent, ils doivent être particulièrement attentifs à s'authentifier ce qu'ils entendent du réseau par rapport à des sources fiables. De bien sûr, cette dernière exigence est similaire à celle de Bitcoin, où le protocole et le logiciel doivent également être obtenus auprès d'un source. La méthode ci-dessus pour prévenir l’ARL est bien adaptée aux validator et les nœuds complets d'un blockchain alimenté par Tendermint, car ceux-ci les nœuds sont censés rester connectés au réseau. Le La méthode convient également aux clients légers dont on peut s'attendre à synchronisez-vous fréquemment avec le réseau. Cependant, pour les clients légers qui ne sont pas censés avoir un accès fréquent à Internet ou au blockchain réseau, encore une autre solution peut être utilisée pour surmonter la LRA. Les non-titulaires de validator token peuvent publier leurs token comme garantie avec une période de détachement très longue (par exemple beaucoup plus longue que la période de détachement pour validators) et servir des clients légers avec une méthode secondaire d'attestation de la validité des informations actuelles et bloc passé-hashes. Bien que ces token ne comptent pas pour le sécurité du consensus du blockchain, ils peuvent néanmoinsoffrir de solides garanties aux clients légers. Si bloc historique-hash les requêtes étaient prises en charge dans Ethereum, n'importe qui pouvait lier son tokens dans un smart contract spécialement conçu et fournir services d'attestation payants, créant ainsi un marché pour la sécurité des clients légers LRA. En raison de la définition d’un block commit, toute coalition ≥⅓ de le pouvoir de vote peut arrêter le blockchain en sortant du zine ou non diffuser leurs votes. Une telle coalition peut également censurer transactions particulières en rejetant les blocs qui incluent ces transactions, même si cela entraînerait une proportion importante de propositions de blocs seraient rejetées, ce qui ralentirait le rythme de validations de bloc du blockchain, réduisant ainsi son utilité et sa valeur. La coalition malveillante pourrait également diffuser les votes au compte-goutte afin quant à broyer, le bloc blockchain s'engage à s'arrêter presque ou à s'engager dans toute combinaison de ces attaques. Enfin, cela peut provoquer le blockchain à fork, en double-signant ou en violant le verrouillage règles. Si un adversaire actif à l’échelle mondiale était également impliqué, il pourrait diviser le réseau de telle manière qu'il puisse sembler que le mauvais un sous-ensemble de validators était responsable du ralentissement. Ce n'est pas juste une limitation de Tendermint, mais plutôt une limitation de tous protocoles de consensus dont le réseau est potentiellement contrôlé par un adversaire actif. Pour ces types d'attaques, un sous-ensemble des validator doit se coordonner par des moyens externes pour signer une proposition de réorganisation qui choisit un fork (et toute preuve de celui-ci) et le sous-ensemble initial de validators avec leurs signatures. Les validateurs qui signent une telle proposition de réorganisation renoncent à leur garantie sur tous les autres forks. Les clients devraient vérifier les signatures sur la proposition de réorganisation, vérifier toute preuve, et porter un jugement ou demander à l'utilisateur final de prendre une décision. Pour Par exemple, une application de portefeuille téléphonique peut demander à l'utilisateur un code de sécurité

avertissement, alors qu'un réfrigérateur peut accepter toute proposition de réorganisation signé par +½ des validator originaux avec droit de vote. Aucun algorithme byzantin tolérant aux pannes non synchrone ne peut venir au consensus lorsque ≥⅓ des droits de vote sont malhonnêtes, mais une fourchette suppose que ≥⅓ des voix ont déjà été malhonnêtes par double signature ou changement de serrure sans justification. Alors, je signe la proposition de réorganisation est un problème de coordination qui ne peut pas être résolu par n'importe quel protocole non synchrone (c'est-à-dire automatiquement, et sans faire d'hypothèses sur la fiabilité du réseau sous-jacent). Pour l’instant, nous laissons le problème de la coordination des propositions de réorganisation à la coordination humaine via le consensus social. sur les médias Internet. Les validateurs doivent veiller à ce qu'il y ait il n'y a plus de partitions réseau avant la signature d'une proposition de réorganisation, afin d'éviter les situations dans lesquelles deux propositions de réorganisation contradictoires sont signées. En supposant que le support et le protocole de coordination externe soient robuste, il s'ensuit que les forks sont moins préoccupants que la censure attaques. En plus des forks et de la censure, qui nécessitent ≥⅓ byzantin pouvoir de vote, une coalition de >⅔ pouvoir de vote peut s'engager état arbitraire et invalide. Ceci est caractéristique de tout (BFT) système de consensus. Contrairement à la double signature, qui crée des forks avec des preuves facilement vérifiables, détectant l'engagement d'un un état invalide nécessite que des pairs non validateurs vérifient des blocs entiers, ce qui implique qu'ils conservent une copie locale de l'état et exécutent chaque transaction, calculant indépendamment la racine d'état pour eux-mêmes. Une fois détecté, la seule façon de gérer une telle panne passe par le consensus social. Par exemple, dans les situations où Bitcoin a échoué, que ce soit en raison de bugs logiciels (comme en mars 2013), ou commettant un état invalide en raison du comportement byzantin de mineurs (comme en juillet 2015), la communauté bien connectée de entreprises, développeurs, mineurs et autres organisations établi un consensus social sur les actions manuellesrequis par les participants pour guérir le réseau. De plus, puisque On peut s'attendre à ce que validators d'un Tendermint blockchain soient identifiable, l'engagement d'un état invalide peut même être punissable par la loi ou par une jurisprudence externe, si vous le souhaitez. ABCI se compose de 3 types de messages principaux qui sont transmis à partir de le cœur de l’application. L'application répond avec messages de réponse correspondants. Le message AppendTx est le cheval de bataille de l'application. Chacun La transaction dans le blockchain est livrée avec ce message. Le l'application doit valider chaque transaction reçue avec le Message AppendTx contre l'état actuel, le protocole d'application, et les informations d'identification cryptographiques de la transaction. Un validé la transaction doit ensuite mettre à jour l'état de l'application - en en liant une valeur dans un magasin de valeurs clés, ou en mettant à jour le UTXO base de données. Le message CheckTx est similaire à AppendTx, mais il est uniquement destiné à valider les transactions. Vérifications de l'année du pool de mémoire de Tendermint Core la validité d'une transaction avec CheckTx, et uniquement les relais valides transactions avec ses pairs. Les applications peuvent vérifier une incrémentation nonce dans la transaction et renvoie une erreur lors de CheckTx si le nonce est ancien. Le message Commit est utilisé pour calculer un chiffrement engagement envers l’état actuel de l’application, à placer dans le en-tête de bloc suivant. Cela a des propriétés pratiques. Les incohérences dans la mise à jour de cet état apparaîtront désormais sous la forme blockchain forks qui capture toute une classe de programmation erreurs. Cela simplifie également le développement de logiciels légers et sécurisés. clients, car les preuves Merkle-hash peuvent être vérifiées en vérifiant par rapport le bloc-hash, et le bloc-hash est signé par un quorum de validators (par droit de vote).

Des messages ABCI supplémentaires permettent à l'application de suivre et modifiez l'ensemble validator, et pour que l'application reçoive le bloquer les informations, telles que la hauteur et les votes de validation. Les requêtes/réponses ABCI sont de simples messages Protobuf. Vérifier le schéma yle. Arguments : Data ([]byte) : les octets de la transaction de la demande Retours : Code (uint32) : code de réponse Données ([]octet) : octets de résultat, le cas échéant Journal (chaîne) : message de débogage ou d'erreur Utilisation :

Ajoutez et exécutez une transaction. Si la transaction est valide, renvoie CodeType.OK Arguments : Data ([]byte) : les octets de la transaction de la demande Retours : Code (uint32) : code de réponse Données ([]octet) : octets de résultat, le cas échéant Journal (chaîne) : message de débogage ou d'erreur Utilisation :

Valider une transaction. Ce message ne doit pas muter le état. Les transactions sont exécutées pour la première fois via CheckTx avant diffusé aux pairs dans la couche mempool. Vous pouvez faire CheckTx semi-stateful et effacez l'état lors de la validation ou BeginBlock , pour permettre des séquences de transactions dépendantes dans le même bloc.

Retours : Données ([]octet) : racine Merkle hash Journal (chaîne) : message de débogage ou d'erreur Utilisation :

Renvoie une racine Merkle hash de l'état de l'application. Arguments : Data ([]byte) : les octets de la requête Retours : Code (uint32) : code de réponse Data ([]byte) : octets de réponse à la requête Journal (chaîne) : message de débogage ou d'erreur Utilisation :

Videz la file d'attente de réponses. Applications qui implémentent types.L’application n’a pas besoin d’implémenter ce message – c’est gérés par le projet. Retours : Data ([]byte) : les octets d'informations Utilisation :

Renvoie des informations sur l’état de l’application. Demande spécifique. Arguments : Clé (chaîne) : Clé à définir

Value (string) : valeur à définir pour la clé Retours : Journal (chaîne) : message de débogage ou d'erreur Utilisation :

Définissez les options de l'application. Par ex. Key="mode", Value="mempool" pour une connexion mempool, ou Key="mode", Value="consensus" pour une connexion consensuelle. Les autres options sont spécifiques à l'application. Arguments : Validateurs ([]Validator) : Genèse initiale-validators Utilisation :

Appelé une fois lors de la genèse Arguments : Height (uint64) : la hauteur du bloc qui commence Utilisation :

Signale le début d’un nouveau bloc. Appelé avant tout AppendTxs. Arguments : Height (uint64) : hauteur du bloc qui s'est terminé Retours : Validateurs ([]Validator) : validators modifiés par de nouveaux pouvoirs de vote (0 pour supprimer) Utilisation :

Signale la fin d’un bloc. Appelé avant chaque commit après tout opérations Consultez le référentiel ABCI pour plus de détails.Il existe plusieurs raisons pour lesquelles un expéditeur peut souhaiter que accusé de réception d'un paquet par la chaîne réceptrice. Par exemple, l'expéditeur peut ne pas connaître l'état du chaîne de destination, si l'on s'attend à ce qu'elle soit défectueuse. Ou bien, l'expéditeur peut souhaitez imposer un délai d'attente au paquet (avec le paramètre  MaxHeight  rendement des paquets), alors que n'importe quelle chaîne de destination peut souffrir d'une attaque par déni de service avec une augmentation soudaine du nombre de messages entrants. paquets. Dans ces cas, l'expéditeur peut exiger un accusé de réception en définissant l'état initial du paquet sur  AckPending . Ensuite, c'est le la responsabilité de la chaîne de réception de confirmer la livraison en incluant un en abrégé IBCPacket  dans l'application Merkle hash. Tout d'abord, un  IBCBlockCommit  et un  IBCPacketTx  sont publiés sur « Hub ». qui prouve l'existence d'un  IBCPacket  sur la « Zone1 ». Dis ça  IBCPacketTx a la valeur suivante : DeChainID : "Zone1" FromBlockHeight : 100 (disons) Paquet : un IBCPaquet :

En-tête : un IBCPacketHeader : SrcChainID : "Zone1" DstChainID : "Zone2" Nombre : 200 (disons) Statut : Accusé de réception en attente Type : « pièce de monnaie » MaxHeight : 350 (disons que « Hub » est actuellement à la hauteur de 300) Charge utile : Ensuite, un IBCBlockCommit et IBCPacketTx sont publiés sur « Zone2 ». qui prouve l'existence d'un  IBCPacket  sur « Hub ». Dis ça  IBCPacketTx a la valeur suivante : FromChainID : "Hub" FromBlockHeight : 300 Paquet : un IBCPaquet : En-tête : un IBCPacketHeader : SrcChainID : "Zone1" DstChainID : "Zone2" Numéro : 200 Statut : Accusé de réception en attente Type : « pièce de monnaie » Hauteur maximale : 350 Charge utile : Ensuite, « Zone2 » doit inclure dans son app-hash un paquet abrégé qui montre le nouveau statut de  AckSent . Un IBCBlockCommit et  IBCPacketTx sont republiés sur « Hub », ce qui prouve l'existence d'un  IBCPacket  abrégé sur "Zone2". Dites que  IBCPacketTx  a la valeur suivante : DeChainID : "Zone2"

FromBlockHeight : 400 (disons) Paquet : un IBCPacket : En-tête : un IBCPacketHeader : SrcChainID : "Zone1" DstChainID : "Zone2" Numéro : 200 Statut : AcquitEnvoyé Type : « pièce de monnaie » Hauteur maximale : 350 PayloadHash : Enfin, « Hub » doit mettre à jour l'état du paquet depuis  AckPending  à AckReceived . Preuve de ce nouveau statut ynalisé devrait revenir à "Zone2". Supposons que IBCPacketTx contienne les éléments suivants : valeur : FromChainID : "Hub" DeBlockHeight : 301 Paquet : un IBCPacket : En-tête : un IBCPacketHeader : SrcChainID : "Zone1" DstChainID : "Zone2" Numéro : 200 Statut : Accusé de réception Type : « pièce de monnaie » Hauteur maximale : 350 PayloadHash : Pendant ce temps, la « Zone 1 » peut, avec optimisme, supposer une livraison réussie. d'un paquet de « pièces » sauf preuve du contraire sur « Centre ». Dans l'exemple ci-dessus, si « Hub » n'a pas reçu de message AckSent

statut de "Zone2" par le bloc 350, il aurait défini le statut automatiquement sur  Timeout . Cette preuve d'un délai d'attente peut obtenir posté sur « Zone1 », et tous les token peuvent être renvoyés. Il existe deux types de Merkle tree pris en charge dans le Écosystème Tendermint/Cosmos : l'arbre simple et l'IAVL+ Arbre. L'arbre simple est un Merkle tree pour une liste statique d'éléments. Si le le nombre d'éléments n'est pas une puissance de deux, certaines feuilles seront à différents niveaux. Simple Tree essaie de garder les deux côtés de l'arbre même hauteur, mais la gauche peut être plus grande. Ce Merkle tree est utilisé pour Merkle-iser les transactions d'un bloc, et le niveau supérieur éléments de la racine de l’état de l’application.Le but de la structure de données IAVL+ est de fournir des stockage des paires clé-valeur dans l'état de l'application de telle sorte qu'un La racine déterministe de Merkle hash peut être calculée efficacement. Le l'arbre est équilibré à l'aide d'une variante de l'algorithme AVL, et tout les opérations sont O(log(n)). Dans un arbre AVL, les hauteurs des deux sous-arbres enfants de n'importe quel nœud diffèrent d’au plus un. Chaque fois que cette condition est violée lors d'un mise à jour, l'arborescence est rééquilibrée en créant O(log(n)) de nouveaux nœuds qui pointez vers les nœuds non modifiés de l’ancien arbre. Dans l'AVL d'origine algorithme, les nœuds internes peuvent également contenir des paires clé-valeur. L'AVL+ (notez le plus) modifie l'algorithme AVL pour conserver tout valeurs sur les nœuds feuilles, tout en utilisant uniquement des nœuds de branche pour stocker les clés. Cela simplifie l'algorithme tout en gardant la trace merkle hash court. L’arbre AVL+ est analogue aux essais de Patricia de Ethereum. Il y a compromis. Les clés n'ont pas besoin d'être hashed avant d'être insérées dans Arbres IAVL+, ce qui permet une itération ordonnée plus rapide dans la clé espace qui peut bénéficier à certaines applications. La logique est plus simple à implémenter, ne nécessitant que deux types de nœuds : les nœuds internes et nœuds feuilles. La preuve de Merkle est en moyenne plus courte, étant une                 *                 / \               /     \             /         \           /             \          *               *         / \             / \        /   \           /   \       /     \         /     \      *       *       *       h6     / \     / \     / \    h0  h1  h2  h3  h4  h5    Un SimpleTree avec 7 éléments

arbre binaire équilibré. D'autre part, la racine Merkle d'un L’arborescence IAVL+ dépend de l’ordre des mises à jour. Nous prendrons en charge des Merkle tree supplémentaires efficaces, tels que Patricia Trie de Ethereum lorsque la variante binaire devient disponible. Dans l'implémentation canonique, les transactions sont diffusées vers le Application hub Cosmos via l'interface ABCI. Le Cosmos Hub acceptera un certain nombre de transactions principales types, notamment  SendTx ,  BondTx ,  UnbondTx ,  ReportHackTx ,  SlashTx ,  BurnAtomTx ,  ProposalCreateTx et  ProposalVoteTx , qui sont assez explicites et seront documentés dans un révision future de cet article. Nous documentons ici les deux principaux types de transactions pour IBC :  IBCBlockCommitTx  et  IBCPacketTx . Une transaction  IBCBlockCommitTx est composée de : ChainID (string) : ID du blockchain BlockHash ([]byte) : le bloc-hash octets, la racine Merkle qui comprend l'application-hash BlockPartsHeader (PartSetHeader) : l'en-tête de l'ensemble partiel de bloc octets, uniquement nécessaires pour vérifier les signatures de vote BlockHeight (int) : la hauteur du commit BlockRound (int) : Le tour du commit Commit ([]Vote) : le >⅔ Tendermint Precommit vote qui comprendre un bloc de validation ValidatorsHash ([]byte) : une racine Merkle-tree hash du nouveau validator ensemble

ValidatorsHashProof (SimpleProof) : Un SimpleTree Merkleproof pour prouver le ValidatorsHash par rapport au BlockHash AppHash ([]byte) : une racine IAVLTree Merkle-tree hash du état de l'application AppHashProof (SimpleProof) : un SimpleTree Merkle-proof pour prouver l'AppHash contre le BlockHash Un  IBCPacket est composé de : En-tête (IBCPacketHeader) : l'en-tête du paquet Payload ([]byte) : octets de la charge utile du paquet. Facultatif PayloadHash ([]byte) : le hash pour les octets du paquet. Facultatif L'un des éléments suivants : Payload ou PayloadHash doit être présent. Le hash d'un  IBCPacket est une simple racine Merkle des deux éléments,  Header  et Charge utile . Un IBCPacket sans la charge utile complète est appelé un paquet abrégé. Un  IBCPacketHeader est composé de : SrcChainID (string) : ID source blockchain DstChainID (string) : ID de destination blockchain Number (int) : un numéro unique pour tous les paquets Statut (énumération) : peut être AckPending , AckSent , AckReceived , NoAck ou Timeout Type (chaîne) : les types dépendent de l'application. Cosmos réserve le type de paquet "coin" MaxHeight (int) : si le statut n'est pas NoAckWanted ou AckReceived à cette hauteur, le statut devient Timeout . Facultatif Une transaction  IBCPacketTx est composée de :FromChainID (string) : ID du blockchain qui est fournir ce paquet ; pas nécessairement la source FromBlockHeight (int) : hauteur blockchain à laquelle le Le paquet suivant est inclus (Merkle-isé) dans le bloc-hash de la chaîne d'approvisionnement Paquet (IBCPacket) : Un paquet de données, dont le statut peut être un de AckPending , AckSent , AckReceived , NoAck ou Timeout PacketProof (IAVLProof) : un IAVLTree Merkle-proof pour prouver le hash du paquet par rapport à l'AppHash de la chaîne source à hauteur donnée La séquence d'envoi d'un paquet de « Zone1 » à « Zone2 » via le « Hub » est illustré dans la {Figure X}. Tout d'abord, un IBCPacketTx  prouve à "Hub" que le paquet est inclus dans l'état de l'application de "Zone1". Ensuite, un autre  IBCPacketTx  prouve à « Zone2 » que le Le paquet est inclus dans l’état de l’application de « Hub ». Pendant ce temps procédure, les rendements  IBCPacket  sont identiques : le  SrcChainID  est toujours "Zone1" et  DstChainID est toujours "Zone2". Le PacketProof doit avoir le chemin d'accès correct à l'épreuve de Merkle, comme suit : Lorsque « Zone1 » souhaite envoyer un paquet à « Zone2 » via « Hub », les données  IBCPacket  sont identiques, que le paquet soit merkleisé sur la « Zone1 », le « Hub » ou la « Zone2 ». Le seul rendement mutable est  Statut pour le suivi de la livraison. Nous remercions nos amis et nos pairs pour leur aide dans la conceptualisation, examiner et fournir un soutien à notre travail avec Tendermint et Cosmos. IBC///

Zaki Manian de SkuChain a fourni beaucoup d'aide pour le formatage et libellé, en particulier dans la section ABCI Jehan Tremback d'Althea et Dustin Byington pour leur aide itérations initiales Andrew Miller de Honey Badger pour ses commentaires sur le consensus Greg Slepak pour ses commentaires sur le consensus et la formulation Merci également à Bill Gleim et Seunghwan Han pour divers cotisations. Votre nom et votre organisation ici pour votre contribution 1 Bitcoin : https://bitcoin.org/bitcoin.pdf 2 ZéroCash : http://zerocash-project.org/paper 3 Ethereum : https://github.com/ethereum/wiki/wiki/WhitePaper 4 LeDAO : https://download.slock.it/public/DAO/WhitePaper.pdf 5 Témoin séparé : https://github.com/bitcoin/bips/blob/master/bip0141.mediawiki 6 BitcoinNG : https://arxiv.org/pdf/1510.02037v2.pdf 7 Réseau Lightning : https://lightning.network/lightningnetwork-paper-DRAFT-0.5.pdf 8Menthe tendre : https://github.com/tendermint/tendermint/wiki 9 Impossibilité FLP : https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf dixSlasheur : https://blog.ethereum.org/2014/01/15/slasher-apunitive-proof-of-stake-algorithm/ 11 PBFT : http://pmg.csail.mit.edu/papers/osdi99.pdf 12 BitShares : https://bitshares.org/technology/delegatedproof-of-stake-consensus/

13 Stellar : https://www.stellar.org/papers/stellar-consensusprotocol.pdf 14 Grand livre intermédiaire : https://interledger.org/rfcs/0001-interledgerarchitecture/ 15 chaînes latérales : https://blockstream.com/sidechains.pdf 16Casper : https://blog.ethereum.org/2015/08/01/introducing-casperfriendly-ghost/ 17 ABCI : https://github.com/tendermint/abci 18 Ethereum Partage : 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 Sécurité des clients légers : https://en.bitcoin.it/wiki/Thin_Client_Security 22 Ethereum 2.0 Papier Mauve : http://vitalik.ca/yles/mauve_paper.html https://www.docdroid.net/ec7xGzs/314477721-ethereumplatform-review-opportunities-and-challenges-for-privateand-consortium-blockchains.pdf.html

³ è