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

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

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

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

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