AD
首页 > 数字货币 > 正文

一文读懂波卡平行链系统架构_数字货币

[2021-01-31 21:36:06] 来源: 编辑:wangjia 点击量:
评论 点击收藏
导读: collator 在平行链上的角色类似于以往的独立链上的 validator。但是 collator 只提供候选区块,然后交由中继链上的 validator 进行共识。所以,平行链不再需要自己的共识
collator 在平行链上的角色类似于以往的独立链上的 validator。但是 collator 只提供候选区块,然后交由中继链上的 validator 进行共识。所以,平行链不再需要自己的共识机制。当然,可以保留对 collator 的选择机制。

一文解密波卡理事会成员(上):Bruno、RTTI、Acala Foundation、WEI、PolkaWorld

理事会是波卡链上治理的重要机构,主要职责是对网络中的提案、国库提案和小费进行投票。虽然理事会成员都是由社区的 DOT 持有者投票选出的,但目前他们跟社区用户的公开交流却并不多。

角色

架构图

Relay chain:中继链,卖力平台安全性。

Parachain:平行链,拥有自己自力的状态与营业逻辑,共享中继链提供的安全性。

validator:验证人,卖力中继链的出块,同时验证来自网络者的证实,与其他验证人举行共识投票。中继链全节点,需要抵押DOT。

collator:网络者,为验证人网络平行链的买卖和状态转移证实(collation)。平行链全节点,同时内嵌中继链全节点服务,不一定需要抵押DOT,可以由平行链自行激励。注重,平行线程的 collator 需要持有DOT,以便介入出块资格的拍卖。

fishermen:渔民,监控验证人和网络者,检查无效的候选收条。collator 或者 validator 都可以作为 fishermen,需要抵押DOT。

平行链节点结构

平行链节点主要有以下两点更改。

collator 在平行链上的角色类似于以往的自力链上的 validator。然则 collator 只提供候选区块,然后交由中继链上的 validator 举行共识。以是,平行链不再需要自己的共识机制。固然,可以保留对 collator 的选择机制。

平行链节点与以往单链节点的差别在于:需要启动一个中继链全节点服务。内嵌的中继链全节点服务中,包罗了 overseer (关于 overseer 在“中继链节点结构”部门先容)与子系统服务,而且将 overseer_handle 共享给 collator,在collator_protocol上注册为 collator_side。因此,collator 能与 validator 通过 overseer 举行新闻交互,例如通报候选区块相关新闻。另外,平行链全节点还需要通过内嵌的中继链节点来“追随”中继链的出块。所谓“追随”,指的是平行链全节点的最佳区块为中继链上最佳区块包罗的响应平行链区块,终结区块亦云云。

中继链节点结构

relay_chain

中继链上除了必须的基础组件外,对照主要的就是overseer与子系统。

overseer

overseer

Overseer 主要有以下功效:

启动和关闭一系列子系统

作为子系统之间的新闻总线

监听外部事宜,触发子系统响应义务

新闻协议

overseer 向子系统发送两种类型的新闻:Communication, Signal。

Communication:子系统之间交互的新闻被封装在Communication类型中,凭据被封装的新闻类型通报到指定的子系统。例如子系统A向子系统B发送一个新闻M:1. A向overseer发送AllMessages::B;2. overseer收到后,向B发送FromOverseer::Communication。

Signal:系统新闻,例如块导入、块终结、关闭子系统,被封装在Signal中。系统新闻会被广播到所有子系统。

现在设计上共有18个子系统,其中3个未完全实现。

Collator相关

collation_generation_subsystem:collator在块更新时天生collation

collator_protocol_subsystem:collation的请求与回应,凭据validator/collator的角色执行对应的义务

候选区块共识

candidate_selection_subsystem:触发对collation的请求,收到collation后请求投票

candidate_backing_subsystem:对collation投票,签署statement

statement_distribution_subsystem:广播statement

pov_distribution_subsystem:广播PoV

apporoval_subsystems(TODO):在finalize前对候选区块的再次检查

可用性相关

availability_distribution_subsystem

bitfield_signing_subsystem

bitfield_distribution_subsystem

availability_recovery(TODO)

工具类子系统

candidate_validation_subsystem:验证候选区块

provisioner_subsystem:提供平行链相关的出块打包数据

runtime_api_subsystem:挪用runtime api

availability_store_subsystem:存储可用性数据

network_bridge_subsystem:与collation相关数据在节点间通报的网桥协议

chain_api_subsystem

misbehavior_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_candidate

collator_signature_payload署名

天生CandidateReceipt(包罗erasure_root和CandidateCommitments的hash),发送CollatorProtocolMessage::DistributeCollation给 collator_protocol_subsystem。

通知validator

collator_protocol_subsystem 监听Communication(CollatorProtocolMessage),process_msg处置新闻。收到DistributeCollation后,检查para_id,然后distribute_collation向validator广播。

determine_core:盘算当前平行链分配到的core

determine_our_validators:盘算分配到该平行链的validator聚集,包罗当前聚集和下一次分配的聚集

connect_to_validators:同时毗邻当前validator聚集和下一组validator

distribute_collation:检查collation在active-leaves上,collation没有在该relay parent上泛起

毗邻上新的validator后,在collator protocol子系统中handle_validator_connected

发送一个CollatorProtocolMessage::Declare给validator,注册collator

若是validator是属于该平行链的验证人聚集,那么advertise_collation,向validator 发送CollatorProtocolMessage::AdvertiseCollation ,通知validator准备发送collation了。

回应请求

收到validator新闻CollatorProtocolMessage::RequestCollation

send_collation:回应validtor。回应的message中包罗CandidateReceipt和PoV,发送CollatorProtocolMessage::Collation(request_id,receipt,pov)给validator。由于这是节点间通讯,overseer的中继只能作用于节点内的子系统之间,以是这个新闻是被封装在NetworkBridgeMessage::SendCollationMessage中的,通过 network_bridge_subsystem 向validator转发新闻。

当中继链上statement被checked后(状态为seconded),collator在平行链上announce_block,此时为暂时同步。

最佳区块和终结区块追随中继链的出块。

More

实际上,以上所形貌的Collator与子系统的交互也可以说是以Collator角度的平行链出块流程。关于以Validator角度的平行链出块流程将在《平行链节点的出块流程》中先容。

加入新手交流群:每天早盘分析、币种行情分析

添加助理微信,一对一专业指导:chengqing930520

上一篇:一文读懂Flashbots:与 MEV 危急赛跑
下一篇: 一文解密波卡理事会成员(上):Bruno、RTTI、Acala Foundation、WEI、PolkaWorld

加入新手交流群:每天早盘分析、币种行情分析,添加助理微信

一对一专业指导:chengqing930520

最新资讯
提供比特币数字货币以太坊eth,莱特币ltc,EOS今日价格、走势、行情、资讯、OKEX、币安、火币网、中币、比特儿、比特币交易平台网站。

2021 数字货币 网站地图

查看更多:

为您推荐