imtoken安卓官方下载|polkadot
Polkadot: Web3 Interoperability | Decentralized Blockchain
adot: Web3 Interoperability | Decentralized BlockchainSkip to main contentEcosystemFeaturesDevelopmentAboutUse PolkadotThe blockspace ecosystem for boundless innovationThe blockspace ecosystem for boundless innovationGet your Web3 ideas to market fast with economics that work for youLearn about blockspaceLearn about blockspaceTrue interoperabilityPolkadot enables cross-blockchain transfers of any type of data or asset, not just tokens. Connecting to Polkadot gives you the ability to interoperate with a wide variety of blockchains in the Polkadot network.Economic & transactional scalabilityPolkadot provides unprecedented economic scalability by enabling a common set of validators to secure multiple blockchains. Polkadot provides transactional scalability by spreading transactions across multiple parallel blockchains.Easy blockchain innovationCreate a custom blockchain in minutes using the Substrate↗ framework. Connect your chain to Polkadot and get interoperability and security from day one. This ease of development helps Polkadot’s network grow.High energy efficiencyPolkadot consumes a small fraction of the energy used by conventional blockchains thanks to its next-generation nominated proof-of-stake (NPoS) model. Using the equivalent of ~6.6 US households worth of energy per year, Polkadot has the lowest carbon footprint↗ among proof-of-stake protocols analyzed in recent research↗.Security for everyonePolkadot's novel data availability and validity scheme allows chains to interact with each other in a meaningful way. Chains remain independent in their governance, but united in their security.User-driven governancePolkadot has a sophisticated governance system where all stakeholders have a voice. Network upgrades are coordinated on-chain and enacted autonomously and without forking the network, ensuring that Polkadot’s development remains future-proof and community-driven.Learn more about Polkadot’s technologyDiscover PolkadotPowering the Polkadot networkThe DOT token serves three distinct purposes: governance over the network, staking and bonding.GovernancePolkadot token holders have complete control over the protocol. All privileges, which on other platforms are exclusive to miners will be given to the Relay Chain participants (DOT holders), including managing exceptional events such as protocol upgrades and fixes.StakingToken holders keep the network secure and collect rewards by staking DOT. Polkadot’s advanced staking system is designed for maximum decentralization and fair representation, rewarding good actors and punishing bad actors to ensure network security.BondingNew parachains are added by bonding tokens. Outdated or non-useful parachains are removed by removing bonded tokens. This is a form of proof of stake.Learn more about DOT and stakingDiscover DOTLearn stakingAn open-source protocol built for everyonePolkadot is an open-source project founded by the Web3 Foundation↗.Web3 Foundation has commissioned five teams and over 100 developers to build Polkadot, including:ChainSafeParity TechnologiesPolkadot JSSoramitsuFounded by some of the blockchain industry’s foremost buildersLearn moreFrom the blogDevelopersThe Polkadot Alpha Program: A New Era of Collaborative BuildingThe Polkadot Alpha Program is a new initiative the helps lower entry barriers for teams eager to build in the ecosystem. Polkadot Blockchain AcademyPolkadot Blockchain Academy: Targeted Education for Builders and FoundersPolkadot Blockchain Academy, which celebrates its second birthday later this year, is already meeting the needs of two distinct Web3 groups.EcosystemPolkadot Showcases Industry-Leading Scalability in Positive End to 2023Polkadot’s final quarter of 2023 featured sustained organic growth, with pronounced spikes in transactional data in late December.Want to get involved?Join the communityor learn about how to build on Polkadot.EcosystemCommunityJobsWalletsDappsBrand HubTelemetry↗TreasuryFeaturesTechnologyBlockspaceDOT tokenStakingParachainsSystem parachainsXCMAuctionsOpenGovDevelopmentDocumentationGrants↗Bounties↗Blockchain AcademyBuildSubstrate↗Developer Heroes ProgramAlpha ProgramAboutAbout PolkadotBlogNewsroomRoadmapWhitepaperWiki↗FAQSupport↗ContactNewsletterSubscribe to the newsletter to hear about Polkadot updates and events.Subscribe© 2024Web3 Foundation↗Legal DisclosuresDisclaimerPrivacyManage Cook什么是波卡(Polkadot)?|极简介绍版 - 知乎
什么是波卡(Polkadot)?|极简介绍版 - 知乎切换模式写文章登录/注册什么是波卡(Polkadot)?|极简介绍版wens编译:PolkaWorldPolkadot 是将多个专用区块链连接到一个统一网络中的下一代区块链协议。作为「将互联网垄断的控制权交还给个人」这个广泛愿景的一部分,Polkadot 建立在先前区块链网络的革命性承诺的基础上,同时提供了几个基本优势。这些优势是什么呢?Polkadot 使区块链网络能够:可扩展孤立的区块链只能处理有限的流量。Polkadot 是一个分片多链网络,这意味着它可以并行处理多条链上的多个交易,消除了遗留网络上逐个处理交易的瓶颈。这种并行处理能力显著提高了可扩展性,为更多的采用和未来的增长创造了合适的条件。连接到 Polkadot 的分片链被称为 “平行链”,因为它们在网络上并行运行。定制说到区块链架构,一种模式并不适合所有。所有区块链都会做出权衡,以支持不同的功能和场景。例如,一条链可以优化身份管理,而另一条链可以优化文件存储。在 Polkadot 上,每个区块链都可以具有针对特定场景优化的新设计。这意味着区块链可以提供更好的服务,同时也可以通过省略不必要的代码来提高效率和安全性。基于 Substrate 开发框架,团队可以比以往更快、更高效地开发和定制他们的区块链。跨链协作Polkadot 上的网络和应用程序可以像智能手机上的应用程序一样共享信息和功能,而无需依赖具有可疑数据实践的中心化服务提供商。与以前主要作为独立环境运行的网络不同,Polkadot 提供了互操作性和跨链通信。这为创新的新服务打开了大门,并允许用户在链之间传递信息。例如,提供金融服务的链可以与另一条链通信,后者提供对真实世界数据(称为 Oracle 链)的访问,例如通过现货市场价格喂价给代币股票交易。自治Polkadot 上的社区根据自己的意愿来治理他们的网络,并在整个 Polkadot 网络治理的未来中持有透明的 stake。团队可以根据自己的需要定制和优化区块链的治理,尝试新的想法,或者交换预先构建的模块以加快部署速度。随着时间的推移,区块链治理模式甚至可以更完美,并随着需求和条件的变化进行升级。更容易的升级与所有软件一样,区块链需要通过升级保持相关性并随着时间的推移而改进。然而,升级传统的链需要 “硬分叉”,它创建两个独立的交易历史,可以将一个社区一分为二,通常需要几个月的工作。Polkadot 支持无分叉升级,允许区块链随着更好的技术出现而轻松地发展和适应。综上所述,这些核心功能可能会打开一个新世界,使人们重新掌控自己的数字生活。一些团队已经在为 Polkadot 构建一系列应用程序的有效解决方案,包括金融、游戏、数字身份、物联网、供应链管理、社交网络和云技术。Web3 基金会是负责管理 Polkadot 发展的组织,它为这些团队中的许多人提供了资助,资助 Web3 技术栈的各个层次的项目,从底层基础设施到钱包、平行链、桥和工具等生态系统组件。随着越来越多的团队意识到把项目部署到 Polkadot 上的好处和效率,Polkadot 生态系统日益壮大。Polkadot 独特的设计跟以往的区块链网络相比,为项目提供了更多的创新和灵活的迭代。通过将多个特定场景的链整合到一个可扩展的网络中,Polkadot 使区块链技术能够充分发挥它在现实世界场景中的潜力,产生新的市场,并为未来去中心化的经济体铺平道路。了解更多Polkadot Lightpaper :https://polkadot.network/Polkadot-lightpaper.pdfPolkadot Wiki:https://wiki.polkadot.network/docs/en/learn-introduction风险提示:本文内容均不构成任何形式的投资意见或建议。imToken 对本文所提及的第三方服务和产品不做任何保证和承诺,亦不承担任何责任。数字资产投资有风险,请谨慎评估该等投资风险,咨询相关专业人士后自行作出决定。发布于 2020-06-10 14:19imtoken数字货币区块链(Blockchain)赞同 14添加评论分享喜欢收藏申请
波卡是什么?一篇人人都看得懂的Polkadot科普文 - 知乎
波卡是什么?一篇人人都看得懂的Polkadot科普文 - 知乎切换模式写文章登录/注册波卡是什么?一篇人人都看得懂的Polkadot科普文浪里小兜兜2015年,布鲁诺全职加入以太坊生态,并为众多新手开发者们创建了科普教程、编程课程,还跟踪各类新闻事件。从2018年开始,布鲁诺开始协助某个ETH2.0团队做开发;2019年之后,布鲁诺成为Web3基金会专业的技术科普工作者,致力于推动Web3愿景,以确保任何人在任何地方都能访问到可信互联网。2015年,布鲁诺全职加入以太坊生态,并为众多新手开发者们创建了科普教程、编程课程,还跟踪各类新闻事件。从2018年开始,布鲁诺开始协助某个ETH2.0团队做开发;2019年之后,布鲁诺成为Web3基金会专业的技术科普工作者,致力于推动Web3愿景,以确保任何人在任何地方都能访问到可信互联网。布鲁诺非常关注权力下放、反对审查制度、透明度和问责制,因此他对不可篡改的账本(immutable ledgers)充满激情。他拥有计算机科学和英语语言文学双硕士学位,在条件允许的情况下,布鲁诺有意向涉足虚拟现实。下面这篇文章,是布鲁诺在协助Web3基金会近3年,并在撰写了大量Polkadot科普文之后,对Polkadot的高度概括,这篇文章的写作风格延续了布鲁诺一直以来的风格,即在尽可能专业的情况下,保证让每个人都能看得懂。什么是Polkadot?它与现有区块链有何不同?Polkadot存在的意义到底在哪里?哪些公链与波卡存在竞争关系?这篇文章会以高度概括(a very high level)的方式对这些问题进行解释,让那些只熟悉最基本的区块链术语,却不具备任何专业技术知识的初入者也完全读得懂。1、Polkadot的运作机制波卡有一条基于Substrate创建的主链,被称为中继链(Relay Chain),其它与这条主链链接的区块链被称为平行链(parachains)。与中继链链接的平行链可以有很多类型,可以是Bitcoin/Ethereum/Tezos/Edgeware,他们可以以任何自洽方式产生区块,例如比特币可以以自己的规范产生区块,Ethereum可以以自己的规范产生区块,Tezos可以以自己的规范产生区块,智能合约区块链Edgeware也可以以自己的规则产生区块。平行链从中继链中获得了不可改变性(Finality)——这是一种终结区块(上的交易),确保发生过的交易不会被“打回原形”的特性。作者注:一旦区块链发生分叉,区块上原有的交易就有可能被还原(例如A给B转了10个BTC,且这笔BTC已经被打包确认,一旦区块链发生分叉,这10个BTC有可能再次回到A的账户上,因此在区块链上防止交易被还原就显得十分重要。在波卡网络上,中继链赋予了平行链这样的能力),分叉就是同一区块链不同软件版本之间产生了分歧,其中一组程序(或者节点)朝着一个方向构建区块,另一组程序朝着两一个方向构建区块。在区块链上,分叉很常见,通常情况下分叉链总会自生自灭,但在极端情况下,分叉的长度可能超越原链,直至替代原链成为主链,那么在分叉链上发生的交易将会取代原链上的交易。Polkadot的出现,并不是为了与现有区块链世界的任何主流公链竞争,包括ETH2.0。相反,Polkadot希望“托起”所有的链,以便实现不同区块链之间的跨链通信——目标是为分散的区块链世界建立起统一的生态系统。2、跨链可组合性我们知道,Bitcoin是一条独立的区块链,Ethereum是一条独立的区块链,两者各不相同且独立运行——两条区块链就像两座封闭的围墙花园,他们将自己的“精美”封闭在了两个狭小的空间——锁定的Bitcoin上的价值无法进入Ethereum,因为你不可能在中心化信任缺席的情况下就将自己的比特币转给别人。作者注:有人会问,我为什么非得把BTC转移到Ethereum上?这是因为Ethereum配套的DeFi是一个十分繁荣的生态系统,任何人都可以发行资产,获得贷款,或者将BTC合成成为其他资产,让自己的资产流通起来,而在Bitcoin网络,你什么都做不了,只能眼睁睁看着自己的资产放着不动。“Polkadot是一个跨链通信系统。”在Polkadot上,不同区块链之间可以以去中心化的方式互相通信,允许开发人员开发跨链应用程序,允许一条平行链向另一条平行链发送消息,你完全可以放开想象,这里的消息可以是金融资产、聊天信息、大气监测数据等等,当然也可以是投资者从Bitcoin向Etherum发送的10个比特币。作者注:对于Polkadot跨链技术更加专业的解释,作者专门制作了视频加以解释,请点击“原文链接”加以查看。3、共享安全性中继链本质上就是一条区块链,验证人(Validators)为这条区块链的安全性保驾护航,验证人会运行Polkadot的节点,验证人偶尔会被赋予生成新区块的权力,如果尽职尽责工作出色,他们就会得到奖励。任何人都可以成为验证人,只要他们背后筹码够多,这里所谓的筹码就是波卡中继链的“本国货币”DOT,按照DOT质押数量,前几百名验证人将会被依次选举成为活跃验证人(active validators)。作者注:如果验证人的工作干的一团糟,他们会遭到惩罚,比如当网络需要他们工作时,他们的节点却处于离线状态,此时他们质押的DOT就会被收回,实际上就是被没收了。被选举出来的活跃验证人会被随机分配给各个平行链,并且每隔几个小时,这样的分配就会再次以随机的、不可预测的方式进行一次轮转。每隔6秒,平行链就会向中继链发送一个候选区块。这个候选区块将由中继链上这些时刻处于在线状态的验证人负责核验。如果核验通过,候选区块将会被纳入到中继链的区块中,然后平行链接着产生下一个候选区块。提交完成之后,这些区块就获得了不可改变性,平行链就是这样在中继链的保护下无忧无虑地生长。所有平行链最终都需要以来中继链上的验证人获得最终授权,平行链越多,需要的验证人也越多,整个网络的安全性也就越高。重点提示,如果你想成为验证人,就必须质押DOT代币,当你执行验证人角色时,你的DOT都会被质押在Polkadot网络中。就是用这种方式,中继链与平行链共享安全性,每一条链都成为整个网络抗攻击性的一部分。4、无叉升级和治理一般来说,区块链在升级的时候分叉总是不可避免:有些节点升级了,有些节点没有升级,没有升级的节点就始终停留在分叉链上,直到这些没有升级的链更新之后,网络才算升级完成。更为痛苦的是,这些节点是分布在全球的,而且你没法与这些匿名节点实时通信。而Polkadot通过“链上runtime与链上治理(on-chain governance)”的方式解决了这个难题。链上runtime是指包含生成新块的规则的代码存储在链上。因此,运行区块链的节点、程序只需读取这些信息,它们就可以更新了。那么我们如何更新这个代码呢?链上治理可以让任何DOT持有人发起全民公投,或对公投投票。公投是对区块链逻辑或数据的更改建议。通过治理,社区可以对链上逻辑的变更提出建议并对其进行投票,一旦该逻辑变更投票通过,就会自动更新,无需更新软件,也无需人工干预。作者注:可以在Polkadot wiki上找到关于链上治理的详细信息。布鲁诺非常关注权力下放、反对审查制度、透明度和问责制,因此他对不可篡改的账本(immutable ledgers)充满激情。他拥有计算机科学和英语语言文学双硕士学位,在条件允许的情况下,布鲁诺有意向涉足虚拟现实。下面这篇文章,是布鲁诺在协助Web3基金会近3年,并在撰写了大量Polkadot科普文之后,对Polkadot的高度概括,这篇文章的写作风格延续了布鲁诺一直以来的风格,即在尽可能专业的情况下,保证让每个人都能看得懂。什么是Polkadot?它与现有区块链有何不同?Polkadot存在的意义到底在哪里?哪些公链与波卡存在竞争关系?这篇文章会以高度概括(a very high level)的方式对这些问题进行解释,让那些只熟悉最基本的区块链术语,却不具备任何专业技术知识的初入者也完全读得懂。1、Polkado的运作机制波卡有一条基于Substrate创建的主链,被称为中继链(Relay Chain),其它与这条主链链接的区块链被称为平行链(parachains)。与中继链链接的平行链可以有很多类型,可以是Bitcoin/Ethereum/Tezos/Edgeware,他们可以以任何自洽方式产生区块,例如比特币可以以自己的规范产生区块,Ethereum可以以自己的规范产生区块,Tezos可以以自己的规范产生区块,智能合约区块链Edgeware也可以以自己的规则产生区块。平行链从中继链中获得了不可改变性(Finality)——这是一种终结区块(上的交易),确保发生过的交易不会被“打回原形”的特性。作者注:一旦区块链发生分叉,区块上原有的交易就有可能被还原(例如A给B转了10个BTC,且这笔BTC已经被打包确认,一旦区块链发生分叉,这10个BTC有可能再次回到A的账户上,因此在区块链上防止交易被还原就显得十分重要。在波卡网络上,中继链赋予了平行链这样的能力),分叉就是同一区块链不同软件版本之间产生了分歧,其中一组程序(或者节点)朝着一个方向构建区块,另一组程序朝着两一个方向构建区块。在区块链上,分叉很常见,通常情况下分叉链总会自生自灭,但在极端情况下,分叉的长度可能超越原链,直至替代原链成为主链,那么在分叉链上发生的交易将会取代原链上的交易。Polkadot的出现,并不是为了与现有区块链世界的任何主流公链竞争,包括ETH2.0。相反,Polkadot希望“托起”所有的链,以便实现不同区块链之间的跨链通信——目标是为分散的区块链世界建立起统一的生态系统。2、跨链可组合性我们知道,Bitcoin是一条独立的区块链,Ethereum是一条独立的区块链,两者各不相同且独立运行——两条区块链就像两座封闭的围墙花园,他们将自己的“精美”封闭在了两个狭小的空间——锁定的Bitcoin上的价值无法进入Ethereum,因为你不可能在中心化信任缺席的情况下就将自己的比特币转给别人。作者注:有人会问,我为什么非得把BTC转移到Ethereum上?这是因为Ethereum配套的DeFi是一个十分繁荣的生态系统,任何人都可以发行资产,获得贷款,或者将BTC合成成为其他资产,让自己的资产流通起来,而在Bitcoin网络,你什么都做不了,只能眼睁睁看着自己的资产放着不动。“Polkadot是一个跨链通信系统。”在Polkadot上,不同区块链之间可以以去中心化的方式互相通信,允许开发人员开发跨链应用程序,允许一条平行链向另一条平行链发送消息,你完全可以放开想象,这里的消息可以是金融资产、聊天信息、大气监测数据等等,当然也可以是投资者从Bitcoin向Etherum发送的10个比特币。作者注:对于Polkadot跨链技术更加专业的解释,作者专门制作了视频加以解释,请点击“原文链接”加以查看。3、共享安全性中继链本质上就是一条区块链,验证人(Validators)为这条区块链的安全性保驾护航,验证人会运行Polkadot的节点,验证人偶尔会被赋予生成新区块的权力,如果尽职尽责工作出色,他们就会得到奖励。任何人都可以成为验证人,只要他们背后筹码够多,这里所谓的筹码就是波卡中继链的“本国货币”DOT,按照DOT质押数量,前几百名验证人将会被依次选举成为活跃验证人(active validators)。作者注:如果验证人的工作干的一团糟,他们会遭到惩罚,比如当网络需要他们工作时,他们的节点却处于离线状态,此时他们质押的DOT就会被收回,实际上就是被没收了。被选举出来的活跃验证人会被随机分配给各个平行链,并且每隔几个小时,这样的分配就会再次以随机的、不可预测的方式进行一次轮转。每隔6秒,平行链就会向中继链发送一个候选区块。这个候选区块将由中继链上这些时刻处于在线状态的验证人负责核验。如果核验通过,候选区块将会被纳入到中继链的区块中,然后平行链接着产生下一个候选区块。提交完成之后,这些区块就获得了不可改变性,平行链就是这样在中继链的保护下无忧无虑地生长。所有平行链最终都需要以来中继链上的验证人获得最终授权,平行链越多,需要的验证人也越多,整个网络的安全性也就越高。重点提示,如果你想成为验证人,就必须质押DOT代币,当你执行验证人角色时,你的DOT都会被质押在Polkadot网络中。就是用这种方式,中继链与平行链共享安全性,每一条链都成为整个网络抗攻击性的一部分。4、无叉升级和治理一般来说,区块链在升级的时候分叉总是不可避免:有些节点升级了,有些节点没有升级,没有升级的节点就始终停留在分叉链上,直到这些没有升级的链更新之后,网络才算升级完成。更为痛苦的是,这些节点是分布在全球的,而且你没法与这些匿名节点实时通信。而Polkadot通过“链上runtime与链上治理(on-chain governance)”的方式解决了这个难题。链上runtime是指包含生成新块的规则的代码存储在链上。因此,运行区块链的节点、程序只需读取这些信息,它们就可以更新了。那么我们如何更新这个代码呢?链上治理可以让任何DOT持有人发起全民公投,或对公投投票。公投是对区块链逻辑或数据的更改建议。通过治理,社区可以对链上逻辑的变更提出建议并对其进行投票,一旦该逻辑变更投票通过,就会自动更新,无需更新软件,也无需人工干预。作者注:可以在Polkadot wiki上找到关于链上治理的详细信息。编辑于 2021-12-30 13:35数字货币虚拟币下一个暴富点(书籍)赞同 2添加评论分享喜欢收藏申请
Getting Started · Polkadot Wiki
Getting Started · Polkadot Wiki
Skip to main contentThe Polkadot Blockchain Academy is coming to Asia! Find out more ExploreLearnBuildMaintain KusamaSearchContributeEnglishEnglishHelp us translateExploreGetting StartedWalletsAppsDashboardsCommunity & ContributorsProgrammesMetadata ExplorerLearnBuildMaintainExploreGetting StartedOn this pageGetting StartedWelcome to the Polkadot WikiThe Polkadot Wiki serves as the central source of truth for Polkadot. It is a community-focused
initiative led by Web3 Foundation to keep an up-to-date resource on the best information for
learning, building, and maintaining on Polkadot.The Wiki has three main sections:Learn (for people who want to learn about Polkadot)Build (for people who want to build on Polkadot)Maintain (for people who want to maintain the Polkadot
network).Interact with PolkadotAccountsTransactionsStakingPolkadot OpenGovProxy AccountsAccount IdentityParachainsBridgesBecome an AmbassadorWhat is Polkadot?Polkadot is the first layer-0 (L0) blockchain that provides shared security and secure
interoperability to layer-1 (L1) blockchains. Those L1 blockchain attached to Polkadot are also
called parachains as their transactions are processed in parallel by
Polkadot. For more information about Polkadot see the dedicated page about the state of
Polkadot 1.0 released in mid 2023.Polkadot has an on-chain open governance (also called Polkadot
OpenGov) to orchestrate decisions, including accessing funds from the
treasury.The DOT token gives you the power to participate in Polkadot OpenGov,
staking, and parachains' crowdloans.The level of abstraction and generalization of Polkadot allows to build applications that are
specific to their use cases, and for those applications to communicate securely leveraging each
other value proposition. The trustless cooperation between applications is what makes Polkadot an
ideal ecosystem to build a web3 future.Polkadot: Are You Ready to Start Building?What is Polkadot?What can I do with my DOT?DOT is the native token of the Polkadot Network. DOT can be used for
transaction fees, staking, governance, acquisition of a parachain slot and for enabling several key
functionalities on Polkadot.infoExplore Polkadot with a secure and user-friendly wallets listed on the
Polkadot website.:
the minimum balance required to have an active account on Polkadot Network. If your account
balance drops below the minimum, your account will be reaped. Learn more about
Accounts and the
Existential Deposit requirement.:
the minimum contribution required to join a nomination pool
and earn staking rewards for contributing to the security of the network. Learn more about
nomination pools.:
the minimum contribution required to participate in crowdloans for
parachain slot auctions.Around 20 DOT::
register an on-chain identity:
create a proxy account.:
the minimum stake required to submit your intent to directly nominate validators.:
the minimum amount of DOT required to become an active nominator and earn rewards, i.e. the
minimum active bond. To increase the chance of earning staking rewards, your stake should not be
less than the minimum stake among the active nominators, which is a dynamic threshold. If you have
lesser DOT than the minimum active nomination, please consider contributing to
nomination pools. Learn more about
becoming a nominator.:
you can create your own nomination pool.DOT has utility in Polkadot's democracy. Bonding DOT is
a requirement to create proposals, to endorse them and to vote on them when they become referendums.
Bonding
or 5% of requested funding is a requirement to make a
treasury proposal. DOT can also enable
you to participate in programs like the
Thousand Validators Program.Polkadot GiftsPolkadot Gifts provide an easy way to:Onboard friends or family who are curious about blockchain but haven’t made the leap yet.Share your love of Polkadot and send any amount of DOT.Say ‘thank you’ or send someone tokens when you don’t know their address.Get friends and family set up to participate in crowdloans.Learn more about how you can create and send Polkadot Gifts
here.Why should you use Polkadot?Whether you're a blockchain developer or if you're interested in taking part of
Polkadot's community, Polkadot offers a
platform for everyone. This wiki offers a place for builders and maintainers to utilize
tools and for brand-new learners to dive into educational material.Where to start learning?The
Blockchain Fundamentals MOOC course
is a great introduction to start familiarizing yourself with blockchain concepts such as
cryptography and networks, and how these play into things like decentralization and cryptocurrency.This is recommended for users with backgrounds of all levels, and the course is free!Brand-New Polkadot learnersPolkadot's original white paper is a technical
summary around one possible direction of implementing the Polkadot network. This paper uses
rationale and technical details to support why this direction is beneficial. This original white
paper also explains how Polkadot's core components work together to build this decentralized
network.Polkadot's overview paper
is an updated version of the white paper that describes the protocol in more technical terms. We
would recommend reading this overview paper if you are interested in digging more into the
protocol itself.Polkadot's light paper is a visual, easy to
read, and less technical introduction into its blockchain technology. This paper dives into the
components of Polkadot but is understandable for both a non-technical and technical reader.Polkadot for Beginners: A non-technical guide to decentralization, blockchains & Polkadot -
a book funded by the Polkadot TreasuryPolkadot's specification is a GitHub repository that holds
the latest Polkadot Host protocol specification, Polkadot's specification tests of the many
components of the network, and the Polkadot Runtime specification. This repo holds algorithms and
explores how various processes function in the Polkadot network. The Polkadot specification takes
Polkadot's ideas and concepts from the light and the white paper but focuses on the technical
specs of the technology.Watching the Technical Explainer Videos:
These are great introductory videos that explain and demonstrate how to use Polkadot and its
User Interface.Reading
What is Polkadot? A Brief Introduction
on Medium. There are also other great articles to read on
Polkadot's Medium or
Web3 Foundation's Medium.Polkadot Study is a platform where developers can write tutorials for
the Polkadot ecosystem. Part of the development of the platform was funded by the
Kusama treasury. The platform also hosts
Substrate in Bits, a technical content
series aimed at solving the pain points of developers building with
Substrate and Rust.For brand-new learners of Kusama, Polkadot's canary cousin network: To learn more about how to build
and maintain on the Kusama network, please head over to our
Kusama Guide.ResourcesPolkadot Crowdcast - List of all Crowdcast webinars that the
Web3 Foundation has done.Polkadot Explorer - Browser for the Polkadot network;
can be used for Polkadot, Kusama, or any Substrate-based chain.Polkascan - Real-time multi-chain data for Polkadot Relay Chain and
Parity Substrate chains.Subscan.io - Explorer for Substrate based chains.Polkadot Overview - Dr. Gavin Wood presents an overview of
Polkadot. (Video)Polkadot Overview -
Dr. Jutta Steiner presents Polkadot. (Video)Polkadot & Substrate Overview -
Dr. Gavin Wood presents Substrate (blockchain in-a-box + VM) and Polkadot, and builds a blockchain
on-stage in 30 minutes using Substrate. (Video)Community / Ecosystem - List of community rooms and channels to talk to others
about Polkadot.Sample Applications - Sample applications that are built on or currently being built for
Polkadot.Contributing Guide - Rules for contributing to the wiki.Polkadot Knowledge Base - Troubleshooting resources for
specific errors and problems.Edit this pageLast updated on Jan 16, 2024 by FilippoPreviousExploreNextWalletsInteract with PolkadotWhat is Polkadot?What can I do with my DOT?Polkadot GiftsWhy should you use Polkadot?Where to start learning?Brand-New Polkadot learnersResources© 2024 Web3 FoundationLegal DisclosuresDisclaimerPrivacy
About Polkadot | Polkadot Founders | Polkadot
t Polkadot | Polkadot Founders | PolkadotSkip to main contentEcosystemFeaturesDevelopmentAboutUse PolkadotAbout Polkadot, a platform for Web3 The Polkadot missionWe envision a Web where our identity and our data is our own - safely secured from any central authority.Polkadot will enable a completely decentralized web where users are in control.Polkadot is built to connect private and consortium chains, public and permissionless networks, oracles, and future technologies that are yet to be created. Polkadot facilitates an internet where independent blockchains can exchange information and transactions in a trustless way via the Polkadot relay chain.Polkadot makes it easier than ever to create and connect decentralized applications, services, and institutions. By empowering innovators to build better solutions, we seek to free society from its reliance on a broken web where its large institutions can’t violate our trust.Learn about the technologyWho’s building Polkadot?Polkadot is the flagship project by Web3 Foundation↗, a Swiss Foundation founded to facilitate a fully functional and user-friendly decentralized web.The Web3 Foundation is partnering with best-in-class entities to build Polkadot and foster development of the services and applications that will run on it.Researchers from Inria Paris and ETH Zurich, developers from Parity Technologies, and capital partners from crypto-funds such as Polychain Capital are all working together to develop a superlative realization of Web3, with Polkadot at its core.Web3 Foundation is providing grants↗ for development of the ecosystem.ChainSafeParity TechnologiesPolkadot JSSoramitsuFounded by some of the blockchain industry’s foremost buildersRobert HabermeierFounderRobert Habermeier is a Thiel Fellow with a research and development background in blockchains, distributed systems, and cryptography. A longtime member of the Rust community, he has focused on leveraging the language’s features to build highly parallel and performant solutions.Gavin WoodFounderGavin began originating blockchain technology as co-founder and CTO of Ethereum. He invented fundamental components of the blockchain industry, including Solidity, Proof-of-Authority consensus, and Whisper. At Parity, Gavin currently leads innovation on Substrate and Polkadot. He coined the term Web 3.0 in 2014 and serves as President of Web3 Foundation.Peter CzabanFounderPeter is the Technology Director of the Web3 Foundation, where he works on supporting the development of the next generation of distributed technologies. He obtained his Masters of Engineering degree at the University of Oxford, reading Engineering Science where he focused on Bayesian Machine Learning. He has worked across defense, finance and data analytics industries, working on mesh networks, distributed knowledge bases, quantitative pricing models, machine learning and business development.In the pressGet in touchFor general chatJoin the Watercooler↗ or Discord↗For press inquiriesPlease fill out this formFor all other inquiriessupport.polkadot.networkStay informed of updates and eventsSubscribe to the newsletter or read the blogJoin the teams building PolkadotSee jobs at Web3 Foundation↗ or at Parity Technologies↗Related articlesDevelopersThe Polkadot Alpha Program: A New Era of Collaborative BuildingThe Polkadot Alpha Program is a new initiative the helps lower entry barriers for teams eager to build in the ecosystem. Polkadot Blockchain AcademyPolkadot Blockchain Academy: Targeted Education for Builders and FoundersPolkadot Blockchain Academy, which celebrates its second birthday later this year, is already meeting the needs of two distinct Web3 groups.EcosystemPolkadot Showcases Industry-Leading Scalability in Positive End to 2023Polkadot’s final quarter of 2023 featured sustained organic growth, with pronounced spikes in transactional data in late December.Want to get involved?Join the communityEcosystemCommunityJobsWalletsDappsBrand HubTelemetry↗TreasuryFeaturesTechnologyBlockspaceDOT tokenStakingParachainsSystem parachainsXCMAuctionsOpenGovDevelopmentDocumentationGrants↗Bounties↗Blockchain AcademyBuildSubstrate↗Developer Heroes ProgramAlpha ProgramAboutAbout PolkadotBlogNewsroomRoadmapWhitepaperWiki↗FAQSupport↗ContactNewsletterSubscribe to the newsletter to hear about Polkadot updates and events.Subscribe© 2024Web3 Foundation↗Legal DisclosuresDisclaimerPrivacyManage CookInteroperable, Scalable, Public Blockchain | Polkadot
roperable, Scalable, Public Blockchain | PolkadotSkip to main contentEcosystemFeaturesDevelopmentAboutUse PolkadotA scalable, interoperable & secure network protocol for the next webGithubLatest version & historyDocumentationRead the documentationElement chatGet your questions answeredAny type of data across any type of blockchainPolkadot is a network protocol that allows arbitrary data — not just tokens — to be transferred across blockchains.This means Polkadot is a true multi-chain application environment where things like cross-chain registries and cross-chain computation are possible.Polkadot can transfer this data across public, open, permissionless blockchains as well as private, permissioned blockchains.This makes it possible to build applications that get permissioned data from a private blockchain and use it on a public blockchain. For instance, a school’s private, permissioned academic records chain could send a proof to a degree-verification smart contract on a public chain.Network GlossaryPolkadot unites a network of heterogeneous blockchains called parachains and parathreads. These chains connect to and are secured by the Polkadot Relay Chain. They can also connect with external networks via bridges.Connecting the dotsRelay ChainThe heart of Polkadot, responsible for the network’s shared security, consensus and cross-chain interoperability.ParachainsSovereign blockchains that can have their own tokens and optimize their functionality for specific use cases.ParathreadsSimilar to parachains but with a pay-as-you-go model. More economical for blockchains that don’t need continuous connectivity to the network.BridgesAllow parachains and parathreads to connect and communicate with external networks like Ethereum and Bitcoin.Consensus RolesNominatorsSecure the Relay Chain by selecting trustworthy validators and staking DOT.ValidatorsSecure the Relay Chain by staking DOT, validating proofs from collators and participating in consensus with other validators.CollatorsMaintain shards by collecting shard transactions from users and producing proofs for validator.Governance RolesCouncil MembersElected to represent passive stakeholders in two primary governance roles: proposing referenda and vetoing dangerous or malicious referenda.Technical CommitteeComposed of teams actively building Polkadot. Can propose emergency referenda, together with the council, for fast-tracked voting and implementation.Built with the best technologyPolkadot’s relay chain is built with Substrate↗, a blockchain-building framework that is the distillation of Parity Technologies’ learnings building Ethereum, Bitcoin, and enterprise blockchains.Polkadot’s state machine is compiled to WebAssembly (Wasm), a super performant virtual environment. Wasm is developed by major companies, including Google, Apple, Microsoft, and Mozilla, that have created a large ecosystem of support for the standard.Polkadot’s networking uses libp2p, a flexible cross-platform network framework for peer-to-peer applications. Positioned to be the standard for future decentralized applications, libp2p handles the peer discovery and communication in the Polkadot ecosystem.The Polkadot runtime environment is being coded in Rust, C++, and Golang, making Polkadot accessible to a wide range of developers.Parachains: parallel transaction processingParachains are specialized blockchains that connect to Polkadot. They will have characteristics specialized for their use cases and the ability to control their own governance.Interactions on parachains are processed in parallel, enabling highly scalable systems.Transactions can be spread out across the chains, allowing many more transactions to be processed in the same period of time.Current method: Single transactionPolkadot method: Multi parallelized transactionsLearn more about parachains Groundbreaking TechnologyPolkadot is solving many of the problems that have held back blockchain technology so far — all in one place, without compromising.A better security modelIn both Proof-of-Work and Proof-of-Stake systems, blockchains compete with each other over resources to secure their networks, and blockchains are easily attacked until they develop a significant community to support their network.Polkadot takes a different approach by letting blockchains pool their security, which means that the blockchains’ security is aggregated and applied to all.By connecting to Polkadot, blockchain developers can secure their blockchain from day one.XCM: a secure cross-chain communication standardFor blockchains to work together and form the basis of Web3, they need a common language for communication. Polkadot sets the standard with XCM, a cross-consensus communication format and programming language that allows blockchains of different designs to securely exchange arbitrary data, code, and value. In this way, a new wave of rich cross-chain applications and services can be built that tap into the features and benefits of different chains.Learn more about XCMNext-generation Proof-of StakePolkadot pioneers an advanced, highly-efficient form of proof-of-stake called Nominated Proof of Stake (NPoS). NPoS enables greater decentralization and fair representation by evenly distributing stake, allowing all DOT holders to participate in staking, and balancing the interests of smaller and larger DOT holders.DOT holders can help secure the network and collect DOT rewards by staking as a nominator or a validator. With Polkadot’s native nomination-pools, anyone with as little as 1 DOT can stake and collect rewards.Learn more about Staking on PolkadotA green, energy-efficient protocolIt’s hard to get behind blockchain as the next technological revolution when it wastes so much energy. Polkadot is designed to power the web’s next big wave of innovation, without the high energy consumption of conventional proof-of-work blockchains.Polkadot’s Nominated Proof-of-stake (NPoS) model uses a small fraction of the energy consumed by conventional blockchains, and has the lowest carbon footprint↗ among proof-of-stake protocols analyzed in recent research↗.Transparent on-chain governanceUpdates to the protocol happen fork-free via transparent on-chain voting, so protocol development never stalls due to the lack of a clear process. The relay chain uses a sophisticated governance mechanism that is designed to establish a transparent, accountable and binding process for resolving disputes and upgrading the network.DOT tokens are used to participate in governance decisions, including tabling proposals, voting, and bonding.Parachains are free to design their own governance mechanisms, allowing for maximum freedom without affecting other parachains.Learn more about Polkadot’s governance↗On-chain treasury for decentralized project fundingPolkadot’s governance system also features an on-chain treasury that the community can use to fund projects that benefit the network. Any DOT holder can submit project funding and bounty proposals, and can nominate community members for tips based on work completed.With tens of millions of DOT available for spending, the treasury represents a powerful resource for fueling Web3 innovation.Learn more about the Polkadot treasuryGRANDPA: a trustworthy consensus algorithmPolkadot uses its original GRANDPA (GHOST-based Recursive Ancestor Deriving Prefix Agreement) consensus for a more secure and resilient network. Under good network conditions, GRANDPA can finalize blocks nearly instantly. Under bad network conditions, like a network partition, GRANDPA can finalize large quantities of blocks (theoretically millions) at once when the partitions resolve.Learn more about GRANDPA↗RoadmapThe launch of Polkadot v1 began in May 2020 with the Relay Chain genesis block and finished in December 2021 with the launch of parachains. Several post-launch developments and optimizations are expected for the coming year and beyond.See Launch RoadmapWhat are teams building on Polkadot? Just a few examples:Smart contract chains with WebAssembly smart contracts (Astar↗, Moonbeam↗)Data curation networks that connect all file storage chains into curated data setsOracle chains that make off-chain data available to all contracts on the Polkadot network (Chainlink↗)Identity chains that link accounts to a persistent identity and enable access to other parachains through fewer accounts (Kilt↗)Financial chains that allow you to hold all your assets in one portfolio, including via bridges to Bitcoin, Ethereum, Bitcoin Cash, Litecoin and ZCash (Acala↗, Parallel Finance↗)Internet of Things chains that set IoT standards for machine-to-machine communication (Robonomics↗)Zero Knowledge privacy chains, or bridges to existing ZK-snarks chainsFile storage chains that incentivize storing data on-chainBridge to Ethereum, allowing Ethereum smart contracts to interact with the Polkadot networkWant to get started?Build on PolkadotEcosystemCommunityJobsWalletsDappsBrand HubTelemetry↗TreasuryFeaturesTechnologyBlockspaceDOT tokenStakingParachainsSystem parachainsXCMAuctionsOpenGovDevelopmentDocumentationGrants↗Bounties↗Blockchain AcademyBuildSubstrate↗Developer Heroes ProgramAlpha ProgramAboutAbout PolkadotBlogNewsroomRoadmapWhitepaperWiki↗FAQSupport↗ContactNewsletterSubscribe to the newsletter to hear about Polkadot updates and events.Subscribe© 2024Web3 Foundation↗Legal DisclosuresDisclaimerPrivacyManage CookLedger 学院:详细了解什么是波卡 Polkadot?
Ledger 学院:详细了解什么是波卡 Polkadot?
新:使用 Ledger Recover 轻松恢复钱包,此服务由 Coincover 提供
使用入门
购买 Ledger
学而赚取
搜索
术语
主题
Blockchain
NFT(非同质化代币)
加密货币
安全性
教程
硬件钱包
系列
ON THE LEDGER
区块学校
确保加密货币安全
阅览室
开始学习
简体中文
English
Deutsch
Русский
Español
日本語
한국어
Türkçe
区块学校
主题
Blockchain
NFT(非同质化代币)
加密货币
安全性
教程
硬件钱包
系列
ON THE LEDGER
区块学校
确保加密货币安全
阅览室
购买 Ledger
学而赚取
搜索
术语
简体中文
English
Deutsch
Русский
Español
日本語
한국어
Türkçe
Ledger 学院
加密货币
...
什么是波卡(Polkadot)?
什么是波卡(Polkadot)?
作者 Kirsty Moreland
2020年11月13日
| 更新于 2022年9月16日
阅读
4 分钟
Medium
分享
要点总结:— 波卡是一种可在单个网络中支持多种链的协议。— 波卡可以运行三种类型的区块链:中继链、平行链和转接桥。— 波卡的 NPoS 系统为验证者(在中继链上产生区块的实际节点)和提名者(通过权益质押提名验证者作为自己的代表,但不运行节点)提供奖励系统。
想了解“什么是波卡 Polkadot”,但不知该从何开始? 让我们深入了解加密货币的最新项目。
波卡(Polkadot)是为了在单个网络中支持多种链的下一代区块链协议。 该协议为多链协议,旨在将控制权交还给个人,除了具备现有区块链技术的革命性前景外,还具备一些额外优势。
例如,在当前区块链环境中,几乎毫无通信能力的孤立区块链数以百计,它的目标就是攻克这一难题。 在各区块链之间应当能够安全互通的理念基础上,波卡问世了。
作为最新进入区块链领域的项目,Polkadot(波卡)寻求通过以太坊和 Cosmos 等网络之外的其他解决方案来发展生态系统。 但波卡的目的是与其他区块链网络共存并实现互操作,而不是与之竞争。
它是如何运作的?
波卡可以运行三种类型的区块链。 首先是平行链,这种独立的专门区块链可以连接到波卡。 其次是转接桥,负责将波卡连接到其他网络,例如比特币和以太坊。 最后是中继链,它可将所有平行链和转接桥纳入一个共享的可互操作生态系统中。
波卡中继链是该网络的核心, 负责保护整个网络,为平行交易处理提供基础,确保波卡具有高度可扩张性。 它使用名为提名权益证明 (NPOS) 的新型权益证明,旨在实现网络控制权的去中心化,以期提高安全性、公平性和运作效率。
平行链是连接到中继链的独立区块链,为波卡网络提供链特有的功能。 每个平行链都可以经过专门设计,并由各自的校对者进行维护。 校对者负责将平行链交易收集到平行链候选区块中,然后交给验证者,由验证者保护并最终确定中继链上的交易。
另一个概念是平行线程,它们是通过“按需付费”模式(而非长期租赁平行链插槽)连接到波卡的平行链。
另外,转接桥也是一种专门平行链,可以连接到比特币和以太坊等其他区块链。 它们的作用是在波卡和外部网络之间转移代币和功能。
波卡网络中的几类参与者保证了区块链的正常运行。 这些参与者包括:
验证者:权益质押 DOT 代币、验证校对者提供的证明、在波卡中继链上产生区块、参与并达成共识提名者:通过权益质押 DOT 代币和选择可信赖的验证者来保护中继链校对者:通过创造区块来扩展平行链,并为验证者提供有效性证明。渔夫,监控网络并举报恶意活动。 目前,验证者充当该网络中渔夫的角色。
波卡的奖励系统
波卡的 NPoS 系统为验证者和提名者提供了鼓励良好行为的奖励系统,如果验证者行为不当,就削减其质押的部分代币,如果验证者积极诚信地参与,就会得到奖励。 如果超过 10% 的验证者离线,并且无法通过网络与其取得联系,这些验证者将受到削减部分权益质押的惩罚。 这样的机制可确保验证者始终在线,随时为网络提供安全保护和数据。
提名者可通过投票提名他们认为会保持在线状态且能保障网络安全的验证者来获得 NPoS 的奖励。 这些提名者通过权益质押自己的代币来支持验证者,并根据验证者的权益质押按比例获得奖励。 因此,验证者还可以通过收取固定费用来填补验证者的运营成本(如硬件和软件维护成本),确保验证者保持在线状态。
代币持有者最多可以提名 16 名验证者,如果入选活跃验证者小组,验证者还可分得奖励。 此外,验证者插槽的奖励数额等同于插槽中权益质押数额最少的验证者的数额。
提名过程可在钱包内一键完成。 奖励必须通过 Polkadot Explorer 或 Ledger Live 手动领取。 只要有人向验证者申请某个周期的奖励,该周期的所有提名者都将获得奖励。 发放奖励的人甚至不一定是提名者之一。 权益质押奖励领取期限为 84 天。
由此可见,提名者是该网络的重要组成部分之一。 他们在经济鼓励下间接参与共识协议,密切关注不断变化的候选人群体,确保只有最有能力和最值得信赖的人才能被选为验证者。
知识就是力量 – 所以要不断学习! 如果您喜欢学习加密货币和区块链的知识,请观看我们的“区块学校”视频。 区块链真实使用案例。
Kirsty Moreland
Ledger 学院编辑。区块链技术及其相关用例的作家和研究员。爱好老式音乐、自行车骑行以及探索问题寻求答案。
分享
下一个: What is Cosmos?
相关资源
畅览在线世界,密钥离线保管。 Ledger 如何保护您的加密货币。
阅读
4 分钟
Medium
什么是硬件钱包?
阅读
6 分钟
Medium
硬件钱包对比冷钱包:有什么不同?
阅读
4 分钟
初阶
数字工作:在元宇宙中工作
阅读
7 分钟
初阶
什么是区块链卷叠?
阅读
6 分钟
专家
DeSci:Web3 技术支持的现代科学
阅读
5 分钟
Medium
NFT 互换订单诈骗:如何避免
阅读
5 分钟
专家
加密货币如何被盗以及如何避免被盗
阅读
5 分钟
初阶
智能合约函数 – 如何识别骗局
阅读
6 分钟
初阶
联系我们
可以在我们的博客查看公告。 媒体联系: [email protected]
订阅我们的 简报
在收件箱中直接查看支持的新币种、博客更新以及专属优惠
输入您的电子邮件地址
注册订阅新闻简报
您的电子邮件地址将仅用于向您发送我们的简报,以及更新和优惠信息。您可通过简报中的链接随时取消订阅。
详细了解我们如何管理您的数据和您的权利。
简体中文
English
Deutsch
Русский
Español
日本語
한국어
Türkçe
版权所有 © Ledger SAS。 保留所有权利。 Ledger、Ledger Stax、Ledger Nano S、Ledger Vault、Bolos 是 Ledger SAS 拥有的商标。
1 rue du Mail, 75002 Paris, France
付款方式
产品Ledger Stax
Ledger Nano X
Ledger Nano S Plus
比较我们的设备
捆绑销售
配件
所有产品
下载
加密资产比特币钱包
以太坊钱包
卡尔达诺钱包
瑞波币钱包
门罗币钱包
泰达币钱包
查看所有资产
加密服务加密货币价格
买入加密货币
权益质押
互换加密货币
企业Ledger 企业解决方案
对于初创公司来自 Ledger Cathay Capital 的资金
开发者开发者门户
使用入门开始使用 Ledger 设备
兼容的钱包和服务
如何购买比特币
比特币购买指南
比特币硬件钱包
其他链接支持
赏金计划
转销商
Ledger 媒体资料包
联署营销
状态
合作伙伴
职场加入我们
全部职位
简介我们的愿景
Ledger 学院
公司
人员
多样性
博客
法律销售条款与条件
网站使用条款
Ledger Live 使用条款
隐私政策
Cookie 政策
Ledger 保修
免责声明
其他
The hub for those interested in learning, building, or running a node on Polkadot. · Polkadot Wiki
The hub for those interested in learning, building, or running a node on Polkadot. · Polkadot Wiki
Skip to main contentThe Polkadot Blockchain Academy is coming to Asia! Find out more ExploreLearnBuildMaintain KusamaSearchContributeEnglishEnglishHelp us translate ExploreExplore Wallets, Applications and Programmes within the Polkadot Ecosystem. LearnLearn about Polkadot and how it provides Shared Security and Secure Interoperability to its Parachains. BuildMost up-to-date Information on the Status of the Development Tools in the Polkadot Ecosystem. MaintainInformation and Guides on how to Deploy a Node and Run the Network.Learn about Polkadot’s canary network KusamaKusama is Polkadot’s “canary network”, a scalable, multi-chain network for radical innovation and early stage Polkadot deployments. For developers, Kusama is a proving ground for all things Polkadot I.e runtime upgrades, on-chain governance, parachains, parathreads, etc.Discover KusamalanguageHelp improve this wikiThis wiki was started by and is maintained by Web3 Foundation. It is an open-source-ish project and aims to be the most extensive resource of knowledge on Polkadot and the Polkadot ecosystem.ContributeHelp Translate© 2024 Web3 FoundationLegal DisclosuresDisclaimerPrivacy
波卡白皮书 Polkadot:畅想一种异构的多链架构 | 登链社区 | 区块链技术社区
波卡白皮书 Polkadot:畅想一种异构的多链架构 | 登链社区 | 区块链技术社区
文章
问答
讲堂
专栏
集市
更多
提问
发表文章
活动
文档
招聘
发现
Toggle navigation
首页 (current)
文章
问答
讲堂
专栏
活动
招聘
文档
集市
搜索
登录/注册
波卡白皮书 Polkadot:畅想一种异构的多链架构
GAVIN & 岳利鹏
更新于 2019-05-17 15:03
阅读 14266
转载岳利鹏翻译的波卡白皮书 - Polkadot:畅想一种异构的多链架构,本文针对原译文笔误略有修改,同时原译文中的“钓鱼人” 改用了更好理解的 “渔夫” 。
转载岳利鹏翻译的波卡白皮书 - Polkadot:畅想一种异构的多链架构,本文针对原译文笔误略有修改,同时原译文中的“钓鱼人” 改用了更好理解的 “渔夫” 。
波卡Polkadot:畅想一种异构的多链架构 [原文Paper 草案 1](https://polkadot.network/PolkaDotPaper.pdf)
作者:Gavin Wood 博士 以太坊&Parity 创始人 GAVIN@PARITY.IO
译者:岳利鹏 lipeng@chainx.org
摘要:现有的区块链架构都存在诸多问题,不仅仅是从实用性角度所说的扩展性(extensibilty)和伸缩性(scalability)的问题。我们认为,问题源于把共识架构中两个
很重要的部分:一致性(canonicality)和有效性(validity)绑定得太紧密了。这篇文章介绍了一种异构的多链架构,能从本质上把两者拆开。
为了分离这两者,且能保持最小化的绝对安全性(security)和传输性(transport)等基本功能,我们将介绍一种原生的支持内核可扩展(core extensibilty)的可行性方法。对于可伸缩性(scalability)的问题,我们通过对这两个问题分而治之的思路解决,通过非信任节点的激励机制,弱化他们的内生绑定关系。
本架构的异构本质,支持众多高度差异化的共识系统在非信任(trustless)、完全去中心化的联邦内交互操作,允许去信任(trust-free)地相互访问各区块链。
我们提出一种方式,支持向后兼容一个或多个现有的网络,比如以太坊等。我们相信这个系统能够提供一种有用的底层组件,能够实用性地支持全球商业级别的可伸缩性(scalability)和隐私性(privacy)。
## 1. 前言
这篇论文的意图只是一个技术版本的概要,旨在用一些原则来描述将要开发的这个区块链示例,解释这个可能方向的合理性。它罗列了诸多区块链技术方面的具体改善措施,以及在此开发阶段所能够提供的尽可能多的细节。
它并不是要写成一个形式化证明的说明书。它并不完整,也不是最终版本。它并不是为了覆盖框架非核心的模块,例如 API、依赖、语言和用法等。这只是概念性实验,都很可能会修改提到的参数。为了响应社区的意见和评论,会新增、重定义、删除各组件。通过实验性的证据和原型,给出关于什么会有效、什么不会的信息,也很可能修正本论文中大部分内容。
这篇论文包含了一个关于协议和一些想法的核心描述,可能会被用来解决多个方面的问题。它将是能够用来在概念验证阶段开展一系列工作的核心描述。一个最终的“1.0 版本”会基于这个协议,再添加一些变得可证明而且决定包含到项目中来的想法。
起草历史:
* 2016 年 10 月 09 日:0.1.0-proof1
* 2016 年 10 月 20 日:0.1.0-proof2
* 2016 年 11 月 01 日:0.1.0-proof3
* 2016 年 11 月 10 日:0.1.0
## 2 介绍
区块链已经承诺了它的伟大意义,能够应用于包括物联网(IOT)、金融、治理、身份管理、去中心化互联网和资产追踪等多个领域。然而抛开这些技术承诺和大话,我们还没有看到现有技术下,出现重大的关于现实世界的应用部署。我们相信这是因为现有技术的 5 个关键缺陷:
**伸缩性(Scalability)**:全球范围内花费了多少计算、带宽和存储的资源,来处理单个交易?峰值情况下能处理多少交易?
**隔离性(Isolatability)**:多参与方对于应用的差异化需求,能否在同一个框架下接近最优程度地满足?
**开发性(Developability)**:工具的工作效果有多好?APIs 是否已满足开发者的需求?教程资料是否可用?是否集成权力?
**治理性(Governance)**:网络是否保留了能够随着时间进化和适应的灵活性?制定决策能否高度地包容、合理和透明,来提供去中心化系统的高效领导力。
**应用性(Applicability)**:技术是否真的解决了用户的刚性需求?是否需要其他的中间件来嫁接真实的应用?
当前的工作,我们主要面向前两个问题:伸缩性和隔离性。也就是说,我们相信 Polkadot 架构可以在这两个方面,提供有意义的改进。
当前,例如 Parity 以太坊客户端这样的高性能区块链实现,已经可以在消费级高速硬件上每秒处理超过 3000 笔的交易。然而现实世界的区块链网络却限制在 30 笔交易每秒的情况下。这种限制主要是源于目前同步(synchronous)的共识机制,需要充分的计算缓冲时间来安全地处理,也就加重了其必须对于慢速硬件的支持。这归咎于其底层的共识架构:状态转换机,或者这种让所有参与方校对和执行交易的方式,在本质上将其逻辑绑定在了共识一致性(canonicalisation)的设计上,或者需要让所有参与方都同意所有的可能性、有效性和历史。
这种说法即适用于类似比特币和以太坊这样的工作量证明(POW)系统,也适用于NXT 和比特股这样的权益证明(POS)系统,他们都本质上受制于同一个障碍,但这些共识算法却是个能让区块链成功的简单策略。然而,在一个协议里紧密捆绑这两个结构,我们也就捆绑了多个不同风险偏好、不同伸缩性需求、不同隐私需求的角色和应用。一种特征满足不了所有人的需求。因为这种场景,产生了很多次的广泛呼吁,但网络只能倾向于更保守,服务于少数人,最终导致在创新能力、性能和适应性方面的失败,非常戏剧化。
有一些系统例如公证通(Factom),整个地去除了状态转换机。然而大多数应用场景都需要依赖一个共享的状态机,来支持状态转换的功能。去除它只是隐藏了问题,却没有给出真正替代性的解决方案。
现在看起来清楚了,因此一个合理的方向是:像路由对于可伸缩去中心化计算平台那样,解耦共识组件和状态转换组件。而且不出意外的话,这也是 Polkadot 解决伸缩性问题的策略。
### 2.1 协议、实现、网络
和比特币、以太坊一样,Polkadot 希望一开始的时候只是个网络协议,并且是运行这一协议的主要公有网络(目前假设)。Polkadot 倾向于是个免费和开放的项目,协议在一个知识共享的许可证上制定,代码托管在 FLOSS 许可证下。这个项目以一种开放的状态开发,接收各方面有用的捐助。一个微意见提交系统(RFCs),但不像 Python 改进议程那样,会提供一种公众协作参与协议修改和升级的方式。
我们对 Polkadot 协议的初始实现,将称为 Parity Polkadot Platform,会包含协议的完整实现和 API 接口。像其他 Parity 的区块链实现一样,PPP 会设计成通用目的的区块链技术栈,并不限定于公有网络、私有网络或联盟网络。目前为止的开发已经被包括英国政府在内的几方资助。
但是,这篇论文还是在公有网络的场景下。我们在公有网络下预见的功能,是一个完整设想(比如私有或联盟网)的子集。另外在这个场景下,可以清晰地描述和讨论 Polkadot 的所有方面。这也是说读者需要知道,在非公有(有权限的)场景下,一些特定的机制(比如和其他公有网络的交互)并不直接和 Polkadot 相关。
### 2.2 前人工作
从状态转换中解耦底层的共识,已经私下讨论了两年,在以太坊的最早期的时候 Max Kaye 就提议过。
一个更复杂的可伸缩方案叫做 **Chain fibers**,这要回溯到 2014 年 6 月,在那年底也发表了。它创造了一个关于单个中继链(relay-chain)和多个同构链,可以透明地跨链执行的先例。退相干性(Decoherence)通过交易延迟(latency)来实现,这就使需要更长时间,来处理需要协调系统多个部分的交易。Polkadot 借鉴了很多它的架构以及随后跟很多人的讨论,虽然跟它的设计和规定也很不一样。
然而目前并没有运行在生产环境下的系统可以和 Polkadot 相比,有的也只是提出了些相关性功能,很少有本质层面的细节。这些提议可以归纳为:丢弃或减少状态机全局相关性的系统、试图通过同构分片提供全局相关性的单例状态机系统、目标仅是异构性(heterogeneity)的系统。
#### 2.2.1 没有全局状态的系统
公证通(Factom)演示了个没有有效性的一致性系统,能够高效地记载数据。由于没有全局状态和其带来扩展性问题,它可以被看做是一个可伸缩的方案。然而前面也提到了,严格上来说它只解决了很少的问题。
Tangle 是个关于共识系统的概念性尝试。不把交易排序再打包到区块中,而是通过串联的共识得出一个全局的一致性状态改变排序,它在很大程度上抛弃了高度结构化的排序想法,而是推出一个有向无环图,后续的有依赖的交易通过明确的指向,来帮助前面的交易达成一致。对于任意的状态改变,这个依赖图就会很快地变得无法处理,然而对于更简单的 UTXO 模型,立即就变得合理了。因为系统总是松散地连贯,而且交易通常是相互独立的,大规模的全局并发变得非常自然。使用 UTXO 模型确实可以让 Tangle 定位成价值转移的货币系统,而并没有其他的更多通用和可扩展的功能。因为没有了全局依赖性,而和其他系统的交互又需要确定性地知道其状态,这种方法就变得不切实际了。
#### 2.2.2 异构链系统
侧链是个支持比特币主链和附属链之间去信任交互的提案。但并没有任何和侧链进行富(rich)交互的具体规定:交互被限定在允许和侧链之间相互托管对方的资产,也就是行话所说的双向锚定(two-way peg)。最终也是为了做个框架,通过锚定比特币链和其他链,允许在比特币协议之外进行外部交易,为比特币添加附属的外围功能。从这方面讲,侧链系统更多着眼于可扩展性而不是可伸缩性。
根本上讲,侧链确实没有关于有效性的条款,从一条链(比如比特币)的代币转到另一条链上,安全性只是寄希望于侧链能否激励矿工来一致性地验证交易。比特币网络的安全性无法简单地在其他链上起作用。进而一个确保比特币矿工联合挖矿(复制他们的一致性算力到侧链上),并且同时验证侧链交易的协议也被提出来了。
[Cosmos](https://learnblockchain.cn/2019/05/21/what-is-cosmos/) 是个延续侧链思路提出来的多链系统,替换中本聪的 PoW 共识算法为 Jae Know 的 Tendermint 共识算法。本质上,它包含多个使用独立 Tendermint 实例的区块链(在空间 zone 中运行),和一个使用去信任通信的中心(hub)链。跨链通信仅限于转移数字资产(也就是代币),而不是任意信息,然而这种跨链通信是可以返回数据和路径的,比如给发送人通知转账的状态。
和侧链一样,空间链上验证人的经济激励问题也没有解决。一般的假设是每个空间链会各自持有通胀增发的支付代币。设计仍然还比较早期,现阶段的也缺乏在全局有效性上建立可伸缩一致性的经济手段细节。然而相比于那些需要强耦合的系统,为了空间链和中心链间的松耦合性,需要给空间链的参数添加更多灵活性。
#### 2.2.3 Casper
目前关于 Casper 和 Polkadot 之间,还没有完整的讨论和比较,即使是公平和彻底(也不准确)地描述两者。Casper 是正在重塑 PoS 的共识算法,它研究如何让参与方在最终会确定的分叉上押注。本质上,需要考虑即使是长程攻击的情况下,也要保证应对网络分叉的健壮性,还需考虑基础以太坊模型上的可伸缩性。因此,在本质上 Casper 协议的目标比 Polkadot 和以往项目要复杂的多,也偏离了基础的区块链模型。它仍然还没有做出来,不知道将来如何运作,也不知道最终会开发出来的样子。
然而 Casper 和 Polkadot 都代表了有趣的新一代协议,对于以太坊的争论,本质上也是他们的终极目标和实现路径上的差异。Casper 是以太坊基金会主导的一个项目,只是被设计用来作为 PoS 协议的替代,没有从本质上打造可伸缩区块链的意愿。关键还需要一次硬分叉来升级,而不能时可扩展的,因此所有的以太坊客户端和用户都需要升级,否则就得留在原来的前途不明朗的分叉上。因此,这类协议在去中心化系统上的部署会很困难,需要紧密的协调。
Polkadot 在几方面上不同;首先而且也是最重要的,Polkadot 将被设计成完全可扩展和可伸缩的区块链开发、部署和交互测试平台。他将被设计为面向未来的、可以吸收最新的可用区块链技术的平台,且不需要过于复杂的去中心化协调和硬分叉。我们已经预见到了几个应用场景,例如高度加密的联盟链和低区块时间的高频链等,它们不太可能在近期的以太坊上实现。它们最终和以太坊之间的耦合度也会很低,以太坊上也没有支持两者间非信任交互的想法。
简言之,尽管 Casper/以太坊 2.0 和 Polkadot 有一些相似点,我们相信从本质上它们最终的目标是不一样的,并非竞争,在可预见的将来,两个协议会大概率地并存。
## 3 概要
**Polkadot 是一个可伸缩的异构多链系统**。这意味着不像以往那些专注于不同程度潜在
应用功能的单个区块链实现,Polkadot 本身被设计成不提供任何内在的功能应用。
Polkadot 提供了中继链(relay-chain),在其上可以存在大量的可验证的、全局依赖的动态数据结构。我们称这些平行的结构化的区块链为平行链(parachains),尽管也不要求它们必须是一条链。
换句话说,**Polkadot 会被设计成一个独立链的集合**(例如包含以太坊、以太坊经典、域名币、比特币),除了两个非常重要的点:
* 合并的安全性
* 去信任的跨链交易性
这两点也是我们称 Polkadot 为可伸缩的原因。从原则上,一个问题在 Polkadot 上被彻底解决了:可以向外扩展,会有非常大数量的平行链。尽管每条平行链在各方面都通过不同的网络模式进行平行管理,但这个系统却有可伸缩的能力。
Polkadot 提供了一个尽量简单的架构,把大部分的复杂性都放在了中间件上。这是个刻意的决定,为了试图减少开发的风险,使必备的软件可以在短时间内开发出来,还能对安全性和健壮性持有信心。
### 3.1 Polkadot 的哲学
Polkadot 需要提供一个绝对坚实的基座,来在其之上建设下一代共识系统,覆盖从生产级别的成熟设计到初期想法的所有风险。通过对安全性、隔离性、通信能力提供强有力的保证Polkadot 能够允许平行链从一系列特性中选择适合它们自己的。的确,我们预见了各种实验性的经过考虑的区块链特性。
我们看到,传统的高市值区块链(例如比特币和 Zcash)、低市值的概念性区块链和接近零手续费的测试网,是并存在一起的。
我们看到,全加密的暗黑联盟链和高功能性的开放区块链(例如以太坊)也并存在一起,甚至还为之提供服务。
我们看到,实验性的新虚拟机区块链,比如主观时间计费的 Wasm 区块链,在将难度计算问题从类似以太坊的区块链方式,修改成类似比特币的区块链方式。
为了管理区块链升级,Polkadot 将内生支持某种形式的治理结构,很可能基于现有的稳定政治体系,会有一个两院结构,类似于 Yellow Paper Council。底层权益代币持有者作为最高权力机构,会有全民投票控制权。为了反映用户的需求、开发人员的需求,我们期望建立一个合理的两院结构,采纳用户的意见(由绑定的验证人决定)、主要客户端开发者和生态系统玩家的意见。代币持有者会保留最高的合法权,可以形成一个最高法庭来参政、议政、替换或解散这个架构,还有那些我们不怀疑的最终需求。
借用一句马克吐温的谚语:“政府和尿布都得经常换,而且理由都一样”。
然而在大范围共识的机制下组织参政会很琐碎,更多关于替换和新增的质的改变,希望既不是通过非自动的弱法令(例如通过块高度和新协议的形式化证明文档的哈希)来达到一致性,也不是通过在核心共识算法中包含一个高效的高级语言,来改变他自身可能需要改变的各个方面。后者是一个最终目标,然而为了落实一个合理的开发路线图,更可能选择前者。
Polkadot 看重的主要原理和规则有:
**最小**:Polkadot 需要有尽可能少的功能性。
**简单**:只要他们可以推给中间件、放在平行链、或用下面要讲的一种优化手段,就不在基础协议里添加多余的复杂性。
**通用**:没必要在平行链中添加任何要求、约束或限制;Polkadot 需要成为共识系统开发的基石,要尽量通过给模型加入最具适应度的扩展和优化。
**健壮**:Polkadot 需要提供一个稳定的基础层。为了经济稳定性,需要采用分散的方法,来降低高额奖励这个攻击向量可能引发的问题。
## 4 Polkadot 的参与方
有四个基本的角色在维持 Polkadot 网络:收集人(collator)、渔夫(fisherman)、提名人(nominator)、验证人(validator)。在 Polkadot 的一个可能实现里,最后一个角色有可能会被拆分成两个:基础验证人和可用保证人(guarantor),将会在 6.5.3 节讨论。
![Polkadot 四个角色的交互](https://img.learnblockchain.cn/2019/05/15580769404578_wc9h51nsc42sjn50.jpg)
### 4.1 验证人
验证人有最高权限,帮助在 Polkadot 网络里打包新区块。验证人需要抵押足够多的押金,因为我们允许其他有资金的提名人推举一个或多个可以代表他们的验证人,所以验证人一部分的押金并不是他们自己所拥有的,而是属于提名人的。
一个验证人必须在高可用和高带宽的机器上运行一个中继链的客户端。每个区块上,节点都必须准备接收一个已提交的平行链上的新区块。这个过程涉及接受、验证、再发布候选区块。验证人的任命是确定性的,但实际上也很难预测。因为不能期望验证人拥有所有平行链的全同步数据,所以他们希望把这个提议平行链新区块的工作指派给第三方,也就是收集人。
不同的验证人小组一旦都确定性地批准了自己所属平行链的新块,他们就必须开始批准中继链自身的区块。这包括更新交易队列的状态(也就是从一条平行链的出口队列转移到另一条平行链的入队列)、处理已批准的中继链的交易集合、批准最终的区块、吸收平行链的最终改变。
在我们选择的共识算法下,会惩罚一个没有履行他们职责的验证人。最开始如果不是有意的错误,就只是会扣留他们的奖励,但如果是重复的错误会扣减他们的押金(通过烧毁),例如双向签名(double-signing)或合谋提供一个非法区块等可证明的恶意行为,会导致他们丧失全部的押金(烧毁一小部分,大部分奖励给信息提供方和诚实的验证人)。
在某种程度上,验证人和目前 PoW 区块链的矿池相似。
### 4.2 提名人
提名人是一个拥有权益的群体,他们把安全性押金委托给验证人。他们没有更多的角色,除了通过有风险地投放资本来表示:他们信任某个特定的验证人(或群体)可以代表他们维护整个网络。按照他们的入金比例,他们也会受到和验证人总押金同样比例的奖励和扣减。
和下面的收集人一样,提名人和目前 PoW 网络的矿工相似。
### 4.3 收集人
交易收集人是帮助验证人制造有效的平行链区块的群体。他们会运行一个特定平行链的全节点,这也意味着他们有全部的必要信息,可以打包新块并执行交易,就跟目前 PoW 区块链的矿工一样。在正常情况下,他们会收集并执行交易,并创建一个”未密封”(unsealed)的区块,再加上一个零知识证明一起提交给一个或多个当前负责提议(proposing)该平行链区块的验证人。
关于收集人、提名人、验证人的精确关系可能还会修改。起初,我们希望收集人和验证人能够紧密合作,因为可能只有一些(甚至一个)交易量很小的平行链。最初的客户端实现会包含一个 RPC 接口,来支持一条平行链的收集人节点把可证明的有效平行链区块,无条件地提供给一个(中继链)验证人节点。由于维持所有的全同步平行链的成本越来越高,所以我们设计了附加的结构,有助于分离独立的、经济驱动的、和其他的参与者。
最终,我们希望看到收集人群体为了更多手续费,竞争性地去收集信息。在一段时间内,为了持续增长的份额收益奖励,这些收集人可能只服务于特定的验证人群体。或者自由职业(freelance)的收集人也可以简单地创建一个市场,提供有效的平行链区块,而不是获得立即支付的竞争性份额奖励。同样地,去中心化的提名人群体也会允许多个有抵押的参与者来协调和分担验证人的职责。这种能力保证了参与的开放度,有助于成为更加去中心化的系统。
### 4.4 渔夫
不像其他的两个参与方,渔夫并不直接和区块打包的过程相关。他们是独立的“赏金猎人“,激励他们的是一次性的大额奖励。
准确地说,由于渔夫的存在,我们才能减少恶意行为的发生,即使发生希望也只是因为私钥不小心泄露了,而不是故意的恶意企图。起这个名字的出发点是考虑到他们期望收益的频率和最终奖励的大小。
渔夫只要及时举报并证明至少一个有抵押的参与方存在非法行为,他们就能获得奖励。非法行为包括对两个有相同父块的不同区块进行签名,或在平行链上批准一个无效区块。为了预防由于私钥泄露给渔夫所导致的过渡奖励,渔夫上报关于单个验证人的非法消息签名的基础奖励是从最小开始的,这个奖励会随着其他渔夫上报更多的非法签名而逐渐增加。依据我们基本的安全性假设:至少三分之二的验证人是诚实的,渐近线将设置在 66%。
渔夫某种程度上和目前区块链系统的全节点相似,他们所需要的资源相对较少,也没必要承诺稳定的在线时间和大的带宽。渔夫有如此大的不同,所以他们只需要提交很少的押金。这个押金用于预防浪费验证人计算时间和计算资源的女巫攻击。它是立即可以提现的,很可能不会比等值的几个美金更多,但如果监测到一个不当行为的验证人,可能会收获很大的奖励。
## 5 设计综述
本章试图给出一个系统的全局完整描述。对系统更加深入的解释会在接下来的一章中
给出。
### 5.1 共识
在中继链上,Polkadot 通过一个现代的异步(asynchronous)拜占庭容错(BFT)算法达成对有效区块的相互共识。算法受简单的 Tendermint 和 HoneyBadgerBFT 启发。后者在有任意网络缺陷的架构下,只要满大部分验证人是诚实的,就能提供了一种高效的容错算法。
也许一个权限证明(PoA)模式的网络就足够了,然而 Polkadot 是个可以在全开放和公开的场景下部署的网络,不需要信任任何特殊的组织和当权者来维护它,因此我们需要一种管理验证人群体并且激励他们守法的方法。我们选择使用以 PoS 为基础的共识算法。
![图 2:Polkadot 的概括性原理图](https://img.learnblockchain.cn/2019/05/15580770838555_uhustjzcy2qkyemg.jpg)
图 2展示了收集人收集并且广播用户的交易,也广播候选区块给渔夫和验证人。展示了用户提交一个交易,先转移到平行链外部,然后通过中继链再转移到另一条平行链,成为一个可以被那里的账户执行的交易。
### 5.2 权益证明
我们假设网络可以度量每个账户有多少权益(stake)。为了更轻松地和现有系统对比,我们把度量单位称为 “代币(tokens)”。不幸的是由于它仅仅能作为对账户简单的价值度量,也没有任何个性化,因此多种原因使这个术语并不那么理想化。
通过一个被提名的权益证明(Nominated Proof-of-Stake NPos)结构,我们猜想验证人的选举不会很频繁(很可能是一个季度一次,最多一天一次)。通过按比例分配的增发出来的代币(很可能大约 10%,最多每年 100%)和收集到的交易手续费来进行激励。虽然货币增发一般都会造成通胀,但因为所有代币持有者都有公平参与的机会,所以代币持有者的资产不会随着时间而遭受损失,他们会很开心地参与到该共识机制中来。全网权益证明的开展所需的抵押必须达到一个特定的最小比例。会根据市场机制,达到有效的代币增发这个目标。
验证人严重依赖他们抵押进来的权益。现存验证人的押金会从他们离职的时候开始,要再保留更长时间(也许 3 个月左右)。这么长的押金冻结期是为了还能惩罚将来的不当行为,直到区块链周期性的检查点到来。不当行为会遭到例如减少奖励等的惩罚,如果是故意破坏网络的完整性,验证人将会损失部分或全部的权益,转移给其他验证人、信息提供者或全部权益持有者(通过烧毁)。例如一个验证人试图同时批准不同分叉上的两个分支(有时也被称为短程攻击),就会被后面的方法鉴别并遭到惩罚。
检查点锁定器(checkpoint latch)能规避长程“无权益抵押”(nothing-at-stake)攻击,防止比一般长度更长的高度危险的链重构(chain-reorganistation)发生。为了保证最新开始同步的客户端不会被误导进错误的链,网络会出现定期的“硬分叉”(最长也就是验证人的押金冻结期),把最近检查点区块的哈希值硬编码(hard-code)进客户端。将来通过逐步递减有限链的长度(finite chain length),或周期性地重置创世块(genesis-block),这种方法会运行得很好。
### 5.3 平行链和收集人
每条平行链将给中继链提供同样的安全性保证:平行链的区块头会被包含进中继链的区块中,还跟着一些确认信息,用来保证不会发生链重构或双重花费(double-spending)。类似于比特币侧链和联合挖矿的安全性保证,Polkadot 也强力保证平行链状态交易的有效性。会依据密码学算法,把验证人随机地分成很多个组。一条平行链对应一组,甚至每个块的组也都可能不一样。这个设置意味着中继链至少也要和平行链的出块时间一样短。本文不讨论分组的特定决定方式,可能要么是围绕类似 RanDAO 的提交-披露(commit-reveal)框架,要么结合平行链前一个区块的密码学哈希值。
这样的验证人组需要提供平行链的候选块,还要保证它们是有效的(否则损失押金)。有效性围绕两个重要的点:第一,它是内生有效的,所有的状态转换被公正地执行,包括引用的外部数据也被公正执行(比如交易)。第二,参与方需要可以简便地访问候选块的任何外部数据,例如外部交易等,然后就可以下载这些数据并手工执行候选块。验证人可以提交没有包含任何外部交易数据的空块(null),如果他们这样做,就要承受奖励减少的风险。他们和收集人在平行链的一个 gossip 协议上工作,收集人把交易收集到块里,并且要提供一个非交互的零知识证明(noninteractive zero-knowledge),用来证明本子块的父块是有效的(为该工作收取任何手续费)。
防止垃圾(spam)数据的方法留给了平行链协议自身:中继链本质上不规定“计算资源计量” 和 “交易费” 。本质上也不强制平行链规定相关协议(尽管权益持有者不太可能愿意接纳一个没有提供合理机制的平行链)。这里明确地说明了并不会都像以太坊的手续费规则,也可以类似比特币的区块链手续费模型,或其他任何还没有提出来的垃圾预防模型。
Polkadot 的中继链本身将很可能存在一个类似以太坊的账户和状态模型,可能是 EVM 的衍生版本。因为中继链节点将需要做大量的其他计算,将会通过提高手续费尽量减小交易吞吐量,我们的模型还会包含块大小的限制。
### 5.4 跨链通信
Polkadot 最关键的部分是跨链通信。因为在平行链间可以存在某种信息通道,我们才说 Polkadot 是可伸缩的多链系统。在 Polkadot 中,通信可以很简单:一条平行链中的执行交易的时候(依据那条链的逻辑),可以给第二条平行链或中继链转发一个交易。目前生产环境中的区块链外部交易,都只能是完全异步的,他们并没有给它的来源方返回任何信息的原生能力。
![跨链通信原理图](https://img.learnblockchain.cn/2019/05/15580771736058_0ohoa5hz708ias1p.jpg!wl)
为了保证最小的实现复杂度、最小的风险和最小的平行链架构束缚,这些跨链交易和目前标准的外部交易没有区别。这些交易会有个来源方字段,用来辨别平行链的身份,还有个可以是任意长度的地址。跨链交易需支付的手续费,并不像目前的比特币或以太坊系统那样,而是必须通过来源平行链和目的平行链的谈判逻辑来管理。一个在以太坊的Serenity 版本中提出的改进提案,会是一个简单管理这种跨链资源支付的方法,尽管我们假设其他人会提出更先进的方法。
跨链交易的问题可以用一个简单的队列机制解决,这个队列用梅克尔树(Merkle tree)来保证数据真实。中继链的任务是把交易从来源平行链的出口队列转移到目的平行链的入队列。已转发的交易会在中继链上被引用,而不是中继链自身的交易。为了预防一条平行链往另一条平行链发送垃圾交易,规定在在前一个块结束后,发送每一个交易时,目标平行链的入队列不能太大。如果区块处理完后,入队列太大,那么目的平行链会被看做是饱和了,接下来的几个块里就不会再路由交易给它,直到入队列降到临界值以下。这些队列在中继链上管理,允许各平行链相互决定他们的饱和度大小。如果再往停滞的目标链发送交易,这样就可以同步地报告失败了(因为不存在返回路径,如果第二个交易也是同样的原因失败了,它可能也不会给来源调用者发送回复,这就需要用到一些其他的恢复方法)。
### 5.5 Polkadot 和以太坊
归功于以太坊的图灵完备特性,至少在简单的可论证的安全性边界内,我们期望 Polkadot 和以太坊有丰富的交互可能性。简而言之,我们预想到了,从 Polkadot 出来的交易,可以让验证人先签名,然后再喂给以太坊,在那里通过一个交易转发(transaction-forwarding)合约来解释和执行。反方向,我们也预想到了,从以太坊上的一个 “外向合约”(break-out contract)中的特殊格式日志,可以快速地证明一个消息是否真的要被转发。
#### 5.5.1 从 Polkadot 到以太坊
通过选择一个拜占庭容错算法,验证人经由授权投票产生的一系列权益持有者组成,我们能够获得一个安全的共识机制,用不经常更改的合适数量的验证人。在一个总共有 144 个验证人的系统内,4s 出块时间和 900 个块的最终性(允许举报、惩罚、修复类似双向投票的恶意行为),一个区块的有效性可以合理地考虑为用最少 97 个签名证明(144的三分之二再加一),然后跟着的是 60 分钟无风险注入的验证时间。
以太坊可以包含一个控制和维护 144 个签名的“内向合约”(break-in contract),由于椭圆曲线数字签名的验签操作只要花费 EVM 3000 [gas](https://learnblockchain.cn/2019/06/11/gas-mean/) 的计算量,而且因为我们只希望验证操作发生在大多数的验证人里(而不是全体),以太坊确认一个从 Polkadot 来的指令的基础花费不会超过 300,000 gas——仅仅是区块 550 万 gas 限制的 6%。增加验证人的数量(只有在处理数十个区块链的时候才必要)不可避免地会增加成本,然而很明显可以期望到随着以太坊技术的成熟和架构的改进,交易吞吐量会随着时间而增加。另一个事实是不是所有的验证人都会参与(例如只有最高押金的验证人才会做这个任务)这种结构的限制会比较合理。
假设这些验证人每天轮换(更保守的、更可能接收的是每周,甚至每月),网络给维持这个以太坊转接桥的成本大约是 540,000 gas 每天,或者按照当前的 gas 价格,45 美金一年。一个通过转接桥的基本转发交易会花费大约0.11美金;当然另外的合约计算会耗费更多。通过缓存和捆绑多个交易,内向的交易花费可以简单地分担,减少每个交易的花费。如果一次转发需要凑够 20 个交易,那么转发一笔基本交易的花费会降低到大约0.01金。
在这个模型中,Polkadot 的验证人节点除了签名消息之外只需要再做很少的事情。为了能够把交易路由到以太坊网络里,我们假设任何一个验证人需要属于以太坊网络,更可能的只需提供很少的奖励给第一个在网络上转发消息的人(奖励会支付给交易发起人)。
#### 5.5.2 从以太坊到 Polkadot
使用一个叫做日志的概念,把交易从以太坊上转发到 Polkadot 上。当一个以太坊合约希望派生出一个交易给 Polkadot 上面的某一条平行链,它只需简单地调用一个特殊的“外向合约” 就好。那个外向合约会索取任何必须的费用,然后生成一个日志打印指令,以便于通过梅克尔树和有块头哈希来证明它的存在。
在下面的两个情况中,可以非常简单地证明有效性。原则上,唯一的要求是每个 Polkadot 节点都要运行一个全同步的标准以太坊节点。然而这本身就是非常重的依赖。一个更轻量的方法是提供一个简单的证明,仅需要包含正确执行该交易所必须知晓的以太坊的那部分状态树,然后再检查日志的有效性。这种类似简单支付验证(SPV-like)的证明不需要提供大量的信息。更方便的是,验证人可能完全不需要自己运行节点,Polkadot 内的押金系统能支持第三方参与者来提交块头,因为其他第三方(也就是所说的渔夫)也可能提供一个他们块头是无效的证明(具体地说就是状态根和回执根是错误的),所以这些人也冒着损失他们押金的风险。
在一个类似以太坊这样的无最终确定性(non-finalising)的 PoW 网络上,不可能存在最终可证明的一致性。为了适应这个,程序需要依赖一定的块确认数量,或者直到那个依赖的交易已经在链内某一特定深度了。在以太坊上,这个深度从最脆弱的 1 个块(网络都还不完全知道)延伸至 1200 个块(从 Frontier 上线到以太可交易)。在 [Homestead](https://learnblockchain.cn/2019/06/15/eth-history1/)的稳定版本上,大部分交易所选择了 120 个块这个数字,我们也可能会选择相近的参数。所以我们可以想象 Polkadot 这边的以太坊接口有一些简单的功能:可以接受以太坊网络的新块头,并能验证它的 PoW,可以结合一个有足够深度的块头(还有 Polkadot 内转发的相应信息),来验证从以太坊那边的外向合约打印出来的特定日志的证明,还可以接收关于之前收到的但还没有确定的块头里包含无效的回执根的证明。
需要有一个转发激励机制,才能够真正地在 Polkadot 网络里得到以太坊块头的数据(还有任何关于有效性和一致性的 SPV 证明)。这可能设计成只是个简单的支付行为(由在以太坊那边收集的手续费资助),转给任何能够提供一个有效块头的人。为了能够应对分叉,验证人需要保留最近几千个块的信息,要么由协议原生支持,要么通过中继链上的合约。
#### 5.5.3 Polkadot 和比特币
Polkadot 和比特币的交互是非常有挑战性的:从两边的网络角度考虑,一个所谓的“双向锚定” 架构会非常有用。然而由于比特币的局限性,如何提供一种安全性的锚定个是非常艰难的任务。可以使用类似以太坊的流程,从比特币转发一个交易到 Polkadot:由一个受 Polkadot 验证人控制的“外向地址”(break-out address)来托管转账过来的代币(和附属的数据)。可以通过结合一个确认期,来激励先知(oracles)提供 SPV 证明,先知们通过标识一个非一致性的区块,来证明一笔交易存在双花的可能。任何在外向地址里托管的比特币原则上也被相同的验证人群体控制。
问题是如何保证这些比特币,是被轮换的验证人集合所控制的。相比于以太坊那样可以根据在合约内任意组合签名规则的方法,比特币的局限性就更多了,大部分的比特币客户端只接受最多 3 方的多重签名。扩充至 36 个或者大家希望的最高至上千个的终极提议,在现有的比特币协议里还不可能实现。一个选择是修改比特币的协议来支持这个功能,然而硬分叉在比特币的世界里非常难以安排和讨论。另一个可能性是使用门限(threshold)签名的方法,用密码学的结构来构造一个被被多个私钥片段共同控制的公钥地址,要制造一个有效的签名需要这些人的大部分或全部人都参与。不幸的是,和比特币的 ECDSA 相比,门限签名计算起来非常耗资源,而且是多项式级别的复杂度(polynomial complexity)。
由于入金的安全根本性由有抵押的验证人决定,所以另一个选择是减少多重签名的私钥持有人数量至只有重度质押的验证人才能参与,这样门限签名就变得可行了(或者最糟糕的情况,也可能直接用比特币的原生多重签名)。由于要预防验证人的非法行为,这个方法会降低可托管的比特币总量。然而这是一个优雅的妥协,可以简单地设置能够安全地在两个网络里的转移的基金总额上限(验证人攻击失败可能会受到的押金损失,和攻击成功可能的会收到的比特币潜在收益对比)。
因此,我们认为在现有的比特币框架下,开发出一个能够在两个网络间安全转移比特币的平行链是不现实的,尽管如此,比特币的持有者还可以在不确定的将来协调这些工作。
## 6 协议细节
本协议可以大致分为三个部分:共识机制、平行链接口、跨链交易路由系统。
### 6.1 中继链操作
中继链会类似以太坊,也是基于状态的,包含一个账户信息到状态存储的映射关系,其中信息主要包含余额和交易计数器(防止重放)。把账户系统放在这里的目标是:记录每个身份在系统里控制了多少权益。但还有一些值得注意的差异:
* 不能通过交易部署合约;这是为了让中继链尽量缺乏功能性,不支持公开部署合约。
* 没有资源计数器(gas);因为公众能够调用的一些功能是固定的,gas 记录系统的原理就不适用了。因此在所有功能中,会使用一个更通用的手续费标准,这样就能更高效地执行那些动态代码,交易格式也会更简单。
* 会有一些包含特殊功能的默认合约,他们管理交易的自动执行和网络消息的输出。
中继链会有一个基于 EVM 的虚拟机,但为了最大程度地简化会做很多修改。它会有一些内置合约(类似于地址在 1-4 之间的那些以太坊合约)运行平台的特定功能,包括共识合约、验证人合约、平行链合约。
如果不用 EVM,很有可能会选择 Web-Assembly(Wasm);这样的话,所有结构还是相似的,但是这些基于 Wasm 的内置合约使用的是通用功能的语言,而不再是 EVM 上面的那些带有很多限制的不成熟语言。
还可能借鉴目前以太坊上衍生出来的其他方面的概念,例如在 Serenity 版本中提出来一些改变,比如为了能在一个块里并行执行那些没有状态冲突的交易,将交易的回执格式简化等。
Polkadot 有可能会部署一个类似于 Serenity 的纯净(pure)区块链系统,它不包含链的任何基础协议。但我们觉得这会带来更多的复杂性和开发不确定性,所以不太值得在目前阶段就去实现这么一个更高效且简洁的伟大协议。
为了管理共识机制,需要很多小片儿的功能:验证人集合、验证人机制、平行链等。这些都可以放在一个整体的协议中。然而为了实现模块化,我们会把这些描述成中继链的合约。这意味着他们都是中继链共识机制管理的对象(类似面向对象语言),但不一定是类似 EVM 的字节码,也不一定能通过账户系统寻址。
### 6.2 权益合约
这个合约管理着验证人集合:
* 哪些账户是验证人;
* 哪些在短期内可以变成验证人;
* 哪些账户为了提名验证人而质押了权益
* 每个人的属性,包括余额、可接受的押金比例、地址列表、会话(session)身份
它让账户在想成为验证人的时候可以来注册(需满足某些要求)、也可以提名某用户、在想退出验证人角色的时候还可以来退出。它自身还包含了一些用于验证和达成一致性的功能。
#### 6.2.1 权益代币的流动性
通常我们希望能从网络中把尽可能多的权益代币都抵押进来,因为这关系到抵押权益的总市值和网络的安全性。这可以很简单地通过货币增发和收益分发来激励验证人。然而,这么做会出现一个问题:如果代币都被抵押在权益合约里,用于防止作恶,那么如何保证代币在一定程度上的基本流动性,进而支持价格发现呢?
一种方法是提供一个前向衍生合约来管理由抵押代币衍生出来的二级代币。但这在非信任的情况下很难实现。这些衍生代币无法等值交易,原因就和欧元区的不同政府发行的债券一样:抵押的代币有可能被扣减而价值降低。至于欧洲政府,他们还可能会违约。对于由验证人质押而来的代币,要考虑到验证人的恶意行为可能会遭到惩罚的情况。
基于我们的原则,我们选择了一种更简单的方案:不能把所有的代币都质押进来。这意味着一部分(可能 20%)代币会被强制保持可流通的状态。尽管从安全的角度上讲,这个方案不完美,但也没有从根本上影响网络的安全。相比于 100%的质押,也将只可能没收 80%的权益作为赔款。
我们还将会使用一个反向拍卖机制来公平地决定质押代币和流通代币的比例。有兴趣成为验证人的代币持有者可以给权益合约提交一个请求,说明他们希望支付的最小比例。每次会话(会话可能每个小时算一次)开始的时候,系统会根据每个意向验证人的押金和支出比例来填满验证人的插槽。一个可能的算法是从提交押金的验证人中,选择那些押金满足如下条件的人:押金不高于“总押金目标/插槽数量”且不低于“次低押金”的一半。如果不够填满这些插槽,那么我们会迅速降低这个“次低押金”来满足条件。
#### 6.2.2 提名
用户可以把手中的权益代币非信任地交给一个已激活的验证人,让他们来履行验证人的职责。提名通过一个“批准-投票”系统来完成。每个准提名人可以给权益合约提交一个声明,指出他们信任的可以履行职责的一个或多个验证人的身份。
在每个会话期间,提名人的押金会散布给一个或多个代表他们的验证人。这些验证人的押金是等额分配的。提名人的押金用于验证人承担他们的责任,将能够获得利息或承受相应的扣减。
#### 6.2.3 押金没收/烧毁
验证人的某些行为会导致惩罚性地没收他们的押金。如果押金降低到允许的最小值,会话就会提前结束,另一个会话开始。一个不完整的将导致惩罚的行为列表:
* 属于一条平行链的验证人小组,却不为该平行链的区块提供合法性验证;
* 签名了该平行链一个不合法的区块;
* 不去处理出口队列中被投票为已生效的消息;
* 不参与到共识流程中;
* 在中继链两个竞争性的分叉上同时签名。
有些行为会威胁到网络的完整性(例如签名不合法的平行链区块,或者签名多个分叉),为了驱逐这些验证人,会没收他们的押金。另外还有一些不那么严重的行为(例如不参与到共识流程中)或者那些无法清晰判别的行为(例如处于一个低效的小组),只会导致一小部分的押金被处罚。在后一种情况中,可以采用一个二级小组的搅拌功能来让恶意节点遭受到比正常节点更多的惩罚。
因为实时同步每条平行链的区块是个非常大的工作,所以在某些情况下(多叉签名和不合法签名),验证人无法很方便地检测到自身的不当行为。在这里有必要指出验证人之外的一些参与方也可以举报这些非法行为,并从中获得奖励,但他们和渔夫还不太一样。
因为有些情况非常严重,我们希望可以很简单地从没收的押金里支付奖金。我们通常倾向于使用烧毁代币的方法进行重分配,而不是采用批量转账的方法。烧币可以从整体上增加代币的价值,也就可以补偿整个网络而不仅是涉及到的特定几方。这主要是作为安全防范机制,只有非常恶劣的行为才会到会非常大金额的惩罚。
很重要的一点是奖金必须足够高才能让网络觉得验证工作是值得做的,当然也不能比成本高太多,否则会招致那些足够有钱的、精心策划的国际级别的犯罪黑客攻击那些不幸的验证人,迫使他们做出非法行为。
规定的奖金也不能比恶意验证人的押金高太多,否则会不正当地激励非法行为:验证人为了奖金自己举报自己。解决方法是要么直接限制成为一个验证人的最小押金量,要么间接教育提名人:如果验证人押金太少,他们可能没有足够的动机来遵守规则。
### 6.3 平行链的注册
这个模块用于记录系统中的每条平行链。它是个相对简单的类似数据库的结构,管理着每条链的静态信息和动态信息。
静态信息包括链的索引(一个整数)和验证协议的标识。协议标识用于区分不同的平行链,只有这样,验证人才能运行正确的验证算法 ,然后提交合法的候选块。一个最初的概念验证版本会关注于如何把一个新的验证算法放在客户端中,这样每增加一个新种类的区块链,就需要一次硬分叉。然而在保证严格和高效的情况下,还是有可能不用通过硬分叉就能让验证人知晓新验证算法。一个可能的实现方法就是用一种确定的、本地编译的、平台无关的语言来描述平行链的验证算法,例如 WebAssembly 等。为了验证这种方法的可行性,我们还要做更多的调查,毕竟如果能够避免硬分叉还是会有很大优势的。
动态信息涉及交易路由系统,比如必须对平行链的的入口队列进行全局共识(在下一节讨论)。
必须通过全民公投才能注册新的平行链。这本来可以直接内部管理,但通过一个外部的全民公投合约会更好,因为这个合约还可以用于更多其他场景的治理。关于平行链投票注册系统的具体参数(例如法定人数、多数派的比例)会用形式化证明做成一个不常更新的“主宪法”系统,当然初始阶段也可能只是用传统的方法。具体的公式不在本文的讨论范围内,例如占 2/3 的多数派通过,并且全系统 1/3 的代币都参与了投票才算通过。还有一些暂停和删除平行链的操作。我们希望永远不要暂停一条平行链,但这个设计是为了能应对平行链的一些紧急情况。最明显的情况是由于验证人运行了平行链的多种客户端实现,导致可能无法对某区块达成共识。我们也鼓励验证人使用多种客户端实现,以便能尽早检测到这类事情,防止押金被扣减。
因为暂停操作是个紧急措施,所以会采用验证人动态投票的方式,而不是通过全民公投。对于重启操作,可能直接通过验证人投票,也可能通过全民公投来完成。
删除操作平行链只能通过全民公投来进行,而且要提供一个宽松的平滑退出过渡期,能让它们成为一个独立的区块链或变成其他共识系统的一部分。这个期限可能是几个月,而且最好由平行链根据自身的需求来制定。
### 6.4 打包中继链区块
区块打包的过程本质上是共识的过程,也是把基本的数据变得有意义的过程。在一个 PoW 链里,打包有一个同义词叫挖矿。在本方案里,它涉及收集验证人对于区块有效性、可用性、一致性的签名,这些区块包括中继链区块和它所包含的全部平行链的区块。
底层的 BFT 共识算法也不是当前的工作范围。我们不描述它,而是使用一种原语描述一种由共识推动的状态机。最终我们希望能受到一些现有共识算法的启发:Tangaora(Raft 的 BFT 变体)、Tendermint 和 HoneyBadgerBFT。共识算法需要并发地对多条平行链达成共识。假设一旦共识达成,我们就可以不可辩驳地记录哪些人参与了其中。我们也可以在协议内把不正当行为的人缩小到一个小组中,里面仅包含哪些恶意参与者,这样就可以在惩罚时可以降低附带伤害。
以签名声明形式存在的这些证明、中继链的状态树根和交易树根一起存储在中继链的块头里。
对于中继链区块和平行链区块的打包过程是在同一个共识生成机制中,两类块共同组成了中继链的内容:平行链并不是由他们的小组隔离地进行“提交”之后再被收集的。这虽然导致中继链的流程更加复杂,但也让我们可以在一个阶段里就完成整个系统的共识,能够将延迟最小化,并且能支持更加复杂的数据可用性,这在路由流程中将会很有用。
可以用一个简单的表格(二维的)来建模每个参与共识机器的状态。每个参与方(验证者)都有一系列以签名形式存在的来源于其他参与方的信息,描述着每条平行链的候选块和中继链的候选块。这些信息有两部分数据:
**可用性(Availability)**:对于出口队列里这个块的已提交交易,验证人是否有足够的信息以便在下一个块正确地验证平行链的候选块?他们可以投 1(知道)或 0(不确定)。当他们投了 1,他们就承诺在后续的投票中也要这么投票。后面的投票和这个不对应会导致惩罚。
**有效性(Validity)**:平行链的区块是否有效,是否包含了引用的所有的外部数据(比如交易)?这和验证人对平行链的投票相关。他们可以投 1(有效)、-1(无效)或 0(不确定)。只要他们投了非 0,他们就承诺在后续的投票中也要这么投票。后面的投票和这个不对应会导致惩罚。
所有验证人都必须投票;在上面的规则限制下,还可以重新提交投票。共识流程可以像很多标准 BFT 共识算法那样来建模,每条平行链是并行的。除了有很小的概率把少数恶意参与者都被分配到了同一条平行链小组之外,共识算法在整体上还是能支撑网络,最坏的情况也不过只是出现一个或多个无效平行链区块而死锁的情况(何对责任人进行的惩罚)。
判断一个独立区块是否有效的基本规则(允许全部的验证人作为一个整体达成共识,然后这些平行链区块就成为中继链上具有一致性的数据引用):
* 需要有至少三分之二的验证人投票“是”,并且没人投“否”。
* 需要超过三分之一的验证人对出口队列消息的可用性与否投票“是”。
对于有效性而言,如果至少有一个“是”且至少有一个“否”投票,一个特殊的条件就开启了,整个验证人就必须投票决定是否有恶意参与者,或者是否产生了意外的分叉。除了有效和无效之外,还支持投第三种票,等效于同时投了“是”和“否”,表示这个节点有相互冲突的意见。这可能是因为节点所有者运行的多种客户端实现而产生了分歧,也预示着平行链协议可能存在不清楚的地方。
当所有验证人的票都被记录过后,发现赢的那个意见少于一定数量的票(详细参数最多可能是一半,也许更少),那就可以假设平行链发生了意外的硬分叉,这条平行链的共识就会被自动暂停。否则,我们假设就是有恶意行为发生,并惩罚那些给输的那个意见投了“是”票的验证人。
结论是只有足够的签名票数才能达成一致性,然后中继链的区块就打包完成了,开始打包下一个区块。
### 6.5 中继链区块打包的改进
打包区块的方法确保着系统的正常运行,因为每条平行链的关键信息都要由超过三分之一的验证人来保证可用性,所以它并不能很好地伸缩。这意味着随着更多平行链的增加,每个验证人的工作也会增加。
在开放的共识网络中,如何保证数据的可用性还是个有待解决的问题,然而还是有一些方法可以缓解验证人节点的性能瓶颈。一个简单的方案是:验证人只负责验证数据的可用性,那他们就没必要自己真正地存储、通信和复制数据。第二个方案是数据隔离,这个方案很可能和收集人如何组织数据相关,网络可以对收集人有一定的利息或收入激励,让他们保证提供给验证人的数据是可用的。
然而,这个方案也许可以带来一点伸缩性,但仍没有解决根本问题。因为添加更多平行链通常需要增加验证人,网络资源的消耗(主要是带宽)以链总数的平方的速度增长,长期来看这是不可持续的。
最终,我们可能会思考对于保证共识网络安全的根本限制,网络对带宽的需求增长速度是验证人数乘以消息总进入数。我们不能信任那些将数据分开在不同节点存储的共识网络,因为这会将数据和运算分离。
#### 6.5.1 延迟性介绍
简化这个规则的方法是先了解即时性的概念。33% + 1 的验证人最终(eventually)需要对数据的有效性进行投票,而不是立刻(immediately)投票,我们可以更好地利用数据指数级传播的特性,来帮助应对数据通信的峰值。一个合理的等式(尽管未证明):
(1) $$延迟 = 验证人数 * 区块链数$$
在目前的模型下,系统的规模只有随着链的个数而伸缩,才能保证数据的分布式运算;因为每个链至少需要一个验证人,对于可用性投票的复杂度,我们把它降到了只和验证人个数呈线性关系。现在验证人数可以和链个数类似的增长,不再是:
(2) $$延迟 = 数量^2$$
这意味着随着系统增长,网络内带宽和延迟性的增长是可知的,但达到最终确定性所需的区块数目仍然是以平方增长。这个问题将会继续困扰我们,也可能迫使我们打造一个“非平层”(non-flat)的架构,也就是会有很多按层级结构排列的Polkadot 链,通过一个树形的结构来路由消息。
#### 6.5.2 公众参与
微意见(micro-complaints)系统是一种可以促进公众参与的方式。可以有一些类似于渔夫的外部参与方来监管验证人。他们的任务是找到提供了非可用数据的验证人。他们可以给其他的验证人提交一个微意见。这个方案需要用 PoW 或押金机制来防止女巫攻击,否则它会让整个系统失效。
#### 6.5.3 可用性保证人
最终的一个方案是从验证人里提名出第二个小组作为可用性保证人(Availability Guarantors)。他们也需要和普通验证人那样交押金,而且有可能来源于同一个组(会在一个长周期里选择他们,至少也是一个会话周期)。和普通验证人不同的是,他们不需要在各条平行链间切换,而只需要形成一个单一的小组,监管所有重要跨链数据的可用性。
这个方案还有个优势是能缓解验证人数和链个数之间的等式关系。链个数可以最终增长(与原始链的验证人小组一起),然而各参与方仍可以保持次线性增长或常量增长,尤其是那些参与数据可用性验证的人。
#### 6.5.4 收集人设置
系统需要保证的一个重要方面是:合理地选择那些制造平行链区块的收集人。如果一条平行链由某个收集人控制了,那么外部数据是否可用就会变得不那么明显,这个人就可以比较简单地发动攻击。
为了尽可能地广泛分配收集人,我们可以用伪随机的方法来人工衡量平行链区块的权重。在第一个示例中,我们希望验证人倾向于选择权重更大的候选块,这是共识机制的一个重要部分。我们也必须激励验证人找到最大权重的候选块,验证人可以把他们的奖励按比例分配给这些候选块。
在共识系统里,为了确保收集人的区块被选中的机会是平等的,我们用一个连接所有收集人的随机数生成器来决定每个候选块的权重。例如用收集人的地址和一些密码学安全的伪随机数做异或(XOR)运算来决定最优的块(获胜票)。这给了每个收集人(更准确地说是每个收集人地址)随机公平地打败别人的机会。
验证人通过女巫攻击来生成一个最接近于获胜票的地址,为了阻止这种情况,我们会给收集人的地址加上一些惰性。一个很简单的方法是需要他们的地址有基本的余额,另一个更优雅的方式是综合考虑地址的余额来计算获胜的概率。这里还没有完成建模,我们很可能会让很少余额的人也可以成为收集人。
#### 6.5.5 区块超重
如果一个验证人集合被攻击了,他们可能会生成一个虽然有效但要花费大量时间来执行的区块。这个问题来源于一些特定的难解数据题,比如大质数因式分解难题等,验证人小组可能需要非常长的时间才能解出答案,如果有人知道一些捷径,他们的候选块就有巨大的获胜优势。如果一个收集人知道那个信息,而其他人都在忙着计算老的块,那么他就
有很大的优势让他的候选块获胜。我们称这种叫超重(overweight)块。
为了防止验证人提交这些大幅超出普通区块的超重块,我们需要添加一些警告:因为执行一个区块要花费的时间是相对的(根据它超重的程度),所以最终可能的投票结果会有三种:第一种是这个区块绝对没有超重,超过 2/3 的验证人声明他们可以在一定时间内算完(例如出块时间的 50%);另一种是这个区块绝对超重了,超过 2/3 的验证人声明他们无法在限定的时间内执行完这个区块;再一种就是意见分歧基本持平,这种情况下我们会做一些惩罚。
为了保证验证人能预测他们提交的区块是否超重,他们可能需要公布自己在每个块上的执行表现。经过一段时间后,他们就可以通过和其他节点的比较来评估自己处理器的性能。
#### 6.5.6 收集人保险
还有一个问题留给了验证人:为了检查收集人区块的有效性,他们不能像 PoW 网络那样,而是必须自己计算里面的交易。恶意收集人可以填充非法或超重的区块给验证人,通过让他们受害(浪费他们的资源)来获取大量的潜在机会成本。
为了预防这个,我们为验证人提供了一个简单的策略。第一:发给验证人的平行链候选块必须要用有钱的中继链账户签名,如果不这么做,验证人会立即丢弃这个块。第二:会用组合算法(或乘法)对这些候选块进行排序,因素包括高于一定限额的账户余额、收集人过去成功提交的区块数(除去那些有惩罚的)、和获胜票的接近程度。这里的限额应该等于提交非法块的惩罚金。
为了警示收集人不要发送非法或超重的交易给验证人,任何验证人都可以在下一个区块中打包一个交易,指出那个非法的区块,并将那个收集人部分或全部的余额都转给那个受害的验证人。这种交易的优先级高于其他交易,使得收集人不能在惩罚之前转走他的余额。惩罚金额可能是动态决定的,也很可能是验证人区块奖励的一部分。为了阻止验证人任意没收收集人的钱,收集人可以对验证人的决定进行上诉,成立一个由验证人随机组成的陪审团,并交一些押金。如果陪审团发现验证人是合理的,那这笔押金就给陪审团了。如果是不合理的,押金退回给该收集人,而验证人要受到惩罚(因为验证人是核心角色,惩罚会比较重)。
### 6.6 跨链交易路由
跨链交易路由是中继链和其验证人的核心功能。这里管理着主要的逻辑:一个提交的交易(简言之为“提交”)是如何从一个来源(source)平行链的出口被强制地路由到另一个目标(destination)平行链里,而且无需任何信任人。
我们很小心地选择了上面的词语;在来源平行链里,我们无需一个明确约束这个提交的交易。我们模型里的唯一约束是:平行链必须尽力按照全部的出口能力打包,这些提交就是他们区块执行的结果。
我们用一个先进先出(FIFO)的队列组织这些提交。作为路由基准(routing base)的队列个数可能在 16 个左右。这个数字代表着我们可以直接支持的平行链性能,而不用采用多相(multi-phase)路由。Polkadot 一开始会支持这种直接路由,然而我们也可能会采用一种多相路由操作(超路由 hyper-routing)作为将来系统伸缩的方式。
我们假设所有参与方都知道下两个区块 n,n+1 的验证人分组情况。概括而言,路由系统有如下阶段:
* 收集人s:合约成员中的验证人 V[n][S]。
* 收集人s:FOR EACH 小组s:确保合约里有至少一个验证人 V[n][S]。
* 收集人s:FOR EACH 小组s:假设出口[n-1][s][S]是可用的(上个区块里所有对 S 提交的数据)
* 收集人s:为 S 构造候选块 b:(b.header, b.ext, b.proof, b.receipt, b.egress)。
* 收集
转载岳利鹏翻译的波卡白皮书 - Polkadot:畅想一种异构的多链架构,本文针对原译文笔误略有修改,同时原译文中的“钓鱼人” 改用了更好理解的 “渔夫” 。
波卡Polkadot:畅想一种异构的多链架构 原文Paper 草案 1
作者:Gavin Wood 博士 以太坊&Parity 创始人 GAVIN@PARITY.IO
译者:岳利鹏 lipeng@chainx.org
摘要:现有的区块链架构都存在诸多问题,不仅仅是从实用性角度所说的扩展性(extensibilty)和伸缩性(scalability)的问题。我们认为,问题源于把共识架构中两个
很重要的部分:一致性(canonicality)和有效性(validity)绑定得太紧密了。这篇文章介绍了一种异构的多链架构,能从本质上把两者拆开。
为了分离这两者,且能保持最小化的绝对安全性(security)和传输性(transport)等基本功能,我们将介绍一种原生的支持内核可扩展(core extensibilty)的可行性方法。对于可伸缩性(scalability)的问题,我们通过对这两个问题分而治之的思路解决,通过非信任节点的激励机制,弱化他们的内生绑定关系。
本架构的异构本质,支持众多高度差异化的共识系统在非信任(trustless)、完全去中心化的联邦内交互操作,允许去信任(trust-free)地相互访问各区块链。
我们提出一种方式,支持向后兼容一个或多个现有的网络,比如以太坊等。我们相信这个系统能够提供一种有用的底层组件,能够实用性地支持全球商业级别的可伸缩性(scalability)和隐私性(privacy)。
1. 前言
这篇论文的意图只是一个技术版本的概要,旨在用一些原则来描述将要开发的这个区块链示例,解释这个可能方向的合理性。它罗列了诸多区块链技术方面的具体改善措施,以及在此开发阶段所能够提供的尽可能多的细节。
它并不是要写成一个形式化证明的说明书。它并不完整,也不是最终版本。它并不是为了覆盖框架非核心的模块,例如 API、依赖、语言和用法等。这只是概念性实验,都很可能会修改提到的参数。为了响应社区的意见和评论,会新增、重定义、删除各组件。通过实验性的证据和原型,给出关于什么会有效、什么不会的信息,也很可能修正本论文中大部分内容。
这篇论文包含了一个关于协议和一些想法的核心描述,可能会被用来解决多个方面的问题。它将是能够用来在概念验证阶段开展一系列工作的核心描述。一个最终的“1.0 版本”会基于这个协议,再添加一些变得可证明而且决定包含到项目中来的想法。
起草历史:
2016 年 10 月 09 日:0.1.0-proof1
2016 年 10 月 20 日:0.1.0-proof2
2016 年 11 月 01 日:0.1.0-proof3
2016 年 11 月 10 日:0.1.0
2 介绍
区块链已经承诺了它的伟大意义,能够应用于包括物联网(IOT)、金融、治理、身份管理、去中心化互联网和资产追踪等多个领域。然而抛开这些技术承诺和大话,我们还没有看到现有技术下,出现重大的关于现实世界的应用部署。我们相信这是因为现有技术的 5 个关键缺陷:
伸缩性(Scalability):全球范围内花费了多少计算、带宽和存储的资源,来处理单个交易?峰值情况下能处理多少交易?
隔离性(Isolatability):多参与方对于应用的差异化需求,能否在同一个框架下接近最优程度地满足?
开发性(Developability):工具的工作效果有多好?APIs 是否已满足开发者的需求?教程资料是否可用?是否集成权力?
治理性(Governance):网络是否保留了能够随着时间进化和适应的灵活性?制定决策能否高度地包容、合理和透明,来提供去中心化系统的高效领导力。
应用性(Applicability):技术是否真的解决了用户的刚性需求?是否需要其他的中间件来嫁接真实的应用?
当前的工作,我们主要面向前两个问题:伸缩性和隔离性。也就是说,我们相信 Polkadot 架构可以在这两个方面,提供有意义的改进。
当前,例如 Parity 以太坊客户端这样的高性能区块链实现,已经可以在消费级高速硬件上每秒处理超过 3000 笔的交易。然而现实世界的区块链网络却限制在 30 笔交易每秒的情况下。这种限制主要是源于目前同步(synchronous)的共识机制,需要充分的计算缓冲时间来安全地处理,也就加重了其必须对于慢速硬件的支持。这归咎于其底层的共识架构:状态转换机,或者这种让所有参与方校对和执行交易的方式,在本质上将其逻辑绑定在了共识一致性(canonicalisation)的设计上,或者需要让所有参与方都同意所有的可能性、有效性和历史。
这种说法即适用于类似比特币和以太坊这样的工作量证明(POW)系统,也适用于NXT 和比特股这样的权益证明(POS)系统,他们都本质上受制于同一个障碍,但这些共识算法却是个能让区块链成功的简单策略。然而,在一个协议里紧密捆绑这两个结构,我们也就捆绑了多个不同风险偏好、不同伸缩性需求、不同隐私需求的角色和应用。一种特征满足不了所有人的需求。因为这种场景,产生了很多次的广泛呼吁,但网络只能倾向于更保守,服务于少数人,最终导致在创新能力、性能和适应性方面的失败,非常戏剧化。
有一些系统例如公证通(Factom),整个地去除了状态转换机。然而大多数应用场景都需要依赖一个共享的状态机,来支持状态转换的功能。去除它只是隐藏了问题,却没有给出真正替代性的解决方案。
现在看起来清楚了,因此一个合理的方向是:像路由对于可伸缩去中心化计算平台那样,解耦共识组件和状态转换组件。而且不出意外的话,这也是 Polkadot 解决伸缩性问题的策略。
2.1 协议、实现、网络
和比特币、以太坊一样,Polkadot 希望一开始的时候只是个网络协议,并且是运行这一协议的主要公有网络(目前假设)。Polkadot 倾向于是个免费和开放的项目,协议在一个知识共享的许可证上制定,代码托管在 FLOSS 许可证下。这个项目以一种开放的状态开发,接收各方面有用的捐助。一个微意见提交系统(RFCs),但不像 Python 改进议程那样,会提供一种公众协作参与协议修改和升级的方式。
我们对 Polkadot 协议的初始实现,将称为 Parity Polkadot Platform,会包含协议的完整实现和 API 接口。像其他 Parity 的区块链实现一样,PPP 会设计成通用目的的区块链技术栈,并不限定于公有网络、私有网络或联盟网络。目前为止的开发已经被包括英国政府在内的几方资助。
但是,这篇论文还是在公有网络的场景下。我们在公有网络下预见的功能,是一个完整设想(比如私有或联盟网)的子集。另外在这个场景下,可以清晰地描述和讨论 Polkadot 的所有方面。这也是说读者需要知道,在非公有(有权限的)场景下,一些特定的机制(比如和其他公有网络的交互)并不直接和 Polkadot 相关。
2.2 前人工作
从状态转换中解耦底层的共识,已经私下讨论了两年,在以太坊的最早期的时候 Max Kaye 就提议过。
一个更复杂的可伸缩方案叫做 Chain fibers,这要回溯到 2014 年 6 月,在那年底也发表了。它创造了一个关于单个中继链(relay-chain)和多个同构链,可以透明地跨链执行的先例。退相干性(Decoherence)通过交易延迟(latency)来实现,这就使需要更长时间,来处理需要协调系统多个部分的交易。Polkadot 借鉴了很多它的架构以及随后跟很多人的讨论,虽然跟它的设计和规定也很不一样。
然而目前并没有运行在生产环境下的系统可以和 Polkadot 相比,有的也只是提出了些相关性功能,很少有本质层面的细节。这些提议可以归纳为:丢弃或减少状态机全局相关性的系统、试图通过同构分片提供全局相关性的单例状态机系统、目标仅是异构性(heterogeneity)的系统。
2.2.1 没有全局状态的系统
公证通(Factom)演示了个没有有效性的一致性系统,能够高效地记载数据。由于没有全局状态和其带来扩展性问题,它可以被看做是一个可伸缩的方案。然而前面也提到了,严格上来说它只解决了很少的问题。
Tangle 是个关于共识系统的概念性尝试。不把交易排序再打包到区块中,而是通过串联的共识得出一个全局的一致性状态改变排序,它在很大程度上抛弃了高度结构化的排序想法,而是推出一个有向无环图,后续的有依赖的交易通过明确的指向,来帮助前面的交易达成一致。对于任意的状态改变,这个依赖图就会很快地变得无法处理,然而对于更简单的 UTXO 模型,立即就变得合理了。因为系统总是松散地连贯,而且交易通常是相互独立的,大规模的全局并发变得非常自然。使用 UTXO 模型确实可以让 Tangle 定位成价值转移的货币系统,而并没有其他的更多通用和可扩展的功能。因为没有了全局依赖性,而和其他系统的交互又需要确定性地知道其状态,这种方法就变得不切实际了。
2.2.2 异构链系统
侧链是个支持比特币主链和附属链之间去信任交互的提案。但并没有任何和侧链进行富(rich)交互的具体规定:交互被限定在允许和侧链之间相互托管对方的资产,也就是行话所说的双向锚定(two-way peg)。最终也是为了做个框架,通过锚定比特币链和其他链,允许在比特币协议之外进行外部交易,为比特币添加附属的外围功能。从这方面讲,侧链系统更多着眼于可扩展性而不是可伸缩性。
根本上讲,侧链确实没有关于有效性的条款,从一条链(比如比特币)的代币转到另一条链上,安全性只是寄希望于侧链能否激励矿工来一致性地验证交易。比特币网络的安全性无法简单地在其他链上起作用。进而一个确保比特币矿工联合挖矿(复制他们的一致性算力到侧链上),并且同时验证侧链交易的协议也被提出来了。
Cosmos 是个延续侧链思路提出来的多链系统,替换中本聪的 PoW 共识算法为 Jae Know 的 Tendermint 共识算法。本质上,它包含多个使用独立 Tendermint 实例的区块链(在空间 zone 中运行),和一个使用去信任通信的中心(hub)链。跨链通信仅限于转移数字资产(也就是代币),而不是任意信息,然而这种跨链通信是可以返回数据和路径的,比如给发送人通知转账的状态。
和侧链一样,空间链上验证人的经济激励问题也没有解决。一般的假设是每个空间链会各自持有通胀增发的支付代币。设计仍然还比较早期,现阶段的也缺乏在全局有效性上建立可伸缩一致性的经济手段细节。然而相比于那些需要强耦合的系统,为了空间链和中心链间的松耦合性,需要给空间链的参数添加更多灵活性。
2.2.3 Casper
目前关于 Casper 和 Polkadot 之间,还没有完整的讨论和比较,即使是公平和彻底(也不准确)地描述两者。Casper 是正在重塑 PoS 的共识算法,它研究如何让参与方在最终会确定的分叉上押注。本质上,需要考虑即使是长程攻击的情况下,也要保证应对网络分叉的健壮性,还需考虑基础以太坊模型上的可伸缩性。因此,在本质上 Casper 协议的目标比 Polkadot 和以往项目要复杂的多,也偏离了基础的区块链模型。它仍然还没有做出来,不知道将来如何运作,也不知道最终会开发出来的样子。
然而 Casper 和 Polkadot 都代表了有趣的新一代协议,对于以太坊的争论,本质上也是他们的终极目标和实现路径上的差异。Casper 是以太坊基金会主导的一个项目,只是被设计用来作为 PoS 协议的替代,没有从本质上打造可伸缩区块链的意愿。关键还需要一次硬分叉来升级,而不能时可扩展的,因此所有的以太坊客户端和用户都需要升级,否则就得留在原来的前途不明朗的分叉上。因此,这类协议在去中心化系统上的部署会很困难,需要紧密的协调。
Polkadot 在几方面上不同;首先而且也是最重要的,Polkadot 将被设计成完全可扩展和可伸缩的区块链开发、部署和交互测试平台。他将被设计为面向未来的、可以吸收最新的可用区块链技术的平台,且不需要过于复杂的去中心化协调和硬分叉。我们已经预见到了几个应用场景,例如高度加密的联盟链和低区块时间的高频链等,它们不太可能在近期的以太坊上实现。它们最终和以太坊之间的耦合度也会很低,以太坊上也没有支持两者间非信任交互的想法。
简言之,尽管 Casper/以太坊 2.0 和 Polkadot 有一些相似点,我们相信从本质上它们最终的目标是不一样的,并非竞争,在可预见的将来,两个协议会大概率地并存。
3 概要
Polkadot 是一个可伸缩的异构多链系统。这意味着不像以往那些专注于不同程度潜在
应用功能的单个区块链实现,Polkadot 本身被设计成不提供任何内在的功能应用。
Polkadot 提供了中继链(relay-chain),在其上可以存在大量的可验证的、全局依赖的动态数据结构。我们称这些平行的结构化的区块链为平行链(parachains),尽管也不要求它们必须是一条链。
换句话说,Polkadot 会被设计成一个独立链的集合(例如包含以太坊、以太坊经典、域名币、比特币),除了两个非常重要的点:
合并的安全性
去信任的跨链交易性
这两点也是我们称 Polkadot 为可伸缩的原因。从原则上,一个问题在 Polkadot 上被彻底解决了:可以向外扩展,会有非常大数量的平行链。尽管每条平行链在各方面都通过不同的网络模式进行平行管理,但这个系统却有可伸缩的能力。
Polkadot 提供了一个尽量简单的架构,把大部分的复杂性都放在了中间件上。这是个刻意的决定,为了试图减少开发的风险,使必备的软件可以在短时间内开发出来,还能对安全性和健壮性持有信心。
3.1 Polkadot 的哲学
Polkadot 需要提供一个绝对坚实的基座,来在其之上建设下一代共识系统,覆盖从生产级别的成熟设计到初期想法的所有风险。通过对安全性、隔离性、通信能力提供强有力的保证Polkadot 能够允许平行链从一系列特性中选择适合它们自己的。的确,我们预见了各种实验性的经过考虑的区块链特性。
我们看到,传统的高市值区块链(例如比特币和 Zcash)、低市值的概念性区块链和接近零手续费的测试网,是并存在一起的。
我们看到,全加密的暗黑联盟链和高功能性的开放区块链(例如以太坊)也并存在一起,甚至还为之提供服务。
我们看到,实验性的新虚拟机区块链,比如主观时间计费的 Wasm 区块链,在将难度计算问题从类似以太坊的区块链方式,修改成类似比特币的区块链方式。
为了管理区块链升级,Polkadot 将内生支持某种形式的治理结构,很可能基于现有的稳定政治体系,会有一个两院结构,类似于 Yellow Paper Council。底层权益代币持有者作为最高权力机构,会有全民投票控制权。为了反映用户的需求、开发人员的需求,我们期望建立一个合理的两院结构,采纳用户的意见(由绑定的验证人决定)、主要客户端开发者和生态系统玩家的意见。代币持有者会保留最高的合法权,可以形成一个最高法庭来参政、议政、替换或解散这个架构,还有那些我们不怀疑的最终需求。
借用一句马克吐温的谚语:“政府和尿布都得经常换,而且理由都一样”。
然而在大范围共识的机制下组织参政会很琐碎,更多关于替换和新增的质的改变,希望既不是通过非自动的弱法令(例如通过块高度和新协议的形式化证明文档的哈希)来达到一致性,也不是通过在核心共识算法中包含一个高效的高级语言,来改变他自身可能需要改变的各个方面。后者是一个最终目标,然而为了落实一个合理的开发路线图,更可能选择前者。
Polkadot 看重的主要原理和规则有:
最小:Polkadot 需要有尽可能少的功能性。
简单:只要他们可以推给中间件、放在平行链、或用下面要讲的一种优化手段,就不在基础协议里添加多余的复杂性。
通用:没必要在平行链中添加任何要求、约束或限制;Polkadot 需要成为共识系统开发的基石,要尽量通过给模型加入最具适应度的扩展和优化。
健壮:Polkadot 需要提供一个稳定的基础层。为了经济稳定性,需要采用分散的方法,来降低高额奖励这个攻击向量可能引发的问题。
4 Polkadot 的参与方
有四个基本的角色在维持 Polkadot 网络:收集人(collator)、渔夫(fisherman)、提名人(nominator)、验证人(validator)。在 Polkadot 的一个可能实现里,最后一个角色有可能会被拆分成两个:基础验证人和可用保证人(guarantor),将会在 6.5.3 节讨论。
4.1 验证人
验证人有最高权限,帮助在 Polkadot 网络里打包新区块。验证人需要抵押足够多的押金,因为我们允许其他有资金的提名人推举一个或多个可以代表他们的验证人,所以验证人一部分的押金并不是他们自己所拥有的,而是属于提名人的。
一个验证人必须在高可用和高带宽的机器上运行一个中继链的客户端。每个区块上,节点都必须准备接收一个已提交的平行链上的新区块。这个过程涉及接受、验证、再发布候选区块。验证人的任命是确定性的,但实际上也很难预测。因为不能期望验证人拥有所有平行链的全同步数据,所以他们希望把这个提议平行链新区块的工作指派给第三方,也就是收集人。
不同的验证人小组一旦都确定性地批准了自己所属平行链的新块,他们就必须开始批准中继链自身的区块。这包括更新交易队列的状态(也就是从一条平行链的出口队列转移到另一条平行链的入队列)、处理已批准的中继链的交易集合、批准最终的区块、吸收平行链的最终改变。
在我们选择的共识算法下,会惩罚一个没有履行他们职责的验证人。最开始如果不是有意的错误,就只是会扣留他们的奖励,但如果是重复的错误会扣减他们的押金(通过烧毁),例如双向签名(double-signing)或合谋提供一个非法区块等可证明的恶意行为,会导致他们丧失全部的押金(烧毁一小部分,大部分奖励给信息提供方和诚实的验证人)。
在某种程度上,验证人和目前 PoW 区块链的矿池相似。
4.2 提名人
提名人是一个拥有权益的群体,他们把安全性押金委托给验证人。他们没有更多的角色,除了通过有风险地投放资本来表示:他们信任某个特定的验证人(或群体)可以代表他们维护整个网络。按照他们的入金比例,他们也会受到和验证人总押金同样比例的奖励和扣减。
和下面的收集人一样,提名人和目前 PoW 网络的矿工相似。
4.3 收集人
交易收集人是帮助验证人制造有效的平行链区块的群体。他们会运行一个特定平行链的全节点,这也意味着他们有全部的必要信息,可以打包新块并执行交易,就跟目前 PoW 区块链的矿工一样。在正常情况下,他们会收集并执行交易,并创建一个”未密封”(unsealed)的区块,再加上一个零知识证明一起提交给一个或多个当前负责提议(proposing)该平行链区块的验证人。
关于收集人、提名人、验证人的精确关系可能还会修改。起初,我们希望收集人和验证人能够紧密合作,因为可能只有一些(甚至一个)交易量很小的平行链。最初的客户端实现会包含一个 RPC 接口,来支持一条平行链的收集人节点把可证明的有效平行链区块,无条件地提供给一个(中继链)验证人节点。由于维持所有的全同步平行链的成本越来越高,所以我们设计了附加的结构,有助于分离独立的、经济驱动的、和其他的参与者。
最终,我们希望看到收集人群体为了更多手续费,竞争性地去收集信息。在一段时间内,为了持续增长的份额收益奖励,这些收集人可能只服务于特定的验证人群体。或者自由职业(freelance)的收集人也可以简单地创建一个市场,提供有效的平行链区块,而不是获得立即支付的竞争性份额奖励。同样地,去中心化的提名人群体也会允许多个有抵押的参与者来协调和分担验证人的职责。这种能力保证了参与的开放度,有助于成为更加去中心化的系统。
4.4 渔夫
不像其他的两个参与方,渔夫并不直接和区块打包的过程相关。他们是独立的“赏金猎人“,激励他们的是一次性的大额奖励。
准确地说,由于渔夫的存在,我们才能减少恶意行为的发生,即使发生希望也只是因为私钥不小心泄露了,而不是故意的恶意企图。起这个名字的出发点是考虑到他们期望收益的频率和最终奖励的大小。
渔夫只要及时举报并证明至少一个有抵押的参与方存在非法行为,他们就能获得奖励。非法行为包括对两个有相同父块的不同区块进行签名,或在平行链上批准一个无效区块。为了预防由于私钥泄露给渔夫所导致的过渡奖励,渔夫上报关于单个验证人的非法消息签名的基础奖励是从最小开始的,这个奖励会随着其他渔夫上报更多的非法签名而逐渐增加。依据我们基本的安全性假设:至少三分之二的验证人是诚实的,渐近线将设置在 66%。
渔夫某种程度上和目前区块链系统的全节点相似,他们所需要的资源相对较少,也没必要承诺稳定的在线时间和大的带宽。渔夫有如此大的不同,所以他们只需要提交很少的押金。这个押金用于预防浪费验证人计算时间和计算资源的女巫攻击。它是立即可以提现的,很可能不会比等值的几个美金更多,但如果监测到一个不当行为的验证人,可能会收获很大的奖励。
5 设计综述
本章试图给出一个系统的全局完整描述。对系统更加深入的解释会在接下来的一章中
给出。
5.1 共识
在中继链上,Polkadot 通过一个现代的异步(asynchronous)拜占庭容错(BFT)算法达成对有效区块的相互共识。算法受简单的 Tendermint 和 HoneyBadgerBFT 启发。后者在有任意网络缺陷的架构下,只要满大部分验证人是诚实的,就能提供了一种高效的容错算法。
也许一个权限证明(PoA)模式的网络就足够了,然而 Polkadot 是个可以在全开放和公开的场景下部署的网络,不需要信任任何特殊的组织和当权者来维护它,因此我们需要一种管理验证人群体并且激励他们守法的方法。我们选择使用以 PoS 为基础的共识算法。
图 2展示了收集人收集并且广播用户的交易,也广播候选区块给渔夫和验证人。展示了用户提交一个交易,先转移到平行链外部,然后通过中继链再转移到另一条平行链,成为一个可以被那里的账户执行的交易。
5.2 权益证明
我们假设网络可以度量每个账户有多少权益(stake)。为了更轻松地和现有系统对比,我们把度量单位称为 “代币(tokens)”。不幸的是由于它仅仅能作为对账户简单的价值度量,也没有任何个性化,因此多种原因使这个术语并不那么理想化。
通过一个被提名的权益证明(Nominated Proof-of-Stake NPos)结构,我们猜想验证人的选举不会很频繁(很可能是一个季度一次,最多一天一次)。通过按比例分配的增发出来的代币(很可能大约 10%,最多每年 100%)和收集到的交易手续费来进行激励。虽然货币增发一般都会造成通胀,但因为所有代币持有者都有公平参与的机会,所以代币持有者的资产不会随着时间而遭受损失,他们会很开心地参与到该共识机制中来。全网权益证明的开展所需的抵押必须达到一个特定的最小比例。会根据市场机制,达到有效的代币增发这个目标。
验证人严重依赖他们抵押进来的权益。现存验证人的押金会从他们离职的时候开始,要再保留更长时间(也许 3 个月左右)。这么长的押金冻结期是为了还能惩罚将来的不当行为,直到区块链周期性的检查点到来。不当行为会遭到例如减少奖励等的惩罚,如果是故意破坏网络的完整性,验证人将会损失部分或全部的权益,转移给其他验证人、信息提供者或全部权益持有者(通过烧毁)。例如一个验证人试图同时批准不同分叉上的两个分支(有时也被称为短程攻击),就会被后面的方法鉴别并遭到惩罚。
检查点锁定器(checkpoint latch)能规避长程“无权益抵押”(nothing-at-stake)攻击,防止比一般长度更长的高度危险的链重构(chain-reorganistation)发生。为了保证最新开始同步的客户端不会被误导进错误的链,网络会出现定期的“硬分叉”(最长也就是验证人的押金冻结期),把最近检查点区块的哈希值硬编码(hard-code)进客户端。将来通过逐步递减有限链的长度(finite chain length),或周期性地重置创世块(genesis-block),这种方法会运行得很好。
5.3 平行链和收集人
每条平行链将给中继链提供同样的安全性保证:平行链的区块头会被包含进中继链的区块中,还跟着一些确认信息,用来保证不会发生链重构或双重花费(double-spending)。类似于比特币侧链和联合挖矿的安全性保证,Polkadot 也强力保证平行链状态交易的有效性。会依据密码学算法,把验证人随机地分成很多个组。一条平行链对应一组,甚至每个块的组也都可能不一样。这个设置意味着中继链至少也要和平行链的出块时间一样短。本文不讨论分组的特定决定方式,可能要么是围绕类似 RanDAO 的提交-披露(commit-reveal)框架,要么结合平行链前一个区块的密码学哈希值。
这样的验证人组需要提供平行链的候选块,还要保证它们是有效的(否则损失押金)。有效性围绕两个重要的点:第一,它是内生有效的,所有的状态转换被公正地执行,包括引用的外部数据也被公正执行(比如交易)。第二,参与方需要可以简便地访问候选块的任何外部数据,例如外部交易等,然后就可以下载这些数据并手工执行候选块。验证人可以提交没有包含任何外部交易数据的空块(null),如果他们这样做,就要承受奖励减少的风险。他们和收集人在平行链的一个 gossip 协议上工作,收集人把交易收集到块里,并且要提供一个非交互的零知识证明(noninteractive zero-knowledge),用来证明本子块的父块是有效的(为该工作收取任何手续费)。
防止垃圾(spam)数据的方法留给了平行链协议自身:中继链本质上不规定“计算资源计量” 和 “交易费” 。本质上也不强制平行链规定相关协议(尽管权益持有者不太可能愿意接纳一个没有提供合理机制的平行链)。这里明确地说明了并不会都像以太坊的手续费规则,也可以类似比特币的区块链手续费模型,或其他任何还没有提出来的垃圾预防模型。
Polkadot 的中继链本身将很可能存在一个类似以太坊的账户和状态模型,可能是 EVM 的衍生版本。因为中继链节点将需要做大量的其他计算,将会通过提高手续费尽量减小交易吞吐量,我们的模型还会包含块大小的限制。
5.4 跨链通信
Polkadot 最关键的部分是跨链通信。因为在平行链间可以存在某种信息通道,我们才说 Polkadot 是可伸缩的多链系统。在 Polkadot 中,通信可以很简单:一条平行链中的执行交易的时候(依据那条链的逻辑),可以给第二条平行链或中继链转发一个交易。目前生产环境中的区块链外部交易,都只能是完全异步的,他们并没有给它的来源方返回任何信息的原生能力。
为了保证最小的实现复杂度、最小的风险和最小的平行链架构束缚,这些跨链交易和目前标准的外部交易没有区别。这些交易会有个来源方字段,用来辨别平行链的身份,还有个可以是任意长度的地址。跨链交易需支付的手续费,并不像目前的比特币或以太坊系统那样,而是必须通过来源平行链和目的平行链的谈判逻辑来管理。一个在以太坊的Serenity 版本中提出的改进提案,会是一个简单管理这种跨链资源支付的方法,尽管我们假设其他人会提出更先进的方法。
跨链交易的问题可以用一个简单的队列机制解决,这个队列用梅克尔树(Merkle tree)来保证数据真实。中继链的任务是把交易从来源平行链的出口队列转移到目的平行链的入队列。已转发的交易会在中继链上被引用,而不是中继链自身的交易。为了预防一条平行链往另一条平行链发送垃圾交易,规定在在前一个块结束后,发送每一个交易时,目标平行链的入队列不能太大。如果区块处理完后,入队列太大,那么目的平行链会被看做是饱和了,接下来的几个块里就不会再路由交易给它,直到入队列降到临界值以下。这些队列在中继链上管理,允许各平行链相互决定他们的饱和度大小。如果再往停滞的目标链发送交易,这样就可以同步地报告失败了(因为不存在返回路径,如果第二个交易也是同样的原因失败了,它可能也不会给来源调用者发送回复,这就需要用到一些其他的恢复方法)。
5.5 Polkadot 和以太坊
归功于以太坊的图灵完备特性,至少在简单的可论证的安全性边界内,我们期望 Polkadot 和以太坊有丰富的交互可能性。简而言之,我们预想到了,从 Polkadot 出来的交易,可以让验证人先签名,然后再喂给以太坊,在那里通过一个交易转发(transaction-forwarding)合约来解释和执行。反方向,我们也预想到了,从以太坊上的一个 “外向合约”(break-out contract)中的特殊格式日志,可以快速地证明一个消息是否真的要被转发。
5.5.1 从 Polkadot 到以太坊
通过选择一个拜占庭容错算法,验证人经由授权投票产生的一系列权益持有者组成,我们能够获得一个安全的共识机制,用不经常更改的合适数量的验证人。在一个总共有 144 个验证人的系统内,4s 出块时间和 900 个块的最终性(允许举报、惩罚、修复类似双向投票的恶意行为),一个区块的有效性可以合理地考虑为用最少 97 个签名证明(144的三分之二再加一),然后跟着的是 60 分钟无风险注入的验证时间。
以太坊可以包含一个控制和维护 144 个签名的“内向合约”(break-in contract),由于椭圆曲线数字签名的验签操作只要花费 EVM 3000 gas 的计算量,而且因为我们只希望验证操作发生在大多数的验证人里(而不是全体),以太坊确认一个从 Polkadot 来的指令的基础花费不会超过 300,000 gas——仅仅是区块 550 万 gas 限制的 6%。增加验证人的数量(只有在处理数十个区块链的时候才必要)不可避免地会增加成本,然而很明显可以期望到随着以太坊技术的成熟和架构的改进,交易吞吐量会随着时间而增加。另一个事实是不是所有的验证人都会参与(例如只有最高押金的验证人才会做这个任务)这种结构的限制会比较合理。
假设这些验证人每天轮换(更保守的、更可能接收的是每周,甚至每月),网络给维持这个以太坊转接桥的成本大约是 540,000 gas 每天,或者按照当前的 gas 价格,45 美金一年。一个通过转接桥的基本转发交易会花费大约0.11美金;当然另外的合约计算会耗费更多。通过缓存和捆绑多个交易,内向的交易花费可以简单地分担,减少每个交易的花费。如果一次转发需要凑够 20 个交易,那么转发一笔基本交易的花费会降低到大约0.01金。
在这个模型中,Polkadot 的验证人节点除了签名消息之外只需要再做很少的事情。为了能够把交易路由到以太坊网络里,我们假设任何一个验证人需要属于以太坊网络,更可能的只需提供很少的奖励给第一个在网络上转发消息的人(奖励会支付给交易发起人)。
5.5.2 从以太坊到 Polkadot
使用一个叫做日志的概念,把交易从以太坊上转发到 Polkadot 上。当一个以太坊合约希望派生出一个交易给 Polkadot 上面的某一条平行链,它只需简单地调用一个特殊的“外向合约” 就好。那个外向合约会索取任何必须的费用,然后生成一个日志打印指令,以便于通过梅克尔树和有块头哈希来证明它的存在。
在下面的两个情况中,可以非常简单地证明有效性。原则上,唯一的要求是每个 Polkadot 节点都要运行一个全同步的标准以太坊节点。然而这本身就是非常重的依赖。一个更轻量的方法是提供一个简单的证明,仅需要包含正确执行该交易所必须知晓的以太坊的那部分状态树,然后再检查日志的有效性。这种类似简单支付验证(SPV-like)的证明不需要提供大量的信息。更方便的是,验证人可能完全不需要自己运行节点,Polkadot 内的押金系统能支持第三方参与者来提交块头,因为其他第三方(也就是所说的渔夫)也可能提供一个他们块头是无效的证明(具体地说就是状态根和回执根是错误的),所以这些人也冒着损失他们押金的风险。
在一个类似以太坊这样的无最终确定性(non-finalising)的 PoW 网络上,不可能存在最终可证明的一致性。为了适应这个,程序需要依赖一定的块确认数量,或者直到那个依赖的交易已经在链内某一特定深度了。在以太坊上,这个深度从最脆弱的 1 个块(网络都还不完全知道)延伸至 1200 个块(从 Frontier 上线到以太可交易)。在 Homestead的稳定版本上,大部分交易所选择了 120 个块这个数字,我们也可能会选择相近的参数。所以我们可以想象 Polkadot 这边的以太坊接口有一些简单的功能:可以接受以太坊网络的新块头,并能验证它的 PoW,可以结合一个有足够深度的块头(还有 Polkadot 内转发的相应信息),来验证从以太坊那边的外向合约打印出来的特定日志的证明,还可以接收关于之前收到的但还没有确定的块头里包含无效的回执根的证明。
需要有一个转发激励机制,才能够真正地在 Polkadot 网络里得到以太坊块头的数据(还有任何关于有效性和一致性的 SPV 证明)。这可能设计成只是个简单的支付行为(由在以太坊那边收集的手续费资助),转给任何能够提供一个有效块头的人。为了能够应对分叉,验证人需要保留最近几千个块的信息,要么由协议原生支持,要么通过中继链上的合约。
5.5.3 Polkadot 和比特币
Polkadot 和比特币的交互是非常有挑战性的:从两边的网络角度考虑,一个所谓的“双向锚定” 架构会非常有用。然而由于比特币的局限性,如何提供一种安全性的锚定个是非常艰难的任务。可以使用类似以太坊的流程,从比特币转发一个交易到 Polkadot:由一个受 Polkadot 验证人控制的“外向地址”(break-out address)来托管转账过来的代币(和附属的数据)。可以通过结合一个确认期,来激励先知(oracles)提供 SPV 证明,先知们通过标识一个非一致性的区块,来证明一笔交易存在双花的可能。任何在外向地址里托管的比特币原则上也被相同的验证人群体控制。
问题是如何保证这些比特币,是被轮换的验证人集合所控制的。相比于以太坊那样可以根据在合约内任意组合签名规则的方法,比特币的局限性就更多了,大部分的比特币客户端只接受最多 3 方的多重签名。扩充至 36 个或者大家希望的最高至上千个的终极提议,在现有的比特币协议里还不可能实现。一个选择是修改比特币的协议来支持这个功能,然而硬分叉在比特币的世界里非常难以安排和讨论。另一个可能性是使用门限(threshold)签名的方法,用密码学的结构来构造一个被被多个私钥片段共同控制的公钥地址,要制造一个有效的签名需要这些人的大部分或全部人都参与。不幸的是,和比特币的 ECDSA 相比,门限签名计算起来非常耗资源,而且是多项式级别的复杂度(polynomial complexity)。
由于入金的安全根本性由有抵押的验证人决定,所以另一个选择是减少多重签名的私钥持有人数量至只有重度质押的验证人才能参与,这样门限签名就变得可行了(或者最糟糕的情况,也可能直接用比特币的原生多重签名)。由于要预防验证人的非法行为,这个方法会降低可托管的比特币总量。然而这是一个优雅的妥协,可以简单地设置能够安全地在两个网络里的转移的基金总额上限(验证人攻击失败可能会受到的押金损失,和攻击成功可能的会收到的比特币潜在收益对比)。
因此,我们认为在现有的比特币框架下,开发出一个能够在两个网络间安全转移比特币的平行链是不现实的,尽管如此,比特币的持有者还可以在不确定的将来协调这些工作。
6 协议细节
本协议可以大致分为三个部分:共识机制、平行链接口、跨链交易路由系统。
6.1 中继链操作
中继链会类似以太坊,也是基于状态的,包含一个账户信息到状态存储的映射关系,其中信息主要包含余额和交易计数器(防止重放)。把账户系统放在这里的目标是:记录每个身份在系统里控制了多少权益。但还有一些值得注意的差异:
不能通过交易部署合约;这是为了让中继链尽量缺乏功能性,不支持公开部署合约。
没有资源计数器(gas);因为公众能够调用的一些功能是固定的,gas 记录系统的原理就不适用了。因此在所有功能中,会使用一个更通用的手续费标准,这样就能更高效地执行那些动态代码,交易格式也会更简单。
会有一些包含特殊功能的默认合约,他们管理交易的自动执行和网络消息的输出。
中继链会有一个基于 EVM 的虚拟机,但为了最大程度地简化会做很多修改。它会有一些内置合约(类似于地址在 1-4 之间的那些以太坊合约)运行平台的特定功能,包括共识合约、验证人合约、平行链合约。
如果不用 EVM,很有可能会选择 Web-Assembly(Wasm);这样的话,所有结构还是相似的,但是这些基于 Wasm 的内置合约使用的是通用功能的语言,而不再是 EVM 上面的那些带有很多限制的不成熟语言。
还可能借鉴目前以太坊上衍生出来的其他方面的概念,例如在 Serenity 版本中提出来一些改变,比如为了能在一个块里并行执行那些没有状态冲突的交易,将交易的回执格式简化等。
Polkadot 有可能会部署一个类似于 Serenity 的纯净(pure)区块链系统,它不包含链的任何基础协议。但我们觉得这会带来更多的复杂性和开发不确定性,所以不太值得在目前阶段就去实现这么一个更高效且简洁的伟大协议。
为了管理共识机制,需要很多小片儿的功能:验证人集合、验证人机制、平行链等。这些都可以放在一个整体的协议中。然而为了实现模块化,我们会把这些描述成中继链的合约。这意味着他们都是中继链共识机制管理的对象(类似面向对象语言),但不一定是类似 EVM 的字节码,也不一定能通过账户系统寻址。
6.2 权益合约
这个合约管理着验证人集合:
哪些账户是验证人;
哪些在短期内可以变成验证人;
哪些账户为了提名验证人而质押了权益
每个人的属性,包括余额、可接受的押金比例、地址列表、会话(session)身份
它让账户在想成为验证人的时候可以来注册(需满足某些要求)、也可以提名某用户、在想退出验证人角色的时候还可以来退出。它自身还包含了一些用于验证和达成一致性的功能。
6.2.1 权益代币的流动性
通常我们希望能从网络中把尽可能多的权益代币都抵押进来,因为这关系到抵押权益的总市值和网络的安全性。这可以很简单地通过货币增发和收益分发来激励验证人。然而,这么做会出现一个问题:如果代币都被抵押在权益合约里,用于防止作恶,那么如何保证代币在一定程度上的基本流动性,进而支持价格发现呢?
一种方法是提供一个前向衍生合约来管理由抵押代币衍生出来的二级代币。但这在非信任的情况下很难实现。这些衍生代币无法等值交易,原因就和欧元区的不同政府发行的债券一样:抵押的代币有可能被扣减而价值降低。至于欧洲政府,他们还可能会违约。对于由验证人质押而来的代币,要考虑到验证人的恶意行为可能会遭到惩罚的情况。
基于我们的原则,我们选择了一种更简单的方案:不能把所有的代币都质押进来。这意味着一部分(可能 20%)代币会被强制保持可流通的状态。尽管从安全的角度上讲,这个方案不完美,但也没有从根本上影响网络的安全。相比于 100%的质押,也将只可能没收 80%的权益作为赔款。
我们还将会使用一个反向拍卖机制来公平地决定质押代币和流通代币的比例。有兴趣成为验证人的代币持有者可以给权益合约提交一个请求,说明他们希望支付的最小比例。每次会话(会话可能每个小时算一次)开始的时候,系统会根据每个意向验证人的押金和支出比例来填满验证人的插槽。一个可能的算法是从提交押金的验证人中,选择那些押金满足如下条件的人:押金不高于“总押金目标/插槽数量”且不低于“次低押金”的一半。如果不够填满这些插槽,那么我们会迅速降低这个“次低押金”来满足条件。
6.2.2 提名
用户可以把手中的权益代币非信任地交给一个已激活的验证人,让他们来履行验证人的职责。提名通过一个“批准-投票”系统来完成。每个准提名人可以给权益合约提交一个声明,指出他们信任的可以履行职责的一个或多个验证人的身份。
在每个会话期间,提名人的押金会散布给一个或多个代表他们的验证人。这些验证人的押金是等额分配的。提名人的押金用于验证人承担他们的责任,将能够获得利息或承受相应的扣减。
6.2.3 押金没收/烧毁
验证人的某些行为会导致惩罚性地没收他们的押金。如果押金降低到允许的最小值,会话就会提前结束,另一个会话开始。一个不完整的将导致惩罚的行为列表:
属于一条平行链的验证人小组,却不为该平行链的区块提供合法性验证;
签名了该平行链一个不合法的区块;
不去处理出口队列中被投票为已生效的消息;
不参与到共识流程中;
在中继链两个竞争性的分叉上同时签名。
有些行为会威胁到网络的完整性(例如签名不合法的平行链区块,或者签名多个分叉),为了驱逐这些验证人,会没收他们的押金。另外还有一些不那么严重的行为(例如不参与到共识流程中)或者那些无法清晰判别的行为(例如处于一个低效的小组),只会导致一小部分的押金被处罚。在后一种情况中,可以采用一个二级小组的搅拌功能来让恶意节点遭受到比正常节点更多的惩罚。
因为实时同步每条平行链的区块是个非常大的工作,所以在某些情况下(多叉签名和不合法签名),验证人无法很方便地检测到自身的不当行为。在这里有必要指出验证人之外的一些参与方也可以举报这些非法行为,并从中获得奖励,但他们和渔夫还不太一样。
因为有些情况非常严重,我们希望可以很简单地从没收的押金里支付奖金。我们通常倾向于使用烧毁代币的方法进行重分配,而不是采用批量转账的方法。烧币可以从整体上增加代币的价值,也就可以补偿整个网络而不仅是涉及到的特定几方。这主要是作为安全防范机制,只有非常恶劣的行为才会到会非常大金额的惩罚。
很重要的一点是奖金必须足够高才能让网络觉得验证工作是值得做的,当然也不能比成本高太多,否则会招致那些足够有钱的、精心策划的国际级别的犯罪黑客攻击那些不幸的验证人,迫使他们做出非法行为。
规定的奖金也不能比恶意验证人的押金高太多,否则会不正当地激励非法行为:验证人为了奖金自己举报自己。解决方法是要么直接限制成为一个验证人的最小押金量,要么间接教育提名人:如果验证人押金太少,他们可能没有足够的动机来遵守规则。
6.3 平行链的注册
这个模块用于记录系统中的每条平行链。它是个相对简单的类似数据库的结构,管理着每条链的静态信息和动态信息。
静态信息包括链的索引(一个整数)和验证协议的标识。协议标识用于区分不同的平行链,只有这样,验证人才能运行正确的验证算法 ,然后提交合法的候选块。一个最初的概念验证版本会关注于如何把一个新的验证算法放在客户端中,这样每增加一个新种类的区块链,就需要一次硬分叉。然而在保证严格和高效的情况下,还是有可能不用通过硬分叉就能让验证人知晓新验证算法。一个可能的实现方法就是用一种确定的、本地编译的、平台无关的语言来描述平行链的验证算法,例如 WebAssembly 等。为了验证这种方法的可行性,我们还要做更多的调查,毕竟如果能够避免硬分叉还是会有很大优势的。
动态信息涉及交易路由系统,比如必须对平行链的的入口队列进行全局共识(在下一节讨论)。
必须通过全民公投才能注册新的平行链。这本来可以直接内部管理,但通过一个外部的全民公投合约会更好,因为这个合约还可以用于更多其他场景的治理。关于平行链投票注册系统的具体参数(例如法定人数、多数派的比例)会用形式化证明做成一个不常更新的“主宪法”系统,当然初始阶段也可能只是用传统的方法。具体的公式不在本文的讨论范围内,例如占 2/3 的多数派通过,并且全系统 1/3 的代币都参与了投票才算通过。还有一些暂停和删除平行链的操作。我们希望永远不要暂停一条平行链,但这个设计是为了能应对平行链的一些紧急情况。最明显的情况是由于验证人运行了平行链的多种客户端实现,导致可能无法对某区块达成共识。我们也鼓励验证人使用多种客户端实现,以便能尽早检测到这类事情,防止押金被扣减。
因为暂停操作是个紧急措施,所以会采用验证人动态投票的方式,而不是通过全民公投。对于重启操作,可能直接通过验证人投票,也可能通过全民公投来完成。
删除操作平行链只能通过全民公投来进行,而且要提供一个宽松的平滑退出过渡期,能让它们成为一个独立的区块链或变成其他共识系统的一部分。这个期限可能是几个月,而且最好由平行链根据自身的需求来制定。
6.4 打包中继链区块
区块打包的过程本质上是共识的过程,也是把基本的数据变得有意义的过程。在一个 PoW 链里,打包有一个同义词叫挖矿。在本方案里,它涉及收集验证人对于区块有效性、可用性、一致性的签名,这些区块包括中继链区块和它所包含的全部平行链的区块。
底层的 BFT 共识算法也不是当前的工作范围。我们不描述它,而是使用一种原语描述一种由共识推动的状态机。最终我们希望能受到一些现有共识算法的启发:Tangaora(Raft 的 BFT 变体)、Tendermint 和 HoneyBadgerBFT。共识算法需要并发地对多条平行链达成共识。假设一旦共识达成,我们就可以不可辩驳地记录哪些人参与了其中。我们也可以在协议内把不正当行为的人缩小到一个小组中,里面仅包含哪些恶意参与者,这样就可以在惩罚时可以降低附带伤害。
以签名声明形式存在的这些证明、中继链的状态树根和交易树根一起存储在中继链的块头里。
对于中继链区块和平行链区块的打包过程是在同一个共识生成机制中,两类块共同组成了中继链的内容:平行链并不是由他们的小组隔离地进行“提交”之后再被收集的。这虽然导致中继链的流程更加复杂,但也让我们可以在一个阶段里就完成整个系统的共识,能够将延迟最小化,并且能支持更加复杂的数据可用性,这在路由流程中将会很有用。
可以用一个简单的表格(二维的)来建模每个参与共识机器的状态。每个参与方(验证者)都有一系列以签名形式存在的来源于其他参与方的信息,描述着每条平行链的候选块和中继链的候选块。这些信息有两部分数据:
可用性(Availability):对于出口队列里这个块的已提交交易,验证人是否有足够的信息以便在下一个块正确地验证平行链的候选块?他们可以投 1(知道)或 0(不确定)。当他们投了 1,他们就承诺在后续的投票中也要这么投票。后面的投票和这个不对应会导致惩罚。
有效性(Validity):平行链的区块是否有效,是否包含了引用的所有的外部数据(比如交易)?这和验证人对平行链的投票相关。他们可以投 1(有效)、-1(无效)或 0(不确定)。只要他们投了非 0,他们就承诺在后续的投票中也要这么投票。后面的投票和这个不对应会导致惩罚。
所有验证人都必须投票;在上面的规则限制下,还可以重新提交投票。共识流程可以像很多标准 BFT 共识算法那样来建模,每条平行链是并行的。除了有很小的概率把少数恶意参与者都被分配到了同一条平行链小组之外,共识算法在整体上还是能支撑网络,最坏的情况也不过只是出现一个或多个无效平行链区块而死锁的情况(何对责任人进行的惩罚)。
判断一个独立区块是否有效的基本规则(允许全部的验证人作为一个整体达成共识,然后这些平行链区块就成为中继链上具有一致性的数据引用):
需要有至少三分之二的验证人投票“是”,并且没人投“否”。
需要超过三分之一的验证人对出口队列消息的可用性与否投票“是”。
对于有效性而言,如果至少有一个“是”且至少有一个“否”投票,一个特殊的条件就开启了,整个验证人就必须投票决定是否有恶意参与者,或者是否产生了意外的分叉。除了有效和无效之外,还支持投第三种票,等效于同时投了“是”和“否”,表示这个节点有相互冲突的意见。这可能是因为节点所有者运行的多种客户端实现而产生了分歧,也预示着平行链协议可能存在不清楚的地方。
当所有验证人的票都被记录过后,发现赢的那个意见少于一定数量的票(详细参数最多可能是一半,也许更少),那就可以假设平行链发生了意外的硬分叉,这条平行链的共识就会被自动暂停。否则,我们假设就是有恶意行为发生,并惩罚那些给输的那个意见投了“是”票的验证人。
结论是只有足够的签名票数才能达成一致性,然后中继链的区块就打包完成了,开始打包下一个区块。
6.5 中继链区块打包的改进
打包区块的方法确保着系统的正常运行,因为每条平行链的关键信息都要由超过三分之一的验证人来保证可用性,所以它并不能很好地伸缩。这意味着随着更多平行链的增加,每个验证人的工作也会增加。
在开放的共识网络中,如何保证数据的可用性还是个有待解决的问题,然而还是有一些方法可以缓解验证人节点的性能瓶颈。一个简单的方案是:验证人只负责验证数据的可用性,那他们就没必要自己真正地存储、通信和复制数据。第二个方案是数据隔离,这个方案很可能和收集人如何组织数据相关,网络可以对收集人有一定的利息或收入激励,让他们保证提供给验证人的数据是可用的。
然而,这个方案也许可以带来一点伸缩性,但仍没有解决根本问题。因为添加更多平行链通常需要增加验证人,网络资源的消耗(主要是带宽)以链总数的平方的速度增长,长期来看这是不可持续的。
最终,我们可能会思考对于保证共识网络安全的根本限制,网络对带宽的需求增长速度是验证人数乘以消息总进入数。我们不能信任那些将数据分开在不同节点存储的共识网络,因为这会将数据和运算分离。
6.5.1 延迟性介绍
简化这个规则的方法是先了解即时性的概念。33% + 1 的验证人最终(eventually)需要对数据的有效性进行投票,而不是立刻(immediately)投票,我们可以更好地利用数据指数级传播的特性,来帮助应对数据通信的峰值。一个合理的等式(尽管未证明):
(1) $$延迟 = 验证人数 * 区块链数$$
在目前的模型下,系统的规模只有随着链的个数而伸缩,才能保证数据的分布式运算;因为每个链至少需要一个验证人,对于可用性投票的复杂度,我们把它降到了只和验证人个数呈线性关系。现在验证人数可以和链个数类似的增长,不再是:
(2) $$延迟 = 数量^2$$
这意味着随着系统增长,网络内带宽和延迟性的增长是可知的,但达到最终确定性所需的区块数目仍然是以平方增长。这个问题将会继续困扰我们,也可能迫使我们打造一个“非平层”(non-flat)的架构,也就是会有很多按层级结构排列的Polkadot 链,通过一个树形的结构来路由消息。
6.5.2 公众参与
微意见(micro-complaints)系统是一种可以促进公众参与的方式。可以有一些类似于渔夫的外部参与方来监管验证人。他们的任务是找到提供了非可用数据的验证人。他们可以给其他的验证人提交一个微意见。这个方案需要用 PoW 或押金机制来防止女巫攻击,否则它会让整个系统失效。
6.5.3 可用性保证人
最终的一个方案是从验证人里提名出第二个小组作为可用性保证人(Availability Guarantors)。他们也需要和普通验证人那样交押金,而且有可能来源于同一个组(会在一个长周期里选择他们,至少也是一个会话周期)。和普通验证人不同的是,他们不需要在各条平行链间切换,而只需要形成一个单一的小组,监管所有重要跨链数据的可用性。
这个方案还有个优势是能缓解验证人数和链个数之间的等式关系。链个数可以最终增长(与原始链的验证人小组一起),然而各参与方仍可以保持次线性增长或常量增长,尤其是那些参与数据可用性验证的人。
6.5.4 收集人设置
系统需要保证的一个重要方面是:合理地选择那些制造平行链区块的收集人。如果一条平行链由某个收集人控制了,那么外部数据是否可用就会变得不那么明显,这个人就可以比较简单地发动攻击。
为了尽可能地广泛分配收集人,我们可以用伪随机的方法来人工衡量平行链区块的权重。在第一个示例中,我们希望验证人倾向于选择权重更大的候选块,这是共识机制的一个重要部分。我们也必须激励验证人找到最大权重的候选块,验证人可以把他们的奖励按比例分配给这些候选块。
在共识系统里,为了确保收集人的区块被选中的机会是平等的,我们用一个连接所有收集人的随机数生成器来决定每个候选块的权重。例如用收集人的地址和一些密码学安全的伪随机数做异或(XOR)运算来决定最优的块(获胜票)。这给了每个收集人(更准确地说是每个收集人地址)随机公平地打败别人的机会。
验证人通过女巫攻击来生成一个最接近于获胜票的地址,为了阻止这种情况,我们会给收集人的地址加上一些惰性。一个很简单的方法是需要他们的地址有基本的余额,另一个更优雅的方式是综合考虑地址的余额来计算获胜的概率。这里还没有完成建模,我们很可能会让很少余额的人也可以成为收集人。
6.5.5 区块超重
如果一个验证人集合被攻击了,他们可能会生成一个虽然有效但要花费大量时间来执行的区块。这个问题来源于一些特定的难解数据题,比如大质数因式分解难题等,验证人小组可能需要非常长的时间才能解出答案,如果有人知道一些捷径,他们的候选块就有巨大的获胜优势。如果一个收集人知道那个信息,而其他人都在忙着计算老的块,那么他就
有很大的优势让他的候选块获胜。我们称这种叫超重(overweight)块。
为了防止验证人提交这些大幅超出普通区块的超重块,我们需要添加一些警告:因为执行一个区块要花费的时间是相对的(根据它超重的程度),所以最终可能的投票结果会有三种:第一种是这个区块绝对没有超重,超过 2/3 的验证人声明他们可以在一定时间内算完(例如出块时间的 50%);另一种是这个区块绝对超重了,超过 2/3 的验证人声明他们无法在限定的时间内执行完这个区块;再一种就是意见分歧基本持平,这种情况下我们会做一些惩罚。
为了保证验证人能预测他们提交的区块是否超重,他们可能需要公布自己在每个块上的执行表现。经过一段时间后,他们就可以通过和其他节点的比较来评估自己处理器的性能。
6.5.6 收集人保险
还有一个问题留给了验证人:为了检查收集人区块的有效性,他们不能像 PoW 网络那样,而是必须自己计算里面的交易。恶意收集人可以填充非法或超重的区块给验证人,通过让他们受害(浪费他们的资源)来获取大量的潜在机会成本。
为了预防这个,我们为验证人提供了一个简单的策略。第一:发给验证人的平行链候选块必须要用有钱的中继链账户签名,如果不这么做,验证人会立即丢弃这个块。第二:会用组合算法(或乘法)对这些候选块进行排序,因素包括高于一定限额的账户余额、收集人过去成功提交的区块数(除去那些有惩罚的)、和获胜票的接近程度。这里的限额应该等于提交非法块的惩罚金。
为了警示收集人不要发送非法或超重的交易给验证人,任何验证人都可以在下一个区块中打包一个交易,指出那个非法的区块,并将那个收集人部分或全部的余额都转给那个受害的验证人。这种交易的优先级高于其他交易,使得收集人不能在惩罚之前转走他的余额。惩罚金额可能是动态决定的,也很可能是验证人区块奖励的一部分。为了阻止验证人任意没收收集人的钱,收集人可以对验证人的决定进行上诉,成立一个由验证人随机组成的陪审团,并交一些押金。如果陪审团发现验证人是合理的,那这笔押金就给陪审团了。如果是不合理的,押金退回给该收集人,而验证人要受到惩罚(因为验证人是核心角色,惩罚会比较重)。
6.6 跨链交易路由
跨链交易路由是中继链和其验证人的核心功能。这里管理着主要的逻辑:一个提交的交易(简言之为“提交”)是如何从一个来源(source)平行链的出口被强制地路由到另一个目标(destination)平行链里,而且无需任何信任人。
我们很小心地选择了上面的词语;在来源平行链里,我们无需一个明确约束这个提交的交易。我们模型里的唯一约束是:平行链必须尽力按照全部的出口能力打包,这些提交就是他们区块执行的结果。
我们用一个先进先出(FIFO)的队列组织这些提交。作为路由基准(routing base)的队列个数可能在 16 个左右。这个数字代表着我们可以直接支持的平行链性能,而不用采用多相(multi-phase)路由。Polkadot 一开始会支持这种直接路由,然而我们也可能会采用一种多相路由操作(超路由 hyper-routing)作为将来系统伸缩的方式。
我们假设所有参与方都知道下两个区块 n,n+1 的验证人分组情况。概括而言,路由系统有如下阶段:
收集人s:合约成员中的验证人 V[n][S]。
收集人s:FOR EACH 小组s:确保合约里有至少一个验证人 V[n][S]。
收集人s:FOR EACH 小组s:假设出口[n-1][s][S]是可用的(上个区块里所有对 S 提交的数据)
收集人s:为 S 构造候选块 b:(b.header, b.ext, b.proof, b.receipt, b.egress)。
收集
学分: 21
分类: Polkadot
标签:
白皮书
Polkadot
跨链
点赞 1
收藏 4
分享
Twitter分享
微信扫码分享
你可能感兴趣的文章
一文读懂跨链桥的七大关键漏洞
250 浏览
八大关键的跨链安全考量
1102 浏览
Filecoin IPC粗略解读
669 浏览
聚焦 Solidity、DeFi 与跨链桥:确保 opBNB 生态安全发展
1111 浏览
一文读懂跨链流动性质押通证
737 浏览
如何获取 stargate 跨链数据
693 浏览
相关问题
在本地执行polkadot --dev测试,但议会时间不会快速变动
0 回答
请问有哪些有关跨链交互协议栈的文档资源,现在只有一篇论文中描述过跨链交互协议栈的内容,可借鉴内容太少,求大佬们帮帮忙
1 回答
大家觉得Polkadot生态和生态的项目如何?
1 回答
0 条评论
请先 登录 后评论
GAVIN & 岳利鹏
关注
贡献值: 20
学分: 23
江湖只有他的大名,没有他的介绍。
文章目录
关于
关于我们
社区公约
学分规则
Github
伙伴们
ChainTool
为区块链开发者准备的开源工具箱
合作
广告投放
发布课程
联系我们
友情链接
关注社区
Discord
Youtube
B 站
公众号
关注不错过动态
微信群
加入技术圈子
©2024 登链社区 版权所有 |
Powered By Tipask3.5|
粤公网安备 44049102496617号
粤ICP备17140514号
粤B2-20230927
增值电信业务经营许可证
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
取消
发送
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
取消
举报
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
【Polkadot入门】什么是Polkadot? - 知乎
【Polkadot入门】什么是Polkadot? - 知乎首发于Substrate开发快速入门切换模式写文章登录/注册【Polkadot入门】什么是Polkadot?海阳之新文章内容持续更新...概念Polkadot 是一个可扩展的异构多链区块链。由一个协作的去中心化区块链网络组成,这个网络叫做中继链,它与并行运行的分片链即平行链交互,所有平行链共享中继链的安全性。架构架构图 先来看一下波卡的整体架构,从这个图我们可以很形象地看到,中继链就像一个中继器或者说是路由器、也可以说是一个插座板,可以将很多平行链连接在一起,实现跨链通信和价值交换。中继链管理着抵押、共识、治理、跨链消息传递等,不处理具体的应用业务逻辑,其他由平行链提供,尽量保证轻量。 平行链可以是提供各种服务的链,实现生态互补,比如说有做转接器的Celer、智能合约的Edgeware、有做转账的ChainX、有做隐私、身份凭证等等。 官方目前支持100个平行链插槽,一半用于竞拍,30个用于平行线程,20个用于系统平行链,系统平行链比如比特币网络、以太坊、去中心化交易所、稳定币、DEX、Edgeware合约链等,就像一个商场招商(不光有银行网点,还有步行街、酒店、写字楼、超市等配套设施),构建一个基本的互补的生态,引入人气、流动性。(具体可以参见一下简短版白皮书) 当然为了扩展更多的插口,平行链也可以做得比较重,如设计成一个2级的中继链,比如说以太坊2.0就类似一个2级中继链。波卡2.0官方目前还在研究架构上支持多少平行链使整个网络达到最好的状态,中继链嵌套时,能最多嵌套多少层,验证人节点怎么协作出块。 采用的是Npos共识机制,在中继链上有两个角色:验证人、提名人,在平行链上有两个角色:收集人、钓鱼人。角色的具体职责:验证人-负责具体的打包区块(像现实里的执政者);提名人-像议会和人民代表大会,负责提名区块验证人(执政者);收集人-负责提供候选区块;钓鱼人-像美国的的司法,中国的检察院(负责监管执政者)。 平行链可以有自己的共识机制,如以太坊、比特币,但是需要做一个转接桥(也是一条链)才能对接到中继链;也可以没有自己的共识机制,此时平行链的区块是由中继链(BABE+Grandpa)来敲定的,平行链的区块头信息会被打包在中继链区块中。创始人Gavin Wood,80后,英国籍,中文名林嘉文(nice^_^),计算机博士,前以太坊CTO、以太坊黄皮书编写者、以太坊钱包客户端Parity开发者,Solidity语言发明人。会英语、意大利语、法语、西班牙语;爱好摄影,精通跆拳道,会玩单板滑雪。(能靠颜值吃饭的偏要靠才华吃饭,能分一点吗 : )Token经济学2019/05/05 首次发行DOT,总发行量1000万,流通量900万左右。 2020/08/21 Web3基金会发起DOT除权全民公投,85%的投票支持将总量增加到10亿,币价也变成了原来的1/100。上图中,X轴为抵押率,蓝线是通货膨胀率,绿线是奖励率(通货膨胀率 / 抵押率)参考:https://wiki.polkadot.network/zh-CN/docs/learn-staking 波卡通过增发DOT,对验证人和提名人进行奖励,也就是说它的经济模型是一个通胀模型。 我们在上图中可以看到一个拐点,即抵押率超过50%时,抵押越多,收益越少。 官方希望有50%的Token被抵押到NPoS共识系统,30%的代币用于平行链插槽拍卖,20%代币在交易市场上流通。而在通胀率上,Polkadot希望是每年10%,在50%的抵押率中,抵押代币的平均年化收益为20%。具体如下: 当抵押率 < 50%,抵押平均年化收益率 > 20%,鼓励抵押更多代币; 当抵押率 = 50%,抵押平均年化收益率 = 20%; 当抵押率 > 50%,抵押平均年化收益率 < 20%,鼓励赎回而不鼓励抵押。 所以无论是验证人、提名人,收益都会受到这个模型的影响,而这个模型是通过算法实现,完全去中心化。平行链架构平行链代码架构一般包含:平行链运行时、校对人节点。 1、Javascript Apis接口 Substrate/Polkadot节点API的Javascript库,方便开发者调用查询节点数据。 2、Runtime Types运行时类型 Substrate提供的运行时类型封装,包含枚举、结构体,编译器通过宏在编译期展开代码。 3、construct_runtime!宏 在链的启动阶段,运行时构造器,以宏的形式提供,通过宏声明该运行时会运行哪些模块,以及模块运行是类型的依赖,会在编译的时候进行展开编译。 4、Substrate Runtime Module Library (SRML)运行时类库 SRML是Substrate运行时开发的基础,后续会有更加深入的解读 5、Custom Module 自定义运行时Module 自定义模块开发常用的宏有三个:decl_storage!、decl_module!、decl_event!,分别用于定义存储项类型结构体、模块方法、事件枚举。 Substrate框架中使用了Rust语言的宏,让运行时代码变得简洁,宏在Rust中也是一种零成本抽象,会在编译器中把宏展开成更为复杂的Rust代码,然后再编译成Wasm。编辑于 2021-07-14 11:50Polkadot赞同 6添加评论分享喜欢收藏申请转载文章被以下专栏收录Substrate开发快速入门这里分享Substrate开发快速入门