Polkadot: 異種マルチチェーン フレームワークのビジョン
Résumé
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 DR. GAVIN BOIS FONDATEUR, ETHEREUM & PARITÉ [email protected] Résumé. Les architectures blockchain actuelles souffrent toutes d'un certain nombre de problèmes, notamment les moyens pratiques d'extensibilité et d'évolutivité. Nous pensons que cela découle du fait de lier deux parties très importantes de l'architecture du consensus, à savoir canonicité et validité, trop étroitement liées. Cet article présente une architecture, la multi-chaîne hétérogène, ce qui distingue fondamentalement les deux. En compartimentant ces deux parties et en gardant la fonctionnalité globale fournie au minimum absolu de sécurité et de transport, nous introduisons des moyens pratiques d’extensibilité du noyau in situ. L'évolutivité est abordée via une approche « diviser pour mieux régner » sur ces deux fonctions, en s'éloignant de son noyau solidaire grâce à l'incitation des nœuds publics non fiables. La nature hétérogène de cette architecture permet à de nombreux types très divergents de systèmes de consensus d'interagir dans une « fédération » sans confiance et entièrement décentralisée, permettant aux réseaux ouverts et fermés d'avoir un accès sans confiance à les uns les autres. Nous proposons un moyen d'assurer une rétrocompatibilité avec un ou plusieurs réseaux préexistants tels que Ethereum. Nous pensons qu'un tel système constitue un élément de base utile dans la recherche globale d'un système implémentable capable d’atteindre les niveaux d’évolutivité et de confidentialité du commerce mondial. 1. Préface Ceci est destiné à être un résumé technique de la « vision » d'une direction possible qui pourrait être prise pour développer davantage le paradigme blockchain, ainsi que quelques justifications expliquant pourquoi cette direction est judicieuse. Il s'étend dans autant de détails que possible à ce stade de développement un système qui peut apporter une amélioration concrète sur un nombre d'aspects de la technologie blockchain. Il ne s’agit pas d’une spécification, formelle ou autre. Il n'est pas destiné à être exhaustif ni à être un conception finale. Il n’est pas destiné à couvrir les aspects non essentiels du framework tels que les API, les liaisons, les langages et utilisation. Ceci est particulièrement expérimental ; où les paramètres sont précisés, ils sont susceptibles de changer. Les mécanismes être ajouté, affiné et supprimé en réponse aux besoins de la communauté idées et critiques. De grandes parties de ce document seront probablement être révisé à mesure que les preuves expérimentales et le prototypage le donnent nous des informations sur ce qui fonctionnera et ce qui ne fonctionnera pas. Ce document comprend une description de base du protocole ainsi que des idées d'orientations qui peuvent être prises pour améliorer divers aspects. Il est prévu que le noyau description servira de point de départ à une première série de preuves de concept. Une dernière « version 1.0 » serait basé sur ce protocole raffiné ainsi que sur les idées supplémentaires qui ont fait leurs preuves et sont déterminées à nécessaires pour que le projet atteigne ses objectifs. 1.1. Histoire. • 10/09/2016 : 0.1.0-proof1 • 20/10/2016 : 0.1.0-proof2 • 01/11/2016 : 0.1.0-proof3 • 11/10/2016 : 0.1.0 2. Présentation Les blockchains se sont révélées très prometteuses dans plusieurs domaines, notamment celui de « l’Internet des objets ». (IoT), finance, gouvernance, gestion des identités, décentralisation du Web et suivi des actifs. Cependant, malgré le promesse technologique et grand discours, nous n'avons pas encore vu déploiement significatif dans le monde réel de la technologie actuelle. Nous pensons que cela est dû à cinq échecs majeurs du système actuel. piles technologiques : Évolutivité : combien de ressources sont dépensées à l'échelle mondiale sur le traitement, la bande passante et le stockage pour que le système puisse traiter une seule transaction et combien les transactions peuvent être raisonnablement traitées sous conditions de pointe ? Isolatabilité : les besoins divergents de plusieurs les parties et les demandes soient-elles traitées à un degré quasi optimal dans le même cadre ? Développabilité : dans quelle mesure les outils fonctionnent-ils ? Faire les API répondent-elles aux besoins des développeurs ? Des supports pédagogiques sont-ils disponibles ? Les bonnes intégrations sont-elles là ? Gouvernance : le réseau peut-il rester flexible évoluer et s'adapter au fil du temps ? Les décisions peuvent-elles être fait avec suffisamment d’inclusivité, de légitimité et transparence pour assurer un leadership efficace d’un système décentralisé ? Applicabilité : la technologie répond-elle réellement à elle seule à un besoin pressant ? Un autre « middleware » est-il nécessaire pour combler le fossé entre applications réelles ? Dans le présent travail, nous visons à aborder les deux premiers enjeux : évolutivité et isolabilité. Cela dit, nous croyons le cadre Polkadot peut apporter des améliorations significatives dans chacune de ces classes de problèmes. Des implémentations blockchain modernes et efficaces telles que le client Parité Ethereum [17] peut déclencheress au-delà de 3 000 transactions par seconde lors de l'exécution sur du matériel grand public performant. Cependant, le monde réel actuel Les réseaux blockchain sont pratiquement limités à une trentaine de transactions par seconde. Cette limitation provient principalement du fait que les mécanismes actuels de consensus synchrone nécessitent de larges marges de sécurité temporelles sur le délai de traitement prévu, qui est exacerbé par le 1
概要
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 DR.ギャビン・ウッド 創設者、イーサリアム、パリティ ギャビン@PARITY.IO 抽象的。現在の blockchain アーキテクチャはすべて、拡張性とスケーラビリティの実際的な手段をはじめとする多くの問題を抱えています。私たちは、これはコンセンサス アーキテクチャの 2 つの非常に重要な部分を結び付けることに起因すると考えています。 正規性と有効性が近すぎる。この論文では、異種マルチチェーンというアーキテクチャを紹介します。 これが根本的にこの 2 つを区別します。 これら 2 つの部分を区分けし、提供される全体的な機能を最小限に抑えることで、 セキュリティとトランスポートの観点から、現場でのコア拡張性の実用的な手段を導入します。スケーラビリティには次のような方法があります。 これら 2 つの機能に対する分割統治アプローチであり、 信頼できないパブリックノード。 このアーキテクチャの異質な性質により、多くの非常に多様なタイプのコンセンサス システムがトラストレスで完全に分散された「フェデレーション」で相互運用できるようになり、オープン ネットワークとクローズド ネットワークがトラストフリーでアクセスできるようになります。 お互いに。 私たちは、次のような 1 つ以上の既存のネットワークとの下位互換性を提供する手段を提案します。 Ethereum。私たちは、このようなシステムが、実用的なシステムの全体的な探索において有用な基本レベルのコンポーネントを提供すると信じています。 グローバルコマースレベルのスケーラビリティとプライバシーを実現できる実装可能なシステム。 1. はじめに これは技術的な「ビジョン」の概要を目的としています。 blockchain パラダイムをさらに発展させる際に取られる可能性のある 1 つの方向性と、この方向性が合理的である理由についての理論的根拠を示します。にレイアウトされます 開発のこの段階で可能な限り詳細を 具体的な改善をもたらす可能性のあるシステム blockchain テクノロジーのさまざまな側面。 これは、形式的であるかどうかにかかわらず、仕様を意図したものではありません。包括的であることや、 最終デザイン。コア以外の側面をカバーすることを目的としたものではありません API、バインディング、言語などのフレームワークの 使用法。 これは特に実験的なものです。ここでパラメータ 指定されていますが、変更される可能性があります。メカニズムは、 コミュニティに応じて追加、改良、削除される アイデアと批評。この文書の大部分は、おそらく 実験的証拠やプロトタイピングによって得られるものとして改訂される 何が機能し、何が機能しないのかについての情報を提供します。 この文書には、プロトコルの核となる説明と、取るべき方向性のアイデアが含まれています。 さまざまな面を改善するために。コアとなると想定されるのは、 説明は最初の作業の開始点として使用されます。 一連の概念実証。最終的な「バージョン 1.0」は次のようになります。 この洗練されたプロトコルと、実証され決定された追加のアイデアをベースにしています。 プロジェクトが目標を達成するために必要です。 1.1.歴史。 • 2016 年 9 月 10 日: 0.1.0 耐性 1 • 2016/10/20: 0.1.0-proof2 • 2016 年 11 月 1 日: 0.1.0-proof3 • 2016 年 10 月 11 日: 0.1.0 2. はじめに ブロックチェーンは、「モノのインターネット」を含むいくつかの分野で有用性が大いに期待できることが証明されています。 (IoT)、財務、ガバナンス、アイデンティティ管理、ウェブ分散化、資産追跡。しかし、にもかかわらず、 技術的な約束と壮大な話はまだわかりません 現在のテクノロジーの重要な現実世界への展開。 私たちは、これは現在の 5 つの主要な失敗に起因すると考えています。 テクノロジースタック: スケーラビリティ: 世界中でどれだけのリソースが費やされているか システムが単一のトランザクションを処理するための処理、帯域幅、およびストレージ、およびそのトランザクション数 トランザクションは以下に基づいて合理的に処理できます ピークコンディション? 分離性: 複数の異なるニーズに対応できるか 関係者とアプリケーションは、同じフレームワークの下で最適に近い程度まで対処できるでしょうか? 開発性: ツールはどの程度うまく機能しますか?する API は開発者のニーズに対応しているでしょうか?教育用の教材はありますか?適切な統合は行われていますか? ガバナンス: ネットワークは柔軟性を維持できるか 時間の経過とともに進化して適応しますか? 決定は可能ですか 十分な包括性、正当性、そして 効果的なリーダーシップを発揮するための透明性 分散型システム? 適用可能性: そのテクノロジーは実際にそれ自体で切実なニーズに対応しているのでしょうか?ギャップを埋めるには他の「ミドルウェア」が必要ですか? 実際のアプリケーションは? 現在の作業では、最初の 2 つに対処することを目指しています。 問題: スケーラビリティと分離性。そうは言っても、私たちは信じています Polkadot フレームワークは、これらの問題のそれぞれのクラスにおいて有意義な改善を提供できます。 最新の効率的な blockchain 実装 パリティ Ethereum クライアント [17] は proc できます超過 高性能のコンシューマ ハードウェアで実行すると、1 秒あたり 3,000 トランザクション。 しかし、現在の現実世界では、 blockchain ネットワークは実質的に約 30 に制限されています 1秒あたりのトランザクション数。 この制限は主に、現在の同期コンセンサス メカニズムが広いタイミング安全マージンを必要とするという事実に起因しています。 予想される処理時間は、 1
Introduction
Les blockchains se sont révélées très prometteuses dans plusieurs domaines, notamment celui de « l’Internet des objets ». (IoT), finance, gouvernance, gestion des identités, décentralisation du Web et suivi des actifs. Cependant, malgré le promesse technologique et grand discours, nous n'avons pas encore vu déploiement significatif dans le monde réel de la technologie actuelle. Nous pensons que cela est dû à cinq échecs majeurs du système actuel. piles technologiques : Évolutivité : combien de ressources sont dépensées à l'échelle mondiale sur le traitement, la bande passante et le stockage pour que le système puisse traiter une seule transaction et combien les transactions peuvent être raisonnablement traitées sous conditions de pointe ? Isolatabilité : les besoins divergents de plusieurs les parties et les demandes soient-elles traitées à un degré quasi optimal dans le même cadre ? Développabilité : dans quelle mesure les outils fonctionnent-ils ? Faire les API répondent-elles aux besoins des développeurs ? Des supports pédagogiques sont-ils disponibles ? Les bonnes intégrations sont-elles là ? Gouvernance : le réseau peut-il rester flexible évoluer et s'adapter au fil du temps ? Les décisions peuvent-elles être fait avec suffisamment d’inclusivité, de légitimité et transparence pour assurer un leadership efficace d’un système décentralisé ? Applicabilité : la technologie répond-elle réellement à elle seule à un besoin pressant ? Un autre « middleware » est-il nécessaire pour combler le fossé entre applications réelles ? Dans le présent travail, nous visons à aborder les deux premiers enjeux : évolutivité et isolabilité. Cela dit, nous croyons le cadre Polkadot peut apporter des améliorations significatives dans chacune de ces classes de problèmes. Des implémentations blockchain modernes et efficaces telles que le client Parité Ethereum [17] peut traiter au-delà de 3 000 transactions par seconde lors de l'exécution sur du matériel grand public performant. Cependant, le monde réel actuel Les réseaux blockchain sont pratiquement limités à une trentaine de transactions par seconde. Cette limitation provient principalement du fait que les mécanismes actuels de consensus synchrone nécessitent de larges marges de sécurité temporelles sur le délai de traitement prévu, qui est exacerbé par lePOLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 2 désir de prendre en charge des mises en œuvre plus lentes. Ceci est dû à l’architecture consensuelle sous-jacente : le mécanisme de transition étatique, ou les moyens par lesquels les parties se rassemblent et exécuter des transactions, a sa logique fondamentalement liée dans le mécanisme de « canonisation » du consensus, ou moyen par lequel les parties conviennent d'un certain nombre de des histoires possibles et valides. Cela s'applique également aux systèmes proof-of-work (PoW) tels que Bitcoin [15] et Ethereum [5,23] et aux systèmes de preuve de participation (PoS) tels que NXT [8] et Bitshares [12] : tous souffrent finalement du même handicap. C'est un simple stratégie qui a contribué au succès de blockchain. Cependant, en couplant étroitement ces deux mécanismes en une seule unité du protocole, nous regroupons également plusieurs des acteurs et des applications présentant différents profils de risque, différentes exigences d’évolutivité et différents besoins en matière de confidentialité. Une taille unique ne convient pas à tout le monde. Trop souvent, il arrive que dans un désir d'attirer un large public, un réseau adopte un certain degré de conservatisme qui se traduit par un plus petit dénominateur commun servir de manière optimale quelques-uns et conduire finalement à un échec dans la capacité à innover, à performer et à s'adapter, parfois dramatiquement. Certains systèmes tels que par ex. Factom [21] abandonne complètement le mécanisme de transition d'état. Cependant, une grande partie des l'utilité que nous désirons nécessite la capacité de passer d'un état à l'autre selon une machine à états partagée. Le laisser tomber résout un problème alternatif ; cela ne fournit pas d'alternative solution. Il semble donc clair qu'une direction raisonnable à explorer comme voie vers un calcul décentralisé évolutif plateforme est de dissocier l’architecture de consensus de le mécanisme de transition d’État. Et, sans surprise, c’est la stratégie adoptée par Polkadot comme solution d’évolutivité. 2.1. Protocole, mise en œuvre et réseau. Comme Bitcoin et Ethereum, Polkadot font à la fois référence à un protocole réseau et au protocole principal (jusqu'ici présupposé) réseau public qui exécute ce protocole. Polkadot se veut un projet libre et ouvert, la spécification du protocole étant sous licence Creative Commons et le le code étant placé sous une licence FLOSS. Le projet est développé de manière ouverte et accepte les contributions partout où ils sont utiles. Un système de RFC, un peu comme les propositions d'amélioration de Python, permettront de collaborer publiquement sur les modifications et les mises à niveau du protocole. Notre mise en œuvre initiale du protocole Polkadot sera connue sous le nom de Plateforme Parity Polkadot et inclure une implémentation complète du protocole avec l'API liaisons. Comme les autres implémentations de Parity blockchain, PPP est conçu pour être une pile technologique blockchain à usage général, ni uniquement pour un réseau public ni pour opération privée/consortium. Son développement donc jusqu'à présent, a été financé par plusieurs parties, notamment à travers une subvention du gouvernement britannique. Cet article décrit néanmoins Polkadot sous le contexte d’un réseau public. La fonctionnalité que nous envisageons dans un réseau public est un surensemble de celle requise dans contextes alternatifs (par exemple privés et/ou consortium). De plus, dans ce contexte, la portée complète de Polkadot peut être décrit et discuté plus clairement. Cela veut dire le lecteur doit être conscient que certains mécanismes peuvent être décrits (par exemple l'interfonctionnement avec d'autres réseaux publics) qui ne concernent pas directement Polkadot lorsqu'ils sont déployés dans des situations non publiques (« autorisées »). 2.2. Travaux antérieurs. Il a été proposé de manière informelle de dissocier le consensus sous-jacent de la transition étatique. en privé pendant au moins deux ans – Max Kaye était partisan d’une telle stratégie dès les premiers jours de Ethereum. Une solution évolutive plus complexe connue sous le nom de Chain fibres, datant de juin 2014 et publié pour la première fois plus tard cette année-là1, a plaidé en faveur d’une chaîne de relais unique et de plusieurs chaînes homogènes fournissant un mécanisme d’exécution inter-chaînes transparent. La décohérence a été payée via la latence des transactions (transactions nécessitant le la coordination de parties disparates du système serait prendre plus de temps à traiter. Polkadot tire une grande partie de son architecture de cela et des conversations de suivi avec diverses personnes, bien qu'il diffère grandement dans une grande partie de sa conception et de ses dispositions. Bien qu'il n'existe aucun système comparable à Polkadot actuellement en production, plusieurs systèmes d'une certaine pertinence ont été proposés, bien que peu nombreux et à un niveau substantiel de détail. Ces propositions peuvent êtredécomposé en systèmes qui abandonnent ou réduisent la notion de cohérence globale machine à états, celles qui tentent de fournir un système global machine singleton cohérente à travers des fragments homogènes et celles qui ciblent uniquement l’hétérogénéité. 2.2.1. Systèmes sans état global. Factom [21] est un système qui démontre la canonicité sans les validité, permettant effectivement la chronique des données. En raison de la nécessité d'éviter l'état mondial et les difficultés avec la mise à l'échelle que cela apporte, cela peut être considéré comme une solution évolutive. Cependant, comme mentionné précédemment, l'ensemble Le nombre de problèmes qu’il résout est strictement et sensiblement moindre. Tangle [18] est une nouvelle approche des systèmes de consensus. Plutôt que d'organiser les transactions en blocs et de former un consensus sur une liste strictement liée pour donner un ordre globalement canonique des changements d'état, il abandonne largement l'idée d'un ordre fortement structuré et préfère plutôt pousse à un graphique acyclique dirigé des transactions dépendantes avec des éléments ultérieurs aidant à canoniser les éléments antérieurs grâce à des références explicites. Pour les changements d'état arbitraires, ce graphe de dépendance deviendrait vite insoluble, cependant, pour le modèle UTXO2 beaucoup plus simple, cela devient tout à fait raisonnable. Parce que le système n’est que vaguement cohérent et que les transactions sont généralement indépendantes les unes des autres. d'autre part, une grande partie du parallélisme mondial devient tout à fait naturel. L'utilisation du modèle UTXO a l'effet de limiter Tangle à une « monnaie » purement de transfert de valeur système plutôt que quelque chose de plus général ou extensible. De plus, sans la stricte cohérence globale, l'interaction avec d'autres systèmes, qui ont tendance à nécessiter une cohérence absolue, une connaissance approfondie de l’état du système devient peu pratique. 1https://github.com/ethereum/wiki/wiki/Chain-Fibers-Redux 2sortie de transaction non dépensée, le modèle utilisé par Bitcoin dans lequel l'état est en fait l'ensemble d'adresses associé à une certaine valeur ; les transactions rassemblent ces adresses et les reforment en un nouvel ensemble d'adresses dont la somme totale est équivalente
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 3 2.2.2. Systèmes de chaînes hétérogènes. Les chaînes latérales [3] sont un ajout proposé au protocole Bitcoin qui permettrait une interaction sans confiance entre la chaîne principale Bitcoin et des chaînes latérales supplémentaires. Aucune disposition n'est prévue pour degré d’interaction « riche » entre les chaînes latérales : l’interaction se limiterait à permettre aux chaînes latérales d’être gardiens des actifs de chacun, effectuant – au niveau local jargon - une ancrage à double sens 3. La vision finale est celle d'un cadre dans lequel la monnaie Bitcoin pourrait être dotée de fonctionnalité supplémentaire, bien que périphérique, grâce à son rattachement sur d'autres chaînes avec une transition d'état plus exotique systèmes que le protocole Bitcoin ne le permet. En ce sens, les chaînes latérales abordent l’extensibilité plutôt que l’évolutivité. En effet, il n’existe fondamentalement aucune disposition relative à la validité des side-chains ; tokens d'une chaîne (par exemple Bitcoin) détenus au nom d'une side-chain sont garantis uniquement par le la capacité de la chaîne latérale à inciter les mineurs à canoniser transitions valides. La sécurité du réseau Bitcoin ne peut pas facilement être transféré pour travailler pour le compte d’autres blockchains. De plus, un protocole pour assurer Bitcoin les mineurs fusionnent le mien (c'est-à-dire dupliquent leur pouvoir de canonisation sur celui de la side-chain) et, plus important encore, valident que les transitions de la side-chain sont en dehors du portée de cette proposition. Cosmos [10] est un système multi-chaîne proposé dans le même veine que les side-chains, en échangeant le Nakamoto PoW méthode de consensus pour l’algorithme Tendermint de Jae Kwon. Essentiellement, il décrit plusieurs chaînes (opérant dans zones) chacune utilisant des instances individuelles de Tendermint, ainsi qu'un moyen de communication sans confiance via un chaîne de moyeu principale. Cette communication inter-chaînes est limitée au transfert d'actifs numériques (« en particulier sur tokens ») plutôt qu'à des informations arbitraires, mais une telle communication inter-chaînes a un chemin de retour pour les données, par ex. informer l'expéditeur de l'état du transfert. Ensembles de validateurs pour les chaînes zonées, et en particulier les moyens de les inciter sont, comme les chaînes latérales, laissés comme un problème non résolu. L'hypothèse générale est que chaque chaîne zonée détiendra elle-même un token de valeur dont l'inflation est utilisée pour payer les validator. Encore au début de conception, à l'heure actuelle, la proposition manque de détails complets sur les moyens économiques permettant d'atteindre l'évolutivité certitude sur la validité globale. Cependant, la faible cohérence requise entre les zones et le hub permettra pour une flexibilité supplémentaire sur les paramètres du zonage chaînes par rapport à celle d’un système imposant des cohérence. 2.2.3. Casper. Pour l'instant, aucun examen complet ni comparaison côte à côte entre Casper [6] et Polkadot ont été faites, même si l'on peut faire une analyse assez radicale (et par conséquent inexacte) caractérisation des deux. Casper est une réinvention de la façon dont un algorithme de consensus PoS pourrait être basé sur des participants pariant sur quelle fourchette deviendrait finalement canonique. Une attention considérable a été accordée à la garantie qu'il soit robuste pour le réseau forks, même lorsqu'ils sont prolongés, et ont un certain degré d'évolutivité supplémentaire en plus du modèle de base Ethereum. Comme Ainsi, Casper à ce jour a eu tendance à être beaucoup plus protocole complexe que Polkadot et ses ancêtres, et un écart substantiel par rapport au format de base blockchain. Il on ne sait toujours pas comment Casper va itérer à l'avenir et à quoi il ressemblera s’il est finalement déployé. Alors que Casper et Polkadot représentent tous deux de nouveaux protocoles intéressants et, dans un certain sens, des augmentations de Ethereum, il existe des différences substantielles entre leurs objectifs ultimes et voies de déploiement. Casper est un Ethereum Projet centré sur la fondation initialement conçu être une modification PoS du protocole sans volonté de créer un blockchain fondamentalement évolutif. Fondamentalement, c'est conçu pour être un hard-fork, plutôt que quelque chose de plus expansif et donc tous les clients et utilisateurs Ethereum seraient nécessaire pour mettre à niveau ou rester sur un fork d’adoption incertaine. En tant que tel, le déploiement est rendu beaucoup plus difficile, ce qui est inhérent à un projet décentralisé où des une coordination est nécessaire. Polkadot diffère de plusieurs manières ; avant tout, Polkadot est conçu pour être un système entièrement extensible et évolutif. blockchain test de développement, de déploiement et d'interaction lit. Il est conçu pour être un harnais largement évolutif, capable de assimiler le nouveau blockchainla technologie dès qu’elle devient disponible sans coordination décentralisée trop compliquée ou des fourches dures. Nous envisageons déjà plusieurs cas d'utilisation tels comme chaînes de consortium cryptées et chaînes à haute fréquence avec des temps de blocage très faibles, irréalistes à réaliser toute version future de Ethereum actuellement envisagée. Enfin, le couplage entre celui-ci et Ethereum est extrêmement lâche; aucune action de la part de Ethereum n'est nécessaire pour activer le transfert de transactions sans confiance entre les deux réseaux. En bref, alors que Casper/Ethereum 2.0 et Polkadot partagent quelques similitudes éphémères, nous pensons que leur objectif final est sensiblement différent et que plutôt que de rivaliser, les deux protocoles finiront probablement par coexister dans le cadre d’un relation mutuellement bénéfique dans un avenir prévisible.
導入
ブロックチェーンは、「モノのインターネット」を含むいくつかの分野で有用性が大いに期待できることが証明されています。 (IoT)、財務、ガバナンス、アイデンティティ管理、ウェブ分散化、資産追跡。しかし、にもかかわらず、 技術的な約束と壮大な話はまだわかりません 現在のテクノロジーの重要な現実世界への展開。 私たちは、これは現在の 5 つの主要な失敗に起因すると考えています。 テクノロジースタック: スケーラビリティ: 世界中でどれだけのリソースが費やされているか システムが単一のトランザクションを処理するための処理、帯域幅、およびストレージ、およびそのトランザクション数 トランザクションは以下に基づいて合理的に処理できます ピークコンディション? 分離性: 複数の異なるニーズに対応できるか 関係者とアプリケーションは、同じフレームワークの下で最適に近い程度まで対処できるでしょうか? 開発性: ツールはどの程度うまく機能しますか?する API は開発者のニーズに対応しているでしょうか?教育用の教材はありますか?適切な統合は行われていますか? ガバナンス: ネットワークは柔軟性を維持できるか 時間の経過とともに進化して適応しますか? 決定は可能ですか 十分な包括性、正当性、そして 効果的なリーダーシップを発揮するための透明性 分散型システム? 適用可能性: そのテクノロジーは実際にそれ自体で切実なニーズに対応しているのでしょうか?ギャップを埋めるには他の「ミドルウェア」が必要ですか? 実際のアプリケーションは? 現在の作業では、最初の 2 つに対処することを目指しています。 問題: スケーラビリティと分離性。そうは言っても、私たちは信じています Polkadot フレームワークは、これらの問題のそれぞれのクラスにおいて有意義な改善を提供できます。 最新の効率的な blockchain 実装 パリティ Ethereum クライアント [17] は、 高性能のコンシューマ ハードウェアで実行すると、1 秒あたり 3,000 トランザクション。 しかし、現在の現実世界では、 blockchain ネットワークは実質的に約 30 に制限されています 1秒あたりのトランザクション数。 この制限は主に、現在の同期コンセンサス メカニズムが広いタイミング安全マージンを必要とするという事実に起因しています。 予想される処理時間は、POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 2 遅い実装をサポートしたいと考えています。これは次の理由によるものです 基礎となるコンセンサスアーキテクチャ: 状態遷移メカニズム、または当事者が照合する手段 トランザクションを実行し、そのロジックは基本的に結合されています コンセンサス「正規化」メカニズム、または 当事者がいくつかの事項のうちの 1 つに同意する手段 可能性のある、有効な、履歴。 これは、Bitcoin [15] や Ethereum [5,23] などの proof-of-work (PoW) システムと、NXT [8] や Bitshares [12] などのプルーフオブステーク (PoS) システムの両方に同様に当てはまります。 最終的には全員が同じハンディキャップを負うことになります。シンプルです blockchain の成功に貢献した戦略。ただし、 これら 2 つの機構を 1 つのユニットに緊密に結合することにより、 プロトコルの複数の異なるプロトコルもバンドルします さまざまなリスク プロファイル、さまざまなスケーラビリティ要件、さまざまなプライバシー ニーズを持つアクターとアプリケーション。 1 つのサイズがすべてに適合するわけではありません。次のようなケースが非常に頻繁にあります。 広くアピールしたいという願望があるため、ネットワークはある程度の保守主義を採用し、その結果最小公倍数が低くなります 少数の人々に最適にサービスを提供し、最終的には失敗につながる 時には、革新し、実行し、適応する能力において 劇的にそうです。 いくつかのシステム、例えばFactom [21] は状態遷移メカニズムを完全に削除します。ただし、その多くは、 私たちが望む実用性には状態を遷移する能力が必要です 共有ステートマシンに従って。落とせば解決する 別の問題。代替手段は提供されません 解決策。 したがって、合理的な方向性の 1 つは明らかであるように思われます。 スケーラブルな分散コンピューティングへのルートとして探索する プラットフォームはコンセンサスアーキテクチャを分離することを目的としています。 状態遷移メカニズム。そして、おそらく驚くことではないでしょうが、これは Polkadot がスケーラビリティの解決策として採用している戦略です。 2.1.プロトコル、実装、およびネットワーク。いいね Bitcoin および Ethereum、Polkadot は、ネットワーク プロトコルと (これまで想定されていた) プライマリを同時に指します このプロトコルを実行するパブリック ネットワーク。 Polkadot は無料でオープンなプロジェクトであることを目的としており、プロトコル仕様はクリエイティブ コモンズ ライセンスに基づいており、 コードは FLOSS ライセンスの下に配置されます。プロジェクトは オープンな方法で開発され、貢献を受け入れます 役に立つ場所ならどこでも。 RFC のシステムと似ています Python 拡張提案により、次の手段が可能になります。 プロトコルの変更とアップグレードに関して公的に協力しています。 Polkadot プロトコルの初期実装 はパリティ Polkadot プラットフォームとして知られ、 API とともに完全なプロトコル実装を含める バインディング。他のパリティ blockchain 実装と同様に、 PPP は、パブリック ネットワークやネットワークに固有のものではなく、汎用の blockchain テクノロジー スタックとして設計されています。 民間/コンソーシアム運営。こうして発展したのが、 これまで、以下を含むいくつかの団体から資金提供を受けてきました。 英国政府からの補助金。 それにも関わらず、この文書では Polkadot について次のように説明しています。 パブリックネットワークのコンテキスト。私たちがパブリック ネットワークで想定している機能は、ネットワークで必要とされる機能のスーパーセットです。 代替設定(プライベートおよび/またはコンソーシアムなど)。さらに、この文脈では、Polkadot の全範囲は次のようになります。 より明確に説明され、議論されるべきです。これはつまり、 読者は、特定のメカニズムが Polkadot に直接関係のない説明 (他のパブリック ネットワークとの相互運用など) 非公開(「許可」)状況で展開される場合。 2.2.以前の作品。基礎となるコンセンサスを状態遷移から切り離すことが非公式に提案されている 少なくとも 2 年間はプライベートで活動していた――マックス・ケイは、社会の非常に初期の頃、そのような戦略の支持者であった。 Ethereum。 チェーンとして知られる、より複雑でスケーラブルなソリューション ファイバーは 2014 年 6 月に遡り、その後初めて公開されました 同年1、透過的なチェーン間実行メカニズムを提供する単一のリレーチェーンと複数の同種チェーンの主張を行いました。 デコヒーレンスには代償が支払われた トランザクション レイテンシによる - トランザクションを必要とする システムの異なる部分を調整することで、 処理に時間がかかります。 Polkadot は、そのアーキテクチャの多くを、それとその後の会話から取り入れています。 ただし、その設計と規定の多くは大きく異なります。 Polkadot に匹敵するシステムはありませんが、 実際に実稼働中であり、何らかの関連性を持ついくつかのシステム 提案されているが、実質的なレベルではほとんどない 詳細。これらの提案は、システムに分解される グローバルに一貫性のある概念を削除または削減します。 ステート マシン、グローバルに提供しようとするもの 均質なシャードによるコヒーレントなシングルトン マシン 異質性のみを対象とするものもあります。 2.2.1.グローバル状態のないシステム。 Factom [21] は、対応するものなしで正規性を実証するシステムです。 有効性を高め、データの記録を効果的に可能にします。グローバルな状態と困難を回避するため これによってもたらされるスケーリングを考慮すると、スケーラブルなソリューションと考えることができます。ただし、前述したように、このセットは それによって解決される問題の割合は厳密かつ実質的に小さくなります。 Tangle [18] は、コンセンサス システムへの新しいアプローチです。 トランザクションをブロックに配置し、厳密にリンクされたリストに基づいて合意を形成して、状態変化の世界的に標準的な順序付けを行うのではなく、高度に構造化された順序付けの概念を大幅に放棄し、代わりに 初期の項目を正規化するのに役立つ、後の項目を持つ依存トランザクションの有向非巡回グラフを推進します。 明示的な参照を通じて。任意の状態変化の場合、 この依存関係グラフはすぐに手に負えなくなるでしょう。 ただし、より単純な UTXO モデル 2 の場合、これは次のようになります。 かなり合理的です。システムの一貫性は緩やかであり、トランザクションは通常、それぞれから独立しているためです。 その他、大量のグローバル並列処理が非常に多くなります。 自然な。 UTXO モデルを使用すると効果があります タングルを純粋に価値移転「通貨」に限定すること より一般的または拡張可能なものではなく、システムです。 さらに、厳密なグローバル一貫性がなければ、他のシステムとの相互作用は、絶対的なシステムを必要とする傾向があります。 システム状態に関するある程度の知識は非現実的になります。 1https://github.com/ethereum/wiki/wiki/Chain-Fibers-Redux 2 未使用のトランザクション出力。Bitcoin が使用するモデル。これにより、状態は事実上、ある値に関連付けられたアドレスのセットになります。 トランザクションはそのようなアドレスを照合し、合計が等しい新しいアドレスのセットに再構成します。
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 3 2.2.2.異種チェーン システム。サイドチェーン [3] は メインの Bitcoin チェーン間のトラストレスな対話を可能にする Bitcoin プロトコルへの追加を提案 そして追加のサイドチェーン。何の規定もありません 側鎖間の「豊富な」相互作用の程度: 相互作用は、側鎖の相互作用を可能にするものに限定されます。 お互いの資産を管理し、地域内で影響を与える 専門用語—双方向ペッグ 3. 最終的なビジョンは、Bitcoin 通貨を提供できるフレームワークです。 ペギングによる追加機能 (周辺機能である場合) よりエキゾチックな状態遷移を伴う他のチェーンへ Bitcoin プロトコルで許可されているシステムを超えています。この意味で、 サイドチェーンは、スケーラビリティではなく拡張性に対処します。 実際、サイドチェーンの有効性に関する規定は基本的にありません。 1 つのチェーンからの token 個 (例: Bitcoin) サイドチェーンに代わって保持されるのは、 マイナーに正規化を促すサイドチェーンの機能 有効な遷移。 Bitcoin ネットワークのセキュリティ 他の人に代わって仕事に簡単に移行できない blockchain秒。さらに、Bitcoin を保証するためのプロトコル マイナーはマージマイニング (つまり、正規化権限をサイドチェーンの権限に複製します) し、さらに重要なことに、サイドチェーンの遷移が外部にあることを検証します。 この提案の範囲。 Cosmos [10] は、 サイドチェーンと同じ流れで、ナカモトのPoWを交換します Jae Kwon の Tendermint アルゴリズムのコンセンサス手法。 基本的に、それは複数のチェーン(で動作する)を記述します。 ゾーン) それぞれが Tendermint の個別のインスタンスを使用し、 マスターハブチェーン。このチェーン間通信は、任意の情報ではなく、デジタル資産 (「具体的には tokens について」) の転送に限定されていますが、このようなチェーン間通信にはデータのリターン パスがあり、 例:転送のステータスを送信者に報告するため。 ゾーンチェーンのバリデーターセット、特に 彼らを奨励する手段は、サイドチェーンと同様に、左にあります。 未解決の問題として。一般的な仮定は次のとおりです 各ゾーンチェーン自体は、validator の支払いに使用される値の token を保持します。まだ初期段階にある 設計の点で、現時点ではこの提案には、スケーラブルな設計を達成するための経済的手段に関する包括的な詳細が欠けています。 グローバルな妥当性に対する確実性。ただし、ゾーンとハブの間に必要な緩やかな一貫性により、 ゾーンのパラメータに対する柔軟性をさらに高めるため より強力なチェーンを適用するシステムのチェーンと比較して、 一貫性。 2.2.3.キャスパー。 Casper [6] と Polkadot の包括的なレビューや比較はまだ行われていません かなり広範囲に作成することもできますが、 (したがって不正確な) 2 つの特徴付け。 Casper は、PoS コンセンサス アルゴリズムの仕組みを再考したものです 参加者がどのフォークに賭けるかに基づいている可能性があります 最終的には正規化されるでしょう。ネットワークに対する堅牢性を確保するために十分な考慮が払われました 延長された場合でもフォークを使用し、基本的な Ethereum モデルに加えてある程度の追加のスケーラビリティを備えています。として このように、Casper はこれまでのところ、実質的に Polkadot やその前身よりも複雑なプロトコル、 基本的な blockchain 形式から大幅に逸脱しています。それ Casper が将来どのように反復するかはまだわかりません そして、それが最終的に展開された場合にどのようになるか。 Casper と Polkadot はどちらも興味深い新しいプロトコルであり、ある意味では、 Ethereum、両者の間には大きな違いがあります。 最終的な目標と導入までの道筋。 キャスパーは、 Ethereum 当初設計された財団中心のプロジェクト 意図せずにプロトコルの PoS 変更を行うこと 基本的にスケーラブルな blockchain を作成します。重要なことは、それは、 これ以上拡張的なものではなく、ハードフォークとして設計されているため、すべての Ethereum クライアントとユーザーは アップグレードするか、採用が不確実な分岐点に留まる必要があります。そのため、緊密な分散プロジェクトに特有のこととして、デプロイメントは大幅に困難になります。 調整が必要です。 Polkadot はいくつかの点で異なります。何よりもまず、 Polkadot は、完全に拡張可能でスケーラブルになるように設計されています。 blockchain 開発、展開、および対話テスト ベッド。これは、ほぼ将来性のあるハーネスとして構築されており、 新しいblockchainを同化する過度に複雑な分散型調整なしで利用できるテクノロジー またはハードフォーク。私たちはすでに次のようないくつかのユースケースを想定しています 暗号化されたコンソーシアムチェーンおよび高周波チェーンとして ブロック時間が非常に短いため、実行するのは非現実的です。 現在想定されている Ethereum の将来のバージョン。最後に、それと Ethereum との結合は非常に強力です。 緩い; Ethereum 側でのアクションは必要ありません。 2 つの間のトラストレスなトランザクション転送を有効にする ネットワーク。 つまり、Casper/Ethereum 2.0 および Polkadot いくつかのつかの間の類似点を共有しますが、私たちは彼らの最終目標を信じています 実質的に異なっており、競合するのではなく、 2 つのプロトコルは最終的には共存する可能性があります。 予見可能な将来にわたって相互に有益な関係を維持します。
Résumé
Polkadot est une multi-chaîne hétérogène évolutive. Ceci signifie que contrairement aux implémentations précédentes de blockchain qui se sont concentrés sur la fourniture d'une chaîne unique de différents degrés de généralité sur les applications potentielles, Polkadot lui-même est conçu pour fournir aucune fonctionnalité d’application inhérente. Au lieu de cela, Polkadot fournit le fondement « chaîne relais » sur laquelle un grand nombre de données validables, des structures de données dynamiques globalement cohérentes peuvent être hébergées côte à côte. Nous appelons ces structures de données « parallélisées » chaînes ou parachaines, bien qu'il n'y ait pas de besoin spécifique de ils doivent être de nature blockchain. En d'autres termes, Polkadot peut être considéré comme équivalent à un ensemble de chaînes indépendantes (par exemple l'ensemble contenant Ethereum, Ethereum Classic, Namecoin et Bitcoin) sauf deux points très importants : • Sécurité mutualisée ; • Transactabilité inter-chaînes sans confiance. Ces points sont la raison pour laquelle nous considérons Polkadot comme étant « évolutif ». En principe, un problème à déployer sur Polkadot peut être considérablement parallélisé (évolué) sur un grand nombre de parachaines. Puisque tous les aspects de chacun la parachain peut être conduite en parallèle par un segment différent du réseau Polkadot, le système a une certaine capacité à l'échelle. Polkadot fournit un élément plutôt simple de 3par opposition à un ancrage à sens unique qui consiste essentiellement à détruire les token dans une chaîne pour créer des token dans une autre sans que mécanisme pour faire l'inverse afin de récupérer les token d'originePOLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 4 infrastructure laissant une grande partie de la complexité à résoudre au niveau du middleware. Il s'agit d'une décision consciente destinée à réduire les risques de développement, permettant au logiciel requis à développer dans un court laps de temps et avec un bon niveau de confiance quant à sa sécurité et robustesse. 3.1. La philosophie de Polkadot. Polkadot devrait fournir une base solide comme le roc sur laquelle construire la prochaine vague de systèmes de consensus, tout au long le spectre des risques des conceptions matures capables de production aux idées naissantes. En offrant de solides garanties en matière de sécurité, d'isolement et de communication, Polkadot peut permettre parachains pour choisir eux-mêmes parmi une gamme de propriétés. En effet, nous prévoyons diverses blockchain expérimentales poussant les propriétés de ce qui pourrait être considéré comme raisonnable. aujourd'hui. Nous voyons des conservateurs, chaînes à haute valeur similaires à Bitcoin ou Z-cash [20] coexistant avec des valeurs de moindre valeur « chaînes thématiques » (tel le marketing, si amusant) et réseaux de test avec des frais nuls ou quasi nuls. Nous voyons entièrement crypté, « sombres », des chaînes de consortium opérant aux côtés – et même fournir des services à des chaînes hautement fonctionnelles et ouvertes comme ceux comme Ethereum. Nous voyons de nouvelles expériences Chaînes basées sur des machines virtuelles telles qu'un wasm subjectif chargé en temps chaîne utilisée comme moyen d'externalisation de problèmes de calcul difficiles à partir d'une chaîne de type Ethereum plus mature ou une chaîne de type Bitcoin plus restreinte. Pour gérer les mises à niveau de la chaîne, Polkadot sera intrinsèquement soutenir une sorte de structure de gouvernance, probablement basée sur les systèmes politiques stables existants et ayant un aspect bicaméral similaire au Conseil du Livre Jaune [24]. Comme l'autorité ultime, les détenteurs sous-jacents de token jalonnables auraient un contrôle « référendaire ». Pour refléter les attentes des utilisateurs besoin de développement mais le besoin de légitimité des développeurs, nous nous attendons à ce qu'une direction raisonnable soit de se former les deux chambres d’un comité « usagers » (composé de cautionnés validators) et un comité « technique » composé de grands clients développeurs et acteurs de l’écosystème. Le un corps de détenteurs de token conserverait la légitimité ultime et formerait une majorité qualifiée pour augmenter, reparamétrer, remplacer ou dissoudre cette structure, ce que nous ne doutez pas de la nécessité éventuelle de : selon les mots de Twain « Les gouvernements et les couches doivent être changés souvent, et pour la même raison ». Alors que le reparamétrage est généralement simple à organiser dans le cadre d'un mécanisme de consensus plus large, des changements plus qualitatifs tels que le remplacement et l'augmentation seraient nécessaires. il faudra probablement soit des « décrets souples » non automatisés (par ex. par la canonisation d'un numéro de bloc et le hash d'un document précisant formellement le nouveau protocole) ou nécessiter que le mécanisme de consensus principal contienne un langage suffisamment riche pour décrire n’importe quel aspect de lui-même qui devra peut-être changer. Ce dernier est un objectif éventuel, cependant, les premiers sont plus susceptibles d'être choisis afin de faciliter un calendrier de développement raisonnable. Les principes fondamentaux de Polkadot et les règles dans lesquelles nous évaluons que toutes les décisions de conception sont : Minimal : Polkadot doit avoir le moins de fonctionnalités possible. Simple : aucune complexité supplémentaire ne devrait être présente dans le protocole de base que ce qui peut raisonnablement être déchargé dans le middleware, placé à travers un parachain ou introduit dans une optimisation ultérieure. Général : pas d'exigence, de contrainte inutile ou une limitation devrait être imposée aux parachaines ; Polkadot devrait être un banc d'essai pour le développement d'un système de consensus qui peut être optimisé grâce à rendre le modèle dans lequel les extensions s'intègrent aussi abstrait que possible. Robuste : Polkadot devrait fournir fondamentalement couche de base stable. Outre la solidité économique, cela signifie également décentraliser pour minimiser les vecteurs d’attaques à haute récompense.
まとめ
Polkadot は、スケーラブルな異種マルチチェーンです。これ 以前の blockchain 実装とは異なることを意味します さまざまなチェーンを単一チェーンで提供することに重点を置いています。 潜在的なアプリケーションに対する一般性の度合い、Polkadot それ自体は、アプリケーション固有の機能をまったく提供しないように設計されています。 むしろ、Polkadot が基盤を提供します 多数の検証可能な「リレーチェーン」、 グローバルに一貫性のある動的データ構造をホストできる 並んで。これらのデータ構造を「並列化」と呼びます。 チェーンまたはパラチェーン。ただし、特に必要なわけではありません。 それらは本質的にblockchainであると考えられます。 言い換えれば、Polkadot は独立したチェーンのセット (例: Ethereum、Ethereum Classic、Namecoin、および Bitcoin)、2 つの非常に重要な点を除きます。 • プールされたセキュリティ。 • トラストフリーのチェーン間取引可能性。 これらの点が、Polkadot が「スケーラブル」であると考える理由です。原則として、Polkadot にデプロイされる問題は、実質的に並列化、スケールアウトすることができます。 多数のパラチェーン。それぞれのあらゆる側面から、 パラチェーンは Polkadot ネットワークの異なるセグメントによって並行して実行される可能性があり、システムには何らかの機能があります スケールするために。 Polkadot は、かなり必要最低限の部分を提供します。 3一方向ペグとは対照的に、基本的に 1 つのチェーン内の token を破棄して、別のチェーンに token を作成します。 元の token を回復するために逆の処理を行うメカニズムPOLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 4 インフラストラクチャの複雑さの多くはミドルウェア レベルで解決される必要があります。これは開発リスクを軽減することを目的とした意識的な決定であり、 必要なソフトウェアを短期間で開発する必要がある そしてそのセキュリティには十分な自信があり、 堅牢性。 3.1. Polkadot の哲学。 Polkadot すべきです 絶対的な強固な基盤を提供します。 コンセンサス システムの次の波を即座に構築する 生産可能な成熟した設計からのリスクスペクトル 初期のアイデアに。 Polkadot は、セキュリティ、分離、通信に対する強力な保証を提供することで、 パラチェーン自体をさまざまなプロパティから選択します。 実際、私たちは、賢明であると考えられるものの特性を押し上げるさまざまな実験的な blockchain を予見しています。 今日。 私たちは保守的だと考えていますが、 ~に似た高価値チェーン Bitcoin または Z-cash [20] が低額と共存 「テーマチェーン」(このようなマーケティング、非常に楽しい)とテストネット 手数料はゼロ、またはほぼゼロです。 完全に暗号化されていることがわかります。 「ダーク」、コンソーシアム チェーンが並行して運営され、さらには 高機能でオープンなチェーンへのサービスの提供 Ethereum など。実験的な新しいものを見る 主観的な時間課金型の Wasm などの VM ベースのチェーン チェーンは、より成熟したEthereumのようなチェーンから難しい計算問題をアウトソーシングする手段として使用されています または、より制限された Bitcoin のようなチェーン。 チェーン アップグレードを管理するために、Polkadot は本質的に 何らかのガバナンス構造をサポートしている可能性が高い 既存の安定した政治制度と、イエローペーパー評議会[24]と同様の二院制の側面を持っています。として 最終的な権威である、根底にあるステーカブルtoken保有者が「国民投票」のコントロールを有することになる。ユーザーの意見を反映するため 開発の必要性はあるが、開発者の正当性の必要性も考慮すると、合理的な方向性は、 両院の「ユーザー」委員会(以下で構成) validators) と「技術」委員会が設立されました 主要なクライアント開発者とエコシステムプレーヤーの数。 の token 保有者の集団は究極の正当性を維持し、この構造を強化、再パラメータ化、置き換え、または解体する超多数派を形成するでしょう。 トウェインの言葉を借りれば、最終的には次のことが必要になることを疑ってはなりません。 「おむつもおむつも頻繁に交換しなければなりませんし、 同じ理由です。」 通常、再パラメータ化は大規模なコンセンサスメカニズム内で調整するのは簡単ですが、置き換えや増強などのより質的な変更は、 おそらく、自動化されていない「軟令」(例: ブロック番号の正規化と 新しいプロトコルを正式に指定する文書の hash) あるいは、核となるコンセンサスメカニズムに、 それ自体のあらゆる側面を説明するのに十分な豊かな言語 変更する必要があるかもしれません。後者は最終的な目標ですが、 ただし、次の目的では前者が選択される可能性が高くなります。 合理的な開発スケジュールを促進します。 Polkadot の主な信条とその中のルール 私たちはすべての設計上の決定事項を次のように評価します。 最小限: Polkadot にはできる限り機能を少なくする必要があります。 シンプル: 追加の複雑さは存在すべきではありません 基本プロトコルでは合理的に考えられる以上の ミドルウェアにオフロードされ、 を通して置かれる パラチェーン、または後の最適化で導入されました。 一般: 不必要な要件や制約はありません またはパラチェーンに制限を設ける必要があります。 Polkadot は、次の方法で最適化できるコンセンサス システム開発のテスト ベッドである必要があります。 拡張機能が適合するモデルを可能な限り抽象化します。 堅牢: Polkadot は基本的に 安定したベースレイヤー。これは、経済の健全性に加えて、最小限に抑えるための分散化も意味します。 高額な報酬をもたらす攻撃のベクトル。
Participation à Polkadot
Il y a quatre rôles de base dans l'entretien d'un Polkadot réseau : assembleur, pêcheur, proposant et validator. Dans une implémentation possible de Polkadot, ce dernier rôle peut en fait se décomposer en deux rôles : validator de base et garant de disponibilité ; ceci est discuté dans la section 6.5.3. Assembleur Pêcheur Validateurs (ce groupe) Validateurs (autres groupes) approuve devient moniteurs rapports mauvais comportement à fournit un bloc candidats pour Proposant Figure 1. L'interaction entre le quatre rôles de Polkadot. 4.1. Validateurs. A validator est la charge la plus élevée et aide à sceller les nouveaux blocs sur le réseau Polkadot. Le rôle du validator dépend d’une liaison suffisamment élevée en cours de dépôt, bien que nous autorisons d'autres parties cautionnées à nommer un ou plusieurs validator pour agir en leur nom et en tant que une telle partie de l'obligation de validator n'appartient pas nécessairement à validator lui-même, mais plutôt à ceux-ci. proposants. Un validator doit exécuter une implémentation client de chaîne de relais avec une disponibilité et une bande passante élevées. A chaque bloc le nœud doit être prêt à accepter le rôle de ratification un nouveau bloc sur une parachain nommée. Ce processus consiste à recevoir, valider et republier les candidats blocs. La nomination est déterministe mais pratiquement imprévisible longtemps à l’avance. Puisque le validator ne peut pas on peut raisonnablement s'attendre à ce qu'il maintienne un système entièrement synchronisé base de données de toutes les parachaines, il est prévu que le validator désignera la tâche de concevoir une nouvelle suggestion bloc parachain à un tiers, connu sous le nom d’assembleur. Une fois que tous les nouveaux blocs de parachain ont été correctement ratifiés par leurs sous-groupes validator désignés, validators devra alors ratifier lui-même le bloc de la chaîne relais. Cela implique mettre à jour l'état des files d'attente de transactions (essentiellement déplacer les données de la file d'attente de sortie d'une parachain vers une autre file d'attente d'entrée de parachain), traitant les transactions de l’ensemble des transactions en chaîne relais ratifié et ratifiant le bloc final, y compris les changements finaux de parachain.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 5 A validator ne remplissant pas son devoir de trouver un consensus selon les règles de l’algorithme de consensus choisi, est puni. Pour les pannes initiales involontaires, cela passe par retenir la récompense du validator. Les échecs répétés entraînent la réduction de leur caution (par brûlage). Actions manifestement malveillantes telles que la double signature ou conspirer pour fournir un bloc invalide entraîne la perte de la totalité du lien (qui est partiellement brûlé mais en grande partie donné à l'informateur et aux acteurs honnêtes). Dans un certain sens, les validator sont similaires aux pools miniers du PoW actuel blockchains. 4.2. Les proposants. Un proposant est une partie prenante qui contribue au cautionnement d'un validator. Ils n'ont aucun rôle supplémentaire, sauf celui de placer du capital-risque et, tels pour signaler qu'ils font confiance à un validator particulier (ou ensemble de ceux-ci) à agir de manière responsable dans leur entretien du réseau. Ils bénéficient d'une majoration ou d'une réduction au prorata dans leur dépôt en fonction de la croissance de l’obligation à laquelle ils contribuent. Avec les assembleurs, les proposants sont ensuite dans certains sens similaire aux mineurs des réseaux PoW actuels. 4.3. Collateurs. Assembleurs de transactions (assembleurs en abrégé) sont des parties qui aident les validator à produire des blocs de parachaine. Ils maintiennent un « nœud complet » pour une parachain particulière ; ce qui signifie qu'ils conservent tous les éléments nécessaires informations pour pouvoir créer de nouveaux blocs et exécuter transactions de la même manière que les mineurs le font sur les PoW actuels blockchain. Dans des circonstances normales, ils rassemblera et exécutera des transactions pour créer un compte non scellé bloquer et le fournir, avec une connaissance nulle preuve, à un ou plusieurs validator actuellement responsables de proposant un bloc parachain. La nature précise de la relation entre les assembleurs, les proposants et les validator changera probablement au fil du temps. le temps. Dans un premier temps, nous attendons des assembleurs qu'ils travaillent en étroite collaboration avec validators, puisqu'il n'y en aura que quelques-uns (peut-être une seule) parachain(s) avec un faible volume de transactions. Le la mise en œuvre initiale du client inclura des RPC pour permettre un nœud de collecte de parachain pour fournir inconditionnellement un nœud (relaychain) validator avec une parachain dont la validité est prouvée bloquer. Comme le coût de maintenance d'une version synchronisée de toutes ces parachaines augmentent, nous nous attendons à voir des infrastructure en place qui aidera à séparer les obligations envers des partis indépendants et motivés par l’économie. À terme, nous nous attendons à voir des pools d'assembleurs rivaliser pour perçoivent le plus de frais de transaction. Ces assembleurs peuvent être engagés par contrat pour servir des validator particuliers pendant un certain temps en échange d'une part continue du produit de la récompense. Alternativement, les assembleurs « indépendants » peuvent simplement créer un marché offrant des blocs de parachain valides en échange d'une part compétitive de la récompense payable immédiatement. De même, les pools de proposants décentralisés permettraient à plusieurs participants liés pour coordonner et partager le devoir d’un validator. Cette capacité de mutualisation garantit une participation ouverte conduisant à un système plus décentralisé. 4.4. Pêcheurs. Contrairement aux deux autres partis actifs, les pêcheurs ne sont pas directement liés à la création des blocs processus. Ce sont plutôt des « chasseurs de primes » indépendants. motivé par une grande récompense unique. Justement à cause de En raison de l'existence des pêcheurs, nous nous attendons à ce que les cas de mauvaise conduite se produisent rarement, et lorsqu'ils se produisent uniquement à cause de la partie cautionnée étant négligente avec la sécurité de la clé secrète, plutôt que par intention malveillante. Le nom vient de la fréquence attendue de la récompense, des exigences minimales pour participer et du montant éventuel de la récompense. Les pêcheurs reçoivent leur récompense en fournissant en temps opportun la preuve que au moins une partie cautionnée a agi illégalement. Actions illégales inclure la signature de deux blocs chacun avec le même parent ratifié ou, dans le cas des parachains, aider à ratifier un invalide bloquer. Pour éviter la récompense excessive ou le compromis et utilisation illicite de la clé secrète d’une session, la récompense de base pour fournir un seul message signé illégalement de validator est minime. Cette récompense augmente asymptotiquement à mesure que des signatures illégales corroborantes d'autres validator sont à condition d'impliquer une véritable attaque. L'asymptote est définie à 66 % suite à notre affirmation de sécurité de base selon laquelle au moins les deux tiers des validator agissent avec bienveillance. Les pêcheurs ressemblent quelque peu aux « nœuds complets » dans systèmes blockchain actuels dont les ressources nécessaires sont relativement petits et l'engagement d'une disponibilité stable et la bande passante n'est pas nécessaire. Les pêcheurs diffèrent tellement d'autant qu'ils doivent déposer une petite caution.Ce lien empêche Sybil attaque en faisant perdre du temps et du calcul à validators ressources. Il est immédiatement retirable, probablement non plus que l'équivalent de quelques dollars et peut conduire à récolter une lourde récompense en repérant un mauvais comportement validator.
Polkadot への参加
Polkadot の維持には 4 つの基本的な役割があります。 ネットワーク: 照合者、漁師、指名者、validator。で Polkadot の実装可能な 1 つ、後者の役割 実際には、基本的な validator と可用性の保証という 2 つの役割に分類できます。これについてはセクションで説明します 6.5.3. コレーター 漁師 バリデーター (このグループ) バリデーター (他のグループ) 承認する になる モニター レポート 悪い に対する行動 ブロックを提供します 候補者 のために 推薦者 図 1. 間の相互作用 Polkadot の 4 つの役割。 4.1.バリデーター。 validator は最高料金であり、 Polkadot ネットワーク上の新しいブロックを封印するのに役立ちます。 validator の役割は、十分に高い結合力に依存します ただし、他の保税当事者に預けられることは許可されています。 彼らのために行動する 1 人以上の validator を指名し、 validator の債券のそのような一部は、必ずしも validator 自体が所有しているわけではなく、これらの者が所有している可能性があります。 推薦者。 validator は、高可用性と帯域幅を備えたリレー チェーン クライアント実装を実行する必要があります。各ブロックで ノードは批准の役割を受け入れる準備ができていなければなりません 指定されたパラチェーン上の新しいブロック。 このプロセス 候補者の受信、検証、再公開が含まれます ブロック。指名は決定的ですが、事前に予測することは事実上不可能です。 validator はできないため、 完全な同期を維持することが合理的に期待される すべてのパラチェーンのデータベースを作成するには、validator が提案された新しいパラチェーンを考案するタスクを指名することが期待されます。 コレーターとして知られるサードパーティへのパラチェーン ブロック。 すべての新しいパラチェーン ブロックが、指定された validator サブグループ、validator によって適切に承認されると、 その後、リレーチェーンブロック自体を承認する必要があります。これには、 トランザクションキューの状態を更新する(本質的には パラチェーンの出力キューから別の出力キューにデータを移動する パラチェーンの入力キュー)、トランザクションを処理します。 承認されたリレーチェーントランザクションセットと承認 最終ブロック(最後のパラチェーン変更を含む)。POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 5 validator は合意を見つける義務を果たしていない 私たちが選択したコンセンサスアルゴリズムのルールの下では罰せられます。初期の意図しない障害の場合、これは次のとおりです。 validator の報酬を保留します。失敗が繰り返されると、セキュリティ保証金が (焼き付けによって) 減少します。二重署名や 共謀して無効なブロックを提供すると、 債券全体(部分的には燃えていますが、ほとんどが残っています) 情報提供者と誠実な関係者に)。 ある意味、validator はマイニング プールに似ています。 現在の PoW blockchain 件。 4.2.推薦者。指名者は利害関係者です validator の保証金に貢献した人。彼らは リスク資本を投入する以外に追加の役割はありません。 特定の validator (または のメンテナンスにおいて責任を持って行動すること。 ネットワーク。 比例配分された増額または減額が受けられます 債券の成長に応じて預金に入金されます。 彼らは貢献します。 照合者と合わせて、次に、推薦者もいくつかいます。 現在のPoWネットワークのマイナーと同じ感覚です。 4.3.照合者。取引照合者(略して照合者) validator が有効なものを作成するのを支援する当事者です。 パラチェーンブロック。彼らは特定のパラチェーンの「フルノード」を維持します。つまり、必要なものはすべて保持されます 新しいブロックを作成して実行できるようにするための情報 現在の PoW blockchain に対してマイナーが行うのとほぼ同じ方法でトランザクションを実行できます。通常の状況では、彼らは、 トランザクションを照合して実行し、封印されていないものを作成します をブロックし、ゼロ知識とともに提供する 現在責任を負っている 1 人以上の validator に証拠を提出します。 パラチェーンブロックを提案しています。 照合者、推薦者、validator 間の関係の正確な性質は変わる可能性があります。 時間。当初は、照合者が非常に緊密に連携することが期待されます validators は数が少ないため (おそらく 1 つだけ)トランザクション量が少ないパラチェーン。の 初期のクライアント実装には、 パラチェーン コレーター ノードは、(リレーチェーン) validator ノードに有効なパラチェーンを無条件に提供します ブロック。 同期バージョンを維持するコストとして このようなパラチェーンがすべて増加すると、さらに多くのパラチェーンが発生すると予想されます。 インフラを整備することで、 独立した経済的動機を持つ当事者に対する義務。 最終的には、 最も多くの取引手数料を徴収します。このような照合者は、報酬収益の継続的な分配のために、一定期間にわたって特定の validator を提供する契約を結ぶ可能性があります。 あるいは、「フリーランス」の照合者が単純に すぐに支払われる報酬の競争力のあるシェアと引き換えに、有効なパラチェーンブロックを提供する市場。同様に、分散型の推薦者プールでは、複数の推薦者プールが許可されます。 結束した参加者が調整し、責任を共有する validator。このプール機能により、オープンな参加が保証されます より分散化されたシステムにつながります。 4.4.漁師さんたち。他の2つのアクティブなパーティーとは異なり、 漁師はブロックオーサリングに直接関係していない プロセス。むしろ彼らは独立した「賞金稼ぎ」です。 高額な 1 回限りの報酬が動機です。 まさに、 漁師の存在を考えると、不正行為が起こることはめったになく、不正行為が起こるのは次のような場合のみであると予想されます。 結合した当事者が秘密鍵のセキュリティに不注意である、 悪意によるものではなく。名前が来る 予想される報酬の頻度、参加するための最小要件、および最終的な報酬のサイズから構成されます。 漁師は、タイムリーに次のことを証明することで報酬を得ることができます。 少なくとも一方の保税当事者が違法行為を行った。違法行為 それぞれ同じ承認された親を持つ 2 つのブロックに署名すること、またはパラチェーンの場合は無効なブロックの承認を支援することが含まれます。 ブロック。過剰な報酬や妥協を防ぐため、 セッションの秘密鍵の不正使用、基本報酬 単一の validator の違法に署名されたメッセージを提供することは、 最小限。この報酬は、増加するにつれて漸近的に増加します 他のvalidatorからの違法な署名を裏付けるものは、 本物の攻撃を暗示するもの。漸近線が設定されています 少なくとも次の基本的なセキュリティ主張に従って 66% validator の 3 分の 2 は慈善的に行動します。 フィッシャーマンは、以下の「フルノード」に似ています。 リソースが必要とする現在の blockchain システム 比較的小規模であり、安定した稼働時間を約束します 帯域幅も必要ありません。漁師の違いはこうだ 少額の保証金を支払わなければならないのと同じくらい。この絆は、 validator秒の時間と計算を無駄にするシビル攻撃 リソース。すぐに撤回可能ですが、おそらくそうではありません 数ドル相当以上の金額がかかる可能性があります 不正行為を発見することで多額の報酬を得る validator。
Aperçu de la conception
Cette section a pour but de donner un bref aperçu de système dans son ensemble. Une exploration plus approfondie du Le système est donné dans la section qui le suit. 5.1. Consensus. Sur la chaîne-relais, Polkadot réalise consensus de bas niveau sur un ensemble de critères valables mutuellement convenus bloque grâce à un algorithme byzantin asynchrone moderne de tolérance aux pannes (BFT). L'algorithme s'inspirera par le simple Tendermint [11] et le nettement plus impliqué HoneyBadgerBFT [14]. Ce dernier fournit un consensus efficace et tolérant aux pannes sur un infrastructure de réseau défectueuse, étant donné un ensemble d’autorités pour la plupart inoffensives ou validators. Pour un réseau de type preuve d'autorité (PoA), cela seul serait suffisant, mais Polkadot est supposé être également déployable en réseau dans un environnement entièrement ouvert et public situation sans organisation particulière ni confiance autorité nécessaire à son entretien. En tant que tel, nous avons besoin d'un moyens de déterminer un ensemble de validator et d'inciter eux pour être honnête. Pour cela, nous utilisons une sélection basée sur PoS critères. 5.2. Prouver l'enjeu. Nous supposons que le réseau aura des moyens de mesurer le montant de la « mise » n'importe quel compte particulier a. Pour faciliter la comparaison avec systèmes préexistants, nous appellerons l'unité de mesure « tokens ». Malheureusement, le terme est loin d'être idéal pour un un certain nombre de raisons, notamment le fait qu'il s'agit simplement d'un scalaire valeur associée à un compte, il n'y a aucune notion de individualité. Nous imaginons que les validator soient élus, rarement (au plus une fois par jour mais peut-être aussi rarement qu'une fois par trimestre), via un système de preuve de participation nommée (NPoS). L'incitation peut se faire par le biais d'une allocation au prorata dePOLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 6 Relais chaîne Essaim de validateurs (chacun coloré par son parachaîne désignée) Transaction (soumis par acteur externe) Parachaine pont Parachaine virtuelle (par exemple Ethereum) Parachaine Parachaine files d'attente et E/S Transactions propagées Bloquer la soumission des candidats 2ème commande Chaîne relais Communauté Parachain Compte Transaction entrante Transaction sortante Transactions inter-chaînes (géré par validators) Assembleur Bloc propagé Pêcheur Figure 2. Un schéma récapitulatif du système Polkadot. Cela montre les assembleurs collectant et propageant les transactions des utilisateurs, ainsi que la propagation des candidats au bloc aux pêcheurs et aux validator. C'est aussi montre comment un compte peut poster une transaction qui est effectuée depuis sa parachain, via la chaine-relais et ensuite dans une autre parachain où cela peut être interprété comme une transaction sur un compte là-bas. fonds provenant d'une expansion de base token (jusqu'à 100 % par an, mais plus probablement autour de 10 %), ainsi que tous les frais de transaction perçus. Alors que l’expansion de la base monétaire conduit généralement à l’inflation, puisque tous les propriétaires de token aurait une chance équitable de participer, aucun titulaire de token n'aurait besoin de subir une réduction de la valeur de son avoirs au fil du temps, à condition qu'ils soient heureux de prendre un rôle dans le mécanisme de consensus. Une proportion particulière des token seraient ciblés pour le processus staking ; le l’expansion effective de la base token serait ajustée grâce à un mécanisme basé sur le marché pour atteindre cet objectif. Les validateurs sont fortement liés par leurs enjeux ; sortir Les obligations des validator restent en place longtemps après la fin des fonctions des validator (peut-être environ 3 mois). Ce long la période de liquidation des obligations permet à une mauvaise conduite future d'être sanctionné jusqu'au contrôle périodique de la chaîne. Une mauvaise conduite entraîne des sanctions, telles qu'une réduction de récompense ou, dans les cas qui compromettent intentionnellement la l'intégrité du réseau, le validator perdant tout ou partie de son l'enjeu à d'autres validators, informateurs ou parties prenantes dans son ensemble (par brûlage). Par exemple, un validator qui tente de ratifier les deux branches d'une fourchette (parfois connue sous le nom d’attaque « à courte portée ») peut être identifiée et puni de cette dernière manière. Les attaques à longue portée « sans enjeu »4 sont contournées grâce à un simple « point de contrôle » qui empêche une dangereuse réorganisation en chaîne de plus d’un profondeur de chaîne particulière. Pour garantir la synchronisation des clients ne peuvent pas se laisser tromper par la mauvaise chaîne, régulier des « hard forks » se produiront (au plus pendant la même période du liquidation des obligations de validators) qui code en dur le bloc de point de contrôle récent hashes dans les clients. Cela s’accorde bien avec une mesure supplémentaire de réduction de l’empreinte de « longueur de chaîne finie » ou réinitialisation périodique du bloc de genèse. 5.3. Parachains et assembleurs. Chaque parachain obtient des conditions de sécurité similaires à celles de la chaîne relais : le les en-têtes des parachains sont scellés dans le bloc de chaîne de relais s’assurer qu’aucune réorganisation, ou « double dépense », n’est possible après confirmation. Il s’agit d’une garantie de sécurité similaire à celle offerte par les side-chains et la fusion de Bitcoin. Polkadot, cependant, fournit également de fortes garanties que les transitions d'état des parachains sont valides. Ceci cela se produit lorsque l'ensemble des validator est segmenté de manière cryptographique aléatoire en sous-ensembles ; un sous-ensemble par parachain, les sous-ensembles potentiellement différents par bloc. Ceci la configuration implique généralement que les temps de blocage des parachains seront être au moins aussi longue que celle de la chaîne-relais. Le spécifique les moyens permettant de déterminer le partage ne relèvent pas du champ d'application 4Une telle attaque est le moment où l’adversaire forge une chaîne historique entièrement nouvelle à partir du bloc de genèse. En contrôlant un part de participation relativement insignifiante au départ, ils sont capables d'augmenter progressivement leur part de participation par rapport à tous les autres parties prenantes car ils sont les seuls participants actifs à leur histoire alternative. Puisqu'il n'existe aucune limitation physique intrinsèque à la création de blocs (contrairement à PoW où une énergie de calcul assez réelle doit être dépensée), ils sont capables de créer une chaîne plus longue que la chaîne réelle dans un une période de temps relativement courte et en fera potentiellement la plus longue et la meilleure, reprenant l'état canonique du réseau.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 7 de ce document mais serait probablement basé soit sur un cadre de validation-révélation similaire au RanDAO [19] ou utiliser les données combinées des blocs précédents de chaque parachain sous un hash cryptographiquement sécurisé. De tels sous-ensembles de validator sont nécessaires pour fournir un candidat de bloc parachain qui est garanti valide (sur peine de confiscation de la caution). La validité s'articule autour de deux points importants; d’abord qu’il est intrinsèquement valable – que toutes les transitions d'état ont été exécutées fidèlement et que tout les données externes référencées (c'est-à-dire les transactions) sont valables pour l'inclusion. Deuxièmement, que toute donnée extrinsèque à son Le candidat, comme ces transactions externes, a une disponibilité suffisamment élevée pour que les participants puissent téléchargez-le et exécutez le bloc manuellement.5 Les validateurs peuvent fournir uniquement un bloc « nul » ne contenant aucune donnée de « transactions » externe, mais peuvent courir le risque d'obtenir une récompense réduite s'ils le font. Ils travaillent aux côtés un protocole de potins en parachain avec des assembleurs – des particuliers qui rassemblent les transactions en blocs et fournissent une preuve non interactive et sans connaissance que le bloc constitue un enfant valide de son parent (et prend toute transaction frais pour leurs ennuis). Il appartient aux protocoles de parachain de spécifier les leurs moyens de prévention du spam : il n'existe pas de notion fondamentale de « mesure des ressources de calcul » ou de « frais de transaction » imposée par la chaîne-relais. Il n'y a pas non plus d'application directe à ce sujet par le protocole de chaîne de relais (bien qu'il Il est peu probable que les parties prenantes choisissent d'adopter une parachain qui ne fournissait pas un mécanisme décent). Il s’agit d’un clin d’œil explicite à la possibilité de chaînes contrairement à Ethereum, par ex. une chaîne de type Bitcoin qui a un modèle de frais beaucoup plus simple ou un autre modèle de prévention du spam, qui n'a pas encore été proposé. La chaîne de relais de Polkadot elle-même existera probablement en tant que Comptes et chaîne d'état de type Ethereum, éventuellement un dérivé EVM. Puisque les nœuds de la chaîne relais devront effectuer d'autres traitements substantiels, débit de transaction sera minimisé en partie grâce à des frais de transaction importants et, si nos modèles de recherche l'exigent, une limite de taille de bloc. 5.4. Communication inter-chaînes. Le dernier ingrédient essentiel de Polkadot est la communication inter-chaînes. Depuis les parachains peuvent avoir une sorte de canal d'information entre elles, nous nous permettons de considérer Polkadot un multi-chaîne évolutive. Dans le cas de Polkadot, la communication est aussi simple que possible : des transactions s'exécutant dans un les parachain sont (selon la logique de cette chaîne) capables de effectuer l'envoi d'une transaction dans une deuxième parachain ou, potentiellement, la chaîne relais. Comme les transactions externes sur les blockchain de production, ils sont entièrement asynchrones et il n'y a aucune capacité intrinsèque pour eux de rendre quoi que ce soit type d'information jusqu'à son origine. Destination : obtient données antérieures les validators du bloc. Le compte reçoit la publication : entrée supprimée de entrée Merkle tree Le compte envoie le message : entrée placée dans sortie Merkle tree pour destination parachaine sortie Source : partages données avec le bloc suivant validators preuve de courrier stockée dans sortie de parachain Merkle arbre référence routé placée dans les parachaines de destination entrée Merkle tree entrée Figure 3. Un schéma de base montrant les principales parties du routage pour posté transactions (« posts »). Pour garantir une complexité de mise en œuvre minimale, un minimum risque et minime camisole de force de avenir architectures parachain, ces transactions interchaînes sont en fait impossible à distinguer des transactions standard signées en externe. La transaction a un segment d'origine, offrant la possibilité d'identifier une parachain, et une adresse qui peut être de taille arbitraire. Contrairement aux systèmes actuels courants tels que Bitcoin et Ethereum, les transactions inter-chaînes ne s'accompagnent d'aucun type de « paiement » de frais associés ; tout paiement de ce type doit être géré via une logique de négociation sur les parachains source et de destination. Un système tel que celui proposé pour La version Serenity de Ethereum [7] serait un moyen simple de gérer un tel paiement de ressources inter-chaînes, bien que nous supposons que d’autres pourraient apparaître en temps voulu. Les transactions interchaînes sont résolues à l'aide d'un simple mécanisme de file d'attente basé sur un Merkle tree pour garantir fidélité. C'est la tâche des mainteneurs de la chaîne de relais de déplacer les transactions sur la file d'attente de sortie d'une parachain dans la file d’attente d’entrée de la parachain de destination. Le les transactions passées sont référencées sur la chaîne de relais, mais ne sont pas pertinentestransactions en chaîne elles-mêmes. Pour empêcher une parachain de spammer une autre parachain avec transactions, pour qu'une transaction soit envoyée, il est nécessaire que la file d'attente d'entrée de la destination ne soit pas trop grande à l'heure de fin du bloc précédent. Si l'entrée est trop grande après le traitement des blocs, elle est alors considérée comme « saturée » et aucune transaction ne peut être acheminée vers dans les blocs suivants jusqu'à ce qu'il soit réduit en dessous du limite. Ces files d'attente sont administrées sur la chaîne-relais permettre aux parachains de déterminer la saturation de chacun statut ; de cette façon, une tentative infructueuse de publier une transaction vers une destination bloquée peut être signalé de manière synchrone. (Mais comme aucun chemin de retour n'existe, si une transaction secondaire échouait pour cette raison, elle ne pourrait pas être signalée. à l'appelant d'origine et à d'autres moyens de récupération devrait avoir lieu.) 5.5. Polkadot et Ethereum. En raison de l'exhaustivité de Turing de Ethereum, nous pensons qu'il existe de nombreuses possibilités pour Polkadot et Ethereum d'être interopérables avec les uns les autres, du moins dans certaines limites de sécurité facilement déductibles. En bref, nous envisageons que les transactions de Polkadot peut être signé par validators puis introduit dans 5Une telle tâche pourrait être partagée entre les validator ou pourrait devenir la tâche désignée d'un ensemble de validator fortement liés, connu sous le nom de garants de disponibilité.
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 8 Ethereum où ils peuvent être interprétés et mis en œuvre par un contrat de transmission de transactions. Dans l'autre sens, nous prévoyons l'utilisation de journaux (événements) spécialement formatés provenant d’un « contrat de rupture » pour permettre une vérification rapide qu’un message particulier doit être transmis. 5.5.1. Polkadot à Ethereum. Grâce au choix d'un BFT mécanisme de consensus avec validators formés à partir d'un ensemble de parties prenantes déterminées par un vote d'approbation mécanisme, nous sommes en mesure d’obtenir un consensus sûr avec un changement peu fréquent et nombre modeste de validator. Dans un système avec un total de 144 validators, un temps de bloc de 4 secondes et une finalité de 900 blocs (permettant des attaques malveillantes) les comportements tels que les doubles votes doivent être signalés et punis et réparé), la validité d'un blocage peut raisonnablement être est considérée comme prouvée par seulement 97 signatures (les deux tiers de 144 plus une) et une période de vérification ultérieure de 60 minutes au cours de laquelle aucune contestation n'est déposée. Ethereum est en mesure d'héberger un « contrat de rodage » qui peut maintenir les 144 signataires et être contrôlé par eux. Étant donné que la récupération de la signature numérique à courbe elliptique (ECDSA) ne nécessite que 3 000 gaz sous le EVM, et depuis nous voudrions probablement que la validation n'ait lieu que sur un majorité qualifiée de validator (plutôt que l'unanimité totale), le coût de base de Ethereum confirmant qu'une instruction a été correctement validé car provenant du réseau Polkadot ne représenterait pas plus de 300 000 gaz, soit seulement 6 % du la limite totale de gaz du bloc à 5,5 M. Augmenter le nombre de validator (ce qui serait nécessaire pour faire face aux des dizaines de chaînes) augmente inévitablement ce coût, mais on s'attend généralement à ce que la bande passante de transaction de Ethereum augmente au fil du temps à mesure que la technologie évolue et les infrastructures s’améliorent. Avec le fait que non tous les validator doivent être impliqués (par exemple, seul le niveau le plus élevé les validator jalonnés peuvent être sollicités pour une telle tâche), le les limites de ce mécanisme s’étendent raisonnablement bien. En supposant une rotation quotidienne de ces validator (ce qui est assez conservateur (une fréquence hebdomadaire ou même mensuelle peut être acceptable), alors le coût pour le réseau de maintenance ce pont de transfert Ethereum serait d'environ 540 000 gaz par jour ou, aux prix actuels du gaz, 45 $ par an. Une transaction de base transmise seule via le pont coûterait environ 0,11 $ ; le calcul supplémentaire du contrat coûterait plus, bien sûr. En tamponnant et en regroupant les transactions ensemble, les coûts d'autorisation d'effraction peuvent facilement être partagé, réduisant considérablement le coût par transaction ; si 20 transactions étaient nécessaires avant la transmission, alors le coût de transmission d'une transaction de base tomberait à environ 0,01 $. Une alternative intéressante et moins coûteuse à ce modèle de contrat multisignature serait d’utiliser des signatures à seuil afin d’obtenir la sémantique de propriété multilatérale. Alors que les schémas de signature à seuil pour l'ECDSA sont coûteux en calcul, ceux des autres schémas comme les signatures Schnorr sont très raisonnables. Ethereum envisage d'introduire des primitives qui rendraient un tel des schémas bon marché à utiliser dans le prochain hardfork de Metropolis. Si un tel moyen pouvait être utilisé, les coûts du gaz pour transférer une transaction Polkadot vers le Ethereum le réseau serait considérablement réduit à un niveau proche de zéro frais généraux qui s'ajoutent aux coûts de base liés à la validation du signature et exécution de la transaction sous-jacente. Dans ce modèle, les nœuds validator de Polkadot auraient faire peu d'autre que signer des messages. Pour que les transactions soient réellement acheminées sur le réseau Ethereum, nous supposons que les validator eux-mêmes résideraient également sur le réseau Ethereum ou, plus probablement, que de petites primes être proposé au premier acteur qui transmet le message sur au réseau (la prime pourrait trivialement être versée au initiateur de la transaction). 5.5.2. Ethereum à Polkadot. Faire en sorte que les transactions soient transmis de Ethereum à Polkadot utilise la simple notion de logs. Lorsqu'un contrat Ethereum souhaite envoyer une transaction vers une parachain particulière de Polkadot, il suffit de faire appel à un « contrat de rupture » spécial. Le contrat de rupture accepterait tout paiement qui pourrait être requis et émettre une instruction de journalisation afin que son existence puisse être prouvée par une preuve Merkle et une affirmation que l'en-tête du bloc correspondant est valide et canonique. Parmi ces deux dernières conditions, la validité est peut-être la le plus simple à prouver. En principe, la seule exigence estpour chaque nœud Polkadot nécessitant la preuve (c'est-à-dire des nœuds validator désignés) pour exécuter une instance entièrement synchronisée d'un nœud Ethereum standard. Malheureusement, il s’agit en soi d’une dépendance assez lourde. Un plus méthode légère consisterait à utiliser une preuve simple que le l'en-tête a été évalué correctement en fournissant uniquement le une partie du test d'état de Ethereum nécessaire pour s'exécuter correctement les transactions du bloc et vérifier que les logs (contenus dans le reçu de bloc) sont valides. Un tel « SPV-like »6 les preuves peuvent pourtant nécessiter une quantité substantielle d'informations ; commodément, ils ne seraient généralement pas nécessaires à tous : un système de liaison à l'intérieur de Polkadot permettrait les tiers à soumettre des en-têtes au risque de perdre leur caution si un autre tiers (tel qu’un « pêcheur », voir 6.2.3) fournit la preuve que l’en-tête n’est pas valide (en particulier que la racine de l'État ou la racine du reçu étaient des imposteurs). Sur un réseau PoW non finalisant comme Ethereum, le la canonicité est impossible à prouver de manière concluante. Pour résoudre ce problème, les applications qui tentent de s'appuyer sur n'importe quel type de cause à effet dépendant d’une chaîne, attendez un certain nombre de « confirmations » ou jusqu’à ce que la transaction dépendante soit à un certain point. profondeur particulière au sein de la chaîne. Le Ethereum, ceci la profondeur varie de 1 bloc pour les transactions les moins précieuses sans problème de réseau connu à 1 200 blocs comme c'était le cas ce fut le cas lors de la première version de Frontier pour les échanges. Sur le réseau stable « Homestead », ce chiffre se situe à 120 blocs pour la plupart des échanges, et nous prendrions probablement un paramètre similaire. Alors nous peut imaginer notre Côté Polkadot Ethereuminterface pour avoir quelques fonctions simples : pouvoir acceptez un nouvel en-tête du réseau Ethereum et validez le PoW, pour pouvoir accepter une preuve qu'un un journal particulier a été émis par le contrat de rupture côté Ethereum pour un en-tête de profondeur suffisante (et vers l'avant le message correspondant dans Polkadot) et enfin être capable d'accepter des preuves qu'un document précédemment accepté mais l'en-tête non encore adopté contient une racine de reçu non valide. Pour obtenir réellement les données d'en-tête Ethereum elles-mêmes (et toutes preuves SPV ou réfutations de validité/canonicité) dans le réseau Polkadot, une incitation à la réexpédition 6SPV fait référence à la vérification simplifiée des paiements dans Bitcoin et décrit une méthode permettant aux clients de vérifier les transactions tout en ne conservant que une copie de tous les en-têtes de blocs de la plus longue chaîne PoW.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 9 des données sont nécessaires. Cela pourrait être aussi simple qu'un paiement (financé par les frais perçus du côté Ethereum) payé à toute personne capable de transmettre un bloc utile dont l'en-tête est valide. Les validateurs seraient appelés à conserver les informations relatives aux derniers milliers de blocs afin de être capable de gérer les forks, soit par des moyens protocolaires intrinsèques, soit par le biais d'un contrat maintenu sur le chaîne de relais. 5.6. Polkadot et Bitcoin. Bitcoin interopération présente un défi intéressant pour Polkadot : un soi-disant un « ancrage bidirectionnel » serait une infrastructure utile avoir du côté des deux réseaux. Cependant, en raison de les limites de Bitcoin, à condition qu'une telle cheville soit solidement une entreprise non triviale. Réaliser une transaction depuis Bitcoin à Polkadot peut en principe être réalisé avec un processus similaire à celui de Ethereum ; une « adresse en petits groupes » contrôlé d'une manière ou d'une autre par les Polkadot validator pourraient recevoir les token transférés (et les données envoyées avec eux). Les preuves SPV pourraient être fournies par des oracle incités et, accompagné d'une période de confirmation, une prime accordée pour identifier les blocs non canoniques impliquant la transaction a été « dépensé deux fois ». Tous les token alors possédés dans le « l'adresse de rupture » serait alors, en principe, contrôlée par ces mêmes validator pour une dispersion ultérieure. Le problème est cependant de savoir comment les dépôts peuvent être contrôlés en toute sécurité à partir d'un ensemble validator rotatif. Contrairement à Ethereum qui est capable de prendre des décisions arbitraires basées sur sur des combinaisons de signatures, Bitcoin est substantiellement plus limité, la plupart des clients n'acceptant que les transactions multisignatures avec un maximum de 3 parties. Étendre ce chiffre à 36, voire à des milliers comme on pourrait le souhaiter en fin de compte, est impossible dans le cadre du protocole actuel. Une option consiste à modifier le protocole Bitcoin pour activer une telle fonctionnalité, mais ce qu'on appelle des « hard forks » dans le Le monde Bitcoin est difficile à organiser à en juger par les tentatives récentes. Une possibilité est l'utilisation de signatures à seuil, schémas cryptographiques pour permettre à un public identifiable une seule fois clé pour être contrôlée efficacement par plusieurs « parties » secrètes dont tout ou partie doit être utilisé pour créer une signature valide. Malheureusement, les signatures de seuil sont compatibles avec l'ECDSA de Bitcoin sont coûteux en calcul créer et de complexité polynomiale. D'autres schémas tels a Les signatures Schnorr offrent des coûts bien inférieurs, mais le calendrier sur lequel ils peuvent être introduits dans le Bitcoin le protocole est incertain. Puisque la sécurité ultime des dépôts repose sur un certain nombre de validator liés, une autre option consiste à réduire les détenteurs de clés multi-signatures à seulement un nombre important sous-ensemble lié du total de validators tel que ce seuil les signatures deviennent réalisables (ou, au pire, les signatures natives de Bitcoin la multi-signature est possible). Cela réduit bien sûr le montant total des obligations qui pourraient être déduites à titre de réparations si les validator se comportaient illégalement, mais cela est une dégradation gracieuse, fixant simplement une limite supérieure de le montant des fonds qui peuvent circuler en toute sécurité entre le deux réseaux (ou encore, sur le % de pertes en cas d'attaque des validator réussissent). En tant que tel, nous pensons qu’il n’est pas irréaliste de placer une « parachain virtuelle » d’interopérabilité Bitcoin raisonnablement sécurisée. entre les deux réseaux, mais néanmoins un effort conséquent avec un calendrier incertain et très probablement exigeant la coopération des parties prenantes au sein de ce réseau.
設計の概要
このセクションは、概要を簡単に説明することを目的としています。 システム全体として。をさらに徹底的に調査すると、 システムについては、それに続くセクションで説明します。 5.1.コンセンサス。リレーチェーン上で、Polkadot は次のことを達成します。 相互に合意された有効なセットに関する低レベルの合意 最新の非同期ビザンチン フォールトトレラント (BFT) アルゴリズムを通じてブロックします。アルゴリズムがインスピレーションを受けます シンプルな Tendermint [11] とそれ以上の機能による HoneyBadgerBFT [14] が関与しています。後者は、 恣意的なものに対する効率的でフォールトトレラントな合意 ネットワーク インフラストラクチャに欠陥があり、ほとんど無害な一連の権限または validator が指定されています。 Proof-of-Authority (PoA) スタイルのネットワークの場合、これだけで で十分ですが、Polkadot は次のようになると考えられます。 完全にオープンでパブリックなネットワークとして展開することも可能 特定の組織や信頼できる組織がない状況 それを維持するために必要な権限。 したがって、 validator のセットを決定し、奨励する手段 正直に言うと彼らは。このために、PoS ベースの選択を利用します 基準。 5.2.賭け金を証明する。ネットワークが どれくらいの「賭け金」を計測する何らかの手段を持つだろう 特定のアカウントにはあります。 比較しやすいように、 既存のシステムでは、測定単位と呼びます。 「tokens」。残念ながら、この用語は理想的なものではありません。 理由はたくさんありますが、特に単にスカラーであるということは重要です アカウントに関連付けられた値、という概念はありません。 個性。 私たちは、validator 人が選出されるのはまれであると想像しています (せいぜい 1 日に 1 回ですが、おそらく四半期に 1 回ほどの頻度で行われます)、 指名プルーフ・オブ・ステーク (NPoS) スキームを通じて。インセンティブは、比例配分によって発生します。POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 6 リレー チェーン バリデーターの群れ (それぞれの色で色分けされています) 指定されたパラチェーン) トランザクション (提出者 外部俳優) パラチェーン 橋 仮想パラチェーン (例: Ethereum) パラチェーン パラチェーン キューと I/O 伝播されたトランザクション 候補者の提出をブロックする 2次注文 リレーチェーン パラチェーンコミュニティ アカウント インバウンドトランザクション アウトバウンドトランザクション インターチェーントランザクション (validators が管理) コレーター 伝播されたブロック 漁師 図 2. Polkadot システムの概要図。これは、照合者がユーザー トランザクションを収集して伝播すること、およびブロック候補を漁師と validator に伝播することを示しています。それも アカウントがリレーチェーンを介してパラチェーンから実行されるトランザクションを投稿する方法を示します そして、別のパラチェーンに移行し、そこのアカウントへのトランザクションとして解釈できます。 token のベース拡張からの資金 (最大 100%) 年間、ただし可能性としては約 10%) 徴収される取引手数料。マネタリーベースの拡大は通常インフレにつながりますが、token の所有者全員が 参加する際には公平な機会が与えられ、token所有者は、その価値の減少に苦しむ必要はありません。 彼らが喜んで取得した場合に限り、長期にわたる保有量 コンセンサスメカニズムにおける役割。特定の割合 token 個が staking プロセスの対象となります。の 実質的なtokenベースの拡張は、次のように調整されます。 この目標を達成するための市場ベースのメカニズム。 バリデーターは、その利害関係によって強い絆で結ばれています。終了します validator の保証は、validator の職務が終了した後も長期間 (おそらく約 3 か月) 維持されます。こんなに長い 債券清算期間により、将来の不正行為が可能になる チェーンの定期的なチェックポイントまで罰せられます。 不正行為があった場合には減給などの懲罰が科せられます。 報酬を与える場合、または意図的に侵害する場合 ネットワークの整合性が失われ、validator はその一部またはすべてを失います。 他のvalidator、情報提供者、または利害関係者への利害関係 全体として(燃焼を通じて)。たとえば、validator フォークの両方のブランチを承認しようとする人 (場合によっては 「短距離」攻撃として知られる)が特定される可能性があり、 後者の方法で処罰されます。 長距離の「何も関係のない」攻撃4は、単純な「チェックポイント」ラッチによって回避され、複数の危険なチェーンの再編成を防ぎます。 特定のチェーンの深さ。 新しく同期するクライアントを確実にするには 間違ったチェーンにだまされることはありません。 「ハードフォーク」は(せいぜい同時期に)発生するだろう。 validators の債券清算)、最近のチェックポイント ブロック hashes をクライアントにハードコーディングします。これは、「有限チェーン長」または「有限チェーン長」というさらなるフットプリント削減策とうまく機能します。 ジェネシスブロックの定期的なリセット。 5.3.パラチェーンとコレーター。各パラチェーンが取得するのは、 リレーチェーンに対する同様のセキュリティ アフォーダンス: の パラチェーンのヘッダーはリレーチェーンブロック内に密封されています 確認後は、組織再編や「二重支出」が不可能であることを保証します。これは、Bitcoin のサイドチェーンとマージマイニングによって提供されるものと同様のセキュリティ保証です。ただし、Polkadot は、パラチェーンの状態遷移が有効であるという強力な保証も提供します。これ validator のセットが暗号的にランダムにサブセットに分割されることによって発生します。 1 つあたり 1 つのサブセット パラチェーンでは、サブセットはブロックごとに異なる可能性があります。これ セットアップは通常、パラチェーンのブロック時間が 少なくともリレーチェーンの長さと同じ長さにしてください。具体的な 分割を決定する手段は範囲外です 4 このような攻撃では、敵はジェネシス ブロック以降、全く新しい歴史の連鎖を作り上げます。をコントロールすることで、 オフセットでの賭け金の割合は比較的微々たるものですが、他のすべての賭け金と比べて徐々に自分の賭け金の割合を増やすことができます。 利害関係者は、彼らの代替歴史の唯一の積極的な参加者であるためです。創造物には本質的な物理的制限が存在しないため、 (実際の計算エネルギーを費やす必要がある PoW とは異なり) のブロックで、実際のチェーンよりも長いチェーンを作成できます。 比較的短い期間であり、ネットワークの正規の状態を引き継ぎ、最長かつ最良となる可能性があります。POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 7 この文書の内容は次のいずれかに基づいている可能性がありますが、 RanDAO [19] に似た commit-reveal フレームワーク、または 各パラチェーンの前のブロックから結合されたデータを使用する 暗号的に安全な hash の下で。 validator のこのようなサブセットは、 有効性が保証されているパラチェーンブロック候補( 債券没収の痛み)。有効性は 2 を中心に展開します 重要な点。第一に、それは本質的に有効であるということ、 すべての状態遷移が忠実に実行され、すべてが 参照される外部データ (トランザクションなど) は含めることができます。第二に、外部データはすべて、 外部トランザクションなどの候補は十分に高い可用性を備えているため、参加者は次のことを行うことができます。 それをダウンロードし、ブロックを手動で実行します。5 バリデーターは、外部の「トランザクション」データを含まない「null」ブロックのみを提供する場合がありますが、提供すると報酬が減額されるリスクが生じる可能性があります。彼らは一緒に働きます 照合者 (個人) とのパラチェーン ゴシップ プロトコル トランザクションをブロックに照合し、そのブロックが親の有効な子を構成することを示す非対話型のゼロ知識証明を提供します (トランザクションを取得する) 彼らのトラブルに対する料金)。 独自の指定はパラチェーン プロトコルに委ねられます。 スパム防止手段: 「コンピューティング リソースの測定」または「トランザクション料金」という基本的な概念はありません。 リレーチェーンによって課せられます。また、リレーチェーンプロトコルによってこれを直接強制することはありません(ただし、 利害関係者が採用を選択する可能性は低い まともなメカニズムを提供していないパラチェーン)。 これは、これまでとは異なるチェーンの可能性に対する明確なうなずきです。 Ethereum、例: Bitcoin のようなチェーンは、はるかに単純な料金モデル、またはその他のまだ提案されていないスパム防止モデルを備えています。 Polkadot のリレー チェーン自体はおそらく Ethereum のようなアカウントと状態チェーン (おそらく EVM__ 派生)。リレーチェーンノードは次のことを行う必要があるため、 他の重要な処理、トランザクション スループットを実行する 多額の取引手数料により部分的に最小限に抑えられる また、研究モデルでブロック サイズの制限が必要な場合もあります。 5.4.チェーン間通信。 Polkadot の重要な最終要素はチェーン間通信です。以来 パラチェーン間には何らかの情報チャネルが存在する可能性があるため、Polkadot をパラチェーンとみなすことができます。 スケーラブルなマルチチェーン。 Polkadot の場合、通信は可能な限り単純です。トランザクションは、 パラチェーンは(そのチェーンのロジックに従って)次のことができます。 トランザクションを 2 番目のパラチェーンにディスパッチします。 またはリレーチェーンの可能性もあります。外部トランザクションと同様 本番環境 blockchain では完全に非同期です そして、それらには何かを返す本質的な能力はありません。 情報の原点に戻ること。 宛先: 取得 以前のデータ ブロックのvalidator。 アカウントが投稿を受信します: エントリが削除されました イングレス Merkle tree アカウントが投稿を送信します: に置かれたエントリ 出口 Merkle tree 目的地に向けて パラチェーン 出口 出典:株式 次のブロックのデータ validators に保存されている投稿証明 パラチェーン出口マークル 木 配線された参照が配置されました 宛先パラチェーン内 イングレス Merkle tree 進入 図 3. を示す基本的な回路図 投稿のルーティングの主要部分 トランザクション (「投稿」)。 実装の複雑さを最小限に抑えるために、最小限の リスク そして 最小限の ストレートジャケット の 未来 パラチェーン アーキテクチャでは、これらのインターチェーン トランザクションは 標準の外部署名トランザクションと実質的に区別できません。 トランザクションにはオリジンセグメントがあり、パラチェーンを識別する機能を提供します。 任意のサイズのアドレス。 Bitcoin や Ethereum などの一般的な現在のシステムとは異なり、チェーン間トランザクションにはいかなる種類の手数料の「支払い」も伴いません。このような支払いは、ソースおよび宛先のパラチェーン上のネゴシエーション ロジックを通じて管理する必要があります。のために提案されているようなシステム Ethereum の Serenity リリース [7] は簡単な手段です ただし、そのようなクロスチェーンリソースの支払いを管理することは困難です やがて他の人たちが前面に出てくるかもしれないと私たちは考えています。 チェーン間トランザクションはシンプルな方法で解決されます。 Merkle tree に基づいたキューイング メカニズムにより、 忠実さ。リレーチェーンのメンテナの仕事は次のとおりです。 1 つのパラチェーンの出力キューでトランザクションを移動する 宛先パラチェーンの入力キューに追加されます。の 渡されたトランザクションはリレーチェーン上で参照されますが、相対ではありませんay-chain トランザクション自体。パラチェーンが別のパラチェーンにスパム送信するのを防ぐには トランザクション、トランザクションを送信するには、これが必要です 宛先の入力キューが大きすぎないこと 前のブロックの終了時刻。入力の場合 ブロック処理後のキューが大きすぎる場合、キューは「飽和」とみなされ、トランザクションはルーティングされません。 それは後続のブロック内で、以下に戻されるまで続きます。 限界。これらのキューはリレーチェーン上で管理されます パラチェーンが互いの飽和度を決定できるようにする ステータス。この方法では、トランザクションを投稿しようとして失敗しました 停止した宛先へのメッセージは同期的に報告される場合があります。 (ただし、リターンパスが存在しないため、その理由でセカンダリトランザクションが失敗した場合、それを報告することはできません) 元の呼び出し元とその他の回復手段に送信します。 開催しなければならないだろう。) 5.5. Polkadot と Ethereum。 Ethereum のチューリング完全性により、Polkadot と Ethereum が相互運用できる可能性が十分にあると予想されます。 少なくとも、容易に推測できるセキュリティの範囲内では、相互に影響を及ぼします。つまり、私たちは次のようなトランザクションを想定しています。 Polkadot は validators によって署名され、 5このようなタスクは、validator 間で共有される場合もあれば、強く結合された validator のセットの指定タスクになる場合もあります。 可用性の保証人。
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 8 Ethereum によって解釈および実行できます。 トランザクション転送契約。反対方向では、 特別にフォーマットされたログ (イベント) の使用が予想されます。 これは、特定のメッセージを転送する必要があるかどうかを迅速に検証できるようにするための「ブレークアウト コントラクト」に由来しています。 5.5.1. Polkadot から Ethereum まで。の選択を通じて、 BFT コンセンサス メカニズムと validator から形成された 承認投票を通じて決定された一連の利害関係者 このメカニズムにより、安全な合意を得ることができます。 変更頻度は低く、validator の数は控えめです。 合計 144 validator のシステムでは、ブロック時間は 4 秒、900 ブロックのフィナリティ (悪意のある攻撃を許可) 二重投票などの行為は通報され処罰される および修復される)、ブロックの有効性は合理的に判断できます。 わずか 97 件の署名 (144 件の 3 分の 2 に 1 件を加えたもの) と、異議申し立てが提出されないその後の 60 分間の検証期間を通じて証明されたとみなされます。 Ethereum は「不法侵入契約」をホストできます。 144 の署名者を維持し、次の者によって制御されることができます。 彼ら。 EVM では、楕円曲線デジタル署名 (ECDSA) の回復に必要なガスは 3,000 ガスのみであるため、 おそらく検証は、 validator の超過半数 (完全な全会一致ではなく)、 Ethereum の基本コスト、命令が実行されたことを確認 Polkadot ネットワークからのガスは 300,000 ガス以下であることが適切に検証されており、その割合はわずか 6% です。 総ブロックガス制限は5.5Mです。 validator の数を増やす (問題に対処するために必要なため) 数十のチェーン) は必然的にこのコストを増加させますが、 技術が成熟するにつれて、Ethereum のトランザクション帯域幅は時間の経過とともに増加すると広く予想されています。 インフラが改善されます。そうではないという事実とともに、 すべての validator が関与する必要があります (例: 最高の validator のみ) ステークされた validator は、そのようなタスクのために呼び出される可能性があります) このメカニズムの限界はかなり拡張されます。 このような validator が毎日ローテーションすると仮定します (これは かなり保守的であり、毎週または毎月でも許容される場合があります)、その後、ネットワークの維持コストがかかります。 このEthereum-転送ブリッジは約540,000になります 1 日あたりのガソリン、または現在のガス価格では年間 45 ドルです。基本的なトランザクションを単独でブリッジ経由で転送するとコストがかかります 約0.11ドル。追加の契約計算には費用がかかります もちろんもっとです。トランザクションのバッファリングとバンドルによる 合わせて、侵入許可コストは簡単に計算できます。 共有され、トランザクションごとのコストが大幅に削減されます。 転送する前に 20 個のトランザクションが必要な場合、 基本的なトランザクションの転送コストは次のようになります。 約0.01ドル。 この複数署名契約モデルに代わる、興味深い、より安価な代替手段の 1 つは、多国間所有権のセマンティクスを実現するためにしきい値署名を使用することです。 ECDSA のしきい値署名スキーム 他のスキームの場合は計算コストが高くなります Schnorr 署名などは非常に合理的です。 Ethereum そのようなものを作るプリミティブを導入する予定です 今後の Metropolis ハードフォークで安価に使用できるスキーム。このような手段が利用できれば、ガス代は Polkadot トランザクションを Ethereum に転送するため ネットワークは大幅にゼロ近くまで削減されるでしょう 検証のための基本コストを超えるオーバーヘッド 署名し、基礎となるトランザクションを実行します。 このモデルでは、Polkadot の validator ノードは次のようになります。 メッセージに署名する以外に何もすることはありません。トランザクションを実際に Ethereum ネットワークにルーティングするには、次のようにします。 どちらかの validator 自体も存在すると仮定します。 Ethereum ネットワーク、またはおそらくその少額の報奨金 メッセージを転送した最初のアクターにオファーされます ネットワークに送信します(報奨金は簡単に支払われる可能性があります) トランザクションの発信者)。 5.5.2. Ethereum から Polkadot まで。トランザクションを取得する Ethereum から Polkadot への転送では、ログという単純な概念が使用されます。 Ethereum コントラクトが Polkadot の特定のパラチェーンにトランザクションをディスパッチしたい場合、 特別な「ブレイクアウト契約」を結ぶだけで済みます。 ブレイクアウト契約では、以下のような支払いが発生します。 マークル証明と対応するブロックのヘッダーが有効であるというアサーションによってその存在が証明されるように、ロギング命令を発行します。 正規の。 後の 2 つの条件のうち、おそらく有効性が最も重要です。 証明するのが最も簡単です。原則として、唯一の要件は、証明が必要な各 Polkadot ノードに対して (つまり、指定された validator ノード) は、標準の Ethereum ノードの完全に同期されたインスタンスを実行します。残念ながら、これ自体はかなり重い依存関係です。さらに 軽量な方法は、次のような単純な証明を使用することです。 ヘッダーは、 適切に実行するために必要な Ethereum の状態トライの一部 ブロック内のトランザクションを確認し、ログ (ブロック レシートに含まれる) が有効であることを確認します。そんな「SPVらしさ」6 証明にはまだかなりの量の情報が必要になる場合があります。都合の良いことに、通常は必要ありません。 all: Polkadot 内の結合システムにより結合が可能になります。 サードパーティは、ヘッダーを失う危険を冒してヘッダーを送信する必要があります。 債券は、他の第三者 (「漁師」など、6.2.3 を参照) がヘッダーが無効であるという証拠を提供した場合に限ります。 (具体的には、状態ルートまたは領収書のルートが偽者であったこと)。 Ethereum のようなファイナライズされていない PoW ネットワークでは、 正規性を決定的に証明することは不可能です。 これに対処するために、あらゆる種類のものに依存しようとするアプリケーションは、 チェーン依存の因果関係は、多数の「確認」を待つか、依存するトランザクションが一定のレベルに達するまで待ちます。 チェーン内の特定の深さ。 Ethereum に、これは 深さは、既知のネットワーク問題がない最も価値の低いトランザクションの 1 ブロックから、従来の 1200 ブロックまで変化します。 交換用の最初のフロンティアリリース時のケース。 安定した「Homestead」ネットワークでは、この数字は次の位置にあります。 ほとんどの取引所では 120 ブロックかかりますが、おそらくかかるでしょう。 同様のパラメータ。 それで 私たち できる 想像してください 私たちの Polkadot側 Ethereumインターフェイスにはいくつかの簡単な機能があります: Ethereum ネットワークから新しいヘッダーを受け入れ、PoW を検証して、何らかの証拠を受け入れることができるようにします。 特定のログは、十分な深さのヘッダー (および前方) の Ethereum 側のブレークアウト コントラクトによって発行されました。 Polkadot 内の対応するメッセージ)、そして最後に 以前に受け入れられた証拠を受け入れることができるようになりますが、 まだ制定されていないヘッダーには無効なレシート ルートが含まれています。 実際に Ethereum ヘッダー データ自体を取得するには (そして SPV の証明または有効性/正規性の反駁) Polkadot ネットワーク、転送の奨励 6SPV は、Bitcoin の簡易支払検証を指し、クライアントがトランザクションのみを保持しながら検証する方法を説明します。 最長の PoW チェーンのすべてのブロック ヘッダーのコピー。POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 9 データが必要です。 これは支払いと同じくらい簡単です (Ethereum 側で徴収された料金から賄われます) 支払われました ヘッダーが次のような有用なブロックを転送できる人 有効です。検証者は、次の目的で最後の数千ブロックに関する情報を保持することが求められます。 何らかのプロトコル固有の手段または上で維持されるコントラクトを通じて、フォークを管理できる。 リレーチェーン。 5.6. Polkadot そして Bitcoin。 Bitcoin 相互運用 Polkadot には興味深い課題が提示されています。 「双方向ペグ」は便利なインフラになる 両方のネットワーク側に置く必要があります。ただし、理由により、 Bitcoin の制限により、そのようなペグを安全に提供するには、 簡単ではない仕事。からのトランザクションの配信 Bitcoin から Polkadot までは、原則として Ethereum と同様のプロセスで実行できます。 「ブレークアウトアドレス」 Polkadot validator によって何らかの方法で制御される可能性があります 転送された token (およびそれらと一緒に送信されたデータ) を受信します。 SPV 証明は、インセンティブ付きの oracle によって提供できます。 確認期間とともに、報奨金が与えられます。 トランザクションを暗示する非正規ブロックを特定する 「二重支出」されている。 token はすべて 「ブレークアウト アドレス」は、原則として、後の分散のために同じ validator によって制御されます。 しかし、問題は、回転する validator セットから堆積物をどのように安全に制御できるかということです。 とは異なります Ethereum に基づいて任意の決定を下すことができます 署名の組み合わせにより、Bitcoin は実質的に さらに制限があり、ほとんどのクライアントは最大 3 者とのマルチシグネチャ トランザクションのみを受け入れます。これを 36、実際には最終的に望まれる数千まで拡張することは、現在のプロトコルでは不可能です。 1 つのオプションは、Bitcoin プロトコルを変更して有効にすることです。 このような機能は、いわゆる「ハードフォーク」と呼ばれるものですが、 Bitcoin 最近の試みから判断すると、世界を調整するのは困難です。可能性の 1 つは、しきい値署名の使用です。 単一識別可能な公衆を許可する暗号化スキーム 鍵は複数の秘密「部分」によって効果的に制御されます。 有効な署名を作成するには、その一部またはすべてを利用する必要があります。 残念ながら、しきい値署名と互換性があります Bitcoin の ECDSA は計算コストが高くつきます 多項式の複雑さを作成します。その他のスキームとしては、 Schnorr 署名はコストがはるかに低くなりますが、 Bitcoin に導入される可能性のあるタイムライン プロトコルは不明です。 預金の最終的な安全性は次のとおりです。 多数の validator を結合する、もう 1 つのオプションは、 マルチサインキーホルダーを大幅に削減 合計 validator の結合されたサブセット (しきい値など) 署名が実行可能になります (または、最悪の場合、Bitcoin のネイティブ マルチ署名も可能です)。 これにより、当然のことながら、 validator が違法行為を行った場合に賠償金として差し引かれる可能性がある保証金の総額ですが、これは はグレースフル デグラデーションであり、単に上限を設定するだけです 間で安全に運用できる資金の量。 2 つのネットワーク (実際、攻撃による損失の割合) validator からは成功します)。 そのため、合理的に安全な Bitcoin 相互運用性の「仮想パラチェーン」を配置することは非現実的ではないと考えています。 2 つのネットワーク間での作業はかなりの努力が必要ですが、スケジュールは不確実であり、可能性は十分にあります。 その中で利害関係者の協力を必要とする ネットワーク。
Protocole en détail
Le protocole peut être grossièrement décomposé en trois parties : le mécanisme de consensus, l'interface parachain et le routage des transactions inter-chaînes. 6.1. Chaîne relais Opération. Le chaîne-relais va il s'agit probablement d'une chaîne globalement similaire à Ethereum dans la mesure où elle est basé sur l'état avec l'adresse de mappage d'état au compte informations, principalement les soldes et (pour éviter les rediffusions) un compteur de transactions. Placer les comptes ici répond à un seul objectif : rendre compte de ce que possède l’identité. quel montant de participation dans le système.7 Il y aura cependant des différences notables : • Les contrats ne peuvent pas être déployés via des transactions ; suite à la volonté d’éviter les fonctionnalités applicatives sur la chaîne relais, il ne sera pas accompagner le déploiement public des contrats. • L'utilisation des ressources de calcul (« gaz ») n'est pas comptabilisée ; puisque les seules fonctions disponibles pour un usage public sera corrigée, la justification de la comptabilisation du gaz ne tient plus. A ce titre, un tarif forfaitaire s'appliquera en tous les cas, permettant plus de performances dans tous les cas exécution de code dynamique qui peut être nécessaire et un format de transaction plus simple. • Une fonctionnalité spéciale est prise en charge pour les contrats répertoriés qui permet l'exécution automatique et la sortie de messages réseau. Dans le cas où la chaîne de relais possède une VM et que ce soit basé sur le EVM, il comporterait un certain nombre de modifications pour assurer une simplicité maximale. Ce serait probablement avoir un certain nombre de contrats intégrés (similaires à ceux de adresses 1 à 4 dans Ethereum) pour permettre des tâches à gérer, y compris un contrat consensuel, un Contrat validator et un contrat parachain. Si ce n’est pas le EVM, alors un backend WebAssembly [2] (wasm) est l’alternative la plus probable ; dans ce cas, l'ensemble la structure serait similaire, mais il ne serait pas nécessaire pour que les contrats intégrés avec Wasm soient une cible viable pour les langages à usage général plutôt que pour les langages immatures et langues limitées pour le EVM. D'autres écarts probables par rapport au protocole actuel Ethereum sont tout à fait possibles, par exemple une simplification du format de reçu de transaction permettant l'exécution parallèle de transactions non conflictuelles au sein d'un même bloc, comme proposé pour la série de changements Serenity. Il est possible, bien que peu probable, qu'un chaîne « pure » soit déployée comme chaîne-relais, permettant une contrat particulier pour gérer des choses comme le staking token équilibres plutôt que d’en faire un élément fondamental de le protocole de la chaîne. À l'heure actuelle, nous estimons qu'il est peu probable que cela offrera une simplification protocolaire suffisamment grande pour être cela vaut la complexité et l'incertitude supplémentaires impliquées en le développant. 7Afin de représenter le montant qu'un détenteur donné est responsable de la sécurité globale du système, ces comptes de participation seront codent inévitablement une certaine valeur économique. Toutefois, il convient de comprendre que, puisqu'il n'est pas prévu que de telles valeurs soient utilisées dans de quelque manière que ce soit dans le but d'échanger contre des biens et services du monde réel, il convient par conséquent de noter que les token ne doivent pas être assimilés à monnaie et à ce titre la chaîne-relais conserve sa philosophie nihiliste en matière d'applications.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 10 Il existe un certain nombre de petites fonctionnalités requises pour administrer le mécanisme de consensus, l'ensemble validator, le mécanisme de validation et les parachains. Ces pourraient être mis en œuvre ensemble dans le cadre d’un protocole monolithique. Cependant, pour des raisons de modularité augure, nous les qualifions de « contrats » de la chaîne-relais. Cela devrait être interprété comme signifiant qu'ils sont des objets (au sens de programmation orientée objet) gérée par le mécanisme de consensus de la relaychain, mais pas nécessairement cela ils sont définis comme des programmes dans des opcodes de type EVM, ni même qu'ils soient adressables individuellement via le système de compte. 6.2. Contrat de jalonnement. Ce contrat maintient l'ensemble validator. Il gère : • quels comptes sont actuellement des validator ; • qui sont disponibles pour devenir validators en bref avis ; • quels comptes ont placé une participation en nominant à un validator ; • les propriétés de chacun, y compris le volume staking, les taux de paiement et adresses acceptables et les identités (session) à court terme. Il permet à un compte d'enregistrer une envie de devenir les validator liés (avec ses exigences), pour désigner une certaine identité, et pour les validator liés préexistants, d'enregistrer leur désir de quitter ce statut. C'est aussi comprend le mécanisme lui-même pour le mécanisme de validation et de canonisation. 6.2.1. Mise-token Liquidité. Il est généralement souhaitable de avoir autant que possible du total de staking token jalonné dans les opérations de maintenance du réseau depuis cela lie directement la sécurité du réseau à la « capitalisation boursière » globale du staking token. Cela peut facilement être encouragé en gonflant la monnaie et en distribuant les bénéfices à ceux qui participent en tant que validators. Cependant, cela pose un problème : si le token est bloqué dans le Contrat de Staking sous peine de réduction, comment une partie substantielle peut-elle rester suffisamment liquide afin de permettre la découverte des prix ? Une réponse à cela consiste à autoriser un contrat dérivé simple, garantissant des token fongibles sur un token sous-jacent jalonné. C’est difficile à organiser sans confiance. De plus, ces dérivés token ne peuvent pas être traités de la même manière pour la même raison que les différentes obligations d’État de la zone euro ne sont pas fongibles : il est une chance que l'actif sous-jacent échoue et devienne sans valeur. Avec les gouvernements de la zone euro, il pourrait y avoir un par défaut. Avec validator jalonnés de token, les validator peuvent agir de manière malveillante et être puni. Conformément à nos principes, nous optons pour la solution la plus simple : tous les token ne sont pas jalonnés. Cela voudrait dire que une certaine proportion (peut-être 20 %) des token resteront forcément liquides. Bien que cela soit imparfait du point de vue de la sécurité, il est peu probable que cela fasse une différence fondamentale en termes de sécurité. la sécurité du réseau ; 80 % des réparations possibles grâce aux confiscations de cautions pourraient encore être effectuées par rapport au « cas parfait » de 100 % staking. Le rapport entre les token mis en jeu et les token liquides peut être ciblé assez simplement grâce à un mécanisme d'enchères inversées. Essentiellement, les titulaires de token intéressés à devenir validator chacun publierait une offre pour le contrat staking indiquant le taux de paiement minimum dont ils auraient besoin pour prendre partie. Au début de chaque séance (les séances seraient se produisent régulièrement, peut-être aussi souvent qu'une fois par heure), le validator créneaux seraient pourvus en fonction de chaque candidat La mise et le taux de paiement de validator. Un algorithme possible car ce serait prendre ceux qui ont les offres les plus basses et qui représenter une mise ne dépassant pas la mise totale visée divisé par le nombre d'emplacements et ne doit pas être inférieur à une limite inférieure égale à la moitié de ce montant. Si les créneaux ne peuvent pas être pourvus, la limite inférieure pourrait être réduite à plusieurs reprises d'un certain facteur afin de satisfaire. 6.2.2. Nomination. Il est possible de nommer en toute confiance ceux staking tokens à un validator actif, leur donnant la responsabilité des fonctions de validator. Œuvres en nomination grâce à un système de vote d’approbation. Chaque proposant potentiel peut publier une instruction sur le contrat staking exprimant une ou plusieurs identités validator sous lesquelles responsabilité qu'ils sont prêts à confier à leur caution. À chaque séance, les liens des proposants sont dispersés pour être représenté par un ou plusieurs validator. L'algorithme de dispersion optimise pour un ensemble de validators de total équivalent obligations. Les cautions des proposants deviennent sous la responsabilité effective du validator aet susciter de l'intérêt ou subir un réduction de la peine en conséquence. 6.2.3. Confiscation/incendie des obligations. Certains comportements validator entraînent une réduction punitive de leur caution. Si la caution est réduite en dessous du minimum autorisé, le une session est terminée prématurément et une autre démarre. Une liste non exhaustive de comportements répréhensibles validator punissables comprend : • Faire partie d'un groupe parachain incapable de fournir consensus sur la validité d’un bloc parachain ; • signer activement pour la validité d'un invalide bloc de parachaine ; • incapacité à fournir des charges utiles de sortie auparavant voté comme disponible ; • inactivité pendant le processus de consensus ; • valider les blocs relais-chaînes sur les fourches concurrentes. Certains cas de mauvais comportement menacent l’intégrité du réseau (comme la signature de blocs de parachain invalides et la validation de plusieurs côtés d’un fork) et entraînent ainsi un exil effectif par la réduction totale de la liaison. Dans d'autres cas moins graves (par exemple inactivité dans le consensus processus) ou dans les cas où le blâme ne peut être attribué avec précision (faire partie d'un groupe inefficace), une petite partie de la caution peut en revanche être condamné à une amende. Dans ce dernier cas, cela fonctionne bien avec le désabonnement des sous-groupes pour garantir que les messages malveillants les nœuds subissent beaucoup plus de pertes que les nœuds bienveillants endommagés collatéralement. Dans certains cas (par exemple, validation multi-fork et invalide signature de sous-bloc) validators ne peuvent pas eux-mêmes détecter facilement le mauvais comportement de chacun car une vérification constante de chaque bloc de parachain serait une tâche trop ardue. Ici il est nécessaire d'obtenir le soutien de parties extérieures à le processus de validation pour vérifier et signaler un tel comportement inapproprié. Les parties reçoivent une récompense pour avoir signalé une telle activité ; leur terme, « pêcheurs », vient de l’improbabilité d'une telle récompense. Étant donné que ces cas sont généralement très graves, nous envisageons que toute récompense puisse facilement être payée à partir de la caution confisquée. En général, nous préférons équilibrer la combustion (c'est-à-dire réduction à néant) avec réaffectation, plutôt que tenter une réallocation globale. Cela a pour effet de
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 11 augmentant la valeur globale du token, compensant le réseau en général dans une certaine mesure plutôt que le réseau spécifique partie impliquée dans la découverte. C'est principalement par mesure de sécurité mécanisme : les sommes importantes impliquées pourraient conduire à des incitations comportementales extrêmes et aiguës si elles étaient toutes accordé à une seule cible. En général, il est important que la récompense soit suffisamment importante pour que la vérification soit utile pour le réseau, mais pas au point de compenser les coûts liés à la mise en place d'un système de vérification. une criminalité « de niveau industriel » bien financée et bien orchestrée attaque de piratage informatique contre un validator malchanceux pour forcer un mauvais comportement. De cette façon, le montant réclamé ne devrait généralement pas être supérieur au lien direct du validator errant, de peur qu'un une incitation perverse survient à se comporter mal et à se dénoncer pour obtenir la prime. Cela peut être combattu soit explicitement grâce à une exigence minimale de cautionnement direct pour être un validator ou implicitement en informant les proposants que les validator avec peu d'obligations déposées ne sont pas très incitées de bien se comporter. 6.3. Registre Parachain. Chaque parachain est définie dans ce registre. Il s'agit d'une construction de type base de données relativement simple qui contient à la fois des informations statiques et dynamiques sur chaque chaîne. Les informations statiques incluent l'index de chaîne (un simple entier), ainsi que l'identité du protocole de validation, un moyen de distinguer les différentes classes de parachain afin que l'algorithme de validation correct puisse être dirigé par des validator chargés de présenter un candidat valable. Une première preuve de concept se concentrerait sur la mise en place les nouveaux algorithmes de validation dans les clients eux-mêmes, nécessitant effectivement un hard fork du protocole à chaque fois qu'un une classe supplémentaire de chaîne a été ajoutée. Mais en fin de compte, il peut être possible de spécifier l'algorithme de validation dans une manière à la fois rigoureuse et suffisamment efficace pour que les clients soient capable de travailler efficacement avec de nouvelles parachaines sans fourchette dure. Une piste possible pour y parvenir serait de préciser l'algorithme de validation de la parachain dans un système bien établi, langage compilé nativement et indépendant de la plate-forme, tel que WebAssembly. Des recherches supplémentaires sont nécessaires pour déterminer si cela est vraiment réalisable, mais si c'est le cas, cela pourrait apporter avec lui l'énorme avantage de bannir les hard-forks pour de bon. Les informations dynamiques incluent des aspects du système de routage des transactions qui doivent faire l'objet d'un accord global, tel que comme file d’attente d’entrée de la parachain (décrite dans la section 6.6). Le registre ne peut ajouter que des parachaines par un vote référendaire complet ; cela pourrait être géré en interne mais serait plus probablement placé dans un environnement externe contrat référendaire afin de faciliter la réutilisation dans le cadre des éléments de gouvernance plus généraux. Les paramètres à conditions de vote (par exemple, quorum requis, majorité requis) pour l'enregistrement de chaînes supplémentaires et autres, des mises à niveau moins formelles du système seront définies dans un « constitution » mais sont susceptibles de suivre un modèle assez traditionnel. chemin, du moins au début. La formulation précise est hors de portée du présent travail, mais par ex. une majorité qualifiée des deux tiers sera adoptée avec plus d'un tiers du système total Un vote positif peut être un point de départ judicieux. Les opérations supplémentaires incluent la suspension et la suppression des parachaines. Nous espérons que la suspension ne sera jamais se produire, mais il est conçu pour être une protection au moins il y a un problème insoluble dans le système de validation d’une parachain. Le cas le plus évident où cela pourrait Ce qui est nécessaire, c'est une différence critique par consensus entre les implémentations, ce qui conduit les validator à ne pas pouvoir s'entendre sur validité ou blocages. Les validateurs seraient encouragés à utiliser plusieurs implémentations client afin qu'ils puissent détecter un tel problème avant la confiscation de la caution. La suspension étant une mesure d'urgence, il serait sous les auspices de la dynamique validator-vote plutôt qu'un référendum. La réintégration serait possible à la fois des validators ou un référendum. La suppression totale des parachaines n’interviendrait que après un référendum et avec lequel serait exigé un période de grâce substantielle pour permettre une transition ordonnée vers soit une chaîne autonome, soit pour faire partie d'une autre système de consensus. Le délai de grâce serait probablement de l'ordre des mois et est susceptible d'être défini sur une base par chaîne dans le registre des parachaines afin que les différents les parachains peuvent bénéficier de différents délais de grâce selon leur besoin. 6.4. Scellement des blocs relais. Le scellement fait essentiellement référence à au processus de canonisation ; c'est-à-dire une donnée de base transformer quimappe l’original en quelque chose de fondamentalement singulier et significatif. Sous une chaîne PoW, l’étanchéité est en fait synonyme d’exploitation minière. Dans notre cas, cela implique la collecte de déclarations signées de validator sur la validité, la disponibilité et la canonique d'un bloc de chaîne de relais particulier et les blocs de parachain qui cela représente. La mécanique de l’algorithme de consensus BFT sous-jacent est hors de portée du présent travail. Nous allons décrivez-le plutôt en utilisant une primitive qui suppose un machine à états créatrice de consensus. En fin de compte, nous nous attendons s'inspirer d'un certain nombre de consensus BFT prometteurs algorithmes au cœur ; Tangaora [9] (une variante BFT de Raft [16]), Tendermint [11] et HoneyBadgerBFT [14]. L'algorithme devra parvenir à un accord sur plusieurs parachains en parallèle, différant ainsi de l'habituel blockchain mécanismes de consensus. Nous supposons qu'une fois le consensus est atteint, nous sommes en mesure d'enregistrer le consensus dans une preuve irréfutable qui peut être fournie par n'importe lequel des les participants à celui-ci. Nous supposons également qu'un mauvais comportement au sein du protocole peut être généralement réduit à un petit groupe contenant des participants qui se comportent mal pour minimiser les dommages collatéraux en infligeant une punition.8 La preuve, qui prend la forme de nos déclarations signées, est placée ensemble dans l’en-tête du bloc relais-chaîne. avec certains autres champs, notamment la racine statetrie de la chaîne relais et la racine transaction-trie. Le étanchéité processus prend endroit sous un célibataire générer un consensus mécanisme adressage les deux le le bloc de la chaîne relais et les blocs des parachains qui font une partie du contenu du relais : les parachains ne sont pas « engagées » séparément par leurs sous-groupes puis rassemblées plus tard. Cela se traduit par un processus plus complexe pour la chaîne de relais, mais nous permet de parvenir à un consensus sur l'ensemble du système en une seule étape, minimisant ainsi la latence et permettant pour des exigences de disponibilité de données assez complexes qui sont utile pour le processus de routage ci-dessous. 8Les systèmes de consensus existants basés sur PoS BFT tels que Tendermint BFT et le Slasher original répondent à ces affirmations.
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 12 L’état de la machine à consensus de chaque participant peut être modélisé comme un simple tableau (2 dimensions). Chaque participant (validator) dispose d'un ensemble d'informations, sous la forme de déclarations signées (« votes ») des autres participants, concernant chaque candidat au bloc parachain ainsi que le candidat au bloc relaychain. L'ensemble des informations est composé de deux éléments de données : Disponibilité : oui ceci validator avoir sortie informations de publication de transaction de ce bloc afin sont-ils capables de valider correctement les candidats parachain sur le bloc suivant ? Ils peuvent voter soit 1 (connu) ou 0 (pas encore connu). Une fois qu'ils vote 1, ils s'engagent à voter de la même manière pour le reste de ce processus. Votes ultérieurs qui ne le font pas respectez, ce sont des motifs de punition. Validité : le bloc parachain est-il valide et c'est tout données référencées en externe (par ex. opérations) disponible ? Ceci ne concerne que les validator attribués à la parachain sur laquelle ils votent. Ils peuvent voter soit 1 (valide), -1 (invalide) ou 0 (pas encore connu). Une fois qu'ils votent non zéro, ils nous nous engageons à voter de cette façon pour le reste de le processus. Des votes ultérieurs qui ne respectent pas cela sont des motifs de punition. Tous les validator doivent soumettre des votes ; les votes peuvent être soumis à nouveau, qualifiés par les règles ci-dessus. La progression de le consensus peut être modélisé comme plusieurs algorithmes de consensus standard BFT sur chaque parachain se produisant en parallèle. Puisque ceux-ci sont potentiellement contrecarrés par un petite minorité d’acteurs malveillants concentrés dans un seul groupe de parachain, le consensus global existe pour établir un filet de sécurité, limitant le pire des cas impasse à simplement un ou plusieurs blocs de parachain vides (et une série de sanctions pour les responsables). Les règles de base pour la validité des blocs individuels (qui permettent à l'ensemble total de validator dans son ensemble d'arriver à consensus sur le fait qu'il devienne le candidat unique de la parachain à référencer depuis le relais canonique) : • doit avoir au moins les deux tiers de ses validator votant positivement et aucun votant négativement ; • doit avoir plus d'un tiers de validator votant positivement sur la disponibilité des informations sur la file d'attente de sortie. S'il y a au moins un vote positif et au moins un vote négatif sur la validité, une condition exceptionnelle est créée et l'ensemble des validator doivent voter pour déterminer s'il y a des parties malveillantes ou s'il y a un accident fourchette. Outre les votes valides et invalides, un troisième type de votes sont autorisés, ce qui équivaut à voter pour les deux, ce qui signifie que le nœud a des opinions contradictoires. Cela pourrait être dû au le propriétaire du nœud exécutant plusieurs implémentations qui le font pas d’accord, ce qui indique une possible ambiguïté dans le protocole. Une fois que tous les votes ont été comptés à partir de l'ensemble complet validator, si l'opinion perdante a au moins une petite proportion (à être paramétré ; au plus la moitié, peut-être beaucoup moins) des votes de l'opinion gagnante, alors il est supposé être un fork accidentel de parachain et la parachain est automatiquement suspendue du processus de consensus. Dans le cas contraire, nous considérerons qu'il s'agit d'un acte malveillant et punirons le minorité qui votait pour l’opinion dissidente. La conclusion est un ensemble de signatures démontrant canonicité. Le bloc relais-chaîne peut alors être scellé et le processus de scellement du bloc suivant a commencé. 6.5. Améliorations de l'étanchéité des blocs relais. Tandis que cette méthode de scellement donne de fortes garanties sur le fonctionnement du système, elle n’est pas particulièrement évolutive puisque les informations clés de chaque parachain doivent avoir leur disponibilité garantie par plus d'un tiers de tous les validator. Cela signifie que l’empreinte de responsabilité de chaque validator grandit à mesure que d’autres chaînes sont ajoutées. Alors que la disponibilité des données au sein de réseaux de consensus ouverts est essentiellement un problème non résolu, il existe des moyens d'atténuer la surcharge imposée aux nœuds validator. Un simple La solution est de réaliser que même si les validator doivent assumer étant responsables de la disponibilité des données, ils n’ont pas besoin de stocker, de communiquer ou de répliquer eux-mêmes les données. Des silos de données secondaires, éventuellement liés (voire au tout même) les assembleurs qui compilent ces données, peuvent gérer les tâche de garantir la disponibilité, les validator fournissant une partie de leurs intérêts/revenus en paiement. Cependant, même si cela permet d’acquérir une certaine évolutivité intermédiaire, cela ne résout toujours pas le problème sous-jacent ; depuis l'ajout de chaînes supplémentaires nécessitera en général des validator supplémentaires, la consommation continue des ressources du réseau (notamment en termes de bande passante) augmente avec le carré de lechaînes, une propriété intenable à long terme. En fin de compte, nous continuerons probablement à nous cogner la tête contre la limitation fondamentale qui stipule que pour un réseau de consensus pour être considéré comme disponible en toute sécurité, le les besoins continus en bande passante sont de l’ordre du total validators fois le total des informations saisies. Ceci est dû à l'incapacité d'un réseau non fiable à répartir correctement la tâche de stockage des données sur de nombreux nœuds, ce qui en dehors de la tâche de traitement éminemment distribuable. 6.5.1. Présentation de la latence. Un moyen d'atténuer cela La règle est d’assouplir la notion d’immédiateté. En exigeant que 33 % + 1 validator votent pour la disponibilité seulement à terme, et non immédiatement, nous pouvons mieux utiliser la propagation exponentielle des données et aider à égaliser les pics d'échange de données. Une égalité raisonnable (bien que non prouvée) peut-être : (1) latence = participants × chaînes Dans le modèle actuel, la taille du système évolue avec le nombre de chaînes pour garantir que le traitement est distribué; puisque chaque chaîne nécessitera au moins un validator et que nous fixons l'attestation de disponibilité à une constante proportion de validators, alors les participants augmentent de la même manière avec le nombre de chaînes. On se retrouve avec : (2) latence = taille2 Cela signifie qu'à mesure que le système se développe, la bande passante requise et la latence jusqu'à la disponibilité sont connues sur l'ensemble du réseau. réseau, qui pourrait également être caractérisé comme le nombre de blocs avant la finalité, augmente avec son carré. C'est un facteur de croissance substantiel et pourrait s’avérer être un obstacle notable et nous contraindre à des paradigmes « non plats » comme composer plusieurs « Polkadotes » dans une hiérarchie pour le routage à plusieurs niveaux des publications à travers une arborescence de chaînes de relais.
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 13 6.5.2. Participation publique. Une autre direction possible est d'obtenir la participation du public au processus à travers un système de micro-réclamations. Comme les pêcheurs, il y a pourraient être des parties externes pour contrôler les validator qui prétendent disponibilité. Leur tâche est de trouver quelqu'un qui semble incapable de démontrer une telle disponibilité. Ce faisant, ils peut déposer une micro-réclamation auprès d'autres validator. PoW ou une obligation mise en jeu peut être utilisée pour atténuer l'attaque sybil ce qui rendrait le système largement inutile. 6.5.3. Garants de disponibilité. Une dernière voie serait de désigner un deuxième ensemble de validator liés comme « disponibilité » garants ». Ceux-ci seraient liés comme avec les validator normaux, et pourraient même provenir du même ensemble. (mais si tel est le cas, ils seraient choisis sur une période à long terme, au moins par session). Contrairement aux validator normaux, ils ne basculerait pas entre les parachains mais plutôt former un seul groupe pour attester de la disponibilité de toutes les données interchaînes importantes. Cela présente l’avantage d’assouplir l’équivalence entre participants et chaînes. Essentiellement, les chaînes peuvent grandir (avec l'ensemble de chaîne d'origine validator), alors que les participants, et particulièrement ceux qui participent au testament de disponibilité des données, peuvent rester pour le moins sous-linéaires et très probablement constant. 6.5.4. Préférences de l'assembleur. Un aspect important de cela système est de garantir qu’il existe une sélection saine de les assembleurs créant les blocs dans une parachain donnée. Si un un seul assembleur a dominé une parachain puis quelques attaques devenir plus réalisable puisque la probabilité de l'absence de la disponibilité de données externes serait moins évidente. Une option consiste à pondérer artificiellement les blocs de parachaine dans un mécanisme pseudo-aléatoire afin de favoriser une grande variété de assembleurs. Dans le premier cas, nous aurions besoin dans le cadre du mécanisme de consensus favorisé par validator Les candidats au bloc parachain ont été déterminés comme étant « plus lourds ». De même, nous devons inciter les validator à tenter de suggérer le bloc le plus lourd qu'ils peuvent trouver - cela pourrait être cela en rendant une partie de leur récompense proportionnelle au poids de leur candidat. Pour garantir que les assembleurs reçoivent une rémunération équitable et raisonnable chance que leur candidat soit choisi comme gagnant candidat en consensus, nous faisons le poids spécifique d'un Le candidat au bloc parachain est déterminé sur une fonction aléatoire connectée à chaque assembleur. Par exemple, en prenant la mesure de distance XOR entre l’adresse de l’assembleur et un numéro pseudo-aléatoire cryptographiquement sécurisé déterminé à proximité du point de création du bloc (un « ticket gagnant » fictif). Cela donne effectivement à chacun assembleur (ou, plus spécifiquement, l’adresse de chaque assembleur) chance aléatoire que leur bloc candidat « gagne » tous les autres. Pour atténuer l'attaque sybil d'un seul assembleur « extrayant » une adresse proche du ticket gagnant et étant ainsi un favori pour chaque bloc, nous ajouterions une certaine inertie à l'adresse d'un assembleur. Cela peut être aussi simple que de les exiger avoir un montant de base de fonds à l'adresse. Un plus une approche élégante serait de pondérer la proximité du billet gagnant avec le montant des fonds garés au adresse en question. Même si la modélisation reste à faire, il est fort possible que ce mécanisme permette même à des les petites parties prenantes à contribuer en tant que rassembleur. 6.5.5. Blocs en surpoids. Si un ensemble validator est compromis, ils peuvent créer et proposer un bloc qui, bien que valide, prend un temps excessif à exécuter et valider. C'est un problème puisqu'un groupe validator pourrait former raisonnablement un bloc qui prend beaucoup de temps à exécuter à moins qu'une information particulière soit déjà connue permettant un raccourci, par ex. en prenant en compte un grand premier. Si un seul assembleur connaissait cette information, alors ils auraient un net avantage à obtenir le leur les candidats acceptaient tant que les autres étaient occupés à traiter l'ancien bloc. Nous appelons ces blocs en surpoids. La protection contre les validator soumettant et validant ces blocs relève en grande partie du même couvert que pour blocs invalides, mais avec une mise en garde supplémentaire : puisque le temps nécessaire à l'exécution d'un bloc (et donc son statut de surpoids) est subjectif, le résultat final d’un vote sur la mauvaise conduite se divise essentiellement en trois camps. Un Il est possible que le bloc ne soit définitivement pas en surpoids. dans ce cas, plus des deux tiers déclarent qu'ils pourraient exécuter le bloc dans une certaine limite (par exemple 50 % du temps total autorisé entre les blocs). Une autre est que le le bloc est ddéfinitivement en surpoids - ce serait le cas si plus de les deux tiers déclarent qu'ils n'ont pas pu exécuter le blocage dans ladite limite. Une dernière possibilité est une divergence d’opinion entre les validator. Dans ce cas, nous pouvons choisir d'infliger une punition proportionnée. Pour garantir que les validator peuvent prédire quand ils pourraient être proposant un bloc en surpondération, il peut être judicieux de leur demander de publier des informations sur leurs propres performances pour chaque bloc. Sur une période de temps suffisante, cela devrait leur permettre de profiler leur vitesse de traitement par rapport aux pairs qui les jugeraient. 6.5.6. Assurance assembleur. Un problème demeure pour les validator : contrairement aux réseaux PoW, pour vérifier les informations d'un assembleur bloc pour la validité, ils doivent réellement y exécuter les transactions. Des assembleurs malveillants peuvent fournir des blocs invalides ou en surpoids aux validator, ce qui leur cause des problèmes (gaspillage leurs ressources) et exigeant un coût d’opportunité potentiellement substantiel. Pour atténuer cela, nous proposons une stratégie simple sur le fait partie des validators. Premièrement, les candidats au bloc parachain envoyés aux validators doivent être signés depuis un compte de chaîne de relais avec des fonds ; si ce n'est pas le cas, alors le validator devrait tomber immédiatement. Deuxièmement, ces candidats doivent être classés en priorité par une combinaison (par exemple multiplication) de le montant des fonds sur le compte jusqu'à un certain plafond, le nombre de blocs précédents que l'assembleur a proposés avec succès dans le passé (sans parler des blocs précédents punitions), et le facteur de proximité avec le gagnant billet comme indiqué précédemment. La casquette devrait être la même comme les dommages punitifs payés au validator dans le cas d'entre eux envoyant un bloc invalide. Pour dissuader les assembleurs d'envoyer des candidats de bloc invalides ou en surpoids aux validator, tout validator peut placer dans le bloc suivant une transaction incluant le bloc incriminé alléguant un mauvais comportement avec pour effet de transférer tout ou partie des fonds dans le compte de l'assembleur qui se comporte mal compte au validator lésé. Ce type de transaction précède tous les autres pour garantir que l'assembleur ne puisse pas retirer les fonds avant la punition. Le montant de les fonds transférés à titre de dommages et intérêts sont encore un paramètre dynamique
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 14 à modéliser, mais représentera probablement une proportion de la récompense globale validator pour refléter le niveau de chagrin causé. À empêcher que des validator malveillants confisquent arbitrairement les fonds des collectionneurs, ce dernier peut faire appel de la décision du validator auprès d'un jury composé de validator choisis au hasard en échange. pour effectuer un petit dépôt. S’ils trouvent en faveur du validator, le dépôt est consommé par celui-ci. Sinon, le la caution est restituée et le validator est sanctionné (puisque le validator est dans une position beaucoup plus voûtée, l'amende sera probablement plutôt lourd). 6.6. Interchaîne Transaction Routage. Interchaîne le routage des transactions est l'un des éléments de maintenance essentiels tâches de la chaîne-relais et de ses validator. C'est le logique qui régit la façon dont une transaction publiée (souvent abrégée simplement en « post ») devient un résultat souhaité d'une parachain source à être une entrée non négociable d'une autre parachain de destination sans aucune confiance exigences. Nous choisissons soigneusement la formulation ci-dessus ; notamment nous ne nécessite pas qu'il y ait eu une transaction dans la source parachain d'avoir explicitement sanctionné ce post. Le seul Les contraintes que nous imposons à notre modèle sont que les parachaines doivent fournir, emballés dans le cadre de leur bloc global sortie du traitement, les postes qui sont le résultat du l’exécution du bloc. Ces publications sont structurées en plusieurs files d'attente FIFO ; le Le nombre de listes est appelé base de routage et peut être autour de 16. Ce nombre représente notamment la quantité de parachains que nous pouvons prendre en charge sans avoir à recourir à routage multiphase. Dans un premier temps, Polkadot prendra en charge cela type de routage direct, mais nous allons en décrire un possible processus de routage multiphase (« hyper-routage ») comme moyen d’évoluer bien au-delà de l’ensemble initial de parachains. Nous supposer que tout participants sais le sous-groupes pour les deux blocs suivants n, n + 1. En résumé, le Le système de routage suit ces étapes : • CollatorS : contacter les membres des V alidators[n][S] • Assembleurs : POUR CHAQUE sous-groupes : s'assurer au moins 1 membre des Validateurs[n][s] en contact • Assembleurs : POUR CHAQUE sous-groupes : supposer egress[n −1][s][S] est disponible (tous les messages entrants données vers 'S' du dernier bloc) • Assembleurs : Composez le bloc candidat b pour S : (b.header, b.ext, b.proof, b.receipt, b.egress) • Assembleurs : Envoyer preuve informations proof[S] = (b.header, b.ext, b.proof, b.receipt) à V alidateurs[n][S] • CollatorS : garantir que les données de transaction externes sont b.ext est mis à la disposition des autres assembleurs et validators • Assembleurs : POUR CHACUN sous-groupe s : Envoyer sortie informations sortie[n][S][s] = (b.header, b.receipt, b.egress[s]) à le recevoir sous-groupes membres de suivant bloquer V alidateurs[n + 1][s] • V alidatorV : pré-connecter tous les membres du même ensemble pour le bloc suivant : soit N = Chain[n + 1][V ]; connecter tous les validators v tels que Chain[n + 1][v] = N • V alidateurV : Rassemblez toutes les entrées de données pour cela bloquer : POUR CHACUN sous-groupe s : Récupérer egress[n −1][s][Chain[n][V ]], récupère d'autres validators v tels que Chain[n][v] = Chain[n][V ]. Peut-être en passant par d'autres validator sélectionnés au hasard pour une preuve de tentative. • V alidateurV : Acceptez les épreuves de candidat pour cela preuve de bloc[Chain[n][V ]]. Validité du blocage des votes • V alidateurV : Accepter les données de sortie des candidats pour bloc suivant : POUR CHAQUE sous-groupes, accepter sortie[n][s][N]. Disponibilité de sortie du bloc de vote ; republier parmi les validators intéressés v de telle sorte que Chaîne[n + 1][v] = Chaîne[n + 1][V ]. • V alidateurV : JUSQU'À CONSENSUS Où : egress[n][from][to] est la file d'attente de sortie actuelle informations pour les publications allant de la parachain « de » à parachain 'à' dans le bloc numéro 'n'. CollatorS est un assembleur pour les parachaines S. V alidators[n][s] est l'ensemble des validators pour les parachaines au numéro de bloc n. A l'inverse, Chain[n][v] est la parachain à laquelle validator v est attribué sur le bloc numéro n. block.egress[to] est la sortie file d'attente de messages provenant d'un bloc de bloc parachain dont la parachain de destination est à destination. Étant donné que les assembleurs perçoivent des frais (de transaction) basés sur leurs blocs deviennent canoniques, ils sont incités à le faire assurez-vous que pour chaque destination du bloc suivant, le sous-groupe les membres sont informés de la file d'attente de sortie du présent bloquer. Les validateurs sont incités uniquement à former un consensus sur un bloc (parachain), en tant que tels, ils se soucient peu de quel bloc de l’assembleur devient finalement canonique. Dans principe, un validator pourrait former une alliance avec un assembleur et conspirer pour réduire les chances que d’autres assembleurs les blocs deviennent canoniques, mais cela est à la fois difficile à organiser en raison de la sélection aléatoirection de validators pour parachains et pourrait être défendu avec une réduction des frais payables pour les blocs de parachain qui résistent le processus de consensus. 6.6.1. Disponibilité des données externes. Assurer une parachain les données externes sont réellement disponibles est un problème récurrent avec systèmes décentralisés visant à répartir la charge de travail entre le réseau. Au cœur du problème se trouve la disponibilité problème qui stipule que puisqu'il n'est ni possible de faire une preuve de disponibilité non interactive ni aucune sorte de preuve d'indisponibilité, pour qu'un système BFT fonctionne correctement valider toute transition dont l'exactitude dépend de la disponibilité de certaines données externes, le nombre maximum de nœuds byzantins acceptables, plus un, du système doit attester de la disponibilité des données. Pour qu'un système puisse évoluer correctement, comme Polkadot, ceci pose un problème : si une proportion constante de validators doit attester de la disponibilité des données, et en supposant que les validator voudront réellement stocker les données avant d'affirmer qu'elles sont disponibles, alors comment pouvons-nous éviter le problème des besoins en bande passante/stockage augmentant avec la taille du système (et donc le nombre de validator) ? Une réponse possible serait d'avoir un ensemble séparé de validators (garants de disponibilité), dont la commande s'accroît de manière sublinéaire avec la taille de Polkadot dans son ensemble. C'est décrit en 6.5.3. Nous avons également une astuce secondaire. En tant que groupe, les assembleurs sont intrinsèquement incités à garantir que toutes les données sont disponible pour la parachain de leur choix puisque sans elle, ils sont incapables de créer d'autres blocs à partir desquels ils peuvent percevoir les frais de transaction. Les assembleurs forment également un groupe dont la composition est variée (en raison du caractère aléatoire des groupes parachain validator) non trivial à saisir et facile
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 15 à prouver. Les assembleurs récents (peut-être les derniers milliers de blocs) sont donc autorisés à lancer des défis à la disponibilité de données externes pour une parachain particulière bloquez sur validators pour une petite caution. Les validateurs doivent contacter ceux du sous-groupe validator apparemment incriminé qui ont témoigné et soit acquérir et restituer les données à l'assembleur, soit faire remonter le problème. en témoignant du manque de disponibilité (le refus direct de fournir les données compte comme un délit de confiscation de caution, donc le mauvais comportement de validator sera probablement simplement interrompre la connexion) et contacter des validator supplémentaires pour exécuter le même test. Dans ce dernier cas, la caution du collecteur est retourné. Une fois atteint le quorum de validator pouvant faire de tels témoignages d'indisponibilité, ils sont libérés, le Le sous-groupe qui se comporte mal est puni et le blocage est annulé. 6.6.2. Routage des publications. Chaque en-tête de parachain comprend un sortie-trie-root ; c'est la racine d'un trie contenant le bacs de base de routage, chaque bac étant une liste concaténée des postes de sortie. Les preuves Merkle peuvent être fournies partout parachain validators pour prouver qu'une parachain particulière le bloc avait une file d’attente de sortie particulière pour une parachain de destination particulière. Au début du traitement d'un bloc de parachain, chaque la file d'attente de sortie d'une autre parachain à destination dudit bloc est fusionné dans la file d’attente d’entrée de notre bloc. Nous supposons fort, probablement CSPR9, sous-bloc ordonnant de réaliser une opération déterministe qui n'offre aucun favoritisme entre aucun appariement de blocs de parachain. Les assembleurs calculent la nouvelle file d'attente et vidanger les files d'attente de sortie selon les paramètres de la parachain logique. Le contenu de la file d'attente d'entrée est écrit explicitement dans le bloc parachain. Cela a deux objectifs principaux : Premièrement, cela signifie que la parachain peut être synchronisée en toute confiance, indépendamment des autres parachains. Deuxièmement, cela simplifie la logistique des données en cas d'entrée complète la file d'attente ne peut pas être traitée en un seul bloc ; Les validator et les assembleurs sont capables de traiter les blocs suivants sans avoir à rechercher spécialement les données de la file d’attente. Si la file d'attente d'entrée de la parachain est supérieure à un seuil montant à la fin du traitement du bloc, il est alors marqué saturé sur la chaîne relais et aucun autre message ne peut lui être livré jusqu'à ce qu'il soit dégagé. Les preuves Merkle sont utilisé pour démontrer la fidélité du fonctionnement de l’assembleuse dans la preuve du bloc parachain. 6.6.3. Critique. Un défaut mineur relatif à cette base Le mécanisme est l’attentat post-bombe. C'est là que tout les parachains envoient le maximum de messages possible à une parachain particulière. Bien que cela bloque la cible file d'attente d'entrée en même temps, aucun dommage n'est causé au-delà une attaque DoS de transaction standard. Fonctionnant normalement, avec un ensemble de fonctions bien synchronisées et assembleurs non malveillants et validators, pour N parachains, N × M total validators et L assembleurs par parachain, nous peut décomposer le total des chemins de données par bloc pour : Validateur : M −1+L+L : M −1 pour les autres validators dans l'ensemble de parachain, L pour chaque assembleur fournissant un bloc de parachain candidat et un deuxième L pour chaque assembleur du bloc suivant nécessitant les charges utiles de sortie du bloc précédent. (Ce dernier cas ressemble en fait plutôt au pire des cas opération puisqu’il est probable que les assembleurs partageront ces données.) Collator : M +kN : M pour une connexion à chaque élément pertinent bloc parachain validator, kN pour amorcer les charges utiles de sortie vers un sous-ensemble de chaque groupe parachain validator pour le bloc suivant (et éventuellement certains assembleurs préférés). En tant que tel, les chemins de données par nœud augmentent de manière linéaire avec la complexité globale du système. Alors que c'est raisonnable, à mesure que le système évolue en centaines ou en milliers de parachains, une certaine latence de communication peut être absorbée en échange d’un taux de croissance de complexité plus faible. Dans ce cas, un algorithme de routage multiphase peut être utilisé afin de réduire le nombre de parcours instantanés au prix de l'introduction de tampons de stockage et de latence. 6.6.4. Routage hyper-cube. Le routage hyper-cube est un mécanisme qui peut principalement être construit comme une extension du mécanisme de routage de base décrit ci-dessus. Essentiellement, plutôt que d'augmenter la connectivité des nœuds avec le nombre de parachains et de nœuds de sous-groupes, nous grandissons uniquement avec le logarithme des parachaines. Les messages peuvent transiter entre plusieurs files d’attente de parachaines en route vers la livraison finale. Le routage lui-même est déterministe et simple. Nous commençons par limiter le nombre de casiers dans les files d'attente d'entrée/sortie ; plutôt que d'être le nombre total de parachains, ils sont lesbase de routage (b) . Celui-ci sera fixé comme le nombre des parachains changent, l'exposant de routage (e) étant plutôt augmenté. Sous ce modèle, notre volume de messages grandit avec O(be), les voies restant constantes et la latence (ou nombre de blocs requis pour la livraison) avec O(e). Notre modèle de routage est un hypercube de e dimensions, chaque côté du cube ayant b emplacements possibles. À chaque bloc, nous acheminons les messages le long d'un seul axe. Nous alternez les axes de manière circulaire, garantissant ainsi le délai de livraison des blocs électroniques dans le pire des cas. Dans le cadre du traitement de la parachain, à destination de l'étranger Les messages trouvés dans la file d'attente d'entrée sont immédiatement acheminés vers le bac de la file d'attente de sortie approprié, compte tenu de la numéro de bloc actuel (et donc dimension de routage). Ceci le processus nécessite un transfert de données supplémentaire pour chaque saut sur l'itinéraire de livraison, mais c'est un problème en soi qui peut être atténué en utilisant des moyens alternatifs de livraison de données utiles et comprenant uniquement une référence, plutôt que la charge utile complète du message dans le post-trie. Un exemple d'un tel routage hyper-cube pour un système avec 4 parachaines, b = 2 et e = 2 pourraient être : Phase 0, sur chaque message M : • sub0 : si Mdest ∈{2, 3} alors sendTo(2) sinon garder • sub1 : si Mdest ∈{2, 3} alors sendTo(3) sinon garder • sub2 : si Mdest ∈{0, 1} alors sendTo(0) sinon garder • sub3 : si Mdest ∈{0, 1} alors sendTo(1) sinon garder Phase 1, sur chaque message M : • sub0 : si Mdest ∈{1, 3} alors sendTo(1) sinon garder • sub1 : si Mdest ∈{0, 2} alors sendTo(0) sinon garder • sub2 : si Mdest ∈{1, 3} alors sendTo(3) sinon garder • sub3 : si Mdest ∈{0, 2} alors sendTo(2) sinon garder Les deux dimensions ici sont faciles à considérer comme la première deux bits de l'index de destination ; pour le premier bloc, le seul le bit d’ordre supérieur est utilisé. Le deuxième bloc traite avec le bit de poids faible. Une fois que les deux se produisent (de manière arbitraire commande) alors le courrier sera acheminé. 9cryptographiquement sécurisé pseudo-aléatoire
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 16 6.6.5. Maximiser le hasard. Une modification de la base la proposition verrait un total fixe de c2 −c validators, avec c−1 validators dans chaque sous-groupe. Chaque bloc, plutôt que il y a une répartition non structurée des validators parmi les parachaines, au lieu de cela pour chaque sous-groupe de parachaines, chaque validator serait attribué à un utilisateur unique et différent. sous-groupe parachain sur le bloc suivant. Ce serait conduire à l'invariant qu'entre deux blocs quelconques, pour tout deux paires de parachain, il existe deux validator qui ont échangé les responsabilités de la parachain. Bien que cela ne puisse pas être utilisé pour obtenir des garanties absolues sur la disponibilité (un seul validator tombera occasionnellement hors ligne, même si bienveillant), il peut néanmoins optimiser le cas général. Cette approche n'est pas sans complications. L'ajout d'une parachain nécessiterait également une réorganisation de l'ensemble validator. De plus le nombre de validators, étant lié au carré du nombre de parachains, commencerait très petit au début et finirait par grandir loin trop rapide, devenant intenable après environ 50 parachains. Aucun de ces problèmes ne constitue un problème fondamental. Dans le premier cas, la réorganisation des ensembles validator est quelque chose qui doit être fait régulièrement de toute façon. Concernant la taille du validator défini, lorsqu'il est trop petit, plusieurs validator peuvent être attribués à la même parachain, en appliquant un facteur entier au total global de validators. Un mécanisme de routage multiphase tel que le routage Hypercube, discuté en 6.6.4 alléger l'exigence d'un grand nombre de validator lorsqu'il y a un grand nombre de chaînes. 6.7. Validation de la parachaine. L'objectif principal d'un validator est de témoigner, en tant qu’acteur soudé, que le le bloc est valide, y compris, mais sans s'y limiter, toute transition d'état, toutes transactions externes incluses, l'exécution de tous les messages en attente dans la file d'attente d'entrée et l'état final de la file d’attente de sortie. Le processus lui-même est assez simple. Une fois que le validator a scellé le bloc précédent, il est libre commencer à travailler pour fournir un bloc de parachain candidat candidat au prochain tour de consensus. Initialement, le validator trouve un candidat de bloc de parachain via un assembleur de parachain (décrit ci-dessous) ou un de ses co-validators. Les données candidates au bloc parachain inclut l’en-tête du bloc, l’en-tête du bloc précédent, toutes les données d'entrée externes incluses (pour Ethereum et Bitcoin, ces données seraient appelées transactions, mais en principe elles peuvent inclure des structures de données arbitraires à des fins arbitraires), des données de file d'attente de sortie et des données internes pour prouver la validité de la transition d'état (pour Ethereum il s'agirait des différents nœuds d'état/de stockage requis pour exécuter chaque transaction). Des preuves expérimentales montrent cet ensemble de données complet pour un bloc Ethereum récent être au maximum de quelques centaines de KiB. Simultanément, si ce n'est pas encore fait, le validator sera tenter de récupérer des informations relatives à la transition du bloc précédent, initialement à partir du bloc précédent validators et plus tard de tous les validators signant pour le disponibilité des données. Une fois que le validator a reçu un tel bloc candidat, ils le valident ensuite localement. Le processus de validation est contenu dans le module validator de la classe parachain, un module logiciel sensible au consensus qui doit être écrit pour toute implémentation de Polkadot (bien qu'en principe une bibliothèque avec un C ABI pourrait permettre à une seule bibliothèque de être partagé entre les implémentations avec les réduction de la sécurité due au fait de n’avoir qu’une seule implémentation « de référence »). Le processus prend l'en-tête du bloc précédent et vérifie son identité via la chaîne de relais récemment convenue. bloc dans lequel son hash doit être enregistré. Une fois la validité de l'en-tête parent vérifiée, la parachain spécifique La fonction de validation de la classe peut être appelée. Il s'agit d'une fonction unique acceptant un certain nombre de champs de données (environ ceux donnés précédemment) et renvoyant un simple booléen proclamant la validité du blocage. La plupart de ces fonctions de validation vérifieront d'abord des champs d'en-tête qui peuvent être dérivés directement de le bloc parent (par exemple parent hash, numéro). Suite cela, ils rempliront toutes les structures de données internes comme nécessaires au traitement des transactions et/ou des publications. Pour une chaîne de type Ethereum, cela revient à remplir un trie base de données avec les nœuds qui seront nécessaires pour le exécution complète des transactions. D'autres types de chaînes peuvent avoir autre pmécanismes de réparation. Une fois cela fait, les publications d'entrée et les transactions externes (ou tout ce que représentent les données externes) seront édictés, équilibrés selon les spécifications de la chaîne. (Un Une valeur par défaut raisonnable pourrait être d'exiger que toutes les publications entrantes soient traitées avant que les transactions externes ne soient traitées, mais cela devrait appartenir à la logique de la parachain de décider.) Grâce à ce texte, une série de postes de sortie seront créés et il sera vérifié que ceux-ci correspondent bien le candidat du assembleur. Enfin, le formulaire correctement renseigné l’en-tête sera vérifié par rapport à l’en-tête du candidat. Avec un bloc candidat entièrement validé, le validator peut alors voter pour le hash de son en-tête et envoyer toutes les informations de validation requises aux co-validator de son sous-groupe. 6.7.1. Collateurs Parachain. Les assembleurs de parachain sont des opérateurs non cautionnés qui remplissent une grande partie de la tâche des mineurs sur les réseaux blockchain actuels. Ils sont spécifiques à une parachain particulière. Pour fonctionner, ils doivent maintenir à la fois la chaîne de relais et le système entièrement synchronisé parachaine. La signification précise de « entièrement synchronisé » dépendra de la classe de la parachain, mais inclura toujours l'état actuel de la file d'attente d'entrée de la parachain. Dans le cas de Ethereum, cela implique également au moins de maintenir une base de données Merkle-tree des derniers blocs, mais pourrait incluent également diverses autres structures de données, notamment Bloom filtres pour l'existence du compte, les informations familiales, la journalisation sorties et tables de recherche inversée pour le numéro de bloc. En plus de maintenir les deux chaînes synchronisées, il doit également « pêcher » les transactions en maintenant une file d’attente des transactions et en acceptant les transactions correctement validées du réseau public. Avec la file d'attente et la chaîne, c'est capable de créer de nouveaux blocs candidats pour les validator choisis à chaque bloc (dont l'identité est connue puisque la chaîne de relais est synchronisée) et de les soumettre, avec les diverses informations annexes telles que la preuve de validité, via le réseau de pairs. Pour sa peine, il perçoit tous les frais relatifs aux transactions qu'il inclut. Diverses théories économiques flottent autour de cela arrangement. Dans un marché fortement concurrentiel où il existe s'il y a un surplus de collecteurs, il est possible que la transaction les frais seront partagés avec les parachain validators pour inciter l’inclusion d’un bloc d’assemblage particulier. De la même manière,
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 17 certains assembleurs peuvent même augmenter les frais requis à payer afin de rendre le bloc plus attractif pour validators. Dans ce cas, un marché naturel devrait se former avec des transactions payant des frais plus élevés, évitant la file d'attente et avoir une inclusion plus rapide dans la chaîne. 6.8. Réseautage. Réseautage sur les blockchain traditionnels comme Ethereum et Bitcoin a des exigences plutôt simples. Toutes les transactions et tous les blocages sont diffusés dans de simples potins non dirigés. La synchronisation est plus complexe, notamment avec Ethereum mais en réalité cette logique était contenue dans la stratégie des pairs plutôt que le protocole lui-même qui se résolvait autour de quelques types de messages de requête et de réponse. Alors que Ethereum a progressé sur les offres de protocoles actuelles avec le protocole devp2p, qui a permis de nombreuses les sous-protocoles doivent être multiplexés sur une seule connexion homologue et avoir ainsi la même superposition homologue prenant en charge de nombreux protocoles p2p simultanément, la partie Ethereum de le protocole restait encore relativement simple et le p2p le protocole reste pour l’instant inachevé avec d’importants fonctionnalités manquantes telles que la prise en charge de la QoS. Malheureusement, le désir de créer un protocole « Web 3 » plus omniprésent a échoué, les seuls projets qui l'utilisent étant ceux explicitement financé par la vente participative Ethereum. Les exigences pour Polkadot sont un peu plus substantielles. Plutôt qu'un réseau totalement uniforme, Polkadot compte plusieurs types de participants, chacun ayant des exigences différentes quant à la composition de leurs pairs et plusieurs réseaux. des « pistes » dont les participants auront tendance à discuter données particulières. Cela signifie une superposition de réseau beaucoup plus structurée – et un protocole prenant en charge cela – sera probablement nécessaire. En outre, l'extensibilité pour faciliter les ajouts futurs tels que de nouveaux types de « chaînes » peut eux-mêmes nécessitent une nouvelle structure de superposition. Lors d'une discussion approfondie sur la façon dont le réseautage Si le protocole peut paraître hors du champ d'application de ce document, certaines analyses des exigences sont raisonnables. Nous pouvons diviser grossièrement les participants de notre réseau en deux ensembles (chaîne relais, parachains) chacun des trois sous-ensembles. Nous pouvons indiquent également que chacun des participants à la parachain n'est que intéressés à converser entre eux plutôt que participants à d'autres parachains : • Acteurs de la chaîne relais : • Validateurs : P, divisé en sous-ensembles P[s] pour chacun parachaine • Garants de disponibilité : A (cela peut être représenté par des validateurs dans la forme de base du protocole) • Clients relais-chaîne : M (notez les membres de chaque l'ensemble de parachain aura également tendance à être membre de M) • Participants à la Parachain : • Collateurs Parachain : C[0], C[1], . . . • Pêcheurs Parachain : F[0], F[1], . . . • Clients Parachain : S[0], S[1], . . . • Clients légers Parachain : L[0], L[1], . . . En général, nous nommons des classes particulières de communication aura tendance à avoir lieu entre les membres de ces ensembles : • P | Un <-> P | R : Le plein ensemble de validators/garants doit être bien connecté à parvenir à un consensus. • P[s] <-> C[s] | P[s] : Chaque validator en tant que membre d'un groupe de parachain donné aura tendance à bavarder avec d'autres membres ainsi qu'avec les assembleurs de cette parachain pour découvrir et partager des candidats de bloc. • Un <-> P[s] | C | R : Chaque garant de disponibilité devra collecter des données inter-chaînes sensibles au consensus les données des validator qui lui sont attribués ; assembleurs peut également optimiser les chances de consensus sur leur bloquer en l'annonçant aux garants de disponibilité. Une fois qu'ils les auront, les données seront versées à autre garant pour faciliter le consensus. • P[s] <-> A | P[s'] : les Parachain validators seront Vous devez collecter des données d'entrée supplémentaires à partir de l'ensemble précédent de validator ou des garants de disponibilité. • F[s] <-> P : Lors de la déclaration, les pêcheurs peuvent placer une réclamation auprès de tout participant. • M <-> M | P | R : Les clients généraux de la chaîne de relais décaissent les données des validator et des garants. • S[s] <-> S[s] | P[s] | R : Les clients Parachain décaissent les données des validator/garants. • L[s] <-> L[s] | S[s] : clients légers Parachain décaisser les données des clients complets. Pour assurer un mécanisme de transport efficace, un « plat » réseau superposé, comme le devp2p de Ethereum, où chaque le nœud ne différencie pas (de manière non arbitraire) l’aptitude de ses Il est peu probable que les pairs conviennent. Un raisonnablement extensible le mécanisme de sélection et de découverte par les pairs nécessitera probablement à inclure dans le protocole ainsi que agressif planifier une analyse prospective pour garantir le bon type de pairs sont « par hasard » connecté au bon moment. La stratégie précise de composition par les pairs sera différente pour chaque classe de participants : pour une multi-chaînes, les assembleuses devront soit être continuellement se reconnecter aux validator élus en conséquence, ou besoin d'accords continus avec un sous-ensemble des validator pour s'assurer qu'ils ne sont pas déconnectés pendant la grande majorité du temps où ils sont inutiles pour ce validator. Les assembleurs tenteront aussi naturellement de maintenir un ou des connexions plus stables au garant de disponibilité mis en place pour assurer une propagation rapide de leurs messages sensibles au consensus données. Les garants de disponibilité viseront principalement à maintenir un connexion stable entre eux et avec les validator (pour le consensus et les données parachain critiques au consensus auxquelles ils l'attestent), ainsi qu'à certains assembleurs (pour la parachain données) et certains pêcheurs et clients à part entière (pour disperser informations). Les validateurs auront tendance à rechercher d'autres validator, en particulier ceux du même sous-groupe et tout autre validator. des assembleurs qui peuvent leur fournir des candidats au bloc parachain. Les pêcheurs, ainsi que les relais généralistes et parachaines les clients viseront généralement à maintenir une connexion ouverte à un validator ou garant, mais plein d'autres nœuds similaires à eux-mêmes autrement. Les clients légers de la Parachain viseront de la même manière à être connectés à un client complet de la parachain, sinon seulement d’autres clients légers parachain. 6.8.1. Le problème du désabonnement des pairs. Dans la proposition de protocole de base, chacun de ces sous-ensembles change constamment de manière aléatoire avec chaque bloc en tant que validators assignés pour vérifier les transitions de parachain sont élues au hasard. Cela peut être un problème si des nœuds disparates (non homologues) doivent transmettre des données entre eux. Il faut soit s'appuyer sur un réseau de pairs équitablement réparti et bien connecté pour
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 18 garantir que la distance de saut (et donc la latence dans le pire des cas) n'augmente qu'avec le logarithme de la taille du réseau (un protocole de type Kademlia [13] peut aider ici), ou il faut introduire des temps de blocage plus longs pour permettre la négociation de connexion nécessaire afin de conserver un ensemble d'homologues qui reflète les besoins de communication actuels du nœud. Aucune de ces solutions n’est excellente : de longs temps de blocage être imposé au réseau peut le rendre inutile pour applications et chaînes particulières. Même un parfaitement juste et le réseau connecté entraînera un gaspillage important de bande passante à mesure qu'elle évolue en raison des nœuds non intéressés ayant pour leur transmettre des données inutiles. Même si les deux directions peuvent faire partie de la solution, une optimisation raisonnable pour aider à minimiser la latence serait être de restreindre la volatilité de ces parachain validator ensembles, soit en réaffectant l'appartenance uniquement entre des séries de blocs (par exemple, en groupes de 15, qui à 4 secondes le temps de blocage signifierait modifier les connexions une seule fois par minute) ou en faisant tourner les membres de manière progressive, par ex. changeant par un membre à la fois (par exemple s'il y a y a-t-il 15 validator attribués à chaque parachain, alors en moyenne, cela prendrait une minute complète entre des ensembles). En limitant le taux de désabonnement des pairs et en garantissant que les connexions entre pairs avantageuses sont établies correctement dans avancer grâce à la prévisibilité partielle de la parachain ensembles, nous pouvons contribuer à garantir que chaque nœud conserve en permanence un sélection fortuite de pairs. 6.8.2. Chemin vers un protocole réseau efficace. Probablement le L'effort de développement le plus efficace et le plus raisonnable se concentrera sur l'utilisation d'un protocole préexistant plutôt que sur un protocole continu. le nôtre. Il existe plusieurs protocoles de base peer-to-peer qui nous pouvons utiliser ou augmenter, y compris le propre devp2p de Ethereum [22], libp2p [1] d'IPFS et GNUnet [4] de GNU. Un examen complet de ces protocoles et de leur pertinence pour construire un réseau de pairs modulaire prenant en charge certaines garanties structurelles, un pilotage dynamique par les pairs et des sous-protocoles extensibles dépasse largement la portée de ce document mais constituera un étape importante dans la mise en œuvre de Polkadot. 7. Aspects pratiques du Protocole 7.1. Paiement des transactions interchaînes. Alors qu'un grand Une certaine quantité de liberté et de simplicité est obtenue en supprimant le besoin d'un cadre de comptabilité holistique des ressources de calcul comme le gaz de Ethereum, cela soulève une question importante : sans gaz, comment peut-on parachain éviter qu'une autre parachain la force à faire du calcul ? Bien que nous puissions compter sur la file d'attente d'entrée après la transaction tampons pour empêcher une chaîne de spammer une autre avec données de transaction, il n'existe aucun mécanisme équivalent fourni par le protocole pour empêcher le spam du traitement des transactions. C'est un problème laissé au niveau supérieur. Depuis les chaînes sont libres d'attacher une sémantique arbitraire aux éléments entrants données post-transaction, nous pouvons garantir que le calcul doit être payé avant de commencer. Dans la même veine que le modèle épousé par Ethereum Serenity, nous pouvons imaginer un contrat de « rodage » au sein d’une parachain qui permet un validator pour garantir le paiement en échange du mise à disposition d'un volume particulier de ressources de traitement. Ces ressources peuvent être mesurées en quelque chose comme le gaz, mais il pourrait également s'agir d'un modèle entièrement nouveau tel qu'un délai d'exécution subjectif ou un modèle forfaitaire de type Bitcoin. En soi, cela n'est pas très utile car nous ne pouvons pas facilement supposer que l'appelant hors chaîne dispose de quel que soit le mécanisme de valeur reconnu par le cambriolage contrat. Cependant, on peut imaginer un contrat secondaire « en petits groupes » dans la chaîne d’approvisionnement. Les deux contrats ensemble formeraient un pont, se reconnaissant et fournissant une équivalence de valeur. (Jalonnement-tokens, disponible pour chacun, pourrait être utilisé pour régler la balance des paiements.) Faire appel à une autre chaîne de ce type signifierait utiliser un proxy par ce pont, qui fournirait les moyens de négocier le transfert de valeur entre les chaînes afin de payer les ressources de calcul requises sur la parachain de destination. 7.2. Supplémentaire Chaînes. Tandis que le ajout de un la parachain est une opération relativement bon marché, elle n’est pas gratuite. Plus de parachaines signifie moins de validators par parachaine et, éventuellement, un plus grand nombre de validator chacun avec un obligation moyenne réduite. Alors que le problème d'un coût de coercition moindre pour attaquer une parachain est atténué grâce à pêcheurs, l’ensemble croissant de validator force essentiellement un degré de latence plus élevé en raison de la mécanique du consensus sous-jacentthod. De plus, chaque parachain apporte avec lui le potentiel de chagriner les validator avec un algorithme de validation trop lourd. En tant que tel, il y aura un « prix » qui validators et/ou la communauté des parties prenantes extraira pour le ajout d'une nouvelle parachaine. Ce marché des chaînes va voir éventuellement l'ajout de soit : • Les chaînes qui n'ont probablement aucune contribution nette à payer (en termes de verrouillage ou de brûlage de staking token) à en faire partie (par exemple, les chaînes de consortium, Doge-chains, chaînes spécifiques à une application) ; • des chaînes qui apportent une valeur intrinsèque au réseau en ajoutant des fonctionnalités particulières difficiles pour aller ailleurs (par exemple, confidentialité, évolutivité interne, liens de service). Essentiellement, la communauté des parties prenantes devra être incité à ajouter des chaînes enfants – que ce soit financièrement ou par la volonté d'ajouter des chaînes fonctionnelles au relais. Il est prévu que les nouvelles chaînes ajoutées auront un effet très délai de préavis court pour le retrait, permettant aux nouvelles chaînes de être expérimenté sans aucun risque de compromis la proposition de valeur à moyen ou long terme. 8. Conclusion Nous avons décrit une direction que l'on peut prendre pour rédiger un protocole multi-chaînes évolutif et hétérogène avec le potentiel d'être rétrocompatible avec certains protocoles préexistants Réseaux blockchain. Dans le cadre d'un tel protocole, les participants travailler dans un intérêt personnel éclairé pour créer un système global qui peut être étendu d'une manière exceptionnellement libre et sans le coût typique pour les utilisateurs existants qui provient d'une conception standard blockchain. Nous avons donné un aperçu de l'architecture qu'il faudrait, y compris la nature des participants, leurs incitations économiques et les processus dans lesquels ils doivent s'engager. Nous avons identifié une conception de base et discuté de ses points forts et limites; en conséquence, nous avons d'autres instructions qui peut atténuer ces limitations et céder du terrain vers une solution blockchain entièrement évolutive.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 19 8.1. Matériel manquant et questions ouvertes. La bifurcation du réseau est toujours une possibilité en raison d'implémentations divergentes du protocole. La guérison d'un tel la condition exceptionnelle n’a pas été discutée. Étant donné que le réseau aura nécessairement une période de finalisation non nulle, la récupération après la bifurcation de la chaîne de relais ne devrait pas poser de problème majeur, mais cela nécessitera une intégration minutieuse dans le protocole de consensus. La disposition relative à la confiscation des cautions et, à l'inverse, à la récompense a été n’a pas été exploré en profondeur. À l'heure actuelle, nous supposons des récompenses sont fournis selon le principe du gagnant qui remporte tout : cela peut ne pas offrir le meilleur modèle d’incitation aux pêcheurs. Un processus d'engagement-révélation de courte durée permettrait à de nombreux pêcheurs réclamer le prix en donnant une répartition plus équitable des récompenses, cependant, le processus pourrait entraîner une latence supplémentaire dans le découverte d'une mauvaise conduite. 8.2. Remerciements. Un grand merci à tous les les correcteurs qui ont aidé à mettre cela dans une vague forme présentable. En particulier, Peter Czaban, Bjorn Wagner, Ken Kappler, Robert Habermeier, Vitalik Buterin, Reto Trinkler et Jack Petersson. Merci à tous les personnes qui ont apporté des idées ou les débuts parmi eux, Marek Kotewicz et Aeron Buchanan méritent une mention particulière. Et merci à tous les autres pour leur aide en cours de route. Toutes les erreurs sont les miennes. Certaines parties de ce travail, y compris la recherche initiale sur algorithmes de consensus, a été financé en partie par les Britanniques Gouvernement dans le cadre du programme Innovate UK.
プロトコルの詳細
プロトコルは大きく 3 つに分類できます。 部分: コンセンサスメカニズム、パラチェーンインターフェイス そしてチェーン間トランザクションルーティング。 6.1.リレーチェーン 操作。の リレーチェーン するだろう おそらく、Ethereum とほぼ同様のチェーンである可能性があります。 アドレスをアカウントにマッピングする状態を伴う状態ベースです 情報、主に残高と(リプレイを防ぐため) トランザクションカウンター。ここにアカウントを配置することで、アイデンティティが持つアカウントを提供するという 1 つの目的が達成されます。 システム内のステークの量。7 ただし、顕著な違いがあります。 • コントラクトはトランザクションを通じて展開できません。リレーチェーン上のアプリケーション機能を回避したいという要望から、それは行われません。 契約の公的展開をサポートします。 • コンピューティング リソースの使用量 (「ガス」) は考慮されません。 公的に使用できる唯一の機能であるため、 ガス会計の背後にある理論的根拠は修正されるでしょう もう成立しません。そのため、定額料金が適用されます すべてのケースで、より高いパフォーマンスを可能にします。 動的コードの実行が必要になる場合があります よりシンプルなトランザクション形式。 • リストされたコントラクトでは、自動実行とネットワークメッセージ出力を可能にする特別な機能がサポートされています。 リレーチェーンに VM があり、それが EVM をベースにしているため、最大限の簡素化を実現するために多くの変更が加えられています。 おそらく 多くの組み込みコントラクトがあります ( Ethereum のアドレス 1 ~ 4) を使用して、プラットフォーム固有の コンセンサス契約を含む管理すべき義務、 validator コントラクトとパラチェーン コントラクト。 EVM でない場合は、WebAssembly [2] (wasm) バックエンドが最も可能性の高い代替手段です。この場合は全体的に 構造は似ていますが、その必要はありません Wasm が実行可能なターゲットである組み込みコントラクトの場合 未熟な言語ではなく汎用言語向け EVM の言語は限定されています。 現在の Ethereum プロトコルからのその他の逸脱も十分に考えられます。たとえば、 同じブロック内で競合しないトランザクションを並列実行できるトランザクション受信形式。 Serenity シリーズの変更で提案されているとおりです。 可能性は低いですが、セレニティのようなものである可能性があります。 「純粋な」チェーンをリレー チェーンとして展開できるため、 staking token のようなものを管理するための特定の契約 それを基本的な部分にするのではなく、バランスを取る チェーンのプロトコル。現時点では、その可能性は低いと考えています 十分に優れたプロトコルの簡素化を提供します。 さらなる複雑さと不確実性が伴う価値がある それを開発する上で。 7 特定の保有者がシステム全体のセキュリティに対して責任を負う金額を表す手段として、これらのステーク アカウントは、 必然的に何らかの経済的価値をエンコードします。ただし、このような値を使用する意図はありませんので、ご理解ください。 いかなる方法であっても、現実世界の商品やサービスと交換することを目的とする場合、token を次のものに喩えるものではないことに注意してください。 通貨であるため、リレーチェーンはアプリケーションに関する虚無的な哲学を保持しています。POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 10 コンセンサス メカニズム、validator セット、検証メカニズム、およびパラチェーンを管理するために必要な機能の小さな部分が多数あります。これら モノリシックプロトコルの下で一緒に実装できます。ただし、モジュール性を高めるため、これらをリレーチェーンの「契約」と呼びます。これは、 それらはオブジェクトであることを意味すると解釈されます(という意味で) オブジェクト指向プログラミング)はリレーチェーンのコンセンサスメカニズムによって管理されますが、必ずしもそうではありません これらは、EVM のようなオペコードのプログラムとして定義されていません。 たとえそれらが アカウントシステム。 6.2.ステーキング契約。このコントラクトは validator セットを維持します。以下を管理します。 • 現在 validator であるアカウント。 • 短くするとvalidatorsになる可能性があります 気づいてください。 • どのアカウントが指名権を賭けているか validator; • staking ボリューム、許容可能なペイアウト率とアドレス、および短期 (セッション) ID を含むそれぞれのプロパティ。 アカウントがなりたいという願望を登録できるようになります。 結合された validator (その要件とともに)、何らかのアイデンティティを指名し、既存の結合された validator がこのステータスを終了する希望を登録します。それも 検証および正規化メカニズムのための機構自体が含まれています。 6.2.1.ステーク - token 流動性。一般的に望ましいのは、 合計 staking token をできるだけ多くする ネットワーク保守業務に関与して以来 これは、ネットワーク セキュリティを staking token 全体の「時価総額」に直接結び付けることになります。これは簡単にできます 通貨を吊り上げ、validator として参加する人に収益を分配することでインセンティブが与えられます。ただし、これを行うと問題が発生します。token 減額の罰を受けてステーキングコントラクトに固定されているのに、どうすればかなりの部分が十分に残るのでしょうか 価格発見を可能にするために液体を使用しますか? これに対する 1 つの答えは、単純なデリバティブ契約を許可し、基礎となるステーク済み token 上で代替可能な token を確保することです。これを信頼性のない方法で手配するのは困難です。 さらに、これらのデリバティブ token は、異なるユーロ圏政府の債券が代替不可能であるのと同じ理由で同等に扱うことができません。 原資産が故障して、 無価値。ユーロ圏各国政府では、 デフォルト。 validator でステーキングされた token では、validator が 悪意を持って行動し、罰せられます。 私たちの理念に従い、すべての token を賭けるわけではないという最も単純な解決策を選択します。これはつまり、 token の一部 (おそらく 20%) は強制的に液体のままになります。これはセキュリティの観点からは不完全ですが、根本的な違いを生む可能性は低いです。 ネットワークのセキュリティ。保釈金没収によって可能な賠償金の80%はまだ支払えるだろう 100% staking の「完璧なケース」と比較します。 ステーキングされたtokenとリキッドtokenの比率は、リバース オークション メカニズムを通じて非常に簡単に目標とすることができます。 基本的に、token 保有者は、validator になることに興味があります。 それぞれが、staking 契約に次のようなオファーを投稿します。 要求される最低ペイアウト率 部分。 各セッションの開始時 (セッションは 定期的に、おそらく 1 時間に 1 回程度の頻度で発生します) validator スロットは、それぞれの希望に応じて埋められます validator の賭け金とペイアウト率。考えられるアルゴリズムの 1 つ というのは、これは最低のオファーを持った人たちを採用することになるからです。 目標とする合計賭け金を超えない賭け金を表す スロット数で割った値であり、その半分の下限以上となります。スロットが埋まらない場合は、 下限は、満足するために、何らかの係数によって繰り返し削減される可能性があります。 6.2.2.指名する。信頼性の高い指名が可能 staking token をアクティブな validator に与えます。 validator の職務の責任。作品のノミネート 承認投票システムを通じて。各推薦者候補者は、staking 契約に指示を投稿できます。 1 つ以上の validator アイデンティティを表現し、その下に 彼らは自分たちの絆を託す用意があるという責任を持っています。 各セッションでは、推薦者の絆が分散されます。 1 つ以上の validator で表されます。分散アルゴリズムは、合計が等しい validator のセットを最適化します。 絆。指名者の債券は、validator a の有効な責任の下に置かれます。利息を得るか、苦しむか それに応じて刑罰も軽減される。 6.2.3.保証金の没収/バーニング。特定のvalidator行動により、懲罰的に絆が減らされます。もし ボンドが許容最小値を下回った場合、 セッションが途中で終了し、別のセッションが開始されました。罰せられるvalidatorの不正行為のリストはすべてではありませんが、次のとおりです。 • パラチェーングループの一員であるため、提供できない パラチェーンブロックの有効性についてのコンセンサス。 • 無効なファイルの有効性を確認するために積極的に署名する。 パラチェーンブロック。 • 以前は出力ペイロードを提供できなかった 利用可能として投票しました。 • 合意プロセス中の非アクティブ。 • 競合するフォーク上のリレーチェーンブロックを検証する。 不正行為の一部のケースでは、ネットワークの完全性が脅かされ(無効なパラチェーン ブロックへの署名やフォークの複数の側面の検証など)、その結果、ボンドの全体的な削減を通じて実質的な追放が発生します。で その他、それほど深刻ではないケース (例: コンセンサスにおける不活動) プロセス)、または責任を正確に割り当てることができない場合(非効率なグループの一員である場合)、ごく一部 代わりに、債券の全額に罰金が課される場合があります。後者の場合、これは サブグループのチャーンとうまく連携して、悪意のある行為が確実に行われるようにします。 ノードは、巻き添えで被害を受けた善良なノードよりも大幅に多くの損失を被ります。 場合によっては (マルチフォーク検証や無効な場合など) サブブロック署名) validator は定期的に検証されるため、互いの不正行為をそれ自体で簡単に検出できません。 各パラチェーンブロックの作成は非常に困難な作業になります。ここ 社外の関係者の支援を得る必要がある そのような不正行為を検証して報告するための検証プロセス。当事者は、そのような活動を報告すると報酬を受け取ります。彼らの「漁師」という言葉は、ありそうもないことに由来しています。 そのような報酬の。 通常、これらの事件は非常に深刻であるため、私たちは、没収された保証金から報酬が簡単に支払われることを想定しています。 一般に、燃焼のバランスをとることを好みます。 (つまり、ゼロに減らす) ではなく、再割り当てを使用します。 大規模な再配分を試みています。これには次のような効果があります
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 11 token の全体的な値を増やし、 特定のネットワークではなく、ある程度のネットワーク全般 発見に関与した当事者。 これは主に安全のためです メカニズム: 大量のものが関与するため、すべてが揃った場合、極端かつ急性の行動の奨励につながる可能性があります。 単一の対象に与えられます。 一般に、報酬は、ネットワークにとって検証を価値のあるものにするのに十分な額であることが重要ですが、ネットワークのフロントにかかるコストを相殺できるほど大きくないことが重要です。 資金力があり、巧妙に組織された「業界レベル」の犯罪者 不運な validator に対してハッキング攻撃を行い、不正行為を強制します。 このようにして、請求額は通常、ゼロになるはずです。 誤ったvalidatorの直接結合より大きい。 不正行為をしたり、報奨金を得るために自分自身を報告したりすることによって生じる倒錯的なインセンティブ。これは明示的に対処できます になるための最低直接債券要件を通じて validator または、保証金がほとんど預けられていない validator には大きなインセンティブがないことを推薦者に教育することによって暗黙的に 行儀よく振る舞うこと。 6.3.パラチェーンレジストリ。各パラチェーンは次のように定義されます。 このレジストリ。これは比較的単純なデータベースのような構造であり、静的情報と動的情報の両方を保持します。 各チェーン。 静的情報には、チェーン インデックス (単純な 整数)、検証プロトコル ID とともに、 異なるクラスを区別する手段 パラチェーンを使用することで、正しい検証アルゴリズムを実現できます。 有効な候補者を推薦するよう委託されたvalidatorsによって運営されています。最初の概念実証では、配置に焦点を当てます。 新しい検証アルゴリズムがクライアント自体に組み込まれるため、事実上、毎回プロトコルのハードフォークが必要になります。 チェーンの追加クラスが追加されました。結局のところ、 検証アルゴリズムを指定できる場合があります。 クライアントが安心して利用できるよう、厳密かつ効率的な方法です。 新しいパラチェーンを効果的に操作できる ハードフォーク。これに対する考えられる手段の 1 つは、次のように指定することです。 十分に確立されたパラチェーン検証アルゴリズム、 WebAssembly など、ネイティブにコンパイルされたプラットフォームに依存しない言語。判断するには追加の調査が必要です これが本当に実現可能かどうかはわかりませんが、もし可能であれば、 これにより、ハードフォークを排除するという大きな利点が得られます 永遠に。 動的情報には、グローバルな合意が必要なトランザクション ルーティング システムの側面が含まれます。 パラチェーンの入力キューとして(セクション6.6で説明)。 レジストリにはパラチェーンのみを追加できます 国民投票の完全な投票を通じて。これはなんとかなるだろう 内部に配置されますが、外部に配置される可能性が高くなります。 再利用を容易にするための住民投票契約 より一般的なガバナンスコンポーネント。パラメータは 投票要件 (例: 必要な定足数、過半数 必須)追加チェーンの登録など、 あまり正式ではないシステムのアップグレードは「マスター」で規定されます。 憲法」に従うが、かなり伝統的なものに従う可能性が高い 少なくとも最初はパス。正確な配合はできていない 現在の作業の範囲ですが、例:システム全体の 3 分の 1 以上で可決する 3 分の 2 の圧倒的多数 積極的に投票することが賢明な出発点かもしれません。 追加の操作には、パラチェーンの一時停止と削除が含まれます。 サスペンションは願わくば決してないでしょう しかし、それは最低限の安全策として設計されています パラチェーンの検証システムには解決しがたい問題があります。それが起こる可能性がある最も明白な例は、 必要なのは、実装間のコンセンサスが重要な違いであるため、validator は同意できない 有効性またはブロック。バリデーターは使用することをお勧めします。 複数のクライアント実装を可能にするために 保釈金を没収される前にそのような問題を発見すること。 停止は緊急措置なので、 むしろ動的なvalidator投票の後援の下で 住民投票よりも。再インストールはどちらも可能です validators または住民投票から。 パラチェーンの完全な除去は、 国民投票の後、それに伴い、 ~への秩序ある移行を可能にするための実質的な猶予期間 スタンドアロンのチェーンか、他のチェーンの一部になるかのどちらか コンセンサスシステム。 猶予期間はおそらく次のとおりです 数か月のオーダーで、異なる順序でパラチェーン レジストリにチェーンごとに設定される可能性があります。 パラチェーンは、以下に応じてさまざまな猶予期間を楽しむことができます。 彼らの必要性。 6.4.リレーブロックの密閉。シーリングとは、本質的には、 正規化のプロセスへ。つまり基礎データです どれを変換するオリジナルを根本的に特異で意味のあるものにマッピングします。 PoW チェーンの下では、 封印は事実上採掘と同義です。私たちの場合、 これには、validators からの、有効性、可用性、正規性に関する署名付きステートメントの収集が含まれます。 特定のリレーチェーン ブロックとパラチェーン ブロック それは表します。 基礎となる BFT コンセンサス アルゴリズムの仕組みは、現在の作業の範囲外です。 させていただきます 代わりに、を想定するプリミティブを使用してそれを記述します。 合意形成ステートマシン。最終的に私たちが期待するのは、 多くの有望なBFTコンセンサスに触発される コア内のアルゴリズム。 Tangaora [9] (BFT の亜種) ラフト [16])、テンダーミント [11]、ハニーバジャーBFT [14]。 アルゴリズムは複数のパラチェーンで並行して合意に達する必要があるため、通常のアルゴリズムとは異なります。 blockchain コンセンサス メカニズム。一度は コンセンサスに達した場合、そのコンセンサスを記録することができます 以下のいずれかによって提供できる反駁できない証拠において 参加者はそれに参加します。不正行為も想定されます プロトコル内では通常、小さな値に減らすことができます。 不正行為を行った参加者を含むグループを最小限に抑える 罰を与える際の巻き添え被害。8 私たちの署名済みステートメントの形式をとった証明は、リレーチェーンブロックのヘッダーに一緒に配置されます 他の特定のフィールド、特にリレーチェーンのステートトライルートとトランザクショントライルート。 の 封印 プロセス かかります 場所 下 ある 独身 合意形成 仕組み アドレス指定 両方 の リレーチェーンのブロックとパラチェーンのブロック リレーのコンテンツの一部: パラチェーンはサブグループによって個別に「コミット」されてから照合されるわけではありません 後で。これにより、リレーチェーンのプロセスがより複雑になりますが、システム全体のコンセンサスを 1 つの段階で完了できるため、遅延が最小限に抑えられ、 非常に複雑なデータ可用性要件に対応します。 以下のルーティング プロセスに役立ちます。 8 Tendermint BFT やオリジナルの Slasher などの既存の PoS ベースの BFT コンセンサス スキームは、これらの主張を満たしています。
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 12 各参加者のコンセンサスマシンの状態は、 単純な (2 次元) テーブルとしてモデル化できます。各参加者 (validator) は、次の形式で一連の情報を持っています。 各パラチェーン ブロック候補およびリレーチェーン ブロック候補に関する他の参加者からの署名付きステートメント (「投票」) の合計。情報のセットは 2 つです データの: 可用性: あります これ validator 持っています 出口 このブロックからのトランザクションポスト情報なので、 次のブロックのパラチェーン候補を適切に検証できますか?彼らは投票するかもしれない 1 (既知) または 0 (まだ不明)。かつて彼らは 1 票を投じる場合、彼らは同様に投票することを約束します。 このプロセスの残りの部分。そうでない後の投票 これが処罰の理由であることを尊重してください。 有効性: パラチェーン ブロックは有効であり、すべて有効です。 外部参照データ (例: 取引) 利用可能ですか?これは、投票しているパラチェーンに割り当てられている validator にのみ関係します。 1 (有効)、-1 (無効)、または 0 のいずれかに投票できます。 (まだ知られていません)。一度非ゼロに投票すると、 残りの期間もこの方法で投票することを約束します プロセス。これを尊重しない後の投票 が処罰の根拠となります。 すべての validator は投票を提出する必要があります。投票は上記のルールに従って再提出することができます。の進行状況 コンセンサスは、各パラチェーン上で並行して発生する複数の標準 BFT コンセンサス アルゴリズムとしてモデル化できます。これらは相対的な要因によって潜在的に妨げられるため、 少数の悪意のある攻撃者が集中している 単一のパラチェーン グループでは、全体的なコンセンサスが存在します。 バックストップを確立し、最悪のシナリオを制限します。 1 つまたは複数の無効なパラチェーン ブロックのみでデッドロック (および 責任者には一連の懲罰を科す)。 個々のブロックの有効性に関する基本規則 (これにより、validator の合計セットが全体として次のようになります) 独自のパラチェーン候補となることで合意 正規リレーから参照されます): • validator の少なくとも 3 分の 2 が肯定的に投票し、否定的に投票する人がいない必要があります。 • 出力キュー情報の利用可能性に肯定的に投票している validator が 3 分の 1 を超えている必要があります。 有効性に関して少なくとも 1 つの肯定的な投票と少なくとも 1 つの否定的な投票がある場合、例外条件が作成されます。 validator のセット全体が投票して決定する必要があります 悪意のある当事者がいる場合、または事故があった場合 フォーク。有効・無効以外の第三の投票 これは両方に投票することと同等です。つまり、 ノードには矛盾した意見があります。この原因として考えられるのは、 ノードの所有者は複数の実装を実行しています。 一致しない場合は、プロトコルに曖昧さがある可能性があることを示しています。 すべての投票が完全な validator セットからカウントされた後、次の場合 負けた意見は少なくともある程度の割合を占める( パラメータ化される。多くても半分、おそらく大幅に少ない) 勝利意見の投票のうち、次のように仮定されます。 偶発的にパラチェーンがフォークされた場合、パラチェーンはコンセンサスプロセスから自動的に一時停止されます。そうでない場合は、悪質な行為とみなし、処罰します。 反対意見に投票した少数派。 結論は、次のことを示す一連の署名です。 正規性。その後、リレーチェーンブロックを密閉することができます そして次のブロックを封印するプロセスが始まりました。 6.5.シールリレーブロックの改良。その間 このシール方法はシステムの動作を強力に保証しますが、スケールアウトはあまりうまくいきません すべてのパラチェーンの鍵情報には、 すべての validator の 3 分の 1 以上で可用性が保証されています。 これは、すべての validator の責任の足跡が チェーンが追加されると増加します。 オープンコンセンサスネットワーク内でのデータの可用性 これは本質的に未解決の問題ですが、validator ノードにかかるオーバーヘッドを軽減する方法はあります。シンプルな 1 つの 解決策は、validators が負担しなければならないことを認識することです データの可用性に対して責任を負うため、データ自体を実際に保存、通信、複製する必要はありません。 セカンダリ データ サイロ。おそらく関連する (あるいは、まさに 同じ)このデータを編集する照合者は、 validator が利息/収入の一部を支払いとして提供することで、利用可能性を保証するというタスク。 ただし、これによりある程度の中間的なスケーラビリティは得られるかもしれませんが、それでも根本的な問題の解決にはなりません。それ以来 チェーンを追加するには、通常、追加の validator が必要となり、継続的なネットワーク リソースの消費 (特に帯域幅の点で) は の 2 乗で増加します。 の鎖は長期的には維持できない性質です。 結局のところ、我々は頭を打ち続けることになるだろう という基本的な制限に反して、 安全に利用できるとみなされるコンセンサスネットワーク、 継続的な帯域幅要件は合計のオーダーに相当します validators 倍の合計入力情報。これは次の理由によるものです 信頼できないネットワークでは、データ ストレージのタスクを多くのノードに適切に分散できず、 処理という非常に分散可能なタスクは別として。 6.5.1.レイテンシーの紹介。これを和らげる一つの手段 ルールは、即時性の概念を緩和することです。 可用性に関して 33%+1 validators の投票をすぐにではなく最終的にのみ要求することで、指数関数的なデータ伝播をより効果的に活用し、データ交換のピークを平準化することができます。 合理的な平等(証明されていないが) 次のようになります: (1) レイテンシ = 参加者 × チェーン 現在のモデルでは、システムのサイズが拡大します 処理が確実に行われるようにチェーンの数を設定します。 配布された。各チェーンには少なくとも 1 つの validator が必要であり、可用性証明書を定数に固定するためです。 validator の割合が増加すると、参加者も同様に増加します チェーンの数で。最終的には次のようになります。 (2) レイテンシ = サイズ2 つまり、システムが成長するにつれて、必要な帯域幅と可用性が得られるまでの遅延がシステム全体で判明します。 ネットワーク。番号としても特徴付けられます。 ファイナリティ前のブロックの数は、その二乗に応じて増加します。これは これは実質的な成長要因であるが、それが顕著な障害となり、私たちを「非フラット」パラダイムに追い込む可能性がある 複数の「Polkadot」を階層に構成するなど リレーチェーンのツリーを介したポストのマルチレベルルーティング用。
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 13 6.5.2.一般参加。もう一つ考えられる方向性 それは、プロセスへの一般の参加を求めることです。 マイクロクレームシステム。漁師と同じように、 主張するvalidatorを取り締まる外部の関係者である可能性があります 可用性。 彼らの任務は、そのような能力を証明できないと思われる人物を見つけることです。 そうすることで彼らは 他の validator に対してマイクロ苦情を申し立てることができます。捕虜か シビル攻撃を軽減するためにステーキングボンドが使用される可能性があります そうなるとシステムはほとんど役に立たなくなります。 6.5.3.可用性の保証者。最終的なルートは次のとおりです 結合された validator の 2 番目のセットを「可用性」として指名します。 保証人」。これらは通常の validator と同様に結合され、同じセットから取得されることもあります (ただし、その場合、少なくともセッションごとに、長期にわたって選択されることになります)。通常の validator とは異なり、 パラチェーン間で切り替えるのではなく、 すべての重要なチェーン間データの可用性を証明するために単一のグループを形成します。 これには、参加者とチェーン間の等価性が緩和されるという利点があります。 基本的に、チェーンは次のことができます。 (元のチェーン validator セットとともに) 成長しますが、 参加者、特にデータ可用性の証明に参加する人々は、少なくとも準線形性を維持できます。 そしておそらく一定です。 6.5.4.照合者の設定。この重要な側面の 1 つは、 このシステムは、健全な選択が行われることを保証することを目的としています。 特定のパラチェーンでブロックを作成するコレーター。もし 単一の照合者がパラチェーンを支配し、その後いくつかの攻撃を行った が不足する可能性が高いため、より実現可能になります。 外部データの利用可能性はそれほど明らかではありません。 1 つのオプションは、パラチェーン ブロックに人工的に重み付けすることです。 さまざまな照合者を優先するための擬似ランダム メカニズム。まず第一に、次のようにします。 validators が支持するコンセンサス メカニズムの一部として パラチェーンブロック候補は「より重い」と判定されました。 同様に、validator に次のことを試みるよう奨励する必要があります。 見つけられる最も重いブロックを提案します。これはおそらく これは、報酬の一部を候補者の体重に比例させることで行われます。 照合者に合理的な公平性が与えられるようにするため 彼らの候補者が勝利者として選ばれる可能性 候補者が合意に達した場合、私たちは特定の重要性を決定します。 パラチェーンブロック候補は、各照合器に接続されたランダム関数で決定されます。 たとえば、 照合者の住所間の XOR 距離測定値 および暗号的に安全な擬似乱数 ブロックが作成されるポイントの近くで決定される (概念的な「当たりチケット」)。これにより、それぞれに効果的な効果が得られます。 照合者 (より具体的には、各照合者の住所) 候補ブロックが「勝つ」ランダムな確率 他のすべて。 単一の照合者によるシビル攻撃を軽減するために、当選チケットに近いアドレスを「マイニング」し、 各ブロックをお気に入りにするには、照合者のアドレスに慣性を追加します。これは、それらを要求するのと同じくらい簡単かもしれません アドレスにベースライン金額の資金が含まれていること。さらに エレガントなアプローチは、 に駐車した金額の当選チケット 問題のアドレス。まだモデリングは終わっていないのですが、 このメカニズムにより、非常に 小規模な利害関係者が照合者として貢献します。 6.5.5.太り過ぎのブロック。 validator セットが侵害された場合、ブロックを作成して提案する可能性がありますが、 有効ですが、実行に膨大な時間がかかり、 検証します。 validator グループは次のような可能性があるため、これは問題です。 非常に長い時間がかかるブロックを合理的に形成する ショートカットを許可する特定の情報がすでにわかっている場合を除き、実行します。大きな因数分解 プライム。 もし 1 人の照合者がその情報を知っていたとしたら、 彼らは自分たちで手に入れたほうが明らかに有利だろう 他の候補者は、古いブロックの処理で忙しい限り受け入れられました。これらのブロックをオーバーウェイトと呼びます。 これらのブロックの送信と検証を行う validator に対する保護は、主に、 無効なブロックですが、追加の警告があります: ブロックの実行にかかった時間 (およびそのステータス) 太りすぎ)は主観的なものであり、投票の最終結果は 不正行為は基本的に 3 つのグループに分類されます。 1 つ 可能性としては、ブロックが明らかに太りすぎではないということです。 この場合、3分の2以上が「できる」と宣言している。 ある制限内でブロックを実行します (例: ブロック間に許可される合計時間の 50%)。 もう一つは、 ブロックはdです間違いなく太りすぎです。これは、以下の場合に当てはまります。 3 分の 2 がブロックを実行できなかったと宣言 上記制限内で。 最後の可能性はほぼ等しいです validator の間で意見が分かれています。この場合、私たちは、 相応の罰を与えることを選択します。 validator がいつそうなるかを確実に予測できるようにするため オーバーウェイトブロックを提案する場合、各ブロックのパフォーマンスに関する情報を公開するよう要求するのが賢明かもしれません。十分な期間を経て、 これにより、処理速度のプロファイリングが可能になるはずです 彼らを判断するであろう仲間と比較して。 6.5.6.コレーター保険。 validators には次の問題が 1 つ残っています。 PoW ネットワークとは異なり、照合者の 有効性を確保するためにブロックを作成するには、実際にその中でトランザクションを実行する必要があります。悪意のある照合者は、無効なブロックや重量超過のブロックを validator にフィードして、彼らを苦しめる (無駄な) 可能性があります。 彼らのリソース)、潜在的にかなりの機会費用がかかることになります。 これを軽減するために、私たちは、 validator の一部。まず、パラチェーンブロック候補が送信されました validator へはリレー チェーン アカウントから署名する必要があります 資金を使って。そうでない場合は、validator がドロップされるはずです それはすぐに。第二に、そのような候補は、次の組み合わせ(乗算など)によって優先順位を付ける必要があります。 アカウント内の資金の量が一定の上限まで、 照合者が過去に提案に成功した以前のブロックの数 (以前のブロックは言うまでもありません) 罰)、および勝利への近接要因 前述したようにチケット。キャップも同じはず この事件でvalidatorに支払われた懲罰的損害賠償金として うちは無効なブロックを送信しています。 照合者が無効または過大なブロック候補を validator に送信することを妨げるために、validator は次のことを行うことができます。 次のブロックに、不正行為を主張する問題ブロックを含むトランザクションを配置し、不正行為を行った照合者の資金の一部または全部を転送する 被害を受けたvalidatorにアカウントを送信します。 このタイプのトランザクションは、照合者が確実に実行できないように、他のトランザクションよりも優先して実行されます。 処罰の前に資金を削除してください。の量 損害賠償として送金される資金はまだ動的パラメータです
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 14 モデル化される予定ですが、引き起こされた悲しみのレベルを反映するvalidatorブロック報酬の割合になる可能性があります。へ 悪意のある validator が照合者の資金を恣意的に没収するのを防ぐため、照合者はその代わりにランダムに選ばれた validator からなる陪審を招いて validator の決定に対して上訴することができます 少額の入金のため。 彼らが validator に有利であると判断した場合、デポジットは彼らによって消費されます。そうでない場合は、 デポジットは返還され、validator には罰金が科せられます( validator ははるかにアーチ型の位置にあり、罰金は おそらくかなり重いでしょう)。 6.6.インターチェーン トランザクション ルーティング。インターチェーン トランザクション ルーティングは重要なメンテナンスの 1 つです リレーチェーンのタスクとそのvalidator。 これは、 投稿されたトランザクション (多くの場合、単に「投稿」と短縮される) が望ましい出力になるまでの過程を制御するロジック あるソースパラチェーンから、信頼を持たない別の宛先パラチェーンの交渉不可能な入力になるまで 要件。 上記の文言は慎重に選択しています。特に私たちは ソース内にトランザクションが存在する必要はありません parachain はこの投稿を明示的に承認しました。唯一の 私たちがモデルに課す制約は、パラチェーンです。 ブロック全体の一部としてパッケージ化して提供する必要があります 処理出力、その結果である投稿 ブロックの実行。 これらのポストは、複数の FIFO キューとして構造化されています。の リストの数はルーティング ベースとして知られており、 およそ 16。注目すべきことに、この数字は数量を表します。 に頼ることなくサポートできるパラチェーンの数 マルチフェーズルーティング。当初、Polkadot はこれをサポートします 一種の直接ルーティングですが、考えられる 1 つの概要を説明します。 手段としてのマルチフェーズ配線プロセス (「ハイパー配線」) パラチェーンの初期セットをはるかに超えてスケールアウトします。 私たち 仮定する それ すべて 参加者 知っています の 次の 2 つのブロック n、n + 1 のサブグループ化。要約すると、 ルーティング システムは次の段階に従います。 • CollatorS: Validators[n][S] のメンバーに連絡します。 • CollatorS: サブグループごとに: で確認します。 V alidators[n][s] の少なくとも 1 人のメンバーが接触中 • コレーター: 各サブグループについて: 仮定する egress[n −1][s][S] が利用可能です (すべての受信ポスト 最後のブロックから「S」へのデータ) • コレーター: S のブロック候補 b を構成します。 (b.header、b.ext、b.proof、b.receipt、b.egress) • コレーター: 送信 証拠 情報 proof[S] = (b.header、b.ext、b.proof、b.receipt) から バリデーター[n][S] • CollatorS: 外部トランザクション データ b.ext を保証します。 他の照合者とvalidatorが利用できるようになります • コレーター: のための それぞれ サブグループ s: 送信 出口 情報 出口[n][S][s] = (b.header、b.receipt、b.egress[s]) に の 受信 サブグループの メンバー の 次へ ブロック バリデータ[n + 1][s] • ValidatorV : すべての同じセットのメンバーを事前接続します 次のブロックの場合: N = Chain[n + 1][V ]; とします。接続する Chain[n + 1][v] = N となるすべての validators v • バリデーター V : このためのすべてのデータ入力を照合します ブロック: のための それぞれ サブグループ s: 取得 egress[n −1][s][Chain[n][V ]]、Chain[n][v] = Chain[n][V ] となるように他の validators v から取得します。 おそらく、試みの証拠として、ランダムに選択された他の validator を経由します。 • バリデーター V : これに対する候補証明を受け入れる ブロックプルーフ[Chain[n][V ]]。投票ブロックの有効性 • バリデーター V : の候補出力データを受け入れる 次のブロック: サブグループごとに、受け入れます 出口[n][s][N]。投票ブロック出力の可用性。関心のある validator 間で再公開します。 チェーン[n + 1][v] = チェーン[n + 1][V ]。 • ValidatorV : コンセンサスが得られるまで ここで: egress[n][from][to] は現在の出力キューです。 パラチェーン「from」から~への投稿に関する情報 ブロック番号「n」のパラチェーン「to」。 CollatorS は、パラチェーン S の照合器です。V alidators[n][s] は、ブロック番号 n のパラチェーンの validator のセットです。逆に、 Chain[n][v] は、ブロック番号 n で validator v が割り当てられるパラチェーンです。 block.egress[to] は出口です パラチェーンブロックからの投稿のキュー。 パラチェーンの目的地は です。 照合者は以下に基づいて(取引)手数料を徴収するため、 彼らのブロックが正規化されることを奨励されている 次のブロックの宛先ごとに、サブグループの メンバーには現在からの出力キューが通知されます ブロック。バリデーターは、(パラチェーン)ブロックに関する合意形成のみを目的としており、それ自体はほとんど気にしません。 どの照合者のブロックが最終的に正規となるのか。で 原則として、validator は照合者と同盟を結び、他の照合者が犯罪に関与する可能性を減らすために共謀する可能性があります。 ブロックが正規化されますが、これは両方とも困難です ランダムセレのため手配しますvalidator のアクション パラチェーンは、持続するパラチェーンブロックに支払われる手数料を削減することで防御できる可能性があります。 コンセンサスプロセス。 6.6.1.外部データの可用性。パラチェーンの確保 外部データが実際に利用できるかどうかは、永続的な問題です ワークロードを分散することを目的とした分散型システム ネットワーク。問題の中心は可用性です どちらも不可能であるため、 非インタラクティブな可用性の証明などを作成する BFT システムが適切に利用できないことの証明 正確さが依存する遷移を検証します。 一部の外部データの利用可能性、最大数 許容可能なビザンチン ノードの数とシステムの 1 つ データが利用可能であることを証明する必要があります。 Polkadot のように、システムが適切にスケールアウトするには、これ 問題が発生します: validators の割合が一定の場合 データの可用性を証明する必要があり、次のように仮定します。 validators は、データが利用可能であると主張する前に実際にデータを保存したいと考えている場合、どうすれば回避できますか? システムのサイズ (したがって validator の数) に応じて増加する帯域幅/ストレージ要件の問題はありますか?考えられる答えの 1 つは、別のセットを用意することです。 validator 件 (在庫保証者)、注文は増加中 全体として Polkadot のサイズでサブリニアに。これは 6.5.3 で説明されています。 二次的なトリックもあります。 グループとしての照合者には、すべてのデータが確実に収集されるようにするという本質的なインセンティブがあります。 選択したパラチェーンがなければ利用可能です。 それ以上のブロックを作成できません。 取引手数料を徴収します。照合者もグループを形成しますが、そのメンバーは (ランダムな性質のため) 様々です。 パラチェーン validator グループ) 入力は簡単ではありません
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 15 証明するために。したがって、最近の照合者 (おそらく最後の数千ブロック) は、 特定のパラチェーンの外部データの利用可能性 小規模な結合の場合は validators までブロックします。 検証者は、明らかに違反している validator サブグループの証言者に連絡し、データを取得して照合者に返すか、検証をエスカレーションする必要があります。 利用可能性が欠如していることを証言することで問題を解決する (データの提供を直接拒否することは保釈金没収犯罪としてカウントされるため、不正行為を行った validator はおそらくただの罪になるだろう) 接続を切断します)、追加の validator に連絡します 同じテストを実行します。後者の場合、担保保証金 が返されます。 このような利用不能の証言を行うことができる validator の定足数に達すると、解放され、 不正行為をしたサブグループは罰せられ、ブロックは元に戻されます。 6.6.2.投稿ルーティング。各パラチェーンヘッダーには、 出口トライルート;これは、を含むトライのルートです。 ルーティングベースのビン。各ビンは連結されたリストです 出口ポストの数。 マークル証明はさまざまな場所で提供される可能性があります parachain validators は、特定のパラチェーンの ブロックには、特定の宛先パラチェーンに対する特定の出力キューがありました。 パラチェーンブロックの処理の開始時に、それぞれの 当該ブロックに向かう他のパラチェーンの出力キューは ブロックの入力キューにマージされました。私たちは強いと仮定しますが、 おそらく CSPR9、サブブロックの順序付けにより、どのサブブロックにも優先順位が与えられない決定論的な操作を実現します。 パラチェーンブロックペアリング。照合者は新しいキューを計算します パラチェーンに従って出力キューを排出します ロジック。 入力キューの内容は明示的に書き込まれます。 パラチェーンブロックに入れます。 これには主に次の 2 つの目的があります。 まず、これはパラチェーンが他のパラチェーンから独立してトラストレスに同期できることを意味します。第二に、 イングレス全体が発生した場合のデータロジスティクスを簡素化します。 キューを単一のブロックで処理することはできません。 validator と照合者は次のブロックを処理できます キューのデータを特別に取得する必要はありません。 パラチェーンの入力キューがしきい値を超えている場合 ブロック処理の終了時に量がマークされる リレーチェーン上で飽和状態になり、それ以上のメッセージは送信できなくなります クリアされるまで配信されます。 マークル証明は、 照合者の操作の忠実性を実証するために使用されます。 パラチェーンブロックの証拠。 6.6.3.批評。この基本に関する小さな欠陥が 1 つあります メカニズムは爆弾後攻撃です。 ここがすべての場所です パラチェーンは可能な限り最大量の投稿を送信します 特定のパラチェーンに。これによりターゲットが拘束される一方で、 キューを一度に入力しても、何度繰り返してもダメージはありません 標準的なトランザクション DoS 攻撃。 正常に動作しており、十分に同期されており、 悪意のないコレーターと validator (N 個のパラチェーンの場合)、 パラチェーンごとに合計 N × M validator と L 個の照合器があり、 ブロックごとの合計データ経路を次のように分類できます。 バリデータ: M −1+L+L: 他の validator の場合は M −1 パラチェーン セットでは、候補パラチェーン ブロックを提供する各コレーターに L、各コレーターに 2 番目の L 前のブロックの出力ペイロードを必要とする次のブロックの。 (後者は実際には最悪のケースに近いです) 照合者がそのようなものを共有する可能性が高いため、 データです。) Collator: M +kN: M (関連するそれぞれへの接続用) パラチェーン ブロック validator、各パラチェーン validator グループのサブセットに出力ペイロードをシードするための kN 次のブロック (およびおそらくお気に入りの照合者)。 そのため、ノードごとのデータ パスウェイは直線的に増加します。 システム全体の複雑さによります。これがある間、 システムが数百または数千のパラチェーンにスケールアップされると、ある程度の通信遅延が発生する可能性があるのは当然です。 複雑さの増加率を下げる代わりに吸収されます。 この場合、マルチフェーズルーティングアルゴリズムが使用される可能性があります。 瞬間的な経路の数を減らすため その代償として、ストレージ バッファとレイテンシが発生します。 6.6.4.ハイパーキューブルーティング。ハイパーキューブ ルーティングは、主に、 上で説明した基本的なルーティング メカニズム。 本質的には、 パラチェーンやサブグループノードの数に応じてノード接続を増やすのではなく、 パラチェーンの対数。投稿は次の間を通過する可能性があります 最終配送に向かういくつかのパラチェーンのキュー。 ルーティング自体は決定的でシンプルです。まずは、 入力/出力キュー内のビンの数を制限します。 パラチェーンの総数ではなく、 はルーティングベース (b) 。これは数値として固定されます パラチェーンの変更が行われ、代わりにルーティング指数 (e) が増加します。このモデルでは、メッセージ量は O(be) とともに成長し、経路は一定のまま およびレイテンシー (または配信に必要なブロック数) O(e)で。 私たちのルーティング モデルは e 次元の超立方体です。 立方体の各側面には b 個の可能な位置があります。 各ブロックでは、単一の軸に沿ってメッセージをルーティングします。私たち ラウンドロビン方式で軸を交互に切り替えることで、ブロックの最悪の場合の配信時間が保証されます。 パラチェーン処理の一部として、外部バインド 入力キューで見つかったメッセージは、適切な出力キューのビンに直ちにルーティングされます。 現在のブロック番号 (および配線次元)。これ このプロセスではホップごとに追加のデータ転送が必要になります 配送ルート上だが、それ自体が問題 何らかの代替手段を使用することで軽減できる可能性があります データ ペイロード配信の、参照のみを含む、 ポストトライのポストの完全なペイロードではなく。 システムのハイパーキューブ ルーティングの例 パラチェーンが 4 つある場合、b = 2 および e = 2 は次のようになります。 フェーズ 0、各メッセージ M: • sub0: if Mdest ∈{2, 3} then sendTo(2) else keep • sub1: if Mdest ∈{2, 3} then sendTo(3) else keep • sub2: if Mdest ∈{0, 1} then sendTo(0) else keep • sub3: if Mdest ∈{0, 1} then sendTo(1) else keep フェーズ 1、各メッセージ M: • sub0: if Mdest ∈{1, 3} then sendTo(1) else keep • sub1: if Mdest ∈{0, 2} then sendTo(0) else keep • sub2: if Mdest ∈{1, 3} then sendTo(3) else keep • sub3: if Mdest ∈{0, 2} then sendTo(2) else keep ここでの 2 つの次元は、最初に見るのが簡単です。 宛先インデックスの 2 ビット。最初のブロックでは、 上位ビットのみが使用されます。 2 番目のブロックの取引 下位ビットを使用します。両方が発生すると(任意で) 順序)、投稿はルーティングされます。 9暗号的に安全な擬似ランダム
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 16 6.6.5.セレンディピティを最大化する。基本的なものを1つ変更すると、 プロポーザルでは、固定合計 c2 −c validators が表示されます。 各サブグループに c−1 validator 個。各ブロックではなく、 validator の非構造化再パーティション化が存在します パラチェーン間ではなく、パラチェーンのサブグループごとに、 各 validator は、一意の異なる名前に割り当てられます。 次のブロックのパラチェーン サブグループ。これは 任意の 2 つのブロック間の不変式を導出します。 パラチェーンの 2 つのペアには、2 つの validator が存在します。 パラチェーンの責任を交換しました。これを使用して可用性を絶対に保証することはできませんが、 (単一の validator は、たとえ 有益)、それでも一般的なケースを最適化できます。 このアプローチには複雑さが伴います。パラチェーンの追加には再組織化も必要になる validator セットの。さらに、validator の数はパラチェーンの数の 2 乗に関連付けられ、 最初は非常に小さく始まり、最終的には大きく成長します 速すぎて、約 50 パラチェーンを超えると維持できなくなります。 これらはいずれも根本的な問題ではありません。最初のケースでは、 validator セットの再編成は必ず実行する必要があります。 とにかく定期的に行われます。 validatorのサイズについて 設定が小さすぎる場合、複数の validator が割り当てられる可能性があります 同じパラチェーンに整数係数を適用します。 全体の合計は validator です。 6.6.4 で説明したハイパーキューブ ルーティングなどのマルチフェーズ ルーティング メカニズムは、次のようになります。 多数の validator の要件を軽減します チェーン数が多い場合。 6.7.パラチェーンの検証。 validator の主な目的 絆の強い俳優として、パラチェーンの ブロックは有効です。これには、状態遷移、含まれる外部トランザクション、実行が含まれますが、これらに限定されません。 入力キュー内の待機中のポストと最終状態 出力キューの。 プロセス自体は非常に簡単です。 validator が前のブロックを封印すると、それらは解放されます パラチェーンブロックの候補を提供する作業を開始する 次のコンセンサスラウンドの候補者。 最初に、validator は、パラチェーン コレーター (次に説明します) または 1 つのパラメーターを通じてパラチェーン ブロック候補を見つけます。 その共同validatorの。パラチェーンブロック候補データ ブロックのヘッダー、前のブロックのヘッダー、 含まれる外部入力データ (Ethereum および Bitcoin の場合、そのようなデータはトランザクションと呼ばれますが、原則として任意の目的のための任意のデータ構造が含まれる場合があります)、出力キュー データおよび状態遷移の妥当性を証明する内部データ (Ethereum の場合) これは、各トランザクションを実行するために必要なさまざまな状態/ストレージ トライ ノードになります)。 実験的証拠は、最近の Ethereum ブロックのこの完全なデータセットを示しています 最大でも数百 KiB です。 同時に、まだ完了していない場合は、validator が実行されます。 前のブロックの遷移に関する情報を、最初は前のブロックから取得しようとします。 validator 以降、すべての validator が署名しています データの可用性。 validator がそのような候補ブロックを受信すると、 次に、それをローカルで検証します。検証プロセスは、パラチェーン クラスの validator モジュール内に含まれています。 作成する必要があるコンセンサス重視のソフトウェア モジュール Polkadot の実装の場合 (原則的には C ABI を備えたライブラリでは、単一のライブラリで次のことが可能になります。 適切な実装間で共有される 「参照」実装が 1 つだけであることから安全性が低下します)。 このプロセスは前のブロックのヘッダーを取得し、最近合意されたリレーチェーンを通じてそのアイデンティティを検証します。 hash が記録されるブロック。親ヘッダーの有効性が確認されると、特定のパラチェーンが クラスの検証関数が呼び出される可能性があります。これは、多数のデータ フィールドを受け入れる単一の関数です (おおよそ 前に与えられたもの)、単純なブール値を返します ブロックの有効性を宣言します。 このような検証関数のほとんどは、最初に から直接派生できるヘッダーフィールド 親ブロック (例: 親 hash、番号)。フォロー中 これにより、内部データ構造が次のように設定されます。 トランザクションや投稿を処理するために必要です。 Ethereum のようなチェーンの場合、これは に必要なノードを含むデータベースを試してください。 トランザクションの完全な実行。他のチェーンタイプには、 その他のp修復メカニズム。 完了すると、イングレス投稿と外部トランザクション (または外部データが表すもの) は次のようになります。 チェーンの仕様に従って制定され、バランスがとれています。 (A 賢明なデフォルトは、すべての入力ポストを要求することかもしれません 外部トランザクションがサービスされる前に処理されますが、これはパラチェーンのロジックが決定する必要があります。) この制定により、一連の出力投稿は 作成され、これらが実際に一致することが検証されます 照合者の候補者。最後に、適切に設定された ヘッダーは候補者のヘッダーと照合されます。 完全に検証された候補ブロックでは、validator その後、ヘッダーの hash に投票し、必要な検証情報をすべてそのサブグループ内の co-validator に送信できます。 6.7.1.パラチェーンコレーター。パラチェーンの照合者は、マイナーのタスクの多くを実行する、拘束されていないオペレーターです。 現在のblockchainネットワーク上で。それらは具体的です 特定のパラチェーンに。操作するには、次のことを行う必要があります。 リレーチェーンと完全に同期されたものの両方を維持する パラチェーン。 「完全に同期」の正確な意味はパラチェーンのクラスによって異なりますが、パラチェーンの入力キューの現在の状態が常に含まれます。 Ethereum の場合、少なくともメンテナンスも必要です 最後の数ブロックのマークルツリー データベースですが、 ブルームを含む他のさまざまなデータ構造も含まれます アカウントの存在、家族情報、ログ記録用のフィルター ブロック番号の出力と逆引き参照テーブル。 2 つのチェーンの同期を維持するだけでなく、 トランザクションキューを維持し、適切に検証されたトランザクションを受け入れることによって、トランザクションを「フィッシング」する必要もあります パブリックネットワークから。キューとチェーンでは、 各ブロックで選択された validator の新しい候補ブロック (リレーチェーンが同期されているため、その ID がわかっている) を作成し、それらを 有効性の証明などのさまざまな付随情報。 ピアネットワーク。 その厄介な問題として、含まれる取引に関連するすべての手数料を徴収します。これに関してはさまざまな経済学が浮かんでいる アレンジメント。競争の激しい市場では、 担保者が余っているため、取引が行われる可能性があります。 インセンティブを与えるために手数料をパラチェーン validators と共有する 特定の照合者のブロックを含めること。 同様に、
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 17 一部の照合者は、必要な手数料を徴収する場合もあります。 ブロックをより魅力的なものにするために支払われる validator秒。 この場合、自然な市場が形成されるはずです トランザクションはキューをスキップして高い手数料を支払う そして、より早くチェーンに組み込まれるようになります。 6.8.ネットワーキング。従来の blockchain でのネットワーキング Ethereum や Bitcoin などの要件はかなり単純です。 すべてのトランザクションとブロックは、単純な方向性のないゴシップでブロードキャストされます。同期は特に複雑です。 Ethereum を使用していますが、実際には、このロジックは いくつかの要求および応答メッセージ タイプを中心に解決するプロトコル自体ではなく、ピア戦略。 Ethereum は、devp2p プロトコルを使用して現在のプロトコルの提供を進めました。これにより、多くの機能が可能になりました。 サブプロトコルは単一のピア接続上で多重化されるため、同じピア オーバーレイを多数サポートします。 p2p プロトコルと同時に、Ethereum 部分 プロトコルはまだ比較的単純なままであり、p2p 議定書はしばらくの間、重要な作業が完了していないため、 QoS サポートなどの機能がありません。悲しいことに、よりユビキタスな「Web 3」プロトコルを作成したいという願望は主に 失敗しました。明示的に使用しているのはプロジェクトだけです Ethereum クラウドセールから資金を調達しました。 Polkadot の要件はかなり厳密です。完全に均一なネットワークではなく、Polkadot 数種類の参加者がおり、それぞれのピア構成や複数のネットワークに対して異なる要件があります。 参加者が会話する傾向がある「通り」 特定のデータ。これは、実質的により構造化されたネットワーク オーバーレイ、およびそれをサポートするプロトコルを意味します。 おそらく必要になるだろう。さらに、新しい種類の「チェーン」など、将来の追加を容易にする拡張性も備えています。 それら自体には新しいオーバーレイ構造が必要です。 ネットワーキングの仕組みについて徹底的に議論しながら、 プロトコルはこの文書の範囲外であるように見えるかもしれませんが、一部の要件分析は合理的です。できます ネットワーク参加者を大まかに 2 つのセットに分類します (リレーチェーン、パラチェーン) 3 つのサブセットのそれぞれ。できます また、各パラチェーン参加者は、 ではなく、自分たち同士で会話することに興味がある 他のパラチェーンの参加者: • リレーチェーン参加者: • バリデータ: P、それぞれのサブセット P[s] に分割 パラチェーン • 可用性保証者: A (これは、プロトコルの基本形式のバリデーターによって表される場合があります) • リレーチェーンクライアント: M (各メンバーのメンバーに注意してください) パラチェーン セットも M のメンバーになる傾向があります) • パラチェーン参加者: • パラチェーン コレーター: C[0]、C[1]、. 。 。 • パラチェーン漁師: F[0]、F[1]、 。 。 。 • パラチェーン クライアント: S[0]、S[1]、. 。 。 • パラチェーン ライトクライアント: L[0]、L[1]、. 。 。 一般に、私たちはコミュニケーションの特定のクラスに名前を付けます これらのセットのメンバー間で発生する傾向があります。 •P |あ <-> P |答え: の いっぱい セット の validators/保証人 しなければならない なる よくつながっている に コンセンサスを得る。 • P[s] <-> C[s] | P[s]: 特定のパラチェーン グループのメンバーとしての各 validator は噂話をする傾向があります 他の同様のメンバーおよび照合者とともに そのパラチェーンのブロック候補を発見して共有します。 • A <-> P[s] | C | A:各空室保証人 コンセンサスに敏感なクロスチェーンを収集する必要がある validator からのデータが割り当てられています。照合者 また、彼らの合意形成の可能性を最適化する可能性もあります。 可用性保証者に通知することでブロックします。 データを取得すると、データは次の企業に支払われます。 合意を促進するための他のそのような保証人。 • P[s] <-> A | P[s']: パラチェーン validators は 以前の validator セットまたは可用性保証者から追加の入力データを収集する必要があります。 • F[s] <-> P: 漁師は報告する際、 参加者に対するクレーム。 • M <-> M | P | A: 一般的なリレー チェーン クライアントは、validator と保証人からデータを支払います。 • S[s] <-> S[s] | P[s] | A: パラチェーンのクライアントは、validator/保証人からデータを支払います。 • L[s] <-> L[s] | S[s]: パラチェーン ライト クライアント 完全なクライアントからデータを分配します。 効率的な輸送メカニズムを確保するために、「フラット」 オーバーレイ ネットワーク (Ethereum の devp2p など) ノードは、そのノードの適合性を (恣意的にではなく) 区別しません。 同僚が適切である可能性は低いです。適度に拡張可能な ピアの選択と検出のメカニズムが必要になる可能性があります 積極的であると同時にプロトコルに含まれること 適切な種類のピアを確保するための先読みを計画する 偶然にも適切なタイミングで実行されました。 ピアメイクの正確な戦略は、参加者のクラスごとに異なります。 マルチチェーンの場合、照合者は継続的に実行する必要があります。 それに応じて選出された validator に再接続するか、 validator のサブセットとの継続的な契約が必要です validator が役に立たないほとんどの時間で切断されないようにするためです。照合者も当然、その情報を維持しようとします。 または可用性保証者へのより安定した接続 コンセンサスに敏感な情報を迅速に広めることを保証するために設定されています。 データ。 可用性の保証者は主に、 相互および validators への安定した接続 (コンセンサスおよびコンセンサスが重要なパラチェーン データの場合) 彼らは証明します)、そして一部の照合者(パラチェーンの場合)も証明します データ)と一部の漁師と完全な顧客(分散のため) 情報)。バリデーターは、他の validator、特に同じサブグループ内のvalidator を探す傾向があります。 パラチェーンブロック候補を提供できる照合者。 漁師、一般的なリレーチェーン、パラチェーンなど クライアントは通常、接続をオープンな状態に保つことを目的とします。 validator または保証人ですが、他の多くの同様のノード そうでなければ自分自身に。パラチェーンのライトクライアントも同様に、パラチェーンの完全なクライアントに接続することを目指します。 他のパラチェーンライトクライアントだけではないにしても。 6.8.1.ピアチャーンの問題。基本的なプロトコルの提案では、これらの各サブセットは、検証するために割り当てられた validator として各ブロックとともに常にランダムに変化します。 パラチェーン遷移はランダムに選択されます。これはできる 異種 (非ピア) ノードが問題となる可能性があります。 相互にデータを渡します。どちらかに頼らなければなりません 公平に分散され、適切に接続されたピア ネットワーク
POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 18 ホップ距離 (したがって最悪の場合の遅延) がネットワーク サイズの対数に応じてのみ増加するようにする (Kademlia のようなプロトコル [13] がここで役立つかもしれません)、または、次のことを行う必要があります。 ピアセットを維持するために必要な接続ネゴシエーションを実行できるようにするために、より長いブロック時間を導入します。 ノードの現在の通信ニーズを反映します。 どちらも優れた解決策ではありません: ブロック時間が長い ネットワークに強制的にアクセスすると、ネットワークが役に立たなくなる可能性があります。 特定のアプリケーションとチェーン。完全に公平であっても ネットワークに接続すると、かなりの無駄が発生します 関心のないノードにより拡張される帯域幅の減少 彼らにとって役に立たないデータを転送するため。 両方の方向がソリューションの一部を形成する可能性がありますが、 レイテンシーを最小限に抑えるために合理的な最適化を行うと、 これらのパラチェーンのボラティリティを制限するためです validator 一連のブロック間でのみメンバーシップを再割り当てするセット (例: 15 個のグループ、4 秒ごと) ブロック時間は、接続を 1 回につき 1 回だけ変更することを意味します。 分)、またはメンバーシップを段階的にローテーションすることによって(例:一度に 1 人のメンバーによって変更されます (例: 各パラチェーンに 15 validator が割り当てられている場合、完全に一意なパラチェーン間の間隔は平均で丸 1 分になります。 セット)。ピアのチャーンの量を制限し、有利なピア接続が適切に確立されるようにすることで、 パラチェーンの部分的な予測可能性を通じて進歩する セットを使用すると、各ノードが永続的に保持されるようにすることができます。 偶然の仲間選び。 6.8.2.効果的なネットワーク プロトコルへのパス。おそらく、 最も効果的かつ合理的な開発努力は、ローリングではなく既存のプロトコルの利用に焦点を当てます。 私たち自身の。 いくつかのピアツーピアベースプロトコルが存在します。 Ethereum 独自の devp2p を使用または拡張する場合があります [22]、IPFS の libp2p [1]、GNU の GNUnet [4]。これらのプロトコルとその構築との関連性を完全にレビューします。 特定の構造保証、動的ピアステアリング、および拡張可能なサブプロトコルをサポートするモジュラーピアネットワーク この文書の範囲をはるかに超えていますが、 Polkadot の実装における重要なステップ。 7. プロトコルの実用性 7.1.インターチェーントランザクション支払い。素晴らしい一方で、 Ethereum のガスのような総合的な計算リソース アカウンティング フレームワークの必要性をなくすことで、かなりの自由とシンプルさが得られますが、これは重要な疑問を引き起こします。ガスがなければ、パラチェーンはどのように機能するのでしょうか。 別のパラチェーンが強制的に計算を実行するのを避けますか?トランザクション後の入力キューに依存することもできますが、 あるチェーンが別のチェーンにスパム送信するのを防ぐためのバッファー トランザクション データの場合、トランザクション処理のスパムを防止するための同等のメカニズムがプロトコルによって提供されることはありません。 これはより高いレベルに委ねられる問題です。チェーン以来 受信メッセージに任意のセマンティクスを自由に付加できる トランザクション後のデータを使用すると、計算が確実に行われるようになります。 開始前に料金を支払う必要があります。同じような流れで、 Ethereum Serenity が支持するモデル、想像できます パラチェーン内の「侵入」契約により、 validator と引き換えに支払いが保証されます。 特定の量の処理リソースの提供。 これらのリソースはガスのようなもので測定される可能性があります。 しかし、主観的な実行時間や Bitcoin のような定額料金モデルなど、まったく新しいモデルである可能性もあります。 オフチェーンの呼び出し元が利用できるとはすぐには想定できないため、これ自体はあまり役に立ちません。 侵入によって認識されるあらゆる価値メカニズム 契約。ただし、ソースチェーン内に二次的な「ブレイクアウト」コントラクトが存在することは想像できます。 2 つの契約は共に橋を形成し、お互いを認識し、 価値の同等性を提供します。 (ステーキング-tokens、利用可能 それぞれを国際収支の決済に使用できます。) 別のそのようなチェーンを呼び出すことはプロキシを意味します この橋を通って、 チェーン間での価値の移転を交渉して、 宛先パラチェーンで必要な計算リソースの料金を支払います。 7.2.追加 チェーン。その間 の 追加 の ある パラチェーンは比較的安価な操作ですが、無料ではありません。 パラチェーンが増えると、パラチェーンあたりの validator が少なくなります そして最終的には、それぞれが 平均債券の減少。パラチェーンを攻撃するための強制コストが小さいという問題は、次のように軽減されます。 漁師の皆さん、validator セットの成長は本質的に、 基礎となるコンセンサスの仕組みにより、レイテンシが高くなるそーだ。さらに各パラチェーン validators を悲しませる可能性があります。 負担の大きい検証アルゴリズム。 したがって、validator の「価格」が発生することになります。 および/または利害関係者コミュニティが、 新しいパラチェーンの追加。このチェーン市場は、 おそらく次のいずれかが追加されているのがわかります。 • 一部となる可能性が高い(staking tokens のロックアップまたはバーンアウトに関して)正味拠出金の支払いがゼロのチェーン(コンソーシアム チェーンなど) Doge チェーン、アプリ固有のチェーン)。 • ネットワークに本質的な価値を提供するチェーン 特定の機能を追加するのが難しい 他の場所(機密性、内部拡張性、サービス提携など)を取得するため。 基本的に、利害関係者のコミュニティは次のことを行う必要があります。 経済的または経済的に子チェーンを追加するよう奨励される リレーに機能的なチェーンを追加したいという願望を通じて。 新しいチェーンが追加されると、非常に大きな影響を受けることが想定されます。 削除の通知期間が短いため、新しいチェーンを使用できます。 妥協するリスクなしに実験できる 中長期的な価値提案。 8. 結論 私たちは、著者が取ることができる方向性を概説しました。 特定の既存のプロトコルとの下位互換性がある可能性のある、スケーラブルな異種マルチチェーン プロトコル blockchain ネットワーク。このようなプロトコルの下では、参加者は 賢明な自己利益に基づいて、既存ユーザーに通常のコストをかけずに、非常に自由な方法で拡張できるシステム全体を作成します。 標準の blockchain デザインから来ています。私たちは与えました 必要となるアーキテクチャの大まかな概要 参加者の性質、経済的インセンティブ そして彼らが関与しなければならないプロセス。私たちは持っています 基本設計を特定し、その長所について議論し、 制限;したがって、さらなる方向性があります。 これらの制限が緩和され、完全にスケーラブルな blockchain ソリューションに向けてさらに前進する可能性があります。POLKADOT: 異種マルチチェーン フレームワークのビジョン ドラフト 1 19 8.1.不足している資料と未解決の質問。プロトコルの実装が異なる場合、ネットワークの分岐が常に発生する可能性があります。そんな状態からの回復 例外的な状況については議論されなかった。ネットワークには必然的にゼロ以外のファイナライゼーション期間があると仮定すると、 リレーチェーンの分岐から回復することは大きな問題ではありませんが、慎重に統合する必要があります。 コンセンサスプロトコル。 保証金の没収と逆に報酬の提供は、 深くは研究されていません。現時点では報酬を想定しています 勝者総取りの原則に基づいて提供されます。これは当てはまらない場合があります。 漁師に最適な奨励モデルを提供する。短期間のコミットと公開のプロセスにより、多くの漁師が許可されるでしょう。 賞品をより公平に分配して賞品を受け取るため、 ただし、このプロセスにより、追加のレイテンシーが発生する可能性があります。 不正行為の発見。 8.2.謝辞。皆様、本当にありがとうございました これを漠然と理解するのに協力してくれた校正者 存在感のある形状。 特にピーター・ツァバン、ビョルン ワーグナー、ケン・カプラー、ロバート・ハーバマイヤー、ヴィタリック・ブテリン、レト・トリンクラー、ジャック・ピーターソン。 皆さんのおかげで アイデアや始まりに貢献した人々 その中で、マレク・コテヴィッチとアーロン・ブキャナンは特に言及に値する。そして、助けてくれた他の皆さんにも感謝します 途中で。すべての間違いは私自身のものです。 の初期研究を含むこの研究の一部 コンセンサスアルゴリズムの一部は英国によって資金提供されました。 Innovate UK プログラムに基づく政府。