区块链BaaS云服务(27)TOP Network 之全分片主链(Layer-1)

1. 概述

TOP Network在计算、状态和网络这三个方面,是一个全面的多层动态分片。

1.1 VRF-FTS 随机分片算法

“单片接管攻击(Single-Shard Takeover Attack)”: 将网络拆分成一个个小组后,恶意节点攻占分片变得更加容易

解决方法:分片都是随机进行的。随机分片让攻击变得越来越难,因为恶意实体无法让它们的节点进入任何特定的分片,降低合谋概率。

-可验证随机函数(Verifiable Random Function)
将输入映射为可验证的伪随机输出的加密方案: 允许创建无法被预测,却可被公开验证的随机种子。这些通过VRF生成的随机种子,经过"FTS(follow-the-satoshi)"算法加权计算后生成随机数,将验证节点随机加入到分片中,以及将审计节点随机加入到集群中。

1.2 动态分片

  • 每隔一段时间,分片中的一些节点会被重新分配到节点候选池,当其他分片进行选举时,这些节点会从候选池被选举到新分片。
  • 随着时间的推移,分片将具有与先前完全不同的节点。因为每次仅有少数节点被重新分配,当节点分配到新分片的时候,会同步新分片的区块数据,所以分片的共识过程不会被中断。
  • 在路由/审核网络中也是采取同样的方法,其中审计节点是持续在集群之间被重新分配。此双层动态分片方案让自适应攻击变得几乎不可能。

1.3 多级分片

分片的目的是实现系统性能的线性扩展。这意味着可扩展性随节点数量的增加而线性增加。为了实现线性扩展,单个节点工作量必须脱离节点总数和全网交易总量。

  • 对区块链的所有资源进行分片处理,包括状态(存储)、计算(交易验证和智能合约执行)和网络(区块广播、跨分片通信等)。

1.4 双层状态分片

链的状态信息包括所有用户账户和智能合约的状态信息。每个用户账户和智能合约都由一个账户数据对象表示。每个账户对象包含多个属性、关联函数和一个小型NoSQL数据库。

状态以两种方式分片。

  • 实现全局状态的分区:节点物理机只存储节点所在分片里的账户状态信息,
  • 由于验证节点只存储与该分片关联的子账户空间的状态信息,因此它们无法充分验证从其他分片发送的交易,除非它们知道发送交易的账户状态已正确更新。

1.4.1 使用表

  • 存储最近有过变更的账户的最新状态信息。当前所有的分片平分1024个表。账户需要被均匀平分,以便每个表负责大小相等的账户子空间。通过账户交易的Hash值可以快速确定账户与表的关系。这使得分片可以快速地从其他分片中提取相关状态信息,并在提交交易之前检查是否正确地更新了余额。

  • 表还可用于批处理交易从而提高吞吐量。来自同一账户,及同一子账户空间中其他账户的多比交易,可以一起被打包在一个表中。这些表可以在一轮共识中被同时验证,大大提高了系统吞吐量。

1.5 三层计算分片

交易验证和智能合约的执行都需要消耗计算资源,两者都是hpPBFT共识机制。我们使用三层设计来实现可靠的计算分片。

  • 当交易被分发到分片进行验证时,该分片中的部分节点被随机选中用于hpPBFT共识验证。
  • 分片的其余节点可以监视验证节点并辅助随后的同步过程。
  • 集群中的审计节点也通过二次审计参与hpPBFT共识验证。

1.6 三层共识网络

  • The Edge Network:充当客户端的接入点,所有交易在被转发到路由网络之前都会被先发送给边缘网络的边缘节点。
  • The Audit Network:由随机划分为分片的审计节点组成。此层网络负责处理跨分片通信和同步,同时参与交易验证。当前Audit Network有2个分片,每个分片下辖2个Validate Network分片。
  • The Validate Network:由包含验证节点的分片组成。这里是进行交易验证的地方。在每个分片中,验证节点使用并行pBFT算法验证和确认交易。

使用分层网络的原因:

  • 多种类型节点之间划分职责有助于降低对节点的要求。
  • 路由网络处理大多数对带宽要求较高的需求,例如跨分片通信,这就允许降低对验证节点的带宽要求。
  • 因为客户端只能将交易直接发送到边缘节点,从而保护路由和核心网络免受泛滥交易的攻击。

TOP Network所有网络都支持分片扩展。

上一篇:layer框架 jquery获取父页面open打开的子页面获取子页面的输入值与执行子页面方法


下一篇:Arnold材质节点篇-layer/Mix