区块链技术迅猛发展,新想法、新概念、新名词层出不穷。万向区块链因此推出“技术研究报告”专栏,定期与大家分享在区块链行业创新及热门技术方面的研究成果,带领大家第一时间研究学习新技术,紧跟技术发展趋势,探索发掘技术的应用价值。
本期技术研究将带大家了解区块链应用平台Polygon。
本文作者:万向区块链通用架构技术部 杨毅
概述
Polygon 是一个区块链应用平台,提供 PoS 和 Plasma 两种侧链。
Polygon PoS 网络具有三层架构:
-
以太坊层(根合约层):部署在以太坊主网上的一组质押管理合约。
-
Heimdall 层(验证节点层): 一组 PoS Heimdall 节点,与以太坊主网并行运行,监听部署在以太坊主网上的一组质押合约,并将 Polygon 网络检查点提交给以太坊主网。Heimdall 的共识算法基于 Tendermint。
-
Bor 层(出块节点层):一组从 Heimdall 节点中选出的小部分节点作为的 Bor 出块节点,它是一个基本的 Geth 实现。

概念说明
Polygon 架构

质押合约
为了在 Polygon 上启用权益
证明 (PoS)机制,Polygon 在以太坊主网上部署了一组 PoS 管理合约。
质押合约实现以下功能:
-
任何人都可以在以太坊主网上的质押合约上质押 MATIC 资产,并作为 验证者加入系统。
-
通过验证 Polygon 网络上的状态转换获得质押奖励。
-
对双重签名、验证者停机等活动启用惩罚/削减。
-
在以太坊主网上保存 检查点。
PoS 机制还可以缓解 Polygon 侧链的数据不可用问题。
Heimdall(验证节点层)
Heimdall 是 Pos 验证层,负责将
Bor生成的块聚合到 Merkle 树中,并定期将 Merkle 根发布到主链。这一层需要负责的功能如下:
-
验证自上一个检查点以来的所有块。
-
创建块哈希的 Merkle 树。
-
将 Merkle 根哈希发布到以太坊主网。
验证者选择:
验证者是通过链上拍卖过程选择的,该过程按定义的时间定期进行,过程如下所述:
-
在StateManager合约上调用StakeFor() 函数以锁定链上的状态。
-
heimdall上的 Bridge 收听此事件并向所有 heimdall 广播
-
共识验证程序添加到 heimdall 但未激活。
-
Validator仅在 StartEpoch 之后才开始验证
-
一旦 StartEpoch 到达,验证者就将其添加到验证者集中,并开始参与共识机制
成为验证者:
要成为 Polygon 网络上的验证者,您必须做以下操作:
-
Sentry 节点(哨兵节点)运行 Heimdall 节点和 Bor 节点的独立机器。哨兵节点对 Polygon 网络上的所有节点开放。
-
Validator 节点运行 Heimdall 节点和 Bor 节点的独立机器。验证节点从哨兵节点接收数据并将数据发送到哨兵节点。
-
在部署在以太坊主网上的质押合约中质押 MATIC 资产。
Heimdall 详细说明:https://docs.polygon.technology/docs/pos/heimdall/overview
Bor(出块节点)
Bor 块生产者是验证者的一个子集,并由
Heimdall验证者定期洗牌。
Bor 是 Polygon 的区块生产者层,负责将交易聚合成区块的实体。目前,它是一个基本的 Geth 实现,对共识算法进行了自定义更改。
区块生产者通过 Heimdall 上的委员会选择定期改组,区块生产者的持续时间称为 Polygon 中的一个
span
(跨度) 。区块在Bor节点产生,其 VM 与 EVM 兼容。在 Bor 上产生的块会由 Heimdall 节点定期验证,这些块的哈希会在 Heimdall 层被组成一颗 Merkle 树,这颗 Merkle 树的根哈希会被当作一个检查点由 Heimdall 定期提交给以太坊。
生产者选择:
Bor 层的区块生产者是根据权益从验证者池中选出的小委员会。
-
验证人根据质押获得插槽,如果验证人有 100 个 Matic 资产质押,并且每个插槽为 10,他将总共获得 10 个插槽。
-
假设所有验证者插槽为这个数组 [ A, A, A, B, B, C ]
-
使用历史以太坊区块作为种子来对这个数组进行洗牌。
-
使用种子对插槽进行洗牌后