Polkadot : vision d'un cadre multi-chaînes hétérogène
Аннотация
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 ДР. ГЭВИН ВУД ОСНОВАТЕЛЬ ETHEREUM И PARITY ГЭВИН@PARITY.IO Аннотация. Все современные архитектуры blockchain страдают от ряда проблем, не в последнюю очередь связанных с практическими средствами расширения и масштабируемости. Мы считаем, что это связано с объединением двух очень важных частей архитектуры консенсуса, а именно: каноничность и действительность слишком тесно связаны друг с другом. В этой статье представлена архитектура гетерогенной мультицепи, что фундаментально отличает их друг от друга. Разделив эти две части на отдельные части и сведя общую функциональность к абсолютному минимуму. безопасности и транспорта, мы представляем практические средства расширения ядра на месте. Масштабируемость обеспечивается за счет подход к этим двум функциям по принципу «разделяй и властвуй», расширяя свое связанное ядро за счет стимулирования ненадежные публичные узлы. Гетерогенная природа этой архитектуры позволяет множеству сильно различающихся типов консенсусных систем взаимодействовать в не требующей доверия, полностью децентрализованной «федерации», позволяя открытым и закрытым сетям иметь свободный от доверия доступ к друг друга. Мы предлагаем средства обеспечения обратной совместимости с одной или несколькими ранее существовавшими сетями, такими как Ethereum. Мы считаем, что такая система представляет собой полезный компонент базового уровня в общем поиске практического решения. реализуемая система, способная достичь уровня масштабируемости и конфиденциальности глобальной коммерции. 1. Предисловие Это краткое изложение технического «видения» одного возможного направления, которое может быть выбрано для дальнейшего развития парадигмы blockchain, вместе с некоторым обоснованием того, почему это направление целесообразно. Оно лежит в как можно больше деталей на данном этапе разработки система, которая может дать конкретное улучшение ряд аспектов технологии blockchain. Оно не предназначено для использования в качестве спецификации, формальной или иной. Он не претендует на то, чтобы быть всеобъемлющим или представлять собой окончательный дизайн. Он не предназначен для освещения неосновных аспектов. инфраструктуры, такие как API, привязки, языки и использование. Это особенно экспериментально; где параметры определены, они, вероятно, изменятся. Механизмы будут добавлять, уточнять и удалять в ответ на запросы сообщества. идеи и критика. Большая часть этой статьи, скорее всего, будет быть пересмотрено по мере того, как экспериментальные данные и прототипирование дают нам информацию о том, что будет работать, а что нет. Этот документ включает основное описание протокола вместе с идеями относительно направлений, которые можно предпринять. для улучшения различных аспектов. Предполагается, что ядро описание будет использоваться в качестве отправной точки для первоначального серия доказательств концепции. Окончательная «версия 1.0» будет основанный на этом усовершенствованном протоколе вместе с дополнительными идеями, которые стали доказанными и полны решимости необходимы для того, чтобы проект достиг своих целей. 1.1. История. • 10.09.2016: 0.1.0-доказательство1 • 20.10.2016: 0.1.0-доказательство2 • 11.01.2016: 0.1.0-доказательство3 • 11.10.2016: 0.1.0 2. Введение Блокчейны продемонстрировали большие перспективы использования в нескольких областях, включая «Интернет вещей». (IoT), финансы, управление, управление идентификацией, веб-децентрализация и отслеживание активов. Однако, несмотря на технологические обещания и грандиозные разговоры, нам еще предстоит увидеть значительное реальное внедрение современных технологий. Мы считаем, что это связано с пятью ключевыми неудачами нынешней политики. технологические стеки: Масштабируемость: сколько ресурсов тратится по всему миру. об обработке, пропускной способности и хранилище, позволяющем системе обрабатывать одну транзакцию и сколько транзакции могут быть разумно обработаны в соответствии с пиковые условия? Изолируемость: могут ли различающиеся потребности нескольких Стороны и заявления будут рассматриваться в почти оптимальной степени в рамках одних и тех же рамок? Возможность разработки: насколько хорошо работают инструменты? Делай API отвечают потребностям разработчиков? Доступны ли учебные материалы? Есть ли нужные интеграции? Управление: может ли сеть оставаться гибкой для развиваться и адаптироваться с течением времени? Могут ли решения быть сделано с достаточной инклюзивностью, легитимностью и прозрачность для обеспечения эффективного руководства децентрализованная система? Применимость: действительно ли технология сама по себе решает острую потребность? Требуется ли другое «промежуточное программное обеспечение», чтобы устранить разрыв в реальные приложения? В настоящей работе мы стремимся рассмотреть первые два. проблемы: масштабируемость и изоляционность. Тем не менее, мы верим Платформа Polkadot может обеспечить значительные улучшения в каждом из этих классов проблем. Современные эффективные реализации blockchain, такие как клиент Parity Ethereum PH_0000 может обрабатыватьэто превышает 3000 транзакций в секунду при работе на производительном потребительском оборудовании. Однако нынешний реальный мир Сети blockchain практически ограничены примерно 30 транзакций в секунду. Это ограничение главным образом связано с тем, что современные механизмы синхронного консенсуса требуют больших временных запасов безопасности. ожидаемое время обработки, которое усугубляется 1
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
Введение
Блокчейны продемонстрировали большие перспективы использования в нескольких областях, включая «Интернет вещей». (IoT), финансы, управление, управление идентификацией, веб-децентрализация и отслеживание активов. Однако, несмотря на технологические обещания и грандиозные разговоры, нам еще предстоит увидеть значительное реальное внедрение современных технологий. Мы считаем, что это связано с пятью ключевыми неудачами нынешней политики. технологические стеки: Масштабируемость: сколько ресурсов тратится по всему миру. об обработке, пропускной способности и хранилище, позволяющем системе обрабатывать одну транзакцию и сколько транзакции могут быть разумно обработаны в соответствии с пиковые условия? Изолируемость: могут ли различающиеся потребности нескольких Стороны и заявления будут рассматриваться в почти оптимальной степени в рамках одних и тех же рамок? Возможность разработки: насколько хорошо работают инструменты? Делай API отвечают потребностям разработчиков? Доступны ли учебные материалы? Есть ли нужные интеграции? Управление: может ли сеть оставаться гибкой для развиваться и адаптироваться с течением времени? Могут ли решения быть сделано с достаточной инклюзивностью, легитимностью и прозрачность для обеспечения эффективного руководства децентрализованная система? Применимость: действительно ли технология сама по себе решает острую потребность? Требуется ли другое «промежуточное программное обеспечение», чтобы устранить разрыв в реальные приложения? В настоящей работе мы стремимся рассмотреть первые два. проблемы: масштабируемость и изоляционность. Тем не менее, мы верим Платформа Polkadot может обеспечить значительные улучшения в каждом из этих классов проблем. Современные эффективные реализации blockchain, такие как клиент четности Ethereum [17] может обрабатывать более 3000 транзакций в секунду при работе на производительном потребительском оборудовании. Однако нынешний реальный мир Сети blockchain практически ограничены примерно 30 транзакций в секунду. Это ограничение главным образом связано с тем, что современные механизмы синхронного консенсуса требуют больших временных запасов безопасности. ожидаемое время обработки, которое усугубляетсяPOLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 2 желание поддерживать более медленные реализации. Это связано с базовая архитектура консенсуса: механизм перехода состояний или средства, с помощью которых стороны сопоставляют информацию и выполнять транзакции, его логика фундаментально связана в консенсусный механизм «канонизации», или средства, с помощью которых стороны договариваются об одном из ряда возможные, действительные, истории. Это в равной степени относится как к системам proof-of-work (PoW), таким как Bitcoin [15] и Ethereum [5,23], так и к системам доказательства ставки (PoS), таким как NXT [8] и Bitshares [12]: все в конечном итоге страдают от одного и того же недостатка. Это простой стратегия, которая помогла blockchains добиться успеха. Однако, за счет тесного соединения этих двух механизмов в единое целое протокола, мы также объединяем несколько различных субъекты и приложения с разными профилями риска, разными требованиями к масштабируемости и разными потребностями в конфиденциальности. Один размер не подходит всем. Слишком часто бывает так, что в Стремясь к широкой привлекательности, сеть принимает определенную степень консерватизма, что приводит к наименьшему общему знаменателю. оптимально обслуживает немногих и в конечном итоге приводит к провалу в способности внедрять инновации, действовать и адаптироваться, иногда резко так. Некоторые системы, такие как, например. Факт [21] полностью отменяет механизм перехода состояний. Однако большая часть полезность, которую мы желаем, требует способности переходного состояния в соответствии с общим конечным автоматом. Удаление решает проблему альтернативная проблема; это не дает альтернативы решение. Таким образом, кажется очевидным, что одно разумное направление изучить как путь к масштабируемым децентрализованным вычислениям платформа заключается в том, чтобы отделить консенсусную архитектуру от механизм перехода состояний. И, возможно, неудивительно, что именно эту стратегию Polkadot использует в качестве решения проблемы масштабируемости. 2.1. Протокол, реализация и сеть. Нравится Bitcoin и Ethereum, Polkadot относятся одновременно к сетевому протоколу и (предполагаемому до сих пор) первичному общедоступная сеть, в которой работает этот протокол. Polkadot задуман как бесплатный и открытый проект, спецификация протокола находится под лицензией Creative Commons, а код размещается под лицензией FLOSS. Проект разрабатывается открыто и принимает вклады где бы они ни были полезны. Система RFC, мало чем отличающаяся от Предложения по усовершенствованию Python, позволят публичное сотрудничество по поводу изменений и обновлений протокола. Наша первоначальная реализация протокола Polkadot будет называться Платформа Parity Polkadot и будет включить полную реализацию протокола вместе с API привязки. Как и другие реализации четности blockchain, PPP представляет собой стек технологий общего назначения blockchain, предназначенный не только для сети общего пользования, но и для частная/консорциумная деятельность. Развитие его таким образом далеко финансируется несколькими сторонами, в том числе через грант британского правительства. Тем не менее, в этой статье Polkadot описывается под контекст публичной сети. Функциональность, которую мы видим в общедоступной сети, представляет собой расширенный набор функций, необходимых в альтернативные (например, частные и/или консорциумные) настройки. Более того, в этом контексте полная область действия Polkadot может быть более четко описаны и обсуждены. Это значит читатель должен знать, что определенные механизмы могут быть описаны (например, взаимодействие с другими общедоступными сетями), которые не имеют прямого отношения к Polkadot при развертывании в закрытых («разрешенных») ситуациях. 2.2. Предыдущая работа. Было неофициально предложено отделить основополагающий консенсус от перехода государства. в частном порядке в течение как минимум двух лет — Макс Кэй был сторонником такой стратегии в самые первые дни Ethereum. Более сложное масштабируемое решение, известное как Chain. волокна, датированные июнем 2014 года и впервые опубликованные позже. в том же году1 обосновал необходимость использования одной релейной цепи и нескольких однородных цепочек, обеспечивающих прозрачный механизм выполнения между цепочками. За декогеренцию заплатили через задержку транзакции — транзакции, требующие координация разрозненных частей системы будет обработка займет больше времени. Polkadot взял большую часть своей архитектуры из этого и последующих разговоров с разные люди, хотя он сильно различается по большей части своей конструкции и положений. Пока нет систем, сравнимых с Polkadot. на самом деле в производстве несколько систем, имеющих какое-то значение были предложены, хотя лишь немногие на сколько-нибудь существенном уровне деталь. Эти предложения могут бытьразбит на системы которые отбрасывают или уменьшают понятие глобально согласованного государственная машина, те, которые пытаются обеспечить глобальную когерентная одноэлементная машина через однородные осколки и те, которые нацелены только на неоднородность. 2.2.1. Системы без глобального состояния. Фактом [21] является система, демонстрирующая каноничность без соответствующего достоверность, что позволяет эффективно вести хронику данных. Из-за избегания глобального состояния и трудностей с учетом масштабирования, которое это дает, это можно считать масштабируемым решением. Однако, как уже говорилось ранее, набор количество проблем, которые он решает, строго и существенно меньше. Клубок [18] — это новый подход к консенсусным системам. Вместо того, чтобы организовывать транзакции в блоки и формировать консенсус по строго связанному списку, чтобы обеспечить глобально канонический порядок изменений состояний, он в значительной степени отказывается от идеи сильно структурированного упорядочения и вместо этого продвигает направленный ациклический граф зависимых транзакций с более поздними элементами, помогая канонизировать более ранние элементы посредством явных ссылок. Для произвольных изменений состояния этот граф зависимостей быстро стал бы неразрешимым, однако для гораздо более простой модели __PH_0006____2 это становится вполне разумно. Поскольку система лишь слабо когерентна, а транзакции, как правило, независимы от каждого с другой стороны, большое количество глобального параллелизма становится вполне натуральный. Использование модели UTXO действительно дает эффект ограничить Tangle чисто «валютой» для передачи ценностей система, а не что-то более общее или расширяемое. Более того, без жесткой глобальной согласованности взаимодействие с другими системами, которые, как правило, требуют абсолютного степень знания состояния системы становится непрактичной. 1https://github.com/ethereum/wiki/wiki/Chain-Fibers-Redux 2вывод неизрасходованных транзакций, модель, которую использует Bitcoin, согласно которой состояние фактически представляет собой набор адресов, связанных с некоторым значением; транзакции сопоставляют такие адреса и преобразуют их в новый набор адресов, общая сумма которых эквивалентна
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 3 2.2.2. Гетерогенные цепные системы. Боковые цепи [3] — это предлагаемое дополнение к протоколу Bitcoin, которое позволит осуществлять доверительное взаимодействие между основной цепочкой Bitcoin и дополнительные боковые цепи. Никакого положения не предусмотрено степень «богатого» взаимодействия между боковыми цепями: взаимодействие будет ограничиваться возможностью хранители активов друг друга, действуя – на местном уровне жаргон — двусторонняя привязка 3. Конечная цель — создать структуру, в которой валюта Bitcoin может быть обеспечена дополнительная, хотя и периферийная, функциональность за счет ее привязки на некоторые другие цепочки с более экзотическим переходом состояний системах, чем позволяет протокол Bitcoin. В этом смысле Боковые цепи ориентированы на расширяемость, а не на масштабируемость. Действительно, принципиально не существует условий для действительности сайдчейнов; tokens из одной цепочки (например, Bitcoin) хранящиеся от имени боковой цепи, защищены только способность сайдчейна стимулировать майнеров к канонизации действительные переходы. Безопасность сети Bitcoin не может быть легко переведен на работу от имени других blockchainс. Кроме того, протокол обеспечения Bitcoin майнеры объединяют майнинг (то есть дублируют свои возможности канонизации на мощности боковой цепи) и, что более важно, подтверждают, что переходы боковой цепи находятся за пределами объем этого предложения. Cosmos [10] — это предлагаемая многоцепная система в то же самое, что и сайдчейны, заменяя PoW Накамото метод консенсуса для алгоритма Tendermint Джэ Квона. По сути, он описывает несколько цепочек (работающих в зоны), каждая из которых использует отдельные экземпляры Tendermint вместе со средствами доверительной связи через главная ступичная цепь. Эта межцепочная связь ограничивается передачей цифровых активов («в частности, около tokens»), а не произвольной информации, однако такая межцепочная связь действительно имеет обратный путь для данных, например сообщить отправителю о статусе перевода. Наборы валидаторов для зонированных цепочек, и в частности средства их стимулирования, как и сайдчейны, оставлены как нерешенная проблема. Общее предположение состоит в том, что каждая зонированная цепочка сама будет содержать token стоимости, инфляция которой используется для оплаты validators. Все еще на ранних стадиях дизайна, в настоящее время в предложении отсутствуют подробные сведения об экономических средствах достижения масштабируемого определенность важнее глобальной достоверности. Однако недостаточная согласованность, необходимая между зонами и концентратором, позволит для дополнительной гибкости по параметрам зонирования цепочек по сравнению с системой, обеспечивающей более строгое соблюдение согласованность. 2.2.3. Каспер. Пока еще нет комплексного обзора или параллельного сравнения Casper [6] и Polkadot. были сделаны, хотя можно сделать довольно широкий (и, соответственно, неточная) характеристика этих двоих. Casper — это переосмысление алгоритма консенсуса PoS. может быть основано на ставках участников на то, какой форк в конечном итоге станет каноническим. Существенное внимание было уделено обеспечению его устойчивости к сети. вилки, даже если они продлены, и имеют некоторую дополнительную степень масштабируемости поверх базовой модели Ethereum. Как таким образом, Каспер на сегодняшний день имеет тенденцию быть значительно более более сложный протокол, чем Polkadot и его предшественники, а также существенное отклонение от основного формата blockchain. Это остается неизвестным относительно того, как Каспер будет работать в будущем. и как он будет выглядеть, если он наконец будет развернут. Хотя Casper и Polkadot представляют собой новые интересные протоколы и, в некотором смысле, дополнения Ethereum, существуют существенные различия между их конечные цели и пути к развертыванию. Каспер – это Ethereum Первоначально разработанный проект, ориентированный на Фонд быть изменением протокола PoS без желания создайте принципиально масштабируемый blockchain. Принципиально важно, что это предназначен для хард-форка, а не для чего-то более обширного, и, таким образом, все клиенты и пользователи Ethereum будут необходимо обновить или остаться на вилке неопределенного внедрения. Таким образом, развертывание существенно усложняется, что характерно для децентрализованного проекта, где жесткие необходима координация. Polkadot отличается по нескольким причинам; прежде всего, Polkadot спроектирован как полностью расширяемый и масштабируемый blockchain тестирование разработки, развертывания и взаимодействия кровать. Она создана как привязь, ориентированная на будущее, способная ассимилировать новый blockchainтехнологии по мере их появления без чрезмерно сложной децентрализованной координации. или хардфорки. Мы уже предвидим несколько вариантов использования, таких как в виде зашифрованных цепочек консорциума и высокочастотных цепочек с очень низким временем блокировки, что нереально сделать в любая будущая версия Ethereum, предусмотренная в настоящее время. Наконец, связь между ним и Ethereum чрезвычайно рыхлый; никаких действий со стороны Ethereum не требуется, чтобы включить бездоверительную пересылку транзакций между двумя сети. Короче говоря, пока Каспер/Ethereum 2.0 и Polkadot поделиться некоторыми мимолетными сходствами, которые, как мы считаем, являются конечной целью существенно отличается и что вместо того, чтобы конкурировать, эти два протокола, вероятно, в конечном итоге будут сосуществовать под взаимовыгодные отношения в обозримом будущем.
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.
Краткое содержание
Polkadot — это масштабируемая гетерогенная мультицепочка. Это означает, что в отличие от предыдущих реализаций blockchain которые сосредоточились на обеспечении единой цепочки различных степени общности потенциальных приложений, Polkadot сам по себе не предназначен для обеспечения каких-либо встроенных функций приложения. Скорее, Polkadot обеспечивает основу «релейная цепочка», на которой большое количество проверяемых, глобально-когерентные динамические структуры данных могут размещаться бок о бок. Мы называем эти структуры данных «параллельными». цепочки или парацепи, хотя особой необходимости в них нет. они должны быть blockchain по своей природе. Другими словами, Polkadot можно считать эквивалентным набору независимых цепочек (например, набору, содержащему Ethereum, Ethereum Classic, Namecoin и Bitcoin), за исключением двух очень важных моментов: • Объединенная безопасность; • межцепочечная транзакция без доверия. Именно по этим причинам мы считаем Polkadot «масштабируемым». В принципе, задача, которая будет развернута на Polkadot, может быть существенно распараллелена — масштабирована — через большое количество парачейнов. Поскольку все аспекты каждого парачейн может проводиться параллельно разными сегментами сети Polkadot, система имеет некоторую возможность масштабировать. Polkadot представляет собой довольно простой фрагмент 3в отличие от односторонней привязки, которая по сути представляет собой действие по уничтожению token в одной цепочке для создания token в другой без механизм, позволяющий сделать обратное, чтобы восстановить исходные tokensPOLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 4 инфраструктура, оставляя большую часть сложностей решать на уровне промежуточного программного обеспечения. Это сознательное решение, направленное на снижение риска развития, позволяющее необходимое программное обеспечение, которое будет разработано в короткие сроки и с хорошим уровнем уверенности в своей безопасности и надежность. 3.1. Философия Polkadot. Polkadot должен обеспечить абсолютную прочную основу для построить следующую волну консенсусных систем, вплоть до спектр рисков от готовых к производству зрелых проектов к зарождающимся идеям. Предоставляя надежные гарантии безопасности, изоляции и связи, Polkadot может позволить парачейны для самостоятельного выбора из ряда свойств. Действительно, мы предвидим, что различные экспериментальные blockchain будут расширять свойства того, что можно было бы считать разумным. сегодня. Мы видим консерваторов, цепочки высокой добавленной стоимости, подобные Bitcoin или Z-cash PH_0000, сосуществующие рядом с более низкой стоимостью «тема-цепочки» (такой маркетинг, так весело) и тест-сети с нулевой или близкой к нулевой комиссией. Мы видим полностью зашифрованные, «темные» сети консорциумов, действующие бок о бок – и даже предоставление услуг — высокофункциональным и открытым цепочкам например, Ethereum. Мы видим экспериментальные новинки Цепочки на основе виртуальных машин, такие как субъективный васм с оплатой по времени цепочка используется как средство передачи сложных вычислительных задач на аутсорсинг из более зрелой цепочки, подобной Ethereum. или более ограниченную цепочку, подобную Bitcoin. Для управления обновлениями цепочки Polkadot по своей сути будет поддерживать некую структуру управления, вероятно, основанную на существующих стабильных политических системах и имеет двухпалатный аспект, аналогичный Совету «Желтой книги» [24]. Как высший орган власти, базовые держатели token будут иметь контроль «референдума». Чтобы отразить мнение пользователей потребность в развитии, но потребность разработчиков в легитимности, мы ожидаем, что разумным направлением будет формирование две палаты из комитета «пользователей» (состоящего из облигационные validators) и «технический» комитет, составленный крупных разработчиков клиентов и игроков экосистемы.
группа владельцев token будет сохранять максимальную легитимность и формировать сверхбольшинство для расширения, изменения параметров, замены или роспуска этой структуры, что мы и делаем. не сомневайтесь в возможной необходимости: по словам Твена «Правительства и подгузники надо менять часто, а для та же причина». В то время как репараметризацию обычно легко организовать в рамках более крупного механизма консенсуса, более качественные изменения, такие как замена и дополнение, могли бы быть осуществлены. вероятно, потребуются либо неавтоматизированные «мягкие указы» (например, посредством канонизации номера блока и hash документа, официально определяющего новый протокол) или сделать необходимым наличие основного механизма консенсуса для сдерживания достаточно богатый язык, чтобы описать любой аспект самого себя который, возможно, придется изменить. Последнее является конечной целью, однако первое, скорее всего, будет выбрано для того, чтобы обеспечить разумные сроки разработки. Основные принципы Polkadot и правила, в соответствии с которыми мы оцениваем все проектные решения: Минимально: Polkadot должен иметь как можно меньше функций. Просто: никаких дополнительных сложностей быть не должно. в базовом протоколе, чем это может быть разумно выгружается в промежуточное программное обеспечение, размещенный через parachain или введен в более поздней оптимизации. Общие сведения: нет ненужных требований и ограничений. или ограничения должны быть наложены на парачейны; Polkadot должен стать испытательной площадкой для разработки системы консенсуса, которую можно оптимизировать с помощью сделать модель, в которую вписываются расширения, максимально абстрактной. Надежный: Polkadot должен обеспечивать фундаментальную стабильный базовый слой. Помимо экономической устойчивости, это также означает децентрализацию с целью минимизации векторы для атак с высокой наградой.
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
В обслуживании Polkadot есть четыре основные роли. сеть: сборщик, рыбак, номинатор и validator. В одна возможная реализация Polkadot, последняя роль на самом деле может быть разбит на две роли: базовый validator и гарант доступности; это обсуждается в разделе 6.5.3. подборщик Рыбак Валидаторы (эта группа) Валидаторы (другие группы) одобряет становится мониторы отчеты плохой поведение к обеспечивает блокировку кандидаты для номинатор Рисунок 1. Взаимодействие между четыре роли Polkadot. 4.1. Валидаторы. validator — это самая высокая плата и помогает запечатать новые блоки в сети Polkadot. Роль validator зависит от достаточно высокой связи. депонируются, хотя мы разрешаем другим связанным сторонам назначить одного или нескольких validators, которые будут действовать от их имени и как такая некоторая часть облигации validator не обязательно может принадлежать самому validator, а скорее этим номинаторы. validator должен запускать реализацию клиента ретрансляционной цепочки с высокой доступностью и пропускной способностью. В каждом блоке узел должен быть готов принять роль ратифицирующего новый блок в назначенном парачейне. Этот процесс включает получение, проверку и повторную публикацию кандидата блоки. Номинация является детерминированной, но практически непредсказуемой заранее. Поскольку validator не может разумно ожидать поддержания полностью синхронизированного базе данных всех парачейнов, ожидается, что validator поставит перед собой задачу разработать предлагаемую новую блок парачейна третьей стороне, известной как сопоставление. Как только все новые блоки парачейна будут должным образом ратифицированы назначенными ими подгруппами validator, validators затем должен ратифицировать сам блок релейной цепи. Это включает в себя обновление состояния очередей транзакций (по сути перемещение данных из очереди вывода парачейна в другую входная очередь парачейна), обработка транзакций ратифицированный набор транзакций релейной цепи и ратификация финальный блок, включая окончательные изменения парачейна.POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 5 validator не выполняет свою обязанность по поиску консенсуса по правилам выбранного нами алгоритма консенсуса наказывается. В случае первоначальных непреднамеренных сбоев это происходит через удержание вознаграждения validator. Повторные сбои приводят к снижению их залога безопасности (за счет сжигания). Доказуемо вредоносные действия, такие как двойное подписание или сговор с целью предоставления недействительного блока приведет к потере вся связь (которая частично сгорела, но в основном отдана информатору и честным актерам). В некотором смысле validator похожи на пулы для майнинга. текущего PoW blockchains. 4.2. Номинаторы. Номинатор является стороной, владеющей долей который вносит свой вклад в залог validator. Они не имеют никакой дополнительной роли, кроме размещения рискового капитала и например, чтобы сигнализировать о том, что они доверяют конкретному validator (или их набор) действовать ответственно при поддержании сеть. Они получают пропорциональное увеличение или сокращение в свой депозит в зависимости от роста облигации, к которой они вносят свой вклад. Вместе с сопоставителями, далее в некоторых смысл аналогичен майнерам современных сетей PoW. 4.3. Подборщики. Сопоставители транзакций (сокращенно сопоставители) являются сторонами, которые помогают validators в составлении действительных блоки парачейна. Они поддерживают «полный узел» для конкретного парачейна; это означает, что они сохраняют все необходимое информация, позволяющая создавать новые блоки и выполнять транзакции почти так же, как это делают майнеры на текущих PoW blockchain. В обычных обстоятельствах они будет сопоставлять и выполнять транзакции для создания незапечатанного заблокировать и предоставить его вместе с функцией с нулевым разглашением доказательство одному или нескольким validators, в настоящее время ответственным за Предлагаю блок парачейна. Точный характер взаимоотношений между сопоставителями, номинаторами и validator, скорее всего, изменится со временем. время. Первоначально мы ожидаем, что подборщики будут работать очень тесно. с validators, так как их будет всего несколько (возможно только один) парачейн(ы) с небольшим объемом транзакций. первоначальная реализация клиента будет включать RPC, позволяющие узел сопоставления парачейна для безусловного предоставления узлу (релейной цепи) validator доказуемо действующего парачейна блок. Поскольку стоимость поддержки синхронизированной версии количество таких парачейнов увеличивается, мы ожидаем увидеть дополнительные наличие инфраструктуры, которая поможет отделить обязанности перед независимыми, экономически мотивированными сторонами. В конце концов, мы ожидаем увидеть пулы сопоставителей, которые соперничают за собирать максимальную комиссию за транзакции. С такими сборщиками может быть заключен контракт на обслуживание определенных validator в течение определенного периода времени с целью получения постоянной доли в доходах от вознаграждения. Альтернативно, «внештатные» подборщики могут просто создать рынок, предлагающий действительные блоки парачейна в обмен на конкурентоспособную долю вознаграждения, подлежащую немедленной выплате. Аналогичным образом, децентрализованные пулы номинаторов позволят множеству связанные участники координировать и разделять обязанности validator. Эта возможность объединения обеспечивает открытое участие. что приведет к более децентрализованной системе. 4.4. Рыбаки. В отличие от двух других активных партий, рыбаки не имеют прямого отношения к авторству блока процесс. Скорее они независимые «охотники за головами». мотивировано большой разовой наградой. Именно из-за существования рыбаков, мы ожидаем, что случаи плохого поведения будут происходить редко, а когда они происходят только из-за связанная сторона небрежна с безопасностью секретного ключа, а не со злым умыслом. Имя приходит от ожидаемой частоты вознаграждений, минимальных требований для участия и возможного размера вознаграждения. Рыбаки получают вознаграждение, если своевременно докажут, что по крайней мере одна связанная сторона действовала незаконно. Незаконные действия включать подписание двух блоков, каждый с одним и тем же ратифицированным родителем или, в случае парачейнов, помощь в ратификации недействительного блок. Чтобы предотвратить чрезмерное вознаграждение или компромисс и незаконное использование секретного ключа сеанса, базовая награда за предоставление одного незаконно подписанного сообщения validator является минимальный. Эта награда асимптотически возрастает по мере увеличения подтверждающие незаконные подписи других validator если это подразумевает настоящее нападение. Асимптота задана на 66 %, следуя нашему базовому утверждению безопасности, что по крайней мере две трети validator действуют доброжелательно. Рыбаки чем-то похожи на «полные узлы» в современные blockchain системы, необходимые ресурсы относительно небольшие и обеспечивают стабильное время безотказной работы и пропускная способность не обязательна. Рыбаки отличаются друг от друга так же, как они должны внести небольшой залог.Эта связь предотвращает Сивилла атакует, тратя validators время и вычислительные ресурсы ресурсы. Его сразу можно снять, наверное нет превышает сумму, эквивалентную нескольким долларам, и может привести получить огромную награду за обнаружение ненадлежащего поведения validator.
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.
Обзор конструкции
Цель этого раздела – дать краткий обзор система в целом. Более тщательное исследование система приведена в следующем за ней разделе. 5.1. Консенсус. В цепочке реле Polkadot достигает консенсус низкого уровня по набору взаимно согласованных действительных блокируется с помощью современного асинхронного византийского отказоустойчивого алгоритма (BFT). Алгоритм будет вдохновлен с помощью простого Tendermint [11] и значительно большего участвует HoneyBadgerBFT [14]. Последний обеспечивает эффективный и отказоустойчивый консенсус по произвольному дефектная сетевая инфраструктура, учитывая набор в основном безобидных органов власти или validator. Для сети в стиле доказательства авторитета (PoA) это само по себе было бы достаточно, однако Polkadot предполагается также можно развернуть в виде сети в полностью открытом и общедоступном режиме. ситуация без какой-либо конкретной организации или доверенного лица полномочия, необходимые для его поддержания. Таким образом, нам нужен средства определения набора validators и стимулирования им, если честно. Для этого мы используем отбор на основе PoS. критерии. 5.2. Доказательство ставки. Мы предполагаем, что сеть будут иметь некоторые средства измерения размера «ставки» какая-либо конкретная учетная запись имеет. Для удобства сравнения с ранее существовавших систем, мы будем называть единицу измерения «tokens». К сожалению, этот термин не идеален для ряд причин, не в последнюю очередь то, что это просто скаляр значение, связанное со счетом, нет понятия индивидуальность. Мы предполагаем, что validator избираются нечасто (в лучшем случае один раз в день, но, возможно, реже, чем раз в квартал), по схеме Nomination Proof-of-Stake (NPoS). Стимулирование может происходить за счет пропорционального распределенияPOLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 6 Реле цепь Рой валидаторов (каждый окрашен в свой цвет обозначенный парачейн) Транзакция (представлено внешний актер) Парачейн мост Виртуальный парачейн (например, Ethereum) Парачейн Парачейн очереди и ввод-вывод Распространяемые транзакции Заблокировать подачу кандидата 2-й порядок Релейная цепь Парачейн-сообщество Аккаунт Входящая транзакция Исходящая транзакция Межцепочные транзакции (управляется validators) подборщик Распространенный блок Рыбак Рисунок 2. Сводная схема системы Polkadot. На этом рисунке показаны сопоставители, собирающие и распространяющие пользовательские транзакции, а также распространяющие кандидатов на блоки рыбакам и validator. Это также показывает, как учетная запись может публиковать транзакцию, выполняемую из ее парачейна, через релейную цепь. и в другой парачейн, где это можно интерпретировать как транзакцию на счет там. средства, поступающие от расширения базы token (до 100 % в год, хотя более вероятно около 10%) вместе с любые взимаемые комиссии за транзакции. Хотя расширение денежной базы обычно приводит к инфляции, поскольку все владельцы token будут иметь справедливую возможность участия, ни одному держателю token не придется страдать от снижения стоимости своих холдингов с течением времени при условии, что они будут рады принять роль в механизме консенсуса. Особая пропорция из token будут предназначены для процесса staking; тот эффективное расширение базы token будет скорректировано через рыночный механизм для достижения этой цели. Валидаторы сильно связаны своими ставками; выход Облигации validators остаются в силе еще долгое время после прекращения исполнения обязанностей validators (возможно, около 3 месяцев). Это долго Период ликвидации облигаций позволяет предотвратить неправомерное поведение в будущем. наказываются вплоть до периодической проверки цепочки. Неправомерное поведение влечет за собой наказание, например, снижение вознаграждение или, в случаях, которые намеренно ставят под угрозу целостность сети, validator теряет часть или все свои ставка другим validator, информаторам или заинтересованным сторонам в целом (через горение). Например, validator который пытается ратифицировать обе ветви вилки (иногда известная как атака «ближнего радиуса действия»), могут быть идентифицированы и наказывалось последним способом. Дальние атаки «ничего не поставлено на карту»4 обходят с помощью простой блокировки «контрольной точки», которая предотвращает опасную реорганизацию цепочки длиной более определенную глубину цепи. Чтобы обеспечить новую синхронизацию клиентов не могут попасться не на ту цепочку, регулярные произойдут «хардфорки» (максимум того же периода ликвидация облигаций validators), которые жестко закодируют недавнюю контрольную точку, блокирующую hashes в клиентах. Это хорошо сочетается с дополнительной мерой уменьшения занимаемой площади «конечной длиной цепи» или периодический сброс генезис-блока. 5.3. Парачейны и колляторы. Каждый парачейн получает аналогичные средства безопасности для релейной цепи: тот заголовки парачейнов запечатаны внутри блока релейной цепи обеспечение невозможности реорганизации или «двойного расходования» после подтверждения. Это аналогичная гарантия безопасности, предлагаемая сайдчейнами Bitcoin и слиянием майнинга. Polkadot, однако, также предоставляет надежные гарантии того, что переходы состояний парачейнов действительны. Это происходит посредством криптографического случайного сегментирования набора validator на подмножества; одно подмножество на парачейн, подмножества которых потенциально различаются в каждом блоке. Это настройка обычно подразумевает, что время блокировки парачейнов будет быть по крайней мере такой же длины, как и длина релейной цепи. Конкретный средства определения разделения выходят за рамки 4Такая атака заключается в том, что противник создает совершенно новую историческую цепочку, начиная с блока генезиса. Посредством контроля относительно незначительную часть ставки при зачете, они могут постепенно увеличивать свою долю ставки относительно всех других заинтересованные стороны, поскольку они являются единственными активными участниками своей альтернативной истории. Поскольку не существует внутренних физических ограничений на создание блоков (в отличие от PoW, где должна быть затрачена вполне реальная вычислительная энергия), они способны создавать цепочку длиннее, чем реальная цепочка в относительно короткий промежуток времени и потенциально делает его самым длинным и лучшим, принимая на себя каноническое состояние сети.POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 7 этого документа, но, скорее всего, будет основан либо на фреймворк фиксации-раскрытия, аналогичный RanDAO [19] или использовать данные, объединенные из предыдущих блоков каждого парачейна под криптографически безопасным hash. Такие подмножества validator необходимы для предоставления кандидат на блок парачейна, который гарантированно действителен (на боль от конфискации облигаций). Срок действия вращается вокруг двух важные моменты; во-первых, что оно действительно действительно по своей сути — что все переходы состояний были выполнены добросовестно и что все внешние данные, на которые ссылаются (т. е. транзакции), действительны для включения. Во-вторых, любые данные, не относящиеся к его кандидаты, такие как внешние транзакции, имеют достаточно высокую доступность, чтобы участники могли загрузите его и выполните блок вручную.5 Валидаторы могут предоставить только «нулевой» блок, не содержащий данных о внешних «транзакциях», но в этом случае они рискуют получить уменьшенное вознаграждение. Они работают бок о бок протокол сплетен парачейна с сопоставителями — отдельными лицами которые объединяют транзакции в блоки и предоставляют неинтерактивное доказательство с нулевым разглашением того, что блок является действительным дочерним элементом своего родителя (и принимает любую транзакцию гонорары за свои хлопоты). Протоколам парачейна предоставлено право определять свои собственные средства предотвращения спама: не существует фундаментального понятия «учет вычислительных ресурсов» или «плата за транзакцию» налагаемые релейной цепью. Протокол ретрансляционной цепи также не обеспечивает прямого соблюдения этого правила (хотя он маловероятно, что заинтересованные стороны захотят принять парачейн, который не обеспечивал достойного механизма). Это явный намек на возможность существования цепочек в отличие от Ethereum, например. цепочка типа Bitcoin, которая имеет гораздо более простую модель оплаты или какую-либо другую, еще не предложенную модель предотвращения спама. Сама релейная цепь Polkadot, вероятно, будет существовать как Ethereum-подобные учетные записи и цепочка состояний, возможно, производная от EVM. Поскольку узлы релейной цепи должны будут выполнять существенную другую обработку, пропускную способность транзакций будет частично сведено к минимуму за счет больших комиссий за транзакции и, если наши исследовательские модели требуют ограничения размера блока. 5.4. Межсетевое общение. Важнейшим и последним ингредиентом Polkadot является межцепочечная связь. Поскольку между парачейнами может быть какой-то информационный канал, мы позволяем себе считать Polkadot масштабируемая мультицепочка. В случае Polkadot связь настолько проста, насколько это возможно: транзакции выполняются в парачейн (согласно логике этой цепочки) способны осуществить отправку транзакции во второй парачейн или, потенциально, релейная цепь. Как внешние транзакции на производстве blockchain они полностью асинхронны и у них нет внутренней способности возвращать какие-либо вид информации возвращается к ее источнику. Назначение: получает данные предыдущего validators блока. Аккаунт получает сообщение: запись удалена из вход Merkle tree Аккаунт отправляет сообщение: запись помещена в выход Merkle tree для назначения парачейн выход Источник: акции данные со следующим блоком validatorс подтверждение почты, хранящееся в выход парачейна Меркла дерево размещена маршрутизированная ссылка в пункте назначения парачейна вход Merkle tree проникновение Рисунок 3. Базовая схема, показывающая основные части маршрутизации для публикации транзакции («посты»). Чтобы обеспечить минимальную сложность реализации, минимальные риск и минимальный смирительная рубашка из будущее В парачейн-архитектурах эти межцепочные транзакции фактически неотличимы от стандартных транзакций, подписанных извне. Транзакция имеет сегмент происхождения, предоставляющий возможность идентифицировать парачейн, и адрес, который может иметь произвольный размер. В отличие от обычных текущих систем, таких как Bitcoin и Ethereum, межцепочные транзакции не связаны с какой-либо «оплатой» комиссии; любой такой платеж должен управляться посредством логики переговоров в парачейнах источника и назначения. Такая система, как предложенная для Выпуск Serenity Ethereum [7] будет простым средством управления такой межсетевой оплатой ресурсов, хотя мы предполагаем, что со временем на первый план могут выйти и другие. Межцепочные транзакции разрешаются с использованием простого механизм организации очередей, основанный на Merkle tree, чтобы гарантировать верность. Задачей специалистов по обслуживанию релейной цепи является перемещать транзакции в выходную очередь одного парачейна во входную очередь целевого парачейна. на пройденные транзакции ссылаются в цепочке реле, однако они не передаютсяСами транзакции ay-chain. Чтобы предотвратить спам-рассылку парачейна другому парачейну с помощью транзакции, для отправки транзакции необходимо чтобы очередь ввода адресата не была слишком большой время окончания предыдущего блока. Если вход очередь слишком велика после обработки блока, то она считается «насыщенной» и никакие транзакции не могут быть перенаправлены в нее в последующих блоках, пока не уменьшится снова ниже уровня предел. Эти очереди администрируются в цепочке реле. позволяя парачейнам определять насыщенность друг друга статус; таким образом, неудачная попытка опубликовать транзакцию в остановленный пункт назначения может быть сообщено синхронно. (Хотя, поскольку пути возврата не существует, если вторичная транзакция не удалась по этой причине, о ней нельзя будет сообщить обратно. исходному абоненту и некоторые другие средства восстановления должно было состояться.) 5.5. Polkadot и Ethereum. Учитывая полноту по Тьюрингу Ethereum, мы ожидаем, что у Polkadot и Ethereum есть широкие возможности взаимодействия с друг друга, по крайней мере, в пределах некоторых легко выводимых границ безопасности. Короче говоря, мы предполагаем, что транзакции из Polkadot может быть подписан validator и затем передан в 5Такая задача может быть разделена между validator или может стать назначенной задачей набора сильно связанных validator, известных как Гаранты наличия.
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 8 Ethereum, где их можно интерпретировать и применять договор о пересылке транзакций. В другом направлении, мы предусматриваем использование специально отформатированных журналов (событий) исходит из «прорывного контракта», чтобы обеспечить быструю проверку того, что конкретное сообщение должно быть перенаправлено. 5.5.1. От Polkadot до Ethereum. Через выбор А. Механизм консенсуса BFT с validators, сформированный из набор заинтересованных сторон, определенный путем одобрительного голосования механизм, мы можем достичь надежного консенсуса с нечасто меняющееся и скромное количество validators. В системе с общим числом 144 validators время блока 4 секунды и завершение в 900 блоков (что позволяет злонамеренным поведение, такое как двойное голосование, о котором следует сообщать, наказывается и восстановлен), достоверность блока может быть обоснованно считается доказанным, если имеется всего лишь 97 подписей (две трети из 144 плюс одна) и последующий 60-минутный период проверки, в течение которого не было предъявлено никаких возражений. Ethereum может организовать «контракт на взлом», который может сохранить 144 подписанта и контролироваться их. Поскольку для восстановления цифровой подписи по эллиптической кривой (ECDSA) требуется всего 3000 газа под номером EVM, и поскольку мы, вероятно, хотели бы, чтобы проверка происходила только на сверхбольшинство validator (вместо полного единогласия), базовая стоимость Ethereum, подтверждающая, что инструкция было правильно подтверждено, поскольку из сети Polkadot будет не более 300 000 газа — всего 6% общий лимит газа по блоку составляет 5,5М. Увеличение количества validator (что необходимо для работы с десятки сетей) неизбежно увеличивает эту стоимость, однако ожидается, что пропускная способность транзакций Ethereum со временем будет расти по мере развития технологии и инфраструктура улучшается. Вместе с тем, что не должны быть задействованы все validator (например, только самый высокий для выполнения такой задачи могут быть привлечены поставленные на карту validators) пределы этого механизма достаточно обширны. Предполагая ежедневную ротацию таких validator (что достаточно консервативны (может быть приемлемым еженедельное или даже ежемесячное обслуживание), тогда затраты сети на поддержание этот мост пересылки Ethereum будет около 540 000 газа в день или, при нынешних ценах на газ, 45 долларов в год. Базовая транзакция, пересылаемая через мост, будет стоить около 0,11 доллара США; дополнительные расчеты по контракту будут стоить больше, конечно. Путем буферизации и объединения транзакций вместе затраты на разрешение на взлом могут быть легко совместное использование, что существенно снижает стоимость транзакции; если перед пересылкой требовалось 20 транзакций, то стоимость пересылки базовой транзакции упадет до около $0,01. Одной интересной и более дешевой альтернативой этой модели контракта с несколькими подписями может быть использование пороговых подписей для достижения семантики многостороннего владения. В то время как схемы пороговой подписи для ECDSA являются вычислительно дорогими, для других схем такие как подписи Шнорра очень разумны. Ethereum планирует ввести примитивы, которые сделают такие дешевые схемы для использования в предстоящем хардфорке Metropolis. Если бы такое средство можно было использовать, стоимость газа для пересылки транзакции Polkadot в Ethereum сеть будет резко сокращена почти до нуля. накладные расходы сверх основных затрат на проверку подпись и выполнение базовой транзакции. В этой модели узлы Polkadot validator будут иметь ничего не делать, кроме как подписывать сообщения. Чтобы транзакции действительно направлялись в сеть Ethereum, мы предположим, что либо сами validator также будут находиться на сеть Ethereum или, что более вероятно, небольшие награды быть предложено первому актору, который передаст сообщение в сеть (награда может быть тривиально выплачена инициатор транзакции). 5.5.2. От Ethereum до Polkadot. Получение транзакций при пересылке с Ethereum на Polkadot используется простое понятие журналов. Когда контракт Ethereum желает отправить транзакцию в конкретный парачейн Polkadot, ему нужно просто заключить специальный «контракт о прорыве». Контракт о прорыве будет принимать любые платежи, которые могут потребуется и выдать инструкцию регистрации, чтобы ее существование можно было доказать с помощью доказательства Меркла и утверждения о том, что заголовок соответствующего блока действителен и канонический. Из последних двух условий достоверность, пожалуй, является проще всего доказать. В принципе, единственное требованиедля каждого узла Polkadot, требующего доказательства (т. е. назначенные узлы validator) для запуска полностью синхронизированного экземпляра стандартного узла Ethereum. К сожалению, это само по себе довольно сильная зависимость. Более Облегченным методом было бы использовать простое доказательство того, что заголовок был оценен правильно, поскольку был указан только часть дерева состояния Ethereum, необходимая для правильного выполнения транзакции в блоке и проверьте достоверность журналов (содержащихся в квитанции блока). Такие «СПВ-подобные»6 доказательства все же могут потребовать значительного объема информации; удобно, они обычно не нужны все: система облигаций внутри Polkadot позволит связывать третьим лицам отправлять заголовки с риском потери своих залог, если какая-либо третья сторона (например, «рыбак», см. 6.2.3) предоставит доказательство того, что заголовок недействителен. (в частности, что корень штата или корни квитанций были самозванцами). В незавершенной сети PoW, такой как Ethereum, каноничность невозможно доказать окончательно. Чтобы решить эту проблему, приложения, которые пытаются использовать какие-либо причинно-следственной цепочки дождитесь нескольких «подтверждений» или пока зависимая транзакция не достигнет некоторого определенную глубину внутри цепи. На Ethereum это Глубина варьируется от 1 блока для наименее ценных транзакций без известных проблем с сетью до 1200 блоков, как было раньше. случай во время первоначального выпуска Frontier для обмена. В стабильной сети «Homestead» эта цифра находится на отметке 120 блоков для большинства бирж, и мы, скорее всего, возьмем аналогичный параметр. Итак мы может представьте себе наш Polkadot сторона Ethereumинтерфейс, чтобы иметь несколько простых функций: иметь возможность принять новый заголовок из сети Ethereum и проверить PoW, чтобы иметь возможность принять некоторые доказательства того, что конкретный журнал был создан контрактом прорыва на стороне Ethereum для заголовка достаточной глубины (и прямого соответствующее сообщение в Polkadot) и, наконец, иметь возможность принимать доказательства, которые ранее были приняты, но Заголовок not-yet-enacted содержит недопустимый корень квитанции. Чтобы получить сами данные заголовка Ethereum (и любые доказательства SPV или опровержения действительности/каноничности) в сеть Polkadot, стимул для пересылки 6SPV относится к упрощенной проверке платежей в Bitcoin и описывает метод, позволяющий клиентам проверять транзакции, сохраняя при этом только копия заголовков всех блоков самой длинной цепочки PoW.POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 9 нужны данные. Это может быть так же просто, как оплата (финансируется за счет комиссий, собранных на стороне Ethereum) оплачено всем, кто может переслать полезный блок, заголовок которого действительный. Валидаторам будет предложено сохранять информацию, относящуюся к последним нескольким тысячам блоков, чтобы иметь возможность управлять форками либо с помощью некоторых встроенных в протокол средств, либо с помощью контракта, поддерживаемого на релейная цепь. 5.6. Polkadot и Bitcoin. Bitcoin взаимодействие представляет собой интересную задачу для Polkadot: так называемую «двусторонняя привязка» была бы полезной частью инфраструктуры иметь на стороне обеих сетей. Однако из-за ограничения Bitcoin, обеспечение такой привязки безопасным нетривиальное занятие. Осуществление транзакции от От PH_0011 до Polkadot в принципе можно выполнить с помощью процесса, аналогичного процессу для Ethereum; «адрес прорыва» каким-то образом контролируемые Polkadot validators могли получать переданные tokens (и данные, отправленные вместе с ними). Доказательства SPV могут быть предоставлены заинтересованными oracle и, вместе с периодом подтверждения, награда за выявление неканонических блоков, подразумевающих транзакцию был «израсходован дважды». Любые tokens, принадлежавшие тогда в Тогда «адрес прорыва», в принципе, будет контролироваться теми же validator для последующего распространения. Однако проблема заключается в том, как можно безопасно контролировать депозиты с помощью вращающегося набора validator. В отличие от Ethereum, который способен принимать произвольные решения на основе при сочетании подписей Bitcoin по существу более ограничен: большинство клиентов принимают только транзакции с мультиподписями, в которых участвуют максимум 3 стороны. Увеличение этого числа до 36 или даже до тысяч, как это в конечном итоге может быть желательно, невозможно в соответствии с текущим протоколом. Один из вариантов — изменить протокол Bitcoin, чтобы включить такая функциональность, однако так называемые «хард-форки» в Bitcoin мир сложно устроить, судя по недавним попыткам. Одной из возможностей является использование пороговых сигнатур, криптографические схемы, позволяющие однозначно идентифицировать публичные ключ для эффективного управления несколькими секретными «частями», некоторые или все из них должны быть использованы для создания действительной подписи. К сожалению, пороговые подписи совместимы с ECDSA Bitcoin требуют больших вычислительных затрат создания и полиномиальной сложности. Другие схемы, такие как Подписи Шнорра обеспечивают гораздо более низкие затраты, однако график, в котором они могут быть представлены в Bitcoin протокол неясен. Поскольку конечная безопасность депозитов зависит от несколько связанных validator, еще один вариант — сократить количество держателей ключей с несколькими подписями до связанное подмножество общего числа validators, такое что порог подписи становятся возможными (или, на худой конец, родными для Bitcoin возможна мультиподпись). Это, конечно, снижает общая сумма облигаций, которая может быть вычтена в качестве возмещения, если validator будут вести себя незаконно, однако это это изящная деградация, просто установка верхнего предела количество средств, которые могут безопасно перемещаться между две сети (вернее, на % потерь при атаке из __PH_0004__s удалось). Таким образом, мы считаем, что вполне реально разместить достаточно безопасный «виртуальный парачейн» с функциональной совместимостью Bitcoin. между двумя сетями, хотя, тем не менее, это значительные усилия с неопределенными сроками и, вполне возможно, требуя сотрудничества заинтересованных сторон в рамках этого сеть.
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.
Протокол в деталях
Протокол можно условно разбить на три части: механизм консенсуса, интерфейс парачейна. и маршрутизация межцепочных транзакций. 6.1. Релейная цепь Операция. релейная цепь будет вероятно, это цепочка, во многом похожая на Ethereum тем, что она основан на состоянии с адресом сопоставления состояния учетной записи информация, в основном балансы и (во избежание повторов) счетчик транзакций. Размещение здесь учетных записей преследует одну цель: обеспечить учет, личность которого обладает какая доля участия в системе.7 Однако будут заметные различия: • Контракты не могут быть развернуты посредством транзакций; исходя из желания избежать функциональности приложения в релейной цепочке, оно не будет поддерживать публичное внедрение контрактов. • Использование вычислительных ресурсов («газ») не учитывается; поскольку единственные функции, доступные для публичного использования будет исправлено, обоснование учета газа больше не держится. Таким образом, взимается фиксированная плата. во всех случаях, что позволяет добиться большей производительности в любом динамическое выполнение кода, которое может потребоваться и более простой формат транзакции. • Для перечисленных контрактов поддерживается специальная функциональность, обеспечивающая автоматическое выполнение и вывод сетевых сообщений. В случае, если в релейной цепочке есть виртуальная машина и она будет основанный на EVM, он будет иметь ряд модификаций для обеспечения максимальной простоты. Вероятно, это было бы иметь ряд встроенных контрактов (аналогично тем, что есть в адреса 1–4 в Ethereum), чтобы обеспечить возможность специфичной для платформы обязанности, подлежащие управлению, включая консенсусный контракт, 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, приемлемые ставки выплат и адреса, а также краткосрочные (сессионные) идентификаторы. Позволяет аккаунту зарегистрировать желание стать связанный validator (вместе с его требованиями), чтобы назначить какую-либо личность, а для ранее существовавших связанных validators зарегистрировать свое желание выйти из этого статуса. Это также включает в себя сам механизм проверки и канонизации. 6.2.1. Ставка-token Ликвидность. Как правило, желательно иметь как можно больше из общего числа staking tokens, чтобы быть участие в операциях по техническому обслуживанию сети, поскольку это напрямую связывает безопасность сети с общей «рыночной капитализацией» staking token. Это может легко стимулироваться путем раздувания валюты и раздачи доходов тем, кто участвует в качестве validators. Однако сделать это представляет проблему: если token заблокирован в Контракте о ставках под наказанием сокращения, как значительная часть может оставаться достаточной ликвидный, чтобы позволить обнаружение цен? Одним из ответов на это является разрешение прямого деривативного контракта, обеспечивающего взаимозаменяемые token на базовой ставке token. Это трудно организовать без доверия. Более того, эти производные token не могут рассматриваться одинаково по той же причине, по которой различные государственные облигации еврозоны не являются взаимозаменяемыми: существуют это вероятность того, что базовый актив потерпит неудачу и станет бесполезный. С правительствами еврозоны может произойти по умолчанию. При ставке validator tokens validator может действовать злонамеренно и быть наказанным. Следуя нашим принципам, мы выбираем самое простое решение: не все token будут поставлены на карту. Это означало бы, что некоторая часть (возможно, 20%) token будет принудительно оставаться жидким. Хотя это несовершенно с точки зрения безопасности, вряд ли это будет иметь фундаментальное значение для безопасность сети; 80% возможных репараций в результате конфискации облигаций все равно можно будет выплатить. по сравнению с «идеальным случаем» 100% staking. Соотношение между поставленными и ликвидными token можно довольно просто определить с помощью механизма обратного аукциона. По сути, владельцы token заинтересованы в том, чтобы стать validator. каждый из них разместит предложение по контракту staking с указанием минимальная ставка выплат, которую они потребуют принять часть. В начале каждой сессии (сессии будут происходят регулярно, возможно, раз в час) validator слотов будут заполнены в соответствии с каждым возможным Ставка validator и размер выплат. Один из возможных алгоритмов ибо это означало бы брать тех, у кого самые низкие предложения, представляют собой ставку, не превышающую общую целевую ставку делится на количество слотов и не может быть меньше половины этой суммы. Если места не могут быть заполнены, нижняя граница может быть неоднократно уменьшена на некоторый коэффициент, чтобы удовлетворить требованиям. 6.2.2. Номинирование. Можно безнадежно номинировать одни staking tokens на активный validator, давая им ответственность за выполнение обязанностей validator. Номинирование работ через систему одобрения-голосования. Каждый потенциальный номинатор может опубликовать инструкцию к контракту staking. выражающее одну или несколько validator личностей, под чьим именем ответственность, которую они готовы доверить своим обязательствам. На каждой сессии облигации номинаторов распределяются таким образом, чтобы представлены одним или несколькими validator. Алгоритм распределения оптимизирует набор из validator с эквивалентной суммой. облигации. Облигации номинаторов переходят под фактическую ответственность validator aи получить интерес или страдать наказание-смягчение соответственно. 6.2.3. Конфискация/сожжение облигаций. Определенное поведение validator приводит к штрафному сокращению их залога. Если облигация снижается ниже допустимого минимума, сеанс преждевременно завершился и начался другой. Неисчерпывающий список наказуемых validator проступков включает в себя: • Будучи частью группы парачейнов, неспособной предоставить консенсус относительно действительности блока парачейна; • активно подписываясь за действительность инвалида блок парачейна; • невозможность доставить исходящую полезную нагрузку ранее проголосовали как доступные; • бездействие во время процесса достижения консенсуса; • проверка блоков релейной цепи на конкурирующих вилках. Некоторые случаи неправомерного поведения угрожают целостности сети (например, подписание недействительных блоков парачейна и проверка нескольких сторон форка) и, как следствие, приводят к эффективному изгнанию за счет полного сокращения связи. В другие, менее серьезные случаи (например, бездействие в консенсусе процессе) или в случаях, когда вина не может быть точно распределена (будучи частью неэффективной группы), небольшая часть вместо этого может быть оштрафован на сумму залога. В последнем случае это хорошо работает с оттоком подгрупп, чтобы гарантировать, что вредоносные узлы несут значительно большие потери, чем сопутствующе поврежденные доброжелательные узлы. В некоторых случаях (например, проверка нескольких вилок и недействительный подписание субблока) validator сами не могут легко обнаружить неправомерное поведение друг друга, поскольку постоянная проверка каждого блока парачейна было бы слишком трудной задачей. Здесь необходимо заручиться поддержкой сторон, внешних по отношению к процесс проверки для проверки и сообщения о таком неправильном поведении. Стороны получают вознаграждение за сообщение о такой деятельности; их термин «рыбаки» проистекает из маловероятности такой награды. Поскольку эти случаи, как правило, очень серьезные, мы полагаем, что любые вознаграждения могут быть легко выплачены из конфискованной облигации. В целом мы предпочитаем балансировать горение (т.е. сведение на нет) с перераспределением, а не попытка массового перераспределения. Это имеет эффект
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 11 увеличивая общее значение token, компенсируя сети в целом, а не конкретной сторона, участвовавшая в открытии. Это в первую очередь в целях безопасности механизм: задействованные большие суммы могли бы привести к чрезвычайной и острой стимулировке поведения, если бы все они направлено на одну цель. В общем, важно, чтобы вознаграждение было достаточно большим, чтобы сделать верификацию полезной для сети, но не настолько большим, чтобы компенсировать затраты на противодействие хорошо финансируемый, хорошо организованный преступник «промышленного уровня» хакерская атака на какого-то неудачливого validator с целью заставить его вести себя неподобающе. Таким образом, требуемая сумма, как правило, не должна быть больше, чем прямая связь заблудшего validator, чтобы не возникают извращенные стимулы к плохому поведению и заявлению о награде. С этим можно бороться либо явно посредством минимального требования к прямым облигациям для того, чтобы быть validator или косвенно, объясняя номинаторам, что validator с небольшим количеством депонированных облигаций не имеют большого стимула вести себя хорошо. 6.3. Реестр Парачейна. Каждый парачейн определен в этот реестр. Это относительно простая конструкция, подобная базе данных, которая содержит как статическую, так и динамическую информацию. каждая цепочка. Статическая информация включает в себя индекс цепочки (простой целое число), а также идентификатор протокола проверки, средства различения разных классов парачейн, чтобы можно было использовать правильный алгоритм проверки. под руководством validators, призванных выдвинуть действительного кандидата. Первоначальная проверка концепции будет сосредоточена на размещении новые алгоритмы проверки в самих клиентах, что фактически требует хард-форка протокола каждый раз, когда добавлен дополнительный класс цепи. В конечном счете, однако, возможно, можно указать алгоритм проверки в одновременно строгий и достаточно эффективный способ, позволяющий клиентам способен эффективно работать с новыми парачейнами без хард-форк. Одним из возможных способов решения этой проблемы могло бы быть указание алгоритм проверки парачейна в хорошо зарекомендовавшей себя, скомпилированный в собственном коде, нейтральный к платформе язык, такой как WebAssembly. Необходимы дополнительные исследования, чтобы определить действительно ли это осуществимо, однако если это так, это может принести вместе с этим огромное преимущество в виде исключения хард-форков навсегда. Динамическая информация включает в себя аспекты системы маршрутизации транзакций, которые должны иметь глобальное соглашение, такие как в качестве входной очереди парачейна (описано в разделе 6.6). В реестр можно добавлять только парачейны. путем полного голосования на референдуме; этим можно было бы управлять внутри, но, скорее всего, будет размещен во внешнем контракт референдума, чтобы облегчить повторное использование в соответствии с более общие компоненты управления. Параметры для требования к голосованию (например, необходимый кворум, большинство требуется) для регистрации дополнительных цепочек и прочего, менее формальные обновления системы будут изложены в «основном конституции», но, скорее всего, будут следовать довольно традиционной путь, по крайней мере, на начальном этапе. Точная формулировка отсутствует. объем настоящей работы, но, например. квалифицированное большинство в две трети для принятия более одной трети всей системы положительное голосование по ставкам может быть разумной отправной точкой. Дополнительные операции включают подвешивание и удаление парацепей. Отстранение, надеюсь, никогда не произойдет случается, однако это призвано служить как минимум гарантией в системе проверки парачейна возникла какая-то неразрешимая проблема. Самый очевидный пример, когда это может быть необходимо критическое для консенсуса различие между реализациями, приводящее validator к неспособности прийти к согласию по действительность или блоки. Валидаторам будет предложено использовать несколько реализаций клиента, чтобы они могли чтобы обнаружить такую проблему до конфискации облигаций. Поскольку приостановка является экстренной мерой, это будет под эгидой динамического validator-голосования, а не чем референдум. Восстановление возможно как из validators или референдума. Полный отказ от парачейнов произойдет только после референдума и при котором потребуется существенный льготный период, позволяющий осуществить упорядоченный переход к либо создать отдельную сеть, либо стать частью какой-либо другой консенсус-система. Льготный период, скорее всего, будет длиться порядок месяцев и, вероятно, будет установлен для каждой цепочки в реестре парачейнов, чтобы разные парачейны могут пользоваться разными льготными периодами в зависимости от их потребность. 6.4. Пломбирование блоков реле. По сути, герметизация подразумевает к процессу канонизации; то есть базовые данные трансформировать которыйотображает оригинал в нечто принципиально уникальное и значимое. В цепочке PoW запечатывание фактически является синонимом добычи полезных ископаемых. В нашем случае он включает в себя сбор подписанных заявлений от validators о действительности, доступности и каноничности конкретный блок релейной цепи и блоки парачейна, которые оно представляет. Механика базового алгоритма консенсуса BFT выходит за рамки настоящей работы. Мы будем вместо этого опишите его, используя примитив, который предполагает государственная машина, создающая консенсус. В конечном итоге мы ожидаем вдохновиться рядом многообещающих BFT консенсусных алгоритмы в ядре; Тангаора [9] (вариант BFT Плот [16]), Tendermint [11] и HoneyBadgerBFT [14]. Алгоритму придется достичь соглашения по нескольким парачейнам параллельно, что отличается от обычного blockchain механизмы консенсуса. Мы предполагаем, что однажды консенсус достигнут, мы можем записать консенсус в неопровержимом доказательстве, которое может быть предоставлено любым из участников к нему. Мы также предполагаем, что неправильное поведение в рамках протокола можно вообще свести к небольшому группа, содержащая плохо себя ведущих участников, чтобы свести к минимуму сопутствующий ущерб при назначении наказания8. Доказательство, которое принимает форму наших подписанных утверждений, помещается в заголовок блока релейной цепи вместе. с некоторыми другими полями, в частности корнем дерева состояний релейной цепочки и корнем дерева транзакций.
уплотнение процесс берет место под а одинокий создание консенсуса механизм обращение оба тот блок релейной цепи и блоки парачейнов, которые составляют часть содержимого ретранслятора: парачейны не «фиксируются» по отдельности их подгруппами, а затем сопоставляются позже. Это приводит к более сложному процессу для релейной цепи, но позволяет нам завершить согласование всей системы за один этап, минимизируя задержку и позволяя для довольно сложных требований к доступности данных, которые полезно для процесса маршрутизации ниже. 8Существующие схемы консенсуса BFT на основе PoS, такие как Tendermint BFT и оригинальный Slasher, соответствуют этим утверждениям.
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 12 Состояние машины консенсуса каждого участника может моделироваться как простая (двумерная) таблица. Каждый участник (validator) имеет набор информации в виде подписанных заявлений («голосов») от других участников в отношении каждого кандидата на блок парачейна, а также кандидата на блок релейной цепи. Набор информации состоит из двух частей. данных: Наличие: есть это validator иметь выход информация о транзакции из этого блока, поэтому они могут правильно проверить кандидатов на парачейн в следующем блоке? Они могут голосовать либо 1 (известно), либо 0 (пока неизвестно). Как только они проголосовали 1, они обязуются проголосовать аналогичным образом за остальная часть этого процесса. Последующие голоса, которые не уважение это является основанием для наказания. Валидность: действителен ли блок парачейна и все ли данные с внешней ссылкой (например, транзакции) доступен? Это актуально только для validator, назначенных парачейну, в котором они голосуют. Они могут проголосовать 1 (действительно), -1 (недействительно) или 0. (пока не известно). Как только они проголосуют за ненулевое значение, они намерены голосовать таким образом до конца процесс. Последующие голоса, которые не соблюдают это являются основанием для наказания. Все validator должны проголосовать; голоса могут быть поданы повторно, если они соответствуют правилам, изложенным выше. Прогрессирование консенсус можно смоделировать как несколько стандартных BFT алгоритмов консенсуса в каждом парачейне, происходящих параллельно. Поскольку этому потенциально препятствует относительно небольшое меньшинство злоумышленников сосредоточено в единой группы парачейнов, существует общий консенсус в отношении установить ограничитель обратного хода, ограничивая худший сценарий от тупик всего лишь к одному или нескольким блокам пустотного парачейна (и наказание для виновных). Основные правила валидности отдельных блоков (которые позволяют всему набору validators в целом прийти к консенсус по поводу того, что он станет уникальным кандидатом на парачейн на которые можно ссылаться из канонического реле): • должно быть, чтобы не менее двух третей validator проголосовали положительно, и ни один из них не проголосовал бы отрицательно; • более трети validator должны проголосовать положительно за доступность информации об исходящей очереди. Если есть хотя бы один положительный и хотя бы один отрицательный голос о действительности, создается исключительное условие. и весь набор validators должен проголосовать, чтобы определить если есть злоумышленники или если произошел случайный вилка. Помимо действительных и недействительных, существует третий вид голосов. разрешены, что эквивалентно голосованию за обоих, а это означает, что узел имеет противоречивые мнения. Это может быть связано с владелец узла запускает несколько реализаций, которые не согласен, что указывает на возможную неясность протокола. После подсчета всех голосов из полного набора validator, если проигрышное мнение имеет, по крайней мере, незначительную долю (к быть параметризованными; максимум половина, а возможно и значительно меньше) голосов за выигравшее мнение, то предполагается, что будет случайным форком парачейна, и парачейн автоматически отключится от процесса консенсуса. В противном случае мы считаем, что это злонамеренное действие, и наказываем виновного. меньшинство, голосовавшее за особое мнение. Заключение представляет собой набор подписей, подтверждающих каноничность. Блок релейной цепи затем может быть опломбирован. и начался процесс запечатывания следующего блока. 6.5. Улучшения в герметизации блоков реле. Пока этот метод герметизации дает серьезные гарантии работы системы, он не особенно хорошо масштабируется поскольку ключевая информация каждого парачейна должна иметь свое доступность гарантирована более чем одной третью всех validator. Это означает, что ответственность каждого validator растет по мере добавления новых цепей. Хотя доступность данных в сетях открытого консенсуса по сути является нерешенной проблемой, существуют способы уменьшения накладных расходов, возникающих на узлах validator. Один простой решение состоит в том, чтобы осознать, что хотя validators должны взять на себя ответственность за доступность данных, им не нужно фактически хранить, передавать или тиражировать данные самостоятельно. Вторичные хранилища данных, возможно, связанные с (или даже с самой же) сопоставители, которые собирают эти данные, могут управлять задача гарантировать доступность, при этом validators предоставляют часть своих процентов/дохода в виде оплаты. Однако, хотя это и может обеспечить некоторую промежуточную масштабируемость, это все равно не решает основную проблему; с тех пор добавление большего количества цепочек, как правило, потребует дополнительных validator, текущее потребление сетевых ресурсов (особенно с точки зрения пропускной способности) растет с квадратом тотцепи, несостоятельная собственность в долгосрочной перспективе. В конце концов, мы, вероятно, продолжим ломать головы против фундаментального ограничения, которое гласит, что для консенсусную сеть, которую следует считать доступной и безопасной, текущие требования к полосе пропускания имеют порядок общего validators раз умножает общую входную информацию. Это связано с неспособность недоверенной сети правильно распределить задачу хранения данных по множеству узлов, которая сидит помимо в высшей степени распределяемой задачи обработки. 6.5.1. Представляем задержку. Один из способов смягчить это Правило состоит в том, чтобы ослабить понятие непосредственности. Требуя, чтобы 33%+1 validator голосовали за доступность только в конечном итоге, а не сразу, мы можем лучше использовать экспоненциальное распространение данных и помочь сгладить пики обмена данными. Разумное равенство (хотя и недоказанное) может быть: (1) задержка = участники × цепочки В рамках текущей модели размер системы масштабируется с количеством цепочек, чтобы гарантировать, что обработка распределенный; поскольку для каждой цепочки потребуется хотя бы один validator, и мы фиксируем константу подтверждения доступности доля validators, то участники аналогично растут с количеством цепей. В итоге мы имеем: (2) задержка = размер2 Это означает, что по мере роста системы требуемая полоса пропускания и задержка до момента доступности становятся известны по всей сети. сети, которую можно также охарактеризовать как количество блоков до завершения, увеличивается с увеличением его площади. Это существенный фактор роста и может оказаться заметным препятствием на пути и вынудить нас придерживаться «неплоских» парадигм например, объединение нескольких «Polkadotes» в иерархию для многоуровневой маршрутизации сообщений через дерево релейных цепочек.
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 13 6.5.2. Общественное участие. Еще одно возможное направление заключается в привлечении общественности к участию в этом процессе посредством система микрожалоб. Подобно рыбакам, здесь могут быть внешними сторонами, которые следят за validator, которые заявляют доступность. Их задача — найти того, кто не способен продемонстрировать такую доступность. При этом они может подать микрожалобу другим validator. PoW или заложенная облигация может быть использована для смягчения атаки Сивиллы что сделало бы систему практически бесполезной. 6.5.3. Гарантии наличия. Конечный путь будет заключаться в том, чтобы назначить второй набор связанных validators как «доступность» гаранты». Они будут связаны так же, как и обычные validator, и даже могут быть взяты из того же набора. (хотя в этом случае они будут выбираться на длительный период, по крайней мере, за сеанс). В отличие от обычных validator, они не будет переключаться между парачейнами, а скорее будет сформировать единую группу, чтобы подтвердить доступность всех важных межцепочных данных. Это имеет то преимущество, что ослабляет эквивалентность между участниками и цепочками. По сути, цепи могут расти (вместе с исходным набором цепочек validator), тогда как участники, и особенно те, кто принимает участие в тестировании доступности данных, могут оставаться, по крайней мере, сублинейными. и, вполне возможно, постоянный. 6.5.4. Настройки подборщика. Один важный аспект этого система заключается в том, чтобы обеспечить здоровый выбор колляторы, создающие блоки в любом парачейне. Если один коллатор доминировал над парачейном, а затем несколько атак становится более осуществимым, поскольку вероятность отсутствия доступность внешних данных будет менее очевидной. Одним из вариантов является искусственное взвешивание блоков парачейна в псевдослучайный механизм, позволяющий отдавать предпочтение широкому кругу алгоритмов сопоставления. В первом случае нам потребуется как часть механизма консенсуса, который поддерживают validators Кандидаты в блоки парачейна определены как «более тяжелые». Точно так же мы должны стимулировать validators попытаться предложите самый весомый блок, который они смогут найти — это может быть Это делается путем выплаты части вознаграждения пропорционально весу кандидата. Чтобы гарантировать, что подборщикам предоставляется разумная справедливая вероятность того, что их кандидат будет выбран победителем кандидата в консенсусе, мы определяем удельный вес Кандидат в блок парачейна определяется случайной функцией, связанной с каждым коллатором. Например, взяв мера расстояния XOR между адресом сопоставления и некоторое криптографически безопасное псевдослучайное число определяется вблизи точки создаваемого блока (условный «выигрышный билет»). Это фактически дает каждому сопоставитель (или, более конкретно, адрес каждого сопоставителя) случайный шанс того, что их блок-кандидат «победит» над все остальные. Чтобы смягчить атаку Сивиллы, когда один сопоставитель «майнит» адрес, близкий к выигрышному билету и, таким образом, если каждый блок является избранным, мы бы добавили некоторую инерцию к адресу сопоставления. Это может быть так же просто, как потребовать их иметь базовую сумму средств на адресе. Более элегантным подходом было бы взвешивание близости к выигрышный билет с указанием суммы средств, припаркованных на адрес, о котором идет речь. Хотя моделирование еще не завершено, вполне возможно, что этот механизм позволяет даже очень мелкие заинтересованные стороны могут внести свой вклад в качестве сопоставителя. 6.5.5. Блоки с избыточным весом. Если набор validator скомпрометирован, они могут создать и предложить блок, который, хотя и действительны, требует слишком много времени для выполнения и подтвердить. Это проблема, поскольку группа validator может разумно сформировать блок, на создание которого уходит очень много времени выполняться, если уже не известна какая-то конкретная часть информации, позволяющая сократить путь, например. факторинг крупного премьер. Если бы хоть один сопоставитель знал эту информацию, то у них будет явное преимущество в получении своего собственного кандидаты соглашались, пока остальные были заняты обработкой старого блока. Мы называем эти блоки избыточным весом. Защита от validators, отправляющих и проверяющих эти блоки, в основном подпадает под ту же самую защиту, что и для недействительные блоки, хотя и с дополнительной оговоркой: поскольку время, необходимое для выполнения блока (и, следовательно, его статус как избыточный вес) является субъективным, окончательный результат голосования по плохое поведение разделится по существу на три лагеря. Один возможно, что блок определенно не имеет лишнего веса — в этом случае более двух третей заявляют, что они могли бы выполнить блок в пределах некоторого ограничения (например, 50 % от общего времени, разрешенного между блоками). Другое заключается в том, что блок dопределенно избыточный вес — это было бы, если бы более две трети заявляют, что не смогли выполнить блок в пределах указанного лимита. Последняя возможность — это довольно равная раскол мнений между validators. В этом случае мы можем решите применить соразмерное наказание. Чтобы validator могли предсказать, когда они могут оказаться Предлагая блок с избыточным весом, возможно, было бы разумно потребовать от них публиковать информацию о своей производительности для каждого блока. За достаточный период времени это должно позволить им профилировать скорость обработки относительно сверстников, которые будут их судить. 6.5.6. Коллекторное страхование. Для validators осталась одна проблема: в отличие от сетей PoW, для проверки коллятора для проверки достоверности, они должны фактически выполнять транзакции в нем. Злоумышленники могут передавать недействительные или слишком тяжелые блоки validator, вызывая у них беспокойство (растрачивание блоков). свои ресурсы) и требует потенциально существенных альтернативных издержек. Чтобы смягчить это, мы предлагаем простую стратегию на часть validators. Во-первых, кандидаты на блок парачейна были отправлены до validators необходимо подписать из учетной записи цепочки ретрансляции с фондами; если это не так, то validator должен отпасть это немедленно. Во-вторых, такие кандидаты должны быть упорядочены по приоритету путем комбинации (например, умножения) количество средств на счете до определенного предела, количество предыдущих блоков, которые коллятор успешно предложил в прошлом (не говоря уже о любых предыдущих наказания), а также фактор близости к победителю. билет, как обсуждалось ранее. Шапка должна быть такой же в качестве штрафных санкций, выплаченных validator по делу из них отправляют недействительный блок. Чтобы не стимулировать подборщики отправлять недействительных или перегруженных кандидатов на блоки validator, любой validator может поместить в следующий блок транзакцию, включающую блок-нарушитель, в котором утверждается о неправомерном поведении, что приведет к переводу некоторых или всех средств из некорректно работающего коллатора отчет потерпевшему validator. Этот тип транзакций опережает все остальные, чтобы гарантировать, что сборщик не сможет снять средства до наказания. Сумма средства, перечисленные в качестве возмещения ущерба, пока являются динамическим параметром
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 14 подлежит моделированию, но, вероятно, будет составлять часть вознаграждения за блок validator, чтобы отразить уровень причиненного горя. Чтобы предотвратить произвольную конфискацию средств злоумышленниками validators, сборщик может взамен обжаловать решение validator присяжных, состоящих из случайно выбранных validators. для внесения небольшого депозита. Если они примут решение в пользу validator, депозит будет использован ими. Если нет, то депозит возвращается, а validator оштрафован (поскольку validator находится в гораздо более опасной позиции, штраф будет вероятно, будет довольно здоровенным). 6.6. Интерчейн Транзакция Маршрутизация. Интерчейн маршрутизация транзакций является одним из важнейших процессов обслуживания задачи релейной цепи и ее validators. Это логика, которая управляет тем, как опубликованная транзакция (часто сокращенно просто «публикация») становится желаемым результатом из одного исходного парачейна в непередаваемый вход другого целевого парачейна без какого-либо доверия требования. Мы тщательно подбираем приведенную выше формулировку; особенно мы не требуют, чтобы в источнике была транзакция parachain явно санкционировал этот пост. Единственный ограничения, которые мы налагаем на нашу модель, заключаются в том, что парачейны должны предоставить упакованные как часть общего блока выходные данные обработки, сообщения, являющиеся результатом выполнение блока. Эти сообщения структурированы как несколько очередей FIFO; тот количество списков называется базой маршрутизации и может быть около 16. Примечательно, что это число представляет собой количество парачейнов, которые мы можем поддерживать, не прибегая к многофазная маршрутизация. Первоначально Polkadot будет поддерживать это вид прямой маршрутизации, однако мы опишем один из возможных процесс многофазной маршрутизации («гипермаршрутизация») как средство масштабирования далеко за пределы первоначального набора парачейнов. Мы предположить что все участники знать тот подгруппы для следующих двух блоков n, n + 1. Таким образом, Система маршрутизации проходит следующие этапы: • CollatorS: свяжитесь с членами Валидаторов[n][S] • Сортировщики: ДЛЯ КАЖДОЙ подгруппы: убедитесь, что минимум 1 член валидаторов[n][s] в контакте • Сопоставители: ДЛЯ КАЖДОЙ подгруппы: предположить egress[n −1][s][S] доступен (все входящие сообщения данные в «S» из последнего блока) • Сопоставители: Составьте кандидата блока b для S: (b.header, b.ext, b.proof, b.ceipt, b.egress) • Сопоставители: Отправить доказательство информация доказательство[S] = (b.header, b.ext, b.proof, b.receipt) на Валидаторы[n][S] • CollatorS: обеспечение данных внешних транзакций b.ext. доступен другим подборщикам и validators • Сопоставители: ДЛЯ КАЖДЫЙ подгруппа с: Отправить выход информация выход[n][S][s] = (b.заголовок, b.квитанция, b.выход[ы]) чтобы тот получение подгруппы члены из следующий блокировать Валидаторы[n + 1][s] • ValidatorV: предварительно соедините все элементы одного набора. для следующего блока: пусть N = Chain[n + 1][V ]; подключить все validators v такие, что Chain[n + 1][v] = N • ВалидаторV: Сопоставить все поступающие данные для этого блок: ДЛЯ КАЖДЫЙ подгруппа с: Получить egress[n −1][s][Chain[n][V ]], получить от других validators v таких, что Chain[n][v] = Chain[n][V ]. Возможно, пройдя через случайно выбранных других validator для доказательства попытки. • ВалидаторV: Примите кандидатские доказательства для этого доказательство блока[Chain[n][V ]]. Действительность блокировки голосования • ВалидаторV: Принять выходные данные кандидата для следующий блок: ДЛЯ КАЖДОЙ подгруппы примите выход[n][s][N]. Возможность блокировки выхода при голосовании; переопубликовать среди заинтересованных validators v так, чтобы Цепочка[n + 1][v] = Цепочка[n + 1][V ]. • ВалидаторV: ДО СОГЛАСИЯ Где: egress[n][from][to] — текущая выходная очередь. информация для сообщений, идущих из парачейна «от», в парачейн «to» в блоке номер «n». CollatorS — это средство сортировки для парачейна S. Validators[n][s] — это набор validators для парачейна s в блоке номер n. И наоборот, Chain[n][v] — это парачейн, которому назначен validator v в блоке номер n. block.egress[to] — выход очередь сообщений из какого-то блока парачейна, чей пункт назначения парачейна. Поскольку коллаторы взимают комиссию (за транзакцию) на основе их блоки становятся каноническими, у них появляется стимул убедитесь, что для каждого пункта назначения следующего блока имя подгруппы участники информируются о выходной очереди из настоящего блок. Валидаторы заинтересованы только в формировании консенсуса по блоку (парачейна), поэтому их мало волнует какой блок сопоставления в конечном итоге становится каноническим. В В принципе, validator может заключить союз с сопоставителем и вступить в сговор с целью уменьшить шансы других сопоставителей блоки становятся каноническими, однако это сложно организовать из-за случайного выборадействие validators для парачейнов, и от них можно защититься за счет снижения комиссий, выплачиваемых за блоки парачейнов, которые выдерживают процесс консенсуса. 6.6.1. Доступность внешних данных. Обеспечение работоспособности парачейна внешние данные на самом деле доступны, это вечная проблема с децентрализованные системы, направленные на распределение рабочей нагрузки между сеть. В основе проблемы лежит доступность проблема, которая гласит, что, поскольку невозможно ни сделать неинтерактивное подтверждение доступности или какой-либо другой доказательства недоступности, чтобы система BFT правильно проверять любой переход, корректность которого зависит от наличие некоторых внешних данных, максимальное количество приемлемо византийских узлов плюс один системы должен подтвердить наличие данных. Для правильного масштабирования системы, например Polkadot, это возникает проблема: если постоянная доля validators должны подтвердить наличие данных и предполагая, что что validators действительно захотят сохранить данные до того, как они будут подтверждены, как нам избежать проблема увеличения требований к пропускной способности/хранилищу с увеличением размера системы (и, следовательно, количества validators)? Одним из возможных ответов было бы создание отдельного набора. из validators (гарантов доступности), чей заказ растет сублинейно с размером Polkadot в целом. Это описано в 6.5.3. У нас также есть второстепенный трюк. Как группа, у сопоставителей есть внутренний стимул гарантировать, что все данные доступны для выбранного ими парачейна, поскольку без него они не могут создавать дополнительные блоки, из которых они могут собирать комиссию за транзакцию. Коллаторы также образуют группу, членство в которой варьируется (из-за случайного характера группы parachain validator) нетривиален для входа и прост
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 15 доказать. Таким образом, недавним сопоставлениям (возможно, из последних нескольких тысяч блоков) разрешено ставить задачи доступность внешних данных для конкретного парачейна заблокируйте validators за небольшой залог. Валидаторы должны связаться с лицами из явно нарушившей подгруппы validator, которые дали показания, и либо получить и вернуть данные сопоставителю, либо передать ситуацию на более высокий уровень. дело, свидетельствуя об отсутствии доступности (прямой отказ предоставить данные считается правонарушением, связанным с конфискацией облигаций, поэтому неправомерное поведение validator, скорее всего, просто разорвать соединение) и связаться с дополнительными validators чтобы запустить тот же тест. В последнем случае залог коллатора возвращается. Как только будет достигнут кворум validator, которые могут дать такие свидетельства о недоступности, они будут освобождены. плохо себя ведущая подгруппа наказывается, и блокировка отменяется. 6.6.2. Маршрутизация сообщений. Каждый заголовок парачейна включает в себя выходной-три-корень; это корень дерева, содержащего контейнеры базы маршрутизации, каждый контейнер представляет собой объединенный список выходных постов. Доказательства Меркла могут быть предоставлены через parachain validators, чтобы доказать, что конкретный парачейн у блока была определенная выходная очередь для определенного парачейна назначения. В начале обработки блока парачейна каждый выходная очередь другого парачейна, привязанная к указанному блоку, равна объединены во входную очередь нашего блока. Мы предполагаем сильными, вероятно, CSPR9, подблок, предназначенный для достижения детерминированной операции, которая не предполагает фаворитизма между какими-либо Спаривание блоков парачейна. Колляторы рассчитывают новую очередь и опустошить выходные очереди в соответствии с параметрами парачейна логика. Содержимое входной очереди записывается явно в блок парачейна. Это преследует две основные цели: во-первых, это означает, что парачейн можно без доверия синхронизировать изолированно от других парачейнов. Во-вторых, это упрощает логистику данных, если весь входной очередь не может быть обработана в одном блоке; validators и средства сортировки могут обрабатывать следующие блоки без необходимости специально получать данные очереди. Если входная очередь парачейна превышает пороговое значение сумма в конце обработки блока, затем она отмечается насыщена в релейной цепи, и никакие дальнейшие сообщения не могут быть быть доставлено ему до тех пор, пока оно не будет очищено. Доказательства Меркла используется для демонстрации точности работы сортировщика в Доказательство блока парачейна. 6.6.3. Критика. Один незначительный недостаток, связанный с этим основным механизмом является атака после взрыва. Здесь все парачейны отправляют максимально возможное количество постов к конкретному парачейну. Хотя это связывает цель входная очередь сразу, никакой ущерб не наносится сверх стандартная транзакционная DoS-атака. Работает нормально, с набором хорошо синхронизированных и незлонамеренные алгоритмы сортировки и validators для N парачейнов, Всего N × M validators и L колляторов на парачейн, мы может разбить общее количество путей передачи данных на блок на: Валидатор: M −1+L+L: M −1 для остальных validators в наборе парачейнов L для каждого сопоставления, предоставляющего блок-кандидат парачейна, и второй L для каждого сопоставления. следующего блока, требующего исходящих полезных данных предыдущего блока. (Последнее на самом деле больше похоже на худший случай. операции, поскольку вполне вероятно, что подборщики будут использовать такие данные.) Сборщик: M +kN: M для подключения к каждому соответствующему блок парачейна validator, кН для распределения исходящих полезных данных в некоторое подмножество каждой группы парачейна validator для следующий блок (и, возможно, какой-нибудь предпочтительный сопоставитель(и)). Таким образом, пути передачи данных на узел растут линейно. с общей сложностью системы. Хотя это разумно, поскольку система масштабируется до сотен или тысяч парачейнов, некоторая задержка связи может быть поглощены в обмен на более низкие темпы роста сложности. В этом случае может быть использован алгоритм многофазной маршрутизации. чтобы уменьшить количество мгновенных путей ценой введения буферов хранения и задержки. 6.6.4. Маршрутизация гиперкуба. Маршрутизация гиперкуба — это механизм, который в большинстве случаев можно построить как расширение базовый механизм маршрутизации, описанный выше. По сути, вместо того, чтобы увеличивать связность узлов с увеличением количества парачейнов и узлов подгрупп, мы растем только с логарифм парацепей. Сообщения могут перемещаться между очереди нескольких парачейнов на пути к окончательной доставке. Сама маршрутизация детерминирована и проста. Мы начинаем с ограничение количества ячеек во входных/выходных очередях; а не общее количество парачейнов, они являютсябаза маршрутизации (b) . Это будет зафиксировано как число изменений парачейнов, при этом показатель маршрутизации (e) вместо этого увеличивается. Согласно этой модели, объем нашего сообщения растет с ростом O(be), при этом пути остаются постоянными и задержка (или количество блоков, необходимых для доставки) с О(е). Наша модель маршрутизации представляет собой гиперкуб размером e, причем каждая сторона куба имеет b возможных мест. В каждом блоке мы маршрутизируем сообщения по одной оси. Мы чередуйте оси по кругу, гарантируя таким образом время доставки блоков e в наихудшем случае. В рамках обработки парачейна иностранные Сообщения, обнаруженные во входящей очереди, немедленно направляются в соответствующий контейнер исходящей очереди, учитывая текущий номер блока (и, следовательно, размер маршрутизации). Это процесс требует дополнительной передачи данных для каждого перехода на пути доставки, однако это само по себе проблема которые можно смягчить, используя некоторые альтернативные средства доставки полезной нагрузки данных и включая только ссылку, а не полную полезную нагрузку сообщения в post-trie. Пример такой маршрутизации гиперкуба для системы с 4 парачейнами b = 2 и e = 2 могут быть: Фаза 0, для каждого сообщения M: • sub0: если Mdest ∈{2, 3}, то sendTo(2), иначе сохраните • sub1: если Mdest ∈{2, 3}, то sendTo(3), иначе сохраните • sub2: если Mdest ∈{0, 1}, то sendTo(0), иначе сохраните • sub3: если Mdest ∈{0, 1}, то sendTo(1), иначе сохраните Фаза 1, по каждому сообщению M: • sub0: если Mdest ∈{1, 3}, то sendTo(1), иначе сохраните • sub1: если Mdest ∈{0, 2}, то sendTo(0), иначе сохраните • sub2: если Mdest ∈{1, 3}, то sendTo(3), иначе сохраните • sub3: если Mdest ∈{0, 2}, то sendTo(2), иначе сохраните Два измерения здесь легко увидеть как первое. два бита индекса назначения; для первого блока, используется только бит более высокого порядка. Второй блок занимается с младшим битом. Как только произойдет то и другое (в произвольном order), тогда сообщение будет перенаправлено. 9криптографически безопасный псевдослучайный
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 16 6.6.5. Максимизация случайности. Одно изменение основного предложение будет иметь фиксированную сумму c2 −c validators, при этом c-1 validators в каждой подгруппе. Каждый блок, а не происходит неструктурированное перераспределение validators среди парачейнов, вместо этого для каждой подгруппы парачейнов, каждый validator будет присвоен уникальному и различному подгруппу парачейна в следующем блоке. Это бы приводят к инварианту, что между любыми двумя блоками, для любого двух пар парачейна, существует два validator, которые поменялись обязанностями в сфере парачейна. Хотя это не может быть использовано для получения абсолютных гарантий доступности. (одиночный validator иногда будет отключен от сети, даже если доброжелательный), он, тем не менее, может оптимизировать общий случай. Этот подход не лишен осложнений. Добавление парачейна также потребует реорганизации. из набора validator. Кроме того, количество validator, привязанное к квадрату количества парацепей, сначала будет очень маленьким, а в конечном итоге вырастет далеко слишком быстро и становится несостоятельным примерно после 50 парачейнов. Ни одна из этих проблем не является фундаментальной. В первом случае реорганизация наборов validator - это то, что должно быть в любом случае делается регулярно. Что касается размера validator установлено, если слишком мало, можно назначить несколько validators к тому же парачейну, применяя целочисленный коэффициент к общее количество validatorс. Механизм многофазной маршрутизации, такой как маршрутизация гиперкуба, рассмотренный в разделе 6.6.4, будет смягчить требования к большому количеству validators когда имеется большое количество цепочек. 6.7. Проверка парачейна. Основное назначение validator как актер с хорошими связями засвидетельствовать, что парачейн блок действителен, включая, помимо прочего, любой переход состояния, любые включенные внешние транзакции, выполнение любые ожидающие посты во входной очереди и конечное состояние выходной очереди. Сам процесс довольно прост. Как только validator запечатает предыдущий блок, они становятся свободными. начать работу по предоставлению кандидата на блок парачейна кандидат на следующий раунд консенсуса. Первоначально validator находит кандидата на блок парачейна через механизм сортировки парачейна (описанный далее) или один его со-validators. Данные кандидата на блок парачейна включает заголовок блока, заголовок предыдущего блока, любые включенные внешние входные данные (для Ethereum и Bitcoin такие данные будут называться транзакциями, однако в принципе они могут включать произвольные структуры данных для произвольных целей), данные выходной очереди и внутренние данные для подтверждения достоверности перехода состояния (для Ethereum это будут различные узлы дерева состояния/хранилища, необходимые для выполнения каждой транзакции). Экспериментальные данные показывают этот полный набор данных для недавнего блока Ethereum. быть самое большее несколько сотен КиБ. Одновременно, если это еще не сделано, validator будет попытка получить информацию, относящуюся к переходу предыдущего блока, первоначально из предыдущего блока validators и позже от всех validators, подписавших контракт доступность данных. Как только validator получит такой блок-кандидат, затем они проверяют его локально. Процесс проверки содержится в модуле validator класса парачейн, чувствительный к консенсусу программный модуль, который необходимо написать для любой реализации Polkadot (хотя в принципе библиотека с C ABI может позволить одной библиотеке распределяться между реализациями с соответствующими снижение безопасности из-за наличия только одной «эталонной» реализации). Процесс берет заголовок предыдущего блока и проверяет его идентичность через недавно согласованную цепочку ретрансляции. блок, в котором должен быть записан его hash. Как только достоверность родительского заголовка установлена, конкретный парачейн может быть вызвана функция проверки класса. Это одна функция, принимающая несколько полей данных (примерно приведенные ранее) и возвращая простое логическое значение провозглашая валидность блока. Большинство таких функций проверки сначала проверяют поля заголовков, которые могут быть получены непосредственно из родительский блок (например, родительский hash, номер). Следование при этом они будут заполнять любые внутренние структуры данных как необходимо для обработки транзакций и/или сообщений. Для цепочки типа Ethereum это равносильно заполнению база данных trie с узлами, которые понадобятся для полное исполнение сделок. Другие типы цепей могут иметь другое препаративные механизмы. После этого входящие сообщения и внешние транзакции (или что бы то ни было, что представляют собой внешние данные) будут приняты, сбалансированы в соответствии со спецификацией сети. (А разумным по умолчанию может быть требование, чтобы все входящие сообщения были обрабатываются до обслуживания внешних транзакций, однако это должна решать логика парачейна.) Благодаря этому постановлению, ряд выходных постов будет созданы, и будет проверено, что они действительно соответствуют кандидат сборщика. Наконец, правильно заполненный заголовок будет сверяться с заголовком кандидата. При полностью проверенном блоке-кандидате validator затем может проголосовать за hash своего заголовка и отправить всю необходимую информацию для проверки со-validator в своей подгруппе. 6.7.1. Коллекторы парачейна. Коллаторы парачейна — это несвязанные операторы, которые выполняют большую часть задач майнеров. в современных сетях blockchain. Они специфичны к конкретному парачейну. Для того чтобы действовать, они должны поддерживать как релейную цепь, так и полностью синхронизированную парачейн. Точное значение слова «полная синхронизация» будет зависеть от класса парачейна, но всегда будет включать текущее состояние входной очереди парачейна. В случае Ethereum это также предполагает как минимум поддержание базу данных дерева Меркла последних нескольких блоков, но может также включает в себя различные другие структуры данных, включая Bloom фильтры для существования учетной записи, семейной информации, регистрации выходные данные и таблицы обратного поиска для номера блока. Помимо синхронизации двух цепочек, это также должен «ловить» транзакции, поддерживая очередь транзакций и принимая должным образом проверенные транзакции. из общедоступной сети. С очередью и цепочкой это способен создавать новые блоки-кандидаты для validator, выбранных в каждом блоке (чья личность известна, поскольку релейная цепь синхронизирована), и отправлять их вместе с различную вспомогательную информацию, такую как подтверждение действительности, через одноранговая сеть. К сожалению, он собирает все комиссии, связанные с включенными в него транзакциями. Вокруг этого вращаются различные экономические теории. аранжировка. На высококонкурентном рынке, где является излишек колляторов, возможно, что транзакция сборы будут разделены с парачейном validators для стимулирования включение определенного блока подборщика. Сходным образом,
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 17 некоторые подборщики могут даже поднять необходимые сборы, которые требуют платить, чтобы сделать блок более привлекательным для validatorс. В этом случае должен образоваться естественный рынок. с транзакциями с более высокой комиссией без очереди и имеющих более быстрое включение в цепочку. 6.8. Сеть. Сеть на традиционных blockchains например Ethereum и Bitcoin, имеют довольно простые требования. Все транзакции и блоки передаются в виде простой ненаправленной сплетни. Синхронизация более сложна, особенно с Ethereum, но на самом деле эта логика содержалась в одноранговая стратегия, а не сам протокол, который разрешается вокруг нескольких типов сообщений запроса и ответа. В то время как Ethereum добился прогресса в текущих предложениях протоколов с помощью протокола devp2p, который позволил многим подпротоколы, которые должны быть мультиплексированы по одному одноранговому соединению и, таким образом, иметь одно и то же наложение одноранговых узлов, поддерживают множество p2p-протоколов одновременно, часть Ethereum протокол по-прежнему оставался относительно простым, а p2p Протокол какое-то время остается незавершенным с важными отсутствуют функциональные возможности, такие как поддержка QoS. К сожалению, желание создать более распространенный протокол «web 3» во многом провалился, и единственные проекты, использующие его, были явно финансируется за счет краудсейла Ethereum. Требования к Polkadot гораздо более существенные. Вместо полностью однородной сети Polkadot имеет несколько типов участников, каждый из которых имеет разные требования к составу своих коллег и несколько сетевых «проспекты», участники которых будут склонны обсуждать конкретные данные. Это означает существенно более структурированное сетевое наложение — и протокол, поддерживающий это — скорее всего, будет необходимо. Кроме того, возможность расширения для облегчения будущих дополнений, таких как новые виды «цепочек», может сами по себе требуют новой структуры наложения. В то время как углубленное обсуждение того, как сеть Протокол может выглядеть выходит за рамки данного документа, поэтому некоторый анализ требований является разумным. Мы можем грубо разобьем участников нашей сети на две группы (релейная цепь, парачейны) каждое из трёх подмножеств. Мы можем также заявляют, что каждый из участников парачейна является только заинтересованы в общении между собой, а не участники других парачейнов: • Участники релейной цепи: • Валидаторы: P, разбить на подмножества P[s] для каждого парачейн • Гаранты доступности: A (могут быть представлены валидаторами в базовой форме протокола). • Клиенты релейной цепи: M (обратите внимание на членов каждого набор парачейнов также будет иметь тенденцию быть членами M) • Участники парачейна: • Сопоставители парачейна: C[0], C[1], . . . • Рыбаки-парачейны: F[0], F[1], . . . • Клиенты Парачейна: S[0], S[1], . . . • Легкие клиенты Parachain: L[0], L[1], . . . Обычно мы называем отдельные классы общения будет иметь место между членами этих наборов: • П | А <-> П | А:
полный набор из validators/гаранты должен быть хорошие связи чтобы достичь консенсуса. • P[s] <-> C[s] | P[s]: Каждый validator как член определенной группы парачейна будет склонен сплетничать. с другими такими участниками, а также сопоставителями этого парачейна, чтобы находить и делиться кандидатами на блоки. • A <-> P[s] | С | A: Каждый гарант доступности необходимо будет собрать чувствительные к консенсусу межсетевые данные из назначенных ему validators; подборщики может также оптимизировать вероятность достижения консенсуса по их заблокировать, объявив его гарантам доступности. Как только они будут получены, данные будут переданы другого такого гаранта для содействия достижению консенсуса. • P[s] <-> A | P[s']: Парачейн validators будет необходимо собрать дополнительные входные данные из предыдущего набора validator или гарантов доступности. • F[s] <-> P: При репортаже рыбаки могут размещать претензия к любому участнику. • М <-> М | П | A: Обычные клиенты ретрансляционной цепочки передают данные от validator и гарантов. • S[s] <-> S[s] | П[ы] | О: Клиенты Parachain передают данные от validator/гарантов. • L[s] <-> L[s] | S[s]: легкие клиенты Parachain выдавать данные от полных клиентов. Для обеспечения эффективного транспортного механизма используется «плоский» оверлейная сеть, например devp2p Ethereum, где каждый узел не (непроизвольно) дифференцирует пригодность своего сверстники вряд ли подойдут. Достаточно расширяемый механизм выбора и обнаружения одноранговых узлов, вероятно, потребует быть включенным в протокол, а также агрессивные планирование прогноза, чтобы обеспечить правильный тип пиров «по счастливой случайности» связаныпоступил в нужное время. Точная стратегия формирования равных будет разной для каждого класса участников: для правильно масштабированного мультичейн, подборщики должны либо работать постоянно, повторное подключение к соответствующим образом избранным validator, или будет нужны действующие соглашения с подмножеством validators чтобы гарантировать, что они не будут отключены в течение большей части времени, когда они бесполезны для этого validator. Сопоставители также, естественно, будут пытаться поддерживать один или более стабильные соединения с гарантом доступности призваны обеспечить быстрое распространение своих чувствительных к консенсусу данные. Гаранты доступности в основном будут стремиться поддерживать стабильное соединение друг с другом и с validators (для консенсуса и критически важных для консенсуса данных парачейна, к которым они подтверждают), а также некоторым коллаторам (для парачейна данные) и некоторые рыбаки и полные клиенты (для разгона информация). Валидаторы будут склонны искать другие validator, особенно находящиеся в той же подгруппе и любых сборщики, которые могут предоставить им кандидатов на блок парачейна. Рыбаки, а также общие реле-цепи и парацепи клиенты обычно стремятся сохранить соединение открытым для validator или гарант, но множество других подобных узлов себе иначе. Легкие клиенты парачейна также будут стремиться подключиться к полноценному клиенту парачейна. если не просто другие легкие клиенты парачейна. 6.8.1. Проблема оттока коллег. В предложении базового протокола каждое из этих подмножеств постоянно случайным образом меняется с каждым блоком, поскольку validator назначены для проверки. переходы парацепи выбираются случайным образом. Это может быть проблемой, если разрозненные (неодноранговые) узлы должны передавать данные между собой. Нужно либо полагаться на достаточно распределенная и хорошо связанная одноранговая сеть для
POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 18 убедитесь, что расстояние перехода (и, следовательно, задержка в худшем случае) увеличивается только с логарифмом размера сети (здесь может помочь протокол типа Kademlia [13]), или необходимо ввести более длительное время блокировки, чтобы обеспечить необходимое согласование соединения и сохранить набор одноранговых узлов, который отражает текущие коммуникационные потребности узла. Ни одно из этих решений не является отличным решением: длительное время блокировки. принудительное использование сети может сделать ее бесполезной для конкретные приложения и цепочки. Даже совершенно справедливый и подключенной сети приведет к значительным потерям пропускной способности по мере ее масштабирования из-за незаинтересованных узлов, имеющих пересылать бесполезные для них данные. Хотя оба направления могут стать частью решения, разумная оптимизация, помогающая минимизировать задержку, могла бы должно ограничить волатильность этих парачейнов validator наборов, либо переназначая членство только между сериями блоков (например, в группах по 15, что с интервалом в 4 секунды время блокировки будет означать изменение соединений только один раз в минуту) или путем постепенной ротации участников, например меняется по одному члену за раз (например, если есть каждому парачейну назначено 15 validator, то в среднем между совершенно уникальными наборы). Ограничивая количество оттока одноранговых узлов и гарантируя, что выгодные одноранговые соединения устанавливаются хорошо в продвигаться вперед благодаря частичной предсказуемости парачейна наборы, мы можем помочь обеспечить, чтобы каждый узел постоянно сохранял случайный выбор сверстников. 6.8.2. Путь к эффективному сетевому протоколу. Вероятно наиболее эффективные и разумные усилия по разработке будут сосредоточены на использовании уже существующего протокола, а не на его постоянном обновлении. наш собственный. Существует несколько одноранговых базовых протоколов, которые мы можем использовать или дополнять собственный devp2p Ethereum. [22], libp2p [1] IPFS и GNUnet [4] GNU. Полный обзор этих протоколов и их значимости для построения модульная одноранговая сеть, поддерживающая определенные структурные гарантии, динамическое управление одноранговыми узлами и расширяемые подпротоколы выходит далеко за рамки этого документа, но будет важный шаг в реализации Polkadot. 7. Практические аспекты Протокола 7.1. Оплата межсетевых транзакций. Хотя отличный количество свободы и простоты достигается за счет отказа от необходимости в целостной системе учета вычислительных ресурсов, такой как газ Ethereum, это поднимает важный вопрос: как без газа может работать один парачейн избежать того, чтобы другой парачейн заставил его выполнять вычисления? Хотя мы можем полагаться на входную очередь после транзакции буферы, чтобы предотвратить рассылку спама из одной цепочки в другую данных транзакции, в протоколе не существует эквивалентного механизма для предотвращения спама при обработке транзакций. Это проблема, оставленная на более высоком уровне. Поскольку цепи вольны придавать произвольную семантику входящему данные после транзакции, мы можем гарантировать, что вычисление должны быть оплачены до начала работы. В том же духе, что и модель, поддерживаемая Ethereum Безмятежность, которую мы можем себе представить контракт на «взлом» внутри парачейна, который позволяет validator будет гарантирована оплата в обмен на предоставление определенного объема перерабатывающих ресурсов. Эти ресурсы могут измеряться чем-то вроде газа, но это также может быть какая-то совершенно новая модель, такая как субъективное время выполнения или модель фиксированной оплаты, подобная Bitcoin. Само по себе это не так уж полезно, поскольку мы не можем с готовностью предположить, что вызывающая сторона, находящаяся вне сети, имеет доступ к какой бы механизм стоимости ни был распознан взломом контракт. Однако мы можем представить себе вторичный «прорывной» контракт в исходной цепочке. Два контракта вместе образуют мост, признавая друг друга и обеспечение эквивалентности стоимости. (Стейкинг-tokens, доступен каждый из них может быть использован для урегулирования платежного баланса.) Вызов другой такой цепочки будет означать проксирование через этот мост, который обеспечит средства переговоры о передаче стоимости между цепочками с целью оплатить вычислительные ресурсы, необходимые в целевом парачейне. 7.2. Дополнительно Цепи. Пока тот дополнение из а парачейн — относительно дешевая операция, она не бесплатна. Больше парачейнов означает меньше validators на парачейн и, в конечном итоге, большее количество validators, каждый с снижение средней облигации. Хотя проблема меньшей стоимости принуждения для атаки на парачейн смягчается за счет рыбаков, растущая группа validator по существу вынуждает более высокая степень задержки из-за механики основного консенсусаметод. Кроме того, каждый парачейн приносит с собой потенциальную возможность гореть validators с слишком обременительный алгоритм проверки. Таким образом, будет некоторая «цена», которую validators и/или заинтересованное сообщество будет извлекать для добавление нового парачейна. Этот рынок для сетей будет возможно, увидите добавление либо: • Цепочки, которые, скорее всего, не будут платить нулевой чистый взнос (с точки зрения блокировки или сжигания staking tokens), которые должны стать частью (например, цепочки консорциумов, Doge-chains, цепочки для конкретных приложений); • цепочки, которые приносят внутреннюю ценность сети путем добавления определенной функциональности сложно добиться чего-то еще (например, конфиденциальность, внутренняя масштабируемость, привязка к услугам). По сути, сообщество заинтересованных сторон должно будет быть заинтересованы в добавлении дочерних цепочек — либо финансово, либо из-за желания добавить в реле функциональные цепи. Предполагается, что добавление новых сетей будет иметь очень короткий период уведомления об удалении, что позволяет новым цепям можно экспериментировать без какого-либо риска компрометации среднесрочное или долгосрочное ценностное предложение. 8. Заключение Мы наметили направление, по которому можно пойти, чтобы создать масштабируемый, гетерогенный многоцепочный протокол с потенциалом обратной совместимости с определенными, уже существующими blockchain сетей. По такому протоколу участники работать в просвещенных собственных интересах, чтобы создать общую систему, которая может быть расширена исключительно бесплатно и без типичных затрат для существующих пользователей, которые исходит из стандартного дизайна blockchain. Мы дали приблизительный набросок архитектуры, которая потребуется, включая характер участников, их экономические стимулы и процессы, в рамках которых они должны участвовать. У нас есть определили базовую конструкцию и обсудили ее сильные стороны и ограничения; соответственно, у нас есть дальнейшие направления, которые может ослабить эти ограничения и проложить путь к полностью масштабируемому решению blockchain.POLKADOT: ВИДЕНИЕ ГЕТЕРОГЕННОЙ МНОГОЦЕПНОЙ СТРУКТУРЫ ПРОЕКТ 1 19 8.1. Недостающий материал и открытые вопросы. Разветвление сети всегда возможно из-за различных реализаций протокола. Восстановление после такого исключительное состояние не обсуждалось. Учитывая, что сеть обязательно будет иметь ненулевой период завершения, восстановление после разветвления релейной цепи не должно представлять собой большой проблемы, однако потребует тщательной интеграции в протокол консенсуса. Конфискация облигаций и, наоборот, предоставление вознаграждения не были глубоко исследованы. В настоящее время мы принимаем вознаграждения предоставляются по принципу «победитель получает все»: это может не предложить лучшую модель стимулирования рыбаков. Кратковременный процесс раскрытия информации позволил бы многим рыбакам претендовать на приз, обеспечивающий более справедливое распределение вознаграждений, однако этот процесс может привести к дополнительной задержке в обнаружение неправомерного поведения. 8.2. Благодарности. Большое спасибо всем корректоры, которые помогли донести это до смутного презентабельная форма. В частности, Петер Чабан, Бьёрн Вагнер, Кен Капплер, Роберт Хабермайер, Виталик Бутерин, Рето Тринклер и Джек Петерссон. Спасибо всем люди, которые внесли идеи или начинания в связи с этим особого упоминания заслуживают Марек Котевич и Аэрон Бьюкенен. И спасибо всем остальным за помощь по пути. Все ошибки мои собственные. Части этой работы, включая первоначальные исследования алгоритмов консенсуса, частично финансировался Великобританией. Правительство в рамках программы Innovate UK.
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.