【论文阅读】1 SkyChain:一个深度强化学习的动态区块链分片系统

SkyChain

  • 一、文献简介
  • 二、引言及重要信息
    • 2.1 研究背景
    • 2.2 研究目的和意义
    • 2.3 文献的创新点
  • 三、研究内容
    • 3.1模型
    • 3.2自适应分类账协议
      • 3.2.1状态块创建
      • 3.2.2合并过程
      • 3.2.3拆分过程
    • 3.3评价框架
      • 3.3.1性能
        • 3.3.1.1共识延迟
        • 3.3.1.2重新分片延迟
        • 3.3.1.3处理事务数
        • 3.3.1.4 约束
      • 3.3.2 安全性
      • 3.3.3 问题介绍
  • 四、基于DRL的动态分片框架
    • 4.1模型设计
    • 4.2 训练方法
    • 4.3 分布式部署
  • 五、评估
    • 5.1 收敛性能
    • 5.2 安全性和延迟
    • 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)sbti表示在epoch t时期的分片i的状态块。

3.2.1状态块创建

分片i遍历状态块sbt-1的所有事务,并且创建账户和地址的映射,并把映射的默克尔树根放在sbt的头部,并将映射放入sbt主体。然后进行共识,达成协议之后,就可以丢弃sbt-1的主体。

状态块帮助分片的重配置节点快速获得整个账本状态,因为这些节点只需要下载最新的状态块来同步分片的当前状态。此外,状态块可以简化分类账合并和拆分。

3.2.2合并过程

分类账簿合并
绿色由分片i维护,蓝色由分片j维护,黄色由分片k维护
1)在t时刻的重新配置阶段,分片i创建状态块sbti,j同样创建sbtj
2)DRL代理达成共识之后,分片i和j交换状态块的报头,并创建包含二者的新块sbtk
3)两个分片共同执行共识协议,达成一致。最终链连接起来,并且分片i和j合并成k。

3.2.3拆分过程

拆分过程
1)DRL代理达成共识之后,分片k获得信息,创建sbtk
2)创建新的块sbti和sbtj,将分片k的所有节点分割成不相交的两个子集。
3)分片k的节点根据分片信息分别存储其中一个状态块,并执行共识协议将其添加到区块链的末尾。通过这种方式,链k被分为链i和链j,它们中的每一个都在状态块后面维护一个不相交的分类账。最后,它们将在下一个epoch中分别处理不同的事务。

3.3评价框架

每个时期分为共识期和重新配置时期,因此每个时期的延时由两个时期的延时总和组成。也就是
Tepoch=Tcons+Treco

3.3.1性能

3.3.1.1共识延迟

共识时期的轮数rc
每轮的共识延迟Tround
∴ Tcons=rc✖Tround
以PBFT为例:拜占庭容错共识。分为预先准备、准备和提交三个阶段。为了降低数据传输的成本,仅仅在预准备阶段广播新块,而在后两个阶段仅仅广播块头。
一轮的等待时间可以计算:
计算公式1
其中
tv是每个阶段的验证时间
Rt是数据传输速率
ta是将新区块加到区块链上的成本。
SH是区块头大小
SB是区块大小
m是分片大小

消息被所有节点接受的时间最多为O(log m)

3.3.1.2重新分片延迟

重新配置延迟包括:
1)随机的产生Trand
2)每个分片的状态块的产生Ts
3)新节点将身份提交到区块链Tv
4)账本的拆分和合并Tr
所以:
计算公式2

3.3.1.3处理事务数

在分片系统中,跨分片交易是其相关地址记录在不同分片的账本中的交易。在处理跨分片事务时,不同的分片系统采用不同的机制来保证跨分片事务的原子性和一致性。
例如,RapidChain使用事务拆分,Monoxide使用中继事务。
然而,它们都引入了冗余事务,这意味着分片系统在处理跨分片事务时需要处理多个冗余事务。假设Rr是分片系统中一个事务的平均冗余事务数,那么我们可以计算一个分片在一个时期内处理的事务数
计算公式3
ST表示平均事务大小
Rr是分片系统中一个事务的平均冗余事务数
rc是轮数
所以,每个分片的事务吞吐量可以计算为
计算公式4
总的交易吞吐量为
Ototal=kO
其中k是分片的数量

3.3.1.4 约束

在区块链系统中,由于网络延迟,交易必须等待几轮共识才能获得最终确认。为了尽可能保持账本的一致性,防止区块在进入重构前被丢弃,应该限制等待时间在总的共识时间的一部分,也就是
约束条件

3.3.2 安全性

存在不安全分片,系统就会变得不安全。使用超几何分布啦计算故障系统的概率。
X表示分片中恶意节点的数量,F=sn表示n个节点和s个分片的总体恶意节点数量。所以,故障系统的概率(在m个节点中形成至少一个不安全分片且其中有超过mf个恶意节点的概率)是:
计算公式5
为了使错误委员会形成的概率可以忽略不计,使用参数来限定错误委员会形成的概率。如果满足以下不等式,则它是足够安全的。
约束条件2
设置
系统拜占庭容错设置为1/4,分片拜占庭容错设置为1/3.
根据故障系统概率的计算公式,我们应该适当增加委员会的规模,使不安全的概率在给定的界限下,更多的节点加入区块链系统。
节点破坏
在每个时期,诚实节点可能被恶意节点破坏。假设恶意节点具有有限的攻击能力,平均节点损坏需要花费必要的时间。如果满足以下不等式,则可以将epoch视为安全的。
计算公式6

