Polkadot : vision d'un cadre multi-chaînes hétérogène
초록
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 박사. 개빈 우드 창립자, 이더리움 및 패리티 개빈@PARITY.IO 추상. 현재의 blockchain 아키텍처는 모두 확장성과 확장성의 실질적인 수단뿐만 아니라 여러 가지 문제로 어려움을 겪고 있습니다. 우리는 이것이 합의 아키텍처의 두 가지 매우 중요한 부분을 연결하는 데서 비롯된다고 믿습니다. 정준성과 타당성은 너무 밀접하게 연관되어 있습니다. 본 논문에서는 이종 다중 체인 아키텍처인 아키텍처를 소개합니다. 이는 근본적으로 두 가지를 구분합니다. 이 두 부분을 구분하고 전체적인 기능을 최소한으로 유지함으로써 보안 및 운송 측면에서 핵심 확장성을 위한 실용적인 수단을 현장에서 소개합니다. 확장성은 다음을 통해 해결됩니다. 이 두 가지 기능에 대한 분할 및 정복 접근 방식은 인센티브를 통해 결합된 핵심을 확장합니다. 신뢰할 수 없는 공개 노드. 이 아키텍처의 이질적인 특성으로 인해 무신뢰, 완전 분산형 "연합"에서 상호 운용되는 다양한 유형의 합의 시스템이 가능해지며 개방형 네트워크와 폐쇄형 네트워크가 신뢰 없이 액세스할 수 있습니다. 서로. 우리는 다음과 같은 하나 이상의 기존 네트워크와의 하위 호환성을 제공하는 수단을 제시합니다. Ethereum. 우리는 그러한 시스템이 실질적으로 전반적인 검색에 유용한 기본 수준 구성 요소를 제공한다고 믿습니다. 글로벌 상거래 수준의 확장성과 개인 정보 보호를 달성할 수 있는 구현 가능한 시스템입니다. 1. 서문 이는 기술적인 "비전" 요약을 위한 것입니다. blockchain 패러다임을 더욱 발전시키는 데 취할 수 있는 한 가지 가능한 방향과 이 방향이 왜 합리적인지에 대한 몇 가지 근거를 설명합니다. 그것은에 배치 현재 개발 단계에서 가능한 한 많은 세부정보를 제공합니다. 구체적인 개선을 제공할 수 있는 시스템 blockchain 기술의 다양한 측면. 이는 공식적이거나 다른 방식으로 사양을 제시하려는 의도가 없습니다. 포괄적이거나 포괄적인 의도는 아닙니다. 최종 디자인. 핵심이 아닌 측면을 다루려는 의도는 없습니다. API, 바인딩, 언어 등 프레임워크의 사용법. 이는 특히 실험적입니다. 여기서 매개변수 지정되어 있으므로 변경될 가능성이 있습니다. 메커니즘은 커뮤니티에 대한 반응으로 추가, 개선 및 제거됩니다. 아이디어와 비평. 이 문서의 많은 부분이 실험적 증거와 프로토타입을 통해 수정될 수 있습니다. 무엇이 효과가 있고 무엇이 효과가 없는지에 대한 정보를 제공합니다. 이 문서에는 프로토콜에 대한 핵심 설명과 함께 취할 수 있는 방향에 대한 아이디어가 포함되어 있습니다. 다양한 측면을 개선합니다. 핵심이 될 것으로 예상된다. 설명은 초기 작업의 시작점으로 사용됩니다. 일련의 개념 증명. 최종 "버전 1.0"은 다음과 같습니다. 입증되고 다음으로 결정된 추가 아이디어와 함께 이 세련된 프로토콜을 기반으로 합니다. 프로젝트가 목표를 달성하기 위해 필요합니다. 1.1. 역사. • 2016년 9월 10일: 0.1.0-proof1 • 2016년 10월 20일: 0.1.0-proof2 • 2016년 1월 11일: 0.1.0-proof3 • 2016년 10월 11일: 0.1.0 2. 소개 블록체인은 "사물 인터넷"을 포함한 여러 분야에서 큰 유용성을 보여주었습니다. (IoT), 금융, 거버넌스, ID 관리, 웹 분산화 및 자산 추적. 그러나 그럼에도 불구하고 기술적 약속과 거창한 이야기, 우리는 아직 보지 못했습니다 현재 기술의 중요한 실제 배포. 우리는 이것이 현재의 다섯 가지 주요 실패로 귀결된다고 믿습니다. 기술 스택: 확장성: 전 세계적으로 얼마나 많은 리소스가 소비되는지 단일 트랜잭션을 처리하는 시스템의 처리, 대역폭 및 저장 공간과 트랜잭션 수 거래는 다음과 같이 합리적으로 처리될 수 있습니다. 최고 조건? 격리성: 여러 회사의 다양한 요구 사항을 충족할 수 있습니까? 당사자와 신청서가 동일한 프레임워크에서 거의 최적의 수준으로 처리됩니까? 개발 가능성: 도구가 얼마나 잘 작동합니까? 마 API가 개발자의 요구 사항을 해결합니까? 교육자료가 있나요? 올바른 통합이 있습니까? 거버넌스: 네트워크가 유연하게 유지될 수 있습니까? 시간이 지남에 따라 진화하고 적응합니까? 결정이 가능할까요? 충분한 포용성, 정당성 및 투명성을 통해 효과적인 리더십을 제공합니다. 분산 시스템? 적용 가능성: 기술이 실제로 자체적으로 긴급한 요구 사항을 해결합니까? 격차를 해소하기 위해 다른 "미들웨어"가 필요합니까? 실제 응용? 현재 작업에서 우리는 처음 두 가지 문제를 해결하는 것을 목표로 합니다. 문제: 확장성 및 격리성. 즉, 우리는 믿습니다 Polkadot 프레임워크는 이러한 각 문제 클래스에서 의미 있는 개선을 제공할 수 있습니다. 다음과 같은 현대적이고 효율적인 blockchain 구현 패리티 Ethereum 클라이언트 [17]이(를) 실행할 수 있습니다.초과하다 고성능 소비자 하드웨어에서 실행 시 초당 3,000건의 트랜잭션. 그러나 현재 현실 세계에서는 blockchain 네트워크는 실질적으로 약 30개로 제한됩니다. 초당 트랜잭션. 이러한 제한은 주로 현재의 동기식 합의 메커니즘이 광범위한 타이밍 안전 마진을 요구한다는 사실에서 비롯됩니다. 예상되는 처리 시간으로 인해 악화됩니다. 1
Résumé
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 DR. GAVIN BOIS FONDATEUR, ETHEREUM & PARITÉ [email protected] Résumé. Les architectures blockchain actuelles souffrent toutes d'un certain nombre de problèmes, notamment les moyens pratiques d'extensibilité et d'évolutivité. Nous pensons que cela découle du fait de lier deux parties très importantes de l'architecture du consensus, à savoir canonicité et validité, trop étroitement liées. Cet article présente une architecture, la multi-chaîne hétérogène, ce qui distingue fondamentalement les deux. En compartimentant ces deux parties et en gardant la fonctionnalité globale fournie au minimum absolu de sécurité et de transport, nous introduisons des moyens pratiques d’extensibilité du noyau in situ. L'évolutivité est abordée via une approche « diviser pour mieux régner » sur ces deux fonctions, en s'éloignant de son noyau solidaire grâce à l'incitation des nœuds publics non fiables. La nature hétérogène de cette architecture permet à de nombreux types très divergents de systèmes de consensus d'interagir dans une « fédération » sans confiance et entièrement décentralisée, permettant aux réseaux ouverts et fermés d'avoir un accès sans confiance à les uns les autres. Nous proposons un moyen d'assurer une rétrocompatibilité avec un ou plusieurs réseaux préexistants tels que Ethereum. Nous pensons qu'un tel système constitue un élément de base utile dans la recherche globale d'un système implémentable capable d’atteindre les niveaux d’évolutivité et de confidentialité du commerce mondial. 1. Préface Ceci est destiné à être un résumé technique de la « vision » d'une direction possible qui pourrait être prise pour développer davantage le paradigme blockchain, ainsi que quelques justifications expliquant pourquoi cette direction est judicieuse. Il s'étend dans autant de détails que possible à ce stade de développement un système qui peut apporter une amélioration concrète sur un nombre d'aspects de la technologie blockchain. Il ne s’agit pas d’une spécification, formelle ou autre. Il n'est pas destiné à être exhaustif ni à être un conception finale. Il n’est pas destiné à couvrir les aspects non essentiels du framework tels que les API, les liaisons, les langages et utilisation. Ceci est particulièrement expérimental ; où les paramètres sont précisés, ils sont susceptibles de changer. Les mécanismes être ajouté, affiné et supprimé en réponse aux besoins de la communauté idées et critiques. De grandes parties de ce document seront probablement être révisé à mesure que les preuves expérimentales et le prototypage le donnent nous des informations sur ce qui fonctionnera et ce qui ne fonctionnera pas. Ce document comprend une description de base du protocole ainsi que des idées d'orientations qui peuvent être prises pour améliorer divers aspects. Il est prévu que le noyau description servira de point de départ à une première série de preuves de concept. Une dernière « version 1.0 » serait basé sur ce protocole raffiné ainsi que sur les idées supplémentaires qui ont fait leurs preuves et sont déterminées à nécessaires pour que le projet atteigne ses objectifs. 1.1. Histoire. • 10/09/2016 : 0.1.0-proof1 • 20/10/2016 : 0.1.0-proof2 • 01/11/2016 : 0.1.0-proof3 • 11/10/2016 : 0.1.0 2. Présentation Les blockchains se sont révélées très prometteuses dans plusieurs domaines, notamment celui de « l’Internet des objets ». (IoT), finance, gouvernance, gestion des identités, décentralisation du Web et suivi des actifs. Cependant, malgré le promesse technologique et grand discours, nous n'avons pas encore vu déploiement significatif dans le monde réel de la technologie actuelle. Nous pensons que cela est dû à cinq échecs majeurs du système actuel. piles technologiques : Évolutivité : combien de ressources sont dépensées à l'échelle mondiale sur le traitement, la bande passante et le stockage pour que le système puisse traiter une seule transaction et combien les transactions peuvent être raisonnablement traitées sous conditions de pointe ? Isolatabilité : les besoins divergents de plusieurs les parties et les demandes soient-elles traitées à un degré quasi optimal dans le même cadre ? Développabilité : dans quelle mesure les outils fonctionnent-ils ? Faire les API répondent-elles aux besoins des développeurs ? Des supports pédagogiques sont-ils disponibles ? Les bonnes intégrations sont-elles là ? Gouvernance : le réseau peut-il rester flexible évoluer et s'adapter au fil du temps ? Les décisions peuvent-elles être fait avec suffisamment d’inclusivité, de légitimité et transparence pour assurer un leadership efficace d’un système décentralisé ? Applicabilité : la technologie répond-elle réellement à elle seule à un besoin pressant ? Un autre « middleware » est-il nécessaire pour combler le fossé entre applications réelles ? Dans le présent travail, nous visons à aborder les deux premiers enjeux : évolutivité et isolabilité. Cela dit, nous croyons le cadre Polkadot peut apporter des améliorations significatives dans chacune de ces classes de problèmes. Des implémentations blockchain modernes et efficaces telles que le client Parité Ethereum [17] peut déclencheress au-delà de 3 000 transactions par seconde lors de l'exécution sur du matériel grand public performant. Cependant, le monde réel actuel Les réseaux blockchain sont pratiquement limités à une trentaine de transactions par seconde. Cette limitation provient principalement du fait que les mécanismes actuels de consensus synchrone nécessitent de larges marges de sécurité temporelles sur le délai de traitement prévu, qui est exacerbé par le 1
소개
블록체인은 "사물 인터넷"을 포함한 여러 분야에서 큰 유용성을 보여주었습니다. (IoT), 금융, 거버넌스, ID 관리, 웹 분산화 및 자산 추적. 그러나 그럼에도 불구하고 기술적 약속과 거창한 이야기, 우리는 아직 보지 못했습니다 현재 기술의 중요한 실제 배포. 우리는 이것이 현재의 다섯 가지 주요 실패로 귀결된다고 믿습니다. 기술 스택: 확장성: 전 세계적으로 얼마나 많은 리소스가 소비되는지 단일 트랜잭션을 처리하는 시스템의 처리, 대역폭 및 저장 공간과 트랜잭션 수 거래는 다음과 같이 합리적으로 처리될 수 있습니다. 최고 조건? 격리성: 여러 회사의 다양한 요구 사항을 충족할 수 있습니까? 당사자와 신청서가 동일한 프레임워크에서 거의 최적의 수준으로 처리됩니까? 개발 가능성: 도구가 얼마나 잘 작동합니까? 마 API가 개발자의 요구 사항을 해결합니까? 교육자료가 있나요? 올바른 통합이 있습니까? 거버넌스: 네트워크가 유연하게 유지될 수 있습니까? 시간이 지남에 따라 진화하고 적응합니까? 결정이 가능할까요? 충분한 포용성, 정당성 및 투명성을 통해 효과적인 리더십을 제공합니다. 분산 시스템? 적용 가능성: 기술이 실제로 자체적으로 긴급한 요구 사항을 해결합니까? 격차를 해소하기 위해 다른 "미들웨어"가 필요합니까? 실제 응용? 현재 작업에서 우리는 처음 두 가지 문제를 해결하는 것을 목표로 합니다. 문제: 확장성 및 격리성. 즉, 우리는 믿습니다 Polkadot 프레임워크는 이러한 각 문제 클래스에서 의미 있는 개선을 제공할 수 있습니다. 다음과 같은 현대적이고 효율적인 blockchain 구현 패리티 Ethereum 클라이언트 [17]은 다음을 초과하여 처리할 수 있습니다. 고성능 소비자 하드웨어에서 실행 시 초당 3,000건의 트랜잭션. 그러나 현재 현실 세계에서는 blockchain 네트워크는 실질적으로 약 30개로 제한됩니다. 초당 트랜잭션. 이러한 제한은 주로 현재의 동기식 합의 메커니즘이 광범위한 타이밍 안전 마진을 요구한다는 사실에서 비롯됩니다. 예상되는 처리 시간으로 인해 악화됩니다.POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 2 더 느린 구현을 지원하려는 욕구. 이는 다음으로 인해 발생합니다. 기본 합의 아키텍처: 상태 전환 메커니즘 또는 당사자가 대조하는 수단 트랜잭션을 실행하고 논리가 근본적으로 묶여 있습니다. 합의된 "정규화" 메커니즘, 또는 당사자들이 다음 중 하나에 동의하는 것을 의미합니다. 가능한, 유효한, 역사. 이는 Bitcoin [15] 및 Ethereum[5,23]과 같은 proof-of-work(PoW) 시스템과 NXT [8] 및 Bitshares [12]과 같은 지분 증명(PoS) 시스템 모두에 동일하게 적용됩니다. 결국 모두 같은 핸디캡을 겪게 됩니다. 그것은 간단하다 blockchains의 성공을 도운 전략입니다. 그러나, 이 두 가지 메커니즘을 하나의 장치로 긴밀하게 결합함으로써 프로토콜의 여러 다른 프로토콜도 함께 번들로 묶습니다. 서로 다른 위험 프로필, 서로 다른 확장성 요구 사항, 서로 다른 개인 정보 보호 요구 사항을 가진 행위자와 애플리케이션. 하나의 크기가 모든 것에 적합하지는 않습니다. 너무 자주 그런 경우가 있습니다. 광범위한 호소력을 원하는 네트워크는 최소 공통 분모를 초래하는 어느 정도 보수주의를 채택합니다. 최적으로 소수에게만 서비스를 제공하고 궁극적으로 실패로 이어지는 경우 때로는 혁신하고, 수행하고, 적응하는 능력 극적으로 그렇습니다. 예를 들어 일부 시스템. 사실 [21] 상태 전환 메커니즘을 완전히 삭제했습니다. 그러나 대부분의 우리가 원하는 유용성을 위해서는 상태를 전환하는 능력이 필요합니다. 공유 상태 머신에 따르면. 놓으면 해결됨 대안적인 문제; 대안을 제공하지 않습니다 솔루션. 그러므로 하나의 합리적인 방향은 분명한 것 같습니다. 확장 가능한 분산 컴퓨팅에 대한 경로를 탐색합니다. 플랫폼은 합의 아키텍처를 분리하는 것입니다. 상태 전환 메커니즘. 그리고 아마도 이는 Polkadot이 확장성에 대한 솔루션으로 채택하는 전략입니다. 2.1. 프로토콜, 구현 및 네트워크. 좋아요 Bitcoin 및 Ethereum, Polkadot은 네트워크 프로토콜과 (지금까지 가정된) 기본 프로토콜을 동시에 나타냅니다. 이 프로토콜을 실행하는 공용 네트워크. Polkadot은 무료 개방형 프로젝트로 만들어졌으며 프로토콜 사양은 크리에이티브 커먼즈 라이센스에 따릅니다. 코드는 FLOSS 라이센스에 따라 배치됩니다. 프로젝트는 공개적으로 개발되었으며 기여를 받아들입니다. 어디에서나 유용합니다. 다르지 않은 RFC 시스템 Python Enhancement Proposals는 다음과 같은 수단을 허용합니다. 프로토콜 변경 및 업그레이드에 대해 공개적으로 협력합니다. Polkadot 프로토콜의 초기 구현 Parity Polkadot 플랫폼으로 알려지며 API와 함께 전체 프로토콜 구현을 포함합니다. 바인딩. 다른 Parity blockchain 구현과 마찬가지로, PPP는 공용 네트워크나 공용 네트워크를 위한 것이 아닌 범용 blockchain 기술 스택으로 설계되었습니다. 민간/컨소시엄 운영. 이에 따른 발전 지금까지 여러 당사자로부터 자금을 지원받았습니다. 영국 정부로부터 보조금을 받았습니다. 그럼에도 불구하고 이 문서에서는 Polkadot에 대해 설명합니다. 공용 네트워크의 컨텍스트. 우리가 공용 네트워크에서 구상하는 기능은 네트워크에서 요구되는 기능의 상위 집합입니다. 대체(예: 개인 및/또는 컨소시엄) 설정. 또한 이 맥락에서 Polkadot의 전체 범위는 다음과 같습니다. 더 명확하게 설명하고 논의할 수 있습니다. 이것은 의미합니다 독자는 특정 메커니즘이 Polkadot과 직접적으로 관련되지 않은 설명(예: 다른 공용 네트워크와의 상호 운용) 비공개("허가된") 상황에서 배포되는 경우. 2.2. 이전 작업. 국가 전환에서 기본 합의를 분리하는 것이 비공식적으로 제안되었습니다. 최소 2년 동안 개인적으로 —Max Kaye는 초기에 그러한 전략을 지지한 사람이었습니다. Ethereum. 체인(Chain)으로 알려진 더 복잡하고 확장 가능한 솔루션 섬유, 2014년 6월로 거슬러 올라가 나중에 처음 출판됨 그 해1, 투명한 체인 간 실행 메커니즘을 제공하는 단일 릴레이 체인과 여러 개의 동종 체인에 대한 사례가 만들어졌습니다. 결맞음이 지불되었습니다 트랜잭션 대기 시간을 통해—다음을 요구하는 트랜잭션 시스템의 서로 다른 부분을 조정하면 처리하는 데 시간이 더 걸립니다. Polkadot는 아키텍처의 대부분을 해당 아키텍처와 후속 대화에서 가져옵니다. 사람마다 다르지만 디자인과 조항의 상당 부분이 크게 다릅니다. Polkadot에 필적하는 시스템은 없지만 실제로 생산 중에는 어느 정도 관련성이 있는 여러 시스템이 있습니다. 제안되었지만 실질적인 수준은 거의 없습니다. 세부 사항. 이러한 제안은 다음과 같습니다.시스템으로 세분화 이는 전 세계적으로 일관성이 있다는 개념을 떨어뜨리거나 감소시킵니다. 상태 머신, 전역적으로 제공하려고 시도하는 머신 동종 샤드를 통한 일관된 싱글톤 머신 그리고 이질성만을 목표로 하는 것. 2.2.1. 전역 상태가 없는 시스템. Factom [21]은 다음 사항 없이 정규성을 입증하는 시스템입니다. 유효성을 확보하여 효과적으로 데이터를 기록할 수 있습니다. 글로벌 상태와 어려움을 회피하기 때문에 이것이 가져오는 확장성을 통해 확장 가능한 솔루션으로 간주될 수 있습니다. 그러나 앞서 언급한 바와 같이 세트는 그것이 해결하는 문제의 비율은 엄격하고 실질적으로 더 적습니다. Tangle [18]은 합의 시스템에 대한 새로운 접근 방식입니다. 트랜잭션을 블록으로 배열하고 엄격하게 연결된 목록을 통해 합의를 형성하여 상태 변경에 대한 전 세계적으로 표준적인 순서를 제공하는 대신 크게 구조화된 순서에 대한 아이디어를 포기하고 대신 이전 항목을 정규화하는 데 도움이 되는 이후 항목과 종속 트랜잭션의 방향성 비순환 그래프를 추진합니다. 명시적인 참조를 통해 임의의 상태 변경의 경우 이 종속성 그래프는 금방 다루기 어려워집니다. 그러나 훨씬 더 간단한 UTXO model2의 경우 이는 다음과 같습니다. 꽤 합리적이다. 시스템은 느슨하게 일관성이 있고 트랜잭션은 일반적으로 각 시스템과 독립적이기 때문입니다. 다른 한편으로, 많은 양의 전역 병렬성이 상당히 커집니다. 자연스러운. UTXO 모델을 사용하면 효과가 있습니다. Tangle을 순수한 가치 전달 "통화"로 제한하는 것 더 일반적이거나 확장 가능한 시스템이 아닙니다. 더욱이, 엄격한 글로벌 일관성이 없으면 절대적인 일관성이 필요한 경향이 있는 다른 시스템과의 상호 작용이 필요합니다. 시스템 상태에 대한 정도의 지식은 비실용적이 됩니다. 1https://github.com/ethereum/wiki/wiki/Chain-Fibers-Redux 2미사용 트랜잭션 출력, Bitcoin이 사용하는 모델로 상태는 사실상 일부 값과 연관된 주소 세트입니다. 트랜잭션은 그러한 주소를 대조하여 총합이 동일한 새로운 주소 세트로 재구성합니다.
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 3 2.2.2. 이종 체인 시스템. 사이드 체인 [3]은 메인 Bitcoin 체인 간의 무신뢰 상호 작용을 허용하는 Bitcoin 프로토콜에 대한 추가 제안 그리고 추가적인 사이드체인. 어떠한 조항도 없습니다 사이드체인 간의 '풍부한' 상호작용 정도: 상호작용은 사이드체인이 활성화될 수 있도록 제한됩니다. 지역에서 서로의 자산을 관리하는 관리자 전문 용어 - 양방향 페그 3. 최종 비전은 Bitcoin 통화가 제공될 수 있는 프레임워크에 대한 것입니다. 주변 장치인 경우 페깅을 통해 추가 기능 제공 좀 더 이국적인 상태 전환을 통해 다른 체인으로 Bitcoin 프로토콜이 허용하는 것보다 시스템. 이런 의미에서, 사이드체인은 확장성보다는 확장성을 다룹니다. 실제로 사이드체인의 유효성에 대한 규정은 근본적으로 없습니다. 한 체인의 token(예: Bitcoin) 사이드체인을 대신하여 보유하는 것은 오직 사이드체인에 의해서만 보호됩니다. 채굴자들이 정규화하도록 장려하는 사이드체인의 능력 유효한 전환. Bitcoin 네트워크의 보안 다른 사람을 대신하여 업무를 쉽게 전환할 수 없습니다. blockchains. 또한 Bitcoin을 보장하기 위한 프로토콜 채굴자는 병합 채굴(사이드 체인의 정규화 권한을 복제)하고 더 중요한 것은 사이드 체인의 전환이 외부에 있는지 확인하는 것입니다. 이 제안의 범위. Cosmos [10]는 제안된 다중 체인 시스템입니다. 사이드 체인과 동일한 맥락, Nakamoto PoW 교체 Jae Kwon의 Tendermint 알고리즘에 대한 합의 방법. 기본적으로 이는 여러 체인(운영 방식)을 설명합니다. 영역) 각각은 Tendermint의 개별 인스턴스를 사용하고 다음을 통한 무신뢰 통신 수단을 사용합니다. 마스터 허브 체인. 이 인터체인 통신은 임의의 정보가 아닌 디지털 자산("구체적으로 tokens")의 전송으로 제한되지만 이러한 인터체인 통신에는 데이터에 대한 반환 경로가 있습니다. 예를 들어 전송 상태를 발송인에게 보고합니다. 구역화된 체인에 대한 검증자 세트, 특히 그들에게 인센티브를 부여하는 수단은 사이드체인처럼 왼쪽에 있습니다. 해결되지 않은 문제로. 일반적인 가정은 다음과 같습니다. 각 존 체인은 자체적으로 validators에 대한 비용을 지불하는 데 인플레이션이 사용되는 token 가치를 보유합니다. 아직 초기 단계 디자인 측면에서 현재 제안에는 확장성을 달성하기 위한 경제적 수단에 대한 포괄적인 세부 정보가 부족합니다. 글로벌 타당성에 대한 확실성. 그러나 영역과 허브 사이에 필요한 느슨한 일관성으로 인해 구역화 매개변수에 대한 추가적인 유연성을 위해 더 강력하게 시행하는 시스템과 비교하여 체인 일관성. 2.2.3. 캐스퍼. 아직까지 Casper [6]과 Polkadot에 대한 포괄적인 검토나 병렬 비교는 없습니다. 꽤 대대적인 작품을 만들 수는 있지만 (따라서 부정확한) 둘의 특성화. Casper는 PoS 합의 알고리즘을 재구성한 것입니다. 어떤 포크에 베팅하는 참가자를 기반으로 할 수 있습니다. 궁극적으로 표준이 될 것입니다. 네트워크에 대한 견고성을 보장하기 위해 상당한 고려가 이루어졌습니다. 포크는 장기간에도 사용할 수 있으며 기본 Ethereum 모델 위에 어느 정도 추가 확장성을 제공합니다. 다음과 같이 따라서 캐스퍼는 현재까지 훨씬 더 많은 경향이 있습니다. Polkadot 및 그 조상보다 복잡한 프로토콜, 그리고 기본 blockchain 형식과 상당한 차이가 있습니다. 그것 캐스퍼가 미래에 어떻게 반복할지는 아직 알 수 없습니다 최종적으로 배포되면 어떤 모습일지. Casper와 Polkadot은 모두 흥미로운 새로운 프로토콜을 나타내며 어떤 의미에서는 Ethereum, 둘 사이에는 상당한 차이가 있습니다. 궁극적인 목표와 배포 경로. 캐스퍼는 Ethereum 원래 설계된 재단 중심 프로젝트 원하지 않는 프로토콜에 대한 PoS 변경이 되는 것입니다. 근본적으로 확장 가능한 blockchain을 만듭니다. 결정적으로는 더 광범위한 것이 아닌 하드 포크로 설계되었으므로 모든 Ethereum 클라이언트와 사용자는 업그레이드하거나 불확실한 채택을 유지해야 합니다. 따라서 배포가 빡빡한 분산형 프로젝트에 내재된 것처럼 배포가 훨씬 더 어려워집니다. 조정이 필요합니다. Polkadot는 여러 면에서 다릅니다. 무엇보다도, Polkadot은 완전히 확장 가능하고 확장 가능하도록 설계되었습니다. blockchain 개발, 배포 및 상호 작용 테스트 침대. 이는 미래에 대비할 수 있는 하네스로 제작되었습니다. 새로운 blockchain에 동화되다지나치게 복잡한 분산 조정 없이 사용 가능한 기술 또는 하드포크. 우리는 이미 다음과 같은 몇 가지 사용 사례를 구상하고 있습니다. 암호화된 컨소시엄 체인 및 고주파 체인 매우 낮은 블록 시간으로 인해 비현실적입니다. 현재 구상 중인 Ethereum의 향후 버전. 마지막으로, 그것과 Ethereum 사이의 결합은 매우 느슨하다; Ethereum 측의 조치는 필요하지 않습니다. 둘 사이의 무신뢰 트랜잭션 전달을 활성화합니다. 네트워크. 즉, Casper/Ethereum 2.0 및 Polkadot 우리가 그들의 최종 목표라고 생각하는 몇 가지 덧없는 유사성을 공유합니다. 실질적으로 다르며 경쟁하기보다는 두 프로토콜은 궁극적으로 하나의 환경 하에서 공존할 가능성이 높습니다. 가까운 미래에 상호 이익이 되는 관계.
Introduction
Les blockchains se sont révélées très prometteuses dans plusieurs domaines, notamment celui de « l’Internet des objets ». (IoT), finance, gouvernance, gestion des identités, décentralisation du Web et suivi des actifs. Cependant, malgré le promesse technologique et grand discours, nous n'avons pas encore vu déploiement significatif dans le monde réel de la technologie actuelle. Nous pensons que cela est dû à cinq échecs majeurs du système actuel. piles technologiques : Évolutivité : combien de ressources sont dépensées à l'échelle mondiale sur le traitement, la bande passante et le stockage pour que le système puisse traiter une seule transaction et combien les transactions peuvent être raisonnablement traitées sous conditions de pointe ? Isolatabilité : les besoins divergents de plusieurs les parties et les demandes soient-elles traitées à un degré quasi optimal dans le même cadre ? Développabilité : dans quelle mesure les outils fonctionnent-ils ? Faire les API répondent-elles aux besoins des développeurs ? Des supports pédagogiques sont-ils disponibles ? Les bonnes intégrations sont-elles là ? Gouvernance : le réseau peut-il rester flexible évoluer et s'adapter au fil du temps ? Les décisions peuvent-elles être fait avec suffisamment d’inclusivité, de légitimité et transparence pour assurer un leadership efficace d’un système décentralisé ? Applicabilité : la technologie répond-elle réellement à elle seule à un besoin pressant ? Un autre « middleware » est-il nécessaire pour combler le fossé entre applications réelles ? Dans le présent travail, nous visons à aborder les deux premiers enjeux : évolutivité et isolabilité. Cela dit, nous croyons le cadre Polkadot peut apporter des améliorations significatives dans chacune de ces classes de problèmes. Des implémentations blockchain modernes et efficaces telles que le client Parité Ethereum [17] peut traiter au-delà de 3 000 transactions par seconde lors de l'exécution sur du matériel grand public performant. Cependant, le monde réel actuel Les réseaux blockchain sont pratiquement limités à une trentaine de transactions par seconde. Cette limitation provient principalement du fait que les mécanismes actuels de consensus synchrone nécessitent de larges marges de sécurité temporelles sur le délai de traitement prévu, qui est exacerbé par lePOLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 2 désir de prendre en charge des mises en œuvre plus lentes. Ceci est dû à l’architecture consensuelle sous-jacente : le mécanisme de transition étatique, ou les moyens par lesquels les parties se rassemblent et exécuter des transactions, a sa logique fondamentalement liée dans le mécanisme de « canonisation » du consensus, ou moyen par lequel les parties conviennent d'un certain nombre de des histoires possibles et valides. Cela s'applique également aux systèmes proof-of-work (PoW) tels que Bitcoin [15] et Ethereum [5,23] et aux systèmes de preuve de participation (PoS) tels que NXT [8] et Bitshares [12] : tous souffrent finalement du même handicap. C'est un simple stratégie qui a contribué au succès de blockchain. Cependant, en couplant étroitement ces deux mécanismes en une seule unité du protocole, nous regroupons également plusieurs des acteurs et des applications présentant différents profils de risque, différentes exigences d’évolutivité et différents besoins en matière de confidentialité. Une taille unique ne convient pas à tout le monde. Trop souvent, il arrive que dans un désir d'attirer un large public, un réseau adopte un certain degré de conservatisme qui se traduit par un plus petit dénominateur commun servir de manière optimale quelques-uns et conduire finalement à un échec dans la capacité à innover, à performer et à s'adapter, parfois dramatiquement. Certains systèmes tels que par ex. Factom [21] abandonne complètement le mécanisme de transition d'état. Cependant, une grande partie des l'utilité que nous désirons nécessite la capacité de passer d'un état à l'autre selon une machine à états partagée. Le laisser tomber résout un problème alternatif ; cela ne fournit pas d'alternative solution. Il semble donc clair qu'une direction raisonnable à explorer comme voie vers un calcul décentralisé évolutif plateforme est de dissocier l’architecture de consensus de le mécanisme de transition d’État. Et, sans surprise, c’est la stratégie adoptée par Polkadot comme solution d’évolutivité. 2.1. Protocole, mise en œuvre et réseau. Comme Bitcoin et Ethereum, Polkadot font à la fois référence à un protocole réseau et au protocole principal (jusqu'ici présupposé) réseau public qui exécute ce protocole. Polkadot se veut un projet libre et ouvert, la spécification du protocole étant sous licence Creative Commons et le le code étant placé sous une licence FLOSS. Le projet est développé de manière ouverte et accepte les contributions partout où ils sont utiles. Un système de RFC, un peu comme les propositions d'amélioration de Python, permettront de collaborer publiquement sur les modifications et les mises à niveau du protocole. Notre mise en œuvre initiale du protocole Polkadot sera connue sous le nom de Plateforme Parity Polkadot et inclure une implémentation complète du protocole avec l'API liaisons. Comme les autres implémentations de Parity blockchain, PPP est conçu pour être une pile technologique blockchain à usage général, ni uniquement pour un réseau public ni pour opération privée/consortium. Son développement donc jusqu'à présent, a été financé par plusieurs parties, notamment à travers une subvention du gouvernement britannique. Cet article décrit néanmoins Polkadot sous le contexte d’un réseau public. La fonctionnalité que nous envisageons dans un réseau public est un surensemble de celle requise dans contextes alternatifs (par exemple privés et/ou consortium). De plus, dans ce contexte, la portée complète de Polkadot peut être décrit et discuté plus clairement. Cela veut dire le lecteur doit être conscient que certains mécanismes peuvent être décrits (par exemple l'interfonctionnement avec d'autres réseaux publics) qui ne concernent pas directement Polkadot lorsqu'ils sont déployés dans des situations non publiques (« autorisées »). 2.2. Travaux antérieurs. Il a été proposé de manière informelle de dissocier le consensus sous-jacent de la transition étatique. en privé pendant au moins deux ans – Max Kaye était partisan d’une telle stratégie dès les premiers jours de Ethereum. Une solution évolutive plus complexe connue sous le nom de Chain fibres, datant de juin 2014 et publié pour la première fois plus tard cette année-là1, a plaidé en faveur d’une chaîne de relais unique et de plusieurs chaînes homogènes fournissant un mécanisme d’exécution inter-chaînes transparent. La décohérence a été payée via la latence des transactions (transactions nécessitant le la coordination de parties disparates du système serait prendre plus de temps à traiter. Polkadot tire une grande partie de son architecture de cela et des conversations de suivi avec diverses personnes, bien qu'il diffère grandement dans une grande partie de sa conception et de ses dispositions. Bien qu'il n'existe aucun système comparable à Polkadot actuellement en production, plusieurs systèmes d'une certaine pertinence ont été proposés, bien que peu nombreux et à un niveau substantiel de détail. Ces propositions peuvent êtredécomposé en systèmes qui abandonnent ou réduisent la notion de cohérence globale machine à états, celles qui tentent de fournir un système global machine singleton cohérente à travers des fragments homogènes et celles qui ciblent uniquement l’hétérogénéité. 2.2.1. Systèmes sans état global. Factom [21] est un système qui démontre la canonicité sans les validité, permettant effectivement la chronique des données. En raison de la nécessité d'éviter l'état mondial et les difficultés avec la mise à l'échelle que cela apporte, cela peut être considéré comme une solution évolutive. Cependant, comme mentionné précédemment, l'ensemble Le nombre de problèmes qu’il résout est strictement et sensiblement moindre. Tangle [18] est une nouvelle approche des systèmes de consensus. Plutôt que d'organiser les transactions en blocs et de former un consensus sur une liste strictement liée pour donner un ordre globalement canonique des changements d'état, il abandonne largement l'idée d'un ordre fortement structuré et préfère plutôt pousse à un graphique acyclique dirigé des transactions dépendantes avec des éléments ultérieurs aidant à canoniser les éléments antérieurs grâce à des références explicites. Pour les changements d'état arbitraires, ce graphe de dépendance deviendrait vite insoluble, cependant, pour le modèle UTXO2 beaucoup plus simple, cela devient tout à fait raisonnable. Parce que le système n’est que vaguement cohérent et que les transactions sont généralement indépendantes les unes des autres. d'autre part, une grande partie du parallélisme mondial devient tout à fait naturel. L'utilisation du modèle UTXO a l'effet de limiter Tangle à une « monnaie » purement de transfert de valeur système plutôt que quelque chose de plus général ou extensible. De plus, sans la stricte cohérence globale, l'interaction avec d'autres systèmes, qui ont tendance à nécessiter une cohérence absolue, une connaissance approfondie de l’état du système devient peu pratique. 1https://github.com/ethereum/wiki/wiki/Chain-Fibers-Redux 2sortie de transaction non dépensée, le modèle utilisé par Bitcoin dans lequel l'état est en fait l'ensemble d'adresses associé à une certaine valeur ; les transactions rassemblent ces adresses et les reforment en un nouvel ensemble d'adresses dont la somme totale est équivalente
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 3 2.2.2. Systèmes de chaînes hétérogènes. Les chaînes latérales [3] sont un ajout proposé au protocole Bitcoin qui permettrait une interaction sans confiance entre la chaîne principale Bitcoin et des chaînes latérales supplémentaires. Aucune disposition n'est prévue pour degré d’interaction « riche » entre les chaînes latérales : l’interaction se limiterait à permettre aux chaînes latérales d’être gardiens des actifs de chacun, effectuant – au niveau local jargon - une ancrage à double sens 3. La vision finale est celle d'un cadre dans lequel la monnaie Bitcoin pourrait être dotée de fonctionnalité supplémentaire, bien que périphérique, grâce à son rattachement sur d'autres chaînes avec une transition d'état plus exotique systèmes que le protocole Bitcoin ne le permet. En ce sens, les chaînes latérales abordent l’extensibilité plutôt que l’évolutivité. En effet, il n’existe fondamentalement aucune disposition relative à la validité des side-chains ; tokens d'une chaîne (par exemple Bitcoin) détenus au nom d'une side-chain sont garantis uniquement par le la capacité de la chaîne latérale à inciter les mineurs à canoniser transitions valides. La sécurité du réseau Bitcoin ne peut pas facilement être transféré pour travailler pour le compte d’autres blockchains. De plus, un protocole pour assurer Bitcoin les mineurs fusionnent le mien (c'est-à-dire dupliquent leur pouvoir de canonisation sur celui de la side-chain) et, plus important encore, valident que les transitions de la side-chain sont en dehors du portée de cette proposition. Cosmos [10] est un système multi-chaîne proposé dans le même veine que les side-chains, en échangeant le Nakamoto PoW méthode de consensus pour l’algorithme Tendermint de Jae Kwon. Essentiellement, il décrit plusieurs chaînes (opérant dans zones) chacune utilisant des instances individuelles de Tendermint, ainsi qu'un moyen de communication sans confiance via un chaîne de moyeu principale. Cette communication inter-chaînes est limitée au transfert d'actifs numériques (« en particulier sur tokens ») plutôt qu'à des informations arbitraires, mais une telle communication inter-chaînes a un chemin de retour pour les données, par ex. informer l'expéditeur de l'état du transfert. Ensembles de validateurs pour les chaînes zonées, et en particulier les moyens de les inciter sont, comme les chaînes latérales, laissés comme un problème non résolu. L'hypothèse générale est que chaque chaîne zonée détiendra elle-même un token de valeur dont l'inflation est utilisée pour payer les validator. Encore au début de conception, à l'heure actuelle, la proposition manque de détails complets sur les moyens économiques permettant d'atteindre l'évolutivité certitude sur la validité globale. Cependant, la faible cohérence requise entre les zones et le hub permettra pour une flexibilité supplémentaire sur les paramètres du zonage chaînes par rapport à celle d’un système imposant des cohérence. 2.2.3. Casper. Pour l'instant, aucun examen complet ni comparaison côte à côte entre Casper [6] et Polkadot ont été faites, même si l'on peut faire une analyse assez radicale (et par conséquent inexacte) caractérisation des deux. Casper est une réinvention de la façon dont un algorithme de consensus PoS pourrait être basé sur des participants pariant sur quelle fourchette deviendrait finalement canonique. Une attention considérable a été accordée à la garantie qu'il soit robuste pour le réseau forks, même lorsqu'ils sont prolongés, et ont un certain degré d'évolutivité supplémentaire en plus du modèle de base Ethereum. Comme Ainsi, Casper à ce jour a eu tendance à être beaucoup plus protocole complexe que Polkadot et ses ancêtres, et un écart substantiel par rapport au format de base blockchain. Il on ne sait toujours pas comment Casper va itérer à l'avenir et à quoi il ressemblera s’il est finalement déployé. Alors que Casper et Polkadot représentent tous deux de nouveaux protocoles intéressants et, dans un certain sens, des augmentations de Ethereum, il existe des différences substantielles entre leurs objectifs ultimes et voies de déploiement. Casper est un Ethereum Projet centré sur la fondation initialement conçu être une modification PoS du protocole sans volonté de créer un blockchain fondamentalement évolutif. Fondamentalement, c'est conçu pour être un hard-fork, plutôt que quelque chose de plus expansif et donc tous les clients et utilisateurs Ethereum seraient nécessaire pour mettre à niveau ou rester sur un fork d’adoption incertaine. En tant que tel, le déploiement est rendu beaucoup plus difficile, ce qui est inhérent à un projet décentralisé où des une coordination est nécessaire. Polkadot diffère de plusieurs manières ; avant tout, Polkadot est conçu pour être un système entièrement extensible et évolutif. blockchain test de développement, de déploiement et d'interaction lit. Il est conçu pour être un harnais largement évolutif, capable de assimiler le nouveau blockchainla technologie dès qu’elle devient disponible sans coordination décentralisée trop compliquée ou des fourches dures. Nous envisageons déjà plusieurs cas d'utilisation tels comme chaînes de consortium cryptées et chaînes à haute fréquence avec des temps de blocage très faibles, irréalistes à réaliser toute version future de Ethereum actuellement envisagée. Enfin, le couplage entre celui-ci et Ethereum est extrêmement lâche; aucune action de la part de Ethereum n'est nécessaire pour activer le transfert de transactions sans confiance entre les deux réseaux. En bref, alors que Casper/Ethereum 2.0 et Polkadot partagent quelques similitudes éphémères, nous pensons que leur objectif final est sensiblement différent et que plutôt que de rivaliser, les deux protocoles finiront probablement par coexister dans le cadre d’un relation mutuellement bénéfique dans un avenir prévisible.
요약
Polkadot은 확장 가능한 이종 다중 체인입니다. 이 이는 이전 blockchain 구현과 달리 다양한 단일 체인을 제공하는 데 중점을 두었습니다. 잠재적인 응용 프로그램에 대한 일반성 정도, Polkadot 자체적으로는 고유한 애플리케이션 기능을 전혀 제공하지 않도록 설계되었습니다. 오히려 Polkadot는 기반을 제공합니다. 다수의 검증 가능한 "릴레이 체인" 전 세계적으로 일관된 동적 데이터 구조가 호스팅될 수 있습니다. 나란히. 우리는 이러한 데이터 구조를 "병렬화"라고 부릅니다. 체인이나 파라체인이 특별히 필요하지는 않지만 본질적으로 blockchain입니다. 즉, Polkadot은 독립적인 체인 집합(예: 다음을 포함하는 집합)과 동일한 것으로 간주될 수 있습니다. Ethereum, Ethereum Classic, Namecoin 및 Bitcoin) 매우 중요한 두 가지 사항을 제외하고는 다음과 같습니다. • 공동 보안; • 신뢰할 수 없는 체인 간 거래 가능성. 이러한 점 때문에 우리는 Polkadot을 "확장 가능"하다고 간주합니다. 원칙적으로 Polkadot에 배포될 문제는 실질적으로 병렬화(규모 확장)될 수 있습니다. 다수의 파라체인. 각각의 모든 면에서 파라체인은 Polkadot 네트워크의 다른 세그먼트에 의해 병렬로 수행될 수 있습니다. 규모를 조정합니다. Polkadot은 다소 기본적인 부분을 제공합니다. 3한 체인의 token을 파괴하여 다른 체인의 token을 생성하는 단방향 페그와는 대조적입니다. 원래 tokens를 복구하기 위해 대화를 수행하는 메커니즘POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 4 미들웨어 수준에서 해결해야 할 복잡성이 상당 부분 남아 있습니다. 이는 개발 위험을 줄이기 위한 의식적인 결정입니다. 단기간 내에 개발해야 하는 필수 소프트웨어 그리고 보안에 대해 상당한 수준의 확신을 가지고 있으며, 견고성. 3.1. Polkadot의 철학. Polkadot 해야 합니다 절대적으로 견고한 기초를 제공합니다. 다음 단계의 합의 시스템을 구축하세요. 생산 가능한 성숙한 설계의 위험 스펙트럼 초기 아이디어에. 보안, 격리 및 통신에 대한 강력한 보장을 제공함으로써 Polkadot은(는) 다음을 허용할 수 있습니다. 다양한 속성 자체 중에서 선택할 수 있는 파라체인. 실제로 우리는 합리적인 것으로 간주될 수 있는 속성을 강화하는 다양한 실험적 blockchain을 예상합니다. 오늘. 보수적으로 보면, 유사한 고부가가치 체인 Bitcoin 또는 Z-cash [20] 저가치와 공존 "테마체인"(이런 마케팅, 너무 재밌음) 및 테스트넷 수수료가 0이거나 거의 0에 가깝습니다. 완전히 암호화된 것을 볼 수 있습니다. "어두운" 컨소시엄 체인이 함께 작동하며 심지어 기능이 뛰어난 개방형 체인에 서비스 제공 Ethereum 같은 것 말이죠. 우리는 실험적인 새로운 것을 본다 주관적인 시간 청구 wasm과 같은 VM 기반 체인 더 성숙한 Ethereum와 유사한 체인에서 어려운 컴퓨팅 문제를 아웃소싱하는 수단으로 체인이 사용됩니다. 또는 더 제한된 Bitcoin과 같은 체인입니다. 체인 업그레이드를 관리하기 위해 Polkadot은 본질적으로 일종의 거버넌스 구조를 지원합니다. 기존의 안정적인 정치 시스템에 기반을 두고 있으며 Yellow Paper Council [24]과 유사한 양원제 측면을 갖고 있습니다. 다음과 같이 궁극적인 권한인 기본 스테이킹 가능한 token 보유자는 "국민투표" 통제권을 갖게 됩니다. 사용자의 의견을 반영하기 위해 개발이 필요하지만 개발자의 정당성이 필요하므로 합리적인 방향이 형성될 것으로 기대합니다. "사용자" 위원회의 두 개의 방(으로 구성됨) 결속된 validators) 및 "기술" 위원회가 구성되었습니다. 주요 클라이언트 개발자 및 생태계 플레이어. 는 token 보유자 집단은 궁극적인 정당성을 유지하고 이 구조를 확장, 재매개변수화, 교체 또는 해체하기 위해 절대다수를 형성할 것입니다. 궁극적인 필요성을 의심하지 마십시오: Twain의 말에 따르면 “거즈와 기저귀는 자주 갈아줘야 합니다. 같은 이유”. 재매개변수화는 일반적으로 더 큰 합의 메커니즘 내에서 조정하기가 쉽지 않은 반면, 대체 및 확대와 같은 보다 질적인 변화는 자동화되지 않은 "소프트 법령"(예: 블록 번호의 표준화를 통해 새로운 프로토콜을 공식적으로 지정하는 문서의 hash) 또는 핵심 합의 메커니즘이 필요합니다. 자신의 모든 측면을 설명할 수 있을 만큼 풍부한 언어 변경해야 할 수도 있습니다. 후자는 최종 목표이고, 그러나 전자가 선택될 가능성이 더 높습니다. 합리적인 개발 일정을 촉진합니다. Polkadot의 기본 신조와 규칙 우리는 모든 디자인 결정을 다음과 같이 평가합니다. 최소: Polkadot에는 가능한 한 적은 기능이 있어야 합니다. 단순함: 추가적인 복잡성이 없어야 합니다. 합리적으로 가능한 것보다 기본 프로토콜에서 ffl미들웨어로 오프로드되고, 를 통해 배치 파라체인 또는 이후 최적화에서 도입되었습니다. 일반: 불필요한 요구 사항, 제약 없음 또는 파라체인에 제한을 가해야 합니다. Polkadot는 다음을 통해 최적화될 수 있는 합의 시스템 개발을 위한 테스트베드가 되어야 합니다. 확장이 가능한 한 추상적으로 적합한 모델을 만듭니다. 견고함: Polkadot은 근본적으로 안정적인 베이스 레이어. 경제적 건전성 외에도 이는 분권화를 의미합니다. 높은 보상을 받는 공격을 위한 벡터.
Résumé
Polkadot est une multi-chaîne hétérogène évolutive. Ceci signifie que contrairement aux implémentations précédentes de blockchain qui se sont concentrés sur la fourniture d'une chaîne unique de différents degrés de généralité sur les applications potentielles, Polkadot lui-même est conçu pour fournir aucune fonctionnalité d’application inhérente. Au lieu de cela, Polkadot fournit le fondement « chaîne relais » sur laquelle un grand nombre de données validables, des structures de données dynamiques globalement cohérentes peuvent être hébergées côte à côte. Nous appelons ces structures de données « parallélisées » chaînes ou parachaines, bien qu'il n'y ait pas de besoin spécifique de ils doivent être de nature blockchain. En d'autres termes, Polkadot peut être considéré comme équivalent à un ensemble de chaînes indépendantes (par exemple l'ensemble contenant Ethereum, Ethereum Classic, Namecoin et Bitcoin) sauf deux points très importants : • Sécurité mutualisée ; • Transactabilité inter-chaînes sans confiance. Ces points sont la raison pour laquelle nous considérons Polkadot comme étant « évolutif ». En principe, un problème à déployer sur Polkadot peut être considérablement parallélisé (évolué) sur un grand nombre de parachaines. Puisque tous les aspects de chacun la parachain peut être conduite en parallèle par un segment différent du réseau Polkadot, le système a une certaine capacité à l'échelle. Polkadot fournit un élément plutôt simple de 3par opposition à un ancrage à sens unique qui consiste essentiellement à détruire les token dans une chaîne pour créer des token dans une autre sans que mécanisme pour faire l'inverse afin de récupérer les token d'originePOLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 4 infrastructure laissant une grande partie de la complexité à résoudre au niveau du middleware. Il s'agit d'une décision consciente destinée à réduire les risques de développement, permettant au logiciel requis à développer dans un court laps de temps et avec un bon niveau de confiance quant à sa sécurité et robustesse. 3.1. La philosophie de Polkadot. Polkadot devrait fournir une base solide comme le roc sur laquelle construire la prochaine vague de systèmes de consensus, tout au long le spectre des risques des conceptions matures capables de production aux idées naissantes. En offrant de solides garanties en matière de sécurité, d'isolement et de communication, Polkadot peut permettre parachains pour choisir eux-mêmes parmi une gamme de propriétés. En effet, nous prévoyons diverses blockchain expérimentales poussant les propriétés de ce qui pourrait être considéré comme raisonnable. aujourd'hui. Nous voyons des conservateurs, chaînes à haute valeur similaires à Bitcoin ou Z-cash [20] coexistant avec des valeurs de moindre valeur « chaînes thématiques » (tel le marketing, si amusant) et réseaux de test avec des frais nuls ou quasi nuls. Nous voyons entièrement crypté, « sombres », des chaînes de consortium opérant aux côtés – et même fournir des services à des chaînes hautement fonctionnelles et ouvertes comme ceux comme Ethereum. Nous voyons de nouvelles expériences Chaînes basées sur des machines virtuelles telles qu'un wasm subjectif chargé en temps chaîne utilisée comme moyen d'externalisation de problèmes de calcul difficiles à partir d'une chaîne de type Ethereum plus mature ou une chaîne de type Bitcoin plus restreinte. Pour gérer les mises à niveau de la chaîne, Polkadot sera intrinsèquement soutenir une sorte de structure de gouvernance, probablement basée sur les systèmes politiques stables existants et ayant un aspect bicaméral similaire au Conseil du Livre Jaune [24]. Comme l'autorité ultime, les détenteurs sous-jacents de token jalonnables auraient un contrôle « référendaire ». Pour refléter les attentes des utilisateurs besoin de développement mais le besoin de légitimité des développeurs, nous nous attendons à ce qu'une direction raisonnable soit de se former les deux chambres d’un comité « usagers » (composé de cautionnés validators) et un comité « technique » composé de grands clients développeurs et acteurs de l’écosystème. Le un corps de détenteurs de token conserverait la légitimité ultime et formerait une majorité qualifiée pour augmenter, reparamétrer, remplacer ou dissoudre cette structure, ce que nous ne doutez pas de la nécessité éventuelle de : selon les mots de Twain « Les gouvernements et les couches doivent être changés souvent, et pour la même raison ». Alors que le reparamétrage est généralement simple à organiser dans le cadre d'un mécanisme de consensus plus large, des changements plus qualitatifs tels que le remplacement et l'augmentation seraient nécessaires. il faudra probablement soit des « décrets souples » non automatisés (par ex. par la canonisation d'un numéro de bloc et le hash d'un document précisant formellement le nouveau protocole) ou nécessiter que le mécanisme de consensus principal contienne un langage suffisamment riche pour décrire n’importe quel aspect de lui-même qui devra peut-être changer. Ce dernier est un objectif éventuel, cependant, les premiers sont plus susceptibles d'être choisis afin de faciliter un calendrier de développement raisonnable. Les principes fondamentaux de Polkadot et les règles dans lesquelles nous évaluons que toutes les décisions de conception sont : Minimal : Polkadot doit avoir le moins de fonctionnalités possible. Simple : aucune complexité supplémentaire ne devrait être présente dans le protocole de base que ce qui peut raisonnablement être déchargé dans le middleware, placé à travers un parachain ou introduit dans une optimisation ultérieure. Général : pas d'exigence, de contrainte inutile ou une limitation devrait être imposée aux parachaines ; Polkadot devrait être un banc d'essai pour le développement d'un système de consensus qui peut être optimisé grâce à rendre le modèle dans lequel les extensions s'intègrent aussi abstrait que possible. Robuste : Polkadot devrait fournir fondamentalement couche de base stable. Outre la solidité économique, cela signifie également décentraliser pour minimiser les vecteurs d’attaques à haute récompense.
Polkadot에 참여
Polkadot 유지에는 네 가지 기본 역할이 있습니다. 네트워크: 대조자, 어부, 지명자 및 validator. 에서 Polkadot의 가능한 구현 중 하나, 후자의 역할 실제로 기본 validator 및 가용성 보증인이라는 두 가지 역할로 분류될 수 있습니다. 이에 대해서는 섹션에서 논의됩니다. 6.5.3. 대조자 어부 검증인 (이 그룹) 검증인 (다른 그룹) 승인하다 된다 모니터 보고서 나쁜 행동 블록을 제공합니다 후보자 에 대한 지명자 그림 1. Polkadot의 네 가지 역할. 4.1. 검증인. validator은 가장 높은 요금이며 Polkadot 네트워크에서 새로운 블록을 봉인하는 데 도움이 됩니다. validator의 역할은 충분히 높은 유대 관계에 달려 있습니다. 하지만 다른 보세 당사자는 이를 허용합니다. 그들을 대신하여 행동할 한 명 이상의 validator을 지명합니다. validator 채권의 일부는 반드시 validator 자체가 소유할 필요는 없고 오히려 이들 소유일 수 있습니다. 지명자. validator은 고가용성과 대역폭을 갖춘 릴레이 체인 클라이언트 구현을 실행해야 합니다. 각 블록에서 노드는 비준 역할을 수락할 준비가 되어 있어야 합니다. 지명된 파라체인의 새로운 블록. 이 과정 후보자 수신, 검증 및 재출판이 포함됩니다. 블록. 지명은 결정적이지만 사전에 사실상 예측할 수 없습니다. validator은(는) 할 수 없기 때문에 합리적으로 완전히 동기화된 상태를 유지할 것으로 예상됩니다. 모든 파라체인의 데이터베이스를 기반으로 validator이 새로운 제안을 고안하는 작업을 지명할 것으로 예상됩니다. parachain 블록을 collator라고 알려진 제3자에게 전달합니다. 모든 새로운 파라체인 블록이 지정된 validator 하위 그룹에 의해 적절하게 비준되면 validators 그런 다음 릴레이 체인 블록 자체를 비준해야 합니다. 여기에는 다음이 포함됩니다. 트랜잭션 대기열의 상태 업데이트(기본적으로 파라체인의 출력 대기열에서 다른 출력 대기열로 데이터 이동 파라체인의 입력 큐), 트랜잭션 처리 승인된 릴레이 체인 트랜잭션 세트를 승인하고 최종 파라체인 변경을 포함한 최종 블록.POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 5 validator 합의점을 찾는 의무를 이행하지 않음 우리가 선택한 합의 알고리즘의 규칙에 따라 처벌됩니다. 초기에 의도하지 않은 오류가 발생하는 경우 이를 통해 validator의 보상을 보류합니다. 반복적인 실패로 인해 담보 채권이 감소합니다(소각을 통해). 이중 서명 또는 유효하지 않은 블록을 제공하려고 공모하면 다음과 같은 손실이 발생합니다. 전체 채권(부분적으로 소각되었으나 대부분이 제공됨) 제보자와 정직한 행위자에게). 어떤 의미에서 validator은 채굴 풀과 유사합니다. 현재 PoW blockchains. 4.2. 지명자. 지명자는 지분을 보유한 당사자입니다. validator의 담보 채권에 기여하는 사람입니다. 그들은 위험 자본을 배치하는 것 외에는 추가 역할이 없습니다. 특정 validator(또는 그에 따라 설정됨) 유지 관리에 책임감 있게 행동합니다. 네트워크. 비례적으로 증가하거나 감소합니다. 채권의 성장에 따라 예금에 그들은 기여합니다. collator와 함께 다음으로 nominator가 일부에 있습니다. 현재 PoW 네트워크의 채굴자와 유사한 의미입니다. 4.3. 대조자. 트랜잭션 대조자(줄여서 대조자) validators가 유효한 문서를 작성하는 데 도움을 주는 당사자입니다. 파라체인 블록. 그들은 특정 파라체인에 대해 "풀 노드"를 유지합니다. 필요한 모든 것을 유지한다는 의미입니다. 새로운 블록을 작성하고 실행할 수 있는 정보 현재 PoW blockchains에서 채굴자가 수행하는 것과 거의 동일한 방식으로 거래합니다. 정상적인 상황에서 그들은 봉인되지 않은 거래를 생성하기 위해 거래를 대조하고 실행합니다. 영지식과 함께 차단하고 제공합니다. 현재 책임이 있는 한 명 이상의 validator에 대한 증거 파라체인 블록을 제안합니다. 대조자, 지명자 및 validator 사이의 관계의 정확한 성격은 바뀔 가능성이 높습니다. 시간. 처음에는 대조자가 매우 긴밀하게 작업할 것으로 기대합니다. validators를 사용하면 몇 개만 있을 것이기 때문에(아마도 단 하나)의 거래량이 적은 파라체인. 는 초기 클라이언트 구현에는 RPC가 포함됩니다. 검증 가능한 유효한 파라체인이 있는 (릴레이체인) validator 노드를 무조건 공급하는 파라체인 대조자 노드 블록. 동기화된 버전을 유지하는 데 드는 비용 이러한 모든 파라체인이 증가하면 추가로 분리하는 데 도움이 되는 인프라가 마련되어 있습니다. 독립적이고 경제적 동기를 지닌 당사자에 대한 의무. 결국 우리는 경쟁하는 대조자 풀을 보게 될 것으로 예상합니다. 가장 많은 거래 수수료를 징수합니다. 이러한 대조자는 보상 수익금의 지속적인 공유를 위해 일정 기간 동안 특정 validator을 서비스하도록 계약을 맺을 수 있습니다. 또는 "프리랜스" 대조자가 간단히 즉시 지불할 수 있는 보상의 경쟁력 있는 공유에 대한 대가로 유효한 파라체인 블록을 제공하는 시장입니다. 마찬가지로, 분산형 지명자 풀은 여러 가지를 허용합니다. 결속된 참가자는 의무를 조정하고 공유합니다. validator. 이러한 풀링 기능은 공개 참여를 보장합니다. 보다 분산된 시스템으로 이어집니다. 4.4. 어민. 다른 두 활성 파티와는 달리, 어부는 블록 저작과 직접적인 관련이 없습니다. 프로세스. 오히려 그들은 독립적인 "현상금 사냥꾼"입니다. 큰 일회성 보상에 의해 동기가 부여됩니다. 바로 그 이유는 어부의 존재로 인해 우리는 잘못된 행동이 거의 발생하지 않을 것이라고 예상합니다. 보세 당사자가 비밀 키 보안에 부주의하고, 악의적인 의도보다는. 이름이 온다 예상되는 보상 빈도, 참여에 필요한 최소 요구 사항 및 최종 보상 크기를 고려합니다. 어부들은 적시에 다음과 같은 증거를 통해 보상을 받습니다. 적어도 한 명의 보세 당사자가 불법적으로 행동했습니다. 불법 행위 동일한 비준된 상위 블록으로 각각 두 개의 블록에 서명하거나 파라체인의 경우 유효하지 않은 블록을 비준하는 데 도움이 됩니다. 블록. 과도한 보상이나 타협을 방지하기 위해 세션 비밀 키의 불법 사용, 기본 보상 단일 validator의 불법적으로 서명된 메시지를 제공하는 것은 최소한. 이 보상은 더 많아질수록 점근적으로 증가합니다. 다른 validator의 불법 서명을 확증하는 것은 실제 공격을 암시하는 것으로 제공됩니다. 점근선이 설정되었습니다. 최소한 우리의 기본 보안 주장에 따르면 66%입니다. validator의 2/3는 자비롭게 행동합니다. 어부들은 "풀 노드"와 다소 유사합니다. 자원이 필요한 현재의 blockchain 시스템 상대적으로 작고 안정적인 가동 시간을 약속합니다. 대역폭은 필요하지 않습니다. 어부들은 다르다 소액의 보증금을 내야 하는 만큼.이 채권은 방지 validators의 시간과 컴퓨팅 낭비로 인한 시빌 공격 자원. 즉시 철회가 가능합니다. 아마도 그렇지 않을 것입니다. 몇 달러에 해당하는 금액보다 더 많은 금액이 소요될 수 있습니다. 잘못된 행동을 발견하여 막대한 보상을 받는 것 validator.
Participation à Polkadot
Il y a quatre rôles de base dans l'entretien d'un Polkadot réseau : assembleur, pêcheur, proposant et validator. Dans une implémentation possible de Polkadot, ce dernier rôle peut en fait se décomposer en deux rôles : validator de base et garant de disponibilité ; ceci est discuté dans la section 6.5.3. Assembleur Pêcheur Validateurs (ce groupe) Validateurs (autres groupes) approuve devient moniteurs rapports mauvais comportement à fournit un bloc candidats pour Proposant Figure 1. L'interaction entre le quatre rôles de Polkadot. 4.1. Validateurs. A validator est la charge la plus élevée et aide à sceller les nouveaux blocs sur le réseau Polkadot. Le rôle du validator dépend d’une liaison suffisamment élevée en cours de dépôt, bien que nous autorisons d'autres parties cautionnées à nommer un ou plusieurs validator pour agir en leur nom et en tant que une telle partie de l'obligation de validator n'appartient pas nécessairement à validator lui-même, mais plutôt à ceux-ci. proposants. Un validator doit exécuter une implémentation client de chaîne de relais avec une disponibilité et une bande passante élevées. A chaque bloc le nœud doit être prêt à accepter le rôle de ratification un nouveau bloc sur une parachain nommée. Ce processus consiste à recevoir, valider et republier les candidats blocs. La nomination est déterministe mais pratiquement imprévisible longtemps à l’avance. Puisque le validator ne peut pas on peut raisonnablement s'attendre à ce qu'il maintienne un système entièrement synchronisé base de données de toutes les parachaines, il est prévu que le validator désignera la tâche de concevoir une nouvelle suggestion bloc parachain à un tiers, connu sous le nom d’assembleur. Une fois que tous les nouveaux blocs de parachain ont été correctement ratifiés par leurs sous-groupes validator désignés, validators devra alors ratifier lui-même le bloc de la chaîne relais. Cela implique mettre à jour l'état des files d'attente de transactions (essentiellement déplacer les données de la file d'attente de sortie d'une parachain vers une autre file d'attente d'entrée de parachain), traitant les transactions de l’ensemble des transactions en chaîne relais ratifié et ratifiant le bloc final, y compris les changements finaux de parachain.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 5 A validator ne remplissant pas son devoir de trouver un consensus selon les règles de l’algorithme de consensus choisi, est puni. Pour les pannes initiales involontaires, cela passe par retenir la récompense du validator. Les échecs répétés entraînent la réduction de leur caution (par brûlage). Actions manifestement malveillantes telles que la double signature ou conspirer pour fournir un bloc invalide entraîne la perte de la totalité du lien (qui est partiellement brûlé mais en grande partie donné à l'informateur et aux acteurs honnêtes). Dans un certain sens, les validator sont similaires aux pools miniers du PoW actuel blockchains. 4.2. Les proposants. Un proposant est une partie prenante qui contribue au cautionnement d'un validator. Ils n'ont aucun rôle supplémentaire, sauf celui de placer du capital-risque et, tels pour signaler qu'ils font confiance à un validator particulier (ou ensemble de ceux-ci) à agir de manière responsable dans leur entretien du réseau. Ils bénéficient d'une majoration ou d'une réduction au prorata dans leur dépôt en fonction de la croissance de l’obligation à laquelle ils contribuent. Avec les assembleurs, les proposants sont ensuite dans certains sens similaire aux mineurs des réseaux PoW actuels. 4.3. Collateurs. Assembleurs de transactions (assembleurs en abrégé) sont des parties qui aident les validator à produire des blocs de parachaine. Ils maintiennent un « nœud complet » pour une parachain particulière ; ce qui signifie qu'ils conservent tous les éléments nécessaires informations pour pouvoir créer de nouveaux blocs et exécuter transactions de la même manière que les mineurs le font sur les PoW actuels blockchain. Dans des circonstances normales, ils rassemblera et exécutera des transactions pour créer un compte non scellé bloquer et le fournir, avec une connaissance nulle preuve, à un ou plusieurs validator actuellement responsables de proposant un bloc parachain. La nature précise de la relation entre les assembleurs, les proposants et les validator changera probablement au fil du temps. le temps. Dans un premier temps, nous attendons des assembleurs qu'ils travaillent en étroite collaboration avec validators, puisqu'il n'y en aura que quelques-uns (peut-être une seule) parachain(s) avec un faible volume de transactions. Le la mise en œuvre initiale du client inclura des RPC pour permettre un nœud de collecte de parachain pour fournir inconditionnellement un nœud (relaychain) validator avec une parachain dont la validité est prouvée bloquer. Comme le coût de maintenance d'une version synchronisée de toutes ces parachaines augmentent, nous nous attendons à voir des infrastructure en place qui aidera à séparer les obligations envers des partis indépendants et motivés par l’économie. À terme, nous nous attendons à voir des pools d'assembleurs rivaliser pour perçoivent le plus de frais de transaction. Ces assembleurs peuvent être engagés par contrat pour servir des validator particuliers pendant un certain temps en échange d'une part continue du produit de la récompense. Alternativement, les assembleurs « indépendants » peuvent simplement créer un marché offrant des blocs de parachain valides en échange d'une part compétitive de la récompense payable immédiatement. De même, les pools de proposants décentralisés permettraient à plusieurs participants liés pour coordonner et partager le devoir d’un validator. Cette capacité de mutualisation garantit une participation ouverte conduisant à un système plus décentralisé. 4.4. Pêcheurs. Contrairement aux deux autres partis actifs, les pêcheurs ne sont pas directement liés à la création des blocs processus. Ce sont plutôt des « chasseurs de primes » indépendants. motivé par une grande récompense unique. Justement à cause de En raison de l'existence des pêcheurs, nous nous attendons à ce que les cas de mauvaise conduite se produisent rarement, et lorsqu'ils se produisent uniquement à cause de la partie cautionnée étant négligente avec la sécurité de la clé secrète, plutôt que par intention malveillante. Le nom vient de la fréquence attendue de la récompense, des exigences minimales pour participer et du montant éventuel de la récompense. Les pêcheurs reçoivent leur récompense en fournissant en temps opportun la preuve que au moins une partie cautionnée a agi illégalement. Actions illégales inclure la signature de deux blocs chacun avec le même parent ratifié ou, dans le cas des parachains, aider à ratifier un invalide bloquer. Pour éviter la récompense excessive ou le compromis et utilisation illicite de la clé secrète d’une session, la récompense de base pour fournir un seul message signé illégalement de validator est minime. Cette récompense augmente asymptotiquement à mesure que des signatures illégales corroborantes d'autres validator sont à condition d'impliquer une véritable attaque. L'asymptote est définie à 66 % suite à notre affirmation de sécurité de base selon laquelle au moins les deux tiers des validator agissent avec bienveillance. Les pêcheurs ressemblent quelque peu aux « nœuds complets » dans systèmes blockchain actuels dont les ressources nécessaires sont relativement petits et l'engagement d'une disponibilité stable et la bande passante n'est pas nécessaire. Les pêcheurs diffèrent tellement d'autant qu'ils doivent déposer une petite caution.Ce lien empêche Sybil attaque en faisant perdre du temps et du calcul à validators ressources. Il est immédiatement retirable, probablement non plus que l'équivalent de quelques dollars et peut conduire à récolter une lourde récompense en repérant un mauvais comportement validator.
디자인 개요
이 섹션에서는 다음과 같은 간략한 개요를 제공합니다. 시스템 전체. 좀 더 철저한 탐구를 통해 시스템은 다음 섹션에 나와 있습니다. 5.1. 의견 일치. 릴레이 체인에서 Polkadot은(는) 달성합니다. 상호 합의된 유효한 집합에 대한 낮은 수준의 합의 최신 비동기식 비잔틴 내결함성(BFT) 알고리즘을 통해 차단합니다. 알고리즘은 영감을 받을 것입니다 간단한 Tendermint [11] 및 훨씬 더 많은 기능을 통해 관련 HoneyBadgerBFT [14]. 후자는 임의적인 것에 대한 효율적이고 내결함성 합의 대부분 온화한 권한 또는 validator 집합을 고려하면 결함이 있는 네트워크 인프라입니다. PoA(권한 증명) 스타일 네트워크의 경우 이것만으로도 충분할 것입니다. 그러나 Polkadot은(는) 그럴 것으로 예상됩니다. 완전 개방형 및 공개 환경에서 네트워크로 배포 가능 특정 조직이 없거나 신뢰할 수 없는 상황 유지하기 위해 필요한 권한입니다. 따라서 우리는 validator 세트를 결정하고 인센티브를 제공하는 수단 솔직히 말해서. 이를 위해 우리는 PoS 기반 선택을 활용합니다. 기준. 5.2. 지분을 증명합니다. 우리는 네트워크가 "지분"이 얼마나 되는지 측정할 수 있는 수단이 있을 것입니다. 특정 계정이 있습니다. 비교의 편의를 위해 기존 시스템에서는 측정 단위를 호출합니다. “tokens”. 불행하게도 이 용어는 다음과 같은 경우에는 이상적이지 않습니다. 여러 가지 이유, 특히 단순한 스칼라라는 점 계정과 관련된 가치에 대한 개념이 없습니다. 개성. 우리는 validators가 드물게 선출되는 것을 상상합니다(최대한 하루에 한 번이지만 분기당 한 번만큼 드물게 발생함) 지명 지분 증명(NPoS) 방식을 통해. 인센티브는 비례 배분을 통해 발생할 수 있습니다.POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 6 릴레이 체인 검증인 떼 (각각의 색상으로 지정 파라체인) 거래 (제출자: 외부배우) 파라체인 다리 가상 파라체인 (예: Ethereum) 파라체인 파라체인 큐와 I/O 전파된 트랜잭션 후보 제출 차단 2차 릴레이 체인 파라체인 커뮤니티 계정 인바운드 거래 아웃바운드 거래 인터체인 거래 (validators에서 관리) 대조자 전파된 블록 어부 그림 2. Polkadot 시스템의 요약 회로도. 이는 대조자가 사용자 트랜잭션을 수집하고 전파하는 것은 물론 블록 후보를 어부와 validator에게 전파하는 것을 보여줍니다. 그것은 또한 계정이 릴레이 체인을 통해 파라체인에서 수행되는 거래를 게시할 수 있는 방법을 보여줍니다. 그리고 그곳의 계정에 대한 거래로 해석될 수 있는 또 다른 파라체인으로 이동합니다. token 기지 확장을 통한 자금 조달(최대 100%) 연간, 약 10% 정도일 가능성이 높음) 모든 거래 수수료가 징수됩니다. 통화 기반 확장은 일반적으로 인플레이션으로 이어지는 반면 모든 token 소유자는 참여 시 공정한 기회를 가지게 되며, 어떤 token보유자도 자신의 가치 감소를 겪을 필요가 없습니다. 그들이 기꺼이 받아 들인다면 시간이 지남에 따라 보유하게 될 것입니다. 합의 메커니즘에서의 역할. 특정 비율 token 중 staking 프로세스의 대상이 됩니다. 는 효과적인 token 기본 확장은 다음을 통해 조정됩니다. 이 목표를 달성하기 위한 시장 기반 메커니즘. 검증인은 자신의 지분에 의해 크게 결속되어 있습니다. 종료 validators의 채권은 validators의 의무가 종료된 후에도 오랫동안(대략 3개월 정도) 유지됩니다. 이 긴 채권 청산 기간은 향후 잘못된 행동을 허용합니다. 체인의 주기적인 체크포인트까지 처벌됩니다. 잘못된 행동은 감점 등의 처벌을 초래합니다. 보상을 제공하거나 고의로 계약을 훼손하는 경우 네트워크의 무결성, validator의 일부 또는 전부를 잃습니다. 다른 validators, 정보 제공자 또는 이해관계자에 대한 지분 전체적으로 (소각을 통해). 예를 들어 validator 포크의 양쪽 가지를 모두 비준하려고 시도하는 사람(때로는 "단거리" 공격으로 알려져 있음)이 식별될 수 있으며, 후자의 방법으로 처벌한다. 장거리 "아무것도 위험하지 않은" 공격4은 단순한 "체크포인트" 래치를 통해 우회됩니다. 이 래치는 1개 이상의 위험한 체인 재구성을 방지합니다. 특정 체인 깊이. 새로 동기화되는 클라이언트를 확인하려면 잘못된 체인에 속을 수 없습니다. "하드 포크"가 발생합니다(최대한 같은 기간). validators의 채권 청산) 최근 체크포인트 블록 hashes를 클라이언트에 하드 코딩합니다. 이는 "유한한 체인 길이" 또는 제네시스 블록을 주기적으로 재설정합니다. 5.3. 파라체인과 콜레이터. 각 파라체인은 릴레이 체인과 유사한 보안 규정: 는 파라체인의 헤더는 릴레이 체인 블록 내에 밀봉되어 있습니다. 확인 후에는 재구성이나 "이중 지출"이 발생하지 않도록 할 수 있습니다. 이는 Bitcoin의 사이드체인 및 병합 채굴이 제공하는 것과 유사한 보안 보장입니다. 그러나 Polkadot은 또한 파라체인의 상태 전환이 유효하다는 강력한 보장을 제공합니다. 이 validator 집합이 암호화 방식으로 무작위로 하위 집합으로 분할되어 발생합니다. 당 하나의 하위 집합 파라체인, 블록마다 잠재적으로 다른 하위 집합. 이 설정은 일반적으로 파라체인의 블록 시간이 적어도 릴레이 체인의 길이만큼 길어야 합니다. 구체적인 파티셔닝을 결정하는 수단은 범위를 벗어납니다. 4이러한 공격은 적이 제네시스 블록부터 완전히 새로운 역사의 사슬을 구축하는 곳입니다. 제어를 통해 그들은 상쇄된 지분의 상대적으로 작은 부분을 다른 모든 것에 비해 점진적으로 늘릴 수 있습니다. 이해관계자는 대안 역사에 적극적으로 참여하는 유일한 참여자이기 때문입니다. 생성에는 본질적인 물리적 제한이 존재하지 않기 때문에 (실제 계산 에너지를 소비해야 하는 PoW와는 달리) 실제 체인보다 긴 체인을 만들 수 있습니다. 상대적으로 짧은 시간 범위를 가지며 잠재적으로 네트워크의 표준 상태를 인계받아 가장 길고 최상의 상태로 만들 수 있습니다.POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 7 이 문서의 내용은 다음 중 하나에 기반을 두고 있을 가능성이 높습니다. RanDAO [19]과 유사한 커밋-공개 프레임워크 또는 각 파라체인의 이전 블록에서 결합된 데이터를 사용합니다. 암호화된 보안 hash에 따라. validator의 이러한 하위 집합은 다음을 제공해야 합니다. 유효성이 보장된 파라체인 블록 후보 채권몰수의 고통) 타당성은 두 가지를 중심으로 이루어집니다. 중요한 점; 첫째, 그것은 본질적으로 타당하다. 모든 상태 전환이 충실하게 실행되었으며 모든 참조된 외부 데이터(예: 트랜잭션)는 포함에 유효합니다. 둘째, 외부에 있는 모든 데이터는 외부 트랜잭션과 같은 후보는 참가자가 다음을 수행할 수 있도록 충분히 높은 가용성을 가지고 있습니다. 그것을 다운로드하고 수동으로 블록을 실행하십시오.5 검증인은 외부 "거래" 데이터가 포함되지 않은 "널" 블록만 제공할 수 있지만 그렇게 할 경우 보상이 감소할 위험이 있습니다. 그들은 함께 일한다 대조자(개인)가 포함된 파라체인 가십 프로토콜 트랜잭션을 블록으로 수집하고 해당 블록이 상위 블록의 유효한 하위 블록임을 구성하는 비대화형, 영지식 증명을 제공합니다. 문제에 대한 수수료). 자체적으로 지정하는 것은 파라체인 프로토콜에 달려 있습니다. 스팸 방지 수단: "컴퓨팅 리소스 측정" 또는 "거래 수수료"에 대한 기본 개념이 없습니다. 릴레이 체인에 의해 부과됩니다. 또한 릴레이 체인 프로토콜에 의해 이에 대한 직접적인 시행은 없습니다(비록 이해관계자가 채택을 선택할 가능성은 거의 없습니다. 적절한 메커니즘을 제공하지 않는 파라체인). 이는 체인의 가능성에 대한 명시적인 고개를 끄덕이는 것입니다. Ethereum, 예: 훨씬 간단한 수수료 모델이나 아직 제안되지 않은 스팸 방지 모델을 갖춘 Bitcoin와 유사한 체인입니다. Polkadot의 릴레이 체인 자체는 아마도 Ethereum과 유사한 계정 및 상태 체인, 아마도 EVM파생품일 수 있습니다. 릴레이 체인 노드는 다음을 수행해야 하므로 실질적인 기타 처리, 트랜잭션 처리량 수행 큰 거래 수수료를 통해 부분적으로 최소화됩니다. 그리고 연구 모델에 필요한 경우 블록 크기 제한이 있습니다. 5.4. 인터체인 커뮤니케이션. Polkadot의 중요한 최종 요소는 체인 간 통신입니다. 이후 파라체인은 그들 사이에 일종의 정보 채널을 가질 수 있으므로, 우리는 Polkadot a를 고려할 수 있습니다. 확장 가능한 멀티체인. Polkadot의 경우 통신은 매우 간단합니다. 파라체인은 (해당 체인의 논리에 따라) 다음을 수행할 수 있습니다. 트랜잭션을 두 번째 파라체인으로 전달하는 데 영향을 미칩니다. 또는 잠재적으로 릴레이 체인입니다. 외부 거래와 마찬가지로 프로덕션 blockchains에서는 완전히 비동기식입니다. 그리고 그들이 어떤 것을 반환할 수 있는 본질적인 능력도 없습니다. 일종의 정보를 원래의 출처로 되돌리는 것입니다. 목적지: 가져옴 이전 데이터 블록의 validators. 계정이 게시물을 받습니다: 항목이 삭제되었습니다. 수신 Merkle tree 계정에서 게시물을 보냅니다: 에 배치된 항목 송신 Merkle tree 목적지를 위해 파라체인 출구 출처 : 주식 다음 블록의 데이터 validators 보관된 우편물 증명 파라체인 이그레스 머클 나무 라우팅된 참조 배치됨 대상 파라체인에서 수신 Merkle tree 진입 그림 3. 기본 회로도 표시 게시된 라우팅의 주요 부분 거래("게시물"). 구현 복잡성을 최소화하려면 위험 그리고 최소한의 스트레이트 재킷 의 미래 파라체인 아키텍처에서는 이러한 인터체인 트랜잭션이 표준 외부 서명 트랜잭션과 사실상 구별할 수 없습니다. 거래에는 파라체인을 식별하는 기능을 제공하는 원본 세그먼트가 있습니다. 임의의 크기를 가질 수 있는 주소입니다. Bitcoin 및 Ethereum과 같은 일반적인 현재 시스템과 달리, 인터체인 거래에는 어떤 종류의 수수료 "지불"도 함께 제공되지 않습니다. 그러한 지불은 소스 및 대상 파라체인의 협상 로직을 통해 관리되어야 합니다. 제안된 것과 같은 시스템 Ethereum의 Serenity 릴리스 [7]은 간단한 수단이 될 것입니다 하지만 그러한 크로스체인 자원 지불을 관리하는 것은 우리는 적절한 시기에 다른 사람들이 전면에 나올 수 있다고 가정합니다. 인터체인 트랜잭션은 간단한 방법을 사용하여 해결됩니다. Merkle tree을 기반으로 한 대기열 메커니즘을 통해 충실함. 릴레이 체인 유지관리자의 임무는 다음과 같습니다. 하나의 파라체인의 출력 큐에서 트랜잭션을 이동합니다. 대상 파라체인의 입력 큐에 넣습니다. 는 전달된 트랜잭션은 릴레이 체인에서 참조되지만 상대적인 트랜잭션은 아닙니다.체인 거래 자체. 파라체인이 다른 파라체인에 스팸을 보내는 것을 방지하려면 거래, 거래를 보내려면 필요합니다. 대상의 입력 대기열이 너무 크지 않아야 합니다. 이전 블록이 끝나는 시간. 입력의 경우 블록 처리 후 대기열이 너무 크면 "포화"된 것으로 간주되어 트랜잭션이 라우팅되지 않을 수 있습니다. 다시 아래로 줄어들 때까지 후속 블록 내에 포함됩니다. 한계. 이러한 대기열은 릴레이 체인에서 관리됩니다. 파라체인이 서로의 포화도를 결정할 수 있도록 허용 상태; 이런 식으로 거래 게시 시도가 실패했습니다. 지연된 대상에 대한 정보는 동시에 보고될 수 있습니다. (단, 반환 경로가 존재하지 않기 때문에 이러한 이유로 2차 트랜잭션이 실패한 경우 다시 보고할 수 없습니다. 원래 발신자 및 기타 복구 수단 일어나야 할 것입니다.) 5.5. Polkadot 및 Ethereum. Ethereum의 Turing 완전성으로 인해 Polkadot 및 Ethereum이 상호 운용될 수 있는 충분한 기회가 있을 것으로 기대합니다. 적어도 쉽게 추론할 수 있는 보안 범위 내에서 서로. 간단히 말해서, 우리는 다음과 같은 거래를 상상합니다. Polkadot은 validators에 의해 서명된 다음 5이러한 작업은 validator 사이에서 공유되거나 다음과 같이 강력하게 결속된 validator 집합의 지정 작업이 될 수 있습니다. 가용성 보증인.
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 8 Ethereum 해석되고 제정될 수 있는 곳 거래 전달 계약. 다른 방향으로는, 특별히 형식화된 로그(이벤트)의 사용이 예상됩니다. 특정 메시지가 전달되어야 하는지 신속하게 확인할 수 있는 "돌파 계약"에서 비롯됩니다. 5.5.1. Polkadot ~ Ethereum. A의 선택을 통해 BFT 합의 메커니즘은 validator로 구성됩니다. 승인 투표를 통해 결정된 이해관계자 집합 메커니즘을 통해 우리는 안전한 합의를 얻을 수 있습니다. 자주 변경되지 않으며 적당한 수의 validator입니다. 총 144 validators가 있는 시스템에서 블록 시간은 4초 및 900블록 최종성(악의적인 공격 허용) 이중투표 등 행위 신고, 처벌 복구) 블록의 유효성은 합리적으로 97개의 서명(144개의 2/3에 1을 더한 수)과 챌린지가 저장되지 않는 60분의 검증 기간을 통해 입증된 것으로 간주됩니다. Ethereum는 "침입 계약"을 호스팅할 수 있습니다. 144명의 서명자를 유지하고 다음에 의해 통제될 수 있습니다. 그들. 타원 곡선 디지털 서명(ECDSA) 복구에는 EVM 아래에서 3,000 가스만 필요하므로 우리는 검증이 다음에서만 발생하기를 원할 것입니다. validators의 절대다수(완전한 만장일치 아님), Ethereum의 기본 비용으로 명령어가 실행되었음을 확인합니다. Polkadot 네트워크에서 나오는 가스는 300,000개를 넘지 않을 것으로 적절하게 검증되었습니다. 이는 전체 가스의 6%에 불과합니다. 총 블록 가스 한도는 5.5M입니다. validator 수를 늘립니다(처리에 필요한 만큼). 수십 개의 체인)은 필연적으로 이 비용을 증가시킵니다. 기술이 성숙해지고 인프라가 향상됩니다. 아니라는 사실과 함께 모든 validator이 포함되어야 합니다(예: 가장 높은 이러한 작업을 위해 스테이킹된 validator이 호출될 수 있습니다) 이 메커니즘의 한계는 합리적으로 확장됩니다. 그러한 validator의 일일 순환을 가정합니다(이는 상당히 보수적입니다. 매주 또는 매월도 허용될 수 있습니다.) 그러면 네트워크 유지 관리 비용이 발생합니다. 이 Ethereum 전달 브리지는 약 540,000입니다. 일일 가스 또는 현재 가스 가격으로 연간 $45입니다. 브리지를 통해 단독으로 전달되는 기본 트랜잭션에는 비용이 듭니다. 약 $0.11; 추가 계약 계산 비용 물론 더요. 트랜잭션 버퍼링 및 번들링을 통해 함께 침입 승인 비용은 쉽게 공유하여 거래당 비용을 대폭 절감합니다. 전달하기 전에 20개의 트랜잭션이 필요한 경우 기본 거래를 전달하는 데 드는 비용은 다음과 같습니다. 약 $0.01. 이 다중 서명 계약 모델에 대한 흥미롭고 저렴한 대안 중 하나는 다자간 소유권 의미 체계를 달성하기 위해 임계값 서명을 사용하는 것입니다. ECDSA에 대한 임계값 서명 체계 계산 비용이 많이 들고 다른 방식의 경우 Schnorr 서명과 같은 것은 매우 합리적입니다. Ethereum 이를 가능하게 하는 기본 요소를 도입할 계획입니다. 다가오는 Metropolis 하드포크에서 사용하기 저렴한 계획입니다. 그러한 수단을 사용할 수 있다면 가스 비용은 Polkadot 거래를 Ethereum로 전달하기 위해 네트워크는 거의 0으로 극적으로 줄어들 것입니다. 검증을 위한 기본 비용을 초과하는 간접비 서명 및 기본 트랜잭션 실행. 이 모델에서 Polkadot의 validator 노드는 메시지에 서명하는 것 외에는 거의 할 일이 없습니다. 거래가 실제로 Ethereum 네트워크로 라우팅되도록 하려면 validator 자신도 다음 위치에 있을 것이라고 가정합니다. Ethereum 네트워크 또는 작은 현상금일 가능성이 높습니다. 메시지를 전달한 첫 번째 배우에게 제공됩니다. 네트워크에 (포상금은 사소하게 지급될 수 있습니다. 거래 발신자). 5.5.2. Ethereum ~ Polkadot. 거래가 이루어지도록 하기 Ethereum에서 Polkadot으로 전달되는 것은 간단한 로그 개념을 사용합니다. Ethereum 계약이 Polkadot의 특정 파라체인에 트랜잭션을 전달하려는 경우, 특별한 "돌파 계약"을 호출하기만 하면 됩니다. 브레이크 아웃 계약은 가능한 모든 비용을 지불합니다. Merkle 증명과 해당 블록의 헤더가 유효하다는 주장을 통해 그 존재가 입증될 수 있도록 로깅 명령을 발행해야 합니다. 정식. 후자의 두 조건 중 타당성은 아마도 가장 간단하게 증명할 수 있습니다. 원칙적으로 유일한 요구 사항은 다음과 같습니다.증명이 필요한 각 Polkadot 노드에 대해 (즉, 지정된 validator 노드)는 표준 Ethereum 노드의 완전히 동기화된 인스턴스를 실행합니다. 불행하게도 이것은 그 자체로 상당히 무거운 종속성입니다. 더 경량 방법은 다음과 같은 간단한 증명을 사용하는 것입니다. 헤더만 제공하여 올바르게 평가되었습니다. 제대로 실행하려면 Ethereum의 상태 트리 일부가 필요합니다. 블록 내 트랜잭션을 확인하고 로그(블록 영수증에 포함된)가 유효한지 확인합니다. 이러한 "SPV와 유사한"6 증거에는 상당한 양의 정보가 필요할 수 있습니다. 편리하게도 일반적으로 필요하지 않습니다. 모두: Polkadot 내부의 결합 시스템은 결합을 허용합니다. 제3자가 헤더를 잃을 위험을 무릅쓰고 헤더를 제출할 수 있습니다. 다른 제3자(예: "어부", 6.2.3 참조)가 헤더가 유효하지 않다는 증거를 제공해야 합니다. (특히 상태 루트 또는 수신 루트가 사기꾼이었습니다). Ethereum과 같은 최종화되지 않은 PoW 네트워크에서는 정규성을 최종적으로 증명하는 것은 불가능합니다. 이 문제를 해결하기 위해 모든 종류의 응용 프로그램에 의존하려고 합니다. 체인 종속 원인 효과는 여러 번의 "확인"을 기다리거나 종속 트랜잭션이 어느 정도 완료될 때까지 기다립니다. 체인 내의 특정 깊이. Ethereum에 이 깊이는 알려진 네트워크 문제가 없는 가장 가치가 낮은 거래의 경우 1블록부터 이전과 마찬가지로 1200블록까지 다양합니다. 교환을 위한 초기 프론티어 릴리스 중 사례입니다. 안정적인 "Homestead" 네트워크에서 이 그림은 다음 위치에 있습니다. 대부분의 거래소에는 120개의 블록이 있으며, 우리는 아마도 비슷한 매개변수. 그래서 우리 할 수 있다 상상하다 우리의 Polkadot-쪽 Ethereum인터페이스는 몇 가지 간단한 기능을 갖습니다. Ethereum 네트워크에서 새 헤더를 수락하고 PoW를 검증하여 다음과 같은 일부 증거를 수락할 수 있습니다. 충분한 깊이의 헤더에 대한 Ethereum측 브레이크아웃 계약에 의해 특정 로그가 방출되었습니다(그리고 앞으로 Polkadot 내의 해당 메시지) 그리고 마지막으로 이전에 승인된 증거를 승인할 수 있지만 아직 제정되지 않은 헤더에 잘못된 수신 루트가 포함되어 있습니다. 실제로 Ethereum 헤더 데이터 자체를 얻으려면(그리고 모든 SPV 증명 또는 유효성/정규성 반박) Polkadot 네트워크, 전달에 대한 인센티브 6SPV는 Bitcoin의 Simplified Payment Verification을 의미하며 고객이 거래 내용만 보관하면서 확인할 수 있는 방법을 설명합니다. 가장 긴 PoW 체인의 모든 블록 헤더 사본.POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 9 데이터가 필요합니다. 결제만큼 간단할 수도 있어요 (Ethereum 측에서 징수한 수수료로 자금 조달) 지불됨 헤더가 다음과 같은 유용한 블록을 전달할 수 있는 누구에게나 유효합니다. 검증인은 마지막 수천 개의 블록과 관련된 정보를 유지해야 합니다. 일부 프로토콜 고유 수단을 통해 또는 플랫폼에서 유지되는 계약을 통해 포크를 관리할 수 있습니다. 릴레이 체인. 5.6. Polkadot 그리고 Bitcoin. Bitcoin 상호 운용 Polkadot에 대한 흥미로운 도전 과제를 제시합니다. "양방향 페그"는 유용한 인프라가 될 것입니다. 두 네트워크 측면 모두에 있어야 합니다. 그러나 이로 인해 Bitcoin의 제한 사항, 이러한 페그를 안전하게 제공하는 것은 사소하지 않은 사업. 다음에서 거래 전달 Bitcoin ~ Polkadot은 원칙적으로 Ethereum과 유사한 프로세스로 수행될 수 있습니다. "브레이크아웃 주소" Polkadot validator에 의해 어떤 방식으로든 제어될 수 있습니다. 전송된 tokens(및 함께 전송된 데이터)를 수신합니다. SPV 증명은 인센티브를 받은 oracle에 의해 제공될 수 있으며, 확인 기간과 함께 포상금이 제공됩니다. 트랜잭션을 암시하는 비정규 블록 식별 "이중 지출"되었습니다. token은(는) 다음에서 소유하고 있습니다. "탈출 주소"는 원칙적으로 나중에 분산될 수 있도록 동일한 validator에 의해 제어됩니다. 그러나 문제는 회전하는 validator 세트에서 침전물을 안전하게 제어할 수 있는 방법입니다. 달리 Ethereum 기반으로 임의의 결정을 내릴 수 있습니다. 서명 조합 시 Bitcoin는 실질적으로 더 제한적이며 대부분의 클라이언트는 최대 3명의 당사자와의 다중 서명 거래만 허용합니다. 이를 36개 또는 궁극적으로 원하는 대로 수천 개로 확장하는 것은 현재 프로토콜에서는 불가능합니다. 한 가지 옵션은 Bitcoin 프로토콜을 변경하여 활성화하는 것입니다. 그러나 이러한 기능은 소위 "하드 포크"로 불립니다. Bitcoin 세계는 최근 시도로 판단을 정리하기가 어렵습니다. 한 가지 가능성은 임계값 서명을 사용하는 것입니다. 단일 식별이 가능한 대중을 허용하는 암호화 체계 여러 비밀 "부분"에 의해 효과적으로 제어되는 키, 유효한 서명을 생성하려면 그 중 일부 또는 전부를 활용해야 합니다. 불행하게도 임계값 서명은 호환됩니다. Bitcoin의 ECDSA를 사용하면 계산 비용이 많이 듭니다. 다항식 복잡성을 생성합니다. 다음과 같은 다른 계획 Schnorr 서명은 훨씬 낮은 비용을 제공하지만 Bitcoin에 도입될 수 있는 타임라인 프로토콜이 불확실합니다. 예금의 궁극적인 보안은 여러 개의 validator을 결합하는 경우 다른 옵션 중 하나는 다음과 같습니다. 다중 서명 키 보유자를 크게 줄이십시오. 임계값과 같은 총 validator의 결합된 하위 집합 서명이 가능해집니다(또는 최악의 경우 Bitcoin의 기본 서명 다중 서명이 가능합니다). 이는 물론 validators가 불법적으로 행동할 경우 배상금에서 공제될 수 있는 채권 총액, 그러나 이는 단순히 상한을 설정하는 것은 우아한 성능 저하입니다. 사이에 안전하게 운영될 수 있는 자금의 양 두 개의 네트워크(또는 실제로 공격이 발생하면 % 손실이 발생함) validators에서 성공). 따라서 우리는 합리적으로 안전한 Bitcoin 상호 운용성 "가상 파라체인"을 배치하는 것이 비현실적이지 않다고 생각합니다. 그럼에도 불구하고 일정이 불확실하고 가능성이 매우 높은 상당한 노력이 필요하지만 그 안에서 이해관계자의 협력이 필요하다. 네트워크.
Aperçu de la conception
Cette section a pour but de donner un bref aperçu de système dans son ensemble. Une exploration plus approfondie du Le système est donné dans la section qui le suit. 5.1. Consensus. Sur la chaîne-relais, Polkadot réalise consensus de bas niveau sur un ensemble de critères valables mutuellement convenus bloque grâce à un algorithme byzantin asynchrone moderne de tolérance aux pannes (BFT). L'algorithme s'inspirera par le simple Tendermint [11] et le nettement plus impliqué HoneyBadgerBFT [14]. Ce dernier fournit un consensus efficace et tolérant aux pannes sur un infrastructure de réseau défectueuse, étant donné un ensemble d’autorités pour la plupart inoffensives ou validators. Pour un réseau de type preuve d'autorité (PoA), cela seul serait suffisant, mais Polkadot est supposé être également déployable en réseau dans un environnement entièrement ouvert et public situation sans organisation particulière ni confiance autorité nécessaire à son entretien. En tant que tel, nous avons besoin d'un moyens de déterminer un ensemble de validator et d'inciter eux pour être honnête. Pour cela, nous utilisons une sélection basée sur PoS critères. 5.2. Prouver l'enjeu. Nous supposons que le réseau aura des moyens de mesurer le montant de la « mise » n'importe quel compte particulier a. Pour faciliter la comparaison avec systèmes préexistants, nous appellerons l'unité de mesure « tokens ». Malheureusement, le terme est loin d'être idéal pour un un certain nombre de raisons, notamment le fait qu'il s'agit simplement d'un scalaire valeur associée à un compte, il n'y a aucune notion de individualité. Nous imaginons que les validator soient élus, rarement (au plus une fois par jour mais peut-être aussi rarement qu'une fois par trimestre), via un système de preuve de participation nommée (NPoS). L'incitation peut se faire par le biais d'une allocation au prorata dePOLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 6 Relais chaîne Essaim de validateurs (chacun coloré par son parachaîne désignée) Transaction (soumis par acteur externe) Parachaine pont Parachaine virtuelle (par exemple Ethereum) Parachaine Parachaine files d'attente et E/S Transactions propagées Bloquer la soumission des candidats 2ème commande Chaîne relais Communauté Parachain Compte Transaction entrante Transaction sortante Transactions inter-chaînes (géré par validators) Assembleur Bloc propagé Pêcheur Figure 2. Un schéma récapitulatif du système Polkadot. Cela montre les assembleurs collectant et propageant les transactions des utilisateurs, ainsi que la propagation des candidats au bloc aux pêcheurs et aux validator. C'est aussi montre comment un compte peut poster une transaction qui est effectuée depuis sa parachain, via la chaine-relais et ensuite dans une autre parachain où cela peut être interprété comme une transaction sur un compte là-bas. fonds provenant d'une expansion de base token (jusqu'à 100 % par an, mais plus probablement autour de 10 %), ainsi que tous les frais de transaction perçus. Alors que l’expansion de la base monétaire conduit généralement à l’inflation, puisque tous les propriétaires de token aurait une chance équitable de participer, aucun titulaire de token n'aurait besoin de subir une réduction de la valeur de son avoirs au fil du temps, à condition qu'ils soient heureux de prendre un rôle dans le mécanisme de consensus. Une proportion particulière des token seraient ciblés pour le processus staking ; le l’expansion effective de la base token serait ajustée grâce à un mécanisme basé sur le marché pour atteindre cet objectif. Les validateurs sont fortement liés par leurs enjeux ; sortir Les obligations des validator restent en place longtemps après la fin des fonctions des validator (peut-être environ 3 mois). Ce long la période de liquidation des obligations permet à une mauvaise conduite future d'être sanctionné jusqu'au contrôle périodique de la chaîne. Une mauvaise conduite entraîne des sanctions, telles qu'une réduction de récompense ou, dans les cas qui compromettent intentionnellement la l'intégrité du réseau, le validator perdant tout ou partie de son l'enjeu à d'autres validators, informateurs ou parties prenantes dans son ensemble (par brûlage). Par exemple, un validator qui tente de ratifier les deux branches d'une fourchette (parfois connue sous le nom d’attaque « à courte portée ») peut être identifiée et puni de cette dernière manière. Les attaques à longue portée « sans enjeu »4 sont contournées grâce à un simple « point de contrôle » qui empêche une dangereuse réorganisation en chaîne de plus d’un profondeur de chaîne particulière. Pour garantir la synchronisation des clients ne peuvent pas se laisser tromper par la mauvaise chaîne, régulier des « hard forks » se produiront (au plus pendant la même période du liquidation des obligations de validators) qui code en dur le bloc de point de contrôle récent hashes dans les clients. Cela s’accorde bien avec une mesure supplémentaire de réduction de l’empreinte de « longueur de chaîne finie » ou réinitialisation périodique du bloc de genèse. 5.3. Parachains et assembleurs. Chaque parachain obtient des conditions de sécurité similaires à celles de la chaîne relais : le les en-têtes des parachains sont scellés dans le bloc de chaîne de relais s’assurer qu’aucune réorganisation, ou « double dépense », n’est possible après confirmation. Il s’agit d’une garantie de sécurité similaire à celle offerte par les side-chains et la fusion de Bitcoin. Polkadot, cependant, fournit également de fortes garanties que les transitions d'état des parachains sont valides. Ceci cela se produit lorsque l'ensemble des validator est segmenté de manière cryptographique aléatoire en sous-ensembles ; un sous-ensemble par parachain, les sous-ensembles potentiellement différents par bloc. Ceci la configuration implique généralement que les temps de blocage des parachains seront être au moins aussi longue que celle de la chaîne-relais. Le spécifique les moyens permettant de déterminer le partage ne relèvent pas du champ d'application 4Une telle attaque est le moment où l’adversaire forge une chaîne historique entièrement nouvelle à partir du bloc de genèse. En contrôlant un part de participation relativement insignifiante au départ, ils sont capables d'augmenter progressivement leur part de participation par rapport à tous les autres parties prenantes car ils sont les seuls participants actifs à leur histoire alternative. Puisqu'il n'existe aucune limitation physique intrinsèque à la création de blocs (contrairement à PoW où une énergie de calcul assez réelle doit être dépensée), ils sont capables de créer une chaîne plus longue que la chaîne réelle dans un une période de temps relativement courte et en fera potentiellement la plus longue et la meilleure, reprenant l'état canonique du réseau.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 7 de ce document mais serait probablement basé soit sur un cadre de validation-révélation similaire au RanDAO [19] ou utiliser les données combinées des blocs précédents de chaque parachain sous un hash cryptographiquement sécurisé. De tels sous-ensembles de validator sont nécessaires pour fournir un candidat de bloc parachain qui est garanti valide (sur peine de confiscation de la caution). La validité s'articule autour de deux points importants; d’abord qu’il est intrinsèquement valable – que toutes les transitions d'état ont été exécutées fidèlement et que tout les données externes référencées (c'est-à-dire les transactions) sont valables pour l'inclusion. Deuxièmement, que toute donnée extrinsèque à son Le candidat, comme ces transactions externes, a une disponibilité suffisamment élevée pour que les participants puissent téléchargez-le et exécutez le bloc manuellement.5 Les validateurs peuvent fournir uniquement un bloc « nul » ne contenant aucune donnée de « transactions » externe, mais peuvent courir le risque d'obtenir une récompense réduite s'ils le font. Ils travaillent aux côtés un protocole de potins en parachain avec des assembleurs – des particuliers qui rassemblent les transactions en blocs et fournissent une preuve non interactive et sans connaissance que le bloc constitue un enfant valide de son parent (et prend toute transaction frais pour leurs ennuis). Il appartient aux protocoles de parachain de spécifier les leurs moyens de prévention du spam : il n'existe pas de notion fondamentale de « mesure des ressources de calcul » ou de « frais de transaction » imposée par la chaîne-relais. Il n'y a pas non plus d'application directe à ce sujet par le protocole de chaîne de relais (bien qu'il Il est peu probable que les parties prenantes choisissent d'adopter une parachain qui ne fournissait pas un mécanisme décent). Il s’agit d’un clin d’œil explicite à la possibilité de chaînes contrairement à Ethereum, par ex. une chaîne de type Bitcoin qui a un modèle de frais beaucoup plus simple ou un autre modèle de prévention du spam, qui n'a pas encore été proposé. La chaîne de relais de Polkadot elle-même existera probablement en tant que Comptes et chaîne d'état de type Ethereum, éventuellement un dérivé EVM. Puisque les nœuds de la chaîne relais devront effectuer d'autres traitements substantiels, débit de transaction sera minimisé en partie grâce à des frais de transaction importants et, si nos modèles de recherche l'exigent, une limite de taille de bloc. 5.4. Communication inter-chaînes. Le dernier ingrédient essentiel de Polkadot est la communication inter-chaînes. Depuis les parachains peuvent avoir une sorte de canal d'information entre elles, nous nous permettons de considérer Polkadot un multi-chaîne évolutive. Dans le cas de Polkadot, la communication est aussi simple que possible : des transactions s'exécutant dans un les parachain sont (selon la logique de cette chaîne) capables de effectuer l'envoi d'une transaction dans une deuxième parachain ou, potentiellement, la chaîne relais. Comme les transactions externes sur les blockchain de production, ils sont entièrement asynchrones et il n'y a aucune capacité intrinsèque pour eux de rendre quoi que ce soit type d'information jusqu'à son origine. Destination : obtient données antérieures les validators du bloc. Le compte reçoit la publication : entrée supprimée de entrée Merkle tree Le compte envoie le message : entrée placée dans sortie Merkle tree pour destination parachaine sortie Source : partages données avec le bloc suivant validators preuve de courrier stockée dans sortie de parachain Merkle arbre référence routé placée dans les parachaines de destination entrée Merkle tree entrée Figure 3. Un schéma de base montrant les principales parties du routage pour posté transactions (« posts »). Pour garantir une complexité de mise en œuvre minimale, un minimum risque et minime camisole de force de avenir architectures parachain, ces transactions interchaînes sont en fait impossible à distinguer des transactions standard signées en externe. La transaction a un segment d'origine, offrant la possibilité d'identifier une parachain, et une adresse qui peut être de taille arbitraire. Contrairement aux systèmes actuels courants tels que Bitcoin et Ethereum, les transactions inter-chaînes ne s'accompagnent d'aucun type de « paiement » de frais associés ; tout paiement de ce type doit être géré via une logique de négociation sur les parachains source et de destination. Un système tel que celui proposé pour La version Serenity de Ethereum [7] serait un moyen simple de gérer un tel paiement de ressources inter-chaînes, bien que nous supposons que d’autres pourraient apparaître en temps voulu. Les transactions interchaînes sont résolues à l'aide d'un simple mécanisme de file d'attente basé sur un Merkle tree pour garantir fidélité. C'est la tâche des mainteneurs de la chaîne de relais de déplacer les transactions sur la file d'attente de sortie d'une parachain dans la file d’attente d’entrée de la parachain de destination. Le les transactions passées sont référencées sur la chaîne de relais, mais ne sont pas pertinentestransactions en chaîne elles-mêmes. Pour empêcher une parachain de spammer une autre parachain avec transactions, pour qu'une transaction soit envoyée, il est nécessaire que la file d'attente d'entrée de la destination ne soit pas trop grande à l'heure de fin du bloc précédent. Si l'entrée est trop grande après le traitement des blocs, elle est alors considérée comme « saturée » et aucune transaction ne peut être acheminée vers dans les blocs suivants jusqu'à ce qu'il soit réduit en dessous du limite. Ces files d'attente sont administrées sur la chaîne-relais permettre aux parachains de déterminer la saturation de chacun statut ; de cette façon, une tentative infructueuse de publier une transaction vers une destination bloquée peut être signalé de manière synchrone. (Mais comme aucun chemin de retour n'existe, si une transaction secondaire échouait pour cette raison, elle ne pourrait pas être signalée. à l'appelant d'origine et à d'autres moyens de récupération devrait avoir lieu.) 5.5. Polkadot et Ethereum. En raison de l'exhaustivité de Turing de Ethereum, nous pensons qu'il existe de nombreuses possibilités pour Polkadot et Ethereum d'être interopérables avec les uns les autres, du moins dans certaines limites de sécurité facilement déductibles. En bref, nous envisageons que les transactions de Polkadot peut être signé par validators puis introduit dans 5Une telle tâche pourrait être partagée entre les validator ou pourrait devenir la tâche désignée d'un ensemble de validator fortement liés, connu sous le nom de garants de disponibilité.
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 8 Ethereum où ils peuvent être interprétés et mis en œuvre par un contrat de transmission de transactions. Dans l'autre sens, nous prévoyons l'utilisation de journaux (événements) spécialement formatés provenant d’un « contrat de rupture » pour permettre une vérification rapide qu’un message particulier doit être transmis. 5.5.1. Polkadot à Ethereum. Grâce au choix d'un BFT mécanisme de consensus avec validators formés à partir d'un ensemble de parties prenantes déterminées par un vote d'approbation mécanisme, nous sommes en mesure d’obtenir un consensus sûr avec un changement peu fréquent et nombre modeste de validator. Dans un système avec un total de 144 validators, un temps de bloc de 4 secondes et une finalité de 900 blocs (permettant des attaques malveillantes) les comportements tels que les doubles votes doivent être signalés et punis et réparé), la validité d'un blocage peut raisonnablement être est considérée comme prouvée par seulement 97 signatures (les deux tiers de 144 plus une) et une période de vérification ultérieure de 60 minutes au cours de laquelle aucune contestation n'est déposée. Ethereum est en mesure d'héberger un « contrat de rodage » qui peut maintenir les 144 signataires et être contrôlé par eux. Étant donné que la récupération de la signature numérique à courbe elliptique (ECDSA) ne nécessite que 3 000 gaz sous le EVM, et depuis nous voudrions probablement que la validation n'ait lieu que sur un majorité qualifiée de validator (plutôt que l'unanimité totale), le coût de base de Ethereum confirmant qu'une instruction a été correctement validé car provenant du réseau Polkadot ne représenterait pas plus de 300 000 gaz, soit seulement 6 % du la limite totale de gaz du bloc à 5,5 M. Augmenter le nombre de validator (ce qui serait nécessaire pour faire face aux des dizaines de chaînes) augmente inévitablement ce coût, mais on s'attend généralement à ce que la bande passante de transaction de Ethereum augmente au fil du temps à mesure que la technologie évolue et les infrastructures s’améliorent. Avec le fait que non tous les validator doivent être impliqués (par exemple, seul le niveau le plus élevé les validator jalonnés peuvent être sollicités pour une telle tâche), le les limites de ce mécanisme s’étendent raisonnablement bien. En supposant une rotation quotidienne de ces validator (ce qui est assez conservateur (une fréquence hebdomadaire ou même mensuelle peut être acceptable), alors le coût pour le réseau de maintenance ce pont de transfert Ethereum serait d'environ 540 000 gaz par jour ou, aux prix actuels du gaz, 45 $ par an. Une transaction de base transmise seule via le pont coûterait environ 0,11 $ ; le calcul supplémentaire du contrat coûterait plus, bien sûr. En tamponnant et en regroupant les transactions ensemble, les coûts d'autorisation d'effraction peuvent facilement être partagé, réduisant considérablement le coût par transaction ; si 20 transactions étaient nécessaires avant la transmission, alors le coût de transmission d'une transaction de base tomberait à environ 0,01 $. Une alternative intéressante et moins coûteuse à ce modèle de contrat multisignature serait d’utiliser des signatures à seuil afin d’obtenir la sémantique de propriété multilatérale. Alors que les schémas de signature à seuil pour l'ECDSA sont coûteux en calcul, ceux des autres schémas comme les signatures Schnorr sont très raisonnables. Ethereum envisage d'introduire des primitives qui rendraient un tel des schémas bon marché à utiliser dans le prochain hardfork de Metropolis. Si un tel moyen pouvait être utilisé, les coûts du gaz pour transférer une transaction Polkadot vers le Ethereum le réseau serait considérablement réduit à un niveau proche de zéro frais généraux qui s'ajoutent aux coûts de base liés à la validation du signature et exécution de la transaction sous-jacente. Dans ce modèle, les nœuds validator de Polkadot auraient faire peu d'autre que signer des messages. Pour que les transactions soient réellement acheminées sur le réseau Ethereum, nous supposons que les validator eux-mêmes résideraient également sur le réseau Ethereum ou, plus probablement, que de petites primes être proposé au premier acteur qui transmet le message sur au réseau (la prime pourrait trivialement être versée au initiateur de la transaction). 5.5.2. Ethereum à Polkadot. Faire en sorte que les transactions soient transmis de Ethereum à Polkadot utilise la simple notion de logs. Lorsqu'un contrat Ethereum souhaite envoyer une transaction vers une parachain particulière de Polkadot, il suffit de faire appel à un « contrat de rupture » spécial. Le contrat de rupture accepterait tout paiement qui pourrait être requis et émettre une instruction de journalisation afin que son existence puisse être prouvée par une preuve Merkle et une affirmation que l'en-tête du bloc correspondant est valide et canonique. Parmi ces deux dernières conditions, la validité est peut-être la le plus simple à prouver. En principe, la seule exigence estpour chaque nœud Polkadot nécessitant la preuve (c'est-à-dire des nœuds validator désignés) pour exécuter une instance entièrement synchronisée d'un nœud Ethereum standard. Malheureusement, il s’agit en soi d’une dépendance assez lourde. Un plus méthode légère consisterait à utiliser une preuve simple que le l'en-tête a été évalué correctement en fournissant uniquement le une partie du test d'état de Ethereum nécessaire pour s'exécuter correctement les transactions du bloc et vérifier que les logs (contenus dans le reçu de bloc) sont valides. Un tel « SPV-like »6 les preuves peuvent pourtant nécessiter une quantité substantielle d'informations ; commodément, ils ne seraient généralement pas nécessaires à tous : un système de liaison à l'intérieur de Polkadot permettrait les tiers à soumettre des en-têtes au risque de perdre leur caution si un autre tiers (tel qu’un « pêcheur », voir 6.2.3) fournit la preuve que l’en-tête n’est pas valide (en particulier que la racine de l'État ou la racine du reçu étaient des imposteurs). Sur un réseau PoW non finalisant comme Ethereum, le la canonicité est impossible à prouver de manière concluante. Pour résoudre ce problème, les applications qui tentent de s'appuyer sur n'importe quel type de cause à effet dépendant d’une chaîne, attendez un certain nombre de « confirmations » ou jusqu’à ce que la transaction dépendante soit à un certain point. profondeur particulière au sein de la chaîne. Le Ethereum, ceci la profondeur varie de 1 bloc pour les transactions les moins précieuses sans problème de réseau connu à 1 200 blocs comme c'était le cas ce fut le cas lors de la première version de Frontier pour les échanges. Sur le réseau stable « Homestead », ce chiffre se situe à 120 blocs pour la plupart des échanges, et nous prendrions probablement un paramètre similaire. Alors nous peut imaginer notre Côté Polkadot Ethereuminterface pour avoir quelques fonctions simples : pouvoir acceptez un nouvel en-tête du réseau Ethereum et validez le PoW, pour pouvoir accepter une preuve qu'un un journal particulier a été émis par le contrat de rupture côté Ethereum pour un en-tête de profondeur suffisante (et vers l'avant le message correspondant dans Polkadot) et enfin être capable d'accepter des preuves qu'un document précédemment accepté mais l'en-tête non encore adopté contient une racine de reçu non valide. Pour obtenir réellement les données d'en-tête Ethereum elles-mêmes (et toutes preuves SPV ou réfutations de validité/canonicité) dans le réseau Polkadot, une incitation à la réexpédition 6SPV fait référence à la vérification simplifiée des paiements dans Bitcoin et décrit une méthode permettant aux clients de vérifier les transactions tout en ne conservant que une copie de tous les en-têtes de blocs de la plus longue chaîne PoW.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 9 des données sont nécessaires. Cela pourrait être aussi simple qu'un paiement (financé par les frais perçus du côté Ethereum) payé à toute personne capable de transmettre un bloc utile dont l'en-tête est valide. Les validateurs seraient appelés à conserver les informations relatives aux derniers milliers de blocs afin de être capable de gérer les forks, soit par des moyens protocolaires intrinsèques, soit par le biais d'un contrat maintenu sur le chaîne de relais. 5.6. Polkadot et Bitcoin. Bitcoin interopération présente un défi intéressant pour Polkadot : un soi-disant un « ancrage bidirectionnel » serait une infrastructure utile avoir du côté des deux réseaux. Cependant, en raison de les limites de Bitcoin, à condition qu'une telle cheville soit solidement une entreprise non triviale. Réaliser une transaction depuis Bitcoin à Polkadot peut en principe être réalisé avec un processus similaire à celui de Ethereum ; une « adresse en petits groupes » contrôlé d'une manière ou d'une autre par les Polkadot validator pourraient recevoir les token transférés (et les données envoyées avec eux). Les preuves SPV pourraient être fournies par des oracle incités et, accompagné d'une période de confirmation, une prime accordée pour identifier les blocs non canoniques impliquant la transaction a été « dépensé deux fois ». Tous les token alors possédés dans le « l'adresse de rupture » serait alors, en principe, contrôlée par ces mêmes validator pour une dispersion ultérieure. Le problème est cependant de savoir comment les dépôts peuvent être contrôlés en toute sécurité à partir d'un ensemble validator rotatif. Contrairement à Ethereum qui est capable de prendre des décisions arbitraires basées sur sur des combinaisons de signatures, Bitcoin est substantiellement plus limité, la plupart des clients n'acceptant que les transactions multisignatures avec un maximum de 3 parties. Étendre ce chiffre à 36, voire à des milliers comme on pourrait le souhaiter en fin de compte, est impossible dans le cadre du protocole actuel. Une option consiste à modifier le protocole Bitcoin pour activer une telle fonctionnalité, mais ce qu'on appelle des « hard forks » dans le Le monde Bitcoin est difficile à organiser à en juger par les tentatives récentes. Une possibilité est l'utilisation de signatures à seuil, schémas cryptographiques pour permettre à un public identifiable une seule fois clé pour être contrôlée efficacement par plusieurs « parties » secrètes dont tout ou partie doit être utilisé pour créer une signature valide. Malheureusement, les signatures de seuil sont compatibles avec l'ECDSA de Bitcoin sont coûteux en calcul créer et de complexité polynomiale. D'autres schémas tels a Les signatures Schnorr offrent des coûts bien inférieurs, mais le calendrier sur lequel ils peuvent être introduits dans le Bitcoin le protocole est incertain. Puisque la sécurité ultime des dépôts repose sur un certain nombre de validator liés, une autre option consiste à réduire les détenteurs de clés multi-signatures à seulement un nombre important sous-ensemble lié du total de validators tel que ce seuil les signatures deviennent réalisables (ou, au pire, les signatures natives de Bitcoin la multi-signature est possible). Cela réduit bien sûr le montant total des obligations qui pourraient être déduites à titre de réparations si les validator se comportaient illégalement, mais cela est une dégradation gracieuse, fixant simplement une limite supérieure de le montant des fonds qui peuvent circuler en toute sécurité entre le deux réseaux (ou encore, sur le % de pertes en cas d'attaque des validator réussissent). En tant que tel, nous pensons qu’il n’est pas irréaliste de placer une « parachain virtuelle » d’interopérabilité Bitcoin raisonnablement sécurisée. entre les deux réseaux, mais néanmoins un effort conséquent avec un calendrier incertain et très probablement exigeant la coopération des parties prenantes au sein de ce réseau.
세부 프로토콜
프로토콜은 대략 세 가지로 나눌 수 있습니다. 부분: 합의 메커니즘, 파라체인 인터페이스 그리고 인터체인 트랜잭션 라우팅. 6.1. 릴레이 체인 운영. 는 릴레이 체인 의지 아마도 Ethereum와 대체로 유사한 체인일 것입니다. 상태는 계정에 주소를 매핑하는 상태 기반입니다. 정보, 주로 잔액 및 (재생 방지를 위해) 거래 카운터. 여기에 계정을 배치하면 한 가지 목적이 달성됩니다. 즉, ID가 소유한 계정을 제공하는 것입니다. 시스템에 어느 정도의 지분이 있는지.7 하지만 주목할만한 차이점이 있습니다. • 계약은 트랜잭션을 통해 전개될 수 없습니다. 릴레이 체인의 애플리케이션 기능을 피하려는 욕구에 따라 계약의 공개 배포를 지원합니다. • 컴퓨팅 리소스 사용량(“가스”)은 계산되지 않습니다. 공개적으로 사용할 수 있는 유일한 기능이기 때문에 가스 회계의 근거가 수정될 것입니다. 더 이상 보유하지 않습니다. 따라서 정액 요금이 적용됩니다. 모든 경우에 더 많은 성능을 제공합니다. 수행해야 할 수 있는 동적 코드 실행 그리고 더 간단한 거래 형식. • 자동 실행 및 네트워크 메시지 출력을 허용하는 나열된 계약에 대해 특수 기능이 지원됩니다. 릴레이 체인에 VM이 있고 VM이 있는 경우 EVM을 기반으로 하며 최대한의 단순성을 보장하기 위해 여러 가지 수정 사항이 있을 것입니다. 아마도 다수의 내장 계약이 있습니다(다음의 계약과 유사). 플랫폼별 허용을 위해 Ethereum의 주소 1-4 합의 계약을 포함하여 관리해야 할 의무, validator 계약 및 파라체인 계약. EVM이 아닌 경우 WebAssembly 2 백엔드가 가장 가능성 있는 대안입니다. 이 경우 전반적인 구조는 비슷하지만 그럴 필요는 없습니다. Wasm이 실행 가능한 목표가 되는 내장 계약 미숙한 언어보다는 범용 언어를 위해 EVM에 대한 언어가 제한되어 있습니다. 현재 Ethereum 프로토콜에서 다른 가능한 편차가 있을 수 있습니다. 동일한 블록 내에서 충돌하지 않는 트랜잭션의 병렬 실행을 허용하는 트랜잭션 영수증 형식, Serenity 시리즈 변경 사항에 대해 제안된 대로입니다. 가능성은 낮지만 세레니티와 같은 것이 가능합니다. "순수한" 체인을 릴레이 체인으로 배포하여 staking token과 같은 것을 관리하기 위한 특정 계약 그것을 근본적인 부분으로 만드는 것이 아니라 균형을 유지하는 것입니다. 체인의 프로토콜. 현재로서는 그럴 가능성이 없다고 생각합니다. 충분히 훌륭한 프로토콜 단순화를 제공할 것입니다. 추가적인 복잡성과 불확실성을 감수할 가치가 있습니다. 그것을 개발하는 중. 7특정 보유자가 시스템의 전반적인 보안에 대해 책임을 지는 금액을 나타내는 수단으로 이러한 스테이크 계정은 필연적으로 경제적 가치를 인코딩합니다. 그러나 그러한 값을 사용할 의도는 없으므로 이해해야 합니다. 실제 상품 및 서비스와 교환할 목적으로 어떤 방식으로든 token은(는) 다음과 유사하지 않다는 점에 유의해야 합니다. 화폐와 마찬가지로 릴레이 체인은 애플리케이션에 관한 허무주의적 철학을 유지합니다.POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 10 합의 메커니즘, validator 세트, 검증 메커니즘 및 파라체인을 관리하는 데 필요한 여러 가지 작은 기능이 있습니다. 이것들 모놀리식 프로토콜 하에서 함께 구현될 수 있습니다. 그러나 모듈성을 보장한다는 이유로 이를 릴레이 체인의 "계약"이라고 설명합니다. 이것은 (의미에서) 객체라는 의미로 간주됩니다. 객체 지향 프로그래밍)은 릴레이체인의 합의 메커니즘에 의해 관리되지만 반드시 그런 것은 아닙니다. EVM과 유사한 opcode의 프로그램으로 정의되거나 심지어는 계정 시스템. 6.2. 스테이킹 계약. 이 계약은 validator 세트를 유지합니다. 다음을 관리합니다. • 현재 validator 계정은 무엇입니까? • 짧게는 validator이 될 수 있습니다. 통지; • 어떤 계정이 지명 지분을 배치했는지 validator; • staking 볼륨, 허용되는 지급률 및 주소, 단기(세션) ID를 포함한 각각의 속성. 계정이 되고자 하는 욕구를 등록할 수 있습니다. 보세 validator(요구 사항과 함께), 일부 신원을 지명하고 기존 보세 validator이 이 상태를 종료하려는 의사를 등록합니다. 그것은 또한 검증 및 정규화 메커니즘을 위한 기계 자체를 포함합니다. 6.2.1. 지분-token 유동성. 일반적으로 다음을 수행하는 것이 바람직합니다. 총 staking token을 최대한 많이 확보하세요. 이후 네트워크 유지 관리 작업에 참여 이는 네트워크 보안을 staking token의 전체 "시가 총액"과 직접적으로 연결합니다. 이것은 쉽게 할 수 있습니다 통화를 부풀리고 validators로 참여하는 사람들에게 수익금을 나눠줌으로써 인센티브를 받습니다. 그러나 그렇게 하면 문제가 발생합니다. token 축소 처벌로 스테이킹 계약에 갇혀 있는데 어떻게 상당 부분이 충분히 남을 수 있겠습니까? 가격 발견을 허용하기 위해 액체? 이에 대한 한 가지 대답은 기본 스테이킹된 token에 대체 가능한 token을 확보하여 간단한 파생 계약을 허용하는 것입니다. 이는 무신뢰 방식으로 마련하기가 어렵습니다. 더욱이 이러한 파생 상품은 다른 유로존 정부 채권이 대체 불가능하다는 것과 같은 이유로 동등하게 취급될 수 없습니다. 기초 자산이 실패하고 무가치하다. 유로존 정부와 관련하여 다음과 같은 일이 발생할 수 있습니다. 기본값. validator 스테이킹된 token을 사용하면 validator이(가) 악의적으로 행동하고 처벌을 받습니다. 우리의 교리에 따라 우리는 가장 간단한 솔루션을 선택합니다. 모든 token이 스테이킹되는 것은 아닙니다. 이것은 다음을 의미합니다 token의 일부(아마도 20%)는 강제로 유동 상태로 유지됩니다. 이는 보안 관점에서 불완전하지만 보안 측면에서 근본적인 차이를 만들 가능성은 없습니다. 네트워크 보안; 채권 몰수로 인한 배상금의 80%는 여전히 이루어질 수 있습니다. 100% staking의 "완벽한 사례"와 비교됩니다. 스테이킹된 token 사이의 비율은 역경매 메커니즘을 통해 상당히 간단하게 타겟팅할 수 있습니다. 본질적으로, validator가 되는 데 관심이 있는 token 보유자입니다. 각각 staking 계약서에 다음과 같은 제안을 게시할 것입니다. 그들이 받아야 할 최소 지급률 부분. 각 세션이 시작될 때(세션은 정기적으로, 아마도 한 시간에 한 번 정도 발생함) validator 슬롯은 각 원하는 대로 채워집니다. validator의 지분 및 지급률. 하나의 가능한 알고리즘 왜냐하면 이것은 가장 낮은 제안을 받은 사람들을 택하는 것이기 때문입니다. 목표로 삼은 총 지분보다 높지 않은 지분을 나타냅니다. 슬롯 수로 나눈 값이며 그 양의 절반보다 낮을 수 없습니다. 슬롯을 채울 수 없는 경우, 하한은 만족시키기 위해 어떤 요인에 의해 반복적으로 감소될 수 있습니다. 6.2.2. 지명. 무신뢰 지명 가능 staking token을 활성 validator에 전달하여 validator의 의무에 대한 책임입니다. 작품 추천 승인 투표 시스템을 통해. 각 후보자 후보는 staking 계약에 지침을 게시할 수 있습니다. 하나 이상의 validator 신원을 표현하는 것 그들은 자신의 유대를 맡길 준비가 되어 있습니다. 각 세션마다 지명자의 결속력이 분산됩니다. 하나 이상의 validator으로 표시됩니다. 분산 알고리즘은 등가 총계의 validator 세트를 최적화합니다. 채권. 지명자의 채권은 validator a의 실질적인 책임 하에 있게 됩니다.관심을 얻거나 고통을 겪을 수도 있습니다. 그에 따라 처벌이 감소됩니다. 6.2.3. 채권 압수/소각. 특정 validator 행동으로 인해 채권이 징벌적으로 감소됩니다. 만약에 채권이 허용 가능한 최소 금액 이하로 감소되었습니다. 세션이 조기 종료되었으며 다른 세션이 시작되었습니다. 처벌 가능한 validator 비행의 대략적인 목록은 다음과 같습니다. • 제공할 수 없는 파라체인 그룹의 일부임 파라체인 블록의 유효성에 대한 합의; • 무효의 유효성에 대해 적극적으로 서명합니다. 파라체인 블록; • 이전에는 송신 페이로드를 제공할 수 없음 사용 가능한 것으로 투표되었습니다. • 합의 과정 중 활동이 없습니다. • 경쟁 포크에서 릴레이 체인 블록을 검증합니다. 잘못된 행동의 일부 사례는 네트워크의 무결성을 위협합니다(예: 유효하지 않은 파라체인 블록에 서명하고 포크의 여러 측면을 검증하는 등). 따라서 채권의 전체 감소를 통해 효과적인 추방이 발생합니다. 에서 기타 덜 심각한 경우(예: 합의에 대한 비활동성) 프로세스) 또는 비난을 정확하게 할당할 수 없는 경우(비효과적인 그룹의 일부임), 작은 부분 대신 채권의 일부가 벌금으로 부과될 수 있습니다. 후자의 경우, 이는 하위 그룹 이탈과 잘 작동하여 악의적인 노드는 부수적으로 손상된 자비로운 노드보다 훨씬 더 많은 손실을 입습니다. 어떤 경우에는(예: 다중 포크 검증 및 유효하지 않은 경우) 하위 블록 서명) validators는 지속적인 검증으로 인해 서로의 잘못된 행동을 쉽게 감지할 수 없습니다. 각 파라체인 블록을 만드는 것은 너무 힘든 작업이 될 것입니다. 여기 외부 당사자의 지지를 얻어야 한다. 그러한 오작동을 확인하고 보고하기 위한 검증 프로세스. 당사자들은 그러한 활동을 보고한 대가로 보상을 받습니다. 그들의 "어부"라는 용어는 가능성이 없다는 데서 유래합니다. 그런 보상. 이러한 경우는 일반적으로 매우 심각하므로 압수된 채권으로 보상금을 쉽게 지불할 수 있다고 생각합니다. 일반적으로 우리는 균형 잡힌 연소를 선호합니다. (즉, 아무것도 아닌 것으로 축소) 도매 재분배를 시도하고 있습니다. 이는 다음과 같은 효과가 있습니다.
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 11 token의 전체 가치를 높여서 특정 네트워크보다는 일반적으로 어느 정도 네트워크를 발견에 참여한 당사자. 이는 주로 안전을 위한 것입니다. 메커니즘: 관련된 많은 양은 극단적이고 심각한 행동 인센티브로 이어질 수 있습니다. 단일 대상에게 부여됩니다. 일반적으로 보상은 네트워크에 대한 검증을 가치 있게 만들 만큼 충분히 크지만, 네트워크에 대한 비용을 상쇄할 만큼 크지는 않은 것이 중요합니다. 재정이 좋고 조직이 잘 조직된 "산업 수준"의 범죄 잘못된 행동을 강요하기 위해 불운한 validator에 대한 해킹 공격입니다. 이런 식으로 청구된 금액은 일반적으로 0이 되어야 합니다. 잘못된 validator의 직접 채권보다 큽니다. 잘못된 행동을 하고 현상금을 위해 자신을 보고하는 비뚤어진 인센티브가 발생합니다. 이는 명시적으로 해결될 수 있습니다. 최소한의 직접 채권 요건을 통해 validator 또는 예치된 채권이 거의 없는 validator이 큰 인센티브가 없다는 것을 지명자에게 교육함으로써 암묵적으로 잘 행동하기 위해서. 6.3. 파라체인 레지스트리. 각 파라체인은 다음과 같이 정의됩니다. 이 레지스트리. 데이터베이스와 유사한 상대적으로 간단한 구성이며 정적 정보와 동적 정보를 모두 보유합니다. 각 체인. 정적 정보에는 체인 인덱스(간단한 정수), 검증 프로토콜 ID와 함께 다양한 클래스를 구별하는 수단 올바른 검증 알고리즘이 될 수 있도록 파라체인 유효한 후보자를 제시하기 위해 위임된 validators에 의해 운영됩니다. 초기 개념 증명은 배치에 중점을 둡니다. 새로운 검증 알고리즘을 클라이언트 자체에 적용하여 매번 프로토콜의 하드포크를 효과적으로 요구합니다. 체인 클래스가 추가되었습니다. 하지만 궁극적으로, 검증 알고리즘을 지정하는 것이 가능할 수도 있습니다. 고객이 만족할 만큼 엄격하고 효율적인 방법입니다. 별도의 조치 없이 새로운 파라체인과 효과적으로 작업할 수 있습니다. 하드포크. 이에 대한 한 가지 가능한 방법은 다음을 지정하는 것입니다. 잘 확립된 파라체인 검증 알고리즘, WebAssembly와 같이 기본적으로 컴파일되고 플랫폼 중립적인 언어입니다. 결정하기 위해서는 추가적인 연구가 필요하다 이것이 정말로 실현 가능한지 여부, 그러나 만약 그렇다면 이를 통해 하드포크를 추방하는 엄청난 이점을 얻을 수 있습니다. 영원히. 동적 정보에는 다음과 같은 글로벌 합의가 있어야 하는 트랜잭션 라우팅 시스템의 측면이 포함됩니다. 파라체인의 수신 대기열로 사용됩니다(섹션 6.6에 설명되어 있음). 레지스트리에는 파라체인만 추가할 수 있습니다. 전체 국민투표를 통해; 이건 관리할 수 있을 것 같아 내부적으로는 배치되지만 외부에 배치될 가능성이 더 높습니다. 재사용을 촉진하기 위한 국민투표 계약 보다 일반적인 거버넌스 구성 요소. 매개변수는 투표 요구 사항(예: 필요한 정족수, 과반수 필수) 추가 체인 및 기타 등록을 위해 덜 공식적인 시스템 업그레이드는 "마스터"에서 설정됩니다. 헌법”을 따르지만 상당히 전통적인 방식을 따를 가능성이 높습니다. 적어도 처음에는 경로입니다. 정확한 공식은 나오지 않았습니다 현재 작업의 범위, 예를 들어 전체 시스템의 3분의 1 이상을 통과하려면 2/3의 절대 다수가 통과해야 합니다. 스테이크에 대한 긍정적인 투표는 합리적인 출발점이 될 수 있습니다. 추가 작업에는 파라체인의 정지 및 제거가 포함됩니다. 정지는 결코 발생하지 않을 것입니다. 그러나 이는 최소한의 안전 장치로 설계되었습니다. 파라체인의 검증 시스템에는 다루기 힘든 문제가 있습니다. 가장 확실한 사례는 validator이 동의할 수 없게 만드는 구현 간의 합의에 중요한 차이점이 필요합니다. 유효성 또는 차단. 검증인은 다음을 사용하는 것이 좋습니다. 여러 클라이언트 구현을 수행할 수 있도록 채권을 몰수하기 전에 그러한 문제를 발견하는 것입니다. 정지는 긴급조치이므로, 오히려 역동적인 validator-투표의 후원으로 국민투표보다 복원은 둘 다 가능할 것입니다. validators 또는 국민 투표에서. 파라체인을 완전히 제거하는 것은 오직 국민투표 이후에는 질서 있는 전환을 허용하는 상당한 유예 기간 독립형 체인이 되거나 다른 체인의 일부가 되거나 합의 시스템. 유예 기간은 다음과 같습니다. 달의 순서이며 다른 순서로 파라체인 레지스트리에 퍼체인 기반으로 설정될 가능성이 높습니다. 파라체인은 다음에 따라 다양한 유예 기간을 누릴 수 있습니다. 그들의 필요. 6.4. 릴레이 블록 밀봉. 씰링은 본질적으로 다음을 의미합니다. 정규화 과정; 즉, 기본 데이터 변환하는 것원본을 근본적으로 독특하고 의미 있는 것으로 매핑합니다. PoW 체인 하에서, 봉인은 사실상 채굴과 동의어입니다. 우리의 경우, 여기에는 validators의 유효성, 가용성 및 정식성에 대한 서명된 진술 수집이 포함됩니다. 특정 릴레이 체인 블록과 파라체인 블록 그것은 나타냅니다. 기본 BFT 합의 알고리즘의 메커니즘은 현재 작업의 범위를 벗어납니다. 우리는 대신에 다음을 가정하는 기본 요소를 사용하여 설명합니다. 합의를 창출하는 상태 기계. 결국 우리는 기대한다 수많은 유망한 BFT 합의에서 영감을 얻습니다. 핵심 알고리즘; Tangaora [9] (BFT 변종) Raft [16]), Tendermint [11] 및 HoneyBadgerBFT [14]. 알고리즘은 여러 파라체인에 대해 병렬로 합의에 도달해야 하므로 일반적인 알고리즘과 다릅니다. blockchain 합의 메커니즘. 우리는 한 번 가정 합의에 도달하면 합의를 기록할 수 있습니다. 어느 누구라도 제공할 수 있는 반박할 수 없는 증거로 그것에 참가자. 우리는 또한 잘못된 행동을 가정합니다 프로토콜 내에서 일반적으로 작은 규모로 축소될 수 있습니다. 최소화하기 위해 잘못된 행동을 하는 참가자가 포함된 그룹 처벌을 내릴 때의 부수적 피해.8 서명된 진술의 형태를 취하는 증명은 릴레이 체인 블록의 헤더에 함께 배치됩니다. 특히 릴레이 체인의 statetrie 루트 및 transaction-trie 루트와 같은 특정 필드를 사용합니다. 는 밀봉 프로세스 걸립니다 장소 아래 에 싱글 합의 생성 메커니즘 주소 지정 둘 다 는 릴레이체인의 블록과 파라체인의 블록으로 릴레이 콘텐츠의 일부: 파라체인은 하위 그룹에 의해 별도로 "커밋"된 다음 대조되지 않습니다. 나중에. 이로 인해 릴레이체인의 프로세스가 더 복잡해지지만 단일 단계에서 전체 시스템의 합의를 완료할 수 있어 대기 시간이 최소화되고 허용됩니다. 매우 복잡한 데이터 가용성 요구 사항에 대해 아래 라우팅 프로세스에 도움이 됩니다. 8Tendermint BFT과 같은 기존 PoS 기반 BFT 합의 체계와 원본 Slasher는 이러한 주장을 충족합니다.
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 12 각 참가자의 합의 기계 상태는 다음과 같습니다. 간단한(2차원) 테이블로 모델링됩니다. 각 참가자(validator)는 다음 형식의 정보 세트를 가지고 있습니다. 각 파라체인 블록 후보와 릴레이체인 블록 후보에 관한 다른 참가자의 서명된 진술("투표")입니다. 정보 세트는 2개입니다. 데이터: 가용성: 있음 이 validator 가지고 있다 출구 이 블록의 거래 게시물 정보 그들은 다음 블록에서 파라체인 후보를 적절하게 검증할 수 있습니까? 그들은 투표할 수 있습니다 1(알려짐) 또는 0(아직 알려지지 않음)입니다. 일단 그들은 1번 투표를 하면 그들은 비슷한 투표를 하기로 약속합니다. 이 과정의 나머지 부분. 그렇지 않은 나중에 투표 존중하는 것은 처벌의 근거가 됩니다. 유효성: 파라체인 블록이 유효하며 모두 유효합니다. 외부 참조 데이터(예: 거래) 가능합니까? 이는 투표 중인 파라체인에 할당된 validator에만 관련됩니다. 1(유효), -1(무효) 또는 0으로 투표할 수 있습니다. (아직 알려지지 않음). 0이 아닌 투표를 하면 나머지 투표에서도 이런 방식으로 투표하기로 약속했습니다. 과정. 이를 존중하지 않는 나중에 투표 처벌사유가 됩니다. 모든 validator은 투표를 제출해야 합니다. 위의 규칙에 따라 투표를 다시 제출할 수 있습니다. 의 진행 합의는 병렬로 발생하는 각 파라체인에 대한 여러 표준 BFT 합의 알고리즘으로 모델링될 수 있습니다. 이는 상대적으로 잠재적으로 방해를 받기 때문에 소수의 악의적인 행위자가 집중되어 있음 단일 파라체인 그룹에 대한 전반적인 합의가 존재합니다. 백스톱을 구축하여 최악의 시나리오를 제한합니다. 단지 하나 이상의 보이드 파라체인 블록에 대한 교착상태(그리고 책임자에 대한 일련의 처벌). 개별 블록의 유효성에 대한 기본 규칙 (전체적으로 validator의 전체 세트가 독특한 파라체인 후보가 되는 것에 대한 합의 표준 릴레이에서 참조됨): • validator의 최소 2/3가 긍정적으로 투표해야 하며 누구도 부정적으로 투표하지 않아야 합니다. • 송신 대기열 정보의 가용성에 대해 3분의 1 이상의 validator이 긍정적으로 투표해야 합니다. 타당성에 대해 적어도 하나의 긍정적인 투표와 적어도 하나의 부정적인 투표가 있는 경우 예외 조건이 생성됩니다. validator 전체 집합이 투표를 통해 결정해야 합니다. 악의적인 당사자가 있거나 우발적인 사고가 발생한 경우 포크. 유효, 무효 외에 세 번째 종류의 투표 허용되며 이는 둘 다에 투표하는 것과 같습니다. 즉, 노드는 서로 상충되는 의견을 가지고 있습니다. 이는 다음으로 인해 발생할 수 있습니다. 여러 구현을 실행하는 노드 소유자 동의하지 않음은 프로토콜에 모호성이 있을 수 있음을 나타냅니다. 모든 투표가 전체 validator 세트에서 계산된 후, 패배한 의견은 최소한 어느 정도 작은 비율을 차지합니다( 매개변수화되어야 합니다. 많아야 절반, 어쩌면 훨씬 적을 수도 있음) 승리한 의견의 득표수로 간주됩니다. 우발적인 파라체인 포크가 되어 파라체인은 합의 프로세스에서 자동으로 중단됩니다. 그렇지 않으면 악의적인 행위로 간주하여 처벌합니다. 반대 의견에 투표한 소수. 결론은 다음을 입증하는 일련의 서명입니다. 정규성. 그러면 릴레이 체인 블록이 봉인될 수 있습니다. 그리고 다음 블록을 봉인하는 과정이 시작되었습니다. 6.5. 릴레이 블록 밀봉 개선. 동안 이 밀봉 방법은 시스템 작동에 대한 강력한 보장을 제공하지만 특별히 확장이 잘 되지는 않습니다. 모든 파라체인의 핵심 정보에는 고유한 정보가 있어야 하기 때문에 전체 validator의 1/3 이상에서 가용성이 보장됩니다. 이는 모든 validator의 책임 범위가 더 많은 체인이 추가될수록 증가합니다. 개방형 합의 네트워크 내에서 데이터 가용성을 유지하는 동안 본질적으로 해결되지 않은 문제이므로 validator 노드에 발생하는 오버헤드를 완화하는 방법이 있습니다. 하나의 간단한 해결책은 validators가 어깨를 짊어져야 한다는 것을 깨닫는 것입니다. 데이터 가용성에 대한 책임이 있기 때문에 실제로 데이터 자체를 저장, 전달 또는 복제할 필요는 없습니다. 2차 데이터 사일로, 아마도 관련이 있거나 동일) 이 데이터를 수집하는 대조자는 지불 이자/소득의 일부를 제공하는 validator을 통해 가용성을 보장하는 작업입니다. 그러나 이렇게 하면 중간 정도의 확장성을 얻을 수는 있지만 여전히 근본적인 문제에는 도움이 되지 않습니다. 이후 더 많은 체인을 추가하려면 일반적으로 추가 validator이 필요하며 지속적인 네트워크 리소스 소비(특히 대역폭 측면에서)는 다음의 제곱에 따라 증가합니다. 는체인은 장기적으로 보호할 수 없는 자산입니다. 결국 우리는 계속해서 머리를 강타하게 될 것입니다. 다음과 같은 근본적인 한계에 반대합니다. 안전한 것으로 간주되는 합의 네트워크, 현재 진행 중인 대역폭 요구 사항은 총계 수준입니다. validators번 총 입력 정보입니다. 이는 다음으로 인해 발생합니다. 신뢰할 수 없는 네트워크가 여러 노드에 걸쳐 데이터 저장 작업을 적절하게 분배할 수 없음 처리라는 탁월한 배포 작업을 제외하고. 6.5.1. 지연 시간을 소개합니다. 이것을 부드럽게 하는 한 가지 방법 즉각성의 개념을 완화하는 것이 규칙입니다. 즉시가 아닌 최종적으로만 가용성에 대해 33%+1 validators 투표를 요구함으로써 우리는 기하급수적인 데이터 전파를 더 잘 활용하고 데이터 교환의 최대치를 균등화하는 데 도움을 줄 수 있습니다. 합리적인 평등(증명되지는 않았지만) 다음과 같을 수 있습니다: (1) 대기 시간 = 참가자 × 체인 현재 모델에서는 시스템 규모가 확장됩니다. 처리가 이루어지도록 체인 수를 확인합니다. 분산; 각 체인에는 최소한 하나의 validator이 필요하며 가용성 증명을 상수로 수정합니다. validator의 비율, 참가자도 비슷하게 증가합니다. 체인 수와 함께. 우리는 다음과 같이 끝납니다: (2) 대기 시간 = 크기2 이는 시스템이 성장함에 따라 필요한 대역폭과 가용성이 전체 시스템에 알려질 때까지의 대기 시간을 의미합니다. 네트워크는 숫자로 특징지어질 수도 있습니다. 최종 이전의 블록 수는 제곱에 따라 증가합니다. 이것은 상당한 성장 요인이며 주목할만한 장애물이 되어 우리를 "비평탄한" 패러다임으로 몰아넣을 수 있습니다. 예를 들어 여러 "Polkadotes"를 계층 구조로 구성하는 등 릴레이체인 트리를 통해 포스트의 다단계 라우팅을 위한 것입니다.
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 13 6.5.2. 대중 참여. 또 하나의 가능한 방향 과정을 통해 대중의 참여를 유도하는 것입니다. 마이크로 컴플레인 시스템. 어부들과 비슷해요. 주장하는 validator을 경찰의 외부 당사자가 될 수 있습니다. 가용성. 그들의 임무는 그러한 가용성을 입증할 수 없는 것처럼 보이는 사람을 찾는 것입니다. 그렇게 함으로써 그들은 다른 validator에게 소소한 불만사항을 제기할 수 있습니다. PoW 또는 시빌 공격을 완화하기 위해 스테이크 채권을 사용할 수 있습니다. 이는 시스템을 거의 쓸모 없게 만듭니다. 6.5.3. 가용성 보증인. 최종 경로는 두 번째 결합된 validator 세트를 "가용성"으로 지정 보증인”. 이는 일반 validator과 마찬가지로 결합되며 동일한 세트에서 가져올 수도 있습니다. (그렇다면 적어도 세션당 장기간에 걸쳐 선택될 것입니다.) 일반 validator과 달리 파라체인 간에 전환하는 것이 아니라 오히려 모든 중요한 인터체인 데이터의 가용성을 증명하기 위해 단일 그룹을 구성합니다. 이는 참가자와 체인 간의 동등성을 완화할 수 있다는 장점이 있습니다. 본질적으로 체인은 다음과 같은 작업을 수행할 수 있습니다. (원래 체인 validator 세트와 함께) 성장하는 반면 참가자, 특히 데이터 가용성 증거에 참여하는 참가자는 최소한의 하위 선형 상태를 유지할 수 있습니다. 그리고 아마도 일정할 것이다. 6.5.4. 대조자 기본 설정. 이것의 중요한 측면 중 하나 시스템은 건전한 선택이 가능하도록 보장하는 것입니다. 특정 파라체인에서 블록을 생성하는 대조자. 만약 단일 대조자가 파라체인을 지배한 후 일부 공격 부족할 가능성이 높기 때문에 더욱 실현 가능해집니다. 외부 데이터의 가용성은 덜 명확합니다. 한 가지 옵션은 인공적으로 파라체인 블록에 가중치를 부여하는 것입니다. 다양한 대조자를 선호하기 위한 의사 무작위 메커니즘. 첫 번째 경우에는 다음이 필요합니다. validator이 선호하는 합의 메커니즘의 일부로 "무거운" 것으로 결정된 파라체인 블록 후보. 마찬가지로, 우리는 validators가 다음을 시도하도록 장려해야 합니다. 그들이 찾을 수 있는 가장 무거운 블록을 제안합니다. 후보자의 가중치에 비례하여 보상의 일부를 만들어 수행됩니다. 대조자에게 합리적인 공정한 대우를 보장하기 위해 자신의 후보가 당선자로 선택될 확률 합의된 후보자, 우리는 특정 가중치를 만듭니다. 파라체인 블록 후보는 각 콜레이터와 연결된 무작위 함수를 결정합니다. 예를 들어, collator의 주소 사이의 XOR 거리 측정 그리고 암호학적으로 안전한 의사 난수 블록이 생성되는 지점에 가깝게 결정됩니다. (명목상의 "당첨 티켓"). 이는 효과적으로 각 collator(또는 더 구체적으로 각 collator의 주소) 후보 블록이 "승리"할 무작위 확률 다른 모든 것. 단일 대조자의 시빌 공격을 완화하기 위해 당첨 티켓에 가까운 주소를 "채굴"하여 각 블록을 즐겨찾기에 추가하려면 대조자의 주소에 약간의 관성을 추가합니다. 이는 요구하는 것만큼 간단할 수 있습니다. 주소에 기본 자금 금액이 있어야 합니다. 더 우아한 접근 방식은 다음과 같은 근접성에 가중치를 두는 것입니다. 주차된 금액으로 당첨 티켓을 문제의 주소. 아직 모델링이 끝나지 않았지만, 이 메커니즘은 매우 소규모 이해관계자가 대조자로서 기여합니다. 6.5.5. 과체중 블록. validator 세트가 손상되면 블록을 생성하고 제안할 수 있습니다. 유효하고 실행하는 데 과도한 시간이 걸리며 검증하다. validator 그룹이 상당히 오랜 시간이 걸리는 블록을 합리적으로 형성합니다. 지름길을 허용하는 특정 정보가 이미 알려져 있지 않은 한 실행됩니다. 큰 인수분해 프라임. 단 한 명의 대조자가 해당 정보를 알고 있다면 그들은 자신의 것을 얻는 데 분명한 이점을 가질 것입니다 다른 사람들이 이전 블록을 처리하느라 바쁘다면 후보자들은 받아들여졌습니다. 우리는 이러한 블록을 과체중이라고 부릅니다. validators가 이러한 블록을 제출하고 검증하는 것에 대한 보호는 대체로 다음과 같은 방식으로 이루어집니다. 유효하지 않은 블록이지만 추가 주의사항은 다음과 같습니다. 블록을 실행하는 데 걸린 시간(따라서 블록의 상태) 과체중)은 주관적이며 투표의 최종 결과는 잘못된 행동은 본질적으로 세 가지 캠프로 분류됩니다. 하나 블록이 확실히 과체중이 아닐 가능성이 있습니다. 이 경우 2/3 이상이 그렇게 할 수 있다고 선언합니다. 일정 한도 내에서 블록을 실행합니다(예: 블록 간에 허용되는 총 시간의 50%). 또 다른 것은 블록은 d입니다확실히 과체중입니다. 2/3는 블록을 실행할 수 없다고 선언합니다. 상기 한도 내에서. 마지막 가능성 중 하나는 상당히 동일합니다. validators 사이의 의견 분열. 이 경우, 우리는 적절한 처벌을 선택하세요. validators가 언제 일어날지 예측할 수 있도록 하기 위해 비중확대 블록을 제안하는 경우 각 블록에 대한 자체 성과에 대한 정보를 게시하도록 요구하는 것이 합리적일 수 있습니다. ffi충분한 시간에 걸쳐, 이를 통해 처리 속도를 프로파일링할 수 있습니다. 그들을 판단할 동료들에 비해. 6.5.6. Collator 보험. validators에 대해 한 가지 문제가 남아 있습니다. PoW 네트워크와 달리 대조자의 유효성을 위해 블록을 실제로 실행해야 합니다. 악의적인 대조자는 유효하지 않거나 과중한 블록을 validator에 공급하여 슬픔을 유발할 수 있습니다(낭비 자원)을 요구하고 잠재적으로 상당한 기회 비용을 요구합니다. 이를 완화하기 위해 우리는 간단한 전략을 제안합니다. validators의 일부입니다. 먼저, 파라체인 블록 후보가 전송되었습니다. validators은(는) 릴레이 체인 계정에서 서명되어야 합니다. 자금으로; 그렇지 않은 경우 validator이 삭제되어야 합니다. 즉시요. 둘째, 그러한 후보자는 다음의 조합(예: 곱셈)에 의해 우선순위로 정렬되어야 합니다. 일정 한도 내에서 계좌에 있는 자금의 양, 대조자가 과거에 성공적으로 제안한 이전 블록의 수(이전 블록은 말할 것도 없고) 처벌) 및 승리에 대한 근접 요인 이전에 논의한 티켓. 캡은 동일해야합니다 해당 사건에서 validator에게 지급된 징벌적 손해배상금 그 중 잘못된 블록을 보내는 중입니다. 대조자가 유효하지 않거나 과중한 블록 후보를 validators에 보내는 것을 막기 위해 모든 validator은 오작동하는 대조자의 자금 중 일부 또는 전부를 이체하는 결과로 오작동을 주장하는 문제가 있는 블록을 포함하는 거래를 다음 블록에 배치합니다. 불만이 있는 validator에게 설명하세요. 이러한 유형의 트랜잭션은 대조자가 확인할 수 없도록 다른 트랜잭션을 먼저 실행합니다. 처벌 전에 자금을 제거하십시오. 금액 손해배상금으로 이전된 자금은 아직까지 동적 매개변수입니다.
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 14 모델링될 예정이지만 발생한 슬픔의 수준을 반영하기 위해 validator 블록 보상의 일부가 될 가능성이 높습니다. 받는 사람 악의적인 validator이 대조자의 자금을 임의로 압수하는 것을 방지하기 위해 대조자는 무작위로 선택된 validator의 배심원단과 함께 validator의 결정에 대해 항소할 수 있습니다. 소액 입금을 위해. validator의 호의를 발견하면 보증금이 소비됩니다. 그렇지 않은 경우, 보증금이 반환되고 validator에 벌금이 부과됩니다(이후 validator은(는) 훨씬 더 아치형 위치에 있으므로 벌금이 부과됩니다. 아마도 꽤 무거울 것입니다). 6.6. 인터체인 거래 라우팅. 인터체인 트랜잭션 라우팅은 필수 유지 관리 중 하나입니다. 릴레이 체인 및 해당 validator의 작업입니다. 이것은 게시된 트랜잭션(종종 단순히 "포스트"로 단축됨)이 원하는 출력이 되는 방식을 제어하는 논리 하나의 소스 파라체인에서 신뢰 없이 다른 대상 파라체인의 협상 불가능한 입력이 되기까지 요구 사항. 우리는 위의 문구를 신중하게 선택했습니다. 특히 우리는 소스에 트랜잭션이 있을 필요는 없습니다. parachain이 이 게시물을 명시적으로 승인했습니다. 유일한 우리 모델에 적용하는 제약은 파라체인입니다. 전체 블록의 일부로 패키지되어 제공되어야 합니다. 처리 출력, 결과인 게시물 블록의 실행. 이러한 게시물은 여러 FIFO 대기열로 구성됩니다. 는 목록의 수는 라우팅 기반으로 알려져 있으며 약 16입니다. 특히 이 숫자는 수량을 나타냅니다. 의존하지 않고도 우리가 지원할 수 있는 파라체인의 수 다단계 라우팅. 처음에는 Polkadot에서 이를 지원합니다. 일종의 직접 라우팅이지만 가능한 한 가지 방법을 간략하게 설명하겠습니다. 다단계 라우팅 프로세스("하이퍼 라우팅")를 수단으로 사용 초기 파라체인 세트를 훨씬 넘어 확장되는 것입니다. 우리 가정하다 그 모두 참가자 알고있다 는 다음 두 블록 n, n + 1에 대한 하위 그룹화. 요약하면, 라우팅 시스템은 다음 단계를 따릅니다. • CollatorS: 검증인의 연락처[n][S] • CollatorS: 각 하위 그룹에 대해: 연락 중인 검증인[n][s] 구성원 최소 1명 • 대조자: 각 하위 그룹에 대해: 가정하다 egress[n −1][s][S]를 사용할 수 있습니다(모든 수신 게시물 마지막 블록의 데이터를 'S'로) • 대조자: S에 대해 블록 후보 b를 구성합니다. (b.헤더, b.ext, b.증명, b.영수증, b.egress) • 대조자: 보내기 증거 정보 증명[S] = (b.header, b.ext, b.proof, b.receipt) 유효성 검사기[n][S] • CollatorS: 외부 트랜잭션 데이터 b.ext 보장 다른 대조자와 validators가 사용할 수 있습니다. • 대조자: 에 대한 각각 하위 그룹 들: 보내기 출구 정보 송신[n][S][s] = (b.헤더, b.receipt, b.egress[s]) 에 는 수신 하위 그룹 회원 의 다음 블록 유효성 검사기[n + 1][s] • ValidatorV : 동일 세트의 모든 멤버를 미리 연결합니다. 다음 블록의 경우: N = Chain[n + 1][V ]; 연결하다 Chain[n + 1][v] = N이 되는 모든 validators v • 유효성 검사기V: 이에 대한 모든 데이터 수신을 대조합니다. 블록: 에 대한 각각 하위 그룹 들: 검색 egress[n −1][s][Chain[n][V ]], Chain[n][v] = Chain[n][V ]가 되도록 다른 validators v에서 가져옵니다. 시도 증명을 위해 무작위로 선택된 다른 validator을 통해 진행될 수도 있습니다. • 유효성 검사기V: 이에 대한 후보 증명을 수락합니다. 블록 증명[체인[n][V ]]. 투표 차단 유효성 • 유효성 검사기V: 다음에 대한 후보 송신 데이터 수락 다음 블록: 각 하위 그룹에 대해 수락 송신[n][s][N]. 투표 차단 출구 가용성; 관심 있는 validators v 사이에서 다시 게시하십시오. 사슬[n + 1][v] = 사슬[n + 1][V ]. • ValidatorV : 합의가 있을 때까지 여기서: egress[n][from][to]는 현재 송신 대기열입니다. 파라체인 'from'에서 다음으로 가는 게시물에 대한 정보 블록 번호 'n'의 파라체인 'to'. CollatorS는 parachain S에 대한 collator입니다. V alidators[n][s]는 블록 번호 n에 있는 parachain s에 대한 validators 집합입니다. 반대로, Chain[n][v]는 블록 번호 n에 validator v가 할당된 파라체인입니다. block.egress[to]는 송신입니다. 일부 파라체인 블록 블록의 게시물 대기열 목적지 파라체인은 입니다. 대조자는 다음을 기준으로 (거래) 수수료를 징수하므로 그들의 블록은 표준이 되며, 그들은 다음과 같은 인센티브를 받습니다. 각 다음 블록 대상에 대해 하위 그룹의 구성원은 현재의 송신 대기열에 대한 정보를 받습니다. 블록. 검증인은 (파라체인) 블록에 대한 합의를 형성하는 것에 대해서만 인센티브를 받습니다. 어떤 collator의 블록이 궁극적으로 표준이 됩니다. 에서 원칙적으로 validator은 대조자와 동맹을 맺고 다른 대조자의 기회를 줄이기 위해 공모할 수 있습니다. 블록이 정식화되지만 이는 둘 다 어렵습니다. 무작위 선택으로 인해 정렬validators의 액션 파라체인을 유지하는 파라체인 블록에 대해 지불해야 하는 수수료를 줄임으로써 방어할 수 있습니다. 합의 과정. 6.6.1. 외부 데이터 가용성. 파라체인의 보장 외부 데이터가 실제로 사용 가능하다는 것은 지속적인 문제입니다. 작업 부하를 분산시키는 것을 목표로 하는 분산형 시스템 네트워크. 문제의 핵심은 가용성이다 불가능하기 때문에 발생하는 문제 가용성에 대한 비대화형 증명을 만들거나 어떤 종류의 것도 만들지 마세요. BFT 시스템이 제대로 작동하려면 가용성이 없다는 증거를 제시하세요. 정확성이 의존하는 모든 전환을 검증합니다. 일부 외부 데이터의 가용성, 최대 수 허용 가능한 비잔틴 노드 수와 시스템의 1개 데이터가 이용 가능하다는 것을 증명해야 합니다. Polkadot과 같이 시스템을 적절하게 확장하려면 다음을 수행하세요. 문제를 야기합니다: validators의 일정한 비율이 있는 경우 데이터의 가용성을 증명해야 하며, validators는 데이터가 사용 가능하다고 주장하기 전에 실제로 데이터를 저장하기를 원할 것입니다. 그렇다면 어떻게 하면 시스템 크기(따라서 validators 수)에 따라 대역폭/스토리지 요구 사항이 증가하는 문제가 있습니까? 한 가지 가능한 대답은 별도의 세트를 갖는 것입니다. validators(가용성 보증인) 중 주문이 증가함 전체적으로 Polkadot 크기의 준선형적입니다. 이것은 6.5.3에 설명되어 있습니다. 두 번째 트릭도 있어요. 그룹으로서 대조자는 모든 데이터가 파라체인이 없으면 선택한 파라체인에 사용할 수 있습니다. 더 이상 블록을 작성할 수 없습니다. 거래 수수료를 징수합니다. Collator는 또한 구성원이 다양한 그룹을 형성합니다(데이터의 무작위 특성으로 인해). parachain validator 그룹) 입력하기 쉽고 쉽습니다.
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 15 증명하기 위해. 따라서 최근 대조자(아마도 마지막 수천 블록 중)는 다음에 대한 이의제기를 발행할 수 있습니다. 특정 파라체인에 대한 외부 데이터의 가용성 소액 채권을 위해 validators를 차단하세요. 검증인은 증언한 분명히 문제가 있는 validator 하위 그룹의 사람들에게 연락하여 데이터를 수집하여 대조자에게 반환하거나 에스컬레이션해야 합니다. 가용성이 부족하다는 것을 증언함으로써 문제가 됩니다(데이터 제공을 직접 거부하는 것은 채권 압수 범죄로 간주되므로 잘못된 행동을 하는 validator은 아마도 연결 끊기) 및 추가 validators에 연락 동일한 테스트를 실행합니다. 후자의 경우, 대조자의 채권 반환됩니다. 이러한 비가용성 평가를 작성할 수 있는 validator의 정족수에 도달하면 해당 사용자는 해제됩니다. 잘못 행동하는 하위 그룹은 처벌되고 블록은 되돌려집니다. 6.6.2. 게시물 라우팅. 각 파라체인 헤더에는 출구-트리-루트; 이것은 다음을 포함하는 트라이의 루트입니다. 라우팅 기반 저장소, 각 저장소는 연결된 목록임 송신 게시물의 수입니다. 머클 증명은 다음과 같이 제공될 수 있습니다. parachain validators는 특정 parachain이 블록에는 특정 대상 파라체인에 대한 특정 송신 대기열이 있습니다. 파라체인 블록 처리 초기에는 각 해당 블록에 대한 다른 파라체인의 송신 대기열은 다음과 같습니다. 우리 블록의 수신 대기열에 병합되었습니다. 우리는 강하다고 가정하고, 아마도 CSPR9, 하위 블록 순서는 어느 것 사이에도 편애를 제공하지 않는 결정론적 연산을 달성하기 위한 것입니다. 파라체인 블록 페어링. Collator는 새 대기열을 계산합니다. 파라체인의 요청에 따라 출구 대기열을 비웁니다. 논리. 수신 대기열의 내용이 명시적으로 기록됩니다. 파라체인 블록에 들어갑니다. 여기에는 두 가지 주요 목적이 있습니다. 첫째, 이는 파라체인이 다른 파라체인과 분리되어 신뢰 없이 동기화될 수 있음을 의미합니다. 둘째, 전체 수신이 필요한 경우 데이터 물류를 단순화합니다. 대기열은 단일 블록에서 처리될 수 없습니다. validators 및 대조자는 다음 블록을 처리할 수 있습니다. 큐의 데이터를 특별히 소싱할 필요 없이. 파라체인의 수신 대기열이 임계값을 초과하는 경우 블록 처리가 끝나면 금액이 표시됩니다. 릴레이 체인이 포화되어 더 이상 메시지가 전송되지 않을 수 있습니다. 삭제될 때까지 전달됩니다. 머클 증명은 콜레이터 작업의 충실도를 입증하는 데 사용됩니다. 파라체인 블록의 증명. 6.6.3. 비평. 이 기본과 관련된 하나의 사소한 결함 메커니즘은 폭탄 후 공격입니다. 이곳은 모두가 파라체인은 가능한 최대량의 게시물을 보냅니다. 특정 파라체인에. 이것이 목표의 목표를 묶는 동안 한 번에 수신 대기열을 실행하면 계속해서 손상이 발생하지 않습니다. 표준 트랜잭션 DoS 공격. 잘 동기화된 세트로 정상적으로 작동하고 N 파라체인의 경우 비악성 대조자 및 validators, 파라체인당 N × M 총 validators 및 L 콜레이터, 우리는 블록당 전체 데이터 경로를 다음과 같이 분류할 수 있습니다. 유효성 검사기: M −1+L+L: 다른 validator에 대한 M −1 파라체인 세트에서 후보 파라체인 블록을 제공하는 각 콜레이터에 대한 L과 각 콜레이터에 대한 두 번째 L 이전 블록의 송신 페이로드가 필요한 다음 블록의 (후자는 실제로 최악의 경우에 가깝습니다. 대조자가 이러한 작업을 공유할 가능성이 높기 때문에 작업 데이터.) Collator: M +kN: 각 관련 항목에 대한 연결을 위한 M parachain 블록 validator, 각 parachain validator 그룹의 일부 하위 집합에 송신 페이로드를 시딩하기 위한 kN 다음 블록(그리고 선호하는 일부 대조자). 따라서 노드당 데이터 경로 방식은 선형적으로 증가합니다. 시스템의 전반적인 복잡성과 관련이 있습니다. 이 동안 합리적입니다. 시스템이 수백 또는 수천 개의 파라체인으로 확장됨에 따라 일부 통신 지연이 발생할 수 있습니다. 복잡성 증가율이 낮아지는 대가로 흡수됩니다. 이 경우 다중 단계 라우팅 알고리즘을 사용할 수 있습니다. 순간적인 경로의 수를 줄이기 위해 스토리지 버퍼와 대기 시간을 도입하는 비용이 듭니다. 6.6.4. 하이퍼큐브 라우팅. 하이퍼 큐브 라우팅은 대부분 하이퍼 큐브 라우팅의 확장으로 구축될 수 있는 메커니즘입니다. 위에서 설명한 기본 라우팅 메커니즘. 본질적으로, 파라체인과 하위 그룹 노드의 수로 노드 연결성을 늘리는 대신, 파라체인의 로그. 게시물은 다음 사이에 전송될 수 있습니다. 여러 파라체인이 최종 배송을 위해 줄을 서고 있습니다. 라우팅 자체는 결정적이고 간단합니다. 우리는 다음과 같이 시작합니다 수신/송신 대기열의 저장소 수를 제한합니다. 파라체인의 총 개수가 아니라, 는라우팅 기반(b) . 숫자로 고정됩니다 대신 라우팅 지수(e)가 증가하여 파라체인이 변경됩니다. 이 모델에서는 메시지 볼륨이 O(be)와 함께 성장하며 경로는 일정하게 유지됩니다. 및 지연 시간(또는 전송에 필요한 블록 수) O(e)로. 우리의 라우팅 모델은 e차원의 하이퍼큐브입니다. 큐브의 각 면에는 b개의 가능한 위치가 있습니다. 각 블록은 단일 축을 따라 메시지를 라우팅합니다. 우리 라운드 로빈 방식으로 축을 교체하여 최악의 경우 e 블록 배달 시간을 보장합니다. 파라체인 가공의 일환으로 해외로 향하는 수신 대기열에서 발견된 메시지는 다음과 같은 경우 적절한 송신 대기열의 저장소로 즉시 라우팅됩니다. 현재 블록 번호(및 라우팅 차원) 이 프로세스에는 각 홉에 대한 추가 데이터 전송이 필요합니다. 배송 경로에 문제가 있지만, 이는 그 자체로 문제입니다 이는 대체 수단을 사용하여 완화될 수 있습니다. 데이터 페이로드 전달 및 참조만 포함, 포스트 트라이에 있는 포스트의 전체 페이로드가 아니라. 시스템에 대한 하이퍼큐브 라우팅의 예 4개의 파라체인을 사용하면 b = 2 및 e = 2는 다음과 같을 수 있습니다. 0단계, 각 메시지 M: • sub0: Mdest ∈{2, 3}이면 sendTo(2), 그렇지 않으면 유지 • sub1: Mdest ∈{2, 3}이면 sendTo(3), 그렇지 않으면 유지 • sub2: Mdest ∈{0, 1}이면 sendTo(0), 그렇지 않으면 유지 • sub3: Mdest ∈{0, 1}이면 sendTo(1), 그렇지 않으면 유지 1단계, 각 메시지 M: • sub0: Mdest ∈{1, 3}이면 sendTo(1), 그렇지 않으면 유지 • sub1: Mdest ∈{0, 2}이면 sendTo(0), 그렇지 않으면 유지 • sub2: Mdest ∈{1, 3}이면 sendTo(3), 그렇지 않으면 유지 • sub3: Mdest ∈{0, 2}이면 sendTo(2), 그렇지 않으면 유지 여기의 두 차원은 첫 번째로 쉽게 볼 수 있습니다. 대상 인덱스의 2비트; 첫 번째 블록의 경우, 상위 비트만 사용됩니다. 두 번째 블록 거래 하위 비트로. 둘 다 발생하면 (임의로 주문) 게시물이 라우팅됩니다. 9암호적으로 안전한 의사 난수
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 16 6.6.5. 세렌디피티의 극대화. 기본의 한 가지 변형 제안에서는 고정된 총 c2 −c validators를 볼 수 있습니다. c−1 각 하위 그룹의 validators. 블록 하나하나가 아니라 validators의 구조화되지 않은 재파티셔닝이 있습니다. 파라체인 중에서 각 파라체인 하위 그룹 대신에 각 validator은 고유하고 다른 항목에 할당됩니다. 다음 블록의 파라체인 하위 그룹. 이것은 두 블록 사이에 불변성이 발생합니다. 두 쌍의 파라체인에는 두 개의 validator이 존재합니다. 파라체인 책임을 바꿨습니다. 가용성에 대한 절대적인 보장을 얻는 데 사용할 수는 없지만 (단일 validator은 때때로 오프라인 상태가 됩니다. 자비로운) 그럼에도 불구하고 일반적인 경우를 최적화할 수 있습니다. 이 접근 방식에는 합병증이 없지는 않습니다. 파라체인을 추가하려면 재구성도 필요합니다. validator 세트 중. 또한 validator의 수는 파라체인 수의 제곱에 연결되어 있으며, 처음에는 아주 작은 규모로 시작하여 결국에는 멀리 성장할 것입니다. 너무 빨라서 약 50개의 파라체인 이후에는 견딜 수 없게 됩니다. 이들 중 어느 것도 근본적인 문제는 아닙니다. 첫 번째 경우, validator 세트의 재구성은 반드시 이루어져야 하는 것입니다. 어쨌든 정기적으로 했어요. validator의 크기에 관하여 너무 작으면 여러 개의 validator이 할당될 수 있습니다. 동일한 파라체인에 정수 인자를 적용하여 총 validators. 6.6.4에서 논의된 하이퍼큐브 라우팅과 같은 다단계 라우팅 메커니즘은 많은 수의 validator에 대한 요구 사항을 완화합니다. 체인 수가 많을 때. 6.7. 파라체인 검증. A validator의 주요 목적 유대감이 강한 배우로서 파라체인이 상태 전환, 외부 트랜잭션 포함, 실행 등을 포함하되 이에 국한되지 않는 블록이 유효합니다. 수신 대기열의 대기 중인 게시물과 최종 상태 송신 대기열의 프로세스 자체는 매우 간단합니다. validator가 이전 블록을 봉인하면 무료입니다. 후보 파라체인 블록을 제공하기 위한 작업을 시작합니다. 다음 합의 라운드 후보. 처음에 validator는 파라체인 콜레이터(다음에 설명) 또는 하나를 통해 파라체인 블록 후보를 찾습니다. 공동 validators 중 하나입니다. 파라체인 블록 후보 데이터 블록의 헤더, 이전 블록의 헤더, 포함된 모든 외부 입력 데이터(Ethereum 및 Bitcoin의 경우 이러한 데이터는 트랜잭션으로 참조되지만 원칙적으로 임의의 목적을 위한 임의의 데이터 구조를 포함할 수 있음), 상태 전환 유효성을 증명하기 위한 송신 대기열 데이터 및 내부 데이터(Ethereum의 경우) 이는 각 트랜잭션을 실행하는 데 필요한 다양한 상태/저장 트리 노드입니다. 실험적 증거는 최근 Ethereum 블록에 대한 전체 데이터세트를 보여줍니다. 최대 수백 KiB입니다. 동시에 아직 완료되지 않은 경우 validator은(는) 처음에는 이전 블록의 전환과 관련된 정보를 검색하려고 시도합니다. validators 이상은 모든 validators 서명에서 데이터의 가용성. validator이 그러한 후보 블록을 수신하면, 그런 다음 로컬에서 유효성을 검사합니다. 검증 프로세스는 파라체인 클래스의 validator 모듈 내에 포함되어 있습니다. 반드시 작성해야 하는 합의에 민감한 소프트웨어 모듈 Polkadot 구현에 대해(원칙적으로는 C ABI가 포함된 라이브러리는 단일 라이브러리로 다음을 수행할 수 있습니다. 적절한 구현 간에 공유됩니다. 단일 "참조" 구현만으로 인한 안전성 감소). 이 프로세스는 이전 블록의 헤더를 가져와서 최근 합의된 릴레이 체인을 통해 그 신원을 확인합니다. hash이 기록되어야 하는 블록입니다. 상위 헤더의 유효성이 확인되면 특정 파라체인이 클래스의 유효성 검사 함수가 호출될 수 있습니다. 이는 다수의 데이터 필드(대략적으로)를 허용하는 단일 함수입니다. 이전에 제공된 것) 간단한 부울을 반환합니다. 블록의 유효성을 선언합니다. 대부분의 검증 기능은 먼저 직접 파생될 수 있는 헤더 필드 상위 블록(예: 상위 hash, 번호). 팔로잉 그러면 내부 데이터 구조가 다음과 같이 채워집니다. 거래 및/또는 게시물을 처리하기 위해 필요합니다. Ethereum와 같은 체인의 경우 이는 필요한 노드가 포함된 데이터베이스를 트리로 구성합니다. 거래의 완전한 실행. 다른 체인 유형에는 다른 p회복 메커니즘. 완료되면 수신 게시물과 외부 트랜잭션(또는 외부 데이터가 나타내는 모든 것)이 체인 사양에 따라 제정되고 균형이 맞춰집니다. (A 합리적인 기본값은 모든 수신 게시물을 요구하는 것일 수 있습니다. 외부 트랜잭션이 서비스되기 전에 처리되지만 이는 파라체인의 논리에 따라 결정되어야 합니다.) 이번 제정을 통해 일련의 출구 게시물이 게시될 예정입니다. 생성되었으며 이것이 실제로 일치하는지 확인됩니다. 콜러의 후보. 마지막으로, 제대로 채워졌습니다. 헤더는 후보자의 헤더와 비교하여 확인됩니다. 완전히 검증된 후보 블록을 사용하면 validator 그런 다음 헤더의 hash에 투표하고 모든 필수 유효성 검사 정보를 해당 하위 그룹의 co-validator에 보낼 수 있습니다. 6.7.1. 파라체인 콜레이터. 파라체인 콜레이터는 채굴자의 작업 대부분을 수행하는 비결합 운영자입니다. 현재 blockchain 네트워크에서. 그것들은 구체적이다 특정 파라체인에. 작동하려면 반드시 릴레이 체인과 완전 동기화를 모두 유지합니다. 파라체인. "완전히 동기화됨"의 정확한 의미는 파라체인 클래스에 따라 다르지만 항상 파라체인 수신 대기열의 현재 상태를 포함합니다. Ethereum의 경우 최소한 유지 관리도 포함됩니다. 마지막 몇 블록의 머클 트리 데이터베이스이지만 Bloom을 포함한 다양한 다른 데이터 구조도 포함 계정 존재, 가족 정보, 로깅을 위한 필터 블록 번호에 대한 출력 및 역방향 조회 테이블. 두 체인의 동기화를 유지하는 것 외에도 또한 트랜잭션 대기열을 유지하고 적절하게 검증된 트랜잭션을 수락하여 트랜잭션을 "피싱"해야 합니다. 공용 네트워크에서. 대기열과 체인을 사용하면 각 블록에서 선택된 validator에 대한 새로운 후보 블록을 생성하고(릴레이체인이 동기화된 이후 신원이 알려짐) 이를 유효성 증명 등 다양한 보조 정보를 통해 피어 네트워크. 문제가 발생하면 포함된 거래와 관련된 모든 수수료를 징수합니다. 이를 둘러싸고 다양한 경제학이 떠돌고 있다. 배열. 경쟁이 치열한 시장에서 대조자가 너무 많으면 거래가 발생할 가능성이 있습니다. 인센티브를 제공하기 위해 수수료는 파라체인 validator과 공유됩니다. 특정 collator의 블록을 포함합니다. 비슷하게,
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 17 일부 대조자는 필요한 수수료를 인상할 수도 있습니다. 블록을 더 매력적으로 만들기 위해 비용을 지불합니다. validators. 이 경우 자연시장이 형성되어야 한다. 더 높은 수수료를 지불하는 거래가 대기열을 건너뛰는 경우 체인에 더 빠르게 포함됩니다. 6.8. 네트워킹. 기존 blockchains의 네트워킹 Ethereum 및 Bitcoin와 같은 요구 사항은 다소 간단합니다. 모든 거래와 블록은 단순하고 방향성이 없는 소문으로 방송됩니다. 특히 동기화가 더 복잡합니다. Ethereum을 사용하지만 실제로는 이 논리가 몇 가지 요청 및 응답 메시지 유형을 중심으로 해결된 프로토콜 자체가 아닌 피어 전략입니다. Ethereum은 devp2p 프로토콜을 사용하여 현재 프로토콜 제공에 진전을 이루었습니다. 단일 피어 연결을 통해 멀티플렉싱되는 서브프로토콜은 동일한 피어 오버레이를 가지며 여러 가지를 지원합니다. p2p 프로토콜을 동시에 사용하면 Ethereum 부분 프로토콜은 여전히 상대적으로 단순했고 p2p는 한동안 프로토콜은 중요한 문제로 인해 완료되지 않은 상태로 남아 있습니다. QoS 지원과 같은 기능이 누락되었습니다. 안타깝게도 보다 유비쿼터스적인 "웹 3" 프로토콜을 만들고자 하는 열망은 주로 실패했습니다. 이를 사용하는 유일한 프로젝트는 명시적으로 Ethereum 크라우드 세일을 통해 자금을 조달했습니다. Polkadot에 대한 요구 사항은 다소 더 중요합니다. 오히려 완전히 균일한 네트워크, Polkadot 동료 구성 및 여러 네트워크에 대해 각기 다른 요구 사항을 가진 여러 유형의 참가자가 있습니다. 참가자들이 대화를 나누는 경향이 있는 "길" 특정 데이터. 이는 훨씬 더 구조화된 네트워크 오버레이와 이를 지원하는 프로토콜을 의미합니다. 필요할 것 같습니다. 또한, 새로운 종류의 "체인"과 같은 향후 추가를 용이하게 하는 확장성이 가능합니다. 자체적으로는 새로운 오버레이 구조가 필요합니다. 네트워킹 방법에 대해 심도있게 논의하는 동안 프로토콜이 이 문서의 범위를 벗어나는 것처럼 보일 수 있지만 일부 요구 사항 분석은 합리적입니다. 우리는 할 수 있다 네트워크 참가자를 대략 두 세트로 나눕니다. (릴레이 체인, 파라체인) 각각 세 개의 하위 집합입니다. 우리는 할 수 있다 또한 각 파라체인 참가자는 오직 그들 사이의 대화에 관심이 있는 반면 다른 파라체인 참가자: • 릴레이 체인 참가자: • 유효성 검사기: P, 각각에 대해 하위 집합 P[s]로 분할 파라체인 • 가용성 보증자: A(프로토콜 기본 형식의 유효성 검사기로 표현될 수 있음) • 릴레이 체인 클라이언트: M(각 멤버 참고 파라체인 세트도 M)의 구성원이 되는 경향이 있습니다. • 파라체인 참가자: • 파라체인 대조자: C[0], C[1], . . . • 파라체인 어부: F[0], F[1], . . . • 파라체인 클라이언트: S[0], S[1], . . . • 파라체인 라이트 클라이언트: L[0], L[1], . . . 일반적으로 우리는 특정 종류의 의사소통을 명명합니다. 다음 세트의 구성원 간에 발생하는 경향이 있습니다. • 피 | 에이 <-> 피 | 답: 는 가득 찬 세트 의 validators/보증인 반드시 있다 잘 연결된 에 합의를 이루다. • P[s] <-> C[s] | P[s]: 특정 파라체인 그룹의 구성원인 각 validator은 험담을 하는 경향이 있습니다. 다른 회원 및 대조자와 함께 해당 파라체인의 블록 후보를 발견하고 공유합니다. • A <-> P[s] | 다 | A: 각 가용성 보증인 합의에 민감한 크로스체인을 수집해야 합니다. 할당된 validator의 데이터; 대조자 또한 그들의 의견에 대한 합의 가능성을 최적화할 수도 있습니다. 가용성 보증인에게 광고하여 차단합니다. 일단 데이터를 갖게 되면 데이터는 다음에 분배됩니다. 합의를 촉진하기 위한 기타 보증인. • P[s] <-> A | P[s']: 파라체인 validators는 이전 validator 세트 또는 가용성 보증자로부터 추가 입력 데이터를 수집해야 합니다. • F[s] <-> P: 보고 시 어부들은 다음과 같은 위치를 지정할 수 있습니다. 참가자와의 청구. • M <-> M | 피 | A: 일반 릴레이 체인 클라이언트는 validators 및 보증인으로부터 데이터를 지불합니다. • S[들] <-> S[들] | 추신 | A: 파라체인 클라이언트는 validator/보증인으로부터 데이터를 지불합니다. • L[초] <-> L[초] | S[s]: 파라체인 라이트 클라이언트 전체 클라이언트로부터 데이터를 지불합니다. 효율적인 운송 메커니즘을 보장하기 위해 "플랫" Ethereum의 devp2p와 같은 오버레이 네트워크 노드는 (비임의적으로) 자신의 적합성을 구별하지 않습니다. 또래는 적합하지 않을 것 같습니다. 합리적으로 확장 가능한 피어 선택 및 검색 메커니즘에는 다음이 필요할 수 있습니다. 공격적일 뿐만 아니라 프로토콜 내에 포함되어야 함 올바른 종류의 동료를 보장하기 위해 미리 계획을 세웁니다. "우연히" 연결되어 있습니다적절한 시기에 시행되었습니다. 동료 구성의 정확한 전략은 참가자 클래스마다 다릅니다. 다중 체인, 대조자는 지속적으로 그에 따라 선택된 validator에 다시 연결하거나 validator의 하위 집합과 지속적인 계약이 필요합니다. validator에 쓸모가 없는 대부분의 시간 동안 연결이 끊어지지 않도록 합니다. Collator는 자연스럽게 하나의 데이터를 유지하려고 시도합니다. 또는 가용성 보증인에 대한 보다 안정적인 연결 합의에 민감한 메시지의 신속한 전파를 보장하도록 설정되었습니다. 데이터. 가용성 보증인은 대부분 가용성을 유지하는 것을 목표로 합니다. 서로 및 validators에 대한 안정적인 연결(합의 및 합의에 중요한 파라체인 데이터의 경우) 그들이 증명함) 및 일부 대조자(파라체인의 경우) 데이터) 및 일부 어부 및 전체 고객(분산용) 정보). 유효성 검사기는 다른 validator, 특히 동일한 하위 그룹과 다른 validator을 찾는 경향이 있습니다. 파라체인 블록 후보를 제공할 수 있는 대조자. 어부 뿐만 아니라 일반 릴레이체인, 파라체인 클라이언트는 일반적으로 연결을 열린 상태로 유지하는 것을 목표로 합니다. validator 또는 보증인이지만 유사한 다른 노드가 많이 있습니다. 그렇지 않으면 스스로에게. 파라체인 라이트 클라이언트는 마찬가지로 파라체인의 전체 클라이언트에 연결되는 것을 목표로 합니다. 다른 파라체인 라이트 클라이언트뿐만이 아니라면요. 6.8.1. 동료 이탈 문제. 기본 프로토콜 제안에서 이러한 각 하위 집합은 검증을 위해 할당된 validator으로 각 블록과 함께 지속적으로 무작위로 변경됩니다. 파라체인 전환은 무작위로 선택됩니다. 이것은 할 수 있다 서로 다른(비피어) 노드가 다음을 수행해야 하는 경우 문제가 됩니다. 서로 데이터를 전달합니다. 다음 중 하나에 의존해야 합니다. 공정하게 분산되고 잘 연결된 피어 네트워크
POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 18 홉 거리(따라서 최악의 대기 시간)가 네트워크 크기의 대수만큼만 증가하는지 확인합니다. (Kademlia와 유사한 프로토콜 [13]이 여기서 도움이 될 수 있습니다) 또는 반드시 피어 세트를 유지하기 위해 필요한 연결 협상이 이루어질 수 있도록 더 긴 블록 시간을 도입합니다. 노드의 현재 통신 요구 사항을 반영합니다. 둘 다 훌륭한 솔루션은 아닙니다: 긴 블록 시간 네트워크에 강제로 연결하면 네트워크가 쓸모없게 될 수 있습니다. 특정 애플리케이션 및 체인. 완벽하게 공평한 것조차 연결된 네트워크는 상당한 낭비를 초래합니다. 관심 없는 노드로 인해 대역폭이 확장됩니다. 쓸모없는 데이터를 전달합니다. 양방향이 솔루션의 일부가 될 수 있지만, 지연 시간을 최소화하는 데 도움이 되는 합리적인 최적화는 이러한 파라체인의 변동성을 제한해야 합니다 validator 세트, 일련의 블록 사이에서만 멤버십을 재할당하거나(예: 4초에 15개의 그룹으로) 차단 시간은 연결을 1회에 한 번만 변경하는 것을 의미합니다. 분) 또는 증분 방식으로 멤버십을 순환합니다. 한 번에 한 멤버씩 변경(예: 각 파라체인에 15개의 validator이 할당되어 있으며, 평균적으로 완전히 고유한 파라체인 사이에는 1분이 걸립니다. 세트). 피어 이탈의 양을 제한하고 유리한 피어 연결이 잘 이루어지도록 보장함으로써 파라체인의 부분적인 예측 가능성을 통해 발전 세트를 통해 각 노드가 영구적으로 유지되도록 도울 수 있습니다. 우연한 동료 선택. 6.8.2. 효과적인 네트워크 프로토콜에 대한 경로. 아마도 가장 효과적이고 합리적인 개발 노력은 롤링보다는 기존 프로토콜을 활용하는 데 중점을 둘 것입니다. 우리 자신. 여러 P2P 기본 프로토콜이 존재합니다. Ethereum의 자체 devp2p를 포함하여 사용하거나 강화할 수 있습니다. [22], IPFS의 libp2p [1] 및 GNU의 GNUnet [4]. 이러한 프로토콜과 프로토콜 구축과의 관련성에 대한 전체 검토 특정 구조적 보장, 동적 피어 조정 및 확장 가능한 하위 프로토콜을 지원하는 모듈형 피어 네트워크 이 문서의 범위를 훨씬 벗어나지만 Polkadot 구현의 중요한 단계입니다. 7. 프로토콜의 실용성 7.1. 인터체인 거래 결제. 훌륭한 동안 Ethereum의 가스와 같은 전체적인 계산 리소스 회계 프레임워크에 대한 필요성을 없애면 상당한 자유와 단순성을 얻을 수 있습니다. 이는 중요한 질문을 제기합니다. 가스 없이 하나의 파라체인을 어떻게 수행할 수 있습니까? 다른 파라체인이 강제로 계산을 수행하는 것을 방지하시겠습니까? 우리는 트랜잭션-포스트 수신 큐에 의존할 수 있지만 한 체인이 다른 체인에 스팸을 보내는 것을 방지하는 버퍼 트랜잭션 데이터에는 트랜잭션 처리의 스팸을 방지하기 위해 프로토콜에서 제공하는 동등한 메커니즘이 없습니다. 이는 더 높은 수준에 맡겨진 문제이다. 체인 이후 들어오는 항목에 임의의 의미를 자유롭게 첨부할 수 있습니다. 거래 후 데이터를 통해 우리는 계산을 보장할 수 있습니다. 시작하기 전에 비용을 지불해야 합니다. 와 비슷한 맥락으로 Ethereum Serenity가 지지하는 모델, 우리는 상상할 수 있습니다 파라체인 내의 "침입" 계약을 통해 validator는 다음과 같은 대가로 지불을 보장받습니다. 특정 양의 처리 자원 제공. 이러한 자원은 가스와 같은 것으로 측정될 수 있습니다. 그러나 주관적인 실행 시간이나 Bitcoin과 같은 정액 요금 모델과 같은 완전히 새로운 모델일 수도 있습니다. 이는 오프체인 호출자가 사용할 수 있다고 쉽게 가정할 수 없기 때문에 그 자체로는 그다지 유용하지 않습니다. 침입에 의해 인식되는 모든 가치 메커니즘 계약. 그러나 소스 체인에서 2차 "돌파" 계약을 상상할 수 있습니다. 두 계약은 함께 다리를 형성하여 서로를 인식하고 가치 동등성을 제공합니다. (스테이킹-tokens, 사용 가능 각각은 국제수지 정산에 사용될 수 있습니다.) 다른 체인을 호출하는 것은 프록시를 의미합니다. 이 다리를 통해 체인 간의 가치 이전을 협상하여 대상 파라체인에 필요한 계산 리소스에 대한 비용을 지불합니다. 7.2. 추가 체인. 동안 는 추가 의 에 파라체인은 상대적으로 저렴한 운영이지만 무료는 아닙니다. 파라체인이 많을수록 파라체인당 validator 수가 줄어듭니다. 그리고 결국에는 더 많은 수의 validator이 각각 평균 채권 감소. 파라체인 공격에 대한 강제 비용이 더 작아지는 문제는 다음을 통해 완화됩니다. 어부 여러분, 성장하는 validator 세트는 본질적으로 기본 합의 메커니즘으로 인해 더 높은 수준의 대기 시간그래. 게다가 각 파라체인 validators에게 슬픔을 안겨줄 가능성이 있습니다. 과도한 부담을 주는 검증 알고리즘. 따라서 validators의 "가격"이 있을 것입니다. 및/또는 지분 보유 커뮤니티는 새로운 파라체인 추가. 이 체인 시장은 아마도 다음 중 하나가 추가된 것을 볼 수 있습니다: • 일부로 만들기 위해 지불하는 순 기여금(staking tokens 잠금 또는 소각 측면에서)이 0일 가능성이 있는 체인(예: 컨소시엄 체인, Doge 체인, 앱별 체인); • 네트워크에 본질적인 가치를 제공하는 체인 특정 기능을 추가하는 것은 어렵습니다. 다른 곳으로 이동하기 위해(예: 기밀성, 내부 확장성, 서비스 연계) 본질적으로 이해관계자 커뮤니티는 다음을 수행해야 합니다. 재정적으로나 경제적으로 하위 체인을 추가하도록 인센티브를 받을 수 있습니다. 릴레이에 특징적인 체인을 추가하려는 욕구를 통해. 새로운 체인이 추가되면 매우 큰 효과를 얻을 것으로 예상됩니다. 제거를 위한 짧은 통지 기간으로 인해 새로운 체인이 손상될 위험 없이 실험을 수행할 수 있습니다. 중장기적 가치 제안. 8. 결론 우리는 저자가 취할 수 있는 방향을 설명했습니다. 기존의 특정 체인과 역호환이 가능한 확장 가능한 이종 다중 체인 프로토콜 blockchain 네트워크. 이러한 프로토콜에 따라 참가자는 기존 사용자에게 일반적인 비용을 들이지 않고 매우 자유로운 방식으로 확장할 수 있는 전체 시스템을 만들기 위해 계몽된 사리사욕을 바탕으로 작업합니다. 표준 blockchain 디자인에서 나옵니다. 우리는 주었다 다음을 포함하여 필요한 아키텍처의 대략적인 개요 참가자의 성격, 경제적 인센티브 그리고 그들이 참여해야 하는 프로세스. 우리는 기본 디자인을 파악하고 그 장점에 대해 논의했습니다. 제한 사항; 따라서 우리는 더 많은 방향을 가지고 있습니다. 이러한 제한을 완화하고 완전히 확장 가능한 blockchain 솔루션을 향한 추가 기반을 마련할 수 있습니다.POLKADOT: 이종 다중 체인 프레임워크에 대한 비전 초안 1 19 8.1. 누락된 자료 및 공개 질문. 네트워크 분기는 프로토콜의 다양한 구현으로 인해 항상 가능합니다. 그러한 것으로부터의 회복 예외적인 상황은 논의되지 않았습니다. 네트워크가 반드시 0이 아닌 최종화 기간을 갖는다는 점을 고려하면, 릴레이체인 분기에서 복구하는 것은 큰 문제가 되지 않지만 합의 프로토콜. 채권 몰수와 반대로 보상 제공은 깊게 탐구되지 않았습니다. 현재 우리는 보상을 가정합니다. 승자독식 원칙에 따라 제공됩니다. 그렇지 않을 수도 있습니다. 어부들에게 최고의 인센티브 모델을 제공합니다. 단기간 커밋-공개 프로세스를 통해 많은 어부들이 보다 공정한 보상 분배를 통해 상금을 청구하고, 그러나 프로세스로 인해 추가 대기 시간이 발생할 수 있습니다. 잘못된 행동 발견. 8.2. 감사의 말씀. 많은 분들께 감사드립니다. 막연하게 이 문제를 이해하는 데 도움을 준 교정자들 표현 가능한 모양. 특히 Peter Czaban, Bj¨orn 바그너, 켄 카플러, 로버트 하버마이어, 비탈릭 부테린, 레토 트링클러, 잭 피터슨. 모두에게 감사드립니다 아이디어나 시작에 기여한 사람들 그 중에서도 Marek Kotewicz와 Aeron Buchanan은 특별히 언급할 가치가 있습니다. 그리고 도움을 주신 다른 모든 분들께도 감사드립니다 길을 따라. 모든 오류는 내 자신의 것입니다. 초기 연구를 포함한 이 작업의 일부 합의 알고리즘은 영국으로부터 부분적으로 자금을 지원받았습니다. Innovate UK 프로그램에 따른 정부.
Protocole en détail
Le protocole peut être grossièrement décomposé en trois parties : le mécanisme de consensus, l'interface parachain et le routage des transactions inter-chaînes. 6.1. Chaîne relais Opération. Le chaîne-relais va il s'agit probablement d'une chaîne globalement similaire à Ethereum dans la mesure où elle est basé sur l'état avec l'adresse de mappage d'état au compte informations, principalement les soldes et (pour éviter les rediffusions) un compteur de transactions. Placer les comptes ici répond à un seul objectif : rendre compte de ce que possède l’identité. quel montant de participation dans le système.7 Il y aura cependant des différences notables : • Les contrats ne peuvent pas être déployés via des transactions ; suite à la volonté d’éviter les fonctionnalités applicatives sur la chaîne relais, il ne sera pas accompagner le déploiement public des contrats. • L'utilisation des ressources de calcul (« gaz ») n'est pas comptabilisée ; puisque les seules fonctions disponibles pour un usage public sera corrigée, la justification de la comptabilisation du gaz ne tient plus. A ce titre, un tarif forfaitaire s'appliquera en tous les cas, permettant plus de performances dans tous les cas exécution de code dynamique qui peut être nécessaire et un format de transaction plus simple. • Une fonctionnalité spéciale est prise en charge pour les contrats répertoriés qui permet l'exécution automatique et la sortie de messages réseau. Dans le cas où la chaîne de relais possède une VM et que ce soit basé sur le EVM, il comporterait un certain nombre de modifications pour assurer une simplicité maximale. Ce serait probablement avoir un certain nombre de contrats intégrés (similaires à ceux de adresses 1 à 4 dans Ethereum) pour permettre des tâches à gérer, y compris un contrat consensuel, un Contrat validator et un contrat parachain. Si ce n’est pas le EVM, alors un backend WebAssembly [2] (wasm) est l’alternative la plus probable ; dans ce cas, l'ensemble la structure serait similaire, mais il ne serait pas nécessaire pour que les contrats intégrés avec Wasm soient une cible viable pour les langages à usage général plutôt que pour les langages immatures et langues limitées pour le EVM. D'autres écarts probables par rapport au protocole actuel Ethereum sont tout à fait possibles, par exemple une simplification du format de reçu de transaction permettant l'exécution parallèle de transactions non conflictuelles au sein d'un même bloc, comme proposé pour la série de changements Serenity. Il est possible, bien que peu probable, qu'un chaîne « pure » soit déployée comme chaîne-relais, permettant une contrat particulier pour gérer des choses comme le staking token équilibres plutôt que d’en faire un élément fondamental de le protocole de la chaîne. À l'heure actuelle, nous estimons qu'il est peu probable que cela offrera une simplification protocolaire suffisamment grande pour être cela vaut la complexité et l'incertitude supplémentaires impliquées en le développant. 7Afin de représenter le montant qu'un détenteur donné est responsable de la sécurité globale du système, ces comptes de participation seront codent inévitablement une certaine valeur économique. Toutefois, il convient de comprendre que, puisqu'il n'est pas prévu que de telles valeurs soient utilisées dans de quelque manière que ce soit dans le but d'échanger contre des biens et services du monde réel, il convient par conséquent de noter que les token ne doivent pas être assimilés à monnaie et à ce titre la chaîne-relais conserve sa philosophie nihiliste en matière d'applications.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 10 Il existe un certain nombre de petites fonctionnalités requises pour administrer le mécanisme de consensus, l'ensemble validator, le mécanisme de validation et les parachains. Ces pourraient être mis en œuvre ensemble dans le cadre d’un protocole monolithique. Cependant, pour des raisons de modularité augure, nous les qualifions de « contrats » de la chaîne-relais. Cela devrait être interprété comme signifiant qu'ils sont des objets (au sens de programmation orientée objet) gérée par le mécanisme de consensus de la relaychain, mais pas nécessairement cela ils sont définis comme des programmes dans des opcodes de type EVM, ni même qu'ils soient adressables individuellement via le système de compte. 6.2. Contrat de jalonnement. Ce contrat maintient l'ensemble validator. Il gère : • quels comptes sont actuellement des validator ; • qui sont disponibles pour devenir validators en bref avis ; • quels comptes ont placé une participation en nominant à un validator ; • les propriétés de chacun, y compris le volume staking, les taux de paiement et adresses acceptables et les identités (session) à court terme. Il permet à un compte d'enregistrer une envie de devenir les validator liés (avec ses exigences), pour désigner une certaine identité, et pour les validator liés préexistants, d'enregistrer leur désir de quitter ce statut. C'est aussi comprend le mécanisme lui-même pour le mécanisme de validation et de canonisation. 6.2.1. Mise-token Liquidité. Il est généralement souhaitable de avoir autant que possible du total de staking token jalonné dans les opérations de maintenance du réseau depuis cela lie directement la sécurité du réseau à la « capitalisation boursière » globale du staking token. Cela peut facilement être encouragé en gonflant la monnaie et en distribuant les bénéfices à ceux qui participent en tant que validators. Cependant, cela pose un problème : si le token est bloqué dans le Contrat de Staking sous peine de réduction, comment une partie substantielle peut-elle rester suffisamment liquide afin de permettre la découverte des prix ? Une réponse à cela consiste à autoriser un contrat dérivé simple, garantissant des token fongibles sur un token sous-jacent jalonné. C’est difficile à organiser sans confiance. De plus, ces dérivés token ne peuvent pas être traités de la même manière pour la même raison que les différentes obligations d’État de la zone euro ne sont pas fongibles : il est une chance que l'actif sous-jacent échoue et devienne sans valeur. Avec les gouvernements de la zone euro, il pourrait y avoir un par défaut. Avec validator jalonnés de token, les validator peuvent agir de manière malveillante et être puni. Conformément à nos principes, nous optons pour la solution la plus simple : tous les token ne sont pas jalonnés. Cela voudrait dire que une certaine proportion (peut-être 20 %) des token resteront forcément liquides. Bien que cela soit imparfait du point de vue de la sécurité, il est peu probable que cela fasse une différence fondamentale en termes de sécurité. la sécurité du réseau ; 80 % des réparations possibles grâce aux confiscations de cautions pourraient encore être effectuées par rapport au « cas parfait » de 100 % staking. Le rapport entre les token mis en jeu et les token liquides peut être ciblé assez simplement grâce à un mécanisme d'enchères inversées. Essentiellement, les titulaires de token intéressés à devenir validator chacun publierait une offre pour le contrat staking indiquant le taux de paiement minimum dont ils auraient besoin pour prendre partie. Au début de chaque séance (les séances seraient se produisent régulièrement, peut-être aussi souvent qu'une fois par heure), le validator créneaux seraient pourvus en fonction de chaque candidat La mise et le taux de paiement de validator. Un algorithme possible car ce serait prendre ceux qui ont les offres les plus basses et qui représenter une mise ne dépassant pas la mise totale visée divisé par le nombre d'emplacements et ne doit pas être inférieur à une limite inférieure égale à la moitié de ce montant. Si les créneaux ne peuvent pas être pourvus, la limite inférieure pourrait être réduite à plusieurs reprises d'un certain facteur afin de satisfaire. 6.2.2. Nomination. Il est possible de nommer en toute confiance ceux staking tokens à un validator actif, leur donnant la responsabilité des fonctions de validator. Œuvres en nomination grâce à un système de vote d’approbation. Chaque proposant potentiel peut publier une instruction sur le contrat staking exprimant une ou plusieurs identités validator sous lesquelles responsabilité qu'ils sont prêts à confier à leur caution. À chaque séance, les liens des proposants sont dispersés pour être représenté par un ou plusieurs validator. L'algorithme de dispersion optimise pour un ensemble de validators de total équivalent obligations. Les cautions des proposants deviennent sous la responsabilité effective du validator aet susciter de l'intérêt ou subir un réduction de la peine en conséquence. 6.2.3. Confiscation/incendie des obligations. Certains comportements validator entraînent une réduction punitive de leur caution. Si la caution est réduite en dessous du minimum autorisé, le une session est terminée prématurément et une autre démarre. Une liste non exhaustive de comportements répréhensibles validator punissables comprend : • Faire partie d'un groupe parachain incapable de fournir consensus sur la validité d’un bloc parachain ; • signer activement pour la validité d'un invalide bloc de parachaine ; • incapacité à fournir des charges utiles de sortie auparavant voté comme disponible ; • inactivité pendant le processus de consensus ; • valider les blocs relais-chaînes sur les fourches concurrentes. Certains cas de mauvais comportement menacent l’intégrité du réseau (comme la signature de blocs de parachain invalides et la validation de plusieurs côtés d’un fork) et entraînent ainsi un exil effectif par la réduction totale de la liaison. Dans d'autres cas moins graves (par exemple inactivité dans le consensus processus) ou dans les cas où le blâme ne peut être attribué avec précision (faire partie d'un groupe inefficace), une petite partie de la caution peut en revanche être condamné à une amende. Dans ce dernier cas, cela fonctionne bien avec le désabonnement des sous-groupes pour garantir que les messages malveillants les nœuds subissent beaucoup plus de pertes que les nœuds bienveillants endommagés collatéralement. Dans certains cas (par exemple, validation multi-fork et invalide signature de sous-bloc) validators ne peuvent pas eux-mêmes détecter facilement le mauvais comportement de chacun car une vérification constante de chaque bloc de parachain serait une tâche trop ardue. Ici il est nécessaire d'obtenir le soutien de parties extérieures à le processus de validation pour vérifier et signaler un tel comportement inapproprié. Les parties reçoivent une récompense pour avoir signalé une telle activité ; leur terme, « pêcheurs », vient de l’improbabilité d'une telle récompense. Étant donné que ces cas sont généralement très graves, nous envisageons que toute récompense puisse facilement être payée à partir de la caution confisquée. En général, nous préférons équilibrer la combustion (c'est-à-dire réduction à néant) avec réaffectation, plutôt que tenter une réallocation globale. Cela a pour effet de
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 11 augmentant la valeur globale du token, compensant le réseau en général dans une certaine mesure plutôt que le réseau spécifique partie impliquée dans la découverte. C'est principalement par mesure de sécurité mécanisme : les sommes importantes impliquées pourraient conduire à des incitations comportementales extrêmes et aiguës si elles étaient toutes accordé à une seule cible. En général, il est important que la récompense soit suffisamment importante pour que la vérification soit utile pour le réseau, mais pas au point de compenser les coûts liés à la mise en place d'un système de vérification. une criminalité « de niveau industriel » bien financée et bien orchestrée attaque de piratage informatique contre un validator malchanceux pour forcer un mauvais comportement. De cette façon, le montant réclamé ne devrait généralement pas être supérieur au lien direct du validator errant, de peur qu'un une incitation perverse survient à se comporter mal et à se dénoncer pour obtenir la prime. Cela peut être combattu soit explicitement grâce à une exigence minimale de cautionnement direct pour être un validator ou implicitement en informant les proposants que les validator avec peu d'obligations déposées ne sont pas très incitées de bien se comporter. 6.3. Registre Parachain. Chaque parachain est définie dans ce registre. Il s'agit d'une construction de type base de données relativement simple qui contient à la fois des informations statiques et dynamiques sur chaque chaîne. Les informations statiques incluent l'index de chaîne (un simple entier), ainsi que l'identité du protocole de validation, un moyen de distinguer les différentes classes de parachain afin que l'algorithme de validation correct puisse être dirigé par des validator chargés de présenter un candidat valable. Une première preuve de concept se concentrerait sur la mise en place les nouveaux algorithmes de validation dans les clients eux-mêmes, nécessitant effectivement un hard fork du protocole à chaque fois qu'un une classe supplémentaire de chaîne a été ajoutée. Mais en fin de compte, il peut être possible de spécifier l'algorithme de validation dans une manière à la fois rigoureuse et suffisamment efficace pour que les clients soient capable de travailler efficacement avec de nouvelles parachaines sans fourchette dure. Une piste possible pour y parvenir serait de préciser l'algorithme de validation de la parachain dans un système bien établi, langage compilé nativement et indépendant de la plate-forme, tel que WebAssembly. Des recherches supplémentaires sont nécessaires pour déterminer si cela est vraiment réalisable, mais si c'est le cas, cela pourrait apporter avec lui l'énorme avantage de bannir les hard-forks pour de bon. Les informations dynamiques incluent des aspects du système de routage des transactions qui doivent faire l'objet d'un accord global, tel que comme file d’attente d’entrée de la parachain (décrite dans la section 6.6). Le registre ne peut ajouter que des parachaines par un vote référendaire complet ; cela pourrait être géré en interne mais serait plus probablement placé dans un environnement externe contrat référendaire afin de faciliter la réutilisation dans le cadre des éléments de gouvernance plus généraux. Les paramètres à conditions de vote (par exemple, quorum requis, majorité requis) pour l'enregistrement de chaînes supplémentaires et autres, des mises à niveau moins formelles du système seront définies dans un « constitution » mais sont susceptibles de suivre un modèle assez traditionnel. chemin, du moins au début. La formulation précise est hors de portée du présent travail, mais par ex. une majorité qualifiée des deux tiers sera adoptée avec plus d'un tiers du système total Un vote positif peut être un point de départ judicieux. Les opérations supplémentaires incluent la suspension et la suppression des parachaines. Nous espérons que la suspension ne sera jamais se produire, mais il est conçu pour être une protection au moins il y a un problème insoluble dans le système de validation d’une parachain. Le cas le plus évident où cela pourrait Ce qui est nécessaire, c'est une différence critique par consensus entre les implémentations, ce qui conduit les validator à ne pas pouvoir s'entendre sur validité ou blocages. Les validateurs seraient encouragés à utiliser plusieurs implémentations client afin qu'ils puissent détecter un tel problème avant la confiscation de la caution. La suspension étant une mesure d'urgence, il serait sous les auspices de la dynamique validator-vote plutôt qu'un référendum. La réintégration serait possible à la fois des validators ou un référendum. La suppression totale des parachaines n’interviendrait que après un référendum et avec lequel serait exigé un période de grâce substantielle pour permettre une transition ordonnée vers soit une chaîne autonome, soit pour faire partie d'une autre système de consensus. Le délai de grâce serait probablement de l'ordre des mois et est susceptible d'être défini sur une base par chaîne dans le registre des parachaines afin que les différents les parachains peuvent bénéficier de différents délais de grâce selon leur besoin. 6.4. Scellement des blocs relais. Le scellement fait essentiellement référence à au processus de canonisation ; c'est-à-dire une donnée de base transformer quimappe l’original en quelque chose de fondamentalement singulier et significatif. Sous une chaîne PoW, l’étanchéité est en fait synonyme d’exploitation minière. Dans notre cas, cela implique la collecte de déclarations signées de validator sur la validité, la disponibilité et la canonique d'un bloc de chaîne de relais particulier et les blocs de parachain qui cela représente. La mécanique de l’algorithme de consensus BFT sous-jacent est hors de portée du présent travail. Nous allons décrivez-le plutôt en utilisant une primitive qui suppose un machine à états créatrice de consensus. En fin de compte, nous nous attendons s'inspirer d'un certain nombre de consensus BFT prometteurs algorithmes au cœur ; Tangaora [9] (une variante BFT de Raft [16]), Tendermint [11] et HoneyBadgerBFT [14]. L'algorithme devra parvenir à un accord sur plusieurs parachains en parallèle, différant ainsi de l'habituel blockchain mécanismes de consensus. Nous supposons qu'une fois le consensus est atteint, nous sommes en mesure d'enregistrer le consensus dans une preuve irréfutable qui peut être fournie par n'importe lequel des les participants à celui-ci. Nous supposons également qu'un mauvais comportement au sein du protocole peut être généralement réduit à un petit groupe contenant des participants qui se comportent mal pour minimiser les dommages collatéraux en infligeant une punition.8 La preuve, qui prend la forme de nos déclarations signées, est placée ensemble dans l’en-tête du bloc relais-chaîne. avec certains autres champs, notamment la racine statetrie de la chaîne relais et la racine transaction-trie. Le étanchéité processus prend endroit sous un célibataire générer un consensus mécanisme adressage les deux le le bloc de la chaîne relais et les blocs des parachains qui font une partie du contenu du relais : les parachains ne sont pas « engagées » séparément par leurs sous-groupes puis rassemblées plus tard. Cela se traduit par un processus plus complexe pour la chaîne de relais, mais nous permet de parvenir à un consensus sur l'ensemble du système en une seule étape, minimisant ainsi la latence et permettant pour des exigences de disponibilité de données assez complexes qui sont utile pour le processus de routage ci-dessous. 8Les systèmes de consensus existants basés sur PoS BFT tels que Tendermint BFT et le Slasher original répondent à ces affirmations.
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 12 L’état de la machine à consensus de chaque participant peut être modélisé comme un simple tableau (2 dimensions). Chaque participant (validator) dispose d'un ensemble d'informations, sous la forme de déclarations signées (« votes ») des autres participants, concernant chaque candidat au bloc parachain ainsi que le candidat au bloc relaychain. L'ensemble des informations est composé de deux éléments de données : Disponibilité : oui ceci validator avoir sortie informations de publication de transaction de ce bloc afin sont-ils capables de valider correctement les candidats parachain sur le bloc suivant ? Ils peuvent voter soit 1 (connu) ou 0 (pas encore connu). Une fois qu'ils vote 1, ils s'engagent à voter de la même manière pour le reste de ce processus. Votes ultérieurs qui ne le font pas respectez, ce sont des motifs de punition. Validité : le bloc parachain est-il valide et c'est tout données référencées en externe (par ex. opérations) disponible ? Ceci ne concerne que les validator attribués à la parachain sur laquelle ils votent. Ils peuvent voter soit 1 (valide), -1 (invalide) ou 0 (pas encore connu). Une fois qu'ils votent non zéro, ils nous nous engageons à voter de cette façon pour le reste de le processus. Des votes ultérieurs qui ne respectent pas cela sont des motifs de punition. Tous les validator doivent soumettre des votes ; les votes peuvent être soumis à nouveau, qualifiés par les règles ci-dessus. La progression de le consensus peut être modélisé comme plusieurs algorithmes de consensus standard BFT sur chaque parachain se produisant en parallèle. Puisque ceux-ci sont potentiellement contrecarrés par un petite minorité d’acteurs malveillants concentrés dans un seul groupe de parachain, le consensus global existe pour établir un filet de sécurité, limitant le pire des cas impasse à simplement un ou plusieurs blocs de parachain vides (et une série de sanctions pour les responsables). Les règles de base pour la validité des blocs individuels (qui permettent à l'ensemble total de validator dans son ensemble d'arriver à consensus sur le fait qu'il devienne le candidat unique de la parachain à référencer depuis le relais canonique) : • doit avoir au moins les deux tiers de ses validator votant positivement et aucun votant négativement ; • doit avoir plus d'un tiers de validator votant positivement sur la disponibilité des informations sur la file d'attente de sortie. S'il y a au moins un vote positif et au moins un vote négatif sur la validité, une condition exceptionnelle est créée et l'ensemble des validator doivent voter pour déterminer s'il y a des parties malveillantes ou s'il y a un accident fourchette. Outre les votes valides et invalides, un troisième type de votes sont autorisés, ce qui équivaut à voter pour les deux, ce qui signifie que le nœud a des opinions contradictoires. Cela pourrait être dû au le propriétaire du nœud exécutant plusieurs implémentations qui le font pas d’accord, ce qui indique une possible ambiguïté dans le protocole. Une fois que tous les votes ont été comptés à partir de l'ensemble complet validator, si l'opinion perdante a au moins une petite proportion (à être paramétré ; au plus la moitié, peut-être beaucoup moins) des votes de l'opinion gagnante, alors il est supposé être un fork accidentel de parachain et la parachain est automatiquement suspendue du processus de consensus. Dans le cas contraire, nous considérerons qu'il s'agit d'un acte malveillant et punirons le minorité qui votait pour l’opinion dissidente. La conclusion est un ensemble de signatures démontrant canonicité. Le bloc relais-chaîne peut alors être scellé et le processus de scellement du bloc suivant a commencé. 6.5. Améliorations de l'étanchéité des blocs relais. Tandis que cette méthode de scellement donne de fortes garanties sur le fonctionnement du système, elle n’est pas particulièrement évolutive puisque les informations clés de chaque parachain doivent avoir leur disponibilité garantie par plus d'un tiers de tous les validator. Cela signifie que l’empreinte de responsabilité de chaque validator grandit à mesure que d’autres chaînes sont ajoutées. Alors que la disponibilité des données au sein de réseaux de consensus ouverts est essentiellement un problème non résolu, il existe des moyens d'atténuer la surcharge imposée aux nœuds validator. Un simple La solution est de réaliser que même si les validator doivent assumer étant responsables de la disponibilité des données, ils n’ont pas besoin de stocker, de communiquer ou de répliquer eux-mêmes les données. Des silos de données secondaires, éventuellement liés (voire au tout même) les assembleurs qui compilent ces données, peuvent gérer les tâche de garantir la disponibilité, les validator fournissant une partie de leurs intérêts/revenus en paiement. Cependant, même si cela permet d’acquérir une certaine évolutivité intermédiaire, cela ne résout toujours pas le problème sous-jacent ; depuis l'ajout de chaînes supplémentaires nécessitera en général des validator supplémentaires, la consommation continue des ressources du réseau (notamment en termes de bande passante) augmente avec le carré de lechaînes, une propriété intenable à long terme. En fin de compte, nous continuerons probablement à nous cogner la tête contre la limitation fondamentale qui stipule que pour un réseau de consensus pour être considéré comme disponible en toute sécurité, le les besoins continus en bande passante sont de l’ordre du total validators fois le total des informations saisies. Ceci est dû à l'incapacité d'un réseau non fiable à répartir correctement la tâche de stockage des données sur de nombreux nœuds, ce qui en dehors de la tâche de traitement éminemment distribuable. 6.5.1. Présentation de la latence. Un moyen d'atténuer cela La règle est d’assouplir la notion d’immédiateté. En exigeant que 33 % + 1 validator votent pour la disponibilité seulement à terme, et non immédiatement, nous pouvons mieux utiliser la propagation exponentielle des données et aider à égaliser les pics d'échange de données. Une égalité raisonnable (bien que non prouvée) peut-être : (1) latence = participants × chaînes Dans le modèle actuel, la taille du système évolue avec le nombre de chaînes pour garantir que le traitement est distribué; puisque chaque chaîne nécessitera au moins un validator et que nous fixons l'attestation de disponibilité à une constante proportion de validators, alors les participants augmentent de la même manière avec le nombre de chaînes. On se retrouve avec : (2) latence = taille2 Cela signifie qu'à mesure que le système se développe, la bande passante requise et la latence jusqu'à la disponibilité sont connues sur l'ensemble du réseau. réseau, qui pourrait également être caractérisé comme le nombre de blocs avant la finalité, augmente avec son carré. C'est un facteur de croissance substantiel et pourrait s’avérer être un obstacle notable et nous contraindre à des paradigmes « non plats » comme composer plusieurs « Polkadotes » dans une hiérarchie pour le routage à plusieurs niveaux des publications à travers une arborescence de chaînes de relais.
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 13 6.5.2. Participation publique. Une autre direction possible est d'obtenir la participation du public au processus à travers un système de micro-réclamations. Comme les pêcheurs, il y a pourraient être des parties externes pour contrôler les validator qui prétendent disponibilité. Leur tâche est de trouver quelqu'un qui semble incapable de démontrer une telle disponibilité. Ce faisant, ils peut déposer une micro-réclamation auprès d'autres validator. PoW ou une obligation mise en jeu peut être utilisée pour atténuer l'attaque sybil ce qui rendrait le système largement inutile. 6.5.3. Garants de disponibilité. Une dernière voie serait de désigner un deuxième ensemble de validator liés comme « disponibilité » garants ». Ceux-ci seraient liés comme avec les validator normaux, et pourraient même provenir du même ensemble. (mais si tel est le cas, ils seraient choisis sur une période à long terme, au moins par session). Contrairement aux validator normaux, ils ne basculerait pas entre les parachains mais plutôt former un seul groupe pour attester de la disponibilité de toutes les données interchaînes importantes. Cela présente l’avantage d’assouplir l’équivalence entre participants et chaînes. Essentiellement, les chaînes peuvent grandir (avec l'ensemble de chaîne d'origine validator), alors que les participants, et particulièrement ceux qui participent au testament de disponibilité des données, peuvent rester pour le moins sous-linéaires et très probablement constant. 6.5.4. Préférences de l'assembleur. Un aspect important de cela système est de garantir qu’il existe une sélection saine de les assembleurs créant les blocs dans une parachain donnée. Si un un seul assembleur a dominé une parachain puis quelques attaques devenir plus réalisable puisque la probabilité de l'absence de la disponibilité de données externes serait moins évidente. Une option consiste à pondérer artificiellement les blocs de parachaine dans un mécanisme pseudo-aléatoire afin de favoriser une grande variété de assembleurs. Dans le premier cas, nous aurions besoin dans le cadre du mécanisme de consensus favorisé par validator Les candidats au bloc parachain ont été déterminés comme étant « plus lourds ». De même, nous devons inciter les validator à tenter de suggérer le bloc le plus lourd qu'ils peuvent trouver - cela pourrait être cela en rendant une partie de leur récompense proportionnelle au poids de leur candidat. Pour garantir que les assembleurs reçoivent une rémunération équitable et raisonnable chance que leur candidat soit choisi comme gagnant candidat en consensus, nous faisons le poids spécifique d'un Le candidat au bloc parachain est déterminé sur une fonction aléatoire connectée à chaque assembleur. Par exemple, en prenant la mesure de distance XOR entre l’adresse de l’assembleur et un numéro pseudo-aléatoire cryptographiquement sécurisé déterminé à proximité du point de création du bloc (un « ticket gagnant » fictif). Cela donne effectivement à chacun assembleur (ou, plus spécifiquement, l’adresse de chaque assembleur) chance aléatoire que leur bloc candidat « gagne » tous les autres. Pour atténuer l'attaque sybil d'un seul assembleur « extrayant » une adresse proche du ticket gagnant et étant ainsi un favori pour chaque bloc, nous ajouterions une certaine inertie à l'adresse d'un assembleur. Cela peut être aussi simple que de les exiger avoir un montant de base de fonds à l'adresse. Un plus une approche élégante serait de pondérer la proximité du billet gagnant avec le montant des fonds garés au adresse en question. Même si la modélisation reste à faire, il est fort possible que ce mécanisme permette même à des les petites parties prenantes à contribuer en tant que rassembleur. 6.5.5. Blocs en surpoids. Si un ensemble validator est compromis, ils peuvent créer et proposer un bloc qui, bien que valide, prend un temps excessif à exécuter et valider. C'est un problème puisqu'un groupe validator pourrait former raisonnablement un bloc qui prend beaucoup de temps à exécuter à moins qu'une information particulière soit déjà connue permettant un raccourci, par ex. en prenant en compte un grand premier. Si un seul assembleur connaissait cette information, alors ils auraient un net avantage à obtenir le leur les candidats acceptaient tant que les autres étaient occupés à traiter l'ancien bloc. Nous appelons ces blocs en surpoids. La protection contre les validator soumettant et validant ces blocs relève en grande partie du même couvert que pour blocs invalides, mais avec une mise en garde supplémentaire : puisque le temps nécessaire à l'exécution d'un bloc (et donc son statut de surpoids) est subjectif, le résultat final d’un vote sur la mauvaise conduite se divise essentiellement en trois camps. Un Il est possible que le bloc ne soit définitivement pas en surpoids. dans ce cas, plus des deux tiers déclarent qu'ils pourraient exécuter le bloc dans une certaine limite (par exemple 50 % du temps total autorisé entre les blocs). Une autre est que le le bloc est ddéfinitivement en surpoids - ce serait le cas si plus de les deux tiers déclarent qu'ils n'ont pas pu exécuter le blocage dans ladite limite. Une dernière possibilité est une divergence d’opinion entre les validator. Dans ce cas, nous pouvons choisir d'infliger une punition proportionnée. Pour garantir que les validator peuvent prédire quand ils pourraient être proposant un bloc en surpondération, il peut être judicieux de leur demander de publier des informations sur leurs propres performances pour chaque bloc. Sur une période de temps suffisante, cela devrait leur permettre de profiler leur vitesse de traitement par rapport aux pairs qui les jugeraient. 6.5.6. Assurance assembleur. Un problème demeure pour les validator : contrairement aux réseaux PoW, pour vérifier les informations d'un assembleur bloc pour la validité, ils doivent réellement y exécuter les transactions. Des assembleurs malveillants peuvent fournir des blocs invalides ou en surpoids aux validator, ce qui leur cause des problèmes (gaspillage leurs ressources) et exigeant un coût d’opportunité potentiellement substantiel. Pour atténuer cela, nous proposons une stratégie simple sur le fait partie des validators. Premièrement, les candidats au bloc parachain envoyés aux validators doivent être signés depuis un compte de chaîne de relais avec des fonds ; si ce n'est pas le cas, alors le validator devrait tomber immédiatement. Deuxièmement, ces candidats doivent être classés en priorité par une combinaison (par exemple multiplication) de le montant des fonds sur le compte jusqu'à un certain plafond, le nombre de blocs précédents que l'assembleur a proposés avec succès dans le passé (sans parler des blocs précédents punitions), et le facteur de proximité avec le gagnant billet comme indiqué précédemment. La casquette devrait être la même comme les dommages punitifs payés au validator dans le cas d'entre eux envoyant un bloc invalide. Pour dissuader les assembleurs d'envoyer des candidats de bloc invalides ou en surpoids aux validator, tout validator peut placer dans le bloc suivant une transaction incluant le bloc incriminé alléguant un mauvais comportement avec pour effet de transférer tout ou partie des fonds dans le compte de l'assembleur qui se comporte mal compte au validator lésé. Ce type de transaction précède tous les autres pour garantir que l'assembleur ne puisse pas retirer les fonds avant la punition. Le montant de les fonds transférés à titre de dommages et intérêts sont encore un paramètre dynamique
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 14 à modéliser, mais représentera probablement une proportion de la récompense globale validator pour refléter le niveau de chagrin causé. À empêcher que des validator malveillants confisquent arbitrairement les fonds des collectionneurs, ce dernier peut faire appel de la décision du validator auprès d'un jury composé de validator choisis au hasard en échange. pour effectuer un petit dépôt. S’ils trouvent en faveur du validator, le dépôt est consommé par celui-ci. Sinon, le la caution est restituée et le validator est sanctionné (puisque le validator est dans une position beaucoup plus voûtée, l'amende sera probablement plutôt lourd). 6.6. Interchaîne Transaction Routage. Interchaîne le routage des transactions est l'un des éléments de maintenance essentiels tâches de la chaîne-relais et de ses validator. C'est le logique qui régit la façon dont une transaction publiée (souvent abrégée simplement en « post ») devient un résultat souhaité d'une parachain source à être une entrée non négociable d'une autre parachain de destination sans aucune confiance exigences. Nous choisissons soigneusement la formulation ci-dessus ; notamment nous ne nécessite pas qu'il y ait eu une transaction dans la source parachain d'avoir explicitement sanctionné ce post. Le seul Les contraintes que nous imposons à notre modèle sont que les parachaines doivent fournir, emballés dans le cadre de leur bloc global sortie du traitement, les postes qui sont le résultat du l’exécution du bloc. Ces publications sont structurées en plusieurs files d'attente FIFO ; le Le nombre de listes est appelé base de routage et peut être autour de 16. Ce nombre représente notamment la quantité de parachains que nous pouvons prendre en charge sans avoir à recourir à routage multiphase. Dans un premier temps, Polkadot prendra en charge cela type de routage direct, mais nous allons en décrire un possible processus de routage multiphase (« hyper-routage ») comme moyen d’évoluer bien au-delà de l’ensemble initial de parachains. Nous supposer que tout participants sais le sous-groupes pour les deux blocs suivants n, n + 1. En résumé, le Le système de routage suit ces étapes : • CollatorS : contacter les membres des V alidators[n][S] • Assembleurs : POUR CHAQUE sous-groupes : s'assurer au moins 1 membre des Validateurs[n][s] en contact • Assembleurs : POUR CHAQUE sous-groupes : supposer egress[n −1][s][S] est disponible (tous les messages entrants données vers 'S' du dernier bloc) • Assembleurs : Composez le bloc candidat b pour S : (b.header, b.ext, b.proof, b.receipt, b.egress) • Assembleurs : Envoyer preuve informations proof[S] = (b.header, b.ext, b.proof, b.receipt) à V alidateurs[n][S] • CollatorS : garantir que les données de transaction externes sont b.ext est mis à la disposition des autres assembleurs et validators • Assembleurs : POUR CHACUN sous-groupe s : Envoyer sortie informations sortie[n][S][s] = (b.header, b.receipt, b.egress[s]) à le recevoir sous-groupes membres de suivant bloquer V alidateurs[n + 1][s] • V alidatorV : pré-connecter tous les membres du même ensemble pour le bloc suivant : soit N = Chain[n + 1][V ]; connecter tous les validators v tels que Chain[n + 1][v] = N • V alidateurV : Rassemblez toutes les entrées de données pour cela bloquer : POUR CHACUN sous-groupe s : Récupérer egress[n −1][s][Chain[n][V ]], récupère d'autres validators v tels que Chain[n][v] = Chain[n][V ]. Peut-être en passant par d'autres validator sélectionnés au hasard pour une preuve de tentative. • V alidateurV : Acceptez les épreuves de candidat pour cela preuve de bloc[Chain[n][V ]]. Validité du blocage des votes • V alidateurV : Accepter les données de sortie des candidats pour bloc suivant : POUR CHAQUE sous-groupes, accepter sortie[n][s][N]. Disponibilité de sortie du bloc de vote ; republier parmi les validators intéressés v de telle sorte que Chaîne[n + 1][v] = Chaîne[n + 1][V ]. • V alidateurV : JUSQU'À CONSENSUS Où : egress[n][from][to] est la file d'attente de sortie actuelle informations pour les publications allant de la parachain « de » à parachain 'à' dans le bloc numéro 'n'. CollatorS est un assembleur pour les parachaines S. V alidators[n][s] est l'ensemble des validators pour les parachaines au numéro de bloc n. A l'inverse, Chain[n][v] est la parachain à laquelle validator v est attribué sur le bloc numéro n. block.egress[to] est la sortie file d'attente de messages provenant d'un bloc de bloc parachain dont la parachain de destination est à destination. Étant donné que les assembleurs perçoivent des frais (de transaction) basés sur leurs blocs deviennent canoniques, ils sont incités à le faire assurez-vous que pour chaque destination du bloc suivant, le sous-groupe les membres sont informés de la file d'attente de sortie du présent bloquer. Les validateurs sont incités uniquement à former un consensus sur un bloc (parachain), en tant que tels, ils se soucient peu de quel bloc de l’assembleur devient finalement canonique. Dans principe, un validator pourrait former une alliance avec un assembleur et conspirer pour réduire les chances que d’autres assembleurs les blocs deviennent canoniques, mais cela est à la fois difficile à organiser en raison de la sélection aléatoirection de validators pour parachains et pourrait être défendu avec une réduction des frais payables pour les blocs de parachain qui résistent le processus de consensus. 6.6.1. Disponibilité des données externes. Assurer une parachain les données externes sont réellement disponibles est un problème récurrent avec systèmes décentralisés visant à répartir la charge de travail entre le réseau. Au cœur du problème se trouve la disponibilité problème qui stipule que puisqu'il n'est ni possible de faire une preuve de disponibilité non interactive ni aucune sorte de preuve d'indisponibilité, pour qu'un système BFT fonctionne correctement valider toute transition dont l'exactitude dépend de la disponibilité de certaines données externes, le nombre maximum de nœuds byzantins acceptables, plus un, du système doit attester de la disponibilité des données. Pour qu'un système puisse évoluer correctement, comme Polkadot, ceci pose un problème : si une proportion constante de validators doit attester de la disponibilité des données, et en supposant que les validator voudront réellement stocker les données avant d'affirmer qu'elles sont disponibles, alors comment pouvons-nous éviter le problème des besoins en bande passante/stockage augmentant avec la taille du système (et donc le nombre de validator) ? Une réponse possible serait d'avoir un ensemble séparé de validators (garants de disponibilité), dont la commande s'accroît de manière sublinéaire avec la taille de Polkadot dans son ensemble. C'est décrit en 6.5.3. Nous avons également une astuce secondaire. En tant que groupe, les assembleurs sont intrinsèquement incités à garantir que toutes les données sont disponible pour la parachain de leur choix puisque sans elle, ils sont incapables de créer d'autres blocs à partir desquels ils peuvent percevoir les frais de transaction. Les assembleurs forment également un groupe dont la composition est variée (en raison du caractère aléatoire des groupes parachain validator) non trivial à saisir et facile
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 15 à prouver. Les assembleurs récents (peut-être les derniers milliers de blocs) sont donc autorisés à lancer des défis à la disponibilité de données externes pour une parachain particulière bloquez sur validators pour une petite caution. Les validateurs doivent contacter ceux du sous-groupe validator apparemment incriminé qui ont témoigné et soit acquérir et restituer les données à l'assembleur, soit faire remonter le problème. en témoignant du manque de disponibilité (le refus direct de fournir les données compte comme un délit de confiscation de caution, donc le mauvais comportement de validator sera probablement simplement interrompre la connexion) et contacter des validator supplémentaires pour exécuter le même test. Dans ce dernier cas, la caution du collecteur est retourné. Une fois atteint le quorum de validator pouvant faire de tels témoignages d'indisponibilité, ils sont libérés, le Le sous-groupe qui se comporte mal est puni et le blocage est annulé. 6.6.2. Routage des publications. Chaque en-tête de parachain comprend un sortie-trie-root ; c'est la racine d'un trie contenant le bacs de base de routage, chaque bac étant une liste concaténée des postes de sortie. Les preuves Merkle peuvent être fournies partout parachain validators pour prouver qu'une parachain particulière le bloc avait une file d’attente de sortie particulière pour une parachain de destination particulière. Au début du traitement d'un bloc de parachain, chaque la file d'attente de sortie d'une autre parachain à destination dudit bloc est fusionné dans la file d’attente d’entrée de notre bloc. Nous supposons fort, probablement CSPR9, sous-bloc ordonnant de réaliser une opération déterministe qui n'offre aucun favoritisme entre aucun appariement de blocs de parachain. Les assembleurs calculent la nouvelle file d'attente et vidanger les files d'attente de sortie selon les paramètres de la parachain logique. Le contenu de la file d'attente d'entrée est écrit explicitement dans le bloc parachain. Cela a deux objectifs principaux : Premièrement, cela signifie que la parachain peut être synchronisée en toute confiance, indépendamment des autres parachains. Deuxièmement, cela simplifie la logistique des données en cas d'entrée complète la file d'attente ne peut pas être traitée en un seul bloc ; Les validator et les assembleurs sont capables de traiter les blocs suivants sans avoir à rechercher spécialement les données de la file d’attente. Si la file d'attente d'entrée de la parachain est supérieure à un seuil montant à la fin du traitement du bloc, il est alors marqué saturé sur la chaîne relais et aucun autre message ne peut lui être livré jusqu'à ce qu'il soit dégagé. Les preuves Merkle sont utilisé pour démontrer la fidélité du fonctionnement de l’assembleuse dans la preuve du bloc parachain. 6.6.3. Critique. Un défaut mineur relatif à cette base Le mécanisme est l’attentat post-bombe. C'est là que tout les parachains envoient le maximum de messages possible à une parachain particulière. Bien que cela bloque la cible file d'attente d'entrée en même temps, aucun dommage n'est causé au-delà une attaque DoS de transaction standard. Fonctionnant normalement, avec un ensemble de fonctions bien synchronisées et assembleurs non malveillants et validators, pour N parachains, N × M total validators et L assembleurs par parachain, nous peut décomposer le total des chemins de données par bloc pour : Validateur : M −1+L+L : M −1 pour les autres validators dans l'ensemble de parachain, L pour chaque assembleur fournissant un bloc de parachain candidat et un deuxième L pour chaque assembleur du bloc suivant nécessitant les charges utiles de sortie du bloc précédent. (Ce dernier cas ressemble en fait plutôt au pire des cas opération puisqu’il est probable que les assembleurs partageront ces données.) Collator : M +kN : M pour une connexion à chaque élément pertinent bloc parachain validator, kN pour amorcer les charges utiles de sortie vers un sous-ensemble de chaque groupe parachain validator pour le bloc suivant (et éventuellement certains assembleurs préférés). En tant que tel, les chemins de données par nœud augmentent de manière linéaire avec la complexité globale du système. Alors que c'est raisonnable, à mesure que le système évolue en centaines ou en milliers de parachains, une certaine latence de communication peut être absorbée en échange d’un taux de croissance de complexité plus faible. Dans ce cas, un algorithme de routage multiphase peut être utilisé afin de réduire le nombre de parcours instantanés au prix de l'introduction de tampons de stockage et de latence. 6.6.4. Routage hyper-cube. Le routage hyper-cube est un mécanisme qui peut principalement être construit comme une extension du mécanisme de routage de base décrit ci-dessus. Essentiellement, plutôt que d'augmenter la connectivité des nœuds avec le nombre de parachains et de nœuds de sous-groupes, nous grandissons uniquement avec le logarithme des parachaines. Les messages peuvent transiter entre plusieurs files d’attente de parachaines en route vers la livraison finale. Le routage lui-même est déterministe et simple. Nous commençons par limiter le nombre de casiers dans les files d'attente d'entrée/sortie ; plutôt que d'être le nombre total de parachains, ils sont lesbase de routage (b) . Celui-ci sera fixé comme le nombre des parachains changent, l'exposant de routage (e) étant plutôt augmenté. Sous ce modèle, notre volume de messages grandit avec O(be), les voies restant constantes et la latence (ou nombre de blocs requis pour la livraison) avec O(e). Notre modèle de routage est un hypercube de e dimensions, chaque côté du cube ayant b emplacements possibles. À chaque bloc, nous acheminons les messages le long d'un seul axe. Nous alternez les axes de manière circulaire, garantissant ainsi le délai de livraison des blocs électroniques dans le pire des cas. Dans le cadre du traitement de la parachain, à destination de l'étranger Les messages trouvés dans la file d'attente d'entrée sont immédiatement acheminés vers le bac de la file d'attente de sortie approprié, compte tenu de la numéro de bloc actuel (et donc dimension de routage). Ceci le processus nécessite un transfert de données supplémentaire pour chaque saut sur l'itinéraire de livraison, mais c'est un problème en soi qui peut être atténué en utilisant des moyens alternatifs de livraison de données utiles et comprenant uniquement une référence, plutôt que la charge utile complète du message dans le post-trie. Un exemple d'un tel routage hyper-cube pour un système avec 4 parachaines, b = 2 et e = 2 pourraient être : Phase 0, sur chaque message M : • sub0 : si Mdest ∈{2, 3} alors sendTo(2) sinon garder • sub1 : si Mdest ∈{2, 3} alors sendTo(3) sinon garder • sub2 : si Mdest ∈{0, 1} alors sendTo(0) sinon garder • sub3 : si Mdest ∈{0, 1} alors sendTo(1) sinon garder Phase 1, sur chaque message M : • sub0 : si Mdest ∈{1, 3} alors sendTo(1) sinon garder • sub1 : si Mdest ∈{0, 2} alors sendTo(0) sinon garder • sub2 : si Mdest ∈{1, 3} alors sendTo(3) sinon garder • sub3 : si Mdest ∈{0, 2} alors sendTo(2) sinon garder Les deux dimensions ici sont faciles à considérer comme la première deux bits de l'index de destination ; pour le premier bloc, le seul le bit d’ordre supérieur est utilisé. Le deuxième bloc traite avec le bit de poids faible. Une fois que les deux se produisent (de manière arbitraire commande) alors le courrier sera acheminé. 9cryptographiquement sécurisé pseudo-aléatoire
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 16 6.6.5. Maximiser le hasard. Une modification de la base la proposition verrait un total fixe de c2 −c validators, avec c−1 validators dans chaque sous-groupe. Chaque bloc, plutôt que il y a une répartition non structurée des validators parmi les parachaines, au lieu de cela pour chaque sous-groupe de parachaines, chaque validator serait attribué à un utilisateur unique et différent. sous-groupe parachain sur le bloc suivant. Ce serait conduire à l'invariant qu'entre deux blocs quelconques, pour tout deux paires de parachain, il existe deux validator qui ont échangé les responsabilités de la parachain. Bien que cela ne puisse pas être utilisé pour obtenir des garanties absolues sur la disponibilité (un seul validator tombera occasionnellement hors ligne, même si bienveillant), il peut néanmoins optimiser le cas général. Cette approche n'est pas sans complications. L'ajout d'une parachain nécessiterait également une réorganisation de l'ensemble validator. De plus le nombre de validators, étant lié au carré du nombre de parachains, commencerait très petit au début et finirait par grandir loin trop rapide, devenant intenable après environ 50 parachains. Aucun de ces problèmes ne constitue un problème fondamental. Dans le premier cas, la réorganisation des ensembles validator est quelque chose qui doit être fait régulièrement de toute façon. Concernant la taille du validator défini, lorsqu'il est trop petit, plusieurs validator peuvent être attribués à la même parachain, en appliquant un facteur entier au total global de validators. Un mécanisme de routage multiphase tel que le routage Hypercube, discuté en 6.6.4 alléger l'exigence d'un grand nombre de validator lorsqu'il y a un grand nombre de chaînes. 6.7. Validation de la parachaine. L'objectif principal d'un validator est de témoigner, en tant qu’acteur soudé, que le le bloc est valide, y compris, mais sans s'y limiter, toute transition d'état, toutes transactions externes incluses, l'exécution de tous les messages en attente dans la file d'attente d'entrée et l'état final de la file d’attente de sortie. Le processus lui-même est assez simple. Une fois que le validator a scellé le bloc précédent, il est libre commencer à travailler pour fournir un bloc de parachain candidat candidat au prochain tour de consensus. Initialement, le validator trouve un candidat de bloc de parachain via un assembleur de parachain (décrit ci-dessous) ou un de ses co-validators. Les données candidates au bloc parachain inclut l’en-tête du bloc, l’en-tête du bloc précédent, toutes les données d'entrée externes incluses (pour Ethereum et Bitcoin, ces données seraient appelées transactions, mais en principe elles peuvent inclure des structures de données arbitraires à des fins arbitraires), des données de file d'attente de sortie et des données internes pour prouver la validité de la transition d'état (pour Ethereum il s'agirait des différents nœuds d'état/de stockage requis pour exécuter chaque transaction). Des preuves expérimentales montrent cet ensemble de données complet pour un bloc Ethereum récent être au maximum de quelques centaines de KiB. Simultanément, si ce n'est pas encore fait, le validator sera tenter de récupérer des informations relatives à la transition du bloc précédent, initialement à partir du bloc précédent validators et plus tard de tous les validators signant pour le disponibilité des données. Une fois que le validator a reçu un tel bloc candidat, ils le valident ensuite localement. Le processus de validation est contenu dans le module validator de la classe parachain, un module logiciel sensible au consensus qui doit être écrit pour toute implémentation de Polkadot (bien qu'en principe une bibliothèque avec un C ABI pourrait permettre à une seule bibliothèque de être partagé entre les implémentations avec les réduction de la sécurité due au fait de n’avoir qu’une seule implémentation « de référence »). Le processus prend l'en-tête du bloc précédent et vérifie son identité via la chaîne de relais récemment convenue. bloc dans lequel son hash doit être enregistré. Une fois la validité de l'en-tête parent vérifiée, la parachain spécifique La fonction de validation de la classe peut être appelée. Il s'agit d'une fonction unique acceptant un certain nombre de champs de données (environ ceux donnés précédemment) et renvoyant un simple booléen proclamant la validité du blocage. La plupart de ces fonctions de validation vérifieront d'abord des champs d'en-tête qui peuvent être dérivés directement de le bloc parent (par exemple parent hash, numéro). Suite cela, ils rempliront toutes les structures de données internes comme nécessaires au traitement des transactions et/ou des publications. Pour une chaîne de type Ethereum, cela revient à remplir un trie base de données avec les nœuds qui seront nécessaires pour le exécution complète des transactions. D'autres types de chaînes peuvent avoir autre pmécanismes de réparation. Une fois cela fait, les publications d'entrée et les transactions externes (ou tout ce que représentent les données externes) seront édictés, équilibrés selon les spécifications de la chaîne. (Un Une valeur par défaut raisonnable pourrait être d'exiger que toutes les publications entrantes soient traitées avant que les transactions externes ne soient traitées, mais cela devrait appartenir à la logique de la parachain de décider.) Grâce à ce texte, une série de postes de sortie seront créés et il sera vérifié que ceux-ci correspondent bien le candidat du assembleur. Enfin, le formulaire correctement renseigné l’en-tête sera vérifié par rapport à l’en-tête du candidat. Avec un bloc candidat entièrement validé, le validator peut alors voter pour le hash de son en-tête et envoyer toutes les informations de validation requises aux co-validator de son sous-groupe. 6.7.1. Collateurs Parachain. Les assembleurs de parachain sont des opérateurs non cautionnés qui remplissent une grande partie de la tâche des mineurs sur les réseaux blockchain actuels. Ils sont spécifiques à une parachain particulière. Pour fonctionner, ils doivent maintenir à la fois la chaîne de relais et le système entièrement synchronisé parachaine. La signification précise de « entièrement synchronisé » dépendra de la classe de la parachain, mais inclura toujours l'état actuel de la file d'attente d'entrée de la parachain. Dans le cas de Ethereum, cela implique également au moins de maintenir une base de données Merkle-tree des derniers blocs, mais pourrait incluent également diverses autres structures de données, notamment Bloom filtres pour l'existence du compte, les informations familiales, la journalisation sorties et tables de recherche inversée pour le numéro de bloc. En plus de maintenir les deux chaînes synchronisées, il doit également « pêcher » les transactions en maintenant une file d’attente des transactions et en acceptant les transactions correctement validées du réseau public. Avec la file d'attente et la chaîne, c'est capable de créer de nouveaux blocs candidats pour les validator choisis à chaque bloc (dont l'identité est connue puisque la chaîne de relais est synchronisée) et de les soumettre, avec les diverses informations annexes telles que la preuve de validité, via le réseau de pairs. Pour sa peine, il perçoit tous les frais relatifs aux transactions qu'il inclut. Diverses théories économiques flottent autour de cela arrangement. Dans un marché fortement concurrentiel où il existe s'il y a un surplus de collecteurs, il est possible que la transaction les frais seront partagés avec les parachain validators pour inciter l’inclusion d’un bloc d’assemblage particulier. De la même manière,
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 17 certains assembleurs peuvent même augmenter les frais requis à payer afin de rendre le bloc plus attractif pour validators. Dans ce cas, un marché naturel devrait se former avec des transactions payant des frais plus élevés, évitant la file d'attente et avoir une inclusion plus rapide dans la chaîne. 6.8. Réseautage. Réseautage sur les blockchain traditionnels comme Ethereum et Bitcoin a des exigences plutôt simples. Toutes les transactions et tous les blocages sont diffusés dans de simples potins non dirigés. La synchronisation est plus complexe, notamment avec Ethereum mais en réalité cette logique était contenue dans la stratégie des pairs plutôt que le protocole lui-même qui se résolvait autour de quelques types de messages de requête et de réponse. Alors que Ethereum a progressé sur les offres de protocoles actuelles avec le protocole devp2p, qui a permis de nombreuses les sous-protocoles doivent être multiplexés sur une seule connexion homologue et avoir ainsi la même superposition homologue prenant en charge de nombreux protocoles p2p simultanément, la partie Ethereum de le protocole restait encore relativement simple et le p2p le protocole reste pour l’instant inachevé avec d’importants fonctionnalités manquantes telles que la prise en charge de la QoS. Malheureusement, le désir de créer un protocole « Web 3 » plus omniprésent a échoué, les seuls projets qui l'utilisent étant ceux explicitement financé par la vente participative Ethereum. Les exigences pour Polkadot sont un peu plus substantielles. Plutôt qu'un réseau totalement uniforme, Polkadot compte plusieurs types de participants, chacun ayant des exigences différentes quant à la composition de leurs pairs et plusieurs réseaux. des « pistes » dont les participants auront tendance à discuter données particulières. Cela signifie une superposition de réseau beaucoup plus structurée – et un protocole prenant en charge cela – sera probablement nécessaire. En outre, l'extensibilité pour faciliter les ajouts futurs tels que de nouveaux types de « chaînes » peut eux-mêmes nécessitent une nouvelle structure de superposition. Lors d'une discussion approfondie sur la façon dont le réseautage Si le protocole peut paraître hors du champ d'application de ce document, certaines analyses des exigences sont raisonnables. Nous pouvons diviser grossièrement les participants de notre réseau en deux ensembles (chaîne relais, parachains) chacun des trois sous-ensembles. Nous pouvons indiquent également que chacun des participants à la parachain n'est que intéressés à converser entre eux plutôt que participants à d'autres parachains : • Acteurs de la chaîne relais : • Validateurs : P, divisé en sous-ensembles P[s] pour chacun parachaine • Garants de disponibilité : A (cela peut être représenté par des validateurs dans la forme de base du protocole) • Clients relais-chaîne : M (notez les membres de chaque l'ensemble de parachain aura également tendance à être membre de M) • Participants à la Parachain : • Collateurs Parachain : C[0], C[1], . . . • Pêcheurs Parachain : F[0], F[1], . . . • Clients Parachain : S[0], S[1], . . . • Clients légers Parachain : L[0], L[1], . . . En général, nous nommons des classes particulières de communication aura tendance à avoir lieu entre les membres de ces ensembles : • P | Un <-> P | R : Le plein ensemble de validators/garants doit être bien connecté à parvenir à un consensus. • P[s] <-> C[s] | P[s] : Chaque validator en tant que membre d'un groupe de parachain donné aura tendance à bavarder avec d'autres membres ainsi qu'avec les assembleurs de cette parachain pour découvrir et partager des candidats de bloc. • Un <-> P[s] | C | R : Chaque garant de disponibilité devra collecter des données inter-chaînes sensibles au consensus les données des validator qui lui sont attribués ; assembleurs peut également optimiser les chances de consensus sur leur bloquer en l'annonçant aux garants de disponibilité. Une fois qu'ils les auront, les données seront versées à autre garant pour faciliter le consensus. • P[s] <-> A | P[s'] : les Parachain validators seront Vous devez collecter des données d'entrée supplémentaires à partir de l'ensemble précédent de validator ou des garants de disponibilité. • F[s] <-> P : Lors de la déclaration, les pêcheurs peuvent placer une réclamation auprès de tout participant. • M <-> M | P | R : Les clients généraux de la chaîne de relais décaissent les données des validator et des garants. • S[s] <-> S[s] | P[s] | R : Les clients Parachain décaissent les données des validator/garants. • L[s] <-> L[s] | S[s] : clients légers Parachain décaisser les données des clients complets. Pour assurer un mécanisme de transport efficace, un « plat » réseau superposé, comme le devp2p de Ethereum, où chaque le nœud ne différencie pas (de manière non arbitraire) l’aptitude de ses Il est peu probable que les pairs conviennent. Un raisonnablement extensible le mécanisme de sélection et de découverte par les pairs nécessitera probablement à inclure dans le protocole ainsi que agressif planifier une analyse prospective pour garantir le bon type de pairs sont « par hasard » connecté au bon moment. La stratégie précise de composition par les pairs sera différente pour chaque classe de participants : pour une multi-chaînes, les assembleuses devront soit être continuellement se reconnecter aux validator élus en conséquence, ou besoin d'accords continus avec un sous-ensemble des validator pour s'assurer qu'ils ne sont pas déconnectés pendant la grande majorité du temps où ils sont inutiles pour ce validator. Les assembleurs tenteront aussi naturellement de maintenir un ou des connexions plus stables au garant de disponibilité mis en place pour assurer une propagation rapide de leurs messages sensibles au consensus données. Les garants de disponibilité viseront principalement à maintenir un connexion stable entre eux et avec les validator (pour le consensus et les données parachain critiques au consensus auxquelles ils l'attestent), ainsi qu'à certains assembleurs (pour la parachain données) et certains pêcheurs et clients à part entière (pour disperser informations). Les validateurs auront tendance à rechercher d'autres validator, en particulier ceux du même sous-groupe et tout autre validator. des assembleurs qui peuvent leur fournir des candidats au bloc parachain. Les pêcheurs, ainsi que les relais généralistes et parachaines les clients viseront généralement à maintenir une connexion ouverte à un validator ou garant, mais plein d'autres nœuds similaires à eux-mêmes autrement. Les clients légers de la Parachain viseront de la même manière à être connectés à un client complet de la parachain, sinon seulement d’autres clients légers parachain. 6.8.1. Le problème du désabonnement des pairs. Dans la proposition de protocole de base, chacun de ces sous-ensembles change constamment de manière aléatoire avec chaque bloc en tant que validators assignés pour vérifier les transitions de parachain sont élues au hasard. Cela peut être un problème si des nœuds disparates (non homologues) doivent transmettre des données entre eux. Il faut soit s'appuyer sur un réseau de pairs équitablement réparti et bien connecté pour
POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 18 garantir que la distance de saut (et donc la latence dans le pire des cas) n'augmente qu'avec le logarithme de la taille du réseau (un protocole de type Kademlia [13] peut aider ici), ou il faut introduire des temps de blocage plus longs pour permettre la négociation de connexion nécessaire afin de conserver un ensemble d'homologues qui reflète les besoins de communication actuels du nœud. Aucune de ces solutions n’est excellente : de longs temps de blocage être imposé au réseau peut le rendre inutile pour applications et chaînes particulières. Même un parfaitement juste et le réseau connecté entraînera un gaspillage important de bande passante à mesure qu'elle évolue en raison des nœuds non intéressés ayant pour leur transmettre des données inutiles. Même si les deux directions peuvent faire partie de la solution, une optimisation raisonnable pour aider à minimiser la latence serait être de restreindre la volatilité de ces parachain validator ensembles, soit en réaffectant l'appartenance uniquement entre des séries de blocs (par exemple, en groupes de 15, qui à 4 secondes le temps de blocage signifierait modifier les connexions une seule fois par minute) ou en faisant tourner les membres de manière progressive, par ex. changeant par un membre à la fois (par exemple s'il y a y a-t-il 15 validator attribués à chaque parachain, alors en moyenne, cela prendrait une minute complète entre des ensembles). En limitant le taux de désabonnement des pairs et en garantissant que les connexions entre pairs avantageuses sont établies correctement dans avancer grâce à la prévisibilité partielle de la parachain ensembles, nous pouvons contribuer à garantir que chaque nœud conserve en permanence un sélection fortuite de pairs. 6.8.2. Chemin vers un protocole réseau efficace. Probablement le L'effort de développement le plus efficace et le plus raisonnable se concentrera sur l'utilisation d'un protocole préexistant plutôt que sur un protocole continu. le nôtre. Il existe plusieurs protocoles de base peer-to-peer qui nous pouvons utiliser ou augmenter, y compris le propre devp2p de Ethereum [22], libp2p [1] d'IPFS et GNUnet [4] de GNU. Un examen complet de ces protocoles et de leur pertinence pour construire un réseau de pairs modulaire prenant en charge certaines garanties structurelles, un pilotage dynamique par les pairs et des sous-protocoles extensibles dépasse largement la portée de ce document mais constituera un étape importante dans la mise en œuvre de Polkadot. 7. Aspects pratiques du Protocole 7.1. Paiement des transactions interchaînes. Alors qu'un grand Une certaine quantité de liberté et de simplicité est obtenue en supprimant le besoin d'un cadre de comptabilité holistique des ressources de calcul comme le gaz de Ethereum, cela soulève une question importante : sans gaz, comment peut-on parachain éviter qu'une autre parachain la force à faire du calcul ? Bien que nous puissions compter sur la file d'attente d'entrée après la transaction tampons pour empêcher une chaîne de spammer une autre avec données de transaction, il n'existe aucun mécanisme équivalent fourni par le protocole pour empêcher le spam du traitement des transactions. C'est un problème laissé au niveau supérieur. Depuis les chaînes sont libres d'attacher une sémantique arbitraire aux éléments entrants données post-transaction, nous pouvons garantir que le calcul doit être payé avant de commencer. Dans la même veine que le modèle épousé par Ethereum Serenity, nous pouvons imaginer un contrat de « rodage » au sein d’une parachain qui permet un validator pour garantir le paiement en échange du mise à disposition d'un volume particulier de ressources de traitement. Ces ressources peuvent être mesurées en quelque chose comme le gaz, mais il pourrait également s'agir d'un modèle entièrement nouveau tel qu'un délai d'exécution subjectif ou un modèle forfaitaire de type Bitcoin. En soi, cela n'est pas très utile car nous ne pouvons pas facilement supposer que l'appelant hors chaîne dispose de quel que soit le mécanisme de valeur reconnu par le cambriolage contrat. Cependant, on peut imaginer un contrat secondaire « en petits groupes » dans la chaîne d’approvisionnement. Les deux contrats ensemble formeraient un pont, se reconnaissant et fournissant une équivalence de valeur. (Jalonnement-tokens, disponible pour chacun, pourrait être utilisé pour régler la balance des paiements.) Faire appel à une autre chaîne de ce type signifierait utiliser un proxy par ce pont, qui fournirait les moyens de négocier le transfert de valeur entre les chaînes afin de payer les ressources de calcul requises sur la parachain de destination. 7.2. Supplémentaire Chaînes. Tandis que le ajout de un la parachain est une opération relativement bon marché, elle n’est pas gratuite. Plus de parachaines signifie moins de validators par parachaine et, éventuellement, un plus grand nombre de validator chacun avec un obligation moyenne réduite. Alors que le problème d'un coût de coercition moindre pour attaquer une parachain est atténué grâce à pêcheurs, l’ensemble croissant de validator force essentiellement un degré de latence plus élevé en raison de la mécanique du consensus sous-jacentthod. De plus, chaque parachain apporte avec lui le potentiel de chagriner les validator avec un algorithme de validation trop lourd. En tant que tel, il y aura un « prix » qui validators et/ou la communauté des parties prenantes extraira pour le ajout d'une nouvelle parachaine. Ce marché des chaînes va voir éventuellement l'ajout de soit : • Les chaînes qui n'ont probablement aucune contribution nette à payer (en termes de verrouillage ou de brûlage de staking token) à en faire partie (par exemple, les chaînes de consortium, Doge-chains, chaînes spécifiques à une application) ; • des chaînes qui apportent une valeur intrinsèque au réseau en ajoutant des fonctionnalités particulières difficiles pour aller ailleurs (par exemple, confidentialité, évolutivité interne, liens de service). Essentiellement, la communauté des parties prenantes devra être incité à ajouter des chaînes enfants – que ce soit financièrement ou par la volonté d'ajouter des chaînes fonctionnelles au relais. Il est prévu que les nouvelles chaînes ajoutées auront un effet très délai de préavis court pour le retrait, permettant aux nouvelles chaînes de être expérimenté sans aucun risque de compromis la proposition de valeur à moyen ou long terme. 8. Conclusion Nous avons décrit une direction que l'on peut prendre pour rédiger un protocole multi-chaînes évolutif et hétérogène avec le potentiel d'être rétrocompatible avec certains protocoles préexistants Réseaux blockchain. Dans le cadre d'un tel protocole, les participants travailler dans un intérêt personnel éclairé pour créer un système global qui peut être étendu d'une manière exceptionnellement libre et sans le coût typique pour les utilisateurs existants qui provient d'une conception standard blockchain. Nous avons donné un aperçu de l'architecture qu'il faudrait, y compris la nature des participants, leurs incitations économiques et les processus dans lesquels ils doivent s'engager. Nous avons identifié une conception de base et discuté de ses points forts et limites; en conséquence, nous avons d'autres instructions qui peut atténuer ces limitations et céder du terrain vers une solution blockchain entièrement évolutive.POLKADOT : VISION D'UN CADRE MULTI-CHAÎNES HÉTÉROGÈNE PROJET 1 19 8.1. Matériel manquant et questions ouvertes. La bifurcation du réseau est toujours une possibilité en raison d'implémentations divergentes du protocole. La guérison d'un tel la condition exceptionnelle n’a pas été discutée. Étant donné que le réseau aura nécessairement une période de finalisation non nulle, la récupération après la bifurcation de la chaîne de relais ne devrait pas poser de problème majeur, mais cela nécessitera une intégration minutieuse dans le protocole de consensus. La disposition relative à la confiscation des cautions et, à l'inverse, à la récompense a été n’a pas été exploré en profondeur. À l'heure actuelle, nous supposons des récompenses sont fournis selon le principe du gagnant qui remporte tout : cela peut ne pas offrir le meilleur modèle d’incitation aux pêcheurs. Un processus d'engagement-révélation de courte durée permettrait à de nombreux pêcheurs réclamer le prix en donnant une répartition plus équitable des récompenses, cependant, le processus pourrait entraîner une latence supplémentaire dans le découverte d'une mauvaise conduite. 8.2. Remerciements. Un grand merci à tous les les correcteurs qui ont aidé à mettre cela dans une vague forme présentable. En particulier, Peter Czaban, Bjorn Wagner, Ken Kappler, Robert Habermeier, Vitalik Buterin, Reto Trinkler et Jack Petersson. Merci à tous les personnes qui ont apporté des idées ou les débuts parmi eux, Marek Kotewicz et Aeron Buchanan méritent une mention particulière. Et merci à tous les autres pour leur aide en cours de route. Toutes les erreurs sont les miennes. Certaines parties de ce travail, y compris la recherche initiale sur algorithmes de consensus, a été financé en partie par les Britanniques Gouvernement dans le cadre du programme Innovate UK.