SkyChain
- 一、文献简介
- 二、引言及重要信息
-
- [2.1 研究背景](#2.1 研究背景)
- [2.2 研究目的和意义](#2.2 研究目的和意义)
- [2.3 文献的创新点](#2.3 文献的创新点)
- 三、研究内容
-
- 3.1模型
- 3.2自适应分类账协议
- 3.3评价框架
-
- 3.3.1性能
-
- 3.3.1.1共识延迟
- 3.3.1.2重新分片延迟
- 3.3.1.3处理事务数
- [3.3.1.4 约束](#3.3.1.4 约束)
- [3.3.2 安全性](#3.3.2 安全性)
- [3.3.3 问题介绍](#3.3.3 问题介绍)
- 四、基于DRL的动态分片框架
-
- 4.1模型设计
- [4.2 训练方法](#4.2 训练方法)
- [4.3 分布式部署](#4.3 分布式部署)
- 五、评估
-
- [5.1 收敛性能](#5.1 收敛性能)
- [5.2 安全性和延迟](#5.2 安全性和延迟)
- [5.3 吞吐量](#5.3 吞吐量)
- 六、总结
一、文献简介
1.1 文献标题
SkyChain: A Deep Reinforcement Learning-Empowered Dynamic Blockchain Sharding System
1.2 作者
中山大学系统科学与工程学院,广州中国数据与计算机学院
香港理工大学计算学系,中山大学数字生活国家工程研究中心
1.3 年份 :2020年8月
1.4 期刊:ICPP
二、引言及重要信息
2.1 研究背景
1)分片是将网络划分为多个不相交的组,并行处理事务,以提高吞吐量。文章主要创新是基于的动态分片,可以更好地应对区块链的动态环境。在分片系统中,系统将被划分为独立的较小部分,称为分片(或委员会),其中任何一个都按分片中的节点维护一个独立的分类账。不同分片的参与者可以并行处理事务,这意味着可以在整个系统中并行创建和验证多个块,事务吞吐量可以显著提高。
2)区块链是动态的是指:区块链节点可以加入和离开系统,而恶意攻击者可以主动破坏诚实的节点,这可以动态地影响区块链系统中的节点数量。
3)动态中面临的挑战:重新设置分片频率、分片数量、调整块大小
2.2 研究目的和意义
2.3 文献的创新点
提出了SkyChain,这是第一个动态公共区块链分片协议,使区块链系统能够根据当前系统状态自动生成分片。
因为区块链分片系统的动态特性可以建模为马尔可夫决策 过程(MDP),并且区块链系统中的环境是高维的,因此我们利用深度强化学习(DRL)方法来获得不同环境状态下的最优分片策略。深度强化学习可以从以前的经验中学习区块链分片系统的特点,并根据当前的网络状态采取适当的分片策略,以获得长期的回报,并且提出了一个性能和安全性评估的优化框架。
1)我们在公共区块链中提出了第一个基于动态分片的框架,可以在区块链系统的动态环境下保持性能和安全性之间的长期平衡。·
2)我们提出了一种自适应分类账协议,该协议保证根据动态分片结果有效地合并或拆分分类账,并且没有冲突。
3)我们量化了一个通用的分片系统,并设计了一种基于DRL的分片方法,在区块链系统的动态环境下动态调整重新分片的间隔、分片数量和块大小。
三、研究内容
3.1模型
1、基于账户交易模型。
2、使用DRL的方法来帮助系统在重构期间动态地制定分片策略。DRL是一种独特的机器学习类型,它将深度学习(DL)与强化学习(RL)相结合,以最大化代理与高维数据中环境之间交互的累积奖励
3、环境是动态区块链环境,代理由每个节点维护。
3.2自适应分类账协议
提出了一种自适应分类账协议,以保证根据重新分片的结果有效地合并和拆分分类账,并且没有冲突。
1)定义了状态块:为了解决重新配置节点(新节点或从原始分片切换到另一个分片的交换节点)的快速自举问题和分类账合并和分裂的效率,我们定义状态块。与存储交易数据的交易块相比,分片的状态块记录了分片的账本中的最新信息,包括账户地址和账户状态
2)sb^t^~i~表示在epoch t时期的分片i的状态块。
3.2.1状态块创建
分片i遍历状态块sb^t-1^的所有事务,并且创建账户和地址的映射,并把映射的默克尔树根放在sb^t^的头部,并将映射放入sb^t^主体。然后进行共识,达成协议之后,就可以丢弃sb^t-1^的主体。
状态块帮助分片的重配置节点快速获得整个账本状态,因为这些节点只需要下载最新的状态块来同步分片的当前状态。此外,状态块可以简化分类账合并和拆分。
3.2.2合并过程
绿色由分片i维护,蓝色由分片j维护,黄色由分片k维护
1)在t时刻的重新配置阶段,分片i创建状态块sb^t^~i~,j同样创建sb^t^~j~。
2)DRL代理达成共识之后,分片i和j交换状态块的报头,并创建包含二者的新块sb^t^~k~。
3)两个分片共同执行共识协议,达成一致。最终链连接起来,并且分片i和j合并成k。
3.2.3拆分过程
1)DRL代理达成共识之后,分片k获得信息,创建sb^t^~k~
2)创建新的块sb^t^~i~和sb^t^~j~,将分片k的所有节点分割成不相交的两个子集。
3)分片k的节点根据分片信息分别存储其中一个状态块,并执行共识协议将其添加到区块链的末尾。通过这种方式,链k被分为链i和链j,它们中的每一个都在状态块后面维护一个不相交的分类账。最后,它们将在下一个epoch中分别处理不同的事务。
3.3评价框架
每个时期分为共识期和重新配置时期,因此每个时期的延时由两个时期的延时总和组成。也就是
T~epoch~=T~cons~+T~reco~
3.3.1性能
3.3.1.1共识延迟
共识时期的轮数r~c~
每轮的共识延迟T~round~
∴ T~cons~=r~c~✖T~round~
以PBFT为例:拜占庭容错共识。分为预先准备、准备和提交三个阶段。为了降低数据传输的成本,仅仅在预准备阶段广播新块,而在后两个阶段仅仅广播块头。
一轮的等待时间可以计算:
其中
t~v~是每个阶段的验证时间
R~t~是数据传输速率
t~a~是将新区块加到区块链上的成本。
S^H^是区块头大小
S^B^是区块大小
m是分片大小
消息被所有节点接受的时间最多为O(log m)
3.3.1.2重新分片延迟
重新配置延迟包括:
1)随机的产生T~rand~
2)每个分片的状态块的产生T~s~
3)新节点将身份提交到区块链T~v~
4)账本的拆分和合并T~r~
所以:
3.3.1.3处理事务数
在分片系统中,跨分片交易是其相关地址记录在不同分片的账本中的交易。在处理跨分片事务时,不同的分片系统采用不同的机制来保证跨分片事务的原子性和一致性。
例如,RapidChain使用事务拆分,Monoxide使用中继事务。
然而,它们都引入了冗余事务,这意味着分片系统在处理跨分片事务时需要处理多个冗余事务。假设R~r~是分片系统中一个事务的平均冗余事务数,那么我们可以计算一个分片在一个时期内处理的事务数
S^T^表示平均事务大小
R~r~是分片系统中一个事务的平均冗余事务数
r~c~是轮数
所以,每个分片的事务吞吐量可以计算为
总的交易吞吐量为
O^total^=kO
其中k是分片的数量
3.3.1.4 约束
在区块链系统中,由于网络延迟,交易必须等待几轮共识才能获得最终确认。为了尽可能保持账本的一致性,防止区块在进入重构前被丢弃,应该限制等待时间在总的共识时间的一部分,也就是
3.3.2 安全性
存在不安全分片,系统就会变得不安全。使用超几何分布啦计算故障系统的概率。
X表示分片中恶意节点的数量,F=sn表示n个节点和s个分片的总体恶意节点数量。所以,故障系统的概率(在m个节点中形成至少一个不安全分片且其中有超过mf个恶意节点的概率)是:
为了使错误委员会形成的概率可以忽略不计,使用参数来限定错误委员会形成的概率。如果满足以下不等式,则它是足够安全的。
设置
系统拜占庭容错设置为1/4,分片拜占庭容错设置为1/3.
根据故障系统概率的计算公式,我们应该适当增加委员会的规模,使不安全的概率在给定的界限下,更多的节点加入区块链系统。
节点破坏
在每个时期,诚实节点可能被恶意节点破坏。假设恶意节点具有有限的攻击能力,平均节点损坏需要花费必要的时间。如果满足以下不等式,则可以将epoch视为安全的。
3.3.3 问题介绍
四、基于DRL的动态分片框架
DRL努力根据当前区块链环境和给定的奖励,从过去的经验中研究通用的分片策略,这使得它能够适应复杂和动态的区块链环境。考虑到动作空间的连续,使用深度确定性策略梯度(DDPG)算法来训练我们的模型。
4.1模型设计
强化学习中的三个关键组成部分:状态空间,动作空间和奖励函数,
1)状态空间:
系统具有n个节点,其中节点随时会离开,新节点的加入只发生在重新配置期间。q表示未决事务的数量。
因此,时刻t的状态空间可以表示为:
s~t~=[q,n]~t~
2)动作空间
当节点的到达服从分布时,epoch length将决定下一epoch的系统节点数。此外,分片数和块大小可以通过影响处理事务的速率来改变事务池的状态。因此,它们应该进行调整以适应动态环境。我们将时刻t的动作空间定义为:
a~t~=[T~epoch~,k,S^B^]~t~
L为epoch length T~epoch~ ∈(0,L)设置的最大长度。
为了保证分类账被有效地合并或拆分并且没有冲突,我们设置k = 2^i^,i = 0,1,2...C,其中C是常数。
设置N~s~ = 2^C^,表示分片的最大数量。值M来约束块大小的范围。
3)奖励函数
由于可伸缩性可以很容易地用事务吞吐量来量化,因此我们使用事务吞吐量作为我们的奖励函数。
约束条件和奖励定义如下:
当打破约束的时候,就将奖励设置为0。
4.2 训练方法
DDPG算法得另外学了。
1)在每个时间步t,根据当前区块链状态st选择并执行分片动作at,然后应用噪声N进行探索。
2)区块链环境将一个由系统安全性和吞吐量衡量的奖励,并进入下一个状态st+1
3)将转变(st,at,rt,st+1)存储在R中
4)从重放缓冲器reply buffer中取出恒定数量的先前转变,以更新参数
5)使用soft来改变目标网络
4.3 分布式部署
要使用经过训练的代理,一种直观而简单的方法是将经过训练的代理应用于确定的节点,但由于集中化,这将导致一些潜在的安全问题。
在我们的区块链分片系统中,我们采用分布式部署方法来解决这个问题。
L~a~是现任领导之一,被选为基于当前时期的分片策略的提议者。当分片完成共识的时候,L~a~使用当前系统的状态信息,作为输入创建一个分片策略。
四个阶段:
1)广播:L~a~将参数、系统状态发送给其他领导者。
2)回复:其他领导者接收到之后,做标记并再次广播出去。定义一个阈值表示领导者可以容忍的最大差值,只有差值在阈值范围内,才会标记为YES。
3)接收:如果一个诚实的leader收到了超过一半的leader的相同回声,它接受这个分片策略,并再次广播给其他leader,并带有一个接受标签,以及一个验证,表明它收到了超过一半的相同回声。
4)更新:L~a~接收到超过一半的accept之后就会进行状态转换更新,并广播给其他领导者。
五、评估
环境:tensorflow、Windows Server 2016中python3.6
新区块的产生可以被建模为具有时间依赖强度的泊松过程,这意味着交易量的减少也是一个泊松过程。
将区块链分片系统中的交易到达建模为到达率λt = 10000的泊松过程。
区块链中的节点数量是动态变换的,所以假设节点数量的变化服从方差σ2 = 100且期望值En = 0的正态分布,其中,N > 0表示新节点加入,而N < 0表示节点离开。
参数设置如下:
比较方案:
1)固定epoch length的建议方案。
2)提出了固定分片数的方案
3)固定块大小的建议方案。
比较参数
收敛性能、安全性和延迟性能、吞吐量
5.1 收敛性能
我们可以看到,所有方案的吞吐量都从学习过程开始时的低水平迅速增加,并在大约5000次训练后变得平坦。
5.2 安全性和延迟
设置分片大小m = 80,90,110,130,150,计算故障系统的概率。如图所示,当系统节点数小于10000时,分片大小m = 150时,安全概率可达98%。此外,还可以观察到,随着越来越多的新节点加入系统,不安全概率缓慢增加,这意味着区块链分片系统需要在系统节点数量变化时调整分片大小以保证安全性。
图5示出了延迟的变化,也就是委员会内部共识时间。当块大小逐渐增加时,从中可以看出共识延迟与块大小和分片大小有关。块大小不能无限制地增加,因为它会增加新块添加到区块链的时间,导致约束条件之一不满足。
5.3 吞吐量
在图6至图11中展示了不同系统参数对区块链分片系统性能的影响。基于DRL的动态分片框架的吞吐量与具有不同阈值的共识延迟,安全参数,平均事务大小,传输速率,初始节点数和分片数限制的基线进行了比较。
图6:我们可以观察到,固定的块大小方案中保持稳定,而其他在随着限制比的增大而减少。
图7:讨论安全参数对吞吐量的影响。在打羽5 之后变化较小,这意味着当碎片大小足够大时,系统具有高的安全概率。而具有固定数目的分片的方案的吞吐量稳定地变化,因为其分片大小可以确保低的不安全概率。
图8和图9讨论事务大小和传输速率对吞吐量的影响。
很明显,吞吐量随着事务大小的减小和传输速率的增加而显著增加。原因是一个块可以为较小的事务打包更多数量的事务,并为更高的传输速率进行更快的通信。而且此方案的吞吐量可以最高。
图10讨论了初始节点数对吞吐量的影响。吞吐量可以随着节点的加入而增加,并且由于限制分片数(这里我们将最大分片数设置为64)而最终停止增加。
图11讨论了分片数量的影响。
吞吐量可以随着分片数量的增加而有效地扩展。当最大分片数为128时,我们提出的方案的吞吐量可以达到110000 TPS。当最大分片数为128时,固定分片数方案优于固定历元长度和固定块大小,但其吞吐量仍低于我们提出的方案。
这一结果表明,我们提出的方案可以更好地适应不同的环境。
六、总结
文章提出了一种自适应账本协议,根据动态分片的结果,保证账本的有效合并或拆分,并且不会产生冲突。
SkyChain采用基于DRL的动态分片方法来调整epoch长度,分片数量和块大小,以保持性能和安全性之间的长期平衡。
展望:
在未来的工作中,我们计划在区块链分片系统中考虑更多与动态环境相关的因素,并将我们基于DRL的动态分片框架应用于真实的区块链系统。