区块链智能合约读写集构建方法及装置制造方法及图纸

技术编号:31678441 阅读:15 留言:0更新日期:2022-01-01 10:23
本申请提供一种区块链智能合约读写集构建方法及装置,该方法在编译待处理智能合约时,通过将该智能合约划分为一个或多个基本块,基于该一个或多个基本块,建立相应的控制流图,进而,基于该控制流图,确定图中每个基本块中发起区块链存储读写请求的代码语句,从而,根据该代码语句,确定目标数据来源,根据该目标数据来源,构建上述智能合约的读写集。其中,无需智能合约开发者参与,解决了现有由智能合约开发者构造交易读写集,增加智能合约开发者的心智负担和工作量的问题,降低了并行智能合约开发的复杂性,加快交易整体处理效率,而且,对智能合约开发者完全透明,较好地改善了开发者开发并行智能合约时的体验。了开发者开发并行智能合约时的体验。了开发者开发并行智能合约时的体验。

【技术实现步骤摘要】
区块链智能合约读写集构建方法及装置


[0001]本申请涉及金融科技(Fintech)的区块链技术,尤其涉及一种区块链智能合约读写集构建方法及装置。

技术介绍

[0002]随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,区块链技术也不例外,但由于金融行业的安全性、实时性要求,其对区块链技术提出更高的要求。
[0003]当前分布式存储系统在金融行业中应用越来越广泛。区块链系统是一种多中心、防篡改、防抵赖的分布式存储系统,因此,区块链系统在金融行业中应用越来越多。对于现代的区块链系统来说,智能合约的发展是区块链技术发展的一个里程碑,提供了更加强大的逻辑功能,可以满足各种领域的业务要求将区块链从最初单一数字货币应用,发展融入到了多个领域。
[0004]在区块链系统中,为了提升交易整体处理效率,需要在保证区块链数据并发安全的前提下尽可能提高交易的并行处理能力。由于现有区块链系统中每笔交易都需要基于智能合约中读写集执行,因此为了提高交易的并行处理能力,现有一般由智能合约开发者在不执行交易时构造交易读写集,并在智能合约源代码中以元数据的方式声明交易的具体读写集构造规则。然而,现有交易读写集的构造要求智能合约开发者必须遵守一定规则,增加了智能合约开发者的心智负担和工作量,也增加了并行智能合约开发的复杂性,潜在地降低了交易整体处理效率。

技术实现思路

