基于录制重放的区块链交易执行追溯方法.pdf
《基于录制重放的区块链交易执行追溯方法.pdf》由会员分享,可在线阅读,更多相关《基于录制重放的区块链交易执行追溯方法.pdf(24页珍藏版)》请在咨信网上搜索。
1、基于录制重放的区块链交易执行追溯方法*陈胜1,方明哲2,蒋步云1,李春晓2,左春2,3,李玉成2,4,梁赓21(北京连琪科技有限公司,北京100086)2(中国科学院软件研究所,北京100190)3(中科软科技股份有限公司,北京100190)4(贵阳信息技术研究院,贵州贵阳550081)通信作者:梁赓,E-mail:摘要:区块链上运行的智能合约具有一经部署难以修改、调用执行需经过共识等特点,现有的需要修改智能合约代码或打断其执行过程的调试方法难以直接应用到智能合约上.由于智能合约的运行过程由区块链交易顺序执行过程组成,实现对区块链交易执行过程的追溯是提升智能合约可调试性的一个有效途径.对区块链
2、交易执行过程进行追溯主要目标是找出一条已经出块的区块链交易是如何得到当前的执行结果的.区块链交易的执行依赖于区块链内部状态,且该状态取决于之前区块链交易的执行结果,因此存在着传递性依赖.区块链交易的依赖性和区块链所提供的执行环境的特点给区块链交易执行追溯带来了挑战.区块链交易执行追溯面临的挑战主要有 3 方面,即如何从智能合约部署的生产环境中获取足够追溯的信息、如何获取区块链交易之间的依赖关系,以及如何保证追溯结果与实际在线执行过程一致.提出了一种基于录制重放的区块链交易执行追溯方法,在合约容器中建立录制重放机制,无需修改合约代码即可支持交易执行中对状态读写操作的录制,并且不会打断智能合约运行
3、;提出了基于状态读写的交易依赖分析算法,支持对存在依赖关系的前序交易进行按需回溯;此外,设计了录制读写操作记录的验证机制,确保重放的执行过程与真实执行过程之间的一致性可被验证.所提出的方法能够追溯区块链交易调用智能合约的执行过程,可用于智能合约调试,并且当智能合约异常造成损失时可用于举证.在实验中对比了将录制的读写操作记录存储于链上和存储于链下之间的性能差异,通过案例研究展示了所提方法在追溯区块链交易执行方面的有效性和优点.关键词:区块链;交易追溯;智能合约中图法分类号:TP311中文引用格式:陈胜,方明哲,蒋步云,李春晓,左春,李玉成,梁赓.基于录制重放的区块链交易执行追溯方法.软件学报,2
4、023,34(10):46814704.http:/ Method for Blockchain Transaction Execution Based on Recoding and ReplayCHENSheng1,FANGMing-Zhe2,JIANGBu-Yun1,LIChun-Xiao2,ZUOChun2,3,LIYu-Cheng2,4,LIANGGeng21(LinkelTechnologyCo.Ltd.,Beijing100086,China)2(InstituteofSoftware,ChineseAcademyofSciences,Beijing100190,China)3(
5、SinosoftCo.Ltd.,Beijing100190,China)4(GuiyangAcademyofInformationTechnology,Guiyang550081,China)*基金项目:国家重点研发计划(2020YFC1523203)收稿时间:2021-08-09;修改时间:2021-12-21;采用时间:2022-02-22;jos 在线出版时间:2022-09-20CNKI 网络首发时间:2023-01-05软件学报ISSN1000-9825,CODENRUXUEWE-mail:Journal of Software,2023,34(10):46814704doi:10.
6、13328/ki.jos.006664http:/中国科学院软件研究所版权所有.Tel:+86-10-62562563Abstract:Smart contracts running on the blockchain can hardly be modified after deployment,and their call and execution rely on aconsensusprocedure.Consequently,existingdebuggingmethodsthatrequirethemodificationofthesmartcontractcodeortheint
7、erruptionof execution cannot be directly applied to smart contracts.Since the running of a smart contract is composed of ordered execution ofblockchain transactions,tracing the execution of the transactions is an effective approach to render the smart contract more debuggable.Themajorgoaloftracingbl
8、ockchaintransactionexecutionistounveilhowablockchaintransactionproducessucharesultinexecution.The execution of a blockchain transaction relies on the internal state of the blockchain,and this state is determined by the executionresults of previous transactions,which results in transitive dependencie
9、s.Such dependencies and the characteristics of the executionenvironmenttheblockchainprovidesbringchallengestotracing.Thetracingofblockchaintransactionexecutionismainlyfacedwiththreechallenges:howtoobtainenoughinformationfortracingfromtheproductionenvironmentinwhichthesmartcontractisdeployed,howtoobt
10、ainthedependenciesamongtheblockchaintransactions,andhowtoensuretheconsistencybetweentheresultoftracingandtherealexecutiononline.Thisstudyproposesatracingmethodforblockchaintransactionexecutionbasedonrecordingandreplay.Bybuildingarecording and replay mechanism in the contract container,the proposed m
11、ethod enables the recording of state reading and writingoperations during transaction execution without modifying the contract code and interrupting the running of the smart contract.Atransaction dependency analysis method based on state reading and writing is proposed to support the retracing of pr
12、evious transactionslinkedbydependenciesondemand.Moreover,averificationmechanismforreadingandwritingoperationrecordingisdesignedtoensurethat the consistency between the replaying execution and the real online execution can be verified.The tracing method can trace theexecution of the blockchain transa
13、ction that calls the smart contract,which can be used in debugging of smart contracts.When loss iscaused by the failure of smart contracts,the tracing result can be used as evidence.Experiments are conducted for a performancecomparison between storing recorded reading and writing operations on chain
14、 and off chain.The advantages and effectiveness of theproposedmethodintracingblockchaintransactionexecutionarerevealedbyacasestudy.Key words:blockchain;transactiontracing;smartcontract区块链为智能合约1的正确执行提供了分布式执行结果共识2、链式数据结构可追溯防篡改等特性的保障3,使得智能合约日益流行起来.支持图灵完备语言的智能合约能够实现复杂的业务逻辑,能够支撑记账与支付4、身份认证与访问控制5、数据共享6,7等
15、现代信息系统的核心业务功能在区块链上的实现,推动了区块链技术在供应链管理、电子政务、数字金融等领域开始得到广泛的应用8.与传统业务应用的请求-响应模式不同,基于区块链的应用系统将部分业务逻辑写入部署在区块链上的智能合约,由用户直接或间接地提交经过用户数字签名的区块链交易调用和触发智能合约中的方法,由参与共识的区块链节点各自执行并对执行结果进行共识以确保正确性,输出信息记录到具有链式结构、能够防篡改、冗余地存储于各个区块链节点的区块数据中,链下的业务模块通过同步得到区块数据并据此执行业务动作.在上述过程中,区块链交易调用智能合约的执行的正确性对业务应用至关重要,虽然区块链提供了共识机制确保执行结
16、果是多方达成共识的可信结果,然而智能合约代码本身可能存在缺陷,共识得到的结果只不过是“正确地”得到了一个错误的结果.无论是因为主观恶意还是因为过失和疏忽,执行结果一旦与预期不符,都会引起不良后果.例如研究者分析以太坊公有链上以诈骗用户财产为目的蜜罐合约,发现仅 690 个蜜罐智能合约造成了高达 90000 美元的直接损失9.相比于自组织的公有链,联盟链在应用中常支撑一系列企业、政务等业务系统,智能合约缺陷导致区块链交易执行结果错误进而造成业务系统失灵,能够造成更为直接的经济损失和恶劣影响.联盟链设施的参与方对于联盟链设施的正常运行负有责任与义务,因此更加迫切地需要技术手段能够发现问题、消除隐患
17、、挽回损失.目前,对于已经部署于生产环境运行的智能合约进行调试和分析的研究较少,出现错误后难以快速定位问题的源头.智能合约的活跃周期可划分为 3 个主要阶段,即智能合约设计与开发阶段、智能合约编译与部署阶段、智能合约运行阶段.现有的关于减少智能合约缺陷的研究主要集中在前两个阶段.其中,针对智能合约设计与开发阶段,主要从智能合约的描述语言、建模工具和实现方法等方面1013确保智能合约代码能够更为精准地表示承载的业务活动,虽然能够有效减少设计与开发过程中引入的错误,但是这类方法仅能起到辅助作用,无法排除恶意引入的智能合约漏洞,同时也无法消除编译与部署过程中引入的缺陷.针对智能合约编译与部署阶段,研
18、究者引入软件验证与测试技术1423,预先设定需要满足的一系列性质或检查项,在智能合约部署执行前对其逻辑进行验证以确保其满足安全性质,或通过检查排除其中的缺陷.这类工具方法能够被集成到区块链平台上确保智能合约均得到验证或检查,其局限性在于依赖先验知识,难以应对新型漏洞,并且通常较为耗时.针对智能合约运行阶段的研4682软件学报2023 年第 34 卷第 10 期究2427主要以确保智能合约得到安全可信的执行为目标,相比智能合约本身更侧重执行环境的安全性.然而,在智能合约运行阶段,能够对区块链交易执行过程进行分析和调试,对于定位问题的源头有着更为直接的帮助.此外,还原执行过程还能够作为利益相关方协
19、商解决缺陷带来损失的依据.针对生产环境运行的软件进行分析和调试在软件调试领域本身就是一个具有挑战性的问题,区块链系统特殊的运行环境更为分析和调试智能合约增加了难度.其中,部署到区块链上的智能合约难以直接进行修改,因此需要修改代码的调试方式行不通.此外,通过断点等中断执行过程的方式进行调试,则会影响区块链共识过程,可能影响执行结果.记录日志28,29同样是一种掌握软件运行情况的手段,然而需要智能合约开发者事先自行决定输出哪些日志并编写日志记录语句,目前仍离不开定制化开发,需要更新已经部署的智能合约.即使通过定制化开发为区块链节点增加输出日志的能力,由于缺少可验证的机制,无法证明给出的日志与生产环
20、境中实际在线执行过程是一致的.此外,现有方法难反映区块链交易之间的依赖关系.智能合约的单次被调用执行所依赖的当前状态是之前的执行结果,为了分析当前执行情况往往需要回溯之前的调用执行,然而现有的反向执行调试技术30,31主要针对的是更为底层、粒度更细的命令和语句.针对智能合约运行阶段区块链交易执行难以进行分析和调试的不足,以联盟链为主要研究对象,研究了区块链交易执行追溯问题,即找出区块链交易的执行过程如何产生当前的执行结果.具体地,本研究的目标是解决追溯区块链交易执行 3 方面挑战:如何从智能合约部署的生产环境中获取足够的信息来进行追溯、如何获取区块链交易之间的依赖关系、如何保证追溯结果与实际在
21、线执行过程的一致性.针对这些挑战,本文采用了在线记录执行信息与离线分析相结合的思路,提出了一种基于录制重放的区块链交易执行追溯方法.本文主要贡献如下.针对从智能合约部署的生产环境中获取用于追溯的信息的问题,建立区块链交易执行录制重放机制,通过增强合约容器,录制状态读写操作用于之后离线分析和重放,无需修改智能合约代码或中断执行过程,录制得到的状态读写操作记录可按需进行离线重放.针对获取区块链交易之间的依赖关系问题,提出基于世界状态读写的交易依赖分析方法,以录制得到的区块链交易读写操作记录为基础,提取交易读写键集合,从而能够利用读写键集合识别交易之间的依赖关系,可沿依赖关系按需逐条回溯所依赖的前序
22、交易进行重放和分析,实现区块链交易执行追溯.针对保证追溯结果与实际在线执行过程的一致性的问题,建立读写操作记录可验证机制,实现在链上存储和链下存储两种情况下能够验证读写操作记录是否正确未经篡改.在比较实验中考察了将录制的读写操作记录链上存储和链下存储之间的性能差异,通过案例研究展示了本方法的有效性和优点.本文提出的方法能够在无需对现有智能合约进行修改和更新、无需要求新开发的智能合约增加日志输出代码的情况下,利用合约容器录制得到用于追溯的信息,并能够根据区块链交易执行中不同区块链交易读写键重叠的情况分析区块链交易之间的依赖关系实现对区块链交易的按需回溯重放与分析,并提供了追溯结果与实际在想执行过
23、程一致性的保障机制.本方法能够为智能合约缺陷的定位和解决提供帮助,并且能为联盟链场景中利益相关方通过协商挽回损失提供依据.本文第 1 节对区块链交易执行追溯问题进行了分析.第 2 节介绍了所提出的基于录制重放的区块链交易执行追溯方法.第 3 节介绍了实现所提出方法的技术细节.第 4 节通过实验分析与案例研究展示了所提出方法性能方面的影响以及其有效性.第 5 节介绍了相关工作.第 6 节总结全文,并对下一步工作做出展望.1 区块链交易执行追溯问题 1.1 区块链交易执行过程与区块链平台进行互操作的主要方式之一就是提交附有数字签名的区块链交易到区块链平台接口,以调用智能合约,如图 1 所示.合约容
24、器为智能合约提供运行环境,所执行的交易的内容作为具体调用方法的输入,在智能合约的方法中通常会涉及对区块链状态进行读写操作,成功执行的交易会与其他交易一起打包为区块(block),记录到链上区块数据中,这一动作被简称为出块.其中,负责存储区块链状态的模块可被看作是位于区块链内部的键陈胜等:基于录制重放的区块链交易执行追溯方法4683值(key-value)型数据库,被称作世界状态(worldstate).不同交易的执行会对相同的键进行读写,后执行的交易读取得到的值为先执行的交易写入的值,存在依赖关系.由于先执行的交易对于更早执行的交易同样存在着依赖关系,区块链交易之间的依赖具有传递性,为分析和研
25、究区块链交易执行过程带来了挑战.链上区块数据合约容器签名交易用户/业务模块接口(RESTful).读取区块数据状态读取/智能合约(键值存储)状态写入World state图1区块链交易执行过程下面以转账智能合约为例介绍一个具体的交易执行过程.转账智能合约在区块链世界状态中存储了用户的账户余额,其中用户 A 和用户 B 的余额对应的键(也被称作地址)分别为 a32be7 和 7e1a9d,其中的值为以元为单位、数据类型为浮点数的用户余额.用户 A 通过提交交易给用户 B 转账 10 元的执行过程为:(1)进行一系列检查与验证,验证交易的数字签名及用户 A 的身份,检查用户 A 与用户 B 的键是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 录制 重放 区块 交易 执行 追溯 方法
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。