3.3.3 问题介绍

计算

四、基于DRL的动态分片框架

DRL努力根据当前区块链环境和给定的奖励,从过去的经验中研究通用的分片策略,这使得它能够适应复杂和动态的区块链环境。考虑到动作空间的连续,使用深度确定性策略梯度(DDPG)算法来训练我们的模型。

4.1模型设计

强化学习中的三个关键组成部分:状态空间,动作空间和奖励函数,
1)状态空间:
系统具有n个节点,其中节点随时会离开,新节点的加入只发生在重新配置期间。q表示未决事务的数量。
因此,时刻t的状态空间可以表示为:
st=[q,n]t
2)动作空间
当节点的到达服从分布时,epoch length将决定下一epoch的系统节点数。此外,分片数和块大小可以通过影响处理事务的速率来改变事务池的状态。因此,它们应该进行调整以适应动态环境。我们将时刻t的动作空间定义为:
at=[Tepoch,k,SB]t
L为epoch length Tepoch ∈(0,L)设置的最大长度。
为了保证分类账被有效地合并或拆分并且没有冲突,我们设置k = 2i,i = 0,1,2…C,其中C是常数。
设置Ns = 2C,表示分片的最大数量。值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 分布式部署

要使用经过训练的代理,一种直观而简单的方法是将经过训练的代理应用于确定的节点,但由于集中化,这将导致一些潜在的安全问题。
在我们的区块链分片系统中,我们采用分布式部署方法来解决这个问题。
La是现任领导之一,被选为基于当前时期的分片策略的提议者。当分片完成共识的时候,La使用当前系统的状态信息,作为输入创建一个分片策略。
四个阶段:
1)广播:La将参数、系统状态发送给其他领导者。
2)回复:其他领导者接收到之后,做标记并再次广播出去。定义一个阈值表示领导者可以容忍的最大差值,只有差值在阈值范围内,才会标记为YES。
3)接收:如果一个诚实的leader收到了超过一半的leader的相同回声,它接受这个分片策略,并再次广播给其他leader,并带有一个接受标签,以及一个验证,表明它收到了超过一半的相同回声。
4)更新:La接收到超过一半的accept之后就会进行状态转换更新,并广播给其他领导者。

五、评估

环境:tensorflow、Windows Server 2016中python3.6
新区块的产生可以被建模为具有时间依赖强度的泊松过程,这意味着交易量的减少也是一个泊松过程。
将区块链分片系统中的交易到达建模为到达率λt = 10000的泊松过程。
区块链中的节点数量是动态变换的,所以假设节点数量的变化服从方差σ2 = 100且期望值En = 0的正态分布,其中,N > 0表示新节点加入,而N < 0表示节点离开。
参数设置如下:
参数设置

比较方案
1)固定epoch length的建议方案。
2)提出了固定分片数的方案
3)固定块大小的建议方案。
比较参数
收敛性能、安全性和延迟性能、吞吐量

5.1 收敛性能

评估1

我们可以看到,所有方案的吞吐量都从学习过程开始时的低水平迅速增加,并在大约5000次训练后变得平坦。

5.2 安全性和延迟

评估2

设置分片大小m = 80,90,110,130,150,计算故障系统的概率。如图所示,当系统节点数小于10000时,分片大小m = 150时,安全概率可达98%。此外,还可以观察到,随着越来越多的新节点加入系统,不安全概率缓慢增加,这意味着区块链分片系统需要在系统节点数量变化时调整分片大小以保证安全性。
评估3

图5示出了延迟的变化,也就是委员会内部共识时间。当块大小逐渐增加时,从中可以看出共识延迟与块大小和分片大小有关。块大小不能无限制地增加,因为它会增加新块添加到区块链的时间,导致约束条件之一不满足。

5.3 吞吐量

评估4
评估5

在图6至图11中展示了不同系统参数对区块链分片系统性能的影响。基于DRL的动态分片框架的吞吐量与具有不同阈值的共识延迟,安全参数,平均事务大小,传输速率,初始节点数和分片数限制的基线进行了比较。
图6:我们可以观察到,固定的块大小方案中保持稳定,而其他在随着限制比的增大而减少。
图7:讨论安全参数对吞吐量的影响。在打羽5 之后变化较小,这意味着当碎片大小足够大时,系统具有高的安全概率。而具有固定数目的分片的方案的吞吐量稳定地变化,因为其分片大小可以确保低的不安全概率。
图8和图9讨论事务大小和传输速率对吞吐量的影响。
很明显,吞吐量随着事务大小的减小和传输速率的增加而显著增加。原因是一个块可以为较小的事务打包更多数量的事务,并为更高的传输速率进行更快的通信。而且此方案的吞吐量可以最高。
图10讨论了初始节点数对吞吐量的影响。吞吐量可以随着节点的加入而增加,并且由于限制分片数(这里我们将最大分片数设置为64)而最终停止增加。
图11讨论了分片数量的影响。
吞吐量可以随着分片数量的增加而有效地扩展。当最大分片数为128时,我们提出的方案的吞吐量可以达到110000 TPS。当最大分片数为128时,固定分片数方案优于固定历元长度和固定块大小,但其吞吐量仍低于我们提出的方案。
这一结果表明,我们提出的方案可以更好地适应不同的环境。