[0005]为解决现有技术中存在的问题,本申请提供一种区块链智能合约读写集构建方法及装置。
[0006]第一方面,本申请实施例提供一种区块链智能合约读写集构建方法,所述方法包括:在编译待处理智能合约时,将所述待处理智能合约划分为一个或多个基本块;基于所述一个或多个基本块,建立所述待处理智能合约对应的控制流图;基于所述控制流图,确定所述控制流图的每个基本块中发起区块链存储读写请求的代码语句;根据所述每个基本块中发起区块链存储读写请求的代码语句,确定目标数据来源;根据所述目标数据来源,构建所述待处理智能合约的读写集。
[0007]在一种可能的实现方式中,所述基于所述一个或多个基本块,建立所述待处理智能合约对应的控制流图,包括:基于所述一个或多个基本块,确定所述待处理智能合约的各个程序语句中的首语
句以及跳转语句;根据所述首语句和所述跳转语句的目标地址,建立所述待处理智能合约对应的所述控制流图。
[0008]在一种可能的实现方式中,所述根据所述首语句和所述跳转语句的目标地址,建立所述待处理智能合约对应的所述控制流图,包括:根据所述首语句和所述跳转语句的目标地址,对所述各个程序语句进行排序,并对排序后的各个程序语句进行去重;基于去重后各个程序语句,确定所述控制流图中的基本块节点,并基于所述去重后各个程序语句中每一跳转语句的目标地址,确定所述控制流图中由基本块指向目标地址所在的基本块的有向边;根据所述基本块节点和所述有向边,建立所述待处理智能合约对应的所述控制流图。
[0009]在一种可能的实现方式中,所述根据所述每个基本块中发起区块链存储读写请求的代码语句,确定目标数据来源,包括:根据所述每个基本块中发起区块链存储读写请求的代码语句,分别定位出读写过程中所述每个基本块中被用作键的程序变量;基于所述每个基本块中被用作键的程序变量,确定所述目标数据来源。
[0010]在一种可能的实现方式中,所述根据所述每个基本块中发起区块链存储读写请求的代码语句,分别定位出读写过程中所述每个基本块中被用作键的程序变量,包括:根据所述每个基本块中发起区块链存储读写请求的代码语句,分别确定所述每个基本块的转换函数,其中,所述转换函数用于基于一代码语句执行后的冲突域确定下一冲突域,所述冲突域为基本块中被用作键的程序变量的集合;基于所述每个基本块的转换函数,分别定位出读写过程中所述每个基本块中被用作键的程序变量。
[0011]在一种可能的实现方式中,所述根据所述每个基本块中发起区块链存储读写请求的代码语句,分别确定所述每个基本块的转换函数,包括:根据所述每个基本块中发起区块链存储读写请求的代码语句,分别确定所述每个基本块的代码语句中为定值的所有程序变量的第一集合,以及所述每个基本块的代码语句中会被用作索引向区块链系统发起数据访问请求的所有程序变量的第二集合;根据所述第一集合和所述第二集合,分别确定所述每个基本块的转换函数。
[0012]在一种可能的实现方式中,所述基于所述每个基本块中被用作键的程序变量,确定所述目标数据来源,包括:在所述每个基本块中被用作键的程序变量上添加预设标签;将所述预设标签沿所述待处理智能合约的数据流转路径逆向传播至所述待处理智能合约执行的入口点,识别出所述每个基本块中被用作键的程序变量的目标数据来源。
[0013]在一种可能的实现方式中,所述将所述待处理智能合约划分为一个或多个基本块,包括:扫描所述待处理智能合约,确定所述待处理智能合约的代码结构;根据所述代码结构以及预设的基本块条件,将所述待处理智能合约划分为所述一
个或多个基本块。
[0014]在一种可能的实现方式中,所述根据所述目标数据来源,构建所述待处理智能合约的读写集,包括:判断所述目标数据来源是否由所述待处理智能合约的交易输入、区块链系统环境信息或常量构成;若所述目标数据来源是由所述待处理智能合约的交易输入、区块链系统环境信息或常量构成,则基于所述目标数据来源,构建所述待处理智能合约的读写集。
[0015]在一种可能的实现方式中,所述基于所述控制流图,确定所述控制流图的每个基本块中发起区块链存储读写请求的代码语句,包括:获取预存的区块链存储的读写请求代码语句;基于所述区块链存储的读写请求代码语句和所述控制流图,在所述每个基本块中识别出发起区块链存储读写请求的代码语句。
[0016]第二方面,本申请实施例提供一种区块链智能合约读写集构建装置,所述装置包括:合约划分模块,用于在编译待处理智能合约时,将所述待处理智能合约划分为一个或多个基本块;图形建立模块,用于基于所述一个或多个基本块,建立所述待处理智能合约对应的控制流图;读写确定模块,用于基于所述控制流图,确定所述控制流图的每个基本块中发起区块链存储读写请求的代码语句;来源确定模块,用于根据所述每个基本块中发起区块链存储读写请求的代码语句,确定目标数据来源;读写集构建模块,用于根据所述目标数据来源,构建所述待处理智能合约的读写集。
[0017]在一种可能的实现方式中,所述图形建立模块,具体用于:基于所述一个或多个基本块,确定所述待处理智能合约的各个程序语句中的首语句以及跳转语句;根据所述首语句和所述跳转语句的目标地址,建立所述待处理智能合约对应的所述控制流图。
[0018]在一种可能的实现方式中,所述图形建立模块,具体用于:根据所述首语句和所述跳转语句的目标地址,对所述各个程序语句进行排序,并对排序后的各个程序语句进行去重;基于去重后各个程序语句,确定所述控制流图中的基本块节点,并基于所述去重后各个程序语句中每一跳转语句的目标地址,确定本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链智能合约读写集构建方法,其特征在于,包括:在编译待处理智能合约时,将所述待处理智能合约划分为一个或多个基本块;基于所述一个或多个基本块,建立所述待处理智能合约对应的控制流图;基于所述控制流图,确定所述控制流图的每个基本块中发起区块链存储读写请求的代码语句;根据所述每个基本块中发起区块链存储读写请求的代码语句,确定目标数据来源;根据所述目标数据来源,构建所述待处理智能合约的读写集。2.根据权利要求1所述的方法,其特征在于,所述基于所述一个或多个基本块,建立所述待处理智能合约对应的控制流图,包括:基于所述一个或多个基本块,确定所述待处理智能合约的各个程序语句中的首语句以及跳转语句;根据所述首语句和所述跳转语句的目标地址,建立所述待处理智能合约对应的所述控制流图。3.根据权利要求2所述的方法,其特征在于,所述根据所述首语句和所述跳转语句的目标地址,建立所述待处理智能合约对应的所述控制流图,包括:根据所述首语句和所述跳转语句的目标地址,对所述各个程序语句进行排序,并对排序后的各个程序语句进行去重;基于去重后各个程序语句,确定所述控制流图中的基本块节点,并基于所述去重后各个程序语句中每一跳转语句的目标地址,确定所述控制流图中由基本块指向目标地址所在的基本块的有向边;根据所述基本块节点和所述有向边,建立所述待处理智能合约对应的所述控制流图。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述每个基本块中发起区块链存储读写请求的代码语句,确定目标数据来源,包括:根据所述每个基本块中发起区块链存储读写请求的代码语句,分别定位出读写过程中所述每个基本块中被用作键的程序变量;基于所述每个基本块中被用作键的程序变量,确定所述目标数据来源。5.根据权利要求4所述的方法,其特征在于,所述根据所述每个基本块中发起区块链存储读写请求的代码语句,分别定位出读写过程中所述每个基本块中被用作键的程序变量,包括:根据所述每个基本块中发起区块链存储读写请求的代码语句,分别确定所述每个基本块的转换函数,其中,所述转换函数用于基于一代码语句执行后的冲突域确定下一冲突域,所述冲突域为基本块中被用作键的程序变量的集合;基于所述每个基本块的转换函数,分别定位出读写过程中所述每个基本块中被用作键的程序变量。6.根据权利要求5所述的方法,其特征在于,所述根据所述每个基本块中发起区块链存储读写请求的代码语句,分别确定所述每...

【专利技术属性】
技术研发人员:李陈希李辉忠张开翔范瑞彬
申请(专利权)人:深圳前海微众银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1