CN112035350A - 针对区块链***的测试方法、装置及计算机设备 - Google Patents

针对区块链***的测试方法、装置及计算机设备 Download PDF

Info

Publication number
CN112035350A
CN112035350A CN202010877316.4A CN202010877316A CN112035350A CN 112035350 A CN112035350 A CN 112035350A CN 202010877316 A CN202010877316 A CN 202010877316A CN 112035350 A CN112035350 A CN 112035350A
Authority
CN
China
Prior art keywords
resource consumption
intelligent contract
target
blockchain system
contract
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010877316.4A
Other languages
English (en)
Other versions
CN112035350B (zh
Inventor
周勇钧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010877316.4A priority Critical patent/CN112035350B/zh
Publication of CN112035350A publication Critical patent/CN112035350A/zh
Application granted granted Critical
Publication of CN112035350B publication Critical patent/CN112035350B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本申请实施例提供了一种针对区块链***的测试方法、装置及计算机设备,其中方法包括:获取包括第一基准智能合约和第二基准智能合约的智能合约集合;将第一基准智能合约和第二基准智能合约部署到区块链***中,获取第一基准智能合约对应的第一资源消耗量以及第二基准智能合约对应的第二资源消耗量;将第一基准智能合约和第二基准智能合约进行合并,得到目标智能合约,并将目标智能合约部署到区块链***中,获取目标智能合约对应的目标资源消耗量;根据第一资源消耗量、第二资源消耗量以及目标资源消耗量确定智能合约的资源消耗量计算机制的测试结果。采用上述方式,可以实现智能合约的资源消耗量计算机制的自动化测试。

Description

针对区块链***的测试方法、装置及计算机设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种针对区块链***的测试方法、一种测试装置、一种计算机设备及一种计算机可读存储介质。
背景技术
从比特币诞生以来,区块链技术逐渐被人们所熟知、信任以及广泛应用。区块链技术是一种多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也就是分布式账本技术。
由于基于比特币的区块链技术业务存在可拓展性不足的问题,所以以太坊等后续区块链产品皆引入智能合约解决方案,从而把区块链的应用从单纯的支付转账扩展到所有的商业逻辑,实现去中心化的合约自动执行。
对于区块链底层技术,智能合约的运行需要Gas(即执行链上操作时所需消耗的费用的计数单位)作为执行手续费来保证获取相应的运算和存储资源。在实际应用中,需要保证区块链***中的智能合约的Gas计算机制的准确性,不能出现错乱收费情况,不然有损区块链底层技术的可信度以及持续发展。因此,如何针对智能合约的Gas计算机制的准确性进行测试是目前亟需解决的问题。
发明内容
本申请实施例提供了一种针对区块链***的测试方法、装置及计算机设备,不仅可以实现智能合约的资源消耗量计算机制的自动化测试,有效提高测试效率,还可以有效保证测试结果的准确性。
一方面,本申请实施例提供了一种针对区块链***的测试方法,所述方法用于对区块链***中的资源消耗量计算机制进行测试,所述区块链***通过所述资源消耗量计算机制计算智能合约的资源消耗量,所述方法包括:
获取智能合约集合,所述智能合约集合包括第一基准智能合约和第二基准智能合约;
将所述第一基准智能合约和所述第二基准智能合约部署到所述区块链***中,获取在所述区块链***下所述第一基准智能合约对应的第一资源消耗量以及所述第二基准智能合约对应的第二资源消耗量;
将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约,并将所述目标智能合约部署到所述区块链***中,获取在所述区块链***下所述目标智能合约对应的目标资源消耗量;
根据所述第一资源消耗量、所述第二资源消耗量以及所述目标资源消耗量确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
一方面,本申请实施例提供了一种测试装置,所述装置用于对区块链***中的资源消耗量计算机制进行测试,所述区块链***通过所述资源消耗量计算机制计算智能合约的资源消耗量,所述装置包括:
获取单元,用于获取智能合约集合,所述智能合约集合包括第一基准智能合约和第二基准智能合约;
处理单元,用于将所述第一基准智能合约和所述第二基准智能合约部署到所述区块链***中,获取在所述区块链***下所述第一基准智能合约对应的第一资源消耗量以及所述第二基准智能合约对应的第二资源消耗量;
合并单元,用于将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约;
所述处理单元,还用于将所述目标智能合约部署到所述区块链***中,获取在所述区块链***下所述目标智能合约对应的目标资源消耗量;以及根据所述第一资源消耗量、所述第二资源消耗量以及所述目标资源消耗量确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
在一实施例中,所述合并单元,具体用于:对所述第一基准智能合约进行抽象语法树AST结构化,得到第一AST数据结构;对所述第二基准智能合约进行AST结构化,得到第二AST数据结构;根据所述第一AST数据结构和所述第二AST数据结构确定目标智能合约。
在一实施例中,所述合并单元,具体用于:将所述第一AST数据结构和所述第二AST数据结构进行合并,形成新的AST数据结构;根据所述新的AST数据结构确定目标智能合约。
在一实施例中,所述处理单元,具体用于:确定所述第一资源消耗量和所述第二资源消耗量的资源消耗量总和;将所述资源消耗量总和与所述目标资源消耗量进行比较,得到比较结果;根据所述比较结果确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
在一实施例中,所述处理单元,具体用于:若所述比较结果指示所述目标资源消耗量大于所述资源消耗量总和,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为异常;若所述比较结果指示所述目标资源消耗量小于或者等于所述资源消耗量总和,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常。
在一实施例中,所述处理单元,具体用于:若所述比较结果指示所述目标资源消耗量小于或者等于所述资源消耗量总和,且检测到所述目标资源消耗量大于或者等于第三资源消耗量,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常;
其中,所述处理单元,还用于若检测到所述目标资源消耗量小于所述第三资源消耗量,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为异常。
在一实施例中,所述获取单元,还用于获取关于智能合约的资源消耗量的基础计算规则;
所述处理单元,还用于:根据所述基础计算规则计算所述第一基准智能合约的参考资源消耗量,以及计算所述第二基准智能合约的参考资源消耗量;若所述第一基准智能合约的参考资源消耗量与所述第一资源消耗量匹配,且所述第二基准智能合约的参考资源消耗量与所述第二资源消耗量匹配,则触发所述合并单元将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约。
相应地,本申请实施例提供了一种计算机设备,包括:处理器、通信接口和存储器,所述处理器、所述通信接口和所述存储器相互连接,其中,所述存储器存储有可执行程序代码,所述处理器用于调用所述可执行程序代码,执行上述针对区块链***的测试方法。
相应地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述针对区块链***的测试方法。
相应地,本申请实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行上述针对区块链***的测试方法。
本申请实施例通过获取在区块链***下第一基准智能合约对应的第一资源消耗量以及第二基准智能合约对应的第二资源消耗量,将第一基准智能合约和第二基准智能合约合并成目标智能合约后,获取在区块链***下目标智能合约对应的目标资源消耗量,最后根据第一资源消耗量、第二资源消耗量以及目标资源消耗量确定区块链***中关于智能合约的资源消耗量计算机制的测试结果,从而不仅可以实现智能合约的资源消耗量计算机制的自动化测试,有效提高智能合约的资源消耗量计算机制的测试效率,还可以有效保证测试结果的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链***的架构示意图;
图2是本申请实施例提供的一种区块的结构示意图;
图3是本申请实施例提供的另一种区块链***的架构示意图;
图4是本申请实施例提供的一种测试***的架构示意图;
图5是本申请实施例提供的一种针对区块链***的测试方法的流程示意图;
图6示出了一种获取基准智能合约的资源消耗量的方式;
图7示出了一种AST结构化的方式和两个智能合约合并的方式;
图8示出了一种获取合并后的智能合约的资源消耗量的方式;
图9是本申请实施例提供的一种测试装置的结构示意图;
图10是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着科技时代的到来和移动互联网的发展,网络变革的步伐也愈来愈快,实现同一领域或多个领域的信息融合,为客户提供全方位信息化方案的过程亦面临着体系结构的改进、支撑重心转移等新的挑战。因此,区块链技术作为分布式账本的一种特定实现,凭借其存储和管理数据的天然优势,逐渐成为各个领域存储数据和交易数据的首选方式。
区块链***是一种分布式***,可以由多个节点通过网络通信的形式连接形成。其中,节点可以是接入网络中的任意形式的计算设备,如服务器、终端等计算机设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。节点之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
参见图1,是本申请实施例提供的区块链***的一个可选的架构示意图。区块链***由多个节点形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在区块链***中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作***层和应用层。
参见图1示出的区块链***中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链***中节点提交的记录数据,例如交易数据等。
参见图2,是本申请实施例提供的区块结构(Block Structure)的一个可选的示意图,每个区块中包括本区块存储数据记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链(Blockchain)。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链,本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
3)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链***中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
3.1)钱包,用于提供进行虚拟资源的交易的功能,包括发起交易即,将当前交易的交易记录发送给区块链***中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中。
3.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链***中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
3.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的虚拟资源转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
4)共识,用于解决并保证每一笔交易或者数据在所有记账节点上的一致性和正确性问题。区块链的共识机制就是确定达成某种共识和维护共识的方式。区块链的共识机制使其在不依靠中心化组织的情况下,依然大规模高效协作完成运转。
参见图3,是本申请实施例提供的另一种区块链***的架构示意图。如图3所示,区块链***中的节点可以包括银行、保险公司、政府大楼、商铺、学校以及医院等所对应的终端设备。银行、保险公司、政府大楼、商铺、学校以及医院所对应的终端设备均参与同一区块链***的管理和处理,并且还可以参与监督交易的合法性,以达到区块链***对交易数据的处理或存储的公平性。同时,上述提及到的银行、保险公司、政府大楼、商铺、学校以及医院都是分属于不同的领域,不同领域的信息融合和交互可以更好地提升社会工作的质量和效率。区块链***中的任意节点可以对获取的交易数据进行校验,得到的校验结果为校验成功时,可以基于该交易数据生成区块,并将该区块发布至区块链,以使区块链***中的其他各个终端设备均可对该区块进行分布式存储。其中,各个终端设备均可在该区块共识通过之后对该区块进行分布式存储。比如图3所示,区块链***中的节点可以包括银行、保险公司、政府大楼、商铺、学校以及医院所对应的终端设备,并且银行、保险公司、政府大楼、商铺、学校以及医院所对应的终端设备可以对同一用户A的身份信息等进行分布式存储,因此该用户A到任意一家机构均可查询到自己的身份信息。
由于基于比特币的区块链技术业务存在可拓展性不足的问题,所以以太坊等后续区块链产品皆引入智能合约解决方案,从而把区块链的应用从单纯的支付转账扩展到所有的商业逻辑,实现去中心化的合约自动执行。随着区块链技术以及智能合约技术的发展,未来会有越来越多的去中心化应用使用智能合约运行在区块链***中。对于区块链底层技术,会根据不同运算指令以及存储资源情况设置Gas(即执行链上操作时所需消耗的费用的计数单位)值,而智能合约在运行过程中会出现各种运算和存储的组合来满足自身要求。所以智能合约的运行需要Gas作为执行手续费来保证获取相应的运算和存储资源。区块链***中通常会部署智能合约的Gas计算机制来计算智能合约在运行过程中需要消耗的Gas的量。在实际应用中,需要保证区块链***中部署的智能合约的Gas计算机制的准确性,不能出现错乱收费情况,不然有损区块链底层技术的可信度以及持续发展。因此,如何针对智能合约的Gas计算机制的准确性进行测试是目前亟需解决的问题。
基于此,本申请实施例提供了一种针对区块链***的测试方法,所述方法用于对区块链***中部署的资源消耗量计算机制(即Gas计算机制)进行测试,其中,所述区块链***通过所述资源消耗量计算机制计算智能合约的资源消耗量(即Gas值,或者操作Gas值)。如图4所示,为所述针对区块链***的测试方法所适用的一种***架构。所述***包括测试平台和区块链***,区块链***中包括多个节点。此时,测试平台是独立于区块链***存在的一个计算机设备,所述测试平台和所述区块链***之间建立有通信连接。在可行的实施例中,测试平台也可以是区块链***中的一个节点。
具体地,测试平台从智能合约集合中获取第一基准智能合约和第二基准智能合约,并通过将第一基准智能合约和第二基准智能合约部署到所述区块链***中,获取在所述区块链***下第一基准智能合约对应的第一资源消耗量以及第二基准智能合约对应的第二资源消耗量;然后将第一基准智能合约和第二基准智能合约进行合并,得到目标智能合约,并通过将目标智能合约部署到所述区块链***中,获取在所述区块链***下所述目标智能合约对应的目标资源消耗量;最后根据获取到的第一资源消耗量、第二资源消耗量以及目标资源消耗量确定所述区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果。得到的测试结果用于指示关于智能合约的资源消耗量计算机制正常与否,正常则表示该资源消耗量计算机制的准确性较好,符合要求;异常则表示该资源消耗量计算机制不准确,存在一定的问题。采用上述方式,不仅可以实现针对区块链***中部署的关于智能合约的资源消耗量计算机制的自动化测试,从而有效提高智能合约的资源消耗量计算机制的测试效率;还可以有效保证测试结果的准确性。
以上介绍了本申请实施例所描述的针对区块链***的测试方法的主要步骤,下面对所述针对区块链***的测试方法的各个步骤进行详细描述。请参阅图5,为本申请实施例提供的一种针对区块链***的测试方法的流程示意图。本申请实施例中所描述的测试方法由测试平台(例如图4所示)执行,所述测试方法用于对区块链***(例如图4所示)中部署的关于智能合约的资源消耗量计算机制进行测试,其中,所述区块链***通过该资源消耗量计算机制计算智能合约的资源消耗量,在同一资源消耗量计算机制下,智能合约对应的操作越多,则其资源消耗量就越高,反之则越低。所述针对区块链***的测试方法包括但不限于如下步骤:
S501、测试平台获取智能合约集合,所述智能合约集合包括第一基准智能合约和第二基准智能合约。
本申请实施例中,测试平台可以从内部数据库或者外部数据库中获取智能合约集合。智能合约集合中包括至少两个基准智能合约,所述基准智能合约可以是事先定义的运算类或者资源类的可独立运行的智能合约,运算类是指对数据进行各种计算处理,如对数据的某个字段进行累计金额等;而资源类是指对数据进行增删改查等操作,这些数据与存储操作相关。在一实施例中,所述至少两个基准智能合约可以是呈正交关系的,正交是指基准智能合约之间所包含的功能不会重复。需要说明的是,本申请实施例所描述的智能合约可以是指智能合约代码,智能合约集合中的基准智能合约可以是测试人员事先写入所述内部数据库或者外部数据库中的。
其中,所述至少两个基准智能合约包括第一基准智能合约和第二基准智能合约,第一基准智能合约是所述至少两个基准智能合约中的任意一个,可以是运算类或者资源类的可独立运行的智能合约;第二基准智能合约是所述至少两个基准智能合约中除第一基准智能合约之外的任意一个,可以是运算类或者资源类的可独立运行的智能合约。如前文所述,第一基准智能合约和第二基准智能合约可以是呈正交关系的。
S502、所述测试平台将所述第一基准智能合约和所述第二基准智能合约部署到区块链***中,获取在所述区块链***下所述第一基准智能合约对应的第一资源消耗量以及所述第二基准智能合约对应的第二资源消耗量。
本申请实施例中,测试平台通过将第一基准智能合约部署到区块链***中,获取在所述区块链***下第一基准智能合约对应的第一资源消耗量;通过将第二基准智能合约部署到区块链***中,获取在所述区块链***下第二基准智能合约对应的第二资源消耗量。需要说明的是,测试平台可以将第一基准智能合约和第二基准智能合约同时部署到区块链***中,也可以将两者先后部署到区块链***中。
区块链***在部署第一基准智能合约的过程中,会通过区块链***事先部署的关于智能合约的资源消耗量计算机制(即Gas计算机制)计算所述第一基准智能合约的第一资源消耗量(即第一Gas值),并在第一基准智能合约成功部署之后,向测试平台返回第一基准智能合约对应的第一资源消耗量。同理,区块链***在部署第二基准智能合约的过程中,会通过区块链***事先部署的关于智能合约的资源消耗量计算机制计算所述第二基准智能合约的第二资源消耗量(即第二Gas值),并在第二基准智能合约成功部署之后,向测试平台返回第二基准智能合约对应的第二资源消耗量。需要说明的是,将智能合约部署到区块链***中,可以是指将智能合约部署到区块链***中支持智能合约部署的一个或者多个节点上;智能合约成功部署可以是指将智能合约成功上链。
S503、所述测试平台将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约。
本申请实施例中,测试平台对第一基准智能合约进行AST结构化,得到第一AST数据结构;并对第二基准智能合约进行AST结构化,得到第二AST数据结构。AST结构化是指将源代码作为纯文本解析为抽象语法树(Abstract Syntax Tree,AST)的数据结构,AST是程序的一种中间表示形式。例如图7所示,运算类的智能合约AST结构化之后,其AST数据结构由根节点、部署函数和运算函数(又包括计算法则、变量,等)组成;资源类的智能合约AST结构化之后,AST数据结构由根节点、存储结构体(又包括变量等)和部署函数(又包括初始化存储结构体等)组成。其中,部署函数用于指示智能合约发布到链上要执行的部署操作,存储结构体为映射到链上全局空间的代码结构,例如结构体Person{name,age},会映射到全局空间的数据库中的Person表,name和age为列。
在解析得到第一基准智能合约的第一AST数据结构以及解析得到第二基准智能合约的第二AST数据结构之后,测试平台根据该第一AST数据结构和该第二AST数据结构确定目标智能合约。在一实施方式中,测试平台将该第一AST数据结构和该第二AST数据结构进行合并,形成新的AST数据结构。例如图7所示,将运算类智能合约的AST数据结构和资源类智能合约的AST数据结构进行合并后,得到的新的AST数据结构由根节点、存储结构体、部署函数以及运算函数组成。进一步地,测试平台根据确定出的新的AST数据结构确定目标智能合约。在一实施方式中,测试平台根据确定出的新的AST数据结构、第一基准智能合约的源代码、以及第二基准智能合约的源代码确定目标智能合约的代码,从而得到目标智能合约。采用上述方式,通过AST结构化方式可以有效保证智能合约的合并有效性。
在一实施例中,测试平台将第一基准智能合约和第二基准智能合约进行合并,得到目标智能合约之前,先对第一资源消耗量和第二资源消耗量两者的准确性进行验证,这样有利于保证后续测试结果的准确性。具体地,测试平台先从内部数据库或者外部数据库中获取关于智能合约的资源消耗量的基础计算规则。所述基础计算规则可以是相关组织机构定义的,并且对外公开声明的关于智能合约的资源消耗量的基础计算公式(即基础的Gas收费定义公式)。可以将所述基础计算规则直接作为区块链***部署的关于智能合约的资源消耗量的计算机制,也可以基于所述基础计算规则做一定的调整后作为区块链***部署的关于智能合约的资源消耗量的计算机制,例如,将基础计算公式再乘以一个适当的权重,这个权重的取值范围可以是相关组织机构规定的,例如为[0.7,1.2]。
进一步地,测试平台根据基础计算规则计算第一基准智能合约的参考资源消耗量,以及计算第二基准智能合约的参考资源消耗量。若第一基准智能合约的参考资源消耗量与第一资源消耗量匹配(如第一资源消耗量与该参考资源消耗量的比值在该取值范围内),并且第二基准智能合约的参考资源消耗量与第二资源消耗量匹配(如第二资源消耗量与该参考资源消耗量的比值在该取值范围内),则执行步骤S503将第一基准智能合约和第二基准智能合约进行合并,得到目标智能合约。若第一基准智能合约的参考资源消耗量与第一资源消耗量不匹配,或者第二基准智能合约的参考资源消耗量与第二资源消耗量不匹配,则可以直接确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为异常。异常则表示该资源消耗量计算机制不准确,存在一定的问题。
S504、所述测试平台将所述目标智能合约部署到所述区块链***中,获取在所述区块链***下所述目标智能合约对应的目标资源消耗量。
本申请实施例中,测试平台通过将目标智能合约部署到区块链***中,获取在所述区块链***下目标基准智能合约对应的目标资源消耗量。区块链***在部署目标智能合约的过程中,会通过区块链***事先部署的关于智能合约的资源消耗量计算机制(即Gas计算机制)计算所述目标基准智能合约的目标资源消耗量(即目标Gas值),并在目标智能合约成功部署之后,向测试平台返回目标智能合约对应的目标资源消耗量。需要说明的是,将智能合约部署到区块链***中,可以是指将智能合约部署到区块链***中支持智能合约部署的一个或者多个节点上;智能合约成功部署可以是指将智能合约成功上链。
S505、所述测试平台根据所述第一资源消耗量、所述第二资源消耗量以及所述目标资源消耗量确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
本申请实施例中,测试平台确定第一资源消耗量和第二资源消耗量的资源消耗量总和,并将资源消耗量总和与该目标资源消耗量进行比较,得到比较结果;然后根据该比较结果确定区块链***中关于智能合约的资源消耗量计算机制的测试结果。
在一实施例中,若该比较结果指示目标资源消耗量小于或者等于第一资源消耗量和第二资源消耗量的资源消耗量总和,则确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为正常。正常则表示该资源消耗量计算机制的准确性较好,符合要求。反之,若该比较结果指示目标资源消耗量大于第一资源消耗量和第二资源消耗量的资源消耗量总和,则确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为异常。异常则表示该资源消耗量计算机制不准确,存在一定的问题。
之所以可以据此进行判定,是因为在同一资源消耗量计算机制下,智能合约对应的操作越多,则其资源消耗量就越高,反之则越低;目标智能合约是由第一基准智能合约和第二基准智能合约合并得到的,合并过程中可以将第一基准智能合约和第二基准智能合约中的相同操作进行合并,所以目标智能合约对应的操作必然小于或者等于第一基准智能合约和第二基准智能合约对应的操作之和。如果合并过程中不会将第一基准智能合约和第二基准智能合约中的相同操作进行合并,合并得到的目标智能合约中即使存在相同操作,在实际应用过程中该相同操作也无需重复执行,不重复执行则该相同操作的资源消耗量只会计算一次,不会多次计算。因此,如果区块链***中部署的关于智能合约的资源消耗量计算机制是正常的,则目标智能合约对应的目标资源消耗量必然小于或者等于第一资源消耗量和第二资源消耗量的资源消耗量总和。故采用上述方式确定的测试结果具有较高的准确性。
在另一实施例中,测试平台除了将第一资源消耗量和第二资源消耗量的资源消耗量总和,与目标资源消耗量进行比较之外,还将该目标资源消耗量与第三资源消耗量进行比较。其中,第三资源消耗量可以是智能合约集合中任意两个基准智能合约合并后所对应的资源消耗量的最小值,所述最小值可以是实验得到的,也可以是根据前文所述的基础计算规则计算得到的。
若该比较结果指示目标资源消耗量小于或者等于第一资源消耗量和第二资源消耗量的资源消耗量总和,且检测到目标资源消耗量大于或者等于第三资源消耗量,则确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为正常。正常则表示该资源消耗量计算机制的准确性较好,符合要求。反之,若该比较结果指示目标资源消耗量大于第一资源消耗量和第二资源消耗量的资源消耗量总和,或者检测到目标资源消耗量小于该第三资源消耗量,则确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为异常。异常则表示该资源消耗量计算机制不准确,存在一定的问题。采用上述方式,可以在一定程度上进一步提高测试结果的准确性。
在一可行的实施例中,测试平台根据第一资源消耗量、第二资源消耗量以及目标资源消耗量确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果之前,根据前文所述的关于智能合约的资源消耗量的基础计算规则计算目标智能合约的参考资源消耗量。若目标智能合约的参考资源消耗量与目标资源消耗量匹配,则执行步骤S505根据第一资源消耗量、第二资源消耗量以及目标资源消耗量确定区块链***中关于智能合约的资源消耗量计算机制的测试结果。若目标智能合约的参考资源消耗量与目标资源消耗量不匹配,则可以直接确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为异常。
在另一可行的实施例中,测试平台根据第一资源消耗量、第二资源消耗量以及目标资源消耗量确定出区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为正常之后,从智能合约集合中重新获取新的第一基准智能合约以及新的第二基准智能合约,并基于新的第一基准智能合约和新的第二基准智能合约执行步骤S502至步骤S505,再次确定出区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果。如果新的测试结果为异常,则确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为异常;如果新的测试结果为正常,则重复上述步骤,直至检测的基准智能合约的组合数超过预设数量;如果此过程中,测试结果均为正常,则确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为正常。采用上述方式,可以进一步提高测试结果的准确性。
本申请实施例中,在确定出区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为异常时,可以输出异常提示信息,以提示测试人员测试的区块链***中部署的资源消耗量计算机制存在异常。在可行的实施方式中,测试平台可以进一步对测试的区块链***中部署的资源消耗量计算机制进行异常分析,并生成测试报告,以供测试人员快速定位问题。
本申请实施例通过获取在区块链***下第一基准智能合约对应的第一资源消耗量以及第二基准智能合约对应的第二资源消耗量,将第一基准智能合约和第二基准智能合约合并成目标智能合约后,获取在区块链***下目标智能合约对应的目标资源消耗量,最后根据第一资源消耗量、第二资源消耗量以及目标资源消耗量确定区块链***中关于智能合约的资源消耗量计算机制的测试结果,从而不仅可以实现智能合约的资源消耗量计算机制的自动化测试,有效提高智能合约的资源消耗量计算机制的测试效率,还可以有效保证测试结果的准确性。
为更好的理解本申请实施例中所描述的针对区块链***中部署的关于智能合约的资源消耗量计算机制(即Gas计算机制)的测试方法,下面结合图6、图7和图8进行举例介绍。
首先,如图6所示,定义好运算类及资源类的正交且可独立运行的多个基准智能合约(或者说基准智能合约代码),并将各个基准智能合约部署到区块链***中,以获取区块链***返回的正交且独立的各个基准智能合约的Gas值。
在确保区块链***返回的各个基准智能合约的Gas值是准确的情况下,接着对各个基准智能合约进行AST结构化,并通过AST节点实现代码合并,从而实现将基准智能合约两两合并形成新的智能合约。如图7所示,可以将一个运算类基准智能合约和一个资源类基准智能合约结合成一个新的智能合约。由于基准智能合约为代码类,直接对源代码进行文本方式合并可能会出语法或语义问题;因此本申请实施例采用先AST结构化再进行合并的方式,经过AST结构化后,能快速有效把两个AST数据结构合并在一起形成新的AST结构树,进而快速将两个基准智能合约合并形成新的智能合约;另外,通过AST结构化方式也能保证智能合约的合并有效性。进一步地,如图8所示,把两两合并后的智能合约部署到区块链***中,以获取区块链***返回的合并后的智能合约所需的Gas值。
由于合并后的智能合约即使存在相同的操作,在实际应用过程中相同操作也无需重复执行,不重复执行则相同操作的资源消耗量只会计算一次,不会多次计算;所以合并后的智能合约所需的Gas值必然会小于或等于两个基准智能合约的Gas值之和。若合并后的智能合约存在相同操作的计算,合并后的智能合约所需的Gas值必然小于两个基准智能合约的Gas值之和;但若合并后的智能合约没有相同操作的计算,合并后的智能合约所需的Gas值就会等于两个基准智能合约的Gas值之和。基于此,可以基于合并后的智能合约所需的Gas值与两个基准智能合约的Gas值之和两者之间的大小关系,来准确确定区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果。具体地,若检测到合并后的智能合约所需的Gas值小于或等于两个基准智能合约的Gas值之和,则确定区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常。正常则表示该资源消耗量计算机制的准确性较好,符合要求。反之,若检测到合并后的智能合约所需的Gas值大于两个基准智能合约的Gas值之和,则确定区块链***中关于智能合约的资源消耗量计算机制的测试结果为异常。异常则表示该资源消耗量计算机制不准确,存在一定的问题。
采用上述方式,可以根据区块链技术所提供的智能合约的特性,使用正交且可独立运行的计算类及资源类智能合约进行组合测试,一方面可以保证智能合约运算和存储能力的完整性,另一方面有利于快速获取区块链***返回的相应Gas值,提高测试效率。另外,通过AST结构化方式可以保证智能合约的合并有效性,从而有利于保证测试结果的准确性。
请参阅图9,为本申请实施例提供的一种测试装置的结构示意图。本申请实施例中所描述的测试装置,对应于前文所述的测试平台,所述测试装置用于对区块链***中的资源消耗量计算机制进行测试,所述区块链***通过所述资源消耗量计算机制计算智能合约的资源消耗量;所述测试装置包括:
获取单元901,用于获取智能合约集合,所述智能合约集合包括第一基准智能合约和第二基准智能合约;
处理单元902,用于将所述第一基准智能合约和所述第二基准智能合约部署到所述区块链***中,获取在所述区块链***下所述第一基准智能合约对应的第一资源消耗量以及所述第二基准智能合约对应的第二资源消耗量;
合并单元903,用于将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约;
所述处理单元902,还用于将所述目标智能合约部署到所述区块链***中,获取在所述区块链***下所述目标智能合约对应的目标资源消耗量;以及根据所述第一资源消耗量、所述第二资源消耗量以及所述目标资源消耗量确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
在一实施例中,所述合并单元903,具体用于:对所述第一基准智能合约进行抽象语法树AST结构化,得到第一AST数据结构;对所述第二基准智能合约进行AST结构化,得到第二AST数据结构;根据所述第一AST数据结构和所述第二AST数据结构确定目标智能合约。
在一实施例中,所述合并单元903,具体用于:将所述第一AST数据结构和所述第二AST数据结构进行合并,形成新的AST数据结构;根据所述新的AST数据结构确定目标智能合约。
在一实施例中,所述处理单元902,具体用于:确定所述第一资源消耗量和所述第二资源消耗量的资源消耗量总和;将所述资源消耗量总和与所述目标资源消耗量进行比较,得到比较结果;根据所述比较结果确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
在一实施例中,所述处理单元902,具体用于:若所述比较结果指示所述目标资源消耗量大于所述资源消耗量总和,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为异常;若所述比较结果指示所述目标资源消耗量小于或者等于所述资源消耗量总和,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常。
在一实施例中,所述处理单元902,具体用于:若所述比较结果指示所述目标资源消耗量小于或者等于所述资源消耗量总和,且检测到所述目标资源消耗量大于或者等于第三资源消耗量,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常;
其中,所述处理单元902,还用于若检测到所述目标资源消耗量小于所述第三资源消耗量,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为异常。
在一实施例中,所述获取单元901,还用于获取关于智能合约的资源消耗量的基础计算规则;
所述处理单元,还用于:根据所述基础计算规则计算所述第一基准智能合约的参考资源消耗量,以及计算所述第二基准智能合约的参考资源消耗量;若所述第一基准智能合约的参考资源消耗量与所述第一资源消耗量匹配,且所述第二基准智能合约的参考资源消耗量与所述第二资源消耗量匹配,则触发所述合并单元903将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约。
可以理解的是,本申请实施例提供的测试装置的各功能单元的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
本申请实施例通过获取在区块链***下第一基准智能合约对应的第一资源消耗量以及第二基准智能合约对应的第二资源消耗量,将第一基准智能合约和第二基准智能合约合并成目标智能合约后,获取在区块链***下目标智能合约对应的目标资源消耗量,最后根据第一资源消耗量、第二资源消耗量以及目标资源消耗量确定区块链***中关于智能合约的资源消耗量计算机制的测试结果,从而不仅可以实现智能合约的资源消耗量计算机制的自动化测试,有效提高智能合约的资源消耗量计算机制的测试效率,还可以有效保证测试结果的准确性。
请参阅图10,为本申请实施例提供的一种计算机设备的结构示意图。本申请实施例中所描述的计算机设备对应前文所述的测试平台,所述计算机设备包括:处理器1001、用户接口1002、通信接口1003及存储器1004。其中,处理器1001、用户接口1002、通信接口1003及存储器1004可通过总线或其他方式连接,本申请实施例以通过总线连接为例。
其中,处理器1001(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其可以解析计算机设备内的各类指令以及处理计算机设备的各类数据,例如:CPU可以用于解析用户向计算机设备所发送的开关机指令,并控制计算机设备进行开关机操作;再如:CPU可以在计算机设备内部结构之间传输各类交互数据,等等。用户接口1002是实现用户与计算机设备进行交互和信息交换的媒介,其具体体现可以包括用于输出的显示屏(Display)以及用于输入的触控屏、键盘(Keyboard)等等,需要说明的是,此处的键盘既可以为实体键盘,也可以为触屏虚拟键盘,还可以为实体与触屏虚拟相结合的键盘。通信接口1003可选的可以包括标准的有线接口、无线接口(如Wi-Fi、移动通信接口等),受处理器1001的控制用于收发数据。存储器1004(Memory)是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器1004既可以包括计算机设备的内置存储器,当然也可以包括计算机设备所支持的扩展存储器。存储器1004提供存储空间,该存储空间存储了计算机设备的操作***,可包括但不限于:Android***、iOS***、WindowsPhone***等等,本申请对此并不作限定。
在本申请实施例中,所述计算机设备用于对区块链***中的资源消耗量计算机制进行测试,所述区块链***通过所述资源消耗量计算机制计算智能合约的资源消耗量;具体地,处理器1001通过运行存储器1004中的可执行程序代码,执行如下操作:
获取智能合约集合,所述智能合约集合包括第一基准智能合约和第二基准智能合约;通过所述通信接口1003将所述第一基准智能合约和所述第二基准智能合约部署到所述区块链***中,获取在所述区块链***下所述第一基准智能合约对应的第一资源消耗量以及所述第二基准智能合约对应的第二资源消耗量;将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约,并通过所述通信接口1003将所述目标智能合约部署到所述区块链***中,获取在所述区块链***下所述目标智能合约对应的目标资源消耗量;根据所述第一资源消耗量、所述第二资源消耗量以及所述目标资源消耗量确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
在一实施例中,所述处理器1001将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约时,具体用于:对所述第一基准智能合约进行抽象语法树AST结构化,得到第一AST数据结构;对所述第二基准智能合约进行AST结构化,得到第二AST数据结构;根据所述第一AST数据结构和所述第二AST数据结构确定目标智能合约。
在一实施例中,所述处理器1001根据所述第一AST数据结构和所述第二AST数据结构确定目标智能合约时,具体用于:将所述第一AST数据结构和所述第二AST数据结构进行合并,形成新的AST数据结构;根据所述新的AST数据结构确定目标智能合约。
在一实施例中,所述处理器1001根据所述第一资源消耗量、所述第二资源消耗量以及所述目标资源消耗量确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果时,具体用于:确定所述第一资源消耗量和所述第二资源消耗量的资源消耗量总和;将所述资源消耗量总和与所述目标资源消耗量进行比较,得到比较结果;根据所述比较结果确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
在一实施例中,所述处理器1001根据所述比较结果确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果时,具体用于:若所述比较结果指示所述目标资源消耗量大于所述资源消耗量总和,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为异常;若所述比较结果指示所述目标资源消耗量小于或者等于所述资源消耗量总和,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常。
在一实施例中,所述处理器1001,具体用于:若所述比较结果指示所述目标资源消耗量小于或者等于所述资源消耗量总和,且检测到所述目标资源消耗量大于或者等于第三资源消耗量,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常。
其中,所述处理器1001,还用于:若检测到所述目标资源消耗量小于所述第三资源消耗量,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为异常。
在一实施例中,所述处理器1001将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约之前,还用于:获取关于智能合约的资源消耗量的基础计算规则;根据所述基础计算规则计算所述第一基准智能合约的参考资源消耗量,以及计算所述第二基准智能合约的参考资源消耗量;若所述第一基准智能合约的参考资源消耗量与所述第一资源消耗量匹配,且所述第二基准智能合约的参考资源消耗量与所述第二资源消耗量匹配,则将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约。
在一实施例中,当所述处理器1001在确定出区块链***中部署的关于智能合约的资源消耗量计算机制的测试结果为异常时,可以通过用户接口1002输出异常提示信息,以提示测试人员测试的区块链***中部署的资源消耗量计算机制存在异常。
具体实现中,本申请实施例中所描述的处理器1001、用户接口1002、通信接口1003及存储器1004可执行本申请实施例提供的一种针对区块链***的测试方法中所描述的测试平台的实现方式,也可执行本申请实施例提供的一种测试装置中所描述的实现方式,在此不再赘述。
本申请实施例通过获取在区块链***下第一基准智能合约对应的第一资源消耗量以及第二基准智能合约对应的第二资源消耗量,将第一基准智能合约和第二基准智能合约合并成目标智能合约后,获取在区块链***下目标智能合约对应的目标资源消耗量,最后根据第一资源消耗量、第二资源消耗量以及目标资源消耗量确定区块链***中关于智能合约的资源消耗量计算机制的测试结果,从而不仅可以实现智能合约的资源消耗量计算机制的自动化测试,有效提高智能合约的资源消耗量计算机制的测试效率,还可以有效保证测试结果的准确性。
相应地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如本申请实施例所述的针对区块链***的测试方法。其具体实现方式可参考前文描述,此处不再赘述。
相应地,本申请实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行如本申请实施例所述的针对区块链***的测试方法。其具体实现方式可参考前文描述,此处不再赘述。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上所揭露的仅为本申请部分实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (10)

1.一种针对区块链***的测试方法,其特征在于,所述方法用于对区块链***中的资源消耗量计算机制进行测试,所述区块链***通过所述资源消耗量计算机制计算智能合约的资源消耗量,所述方法包括:
获取智能合约集合,所述智能合约集合包括第一基准智能合约和第二基准智能合约;
将所述第一基准智能合约和所述第二基准智能合约部署到所述区块链***中,获取在所述区块链***下所述第一基准智能合约对应的第一资源消耗量以及所述第二基准智能合约对应的第二资源消耗量;
将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约,并将所述目标智能合约部署到所述区块链***中,获取在所述区块链***下所述目标智能合约对应的目标资源消耗量;
根据所述第一资源消耗量、所述第二资源消耗量以及所述目标资源消耗量确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
2.如权利要求1所述的方法,其特征在于,所述将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约,包括:
对所述第一基准智能合约进行抽象语法树AST结构化,得到第一AST数据结构;
对所述第二基准智能合约进行AST结构化,得到第二AST数据结构;
根据所述第一AST数据结构和所述第二AST数据结构确定目标智能合约。
3.如权利要求2所述的方法,其特征在于,所述根据所述第一AST数据结构和所述第二AST数据结构确定目标智能合约,包括:
将所述第一AST数据结构和所述第二AST数据结构进行合并,形成新的AST数据结构;
根据所述新的AST数据结构确定目标智能合约。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述根据所述第一资源消耗量、所述第二资源消耗量以及所述目标资源消耗量确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果,包括:
确定所述第一资源消耗量和所述第二资源消耗量的资源消耗量总和;
将所述资源消耗量总和与所述目标资源消耗量进行比较,得到比较结果;
根据所述比较结果确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
5.如权利要求4所述的方法,其特征在于,所述根据所述比较结果确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果,包括:
若所述比较结果指示所述目标资源消耗量大于所述资源消耗量总和,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为异常;
若所述比较结果指示所述目标资源消耗量小于或者等于所述资源消耗量总和,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常。
6.如权利要求5所述的方法,其特征在于,所述若所述比较结果指示所述目标资源消耗量小于或者等于所述资源消耗量总和,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常,包括:
若所述比较结果指示所述目标资源消耗量小于或者等于所述资源消耗量总和,且检测到所述目标资源消耗量大于或者等于第三资源消耗量,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为正常;
其中,所述方法还包括:
若检测到所述目标资源消耗量小于所述第三资源消耗量,则确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果为异常。
7.如权利要求1所述的方法,其特征在于,所述将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约之前,所述方法还包括:
获取关于智能合约的资源消耗量的基础计算规则;
根据所述基础计算规则计算所述第一基准智能合约的参考资源消耗量,以及计算所述第二基准智能合约的参考资源消耗量;
若所述第一基准智能合约的参考资源消耗量与所述第一资源消耗量匹配,且所述第二基准智能合约的参考资源消耗量与所述第二资源消耗量匹配,则执行所述将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约的步骤。
8.一种测试装置,其特征在于,所述装置用于对区块链***中的资源消耗量计算机制进行测试,所述区块链***通过所述资源消耗量计算机制计算智能合约的资源消耗量,所述装置包括:
获取单元,用于获取智能合约集合,所述智能合约集合包括第一基准智能合约和第二基准智能合约;
处理单元,用于将所述第一基准智能合约和所述第二基准智能合约部署到所述区块链***中,获取在所述区块链***下所述第一基准智能合约对应的第一资源消耗量以及所述第二基准智能合约对应的第二资源消耗量;
合并单元,用于将所述第一基准智能合约和所述第二基准智能合约进行合并,得到目标智能合约;
所述处理单元,还用于将所述目标智能合约部署到所述区块链***中,获取在所述区块链***下所述目标智能合约对应的目标资源消耗量;以及根据所述第一资源消耗量、所述第二资源消耗量以及所述目标资源消耗量确定所述区块链***中关于智能合约的资源消耗量计算机制的测试结果。
9.一种计算机设备,其特征在于,包括:处理器、通信接口和存储器,所述处理器、所述通信接口和所述存储器相互连接,其中,所述存储器存储有可执行程序代码,所述处理器用于调用所述可执行程序代码,执行如权利要求1-7任一项所述的针对区块链***的测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-7任一项所述的针对区块链***的测试方法。
CN202010877316.4A 2020-08-27 2020-08-27 针对区块链***的测试方法、装置及计算机设备 Active CN112035350B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010877316.4A CN112035350B (zh) 2020-08-27 2020-08-27 针对区块链***的测试方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010877316.4A CN112035350B (zh) 2020-08-27 2020-08-27 针对区块链***的测试方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN112035350A true CN112035350A (zh) 2020-12-04
CN112035350B CN112035350B (zh) 2021-09-28

Family

ID=73580177

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010877316.4A Active CN112035350B (zh) 2020-08-27 2020-08-27 针对区块链***的测试方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN112035350B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112737862A (zh) * 2021-01-08 2021-04-30 江苏众享金联科技有限公司 一种基于智能合约的跨链数据共享方法
CN113282517A (zh) * 2021-07-21 2021-08-20 支付宝(杭州)信息技术有限公司 一种智能合约代码的质量评估***
CN113835972A (zh) * 2021-11-26 2021-12-24 南京金宁汇科技有限公司 一种基于asm的联盟链智能合约资源消耗检测方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110543407A (zh) * 2019-08-21 2019-12-06 杭州趣链科技有限公司 一种Solidity智能合约性能静态分析方法
CN110544113A (zh) * 2019-08-14 2019-12-06 清华大学 基于智能合约的交易中燃油费的输入确定方法及装置
KR20200051218A (ko) * 2018-11-05 2020-05-13 서강대학교산학협력단 Gas 절감이 가능한 스마트 컨트랙트 분석 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200051218A (ko) * 2018-11-05 2020-05-13 서강대학교산학협력단 Gas 절감이 가능한 스마트 컨트랙트 분석 장치 및 방법
CN110544113A (zh) * 2019-08-14 2019-12-06 清华大学 基于智能合约的交易中燃油费的输入确定方法及装置
CN110543407A (zh) * 2019-08-21 2019-12-06 杭州趣链科技有限公司 一种Solidity智能合约性能静态分析方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112737862A (zh) * 2021-01-08 2021-04-30 江苏众享金联科技有限公司 一种基于智能合约的跨链数据共享方法
CN112737862B (zh) * 2021-01-08 2023-12-22 江苏众享金联科技有限公司 一种基于智能合约的跨链数据共享方法
CN113282517A (zh) * 2021-07-21 2021-08-20 支付宝(杭州)信息技术有限公司 一种智能合约代码的质量评估***
CN113835972A (zh) * 2021-11-26 2021-12-24 南京金宁汇科技有限公司 一种基于asm的联盟链智能合约资源消耗检测方法及装置
CN113835972B (zh) * 2021-11-26 2022-03-08 南京金宁汇科技有限公司 一种基于asm的联盟链智能合约资源消耗检测方法及装置

Also Published As

Publication number Publication date
CN112035350B (zh) 2021-09-28

Similar Documents

Publication Publication Date Title
CN110597925B (zh) 一种基于区块链的跨链数据处理方法及装置
CN112035350B (zh) 针对区块链***的测试方法、装置及计算机设备
CN108200203B (zh) 基于双层网络的区块链***
CN112073269B (zh) 区块链网络测试方法、装置、服务器及存储介质
CN112801658B (zh) 跨境资源转移真实性审核方法、装置及电子设备
CN111506511A (zh) 一种测试用例生成方法、装置、电子设备及介质
CN112101938B (zh) 基于区块链的数字***使用方法、装置及电子设备
CN108347483B (zh) 基于双层网络的去中心化计算***
CN111782551B (zh) 针对区块链项目的测试方法、装置及计算机设备
CN112200569B (zh) 基于区块链的数字***使用方法、装置及电子设备
CN111738724B (zh) 跨境资源转移真实性审核方法及装置、电子设备
CN111949531B (zh) 区块链网络的测试方法、装置、介质及电子设备
CN109147918A (zh) 预约匹配方法、装置、电子设备及计算机可读介质
CN112100588A (zh) 基于区块链的数字***申领方法、装置及电子设备
CN111640002A (zh) 一种基于区块链的货押贷款方法和装置
CN109582569A (zh) 信贷平台测试方法、装置、终端设备及可读存储介质
CN112040015B (zh) 一种共识节点列表生成方法及相关装置
CN113095825A (zh) 基于区块链的资产管理方法、装置及电子设备
CN110225103B (zh) 一种业务推荐方法、装置及设备
CN116955148A (zh) 业务***测试方法、装置、设备、存储介质及产品
CN113327169B (zh) 基于区块链的理赔方法及装置、电子设备
CN114925405A (zh) 基于区块链的数字***校验方法、装置及电子设备
CN110910091A (zh) 一种数据处理方法、设备及介质
Arumugam et al. Detailed Investigation on Blockchain Smart Contracts Application and its Usefulness
CN115204870A (zh) 区块链应用的管理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40035326

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant