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.
導入
オープンソース エコシステムの総合的な成功により、 分散型ファイル共有とパブリック暗号通貨は、 分散型インターネットプロトコルという理解を促した 社会経済インフラを根本的に改善するために使用できます。 Bitcoin [1] のような特殊な blockchain アプリケーションを見てきました ( 暗号通貨)、Zerocash [2] (プライバシーのための暗号通貨)、および Ethereum [3] などの一般化された smart contract プラットフォーム、 Ethereum Virtual 用の無数の分散アプリケーション Augur (予測市場) や TheDAO などのマシン (EVM) [4] (投資クラブ)。 しかし、これまでに、これらのblockchainは数多くの被害を受けてきました。 総エネルギー効率の悪さ、貧弱な、または パフォーマンスが限られており、ガバナンスメカニズムが未熟です。 Bitcoin のトランザクション スループットを拡張するための提案。たとえば、 Segregated-Witness [5] および BitcoinNG [6] は垂直スケーリングです 単一の物理的な容量によって依然として制限されるソリューション 完全な監査可能性の特性を確保するために、マシン。 ライトニング ネットワーク [7] は、Bitcoin トランザクションのスケールアップに役立ちます
一部の取引を台帳から完全に除外することで取引量を削減し、 少額決済やプライバシー保護に適しています。 支払いレールを備えていますが、より一般化された用途には適していない可能性があります スケーリングのニーズ。 理想的なソリューションは、複数の blockchain を並列に実行できるソリューションです。 セキュリティ特性を維持しながら相互運用できます。これには、 proof-of-work では、不可能ではないにしても、難しいことが証明されています。合併しました たとえば、マイニングでは、親を確保するために行われる作業が可能になります。 チェーンは子チェーンで再利用されますが、トランザクションは依然として 各ノードによって順番に検証され、マージマイニングされた blockchain hash の電源の大部分がオンになっている場合、攻撃に対して脆弱になります。 親は子を積極的にマージマイニングしていません。学術的なレビュー 代替 blockchain ネットワーク アーキテクチャが提供されています 追加のコンテキスト、および他の提案の概要を提供します とその欠点を関連作品で説明します。 ここでは、新しい blockchain ネットワーク アーキテクチャである Cosmos を紹介します。 これらすべての問題に対処します。 Cosmos は多くのネットワークです ゾーンと呼ばれる独立した blockchain。ゾーンの電源は次のとおりです。 高性能を提供する Tendermint Core [8]、 一貫性のある安全な PBFT のようなコンセンサス エンジン。悪意のある者の行動に対して厳格な責任追及保証が保持されます。 俳優たち。 Tendermint Core の BFT コンセンサス アルゴリズムが最適です パブリック proof-of-stake blockchains のスケーリング用。 Cosmos の最初のゾーンは、Cosmos ハブと呼ばれます。 Cosmos Hub は、シンプルな機能を備えたマルチアセット proof-of-stake 暗号通貨です。 ネットワークの適応を可能にするガバナンス メカニズム アップグレードします。さらに、Cosmos ハブは次のように拡張できます。 他のゾーンを接続します。 Cosmos ネットワークのハブとゾーンは以下と通信します。 blockchain 間通信 (IBC) プロトコルを介して相互に、 blockchain の一種の仮想 UDP または TCP。トークンは次のことができます あるゾーンから別のゾーンに安全かつ迅速に転送ゾーン間で流動性を交換する必要はありません。代わりに、 すべてのゾーン間の token 転送は Cosmos ハブを経由します。 各ゾーンが保持する token の合計量を追跡します。の ハブは、各ゾーンを他のゾーンの障害から隔離します。なぜなら 誰でも新しいゾーンを Cosmos ハブに接続できます。ゾーンでは許可されています 新しい blockchain イノベーションとの将来の互換性を実現します。 このセクションでは、Tendermint コンセンサス プロトコルについて説明します。 およびそれを使用してアプリケーションを構築するために使用されるインターフェイス。さらに詳しく 詳細については、付録を参照してください。 古典的なビザンチン フォールト トレラント (BFT) アルゴリズムでは、各ノード 同じ重さです。 Tendermint では、ノードには非負の値があります。 投票権の量と肯定的な投票を持つノード 電力はvalidatorと呼ばれます。バリデーターは 暗号署名をブロードキャストすることによるコンセンサス プロトコル、または 次のブロックに同意するために投票します。 バリデーターの投票権は生成時に決定されるか、 に応じて、blockchain によって決定的に変更されます。 アプリケーション。たとえば、次のような proof-of-stake アプリケーションでは、 Cosmos ハブ、投票力は次によって決定される場合があります。 staking token が担保として保証されます。 注: 2/3 や 1/3 などの端数は、投票総数の端数を指します。 すべての validator を除く、validator の合計数ではありません。 等しい重みを持っています。 >2/3 は「2/3 以上」を意味し、≥1/3 は「少なくとも」を意味します ⅓」。 Tendermint は部分同期 BFT コンセンサス プロトコルです DLS コンセンサス アルゴリズム [20] から派生しました。テンダーミントは
そのシンプルさ、パフォーマンス、フォークの説明責任で注目に値します。 このプロトコルには、固定された既知の validator セットが必要です。 validator は公開鍵によって識別されます。バリデータは次のことを試みます 一度に 1 つのブロックについて合意に達します (ブロックはリストです) 取引の。ブロックのコンセンサスに対する投票は次の手順で行われます。 ラウンドします。各ラウンドにはラウンドリーダー、つまり提案者がいます。 ブロックを提案します。次に、validator は、次のいずれかについて段階的に投票します。 提案されたブロックを受け入れるか、次のラウンドに進みます。の ラウンドの提案者は、順序付けられたものから決定的に選択されます。 投票力に比例した validator のリスト。 プロトコルの完全な詳細はここで説明されています。 Tendermint のセキュリティは、最適な Byzantine の使用に由来します。 超過半数 (>2/3) の投票とロックによるフォールト トレランス 仕組み。これらは連携して次のことを保証します。 違反を引き起こすには 1/3 以上の投票権がビザンチンでなければなりません 安全性。2 つ以上の値がコミットされます。 validator のセットが安全性の侵害に成功した場合、あるいは そうしようとすると、プロトコルによって識別される可能性があります。これ 競合するブロックへの投票とブロードキャストの両方が含まれます 不当な投票。 その強力な保証にもかかわらず、Tendermint は例外的なサービスを提供します パフォーマンス。 7 つのノードに分散された 64 ノードのベンチマーク 5 大陸のデータセンター、コモディティ クラウド インスタンス、 Tendermint コンセンサスは、1 回あたり数千のトランザクションを処理できます。 2 番目は、コミットの遅延が 1 ~ 2 秒程度です。 特に、1 回あたり 1,000 件をはるかに超えるトランザクションのパフォーマンスが優れています。 過酷な敵対状況でも秒速が維持されます。 validator は、悪意を持って作成された投票をクラッシュまたはブロードキャストします。参照 詳細については、以下の図を参照してください。