六、总结

文章提出了一种自适应账本协议,根据动态分片的结果,保证账本的有效合并或拆分,并且不会产生冲突。
SkyChain采用基于DRL的动态分片方法来调整epoch长度,分片数量和块大小,以保持性能和安全性之间的长期平衡。
展望:
在未来的工作中,我们计划在区块链分片系统中考虑更多与动态环境相关的因素,并将我们基于DRL的动态分片框架应用于真实的区块链系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/235664.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker-compose脚本编写及常用命令

安装 linux DOCKER_CONFIG/usr/local/lib/docker/cli-plugins sudo mkdir -p $DOCKER_CONFIG/cli-plugins sudo curl -SL https://521github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose sudo c…

VBA代码解决方案第8讲:用FindPrevious进行重复搜索及利用LIKE查找

《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程&#xff0c;目前已经是第三版修订了。这套教程定位于入门后的提高&#xff0c;在学习这套教程过程中&#xff0c;侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码…

【电源专题】DC/DC电源FB分压电阻设计注意事项

在DC/DC电源中我们不可避免的会遇到FB分压电阻的取值,PCB设计等问题。如下所示随意打开一份同步降压稳压器规格书TPS56320X,规格书中的简化电路原理图就已经存在VFB管脚上的两个分压电阻。 很多工程师朋友们会误认为分压电阻只是简单的将输出电压缩小到参考电压,通过此电压来…

16.Oracle数据库Row_number() over()函数排序使用方法

1.原始数据(部分) SELECT * FROM SCOTT.EMP ; 2.使用Row_number() over() 函数,排序 SELECT EMPNO,ENAME,SAL,DEPTNO,Row_number() over( order by sal) rs FROM SCOTT.EMP ; 根据工资排序并添加序号 3.使用Row_number() over() 函数,分组并排序 SELECT EMPNO,ENAME,SAL,DEPTN…

【LeetCode】每日一题 2023_11_25 二叉树中的伪回文路径(dfs,数组/位运算)

文章目录 刷题前唠嗑题目&#xff1a;二叉树中的伪回文路径题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 这个月第一次周末早起~ 题目&#xff1a;二叉树中的伪回文路径 题目链接&#xff1a;1457. 二…

服务器500错误的解决思路

​服务器500错误是一个常见的错误代码&#xff0c;也就是服务器遇到了一个预料之外的错误&#xff0c;无法正常处理请求。这个错误通常是由于服务器配置错误、程序代码问题或者服务器资源不足等原因引起的。对于网站管理员和用户来说&#xff0c;服务器500错误则意味着网站无法…

Python实现FA萤火虫优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

【LeetCode】【C++】string OJ必刷题

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 【LeetCode】415.字符串相加…

一个数据中心的PUE修养,必将迎来液冷存储的曙光

实现小于1.3的PUE硬指标&#xff0c;数据中心液冷存储将功不可没。 【全球存储观察 &#xff5c; 科技热点关注】 4000亿千瓦时&#xff0c;能耗如此惊人&#xff0c;这是预计到2030年全国数据中心的年耗电总量。 小于1.3&#xff0c;看似微不足道的数字&#xff0c;这是新建…

【神印王座】永恒之塔秘密透露,林鑫告白李馨,皓晨采儿甜蜜接吻

Hello,小伙伴们&#xff0c;我是拾荒君。 《神印王座》第83集如期而至&#xff0c;带来了令人期待已久的更新。与众多热情的观众一样&#xff0c;拾荒君一得到更新消息&#xff0c;便急不可耐地观赏起来。这一集中&#xff0c;龙皓晨随着月魔宫的月夜商队成功抵达联盟&#xf…

vue3使用动态component

使用场景&#xff1a; 多个组件通过component标签挂载在同一个组件中&#xff0c;通过触发时间进行动态切换。vue3与vue2用法不一样&#xff0c;这里有坑&#xff01; 使用方法&#xff1a; 1.通过vue的defineAsyncComponent实现挂载组件 2.component中的is属性 父组件&am…

git-5

1.GitHub为什么会火&#xff1f; 2.GitHub都有哪些核心功能&#xff1f; 3.怎么快速淘到感兴趣的开源项目 github上面开源项目非常多&#xff0c;为了我们高效率的找到我们想要的资源 根据时间 不进行登录&#xff0c;是没有办法享受到高级搜索中的代码功能的&#xff0c;登录…