一种基于窥孔优化的以太坊智能合约Gas优化方法技术

技术编号:26691092 阅读:37 留言:0更新日期:2020-12-12 02:42
本发明专利技术提出一种基于窥孔优化的以太坊智能合约Gas优化方法。该方法首先收集以太坊中部署的智能合约操作码。将以太坊智能合约操作码中进行拆分指令序列处理,获得的所有指令序列,得到指令序列集。然后对指令序列集后进行标准化处理,对指令中的寄存器、常数等参数进行标准化。得到标准化后的操作码后进行指令序列划分,并计算Gas消耗,每一类作为一个替换规则。然后进行待优化合约匹配,优化过程中使用替换规则进行匹配,如果检测到等价片段,则添加进替换规则中。最后进行指令序列替换,选择Gas消耗最低的片段将其替换,如果该等价片段Gas消耗更低则不进行替换。最后达到降低智能合约Gas消耗的效果。

【技术实现步骤摘要】
一种基于窥孔优化的以太坊智能合约Gas优化方法
本专利技术属于计算机技术中的区块链智能合约领域,尤其是面向以太坊区块链系统中的Solidity智能合约Gas优化领域,用于降低以太坊智能合约的交易成本。本专利技术使用编译器操作码优化技术中的窥孔优化技术对以太坊智能合约操作码进行优化以达到Gas优化的目的。
技术介绍
在互联网技术不断发展的时代,各种新兴技术应运而生。二十一世纪初期,移动智能设备与技术的出现完全改变了人们的生活,人工智能、数据挖掘、深度学习等新技术也相继涌现出来。在这样的大前提下,区块链技术在近几年中迅速发展起来。成为又一个值得深入理解的新兴技术。区块链技术的源于2008年中本聪提出的比特币,它是一种去中心化的虚拟货币,这种货币不需要一个中心机构去管理,能够实现完全的自我发行和流通。目前,比特币系统已在无人监管的情况下,连续10年间正确运转,从未出现过差错,因此比特币系统开始受人关注。研究人员从比特币系统中抽离了底层技术并命名为区块链技术。区块链是一个个区块按照生成的时间顺序逐个链接在一起形成一条区块构成的链。这种技术具有去中心化、一致性、不可变性等特点。去中心化代表着它不需要一个中心化的管理者来管理这条区块链,而是每个人拥有均等的权限,每个人都有机会去生成下一个区块,每个人都有权力去验证其他人生成的区块。区块链技术采用共识协议的方式是所有人对区块达成一致,在某一节点挖出区块后,每一个人根据事先规定的共识协议验证区块,验证通过后区块会被真正记录到区块链中。区块链技术由于无需人工监管所以有效降低了交易成本,使人们在可以选择成本更低的方式建立交易平台。因此,区块链技术及其应用有很高的研究价值。然而,如比特币这种虚拟货币只是其中区块链技术的一个简单的应用场景。区块链技术由于他的特点,可用领域十分宽泛,然而比特币系统中仅限转账功能,使得使用场景受限,因此人们将智能合约。智能合约(SmartContract)是一种信息化的计算机协议,由NickSzabo于1995年首次提出。与纸质合约不同,智能合约以代码的形式存在。智能合约无需人来监督执行,合约中的条件会以代码的形式写明,一旦达成条件,合约会自动执行,这有效地降低了违约的风险。区块链去中心化、一致性、不可变性的特性使得智能合约可以建立在区块链的基础上。将智能合约与区块链结合,可以真正做到在不可靠环境下,自动执行智能合约。以太坊(Ethereum)是第一个基于区块链和智能合约技术的平台,以太坊上的智能合约由以太坊自创的Solidity语言编写,这是一种图灵完备的语言,可以很好的支持智能合约的编写。以太坊的客户端中包含了以太坊虚拟机(EthereumVirtualEngine)用来执行智能合约,为了预防恶意攻击,以太坊虚拟机执行合约的过程直接与金钱挂钩,也就是Gas机制。以太坊虚拟机指令集中的每一条指令,都有一定数量的Gas消耗,Gas直接与金钱挂钩。也就是说执行操作码需要消耗用户账户中的钱。因此想要降低交易成本就需要减少Gas的消耗。由于编译器编译出的指令序列在多数情况下都不是最优解,因此可以从操作码的角度优化智能合约从而达到减少交易成本的目的。本专利技术以以太坊智能合约作为研究对象,使用窥孔优化技术对智能合约的操作码进行优化,从而实现优化智能合约Gas消耗的目的。窥孔优化技术是一种针对操作码的Gas优化技术,这种技术根据操作码等价替换规则,使用Gas最优化的片段对识别出的等价指令序列进行替换,以达到从操作码角度优化Gas消耗的目的。窥孔优化将操作码的序列拆分成指令序列集,对每一个片段进行匹配和优化。本方法将窥孔优化技术用在以太坊虚拟机的指令集上,通过对以太坊智能合约的操作码进行收集、拆分、标准化,得到大量指令序列,对这些指令序列进行分类,得出替换规则,并根据规则对一个特定的以太坊智能合约进行优化。通过该方法,可以在不改变原有合约的功能的前提下,降低交易Gas消耗,起到降低成本的作用。
技术实现思路
本专利技术提供一种基于窥孔优化的以太坊智能合约Gas优化方法,来有效降低以太坊中执行智能合约的交易的Gas消耗,从而减少在执行该智能合约的交易时消耗的Gas数量,达到降低交易成本的目的。为达成上述目标,本专利技术提出一种基于窥孔优化的以太坊智能合约Gas优化方法。该方法首先收集以太坊中部署的智能合约操作码,对收集到的智能合约操作码进行去重。将去重后的以太坊智能合约操作码中进行拆分指令序列处理,获得的所有指令序列重新进行去重,得到指令序列集。然后对指令序列集后进行标准化处理,对指令中的寄存器、常数等参数进行标准化。得到标准化后的操作码后进行指令序列划分,即将等价的指令序列分类,并计算Gas消耗,每一类作为一个替换规则。然后是进行待优化合约匹配,优化过程中使用替换规则进行匹配,如果检测到等价片段,则添加进替换规则中。最后进行指令序列替换,选择Gas消耗最低的片段将其替换,如果该等价片段Gas消耗更低则不进行替换。最后达到降低智能合约Gas消耗的效果。具体而言,该方法包括以下步骤:1)指令序列集生成。本步骤生成用于待划分类别的指令序列集。首先从区块链中获取所有部署的智能合约,得到以太坊智能合约操作码数据集Data_SC。对Data_SC中的每一个智能合约进行拆分,得到指令序列集。对指令序列集中所有指令序列进行标准化,标准化过程包括寄存器标准化和常量标准化。标准化后的指令序列集中相同的指令序列只保存一个,最后得到指令序列集Data_IS。2)指令序列集划分。本步骤对Data_IS的指令序列进行等价识别,识别出等价指令序列则将其划分到一类。对Data_IS中的每一个指令序列,放在虚拟机中执行,记录执行后的虚拟机状态,并计算出本次执行的Gas消耗情况,指令序列和Gas消耗的信息将被记录进入“虚拟机状态-指令序列列表”哈希表。指令序列是否等价通过等价测试判断,判断等价的所有序列将被归为一类。3)待优化合约匹配。本步骤根据步骤2中得到的指令序列分类,对待优化智能合约的指令序列进行匹配。首先要将待优化的智能合约拆分成指令序列,并对其进行标准化,得到的指令序列集与步骤2中得到的分类进行匹配,如果发现同样的指令序列则添加到优化列表。4)指令序列替换。本步骤根据步骤3中得到的优化列表对待优化智能合约进行优化。根据优化列表中的指令序列issc与分类的对应关系,取分类中Gas消耗最低的指令序列ismin与优化列表的指令序列issc的Gas消耗对比,如果ismin的Gas消耗更低则进行替换。进一步,其中上述步骤1)的具体步骤如下:步骤1)-1:起始状态;步骤1)-2:输入智能合约数据集Data_SC,最大窗口宽度windowmax;步骤1)-3:设置当前窗口宽度window为1;步骤1)-4:初始化指令序列数据集Data_IS为空;步骤1)-5:从Data_SC取出一个智能合约sc;步骤1)-6:使用窗口拆分sc的操作码为一组指令序列set_is;步骤1)-7:Data_is=Data_is∪se本文档来自技高网
...

【技术保护点】
1.一种基于窥孔优化的以太坊智能合约Gas优化方法,其特征是该方法首先收集以太坊中部署的智能合约操作码,对收集到的智能合约操作码进行去重。将去重后的以太坊智能合约操作码中进行拆分指令序列处理,获得的所有指令序列重新进行去重,得到指令序列集。然后对指令序列集后进行标准化处理,对指令中的寄存器、常数等参数进行标准化。得到标准化后的操作码后进行指令序列划分,即将等价的指令序列分类,并计算Gas消耗,每一类作为一个替换规则。然后是进行待优化合约匹配,优化过程中使用替换规则进行匹配,如果检测到等价片段,则添加进替换规则中。最后进行指令序列替换,选择Gas消耗最低的片段将其替换,如果该等价片段Gas消耗更低则不进行替换。最后达到降低智能合约Gas消耗的效果。该方法包括以下步骤:/n1)指令序列集生成。本步骤生成用于待划分类别的指令序列集。首先从区块链中获取所有部署的智能合约,得到以太坊智能合约操作码数据集Data_SC。对Data_SC中的每一个智能合约进行拆分,得到指令序列集。对指令序列集中所有指令序列进行标准化,标准化过程包括寄存器标准化和常量标准化。标准化后的指令序列集中相同的指令序列只保存一个,最后得到指令序列集Data_IS。/n2)指令序列集划分。本步骤对Data_IS的指令序列进行等价识别,识别出等价指令序列则将其划分到一类。对Data_IS中的每一个指令序列,放在虚拟机中执行,记录执行后的虚拟机状态,并计算出本次执行的Gas消耗情况,指令序列和Gas消耗的信息将被记录进入“虚拟机状态-指令序列列表”哈希表。指令序列是否等价通过等价测试判断,判断等价的所有序列将被归为一类。/n3)待优化合约匹配。本步骤根据步骤2中得到的指令序列分类,对待优化智能合约的指令序列进行匹配。首先要将待优化的智能合约拆分成指令序列,并对其进行标准化,得到的指令序列集与步骤2中得到的分类进行匹配,如果发现同样的指令序列则添加到优化列表。/n4)指令序列替换。本步骤根据步骤3中得到的优化列表对待优化智能合约进行优化。根据优化列表中的指令序列is...

