mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
平台 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

Polkadot丨平行链系统架构一览

收藏
分享

Polkadot丨平行链系统架构一览 PolkaWorld

波卡(Polkadot)第一中文社区,带你寻找 Web 3.0 时代新机遇!

本文作者为 Jenner @ Patract Labs 。

这篇文章基于Polkadot的6be14014提交(2020/12),目的是介绍Polkadot在平行链角度上的系统架构。

角色

Polkadot丨平行链系统架构一览

架构图

  • 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 进行消息交互,例如传递候选区块相关消息。另外,平行链全节点还需要通过内嵌的中继链节点来“跟随”中继链的出块。所谓“跟随”,指的是平行链全节点的最佳区块为中继链上最佳区块包含的相应平行链区块,终结区块亦如此。

中继链节点结构

Polkadot丨平行链系统架构一览 relay_chain

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

overseer

Polkadot丨平行链系统架构一览 overseer

Overseer 主要有以下功能:

  • 启动和关闭一系列子系统
  • 作为子系统之间的消息总线
  • 监听外部事件,触发子系统相应任务

消息协议

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

  • Communication:子系统之间交互的消息被封装在Communication类型中,根据被封装的消息类型传递到指定的子系统。例如子系统A向子系统B发送一个消息M:1. A向overseer发送AllMessages::B{M};2. overseer收到后,向B发送FromOverseer::Communication{M}。
  • 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角度的平行链出块流程将在《平行链节点的出块流程》中介绍。

原创文章,作者:CoinKaola,如若转载,请注明出处:https://www.coinkaola.co/news/201908/

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。
相关阅读

华盛顿关于数字美元的选择

过去两周国会就数字美元举行的听证会被视为推进普惠金融的机会。这是一个崇高的目标,但我们要现实一点:说到底还是权力问题。拜登总统在上周的七国集团(G7)会议上呼吁建立联盟,以对抗中国的“一带一路”贸易规划,这与华盛顿对数字美元日益增长的兴趣有直接联系。中国央行的数字货币是其国际抱负的核心,一些人担心它会对美元作为世界储备货币的地位构成威胁。华盛顿的许多人认为,美元的主导地位体现在它赋予美国监管机构的执法权力上。美国监管机构能够追踪和控制美国银行的资金流入和流出,赋予它们制裁流氓行为和遏制犯罪活动的独特能力。问题在于,这种对货币权力的监督方式与金融包容性是对立的。以身份识别和跟踪为核心的这种模式给穷人带来了沉重的负担,他们通常无法使用身份识别系统、信用评分和其他手段来证明自己有资格获得银行服务。此外,正如听证会上的发言者所强调的那样,当有了通过单一中央账本管理的央行数字货币,政府能够监控和控制每个人的交易时,就有了对更广泛的隐私侵犯的合理担忧。因此,值得注意的是,有两个人表示支持数字美元:前商品和期货交易委员会主席、数字美元基金会创始人克里斯托弗·吉安卡洛和威拉米特大学法学院教授罗汉·格雷

矿业与碳排放矛盾的缩影:纽约州该选择环境还是比特币?

撰文: Scott Chipolina

从雅典到去中心化金融,了解DeFi的发展之路

好久不见~烤仔的 DeFi 课堂上课铃再次打响,这系列我们将一同解构 DeFi,尝试从更多的角度还原它真实的面貌。