一种基于智能合约的历史交易重放方法及系统
未命名
10-19
阅读:97
评论:0
1.本发明涉及智能合约测试技术领域,更具体地,涉及一种基于智能合约的历史交易重放方法及系统。
背景技术:
2.智能合约(smart contract)是部署在区块链上的程序,通过一系列的规则决定交易如何发生,为自动化、分布式交易提供了可能。然而,由于智能合约携带金融属性,且具有部署后不可改变的特性,使其成为黑客攻击的目标。因此需要漏洞防治方法保证智能合约的安全性。
3.现有的漏洞防治方案有三种思路,即链下漏洞防治、链上漏洞防治与漏洞修复。链下漏洞防治采用符号执行、模糊测试与模式匹配等技术构建漏洞检测方法,旨在保证合约部署至区块链前的安全性;链上漏洞防治关注合约部署后的安全性,通过向智能合约或以太坊虚拟机(ethereum virtual machine,evm)嵌入特定漏洞检测程序,在检测到特定漏洞时回溯该交易,以此保证部署后的合约安全性;漏洞修复采用字节码重写技术(bytecode rewriting)修复链上存在漏洞的智能合约。
4.漏洞修复伴随合约测试,以防修复补丁破坏合约原有的功能性,目前主要采用交易重放技术进行合约测试。如基于evm状态存储指令实现历史交易重放(rodler m,li w,karame g o,et al.evmpatch:timely and automated patching of ethereum smart contracts[c]//30th usenix security symposium(usenix security 21).2021:1289-1306.),以检测修复合约中的异常变更,然而该交易重放方案的实现依赖于蹦床机制,缺乏通用性。hartel等提出了基于truffle实现历史交易重放(hartel p,staalduinen m.truffle tests for free-replaying ethereum smart contracts for transparency[r/ol].[2019-04-13]http://arxiv.org/abs/1907.09208.),该方案不依赖于特定机制,具有通用性。然而,由于交易重放中历史状态发生了改变,因此无法准确重放所有交易。kim等提出通过保存历史状态实现交易重放,因此可准确重放所有交易(kim y,jeong s,jezek k,et al.an off-the-chain execution environment for scalable testing and profiling of smart contracts.[c]//usenix annual technical conference.2021:565-579.)。然而,由于缺乏对交易特征的建模,因此该方案无法筛选特定类型的交易,丧失了扩展性。此外,该方案未对历史状态的储存方式优化,加大了储存消耗。
技术实现要素:
[0005]
本发明为克服上述现有技术所述的交易重放方法无法筛选特定类型的交易,缺乏扩展性,且存在储存消耗大的缺陷,提供一种基于智能合约的历史交易重放方法及系统。
[0006]
为解决上述技术问题,本发明的技术方案如下:
[0007]
一种基于智能合约的历史交易重放方法,包括以下步骤:
[0008]
s1、根据以太坊的状态变更对交易特征进行建模,并基于所述交易特征配置交易
筛选规则;
[0009]
s2、基于帕特里夏默克树与二叉排序树构建世界临时状态树;
[0010]
s3、创建伪造区块,基于所述交易筛选规则对原交易列表中的交易进行过滤筛选后添加至所述伪造区块中;根据所述世界临时状态树中存储的历史状态进行回溯,构建伪造世界状态树并添加至所述伪造区块中;
[0011]
s4、以太坊运行所述伪造区块,所述伪造区块执行历史交易重放以修复合约,并将修复合约与原合约进行比对,将比对结果写入日志。
[0012]
进一步地,本发明还提出了一种基于智能合约的历史交易重放系统,应用本发明提出的历史交易重放方法。其中包括:
[0013]
规则管理模块,用于根据以太坊的状态变更对交易特征进行建模,并基于所述交易特征配置交易筛选规则以筛选目标类型的交易;
[0014]
信息汇总模块,其上配置有基于帕特里夏默克树与二叉排序树构建的世界临时状态树,用于存储以太坊的临时信息与持久信息;
[0015]
交易重放模块,用于通过创建伪造区块,基于分叉机制执行历史交易重放以修复合约,并将修复合约与原合约进行比对,将比对结果写入日志;
[0016]
所述伪造区块上配置有基于所述交易筛选规则对原交易列表中的交易进行过滤筛选的过滤交易tx
filter
,以及根据所述世界临时状态树中存储的历史状态进行回溯所构建的伪造世界状态树。
[0017]
与现有技术相比,本发明技术方案的有益效果是:本发明基于以太坊的状态变更对交易特征进行建模及配置交易筛选规则,用于进一步的交易类型筛选,能够有效增强交易重放的扩展性;基于帕特里夏默克树与二叉排序树构建世界临时状态树以储存以太坊的临时信息,能够有效优化储存空间;通过创建伪造区块实现基于分叉机制的本地交易重放,能够在不干扰主链的前提下重放历史交易,避免破坏合约原有的功能性。
附图说明
[0018]
图1为本发明的基于智能合约的历史交易重放方法的流程图。
[0019]
图2为世界临时状态树的架构图。
[0020]
图3为历史交易区块树查找过程示意图。
[0021]
图4为基于分叉机制的交易重放的流程框架图。
[0022]
图5为不同区块数目下三种工具的空间消耗示意图。
[0023]
图6为不同合约账户交易重放的时间消耗示意图。
[0024]
图7为本发明的基于智能合约的历史交易重放系统的架构图。
具体实施方式
[0025]
附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些公知说明可能省略是可以理解的。
[0026]
下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0027]
实施例1
[0028]
本实施例提出一种基于智能合约的历史交易重放方法,如图1所示,为本实施例的
基于智能合约的历史交易重放方法的流程图。
[0029]
本实施例提出的基于智能合约的历史交易重放方法中,包括以下步骤:
[0030]
s1、根据以太坊的状态变更对交易特征进行建模,并基于所述交易特征配置交易筛选规则。
[0031]
s2、基于帕特里夏默克树与二叉排序树构建世界临时状态树。
[0032]
s3、创建伪造区块,基于所述交易筛选规则对原交易列表中的交易进行过滤筛选后添加至所述伪造区块中;根据所述世界临时状态树中存储的历史状态进行回溯,构建伪造世界状态树并添加至所述伪造区块中。
[0033]
s4、以太坊运行所述伪造区块,所述伪造区块执行历史交易重放以修复合约,并将修复合约与原合约进行比对,将比对结果写入日志。
[0034]
本实施例中,基于以太坊的状态变更对交易特征进行建模及配置交易筛选规则,用于进一步的交易类型筛选,能够有效增强交易重放的扩展性;基于帕特里夏默克树与二叉排序树构建世界临时状态树以储存以太坊的临时信息,能够有效优化储存空间;通过创建伪造区块实现基于分叉机制的本地交易重放,能够在不干扰主链的前提下重放历史交易,避免破坏合约原有的功能性。
[0035]
在一可选实施例中,s1步骤中,所述以太坊的状态变更流程包括:
[0036]
利用状态转移函数υ驱动区块链上第t号区块b
t
生长为b
t+1
,将第t号区块上的状态σ
t
更新为σ
t+1
,并根据交易状态生成收据r;
[0037]
其中,当区块的交易为非停机交易时,状态转移函数υ通过evm状态改变函数e与交易状态改变函数t使状态σ
t
更新为σ
t+1
,并生成成功收据rs;当区块的交易为停机交易时状态σ
t
保持不变,并生成失败收据rf;
[0038]
通过指令信息ins描述evm状态改变函数e;
[0039]
则根据以太坊的状态变更对交易特征进行建模,得到交易特征tx=(b,ins,σ,r);其中,b为区块,σ为状态,收据r={rs,rf}。
[0040]
进一步可选地,基于所述交易特征配置交易筛选规则,其中,通过运算符连接所述交易特征tx以定义交易筛选规则。
[0041]
其中,所述运算符包括关系运算符和/或逻辑运算符。
[0042]
作为示例性说明,关系运算符包括大于、小于、等于、不等于;逻辑运算符包括与、或、非。
[0043]
在一可选实施例中,s2步骤中,基于帕特里夏默克树与二叉排序树构建世界临时状态树,包括以下步骤:
[0044]
基于帕特里夏默克树构建一阶树作为世界账户树a
tmp
,基于二叉排序树构建二阶树作为历史交易区块树h
tmp
,将所述世界账户树a
tmp
和所述历史交易区块树h
tmp
组合构建得到世界临时状态树σ
tmp
。
[0045]
作为示例性说明,如图2所示,为本实施例的世界临时状态树的架构图。其中,所述世界账户树a
tmp
中以账户地址为键,以所述历史交易区块树h
tmp
中的根哈希值为值;所述历史交易区块树h
tmp
中以区块号为键,以相应区块下账户的状态数据为值。相应区块下账户的状态数据包括关联账户、blockhash、ins、nonce、balance、storageroot、codehash等。
[0046]
进一步地,在一可选实施例中,所述世界临时状态树σ
tmp
还用于确定当前区块
currblock起始状态以及终止状态,以提供临时信息。其具体步骤包括:
[0047]
初始化右临近区块nextblock为null,并初始化目标区块号target为当前区块的区块号currblock.num+1;
[0048]
深度优先遍历节点node,直到节点node遍历到空节点,即node≠null;
[0049]
在所述深度优先遍历过程中,判断节点区块号node.num的值:
[0050]
若node.num》target,则将节点node赋值给右临近区块nextblock,并将节点node赋值为其左节点node.left;
[0051]
若node.num《target,则将节点node赋值为其右节点node.right;
[0052]
若node.num=target,则将右临近区块nextblock赋值为node,并返回右临近区块nextblock;
[0053]
当深度优先遍历结束后,返回右临近区块nextblock;
[0054]
根据经过深度优先遍历的当前区块currblock以及右临近区块nextblock从所述世界临时状态树σ
tmp
中得到当前区块currblock的起始状态以及终止状态作为临时信息。
[0055]
作为示例性说明,如图3所示,为历史交易区块树查找过程示意图。其中,历史交易区块树h
tmp
,由区块号为《10,20,30,34,47,44,80》的区块组成,初始节点node为34,查找当前区块currblock为10的右临近区块nextblock。本实施例中以node为起始节点深度优先遍历历史交易区块树h
tmp
,遍历路径为34》20》10》20,最终得到右临近区块nextblock对应区块号为20,以此得到当前区块currblock的终止状态。
[0056]
进一步可选地,所述世界状态树还用于通过向以太坊数据库注入检测代码以获得以太坊的持久信息。
[0057]
其中,所述以太坊的持久信息为储存在以太坊数据库的信息,可通过数据库索引直接获得。
[0058]
进一步地,在一可选实施例中,s3步骤中,其具体步骤包括:
[0059]
s310、基于所述交易筛选规则定位需要进行重放的交易区块位置,即原区块b
ori
的位置,拷贝原区块b
ori
内容,构建得到伪造区块b
fake
以产生分叉。
[0060]
其中,伪造区块b
fake
与原区块b
ori
有共同父区块b
pre
,由此形成分叉。
[0061]
s320、基于交易特征(b,ns,,)与运算符构建规则rule以筛选交易,得到交易tx
rule
={txi|
rule
(i)}及关联交易tx
rel
;其中txi表示第i个交易,i∈{0,1,
…
,n},n为交易总数;函数satisfy
rule
表示当交易txi满足规则rule时返回真,否则返回假;取交易tx
rule
与关联交易tx
rel
的交集组成过滤交易tx
filter
(即tx
filter
=tx
rule
∩tx
rel
)并添加至所述伪造区块中。
[0062]
s330、从所述世界临时状态树获取历史状态并进行回溯,将修复代码c
rep
注入修复合约s
crep
,得到伪造世界状态树σ
fake
,并将所述伪造世界状态树σ
fake
添加至所述伪造区块中。
[0063]
本实施例基于分叉机制实现在不干扰主链的情况下重放历史交易,避免破坏主链原有的功能。
[0064]
进一步可选地,本实施例中将修复合约与原合约的收据的一致性进行比对,并将比对结果写入日志。
[0065]
进一步可选地,s330步骤中,从所述世界临时状态树获取历史状态并进行回溯时,仅回溯修复合约s
crep
的关联账户sc
rep
的历史状态,并执行关联交易tx
rel
。
[0066]
本实施例中,仅回溯修复合约s
crep
的关联账户sc
rep
的历史状态,并执行关联交易tx
rel
,能够有效加快重放速度,减少重放的时间消耗。
[0067]
进一步可选地,s3步骤中,还包括以下步骤:
[0068]
s301、遍历所有区块中的所有交易,对交易元数据中表示来源(from)与去向(to)的账户地址配置为互为显式直接关联账户sc
ex
。
[0069]
s302、遍历合约合约账户执行栈,将指令call或delegatecall所调用的账户配置为隐式直接关联账户sc
im
。
[0070]
s303、取所述显式直接关联账户sc
ex
与所述隐式直接关联账户sc
im
的并集为直接关联账户sc
dir
,并存入所述世界临时状态树σ
tmp
中。
[0071]
s304、初始化查找账户account的关联账户表accountlist集合,去除重复元素;初始化探索队列q并以查找账户account的直接关联账户sc
dir
为队列q的初始值。
[0072]
s305、基于探索队列q广度探索直接关联账户,直到队列为空,即len(q)》0;在每一次探索中,确定探索队列q的队首账户并找到其直接关联账户,得到直接关联账户集relations
←
getdirectrealitions(q.pop(),block);接着遍历所述直接关联账户集relations中的每一个账户relation,将不存在于所述关联账户表accountlist中的元素加入探索队列q及关联账户表accountlist。
[0073]
s306、通过关联账户表accountlist得到查找账户account的所有关联账户sc
rep
,遍历所有交易,找出交易元数据中表示来源或去向的且包含关联账户sc
rep
的交易,得到关联交易tx
rel
。
[0074]
如图4所示,为本实施例的基于分叉机制的交易重放的流程框架图。
[0075]
本实施例中,通过通过关联账户以优化交易重放速度,同时为加快重放速度,仅回溯修复合约s
crep
关联账户的历史状态,进而减少重放的时间消耗。
[0076]
实施例2
[0077]
本实施例应用实施例1提出的历史交易重放方法作进一步说明。
[0078]
本实施例将实施例1提出的历史交易重放方法组成工具sctester,并与同类工具kim以及全量储存方案实现工具full node进行对比。
[0079]
如图5所示,为不同区块数目下三种工具的空间消耗示意图。其中,三种工具的空间消耗随区块数目的增大而升高,且空间消耗差距逐步增大。在区块数目为100万时,full node消耗空间1281mb,kim消耗空间1007mb,sctester消耗空间789mb。相较于full node以及kim,应用本发明的历史交易重放方法的sctester分别降低了38.42%及21.63%的储存空间,因此sctester在空间消耗方面有着良好的表现。
[0080]
如图6所示,为不同合约账户交易重放的时间消耗示意图。其中,用本发明的历史交易重放方法的sctester仅执行关联交易,相较于full node与kim,sctester分别平均降低86.6%以及70.5%的时间消耗。因此,在基于合约账户的交易重放场景中,sctester有更低的时间消耗。
[0081]
实施例3
[0082]
本实施例提出一种基于智能合约的历史交易重放系统,应用实施例1提出的历史交易重放方法。如图7所示,为本实施例的历史交易重放系统的架构图。
[0083]
本实施例提出的基于智能合约的历史交易重放系统中,包括:
[0084]
规则管理模块,用于根据以太坊的状态变更对交易特征进行建模,并基于所述交易特征配置交易筛选规则以筛选目标类型的交易。
[0085]
信息汇总模块,其上配置有基于帕特里夏默克树与二叉排序树构建的世界临时状态树,用于存储以太坊的临时信息与持久信息。
[0086]
交易重放模块,用于通过创建伪造区块,基于分叉机制执行历史交易重放以修复合约,并将修复合约与原合约进行比对,将比对结果写入日志。
[0087]
其中,所述伪造区块上配置有基于所述交易筛选规则对原交易列表中的交易进行过滤筛选的过滤交易tx
filter
,以及根据所述世界临时状态树中存储的历史状态进行回溯所构建的伪造世界状态树。
[0088]
在一具体实施过程中,信息汇总模块获取以太坊各区块的信息以及交易数据,并通过基于帕特里夏默克树与二叉排序树构建的世界临时状态树进行存储。信息汇总模块将其获取的交易特征信息传输至规则管理模块中,通过规则管理模块根据以太坊的状态变更对交易特征进行建模,并基于所述交易特征配置交易筛选规则以筛选目标类型的交易,然后将筛选结果发送至交易重放模块。同时,信息汇总模块将以太坊的历史状态、区块信息、交易信息等数据传输至交易重放模块中。
[0089]
交易重放模块通过构建伪造区块以产生分叉,避免干扰主链,同时基于所述交易筛选规则对原交易列表中的交易进行过滤筛选后添加至所述伪造区块中,以及根据所述世界临时状态树中存储的历史状态进行回溯,构建伪造世界状态树并添加至所述伪造区块中,实现伪造区块的配置。
[0090]
最后通过以太坊运行所述伪造区块,由伪造区块执行历史交易重放以修复合约,并将修复合约与原合约进行比对,将比对结果写入日志。
[0091]
可以理解,本实施例的系统对应于上述实施例1的方法,上述实施例1中的可选项同样适用于本实施例,故在此不再重复描述。
[0092]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
技术特征:
1.一种基于智能合约的历史交易重放方法,其特征在于,包括:s1、根据以太坊的状态变更对交易特征进行建模,并基于所述交易特征配置交易筛选规则;s2、基于帕特里夏默克树与二叉排序树构建世界临时状态树;s3、创建伪造区块,基于所述交易筛选规则对原交易列表中的交易进行过滤筛选后添加至所述伪造区块中;根据所述世界临时状态树中存储的历史状态进行回溯,构建伪造世界状态树并添加至所述伪造区块中;s4、以太坊运行所述伪造区块,所述伪造区块执行历史交易重放以修复合约,并将修复合约与原合约进行比对,将比对结果写入日志。2.根据权利要求1所述的历史交易重放方法,其特征在于,所述s1步骤中,以太坊的状态变更包括:利用状态转移函数υ驱动区块链上第t号区块b
r
生长为b
t+1
,将第t号区块上的状态σ
t
更新为σ
t+1
,并根据交易状态生成收据r;其中,当区块的交易为非停机交易时,状态转移函数υ通过evm状态改变函数e与交易状态改变函数t使状态σ
t
更新为σ
t+1
,并生成成功收据r
s
;当区块的交易为停机交易时状态σ
t
保持不变,并生成失败收据r
f
;通过指令信息ins描述evm状态改变函数e;则根据以太坊的状态变更对交易特征进行建模,得到交易特征tx=(b,ns,,);其中,b为区块,σ为状态。3.根据权利要求2所述的历史交易重放方法,其特征在于,所述s1步骤中,基于所述交易特征配置交易筛选规则,包括:通过运算符连接所述交易特征tx以定义交易筛选规则;所述运算符包括关系运算符和/或逻辑运算符。4.根据权利要求1所述的历史交易重放方法,其特征在于,所述s2步骤中,基于帕特里夏默克树与二叉排序树构建世界临时状态树,包括:基于帕特里夏默克树构建一阶树作为世界账户树a
tmp
,基于二叉排序树构建二阶树作为历史交易区块树h
tmp
,将所述世界账户树a
tmp
和所述历史交易区块树h
tmp
组合构建得到世界临时状态树σ
tmp
;其中,所述世界账户树a
tmp
中以账户地址为键,以所述历史交易区块树h
tmp
中的根哈希值为值;所述历史交易区块树h
tmp
中以区块号为键,以相应区块下账户的状态数据为值。5.根据权利要求4所述的历史交易重放方法,其特征在于,所述世界临时状态树σ
tmp
还用于确定当前区块currblock起始状态以及终止状态,以提供临时信息;其中:初始化右临近区块nextblock为null,并初始化目标区块号target为当前区块的区块号currblock.num+1;深度优先遍历节点node,直到节点node遍历到空节点;在所述深度优先遍历过程中,判断节点区块号node.num的值:若node.num>target,则将节点node赋值给右临近区块nextblock,并将节点node赋值为其左节点node.left;若node.num<target,则将节点node赋值为其右节点node.right;若node.num=target,则将右临近区块nextblock赋值为node,并返回右临近区块
nextblock;当深度优先遍历结束后,返回右临近区块nextblock;根据经过深度优先遍历的当前区块currblock以及右临近区块nextblock从所述世界临时状态树σ
tmp
中得到当前区块currblock的起始状态以及终止状态作为临时信息。6.根据权利要求1所述的历史交易重放方法,其特征在于,所述s3步骤中,其具体步骤包括:s310、基于所述交易筛选规则定位需要进行重放的交易区块位置,即原区块b
ori
的位置,拷贝原区块b
ori
内容,构建得到伪造区块b
fake
;s320、基于交易特征(b,ns,,)与运算符构建规则rule以筛选交易,得到交易tx
rule
={tx
i
|
rule
(
i
)}及关联交易tx
rel
;其中tx
i
表示第i个交易,i∈{0,1,
…
,n},n为交易总数;函数satisfy
rule
表示当交易tx
i
满足规则rule时返回真,否则返回假;取交易tx
rule
与关联交易tx
rel
的交集组成过滤交易tx
filter
并添加至所述伪造区块中;s330、从所述世界临时状态树获取历史状态并进行回溯,将修复代码c
rep
注入修复合约s
crep
,得到伪造世界状态树σ
fake
,并将所述伪造世界状态树σ
fake
添加至所述伪造区块中。7.根据权利要求6所述的历史交易重放方法,其特征在于,所述s330步骤中,从所述世界临时状态树获取历史状态并进行回溯时,仅回溯修复合约s
crep
的关联账户sc
rep
的历史状态,并执行关联交易tx
rel
。8.根据权利要求7所述的历史交易重放方法,其特征在于,所述s3步骤中,还包括以下步骤:s301、遍历所有区块中的所有交易,对交易元数据中表示来源与去向的账户地址配置为互为显式直接关联账户sc
ex
;s302、遍历合约合约账户执行栈,将指令call或delegatecall所调用的账户配置为隐式直接关联账户sc
im
;s303、取所述显式直接关联账户sc
ex
与所述隐式直接关联账户sc
im
的并集为直接关联账户sc
dir
,并存入所述世界临时状态树中;s304、初始化查找账户account的关联账户表accountlist集合,去除重复元素;初始化探索队列q并以查找账户account的直接关联账户sc
dir
为队列q的初始值;s305、基于探索队列q广度探索直接关联账户,直到队列为空,即len(q)>0;在每一次探索中,确定探索队列q的队首账户并找到其直接关联账户,得到直接关联账户集relations
←
getdirectrealitions(q.poip(),block);接着遍历所述直接关联账户集relations中的每一个账户relation,将不存在于所述关联账户表accountlist中的元素加入探索队列q及关联账户表accountlist;s306、通过关联账户表accountlist得到查找账户account的所有关联账户sc
rep
,遍历所有交易,找出交易元数据中表示来源或去向的且包含关联账户sc
rep
的交易,得到关联交易tx
rel
。9.根据权利要求1~8任一项所述的历史交易重放方法,其特征在于,所述s2步骤中,还包括:通过向以太坊数据库注入检测代码以获得以太坊的持久信息,即储存在以太坊数据库的信息,通过数据库索引直接获得。10.一种基于智能合约的历史交易重放系统,应用权利要求1~9任一项所述的历史交
易重放方法,其特征在于,包括:规则管理模块,用于根据以太坊的状态变更对交易特征进行建模,并基于所述交易特征配置交易筛选规则以筛选目标类型的交易;信息汇总模块,其上配置有基于帕特里夏默克树与二叉排序树构建的世界临时状态树,用于存储以太坊的临时信息与持久信息;交易重放模块,用于通过创建伪造区块,基于分叉机制执行历史交易重放以修复合约,并将修复合约与原合约进行比对,将比对结果写入日志;所述伪造区块上配置有基于所述交易筛选规则对原交易列表中的交易进行过滤筛选的过滤交易tx
filter
,以及根据所述世界临时状态树中存储的历史状态进行回溯所构建的伪造世界状态树。
技术总结
本发明涉及智能合约测试技术领域,提出一种基于智能合约的历史交易重放方法及系统,包括以下步骤:根据以太坊的状态变更对交易特征进行建模,并基于所述交易特征配置交易筛选规则;基于帕特里夏默克树与二叉排序树构建世界临时状态树;创建伪造区块,基于所述交易筛选规则对原交易列表中的交易进行过滤筛选后添加至所述伪造区块中;根据所述世界临时状态树中存储的历史状态进行回溯,构建伪造世界状态树并添加至所述伪造区块中;以太坊运行所述伪造区块,所述伪造区块执行历史交易重放以修复合约,并将修复合约与原合约进行比对,将比对结果写入日志。结果写入日志。结果写入日志。
技术研发人员:王立波 彭泳翔 刘志全 马勇 郭晶晶 丁振杨 范文杰
受保护的技术使用者:暨南大学
技术研发日:2023.07.14
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:通信方法及穿戴式设备与流程 下一篇:基于智能制造的大数据处理方法及系统与流程
