【论文阅读】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的动态分片框架应用于真实的区块链系统。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用RobotFramework编写BDD代码

背景 行为驱动开发&#xff08;Behavior Driven Development&#xff09;即BDD&#xff0c;是一种敏捷开发方法&#xff0c;通常应用在自动化测试中&#xff0c;或者也可称为行为驱动测试。通过使用自然描述语言确定自动化脚本&#xff0c;通过这种方式&#xff0c;能够大大促…

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-BiLSTM-Multihead-…

Openai通用特定领域的智能语音小助手

无穷尽的Q&A 钉钉...钉钉... 双双同学刚到工位,报销答疑群的消息就万马纷沓而来。她只能咧嘴无奈的摇摇头。水都还没有喝一口就开始“人工智能”的去回复。原本很阳光心情开始蒙上一层薄薄阴影。在这无休无止的Q&A中&#xff0c;就算你对工作有磐石一般强硬&#xff0…

XXL-Job详解(一):组件架构

目录 XXL-Job特性系统组成架构图调度模块剖析任务 “运行模式” 剖析执行器 XXL-Job XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 特性 1、简单&#…

探究Kafka原理-6.CAP理论实践

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

解决keil右键Go To Definition跳转不过去的问题

解决&#xff1a; 在魔法棒中如图所示打上√

Pycharm新手开发指南

文章目录 前言一、常用功能介绍二、常用高效pycharm使用方法关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言…

京东秒杀之秒杀实现

1 登录判断 用户在未登录状态下可以查看商品列别以及秒杀商品详情&#xff0c;但不可以在未登录状态进行秒杀商品的操作&#xff0c;当用户点击开始秒杀时&#xff0c;进行登陆验证 <!DOCTYPE html> <head><title>商品详情</title><meta http-eq…

习题补充整理

目录 一、自己封装response 二、在响应头中放数据 HttpResponse redirect ​编辑 render JsonResponse 三、函数和方法区别 ----》绑定方法区别 四、上传图片和开启media访问 五、页面静态化(解决访问率高的问题) 一、自己封装response 第一步&#xff0c;在app01下…

使用vue脚手架创建vue项目

Vue是一个流行的前端框架&#xff0c;可以用简洁的语法和组件化的思想开发单页面应用。Vue脚手架是一个官方提供的命令行工具&#xff0c;它可以帮你快速搭建和配置vue项目的基本结构和依赖。 本文介绍如何使用vue脚手架创建一个vue2项目&#xff0c;并选择一些常用的功能和插件…

【JavaFX漏扫开发基础】JavaFx项目基础

文章目录 前言一、创建项目二、运行程序三、application的启动方式和生命周期四、生命周期前言 创建第一个javafx项目,用Idea编辑器来创建。 提示:以下是本篇文章正文内容,下面案例可供参考 一、创建项目 初创项目,第一个javafx的窗口。 依次点击,新建项目 点击Jaca…

字节的“游戏心脏”,真的停止跳动了吗?

字节跳动在游戏行业的宏大叙事&#xff0c;终究变成了一场游戏一场梦。 近日&#xff0c;朝夕光年首次公开回应此前的裁员传闻&#xff0c;明确表示会有业务方向和组织调整&#xff0c;游戏业务将迎来大规模收缩&#xff0c;未来会更加聚焦部分创新型游戏及相关技术的探索。 …

spring RedisTemplate RedisLockRegistry opsForXxx 基本使用总结以及介绍

一、基本介绍 RedisTemplate 为 spring 对 redis 操作的高度封装&#xff0c;基本已经满足所有使用场景。 若存在其他拓展使用我们可以自行封装工具类对基本操作进行组装。 RedisLockRegistry 对 redis 锁的一些封装 二、不同环境下依赖以及基本配置 2.1 spring-boot 下依赖…

MySQL之 InnoDB逻辑存储结构

InnoDB逻辑存储结构 InnoDB将所有数据都存放在表空间中&#xff0c;表空间又由段&#xff08;segment&#xff09;、区&#xff08;extent&#xff09;、页&#xff08;page&#xff09;组成。InnoDB存储引擎的逻辑存储结构大致如下图。下面我们就一个个来看看。 页&#xff08…

WPF实战项目十八(客户端):添加新增、查询、编辑功能

1、ToDoView.xmal添加引用&#xff0c;添加微软的行为类 xmlns:i"http://schemas.microsoft.com/xaml/behaviors" 2、给项目添加行为 <i:Interaction.Triggers><i:EventTrigger EventName"MouseLeftButtonUp"><i:InvokeCommandAction Com…

【漏洞复现】熊海cms 存在sql注入 附poc

漏洞描述 熊海CMS 是由熊海开发的一款可广泛应用于个人博客,个人网站,企业网站的一套网站综合管理系统。 其采用前后端整合设计思路,php,Apache,mysql,前端使用Bootstrap和少许jquery前端框架开发; 网站样式设计简洁大方,整体功能点并不多,但功能正好够用;拥有一个…

【计网 面向连接的传输TCP】 中科大笔记 (十 二)

目录 0 引言1 TCP 的特性1.1 拓展&#xff1a;全双工、单工、半双工通信 2 TCP报文段结构3 TCP如何实现RDT4 TCP 流量控制4.1 题外话&#xff1a;算法感悟 5 TCP连接3次握手、断开连接4次握手5.1 连接5.2 断开连接 6 拥塞控制6.1 拥塞控制原理6.2 TCP拥塞控制 &#x1f64b;‍♂…

Docker容器网络模式

1.none网络 1&#xff09;使用默认网络模式创建一个BusyBox容器&#xff0c;用于对比none网络模式&#xff1b; 测试网络&#xff0c;可以正常连接外网。 2&#xff09;再创建一个none网络模式的BusyBox容器&#xff1b; 测试网络连接&#xff0c;无法连接外网。 总结&#x…

六:Day01_Spring Boot01

一、Spring Boot简介 1. 概念简介 Spring Boot是Spring公司的一个顶级项目&#xff0c;和Spring Framework是一个级别的。 Spring Boot实际上是利用Spring Framework 4 自动配置特性完成。编写项目时不需要编写xml文件。 2. 启动器介绍 Spring Boot的启动器实际上就是一个依赖…

TSINGSEE青犀AI视频智能分析系统的视频接入能力解析

视频智能分析技术是一种先进的人工智能技术&#xff0c;它能够对视频内容进行自动化的分析和理解。这种技术的主要特点包括实时性、自动化、准确性、可解释性等。 1&#xff09;实时性。视频智能分析技术能够在短时间内对大量的视频数据进行快速处理和分析&#xff0c;从而提供…