从技术框架解析Polkadot

Polkadot 是一个可伸缩的异构多链系统,Polkadot 本身被设计成不提供任何内在的功能应用。Polkadot 提供了中继链(relay-chain),平行链(parachains),转接桥Parachain Bridge。Polkadot主要提升区块链的伸缩性(Scalability)和隔离性(Isolatability)。本文将从这两方面展开解析Polkadot。
1伸缩性
治理解决方案。关注点:TPS;资源利用的最优化;
现况:
底层的共识架构:状态转换机。所有参与方校对和执行交易的方式,在本质上将其逻辑绑定在了共识一致性(canonicalisation)的设计上,或者需要让所有参与方都同意所有的可能性、有效性和历史。
前人改进工作:
Chain fibers;公证通(Factom);Tangle ;侧链;Casper;
1.1解耦共识组件和状态转换组件
Polkadot方案:
像路由对于可伸缩去中心化计算平台那样,解耦共识组件和状态转换组件。
Polkadot方案特点:
Polkadot 会被设计成一个独立链的集合;
合并的安全性;
去信任的跨链交易性。
1.1.1设计思路
Polkadot 需要提供一个绝对坚实的基座,在其上建设下一代共识系统,覆盖从初期设计到真正运行的所有风险。通过对安全性、隔离性、通信能力提供强有力的保证,Polkadot 能够允许平行链从一系列特性中选择适合它们自己的方案。
1.1.2设计原则
Polkadot 的主要原理和规则:
最小: 拥有尽可能少的功能性。
简单:不在基础协议里添加多余的复杂性。由中间件、平行链完成。
通用:对平行链不添加任何要求、约束或限制。要尽量通过给模型加入最具适应度的扩展和优化,成为共识系统开发的基石
健壮:采用分散的方法,降低高额奖励这个攻击向量可能引发的问题,增强经济稳定性。
1.2治理结构
为了管理区块链升级,Polkadot 将内生支持某种形式的治理结构,基于现有的稳定政治体系,会有一个两院结构,类似于Yellow Paper Council。底层权益代币持有者作为最高权力机构,会有全民投票控制权。为了反映用户的需求、开发人员的需求,建立一个合理的两院结构,采纳用户的意见(由绑定的验证人决定)、主要客户端开发者和生态系统玩家的意见。代币持有者会保留最高的合法权,可以形成一个最高法庭来参政、议政、替换或解散这个架构,还有那些我们不怀疑的最终需求。
1.2.1治理方
维持Polkadot 网络的参与方:
提名人(nominator):一个拥有权益的群体,他们把安全性押金委托给验证人;
验证人(validator):拥有最高权限,帮助在Polkadot 网络里打包新区块。验证人分为基础验证人和可用保证人(guarantor)。
收集人(collator):帮助验证人制造有效的平行链区块的群体。;
钓鱼人(fisherman):及时举报并证明至少一个有抵押的参与方存在非法行为,他们就能获得奖励;
1.2.2共识机制
提名权益证明(Nominated Proof-of-Stake Npos)。
收集人收集并且广播用户的交易,也广播候选区块给钓鱼人和验证人。用户提交一个交易,先转移到平行链外部,然后通过中继链再转移到另一条平行链,成为一个可以被那里的账户执行的交易。
验证人的选举不会很频繁(很可能是一个季度一次,最多一天一次)。通过按比例分配的增发出来的代币(很可能大约10%,最多每年100%)和收集到的交易手续费来进行激励。
验证人严重依赖他们抵押进来的权益,现存验证人的押金会从他们离职的时候开始,要再保留更长时间(也许3 个月左右)。
检查点锁定器(checkpoint latch)能规避长程“无权益抵押”(nothing-atstake)攻击,防止比一般长度更长的高度危险的链重构(chain-reorganistation)发生。为了保证最新开始同步的客户端不会被误导进错误的链,网络会出现定期的“硬分叉”(最长也就是验证人的押金冻结期),把最近检查点区块的哈希值硬编码(hardcode)进客户端。将来通过逐步递减有限链的长度(finite chain length),或周期性地重置创世块(genesis-block),这种方法会运行得很好。
2隔离性
技术解决方案。
关注点:能否在同一个框架下接近最优程度地满足多参与方对于应用的差异化需求。
2.1标准化和标准化接入
Polkadot 和 Substrate 都属于通用基础技术框架,本身并没有具体的业务功能,它们的设计目的也不是要承载特定的功能。它们是要提供一种基础技术服务,让定制化的区块链能更简单地实现,并使这些定制化的区块链可以进行相互通信来逐步构成完整的 Web 3.0 业务生态。
2.1.1Substrate基板系统
Substrate(https://github.com/paritytech/Substrate) 由 Core, Srml, Node 三块构成。
Core 模块是链的基石模块,相当于手机的硬件组成部分。Srml 模块是可以动态升级的 Runtime 模块,相当于手机的系统部分,
随时可以基于更优版本的升级而动态升级。Node 就是 Substrate 链的示例代码, 能正常跑起来的最简单 Demo。
2.1.2共识AFG
混合共识算法,BFT+随机算法
Substrate的治理:
议会:议会是一个链上的概念,议会由多个议员组成,一个议员就是一个账户,议员是由持币人投票选举选出来的,议会会定期换届,换届的时候,根据投票数的多少,从最多的投票中自动选出议员,议会由两个职责,一个是对合理的提案发起公投,另外一个是对有害的公投进行取消。之所以有议会机制,主要是为了代表没有主动参与投票的持币用户。
提案:提案是任意持币人都可以发起的建议,这个提案可以执行最高权限,去调用root交易,升级链上runtime逻辑。提案的下一步就是公投。
2.1.3Rust 语言
Rust 语言非常重视性能和安全,它试图通过语言规范,或者说编译器,来引导程序员写出高效安全的代码。熟悉了 Rust 的用法,能自然而然地开发出高性能和高度可靠的系统。
2.1.4轻节点支持
轻节点支持分为四部分:存储树证明、交易证明、ChangeLog、Digest。Stoarge是存储证明,Extrinsics是交易证明,而Substratte的Change_log 清晰反映发生变更的key,及变更所涉及的交易。还有Digest,是运行时记录下来的重要数据片段,譬如验证人集合的变更,轻客户端就可以据此来去信任的来验证数据。
2.2结构:中继级链
无限扩展;让Polkadot与Serenity、Cosmos等互联。
根中继链(零级)
中继链(其它级):负责共识、跨链通信、安全。
平行链:中继链的外部系统(不限于链或Dapp)。
转接桥:帮助现有链以Substrate标准接入Polkadot。
DApp 开发:下一代Dapp开发分为轻量级的智能合约和重量级的应用链。个人或者小型创业团队会主要使用智能合约。大型企业或者有充裕资源支持的创业项目,会使用应用链。现有智能合约有两个主流的方案,EVM 和 Wasm。
2.3系统性保障
2.3.1自动升级,无分叉
Substrate客户端主要有两个环境,一个是native 环境,一个是wasm环境。native和wasm环境之间通过api来调用。
native环境在目前的实现里面是rust的执行环境,里面包含了网络,共识,安全等基础功能。wasm环境主要是runtime,还有用户的智能合约跑在里面,runtime包含的是链自身的业务逻辑,譬如权益,账户,代币等等。
native运行速度大于wasm,而wasm运行速度大于以太坊的evm的。Substrate链上有wasm版本的runtime备份。
当runtime接收到外部输入准备运行改变的时候,它会从链上获取wasm版本的runtime,并将它与native环境的runtime版本进行比较,如果相等,那么就会运行native环境的runtime,如果不等,那么就会运行链上wasm版本的runtime。
链上runtime的升级是通过社区公投的形式来达成共识,并通过runtime的root交易来更新链上wasm版本的runtime代码,来强制执行升级的,因此可以做到对链的无缝升级。
2.3.2交易
交易分为三种类型:Root 、Inherent、Public。其中Root交易是通过治理机制发出的拥有最高执行权限的交易,它可以执行任何体现社区意志的代码;Inherent是内部交易,即节点运行过程中达成一致的内部交易;Public是普通用户发出的交易。
2.3.3跨链通信
队列用梅克尔树(Merkletree)来保证数据真实,中继链的任务是把交易从来源平行链的出口队列转移到目的平行链的入队列。已转发的交易会在中继链上被引用,而不是中继链自身的交易。
为了预防一条平行链往另一条平行链发送垃圾交易,规定在在前一个块结束后,发送每一个交易时,目标平行链的入队列不能太大。如果区块处理完后,入队列太大,那么目的平行链会被看做是饱和了,接下来的几个块里就不会再路由交易给它,直到入队列降到临界值以下。
这些队列在中继链上管理,允许各平行链相互决定他们的饱和度大小。如果再往停滞的目标链发送交易,这样就可以同步地报告失败了(因为不存在返回路径,如果第二个交易也是同样的原因失败了,它可能也不会给来源调用者发送回复)。
2.3.3协议
合约机制、平行链接口、跨链交易路由。
合约机制:将验证人集合、验证人机制、平行链等放在一个整体的协议中管理共识机制,并描述成中继链的合约。
平行链接口:早期,我们希望收集人和验证人能够紧密合作,因为可能只有一些(甚至一个)交易量很小的平行链。最初的客户端实现会包含一个RPC 接口,来支持一条平行链的收集人节点把可证明的有效平行链区块,无条件地提供给一个(中继链)验证人节点。由于维持所有的全同步平行链的成本越来越高,所以我们设计了附加的结构,有助于分离独立的、经济驱动的、和其他的参与者。
跨链交易路由:是中继链和其验证人的核心功能。这里管理着主要的逻辑:一个提交从一个来源(source)平行链的出口被强制地路由到另一个目标(destination)平行链里,而且无需任何信任人。
作者|樊晓明
来源|SSSnodes
整理|密码极客

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注