Polkadot: Tầm nhìn về Khung đa chuỗi không đồng nhất
Resumo
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 DR. MADEIRA GAVIN FUNDADOR, ETHEREUM E PARIDADE [email protected] Resumo. Todas as arquiteturas blockchain atuais sofrem de uma série de problemas, incluindo meios práticos de extensibilidade e escalabilidade. Acreditamos que isto decorre da ligação de duas partes muito importantes da arquitectura de consenso, nomeadamente canonicidade e validade, muito próximas. Este artigo apresenta uma arquitetura, a multicadeia heterogênea, o que fundamentalmente diferencia os dois. Ao compartimentar estas duas partes e ao manter a funcionalidade geral fornecida a um mínimo absoluto de segurança e transporte, introduzimos meios práticos de extensibilidade central in situ. A escalabilidade é abordada através uma abordagem de dividir e conquistar para estas duas funções, expandindo-se para fora do seu núcleo ligado através do incentivo de nós públicos não confiáveis. A natureza heterogênea desta arquitetura permite que muitos tipos altamente divergentes de sistemas de consenso interoperem em uma “federação” totalmente descentralizada e sem confiança, permitindo que redes abertas e fechadas tenham acesso livre de confiança a um ao outro. Apresentamos um meio de fornecer compatibilidade retroativa com uma ou mais redes pré-existentes, como Ethereum. Acreditamos que tal sistema fornece um componente de nível básico útil na busca geral por um sistema praticamente sistema implementável capaz de atingir níveis de escalabilidade e privacidade no comércio global. 1. Prefácio Este pretende ser um resumo técnico da “visão” de uma possível direção que pode ser tomada no desenvolvimento do paradigma blockchain, juntamente com alguma justificativa sobre por que essa direção é sensata. Ele se estabelece em tantos detalhes quanto possível neste estágio de desenvolvimento um sistema que possa proporcionar uma melhoria concreta num vários aspectos da tecnologia blockchain. Não pretende ser uma especificação, formal ou não. Não pretende ser abrangente nem ser uma projeto final. Não se destina a cobrir aspectos não essenciais da estrutura, como APIs, ligações, linguagens e uso. Isto é notavelmente experimental; onde parâmetros são especificados, eles provavelmente mudarão. Os mecanismos irão ser adicionado, refinado e removido em resposta às necessidades da comunidade ideias e críticas. Grandes porções deste documento provavelmente serão ser revisado à medida que evidências experimentais e prototipagem fornecem nos informações sobre o que funcionará e o que não funcionará. Este documento inclui uma descrição básica do protocolo, juntamente com ideias de orientações que podem ser tomadas para melhorar vários aspectos. Prevê-se que o núcleo descrição será usada como ponto de partida para uma série de provas de conceito. Uma “versão 1.0” final seria baseado neste protocolo refinado, juntamente com as ideias adicionais que foram comprovadas e estão determinadas a necessários para que o projeto atinja seus objetivos. 1.1. História. • 10/09/2016: 0.1.0-prova1 • 20/10/2016: 0.1.0-prova2 • 11/01/2016: 0.1.0-prova3 • 11/10/2016: 0.1.0 2. Introdução Blockchains demonstraram grande promessa de utilidade em vários campos, incluindo “Internet das Coisas” (IoT), finanças, governança, gestão de identidade, descentralização da web e rastreamento de ativos. No entanto, apesar do promessa tecnológica e grande conversa, ainda não vimos implantação significativa no mundo real da tecnologia atual. Acreditamos que isto se deve a cinco falhas principais da actual pilhas de tecnologia: Escalabilidade: quantos recursos são gastos globalmente sobre processamento, largura de banda e armazenamento para o sistema processar uma única transação e quantas as transações podem ser razoavelmente processadas sob condições de pico? Isolabilidade: As necessidades divergentes de múltiplos as partes e as candidaturas sejam abordadas num grau quase óptimo no âmbito do mesmo enquadramento? Capacidade de desenvolvimento: quão bem as ferramentas funcionam? Faça as APIs atendem às necessidades dos desenvolvedores? Existem materiais educativos disponíveis? As integrações certas estão aí? Governança: A rede pode permanecer flexível para evoluir e se adaptar ao longo do tempo? As decisões podem ser feito com suficiente inclusão, legitimidade e transparência para fornecer liderança eficaz de um sistema descentralizado? Aplicabilidade: A tecnologia realmente atende a uma necessidade premente por si só? É necessário outro “middleware” para preencher a lacuna para aplicações reais? No presente trabalho pretendemos abordar os dois primeiros questões: escalabilidade e isolabilidade. Dito isto, acreditamos a estrutura Polkadot pode fornecer melhorias significativas em cada uma dessas classes de problemas. Implementações blockchain modernas e eficientes, como o cliente Paridade Ethereum [17] pode processarmenos em excesso 3.000 transações por segundo quando executado em hardware de consumo de alto desempenho. No entanto, o mundo real atual blockchain redes estão praticamente limitadas a cerca de 30 transações por segundo. Esta limitação tem origem principalmente no facto de os actuais mecanismos de consenso síncrono exigirem amplas margens temporais de segurança em o tempo de processamento esperado, que é agravado pela 1
Tóm tắt
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 DR. GỖ GAVIN NGƯỜI SÁNG LẬP, ETHEREUM & PARITY [email protected] Trừu tượng. Các kiến trúc blockchain ngày nay đều gặp phải một số vấn đề, đặc biệt là các phương tiện thực tế về khả năng mở rộng và khả năng mở rộng. Chúng tôi tin rằng điều này bắt nguồn từ việc ràng buộc hai phần rất quan trọng của cấu trúc đồng thuận, đó là tính chuẩn tắc và tính giá trị quá chặt chẽ với nhau. Bài viết này giới thiệu một kiến trúc đa chuỗi không đồng nhất, về cơ bản làm cho hai điều này trở nên khác biệt. Trong việc chia thành hai phần này và bằng cách giữ cho chức năng tổng thể được cung cấp ở mức tối thiểu về an ninh và vận tải, chúng tôi giới thiệu các phương tiện thực tế về khả năng mở rộng cốt lõi tại chỗ. Khả năng mở rộng được giải quyết thông qua một cách tiếp cận phân chia và chinh phục đối với hai chức năng này, mở rộng ra khỏi cốt lõi liên kết của nó thông qua việc khuyến khích các nút công khai không đáng tin cậy. Bản chất không đồng nhất của kiến trúc này cho phép nhiều loại hệ thống đồng thuận rất khác nhau tương tác trong một “liên đoàn” phi tập trung hoàn toàn, không cần tin cậy, cho phép các mạng mở và đóng có quyền truy cập không cần tin cậy vào lẫn nhau. Chúng tôi đưa ra phương tiện cung cấp khả năng tương thích ngược với một hoặc nhiều mạng có sẵn như Ethereum. Chúng tôi tin rằng một hệ thống như vậy cung cấp một thành phần cấp cơ sở hữu ích trong việc tìm kiếm tổng thể một giải pháp thực tế. hệ thống có thể triển khai có khả năng đạt được mức độ thương mại toàn cầu về khả năng mở rộng và quyền riêng tư. 1. Lời nói đầu Đây được coi là bản tóm tắt “tầm nhìn” kỹ thuật về một hướng khả thi có thể được thực hiện để phát triển hơn nữa mô hình blockchain cùng với một số lý do căn bản giải thích tại sao hướng này lại hợp lý. Nó đặt ra trong càng nhiều chi tiết càng tốt ở giai đoạn phát triển này một hệ thống có thể mang lại sự cải thiện cụ thể về số khía cạnh của công nghệ blockchain. Nó không nhằm mục đích cụ thể hóa, hình thức hay cách khác. Nó không nhằm mục đích toàn diện cũng như không phải là một thiết kế cuối cùng. Nó không nhằm mục đích bao gồm các khía cạnh không cốt lõi của khung như API, ràng buộc, ngôn ngữ và cách sử dụng. Điều này đáng chú ý là mang tính thử nghiệm; thông số ở đâu được chỉ định, chúng có thể thay đổi. Cơ chế sẽ được thêm vào, tinh chỉnh và loại bỏ để đáp ứng với cộng đồng ý tưởng và phê bình. Phần lớn của bài viết này có thể sẽ được sửa đổi như bằng chứng thực nghiệm và nguyên mẫu cung cấp cho chúng tôi thông tin về điều gì sẽ hiệu quả và điều gì không. Tài liệu này bao gồm mô tả cốt lõi của giao thức cùng với các ý tưởng về các hướng dẫn có thể được thực hiện để cải thiện các khía cạnh khác nhau. Người ta hình dung rằng cốt lõi mô tả sẽ được sử dụng làm điểm bắt đầu cho lần đầu tiên một loạt các bằng chứng về khái niệm. “Phiên bản 1.0” cuối cùng sẽ là dựa trên giao thức được cải tiến này cùng với các ý tưởng bổ sung đã được chứng minh và quyết tâm thực hiện cần thiết để dự án đạt được mục tiêu của nó. 1.1. Lịch sử. • 10/09/2016: 0.1.0-proof1 • 20/10/2016: 0.1.0-proof2 • 11/01/2016: 0.1.0-proof3 • 11/10/2016: 0.1.0 2. Giới thiệu Blockchain đã chứng tỏ nhiều hứa hẹn về tiện ích trên một số lĩnh vực bao gồm “Internet of Things” (IoT), tài chính, quản trị, quản lý danh tính, phân quyền web và theo dõi tài sản. Tuy nhiên, mặc dù hứa hẹn về công nghệ và những cuộc nói chuyện hoành tráng, chúng ta vẫn chưa thấy triển khai đáng kể trong thế giới thực của công nghệ hiện tại. Chúng tôi tin rằng đây là do năm thất bại chính của hiện tại. ngăn xếp công nghệ: Khả năng mở rộng: Bao nhiêu tài nguyên được chi tiêu trên toàn cầu về xử lý, băng thông và lưu trữ để hệ thống xử lý một giao dịch và có bao nhiêu giao dịch giao dịch có thể được xử lý hợp lý theo điều kiện cao điểm? Tính cô lập: Liệu nhu cầu khác nhau của nhiều người có thể các bên và đơn đăng ký có được giải quyết ở mức độ gần như tối ưu trong cùng một khuôn khổ không? Khả năng phát triển: Các công cụ này hoạt động tốt như thế nào? làm API có giải quyết được nhu cầu của nhà phát triển không? Tài liệu giáo dục có sẵn không? Có sự tích hợp phù hợp ở đó không? Quản trị: Mạng có thể duy trì tính linh hoạt để phát triển và thích nghi theo thời gian? Liệu các quyết định có thể được được thực hiện với tính toàn diện, hợp pháp và minh bạch để cung cấp sự lãnh đạo hiệu quả của một hệ thống phi tập trung? Khả năng ứng dụng: Công nghệ này có thực sự giải quyết được nhu cầu cấp bách không? “Phần mềm trung gian” khác có cần thiết để thu hẹp khoảng cách với ứng dụng thực tế? Trong công việc hiện tại, chúng tôi mong muốn giải quyết hai vấn đề đầu tiên vấn đề: khả năng mở rộng và khả năng cô lập. Điều đó nói lên rằng, chúng tôi tin khuôn khổ Polkadot có thể cung cấp những cải tiến có ý nghĩa cho từng loại vấn đề này. Triển khai blockchain hiện đại, hiệu quả như ứng dụng Parity Ethereum [17] có thể sản xuấtess vượt quá 3.000 giao dịch mỗi giây khi chạy trên phần cứng tiêu dùng hiệu suất cao. Tuy nhiên, thực tế hiện nay blockchain mạng thực tế bị giới hạn ở khoảng 30 giao dịch mỗi giây. Hạn chế này chủ yếu bắt nguồn từ thực tế là các cơ chế đồng thuận đồng bộ hiện tại yêu cầu biên độ an toàn về thời gian rộng. thời gian xử lý dự kiến, điều này càng trở nên trầm trọng hơn do 1
Introdução
Blockchains demonstraram grande promessa de utilidade em vários campos, incluindo “Internet das Coisas” (IoT), finanças, governança, gestão de identidade, descentralização da web e rastreamento de ativos. No entanto, apesar do promessa tecnológica e grande conversa, ainda não vimos implantação significativa no mundo real da tecnologia atual. Acreditamos que isto se deve a cinco falhas principais da actual pilhas de tecnologia: Escalabilidade: quantos recursos são gastos globalmente sobre processamento, largura de banda e armazenamento para o sistema processar uma única transação e quantas as transações podem ser razoavelmente processadas sob condições de pico? Isolabilidade: As necessidades divergentes de múltiplos as partes e as candidaturas sejam abordadas num grau quase óptimo no âmbito do mesmo enquadramento? Capacidade de desenvolvimento: quão bem as ferramentas funcionam? Faça as APIs atendem às necessidades dos desenvolvedores? Existem materiais educativos disponíveis? As integrações certas estão aí? Governança: A rede pode permanecer flexível para evoluir e se adaptar ao longo do tempo? As decisões podem ser feito com suficiente inclusão, legitimidade e transparência para fornecer liderança eficaz de um sistema descentralizado? Aplicabilidade: A tecnologia realmente atende a uma necessidade premente por si só? É necessário outro “middleware” para preencher a lacuna para aplicações reais? No presente trabalho pretendemos abordar os dois primeiros questões: escalabilidade e isolabilidade. Dito isto, acreditamos a estrutura Polkadot pode fornecer melhorias significativas em cada uma dessas classes de problemas. Implementações blockchain modernas e eficientes, como o cliente Parity Ethereum [17] pode processar mais de 3.000 transações por segundo quando executado em hardware de consumo de alto desempenho. No entanto, o mundo real atual blockchain redes estão praticamente limitadas a cerca de 30 transações por segundo. Esta limitação tem origem principalmente no facto de os actuais mecanismos de consenso síncrono exigirem amplas margens temporais de segurança em o tempo de processamento esperado, que é agravado pelaPOLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 2 desejo de apoiar implementações mais lentas. Isto é devido a a arquitetura de consenso subjacente: o mecanismo de transição do estado, ou os meios pelos quais as partes agrupam e executar transações, tem sua lógica fundamentalmente ligada no mecanismo de “canonização” de consenso, ou no meio pelo qual as partes acordam uma de uma série de histórias possíveis e válidas. Isso se aplica igualmente a sistemas proof-of-work (PoW), como Bitcoin [15] e Ethereum [5,23] e sistemas de prova de aposta (PoS), como NXT [8] e Bitshares [12]: em última análise, todos sofrem da mesma deficiência. É um simples estratégia que ajudou a tornar blockchains um sucesso. No entanto, acoplando firmemente esses dois mecanismos em uma única unidade do protocolo, também agrupamos vários diferentes atores e aplicações com diferentes perfis de risco, diferentes requisitos de escalabilidade e diferentes necessidades de privacidade. Um tamanho não serve para todos. Acontece com demasiada frequência que, num desejo de amplo apelo, uma rede adota um grau de conservadorismo que resulta em um menor denominador comum servindo de forma otimizada a poucos e, em última análise, levando a um fracasso na capacidade de inovar, executar e adaptar, às vezes dramaticamente. Alguns sistemas, como por ex. Factom [21] abandona completamente o mecanismo de transição de estado. No entanto, grande parte utilidade que desejamos requer a capacidade de transição de estado de acordo com uma máquina de estados compartilhada. Deixar cair resolve um problema alternativo; não oferece uma alternativa solução. Parece claro, portanto, que uma direção razoável explorar como um caminho para uma computação descentralizada e escalonável plataforma é dissociar a arquitetura de consenso da o mecanismo de transição de estado. E, talvez sem surpresa, esta é a estratégia que Polkadot adota como solução para escalabilidade. 2.1. Protocolo, Implementação e Rede. Gosto Bitcoin e Ethereum, Polkadot referem-se ao mesmo tempo a um protocolo de rede e ao (até então pressuposto) primário rede pública que executa este protocolo. Polkadot pretende ser um projeto gratuito e aberto, a especificação do protocolo está sob uma licença Creative Commons e o código sendo colocado sob uma licença FLOSS. O projeto é desenvolvido de forma aberta e aceita contribuições onde quer que sejam úteis. Um sistema de RFCs, não muito diferente as propostas de melhoria do Python, permitirão um meio de colaborar publicamente em mudanças e atualizações de protocolo. Nossa implementação inicial do protocolo Polkadot será conhecida como Plataforma Parity Polkadot e será inclui uma implementação completa do protocolo junto com API ligações. Como outras implementações de Paridade blockchain, O PPP foi projetado para ser uma pilha de tecnologia blockchain de uso geral, não exclusivamente para uma rede pública nem para operação privada/consorciada. O seu desenvolvimento assim até agora foi financiado por vários partidos, inclusive através de uma subvenção do governo britânico. Este artigo, no entanto, descreve Polkadot sob o contexto de uma rede pública. A funcionalidade que imaginamos em uma rede pública é um superconjunto daquela exigida em configurações alternativas (por exemplo, privadas e/ou consórcios). Além disso, neste contexto, o escopo completo de Polkadot pode ser mais claramente descritas e discutidas. Isso significa o leitor deve estar ciente de que certos mecanismos podem ser descritos (por exemplo, interoperação com outras redes públicas) que não são diretamente relevantes para Polkadot quando implantado em situações não públicas (“permitidas”). 2.2. Trabalho anterior. A dissociação do consenso subjacente da transição do Estado foi proposta informalmente em privado durante pelo menos dois anos - Max Kaye foi um defensor de tal estratégia durante os primeiros dias de Ethereum. Uma solução escalável mais complexa conhecida como Chain fibras, que remonta a junho de 2014 e publicado pela primeira vez mais tarde naquele ano1, defendeu uma única cadeia de retransmissão e múltiplas cadeias homogêneas, fornecendo um mecanismo transparente de execução intercadeias. A decoerência foi paga através da latência de transação – transações que exigem o coordenação de porções díspares do sistema demorar mais para processar. Polkadot tira grande parte de sua arquitetura disso e das conversas de acompanhamento com várias pessoas, embora seja muito diferente em grande parte do seu design e disposições. Embora não existam sistemas comparáveis a Polkadot atualmente em produção, vários sistemas de alguma relevância foram propostas, embora poucas em qualquer nível substancial de detalhe. Estas propostas podem serdividido em sistemas que eliminam ou reduzem a noção de um mundo globalmente coerente máquina estatal, aquelas que tentam fornecer uma solução global máquina singleton coerente por meio de fragmentos homogêneos e aqueles que visam apenas a heterogeneidade. 2.2.1. Sistemas sem Estado Global. Factom [21] é um sistema que demonstra canonicidade sem o acordo validade, permitindo efetivamente o registro dos dados. Devido à evitação do estado global e às dificuldades com o dimensionamento que isso traz, pode ser considerada uma solução escalonável. No entanto, como mencionado anteriormente, o conjunto de problemas que resolve é estrita e substancialmente menor. Tangle [18] é uma nova abordagem para sistemas de consenso. Em vez de organizar as transacções em blocos e formar consenso sobre uma lista estritamente ligada para fornecer uma ordenação globalmente canónica das mudanças de estado, abandona em grande parte a ideia de uma ordenação fortemente estruturada e, em vez disso, busca um gráfico acíclico direcionado de transações dependentes com itens posteriores ajudando a canonizar itens anteriores através de referências explícitas. Para mudanças de estado arbitrárias, este gráfico de dependência se tornaria rapidamente intratável, no entanto, para o modelo UTXO2 muito mais simples, isso se torna bastante razoável. Como o sistema é apenas vagamente coerente e as transações são geralmente independentes uma da outra outro, uma grande quantidade de paralelismo global torna-se bastante natural. Usar o modelo UTXO tem o efeito de limitar o Tangle a uma “moeda” puramente de transferência de valor sistema em vez de algo mais geral ou extensível. Além disso, sem a dura coerência global, a interacção com outros sistemas – que tendem a necessitar de uma conhecimento de grau sobre o estado do sistema - torna-se impraticável. 1https://github.com/ethereum/wiki/wiki/Chain-Fibers-Redux 2saída de transação não gasta, o modelo que Bitcoin usa, em que o estado é efetivamente o conjunto de endereços associados a algum valor; as transações agrupam esses endereços e os transformam em um novo conjunto de endereços cuja soma total é equivalente
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 3 2.2.2. Sistemas de Cadeias Heterogêneas. Cadeias laterais [3] é um adição proposta ao protocolo Bitcoin que permitiria interação sem confiança entre a cadeia Bitcoin principal e cadeias laterais adicionais. Não há previsão de qualquer grau de interação “rica” entre cadeias laterais: a interação seria limitada a permitir que as cadeias laterais fossem custodiantes dos bens uns dos outros, efetuando - no local jargão - uma indexação bidirecional 3. A visão final é para uma estrutura onde a moeda Bitcoin possa ser fornecida com funcionalidade adicional, se periférica, por meio de sua vinculação em algumas outras cadeias com transição de estado mais exótica sistemas do que o protocolo Bitcoin permite. Nesse sentido, as cadeias laterais abordam a extensibilidade em vez da escalabilidade. Na verdade, não há fundamentalmente nenhuma disposição sobre a validade das cadeias laterais; tokens de uma cadeia (por exemplo, Bitcoin) mantidos em nome de uma cadeia lateral são garantidos apenas pelo a capacidade da cadeia lateral de incentivar os mineradores a canonizar transições válidas. A segurança da rede Bitcoin não pode ser facilmente transferido para trabalhar em nome de outros blockchains. Além disso, um protocolo para garantir Bitcoin os mineradores fundem a mina (isto é, duplicam seu poder de canonização no da cadeia lateral) e, mais importante, validam que as transições da cadeia lateral estão fora do âmbito desta proposta. Cosmos [10] é um sistema multi-cadeia proposto no mesma linha das cadeias laterais, trocando o Nakamoto PoW método de consenso para o algoritmo Tendermint de Jae Kwon. Essencialmente, descreve múltiplas cadeias (operando em zonas) cada uma usando instâncias individuais do Tendermint, juntamente com um meio de comunicação livre de confiança através de um cadeia de cubo mestre. Esta comunicação entre cadeias é limitada à transferência de ativos digitais (“especificamente sobre tokens”) em vez de informações arbitrárias, no entanto, tal comunicação entre cadeias tem um caminho de retorno para dados, por exemplo para informar ao remetente o status da transferência. Conjuntos de validadores para as cadeias zoneadas e, em particular os meios de incentivá-los, são, como cadeias laterais, deixadas como um problema não resolvido. A suposição geral é que cada cadeia zoneada conterá ela própria um token de valor cuja inflação é usada para pagar por validators. Ainda nos estágios iniciais de design, atualmente a proposta carece de detalhes abrangentes sobre os meios económicos para alcançar a escalabilidade certeza sobre a validade global. Contudo, a fraca coerência necessária entre as zonas e o centro permitirá para flexibilidade adicional sobre os parâmetros do zoneamento cadeias em comparação com um sistema que impõe medidas mais fortes coerência. 2.2.3. Cásper. Ainda não há revisão abrangente ou comparação lado a lado entre Casper [6] e Polkadot foram feitas, embora se possa fazer uma análise bastante abrangente caracterização (e, portanto, imprecisa) dos dois. Casper é uma reimaginação de como um algoritmo de consenso PoS poderia ser baseado em participantes apostando em qual garfo acabaria por se tornar canônico. Consideração substancial foi dada para garantir que ele fosse robusto para a rede forks, mesmo quando prolongados, e possuem algum grau adicional de escalabilidade além do modelo Ethereum básico. Como tal, Casper até agora tendeu a ser um substancialmente mais protocolo complexo do que Polkadot e seus antepassados, e um desvio substancial do formato blockchain básico. Isso permanece sem saber como Casper irá iterar no futuro e como será se finalmente for implantado. Embora Casper e Polkadot representem novos protocolos interessantes e, em certo sentido, aumentos de Ethereum, existem diferenças substanciais entre seus objetivos finais e caminhos para implantação. Cásper é um Ethereum Projeto centrado na fundação originalmente concebido ser uma alteração PoS no protocolo sem desejo de crie um blockchain fundamentalmente escalável. Crucialmente, é projetado para ser um hard fork, em vez de algo mais expansivo e, portanto, todos os Ethereum clientes e usuários seriam necessário atualizar ou permanecer em uma bifurcação de adoção incerta. Como tal, a implementação torna-se substancialmente mais difícil, como é inerente a um projecto descentralizado onde coordenação é necessária. Polkadot difere de várias maneiras; em primeiro lugar, Polkadot foi projetado para ser totalmente extensível e escalável blockchain teste de desenvolvimento, implantação e interação cama. Ele foi construído para ser um arnês amplamente preparado para o futuro, capaz de assimilar novo blockchaintecnologia à medida que se torna disponível, sem coordenação descentralizada excessivamente complicada ou garfos rígidos. Já imaginamos vários casos de uso, como como cadeias de consórcio criptografadas e cadeias de alta frequência com tempos de bloqueio muito baixos que são irrealistas de fazer em qualquer versão futura de Ethereum atualmente prevista. Finalmente, o acoplamento entre ele e Ethereum é extremamente solto; nenhuma ação por parte de Ethereum é necessária para permitir o encaminhamento de transações sem confiança entre os dois redes. Resumindo, enquanto Casper/Ethereum 2.0 e Polkadot compartilham algumas semelhanças passageiras, acreditamos que seu objetivo final é substancialmente diferente e que, em vez de competir, os dois protocolos provavelmente coexistirão sob um relacionamento mutuamente benéfico para o futuro previsível.
Giới thiệu
Blockchain đã chứng tỏ nhiều hứa hẹn về tiện ích trên một số lĩnh vực bao gồm “Internet of Things” (IoT), tài chính, quản trị, quản lý danh tính, phân quyền web và theo dõi tài sản. Tuy nhiên, mặc dù hứa hẹn về công nghệ và những cuộc nói chuyện hoành tráng, chúng ta vẫn chưa thấy triển khai đáng kể trong thế giới thực của công nghệ hiện tại. Chúng tôi tin rằng đây là do năm thất bại chính của hiện tại. ngăn xếp công nghệ: Khả năng mở rộng: Bao nhiêu tài nguyên được chi tiêu trên toàn cầu về xử lý, băng thông và lưu trữ để hệ thống xử lý một giao dịch và có bao nhiêu giao dịch giao dịch có thể được xử lý hợp lý theo điều kiện cao điểm? Tính cô lập: Liệu nhu cầu khác nhau của nhiều người có thể các bên và đơn đăng ký có được giải quyết ở mức độ gần như tối ưu trong cùng một khuôn khổ không? Khả năng phát triển: Các công cụ này hoạt động tốt như thế nào? làm API có giải quyết được nhu cầu của nhà phát triển không? Tài liệu giáo dục có sẵn không? Có sự tích hợp phù hợp ở đó không? Quản trị: Mạng có thể duy trì tính linh hoạt để phát triển và thích nghi theo thời gian? Liệu các quyết định có thể được được thực hiện với tính toàn diện, hợp pháp và minh bạch để cung cấp sự lãnh đạo hiệu quả của một hệ thống phi tập trung? Khả năng ứng dụng: Công nghệ này có thực sự giải quyết được nhu cầu cấp bách không? “Phần mềm trung gian” khác có cần thiết để thu hẹp khoảng cách với ứng dụng thực tế? Trong công việc hiện tại, chúng tôi mong muốn giải quyết hai vấn đề đầu tiên vấn đề: khả năng mở rộng và khả năng cô lập. Điều đó nói lên rằng, chúng tôi tin khuôn khổ Polkadot có thể cung cấp những cải tiến có ý nghĩa cho từng loại vấn đề này. Triển khai blockchain hiện đại, hiệu quả như ứng dụng Parity Ethereum [17] có thể xử lý vượt quá 3.000 giao dịch mỗi giây khi chạy trên phần cứng tiêu dùng hiệu suất cao. Tuy nhiên, thực tế hiện nay blockchain mạng thực tế bị giới hạn ở khoảng 30 giao dịch mỗi giây. Hạn chế này chủ yếu bắt nguồn từ thực tế là các cơ chế đồng thuận đồng bộ hiện tại yêu cầu biên độ an toàn về thời gian rộng. thời gian xử lý dự kiến, điều này càng trở nên trầm trọng hơn doPOLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 2 mong muốn hỗ trợ việc triển khai chậm hơn. Điều này là do kiến trúc đồng thuận cơ bản: cơ chế chuyển đổi trạng thái hoặc phương tiện để các bên đối chiếu và thực hiện các giao dịch, về cơ bản logic của nó gắn liền với vào cơ chế “chuẩn hóa” đồng thuận, hoặc có nghĩa là các bên đồng ý về một trong số các có thể, hợp lệ, lịch sử. Điều này áp dụng như nhau cho cả hai hệ thống proof-of-work (PoW) như Bitcoin [15] và Ethereum [5,23] và các hệ thống bằng chứng cổ phần (PoS) như NXT [8] và Bitshares [12]: cuối cùng tất cả đều phải chịu đựng những bất lợi giống nhau. Nó đơn giản chiến lược đã giúp blockchain thành công. Tuy nhiên, bằng cách kết hợp chặt chẽ hai cơ chế này thành một đơn vị duy nhất của giao thức, chúng tôi cũng kết hợp nhiều giao thức khác nhau các tác nhân và ứng dụng có hồ sơ rủi ro khác nhau, yêu cầu về khả năng mở rộng khác nhau và nhu cầu riêng tư khác nhau. Một kích thước không phù hợp với tất cả. Trường hợp này thường xảy ra là trong một mong muốn thu hút rộng rãi, mạng lưới áp dụng một mức độ bảo thủ dẫn đến mẫu số chung thấp nhất phục vụ tối ưu cho một số ít và cuối cùng dẫn đến thất bại trong khả năng đổi mới, thực hiện và thích ứng, đôi khi đột ngột như vậy. Một số hệ thống như v.d. Factom [21] bỏ hoàn toàn cơ chế chuyển trạng thái. Tuy nhiên, phần lớn các tiện ích mà chúng tôi mong muốn đòi hỏi khả năng chuyển trạng thái theo một máy trạng thái dùng chung. Bỏ nó đi là giải quyết được một vấn đề thay thế; nó không cung cấp một sự thay thế giải pháp. Do đó, có vẻ rõ ràng rằng một hướng đi hợp lý để khám phá như một lộ trình dẫn đến một máy tính phi tập trung có thể mở rộng nền tảng là tách rời kiến trúc đồng thuận khỏi cơ chế chuyển trạng thái. Và có lẽ không có gì đáng ngạc nhiên, đây là chiến lược mà Polkadot áp dụng như một giải pháp cho khả năng mở rộng. 2.1. Giao thức, triển khai và mạng. thích Bitcoin và Ethereum, Polkadot đề cập ngay đến giao thức mạng và giao thức chính (cho đến nay được giả định trước) mạng công cộng chạy giao thức này. Polkadot được dự định là một dự án mở và miễn phí, đặc tả giao thức theo giấy phép Creative Commons và mã được đặt theo giấy phép FLOSS. Dự án là được phát triển một cách cởi mở và chấp nhận sự đóng góp bất cứ nơi nào chúng hữu ích. Một hệ thống RFC, không khác gì Đề xuất cải tiến Python, sẽ cho phép một phương tiện cộng tác công khai về các thay đổi và nâng cấp giao thức. Triển khai ban đầu của chúng tôi về giao thức Polkadot sẽ được gọi là Nền tảng chẵn lẻ Polkadot và sẽ bao gồm việc triển khai giao thức đầy đủ cùng với API ràng buộc. Giống như các triển khai Parity blockchain khác, PPP được thiết kế để trở thành một ngăn xếp công nghệ blockchain có mục đích chung, không dành riêng cho mạng công cộng cũng như cho hoạt động tư nhân/liên doanh. Sự phát triển của nó vì thế cho đến nay đã được tài trợ bởi một số bên bao gồm thông qua một khoản trợ cấp từ chính phủ Anh. Tuy nhiên, bài viết này mô tả Polkadot theo bối cảnh của một mạng công cộng. Chức năng mà chúng ta hình dung trong một mạng công cộng là một tập hợp siêu chức năng được yêu cầu trong cài đặt thay thế (ví dụ: tư nhân và/hoặc tập đoàn). Hơn nữa, trong bối cảnh này, phạm vi đầy đủ của Polkadot có thể được mô tả và thảo luận rõ ràng hơn. Điều này có nghĩa người đọc nên biết rằng một số cơ chế nhất định có thể được mô tả (ví dụ: tương tác với các mạng công cộng khác) không liên quan trực tiếp đến Polkadot khi được triển khai trong các tình huống không công khai (“được phép”). 2.2. Công việc trước đây. Việc tách rời sự đồng thuận cơ bản khỏi quá trình chuyển đổi trạng thái đã được đề xuất một cách không chính thức riêng tư trong ít nhất hai năm—Max Kaye là người đề xuất chiến lược như vậy trong những ngày đầu của Ethereum. Một giải pháp có thể mở rộng phức tạp hơn được gọi là Chuỗi bers, có từ tháng 6 năm 2014 và được xuất bản lần đầu sau đó Năm đó1, đã đưa ra trường hợp về một chuỗi chuyển tiếp duy nhất và nhiều chuỗi đồng nhất cung cấp cơ chế thực thi liên chuỗi minh bạch. Sự mất kết hợp đã được trả giá cho thông qua độ trễ giao dịch—các giao dịch yêu cầu sự phối hợp của các phần khác nhau của hệ thống sẽ mất nhiều thời gian hơn để xử lý. Polkadot lấy phần lớn kiến trúc của nó từ đó và các cuộc trò chuyện tiếp theo với nhiều người khác nhau, mặc dù nó khác nhau rất nhiều về phần lớn thiết kế và quy định. Mặc dù không có hệ thống nào có thể so sánh được với Polkadot thực tế trong sản xuất, một số hệ thống có liên quan đã được đề xuất, mặc dù rất ít ở mức độ đáng kể chi tiết. Những đề xuất này có thểchia thành các hệ thống loại bỏ hoặc làm giảm khái niệm về một hệ thống thống nhất toàn cầu máy trạng thái, những máy cố gắng cung cấp một cách toàn cầu máy đơn kết hợp thông qua các mảnh đồng nhất và những mục tiêu chỉ nhắm đến sự không đồng nhất. 2.2.1. Hệ thống không có trạng thái toàn cầu. Factom [21] là một hệ thống thể hiện tính chuẩn mực mà không cần tuân theo giá trị, cho phép ghi chép dữ liệu một cách hiệu quả. Bởi vì sự tránh né trạng thái toàn cầu và những khó khăn với khả năng mở rộng mà điều này mang lại, nó có thể được coi là một giải pháp có thể mở rộng. Tuy nhiên, như đã đề cập trước đó, bộ số vấn đề mà nó giải quyết được nhỏ hơn đáng kể và nghiêm ngặt. Tangle [18] là một cách tiếp cận mới đối với các hệ thống đồng thuận. Thay vì sắp xếp các giao dịch thành các khối và hình thành sự đồng thuận về một danh sách được liên kết chặt chẽ để đưa ra thứ tự chuẩn mực toàn cầu về các thay đổi trạng thái, nó phần lớn từ bỏ ý tưởng về một trật tự có cấu trúc chặt chẽ và thay vào đó thúc đẩy biểu đồ tuần hoàn có hướng của các giao dịch phụ thuộc với các mục sau giúp chuẩn hóa các mục trước đó thông qua tài liệu tham khảo rõ ràng. Đối với những thay đổi trạng thái tùy ý, biểu đồ phụ thuộc này sẽ nhanh chóng trở nên khó hiểu, tuy nhiên đối với UTXO model2 đơn giản hơn nhiều thì điều này trở thành khá hợp lý. Bởi vì hệ thống chỉ có tính mạch lạc lỏng lẻo và các giao dịch thường độc lập với nhau. mặt khác, một lượng lớn sự song song toàn cầu trở nên khá tự nhiên. Sử dụng mô hình UTXO có tác dụng về việc giới hạn Tangle thành một loại “tiền tệ” chuyển giao giá trị thuần túy hệ thống hơn là bất cứ điều gì chung chung hoặc có thể mở rộng. Hơn nữa, nếu không có sự gắn kết chặt chẽ toàn cầu, sự tương tác với các hệ thống khác có xu hướng cần một sự kết nối tuyệt đối. kiến thức về trạng thái hệ thống—trở nên không thực tế. 1https://github.com/ethereum/wiki/wiki/Chain-Fibers-Redux 2đầu ra giao dịch chưa được chi tiêu, mô hình mà Bitcoin sử dụng, theo đó trạng thái thực sự là tập hợp địa chỉ được liên kết với một số giá trị; các giao dịch đối chiếu các địa chỉ đó và cải tổ chúng thành một bộ địa chỉ mới có tổng số tiền tương đương
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 3 2.2.2. Hệ thống chuỗi không đồng nhất. Chuỗi bên [3] là một đề xuất bổ sung vào giao thức Bitcoin sẽ cho phép tương tác không đáng tin cậy giữa chuỗi Bitcoin chính và các chuỗi bên bổ sung. Không có quy định nào cho bất kỳ mức độ tương tác 'phong phú' giữa các chuỗi bên: sự tương tác sẽ bị giới hạn ở việc cho phép các chuỗi bên được người giám sát tài sản của nhau, có hiệu lực—ở địa phương biệt ngữ—một chốt hai chiều 3. Tầm nhìn cuối cùng là về một khuôn khổ trong đó loại tiền tệ Bitcoin có thể được cung cấp chức năng bổ sung, nếu là ngoại vi, thông qua việc chốt nó lên một số chuỗi khác với sự chuyển đổi trạng thái kỳ lạ hơn hệ thống hơn giao thức Bitcoin cho phép. Theo nghĩa này, chuỗi bên giải quyết khả năng mở rộng hơn là khả năng mở rộng. Thật vậy, về cơ bản không có quy định nào về tính hợp lệ của chuỗi bên; tokens từ một chuỗi (ví dụ: Bitcoin) được tổ chức thay mặt cho chuỗi bên chỉ được bảo mật bởi khả năng của chuỗi bên để khuyến khích các thợ mỏ chuẩn hóa chuyển tiếp hợp lệ. Tính bảo mật của mạng Bitcoin không thể dễ dàng chuyển sang làm việc thay mặt cho người khác blockchains. Hơn nữa, một giao thức để đảm bảo Bitcoin các công cụ khai thác hợp nhất khai thác (nghĩa là nhân đôi sức mạnh chuẩn hóa của họ lên sức mạnh của chuỗi bên) và quan trọng hơn là xác thực các chuyển đổi của chuỗi bên nằm ngoài phạm vi phạm vi của đề xuất này. Cosmos [10] là một hệ thống đa chuỗi được đề xuất trong cùng một mạch với chuỗi bên, hoán đổi Nakamoto PoW phương pháp đồng thuận cho thuật toán Tendermint của Jae Kwon. Về cơ bản, nó mô tả nhiều chuỗi (hoạt động trong vùng) mỗi vùng sử dụng các phiên bản riêng lẻ của Tendermint, cùng với phương tiện liên lạc không tin cậy thông qua chuỗi trung tâm chính. Giao tiếp giữa các chuỗi này được giới hạn ở việc chuyển giao tài sản kỹ thuật số (“cụ thể là về tokens”) thay vì thông tin tùy ý, tuy nhiên, giao tiếp giữa các chuỗi như vậy có đường dẫn trở lại cho dữ liệu, ví dụ: để báo cáo cho người gửi về tình trạng chuyển tiền. Bộ xác thực cho các chuỗi được khoanh vùng và đặc biệt phương tiện khuyến khích họ, giống như chuỗi bên, được để lại như một bài toán chưa được giải quyết. Giả định chung là mỗi chuỗi được phân vùng sẽ tự giữ token giá trị mà lạm phát được sử dụng để thanh toán cho validators. Vẫn đang ở giai đoạn đầu về thiết kế, hiện tại đề xuất thiếu chi tiết toàn diện về các phương tiện kinh tế để đạt được khả năng mở rộng sự chắc chắn về giá trị toàn cầu. Tuy nhiên, sự gắn kết lỏng lẻo cần có giữa các vùng và trung tâm sẽ cho phép để có thêm tính linh hoạt đối với các tham số của vùng được khoanh vùng chuỗi so với chuỗi của một hệ thống thực thi mạnh hơn sự mạch lạc. 2.2.3. Casper. Chưa có đánh giá toàn diện hoặc so sánh song song giữa Casper [6] và Polkadot đã được thực hiện, mặc dù người ta có thể thực hiện khá sâu rộng (và do đó không chính xác) đặc tính của cả hai. Casper là sự mô phỏng lại cách thức thuật toán đồng thuận PoS có thể dựa trên việc người tham gia đặt cược vào ngã ba nào cuối cùng sẽ trở thành kinh điển. Sự xem xét đáng kể đã được đưa ra để đảm bảo rằng nó mạnh mẽ cho mạng phân nhánh, ngay cả khi được kéo dài và có một số mức độ mở rộng bổ sung dựa trên mô hình Ethereum cơ bản. Như như vậy, Casper cho đến nay có xu hướng trở thành một giải pháp đáng kể hơn giao thức phức tạp hơn Polkadot và các giao thức trước đó của nó, và một sai lệch đáng kể so với định dạng blockchain cơ bản. Nó vẫn chưa rõ Casper sẽ lặp lại như thế nào trong tương lai và cuối cùng nó sẽ trông như thế nào nếu được triển khai. Trong khi Casper và Polkadot đều đại diện cho các giao thức mới thú vị và, theo một nghĩa nào đó, là sự gia tăng của Ethereum, có sự khác biệt đáng kể giữa chúng mục tiêu cuối cùng và con đường để triển khai. Casper là một Ethereum Dự án lấy nền tảng làm trung tâm được thiết kế ban đầu là một sự thay đổi PoS đối với giao thức mà không mong muốn về cơ bản tạo ra blockchain có thể mở rộng quy mô. Điều quan trọng là nó được thiết kế để trở thành một hard-fork, thay vì bất kỳ thứ gì mở rộng hơn và do đó tất cả khách hàng và người dùng Ethereum sẽ cần phải nâng cấp hoặc duy trì một nhánh của việc áp dụng không chắc chắn. Do đó, việc triển khai trở nên khó khăn hơn đáng kể như vốn có trong một dự án phi tập trung có yêu cầu chặt chẽ. sự phối hợp là cần thiết. Polkadot khác nhau ở một số điểm; đầu tiên và quan trọng nhất, Polkadot được thiết kế để có thể mở rộng và thay đổi quy mô hoàn toàn blockchain thử nghiệm phát triển, triển khai và tương tác giường. Nó được chế tạo để trở thành một dây đai an toàn cho tương lai, có khả năng đồng hóa mới blockchaincông nghệ khi nó trở nên sẵn có mà không cần sự phối hợp phi tập trung quá phức tạp hoặc hard fork. Chúng tôi đã hình dung ra một số trường hợp sử dụng như như chuỗi liên minh được mã hóa và chuỗi tần số cao với thời gian chặn rất thấp, điều này không thực tế để thực hiện trong bất kỳ phiên bản tương lai nào của Ethereum hiện được hình dung. Cuối cùng, sự kết hợp giữa nó và Ethereum là vô cùng lỏng lẻo; không cần thực hiện hành động nào từ phía Ethereum để cho phép chuyển tiếp giao dịch không đáng tin cậy giữa hai mạng. Tóm lại, trong khi Casper/Ethereum 2.0 và Polkadot chia sẻ một số điểm tương đồng thoáng qua mà chúng tôi tin rằng mục tiêu cuối cùng của họ về cơ bản là khác nhau và thay vì cạnh tranh, hai giao thức cuối cùng có khả năng cùng tồn tại dưới một mối quan hệ đôi bên cùng có lợi trong tương lai gần.
Resumo
Polkadot é uma multicadeia heterogênea escalável. Isto significa que, diferentemente das implementações anteriores de blockchain que se concentraram em fornecer uma única cadeia de diversos graus de generalidade sobre aplicações potenciais, Polkadot em si foi projetado para não fornecer nenhuma funcionalidade inerente ao aplicativo. Em vez disso, Polkadot fornece a base “cadeia de retransmissão” sobre a qual um grande número de informações validáveis, estruturas de dados dinâmicas globalmente coerentes podem ser hospedadas lado a lado. Chamamos essas estruturas de dados de “paralelizadas” correntes ou parachains, embora não haja necessidade específica de eles sejam de natureza blockchain. Em outras palavras, Polkadot pode ser considerado equivalente a um conjunto de cadeias independentes (por exemplo, o conjunto contendo Ethereum, Ethereum Classic, Namecoin e Bitcoin), exceto por dois pontos muito importantes: • Segurança conjunta; • transacionalidade entre cadeias sem confiança. É por esses pontos que consideramos Polkadot “escalável”. Em princípio, um problema a ser implantado em Polkadot pode ser substancialmente paralelizado - ampliado - ao longo de um grande número de pára-quedas. Como todos os aspectos de cada parachain pode ser conduzido em paralelo por um segmento diferente da rede Polkadot, o sistema tem alguma capacidade para escalar. Polkadot fornece um pedaço bastante básico de 3em oposição a uma fixação unilateral que é essencialmente a ação de destruir tokens em uma cadeia para criar tokens em outra sem o mecanismo para fazer o inverso a fim de recuperar os tokens originaisPOLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 4 infraestrutura, deixando grande parte da complexidade para ser abordada no nível do middleware. Esta é uma decisão consciente que visa reduzir o risco de desenvolvimento, permitindo que a software necessário a ser desenvolvido em um curto espaço de tempo e com um bom nível de confiança sobre sua segurança e robustez. 3.1. A Filosofia de Polkadot. Polkadot deveria fornecer uma base absolutamente sólida sobre a qual construir a próxima onda de sistemas de consenso, através o espectro de risco de projetos maduros com capacidade de produção às ideias nascentes. Ao fornecer fortes garantias de segurança, isolamento e comunicação, Polkadot pode permitir parachains para selecionar entre uma variedade de propriedades. Na verdade, prevemos vários blockchains experimentais empurrando as propriedades do que poderia ser considerado sensato hoje. Vemos conservadores, cadeias de alto valor semelhantes a Bitcoin ou Z-cash [20] coexistindo com valores mais baixos “cadeias temáticas” (como marketing, tão divertido) e redes de teste com taxas zero ou quase zero. Vemos totalmente criptografado, cadeias de consórcios “obscuras” operando lado a lado – e até mesmo fornecendo serviços para cadeias altamente funcionais e abertas como aqueles como Ethereum. Vemos novos experimentos Cadeias baseadas em VM, como um wasm subjetivo com cobrança de tempo cadeia sendo usada como um meio de terceirizar problemas de computação difíceis de uma cadeia mais madura do tipo Ethereum ou uma cadeia mais restrita do tipo Bitcoin. Para gerenciar atualizações em cadeia, Polkadot irá inerentemente apoiar algum tipo de estrutura de governança, provavelmente baseada nos sistemas políticos estáveis existentes e com um aspecto bicameral semelhante ao Conselho do Livro Amarelo [24]. Como a autoridade final, os detentores subjacentes de token teriam o controle do “referendo”. Para refletir a opinião dos usuários necessidade de desenvolvimento, mas a necessidade de legitimidade dos desenvolvedores, esperamos que uma direção razoável seja formar as duas câmaras de um comitê “usuário” (composto por vinculados validators) e um comitê “técnico” composto dos principais desenvolvedores de clientes e participantes do ecossistema. O corpo de titulares de token manteria a legitimidade final e formaria uma maioria absoluta para aumentar, reparametrizar, substituir ou dissolver esta estrutura, algo que não duvide da eventual necessidade de: nas palavras de Twain “Governos e fraldas devem ser trocadas com frequência, e para pelo mesmo motivo”. Embora a reparametrização seja normalmente trivial de organizar dentro de um mecanismo de consenso mais amplo, mudanças mais qualitativas, como substituição e aumento, seriam necessárias. provavelmente precisarão ser “decretos suaves” não automatizados (por exemplo, através da canonização de um número de bloco e da hash de um documento especificando formalmente o novo protocolo) ou exigir que o mecanismo central de consenso contenha um linguagem suficientemente rica para descrever qualquer aspecto de si mesmo que pode precisar mudar. Este último é um objetivo eventual, no entanto, é mais provável que o primeiro seja escolhido para facilitar um cronograma de desenvolvimento razoável. Os princípios primários de Polkadot e as regras dentro das quais avaliamos todas as decisões de design são: Mínimo: Polkadot deve ter o mínimo de funcionalidade possível. Simples: nenhuma complexidade adicional deve estar presente no protocolo base do que pode razoavelmente ser transferido para middleware, colocado através de um parachain ou introduzido em uma otimização posterior. Geral: nenhum requisito desnecessário, restrição ou limitação deve ser colocada em pára-quedas; Polkadot deve ser uma plataforma de teste para o desenvolvimento de sistema de consenso que pode ser otimizado por meio de tornando o modelo no qual as extensões se enquadram o mais abstrato possível. Robusto: Polkadot deve fornecer fundamentalmente camada base estável. Além da solidez económica, isto também significa descentralizar para minimizar os vetores para ataques de alta recompensa.
Bản tóm tắt
Polkadot là một chuỗi đa chuỗi không đồng nhất có thể mở rộng. Cái này có nghĩa là không giống như các lần triển khai blockchain trước đây đã tập trung vào việc cung cấp một chuỗi duy nhất các sản phẩm khác nhau mức độ tổng quát về các ứng dụng tiềm năng, Polkadot bản thân nó được thiết kế để không cung cấp chức năng ứng dụng vốn có nào cả. Đúng hơn, Polkadot cung cấp nền tảng “chuỗi chuyển tiếp” trên đó có một số lượng lớn các thông tin có thể xác nhận, cấu trúc dữ liệu động mạch lạc toàn cầu có thể được lưu trữ bên cạnh nhau. Chúng tôi gọi những cấu trúc dữ liệu này là “song song” chuỗi hoặc parachain, mặc dù không có nhu cầu cụ thể về về bản chất chúng là blockchain. Nói cách khác, Polkadot có thể được coi là tương đương với một tập hợp các chuỗi độc lập (ví dụ: tập hợp chứa Ethereum, Ethereum Classic, Namecoin và Bitcoin) ngoại trừ hai điểm rất quan trọng: • Bảo mật tổng hợp; • khả năng giao dịch liên chuỗi không cần tin cậy. Những điểm này là lý do tại sao chúng tôi coi Polkadot là “có thể mở rộng”. Về nguyên tắc, một vấn đề được triển khai trên Polkadot có thể được thực hiện song song—mở rộng quy mô—trên một số lượng lớn parachain. Vì tất cả các khía cạnh của mỗi parachain có thể được tiến hành song song bởi một phân đoạn khác nhau của mạng Polkadot, hệ thống có một số khả năng để mở rộng quy mô. Polkadot cung cấp một thông tin khá đơn giản 3trái ngược với chốt một chiều về cơ bản là hành động phá hủy tokens trong một chuỗi để tạo tokens trong một chuỗi khác mà không có cơ chế thực hiện ngược lại để khôi phục tokens ban đầuPOLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 4 cơ sở hạ tầng khiến phần lớn sự phức tạp phải được giải quyết ở cấp độ phần mềm trung gian. Đây là một quyết định có ý thức nhằm giảm thiểu rủi ro phát triển, tạo điều kiện cho phần mềm cần thiết được phát triển trong một khoảng thời gian ngắn và với mức độ tin cậy cao về tính bảo mật và sự vững chãi. 3.1. Triết lý của Polkadot. Polkadot nên cung cấp một nền tảng vững chắc tuyệt đối để xây dựng làn sóng hệ thống đồng thuận tiếp theo, ngay thông qua phổ rủi ro từ các thiết kế trưởng thành có khả năng sản xuất đến những ý tưởng non trẻ. Bằng cách cung cấp sự đảm bảo mạnh mẽ về bảo mật, cách ly và liên lạc, Polkadot có thể cho phép parachains để tự mình chọn từ một loạt thuộc tính. Thật vậy, chúng tôi đã thấy trước nhiều blockchain thử nghiệm khác nhau sẽ thúc đẩy các thuộc tính của những gì có thể được coi là hợp lý hôm nay. Chúng tôi thấy bảo thủ, chuỗi giá trị cao tương tự như Bitcoin hoặc Z-cash [20] cùng tồn tại cùng với giá trị thấp hơn “chuỗi chủ đề” (tiếp thị như vậy, rất thú vị) và mạng thử nghiệm với mức phí bằng 0 hoặc gần bằng 0. Chúng tôi thấy được mã hóa đầy đủ, “đen tối”, các chuỗi liên minh hoạt động song song—và thậm chí cung cấp dịch vụ cho—các chuỗi mở và có chức năng cao chẳng hạn như những thứ như Ethereum. Chúng tôi thấy thử nghiệm mới Các chuỗi dựa trên VM chẳng hạn như wasm tính phí theo thời gian chủ quan chuỗi đang được sử dụng như một phương tiện để gia công các vấn đề tính toán khó khăn từ chuỗi giống Ethereum hoàn thiện hơn hoặc một chuỗi giống Bitcoin bị hạn chế hơn. Để quản lý việc nâng cấp chuỗi, Polkadot vốn sẽ hỗ trợ một số loại cơ cấu quản trị, có thể dựa trên về các hệ thống chính trị ổn định hiện có và có khía cạnh lưỡng viện tương tự như Hội đồng Sách Vàng [24]. Như có thẩm quyền tối cao, những người nắm giữ token có thể đặt cược cơ bản sẽ có quyền kiểm soát "trưng cầu dân ý". Để phản ánh ý kiến của người dùng nhu cầu phát triển nhưng nhà phát triển cần tính hợp pháp, chúng tôi mong đợi một hướng đi hợp lý sẽ hình thành hai viện từ một ủy ban “người sử dụng” (gồm ngoại quan validators) và một ủy ban “kỹ thuật” được thành lập của các nhà phát triển khách hàng lớn và người chơi trong hệ sinh thái. các nhóm chủ sở hữu token sẽ duy trì tính hợp pháp cao nhất và hình thành đại đa số để tăng cường, điều chỉnh lại tham số, thay thế hoặc giải thể cấu trúc này, điều mà chúng tôi đừng nghi ngờ sự cần thiết cuối cùng của: theo lời của Twain “Chính phủ và tã lót phải được thay đổi thường xuyên, và để lý do giống nhau”. Trong khi việc tái tham số hóa thường không quan trọng để sắp xếp trong một cơ chế đồng thuận lớn hơn, thì những thay đổi về chất hơn như thay thế và tăng cường sẽ có thể cần phải là “nghị định mềm” không tự động hóa (ví dụ: thông qua việc chuẩn hóa số khối và hash của tài liệu chỉ định chính thức giao thức mới) hoặc yêu cầu cơ chế đồng thuận cốt lõi để chứa một ngôn ngữ đủ phong phú để mô tả bất kỳ khía cạnh nào của chính nó mà có thể cần phải thay đổi. Cái sau là mục đích cuối cùng, tuy nhiên, cái trước có nhiều khả năng được chọn hơn để tạo điều kiện cho một mốc thời gian phát triển hợp lý. Nguyên lý chính của Polkadot và các quy tắc trong đó chúng tôi đánh giá mọi quyết định thiết kế là: Tối thiểu: Polkadot phải có càng ít chức năng càng tốt. Đơn giản: không có sự phức tạp bổ sung nào trong giao thức cơ sở hơn mức có thể hợp lý được tải vào phần mềm trung gian, được đặt thông qua một parachain hoặc được giới thiệu trong lần tối ưu hóa sau này. Tổng quát: không có yêu cầu, ràng buộc không cần thiết hoặc nên áp dụng giới hạn đối với parachain; Polkadot phải là nơi thử nghiệm để phát triển hệ thống đồng thuận có thể được tối ưu hóa thông qua làm cho mô hình có phần mở rộng phù hợp càng trừu tượng càng tốt. Mạnh mẽ: Polkadot sẽ cung cấp cơ bản lớp nền ổn định. Ngoài sự lành mạnh về kinh tế, điều này còn có nghĩa là phân cấp để giảm thiểu các vectơ cho các cuộc tấn công có phần thưởng cao.
Participação em Polkadot
Existem quatro funções básicas na manutenção de um Polkadot rede: coletor, pescador, nomeador e validator. Em uma possível implementação de Polkadot, a última função na verdade, pode ser dividido em duas funções: validator básico e fiador de disponibilidade; isso é discutido na seção 6.5.3. Coletor Pescador Validadores (este grupo) Validadores (outros grupos) aprova torna-se monitores relatórios ruim comportamento para fornece bloco candidatos para Nomeador Figura 1. A interação entre o quatro funções de Polkadot. 4.1. Validadores. Um validator é a cobrança mais alta e ajuda a selar novos blocos na rede Polkadot. O papel do validator depende de um título suficientemente alto sendo depositado, embora permitamos que outras partes vinculadas nomear um ou mais validators para agir em seu nome e como tal parte do título do validator pode não ser necessariamente propriedade do próprio validator, mas sim destes nomeadores. Um validator deve executar uma implementação de cliente de cadeia de retransmissão com alta disponibilidade e largura de banda. Em cada bloco o nó deve estar pronto para aceitar o papel de ratificar um novo bloco em um parachain nomeado. Este processo envolve receber, validar e republicar candidatos blocos. A nomeação é determinística, mas virtualmente imprevisível com muita antecedência. Como o validator não pode razoavelmente esperado que mantenha um sistema totalmente sincronizado banco de dados de todos os parachains, espera-se que o validator nomeie a tarefa de elaborar uma nova sugestão bloco parachain para terceiros, conhecido como agrupador. Uma vez que todos os novos blocos de parachain tenham sido devidamente ratificados por seus subgrupos validator designados, validators deve então ratificar o próprio bloco da cadeia de relés. Isso envolve atualizando o estado das filas de transação (essencialmente mover dados da fila de saída de um parachain para outra fila de entrada do parachain), processando as transações de o conjunto de transações ratificadas em cadeia de retransmissão e ratificando o bloco final, incluindo as alterações finais do parachain.POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 5 Um validator não cumprindo seu dever de encontrar consenso sob as regras do nosso algoritmo de consenso escolhido é punido. Para falhas iniciais e não intencionais, isso ocorre através retendo a recompensa de validator. Falhas repetidas resultam na redução do seu título de segurança (através da queima). Ações provavelmente maliciosas, como assinatura dupla ou conspirar para fornecer um bloqueio inválido resultará na perda de todo o vínculo (que está parcialmente queimado, mas principalmente dado ao informante e aos atores honestos). Em certo sentido, validators são semelhantes aos pools de mineração dos PoW atuais blockchains. 4.2. Nomeadores. Um nominador é uma parte interessada que contribui para a caução de um validator. Eles não têm qualquer função adicional, exceto a de colocar capital de risco e como tal para sinalizar que eles confiam em um determinado validator (ou conjunto deles) a agir com responsabilidade na manutenção do rede. Eles recebem um aumento ou redução proporcional em seu depósito de acordo com o crescimento do título ao qual eles contribuem. Juntamente com os agrupadores, em seguida, os nomeadores estão em alguns sentido semelhante aos mineradores das redes PoW atuais. 4.3. Coletores. Agrupadores de transações (abreviadamente agrupadores) são partes que auxiliam validators na produção de blocos de pára-quedas. Eles mantêm um “nó completo” para um parachain específico; o que significa que eles retêm todos os recursos necessários informações para poder criar novos blocos e executar transações da mesma maneira que os mineradores fazem nos PoW blockchains atuais. Em circunstâncias normais, eles irá agrupar e executar transações para criar um não selado bloquear e fornecê-lo, junto com um conhecimento zero prova, para um ou mais validators atualmente responsáveis por propondo um bloco parachain. A natureza precisa do relacionamento entre agrupadores, nomeadores e validators provavelmente mudará ao longo tempo. Inicialmente, esperamos que os agrupadores trabalhem em estreita colaboração com validators, já que haverá apenas alguns (talvez apenas um) parachain(s) com pouco volume de transações. O a implementação inicial do cliente incluirá RPCs para permitir um nó de agrupamento parachain para fornecer incondicionalmente um nó (relaychain) validator com um parachain comprovadamente válido bloco. Como o custo de manutenção de uma versão sincronizada do todos esses parachains aumentam, esperamos ver infra-estrutura existente que ajudará a separar o deveres para com partidos independentes e com motivação económica. Eventualmente, esperamos ver pools de agrupamentos que disputam coletar o máximo de taxas de transação. Esses agrupadores podem ser contratados para atender validators específicos durante um período de tempo por uma participação contínua nos rendimentos da recompensa. Alternativamente, os agrupadores “freelance” podem simplesmente criar um mercado que oferece blocos de parachain válidos em troca de uma parcela competitiva da recompensa pagável imediatamente. Da mesma forma, os grupos de nominadores descentralizados permitiriam múltiplos participantes vinculados para coordenar e compartilhar o dever de um validator. Esta capacidade de reunir garante uma participação aberta levando a um sistema mais descentralizado. 4.4. Pescadores. Ao contrário dos outros dois partidos activos, pescadores não estão diretamente relacionados com a autoria do bloco processo. Em vez disso, eles são “caçadores de recompensas” independentes motivado por uma grande recompensa única. Precisamente devido a existência de pescadores, esperamos que eventos de mau comportamento aconteçam raramente, e quando acontecem apenas devido a a parte vinculada sendo descuidada com a segurança da chave secreta, e não através de intenção maliciosa. O nome vem desde a frequência esperada da recompensa, os requisitos mínimos para participar e o eventual tamanho da recompensa. Os pescadores obtêm a sua recompensa através de uma prova atempada de que pelo menos uma parte vinculada agiu ilegalmente. Ações ilegais incluem assinar dois blocos cada um com o mesmo pai ratificado ou, no caso de parachains, ajudar a ratificar um inválido bloco. Para evitar recompensas excessivas ou o compromisso e uso ilícito da chave secreta de uma sessão, a recompensa básica para fornecer uma única mensagem assinada ilegalmente por validator é mínimo. Esta recompensa aumenta assintoticamente à medida que mais corroborar assinaturas ilegais de outros validators são desde que implique um ataque genuíno. A assíntota está definida em 66% seguindo nossa afirmação básica de segurança de que pelo menos dois terços dos validators agem com benevolência. Os pescadores são um pouco semelhantes aos “nós completos” em sistemas blockchain atuais que os recursos necessários são relativamente pequenos e o compromisso de tempo de atividade estável e largura de banda não é necessária. Os pescadores diferem tanto tanto quanto eles devem pagar uma pequena fiança.Esse vínculo impede ataques Sybil desperdiçam tempo e computação de validators recursos. É imediatamente retirável, provavelmente não mais do que o equivalente a alguns dólares e pode levar para colher uma grande recompensa por detectar um mau comportamento validator.
Tham gia Polkadot
Có bốn vai trò cơ bản trong việc duy trì Polkadot mạng: người đối chiếu, ngư dân, người đề cử và validator. trong một khả năng triển khai Polkadot, vai trò thứ hai thực tế có thể được chia thành hai vai trò: validator cơ bản và người bảo đảm tính sẵn có; điều này được thảo luận trong phần 6.5.3. đối chiếu ngư dân Trình xác nhận (nhóm này) Trình xác nhận (các nhóm khác) chấp thuận trở thành màn hình báo cáo xấu hành vi để cung cấp khối ứng viên cho Người đề cử Hình 1. Sự tương tác giữa bốn vai trò của Polkadot. 4.1. Trình xác nhận. validator là mức phí cao nhất và giúp niêm phong các khối mới trên mạng Polkadot. Vai trò của validator phụ thuộc vào mức độ liên kết đủ cao được ký gửi, mặc dù chúng tôi cho phép các bên liên kết khác đề cử một hoặc nhiều validator hành động thay mặt họ và với tư cách là một phần nào đó trong trái phiếu của validator có thể không nhất thiết phải thuộc sở hữu của chính validator mà là của những người này người đề cử. validator phải chạy triển khai ứng dụng khách chuỗi chuyển tiếp với độ khả dụng và băng thông cao. Tại mỗi khối nút phải sẵn sàng chấp nhận vai trò phê chuẩn một khối mới trên parachain được chỉ định. Quá trình này liên quan đến việc tiếp nhận, xác nhận và xuất bản lại ứng cử viên khối. Việc đề cử mang tính quyết định nhưng hầu như không thể đoán trước được nhiều. Vì validator không thể được mong đợi một cách hợp lý là sẽ duy trì một hệ thống được đồng bộ hóa hoàn toàn cơ sở dữ liệu của tất cả các parachain, dự kiến validator sẽ chỉ định nhiệm vụ đưa ra một đề xuất mới khối parachain cho bên thứ ba, được gọi là đối tác. Sau khi tất cả các khối parachain mới đã được phê duyệt hợp lệ bởi các nhóm con validator được chỉ định của chúng, validators sau đó phải phê chuẩn chính khối chuỗi chuyển tiếp. Điều này liên quan đến cập nhật trạng thái của hàng đợi giao dịch (về cơ bản di chuyển dữ liệu từ hàng đợi đầu ra của parachain sang hàng đợi khác hàng đợi đầu vào của parachain), xử lý các giao dịch của bộ giao dịch chuỗi chuyển tiếp đã được phê duyệt và phê chuẩn khối cuối cùng, bao gồm cả những thay đổi cuối cùng của parachain.POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 5 validator không hoàn thành nghĩa vụ tìm kiếm sự đồng thuận theo các quy tắc của thuật toán đồng thuận đã chọn của chúng tôi sẽ bị trừng phạt. Đối với những thất bại ban đầu, không chủ ý, điều này là thông qua giữ lại phần thưởng của validator. Những thất bại lặp đi lặp lại dẫn đến việc giảm liên kết bảo mật của họ (thông qua việc đốt cháy). Các hành động có hại có thể xảy ra như ký hai lần hoặc âm mưu cung cấp một khối không hợp lệ dẫn đến việc mất toàn bộ trái phiếu (bị đốt cháy một phần nhưng phần lớn được trao cho cho người cung cấp thông tin và người trung thực). Theo một nghĩa nào đó, validator tương tự như nhóm khai thác của PoW hiện tại blockchains. 4.2. Người đề cử. Người được đề cử là bên nắm giữ cổ phần người đóng góp vào trái phiếu bảo đảm của validator. Họ không có vai trò bổ sung nào ngoại trừ việc bố trí vốn rủi ro và như như vậy để báo hiệu rằng họ tin tưởng một validator cụ thể (hoặc được thiết lập) để hành động có trách nhiệm trong việc duy trì mạng. Họ nhận được sự tăng hoặc giảm theo tỷ lệ trong khoản tiền gửi của họ tùy theo mức tăng trưởng của trái phiếu họ đóng góp. Cùng với những người đối chiếu, tiếp theo, những người được đề cử nằm trong một số có ý nghĩa tương tự như các công cụ khai thác của mạng PoW ngày nay. 4.3. Người hợp tác. Đối chiếu giao dịch (gọi tắt là đối chiếu) là các bên hỗ trợ validator tạo ra các khối parachain. Họ duy trì một “nút đầy đủ” cho một parachain cụ thể; có nghĩa là họ giữ lại tất cả những gì cần thiết thông tin để có thể tạo các khối mới và thực thi giao dịch theo cách tương tự như cách các thợ mỏ thực hiện trên PoW blockchain hiện tại. Trong hoàn cảnh bình thường, họ sẽ đối chiếu và thực hiện các giao dịch để tạo ra một bản ghi chưa được niêm phong chặn và cung cấp nó cùng với kiến thức bằng không bằng chứng cho một hoặc nhiều validator hiện chịu trách nhiệm về đề xuất một khối parachain. Bản chất chính xác của mối quan hệ giữa người đối chiếu, người đề cử và validator có thể sẽ thay đổi theo thời gian. Ban đầu, chúng tôi mong đợi những người cộng tác sẽ hợp tác rất chặt chẽ với validators, vì sẽ chỉ có một vài (có lẽ chỉ một) parachain với khối lượng giao dịch ít. các Việc triển khai ứng dụng khách ban đầu sẽ bao gồm các RPC để cho phép nút đối chiếu parachain để cung cấp vô điều kiện nút (chuỗi chuyển tiếp) validator với một parachain hợp lệ có thể được chứng minh khối. Vì chi phí duy trì phiên bản được đồng bộ hóa của tất cả các parachain như vậy đều tăng lên, chúng tôi hy vọng sẽ thấy thêm cơ sở hạ tầng sẵn có sẽ giúp tách biệt các nghĩa vụ đối với các đảng độc lập, có động cơ kinh tế. Cuối cùng, chúng tôi hy vọng sẽ thấy các nhóm đối tác cạnh tranh thu nhiều phí giao dịch nhất. Những người đối chiếu như vậy có thể ký hợp đồng để phục vụ validator cụ thể trong một khoảng thời gian để được chia sẻ liên tục trong số tiền thưởng. Ngoài ra, những người cộng tác “tự do” có thể chỉ cần tạo một thị trường cung cấp các khối parachain hợp lệ để đổi lấy phần thưởng cạnh tranh được trả ngay lập tức. Tương tự, nhóm đề cử phi tập trung sẽ cho phép nhiều những người tham gia liên kết để phối hợp và chia sẻ nhiệm vụ của một validator. Khả năng tập hợp này đảm bảo sự tham gia cởi mở dẫn đến một hệ thống phi tập trung hơn. 4.4. Ngư dân. Không giống như hai bên hoạt động còn lại, ngư dân không liên quan trực tiếp đến việc tạo khối quá trình. Đúng hơn họ là những “thợ săn tiền thưởng” độc lập được thúc đẩy bởi một phần thưởng lớn. Chính xác là do sự tồn tại của ngư dân, chúng tôi cho rằng những hành vi sai trái hiếm khi xảy ra và khi chúng xảy ra chỉ do bên liên quan bất cẩn với việc bảo mật khóa bí mật, chứ không phải thông qua mục đích xấu. Cái tên đến từ tần suất thưởng dự kiến, yêu cầu tối thiểu để tham gia và quy mô phần thưởng cuối cùng. Ngư dân nhận được phần thưởng thông qua việc chứng minh kịp thời rằng ít nhất một bên liên quan đã hành động trái pháp luật. Hành động trái pháp luật bao gồm việc ký hai khối với cùng một khối gốc đã được phê duyệt hoặc, trong trường hợp của parachain, giúp phê chuẩn một khối không hợp lệ khối. Để ngăn chặn việc khen thưởng quá mức hoặc sự thỏa hiệp và sử dụng trái phép khóa bí mật của phiên, phần thưởng cơ bản cho việc cung cấp tin nhắn được ký bất hợp pháp của một validator là tối thiểu. Phần thưởng này tăng tiệm cận khi càng nhiều chứng thực chữ ký bất hợp pháp từ validator khác là được cung cấp ngụ ý một cuộc tấn công thực sự. Đường tiệm cận được thiết lập ở mức 66% theo khẳng định bảo mật cơ sở của chúng tôi rằng ít nhất hai phần ba validator hành động nhân từ. Fishermen có phần giống với “các nút đầy đủ” trong hệ thống blockchain ngày nay mà tài nguyên cần thiết tương đối nhỏ và cam kết về thời gian hoạt động ổn định và băng thông là không cần thiết. Ngư dân có sự khác biệt ở điểm này nhiều như họ phải đăng một trái phiếu nhỏ.Liên kết này ngăn cản các cuộc tấn công sybil do lãng phí validators thời gian và tính toán tài nguyên. Có thể rút ngay lập tức, có lẽ là không nhiều hơn số tiền tương đương với một vài đô la và có thể dẫn đến để gặt hái một phần thưởng khổng lồ từ việc phát hiện ra hành vi sai trái validator.
Visão geral do projeto
Esta seção tem como objetivo fornecer uma breve visão geral do sistema como um todo. Uma exploração mais aprofundada do sistema é fornecido na seção seguinte. 5.1. Consenso. Na cadeia de retransmissão, Polkadot atinge consenso de baixo nível sobre um conjunto de regras válidas mutuamente acordadas blocos por meio de um algoritmo moderno assíncrono bizantino tolerante a falhas (BFT). O algoritmo será inspirado pelo simples Tendermint [11] e pelo substancialmente mais envolvido HoneyBadgerBFT [14]. Este último fornece uma consenso eficiente e tolerante a falhas sobre um acordo arbitrariamente infraestrutura de rede defeituosa, dado um conjunto de autoridades em sua maioria benignas ou validators. Para uma rede estilo prova de autoridade (PoA), só isso seria suficiente, no entanto, Polkadot é imaginado como sendo também implantável como uma rede em um ambiente totalmente aberto e público situação sem qualquer organização específica ou confiável autoridade necessária para mantê-lo. Como tal precisamos de um meio de determinar um conjunto de validators e incentivar para serem honestos. Para isso utilizamos seleção baseada em PoS critérios. 5.2. Provando a aposta. Supomos que a rede terá alguns meios de medir quanto “aposta” qualquer conta específica possui. Para facilitar a comparação com sistemas pré-existentes, chamaremos a unidade de medida “tokens”. Infelizmente, o termo não é o ideal para uma uma série de razões, inclusive por ser simplesmente um escalar valor associado a uma conta, não há noção de individualidade. Imaginamos que validators sejam eleitos, raramente (no máximo uma vez por dia, mas talvez tão raramente quanto uma vez por trimestre), através de um esquema de Prova de Participação Nomeada (NPoS). O incentivo pode acontecer através de uma alocação proporcional dePOLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 6 Relé corrente Enxame de validadores (cada um colorido por seu pára-quedas designado) Transação (enviado por ator externo) Parachain ponte Parachain virtual (por exemplo, Ethereum) Parachain Parachain filas e E/S Transações propagadas Bloquear envio de candidato 2ª ordem Cadeia de relés Comunidade Parachain Conta Transação de entrada Transação de saída Transações intercadeias (gerenciado por validators) Coletor Bloco propagado Pescador Figura 2. Um esquema resumido do sistema Polkadot. Isso mostra agrupadores coletando e propagando transações de usuários, bem como propagando candidatos a blocos para pescadores e validators. Também mostra como uma conta pode lançar uma transação que é realizada em seu parachain, através da cadeia de retransmissão e em outro parachain onde pode ser interpretado como uma transação para uma conta lá. fundos provenientes de uma expansão de base token (até 100% por ano, embora mais provavelmente em torno de 10%), juntamente com quaisquer taxas de transação cobradas. Embora a expansão da base monetária normalmente leve à inflação, uma vez que todos os proprietários de token teria uma oportunidade justa de participação, nenhum titular de token precisaria sofrer uma redução no valor de seus participações ao longo do tempo, desde que estivessem felizes em assumir um papel no mecanismo de consenso. Uma proporção específica de tokens seriam direcionados para o processo staking; o a expansão efetiva da base token seria ajustada através um mecanismo baseado no mercado para atingir esta meta. Os validadores estão fortemente vinculados às suas apostas; saindo Os títulos dos validators permanecem em vigor por muito tempo após o término das obrigações dos validators (talvez cerca de 3 meses). Tanto tempo período de liquidação de títulos permite que mau comportamento futuro seja punido até a verificação periódica da cadeia. O mau comportamento resulta em punição, como redução de recompensa ou, nos casos que comprometam intencionalmente a integridade da rede, o validator perdendo parte ou todos os seus interesse para outros validators, informantes ou partes interessadas como um todo (através da queima). Por exemplo, um validator que tenta ratificar ambos os ramos de uma bifurcação (às vezes conhecido como ataque de “curto alcance”) pode ser identificado e punido desta última forma. Ataques de longo alcance “nada em jogo”4 são contornados através de um simples bloqueio de “ponto de verificação” que impede uma reorganização perigosa da cadeia de mais de um profundidade de cadeia específica. Para garantir clientes recém-sincronizados não podem ser enganados na corrente errada, regular ocorrerão “hard forks” (no máximo no mesmo período do validators’ liquidação de títulos) que codifica o bloco de ponto de verificação recente hashes nos clientes. Isto funciona bem com uma medida adicional de redução da pegada de “comprimento finito da cadeia” ou reinicialização periódica do bloco genesis. 5.3. Parachains e coladores. Cada pára-quedas recebe recursos de segurança semelhantes à cadeia de relés: o os cabeçalhos dos parachains são selados dentro do bloco da cadeia de relés garantir que nenhuma reorganização ou “gasto duplo” seja possível após a confirmação. Esta é uma garantia de segurança semelhante à oferecida pelas cadeias laterais e fusão de Bitcoin. Polkadot, no entanto, também fornece fortes garantias de que as transições de estado dos parachains são válidas. Isto acontece através do conjunto de validators sendo segmentado criptograficamente aleatoriamente em subconjuntos; um subconjunto por parachain, os subconjuntos potencialmente diferentes por bloco. Isto a configuração geralmente implica que os tempos de bloqueio dos parachains serão ser pelo menos tão longo quanto o da cadeia de relés. O específico meio de determinar o particionamento está fora do escopo 4É neste tipo de ataque que o adversário forja uma cadeia histórica inteiramente nova, a partir do bloco génese. Através do controle de um parcela relativamente insignificante da aposta na compensação, eles são capazes de aumentar gradativamente sua parcela da aposta em relação a todos os outros partes interessadas, pois são os únicos participantes activos na sua história alternativa. Como não existe nenhuma limitação física intrínseca na criação de blocos (ao contrário do PoW, onde a energia computacional bastante real deve ser gasta), eles são capazes de criar uma cadeia mais longa do que a cadeia real em um intervalo de tempo relativamente curto e potencialmente torná-lo o mais longo e melhor, assumindo o estado canônico da rede.POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 7 deste documento, mas provavelmente seria baseado em torno uma estrutura de confirmação-revelação semelhante ao RanDAO [19] ou use dados combinados de blocos anteriores de cada parachain sob um hash criptograficamente seguro. Esses subconjuntos de validators são necessários para fornecer um candidato de bloco parachain que é garantido como válido (em dor de confisco de títulos). A validade gira em torno de dois pontos importantes; primeiro, que é intrinsecamente válido – que todas as transições de estado foram executadas fielmente e que todas os dados externos referenciados (ou seja, transações) são válidos para inclusão. Em segundo lugar, que quaisquer dados extrínsecos à sua candidato, como aquelas transações externas, tem disponibilidade suficientemente alta para que os participantes possam baixe-o e execute o bloco manualmente.5 Os validadores podem fornecer apenas um bloco “nulo” que não contém dados de “transações” externas, mas podem correr o risco de obter uma recompensa reduzida se o fizerem. Eles trabalham ao lado um protocolo de fofoca parachain com agrupadores - indivíduos que agrupam transações em blocos e fornecem uma prova não interativa e de conhecimento zero de que o bloco constitui um filho válido de seu pai (e aceitando qualquer transação taxas por seus problemas). Resta aos protocolos parachain especificar seus próprios meios de prevenção de spam: não existe uma noção fundamental de “medição de recursos computacionais” ou “taxa de transação” imposta pela cadeia de retransmissão. Também não há aplicação direta disso pelo protocolo de cadeia de retransmissão (embora é improvável que as partes interessadas optem por adotar um parachain que não fornecia um mecanismo decente). Este é um aceno explícito à possibilidade de cadeias diferentes Ethereum, por ex. uma cadeia semelhante a Bitcoin que tem um modelo de taxas muito mais simples ou algum outro modelo de prevenção de spam ainda a ser proposto. A própria cadeia de relés de Polkadot provavelmente existirá como um Contas e cadeia de estados semelhantes a Ethereum, possivelmente um derivado de EVM. Como os nós da cadeia de relés serão obrigados a fazer outros processamentos substanciais, taxa de transferência de transações será minimizado em parte através de grandes taxas de transação e, caso nossos modelos de pesquisa exijam, um limite de tamanho de bloco. 5.4. Comunicação Intercadeia. O ingrediente final crítico de Polkadot é a comunicação entre cadeias. Desde parachains podem ter algum tipo de canal de informação entre eles, nos permitimos considerar Polkadot um multi-cadeia escalável. No caso de Polkadot, a comunicação é tão simples quanto possível: transações executadas em um parachain são (de acordo com a lógica dessa cadeia) capazes de efetuar o envio de uma transação para um segundo parachain ou, potencialmente, a cadeia de retransmissão. Como transações externas na produção blockchains, eles são totalmente assíncronos e não há capacidade intrínseca para eles retornarem qualquer tipo de informação de volta à sua origem. Destino: recebe dados de anteriores validators do bloco. A conta recebe postagem: entrada removida de entrada Merkle tree A conta envia postagem: entrada colocada em saída Merkle tree para destino pára-quedas saída Fonte: ações dados com o próximo bloco validators comprovante postal armazenado em saída de pára-quedas Merkle árvore referência roteada colocada no parachain de destino entrada Merkle tree ingresso Figura 3. Um esquema básico mostrando as principais partes do roteamento para postagem transações (“postagens”). Para garantir complexidade mínima de implementação, risco e mínimo camisa de força de futuro arquiteturas parachain, essas transações interchain são efetivamente indistinguível de transações padrão assinadas externamente. A transação possui um segmento de origem, proporcionando a capacidade de identificar um parachain, e um endereço que pode ser de tamanho arbitrário. Ao contrário dos sistemas atuais comuns, como Bitcoin e Ethereum, as transações interchain não vêm com qualquer tipo de “pagamento” de taxa associada; qualquer pagamento desse tipo deve ser gerenciado por meio de lógica de negociação nos parachains de origem e destino. Um sistema como o proposto para O lançamento do Serenity de Ethereum [7] seria um meio simples de gerenciar esse pagamento de recursos entre cadeias, embora presumimos que outros poderão vir à tona no devido tempo. As transações entre cadeias são resolvidas usando um simples mecanismo de enfileiramento baseado em Merkle tree para garantir fidelidade. É tarefa dos mantenedores da cadeia de retransmissão mover transações na fila de saída de um parachain na fila de entrada do parachain de destino. O as transações passadas são referenciadas na cadeia de retransmissão, mas não são relevantesas próprias transações em cadeia. Para evitar que um parachain envie spam para outro parachain com transações, para que uma transação seja enviada, é necessário que a fila de entrada do destino não seja muito grande em a hora do final do bloco anterior. Se a entrada a fila for muito grande após o processamento do bloco, então ela será considerada “saturada” e nenhuma transação poderá ser roteada para dentro dos blocos subsequentes até ser reduzido abaixo do limite. Essas filas são administradas na cadeia de retransmissão permitindo que parachains determinem a saturação um do outro estado; desta forma, uma tentativa fracassada de postar uma transação para um destino paralisado pode ser relatado de forma síncrona. (Embora não exista nenhum caminho de retorno, se uma transação secundária falhar por esse motivo, ela não poderá ser relatada de volta para o chamador original e alguns outros meios de recuperação teria que acontecer.) 5.5. Polkadot e Ethereum. Devido à integridade de Turing de Ethereum, esperamos que haja ampla oportunidade para Polkadot e Ethereum serem interoperáveis com entre si, pelo menos dentro de alguns limites de segurança facilmente dedutíveis. Em suma, prevemos que as transações de Polkadot pode ser assinado por validators e depois inserido 5Tal tarefa pode ser compartilhada entre validators ou pode se tornar a tarefa designada de um conjunto de validators fortemente ligados, conhecido como fiadores de disponibilidade.
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 8 Ethereum onde podem ser interpretados e promulgados por um contrato de encaminhamento de transação. Na outra direção, prevemos o uso de logs (eventos) especialmente formatados provenientes de um “contrato break-out” para permitir uma verificação rápida de que uma determinada mensagem deve ser encaminhada. 5.5.1. Polkadot a Ethereum. Através da escolha de um BFT mecanismo de consenso com validators formado a partir de um conjunto de partes interessadas determinado através de uma votação de aprovação mecanismo, somos capazes de obter um consenso seguro com uma mudando com pouca frequência e número modesto de validators. Em um sistema com um total de 144 validators, um tempo de bloqueio de 4 segundos e uma finalidade de 900 blocos (permitindo ataques maliciosos). comportamento como votos duplos a serem relatados, punidos e reparado), a validade de um bloqueio pode ser razoavelmente considerado comprovado através de apenas 97 assinaturas (dois terços de 144 mais uma) e um período de verificação subsequente de 60 minutos onde nenhuma contestação é depositada. Ethereum é capaz de hospedar um “contrato de invasão” que pode manter os 144 signatários e ser controlado por eles. Como a recuperação da assinatura digital da curva elíptica (ECDSA) leva apenas 3.000 gás sob o EVM, e desde provavelmente só quereríamos que a validação acontecesse em um supermaioria de validators (em vez de unanimidade total), o custo base de Ethereum confirmando que uma instrução foi devidamente validado como proveniente da rede Polkadot não seria superior a 300.000 gás - apenas 6% do o limite total de gás do bloco em 5,5M. Aumentar o número de validators (conforme seria necessário para lidar com dezenas de redes) inevitavelmente aumenta esse custo, no entanto espera-se que a largura de banda de transação de Ethereum cresça ao longo do tempo à medida que a tecnologia amadurece e a infraestrutura melhora. Juntamente com o facto de não todos os validators precisam estar envolvidos (por exemplo, apenas os mais altos validators apostados podem ser chamados para tal tarefa) o os limites deste mecanismo se estendem razoavelmente bem. Supondo uma rotação diária de tais validators (que é bastante conservador (semanalmente ou mesmo mensalmente pode ser aceitável), então o custo para a rede de manutenção esta ponte de encaminhamento Ethereum seria em torno de 540.000 gás por dia ou, aos preços atuais do gás, US$ 45 por ano. Uma transação básica encaminhada sozinha pela ponte custaria cerca de US$ 0,11; o cálculo adicional do contrato custaria mais, é claro. Ao armazenar em buffer e agrupar transações juntos, os custos de autorização de arrombamento podem ser facilmente compartilhada, reduzindo substancialmente o custo por transação; se 20 transações foram necessárias antes do encaminhamento, então o custo do encaminhamento de uma transação básica cairia para cerca de US$ 0,01. Uma alternativa interessante e mais barata a este modelo de contrato com múltiplas assinaturas seria a utilização de assinaturas limiares, a fim de alcançar a semântica de propriedade multilateral. Embora os esquemas de assinatura de limite para ECDSA são computacionalmente caros, aqueles para outros esquemas como as assinaturas de Schnorr são muito razoáveis. Ethereum planeja introduzir primitivos que tornariam tal esquemas baratos para usar no próximo hardfork Metropolis. Se tal meio pudesse ser utilizado, os custos do gás para encaminhar uma transação Polkadot para o Ethereum rede seria drasticamente reduzida a quase zero despesas gerais além dos custos básicos para validação do assinatura e execução da transação subjacente. Neste modelo, os nós validator de Polkadot teriam fazer pouco além de assinar mensagens. Para que as transações sejam realmente roteadas para a rede Ethereum, nós suponha que os próprios validators também residiriam em a rede Ethereum ou, mais provavelmente, que pequenas recompensas ser oferecido ao primeiro ator que encaminha a mensagem para a rede (a recompensa poderia ser paga trivialmente ao originador da transação). 5.5.2. Ethereum a Polkadot. Fazer com que as transações sejam encaminhado de Ethereum para Polkadot usa a noção simples de logs. Quando um contrato Ethereum deseja despachar uma transação para um parachain específico de Polkadot, basta simplesmente celebrar um “contrato de rescisão” especial. O contrato de ruptura exigiria qualquer pagamento que pudesse ser exigido e emitir uma instrução de registro para que sua existência possa ser comprovada através de uma prova Merkle e uma afirmação de que o cabeçalho do bloco correspondente é válido e canônico. Das duas últimas condições, a validade é talvez a mais simples de provar. Em princípio, o único requisito épara cada nó Polkadot que precisa da prova (ou seja, nós validator designados) para executar uma instância totalmente sincronizada de um nó Ethereum padrão. Infelizmente, esta é em si uma dependência bastante pesada. Um mais método leve seria usar uma prova simples de que o cabeçalho foi avaliado corretamente fornecendo apenas o parte da tentativa de estado de Ethereum necessária para executar corretamente as transações do bloco e verificar se os logs (contidos no recibo do bloco) são válidos. Tal “tipo SPV”6 as provas podem ainda exigir uma quantidade substancial de informações; convenientemente, eles normalmente não seriam necessários em todos: um sistema de títulos dentro de Polkadot permitiria títulos terceiros enviem cabeçalhos sob o risco de perder seus título caso algum terceiro (como um “pescador”, ver 6.2.3) forneça uma prova de que o cabeçalho é inválido (especificamente que a raiz estatal ou as raízes receptoras eram impostoras). Em uma rede PoW não finalizada como Ethereum, o a canonicidade é impossível de ser provada de forma conclusiva. Para resolver isso, os aplicativos que tentam contar com qualquer tipo de causa-efeito dependente da cadeia, espere por uma série de “confirmações” ou até que a transação dependente esteja em algum momento. profundidade específica dentro da cadeia. Em Ethereum, este a profundidade varia de 1 bloco para as transações menos valiosas sem problemas de rede conhecidos até 1.200 blocos como era o caso durante o lançamento inicial do Frontier para trocas. Na rede estável “Homestead”, este número fica em 120 blocos para a maioria das exchanges, e provavelmente levaríamos um parâmetro semelhante. Então nós pode imagine nosso Lado Polkadot Ethereuminterface tenha algumas funções simples: poder aceitar um novo cabeçalho da rede Ethereum e validar o PoW, para poder aceitar alguma prova de que um log específico foi emitido pelo contrato de breakout do lado Ethereum para um cabeçalho de profundidade suficiente (e encaminhamento a mensagem correspondente dentro de Polkadot) e finalmente ser capaz de aceitar provas de que um documento anteriormente aceito, mas o cabeçalho ainda não promulgado contém uma raiz de recibo inválida. Para realmente obter os próprios dados do cabeçalho Ethereum (e quaisquer provas de SPV ou refutações de validade/canonicidade) em a rede Polkadot, um incentivo ao encaminhamento 6SPV refere-se à Verificação Simplificada de Pagamento em Bitcoin e descreve um método para os clientes verificarem transações, mantendo apenas uma cópia de todos os cabeçalhos de blocos da cadeia PoW mais longa.POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 9 são necessários dados. Isso pode ser tão simples quanto um pagamento (financiado por taxas cobradas do lado Ethereum) pago para qualquer pessoa capaz de encaminhar um bloco útil cujo cabeçalho seja válido. Os validadores seriam chamados a reter informações relativas aos últimos milhares de blocos, a fim de ser capaz de gerenciar forks, seja através de algum meio protocolar intrínseco ou através de um contrato mantido no cadeia de relé. 5.6. Polkadot e Bitcoin. Bitcoin interoperação apresenta um desafio interessante para Polkadot: um chamado “ligação bidirecional” seria uma peça útil de infraestrutura ter do lado de ambas as redes. No entanto, devido as limitações de Bitcoin, fornecer tal pino com segurança é um empreendimento nada trivial. Entregando uma transação de Bitcoin a Polkadot pode, em princípio, ser feito com um processo semelhante ao de Ethereum; um “endereço de ruptura” controlado de alguma forma pelos Polkadot validators poderia receber tokens transferidos (e dados enviados junto com eles). As provas de SPV podem ser fornecidas por oracles incentivados e, juntamente com um período de confirmação, uma recompensa dada por identificação de blocos não canônicos que implicam a transação foi “gasto em dobro”. Quaisquer tokens de propriedade do O “endereço de fuga” seria então, em princípio, controlado por esses mesmos validators para dispersão posterior. O problema, entretanto, é como os depósitos podem ser controlados com segurança a partir de um conjunto rotativo validator. Ao contrário Ethereum que é capaz de tomar decisões arbitrárias com base mediante combinações de assinaturas, Bitcoin é substancialmente mais limitado, com a maioria dos clientes aceitando apenas transações com múltiplas assinaturas com no máximo 3 partes. Estender este número para 36, ou mesmo para milhares, como seria desejável, é impossível no âmbito do protocolo actual. Uma opção é alterar o protocolo Bitcoin para ativar tal funcionalidade, porém os chamados “hard forks” no Bitcoin mundo são difíceis de organizar a julgar pelas tentativas recentes. Uma possibilidade é o uso de assinaturas de limite, esquemas criptográficos para permitir um público unicamente identificável chave para ser efetivamente controlada por múltiplas “partes” secretas, alguns ou todos eles devem ser utilizados para criar uma assinatura válida. Infelizmente, assinaturas de limite compatíveis com ECDSA de Bitcoin são computacionalmente caros para criar e de complexidade polinomial. Outros esquemas como as assinaturas Schnorr oferecem custos muito mais baixos, no entanto, o cronograma em que eles podem ser introduzidos no Bitcoin protocolo é incerto. Dado que a segurança final dos depósitos cabe uma série de validators ligados, uma outra opção é reduzir os porta-chaves com múltiplas assinaturas a apenas um número fortemente subconjunto vinculado do total de validators tal que limite assinaturas tornam-se viáveis (ou, na pior das hipóteses, o nativo de Bitcoin multi-assinatura é possível). Isto naturalmente reduz o valor total de títulos que poderiam ser deduzidos em indenizações caso os validators se comportassem ilegalmente, no entanto, este é uma degradação graciosa, simplesmente estabelecendo um limite superior de a quantidade de fundos que pode circular com segurança entre o duas redes (ou mesmo, na% de perdas caso um ataque dos validators bem-sucedidos). Como tal, acreditamos que não é irrealista colocar um “parachain virtual” de interoperabilidade Bitcoin razoavelmente seguro entre as duas redes, embora ainda assim seja um esforço substancial com um cronograma incerto e muito possivelmente exigindo a cooperação das partes interessadas dentro desse rede.
Tổng quan về thiết kế
Phần này nhằm mục đích cung cấp một cái nhìn tổng quan ngắn gọn về toàn bộ hệ thống. Sự thăm dò kỹ lưỡng hơn về hệ thống được đưa ra trong phần tiếp theo nó. 5.1. Sự đồng thuận. Trên chuỗi chuyển tiếp, Polkadot đạt được sự đồng thuận ở mức độ thấp đối với một tập hợp các thông tin có giá trị được các bên đồng ý chặn thông qua thuật toán chịu lỗi Byzantine không đồng bộ hiện đại (BFT). Thuật toán sẽ được lấy cảm hứng bởi Tendermint đơn giản [11] và hơn thế nữa có liên quan đến HoneyBadgerBFT [14]. Cái sau cung cấp một sự đồng thuận hiệu quả và có khả năng chấp nhận sai sót đối với một hành động tùy tiện cơ sở hạ tầng mạng bị lỗi, được cung cấp một tập hợp các cơ quan có thẩm quyền hầu như lành tính hoặc validator. Đối với mạng kiểu bằng chứng xác thực (PoA), riêng điều này sẽ là đủ, tuy nhiên Polkadot được cho là cũng có thể triển khai như một mạng hoàn toàn mở và công khai tình huống mà không có bất kỳ tổ chức cụ thể hoặc đáng tin cậy nào thẩm quyền cần thiết để duy trì nó. Như vậy chúng ta cần một phương tiện xác định một tập hợp validator và khuyến khích họ phải thành thật. Đối với điều này, chúng tôi sử dụng lựa chọn dựa trên PoS tiêu chí. 5.2. Chứng minh tiền đặt cược. Chúng tôi giả sử rằng mạng sẽ có một số phương tiện để đo lường “cổ phần” là bao nhiêu bất kỳ tài khoản cụ thể nào cũng có. Để dễ so sánh với các hệ thống có sẵn, chúng ta sẽ gọi đơn vị đo là “tokens”. Thật không may, thuật ngữ này ít lý tưởng hơn cho một nhiều lý do, nhất là việc chỉ đơn giản là một đại lượng vô hướng giá trị liên quan đến một tài khoản, không có khái niệm về tính cá nhân. Chúng tôi cho rằng validator sẽ được bầu không thường xuyên (nhiều nhất là một lần mỗi ngày nhưng có lẽ hiếm khi một lần mỗi quý), thông qua chương trình Bằng chứng cổ phần được đề cử (NPoS). Việc khuyến khích có thể xảy ra thông qua việc phân bổ theo tỷ lệPOLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 6 Rơle chuỗi Nhóm xác thực (mỗi màu được tô màu bởi nó parachain được chỉ định) Giao dịch (gửi bởi tác nhân bên ngoài) Parachain cầu parachain ảo (ví dụ: Ethereum) Parachain Parachain hàng đợi và I/O Giao dịch lan truyền Chặn việc nộp hồ sơ ứng viên đơn hàng thứ 2 Chuỗi rơle cộng đồng parachain Tài khoản Giao dịch trong nước Giao dịch đi Giao dịch liên chuỗi (được quản lý bởi validators) đối chiếu Khối lan truyền ngư dân Hình 2. Sơ đồ tóm tắt của hệ thống Polkadot. Điều này cho thấy các bộ đối chiếu đang thu thập và truyền bá các giao dịch của người dùng, cũng như truyền bá các ứng cử viên khối cho ngư dân và validators. Nó cũng cho thấy cách một tài khoản có thể đăng một giao dịch được thực hiện từ parachain của nó, thông qua chuỗi chuyển tiếp và vào một parachain khác, nơi nó có thể được hiểu là một giao dịch đối với một tài khoản ở đó. số tiền đến từ việc mở rộng cơ sở token (tối đa 100% mỗi năm, mặc dù nhiều khả năng là khoảng 10%) cùng với bất kỳ khoản phí giao dịch nào được thu thập. Trong khi việc mở rộng cơ sở tiền tệ thường dẫn đến lạm phát, vì tất cả chủ sở hữu token sẽ có cơ hội tham gia công bằng, không chủ sở hữu token nào sẽ phải chịu sự giảm giá trị tài sản của mình nắm giữ theo thời gian miễn là họ vui vẻ chấp nhận vai trò trong cơ chế đồng thuận Một tỷ lệ cụ thể trong số token sẽ được nhắm mục tiêu cho quy trình staking; cái việc mở rộng cơ sở token hiệu quả sẽ được điều chỉnh thông qua một cơ chế dựa trên thị trường để đạt được mục tiêu này. Những người xác nhận được liên kết chặt chẽ bởi cổ phần của họ; thoát ra Trái phiếu của validator vẫn được giữ nguyên lâu sau khi nhiệm vụ của validator chấm dứt (có thể là khoảng 3 tháng). Dài thế này thời gian thanh lý trái phiếu cho phép hành vi sai trái trong tương lai có thể xảy ra bị trừng phạt cho đến khi kiểm tra dây chuyền định kỳ. Hành vi sai trái dẫn đến hình phạt, chẳng hạn như giảm thưởng hoặc, trong trường hợp cố ý làm tổn hại đến tính toàn vẹn của mạng, validator mất một phần hoặc toàn bộ cổ phần cho validator khác, người cung cấp thông tin hoặc các bên liên quan nói chung (thông qua việc đốt cháy). Ví dụ: validator người cố gắng phê chuẩn cả hai nhánh của một ngã ba (đôi khi được gọi là cuộc tấn công “tầm ngắn”) có thể được xác định và bị trừng phạt theo cách thứ hai. Các cuộc tấn công tầm xa “không có gì đáng đe dọa”4 bị phá vỡ thông qua một chốt “điểm kiểm tra” đơn giản nhằm ngăn chặn việc tổ chức lại chuỗi nguy hiểm của nhiều hơn một độ sâu chuỗi cụ thể. Để đảm bảo các máy khách mới được đồng bộ hóa không thể bị lừa vào chuỗi sai, thường xuyên “hard fork” sẽ xảy ra (nhiều nhất là trong cùng thời kỳ của validators' thanh lý trái phiếu) mã hóa cứng khối điểm kiểm tra gần đây hash vào khách hàng. Điều này hoạt động tốt với một biện pháp giảm dấu chân hơn nữa là “độ dài chuỗi hữu hạn” hoặc thiết lập lại định kỳ khối Genesis. 5.3. Parachains và Collators. Mỗi parachain được các điều kiện bảo mật tương tự như chuỗi chuyển tiếp: cái Các tiêu đề của parachains được niêm phong trong khối chuỗi chuyển tiếp đảm bảo không tổ chức lại hoặc "chi tiêu gấp đôi" sau khi được xác nhận. Đây là sự đảm bảo an ninh tương tự như sự đảm bảo an ninh được cung cấp bởi chuỗi bên và hoạt động khai thác hợp nhất của Bitcoin. Tuy nhiên, Polkadot cũng cung cấp sự đảm bảo mạnh mẽ rằng việc chuyển đổi trạng thái của parachain là hợp lệ. Cái này xảy ra thông qua tập hợp validator được phân chia ngẫu nhiên bằng mật mã thành các tập hợp con; một tập hợp con cho mỗi parachain, các tập hợp con có khả năng khác nhau trên mỗi khối. Cái này thiết lập thường ngụ ý rằng thời gian chặn của parachains sẽ ít nhất phải dài bằng chuỗi chuyển tiếp. cụ thể phương tiện xác định phân vùng nằm ngoài phạm vi 4Cuộc tấn công như vậy là lúc đối thủ tạo ra một chuỗi lịch sử hoàn toàn mới từ khối khởi đầu trở đi. Thông qua việc kiểm soát một phần cổ phần tương đối không đáng kể khi bù đắp, họ có thể tăng dần phần cổ phần của mình so với tất cả những người khác các bên liên quan vì họ là những người tham gia tích cực duy nhất trong lịch sử thay thế của họ. Vì không có giới hạn vật lý nội tại nào tồn tại trong quá trình tạo ra của các khối (không giống như PoW nơi phải tiêu tốn năng lượng tính toán khá thực), họ có thể tạo ra một chuỗi dài hơn chuỗi thực trong một khoảng thời gian tương đối ngắn và có khả năng làm cho nó dài nhất và tốt nhất, tiếp quản trạng thái chuẩn của mạng.POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 7 của tài liệu này nhưng có thể sẽ dựa trên khung tiết lộ cam kết tương tự như RanDAO [19] hoặc sử dụng dữ liệu kết hợp từ các khối trước của mỗi parachain theo mật mã hash được bảo mật. Các tập hợp con validator như vậy được yêu cầu để cung cấp ứng cử viên khối parachain được đảm bảo hợp lệ (trên nỗi đau của sự tịch thu trái phiếu). Hiệu lực xoay quanh hai điểm quan trọng; trước hết là nó có giá trị về bản chất—rằng tất cả các chuyển đổi trạng thái đều được thực hiện một cách trung thực và tất cả dữ liệu bên ngoài được tham chiếu (tức là các giao dịch) có giá trị để đưa vào. Thứ hai, bất kỳ dữ liệu nào nằm ngoài phạm vi của nó ứng viên, chẳng hạn như các giao dịch bên ngoài, có tính sẵn sàng cao để người tham gia có thể tải xuống và thực thi khối theo cách thủ công.5 Người xác thực chỉ có thể cung cấp khối “null” không chứa dữ liệu “giao dịch” bên ngoài, nhưng có thể gặp rủi ro bị giảm phần thưởng nếu họ làm như vậy. Họ làm việc bên cạnh một giao thức tin đồn parachain với các đối tác—các cá nhân người đối chiếu các giao dịch thành các khối và cung cấp bằng chứng không tương tác, không có kiến thức rằng khối đó cấu thành một phần tử con hợp lệ của phần tử mẹ của nó (và thực hiện bất kỳ giao dịch nào phí cho rắc rối của họ). Các giao thức parachain phải tự xác định phương tiện ngăn chặn thư rác: không có khái niệm cơ bản nào về “đo lường tài nguyên máy tính” hoặc “phí giao dịch” được áp đặt bởi chuỗi chuyển tiếp. Giao thức chuỗi chuyển tiếp cũng không có sự thực thi trực tiếp nào về vấn đề này (mặc dù nó khó có khả năng các bên liên quan sẽ chọn áp dụng một parachain không cung cấp một cơ chế phù hợp). Đây là một sự đồng ý rõ ràng về khả năng của các chuỗi không giống như Ethereum, ví dụ: một chuỗi giống Bitcoin có mô hình tính phí đơn giản hơn nhiều hoặc một số mô hình ngăn chặn thư rác khác chưa được đề xuất. Bản thân chuỗi chuyển tiếp của Polkadot có thể sẽ tồn tại dưới dạng Ethereum giống như tài khoản và chuỗi trạng thái, có thể là phái sinh EVM. Vì các nút chuỗi chuyển tiếp sẽ được yêu cầu thực hiện các xử lý đáng kể khác, thông lượng giao dịch sẽ được giảm thiểu một phần thông qua phí giao dịch lớn và nếu mô hình nghiên cứu của chúng tôi yêu cầu, giới hạn kích thước khối. 5.4. Truyền thông liên chuỗi. Thành phần quan trọng cuối cùng của Polkadot là giao tiếp giữa các chuỗi. Kể từ khi parachains có thể có một số loại kênh thông tin giữa chúng, chúng tôi cho phép mình xem xét Polkadot một đa chuỗi có thể mở rộng. Trong trường hợp Polkadot, việc giao tiếp càng đơn giản càng tốt: các giao dịch được thực hiện trong một parachain (theo logic của chuỗi đó) có thể ảnh hưởng đến việc gửi một giao dịch vào parachain thứ hai hoặc có thể là chuỗi chuyển tiếp. Giống như các giao dịch bên ngoài trên blockchains sản xuất, chúng hoàn toàn không đồng bộ và không có khả năng nội tại để họ trả lại bất kỳ loại thông tin trở lại nguồn gốc của nó. Điểm đến: được dữ liệu từ trước validator của khối. Tài khoản nhận được bài viết: mục nhập bị xóa khỏi xâm nhập Merkle tree Tài khoản gửi bài: mục được đặt trong đi ra Merkle tree cho điểm đến parachain đi ra Nguồn: chia sẻ dữ liệu với khối tiếp theo validators bằng chứng của bài viết được lưu trữ trong lối ra parachain Merkle cây tham chiếu định tuyến được đặt trong parachain đích xâm nhập Merkle tree xâm nhập Hình 3. Sơ đồ cơ bản thể hiện các phần chính của định tuyến cho bài đăng giao dịch (“bài đăng”). Để đảm bảo độ phức tạp thực hiện tối thiểu, tối thiểu rủi ro và tối thiểu áo khoác thẳng của tương lai kiến trúc parachain, các giao dịch liên chuỗi này được thực sự không thể phân biệt được với các giao dịch được ký kết bên ngoài tiêu chuẩn. Giao dịch có phân đoạn gốc, cung cấp khả năng xác định parachain và một địa chỉ có thể có kích thước tùy ý. Không giống như các hệ thống phổ biến hiện nay như Bitcoin và Ethereum, các giao dịch liên chuỗi không đi kèm với bất kỳ hình thức “thanh toán” phí liên quan nào; mọi khoản thanh toán như vậy phải được quản lý thông qua logic đàm phán trên parachain nguồn và đích. Một hệ thống như vậy được đề xuất cho Bản phát hành Serenity của Ethereum [7] sẽ là một phương tiện đơn giản Tuy nhiên, việc quản lý việc thanh toán tài nguyên xuyên chuỗi như vậy chúng tôi cho rằng những người khác có thể chiếm ưu thế vào thời điểm thích hợp. Các giao dịch liên chuỗi được giải quyết bằng cách sử dụng một cách đơn giản cơ chế xếp hàng dựa trên Merkle tree để đảm bảo sự chính xác. Nhiệm vụ của người bảo trì chuỗi chuyển tiếp là di chuyển các giao dịch trên hàng đợi đầu ra của một parachain vào hàng đợi đầu vào của parachain đích. các các giao dịch đã được thông qua sẽ được tham chiếu trên chuỗi chuyển tiếp, tuy nhiên không liên quanbản thân các giao dịch chuỗi ay. Để ngăn chặn một parachain gửi thư rác cho một parachain khác bằng giao dịch, để một giao dịch được gửi đi, cần phải có hàng đợi đầu vào của đích không quá lớn thời điểm kết thúc khối trước đó. Nếu đầu vào hàng đợi quá lớn sau khi xử lý khối thì nó được coi là “bão hòa” và không có giao dịch nào có thể được chuyển đến nó trong các khối tiếp theo cho đến khi giảm trở lại dưới mức giới hạn. Những hàng đợi này được quản lý trên chuỗi chuyển tiếp cho phép các parachain xác định độ bão hòa của nhau tình trạng; theo cách này, một nỗ lực thất bại trong việc đăng một giao dịch đến một đích bị đình trệ có thể được báo cáo đồng bộ. (Mặc dù không có đường dẫn trở lại tồn tại nên nếu giao dịch thứ cấp không thành công vì lý do đó thì nó không thể được báo cáo lại tới người gọi ban đầu và một số phương tiện phục hồi khác sẽ phải diễn ra.) 5.5. Polkadot và Ethereum. Do tính hoàn thiện Turing của Ethereum, chúng tôi hy vọng có nhiều cơ hội để Polkadot và Ethereum có thể tương tác với nhau, ít nhất là trong một số giới hạn an ninh dễ dàng được khấu trừ. Nói tóm lại, chúng tôi hình dung rằng các giao dịch từ Polkadot có thể được ký bởi validators và sau đó được đưa vào 5Nhiệm vụ như vậy có thể được chia sẻ giữa các validator hoặc có thể trở thành nhiệm vụ được chỉ định của một tập hợp các validator được liên kết chặt chẽ được gọi là người bảo đảm sẵn có.
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 8 Ethereum nơi chúng có thể được diễn giải và ban hành bởi một hợp đồng chuyển tiếp giao dịch. Ở hướng khác, chúng tôi thấy trước việc sử dụng nhật ký (sự kiện) được định dạng đặc biệt đến từ một “hợp đồng đột phá” để cho phép xác minh nhanh chóng rằng một tin nhắn cụ thể sẽ được chuyển tiếp. 5.5.1. Polkadot đến Ethereum. Thông qua việc lựa chọn một BFT cơ chế đồng thuận với validator được hình thành từ một tập hợp các bên liên quan được xác định thông qua bỏ phiếu phê duyệt cơ chế, chúng ta có thể đạt được sự đồng thuận an toàn với một thay đổi không thường xuyên và số lượng khiêm tốn validators. Trong một hệ thống có tổng cộng 144 validators, thời gian khối là 4 giây và độ chính xác 900 khối (cho phép mã độc hành vi như bỏ phiếu hai lần sẽ bị báo cáo, bị trừng phạt và được sửa chữa), tính hợp lệ của một khối có thể được xác định một cách hợp lý được coi là đã được chứng minh thông qua ít nhất 97 chữ ký (hai phần ba của 144 cộng một) và thời gian xác minh kéo dài 60 phút sau đó mà không có khiếu nại nào được đưa ra. Ethereum có thể lưu trữ một “hợp đồng đột nhập” có thể duy trì 144 bên ký kết và được kiểm soát bởi họ. Vì việc khôi phục chữ ký số theo đường cong elip (ECDSA) chỉ mất 3.000 gas trong EVM và kể từ đó chúng tôi có thể chỉ muốn việc xác thực diễn ra trên một siêu đa số validators (thay vì hoàn toàn nhất trí), chi phí cơ bản của Ethereum xác nhận rằng một lệnh đã được xác thực hợp lệ vì đến từ mạng Polkadot sẽ tiêu tốn không quá 300.000 gas—chỉ 6% trong số đó tổng giới hạn khí khối ở mức 5,5M. Tăng số lượng validators (cần thiết để xử lý hàng chục chuỗi) chắc chắn sẽ làm tăng chi phí này, tuy nhiên Người ta mong đợi băng thông giao dịch của Ethereum sẽ tăng theo thời gian khi công nghệ hoàn thiện và cơ sở hạ tầng được cải thiện. Cùng với thực tế là không tất cả validator đều cần được tham gia (ví dụ: chỉ có mức cao nhất validator đã đặt cược có thể được yêu cầu thực hiện một nhiệm vụ như vậy) giới hạn của cơ chế này mở rộng khá tốt. Giả sử luân chuyển hàng ngày validators như vậy (tức là khá thận trọng—hàng tuần hoặc thậm chí hàng tháng có thể được chấp nhận), thì chi phí cho mạng lưới duy trì cầu chuyển tiếp Ethereum này sẽ có giá khoảng 540.000 gas mỗi ngày hoặc, theo giá gas hiện tại, là 45 USD mỗi năm. Một giao dịch cơ bản được chuyển tiếp qua cầu sẽ có chi phí khoảng 0,11 USD; việc tính toán hợp đồng bổ sung sẽ tốn kém tất nhiên là nhiều hơn nữa. Bằng cách đệm và đóng gói các giao dịch cùng với nhau, chi phí ủy quyền đột nhập có thể dễ dàng được tính toán được chia sẻ, giảm đáng kể chi phí cho mỗi giao dịch; nếu cần 20 giao dịch trước khi chuyển tiếp thì chi phí để chuyển tiếp một giao dịch cơ bản sẽ giảm xuống khoảng 0,01 USD. Một giải pháp thay thế thú vị và rẻ hơn cho mô hình hợp đồng đa chữ ký này là sử dụng chữ ký ngưỡng để đạt được ngữ nghĩa quyền sở hữu đa phương. Trong khi các sơ đồ chữ ký ngưỡng cho ECDSA đắt tiền về mặt tính toán, đối với các chương trình khác chẳng hạn như chữ ký Schnorr là rất hợp lý. Ethereum có kế hoạch giới thiệu những thứ nguyên thủy sẽ tạo ra những thứ như vậy các chương trình rẻ tiền để sử dụng trong đợt hardfork Metropolis sắp tới. Nếu một phương tiện như vậy có thể được sử dụng, chi phí khí đốt để chuyển tiếp giao dịch Polkadot vào Ethereum mạng sẽ giảm đáng kể xuống gần bằng không chi phí chung vượt quá chi phí cơ bản để xác nhận ký và thực hiện giao dịch cơ bản. Trong mô hình này, các nút validator của Polkadot sẽ có không làm gì khác ngoài việc ký tin nhắn. Để các giao dịch thực sự được định tuyến trên mạng Ethereum, chúng tôi giả sử chính validator cũng sẽ cư trú trên mạng Ethereum hoặc nhiều khả năng là những khoản tiền thưởng nhỏ đó được cung cấp cho tác nhân đầu tiên chuyển tiếp tin nhắn trên vào mạng (tiền thưởng có thể được trả một cách tầm thường cho người khởi tạo giao dịch). 5.5.2. Ethereum tới Polkadot. Bắt các giao dịch được thực hiện được chuyển tiếp từ Ethereum đến Polkadot sử dụng khái niệm nhật ký đơn giản. Khi hợp đồng Ethereum muốn gửi giao dịch đến một parachain cụ thể của Polkadot, nó chỉ cần gọi đến một “hợp đồng đột phá” đặc biệt. Hợp đồng đột phá sẽ nhận bất kỳ khoản thanh toán nào có thể được yêu cầu và đưa ra hướng dẫn ghi nhật ký để sự tồn tại của nó có thể được chứng minh thông qua bằng chứng Merkle và xác nhận rằng tiêu đề của khối tương ứng là hợp lệ và kinh điển. Trong hai điều kiện sau, tính hợp lệ có lẽ là điều kiện dễ chứng minh nhất. Về nguyên tắc, yêu cầu duy nhất làcho mỗi nút Polkadot cần bằng chứng (tức là các nút validator được chỉ định) để chạy một phiên bản được đồng bộ hóa hoàn toàn của nút Ethereum tiêu chuẩn. Thật không may, bản thân điều này lại là một sự phụ thuộc khá nặng nề. Thêm nữa phương pháp nhẹ nhàng sẽ là sử dụng một bằng chứng đơn giản rằng tiêu đề được đánh giá chính xác thông qua việc chỉ cung cấp cần có một phần trạng thái của Ethereum để thực thi đúng cách các giao dịch trong khối và kiểm tra xem nhật ký (có trong biên lai khối) có hợp lệ hay không. Những thứ “giống SPV”6 bằng chứng có thể vẫn yêu cầu một lượng thông tin đáng kể; một cách thuận tiện, chúng thường không cần thiết ở tất cả: hệ thống liên kết bên trong Polkadot sẽ cho phép liên kết bên thứ ba gửi tiêu đề có nguy cơ bị mất mối ràng buộc nếu một số bên thứ ba khác (chẳng hạn như “ngư dân”, xem 6.2.3) cung cấp bằng chứng rằng tiêu đề không hợp lệ (cụ thể là gốc nhà nước hoặc gốc nhận là kẻ mạo danh). Trên mạng PoW chưa hoàn thiện như Ethereum, tính kinh điển không thể được chứng minh một cách thuyết phục. Để giải quyết vấn đề này, các ứng dụng cố gắng dựa vào bất kỳ loại nguyên nhân-kết quả phụ thuộc vào chuỗi, hãy đợi một số “xác nhận” hoặc cho đến khi giao dịch phụ thuộc ở một mức nào đó độ sâu cụ thể trong chuỗi. Vào Ethereum, cái này độ sâu thay đổi từ 1 khối đối với các giao dịch ít giá trị nhất mà không có sự cố mạng nào được xác định đến 1200 khối như trước đây trường hợp này trong lần phát hành Frontier đầu tiên cho các sàn giao dịch. Trên mạng “Homestead” ổn định, hình này nằm ở 120 khối cho hầu hết các sàn giao dịch và chúng tôi có thể sẽ lấy một tham số tương tự. Vì vậy chúng tôi có thể tưởng tượng của chúng tôi Polkadot bên Ethereumgiao diện có một số chức năng đơn giản: có thể chấp nhận tiêu đề mới từ mạng Ethereum và xác thực PoW, để có thể chấp nhận một số bằng chứng cho thấy nhật ký cụ thể được phát ra bởi hợp đồng đột phá bên Ethereum cho tiêu đề có đủ độ sâu (và chuyển tiếp tin nhắn tương ứng trong Polkadot) và cuối cùng để có thể chấp nhận bằng chứng rằng một bằng chứng đã được chấp nhận trước đó nhưng tiêu đề chưa được ban hành chứa gốc biên nhận không hợp lệ. Để thực sự có được dữ liệu tiêu đề Ethereum (và bất kỳ bằng chứng SPV hoặc sự bác bỏ tính hợp lệ/kinh điển nào) vào mạng Polkadot, một sự khuyến khích chuyển tiếp 6SPV đề cập đến Xác minh thanh toán đơn giản hóa trong Bitcoin và mô tả phương pháp để khách hàng xác minh giao dịch trong khi chỉ giữ lại một bản sao của tất cả các tiêu đề khối của chuỗi PoW dài nhất.POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 9 dữ liệu là cần thiết. Điều này có thể đơn giản như một khoản thanh toán (được tài trợ từ phí thu được từ phía Ethereum) đã thanh toán cho bất kỳ ai có thể chuyển tiếp một khối hữu ích có tiêu đề là hợp lệ. Người xác thực sẽ được yêu cầu lưu giữ thông tin liên quan đến vài nghìn khối cuối cùng để có thể quản lý các nhánh, thông qua một số phương tiện giao thức nội tại hoặc thông qua hợp đồng được duy trì trên chuỗi rơle. 5.6. Polkadot và Bitcoin. Bitcoin tương tác đưa ra một thử thách thú vị dành cho Polkadot: cái gọi là “chốt hai chiều” sẽ là một phần cơ sở hạ tầng hữu ích có ở phía của cả hai mạng. Tuy nhiên, do những hạn chế của Bitcoin, việc cung cấp chốt như vậy một cách an toàn là một công việc không tầm thường. Thực hiện giao dịch từ Bitcoin tới Polkadot về nguyên tắc có thể được thực hiện bằng quy trình tương tự như quy trình dành cho Ethereum; một “địa chỉ đột phá” được kiểm soát theo cách nào đó bởi Polkadot validator có thể nhận token được chuyển (và dữ liệu được gửi cùng với chúng). Bằng chứng SPV có thể được cung cấp bởi oracle được khuyến khích và, cùng với thời gian xác nhận, tiền thưởng được trao cho xác định các khối không chuẩn ngụ ý giao dịch đã được “chi tiêu gấp đôi”. Bất kỳ token nào sau đó được sở hữu trong Về nguyên tắc, “địa chỉ đột phá” sẽ được kiểm soát bởi chính validator đó để phân tán sau này. Tuy nhiên, vấn đề là làm thế nào để có thể kiểm soát khoản tiền gửi một cách an toàn từ bộ validator luân phiên. Không giống Ethereum có thể đưa ra quyết định tùy ý dựa trên dựa trên sự kết hợp của chữ ký, Bitcoin về cơ bản là hạn chế hơn, với hầu hết khách hàng chỉ chấp nhận các giao dịch đa chữ ký với tối đa 3 bên. Việc mở rộng con số này lên 36, hoặc thậm chí hàng nghìn như mong muốn cuối cùng, là không thể theo giao thức hiện tại. Một tùy chọn là thay đổi giao thức Bitcoin để kích hoạt chức năng như vậy, tuy nhiên cái gọi là “hard fork” trong Bitcoin thế giới rất khó sắp xếp việc đánh giá bằng những nỗ lực gần đây. Một khả năng là việc sử dụng chữ ký ngưỡng, các sơ đồ mật mã cho phép một công chúng có thể nhận dạng được một cách duy nhất khóa được kiểm soát hiệu quả bởi nhiều “bộ phận” bí mật, một số hoặc tất cả trong số đó phải được sử dụng để tạo chữ ký hợp lệ. Thật không may, chữ ký ngưỡng tương thích với ECDSA của Bitcoin rất tốn kém về mặt tính toán tạo và có độ phức tạp đa thức. Các phương án khác như chữ ký Schnorr mang lại chi phí thấp hơn nhiều, tuy nhiên dòng thời gian mà chúng có thể được đưa vào Bitcoin giao thức không chắc chắn. Vì sự an toàn cuối cùng của tiền gửi phụ thuộc vào một số validator được liên kết, một tùy chọn khác là giảm số lượng người nắm giữ khóa đa chữ ký xuống chỉ còn rất nhiều tập hợp con liên kết của tổng validators sao cho ngưỡng đó chữ ký trở nên khả thi (hoặc tệ nhất là chữ ký gốc của Bitcoin có thể có nhiều chữ ký). Điều này tất nhiên làm giảm tổng số tiền trái phiếu có thể được khấu trừ để bồi thường nếu validator hành xử bất hợp pháp, tuy nhiên điều này là một sự xuống cấp duyên dáng, chỉ đơn giản là thiết lập giới hạn trên của số tiền có thể chạy một cách an toàn giữa hai mạng (hoặc thực tế là trên % tổn thất nếu một cuộc tấn công từ validators thành công). Vì vậy, chúng tôi tin rằng sẽ không phi thực tế khi đặt một “parachain ảo” có khả năng tương tác an toàn hợp lý Bitcoin giữa hai mạng, mặc dù vậy vẫn là một nỗ lực đáng kể với thời gian không chắc chắn và hoàn toàn có thể đòi hỏi sự hợp tác của các bên liên quan trong đó mạng.
Protocolo em detalhes
O protocolo pode ser dividido em três partes: o mecanismo de consenso, a interface parachain e roteamento de transações entre cadeias. 6.1. Cadeia de relés Operação. O cadeia de relés vontade provavelmente será uma cadeia muito semelhante a Ethereum no sentido de que é baseado no estado com o endereço de mapeamento do estado para a conta informações, principalmente saldos e (para evitar replays) um contador de transações. Colocar contas aqui cumpre um propósito: fornecer contabilidade para a qual a identidade possui qual a quantidade de participação no sistema.7 No entanto, haverá diferenças notáveis: • Os contratos não podem ser implementados através de transações; seguindo o desejo de evitar a funcionalidade da aplicação na cadeia de relés, não será apoiar a implantação pública de contratos. • O uso de recursos computacionais (“gás”) não é contabilizado; já que as únicas funções disponíveis para uso público será corrigido, a lógica por trás da contabilidade do gás não se sustenta mais. Como tal, será aplicada uma taxa fixa em todos os casos, permitindo mais desempenho de qualquer execução dinâmica de código que pode precisar ser feita e um formato de transação mais simples. • Funcionalidade especial é suportada para contratos listados que permite execução automática e saída de mensagens de rede. Caso a cadeia de retransmissão tenha uma VM e seja baseado em EVM, teria uma série de modificações para garantir a máxima simplicidade. Provavelmente seria têm uma série de contratos integrados (semelhantes aos de endereços 1-4 em Ethereum) para permitir especificações específicas da plataforma deveres a serem gerenciados, incluindo um contrato de consenso, um validator contrato e um contrato parachain. Se não for o EVM, então um backend WebAssembly [2] (wasm) é a alternativa mais provável; neste caso o total estrutura seria semelhante, mas não haveria necessidade para os contratos integrados com Wasm sendo um alvo viável para linguagens de uso geral, em vez de imaturas e idiomas limitados para EVM. Outros desvios prováveis do atual protocolo Ethereum são bem possíveis, por exemplo, uma simplificação do formato de recebimento de transação que permite a execução paralela de transações não conflitantes dentro do mesmo bloco, conforme proposto para a série de mudanças Serenity. É possível, embora improvável, que uma situação semelhante à Serenidade cadeia “pura” seja implantada como cadeia de retransmissão, permitindo uma contrato específico para gerenciar coisas como staking token equilíbrio, em vez de fazer disso uma parte fundamental do o protocolo da cadeia. Actualmente, sentimos que é improvável que isso aconteça. oferecerá uma simplificação de protocolo suficientemente grande para ser vale a pena a complexidade adicional e a incerteza envolvidas em desenvolvê-lo. 7Como forma de representar o montante que um determinado titular é responsável pela segurança geral do sistema, estas contas de participação serão inevitavelmente codificam algum valor econômico. No entanto, deve ser entendido que, uma vez que não há intenção de que tais valores sejam utilizados em de qualquer forma, com a finalidade de troca por bens e serviços do mundo real, deve-se notar, portanto, que os tokens não devem ser comparados a moeda e, como tal, a cadeia de retransmissão mantém a sua filosofia niilista em relação às aplicações.POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 10 Há uma série de pequenas funcionalidades necessárias para administrar o mecanismo de consenso, conjunto validator, mecanismo de validação e parachains. Estes poderiam ser implementados em conjunto sob um protocolo monolítico. No entanto, por razões de modularidade, descrevemos estes como “contratos” da cadeia de retransmissão. Isso deveria ser entendido como significando que eles são objetos (no sentido de programação orientada a objetos) gerenciada pelo mecanismo de consenso da cadeia de retransmissão, mas não necessariamente isso eles são definidos como programas em opcodes do tipo EVM, nem mesmo que sejam individualmente endereçáveis através do sistema de contas. 6.2. Contrato de piquetagem. Este contrato mantém o conjunto validator. Ele gerencia: • quais contas são atualmente validators; • que estão disponíveis para se tornarem validators em breve aviso prévio; • quais contas colocaram indicação de aposta para um validator; • propriedades de cada um, incluindo volume staking, taxas de pagamento e endereços aceitáveis e identidades de curto prazo (sessão). Ele permite que uma conta registre o desejo de se tornar um validator vinculados (junto com seus requisitos), para nomear alguma identidade, e para validators vinculados pré-existentes registrar seu desejo de sair desse status. Também inclui o próprio mecanismo de validação e canonização. 6.2.1. Participação-token Liquidez. Geralmente é desejável ter o máximo possível do total de staking tokens para ser apostado nas operações de manutenção da rede desde isso vincula diretamente a segurança da rede à “capitalização de mercado” geral de staking token. Isto pode facilmente ser incentivado através da inflação da moeda e da distribuição dos rendimentos para aqueles que participam como validators. No entanto, fazer isso apresenta um problema: se o token está bloqueado no Contrato de Stake sob pena de redução, como pode uma parte substancial permanecer suficientemente líquido para permitir a descoberta de preços? Uma resposta para isso é permitir um contrato de derivativo direto, garantindo tokens fungíveis em um token apostado subjacente. Isso é difícil de organizar de maneira livre de confiança. Além disso, estes derivados tokens não podem ser tratados de forma igual pela mesma razão que diferentes obrigações governamentais da zona euro não são fungíveis: há é uma chance de o ativo subjacente falhar e se tornar inútil. Com os governos da zona euro, poderia haver uma padrão. Com validator com tokens apostados, o validator pode agir maliciosamente e ser punido. Mantendo nossos princípios, optamos pela solução mais simples: nem todos os tokens podem ser apostados. Isso significaria que alguma proporção (talvez 20%) de tokens permanecerá forçosamente líquida. Embora isto seja imperfeito do ponto de vista da segurança, é pouco provável que faça uma diferença fundamental na a segurança da rede; 80% das reparações possíveis decorrentes do confisco de títulos ainda poderiam ser feitas em comparação com o “caso perfeito” de 100% staking. A proporção entre tokens apostados e líquidos pode ser alcançada de forma bastante simples por meio de um mecanismo de leilão reverso. Essencialmente, titulares de token interessados em ser validator cada um postaria uma oferta para o contrato staking declarando a taxa de pagamento mínima que eles exigiriam para assumir parte. No início de cada sessão (as sessões seriam acontecem regularmente, talvez até uma vez por hora) o validator as vagas seriam preenchidas de acordo com cada pretenso Aposta e taxa de pagamento de validator. Um algoritmo possível pois isso seria aceitar aqueles com as ofertas mais baixas que representam uma aposta não superior à aposta total visada dividido pelo número de slots e não inferior a um limite inferior de metade desse valor. Se as vagas não puderem ser preenchidas, o limite inferior pode ser repetidamente reduzido por algum fator para ser satisfeito. 6.2.2. Nomeando. É possível nomear sem confiança uns staking tokens para um validator ativo, dando-lhes a responsabilidade dos deveres de validator. Nomeando trabalhos através de um sistema de votação de aprovação. Cada candidato a nomeador pode postar uma instrução no contrato staking expressando uma ou mais identidades validator sob cujas responsabilidade que estão preparados para confiar seu vínculo. A cada sessão, os títulos dos nominadores são dispersos para serem representado por um ou mais validators. O algoritmo de dispersão otimiza para um conjunto de validators de total equivalente títulos. Os títulos dos nominadores passam a ser de responsabilidade efetiva do validator ae ganhar interesse ou sofrer um redução da punição em conformidade. 6.2.3. Confisco/queima de títulos. Certo comportamento de validator resulta em uma redução punitiva de seu vínculo. Se o título for reduzido abaixo do mínimo permitido, o sessão é encerrada prematuramente e outra iniciada. Uma lista não exaustiva de mau comportamento validator punível inclui: • Fazer parte de um grupo de pára-quedas incapaz de fornecer consenso sobre a validade de um bloco parachain; • assinar ativamente a validade de um documento inválido bloco de pára-quedas; • incapacidade de fornecer cargas úteis de saída anteriormente votado como disponível; • inatividade durante o processo de consenso; • validação de blocos de cadeia de retransmissão em bifurcações concorrentes. Alguns casos de mau comportamento ameaçam a integridade da rede (como a assinatura de blocos de parachain inválidos e a validação de vários lados de uma bifurcação) e, como tal, resultam num exílio efetivo através da redução total do vínculo. Em outros casos menos graves (por exemplo, inatividade no consenso processo) ou casos em que a culpa não pode ser atribuída com precisão (fazer parte de um grupo ineficaz), uma pequena parte do título pode, em vez disso, ser multado. Neste último caso, este funciona bem com a rotatividade de subgrupos para garantir que os nodos sofrem substancialmente mais perdas do que os nodos benevolentes danificados colateralmente. Em alguns casos (por exemplo, validação multi-fork e inválida assinatura de sub-bloco) validators não conseguem detectar facilmente o mau comportamento uns dos outros, pois a verificação constante de cada bloco de parachain seria uma tarefa muito árdua. Aqui é necessário angariar o apoio de partes externas ao o processo de validação para verificar e relatar tal mau comportamento. As partes recebem uma recompensa por denunciar tal atividade; seu termo, “pescadores”, deriva da improbabilidade de tal recompensa. Dado que estes casos são tipicamente muito graves, prevemos que quaisquer recompensas possam ser facilmente pagas a partir do título confiscado. Em geral preferimos equilibrar a queima (ou seja, redução a nada) com realocação, em vez de tentativa de realocação por atacado. Isto tem o efeito de
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 11 aumentando o valor global do token, compensando o até certo ponto, a rede em geral, e não a rede específica. parte envolvida na descoberta. Isto é principalmente como uma segurança mecanismo: as grandes quantias envolvidas poderiam levar a um incentivo extremo e agudo ao comportamento, se todas elas concedido a um único alvo. Em geral, é importante que a recompensa seja suficientemente grande para fazer com que a verificação valha a pena para a rede, mas não tão grande a ponto de compensar os custos de enfrentar um problema. crime de “nível industrial” bem financiado e bem orquestrado ataque de hacking a algum validator azarado para forçar o mau comportamento. Desta forma, o montante reclamado geralmente não deve ser maior que o vínculo direto do errante validator, para que um surgem incentivos perversos de se comportar mal e se reportar à recompensa. Isto pode ser combatido explicitamente através de um requisito mínimo de títulos diretos para ser um validator ou implicitamente, educando os nomeadores que validators com poucos títulos depositados não têm grande incentivo comportar-se bem. 6.3. Registro Parachain. Cada parachain é definido em este registro. É uma construção relativamente simples, semelhante a um banco de dados, e contém informações estáticas e dinâmicas sobre cada cadeia. As informações estáticas incluem o índice da cadeia (um simples inteiro), junto com a identidade do protocolo de validação, um meio de distinguir entre as diferentes classes de parachain para que o algoritmo de validação correto possa ser dirigido por validators encarregados de apresentar um candidato válido. Uma prova de conceito inicial se concentraria em colocar os novos algoritmos de validação nos próprios clientes, exigindo efetivamente um hard fork do protocolo cada vez que um classe adicional de corrente foi adicionada. Em última análise, porém, pode ser possível especificar o algoritmo de validação em de uma forma rigorosa e eficiente o suficiente para que os clientes sejam capaz de trabalhar efetivamente com novos pára-quedas sem garfo duro. Um caminho possível para isso seria especificar o algoritmo de validação parachain de uma forma bem estabelecida, linguagem compilada nativamente e de plataforma neutra, como WebAssembly. Pesquisas adicionais são necessárias para determinar se isso é realmente viável, no entanto, se for, poderia trazer com isso a tremenda vantagem de banir hard-forks para sempre. As informações dinâmicas incluem aspectos do sistema de roteamento de transações que devem ter um acordo global, como como a fila de entrada do parachain (descrita na seção 6.6). O registro só pode adicionar parachains através de votação em referendo completo; isso poderia ser gerenciado internamente, mas seria mais provável que fosse colocado em um ambiente externo contrato de referendo, a fim de facilitar a reutilização sob componentes de governação mais gerais. Os parâmetros a requisitos de votação (por exemplo, qualquer quórum necessário, maioria obrigatório) para registro de cadeias adicionais e outros, atualizações de sistema menos formais serão definidas em um “mestre constituição”, mas provavelmente seguirão uma abordagem bastante tradicional caminho, pelo menos inicialmente. A formulação precisa está fora de escopo para o presente trabalho, mas, e. uma maioria absoluta de dois terços para aprovar com mais de um terço do sistema total votar positivamente pode ser um ponto de partida sensato. As operações adicionais incluem a suspensão e remoção de pára-quedas. Esperançosamente, a suspensão nunca acontecer, no entanto, foi concebido para ser uma salvaguarda menos há algum problema intratável no sistema de validação de um parachain. O exemplo mais óbvio em que poderia necessária é uma diferença crítica de consenso entre as implementações, levando validators a não conseguirem chegar a um acordo sobre validade ou bloqueios. Os validadores seriam incentivados a usar múltiplas implementações de clientes para que eles possam identificar esse problema antes do confisco dos títulos. Sendo a suspensão uma medida emergencial, seria sob os auspícios da votação dinâmica validator, em vez do que um referendo. A reintegração seria possível tanto dos validators ou de um referendo. A remoção total dos pára-quedas viria apenas após um referendo e com o qual seria necessária uma período de carência substancial para permitir uma transição ordenada para uma cadeia independente ou para se tornar parte de alguma outra sistema de consenso. O período de carência provavelmente seria de na ordem de meses e provavelmente será estabelecido por cadeia no registro de parachain para que diferentes parachains podem desfrutar de diferentes períodos de carência de acordo com sua necessidade. 6.4. Vedação de blocos de relés. Vedação refere-se, em essência, ao processo de canonização; isto é, um dado básico transformar o quemapeia o original em algo fundamentalmente singular e significativo. Sob uma cadeia PoW, vedação é efetivamente sinônimo de mineração. No nosso caso, envolve a coleta de declarações assinadas de validators sobre a validade, disponibilidade e canonicidade de um bloco específico da cadeia de retransmissão e os blocos parachain que ele representa. A mecânica do algoritmo de consenso BFT subjacente está fora do escopo do presente trabalho. Nós iremos em vez disso, descreva-o usando uma primitiva que assume um máquina de estado criadora de consenso. Em última análise, esperamos ser inspirado por uma série de consensos BFT promissores algoritmos no núcleo; Tangaora [9] (uma variante BFT de Jangada [16]), Tendermint [11] e HoneyBadgerBFT [14]. O algoritmo terá que chegar a um acordo sobre múltiplos parachains em paralelo, diferindo assim do habitual blockchain mecanismos de consenso. Assumimos que uma vez o consenso é alcançado, somos capazes de registrar o consenso numa prova irrefutável que pode ser fornecida por qualquer um dos os participantes a ele. Também assumimos que o mau comportamento dentro do protocolo pode ser geralmente reduzido a um pequeno grupo contendo participantes malcomportados para minimizar o dano colateral ao aplicar a punição.8 A prova, que assume a forma de nossas declarações assinadas, é colocada no cabeçalho do bloco da cadeia de retransmissão junto com com alguns outros campos, entre eles a raiz da tentativa de estado da cadeia de retransmissão e a raiz da tentativa de transação. O vedação processo leva lugar sob um solteiro gerador de consenso mecanismo endereçamento ambos o bloco da cadeia de relés e os blocos dos parachains que fazem parte do conteúdo do revezamento: os parachains não são “comprometidos” separadamente por seus subgrupos e depois agrupados mais tarde. Isso resulta em um processo mais complexo para a cadeia de retransmissão, mas nos permite completar todo o consenso do sistema em um único estágio, minimizando a latência e permitindo para requisitos de disponibilidade de dados bastante complexos que são útil para o processo de roteamento abaixo. 8Os esquemas de consenso BFT existentes baseados em PoS, como o Tendermint BFT e o Slasher original, atendem a essas afirmações.
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 12 O estado da máquina de consenso de cada participante pode ser modelado como uma tabela simples (bidimensional). Cada participante (validator) possui um conjunto de informações, no formato de declarações assinadas (“votos”) de outros participantes, em relação a cada candidato de bloco parachain, bem como ao candidato de bloco de retransmissão. O conjunto de informações é composto por duas peças de dados: Disponibilidade: faz isso validator tem saída informações de postagem de transação deste bloco, então eles são capazes de validar adequadamente os candidatos parachain no bloco seguinte? Eles podem votar 1 (conhecido) ou 0 (ainda não conhecido). Uma vez que eles voto 1, eles se comprometem a votar de forma semelhante para o resto deste processo. Votos posteriores que não respeitar isso são motivos para punição. Validade: o bloco parachain é válido e é tudo dados referenciados externamente (por ex. transações) disponível? Isso é relevante apenas para validators atribuídos ao parachain no qual estão votando. Eles podem votar 1 (válido), -1 (inválido) ou 0 (ainda não conhecido). Uma vez que votam diferente de zero, eles estão empenhados em votar desta forma durante o resto do o processo. Votos posteriores que não respeitam isso são motivo de punição. Todos os validators devem enviar votos; poderão ser reapresentados votos, qualificados pelas regras acima. A progressão de o consenso pode ser modelado como vários algoritmos de consenso BFT padrão sobre cada parachain acontecendo em paralelo. Uma vez que estas são potencialmente frustradas por uma situação relativamente pequena minoria de atores maliciosos concentrados em um único grupo parachain, existe um consenso geral para estabelecer um mecanismo de apoio, limitando o pior cenário possível impasse para apenas um ou mais blocos de parachain vazios (e uma rodada de punição para os responsáveis). As regras básicas para validade dos blocos individuais (que permitem que o conjunto total de validators como um todo chegue a consenso sobre ele se tornar o único candidato parachain a ser referenciado a partir do relé canônico): • deve ter pelo menos dois terços dos seus validators votando positivamente e nenhum votando negativamente; • deve ter mais de um terço dos validators votando positivamente quanto à disponibilidade de informações da fila de saída. Se houver pelo menos um voto positivo e pelo menos um negativo sobre a validade, é criada uma condição excepcional e todo o conjunto de validators deve votar para determinar se houver partes maliciosas ou se houver um acidente garfo. Além de válidos e inválidos, um terceiro tipo de votos são permitidos, equivalente a votar em ambos, o que significa que o nó tem opiniões conflitantes. Isto pode ser devido ao proprietário do nó executando múltiplas implementações que fazem discordo, indicando uma possível ambiguidade no protocolo. Depois que todos os votos forem contados do conjunto completo validator, se a opinião perdedora tem pelo menos uma pequena proporção (para ser parametrizado; no máximo metade, talvez significativamente menos) dos votos do parecer vencedor, presume-se então será um fork acidental do parachain e o parachain será automaticamente suspenso do processo de consenso. Caso contrário, assumimos que é um ato malicioso e punimos o minoria que votou a favor da opinião divergente. A conclusão é um conjunto de assinaturas demonstrando canonicidade. O bloco da cadeia de relés pode então ser selado e iniciado o processo de selagem do próximo bloco. 6.5. Melhorias para blocos de relé de vedação. Enquanto este método de vedação oferece fortes garantias sobre a operação do sistema, não tem uma escalabilidade particularmente boa uma vez que as principais informações de cada parachain devem ter seu disponibilidade garantida por mais de um terço de todos os validators. Isso significa que a pegada de responsabilidade de cada validator cresce à medida que mais cadeias são adicionadas. Embora a disponibilidade de dados em redes abertas de consenso é essencialmente um problema não resolvido, existem maneiras de mitigar a sobrecarga colocada nos nós validator. Um simples solução é perceber que embora validators devam assumir assumem a responsabilidade pela disponibilidade dos dados, eles próprios não precisam de armazenar, comunicar ou replicar os dados. Silos de dados secundários, possivelmente relacionados (ou mesmo com o próprio mesmo) os compiladores que compilam esses dados, podem gerenciar o tarefa de garantir a disponibilidade com os validators fornecendo uma parcela de seus juros/receitas em pagamento. No entanto, embora isso possa adquirir alguma escalabilidade intermediária, ainda não ajuda no problema subjacente; desde adicionar mais cadeias geralmente exigirá validators adicionais, o consumo contínuo de recursos de rede (particularmente em termos de largura de banda) cresce com o quadrado de ocorrentes, uma propriedade insustentável a longo prazo. Em última análise, é provável que continuemos a bater a cabeça contra a limitação fundamental que afirma que, para uma rede de consenso para ser considerada disponível como segura, o os requisitos contínuos de largura de banda são da ordem do total validators vezes o total de informações de entrada. Isto é devido a a incapacidade de uma rede não confiável de distribuir adequadamente a tarefa de armazenamento de dados entre muitos nós, que fica além da tarefa eminentemente distribuível de processamento. 6.5.1. Apresentando Latência. Um meio de suavizar isso A regra é relaxar a noção de imediatismo. Ao exigir que 33%+1 validators votem pela disponibilidade apenas eventualmente, e não imediatamente, podemos utilizar melhor a propagação exponencial de dados e ajudar a equilibrar os picos no intercâmbio de dados. Uma igualdade razoável (embora não comprovada) pode ser: (1) latência = participantes × cadeias No modelo atual, o tamanho do sistema aumenta com o número de cadeias para garantir que o processamento seja distribuído; já que cada cadeia exigirá pelo menos um validator e fixamos o atestado de disponibilidade para uma constante proporção de validators, então os participantes crescem de forma semelhante com o número de cadeias. Terminamos com: (2) latência = tamanho2 O que significa que à medida que o sistema cresce, a largura de banda necessária e a latência até que a disponibilidade seja conhecida em todo o rede, que também pode ser caracterizada como o número de blocos antes da finalidade, aumenta com seu quadrado. Isto é um factor de crescimento substancial e pode revelar-se um obstáculo notável e forçar-nos a paradigmas “não planos” como compor vários “Polkadotes” em uma hierarquia para roteamento multinível de postagens por meio de uma árvore de cadeias de retransmissão.
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 13 6.5.2. Participação Pública. Mais uma direção possível é conseguir a participação pública no processo através de uma sistema de micro-reclamações. Semelhante aos pescadores, há poderiam ser partes externas para policiar os validators que reivindicam disponibilidade. A sua tarefa é encontrar alguém que pareça incapaz de demonstrar tal disponibilidade. Ao fazer isso eles pode apresentar uma micro-reclamação a outros validators. PoW ou um título apostado pode ser usado para mitigar o ataque de sibila o que tornaria o sistema em grande parte inútil. 6.5.3. Fiadores de Disponibilidade. Um caminho final seria nomear um segundo conjunto de validators vinculados como “disponibilidade fiadores”. Eles seriam ligados da mesma forma que os validators normais e podem até ser retirados do mesmo conjunto (embora, nesse caso, seriam escolhidos durante um período de longo prazo, pelo menos por sessão). Ao contrário dos validators normais, eles não mudaria entre parachains, mas sim formar um único grupo para atestar a disponibilidade de todos os dados intercadeias importantes. Isto tem a vantagem de relaxar a equivalência entre participantes e cadeias. Essencialmente, as cadeias podem crescer (junto com o conjunto original da cadeia validator), enquanto os participantes, e especificamente aqueles que participam do testamento de disponibilidade de dados, podem permanecer pelo menos sublineares e possivelmente constante. 6.5.4. Preferências do agrupador. Um aspecto importante deste sistema é garantir que haja uma seleção saudável de agrupadores criando os blocos em qualquer parachain. Se um único agrupador dominou um parachain e depois alguns ataques tornar-se mais viável, uma vez que a probabilidade da falta de a disponibilidade de dados externos seria menos óbvia. Uma opção é pesar artificialmente blocos de parachain em um mecanismo pseudo-aleatório para favorecer uma ampla variedade de agrupadores. No primeiro caso, precisaríamos como parte do mecanismo de consenso que validators favorece candidatos do bloco parachain determinados como “mais pesados”. Da mesma forma, devemos incentivar validators a tentar sugerir o bloco mais pesado que puderem encontrar - isso pode ser feito através de uma parcela de sua recompensa proporcional ao peso de seu candidato. Para garantir que os agrupadores recebam uma avaliação justa e razoável chance de seu candidato ser escolhido como vencedor candidato em consenso, fazemos o peso específico de um candidato de bloco parachain determinado em uma função aleatória conectada a cada agrupador. Por exemplo, tomando a medida da distância XOR entre o endereço do ordenador e algum número pseudoaleatório criptograficamente seguro determinado próximo ao ponto do bloco que está sendo criado (um “bilhete vencedor” nocional). Isso efetivamente dá a cada agrupador (ou, mais especificamente, o endereço de cada agrupador) um chance aleatória de seu bloco candidato “ganhar” todos os outros. Para mitigar o ataque sybil de um único agrupador “minerando” um endereço próximo ao bilhete vencedor e assim sendo um favorito em cada bloco, adicionaríamos alguma inércia ao endereço de um agrupador. Isso pode ser tão simples quanto exigir que eles ter uma quantia básica de fundos no endereço. Um mais abordagem elegante seria ponderar a proximidade com o bilhete vencedor com o valor dos fundos estacionados no endereço em questão. Embora a modelagem ainda não tenha sido feita, é bem possível que este mecanismo permita até mesmo pequenas partes interessadas contribuam como compiladores. 6.5.5. Blocos de excesso de peso. Se um conjunto validator for comprometido, eles podem criar e propor um bloco que, embora válido, leva uma quantidade excessiva de tempo para ser executado e validar. Isto é um problema já que um grupo validator poderia razoavelmente formar um bloco que leva muito tempo para executar, a menos que alguma informação específica já seja conhecida, permitindo um atalho, por ex. fatorando um grande principal. Se um único compilador conhecesse essa informação, então eles teriam uma clara vantagem em obter o seu próprio os candidatos aceitaram desde que os demais estivessem ocupados processando o bloco antigo. Chamamos esses blocos de excesso de peso. A proteção contra o envio e validação desses blocos por validators cai em grande parte sob o mesmo disfarce que para blocos inválidos, embora com uma ressalva adicional: já que o tempo necessário para executar um bloco (e, portanto, seu status como excesso de peso) é subjetivo, o resultado final de uma votação sobre o mau comportamento cairá essencialmente em três campos. Um possibilidade é que o bloco definitivamente não esteja acima do peso - neste caso, mais de dois terços declaram que poderiam execute o bloco dentro de algum limite (por exemplo, 50% do tempo total permitido entre blocos). Outra é que o bloco é ddefinitivamente acima do peso - isso aconteceria se mais de dois terços declaram que não conseguiram executar o bloco dentro do referido limite. Uma última possibilidade é uma situação razoavelmente igual divisão de opinião entre validators. Neste caso, podemos escolha fazer alguma punição proporcional. Para garantir que validators possam prever quando poderão ser propondo um bloco com excesso de peso, poderá ser sensato exigir-lhes que publiquem informações sobre o seu próprio desempenho para cada bloco. Durante um período de tempo suficiente, isso deve permitir que eles avaliem sua velocidade de processamento em relação aos pares que os julgariam. 6.5.6. Seguro de Colador. Um problema permanece para validators: ao contrário das redes PoW, para verificar o bloco para validade, eles devem realmente executar as transações nele. Coletores maliciosos podem alimentar blocos inválidos ou com excesso de peso para validators, causando-lhes sofrimento (desperdiçando seus recursos) e cobrando um custo de oportunidade potencialmente substancial. Para mitigar esta situação, propomos uma estratégia simples sobre o parte de validators. Em primeiro lugar, os candidatos ao bloco parachain foram enviados para validators devem ser assinados a partir de uma conta de cadeia de retransmissão com fundos; se não estiverem, então o validator deve cair isso imediatamente. Em segundo lugar, esses candidatos devem ser ordenados em prioridade por uma combinação (por exemplo, multiplicação) de a quantidade de fundos na conta até certo limite, o número de blocos anteriores que o ordenador propôs com sucesso no passado (sem mencionar qualquer bloco anterior punições), e o fator de proximidade com o vencedor bilhete conforme discutido anteriormente. A tampa deve ser a mesma como os danos punitivos pagos ao validator no caso deles enviando um bloco inválido. Para desincentivar os agrupadores de enviar candidatos de bloco inválidos ou com excesso de peso para validators, qualquer validator pode colocar no próximo bloco uma transação incluindo o bloco infrator, alegando mau comportamento com o efeito de transferir alguns ou todos os fundos na conta do ordenador que se comportou mal. conta ao lesado validator. Este tipo de transação antecipa qualquer outra para garantir que o ordenador não possa remover os fundos antes da punição. A quantidade de fundos transferidos como indenização é um parâmetro dinâmico ainda
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 14 a ser modelado, mas provavelmente será uma proporção da recompensa do bloco validator para refletir o nível de sofrimento causado. Para evitar que validators maliciosos confisquem arbitrariamente os fundos dos agrupadores, o agrupador poderá apelar da decisão do validator com um júri de validators escolhidos aleatoriamente em troca para fazer um pequeno depósito. Se eles acharem a favor de validator, o depósito será consumido por eles. Se não, o o depósito é devolvido e o validator é multado (já que o validator estiver em uma posição muito mais abobadada, a multa será provavelmente será bastante pesado). 6.6. Intercadeia Transação Roteamento. Intercadeia o roteamento de transações é uma das manutenções essenciais tarefas da cadeia de relés e seus validators. Este é o lógica que governa como uma transação lançada (muitas vezes abreviada para simplesmente “post”) deixa de ser uma saída desejada de um parachain de origem para ser uma entrada não negociável de outro parachain de destino sem qualquer confiança requisitos. Escolhemos cuidadosamente o texto acima; notavelmente nós não exige que tenha havido uma transação na origem parachain por ter sancionado explicitamente esta postagem. O único restrições que colocamos em nosso modelo é que parachains devem fornecer, embalados como parte de seu bloco geral saída de processamento, as postagens que são o resultado do execução do bloco. Essas postagens são estruturadas como diversas filas FIFO; o número de listas é conhecido como base de roteamento e pode ser cerca de 16. Notavelmente, este número representa a quantidade de pára-quedas que podemos apoiar sem ter que recorrer a roteamento multifásico. Inicialmente, Polkadot apoiará isso tipo de roteamento direto, no entanto, descreveremos um possível processo de roteamento multifásico (“hiper-roteamento”) como meio de expandir muito além do conjunto inicial de parachains. Nós assumir isso tudo participantes sabe o subgrupos para os próximos dois blocos n, n + 1. Em resumo, o O sistema de roteamento segue estas etapas: • CollatorS: entre em contato com membros dos Validadores[n][S] • Agrupadores: PARA CADA subgrupo: garantir pelo menos pelo menos 1 membro dos validadores[n][s] em contato • Coletores: PARA CADA subgrupo: assumir egress[n −1][s][S] está disponível (todas as postagens recebidas dados para 'S' do último bloco) • Coletores: Componha o bloco candidato b para S: (b.cabeçalho, b.ext, b.prova, b.recibo, b.egress) • Coletores: Enviar prova informação prova[S] = (b.cabeçalho, b.ext, b.prova, b.recibo) para Validadores[n][S] • CollatorS: Garante dados de transações externas b.ext é disponibilizado para outros agrupadores e validators • Coletores: PARA CADA subgrupo é: Enviar saída informação saída[n][S][s] = (b.cabeçalho, b.recibo, b.egress[s]) para o recebendo subgrupo membros de próximo bloquear Validadores[n + 1][s] • ValidadorV: pré-conecta todos os membros do mesmo conjunto para o próximo bloco: seja N = Chain[n + 1][V ]; conectar todos os validators v tais que Chain[n + 1][v] = N • ValidadorV: Agrupe toda a entrada de dados para isso bloco: PARA CADA subgrupo é: Recuperar egress[n −1][s][Chain[n][V ]], obtém de outros validators v tal que Chain[n][v] = Chain[n][V ]. Possivelmente passando por outros validators selecionados aleatoriamente para prova de tentativa. • ValidadorV: Aceite provas de candidato para isso prova de bloco[Cadeia[n][V]]. Validade do bloco de votação • ValidadorV: Aceitar dados de saída de candidatos para próximo bloco: PARA CADA subgrupo s, aceite saída[n][s][N]. Disponibilidade de saída do bloco de votação; republicar entre validators interessados v de forma que Cadeia[n + 1][v] = Cadeia[n + 1][V ]. • ValidadorV: ATÉ CONSENSO Onde: egress[n][from][to] é a fila de saída atual informações para postagens que vão do parachain ‘de’, para parachain ‘to’ no número do bloco ‘n’. CollatorS é um agrupador para parachain S. V alidators[n][s] é o conjunto de validators para parachain s no bloco número n. Por outro lado, Chain[n][v] é o parachain ao qual validator v é atribuído no bloco número n. block.egress[to] é a saída fila de postagens de algum bloco parachain cujo parachain de destino é. Como os agrupadores cobram taxas (de transação) com base em seus blocos se tornando canônicos, eles são incentivados a garantir que, para cada destino do próximo bloco, o subgrupo os membros são informados da fila de saída do presente bloco. Os validadores são incentivados apenas a formar um consenso sobre um bloco (parachain), portanto, eles pouco se importam com qual bloco do ordenador finalmente se torna canônico. Em princípio, um validator poderia formar uma aliança com um agrupador e conspirar para reduzir as chances de outros agrupadores bloqueia se tornar canônico, no entanto, isso é difícil para organizar devido à seleção aleatóriaação de validators para parachains e poderia ser defendido com uma redução nas taxas a pagar por blocos de parachain que resistem o processo de consenso. 6.6.1. Disponibilidade de dados externos. Garantindo um paraquedas dados externos estão realmente disponíveis é um problema perene com sistemas descentralizados com o objetivo de distribuir a carga de trabalho entre a rede. No centro da questão está a disponibilidade problema que afirma que, como não é possível fazer uma prova de disponibilidade não interativa nem qualquer tipo de prova de indisponibilidade, para que um sistema BFT funcione adequadamente validar qualquer transição cuja correção dependa do disponibilidade de alguns dados externos, o número máximo de nós aceitavelmente bizantinos, mais um, do sistema deve atestar que os dados estão disponíveis. Para que um sistema seja dimensionado corretamente, como Polkadot, isso convida a um problema: se uma proporção constante de validators deve atestar a disponibilidade dos dados, e assumindo que validators desejarão realmente armazenar os dados antes de afirmar que estão disponíveis, então como podemos evitar o problema dos requisitos de largura de banda/armazenamento aumentando com o tamanho do sistema (e, portanto, o número de validators)? Uma resposta possível seria ter um conjunto separado de validators (garantidores de disponibilidade), cujo pedido cresce sublinearmente com o tamanho de Polkadot como um todo. Isto é descrito em 6.5.3. Também temos um truque secundário. Como grupo, os agrupadores têm um incentivo intrínseco para garantir que todos os dados sejam disponível para o parachain escolhido, pois sem ele eles não são capazes de criar mais blocos a partir dos quais possam cobrar taxas de transação. Os agrupadores também formam um grupo cuja composição é variada (devido à natureza aleatória do parachain validator grupos) não trivial de entrar e fácil
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 15 para provar. Os agrupadores recentes (talvez dos últimos milhares de blocos) estão, portanto, autorizados a emitir desafios para a disponibilidade de dados externos para um determinado parachain bloco para validators para um pequeno título. Os validadores devem entrar em contato com aqueles do subgrupo aparentemente infrator validator que testemunharam e adquirir e devolver os dados ao compilador ou escalar o questão, testemunhando a falta de disponibilidade (a recusa direta em fornecer os dados conta como um crime de confisco de títulos, portanto, o mau comportamento validator provavelmente apenas interromper a conexão) e entrar em contato com validators adicionais para executar o mesmo teste. Neste último caso, a caução do colator é retornado. Assim que for alcançado um quórum de validators que possam fazer tais depoimentos de indisponibilidade, eles serão liberados, o o subgrupo que se comporta mal é punido e o bloqueio é revertido. 6.6.2. Roteamento de postagens. Cada cabeçalho parachain inclui um saída-trie-root; esta é a raiz de uma tentativa contendo o compartimentos de base de roteamento, sendo cada compartimento uma lista concatenada de postos de saída. As provas Merkle podem ser fornecidas em parachain validators para provar que um determinado parachain O bloco tinha uma fila de saída específica para um parachain de destino específico. No início do processamento de um bloco parachain, cada a fila de saída de outro parachain com destino ao referido bloco é mesclado na fila de entrada do nosso bloco. Assumimos forte, provavelmente CSPR9, ordenação de subbloco para alcançar uma operação determinística que não oferece favoritismo entre quaisquer emparelhamento de blocos parachain. Os agrupadores calculam a nova fila e drenar as filas de saída de acordo com o parachain lógica. O conteúdo da fila de entrada é escrito explicitamente no bloco de pára-quedas. Isto tem dois propósitos principais: em primeiro lugar, significa que o parachain pode ser sincronizado sem confiança, isoladamente dos outros parachains. Em segundo lugar, simplifica a logística de dados caso todo o ingresso a fila não pode ser processada em um único bloco; validators e agrupadores são capazes de processar os seguintes blocos sem ter que obter os dados da fila especialmente. Se a fila de entrada do parachain estiver acima de um limite valor no final do processamento do bloco, então ele é marcado saturado na cadeia de retransmissão e nenhuma mensagem adicional pode ser entregue a ele até que seja liberado. As provas de Merkle são usado para demonstrar a fidelidade da operação do alceador em a prova do bloco parachain. 6.6.3. Crítica. Uma pequena falha relacionada a este mecanismo é o ataque pós-bomba. É aqui que todos parachains enviam o máximo de posts possíveis para um parachain específico. Embora isso amarre o alvo fila de entrada de uma só vez, nenhum dano é causado além um ataque DoS de transação padrão. Operando normalmente, com um conjunto de sinais bem sincronizados e agrupadores não maliciosos e validators, para N parachains, N × M total de validators e L agrupadores por parachain, nós pode dividir o total de caminhos de dados por bloco para: Validador: M −1+L+L: M −1 para os outros validators no conjunto de parachain, L para cada ordenador fornecendo um bloco de parachain candidato e um segundo L para cada ordenador do próximo bloco exigindo as cargas de saída do bloco anterior. (Este último é na verdade mais parecido com o pior caso operação, uma vez que é provável que os agrupadores compartilhem tais dados.) Collator: M +kN: M para uma conexão com cada bloco parachain validator, kN para semear as cargas úteis de saída para algum subconjunto de cada grupo parachain validator para o próximo bloco (e possivelmente algum(s) agrupador(es) preferido(s)). Como tal, os caminhos dos dados por nó crescem linearmente com a complexidade geral do sistema. Enquanto isso é razoável, à medida que o sistema se expande para centenas ou milhares de parachains, alguma latência de comunicação pode ser absorvido em troca de uma taxa de crescimento de menor complexidade. Neste caso, um algoritmo de roteamento multifásico pode ser usado para reduzir o número de caminhos instantâneos ao custo da introdução de buffers de armazenamento e latência. 6.6.4. Roteamento hipercubo. O roteamento hipercubo é um mecanismo que pode ser construído principalmente como uma extensão do mecanismo básico de roteamento descrito acima. Essencialmente, em vez de aumentar a conectividade do nó com o número de parachains e nós de subgrupos, crescemos apenas com o logaritmo dos parachains. As postagens podem transitar entre várias filas de parachains a caminho da entrega final. O roteamento em si é determinístico e simples. Começamos por limitar o número de compartimentos nas filas de entrada/saída; em vez de serem o número total de pára-quedas, eles são osbase de roteamento (b) . Isso será corrigido como o número de mudanças de parachains, com o expoente de roteamento (e) sendo aumentado. Sob este modelo, nosso volume de mensagens cresce com O (ser), com os caminhos permanecendo constantes e a latência (ou número de blocos necessários para entrega) com O(e). Nosso modelo de roteamento é um hipercubo de dimensões e, com cada lado do cubo tendo b localizações possíveis. Cada bloco roteamos mensagens ao longo de um único eixo. Nós alterne o eixo de forma round-robin, garantindo assim o pior tempo de entrega dos blocos e. Como parte do processamento de parachain, com destino ao exterior as mensagens encontradas na fila de entrada são roteadas imediatamente para o compartimento apropriado da fila de saída, considerando o número do bloco atual (e, portanto, dimensão de roteamento). Isto o processo necessita de transferência de dados adicional para cada salto na rota de entrega, no entanto, isso é um problema em si que pode ser mitigado usando alguns meios alternativos de entrega de carga útil de dados e incluindo apenas uma referência, em vez da carga útil completa da postagem no pós-teste. Um exemplo de roteamento hipercubo para um sistema com 4 parachains, b = 2 e e = 2 pode ser: Fase 0, em cada mensagem M: • sub0: se Mdest ∈{2, 3} então sendTo(2) senão mantém • sub1: se Mdest ∈{2, 3} então sendTo(3) senão mantém • sub2: se Mdest ∈{0, 1} então sendTo(0) senão mantém • sub3: se Mdest ∈{0, 1} então sendTo(1) senão mantém Fase 1, em cada mensagem M: • sub0: se Mdest ∈{1, 3} então sendTo(1) senão mantém • sub1: se Mdest ∈{0, 2} então sendTo(0) senão mantém • sub2: se Mdest ∈{1, 3} então sendTo(3) senão mantém • sub3: se Mdest ∈{0, 2} então sendTo(2) senão mantém As duas dimensões aqui são fáceis de ver como a primeira dois bits do índice de destino; para o primeiro bloco, o apenas um bit de ordem superior é usado. O segundo bloco trata com o bit de ordem inferior. Uma vez que ambos acontecem (de forma arbitrária ordem) então a postagem será roteada. 9pseudo-aleatório criptograficamente seguro
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 16 6.6.5. Maximizando a Serendipidade. Uma alteração do básico proposta veria um total fixo de c2 −c validators, com c−1 validators em cada subgrupo. Cada bloco, em vez de havendo um reparticionamento não estruturado de validators entre parachains, em vez de para cada subgrupo de parachains, cada validator seria atribuído a um único e diferente subgrupo parachain no bloco seguinte. Isso seria levam ao invariante que entre quaisquer dois blocos, para qualquer dois pares de parachain, existem dois validators que trocaram as responsabilidades do parachain. Embora isto não possa ser usado para obter garantias absolutas sobre a disponibilidade (um único validator ocasionalmente ficará off-line, mesmo se benevolente), pode, no entanto, otimizar o caso geral. Esta abordagem não é isenta de complicações. A adição de um parachain também exigiria uma reorganização do conjunto validator. Além disso o número de validators, estando vinculado ao quadrado do número de parachains, começaria inicialmente muito pequeno e eventualmente cresceria muito muito rápido, tornando-se insustentável após cerca de 50 parachains. Nenhum destes são problemas fundamentais. No primeiro caso, reorganização dos conjuntos validator é algo que deve ser feito regularmente de qualquer maneira. Em relação ao tamanho do validator definido, quando muito pequeno, vários validators podem ser atribuídos para o mesmo parachain, aplicando um fator inteiro ao total geral de validators. Um mecanismo de roteamento multifásico, como o roteamento hipercubo, discutido em 6.6.4, aliviar a necessidade de um grande número de validators quando há um grande número de cadeias. 6.7. Validação Parachain. O objetivo principal de um validator é testemunhar, como um ator bem vinculado, que o parachain bloco é válido, incluindo, mas não limitado a, qualquer transição de estado, quaisquer transações externas incluídas, a execução de quaisquer postos de espera na fila de entrada e o estado final da fila de saída. O processo em si é bastante simples. Uma vez que o validator selou o bloco anterior, eles estão livres para começar a trabalhar para fornecer um bloco de parachain candidato candidato para a próxima rodada de consenso. Inicialmente, o validator encontra um candidato a bloco parachain por meio de um agrupamento de parachain (descrito a seguir) ou um de seus co-validators. Os dados do candidato do bloco parachain inclui o cabeçalho do bloco, o cabeçalho do bloco anterior, quaisquer dados de entrada externos incluídos (para Ethereum e Bitcoin, tais dados seriam chamados de transações, no entanto, em princípio, podem incluir estruturas de dados arbitrárias para fins arbitrários), dados de fila de saída e dados internos para provar a validade da transição de estado (para Ethereum estes seriam os vários nós de teste de estado/armazenamento necessários para executar cada transação). Evidências experimentais mostram este conjunto de dados completo para um bloco Ethereum recente ter no máximo algumas centenas de KiB. Simultaneamente, se ainda não for feito, o validator será tentando recuperar informações relativas à transição do bloco anterior, inicialmente a partir do bloco anterior validators e posteriores de todos os validators que assinam o disponibilidade dos dados. Depois que validator receber esse bloco de candidato, eles então o validam localmente. O processo de validação está contido no módulo validator da classe parachain, um módulo de software sensível ao consenso que deve ser escrito para qualquer implementação de Polkadot (embora em princípio uma biblioteca com C ABI poderia permitir que uma única biblioteca ser compartilhado entre implementações com o apropriado redução na segurança resultante de ter apenas uma única implementação de “referência”). O processo pega o cabeçalho do bloco anterior e verifica sua identidade através da cadeia de retransmissão recentemente acordada. bloco no qual seu hash deve ser gravado. Uma vez verificada a validade do cabeçalho pai, o parachain específico a função de validação da classe pode ser chamada. Esta é uma função única que aceita vários campos de dados (aproximadamente aqueles fornecidos anteriormente) e retornando um booleano simples proclamando a validade do bloqueio. A maioria dessas funções de validação verificará primeiro o campos de cabeçalho que podem ser derivados diretamente de o bloco pai (por exemplo, pai hash, número). Seguindo isso, eles preencherão quaisquer estruturas de dados internas como necessários para processar transações e/ou postagens. Para uma cadeia do tipo Ethereum, isso equivale a preencher um teste o banco de dados com os nós que serão necessários para o execução completa das transações. Outros tipos de cadeia podem ter outro pmecanismos reparatórios. Uma vez feito isso, os posts de entrada e as transações externas (ou o que quer que os dados externos representem) serão promulgada, equilibrada de acordo com a especificação da cadeia. (Um o padrão sensato pode ser exigir que todas as postagens de entrada sejam processado antes que as transações externas sejam atendidas, no entanto, isso deve ser decidido pela lógica do parachain.) Através desta lei, uma série de postos de saída serão criados e será verificado se estes realmente correspondem o candidato do colador. Finalmente, o devidamente preenchido o cabeçalho será verificado em relação ao cabeçalho do candidato. Com um bloco candidato totalmente validado, o validator pode então votar no hash de seu cabeçalho e enviar todas as informações de validação necessárias para os co-validators em seu subgrupo. 6.7.1. Coladores Parachain. Os agrupadores de parachain são operadores não vinculados que cumprem grande parte da tarefa dos mineradores nas redes blockchain atuais. Eles são específicos para um parachain específico. Para funcionarem devem manter a cadeia de relés e o totalmente sincronizado pára-quedas. O significado preciso de “totalmente sincronizado” dependerá da classe do parachain, embora sempre inclua o estado atual da fila de entrada do parachain. No caso de Ethereum também envolve pelo menos manter um banco de dados Merkle-tree dos últimos blocos, mas pode também inclui várias outras estruturas de dados, incluindo Bloom filtros para existência de conta, informações familiares, registro saídas e tabelas de pesquisa reversa para número de bloco. Além de manter as duas cadeias sincronizadas, também deve “pescar” transações mantendo uma fila de transações e aceitando transações devidamente validadas da rede pública. Com a fila e a cadeia, é capaz de criar novos blocos candidatos para os validators escolhidos em cada bloco (cuja identidade é conhecida desde que a cadeia de relés esteja sincronizada) e submetê-los, juntamente com o diversas informações auxiliares, como prova de validade, via a rede peer. Por seu problema, cobra todas as taxas relativas às transações que inclui. Várias economias flutuam em torno disso arranjo. Num mercado fortemente competitivo onde há houver um excedente de coladores, é possível que a transação taxas serão compartilhadas com o parachain validators para incentivar a inclusão de um bloco de agrupamento específico. De forma similar,
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 17 alguns agrupadores podem até aumentar as taxas exigidas que precisam a ser pago para tornar o bloco mais atrativo para validators. Neste caso, um mercado natural deve se formar com transações que pagam taxas mais altas evitando a fila e ter uma inclusão mais rápida na cadeia. 6.8. Rede. Rede em blockchains tradicionais como Ethereum e Bitcoin tem requisitos bastante simples. Todas as transações e bloqueios são transmitidos em uma simples fofoca não direcionada. A sincronização está mais envolvida, especialmente com Ethereum mas na realidade esta lógica estava contida em a estratégia de pares, em vez do protocolo em si, que resolve alguns tipos de mensagens de solicitação e resposta. Embora Ethereum tenha feito progresso nas ofertas atuais de protocolo com o protocolo devp2p, o que permitiu muitos subprotocolos sejam multiplexados em uma única conexão de ponto e, portanto, tenham a mesma sobreposição de ponto, suportam muitos protocolos p2p simultaneamente, a parte Ethereum de o protocolo ainda permaneceu relativamente simples e o p2p protocolo por um tempo permanece inacabado com importantes funcionalidade ausente, como suporte QoS. Infelizmente, o desejo de criar um protocolo “web 3” mais onipresente, em grande parte falhou, com os únicos projetos que o utilizam sendo aqueles explicitamente financiado pela venda coletiva Ethereum. Os requisitos para Polkadot são bastante mais substanciais. Em vez de uma rede totalmente uniforme, Polkadot tem vários tipos de participantes, cada um com requisitos diferentes em relação à composição de seus pares e diversas redes “avenidas” cujos participantes tenderão a conversar sobre dados específicos. Isso significa uma sobreposição de rede substancialmente mais estruturada – e um protocolo que suporta isso – provavelmente será necessário. Além disso, a extensibilidade para facilitar adições futuras, como novos tipos de “cadeia”, pode eles próprios exigem uma nova estrutura de sobreposição. Embora uma discussão aprofundada sobre como a rede protocolo pode parecer estar fora do escopo deste documento, algumas análises de requisitos são razoáveis. Nós podemos dividir aproximadamente os participantes da nossa rede em dois conjuntos (relay-chain, parachains) cada um dos três subconjuntos. Nós podemos também afirmam que cada um dos participantes do parachain são apenas interessados em conversar entre si em vez de participantes de outros parachains: • Participantes da cadeia de retransmissão: • Validadores: P, dividido em subconjuntos P[s] para cada pára-quedas • Fiadores de Disponibilidade: A (podem ser representados por Validadores na forma básica do protocolo) • Clientes de cadeia de retransmissão: M (observe os membros de cada conjunto parachain também tenderá a ser membros de M) • Participantes do Parachain: • Coletores Parachain: C[0], C[1], . . . • Pescadores de paraquedas: F[0], F[1], . . . • Clientes Parachain: S[0], S[1], . . . • Clientes leves Parachain: L[0], L[1], . . . Em geral, nomeamos classes específicas de comunicação tenderá a ocorrer entre membros desses conjuntos: • P | Um <-> P | R: O cheio definir de validators/fiadores deve ser bem conectado para alcançar consenso. • P[s] <-> C[s] | P[s]: Cada validator como membro de um determinado grupo parachain tenderá a fofocar com outros membros, bem como com os compiladores desse parachain para descobrir e compartilhar candidatos de bloco. • A <-> P[s] | C | R: Cada fiador de disponibilidade precisará coletar dados de cadeia cruzada sensíveis ao consenso dados dos validators atribuídos a ele; agrupadores também pode otimizar a chance de consenso sobre seus bloquear anunciando-o aos fiadores de disponibilidade. Assim que os tiverem, os dados serão desembolsados para outro fiador para facilitar o consenso. • P[s] <-> A | P[s']: Parachain validators irá precisa coletar dados de entrada adicionais do conjunto anterior de validators ou dos fiadores de disponibilidade. • F[s] <-> P: Ao reportar, os pescadores podem colocar uma reclamação com qualquer participante. • M <-> M | P | R: Os clientes gerais da cadeia de retransmissão desembolsam dados de validators e fiadores. • S[s] <-> S[s] | P[s] | R: Os clientes Parachain desembolsam dados dos validator/fiadores. • L[s] <-> L[s] | S[s]: Clientes leves Parachain desembolsar dados dos clientes completos. Para garantir um mecanismo de transporte eficiente, um “plano” rede de sobreposição - como o devp2p de Ethereum - onde cada nó não diferencia (não arbitrariamente) a aptidão de seu é improvável que os pares sejam adequados. Um razoavelmente extensível o mecanismo de seleção e descoberta de pares provavelmente precisará a serem incluídos no protocolo, bem como agressivos planejando uma previsão para garantir o tipo certo de pares são “acidentalmente” connectado no momento certo. A estratégia precisa de composição de pares será diferente para cada turma de participantes: para uma escalação adequada multi-cadeias, os alceadores precisarão ser continuamente reconectando-se aos validators devidamente eleitos, ou irá precisa de acordos contínuos com um subconjunto de validators para garantir que eles não sejam desconectados durante a grande maioria das vezes em que são inúteis para isso validator. Os agrupadores também tentarão naturalmente manter um ou conexões mais estáveis no garantidor de disponibilidade definido para garantir a rápida propagação de suas ideias sensíveis ao consenso dados. Os fiadores de disponibilidade terão como objetivo principal manter um conexão estável entre si e com validators (para consenso e dados parachain críticos de consenso aos quais eles atestam), bem como a alguns coladores (para o parachain dados) e alguns pescadores e clientes plenos (para dispersão informações). Os validadores tenderão a procurar outros validators, especialmente aqueles do mesmo subgrupo e qualquer agrupadores que podem fornecer-lhes candidatos a blocos de parachain. Pescadores, bem como redes de revezamento e paraquedas em geral os clientes geralmente terão como objetivo manter uma conexão aberta a um validator ou fiador, mas muitos outros nós semelhantes para si mesmos de outra forma. Os clientes Parachain Light terão como objetivo semelhante estar conectados a um cliente completo do parachain, se não apenas outros clientes leves de parachain. 6.8.1. O problema da rotatividade de pares. Na proposta básica do protocolo, cada um desses subconjuntos se altera constantemente de forma aleatória a cada bloco conforme os validators atribuídos para verificar as transições parachain são eleitas aleatoriamente. Isso pode ser um problema caso nós díspares (não pares) precisem passar dados entre si. É preciso confiar em uma rede de pares bem distribuída e bem conectada para
POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 18 garantir que a distância do salto (e, portanto, a latência do pior caso) só cresça com o logaritmo do tamanho da rede (um protocolo semelhante ao Kademlia [13] pode ajudar aqui), ou deve-se introduzir tempos de bloqueio mais longos para permitir que a negociação de conexão necessária ocorra para manter um conjunto de pares que reflete as necessidades atuais de comunicação do nó. Nenhuma dessas são ótimas soluções: longos tempos de bloqueio ser forçado na rede pode torná-la inútil para aplicações e cadeias específicas. Mesmo uma situação perfeitamente justa e rede conectada resultará em desperdício substancial de largura de banda à medida que aumenta devido a nós desinteressados tendo para encaminhar dados inúteis para eles. Embora ambas as direções possam fazer parte da solução, uma otimização razoável para ajudar a minimizar a latência seria ser para restringir a volatilidade desses parachain validator conjuntos, reatribuindo a associação apenas entre séries de blocos (por exemplo, em grupos de 15, que em 4 segundos o tempo de bloqueio significaria alterar as conexões apenas uma vez por minuto) ou rotacionando os membros de forma incremental, por ex. mudando por um membro de cada vez (por exemplo, se houver são 15 validators atribuídos a cada parachain, então, em média, seria um minuto inteiro entre completamente único conjuntos). Ao limitar a quantidade de rotatividade entre pares e garantir que conexões vantajosas entre pares sejam bem feitas em avançar através da previsibilidade parcial do parachain conjuntos, podemos ajudar a garantir que cada nó mantenha um permanentemente seleção fortuita de pares. 6.8.2. Caminho para um protocolo de rede eficaz. Provavelmente o o esforço de desenvolvimento mais eficaz e razoável se concentrará na utilização de um protocolo pré-existente, em vez de continuar o nosso. Existem vários protocolos base peer-to-peer que podemos usar ou aumentar, incluindo o próprio devp2p de Ethereum [22], libp2p [1] do IPFS e GNUnet [4] do GNU. Uma revisão completa desses protocolos e sua relevância para a construção de um rede modular de pares que suporta certas garantias estruturais, orientação dinâmica entre pares e subprotocolos extensíveis está muito além do escopo deste documento, mas será um passo importante na implementação de Polkadot. 7. Aspectos práticos do Protocolo 7.1. Pagamento de transações intercadeias. Embora um ótimo quantidade de liberdade e simplicidade é obtida eliminando a necessidade de uma estrutura holística de contabilidade de recursos de computação como o gás de Ethereum, isso levanta uma questão importante: sem gás, como um parachain evitar que outro parachain o force a fazer cálculos? Embora possamos contar com a fila de entrada pós-transação buffers para evitar que uma cadeia envie spam para outra com dados de transação, não há mecanismo equivalente fornecido pelo protocolo para evitar spam no processamento de transações. Este é um problema deixado para o nível superior. Desde cadeias são livres para anexar semântica arbitrária à entrada dados de postagem de transação, podemos garantir que o cálculo deve ser pago antes de começar. Numa linha semelhante à modelo adotado por Ethereum Serenity, podemos imaginar um contrato de “arrombamento” dentro de um parachain que permite um validator terá pagamento garantido em troca do fornecimento de um determinado volume de recursos de processamento. Esses recursos podem ser medidos em algo como gás, mas também pode ser algum modelo totalmente novo, como tempo de execução subjetivo ou um modelo de taxa fixa semelhante a Bitcoin. Por si só, isso não é tão útil, pois não podemos presumir prontamente que o chamador fora da cadeia tenha disponível para ele qualquer que seja o mecanismo de valor reconhecido pela invasão contrato. No entanto, podemos imaginar um contrato secundário de “ruptura” na cadeia de origem. Os dois contratos juntos formariam uma ponte, reconhecendo-se e fornecendo equivalência de valor. (Estaqueamento-tokens, disponível para cada um, poderia ser usado para liquidar o balanço de pagamentos.) Ligar para outra cadeia desse tipo significaria proxy através desta ponte, que forneceria os meios de negociar a transferência de valor entre cadeias para pagar pelos recursos de computação necessários no parachain de destino. 7.2. Adicional Correntes. Enquanto o adição de um parachain é uma operação relativamente barata, não é gratuita. Mais parachains significa menos validators por parachain e, eventualmente, um número maior de validators, cada um com um título médio reduzido. Embora a questão de um menor custo de coerção para atacar um parachain seja mitigada através de pescadores, o crescente conjunto validator essencialmente força um maior grau de latência devido à mecânica do consenso subjacenteisso. Além disso, cada parachain traz consigo o potencial de lamentar validators com um algoritmo de validação excessivamente pesado. Como tal, haverá algum “preço” que validators e/ou a comunidade interessada extrairá para o adição de um novo parachain. Este mercado de correntes possivelmente veja a adição de: • Cadeias que provavelmente terão pagamento de contribuição líquida zero (em termos de bloqueio ou queima de staking tokens) a serem incluídas (por exemplo, cadeias de consórcio, Doge-chains, cadeias específicas de aplicativos); • cadeias que entregam valor intrínseco à rede através da adição de funcionalidades específicas difíceis para chegar a outro lugar (por exemplo, confidencialidade, escalabilidade interna, vínculos de serviço). Essencialmente, a comunidade de partes interessadas precisará ser incentivado a adicionar cadeias infantis - seja financeiramente ou através do desejo de adicionar cadeias funcionais ao relé. Prevê-se que novas cadeias adicionadas terão um impacto muito curto prazo para remoção, permitindo que novas cadeias sejam ser experimentado sem qualquer risco de comprometer a proposta de valor de médio ou longo prazo. 8. Conclusão Descrevemos uma direção que se pode tomar para criar um protocolo multicadeia escalável e heterogêneo com potencial para ser compatível com versões anteriores de determinados protocolos pré-existentes blockchain redes. Sob tal protocolo, os participantes trabalhar com interesse próprio e esclarecido para criar um sistema global que possa ser estendido de maneira excepcionalmente gratuita e sem o custo típico para os usuários existentes que vem de um design padrão blockchain. Nós demos um esboço da arquitetura que seria necessária, incluindo a natureza dos participantes, seus incentivos econômicos e os processos sob os quais eles devem se envolver. Nós temos identificou um projeto básico e discutiu seus pontos fortes e limitações; portanto, temos outras orientações que pode aliviar essas limitações e fornecer mais terreno para uma solução blockchain totalmente escalonável.POLKADOT: VISÃO PARA UMA ESTRUTURA MULTI-CADEIA HETEROGÊNEA ESBOÇO 1 19 8.1. Material faltante e questões abertas. A bifurcação da rede é sempre uma possibilidade devido a implementações divergentes do protocolo. A recuperação de tal condição excepcional não foi discutida. Dado que a rede terá necessariamente um período de finalização diferente de zero, não deve ser um grande problema recuperar-se da bifurcação da cadeia de retransmissão, no entanto, exigirá uma integração cuidadosa no o protocolo de consenso. O confisco de títulos e, inversamente, a provisão de recompensas não foi profundamente explorado. Atualmente assumimos recompensas são fornecidos na base de que o vencedor leva tudo: isso pode não fornecer o melhor modelo de incentivo para os pescadores. Um processo de compromisso-revelação de curto prazo permitiria a muitos pescadores reivindicar o prêmio dando uma distribuição mais justa de recompensas, no entanto, o processo pode levar a latência adicional no descoberta de mau comportamento. 8.2. Agradecimentos. Muito obrigado a todos revisores que ajudaram a colocar isso em uma forma vagamente forma apresentável. Em particular, Peter Czaban, Bjorn Wagner, Ken Kappler, Robert Habermeier, Vitalik Buterin, Reto Trinkler e Jack Petersson. Obrigado a todos as pessoas que contribuíram com ideias ou o início disso, Marek Kotewicz e Aeron Buchanan merecem menção especial. E obrigado a todos pela ajuda ao longo do caminho. Todos os erros são meus. Partes deste trabalho, incluindo pesquisas iniciais sobre algoritmos de consenso, foi financiado em parte pelos britânicos Governo no âmbito do programa Innovate UK.
Giao thức chi tiết
Giao thức có thể được chia đại khái thành ba các bộ phận: cơ chế đồng thuận, giao diện parachain và định tuyến giao dịch liên chuỗi. 6.1. Chuỗi rơle Hoạt động. các chuỗi chuyển tiếp sẽ có thể là một chuỗi tương tự như Ethereum ở chỗ nó dựa trên trạng thái với địa chỉ ánh xạ trạng thái tới tài khoản thông tin, chủ yếu là số dư và (để tránh lặp lại) quầy giao dịch. Việc đặt tài khoản ở đây nhằm đáp ứng một mục đích: cung cấp thông tin kế toán mà danh tính sở hữu số lượng cổ phần trong hệ thống là bao nhiêu.7 Tuy nhiên, sẽ có những khác biệt đáng chú ý: • Hợp đồng không thể triển khai thông qua giao dịch; xuất phát từ mong muốn tránh chức năng ứng dụng trên chuỗi chuyển tiếp, nó sẽ không hỗ trợ triển khai công khai các hợp đồng. • Tính toán việc sử dụng tài nguyên (“gas”) không được tính; vì các chức năng duy nhất có sẵn cho mục đích sử dụng công cộng sẽ được khắc phục, cơ sở lý luận đằng sau việc tính toán khí đốt không còn giữ được nữa. Do đó, một khoản phí cố định sẽ được áp dụng trong mọi trường hợp, cho phép đạt được hiệu suất cao hơn từ bất kỳ thực thi mã động có thể cần phải được thực hiện và một hình thức giao dịch đơn giản hơn. • Chức năng đặc biệt được hỗ trợ cho các hợp đồng được liệt kê cho phép thực hiện tự động và xuất ra thông báo mạng. Trong trường hợp chuỗi chuyển tiếp có VM và nó được dựa trên EVM, nó sẽ có một số sửa đổi để đảm bảo tính đơn giản tối đa. Nó có thể sẽ có một số hợp đồng được xây dựng sẵn (tương tự như ở địa chỉ 1-4 trong Ethereum) để cho phép nền tảng cụ thể nhiệm vụ phải được quản lý bao gồm một hợp đồng đồng thuận, một hợp đồng validator và hợp đồng parachain. Nếu không phải là EVM thì phần phụ trợ WebAssembly [2] (wasm) là lựa chọn thay thế phù hợp nhất; trong trường hợp này tổng thể cấu trúc sẽ tương tự, nhưng sẽ không cần vì các hợp đồng tích hợp với Wasm là mục tiêu khả thi cho các ngôn ngữ có mục đích chung hơn là ngôn ngữ chưa trưởng thành và ngôn ngữ hạn chế cho EVM. Những sai lệch có thể xảy ra khác so với giao thức Ethereum hiện tại là hoàn toàn có thể xảy ra, ví dụ như việc đơn giản hóa định dạng biên nhận giao dịch cho phép thực hiện song song các giao dịch không xung đột trong cùng một khối, như đề xuất cho chuỗi thay đổi Serenity. Có thể, mặc dù không chắc chắn, rằng một thứ giống như Serenity Chuỗi “thuần túy” được triển khai như chuỗi chuyển tiếp, cho phép hợp đồng cụ thể để quản lý những thứ như staking token cân đối hơn là biến nó thành một phần cơ bản của giao thức của chuỗi. Hiện tại, chúng tôi cảm thấy điều này khó có thể xảy ra sẽ cung cấp một sự đơn giản hóa giao thức đủ lớn để đáng giá thêm sự phức tạp và sự không chắc chắn liên quan trong việc phát triển nó. 7Là phương tiện thể hiện số tiền mà một chủ sở hữu nhất định chịu trách nhiệm về tính bảo mật chung của hệ thống, các tài khoản cổ phần này sẽ chắc chắn mã hóa một số giá trị kinh tế. Tuy nhiên, cần hiểu rằng vì không có ý định sử dụng những giá trị đó trong bằng bất kỳ cách nào nhằm mục đích trao đổi hàng hóa và dịch vụ trong thế giới thực, cần lưu ý rằng token không được so sánh với tiền tệ và do đó, chuỗi chuyển tiếp vẫn giữ nguyên triết lý hư vô về các ứng dụng.POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 10 Có một số phần chức năng nhỏ cần thiết để quản lý cơ chế đồng thuận, bộ validator, cơ chế xác thực và parachain. Những cái này có thể được thực hiện cùng nhau theo một giao thức nguyên khối. Tuy nhiên, vì lý do tăng cường tính mô-đun, chúng tôi mô tả đây là “hợp đồng” của chuỗi chuyển tiếp. Điều này nên được hiểu là chúng là đối tượng (theo nghĩa lập trình hướng đối tượng) được quản lý bởi cơ chế đồng thuận của chuỗi chuyển tiếp, nhưng không nhất thiết phải như vậy chúng được định nghĩa là các chương trình có mã opcode giống EVM, cũng như thậm chí chúng có thể được định địa chỉ riêng lẻ thông qua hệ thống tài khoản. 6.2. Hợp đồng đặt cọc. Hợp đồng này duy trì bộ validator. Nó quản lý: • tài khoản nào hiện là validators; • có sẵn để trở thành validator trong thời gian ngắn thông báo; • tài khoản nào đã đặt cược đề cử vào một validator; • thuộc tính của từng loại bao gồm staking khối lượng, tỷ lệ thanh toán và địa chỉ được chấp nhận cũng như danh tính (phiên) ngắn hạn. Nó cho phép một tài khoản đăng ký mong muốn trở thành một validator được liên kết (cùng với các yêu cầu của nó), để đề cử một số danh tính và để các validator được liên kết trước đó đăng ký mong muốn thoát khỏi trạng thái này. Nó cũng bao gồm chính bộ máy dành cho cơ chế xác nhận và chuẩn hóa. 6.2.1. Cổ phần-token Thanh khoản. Nói chung là mong muốn có tổng số staking token càng nhiều càng tốt tham gia vào các hoạt động bảo trì mạng kể từ điều này liên kết trực tiếp an ninh mạng với “vốn hóa thị trường” tổng thể của staking token. Điều này có thể dễ dàng được khuyến khích thông qua việc lạm phát tiền tệ và trao số tiền thu được cho những người tham gia với tư cách validators. Tuy nhiên, làm như vậy sẽ có một vấn đề: nếu token bị khóa trong Hợp đồng đặt cược với hình phạt giảm bớt, làm sao một phần đáng kể có thể vẫn còn đủ thanh khoản để cho phép khám phá giá? Một câu trả lời cho vấn đề này là cho phép một hợp đồng phái sinh chuyển tiếp thẳng, đảm bảo token có thể thay thế được trên token đặt cược cơ bản. Điều này rất khó để sắp xếp một cách không tin cậy. Hơn nữa, các token phái sinh này không thể được đối xử bình đẳng vì cùng một lý do khiến các trái phiếu chính phủ khác nhau của các chính phủ Eurozone không thể thay thế được: ở đó là khả năng tài sản cơ bản thất bại và trở thành vô giá trị. Với các chính phủ khu vực đồng Euro, có thể có một mặc định. Với validator đặt cọc token, validator có thể hành động ác ý và bị trừng phạt. Tuân thủ các nguyên lý của mình, chúng tôi chọn giải pháp đơn giản nhất: không phải tất cả token đều được đặt cược. Điều này có nghĩa là một số tỷ lệ (có lẽ là 20%) trong số token sẽ buộc phải duy trì trạng thái thanh khoản. Mặc dù điều này không hoàn hảo xét từ góc độ bảo mật nhưng nó khó có thể tạo ra sự khác biệt cơ bản trong sự an toàn của mạng; 80% số tiền bồi thường có thể từ việc tịch thu trái phiếu vẫn có thể được thực hiện so với “trường hợp hoàn hảo” 100% staking. Tỷ lệ giữa số tiền đặt cọc và số tiền thanh khoản token có thể được nhắm mục tiêu khá đơn giản thông qua cơ chế đấu giá ngược. Về cơ bản, những người nắm giữ token quan tâm đến việc trở thành validator mỗi người sẽ đăng một lời đề nghị cho hợp đồng staking nêu rõ tỷ lệ thanh toán tối thiểu mà họ sẽ yêu cầu thực hiện một phần. Vào đầu mỗi buổi học (các buổi học sẽ xảy ra thường xuyên, có lẽ thường xuyên như một lần mỗi giờ) validator các vị trí sẽ được lấp đầy theo từng vị trí validator cổ phần và tỷ lệ xuất chi. Một thuật toán có thể vì điều này có nghĩa là sẽ nhận những người có giá chào hàng thấp nhất đại diện cho số cổ phần không cao hơn tổng số cổ phần được nhắm mục tiêu chia cho số lượng vị trí và không thấp hơn giới hạn dưới của một nửa số tiền đó. Nếu các khe không thể lấp đầy, giới hạn dưới có thể được giảm đi nhiều lần bởi một số yếu tố để thỏa mãn. 6.2.2. Đề cử. Có thể đề cử một cách đáng tin cậy những cái staking token thành validator đang hoạt động, mang lại cho chúng trách nhiệm về nhiệm vụ của validator. Đề cử tác phẩm thông qua hệ thống bỏ phiếu phê duyệt. Mỗi người đề cử tương lai có thể đăng hướng dẫn lên hợp đồng staking thể hiện một hoặc nhiều validator danh tính dưới quyền của ai trách nhiệm mà họ sẵn sàng giao phó mối quan hệ của mình. Mỗi phiên, trái phiếu của người đề cử được phân tán để được đại diện bởi một hoặc nhiều validators. Thuật toán phân tán tối ưu hóa cho tập hợp validator có tổng số tương đương trái phiếu. Trái phiếu của người đề cử trở thành trách nhiệm thực sự của validator avà thu được lãi suất hoặc phải gánh chịu một giảm nhẹ hình phạt cho phù hợp. 6.2.3. Tịch thu/đốt trái phiếu. Một số hành vi validator nhất định dẫn đến việc giảm bớt mối quan hệ ràng buộc của họ. Nếu trái phiếu bị giảm xuống dưới mức tối thiểu cho phép, phiên kết thúc sớm và một phiên khác bắt đầu. Danh sách không đầy đủ các hành vi sai trái validator có thể bị trừng phạt bao gồm: • Là thành viên của nhóm parachain không thể cung cấp sự đồng thuận về tính hợp lệ của khối parachain; • chủ động ký xác nhận tính hợp lệ của giấy tờ không hợp lệ khối parachain; • không có khả năng cung cấp tải trọng đầu ra trước đó được bình chọn là có sẵn; • không hoạt động trong quá trình đồng thuận; • xác nhận các khối chuỗi chuyển tiếp trên các nhánh cạnh tranh. Một số trường hợp hành vi sai trái đe dọa tính toàn vẹn của mạng (chẳng hạn như ký các khối parachain không hợp lệ và xác thực nhiều mặt của một fork) và do đó dẫn đến việc bị lưu đày hiệu quả thông qua việc giảm tổng số trái phiếu. trong các trường hợp khác ít nghiêm trọng hơn (ví dụ: không hoạt động trong thỏa thuận đồng thuận quy trình) hoặc những trường hợp trách nhiệm không được phân bổ một cách chính xác (là một phần của một nhóm kém hiệu quả), một phần nhỏ thay vào đó, trái phiếu có thể bị phạt. Trong trường hợp sau, điều này hoạt động tốt với việc rời bỏ nhóm phụ để đảm bảo rằng các nút chịu thiệt hại nhiều hơn đáng kể so với các nút nhân từ bị thiệt hại tài sản thế chấp. Trong một số trường hợp (ví dụ: xác thực nhiều nhánh và không hợp lệ ký khối phụ) validator bản thân họ không thể dễ dàng phát hiện hành vi sai trái của nhau do việc xác minh liên tục của mỗi khối parachain sẽ là một nhiệm vụ quá khó khăn. đây cần tranh thủ sự ủng hộ của các bên bên ngoài quá trình xác nhận để xác minh và báo cáo hành vi sai trái đó. Các bên nhận được phần thưởng khi báo cáo hoạt động đó; thuật ngữ của họ, “ngư dân” bắt nguồn từ sự khó có thể xảy ra về phần thưởng như vậy. Vì những trường hợp này thường rất nghiêm trọng nên chúng tôi hình dung rằng bất kỳ phần thưởng nào cũng có thể được thanh toán dễ dàng từ trái phiếu bị tịch thu. Nói chung, chúng tôi muốn cân bằng việc đốt cháy (tức là giảm xuống không có gì) bằng cách tái phân bổ, thay vì đang cố gắng tái phân bổ bán buôn. Điều này có tác dụng
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 11 tăng giá trị tổng thể của token, bù đắp cho mạng nói chung ở một mức độ nào đó hơn là cụ thể bên tham gia khám phá. Điều này chủ yếu là để đảm bảo an toàn cơ chế: số lượng lớn có liên quan có thể dẫn đến việc khuyến khích hành vi cực đoan và gay gắt ban cho một mục tiêu duy nhất. Nói chung, điều quan trọng là phần thưởng phải đủ lớn để khiến việc xác minh trở nên có giá trị đối với mạng, nhưng không quá lớn để bù đắp chi phí cho việc trả trước một tội phạm "cấp công nghiệp" được tài trợ tốt, được tổ chức tốt hack tấn công vào một số validator không may mắn để ép buộc hành vi sai trái. Bằng cách này, số tiền yêu cầu nói chung sẽ là không lớn hơn mối ràng buộc trực tiếp của người phạm tội validator, kẻo động cơ sai trái phát sinh từ hành vi sai trái và báo cáo bản thân để nhận tiền thưởng. Điều này có thể được giải quyết một cách rõ ràng thông qua yêu cầu trái phiếu trực tiếp tối thiểu để trở thành một validator hoặc ngầm giáo dục những người được đề cử rằng validator với ít trái phiếu được ký gửi sẽ không có động lực lớn để cư xử tốt. 6.3. Cơ quan đăng ký Parachain. Mỗi parachain được xác định trong sổ đăng ký này. Nó là một cấu trúc giống cơ sở dữ liệu tương đối đơn giản và chứa cả thông tin tĩnh và động trên mỗi chuỗi. Thông tin tĩnh bao gồm chỉ số chuỗi (một cách đơn giản số nguyên), cùng với nhận dạng giao thức xác nhận, một phương pháp phân biệt giữa các loại khác nhau của parachain để có thể có được thuật toán xác thực chính xác được điều hành bởi validators được giao nhiệm vụ đưa ra một ứng cử viên hợp lệ. Bằng chứng khái niệm ban đầu sẽ tập trung vào việc đặt các thuật toán xác thực mới vào chính các máy khách, đòi hỏi phải có một phân nhánh cứng của giao thức mỗi lần lớp chuỗi bổ sung đã được thêm vào. Tuy nhiên, cuối cùng, có thể chỉ định thuật toán xác nhận trong một cách vừa nghiêm ngặt vừa hiệu quả để khách hàng có thể có thể làm việc hiệu quả với các parachain mới mà không cần cái nĩa cứng. Một con đường khả thi cho việc này là chỉ định thuật toán xác thực parachain được thiết lập tốt, ngôn ngữ trung lập về nền tảng, được biên dịch nguyên bản như WebAssembly. Nghiên cứu bổ sung là cần thiết để xác định liệu điều này có thực sự khả thi hay không, tuy nhiên nếu vậy, nó có thể mang lại cùng với đó là lợi thế to lớn của việc loại bỏ hard fork mãi mãi. Thông tin động bao gồm các khía cạnh của hệ thống định tuyến giao dịch phải có sự thống nhất toàn cầu như như hàng đợi vào của parachain (được mô tả trong phần 6.6). Cơ quan đăng ký chỉ có thể thêm parachains thông qua bỏ phiếu trưng cầu dân ý đầy đủ; điều này có thể được quản lý nội bộ nhưng nhiều khả năng sẽ được đặt ở bên ngoài hợp đồng trưng cầu dân ý để tạo thuận lợi cho việc tái sử dụng theo các thành phần quản trị tổng quát hơn. Các thông số để yêu cầu bỏ phiếu (ví dụ: bất kỳ số đại biểu cần thiết, đa số bắt buộc) để đăng ký chuỗi bổ sung và các chuỗi khác, nâng cấp hệ thống ít chính thức hơn sẽ được đặt ra trong một “bản chính hiến pháp” nhưng có khả năng tuân theo một cách khá truyền thống con đường, ít nhất là ban đầu. Công thức chính xác không còn nữa phạm vi cho công việc hiện tại, nhưng ví dụ: hai phần ba đại đa số sẽ vượt qua với hơn một phần ba tổng số hệ thống bỏ phiếu tích cực có thể là điểm khởi đầu hợp lý. Các hoạt động bổ sung bao gồm việc đình chỉ và loại bỏ parachains. Việc đình chỉ hy vọng sẽ không bao giờ xảy ra, tuy nhiên nó được thiết kế để ít nhất là một biện pháp bảo vệ có một số vấn đề khó giải quyết trong hệ thống xác thực của parachain. Ví dụ rõ ràng nhất nơi nó có thể cần có sự khác biệt quan trọng về mặt đồng thuận giữa các cách triển khai khiến validator không thể đồng ý về tính hợp lệ hoặc khối. Người xác nhận sẽ được khuyến khích sử dụng triển khai nhiều ứng dụng khách để họ có thể để phát hiện vấn đề như vậy trước khi tịch thu trái phiếu. Vì đình chỉ là một biện pháp khẩn cấp nên nó sẽ dưới sự bảo trợ của validator-bỏ phiếu năng động hơn một cuộc trưng cầu dân ý. Có thể cài đặt lại cả hai từ validator hoặc một cuộc trưng cầu dân ý. Việc loại bỏ hoàn toàn parachain sẽ chỉ đến sau một cuộc trưng cầu dân ý và với điều đó sẽ được yêu cầu thời gian ân hạn đáng kể để cho phép chuyển đổi có trật tự sang hoặc là một chuỗi độc lập hoặc trở thành một phần của chuỗi khác hệ thống đồng thuận. Thời gian ân hạn có thể sẽ là thứ tự các tháng và có thể được đặt ra trên cơ sở perchain trong sổ đăng ký parachain theo thứ tự khác nhau parachains có thể tận hưởng thời gian ân hạn khác nhau tùy theo nhu cầu của họ. 6.4. Niêm phong khối chuyển tiếp. Về bản chất, niêm phong đề cập đến đến quá trình phong thánh hóa; tức là dữ liệu cơ bản biến đổi cái nàoánh xạ bản gốc thành một cái gì đó về cơ bản là duy nhất và có ý nghĩa. Trong chuỗi PoW, niêm phong thực sự là một từ đồng nghĩa với khai thác mỏ. Trong trường hợp của chúng tôi, nó liên quan đến việc thu thập các tuyên bố đã được ký từ validator về tính hợp lệ, tính sẵn có và tính chuẩn mực của một khối chuỗi chuyển tiếp cụ thể và các khối parachain nó đại diện. Cơ chế của thuật toán đồng thuận BFT cơ bản nằm ngoài phạm vi của công việc hiện tại. chúng tôi sẽ thay vào đó hãy mô tả nó bằng cách sử dụng một nguyên thủy giả định một máy trạng thái tạo ra sự đồng thuận. Cuối cùng chúng tôi mong đợi được truyền cảm hứng từ một số sự đồng thuận đầy hứa hẹn BFT các thuật toán trong lõi; Tangaora [9] (một biến thể BFT của Bè [16]), Tendermint [11] và HoneyBadgerBFT [14]. Thuật toán sẽ phải đạt được thỏa thuận song song trên nhiều parachain, do đó khác với thông thường blockchain cơ chế đồng thuận. Chúng tôi cho rằng một lần đạt được sự đồng thuận, chúng tôi có thể ghi lại sự đồng thuận bằng chứng không thể chối cãi có thể được cung cấp bởi bất kỳ ai trong số những người tham gia vào nó. Chúng tôi cũng cho rằng hành vi sai trái trong giao thức nói chung có thể được giảm xuống một lượng nhỏ nhóm chứa những người tham gia có hành vi sai trái để giảm thiểu thiệt hại tài sản thế chấp khi xử lý hình phạt.8 Bằng chứng, ở dạng tuyên bố đã ký của chúng tôi, được đặt cùng nhau trong tiêu đề của khối chuỗi chuyển tiếp với một số trường nhất định khác, nhất là gốc trạng thái và gốc tri giao dịch của chuỗi chuyển tiếp. các niêm phong quá trình mất địa điểm dưới một độc thân tạo sự đồng thuận cơ chế địa chỉ cả hai cái khối chuỗi chuyển tiếp và khối parachains tạo nên một phần nội dung của chuyển tiếp: parachains không được các nhóm phụ của chúng “cam kết” riêng biệt và sau đó được đối chiếu sau này. Điều này dẫn đến một quy trình phức tạp hơn cho chuỗi chuyển tiếp, nhưng cho phép chúng tôi hoàn thành sự đồng thuận của toàn bộ hệ thống trong một giai đoạn duy nhất, giảm thiểu độ trễ và cho phép đối với các yêu cầu về tính sẵn có của dữ liệu khá phức tạp, hữu ích cho quá trình định tuyến dưới đây. 8Các chương trình đồng thuận BFT dựa trên PoS hiện có như Tendermint BFT và Slasher ban đầu đáp ứng các xác nhận này.
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 12 Trạng thái của máy đồng thuận của mỗi người tham gia có thể được mô hình hóa dưới dạng bảng (2 chiều) đơn giản. Mỗi người tham gia (validator) có một tập hợp thông tin, ở dạng các tuyên bố đã ký (“phiếu bầu”) từ những người tham gia khác, liên quan đến từng ứng cử viên khối parachain cũng như ứng cử viên khối chuỗi chuyển tiếp. Tập hợp thông tin gồm hai phần của dữ liệu: Sẵn có: có cái này validator có đi ra thông tin bài đăng giao dịch từ khối này vì vậy họ có thể xác thực chính xác các ứng cử viên parachain trên khối sau không? Họ có thể bỏ phiếu 1 (đã biết) hoặc 0 (chưa biết). Một khi họ bỏ phiếu 1, họ cam kết bỏ phiếu tương tự cho phần còn lại của quá trình này. Phiếu bầu sau đó không tôn trọng điều này là căn cứ để trừng phạt. Hiệu lực: khối parachain có hợp lệ không và là tất cả dữ liệu được tham chiếu bên ngoài (ví dụ: giao dịch) có sẵn? Điều này chỉ liên quan đến validator được chỉ định cho parachain mà họ đang bỏ phiếu. Họ có thể bỏ phiếu 1 (hợp lệ), -1 (không hợp lệ) hoặc 0 (chưa biết). Một khi họ bỏ phiếu khác 0, họ cam kết bỏ phiếu theo cách này cho phần còn lại của quá trình này. Những phiếu bầu sau này không tôn trọng điều này là căn cứ để xử phạt. Tất cả validator phải gửi phiếu bầu; phiếu bầu có thể được gửi lại, đủ điều kiện theo các quy tắc trên. Sự tiến triển của sự đồng thuận có thể được mô hình hóa thành nhiều thuật toán đồng thuận BFT tiêu chuẩn trên mỗi parachain diễn ra song song. Vì những điều này có khả năng bị cản trở bởi một tương đối thiểu số nhỏ các tác nhân độc hại tập trung ở một nhóm parachain duy nhất, có sự đồng thuận chung thiết lập một điểm dừng, hạn chế trường hợp xấu nhất xảy ra bế tắc đối với chỉ một hoặc nhiều khối parachain trống (và một hình phạt dành cho những người có trách nhiệm). Các quy tắc cơ bản về tính hợp lệ của các khối riêng lẻ (cho phép toàn bộ tập hợp validator đạt tới sự đồng thuận về việc nó trở thành ứng cử viên parachain duy nhất được tham chiếu từ rơle chính tắc): • phải có ít nhất hai phần ba số validator bỏ phiếu tích cực và không có phiếu bầu tiêu cực; • phải có hơn một phần ba validator bỏ phiếu ủng hộ tính khả dụng của thông tin hàng đợi đi ra. Nếu có ít nhất một phiếu thuận và ít nhất một phiếu phản đối về tính hợp lệ thì một điều kiện ngoại lệ sẽ được tạo và toàn bộ validator phải bỏ phiếu để xác định nếu có các bên có ác ý hoặc nếu có sự cố tình cờ cái nĩa. Ngoài loại phiếu hợp lệ và không hợp lệ, còn có loại phiếu bầu thứ ba được phép, tương đương với việc bỏ phiếu cho cả hai, nghĩa là nút có những ý kiến trái ngược nhau. Điều này có thể là do chủ sở hữu của nút đang chạy nhiều triển khai không đồng ý, cho thấy có thể có sự mơ hồ trong giao thức. Sau khi tất cả phiếu bầu được tính từ bộ validator đầy đủ, nếu ý kiến thua cuộc ít nhất cũng có một tỷ lệ nhỏ nào đó (so với được tham số hóa; nhiều nhất là một nửa, có lẽ ít hơn đáng kể) số phiếu của ý kiến thắng cuộc thì được coi là là một sự phân nhánh parachain ngẫu nhiên và parachain đó sẽ tự động bị đình chỉ khỏi quá trình đồng thuận. Nếu không, chúng tôi cho rằng đó là hành động ác ý và trừng phạt thiểu số bỏ phiếu cho ý kiến bất đồng. Kết luận là một tập hợp các chữ ký chứng minh tính kinh điển. Khối chuỗi chuyển tiếp sau đó có thể được niêm phong và quá trình niêm phong khối tiếp theo bắt đầu. 6.5. Những cải tiến cho khối chuyển tiếp niêm phong. Trong khi phương pháp niêm phong này mang lại sự đảm bảo chắc chắn cho hoạt động của hệ thống, nhưng nó không mở rộng quy mô một cách đặc biệt vì thông tin chính của mỗi parachain phải có tính khả dụng được đảm bảo bởi hơn một phần ba tổng số validator. Điều này có nghĩa là dấu ấn trách nhiệm của mỗi validator phát triển khi có nhiều chuỗi được thêm vào. Mặc dù tính sẵn có của dữ liệu trong các mạng đồng thuận mở về cơ bản là một vấn đề chưa được giải quyết, có nhiều cách để giảm thiểu chi phí hoạt động trên các nút validator. Một điều đơn giản giải pháp là nhận ra rằng trong khi validator phải gánh vác trách nhiệm về tính sẵn có của dữ liệu, họ không thực sự cần phải lưu trữ, truyền đạt hoặc sao chép dữ liệu. Kho chứa dữ liệu thứ cấp, có thể liên quan đến (hoặc thậm chí chính tương tự) những người đối chiếu biên soạn dữ liệu này, có thể quản lý nhiệm vụ đảm bảo tính khả dụng với validator cung cấp một phần tiền lãi/thu nhập của họ để thanh toán. Tuy nhiên, mặc dù điều này có thể mang lại khả năng mở rộng trung gian nhưng nó vẫn không giúp giải quyết được vấn đề cơ bản; kể từ khi việc thêm nhiều chuỗi nói chung sẽ yêu cầu thêm validators, mức tiêu thụ tài nguyên mạng liên tục (đặc biệt là về băng thông) sẽ tăng theo bình phương của cáidây chuyền, một tài sản không thể bảo vệ được về lâu dài. Cuối cùng, chúng ta có xu hướng tiếp tục đập đầu mình chống lại giới hạn cơ bản nói rằng đối với một mạng lưới đồng thuận được coi là có sẵn an toàn, các yêu cầu về băng thông hiện tại có tổng số validators lần tổng thông tin đầu vào. Điều này là do mạng không đáng tin cậy không có khả năng phân phối hợp lý nhiệm vụ lưu trữ dữ liệu trên nhiều nút. ngoài nhiệm vụ xử lý được phân phối rõ ràng. 6.5.1. Giới thiệu độ trễ. Một phương tiện để làm dịu đi điều này quy tắc là để nới lỏng khái niệm về tính tức thời. Bằng cách yêu cầu 33%+1 validator bỏ phiếu cho tính khả dụng cuối cùng chứ không phải ngay lập tức, chúng tôi có thể tận dụng tốt hơn việc truyền dữ liệu theo cấp số nhân và thậm chí giúp đạt được mức cao nhất trong trao đổi dữ liệu. Một sự bình đẳng hợp lý (mặc dù chưa được chứng minh) có thể là: (1) độ trễ = người tham gia × chuỗi Theo mô hình hiện tại, quy mô của hệ thống với số lượng chuỗi để đảm bảo rằng quá trình xử lý được thực hiện phân phối; vì mỗi chuỗi sẽ yêu cầu ít nhất một validator và chúng tôi cố định chứng thực tính khả dụng thành một hằng số tỷ lệ validator giây thì số người tham gia sẽ tăng lên tương tự với số lượng chuỗi. Chúng tôi kết thúc với: (2) độ trễ = kích thước2 Có nghĩa là khi hệ thống phát triển, băng thông được yêu cầu và độ trễ cho đến khi biết được tính khả dụng trên toàn mạng. mạng, cũng có thể được mô tả là số của các khối trước khối cuối cùng, tăng theo bình phương của nó. Đây là một yếu tố tăng trưởng đáng kể và có thể trở thành vật cản đường đáng chú ý và buộc chúng ta đi vào các mô hình “không phẳng” chẳng hạn như soạn một số “Polkadotes” thành một hệ thống phân cấp để định tuyến các bài đăng đa cấp thông qua một cây chuỗi chuyển tiếp.
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 13 6.5.2. Sự tham gia của công chúng. Một hướng đi khả thi hơn là huy động sự tham gia của công chúng vào quá trình này thông qua một hệ thống khiếu nại vi mô. Tương tự như các ngư dân, có có thể là các bên bên ngoài để giám sát validator những người khiếu nại sự sẵn có. Nhiệm vụ của họ là tìm ra một người dường như không thể chứng minh được khả năng sẵn sàng đó. Khi làm như vậy họ có thể gửi khiếu nại vi mô tới validators khác. PoW hoặc một trái phiếu đặt cược có thể được sử dụng để giảm thiểu cuộc tấn công sybil điều này sẽ khiến hệ thống phần lớn trở nên vô dụng. 6.5.3. Người bảo lãnh sẵn có. Con đường cuối cùng sẽ là chỉ định một bộ validator ngoại quan thứ hai là “khả năng sẵn sàng người bảo lãnh”. Chúng sẽ được liên kết giống như validators bình thường và thậm chí có thể được lấy từ cùng một bộ (mặc dù nếu vậy, chúng sẽ được chọn trong thời gian dài, ít nhất là mỗi phiên). Không giống như validator thông thường, chúng sẽ không chuyển đổi giữa các parachain mà thay vào đó sẽ thành lập một nhóm duy nhất để chứng thực sự sẵn có của tất cả dữ liệu liên chuỗi quan trọng. Điều này có ưu điểm là nới lỏng sự tương đương giữa người tham gia và chuỗi. Về cơ bản, chuỗi có thể phát triển (cùng với chuỗi ban đầu validator được đặt), trong khi những người tham gia, và cụ thể là những người tham gia vào chứng thực tính sẵn có của dữ liệu, có thể duy trì ở mức độ tuyến tính ít nhất và có thể là hằng số. 6.5.4. Tùy chọn Collator. Một khía cạnh quan trọng của điều này Hệ thống là đảm bảo rằng có sự lựa chọn lành mạnh các người đối chiếu tạo các khối trong bất kỳ parachain cụ thể nào. Nếu một người đối chiếu duy nhất thống trị một parachain sau đó một số cuộc tấn công trở nên khả thi hơn vì khả năng thiếu sự sẵn có của dữ liệu bên ngoài sẽ ít rõ ràng hơn. Một lựa chọn là cân các khối parachain một cách giả tạo một cơ chế giả ngẫu nhiên để hỗ trợ nhiều loại đối chiếu. Trong trường hợp đầu tiên, chúng tôi sẽ yêu cầu như một phần của cơ chế đồng thuận mà validator ủng hộ Các ứng cử viên khối parachain được xác định là “nặng hơn”. Tương tự, chúng ta phải khuyến khích validator cố gắng đề xuất khối nặng nhất mà họ có thể tìm thấy—đây có thể là được thực hiện thông qua việc chia một phần phần thưởng tương ứng với trọng lượng của ứng cử viên của họ. Để đảm bảo rằng các nhà đối chiếu được hưởng sự công bằng hợp lý cơ hội ứng cử viên của họ được chọn là người chiến thắng ứng cử viên đồng thuận, chúng tôi đưa ra trọng số cụ thể của Ứng viên khối parachain xác định dựa trên một hàm ngẫu nhiên được kết nối với mỗi bộ đối chiếu. Ví dụ, lấy thước đo khoảng cách XOR giữa địa chỉ của đối chiếu và một số số giả ngẫu nhiên được bảo mật bằng mật mã được xác định gần với điểm của khối được tạo (một “vé trúng thưởng” mang tính khái niệm). Điều này mang lại hiệu quả cho mỗi người đối chiếu (hoặc cụ thể hơn là địa chỉ của mỗi người đối chiếu) a cơ hội ngẫu nhiên để khối ứng cử viên của họ “chiến thắng” tất cả những người khác. Để giảm thiểu cuộc tấn công sybil của một người đối chiếu duy nhất “khai thác” một địa chỉ gần với vé trúng thưởng và do đó mỗi khối được yêu thích, chúng tôi sẽ thêm một số quán tính vào địa chỉ của người đối chiếu. Điều này có thể đơn giản như việc yêu cầu họ để có số tiền cơ bản trong địa chỉ. Thêm nữa cách tiếp cận tao nhã sẽ là cân nhắc sự gần gũi với vé trúng thưởng với số tiền đậu tại địa chỉ trong câu hỏi. Trong khi việc lập mô hình vẫn chưa được thực hiện, rất có thể cơ chế này cho phép thậm chí rất các bên liên quan nhỏ đóng góp với tư cách là người đối chiếu. 6.5.5. Khối thừa cân. Nếu bộ validator bị xâm phạm, họ có thể tạo và đề xuất một khối, tuy nhiên hợp lệ, mất nhiều thời gian để thực hiện và xác thực. Đây là sự cố vì nhóm validator có thể hợp lý tạo thành một khối mà phải mất một thời gian rất dài để thực thi trừ khi một số thông tin cụ thể đã được biết cho phép cắt ngắn, ví dụ: bao thanh toán lớn nguyên tố. Nếu một người đối chiếu biết thông tin đó thì họ sẽ có lợi thế rõ ràng trong việc có được các ứng cử viên được chấp nhận miễn là những người khác đang bận xử lý khối cũ. Chúng tôi gọi những khối này là thừa cân. Việc bảo vệ chống lại việc validator gửi và xác thực các khối này phần lớn có cùng chiêu bài như đối với các khối không hợp lệ, mặc dù có một cảnh báo bổ sung: Vì thời gian thực hiện một khối (và do đó trạng thái của nó là thừa cân) mang tính chủ quan, kết quả cuối cùng của cuộc bỏ phiếu về hành vi sai trái về cơ bản sẽ rơi vào ba phe. một khả năng là khối đó chắc chắn không nặng— trong trường hợp này hơn hai phần ba tuyên bố rằng họ có thể thực thi khối trong một số giới hạn (ví dụ: 50% tổng thời gian được phép giữa các khối). Một điều nữa là khối là dchắc chắn là thừa cân—điều này sẽ xảy ra nếu nhiều hơn hai phần ba tuyên bố rằng họ không thể thực thi khối trong giới hạn nói trên. Một khả năng cuối cùng là khá bình đẳng sự chia rẽ quan điểm giữa validators. Trong trường hợp này, chúng ta có thể chọn thực hiện một số hình phạt tương xứng. Để đảm bảo validator có thể dự đoán khi nào họ có thể đề xuất một khối thừa cân, có thể hợp lý nếu yêu cầu họ công bố thông tin về hiệu suất của chính họ đối với từng khối. Trong một khoảng thời gian đủ dài, điều này sẽ cho phép họ lập hồ sơ tốc độ xử lý của mình so với những người ngang hàng sẽ đánh giá họ. 6.5.6. Bảo hiểm Collator. Vẫn còn một vấn đề đối với validators: không giống như mạng PoW, để kiểm tra khối để có hiệu lực, họ phải thực sự thực hiện các giao dịch trong đó. Những người đối chiếu độc hại có thể cung cấp các khối không hợp lệ hoặc thừa cân cho validator khiến họ đau buồn (lãng phí nguồn lực của họ) và đòi hỏi chi phí cơ hội tiềm tàng đáng kể. Để giảm thiểu điều này, chúng tôi đề xuất một chiến lược đơn giản về một phần của validators. Đầu tiên, các ứng cử viên khối parachain đã gửi tới validator phải được ký từ tài khoản chuỗi chuyển tiếp bằng tiền; nếu không thì validator sẽ bị loại bỏ nó ngay lập tức. Thứ hai, các ứng cử viên như vậy nên được sắp xếp thứ tự ưu tiên bằng cách kết hợp (ví dụ: phép nhân) của số tiền trong tài khoản lên đến một giới hạn nhất định, số khối trước đó mà đối chiếu đã đề xuất thành công trong quá khứ (chưa kể bất kỳ khối nào trước đó hình phạt), và yếu tố gần gũi với chiến thắng vé như đã thảo luận trước đó. Mũ phải giống nhau như số tiền bồi thường mang tính trừng phạt được trả cho validator trong vụ án trong số họ gửi một khối không hợp lệ. Để ngăn cản người cộng tác gửi các ứng cử viên bị chặn không hợp lệ hoặc thừa cân tới validator, bất kỳ validator nào cũng có thể đặt vào khối tiếp theo một giao dịch bao gồm khối vi phạm cáo buộc hành vi sai trái dẫn đến việc chuyển một phần hoặc toàn bộ số tiền vào tài khoản của người đối chiếu có hành vi sai trái. tài khoản cho người bị hại validator. Loại giao dịch này chạy trước bất kỳ giao dịch nào khác để đảm bảo người đối chiếu không thể rút tiền trước khi bị trừng phạt. Số lượng của tiền được chuyển dưới dạng thiệt hại là một tham số động
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 14 được mô hình hóa nhưng có thể sẽ là một phần của phần thưởng khối validator để phản ánh mức độ đau buồn gây ra. Đến ngăn chặn validator độc hại tự ý tịch thu quỹ của người cộng tác, người cộng tác có thể kháng cáo quyết định của validator với bồi thẩm đoàn gồm validator được chọn ngẫu nhiên để đổi lại để đặt một khoản tiền gửi nhỏ. Nếu họ có lợi cho validator, họ sẽ tiêu hết số tiền đặt cọc. Nếu không, tiền đặt cọc được trả lại và validator bị phạt (vì validator ở vị trí hình vòm hơn nhiều, mức phạt sẽ có thể là khá nặng). 6.6. liên chuỗi Giao dịch Định tuyến. liên chuỗi định tuyến giao dịch là một trong những công việc bảo trì thiết yếu nhiệm vụ của chuỗi chuyển tiếp và validator của nó. Đây là logic chi phối cách một giao dịch được đăng (thường được rút ngắn thành “đăng”) để trở thành đầu ra mong muốn từ một parachain nguồn trở thành đầu vào không thể thương lượng của một parachain đích khác mà không có bất kỳ sự tin tưởng nào yêu cầu. Chúng tôi chọn từ ngữ ở trên một cách cẩn thận; đáng chú ý là chúng tôi không yêu cầu phải có giao dịch trong nguồn parachain đã phê chuẩn rõ ràng bài đăng này. duy nhất những hạn chế mà chúng tôi đặt ra cho mô hình của mình là parachains phải cung cấp, đóng gói như một phần của khối tổng thể của họ xử lý đầu ra, các bài đăng là kết quả của việc thực thi khối. Những bài đăng này được cấu trúc như một số hàng đợi FIFO; cái số lượng danh sách được gọi là cơ sở định tuyến và có thể khoảng 16. Đáng chú ý, con số này thể hiện số lượng của parachains mà chúng ta có thể hỗ trợ mà không cần phải dùng đến định tuyến nhiều pha. Ban đầu, Polkadot sẽ hỗ trợ việc này loại định tuyến trực tiếp, tuy nhiên chúng tôi sẽ phác thảo một cách có thể quá trình định tuyến nhiều pha (“siêu định tuyến”) như một phương tiện mở rộng quy mô vượt xa nhóm parachain ban đầu. Chúng tôi giả sử đó tất cả người tham gia biết cái các nhóm con cho hai khối tiếp theo n, n + 1. Tóm lại, Hệ thống định tuyến trải qua các giai đoạn sau: • CollatorS: Liên hệ với các thành viên của V alidators[n][S] • Đối chiếu: CHO MỖI nhóm con: đảm bảo tại ít nhất 1 thành viên của V alidators[n][s] có liên hệ • Người hợp tác: ĐỐI VỚI MỖI nhóm con: giả sử egress[n −1][s][S] có sẵn (tất cả bài đăng đến dữ liệu đến 'S' từ khối cuối cùng) • Người hợp tác: Soạn đề cử khối b cho S: (b.header, b.ext, b.proof, b.receipt, b.egress) • Người hợp tác: Gửi bằng chứng thông tin proof[S] = (b.header, b.ext, b.proof, b.receipt) thành Trình xác thực V[n][S] • CollatorS: Đảm bảo dữ liệu giao dịch bên ngoài b.ext được cung cấp cho những người đối chiếu khác và validators • Người hợp tác: CHO MỖI nhóm con s: Gửi đi ra thông tin đi ra[n][S][s] = (b.header, b.receipt, b.egress[s]) để cái nhận được nhóm phụ thành viên của tiếp theo khối Trình xác thực V[n + 1][s] • V alidatorV : Kết nối trước tất cả các thành viên cùng tập hợp đối với khối tiếp theo: đặt N = Chuỗi[n + 1][V ]; kết nối tất cả validators v sao cho Chuỗi[n + 1][v] = N • V alidatorV : Đối chiếu tất cả dữ liệu nhập vào cho việc này khối: CHO MỖI nhóm con s: Truy xuất egress[n −1][s][Chain[n][V ]], lấy từ validators v khác sao cho Chain[n][v] = Chain[n][V ]. Có thể đi qua các validator khác được chọn ngẫu nhiên để làm bằng chứng cho nỗ lực. • V alidatorV : Chấp nhận bằng chứng ứng cử viên cho việc này bằng chứng khối[Chuỗi[n][V ]]. Hiệu lực của khối biểu quyết • V alidatorV : Chấp nhận dữ liệu đầu ra của ứng viên cho khối tiếp theo: CHO MỖI nhóm con, chấp nhận đi ra[n][s][N]. Tính khả dụng của khối bỏ phiếu đầu ra; xuất bản lại giữa những validators quan tâm sao cho Chuỗi[n + 1][v] = Chuỗi[n + 1][V ]. • V alidatorV : ĐẾN ĐẾN ĐỒNG Ý Trong đó: egress[n][from][to] là hàng đợi đi ra hiện tại thông tin cho các bài đăng từ parachain ‘from‘, đến parachain ‘to‘ trong số khối ‘n‘. CollatorS là một công cụ đối chiếu cho parachain S. V alidators[n][s] là tập hợp validators cho parachain s ở số khối n. Ngược lại, Chain[n][v] là parachain mà validator v được gán trên số khối n. block.egress[to] là lối ra hàng bài đăng từ một số khối khối parachain có đích đến là parachain. Vì người đối chiếu thu phí (giao dịch) dựa trên các khối của họ trở thành chuẩn, họ được khuyến khích đảm bảo rằng đối với mỗi đích đến của khối tiếp theo, nhóm con các thành viên được thông báo về hàng đợi đi ra từ hiện tại khối. Người xác thực chỉ được khuyến khích để hình thành sự đồng thuận về một khối (parachain), vì vậy họ ít quan tâm đến khối đối chiếu nào cuối cùng sẽ trở thành chuẩn. trong về nguyên tắc, validator có thể hình thành lòng trung thành với người đối chiếu và âm mưu làm giảm cơ hội của những người đối chiếu khác' các khối trở thành chuẩn, tuy nhiên điều này vừa khó khăn sắp xếp do chọn ngẫu nhiênhành động của validator giây cho parachains và có thể được bảo vệ bằng cách giảm phí phải trả cho các khối parachain tồn tại quá trình đồng thuận. 6.6.1. Tính sẵn có của dữ liệu bên ngoài. Đảm bảo parachain dữ liệu bên ngoài thực sự có sẵn là một vấn đề lâu năm với các hệ thống phi tập trung nhằm phân phối khối lượng công việc trên mạng lưới. Trọng tâm của vấn đề là sự sẵn có vấn đề nói rằng vì không thể tạo bằng chứng không tương tác về tính khả dụng cũng như bất kỳ loại nào bằng chứng về tính không khả dụng để hệ thống BFT hoạt động bình thường xác nhận bất kỳ quá trình chuyển đổi nào có tính chính xác phụ thuộc vào sự sẵn có của một số dữ liệu bên ngoài, số lượng tối đa của các nút Byzantine có thể chấp nhận được, cộng với một, của hệ thống phải chứng thực dữ liệu có sẵn. Để hệ thống có thể mở rộng quy mô đúng cách, như Polkadot, điều này gây ra sự cố: nếu tỷ lệ cố định validators phải chứng thực sự sẵn có của dữ liệu và giả sử validator thực sự muốn lưu trữ dữ liệu trước khi xác nhận rằng nó có sẵn, thì làm cách nào để chúng ta tránh được vấn đề về yêu cầu băng thông/lưu trữ ngày càng tăng theo kích thước hệ thống (và do đó là số validators)? Một câu trả lời có thể là có một bộ riêng trong số validators (người bảo đảm tính sẵn có), có đơn đặt hàng tăng lên tuyến tính với kích thước tổng thể là Polkadot. Đây là được mô tả trong 6.5.3. Chúng tôi cũng có một thủ thuật phụ. Với tư cách là một nhóm, những người đối chiếu có động lực nội tại để đảm bảo rằng tất cả dữ liệu đều được có sẵn cho parachain đã chọn của họ vì nếu không có nó thì họ không thể tạo thêm các khối để từ đó họ có thể thu phí giao dịch. Những người cộng tác cũng tạo thành một nhóm, thành viên trong đó rất đa dạng (do tính chất ngẫu nhiên của parachain validator nhóm) không tầm thường để tham gia và dễ dàng
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 15 để chứng minh. Do đó, các nhà đối chiếu gần đây (có lẽ trong số vài nghìn khối cuối cùng) được phép đưa ra các thách thức đối với sự sẵn có của dữ liệu bên ngoài cho một parachain cụ thể chặn tới validators để có một trái phiếu nhỏ. Người xác thực phải liên hệ với những người thuộc nhóm phụ validator có vẻ vi phạm đã làm chứng và thu thập cũng như trả lại dữ liệu cho người đối chiếu hoặc chuyển lên cấp trên vấn đề bằng cách chứng minh sự thiếu sẵn có (từ chối trực tiếp cung cấp dữ liệu được coi là hành vi phạm tội tịch thu trái phiếu, do đó hành vi sai trái validator có thể sẽ chỉ ngắt kết nối) và liên hệ với validators khác để chạy thử nghiệm tương tự. Trong trường hợp sau, trái phiếu thế chấp được trả lại. Khi đã đạt đến số đại biểu validator người có thể đưa ra những lời chứng thực không có sẵn như vậy, họ sẽ được giải phóng, nhóm phụ có hành vi sai trái sẽ bị trừng phạt và khối được hoàn nguyên. 6.6.2. Định tuyến bài viết. Mỗi tiêu đề parachain bao gồm một đi ra-trie-root; đây là gốc của một thử nghiệm có chứa các thùng cơ sở định tuyến, mỗi thùng là một danh sách được nối của bài viết đi ra. Bằng chứng Merkle có thể được cung cấp trên parachain validators để chứng minh rằng một parachain cụ thể khối có một hàng đợi đầu ra cụ thể cho một parachain đích cụ thể. Khi bắt đầu xử lý một khối parachain, mỗi khối hàng đợi đầu ra của parachain khác bị ràng buộc cho khối nói trên là đã được hợp nhất vào hàng đợi vào của khối của chúng tôi. Chúng tôi cho rằng mạnh mẽ, có lẽ là CSPR9, thứ tự khối phụ để đạt được một hoạt động xác định không mang lại sự thiên vị giữa bất kỳ ghép nối khối parachain. Collators tính toán hàng đợi mới và rút hết hàng đợi đi ra theo parachain logic. Nội dung của hàng đợi vào được viết rõ ràng vào khối parachain. Điều này có hai mục đích chính: đầu tiên, điều đó có nghĩa là parachain có thể được đồng bộ hóa một cách đáng tin cậy và tách biệt với các parachain khác. Thứ hai, nó đơn giản hóa việc hậu cần dữ liệu nên toàn bộ quá trình xâm nhập hàng đợi không thể được xử lý trong một khối duy nhất; validators và người đối chiếu có thể xử lý các khối sau mà không cần phải tìm nguồn dữ liệu đặc biệt của hàng đợi. Nếu hàng đợi vào của parachain vượt quá ngưỡng số tiền ở cuối quá trình xử lý khối, sau đó nó được đánh dấu đã bão hòa trên chuỗi chuyển tiếp và không có thông báo nào khác có thể được thực hiện được chuyển đến nó cho đến khi nó được thông quan. Bằng chứng Merkle là được sử dụng để chứng minh tính chính xác của hoạt động của bộ đối chiếu trong bằng chứng của khối parachain. 6.6.3. Phê bình. Một sai sót nhỏ liên quan đến cơ bản này cơ chế là cuộc tấn công sau bom. Đây là nơi tất cả parachains gửi số lượng bài viết tối đa có thể đến một parachain cụ thể. Trong khi điều này ràng buộc mục tiêu hàng đợi vào cùng một lúc, không có thiệt hại nào xảy ra nhiều lần một cuộc tấn công DoS giao dịch tiêu chuẩn. Hoạt động bình thường, với bộ thiết bị đồng bộ tốt và trình đối chiếu không độc hại và validators, dành cho N parachain, Tổng cộng N × M validator số bộ đối chiếu và L trên mỗi parachain, chúng tôi có thể chia nhỏ tổng đường dẫn dữ liệu trên mỗi khối thành: Trình xác thực: M −1+L+L: M −1 cho validators khác trong bộ parachain, L cho mỗi bộ đối chiếu cung cấp khối parachain ứng cử viên và L thứ hai cho mỗi bộ đối chiếu của khối tiếp theo yêu cầu tải trọng đầu ra của khối trước đó. (Cái sau thực sự giống trường hợp xấu nhất hoạt động vì có khả năng các nhà đối chiếu sẽ chia sẻ những điều đó dữ liệu.) Collator: M +kN: M để kết nối với từng liên quan khối parachain validator, kN để gieo tải trọng đầu ra vào một số tập hợp con của mỗi nhóm parachain validator cho khối tiếp theo (và có thể một số đối chiếu được ưa thích). Như vậy, các đường dẫn dữ liệu trên mỗi nút phát triển tuyến tính với độ phức tạp tổng thể của hệ thống. Trong khi đây là hợp lý, vì hệ thống có quy mô thành hàng trăm hoặc hàng nghìn parachain, một số độ trễ giao tiếp có thể được hấp thụ để đổi lấy tốc độ tăng trưởng phức tạp thấp hơn. Trong trường hợp này, thuật toán định tuyến nhiều pha có thể được sử dụng để giảm số lượng đường truyền tức thời với chi phí giới thiệu bộ đệm lưu trữ và độ trễ. 6.6.4. Định tuyến siêu khối. Định tuyến siêu khối là một cơ chế có thể được xây dựng chủ yếu như một phần mở rộng cho cơ chế định tuyến cơ bản được mô tả ở trên. Về cơ bản, thay vì phát triển khả năng kết nối nút bằng số lượng nút parachain và nút nhóm phụ, chúng tôi chỉ phát triển với logarit của parachains. Bài viết có thể chuyển tiếp giữa hàng đợi của một số parachains đang trên đường đến khâu giao hàng cuối cùng. Bản thân việc định tuyến là xác định và đơn giản. Chúng tôi bắt đầu bằng giới hạn số lượng thùng trong hàng đợi vào/ra; thay vì là tổng số parachain, chúng làcơ sở định tuyến (b) . Điều này sẽ được cố định là số thay đổi của parachain, với số mũ định tuyến (e) thay vào đó được nâng lên. Theo mô hình này, khối lượng tin nhắn của chúng tôi phát triển với O(be), với đường đi không đổi và độ trễ (hoặc số khối cần thiết để phân phối) với O(e). Mô hình định tuyến của chúng tôi là một siêu khối có kích thước e, với mỗi cạnh của khối lập phương có b vị trí có thể. Mỗi khối, chúng tôi định tuyến tin nhắn dọc theo một trục. Chúng tôi luân phiên trục theo kiểu vòng tròn, do đó đảm bảo thời gian giao hàng trong trường hợp xấu nhất của các khối e. Là một phần của quá trình xử lý parachain, liên kết nước ngoài các tin nhắn được tìm thấy trong hàng đợi đi vào sẽ được chuyển ngay đến thùng của hàng đợi đi ra thích hợp, với điều kiện là số khối hiện tại (và do đó kích thước định tuyến). Cái này quá trình yêu cầu truyền dữ liệu bổ sung cho mỗi bước nhảy trên đường giao hàng, tuy nhiên bản thân đây cũng là một vấn đề có thể được giảm thiểu bằng cách sử dụng một số phương tiện thay thế phân phối tải trọng dữ liệu và chỉ bao gồm một tài liệu tham khảo, thay vì toàn bộ tải trọng của bài đăng trong lần thử sau. Một ví dụ về định tuyến siêu khối cho hệ thống với 4 parachain, b = 2 và e = 2 có thể là: Giai đoạn 0, trên mỗi tin nhắn M: • sub0: nếu Mdest ∈{2, 3} thì sendTo(2) nếu không giữ nguyên • sub1: nếu Mdest ∈{2, 3} thì sendTo(3) nếu không giữ nguyên • sub2: nếu Mdest ∈{0, 1} thì sendTo(0) nếu không giữ nguyên • sub3: nếu Mdest ∈{0, 1} thì sendTo(1) nếu không giữ nguyên Giai đoạn 1, trên mỗi tin nhắn M: • sub0: nếu Mdest ∈{1, 3} thì sendTo(1) nếu không giữ nguyên • sub1: nếu Mdest ∈{0, 2} thì sendTo(0) nếu không giữ nguyên • sub2: nếu Mdest ∈{1, 3} thì sendTo(3) nếu không giữ nguyên • sub3: nếu Mdest ∈{0, 2} thì sendTo(2) nếu không giữ nguyên Hai chiều ở đây dễ dàng được coi là chiều đầu tiên hai bit của chỉ mục đích; đối với khối đầu tiên, chỉ bit bậc cao hơn được sử dụng. Giao dịch khối thứ hai với bit bậc thấp. Một khi cả hai xảy ra (tùy ý order) thì bài viết sẽ được định tuyến. 9 giả ngẫu nhiên an toàn bằng mật mã
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 16 6.6.5. Tối đa hóa sự may mắn. Một sự thay đổi cơ bản đề xuất sẽ có tổng số cố định là c2 −c validators, với c−1 validators trong mỗi nhóm phụ. Mỗi khối, thay vì đang có sự phân vùng lại không có cấu trúc của validators giữa các parachain, thay vào đó cho từng nhóm con parachain, mỗi validator sẽ được gán cho một địa chỉ duy nhất và khác nhau nhóm con parachain trên khối sau. Điều này sẽ dẫn đến bất biến giữa hai khối bất kỳ, đối với bất kỳ khối nào hai cặp parachain, tồn tại hai validators đã hoán đổi trách nhiệm của parachain. Mặc dù điều này không thể được sử dụng để đạt được sự đảm bảo tuyệt đối về tính khả dụng (một validator thỉnh thoảng sẽ ngừng hoạt động, ngay cả khi nhân từ), tuy nhiên nó có thể tối ưu hóa trường hợp chung. Cách tiếp cận này không phải là không có biến chứng. Việc bổ sung parachain cũng sẽ đòi hỏi phải tổ chức lại của bộ validator. Hơn nữa, số validator, được gắn với bình phương của số lượng parachain, ban đầu sẽ bắt đầu rất nhỏ và cuối cùng phát triển xa quá nhanh, trở nên không thể trụ được sau khoảng 50 parachain. Không có vấn đề nào trong số này là vấn đề cơ bản. Trong trường hợp đầu tiên, việc sắp xếp lại các bộ validator là điều cần phải làm dù sao cũng được thực hiện thường xuyên. Về kích thước của validator được đặt, khi quá nhỏ, nhiều validator có thể được chỉ định cho cùng một parachain, áp dụng hệ số nguyên cho tổng cộng là validator giây. Cơ chế định tuyến nhiều pha như Định tuyến Hypercube, được thảo luận trong phần 6.6.4 sẽ giảm bớt yêu cầu về số lượng lớn validators khi có một số lượng lớn các chuỗi. 6.7. Xác thực Parachain. Mục đích chính của validator là để chứng minh, với tư cách là một tác nhân có mối quan hệ tốt, rằng hoạt động của parachain khối là hợp lệ, bao gồm nhưng không giới hạn ở bất kỳ chuyển đổi trạng thái nào, bao gồm mọi giao dịch bên ngoài, việc thực hiện bất kỳ bài đăng đang chờ nào trong hàng đợi vào và trạng thái cuối cùng của hàng đợi đi ra. Quá trình này khá đơn giản. Khi validator đã niêm phong khối trước đó, chúng sẽ miễn phí bắt đầu làm việc để cung cấp khối parachain ứng viên ứng cử viên cho vòng đồng thuận tiếp theo. Ban đầu, validator tìm thấy ứng viên khối parachain thông qua bộ đối chiếu parachain (mô tả tiếp theo) hoặc một trong số đồngvalidator của nó. Dữ liệu ứng cử viên khối parachain bao gồm tiêu đề của khối, tiêu đề của khối trước đó, bất kỳ dữ liệu đầu vào bên ngoài nào được bao gồm (đối với Ethereum và Bitcoin, dữ liệu đó sẽ được gọi là giao dịch, tuy nhiên về nguyên tắc, chúng có thể bao gồm các cấu trúc dữ liệu tùy ý cho các mục đích tùy ý), dữ liệu hàng đợi đầu ra và dữ liệu nội bộ để chứng minh tính hợp lệ của quá trình chuyển đổi trạng thái (đối với Ethereum đây sẽ là các nút trie trạng thái/lưu trữ khác nhau cần thiết để thực hiện mỗi giao dịch). Bằng chứng thực nghiệm cho thấy tập dữ liệu đầy đủ này cho khối Ethereum gần đây nhiều nhất là vài trăm KiB. Đồng thời, nếu chưa thực hiện thì validator sẽ là cố gắng truy xuất thông tin liên quan đến quá trình chuyển đổi của khối trước đó, ban đầu từ khối trước đó validator giây trở đi từ tất cả validator ký kết sự sẵn có của dữ liệu. Khi validator đã nhận được khối ứng cử viên như vậy, sau đó họ xác nhận nó tại địa phương. Quá trình xác thực được chứa trong mô-đun validator của lớp parachain, một mô-đun phần mềm nhạy cảm với sự đồng thuận phải được viết đối với bất kỳ việc triển khai Polkadot nào (mặc dù về nguyên tắc một thư viện có C ABI có thể cho phép một thư viện duy nhất được chia sẻ giữa các lần thực hiện với giảm độ an toàn do chỉ thực hiện một “tài liệu tham khảo” duy nhất). Quá trình lấy tiêu đề của khối trước đó và xác minh danh tính của nó thông qua chuỗi chuyển tiếp đã được thống nhất gần đây khối trong đó hash của nó sẽ được ghi lại. Khi tính hợp lệ của tiêu đề gốc được xác định chắc chắn, parachain cụ thể chức năng xác nhận của lớp có thể được gọi. Đây là một hàm duy nhất chấp nhận một số trường dữ liệu (khoảng những cái đã cho trước đó) và trả về một giá trị Boolean đơn giản công bố tính hợp lệ của khối. Hầu hết các chức năng xác nhận như vậy trước tiên sẽ kiểm tra các trường tiêu đề có thể được lấy trực tiếp từ khối cha (ví dụ: cha hash, số). Đang theo dõi điều này, họ sẽ điền bất kỳ cấu trúc dữ liệu nội bộ nào dưới dạng cần thiết để xử lý các giao dịch và/hoặc bài viết. Đối với một chuỗi giống Ethereum, điều này tương đương với việc điền vào một thử cơ sở dữ liệu với các nút sẽ cần thiết cho thực hiện đầy đủ các giao dịch. Các loại chuỗi khác có thể có p kháccác cơ chế khắc phục. Sau khi hoàn tất, các bài đăng nhập và các giao dịch bên ngoài (hoặc bất kỳ dữ liệu bên ngoài nào thể hiện) sẽ được được ban hành, cân bằng theo đặc điểm kỹ thuật của chuỗi. (A mặc định hợp lý có thể là yêu cầu tất cả các bài viết xâm nhập phải được được xử lý trước khi các giao dịch bên ngoài được thực hiện, tuy nhiên điều này phải do logic của parachain quyết định.) Thông qua đạo luật này, một loạt các bài đăng đi ra sẽ được được tạo ra và nó sẽ được xác minh rằng những điều này thực sự phù hợp ứng cử viên của người đối chiếu. Cuối cùng, dân số hợp lý tiêu đề sẽ được kiểm tra dựa trên tiêu đề của ứng viên. Với khối ứng cử viên được xác thực đầy đủ, validator sau đó có thể bỏ phiếu cho hash của tiêu đề của nó và gửi tất cả thông tin xác thực cần thiết đến các co-validator trong nhóm con của nó. 6.7.1. Bộ sưu tập Parachain. Người đối chiếu Parachain là những người vận hành không liên kết, hoàn thành phần lớn nhiệm vụ của người khai thác trên các mạng blockchain ngày nay. Chúng cụ thể đến một parachain cụ thể. Để hoạt động họ phải duy trì cả chuỗi chuyển tiếp và đồng bộ hóa hoàn toàn parachain. Ý nghĩa chính xác của “được đồng bộ hóa hoàn toàn” sẽ phụ thuộc vào loại parachain, mặc dù sẽ luôn bao gồm trạng thái hiện tại của hàng đợi vào của parachain. Trong trường hợp của Ethereum, ít nhất nó cũng liên quan đến việc duy trì cơ sở dữ liệu cây Merkle của vài khối cuối cùng, nhưng có thể cũng bao gồm nhiều cấu trúc dữ liệu khác bao gồm Bloom bộ lọc để tồn tại tài khoản, thông tin gia đình, ghi nhật ký kết quả đầu ra và bảng tra cứu ngược cho số khối. Ngoài việc giữ cho hai chuỗi được đồng bộ hóa, nó cũng phải “câu” các giao dịch bằng cách duy trì hàng đợi giao dịch và chấp nhận các giao dịch được xác thực hợp lệ từ mạng công cộng. Với hàng đợi và chuỗi, nó là có thể tạo các khối ứng cử viên mới cho validator được chọn ở mỗi khối (có danh tính được biết do chuỗi chuyển tiếp được đồng bộ hóa) và gửi chúng cùng với thông tin phụ trợ khác nhau như bằng chứng về tính hợp lệ, thông qua mạng ngang hàng. Vì rắc rối của mình, nó thu tất cả các khoản phí liên quan đến các giao dịch mà nó bao gồm. Nhiều nền kinh tế khác nhau xoay quanh vấn đề này sắp xếp. Trong một thị trường cạnh tranh khốc liệt, nơi có là sự dư thừa của người đối chiếu, có thể giao dịch phí được chia sẻ với parachain validators để khuyến khích sự bao gồm của một khối đối chiếu cụ thể. Tương tự,
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 17 một số đối tác thậm chí có thể tăng các khoản phí cần thiết được trả tiền để làm cho khối này trở nên hấp dẫn hơn đối với validator giây. Trong trường hợp này, một thị trường tự nhiên sẽ hình thành với các giao dịch trả phí cao hơn, bỏ qua hàng đợi và tham gia vào chuỗi nhanh hơn. 6.8. Kết nối mạng. Kết nối mạng trên blockchains truyền thống như Ethereum và Bitcoin có những yêu cầu khá đơn giản. Tất cả các giao dịch và khối được phát đi trong một tin đồn đơn giản, không có định hướng. Đồng bộ hóa được tham gia nhiều hơn, đặc biệt là với Ethereum nhưng trên thực tế logic này được chứa trong chiến lược ngang hàng thay vì chính giao thức giải quyết xung quanh một số loại thông báo yêu cầu và trả lời. Trong khi Ethereum đã đạt được tiến bộ trong việc cung cấp giao thức hiện tại với giao thức devp2p, điều này cho phép nhiều các giao thức con được ghép kênh trên một kết nối ngang hàng duy nhất và do đó có cùng lớp phủ ngang hàng hỗ trợ nhiều p2p đồng thời, phần Ethereum của giao thức vẫn còn tương đối đơn giản và p2p giao thức trong một thời gian vẫn chưa được hoàn thành với những điều quan trọng thiếu chức năng như hỗ trợ QoS. Đáng buồn thay, mong muốn tạo ra một giao thức “web 3” phổ biến hơn phần lớn đã thất bại, với những dự án duy nhất sử dụng nó là những dự án rõ ràng được tài trợ từ đợt bán hàng cộng đồng Ethereum. Các yêu cầu đối với Polkadot khá quan trọng hơn. Thay vào đó là một mạng thống nhất hoàn toàn, Polkadot có nhiều loại người tham gia, mỗi loại có những yêu cầu khác nhau về thành phần ngang hàng của họ và một số mạng lưới “đại lộ” mà những người tham gia sẽ có xu hướng thảo luận về dữ liệu cụ thể. Điều này có nghĩa là lớp phủ mạng có cấu trúc chặt chẽ hơn—và một giao thức hỗ trợ điều đó— có thể sẽ cần thiết. Hơn nữa, khả năng mở rộng để tạo thuận lợi cho việc bổ sung trong tương lai chẳng hạn như các loại “chuỗi” mới có thể bản thân chúng đòi hỏi một cấu trúc lớp phủ mới. Trong khi thảo luận chuyên sâu về cách mạng giao thức có thể nằm ngoài phạm vi của tài liệu này, một số phân tích yêu cầu là hợp lý. Chúng tôi có thể chia nhỏ những người tham gia mạng lưới của chúng tôi thành hai nhóm (chuỗi chuyển tiếp, chuỗi parachain) mỗi tập hợp con trong số ba tập hợp con. Chúng tôi có thể cũng tuyên bố rằng mỗi người tham gia parachain chỉ quan tâm đến việc trò chuyện giữa họ chứ không phải người tham gia các parachain khác: • Những người tham gia chuỗi chuyển tiếp: • Trình xác nhận: P, chia thành các tập con P[s] cho mỗi tập parachain • Người bảo đảm tính khả dụng: A (điều này có thể được thể hiện bởi Người xác nhận ở dạng cơ bản của giao thức) • Máy khách chuỗi chuyển tiếp: M (lưu ý các thành viên của mỗi bộ parachain cũng sẽ có xu hướng là thành viên của M) • Người tham gia Parachain: • Bộ hợp tác Parachain: C[0], C[1], . . . • Ngư dân Parachain: F[0], F[1], . . . • Khách hàng Parachain: S[0], S[1], . . . • Các ứng dụng khách nhẹ của Parachain: L[0], L[1], . . . Nói chung, chúng tôi đặt tên cho các lớp giao tiếp cụ thể sẽ có xu hướng diễn ra giữa các thành viên của các tập hợp này: • P | A <-> P | Đáp: các đầy đủ đặt của validators/người bảo lãnh phải được kết nối tốt để đạt được sự đồng thuận. • P[s] <-> C[s] | P[s]: Mỗi validator với tư cách là thành viên của một nhóm parachain nhất định sẽ có xu hướng buôn chuyện với các thành viên khác cũng như các đối tác của parachain đó để khám phá và chia sẻ các ứng cử viên khối. • A <-> P[s] | C | A: Mỗi người bảo đảm tính sẵn có sẽ cần thu thập chuỗi chéo nhạy cảm với sự đồng thuận dữ liệu từ validator được gán cho nó; người đối chiếu cũng có thể tối ưu hóa cơ hội đồng thuận về chặn bằng cách quảng cáo nó cho những người bảo đảm tính sẵn có. Sau khi họ có nó, dữ liệu sẽ được chuyển tới người bảo lãnh khác để tạo thuận lợi cho sự đồng thuận. • P[s] <-> A | P[s']: Parachain validators sẽ cần thu thập dữ liệu đầu vào bổ sung từ tập validator trước đó hoặc những người bảo đảm tính khả dụng. • F[s] <-> P: Khi báo cáo, ngư dân có thể đặt một yêu cầu với bất kỳ người tham gia. • M <-> M | P | Đáp: Các khách hàng chuỗi chuyển tiếp chung giải ngân dữ liệu từ validator và người bảo lãnh. • S[s] <-> S[s] | P[s] | Trả lời: Khách hàng Parachain giải ngân dữ liệu từ validator/người bảo lãnh. • L[s] <-> L[s] | S[s]: Máy khách nhẹ Parachain giải ngân dữ liệu từ các khách hàng đầy đủ. Để đảm bảo một cơ chế vận chuyển hiệu quả, một “phẳng” mạng lớp phủ—như devp2p của Ethereum—trong đó mỗi mạng nút không (không tùy ý) phân biệt tính phù hợp của nó đồng nghiệp có thể sẽ không phù hợp. Có khả năng mở rộng hợp lý cơ chế lựa chọn và khám phá ngang hàng có thể sẽ cần được đưa vào trong giao thức cũng như tích cực lập kế hoạch nhìn về phía trước để đảm bảo chọn đúng loại đồng nghiệp là một cách tình cờct vào đúng thời điểm. Chiến lược chính xác của việc thành lập bạn bè sẽ khác nhau đối với mỗi lớp người tham gia: để có quy mô phù hợp đa chuỗi, các bộ đối chiếu sẽ cần phải liên tục kết nối lại với validator được bầu tương ứng, hoặc sẽ cần các thỏa thuận đang diễn ra với một tập hợp con validators để đảm bảo chúng không bị ngắt kết nối trong phần lớn thời gian chúng vô dụng đối với validator đó. Người hợp tác đương nhiên cũng sẽ cố gắng duy trì một hoặc kết nối ổn định hơn vào người bảo đảm sẵn có được thiết lập để đảm bảo truyền bá nhanh chóng các thông tin nhạy cảm với sự đồng thuận của họ dữ liệu. Những người bảo đảm tính sẵn sàng sẽ chủ yếu nhằm mục đích duy trì một kết nối ổn định với nhau và với validators (để có được sự đồng thuận và dữ liệu parachain quan trọng đồng thuận mà họ chứng thực), cũng như với một số đối tác (đối với parachain dữ liệu) và một số ngư dân và khách hàng đầy đủ (để phân tán thông tin). Người xác nhận sẽ có xu hướng tìm kiếm validator khác, đặc biệt là những người trong cùng một nhóm phụ và bất kỳ các đối tác có thể cung cấp cho họ các ứng viên khối parachain. Ngư dân, cũng như chuỗi chuyển tiếp và parachain nói chung khách hàng thường sẽ hướng tới mục tiêu duy trì kết nối mở cho một validator hoặc người bảo lãnh, nhưng có nhiều nút khác tương tự đối với chính họ bằng cách khác. Tương tự, các máy khách nhẹ của Parachain sẽ hướng tới mục tiêu được kết nối với một máy khách đầy đủ của parachain, nếu không chỉ các client ánh sáng parachain khác. 6.8.1. Vấn đề về sự rời bỏ ngang hàng. Trong đề xuất giao thức cơ bản, mỗi tập hợp con này liên tục thay đổi ngẫu nhiên theo từng khối dưới dạng validator được chỉ định để xác minh quá trình chuyển đổi parachain được chọn ngẫu nhiên. Điều này có thể là một vấn đề nên các nút khác nhau (không ngang hàng) cần phải truyền dữ liệu cho nhau. Người ta hoặc phải dựa vào một mạng ngang hàng được phân phối khá tốt và được kết nối tốt với
POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 18 đảm bảo rằng khoảng cách hop (và do đó độ trễ trong trường hợp xấu nhất) chỉ tăng theo logarit của kích thước mạng (giao thức giống Kademlia [13] có thể hữu ích ở đây) hoặc người ta phải giới thiệu thời gian chặn dài hơn để cho phép diễn ra quá trình đàm phán kết nối cần thiết nhằm duy trì một tập hợp ngang hàng phản ánh nhu cầu liên lạc hiện tại của nút. Cả hai đều không phải là giải pháp tuyệt vời: thời gian chặn dài bị ép buộc vào mạng có thể khiến nó trở nên vô dụng đối với các ứng dụng và chuỗi cụ thể. Thậm chí là hoàn toàn công bằng và mạng được kết nối sẽ gây lãng phí đáng kể băng thông khi nó tăng quy mô do các nút không quan tâm có để chuyển tiếp dữ liệu vô dụng cho họ. Mặc dù cả hai hướng có thể tạo thành một phần của giải pháp, tối ưu hóa hợp lý để giúp giảm thiểu độ trễ sẽ nhằm hạn chế tính biến động của các parachain này validator các bộ, hoặc chỉ gán lại tư cách thành viên giữa các chuỗi khối (ví dụ: trong nhóm 15, với tốc độ 4 giây thời gian chặn có nghĩa là chỉ thay đổi kết nối một lần mỗi lần phút) hoặc bằng cách luân phiên thành viên theo kiểu tăng dần, ví dụ: thay đổi bởi một thành viên tại một thời điểm (ví dụ: nếu có là 15 validator được gán cho mỗi parachain, thì trung bình sẽ mất trọn một phút giữa các chuỗi hoàn toàn duy nhất bộ). Bằng cách hạn chế số lượng rời bỏ ngang hàng và đảm bảo rằng các kết nối ngang hàng thuận lợi được thực hiện tốt trong tiến lên nhờ khả năng dự đoán một phần của parachain các bộ, chúng tôi có thể giúp đảm bảo mỗi nút duy trì vĩnh viễn sự lựa chọn tình cờ của các đồng nghiệp. 6.8.2. Đường dẫn đến một giao thức mạng hiệu quả. Có khả năng nỗ lực phát triển hợp lý và hiệu quả nhất sẽ tập trung vào việc sử dụng giao thức có sẵn thay vì triển khai của riêng chúng tôi. Một số giao thức cơ sở ngang hàng tồn tại chúng tôi có thể sử dụng hoặc bổ sung thêm devp2p của chính Ethereum [22], libp2p [1] của IPFS và GNUnet [4] của GNU. Đánh giá đầy đủ về các giao thức này và sự liên quan của chúng đối với việc xây dựng một mạng ngang hàng mô-đun hỗ trợ các đảm bảo về cấu trúc nhất định, định hướng ngang hàng năng động và các giao thức phụ có thể mở rộng vượt xa phạm vi của tài liệu này nhưng sẽ là một bước quan trọng trong việc triển khai Polkadot. 7. Tính thực tiễn của Nghị định thư 7.1. Thanh toán giao dịch liên chuỗi. Trong khi tuyệt vời mức độ tự do và đơn giản đạt được thông qua việc loại bỏ nhu cầu về khung kế toán tài nguyên tính toán tổng thể như gas của Ethereum, điều này đặt ra một câu hỏi quan trọng: không có gas, làm thế nào một parachain tránh việc parachain khác buộc nó thực hiện tính toán? Mặc dù chúng ta có thể dựa vào hàng đợi nhập sau giao dịch bộ đệm để ngăn chặn một chuỗi gửi thư rác cho một chuỗi khác bằng dữ liệu giao dịch, không có cơ chế tương đương nào được cung cấp bởi giao thức để ngăn chặn việc gửi thư rác trong quá trình xử lý giao dịch. Đây là một vấn đề còn lại ở cấp độ cao hơn. Vì chuỗi được tự do đính kèm ngữ nghĩa tùy ý vào dữ liệu đến dữ liệu sau giao dịch, chúng tôi có thể đảm bảo rằng việc tính toán phải được thanh toán trước khi bắt đầu. Theo cách tương tự như người mẫu được tán thành bởi Ethereum Serenity, chúng ta có thể tưởng tượng một hợp đồng “đột nhập” trong parachain cho phép validator được đảm bảo thanh toán để đổi lấy cung cấp một khối lượng tài nguyên xử lý cụ thể. Những tài nguyên này có thể được đo bằng thứ gì đó như khí đốt, nhưng cũng có thể là một số mô hình hoàn toàn mới, chẳng hạn như thời gian thực hiện chủ quan hoặc mô hình phí cố định giống Bitcoin. Bản thân điều này không hữu ích lắm vì chúng ta không thể dễ dàng cho rằng người gọi ngoài chuỗi có sẵn cho họ bất kỳ cơ chế giá trị nào được nhận ra khi đột nhập hợp đồng. Tuy nhiên, chúng ta có thể tưởng tượng một hợp đồng “đột phá” thứ cấp trong chuỗi nguồn. Hai bản hợp đồng với nhau sẽ tạo thành cầu nối, nhận biết nhau và cung cấp giá trị tương đương. (Stake-tokens, có sẵn cho mỗi khoản, có thể được sử dụng để giải quyết cán cân thanh toán.) Gọi vào một chuỗi khác như vậy có nghĩa là ủy quyền thông qua cây cầu này, nó sẽ cung cấp phương tiện đàm phán về việc chuyển giao giá trị giữa các chuỗi để trả tiền cho các tài nguyên tính toán cần thiết trên parachain đích. 7.2. bổ sung Dây chuyền. Trong khi cái phép cộng của một parachain là một hoạt động tương đối rẻ và không miễn phí. Nhiều parachain hơn có nghĩa là ít validator trên mỗi parachain hơn và cuối cùng, số lượng validator lớn hơn, mỗi số có một trái phiếu trung bình giảm. Mặc dù vấn đề về chi phí ép buộc nhỏ hơn khi tấn công parachain được giảm thiểu thông qua ngư dân, bộ validator ngày càng tăng về cơ bản buộc phải độ trễ cao hơn do cơ chế đồng thuận cơ bản của tôithod. Hơn nữa, mỗi parachain mang theo nó khả năng gây đau buồn cho validator với một thuật toán xác nhận quá nặng nề. Như vậy sẽ có một số “giá” validators và/hoặc cộng đồng nắm giữ cổ phần sẽ khai thác để bổ sung một parachain mới. Thị trường dây chuyền này sẽ có thể thấy việc bổ sung một trong hai: • Các chuỗi có khả năng không đóng góp ròng (về mặt khóa hoặc đốt staking tokens) để trở thành một phần (ví dụ: chuỗi liên minh, Chuỗi Doge, chuỗi dành riêng cho ứng dụng); • chuỗi mang lại giá trị nội tại cho mạng thông qua việc thêm chức năng cụ thể khó khăn để đi nơi khác (ví dụ: tính bảo mật, khả năng mở rộng nội bộ, liên kết dịch vụ). Về cơ bản, cộng đồng các bên liên quan sẽ cần phải được khuyến khích thêm các chuỗi con—về mặt tài chính hoặc thông qua mong muốn bổ sung thêm các chuỗi tính năng vào rơle. Người ta hình dung rằng các chuỗi mới được thêm vào sẽ có tác dụng rất thời gian thông báo ngắn để loại bỏ, cho phép các chuỗi mới được thử nghiệm mà không có bất kỳ nguy cơ ảnh hưởng nào đề xuất giá trị trung hoặc dài hạn. 8. Kết luận Chúng tôi đã vạch ra một hướng đi mà người ta có thể thực hiện để viết một giao thức đa chuỗi không đồng nhất, có thể mở rộng, có khả năng tương thích ngược với một số giao thức nhất định đã tồn tại từ trước blockchain mạng. Theo một giao thức như vậy, những người tham gia làm việc vì lợi ích cá nhân rõ ràng để tạo ra một hệ thống tổng thể có thể được mở rộng theo cách đặc biệt miễn phí và không phải trả chi phí thông thường cho người dùng hiện tại đến từ thiết kế blockchain tiêu chuẩn. Chúng tôi đã đưa ra một phác thảo sơ bộ về kiến trúc cần bao gồm bản chất của những người tham gia, động cơ kinh tế của họ và các quá trình mà họ phải tham gia. Chúng tôi có xác định một thiết kế cơ bản và thảo luận về điểm mạnh và những hạn chế; theo đó chúng tôi có thêm hướng dẫn có thể giảm bớt những hạn chế đó và mang lại nền tảng vững chắc hơn cho giải pháp blockchain có thể mở rộng hoàn toàn.POLKADOT: TẦM NHÌN VỀ KHUNG KHUNG ĐA CHUỖI KHÔNG ĐỒNG THỂ DỰ THẢO 1 19 8.1. Thiếu tài liệu và câu hỏi mở. Việc phân nhánh mạng luôn có thể xảy ra do việc triển khai giao thức khác nhau. Sự phục hồi từ tình trạng như vậy tình trạng đặc biệt đã không được thảo luận. Do mạng nhất thiết phải có thời gian hoàn thiện khác 0, việc khôi phục sau quá trình phân nhánh chuỗi chuyển tiếp không phải là vấn đề lớn, tuy nhiên sẽ yêu cầu tích hợp cẩn thận vào giao thức đồng thuận. Việc tịch thu trái phiếu và ngược lại, cung cấp phần thưởng có chưa được tìm hiểu sâu. Hiện tại chúng tôi giả định phần thưởng được cung cấp theo nguyên tắc người thắng được tất cả: điều này có thể không đưa ra mô hình khuyến khích tốt nhất cho ngư dân. Một quá trình tiết lộ cam kết trong thời gian ngắn sẽ cho phép nhiều ngư dân để nhận giải thưởng và phân phối phần thưởng công bằng hơn, tuy nhiên quá trình này có thể dẫn đến độ trễ bổ sung trong việc phát hiện hành vi sai trái. 8.2. Lời cảm ơn. Rất cám ơn tất cả các những người đọc thử đã giúp giải quyết vấn đề này một cách mơ hồ hình dạng có thể trình bày. Đặc biệt, Peter Czaban, Bj¨orn Wagner, Ken Kappler, Robert Habermeier, Vitalik Buterin, Reto Trinkler và Jack Petersson. Cảm ơn tất cả những người đã đóng góp ý tưởng hoặc sự khởi đầu vì vậy, Marek Kotewicz và Aeron Buchanan xứng đáng được đề cập đặc biệt. Và cảm ơn mọi người vì sự giúp đỡ của họ trên đường đi. Tất cả các lỗi là của riêng tôi. Các phần của công việc này, bao gồm cả nghiên cứu ban đầu về thuật toán đồng thuận, được tài trợ một phần bởi người Anh Chính phủ theo chương trình Đổi mới của Vương quốc Anh.