![点击分享此内容可以赚币 分享](/master/images/share_but.png)
智能合约Gas优化综述_宋书玮.pdf
《智能合约Gas优化综述_宋书玮.pdf》由会员分享,可在线阅读,更多相关《智能合约Gas优化综述_宋书玮.pdf(15页珍藏版)》请在咨信网上搜索。
1、智能合约 Gas 优化综述宋书玮倪孝泽陈厅(电子科技大学计算机科学与工程学院成都611731)()Gas Optimization for Smart Contracts:A SurveySongShuwei,NiXiaoze,andChenTing(School of Computer Science and Engineering,University of Electronic Science and Technology of China,Chengdu 611731)AbstractThemostsignificantfeatureofBlockchain2.0istheintrod
2、uctionofsupportforsmartcontracts,whichenables the blockchain to run various applications.The smart contract is a type of computer software that runsautomatically according to pre-defined code logic.Distinguished from traditional software,smart contracts areempowered by blockchain technology with the
3、 ability to execute correctly on mutually untrusted nodes withoutrelyingonatrustedcentralauthority,makingthemwidelyusedinareassuchasdigitalpaymentsandthesharingeconomy.Topreventthewasteofcomputingresourcescausedbytheabuseofsmartcontracts,blockchainssuchasEthereumchargesGasfeesfortwoactivities,deploy
4、mentandexecutionofsmartcontracts.Thecomputingresourceconsumedbysmartcontractsisthefactorthatdeterminesthecost.Smartcontractswithinefficientcodearewastefulofresourcesandvulnerabletoattacks,andthedevelopersandusersofthemsufferunnecessarycosts.Therefore,optimizingsmartcontractstosaveresourceshasbecomea
5、criticalissuefordevelopersandresearchers.ThissurveyfirstanalyzesthemainchallengesofGasoptimizationforsmartcontractsindetail,andthenreviewsandsummarizesthe various optimization techniques proposed in recent years.Finally,we discuss future work,which providesreferencesfordevelopersandresearcherswhoexp
6、loresmartcontracts.Key wordsblockchain;smartcontract;Gasoptimization;codeefficiency;softwareanalysis摘要区块链 2.0 最显著的特征是增加了对智能合约的支持,这使得区块链拥有了运行各种应用程序的能力.智能合约是一种根据预先定义的代码逻辑自动运行的计算机软件.区别于传统软件,区块链技术赋予了智能合约不依赖可信中心机构而在相互不信任的节点上正确执行的能力,使其在数字支付、共享经济等领域被广泛地应用.为了防止滥用智能合约导致计算资源被浪费,以太坊等区块链向部署和执行智能合约这 2 种活动收取 Gas(
7、燃料)费用.智能合约消耗的计算资源是决定费用高低的因素.具有低效代码的智能合约浪费资源且易受攻击,此类智能合约的开发者和用户将承担不必要的费用.因此,优化智能合约以节省资源已经成为开发者和研究者重点关注的问题.首先详细分析了智能合约 Gas 优化所面临的主要挑战;然后回顾和总结了近年来提出的各种优化技术;最后展望了该研究方向的未来工作,旨在为智能合约的开发者和研究人员提供参考和借鉴.关键词区块链;智能合约;Gas 优化;代码效率;软件分析中图法分类号TP391收稿日期:20221021;修回日期:20221221基金项目:国家自然科学基金项目(61872057,U19A2066);四川省自然科
8、学基金项目(2022NSFSC0871)ThisworkwassupportedbytheNationalNaturalScienceFoundationofChina(61872057,U19A2066)andtheNaturalScienceFoundationofSichuanProvince(2022NSFSC0871).通信作者:陈厅()计 算 机 研 究 与 发 展DOI:10.7544/issn1000-1239.202220887JournalofComputerResearchandDevelopment60(2):311325,2023区块链的概念最早在 2008 年作为比
9、特币的底层技术被提出1.最初,区块链被视为一个分布式的公共账本,记录虚拟货币的所有交易.这个阶段的区块链仅局限于虚拟货币的开发和买卖.然而,随着近年来区块链技术的快速发展,它所具备的去中心化、防篡改、匿名、可审计等特性引起了学术界和工业界的广泛关注,区块链技术被认为可以应用于除虚拟货币以外更多的领域2,其中一个很有前景的应用是智能合约(smartcontract).对智能合约的支持标志着区块链进入 2.0 时代2.智能合约是一种根据预先定义的代码逻辑在区块链的多个节点上同步运行的计算机软件3.区块链赋予智能合约不依赖可信中心机构而在相互不信任的节点上正确执行的能力3.由于智能合约具备去中心化、
10、抗伪造等传统计算机软件不具备的独特优势,它有潜力重塑银行、保险和内容平台等行业4.目前,在最流行的支持智能合约的区块链以太坊5中,已经部署了超过 4400 万个智能合约6.因此,本文主要关注以太坊以及其上部署的智能合约,下文中若无特殊说明,则区块链特指以太坊区块链,智能合约指部署在以太坊上的智能合约.开发者通常使用高级语言(例如 Solidity 和 Vyper)编写智能合约,开发完成后,将其编译成能够在以太坊虚拟机(Ethereumvirtualmachine,EVM)中运行的EVM 字节码.然后,通过发送一笔特殊的交易将智能合约的字节码部署到区块链上.用户可以发送交易来调用已经部署的智能合
11、约,交易中应当指定用户想调用的智能合约、接口,并携带接口所需的参数.根据以太坊黄皮书的规定,区块链网络中每个节点都应维护一份相同的区块链副本,且都应执行存储在区块链中的所有交易7.这表明部署后的智能合约被存储在所有节点的磁盘中,被调用的智能合约在所有节点的 EVM 中执行.综上所述,部署和调用智能合约会消耗区块链网络中每个节点的计算资源(CPU、磁盘空间、内存等).因此,攻击者可以通过部署大量智能合约或者发起大量交易调用智能合约对区块链实施拒绝服务攻击8.为了应对上述的资源滥用和攻击,以 EVM 作为智能合约执行环境的区块链(例如以太坊、BNBSmartChain9和 polygon10等)采
12、用了燃料(Gas)机制向部署和调用智能合约这两种活动收取费用.具体来说,区块链根据被部署智能合约的大小和被调用的智能合约中执行的指令,分别向开发者和用户收取费用.体积大的智能合约占用更多存储空间,复杂的指令相较简单的指令消耗更多资源,因此需要支付更多费用.Gas 机制提高了攻击者实施拒绝服务攻击的成本,有效地防止了区块链资源被滥用.然而,它同时也给智能合约的开发引入了新的挑战.由于开发者缺乏经验、不了解 Gas 机制、编译器优化不足和缺少辅助工具等原因,许多代码效率低下的智能合约被部署到区块链11.此类智能合约实际消耗的费用大于其真正必需的费用,因此造成资源浪费.一方面,部署智能合约时,未经优
13、化的冗余代码消耗更多存储空间,开发者将支付更多费用;另一方面,部署后的智能合约中低效率的代码可能被调用无数次,这将浪费大量资源,用户将支付更多费用;除此之外,未经优化的智能合约容易遭受攻击(详见 2.2 节).因此,研究智能合约优化方法具有重要的现实意义.目前已经出现了一些智能合约优化方法,它们能够从源代码、字节码等不同角度优化智能合约从而降低 Gas 费用.基于目前研究进展,本文对现有的智能合约优化方法进行回顾与总结,概括出 3 个研究挑战和 3 类典型的优化方法,希望能够给当前和未来的智能合约优化相关研究提供一定的参考.1相关背景知识 1.1区块链、以太坊和智能合约2008 年,Nakam
14、oto1在其论文中提出了比特币和一种点对点电子交易系统,该系统中的去中心化共享账本通过密码学方法保证其不可篡改和不可伪造.2009 年 1 月,该系统首次发布,标志着比特币的诞生.此后,比特币因具备优于传统货币的一些优良特性(例如去中心化、匿名、免监管和全世界流通等)而迅速吸引了大量关注.区块链是比特币、以太币以及类似数字加密货币的基础,它本质上是若干数据区块链接而成的一种链状数据结构,并且使用数字签名、加密哈希和分布式共识等算法来实现去中心化、可审计等特性12.其中每个数据区块记录时间戳、若干交易和前一个区块的哈希值1.区块链不存储在某个中心化的服务器,而是存储于 P2P 网络中的每个节点,
15、即每个节点都存储一份区块链的副本并通过同步使副本之间保持一致3.为了与其他节点达成共识,每个节点都会执行提交到区块链上的交易7.节点之间没有上下级关系(即没有中心节点)并且它们的地理位置是分散的,任何节点都可以加入或者退出该 P2P 网络.这表312计算机研究与发展2023,60(2)明所有的数据都是公开的,并且容易被任何节点验证.因此,除非取得所有节点的一致同意,否则很难修改区块链中记录的交易3.区块链技术使得互不信任的双方可以在不借助可信第三方的情况下安全地进行交易.尽管数字加密货币是区块链最早、最著名的应用,但区块链的应用不止于此.智能合约的出现使得基于区块链的更复杂的应用得以实现.智能
16、合约一词最早在 1997 年被 Szabo13提出,他认为将法律合同中的条款编写成代码,使其自动、强制地执行,可以减少成本并避免恶意行为.在其论文中,智能合约指使用软件来实现和执行的法律合同.时至今日,智能合约在不同学科中有着不同的含义,其中一个概念被广泛采用,本文也基于此概念展开研究:智能合约是根据预先定义的代码逻辑在区块链网络的多个节点上自动、同步运行的软件14.智能合约具有 4 点特性13:1)自动,即智能合约由交易触发,然后自动地执行;2)自治,即一旦被触发,就无法阻止智能合约执行;3)透明,即智能合约对区块链网络中的每个节点都是透明的;4)灵活,即智能合约可以根据不同的场景需求进行调
17、整.以太坊(Ethereum)自 2015 年发布以来已经逐步发展为最流行的支持智能合约的区块链平台3.以太坊采用与传统银行系统类似的账户模型15,它包含 2个类型的账户:由公私钥对控制的外部所有账户(externalownedaccount,EOA)和由智能合约代码控制的合约账户(contractaccount).两类账户的主要区别在于:1)EOA 可以发送交易以调用智能合约,合约账户无法主动与 EOA 交互,但它可以在执行过程中调用其他智能合约;2)合约账户包含智能合约代码而 EOA 没有.智能合约的生命周期通常包含开发、编译、部署、调用、执行和销毁 6 个阶段.1)开 发 阶 段.开 发
18、 者 使 用 编 程 语 言(例 如:Solidity 和 Vyper)开发智能合约.由于开发者的水平、经验和目的不同,导致开发出的智能合约可能存在代码效率低、包含恶意行为等问题.2)编译阶段.智能合约的源代码被编译成字节码.字节码由超过 150种指令排列组合而成7,根据指令操作的对象可以将指令分为如表 1 所示的 5 类8.每种指令的功能不一样,因而执行它们所消耗的计算资源也不同.3)部署阶段.开发者发起一笔接收者为空的交易,该交易将被区块链视为合约部署请求.区块链将创建一个新的合约账户来存储交易中携带的智能合约代码.4)调用阶段.当交易的接收者是一个合约账户时,该交易被视为智能合约调用请求
19、.根据交易中指定的函数和参数,事先部署的智能合约代码将被执行.5)执行阶段.以太坊提供一个基于栈的图灵完备的虚拟机(EVM)来执行智能合约.EVM 中包含 3 种存储结构以辅助智能合约的执行:用于存放局部变量的栈(stack)、用于存放函数参数和返回值的内存(memory)和用于持久化存放数据的存储(storage).其中,栈和内存是非持久化的,它们在完成一次交易后将被清除,因此存储的空间相较于栈和内存更加昂贵.6)销毁阶段.如果开发者计划在未来销毁智能合约,可以在开发阶段添加“自毁”代码,以便于从区块链中抹除该合约账户.Table 1Five Types of Instructions fo
20、r EVM表 1 以太坊虚拟机的 5 类指令类别定义第 1 类不操作任何数据结构的指令,例如 JUMPDEST.第 2 类进行栈操作的指令,例如 PUSHx,或者对栈中已有的值进行操作的指令,例如 ADD.第 3 类从区块链或交易中获取信息的指令,例如 TIMESTAMP 和ORIGIN.第 4 类用于读写内存的指令,例如 MSTORE.第 5 类用于读写存储的指令,例如 SSTORE.1.2Gas 机制如 1.1 节所述,区块链网络中每个节点都应存储区块链的完整副本,并执行历史上所有的交易以进行同步,如此重复的存储和执行导致部署和调用智能合约会消耗区块链网络中每个节点的计算资源(例如 CPU
21、、磁盘空间、内存等).为了防止计算资源被故意或无意地滥用,以太坊引入了 Gas 机制,即根据交易消耗的计算资源向交易发送方收取费用,执行交易所需的计算资源越多,那么交易发送方需要支付的费用就越多8.交易发送方在发起交易时应该指定愿意为此交易支付的 Gas 总限额(gaslimit),如果该限额比执行智能合约时实际花费的 Gas 小,则会产生 Gas 耗尽异常(out-of-gasexception)8,使得交易失败.一旦一条交易失败,区块链将恢复到执行该交易之前的状态,但是交易发起者支付的 Gas 不会被退还,因为执行该交易已经消耗了节点的计算资源16.Liu 等人17的研究发现 Gas 耗尽
22、异常在以太坊所有异常情况中占据 90%以上,这在一定程度上表明:Gas 机制阻止了大量的意图以不合理的/不够的费用执行交易的用户和攻击者.Gas 机制主要从 3 个方面发挥作用18:1)向交易宋书玮等:智能合约 Gas 优化综述313发起者收取费用可以抑制攻击者通过发起毫无价值的交易来浪费节点的计算能力;2)通过设置较高的Gas 消耗,抑制用户使用过多的存储空间;3)使交易一定会终止,从而防止基于非终止交易的拒绝服务攻击.交易费用是 Gas 价格(gasprice)和 Gas 消耗(gascost)的乘积,其中 Gas 价格是受市场影响的动态值,它指交易发起者愿意为每个单位的 Gas 所支付的
23、价格.例如,2022 年 9 月 23 日的平均 Gas 价格为 1.306108以太币19,约等于 1.7105美元20.Gas 价格在不断波动当中,峰值价格有时甚至能够达到往常的百倍以上19.影响交易费用的另一因素是 Gas 消耗,是由以太坊规定的静态值,每个 EVM 指令都有其对应的 Gas 消耗值,它是指执行某个指令需要多少单位的 Gas8.以太坊将指令的 Gas 消耗与执行该指令所需的计算资源设计成正比.如表 2 所示,有些指令所需的 Gas 消耗相对较少(例如 ADD,POP 和 AND 等),因为它们只涉及简单的操作,而另一些指令 Gas 消耗较高(例如用于创建账户的指令 CRE
24、ATE 以及用于写入存储的指令 SSTORE,值得注意的是,SSTORE指令将一个非零的值写入存储中原本为零值的位置时,它消耗 20000 个单位的 Gas;其余情况消耗 5000个单位的 Gas).此外,部署智能合约的开发者也需要支付 Gas,该费用与智能合约字节码长度成正比8.综上所述,交易发起者需要为部署和调用智能合约付费,例如向栈顶压入一个数需要 3 个单位的Gas(约等于 5.1105美元).由于智能合约中包含若干条指令并且每个智能合约可能被调用无数次,所以即便一条指令所需的费用较低,智能合约所消耗的总费用也可能增长为一个庞大的数目.为了展示交 易 费 用 的 规 模 及 其 影 响
25、,Albert 等 人16统 计 了20172019 年用于交易的资金,调查结果显示该数值达到了 1.57 亿美元.2Gas 优化的动机与挑战具备完全相同功能的智能合约可能有多种不同的实现,因而部署和调用它们所需要的 Gas 也不尽相同.由于 Gas 与金钱直接相关,用户自然地愿意选择使用功能完整且成本更低的智能合约,进而促使开发者对智能合约进行优化以减少 Gas 开销,然而一些挑战阻碍了开发者完成这一目标.2.1低效的智能合约受到包括但不限于开发者的开发经验、编程习惯、使用的编程语言、开发工具等多种因素的影响,具备完全相同功能的智能合约可能有多种不同的实现.例如,Liao 等人21对智能合约
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 合约 Gas 优化 综述 宋书
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。