【技术特征摘要】
1.一种基于窥孔优化的以太坊智能合约Gas优化方法,其特征是该方法首先收集以太坊中部署的智能合约操作码,对收集到的智能合约操作码进行去重。将去重后的以太坊智能合约操作码中进行拆分指令序列处理,获得的所有指令序列重新进行去重,得到指令序列集。然后对指令序列集后进行标准化处理,对指令中的寄存器、常数等参数进行标准化。得到标准化后的操作码后进行指令序列划分,即将等价的指令序列分类,并计算Gas消耗,每一类作为一个替换规则。然后是进行待优化合约匹配,优化过程中使用替换规则进行匹配,如果检测到等价片段,则添加进替换规则中。最后进行指令序列替换,选择Gas消耗最低的片段将其替换,如果该等价片段Gas消耗更低则不进行替换。最后达到降低智能合约Gas消耗的效果。该方法包括以下步骤:
1)指令序列集生成。本步骤生成用于待划分类别的指令序列集。首先从区块链中获取所有部署的智能合约,得到以太坊智能合约操作码数据集Data_SC。对Data_SC中的每一个智能合约进行拆分,得到指令序列集。对指令序列集中所有指令序列进行标准化,标准化过程包括寄存器标准化和常量标准化。标准化后的指令序列集中相同的指令序列只保存一个,最后得到指令序列集Data_IS。
2)指令序列集划分。本步骤对Data_IS的指令序列进行等价识别,识别出等价指令序列则将其划分到一类。对Data_IS中的每一个指令序列,放在虚拟机中执行,记录执行后的虚拟机状态,并计算出本次执行的Gas消耗情况,指令序列和Gas消耗的信息将被记录进入“虚拟机状态-指令序列列表”哈希表。指令序列是否等价通过等价测试判断,判断等价的所有序列将被归为一类。
3)待优化合约匹配。本步骤根据步骤2中得到的指令序列分类,对待优化智能合约的指令序列进行匹配。首先要将待优化的智能合约拆分成指令序列,并对其进行标准化,得到的指令序列集与步骤2中得到的分类进行匹配,如果发现同样的指令序列则添加到优化列表。
4)指令序列替换。本步骤根据步骤3中得到的优化列表对待优化智能合约进行优化。根据优化列表中的指令序列issc与分类的对应关系,取分类中Gas消耗最低的指令序列ismin与优化列表的指令序列issc的Gas消耗对比,如果ismin的Gas消耗更低则进行替换。


2.根据权利要求1中所述的一种...

【专利技术属性】
技术研发人员:王兴亚高新宇陈振宇赵源孙伟松
申请(专利权)人:南京慕测信息科技有限公司
类型:发明
国别省市:江苏;32

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

1