System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于区块链,特别是涉及一种以太坊链上交易gas优化方法、系统、设备及介质。
技术介绍
1、以太坊(ethereum)是一个有效结合智能合约技术的区块链平台。它具有智能合约开发语言solidity,可以很好地支持智能合约开发。同时,以太坊还提供了以太坊虚拟机,用于执行智能合约。为了防止恶意攻击,以太坊虚拟机执行合约的过程直接与金钱挂钩。在执行过程中,以太坊会根据执行的操作码的类型收取一部分费用,称为gas。gas可以反映智能合约对系统资源的消耗,因此,不仅可用于评估以太坊的性能,还能防止计算资源的过度消耗。
2、在相关技术中,为了降低交易所耗费的gas,除了对智能合约的编写者提出更高的编码要求以外,很多区块链程序的设计者尝试将交易涉及的运算尽可能多的移至链下完成,并将链下运算的结果提交给合约,这样,可以有效降低链上以太坊虚拟机执行字节码的数量,从而获得较好的gas优化效果。
3、然而,一个交易的执行往往需要访问链上状态,如果要将运算移至链下,那么必须事先从链上获取对应的状态,这需要多次访问的合约状态;如果运算较为复杂,则将运算移至链下可能会变得十分困难;此外,当进行链下运算时,合约可能受到其他用户访问状态产生变更,等将链下运算的结果提交给合约时可能已过时或错误。因此,亟需一种链上交易gas优化方案。
技术实现思路
1、鉴于以上所述现有技术的缺点,本专利技术的目的在于提供一种以太坊链上交易gas优化方法、系统、设备及介质,用于解决现有技术以太坊交易ga
2、为实现上述目的及其他相关目的,本专利技术的第一方面提供一种以太坊链上交易gas优化方法,包括:获取以太坊内部署的至少一个智能合约交易所对应的智能合约操作码;对所述智能合约操作码进行集合划分,确定只读操作集与写入操作集,其中,所述写入操作集比所述只读操作集仅多一个写合约全局状态变量的操作;所述写入操作集表征需消耗预设gas,且所述只读操作集表征无需消耗gas;当执行智能合约交易时,通过链上执行所述只读操作集进行计算,确定运算值,且在执行所述写入操作集进行逻辑交易时,将所述运算值保存到所述写入操作集内的写全局状态变量,以优化所述以太坊链上交易所需gas。
3、于本专利技术的一实施例中,所述对所述智能合约操作码进行集合划分,确定只读操作集与写入操作集,包括:对所述智能合约操作码进行抽象归纳,获得基本动作集合,其中,所述基本动作集合包括写合约全局状态变量、读合约全局状态变量、写可修改变量、读可修改变量、读不可修改变量与堆栈操作;将所述基本动作集合中所有动作的执行过程作为所述写入操作集,且将所述基本动作集合中仅缺少写合约全局状态变量的动作的执行过程作为所述只读操作集。
4、于本专利技术的一实施例中,所述智能合约执行逻辑交易包括调用第一函数与调用第二函数,所述第一函数为非交易函数,所述第二函数为交易函数,其中,调用所述非交易函数进行链上运算,并将所述运算结果通过abi编码反馈至链下的所述交易函数进行存储。
5、于本专利技术的一实施例中,在同一个所述智能合约所对应的非交易函数和交易函数未执行完之前,引入状态锁机制以使当前所述智能合约保持锁定状态;若同一个所述智能合约所对应的非交易函数先执行完,直至所对应的所述交易函数也执行完,则解锁当前所述智能合约的锁定状态。
6、于本专利技术的一实施例中,根据锁定所述智能合约状态范围不同,将状态锁分为管理员锁和用户锁;其中,所述管理员锁通过更改全局变量状态值的全局标志值来确定是否执行逻辑交易,所述用户锁表征用户在执行逻辑交易前锁定关联的用户数据,直至完成逻辑交易时,清除所述用户锁标志以解除所述用户锁。
7、于本专利技术的一实施例中,所述管理员锁将设定所述全局标志值的用户作为管理员,以使所述管理员具有控制执行逻辑交易的权限,通过所述管理员锁确定所述用户是否可执行逻辑交易。
8、于本专利技术的一实施例中,所述智能合约中每个用户设置关联的用户数据,通过所述用户锁锁定所述用户数据且在执行逻辑交易时,仅使用与所述用户关联的所述用户数据。
9、本专利技术的第二方面提供一种以太坊链上交易gas优化系统,包括:操作码获取模块,用于获取以太坊内部署的至少一个智能合约交易所对应的智能合约操作码;操作集确定模块,用于对所述智能合约操作码进行集合划分,确定只读操作集与写入操作集,其中,所述写入操作集比所述只读操作集仅多一个写合约全局状态变量的操作;所述写入操作集表征需消耗预设gas,且所述只读操作集表征无需消耗gas;gas优化模块,用于当执行智能合约交易时,通过链上执行所述只读操作集进行计算,确定运算值,且在执行所述写入操作集进行逻辑交易时,将所述运算值保存到所述写入操作集内的写全局状态变量,以优化所述以太坊链上交易所需gas。
10、本专利技术的第三方面提供一种以太坊链上交易gas优化电子设备,包括:
11、一个或多个处理装置;
12、存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置实现上述的以太坊链上交易gas优化方法。
13、本专利技术的第四方面提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序用于使所述计算机执行上述的以太坊链上交易gas优化方法。
14、如上所述,本专利技术所述以太坊链上交易gas优化方法、系统、设备及介质的一个技术方案,具有以下有益效果:
15、本专利技术通过将以太坊内部署的至少一个智能合约交易所对应的智能合约操作码;对所述智能合约操作码进行集合划分,确定只读操作集与写入操作集,通过分别执行只读操作集与写入操作集,其中,由于执行所述只读操作集时缺少合约全局状态变量的操作,导致执行所述只读操作集不会消耗gas,同时,通过链上执行所述只读操作集进行计算,确定运算值,通过链上进行复杂计算,减少链下对交易状态的访问,从而简化交易运算移至链下的复杂度;不仅降低一个逻辑交易所耗费的gas总量,还简化写入过程的操作,进而实现gas的高效利用。
本文档来自技高网...【技术保护点】
1.一种以太坊链上交易gas优化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述智能合约操作码进行集合划分,确定只读操作集与写入操作集,包括:
3.根据权利要求1所述的方法,其特征在于,所述智能合约执行逻辑交易包括调用第一函数与调用第二函数,所述第一函数为非交易函数,所述第二函数为交易函数,其中,调用所述非交易函数进行链上运算,并将所述运算结果通过abi编码反馈至链下的所述交易函数进行存储。
4.根据权利要求3所述的方法,其特征在于,在同一个所述智能合约所对应的非交易函数和交易函数未执行完之前,引入状态锁机制以使当前所述智能合约保持锁定状态;若同一个所述智能合约所对应的非交易函数先执行完,直至所对应的所述交易函数也执行完,则解锁当前所述智能合约的锁定状态。
5.根据权利要求4所述的方法,其特征在于,根据锁定所述智能合约状态范围不同,将状态锁分为管理员锁和用户锁;其中,所述管理员锁通过更改全局变量状态值的全局标志值来确定是否执行逻辑交易,所述用户锁表征用户在执行逻辑交易前锁定关联的用户数据,直至完成逻辑交
6.根据权利要求5所述的方法,其特征在于,所述管理员锁将设定所述全局标志值的用户作为管理员,以使所述管理员具有控制执行逻辑交易的权限,通过所述管理员锁确定所述用户是否可执行逻辑交易。
7.根据权利要求5所述的方法,其特征在于,所述智能合约中每个用户设置关联的用户数据,通过所述用户锁锁定所述用户数据且在执行逻辑交易时,仅使用与所述用户关联的所述用户数据。
8.一种以太坊链上交易gas优化系统,其特征在于,包括:
9.一种以太坊链上交易gas优化电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序用于使所述计算机执行权利要求1至7中任一所述的方法。
...【技术特征摘要】
1.一种以太坊链上交易gas优化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述智能合约操作码进行集合划分,确定只读操作集与写入操作集,包括:
3.根据权利要求1所述的方法,其特征在于,所述智能合约执行逻辑交易包括调用第一函数与调用第二函数,所述第一函数为非交易函数,所述第二函数为交易函数,其中,调用所述非交易函数进行链上运算,并将所述运算结果通过abi编码反馈至链下的所述交易函数进行存储。
4.根据权利要求3所述的方法,其特征在于,在同一个所述智能合约所对应的非交易函数和交易函数未执行完之前,引入状态锁机制以使当前所述智能合约保持锁定状态;若同一个所述智能合约所对应的非交易函数先执行完,直至所对应的所述交易函数也执行完,则解锁当前所述智能合约的锁定状态。
5.根据权利要求4所述的方法,其特征在于,根据锁定所述智能合约状态范围不同,将状态锁分为管理员锁和用户锁;其...
【专利技术属性】
技术研发人员:孙云,
申请(专利权)人:上海摩联信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。