Tendermint のコンセンサス アルゴリズムの大きな利点は、簡素化されることです。 クライアントのセキュリティが軽いため、モバイルおよび モノのインターネットの使用例。 Bitcoin ライトクライアントは同期する必要がありますが、 ブロックヘッダーのチェーンを検索し、最も証拠のあるものを見つけます。 Tendermint ライト クライアントは変更に対応するだけで済みます。 validator セットに追加し、>2/3 PreCommit を確認します。 最新の状態を判断するための最新ブロック。 簡潔なライト クライアント証明により、inter-blockchain も有効になります コミュニケーション。 Tendermint には、特定の現象を防ぐための保護手段があります。 長距離の何も賭けない二重支払いなどの注目すべき攻撃 そして検閲。これらについては、付録で詳しく説明します。Tendermint コンセンサス アルゴリズムは、 Tendermint Coreと呼ばれるプログラム。テンダーミントコアは、 アプリケーションに依存しない「コンセンサスエンジン」により、あらゆるものを変えることができます。 決定論的なブラックボックス アプリケーションを分散複製される blockchain。 Tendermint Core は blockchain アプリケーションに接続します アプリケーション ブロックチェーン インターフェイス (ABCI) [17] 経由。したがって、ABCI blockchain アプリケーションを任意の形式でプログラムできるようにします コンセンサスが得られるプログラミング言語だけでなく、 さらに、ABCI を使用すると、簡単に 既存の blockchain スタックのコンセンサス層を交換します。 私たちは、よく知られた暗号通貨 Bitcoin から類推します。 Bitcoin は、各ノードが維持する暗号通貨 blockchain です。 完全に監査された未使用トランザクション出力 (UTXO) データベース。もし ある人は、ABCI の上に Bitcoin のようなシステムを作成したいと考えていました。 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 タイプを追跡し、合計の記録を保持します 接続された各ゾーン内の token の数。トークンは次のことができます あるゾーンから別のゾーンに安全かつ迅速に転送 ゾーン間で液体を交換する必要はありません。 ゾーン間のコイン転送は、Cosmos ハブを経由します。 このアーキテクチャは、blockchain スペースが抱える多くの問題を解決します。 アプリケーションの相互運用性、スケーラビリティ、 シームレスなアップグレード可能。たとえば、Bitcoind から派生したゾーン、 Go-Ethereum、CryptoNote、ZCash、または任意の blockchain システムは、 Cosmos ハブに接続してください。これらのゾーンにより、Cosmos は次のことを行うことができます。 世界的なトランザクション需要に合わせて無限に拡張できます。ゾーンも 分散型取引所にとっては素晴らしい yt であり、次のようにサポートされます。 まあ。 Cosmos は単なる単一の分散台帳ではなく、Cosmos ハブは壁に囲まれた庭園や世界の中心ではありません。私たちは 分散型台帳のオープンネットワーク用のプロトコルの設計 将来の金融システムの新たな基盤として機能する可能性があります。 暗号化、健全な経済学、合意の原則に基づく 理論、透明性、説明責任。 Cosmos ハブは、Cosmos における最初のパブリック blockchain です。 Tendermint の BFT コンセンサス アルゴリズムを利用したネットワーク。の Tendermint オープンソース プロジェクトは、次のような問題に対処するために 2014 年に誕生しました。 Bitcoin のproof-of-workコンセンサスアルゴリズムの速度、スケーラビリティ、環境問題。実績のあるものを使用および改善することにより、
BFT アルゴリズムは 1988 年に MIT で開発されました [20]、Tendermint チームは、proof-of-stake を概念的に実証した最初の人物でした 何も問題がない問題に対処する暗号通貨 第 1 世代 proof-of-stake 暗号通貨の被害 NXT および BitShares1.0 として。 現在、事実上すべての Bitcoin モバイル ウォレットは信頼できるサーバーを使用して、 取引の検証を提供します。これは、proof-of-work では、作業の前に多くの確認を待つ必要があるためです。 トランザクションは不可逆的にコミットされたと見なすことができます。二重支払い攻撃は、次のようなサービスですでに実証されています。 コインベース。 他の blockchain コンセンサス システムとは異なり、Tendermint は以下を提供します 即時かつ確実に安全なモバイルクライアントの支払い検証。 Tendermint は決してフォークしないように設計されているため、モバイル ウォレットは即座にトランザクション確認を受け取ることができるため、 トラストレスで実用的な支払いがスマートフォン上で実現します。これ モノのインターネット アプリケーションに重大な影響を与える まあ。 Cosmos のバリデーターは Bitcoin マイナーと同様の役割を果たしますが、 代わりに暗号署名を使用して投票します。バリデーターは コミットを担当する安全な専用マシン ブロック。 validator 以外のユーザーは、staking token (と呼ばれる) を委任できます。 「アトム」) を任意の validator に送信して、ブロック手数料とアトムの一部を獲得します 報酬は得られますが、次の場合には罰せられる(切り捨てられる)リスクが伴います。 デリゲート validator がハッキングされたか、プロトコルに違反しました。証明された Tendermint BFT コンセンサスの安全性の保証と担保 利害関係者の保証金 – validator および委任者 – が提供する ノードとライトクライアントのための証明可能かつ定量化可能なセキュリティ。 分散型公開台帳には憲法と ガバナンスシステム。 Bitcoin は Bitcoin 財団に依存しており、アップグレードを調整するためにマイニングを行いますが、これには時間がかかります。 Ethereum ハードフォークしてアドレス指定した後、ETH と ETC に分割 DAO ハッキング、主に事前の社会契約がなかったため そのような決定を下すためのメカニズムもありません。 Cosmos ハブの検証者と委任者は、次の項目に投票できます。 システムのプリセットパラメータを変更できる提案 自動的に (ブロックガス制限など)、アップグレードを調整します。 人間が読める憲法の修正案に投票する Cosmos ハブのポリシーを管理します。憲法 などの問題に関して利害関係者間の団結が可能になります。 盗難やバグ (TheDAO インシデントなど) により、より迅速かつ迅速な対応が可能になります。 よりクリーンな解像度。 各ゾーンは独自の憲法と統治を持つこともできます 仕組みも。たとえば、Cosmos ハブには ハブで不変性を強制する構成 (ロールバックなし、 Cosmos ハブ ノード実装のバグを除いて)、 各ゾーンはロールバックに関して独自のポリシーを設定できます。 異なるポリシー ゾーン間の相互運用性を有効にすることで、 Cosmos ネットワークはユーザーに究極の自由と可能性を与えます。 無許可の実験。 ここでは、分散化とスケーラビリティの新しいモデルについて説明します。 Cosmos は、多くの blockchain を搭載したネットワークです。 テンダーミント。既存の提案は「単一の」を作成することを目的としていますが、 blockchain」、グローバル トランザクションの合計順序付け、Cosmos 多数の blockchain を相互に同時に実行できるようにします 相互運用性を維持しながら。 基本的に、Cosmos ハブは多くの独立したものを管理します。 blockchain 「ゾーン」と呼ばれる (以下では「シャード」と呼ばれることもあります) 「シャーディング」として知られるデータベース スケーリング技術を指します)。
に投稿されたゾーンからの最近のブロックコミットの継続的なストリーム ハブにより、ハブは各ゾーンの状態を常に把握できるようになります。 同様に、各ゾーンはハブの状態を常に把握します(ただし、ゾーンは を介して間接的に行われる場合を除いて、互いに連絡を取り合わないでください。 ハブ)。その後、情報のパケットが一方から通信されます。 マークルプルーフを証拠として投稿することで、別のゾーンにゾーンします。 情報が送受信されました。このメカニズムはと呼ばれます blockchain 間通信、または略して IBC。 どのゾーンもそれ自体をハブとして非循環グラフを形成できます。 しかし、明確にするために、簡単なことだけを説明します。 ハブが 1 つだけあり、ハブ以外のものが多数ある構成 ゾーン。 Cosmos ハブは、マルチアセットをホストする blockchain です。 分散型台帳。token は個々のユーザーが保持できます。 ゾーン自体によって。これらのtokenは1つのゾーンから移動できます 「コイン パケット」と呼ばれる特別な IBC パケットで別のパケットに送信します。ハブは 合計の大域的不変性を維持する責任がある ゾーン全体の各 token の量。 IBC コイン パケット トランザクションは送信者、ハブ、受信者によってコミットされる必要があります blockchain秒。Cosmos ハブは全体の中央台帳として機能するため、 システムでは、ハブのセキュリティが最も重要です。その間 各ゾーンは、次のように保護される Tendermint blockchain である可能性があります。 4 つほど少ない (BFT コンセンサスが必要ない場合はさらに少ない)、ハブ グローバルに分散された validator のセットによって保護される必要があります。 などの最も厳しい攻撃シナリオに耐えることができます。 大陸ネットワークの分割または国家支援による攻撃。 Cosmos ゾーンは、IBC を交換する独立した blockchain です。 ハブとのメッセージ。ハブの観点から見ると、ゾーンは マルチアセット ダイナミック メンバーシップ マルチシグネチャ アカウント IBC パケットを使用して token を送受信できます。のように 暗号通貨アカウントでは、ゾーンは token を超えて転送することはできません 持っていますが、token を持っている他のユーザーから token を受け取る可能性があります。ゾーン 1 つ以上の token タイプの「ソース」として指定できます。 token 電源を注入する電力を与えます。 Cosmos ハブのアトムは、ゾーンの validator によってステーキングされる可能性があります ハブに接続されています。これらのゾーンへの二重攻撃攻撃中 その結果、投票権の 2/3 を超えるゾーンであるテンダーミントの責任追及の責任が大幅に削減されることになるでしょう。 Byzantine は無効な状態をコミットする可能性があります。 Cosmos ハブは、 他のゾーンでコミットされたトランザクションを検証または実行するため、 ユーザーは、信頼するゾーンに token を送信する責任があります。 将来的には、Cosmos ハブのガバナンス システムがハブを追い越す可能性があります。 ゾーンの障害を考慮した改善提案。のために たとえば、一部 (またはすべて) ゾーンからのアウトバウンド token 転送は、 ゾーンの緊急サーキットブレークを可能にするためにスロットルされる (token 転送の一時停止) 攻撃が検出されたとき。 ここで、ハブとゾーンがそれぞれとどのように通信するかを見てみましょう。 その他。たとえば、「Zone1」、「Zone2」という 3 つの blockchain がある場合、

