PolkaWorld
波卡第一中文社区,带你寻找Web3.0时代新机遇!
本文作者为Jenner@?PatractLabs?。
这篇文章基于Polkadot的6be14014提交,目的是介绍Polkadot在平行链角度上的系统架构。
角色
架构图
链
Relaychain:中继链,负责平台安全性。Parachain:平行链,拥有自己独立的状态与业务逻辑,共享中继链提供的安全性。节点
validator:验证人,负责中继链的出块,同时验证来自收集者的证明,与其他验证人进行共识投票。中继链全节点,需要抵押DOT。collator:收集者,为验证人收集平行链的交易和状态转移证明。平行链全节点,同时内嵌中继链全节点服务,不一定需要抵押DOT,可以由平行链自行激励。注意,平行线程的collator需要持有DOT,以便参与出块资格的拍卖。fishermen:渔民,监控验证人和收集者,检查无效的候选收据。collator或者validator都可以作为fishermen,需要抵押DOT。
平行链节点结构
平行链节点主要有以下两点变动。
Kevin Shao:未来交易肯定更多的会集中在链上:金色财经报道,在Metainsight主办的以“FTX事件冷思考: 客户资产如何安全管理”为主题的Metainsight圆桌汇上,Bitrise Capital Co-Founder Kevin Shao表示,
未来区块链或crypto的发展格局其实相对比较清晰了,一方面,未来交易肯定更多的会集中在链上,慢慢迁移过去,提升用户体验以及提高用户交易效率。
第二方面就是传统合规,传统的监管肯定会不断的加码,特别是中心化交易所的资产托管会像传统金融监管一样会被授予第三方来做一些监管。
然后基于这个托管行业会迎来一波需求,同时我们认为未来很多中心化可能更多的会成为一个桥梁,就是在法币进入crypto的时候,会是一个非常好的桥梁。在crypto世界里面,有很多可替代的或者说非常安全的解决方案来实现交易方面的需求,我觉得这个是可以预见到。[2022/11/20 22:07:43]
共识
collator在平行链上的角色类似于以往的独立链上的validator。但是collator只提供候选区块,然后交由中继链上的validator进行共识。所以,平行链不再需要自己的共识机制。当然,可以保留对collator的选择机制。
Aave在Polygon上总锁仓量为19亿美元:据DeBank数据显示,Aave在Polygon上总锁仓量为19亿美元,锁仓量TOP5的协议分别为Aave(19亿美元)、QuickSwap(16亿美元)、SushiSwap(5.4亿美元)、Curve(5.29亿美元)、Wault(4.05亿美元)。[2021/6/26 0:08:21]
双服务
平行链节点与以往单链节点的不同在于:需要启动一个中继链全节点服务。内嵌的中继链全节点服务中,包含了overseer与子系统服务,并且将overseer_handle共享给collator,在collator_protocol上注册为?collator_side。因此,collator能与validator通过overseer进行消息交互,例如传递候选区块相关消息。另外,平行链全节点还需要通过内嵌的中继链节点来“跟随”中继链的出块。所谓“跟随”,指的是平行链全节点的最佳区块为中继链上最佳区块包含的相应平行链区块,终结区块亦如此。
中继链节点结构
relay_chain
中继链上除了必须的基础组件外,比较重要的就是overseer与子系统。
overseer
Polygon宣布与可组合性DeFi平台Furucombo达成合作:6月7日消息,以太坊扩容方案Polygon宣布与可组合性DeFi平台Furucombo达成合作。此次合作将使Furucombo扩大组合范围,为每个用户提供更全面的DeFi协议,同时减少费用及确认时间。目前,Furucombo已经整合了以下部署在Polygon上的流行DeFi协议,如Aave、Sushiswap、Quickswap和Curve。很快,将支持更多的协议。[2021/6/8 23:19:14]
overseer
Overseer主要有以下功能:
启动和关闭一系列子系统作为子系统之间的消息总线监听外部事件,触发子系统相应任务消息协议
overseer向子系统发送两种类型的消息:Communication,?Signal。
Communication:子系统之间交互的消息被封装在Communication类型中,根据被封装的消息类型传递到指定的子系统。例如子系统A向子系统B发送一个消息M:1.A向overseer发送AllMessages::B{M};2.overseer收到后,向B发送FromOverseer::Communication{M}。Signal:系统消息,例如块导入、块终结、关闭子系统,被封装在Signal中。系统消息会被广播到所有子系统。子系统
Polygon昨日部分节点出现同步问题 已发布热修复程序:官方消息,以太坊扩容解决方案Polygon联合创始人兼首席产品官Anurag Arjun发布更新表示,5月26日,Polygon PoS网络上小部分验证节点和全节点同步不一致,链本身保持弹性和充分运行,未发现状态或其他不一致。在高度5237861,Heimdall区块提交者在收集prevotes前停机,重新上线后再次开始收集上一轮投票的prevote,但其他验证节点已经传播了他们的prevote,导致了其他验证节点的“错误签名prevote”问题。但是,等待提交超时修复了该问题。在受影响节点的Bor节点上可以看到这些操作的影响,这些节点上的块生产和同步滞后。官方制定了一个临时热修复程序,使这些节点能够与网络同步。不久将发布一个更健壮的修复程序来缓解这种情况。链本身仍在运行,来自以太坊的存款按预期工作,尽管在某些情况下有轻微延迟。[2021/5/27 22:49:21]
目前设计上共有18个子系统,其中3个未完全实现。
Collator相关
collation_generation_subsystem:collator在块更新时生成collationcollator_protocol_subsystem:collation的请求与回应,根据validator/collator的角色执行对应的任务候选区块共识
硅谷创业公司 Polysign, Inc.完成融资$3,399,999 美元:2月12日,硅谷创业公司 Polysign, Inc.完成融资$3,399,999 美元。该公司由Ripple联合创始人Arthur Britto联合创立,致力于为机构投资者开放虚拟货币托管解决方案。曾被CNBC评为美国第五大最具价值创业公司。[2018/2/13]
candidate_selection_subsystem:触发对collation的请求,收到collation后请求投票candidate_backing_subsystem:对collation投票,签署statementstatement_distribution_subsystem:广播statementpov_distribution_subsystem:广播PoVapporoval_subsystems(TODO):在finalize前对候选区块的再次检查可用性相关
availability_distribution_subsystembitfield_signing_subsystembitfield_distribution_subsystemavailability_recovery(TODO)工具类子系统
candidate_validation_subsystem:验证候选区块provisioner_subsystem:提供平行链相关的出块打包数据runtime_api_subsystem:调用runtimeapiavailability_store_subsystem:存储可用性数据network_bridge_subsystem:与collation相关数据在节点间传递的网桥协议chain_api_subsystemmisbehavior_arbitration(TODO)Collator
以平行链上的Collator为例,介绍节点如何与子系统协作。
启动
平行链启动时,build_polkadot_full_node启动一个中继链全节点,包含overseer和子系统,并且在collator_protocol_subsystem注册为collator_side。如果要以collator的身份启动节点,启动时需要设定--collator,类似于以往独立链设定--validator启动验证人节点。follow_polkadot:根据中继链的出块来更新平行链初始化collation_generation_subsystem,在此时注册collator.produce_candidate,用来生成collation。在collator_protocol_subsystem上注册Collator所在的para_id。start_collator:polkadot_full_node.client.execute_with(StartCollator},collator和polkadot_full_node共享一个overseer_handler。准备候选区块
collation_generation_subsystem?启动后会循环handle_incoming。接受到ActiveLeavesUpdate后handle_new_activations。propose一个候选区块build_collation:构建候选区块的Collation开启wait_to_announce任务,注册成为StatementListener。当收到validator发来的Statement::Seconded就广播当前候选区块request_full_validation_data_ctx?在中继链上获取辅助验证的数据ValidationData。task_config.collator?->?produce_candidatecollator_signature_payload签名生成CandidateReceipt,发送CollatorProtocolMessage::DistributeCollation给collator_protocol_subsystem。通知validator
collator_protocol_subsystem监听Communication(CollatorProtocolMessage),process_msg处理消息。收到DistributeCollation后,检查para_id,然后distribute_collation向validator广播。determine_core:计算当前平行链分配到的coredetermine_our_validators:计算分配到该平行链的validator集合,包括当前集合和下一次分配的集合connect_to_validators:同时连接当前validator集合和下一组validatordistribute_collation:检查collation在active-leaves上,collation没有在该relayparent上出现连接上新的validator后,在collatorprotocol子系统中handle_validator_connected发送一个CollatorProtocolMessage::Declare给validator,注册collator如果validator是属于该平行链的验证人集合,那么advertise_collation,向validator发送CollatorProtocolMessage::AdvertiseCollation?,通知validator准备发送collation了。回应请求
收到validator消息CollatorProtocolMessage::RequestCollationsend_collation:回应validtor。回应的message中包含CandidateReceipt和PoV,发送CollatorProtocolMessage::Collation(request_id,receipt,pov)给validator。由于这是节点间通信,overseer的中继只能作用于节点内的子系统之间,所以这个消息是被封装在NetworkBridgeMessage::SendCollationMessage中的,通过network_bridge_subsystem向validator转发消息。出块
当中继链上statement被checked后,collator在平行链上announce_block,此时为暂时同步。最佳区块和终结区块跟随中继链的出块。
More
实际上,以上所描述的Collator与子系统的交互也可以说是以Collator角度的平行链出块流程。关于以Validator角度的平行链出块流程将在《平行链节点的出块流程》中介绍。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。