Polkadot是一种异构多链的跨链技术,主要由中继链、平行链、转接桥构成。其中,平行链负责具体的业务场景实现,其允许并行处理交易,且每条平行链都有一个独特的状态转换函数。中继链则负责整个网络的共识验证,只要一条链的逻辑代码可以编译为Wasm并遵守RelayChainAPI,那么其就可以作为平行链被接入到Polkadot网络生态中。而转接桥负责连接polkadot生态和外部的独立区块链。具体的系统架构如下图所示:
混合共识
Polkadot整个网络的共识出块过程主要为:
平行链阶段:
收集人会收集平行链上的交易打包生成候选区块,将其发送给该平行链的验证者。其中,候选块可能是无效的,它必须经过有效性检查才能被包含到中继链中。
中继链提交阶段:
验证者将通过平行链注册代码公开的验证函数对候选区块进行验证。如果验证成功,则该验证者将其传递给网络中的其他验证者继续进行验证。否则,将该候选块判定为无效块。当该候选块被超过一半的验证者验证通过时,验证者会生成一个包含:平行链ID、收集人ID和签名、候选块执行前平行链的状态根、候选块执行后平行链的状态根等信息的候选收据,该收据最终会被包含在中继链的状态中。
可用性和不可用性子协议
波卡周报:PolkadotDecoded开放社区投票,QuarksLab发布XCMv2审计报告:4月4日消息,根据PolkaWorld发布的波卡周报,PolkadotDecoded已经开放社区的投票。
4月1日凌晨2:00左右,Polkadot网络第13次平行链插槽Auction结束。Phala以锁定610,759 DOT赢得Polkadot第13次平行链插槽Auction,并立马接入Polkadot中继链,以启动其主网。
预计第14次插槽Auction将在4月6日凌晨3:27启动。目前活跃的Crowdloan有Unique Network。尽管Unique Network的Crowdloan目前收集的DOT最多,但他们竞拍的是8-15租期,而不是当前7-14租期。
QuarksLab发布了一份XCMv2审计报告,对XCM、VM和XCM工作原理做了很好的概述。
Polkadot的56号公投正在进行中,该议案旨在通过paras.forceSetCurrentCode解除Composable平行链,目前正在一致通过中。
Polkadot理事会投票通过Motion 179,该议案旨在通过国库资助波卡生态研究院的运营。
Turing Network赢得Kusama第30次插槽Auction。
Kusama理事会投票通过Motion 449,该议案旨在通过NFT奖励来激励社区参与网络治理。[2022/4/4 14:02:39]
二级GRANDPA批准有效性检查
神鱼:Poly Network攻击事件被盗资金已被全部退回:金色财经报道,鱼池创始人神鱼在微博中表示,前天19:30起,到今52个小时,在多方的共同努力与沟通下,推动Poly Network安全事件的进展。目前,白帽黑客目前已退还全部-5.8亿美金,其中3343万usdt被Tether冻结,2.3亿在3/4双方多签地址里,至此取得阶段性成果。作为此次救援事件的亲历者,在此特别感谢白帽黑客MR. 600 MILLION、慢雾、Tether、PolyNetwork等数十位参与者们分布式协同快速完成了漏洞分析,有序沟通,不断推进事件进展。接下来,继续协调各方,做好收尾工作,划上一个圆满的句号。
此次事件是对Defi所有参与者的一次警示,因此我们将在CV里建造一个纪念碑纪念此次事件,同时致谢所有参与者,推动整个行业的安全发展。[2021/8/13 1:51:40]
调用拜占庭容错终结性小工具来巩固链条
在传统的PoS系统中,区块生成取决于代币的持有量而不是算力,质押的代币数量越多成为验证者的概率就越大,对区块链系统造成的影响也就越大。因此,必须采取一定的措施降低这种可能的中心化风险,而如果由专业的人员和设备来维护系统中验证者候选人的数量,会增加运营成本。所以针对拥有大量验证者的系统,则更倾向于在链下建立一个候选验证者池并从候选随机筛选出验证者,Polkadot采用的验证者选择算法是NPoS。
首先介绍一下共识算法中的概率确定性和可证明的确定性,一个运行PoW的中本聪区块链就只能实现概率确定性并达成最终的共识。其中,概率确定性是指在给定的区块后,我们可以根据其后连接的区块数量计算出其在最长链上的概率。
中币(ZB)将于6月16日上线POLY:据官方公告,中币(ZB)于2021年6月16日上线POLY(Polymath),并在14:00开放POLY充值。6月17日16:00开放POLY/USDT和POLY/QC交易。
Polymath是一个促进区块链证券代币初次发行和二次交易的系统,它使用基于区块链的系统来协调和激励参与者,让参与者在区块链上合作并推出金融产品。更多详情请查看中币(ZB)官方公告。[2021/6/16 23:40:46]
最终的共识指的是,在未来的某个时刻,所有节点都会就一组数据达成一致,但这种最终的共识可能需要很长时间,并且无法确定需要多少时间。但类似GRANDPA或以太坊的CasperFFG之类的确定性工具,可以为区块的确定性提供更强大的保证。并且在经过拜占庭协议一些过程后,可以形成不可逆的共识,称为可证明的确定性。
Polkadot为了同时保证概率确定性和可证明的确定性,而采用了BABE和GRANDPA算法相结合的混合共识算法。其中,BABE算法负责区块的生成,GRANDPA算法则负责区块链中区块的确定。
GRANDPA
GRANDPA与其他拜占庭容错算法的不同之处在于,验证人是对区块链投票,而不是对区块投票,所以该算法每轮可以确定好几个最终区块。但与其他拜占庭算法一样复杂度为O(n2),意味着如果节点增加一倍,系统中为了形成共识发送的消息将会增加四倍。Polkadot将区块的生成和最终确定性分离,这种方式提高了整个共识系统的效率,提高了区块生成的效率,并在一轮中可以最终确认链上的好几个区块。
PlatON与ChainX、PolkaWorld达成全方位战略合作:金色财经报道,全球隐私计算网络与分布式经济体基础设施PlatON宣布与ChainX、PolkaWorld达成全方位战略合作。
ChainX是基于Substrate框架开发且最早上线的项目,致力于比特币Layer2拓展、数字资产网关及波卡2级中继链的研究与应用,主网已经上线并平稳运行1年半。PolkaWorld是中国最大的polkadot社区之一,拥有完善的社区资源和较大的行业影响力。
此次PlatON与ChainX、PolkaWorld将从应用生态、节点建设、社区运营、技术合作等维度进行全方位的合作,ChainX也将作为PlatON与Polkadot生态之间的一座桥梁,助力两大生态实现互融互通。
同时,PlatON还将与ChainX共同探讨共同创办孵化器,专注PlatON生态项目孵化,从资金、技术、社区全方位支持生态项目的建设,ChainX、PolkaWorld也针对目前社区热议的PlatON应用生态图谱给予专业的建议,通过应用生态图谱,明确PlatON未来的战略方向与实现路径,通过孵化器,发掘为生态添砖加瓦的团队/开发者,形成良性循环,共建繁荣稳定的PlatON生态蓝图。[2021/3/12 18:39:13]
GRANDPA会选择验证人投票数最多且可以被认为是最终区块的最高区块号,以Kusama节点中的日志为例:
美国公司Apollo Fintech推出国家区块链支付平台NPP:美国区块链公司Apollo Fintech?宣布,已于8月12日推出国家区块链支付平台(NPP)。该平台是一个无现金系统,它可以供各国央行发行数字货币,并允许政府机构在CBDC发布后接入商业银行和代理商。(Cointelegraph)[2020/8/13]
发现上一轮中,GRANDPA最终确定了三个区块,这三个区块可能的情况如下:
上图中左侧深灰色方块是之前被最终确定的区块,右侧的灰色椭圆形代表验证人,验证人给新一轮候选区块投票,确定了其中三个候选区块。可以发现,使用GRANDPA算法确定的区块所在链可能包含分叉。
具体的算法过程为:
被指定为「主节点」的节点,将广播该轮可以被最终确定的最高候选区块;
每个验证人为自己认为的最高候选区块「预投票」;
每个验证人将根据投票集,计算出最终确定的最高区块。如果预投票集延长了之前已经被最终确认的区块链,则所有验证人将该链进行「预提交」;
所有验证人等待接收到足够数量的「预提交」,在新确定的链上提交消息。
注意,GRANDPA与其他拜占庭容错算法相比,主要区别为:在关键路径上没有视图的变化。尽管该算法每轮都会更新最高区块,但是视图更改是在异步网络下开启新一轮,因此在部分同步网络中,即使在未分配最高区块的情况下,协议也会不断更新。
BABE
BABE是一种概率确定性的区块生成算法,该算法将时间划分为多个epoch,每个epoch又分为多个slot,最后选择一个或多个验证人在每个solt间隔创建区块。在Polkadot中,每个slot的持续时间为6秒,即Polkadot上的目标出块时间。
每个solt由可由验证随机函数VRF生成一个主领导者,该函数将epoch随机种子、slot编码和创建者的私钥作为输入,使得每个节点可以为每个slot生成唯一的伪随机值。如果存在低于某个指定阈值的slot,则验证者有权在该slot中创建区块。这种方式安全性较高,但是容易出现某些slot没有领导者,而有些slot有多个主领导者的情况。
slot存在多个验证人:所有验证人都会产生一个候选区块并将其广播到网络,最先被网络中大部分节点接收到的区块获胜。
slot没有验证人:Polkadot会在后台通过round-robin方法选择一个验证人,由其生成一个次级区块。因此,solt必然存在一个区块,主要区块或者是次级区块。在临时性分叉的链中,既可能存在主要区块,也有次级区块。
分叉选择算法
当系统中存在分叉时,BABE将在GRANDPA最终确定的链后继续出块,当最终确定的链上存在分叉时,BABE将选择包含最主要区块的链。
如上图所示,黑色区块代表已经被GRANDPA最终确认的区块,黄色区块代表为完全的区块。其中,标记为「1」的块是主要块,标记为「2」的块是次级块。因此,即使最上面的链包含最多的区块也不会被选择,因为其包含的主要块最少。但是最后那条链即使包含最多主要块同样不会被选择,因为其没有在GRANDPA最终确定后的链上继续出块。最终被选择的链为倒数第二条,同时满足上述两个条件。
跨链消息传递
XCM
Polkadot拥有三种类型的跨链消息传递协议:UMP、DMP和XCMP。
其中,UMP允许平行链将消息发送到区块链系统的中继链;DMP允许中继链将消息向下传递到其中一条平行链。而XCMP则允许平行链之间的消息传递。XCM是一种消息格式用于上述三种跨链消息的传递。
不使用链上原生消息格式是因为,链之间缺乏兼容性,如果用户打算将消息发送到多个目的地系统,则需要针对每个目的系统编写合约。而且如果目的系统的智能合约升级,区块链可能会引入新功能或更改现有功能,并因此改变其交易格式。为了解决这些问题,Polkadot使用XCM作为一种通用的消息格式。XCM中包含的「消息」实际上只是在XCVM上运行的程序,该程序由一个或多个XCM指令构成。
跨链消息传递流程
下面以Moonbeam和Polkadot之间的资产传递为例,介绍生态中的跨链消息传递过程:
首先主要DApp以平行链的形式接入,此时中继链上的原生代币需要在平行链上注册;
Alice通过一个XCM希望将其在Polkadot上一定数量的DOT转移到Moonbeam上的账户;
Polkadot将执行XCM消息转移相同数量的DOT到Moonbeam在Polkadot上的账户上;
当上述资产被成功存入后,XCM信息中的第二部分将被传送至Moonbeam;
Moonbeam将执行XCM包含的指令,在该链上铸造相同数量的xcDOT。
资产转移
对于相互信任的链,可以使用Teleporting框架进行跨链资产转移。基本过程为:在发送方销毁资产,并在接收方铸造相应数量的资产。
WithdrawAsset:只有一个参数,类型为MultiAssets,代表哪些资产必须从资产原产地登记册的所有权中撤出,但未指定放置资产的位置。其中,撤回和未使用的资产都被临时保存在持有登记册中,并未永久存储。
InitiateTeleport:代表中继链在执行指令时,将创建一个全新的XCM消息,并将其发送到目标链。
BuyExecution:使用WithdrawAsset提取的资产换取XCM指令的计算时间。Polkadot社区中的大多数平行链为了避免「垃圾交易」和拒绝服务攻击,都会要求与之交互的用户支付一定的手续费。但是与以太坊交易模型不同,Polkadot中的手续费并未被包含在协议中,但对于一些确实需要支付手续费得到系统,XCM提供了使用资产购买执行资源的能力。主要包含以下三部分:
首先,需要提供部分资产
其次,必须协商资产交换获取到的计算时间
最后,执行XCM操作
所以该函数包含以下两个参数:
1、fees:应从持有登记册中提取并用于支付费用的金额,这只是最大值,因为任何未使用的余额都会被立即返回。最终花费的金额由系统决定,该变量值只是限制它,如果解释系统需要为其所需的执行操作支付更多的费用,那么BuyExecution指令将导致错误。
2、weight:指定要购买的执行时间两,通常该值大于或等于XCM程序的总权重。
DepositAsset:将剩余的资金存入持有登记册。实际上,扣除手续费后,我们不知道手上还剩余多少资产,可以在assets中使用通配符All.into(),将剩余资产全部存入beneficiary标识的账户中,此处该值为Parent.into(),代表中继链的位置。
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。