と「ハブ」。「ゾーン 1」が次の宛先のパケットを生成することを望みます。 「Hub」を経由する「Zone2」の場合。パケットをあるものから移動するには blockchain を別のユーザーに送信すると、プルーフが受信チェーンに投稿されます。 証拠は、送信チェーンがパケットをパブリッシュしたことを示しています。 疑わしい目的地。受信チェーンがこの証明をチェックするには、 送信者のブロックヘッダーを追跡できる必要があります。これ このメカニズムはサイドチェーンで使用されるものと似ています。 相互作用する 2 つのチェーンが、 存在証明データグラムの双方向ストリーム (トランザクション)。 IBC プロトコルは、当然のことながら 2 種類の トランザクション: IBCBlockCommitTx トランザクション。 blockchain は、最新のブロック hash を観察者に証明します。 IBCPacketTx トランザクションにより、blockchain は 指定されたパケットが実際にパブリッシュされたことをオブザーバーに証明する 送信者のアプリケーションによる、最近のメールに対するマークルプルーフを介した ブロック-hash。 IBC メカニズムを 2 つの別々のトランザクションに分割することで、 受信チェーンのネイティブ料金市場メカニズムを許可します。 どのパケットがコミットされるか (つまり、確認応答されるか) を決定します。 どのように送信するかについて、送信チェーン上で完全な自由を許可します。 多くの送信パケットが許可されます。 上記の例では、「Zone1」のブロック-hashを更新するには 「ハブ」(または「Zone2」の「ハブ」)上、IBCBlockCommitTxトランザクションは、ブロック-hash を使用して「ハブ」に投稿する必要があります。 「ゾーン 1」 (または「ハブ」のブロック hash を持つ「ゾーン 2」)。 詳細については、IBCBlockCommitTx および IBCPacketTx を参照してください。 2 つの IBC トランザクション タイプについて。 Bitcoin が分散型であることで安全性が高まるのと同じように、 台帳を大量に複製することで、取引所の脆弱性を軽減できます。 blockchain で実行することで、外部および内部のハッキングを実行できます。私たち これを分散型交換と呼びます。 暗号通貨コミュニティが分散型と呼ぶもの 今日の取引所は、「アトミック クロスチェーン」(AXC)トランザクションと呼ばれるものに基づいています。 AXC トランザクションでは、2 人のユーザーが 2 つの異なるチェーンは 2 つの転送トランザクションを実行できます。 両方の台帳で一緒にコミットされるか、まったくコミットされない(すなわち、 原子的に)。たとえば、2 人のユーザーがビットコインをイーサ (または 2 つの異なる台帳上の任意の 2 つの token)、AXC トランザクションを使用し、 Bitcoin と Ethereum がそれぞれに接続されていない場合でも その他。 AXC トランザクションで取引所を運営する利点は次のとおりです。 どちらのユーザーもお互いを信頼する必要も、トレードマッチングを信頼する必要もありません サービス。欠点は、双方がオンラインである必要があることです。 起こる貿易。 もう 1 つのタイプの分散型取引所は、大量複製です。 独自の 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 時間の出来高が 2,000 万ドルで、2 位は Bitynex の 24 時間取引高は 500 万ドルです。これほど強力なネットワークがあると、 その影響で、AXC ベースの分散型取引所が影響を受ける可能性は低いです。 集中型取引所よりもボリュームを獲得します。分散型の場合 集中型取引所と競合するには、取引所が必要になります。 指値注文によるディープオーダーブックをサポートします。配布のみ blockchain の Exchange がそれを提供します。 Tendermint はトランザクションの高速化による追加のメリットを提供します コミットします。犠牲にすることなく高速性を優先することで 一貫性を保つため、Cosmos のゾーンはトランザクションを高速に処理できます。 為替注文トランザクションと IBC token への送金の両方 そして他のゾーンからも。 今日の暗号通貨取引所の状況を考えると、 Cosmos のアプリケーションは分散型交換 (別名、 Cosmos DEX)。トランザクションのスループット容量と コミットのレイテンシは集中型のレイテンシと同等になる可能性があります 交換。トレーダーは実行可能な指値注文を送信できます 双方がオンラインである必要はありません。そしてテンダーミントと一緒に、 Cosmos ハブと IBC では、トレーダーは資金を出入りできます。 他のゾーンとの間のやり取りをスピーディーに行います。 特権ゾーンは、ブリッジされた token のソースとして機能できます。 別の暗号通貨。橋は関係に似ています Cosmos ハブとゾーンの間。両方ともそれに追いつく必要があります token が持っている証拠を検証するために、他のブロックの最新ブロック 一方からもう一方へ移動しました。 Cosmos の「ブリッジゾーン」 ネットワークはハブおよび他のハブとの通信を維持します
暗号通貨。ブリッジゾーンを介した間接化により、 シンプルであり、他のものにとらわれないハブのロジック blockchain コンセンサス戦略 (Bitcoin の proof-of-work など) 採掘。 各ブリッジゾーン validator は、Tendermint を利用した blockchain と特別な ABCI ブリッジ アプリだけでなく、 「起源」blockchain。 新しいブロックがオリジン、ブリッジゾーンでマイニングされると、 validator は、署名することでコミットされたブロックについて合意します。 そして、オリジンのblockchainについてのそれぞれのローカルな見解を共有します ヒント。ブリッジゾーンがオリジンで支払いを受け取ったとき(そして この事件では十分な確認が見られたことが合意された Ethereum や Bitcoin などの PoW チェーンの)、対応する アカウントはその残高を使用してブリッジ ゾーンに作成されます。 Ethereum の場合、ブリッジ ゾーンは同じものを共有できます。 validator - Cosmos ハブとして設定されます。 Ethereum 側 ( オリジン)、ブリッジコントラクトにより、イーサ所有者はイーサを送信できるようになります 上のブリッジコントラクトに送信することでブリッジゾーンに送信します。 Ethereum。イーサがブリッジコントラクトによって受信されると、 適切な IBC パケットが送信されない限り、イーサを引き出すことはできません。 ブリッジゾーンからブリッジコントラクトによって受信されます。の Bridge-contract は、ブリッジ ゾーンの validator-set を追跡します。 Cosmos ハブの validator セットと同一である可能性があります。 Bitcoin の場合、概念は似ていますが、次の点が異なります。 単一のブリッジ コントラクトの場合、各 UTXO は マルチシグネチャ P2SH 公開スクリプトのしきい値。の制限により、 P2SH システムでは、署名者が Cosmos と同一であってはなりません ハブ validator セット。ブリッジゾーン上のイーサ (「ブリッジイーサ」) は、 ハブから送信され、その後、トランザクションによって破棄されます。 Ethereum の特定の出金アドレスに送信します。 IBC トランザクションがブリッジゾーンで発生したことを証明するパケット Ethereum ブリッジ コントラクトに投稿して、イーサを許可することができます 撤回されること。 Bitcoin の場合、制限されたスクリプト システムにより、 IBC コイン転送メカニズムを反映するのは困難です。それぞれ UTXO には独自の独立した pubscript があるため、すべての UTXO は のセットに変更があると、新しい UTXO に移行されます。 Bitcoin エスクロー署名者。解決策の 1 つは、圧縮して、 必要に応じて UTXO セットを解凍して合計数を維持します UTXO 件ダウンしました。 このようなブリッジ契約のリスクは、不正な validator セットです。 ≥1/3 ビザンチンの投票権によりフォークが発生し、イーサが撤退する可能性がある ブリッジゾーンにブリッジデザーを維持しながら、Ethereum のブリッジ契約から。さらに悪いことに、2/3 を超えるビザンチンの投票権は、 ブリッジコントラクトにイーサを送った人から完全にイーサを盗む ブリッジ ゾーンの元のブリッジング ロジックから逸脱することによって。 ブリッジを次のように設計することで、これらの問題に対処することが可能です。 完全に責任がある。たとえば、ハブからのすべての IBC パケットと、 発信元は、ブリッジ ゾーンによる確認を必要とする場合があります。 これにより、ブリッジ ゾーンのすべての状態遷移が可能になります。 ハブまたはオリジンのいずれかによって効率的に挑戦され、検証される ブリッジ契約。ハブとオリジンでは、ブリッジゾーン validator が担保をポストし、token がブリッジゾーンから転送できるようにする必要があります。 ブリッジ契約は遅らせる必要がある(そして担保解除) 十分に長い期間) 独立監査人。仕様のデザインはお任せしますので、 このシステムの実装は将来的にオープンです Cosmos
改善提案、Cosmos ハブによって可決される予定 ガバナンスシステム。 スケーリングの問題の解決は、Ethereum にとって未解決の問題です。 現在、Ethereum ノードはすべてのトランザクションを処理し、 すべての状態も保存します。リンク。 Tendermint は Ethereum よりもはるかに速くブロックをコミットできるため、 Tendermint コンセンサスを活用した proof-of-work、EVM ゾーンと ブリッジイーサ上で動作すると、より高いパフォーマンスを提供できます。 Ethereum blockchain 秒。さらに、Cosmos ハブと IBC パケットの仕組みでは、任意のコントラクト ロジックが許可されていません 実行自体は、token の動きを調整するために使用できます。 異なるゾーンで実行されているEthereumコントラクト間、 token 中心の Ethereum スケーリングの基盤を提供します。 シャーディング。 Cosmos ゾーンは、任意のアプリケーション ロジックを実行します。 ゾーンの寿命の始まりであり、更新される可能性があります 時間の経過とともにガバナンスによって。このような zexibility により、Cosmos ゾーンは次のことを行うことができます。 Ethereum や Bitcoin、およびそれらの blockchain の派生物も許可されます。 同じコードベースを利用しますが、異なる validator セットを使用し、 初期配布。これにより、多くの既存の暗号通貨が利用可能になります。 Ethereum、Zerocash、Bitcoin などのフレームワーク、 Tendermint Core で使用する CryptoNote など。 共通のネットワーク上の、より高性能なコンセンサス エンジン、 相互運用性の大きな機会を開く プラットフォーム。さらに、マルチアセット blockchain として、単一の トランザクションには複数の入力と出力が含まれる場合があります。 入力は任意の token タイプにすることができ、Cosmos を直接として機能させることができます。 注文が前提となりますが、分散型取引所のプラットフォーム他のプラットフォーム経由でマッチングされます。あるいは、ゾーンでサービスを提供することもできます。 分散型フォールトトレラント取引所 (オーダーブック付き) として、 既存の集中型を大幅に改善できる 時間の経過とともにハッキングされる傾向にある暗号通貨取引所。 ゾーンは、blockchain をサポートするエンタープライズ バージョンとしても機能します 政府システムでは、特定のサービスの一部が 伝統的に組織または組織のグループによって運営されている 代わりに、特定のゾーンで ABCI アプリケーションとして実行されます。 パブリックのセキュリティと相互運用性を継承できるようにします。 Cosmos 基盤となるネットワークの制御を犠牲にすることなくネットワークを構築 サービス。したがって、Cosmos は、両方の長所を提供する可能性があります。 blockchain テクノロジーの利用を検討しているが、どのような組織が利用を検討しているのか 分散したサードパーティに制御を完全に手放すことには慎重である パーティー。 一貫性を重視することに大きな問題があると主張する人もいます Tendermint のようなコンセンサス アルゴリズムは、どのネットワークでも
2/3 の単一パーティションが存在しないパーティション 投票力(例:1/3以上の議決権)があれば、コンセンサスは完全に停止します。 Cosmos アーキテクチャは、次のようにしてこの問題を軽減できます。 地域自治区を備えたグローバルハブであり、そこに投票権がある 各ゾーンは共通の地理に基づいて分散されます 地域。たとえば、共通のパラダイムは個人向けのものかもしれません。 都市や地域は、ゾーンを共有しながら独自のゾーンを運営することができます。 共通ハブ (例: Cosmos ハブ)、地方自治体の活動を可能にします。 一時的なネットワークが原因でハブが停止した場合でも持続します。 パーティション。これにより、実際の地質学的、政治的、および 堅牢な設計で考慮すべきネットワーク トポロジーの特徴 フェデレーテッド・フォールト・トレラント・システム。
NameCoin は、問題の解決を試みた最初の blockchain の 1 つです。 Bitcoin blockchain を適応させることによる名前解決の問題。 残念ながら、このアプローチにはいくつかの問題がありました。 Namecoin を使用すると、たとえば @さとし が 過去のある時点で特定の公開鍵を使用して登録されている、 しかし、公開鍵がその後に作成されたかどうかはわかりません。 前回以降のすべてのブロックをダウンロードしない限り、最近更新されました その名前の更新。これは、Bitcoin の制限によるものです。 UTXO トランザクション マークル化モデル。 トランザクション (ただし変更可能なアプリケーション状態ではない) はマークル化されています ブロック-hashに。これにより、名前の存在は証明できますが、その後の名前の更新が存在しないことは証明できません。したがって、私たちはそれを知ることができません 完全な名前を信頼せずに、名前の最新の値を確認する ノードを削除したり、ダウンロードによって帯域幅に多大なコストが発生したりする blockchain 全体。 たとえマークル化された検索木がNameCoinに実装されたとしても、 proof-of-work への依存性により、クライアント検証が軽量になります 問題のある。ライトクライアントは、完全なコピーをダウンロードする必要があります。 blockchain 全体 (または少なくともすべてのブロック) のすべてのブロックのヘッダー 名前の最後の更新以降のヘッダー)。これは、 帯域幅要件は時間に応じて直線的に増加します [21]。さらに、proof-of-work blockchain の名前変更 追加の proof-of-work 確認ブロックを待つ必要があります。 Bitcoin では最大 1 時間かかる場合があります。 Tendermint を使用する場合、必要なのは最新のブロックだけです-hash validators の定足数 (投票権による) およびマークルによって署名されています。 名前に関連付けられた現在の値を証明します。これでできます 簡潔、迅速、安全なライトクライアントが可能 名前の値の検証。 Cosmos では、この概念をさらに拡張できます。それぞれ Cosmos の名前登録ゾーンには、「.com」や「.org」などのトップレベル ドメイン (TLD) 名を関連付けることができます。
登録ゾーンは独自のガバナンスと登録を持つことができます ルール。
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 ハブは複数資産の分散台帳ですが、 アトムと呼ばれる特別なネイティブ token。原子は唯一の staking Cosmos ハブの token。アトムは所有者にとってのライセンスです。 投票、検証、または他の validator への委任。 Ethereum のように イーサ、アトムは取引手数料の支払いにも使用できます。 スパムを軽減します。追加のインザショナルアトムとブロックトランザクション 料金はvalidator と委任者に報酬として支払われます。 validator秒。 BurnAtomTx トランザクションを使用すると、あらゆるデータを復元できます。 リザーブ プールから比例量の token を取得します。 Genesis 上のアトム 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 とすると、この数字は 10 年間で 13% の割合で増加します。 300 validator秒で解決します。 まだアトム所有者になっていない人は、次の方法で validator になれます。 BondTx トランザクションに署名して送信します。の量 担保として提供される原子はゼロ以外でなければなりません。誰でもなれる 現在のサイズが変更された場合を除き、いつでも validator validator セットは validator の最大数を超えています 許可されています。その場合、取引は以下の金額を満たした場合にのみ有効です。 原子が保持する有効原子の量よりも多い 最小の validator。有効なアトムには委任されたアトムが含まれます。 このような方法で新しい validator が既存の validator を置き換えると、 既存の validator は非アクティブになり、すべての原子と 委任された原子は非結合状態になります。 validator には、何らかのペナルティが課せられる必要があります。 認可された基準からの意図的または非意図的な逸脱 プロトコル。いくつかの証拠はすぐに認められます。 同じ高さで丸められた二重記号、または違反 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 は良好な地位を失うことになります およびその結合原子とそれに比例する token の割合 リザーブプール(総称して「ステーク」と呼ばれます)は削減されます。 地域によっては、validator が利用できない場合があります。 ネットワークの中断、停電、またはその他の理由。もし、いずれにしても 過去の ValidatorTimeoutWindow ブロック、validator のポイント コミット投票は blockchain に含まれていません ValidatorTimeoutMaxAbsent 回、validator になります 非アクティブになり、ValidatorTimeoutPenalty (デフォルト 1%) が失われます。 賭け金。 一部の「悪意のある」動作は、明らかに識別できるものを生成しない blockchain に関する証拠。このような場合、validator は次のことができます。 帯域外を調整して、これらの悪意のあるメッセージを強制的にタイムアウトさせます。 validators、超過半数の合意がある場合。 Cosmos ハブが 1/3 以上の連合により停止した場合 議決権が失われるか、連立政権が 1/3 以上になる状況 投票力が悪意のある行動の証拠を検閲する blockchain に入ると、ハブはハードフォークで回復する必要があります 再編成提案。 (「フォークと検閲攻撃」へのリンク)。 Cosmos ハブ validator は、任意の token タイプまたは組み合わせを受け入れることができます 取引を処理するための手数料としての種類。それぞれのvalidatorは、 希望する為替レートを主観的に設定し、選択する BlockGasLimit が設定されている限り、どのようなトランザクションでも可能です。 超えていない。徴収された料金から以下に指定される税金を差し引いたもの、 に比例して保税利害関係者に再分配されます。 それらの結合原子、すべての ValidatorPayoutPeriod (デフォルト 1) 時間)。徴収された取引手数料のうち、ReserveTax(デフォルト 2%)は、 リザーブプールに向かってリザーブプールを増やし、 Cosmos ネットワークのセキュリティと価値を高めます。これら 決定に従って資金を分配することもできる ガバナンスシステムによって作られます。 投票権を他の validator に委任する Atom 保有者 委任されたvalidatorに手数料を支払います。委員会ができることは、 各 validator によって設定されます。 Cosmos ハブのセキュリティは、ハブのセキュリティの関数です。 基礎となる validator と委任者による委任の選択。 発見物の発見と早期通報を促すため Cosmos ハブはハッカーに脆弱性を公開することを奨励しています ReportHackTx トランザクションによるエクスプロイトの成功。 validator がハッキングされました。このアドレスに報奨金を送ってください。」次第 このようなエクスプロイトでは、validator と委任者が非アクティブになります。 全員の原子の HackPunishmentRatio (デフォルト 5%) が取得されます。 スラッシュ、および全員のアトムの HackRewardRatio (デフォルトは 5%) ハッカーの報奨金アドレスに報酬が与えられます。 validator バックアップ キーを使用して残りの原子を回復する必要があります。 この機能を悪用して転送することを防ぐため 権利確定されていないアトム、権利確定済みアトムと権利確定されていないアトムの部分 ReportHackTx の前後の validator と委任者は、 変更はなく、ハッカーの報奨金にはいくらかが含まれます 権利が付与されていない原子 (存在する場合)。 Cosmos ハブは、分散組織によって運営されています。 そのためには綿密なガバナンスメカニズムが必要です 変数など、blockchain に対するさまざまな変更を調整します。
システムのパラメータ、ソフトウェアのアップグレード、 憲法改正。 すべての validator は、すべての提案に投票する責任があります。失敗 提案に適時に投票すると、validator となります。 と呼ばれる一定期間、自動的に非アクティブ化されます。 欠勤ペナルティ期間(デフォルトは 1 週間)。 委任者は、委任された人の投票を自動的に継承します。 validator。この投票は手動で上書きできます。結合していない原子 票が得られない。 各提案には MinimumProposalDeposit のデポジットが必要です token、1 つ以上の token の組み合わせである場合があります 原子も含めて。各提案について、有権者は賛成票を投じることができます。 預金。有権者の半数以上が採用を選択した場合、 デポジット (例: 提案がスパムであったため)、デポジットは次の宛先に送られます。 燃焼する原子を除いたリザーブプール。 各提案について、有権者は次のオプションを選択して投票できます。 そうだね そう、フォースとともに いや ノーウィズフォース 棄権する 賛成票または YeaWithForce 票の厳密過半数 (または反対票、または 提案が次のように決定されるには、NayWithForce 票)が必要です。 可決された(または不合格と決定された)が、1/3 以上が過半数を拒否できる 「強制力」による投票による決定。厳密多数派が拒否権を発動すると、 拒否権ペナルティフィーブロックを失うと全員が罰せられます (デフォルトの 1 日分のブロック) 相当の料金 (税金を除く) 影響を受けません)、および過半数を拒否権を発動した政党
この決定は、VetoPenaltyAtoms を失うことでさらに罰せられます。 (デフォルトでは 0.1%) の原子。 ここで定義されているパラメータはどれも、 ParameterChangeProposal を渡す。 アトムを注入し、プール資金を使用してリザーブすることができます。 BountyProposal の可決。 プロトコルをアップグレードする提案など、他のすべての提案は、 一般的な TextProposal を介して調整されます。 計画を参照してください。 blockchain コンセンサスには多くの革新があり、 過去数年間の拡張性。このセクションでは概要を説明します 選ばれた数の重要なものについての調査。 悪意のある参加者がいる場合の合意形成が問題となる レスリー・ランポートが造語した1980年代初頭に遡ります。 「ビザンチン障害」というフレーズは、任意のプロセスの動作を指します。 「クラッシュ障害」とは対照的に、意図した動作から逸脱します。 この場合、プロセスは単にクラッシュします。早期の解決策が発見されました 上限がある同期ネットワークの場合メッセージ遅延、ただし実際の使用は非常に限られていました 飛行機の管制官などの制御された環境 データセンターは原子時計によって同期されます。まではそうではありませんでした 90 年代後半、実用的なビザンチン フォールト トレランス (PBFT) [11] は 効率的な部分同期コンセンサスとして導入 最大 1/3 のプロセスの動作を許容できるアルゴリズム 勝手に。 PBFT は標準アルゴリズムとなり、多くのアルゴリズムが生成されました バリエーションの一部として IBM によって作成された最新のものを含む 彼らの Hyperledger への貢献。 PBFT に対する Tendermint のコンセンサスの主な利点は、 Tendermint の基本構造は改良され、簡素化されています。 その一部は、blockchain パラダイムを採用した結果です。 Tendermint ブロックは順番にコミットする必要があるため、 PBFT に関連する複雑さと通信オーバーヘッド 視点の変化。 Cosmos および多くの暗号通貨では、 ブロック N の場合、ブロック N+i (i >= 1) のコミットを許可する必要がある それ自体はまだコミットしていません。帯域幅が N をブロックする理由の場合 Cosmos ゾーンでコミットしていない場合は、使用しても役に立ちません ブロック N+i に対する帯域幅共有投票。ネットワークパーティションまたは ofzine ノードがブロック N がコミットされていない理由である場合、 N+i はとにかくコミットしません。 さらに、トランザクションをブロックにバッチ処理することで、 アプリケーション状態の定期的な Merkle-hashing PBFT のチェックポイント設定スキームと同様に、定期的なダイジェスト。これにより、 ライトクライアント向けの証明可能なトランザクションコミットを高速化するため、 blockchain 間通信。 Tendermint Core には多くの最適化と機能も含まれています PBFT で指定されている内容を超えたもの。たとえば、 validators によって提案されたブロックは部分に分割され、マークル化され、 放送を改善するような方法で噂話をした パフォーマンス (インスピレーションについては、LibSwift [19] を参照してください)。あとテンダーミントも Core はポイントツーポイントについて何も想定していません
接続性、および P2P ネットワークが存在する限り機能します。 弱く接続されています。 proof-of-stake (PoS) を導入したのは初めてではありませんが、BitShares1.0 [12] PoSの研究と導入に大きく貢献 blockchain、特に「委任された」PoS として知られるもの。で BitShares、利害関係者は注文の責任を負う「証人」を選出 トランザクションのコミット、および責任を負う「代理人」 ソフトウェアのアップデートやパラメータの変更を調整します。 BitShares2.0 は、高性能 (100k tx/s、1s) の達成を目指しています。 レイテンシ)、理想的な状態では、各ブロックは単一の署名によって署名されます。 署名者、およびトランザクションの性質に比べてかなり長い時間がかかります ブロック間隔。正規の仕様はまだ開発中です。 利害関係者は、不正行為を行った証人を削除または置き換えることができます。 日常的に行われているが、証人や重要な証拠は存在しない。 Tendermint PoS に似たデリゲータが切り込まれる 二重支出攻撃が成功した場合。 リップルが開拓したアプローチに基づいて、Stellar [13] は プロセスが行われる連邦ビザンチン協定のモデル コンセンサスへの参加は、yxed を構成せず、グローバルに行われます。 既知のセット。むしろ、各プロセス ノードは 1 つ以上のプロセスをキュレートします。 「クォーラム スライス」。それぞれが信頼できるプロセスのセットを構成します。あ Stellar の「クォーラム」は、以下を含むノードのセットであると定義されています。 セット内のノードごとに少なくとも 1 つのクォーラム スライス。 合意に達することができる。 Stellar メカニズムのセキュリティは次の仮定に依存しています。 任意の 2 つの定足数の共通部分が空ではないこと、 ノードの可用性には、少なくとも 1 つのクォーラム スライスが必要です。 完全に正しいノードで構成されているため、 バランスを取るのが難しい大小のクォーラム スライスを使用する 信頼について重大な仮定を課すことなく。最終的には、ノードは何らかの方法で適切なクォーラム スライスを選択する必要があります。 十分なフォールト トレランス (またはすべての「無傷のノード」) であること 論文の結果の多くはそれに依存します)、そして唯一の このような構成が階層的であることを保証するために提供された戦略 ボーダー ゲートウェイ プロトコル (BGP) に似ています。インターネット上の一流 ISP がグローバル ルーティング テーブルを確立するために使用します。 TLS 証明書を管理するためにブラウザによって使用されるもの。どちらも悪名高い 彼らの不安のために。 Tendermint ベースのプルーフオブステーク システムに対する Stellar 論文の批判は、説明されている token 戦略によって軽減されます。 ここでは、アトムと呼ばれる新しいタイプの token が発行されます。 料金および報酬の将来の部分に対する請求を表します。の したがって、Tendermint ベースの proof-of-stake の利点は相対的なものになります。 シンプルでありながら、十分かつ証明可能なセキュリティを提供します 保証します。 BitcoinNG は、Bitcoin に対する改善提案です。 ブロックサイズの増加などの垂直方向のスケーラビリティの形式の場合、 通常伴う経済的悪影響を伴うことなく、 このような変化により、不釣り合いに大きな影響が生じる場合 小規模な鉱山労働者について。この改善は、分離することで達成されます。 トランザクション ブロードキャストからのリーダー選挙: リーダーは初めてです 「マイクロブロック」内のproof-of-workによって選出され、次のことが可能になります 新しいマイクロブロックまでコミットされるブロードキャスト トランザクション が見つかりました。これにより、必要な帯域幅要件が軽減されます。 PoW レースに勝利し、小規模マイナーがより公平に競争できるようになり、 そして、トランザクションをより定期的にコミットできるようになります。 マイクロブロックを見つけた最後のマイナー。 Casper [16] は、提案されている proof-of-stake コンセンサス アルゴリズムです。 Ethereum。その主要な動作モードは「コンセンサス・バイ・ベット」です。によって validator に、どのブロックがそうなると信じているかを繰り返し賭けさせます。
他の賭けに基づいて blockchain にコミットするようになる 彼らがこれまでに見てきたことを踏まえれば、最終的にはイナリティが達成されるでしょう。リンク。 これは、Casper チームによる活発な研究分野です。の 課題は、 進化的に安定した戦略であることが証明されています。主なメリットは Tendermint と比較した Casper は、「可用性」を提供している可能性があります。 「一貫性を超えています」 – コンセンサスには 2/3 を超える定足数は必要ありません 投票力 – おそらくコミット速度や 実装の複雑さ。 Interledger Protocol [14] は、厳密にはスケーラビリティ ソリューションではありません。それ 異なる台帳間のアドホックな相互運用を提供します 疎結合された二国間関係ネットワークを介したシステム。 ライトニング ネットワークと同様に、ILP の目的は、 支払いですが、特に異種間での支払いに焦点を当てています 台帳タイプを定義し、アトミック トランザクション メカニズムを次のように拡張します。 hash ロックだけでなく、公証人の定足数 (と呼ばれる) も含まれます。 原子輸送プロトコル)。後者のメカニズムは、 台帳間トランザクションにアトミック性を強制することは、 Tendermint のライトクライアント SPV メカニズムの図 ILP と Cosmos/IBC の区別は保証されています。 以下に提供されます。 1. ILP のコネクターの公証人はメンバーシップをサポートしていません 変化し、その間のゼクシブルな重み付けは許可されません。 公証人。一方、IBC は、特に次の目的のために設計されています。 blockchains、validators は異なる重みを持つことができます。 途中でメンバーが変更される可能性がある場合 blockchain。 2. ライトニングネットワークと同様に、ILP での支払いの受取人 送信者に確認を返信するにはオンラインである必要があります。でtoken は、受信機の validator セットである IBC 経由で転送します。 blockchain は確認を提供する責任を負います。 受信側ユーザー。 3. 最も顕著な違いは、ILP のコネクタが 支払いに関して責任を負う、または権威ある状態を維持する、 一方、Cosmos では、ハブの validator が権限を持ちます。 IBC token の州と権限が移転します。 各ゾーンが保持する token の量 (ただし、 token はゾーン内の各アカウントによって保持されます)。これは、 安全な非対称を可能にする根本的な革新 ゾーンからゾーンへの token の転送。 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 Mauve [22] には、異なる設計目標があります。 Cosmos は、具体的には token 秒に関するものです。モーブはスケーリングに関するものです 一般的な計算。 Cosmos は EVM にバインドされていないため、異なる VM であってもバインドできます。 相互運用します。 Cosmos ゾーン作成者は、ゾーンを誰が検証するかを決定できます。 ゾーン。 誰でも Cosmos で新しいゾーンを開始できます (ガバナンスがない限り) それ以外の場合は判断します)。 ハブはゾーン障害を分離するため、グローバル token 不変条件は 保存されています。 ライトニング ネットワークは、提案されている token 転送ネットワークです Bitcoin blockchain (および他のパブリック blockchains)、桁違いの改善が可能になります トランザクションの大部分を移動することにより、トランザクション スループットが低下します コンセンサス台帳の外にある、いわゆる「支払いチャネル」にアクセスします。これは、オンチェーンの暗号通貨スクリプトによって可能になります。 当事者が二国間でステートフルな契約を締結できるようにします。 デジタル署名と契約を共有することで状態を更新できます 最終的に証拠をblockchainに公開することで解決できます。 このメカニズムはクロスチェーンアトミックスワップによって初めて普及しました。によって 多くの関係者や参加者との決済チャネルを開く ライトニング ネットワークは、ルーティングの中心となることができます。 他者の支払い、完全に接続された支払いチャネルにつながる 資本が支払いチャネルに拘束されるという代償を払って、ネットワークにアクセスできなくなります。 ライトニング ネットワークは、さまざまな場所に簡単に拡張することもできます。 値の転送を可能にする複数の独立した blockchain 為替市場を介して非対称的に使用することはできません。 token を blockchain から別の blockchain に転送します。主なメリット ここで説明する Cosmos ネットワークのは、そのような直接を有効にすることです。 token は転送します。とはいえ、私たちは支払いチャネルと ライトニングネットワークは当社の token 転送メカニズム。コスト削減とプライバシー上の理由から。 Segregated Witness は Bitcoin 改善提案リンクです。 ブロックごとのトランザクション スループットを 2 倍または 3 倍に向上させることを目的としています。 同時に新しいノードのブロック同期を高速化します。 このソリューションの優れた点は、それがどのように機能するかにあります。 Bitcoin の現在のプロトコルの制限とソフトフォークが可能 アップグレード (つまり、古いバージョンのソフトウェアを使用しているクライアントは、 アップグレード後も機能し続けます)。テンダーミント、新登場 プロトコルには設計上の制限がないため、スケーリングが異なります 優先順位。主に、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
³ è
コンセンサスと技術的詳細
適切に設計されたコンセンサスプロトコルは、いくつかの機能を提供する必要があります。 許容範囲を超えた場合の保証 そしてコンセンサスは失敗します。これは経済面で特に必要です ビザンチンの行動が重大な経済的影響を与える可能性があるシステム 報酬。このような保証の中で最も重要なのは、責任追及の一形態であり、コンセンサスを引き起こしたプロセスが 失敗 (つまり、プロトコルのクライアントが異なる値を受け入れる原因となった - フォーク)は特定され、規則に従って処罰される可能性があります。 議定書、あるいは場合によっては法制度。法制度が整うと、 validators は信頼性が低いか、呼び出しコストが高すぎるため、 参加するために保証金の預け入れを強制される、および 悪意のある行為があった場合、預金は取り消されるか、削減される可能性があります。 [10] が検出されました。 これは、フォークが定期的に発生する Bitcoin とは異なることに注意してください。 ネットワークの非同期性と ynding の確率的性質によるもの 部分的なhash衝突。多くの場合、悪意のあるフォークは Bitcoin は非同期のためフォークと区別できません。 暗黙的なもの以外のフォーク責任を確実に実装する 孤立したブロックをマイニングするためにマイナーが支払う機会コスト。 投票ステージを PreVote および PreCommit と呼びます。投票できるのは、 特定のブロックまたは Nil の場合。 2/3 を超える PreVote のコレクションを呼び出します 同じラウンド内の単一ブロックの場合はポルカ、および >2/3 のコレクション コミットと同じラウンド内の単一ブロックの PreCommit。 >2/3の場合 同じラウンドで Nil を PreCommit すると、次のラウンドに進みます。 丸い。 プロトコルの厳密な決定論は脆弱性を招くことに注意してください。 欠陥のあるリーダーを検出する必要があるため、同期性を仮定し、
スキップしました。したがって、validator はある程度の時間待機します。 TimeoutPropose、Prevote Nil の前、および の値 TimeoutPropose はラウンドごとに増加します。進行状況 ラウンドの残りの部分は完全に非同期であり、進行状況だけが表示されます。 validator がネットワークの 2/3 以上からの信号を受信すると行われます。実際には、 それを際限なく阻止するには極めて強力な敵が必要となるだろう 弱い同期性の仮定 (コンセンサスの失敗を引き起こす) ブロックをコミットすることはありません)、そうすることでさらに多くのことを行うことができます それぞれの TimeoutPropose のランダムな値を使用して、difycult を実行します。 validator。 追加の制約セットまたはロック ルールにより、 ネットワークは最終的に各高さで 1 つのブロックだけをコミットします。どれでも 複数のブロックをコミットさせる悪意のある試み 特定の高さで識別できます。まず、ブロックの PreCommit そのブロックのポルカの形で、正当性を示す必要があります。 validator がラウンド R_1 ですでにブロックを PreCommit している場合、 彼らはそのブロックに閉じ込められていると言い、ポルカはそれを正当化するために使用されていました ラウンド R_2 の新しい PreCommit はラウンド R_polka に含まれる必要があります ここで、R_1 < R_polka <= R_2。第二に、validator は提案する必要があります および/またはロックオンされているブロックを事前投票します。これらを合わせて、 条件により、validator が事前コミットされないことが保証されます。 正当性として十分な証拠があり、validator が すでに PreCommit は PreCommit に証拠を提供できません 何か他のもの。これにより、安全性と生存性の両方が確保されます。 コンセンサスアルゴリズム。 プロトコルの完全な詳細はここで説明されています。 TendermintPoS では、代替チェーン (フォーク) の存在が 1/3 以上のブロック ヘッダーを同期することを意味するため、すべてのブロック ヘッダーを同期する必要がなくなります。 結合された杭は切断することができます。もちろん、斬撃には必要なものがあるので、 誰かがフォークの証拠を共有した場合、ライトクライアントは保存する必要があります 表示されるブロック hash のコミット。さらに、ライトクライアントvalidator セットへの変更を定期的に同期し続けることができます。 長距離攻撃を避けるため(ただし、他の解決策は 可能です)。 Ethereum と同様の精神で、Tendermint はアプリケーションで次のことを可能にします。 各ブロックにグローバル マークル ルート hash を埋め込み、簡単に許可します 口座残高や金額などの非常に詳細な状態クエリ 契約に保存されているか、または未使用のトランザクションの存在 アプリケーションの性質に応じて出力します。 ブロードキャスト ネットワークのコレクションが十分に復元力があると仮定する および静的 validator セットの場合、blockchain 内の任意のフォークを が検出され、違反したvalidatorの預金が削減されました。これ 2014 年初めに Vitalik Buterin によって最初に提案されたイノベーションは、問題を解決します 他の proof-of-stake の何も問題がない問題 暗号通貨 (関連作品を参照)。ただし、validator が設定されているため、 長期間にわたって元の状態を変更できなければなりません validator はすべて結合解除される可能性があるため、自由に ジェネシスブロックから新しいチェーンを作成し、コストはかかりません 彼らはもう預金をロックされていません。この攻撃はこうなった ショート攻撃とは対照的に、ロングレンジ攻撃(LRA)として知られています。 範囲攻撃。現在結合している validator 人が フォークであるため、罰せられることになります (フォークの責任があると仮定します BFT Tendermint コンセンサスのようなアルゴリズム)。遠距離攻撃は、 proof-of-stake にとって致命的な打撃となると考えられています。 幸いなことに、LRA は次のように軽減できます。まず、 validator を解除する (それにより担保預金を回収する) コンセンサスに参加するための手数料を得ることができなくなります)、 デポジットは一定期間譲渡不能にしなければなりません これは「結合解除期間」として知られており、 数週間または数か月。次に、ライト クライアントを安全にするためには、まず ネットワークに接続するときに、最近のブロックを確認する必要があります-hash 信頼できるソース、またはできれば複数のソースに対して。これ
この状態は「主観性が弱い」と呼ばれることもあります。最後に、 安全を確保するには、次の場所に設定された最新の validator と同期する必要があります。 少なくとも結合解除期間の長さと同じくらいの頻度で。これ ライト クライアントが validator への変更を確実に認識できるようにします。 validator の資本が結合解除され、資本が結合されなくなる前に設定された 危険にさらされているため、次のことを実行してクライアントを欺くことが可能になります。 新しいブロックを作成して遠距離攻撃を開始します。 接着された高さ (十分に制御できると仮定) 初期の秘密鍵の多く)。 この方法で LRA を克服するには、 proof-of-work のオリジナルのセキュリティ モデル。 PoWでは、それは ライトクライアントが現在の高さに同期できることを前提としています。 すべてのブロックヘッダーでproofof workを処理するだけで、いつでも信頼できるジェネシスブロックを作成できます。しかし、LRAを克服するには、 ライトクライアントが一定の規則性を持ってオンラインになることを要求する validator セットの変更を追跡し、最初に変更したとき オンラインになると認証に特に注意する必要があります 信頼できるソースに対してネットワークから聞いたこと。の もちろん、この後者の要件は Bitcoin の要件と似ています。 プロトコルとソフトウェアも信頼できる機関から入手する必要があります。 ソース。 LRA を防止する上記の方法は、validator に適しています。 Tendermint を利用した blockchain のフル ノードは、次のとおりです。 ノードはネットワークに接続されたままになるように設計されています。の この方法は、次のような効果が期待できるライト クライアントにも適しています。 ネットワークと頻繁に同期します。ただし、ライトクライアントの場合は、 インターネットや blockchain ネットワーク、さらに別のソリューションを使用して克服することができます LRA。 validator 以外の token 所有者は、token を次の名前で投稿できます 非常に長い解放期間を持つ担保 (例: 非常に長い) validators の結合解除期間よりも)、ライトクライアントにサービスを提供します 現在のデータの有効性を証明する二次的な方法と 過去のブロック-hashes。これらのtokenは、 blockchain のコンセンサスの安全性が確保されているにもかかわらず、彼らは次のことを行うことができます。ライトクライアントに強力な保証を提供します。過去のブロックの場合-hash クエリは Ethereum でサポートされており、誰でも自分のデータを結合できます。 token を特別に設計された smart contract で提供し、 有料の認証サービスにより、ライトクライアント LRA セキュリティの市場が効果的に創出されます。 ブロックコミットの定義により、すべての ≥1/3 連合は、 投票権は、オフラインになるかどうかによって、blockchain を停止できる可能性があります 彼らの投票をブロードキャストします。このような連合は検閲も行うことができる 特定のトランザクションを含むブロックを拒否することにより、 ただし、これはかなりの割合を占めることになります 拒否されるブロック提案の割合、これにより速度が低下する blockchain のブロック コミットが減少し、その有用性と価値が減少します。 悪意のある連合は、投票を少しずつ放送する可能性もあります。 blockchain ブロックを粉砕する場合、ほぼ停止するか、または開始します。 これらの攻撃のあらゆる組み合わせ。最後に、次のような問題を引き起こす可能性があります。 blockchain は二重署名またはロック違反によりフォークします ルール。 世界的に活動する敵も関与した場合、分断される可能性があります 間違っているように見えるような方法でネットワークに接続する validator のサブセットが速度低下の原因でした。これはそうではありません これは Tendermint の単なる制限ではなく、すべての制限です ネットワークが潜在的に制御されているコンセンサス プロトコル 積極的な敵。 このようなタイプの攻撃の場合、validator のサブセットは次のようにする必要があります。 外部手段を通じて調整し、以下の再編成提案に署名する。 フォーク (およびその証拠) と最初のサブセットを選択します。 validator と署名。このような再組織化提案に署名した検証者は、他のすべてのフォークでの担保を放棄します。クライアントは次のことを行う必要があります。 再編成提案書の署名を検証し、証拠を検証します。 そしてエンドユーザーに判断を下したり、決定を促したりします。のために たとえば、携帯電話のウォレット アプリはユーザーにセキュリティを要求する場合があります。
警告、一方、冷蔵庫はあらゆる再編成提案を受け入れる可能性があります 投票権により元の validator の +1/2 が署名しました。 非同期ビザンチン フォールト トレラント アルゴリズムは実現できません 投票権の 1/3 以上が不正であるにもかかわらず、フォークである場合に合意を形成する 投票権の 1/3 以上が既に不正行為を受けていると仮定します。 正当な理由なく二重署名またはロックを変更すること。ということで、サイン会 reorg-proposal は調整の問題であり、調整することはできません。 非同期プロトコルによって解決されます(つまり、自動的に、 信頼性について仮定を置くことなく、 基礎となるネットワーク)。今のところ、再組織化提案の調整の問題は、社会的合意を介した人間の調整に任せます。 インターネットメディアで。バリデータは、 2 つの再組織提案が同時に署名される状況を避けるため、再組織提案に署名する前にネットワーク パーティションが残っていないこと。 外部調整メディアとプロトコルが 堅牢であるため、フォークは検閲よりも懸念されるということになります。 攻撃します。 フォークと検閲に加えて、1/3 以上の Byzantine が必要です 投票権がある場合、2/3 を超える投票権を有する連合が関与する可能性がある 任意の無効な状態。これはあらゆるものの特徴です (BFT) コンセンサスシステム。フォークを作成する二重署名とは異なります。 簡単に検証できる証拠を用いて、犯罪者の関与を検出します。 無効な状態では、非検証ピアがブロック全体を検証する必要があります。 これは、状態のローカルコピーを保持して実行することを意味します。 各トランザクションでは、ステート ルートを個別に計算します。 自分たち自身。一旦検出されると、そのような障害に対処する唯一の方法 それは社会的合意によるものです。たとえば、Bitcoin のような状況では、 ソフトウェアのバグによるフォークかどうかにかかわらず、失敗しました(3 月の場合と同様) 2013)、またはビザンチン動作による無効な状態のコミット マイナー (2015 年 7 月時点)、よくつながったコミュニティ 企業、開発者、マイナー、その他の組織 手動行為とは何かについての社会的コンセンサスを確立した参加者がネットワークを修復するために必要とするもの。さらに、以来、 テンダーミントの validator blockchain は、 識別可能ですが、無効な状態のコミットメントは、 必要に応じて、法律または外部の判例によって罰せられる可能性があります。 ABCI は、配信される 3 つの主要なメッセージ タイプで構成されます。 アプリケーションのコア。アプリケーションは次のように応答します。 対応する応答メッセージ。 AppendTx メッセージはアプリケーションの主力製品です。それぞれ blockchain のトランザクションは、このメッセージとともに配信されます。の アプリケーションは、受信した各トランザクションを検証する必要があります。 現在の状態、アプリケーション プロトコル、 およびトランザクションの暗号化資格情報。検証済み その後、トランザクションはアプリケーションの状態を更新する必要があります。 値をキー値ストアにバインドするか、UTXO を更新します。 データベース。 CheckTx メッセージは AppendTx に似ていますが、目的は次のとおりです。 トランザクションの検証。 Tendermint Core の mempool の最初のチェック CheckTx によるトランザクションの有効性を確認し、有効なリレーのみを確認します。 ピアへのトランザクション。アプリケーションは増分をチェックする場合があります トランザクション内で nonce が発生し、次の場合は CheckTx でエラーを返します。 nonce は古いです。 Commit メッセージは、暗号化を計算するために使用されます。 現在のアプリケーションの状態に対するコミットメント。 次のブロックヘッダー。これには便利なプロパティがいくつかあります。 その状態を更新する際の不一致は、次のように表示されます。 blockchain プログラミングのクラス全体をキャッチするフォーク エラー。これにより、安全で軽量なシステムの開発も簡素化されます。 Merkle-hash の証明は、クライアントと照合することで検証できます。 ブロック-hashとブロック-hashは定足数によって署名されています。 validators (投票権による)。
追加の ABCI メッセージにより、アプリケーションは次のメッセージを追跡できるようになります。 validator セットを変更し、アプリケーションが 高さやコミット投票などのブロック情報。 ABCI リクエスト/レスポンスは単純な Protobuf メッセージです。チェックする スキーマファイルを外します。 引数: Data ([]byte) : リクエスト トランザクション バイト 戻り値: コード (uint32) : 応答コード Data ([]byte) : 結果のバイト (存在する場合) ログ (文字列) : デバッグまたはエラー メッセージ 使用法:
トランザクションを追加して実行します。トランザクションが有効であれば、 CodeType.OK を返します 引数: Data ([]byte) : リクエスト トランザクション バイト 戻り値: コード (uint32) : 応答コード Data ([]byte) : 結果のバイト (存在する場合) ログ (文字列) : デバッグまたはエラー メッセージ 使用法:
トランザクションを検証します。このメッセージは、 状態。トランザクションはまず CheckTx を介して実行されます。 mempool 層のピアにブロードキャストします。作ることができます CheckTx セミステートフルで、コミット時に状態をクリアするか、 BeginBlock 、トランザクションの依存シーケンスを許可します。 同じブロック内にあります。
戻り値: データ ([] バイト) : マークル ルート hash ログ (文字列) : デバッグまたはエラー メッセージ 使用法:
アプリケーション状態のマークル ルート hash を返します。 引数: Data ([]byte) : クエリリクエストのバイト数 戻り値: コード (uint32) : 応答コード Data ([]byte) : クエリ応答バイト ログ (文字列) : デバッグまたはエラー メッセージ 使用法:
応答キューをフラッシュします。実装するアプリケーション types.Application はこのメッセージを実装する必要はありません。 プロジェクトが担当します。 戻り値: Data ([]byte) : 情報バイト 使用法:
アプリケーションの状態に関する情報を返します。アプリケーション 特定の。 引数: Key (string) : 設定するキー
値(文字列) : キーに設定する値 戻り値: ログ (文字列) : デバッグまたはエラー メッセージ 使用法:
アプリケーションのオプションを設定します。例えば。 Key = “mode”、Value = “mempool” メモリプール接続、または Key=“mode”、Value=“consensus” コンセンサス接続。他のオプションはアプリケーション固有です。 引数: バリデーター ([]バリデーター) : 初期の起源 - validators 使用法:
創世記に一度呼ばれた 引数: Height (uint64) : 開始するブロックの高さ 使用法:
新しいブロックの始まりを知らせます。事前に呼び出される AppendTxs。 引数: Height (uint64) : 終了したブロックの高さ 戻り値: バリデータ ([]バリデータ) : validator を新しいものに変更しました 投票権 (削除するには 0) 使用法:
ブロックの終わりを知らせます。結局、各コミットの前に呼び出されます トランザクション 詳細については、ABCI リポジトリを参照してください。送信者が 受信チェーンによるパケットの配信の確認。 たとえば、送信者はメッセージのステータスを知らない可能性があります。 宛先チェーンに障害があると予想される場合。または、送信者は パケットにタイムアウトを課したい(MaxHeight を使用) パケット イールド)、宛先チェーンは受信パケット数の突然の急増によるサービス拒否攻撃を受ける可能性があります。 パケット。 このような場合、送信者は配送確認を要求できます。 パケットの初期ステータスを「AckPending」に設定します。それから、それは、 受領チェーンには、 アプリ Merkle hash では、IBCPacket と略されます。 まず、IBCBlockCommit と IBCPacketTx が「ハブ」に投稿されます これは、「Zone1」に IBCPacket が存在することを証明します。そう言ってください IBCPacketTx には次の値があります。 FromChainID : “Zone1” FromBlockHeight : 100 (たとえば) パケット: IBCパケット:
ヘッダー: IBCPacketHeader: SrcChainID:「ゾーン1」 DstChainID:「ゾーン2」 数 : 200 (例) ステータス : 確認保留中 種類:「コイン」 MaxHeight : 350 (「ハブ」が現在高さ 300 であるとします) ペイロード : <「コイン」ペイロードのバイト数> 次に、IBCBlockCommit と IBCPacketTx が「Zone2」に投稿されます。 これは、「ハブ」上にIBCパケットが存在することを証明します。そう言ってください IBCPacketTx には次の値があります。 FromChainID : 「ハブ」 ブロックからの高さ : 300 パケット: IBCパケット: ヘッダー: IBCPacketHeader: SrcChainID:「ゾーン1」 DstChainID:「ゾーン2」 数 : 200 ステータス : 確認保留中 種類:「コイン」 最大高さ : 350 ペイロード : <「コイン」ペイロードの同じバイト> 次に、「Zone2」はアプリに短縮パケットを含める必要があります-hash これは、「AckSent」の新しいステータスを示しています。 IBCBlockCommit と IBCPacketTx は存在を証明する「ハブ」にポストバックされます 「Zone2」上の短縮型 IBCパケット 。 IBCPacketTx と言ってください には次の値があります。 FromChainID : “Zone2”
FromBlockHeight : 400 (たとえば) パケット: IBCパケット: ヘッダー : IBCPacketHeader : SrcChainID:「ゾーン1」 DstChainID:「ゾーン2」 数 : 200 ステータス : 送信済み 種類:「コイン」 最大高さ : 350 PayloadHash : <同じ「コイン」ペイロードの hash バイト> 最後に、「ハブ」はパケットのステータスを更新する必要があります。 AckPending から AckReceived まで。この新たな状況の証拠 「Zone2」に戻る必要があります。 IBCPacketTx に次のものがあるとします。 値: FromChainID : 「ハブ」 ブロックの高さから: 301 パケット: IBCパケット: ヘッダー: IBCPacketHeader: SrcChainID:「ゾーン1」 DstChainID:「ゾーン2」 数 : 200 ステータス : 受信確認済み 種類:「コイン」 最大高さ : 350 PayloadHash : <同じ「コイン」ペイロードの hash バイト> 一方、「Zone1」は配信が成功すると楽観的に考える可能性がある 反対の証拠が証明されない限り、「コイン」パケットの 「ハブ」。上の例では、「ハブ」が AckSent を受信していなかった場合
ブロック 350 によって「Zone2」からステータスを取得すると、ステータスが設定されます。 自動的にタイムアウトになります。このタイムアウトの証拠は、 「Zone1」にポストバックされ、token を返すことができます。 では 2 種類の Merkle tree がサポートされています。 Tendermint/Cosmos エコシステム: シンプル ツリーと IAVL+ 木。 シンプル ツリーは、要素の静的リストの Merkle tree です。もし 項目の数は 2 の累乗ではありません。一部の葉は次のようになります。 さまざまなレベル。シンプル ツリーはツリーの両側を維持しようとします。 高さは同じですが、左の方が一つ大きいかもしれません。このMerkle treeは ブロックのトランザクションをマークル化するために使用され、トップレベル アプリケーション状態ルートの要素。IAVL+ データ構造の目的は、永続的なデータ構造を提供することです。 アプリケーション状態のキーと値のペアのストレージ。 決定論的なマークルルート hash を効率的に計算できます。の ツリーは AVL アルゴリズムのバリアントを使用してバランスがとられており、すべて 操作は O(log(n)) です。 AVL ツリーでは、任意のノードの 2 つの子サブツリーの高さ 最大でも 1 つ違います。この条件に違反するたびに、 更新すると、O(log(n)) 個の新しいノードを作成することによってツリーが再バランスされます。 古いツリーの変更されていないノードを指します。オリジナルのAVLでは アルゴリズムでは、内部ノードもキーと値のペアを保持できます。 AVL+ アルゴリズム (プラスに注意してください) すべてを維持するために AVL アルゴリズムを変更します キーを保存するためにブランチノードのみを使用しながら、リーフノードに値を格納します。 これにより、マークル hash の証跡を維持しながらアルゴリズムが簡素化されます。 短い。 AVL+ ツリーは、Ethereum のパトリシアの試みに似ています。あります トレードオフ。キーを挿入する前に hash する必要はありません。 IAVL+ ツリーにより、キー内の順序付けされた反復が高速化されます。 一部のアプリケーションに役立つ可能性のあるスペース。ロジックはもっと簡単です 内部ノードと内部ノードの 2 種類のノードのみが必要な実装です。 葉のノード。マークル証明は平均して短く、 * / \ / \ / \ / \ * * / \ / \ / \ / \ / \ / \ * * * h6 / \ / \ / \ h0 h1 h2 h3 h4 h5 7 つの要素を持つ SimpleTree
バランスの取れた二分木。一方、次のマークル根は、 IAVL+ ツリーは更新の順序に依存します。 次のような追加の効率的な Merkle tree をサポートします。 Ethereum のパトリシア トライは、バイナリ バリアントが次の場合に発生します。 利用可能です。 正規の実装では、トランザクションは Cosmos ハブ アプリケーション (ABCI インターフェイス経由)。 Cosmos ハブは、多数のプライマリ トランザクションを受け入れます タイプ(SendTx、BondTx、UnbondTx、ReportHackTx など)、 SlashTx、BurnAtomTx、ProposalCreateTx、ProposalVoteTx、 これらは非常に一目瞭然であり、次の文書に記載されています。 この文書の将来の改訂。ここでは 2 つの主要な点を文書化します。 IBC のトランザクション タイプ: IBCBlockCommitTx および IBCPacketTx。 IBCBlockCommitTx トランザクションは次のもので構成されます。 ChainID (文字列) : blockchain の ID BlockHash ([]byte) : block-hash バイト、マークル ルート これにはアプリ hash が含まれます BlockPartsHeader (PartSetHeader) : ブロック パーツ セット ヘッダー バイト、投票署名を検証する場合にのみ必要 BlockHeight (int) : コミットの高さ BlockRound (int) : コミットのラウンド Commit ([]Vote) : >2/3 の Tendermint プレコミットが次のことに投票します。 ブロックコミットを構成する ValidatorsHash ([]byte) : 新しいマークルツリー ルート hash validator セット
ValidatorsHashProof (SimpleProof) : BlockHash に対して ValidatorsHash を証明するための SimpleTree Merkleproof
AppHash ([]byte) : の IAVLTree マークルツリー ルート hash
アプリケーションの状態
AppHashProof(SimpleProof):SimpleTree Merkle-proof
AppHash を BlockHash に対して証明する
IBCパケットは以下で構成されます:
ヘッダー (IBCPacketHeader) : パケット ヘッダー
Payload ([]byte) : パケット ペイロードのバイト数。オプション
PayloadHash ([]byte) : パケットのバイトを表す hash。
オプション
Payload または PayloadHash のいずれかが存在する必要があります。 hash
IBCPacket の は、ヘッダーという 2 つの項目の単純なマークル ルートです。
および ペイロード 。完全なペイロードを含まないIBCパケットは、
短縮されたパケット。
IBCPacketHeader は次のもので構成されます。
SrcChainID (文字列) : ソース blockchain ID
DstChainID (文字列) : 宛先 blockchain ID
Number (int) : すべてのパケットの一意の番号
Status (enum) : AckPending 、 AckSent 、
AckReceived 、 NoAck 、または Timeout
Type (string) : タイプはアプリケーションに依存します。 Cosmos
「コイン」パケットタイプを予約します
MaxHeight (int) : ステータスが NoAckWanted または AckReceived でない場合
この高さになるとステータスは Timeout になります。オプション
IBCPacketTx トランザクションは次のもので構成されます。FromChainID (文字列) : blockchain の ID
このパケットを提供する。必ずしもソースではない
FromBlockHeight (int) : blockchain の高さ
次のパケットがブロック hash に含まれています (マークル化されています)。
ソースチェーン
パケット (IBCPacket) : データのパケット。ステータスは 1 です。
AckPending 、 AckSent 、 AckReceived 、 NoAck 、または Timeout のいずれか
PacketProof (IAVLProof) : 証明用の IAVLTree Merkle-proof
パケットの hash とソース チェーンの AppHash の照合
与えられた高さ
「Zone1」から「Zone2」へパケットを送信するシーケンス
「ハブ」を介した様子を {図 X} に示します。まず、IBCPacketTx
パケットがアプリ状態に含まれていることを「ハブ」に証明します。
「ゾーン1」。次に、別の IBCPacketTx が「Zone2」に対して、
パケットは「Hub」のアプリ状態に含まれます。この間
この手順では、IBCPacket の出力は同一です。SrcChainID は次のとおりです。
常に「Zone1」、DstChainID は常に「Zone2」です。
PacketProof には、次のように正しいマークルプルーフ パスが必要です。
以下に続きます:
「Zone1」が「Hub」を介して「Zone2」にパケットを送信したい場合、
IBCPacket データは、パケットが「Zone1」、「Hub」、または「Zone2」でマークル化されているかどうかに関係なく同一です。唯一変更可能なyieldは、
配送追跡のステータス。
概念化に協力してくれた友人や同僚に感謝します。
Tendermint との取り組みをレビューし、サポートを提供する
そしてCosmos。
IBC/
SkuChain の Zaki Manian は、フォーマットと 特にABCIセクションの下の文言 アルテアのジェハン・トレンバックとダスティン・バイイントンが協力してくれた 初期反復 Honey Badger の Andrew Miller がコンセンサスについてのフィードバックを寄せてくれました Greg Slepak によるコンセンサスと文言に関するフィードバック また、Bill Gleim 氏と Seunghwan Han 氏、さまざまなご協力に感謝します。 貢献。 あなたの名前と組織をここに投稿してください 1 Bitcoin: https://bitcoin.org/bitcoin.pdf 2 ゼロキャッシュ: http://zerocash-project.org/paper 3 Ethereum: https://github.com/ethereum/wiki/wiki/WhitePaper 4DAO: https://download.slock.it/public/DAO/WhitePaper.pdf 5 隔離された証人: https://github.com/bitcoin/bips/blob/master/bip0141.mediawiki 6 BitcoinNG: https://arxiv.org/pdf/1510.02037v2.pdf 7 ライトニング ネットワーク: https://lightning.network/lightningnetwork-paper-DRAFT-0.5.pdf 8 テンダーミント: https://github.com/tendermint/tendermint/wiki 9 FLP 不可能: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf 10 スラッシャー: https://blog.ethereum.org/2014/01/15/slasher-apunitive-proof-of-stake-algorithm/ 11 PBFT: http://pmg.csail.mit.edu/papers/osdi99.pdf 12 ビットシェア: https://bitshares.org/technology/delegatedproof-of-stake-consensus/
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 nceAnalysisOfLibswift.pdf 20 DLS: http://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf 21 シンクライアントのセキュリティ: https://en.bitcoin.it/wiki/Thin_Client_Security 22 Ethereum 2.0 藤色紙: http://vitalik.ca/yles/mauve_paper.html https://www.docdroid.net/ec7xGzs/314477721-ethereumplatform-review-opportunities-and-challenges-for-privateand-consortium-blockchains.pdf.html
�� えー