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

news2024/11/15 11:06:06

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.coloradmin.cn/o/1272447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PromptRank:使用Prompt进行无监督关键词提取

论文题目&#xff1a;PromptRank: Unsupervised Keyphrase Extraction Using Prompt   论文日期&#xff1a;2023/05/15(ACL 2023)   论文地址&#xff1a;https://arxiv.org/abs/2305.04490   GitHub地址&#xff1a;https://github.com/HLT-NLP/PromptRank 文章目录 Ab…

【laBVIEW学习】4.声音播放,自定义图标,滚动条设置

一。声音播放&#xff08;报错&#xff0c;未实现&#xff09; 1.报错4810 2.解决方法&#xff1a; 暂时未解决。 二。图片修改 1.目标&#xff1a;灯泡---》自定义灯泡 2.步骤&#xff1a; 1.右键点击--》自定义运行 表示可以制作自定义类型 2.右键--》打开自定义类型 这样就…

文件管理技巧大公开,轻松批量归类相同名称文件到指定文件夹!

在日常生活和工作中&#xff0c;我们经常需要处理大量的文件&#xff0c;包括文档、图片、音频、视频等。然而&#xff0c;随着时间的推移&#xff0c;文件数量不断增加&#xff0c;管理起来也变得越来越困难。为了更高效地整理和分类这些文件&#xff0c;今天我们将向大家介绍…

MySQL处理并发访问和高负载的关键技术和策略

我深知在数据库管理中处理并发访问和高负载的重要性。在这篇文章中&#xff0c;我将探讨MySQL处理并发访问和高负载的关键技术和策略&#xff0c;以帮助读者更好地优化数据库性能。 图片来源&#xff1a;MySQL处理并发访问和高负载的关键技术和策略 MySQL数据库在处理并发访问…

电子学会C/C++编程等级考试2023年03月(三级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:和数(2023.3) 给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 时间限制:10000 内存限制:65536输入 共两行,第一行是数列中…

基于java的职工便利系统【大学期末结课作业】

需求分析 背景和目标 基于现在的各类企业的职工在企业日常工作及生活中所需要的各类需求&#xff0c;通过使用Java语言开发一个职工便利系统&#xff0c;以方便职工完成公司内的日常事务&#xff0c;提高工作效率。 设计目的: 设计职工便利系统的主要目的是为了提升职工的工作…

C#测试开源运行耗时库MethodTimer.Fody

微信公众号“dotNET跨平台”的文章《一个监控C#方法运行耗时开源库》介绍了支持测量方法耗时的包MethodTimer.Fody&#xff0c;使用方便&#xff0c;还可以自定义输出信息格式。本文学习并测试MethodTimer.Fody包的使用方式。   新建控制台程序&#xff0c;通过Nuget包管理器…

文心一言 VS 讯飞星火 VS chatgpt (146)-- 算法导论12.2 1题

一、用go语言&#xff0c;假设一棵二叉搜索树中的结点在1到 1000 之间&#xff0c;现在想要查找数值为 363 的结点。下面序列中哪个不是查找过的序列? a.2&#xff0c;252&#xff0c;401&#xff0c;398&#xff0c;330&#xff0c;344&#xff0c;397&#xff0c;363。 b.9…

unity3d模型中缺失animation

在 模型的Rig-Animationtype 设置成Legacy https://tieba.baidu.com/p/2293580178

【开源】基于Vue.js的医院门诊预约挂号系统的设计和实现

项目编号&#xff1a; S 033 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S033&#xff0c;文末获取源码。} 项目编号&#xff1a;S033&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…

SNAT / DNAT 自定义链

目录 linux 系统本身是没有转发功能&#xff0c;只有路由发送数据 NAT NAT的实现分为两类 SNAT SNAT 应用环境 SNAT 原理 SNAT 转换前提条件 例图参考 开启 SNAT 命令 临时开启 永久开启 修改 iptables 网卡 DNAT DNAT 应用环境 DNAT 原理 DNAT 转换前提条件 …

阿里云Arthas使用——通过watch命令查看类的返回值 捞数据出来

前言 Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时&#xff0c;类…

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建

项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建 持续更新中… java+vue+微信小程序项目】从零开始搭建——健身房管理平台 项目简介Java项目搭建(IDEA)1.新建项目2.项目类型3.项目设置4…

MySQL之binlog日志

聊聊BINLOG binlog记录什么&#xff1f; MySQL server中所有的搜索引擎发生了更新&#xff08;DDL和DML&#xff09;都会产生binlog日志&#xff0c;记录的是语句的原始逻辑 为什么需要binlog&#xff1f; binlog主要有两个应用场景&#xff0c;一是数据复制&#xff0c;在…

CHEM 14 not know

Goals of this lab: • Create and use a calibration curve for the absorbance/concentration relationship for crystal violet • Evaluate absorbance versus time measurements to determine the order of a reaction • Analyze graphs of data to determine best linea…

MySQL进阶知识:InnoDB引擎

目录 逻辑存储结构 架构 内存结构 Buffer Pool Change Buffer Adaptive Hash Index Log Buffer 磁盘结构 后台线程 事务原理 redo log undo log MVCC 隐式字段 undo log版本链 readView 逻辑存储结构 这张图在我之前的笔记中出现过&#xff0c;接下来我们详细介…

CMake 教程:常用命令及其使用方法

CMake是一个跨平台、开源的构建工具&#xff0c;它可以自动生成Makefile或者Visual Studio等IDE的工程文件。它能够帮助开发者更方便地管理项目的构建过程&#xff0c;提高项目构建的效率。在本文中&#xff0c;我们将介绍CMake常用的命令以及对应的用法 add_executable add_e…

五、shell - 算术运算符

目录 1、简介 2、例子 ​​​​​​​1、简介 Shell 和其他编程一样&#xff0c;支持包括&#xff1a;算术、关系、布尔、字符串等运算符。原生 bash 不支持简单的数学运算&#xff0c;但是可以通过其他命令来实现&#xff0c;例如expr。expr 是一款表达式计算工具&#xff…

JAVEE初阶 多线程基础(四)

线程安全 一.线程安全存在的问题二.锁三.关于锁的理解四.关于锁操作混淆的理解4.1两个线程是否对同一对象加锁 一.线程安全存在的问题 为什么这里的count不是一百万呢?这就是线程所存在的不安全的问题,由于线程是抢占式执行,同时执行count,操作本质是三个指令 1.load 读取内存…

JUC并发编程 01——多线程基础知识

一.线程应用 异步调用 以调用方角度来讲&#xff0c;如果 需要等待结果返回&#xff0c;才能继续运行就是同步 不需要等待结果返回&#xff0c;就能继续运行就是异步 应用 比如在项目中&#xff0c;视频文件需要转换格式等操作比较费时&#xff0c;这时开一个新线程处理视…