CN108304307B - 一种区块链上智能合约的性能检测方法 - Google Patents
一种区块链上智能合约的性能检测方法 Download PDFInfo
- Publication number
- CN108304307B CN108304307B CN201810067460.4A CN201810067460A CN108304307B CN 108304307 B CN108304307 B CN 108304307B CN 201810067460 A CN201810067460 A CN 201810067460A CN 108304307 B CN108304307 B CN 108304307B
- Authority
- CN
- China
- Prior art keywords
- detection
- contract
- interface
- name
- transaction
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本发明实施例公开了一种区块链上智能合约的性能检测方法,包括:根据编译好的智能合约输出的json文件生成检测页面;在检测页面获取用户的检测请求参数;根据检测请求参数进入对应的检测流程,并在检测流程结束后返回检测结果。本发明实施例可以对各种智能合约能自动生成检测页面,而且在检测页面上获取用户输入的检测请求参数,进行全自动的检测,检测步骤简单方便,提高了检测效率。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种区块链上智能合约的性能检测方法。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,区块链还具有防篡改特征。以太坊是一种区块链实现方案,智能合约是以太坊上的可执行代码,通常使用truffle进行智能合约的开发。其中truffle是以太坊一种开发框架。
现有技术中的智能合约的一般使用在truffle控制台调用web3接口后使用命令行进行性能检测,操作复杂,普通用户难以掌握,性能检测耗时长,检测效率低。
发明内容
针对上述技术问题,本发明实施例提供了一种区块链上智能合约的性能检测方法及装,能够解决现有技术中性能检测操作复杂,检测效率低的技术问题。
本发明实施例的第一方面提供一种区块链上智能合约的性能检测方法,包括:
根据编译好的智能合约输出的json文件生成检测页面;
在所述检测页面获取用户的检测请求参数;
根据所述检测请求参数进入对应的检测流程,并在检测流程结束后返回检测结果。
所述根据编译好的智能合约输出的json文件生成检测页面,包括:
读取编译好的智能合约输出的json文件,其中json文件包括智能合约的二进制代码、合约名称、合约接口abi信息、合约接口名称及合约发布地址;
对json文件进行解析后,生成检测页面,其中,检测页面包括主检测页面和合约检测页面。
检测请求参数包括检测次数、每次发送交易数量、合约名称和合约接口名称,所述根据所述检测请求参数进入对应的检测流程,包括:
获取合约名称和合约接口名称,判断合约名称和合约接口名称是否为空;
若合约名称和合约接口名称均不为空,则进入特定合约特定接口的检测流程;
若合约名称不为空,且合约接口名称为空,则进入特定合约所有接口的检测流程;
若合约名称和合约接口名称均为空,则随机选取一个智能合约,进入特定合约所有接口检测流程。
所述特定合约特定接口的检测流程包括:
根据检测请求参数中的每次发送交易数量N,生成对应的包含N个接口的接口数组,其中N为大于等于1的自然数;
根据合约接口abi信息为接口数组中的每个接口生成随机检测参数后,生成交易数组;
将交易数组发送至以太坊节点,在交易完成后统计检测次数,若检测次数与检测请求参数中的检测次数相同,则检测结束,若检测次数小于检测请求参数中的检测次数不同,则继续检测。
所述特定合约所有接口的检测流程包括:
根据检测请求参数中的每次发送交易数量M,随机从智能合约中选取对应的M次接口,生成包含M个接口的接口数组,其中M为大于等于1的自然数;
根据接口abi信息为接口数组中的每个接口生成随机检测参数后,生成交易数组;
将交易数组发送至以太坊节点,在交易完成后统计检测次数,若检测次数与检测请求参数中的检测次数相同,则检测结束,若检测次数小于检测请求参数中的检测次数,则继续检测。
本发明实施例第二方面提供了一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的区块链上智能合约的性能检测方法。
本发明实施例提供的技术方案中,根据编译好的智能合约输出的json文件生成检测页面;在检测页面获取用户的检测请求参数;根据检测请求参数进入对应的检测流程,并在检测流程结束后返回检测结果。因此相对于现有技术,本发明实施例对各种智能合约能自动生成检测页面,而且在检测页面上获取用户输入的检测请求参数,进行全自动的检测,检测步骤简单方便,提高了检测效率。
附图说明
图1为本发明实施例中一种区块链上智能合约的性能检测方法的一实施例的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明实施例中一种区块链上智能合约的性能检测方法的一个实施例的流程示意图。如图1所示,包括:
步骤S100、根据编译好的智能合约输出的json文件生成检测页面;
步骤S200、在检测页面获取用户的检测请求参数;
步骤S300、根据检测请求参数进入对应的检测流程,并在检测流程结束后返回检测结果。
具体实施时,本发明实施例需要nodejs运行环境,而且需要预先生成一个nodejs编写的web服务器程序,需要安装truffle。把要检测的合约拷贝到web服务器目录中。运行truffle migrate把合约发布到以太坊节点。运行web服务器程序。其中Node.js是一个跨平台的JavaScript开发环境。truffle是以太坊Solidity编程语言开发框架。trufflemigrate是对智能合约进行发布。
采用truffle编译好的每个合约,会输出一个json文件,里面包含合约的二进制代码,合约的abi接口详细信息,以及合约发布地址。使用nodejs程序分析json文件,根据json文件生成检测页面,例如:对每个json文件自动生成一个合约检测页面,用户只要在合约检测页面输入每次发生的交易数和检测次数,点击开始测试按钮,nodejs程序会自动发送交易,进行检测。这样使得检测直观,容易操作,即使不是专业人士也能比较容易进行检测。
进一步地,步骤S100具体为:
读取编译好的智能合约输出的json文件,其中json文件包括智能合约的二进制代码、合约名称、合约接口abi信息、合约接口名称及合约发布地址;
对json文件进行解析后,生成检测页面,其中,检测页面包括主检测页面和合约检测页面。
具体地,json(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式。它基于ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。其中,主检测页面生成方法具体为:遍历目录,查找所有的json,判断是否已发布。只对已发布的合约生成测试按钮。遍历分析json文件,读取合约名称。对每个合约生成一个检测按钮,点击检测按钮可跳转到合约检测页面。根据所有的合约检测页面生成主检测页面,主检测页面用于检测所有的合约,主检测页面包括一个表格,表格中包含所有合约,点击对应的合约进入对应的合约检测页面。其中主检测页面的有检测次数,和每次发送交易数,和开始测试按钮3项。
其中合约检测页面生成流程为:用户请求合约检测页面,请求会带有合约名称;根据合约名称生成对合约所有接口进行随机检测的检测表格,表格含有合约名称,检测次数,和每次发送交易数,和开始测试按钮4项,获取合约的abi数组,对每个合约的每个接口会生成一个表格,表格含有合约名称,接口名称,接口类型,检测次数,和每次发送交易数,和开始测试按钮4项。其中合约的abi数据为合约的接口描述对象。
根据检测请求参数进入对应的检测流程具体为:
获取合约名称和合约接口名称,判断合约名称和合约接口名称是否为空;
若合约名称和合约接口名称均不为空,则进入特定合约特定接口的检测流程;
若合约名称不为空,且合约接口名称为空,则进入特定合约所有接口的检测流程;
若合约名称和合约接口名称均为空,则随机选取一个智能合约,进入特定合约所有接口检测流程。
具体实施时,用户点击检测页面,发送检测请求,检测请求包含检测次数,每次发送交易数量,检测合约名称;后台接收到检测请求,获取合约名称和接口名称。如果合约名称和接口名称都不为空,则进入特定合约特定接口的检测流程。如果合约名称不为空,合约接口名称为空,则进入特定合约的所有接口检测流程,如果合约名称与合约接口名称均为空,则在合约列表随机选取一个合约,进行特定合约的所有接口检测流程,对检测次数进行计数,对检测结果进行统计,判断检测次数是否足够,不够则继续进行当前不知,否则调用上层函数的回调接口。调用回调函数,回调函数返回检测结果给用户。
其中,特定合约特定接口的检测流程具体为:
根据检测请求参数中的每次发送交易数量N,生成对应的包含N个接口的第一接口数组,其中N为大于等于1的自然数;
根据合约接口abi信息为接口数组中的每个接口生成随机检测参数后,生成交易数组;
将交易数组发送至以太坊节点,在交易完成后统计检测次数,若检测次数与检测请求参数中的检测次数相同,则检测结束,若检测次数小于检测请求参数中的检测次数,则继续检测。
具体实施时,根据用户输入的每次发送交易数N,生成包含N个接口的接口数组,所有的接口是根据接口名称获取的。根据接口abi信息为生成的接口数组的每个接口随机生成检测参数后,生成交易数组。把交易数组发送给以太坊节点,一笔交易完成后会调用交易回调函数,交易回调对交易数据进行统计,并统计检测次数,如果检测次数足够,调用回调函数,否则重新进行下一次检测。其中,随机检测参数是指对合约进行检测的参数,可包括交易数量等数据。
其中,特定合约所有接口的检测流程包括:
根据检测请求参数中的每次发送交易数量M,随机从智能合约中选取对应的M次接口,生成包含M个接口的接口数组,其中M为大于等于1的自然数;
根据接口abi信息为接口数组中的每个接口生成随机检测参数后,生成交易数组;
将交易数组发送至以太坊节点,在交易完成后统计检测次数,若检测次数与检测请求参数中的检测次数相同,则检测结束,若检测次数小于检测请求参数中的检测次数,则继续检测。
具体实施时,根据用户输入的每次发送交易数M,随机从合约选取M次接口,生成包含M个接口的接口数组。根据接口abi信息为生成的接口数组的每个接口随机生成检测参数后,生成交易数组。将交易数组发送给以太坊节点,一笔交易完成后会调用交易回调函数,交易回调对交易数据进行统计,并统计检测次数,如果检测次数足够,调用回调函数,否则重新进行下一次检测。其中,随机检测参数是指对合约进行检测的参数,可包括交易数量等等数据。
本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤S100至步骤S300。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (2)
1.一种区块链上智能合约的性能检测方法,其特征在于,包括:
根据编译好的智能合约输出的json文件生成检测页面;
在所述检测页面获取用户的检测请求参数;
根据所述检测请求参数进入对应的检测流程,并在检测流程结束后返回检测结果;
所述根据编译好的智能合约输出的json文件生成检测页面,包括:
读取编译好的智能合约输出的json文件,其中json文件包括智能合约的二进制代码、合约名称、合约接口abi信息、合约接口名称及合约发布地址;
对json文件进行解析后,生成检测页面,其中,检测页面包括主检测页面和合约检测页面;
检测请求参数包括检测次数、每次发送交易数量、合约名称和合约接口名称,所述根据所述检测请求参数进入对应的检测流程,包括:
获取合约名称和合约接口名称,判断合约名称和合约接口名称是否为空;
若合约名称和合约接口名称均不为空,则进入特定合约特定接口的检测流程;
若合约名称不为空,且合约接口名称为空,则进入特定合约所有接口的检测流程;
若合约名称和合约接口名称均为空,则随机选取一个智能合约,进入特定合约所有接口检测流程;
所述特定合约特定接口的检测流程包括:
根据检测请求参数中的每次发送交易数量N,生成对应的包含N个接口的接口数组,其中N为大于等于1的自然数;
根据合约接口abi信息为接口数组中的每个接口生成随机检测参数后,生成交易数组;
将交易数组发送至以太坊节点,在交易完成后统计检测次数,若检测次数与检测请求参数中的检测次数相同,则检测结束,若检测次数小于检测请求参数中的检测次数,则继续检测;
所述特定合约所有接口的检测流程包括:
根据检测请求参数中的每次发送交易数量M,随机从智能合约中选取对应的M次接口,生成包含M个接口的接口数组,其中M为大于等于1的自然数;
根据接口abi信息为接口数组中的每个接口生成随机检测参数后,生成交易数组;
将交易数组发送至以太坊节点,在交易完成后统计检测次数,若检测次数与检测请求参数中的检测次数相同,则检测结束,若检测次数小于检测请求参数中的检测次数,则继续检测。
2.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1所述的区块链上智能合约的性能检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810067460.4A CN108304307B (zh) | 2018-01-24 | 2018-01-24 | 一种区块链上智能合约的性能检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810067460.4A CN108304307B (zh) | 2018-01-24 | 2018-01-24 | 一种区块链上智能合约的性能检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108304307A CN108304307A (zh) | 2018-07-20 |
CN108304307B true CN108304307B (zh) | 2022-03-04 |
Family
ID=62865922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810067460.4A Active CN108304307B (zh) | 2018-01-24 | 2018-01-24 | 一种区块链上智能合约的性能检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108304307B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033888A (zh) * | 2018-07-27 | 2018-12-18 | 深圳市汇尊区块链技术有限公司 | 一种智能合约源码公开机制 |
CN109240900A (zh) * | 2018-08-16 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 区块链网络服务平台及其智能合约检测方法、存储介质 |
CN109347640B (zh) * | 2018-09-27 | 2021-06-15 | 福建福链科技有限公司 | 一种基于区块链动态智能合约的数据处理方法及终端 |
CN109408304A (zh) * | 2018-09-27 | 2019-03-01 | 深圳壹账通智能科技有限公司 | 区块链引入测试方法、装置、设备及可读存储介质 |
CN109389500A (zh) * | 2018-09-29 | 2019-02-26 | 重庆邮电大学 | 基于以太坊的数据交易平台 |
CN109670951B (zh) * | 2018-11-19 | 2021-03-26 | 南京苏宁软件技术有限公司 | 一种区块链智能合约调试发布方法及系统 |
CN109639521B (zh) * | 2018-12-05 | 2020-09-29 | 京东数字科技控股有限公司 | 区块链性能的测试方法、装置、设备及存储介质 |
CN110046023B (zh) * | 2018-12-12 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 一种基于区块链智能合约的数据处理方法及系统 |
CN112069050B (zh) * | 2019-06-11 | 2022-05-17 | 南京慕测信息科技有限公司 | 一种基于多目标优化的智能合约测试方法 |
CN110633076B (zh) * | 2019-09-16 | 2021-05-04 | 杭州趣链科技有限公司 | 一种自动生成Solidity智能合约Java客户端程序的方法 |
CN111124421B (zh) * | 2019-12-23 | 2023-04-21 | 卓尔智联(武汉)研究院有限公司 | 区块链智能合约的异常合约数据检测方法和装置 |
CN111352835B (zh) * | 2020-02-25 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 一种智能合约的测试方法、装置、设备及存储介质 |
CN112269836B (zh) * | 2020-11-15 | 2023-07-04 | 北京物资学院 | 一种区块链智能合约生成与管理系统及其实现机制 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598824A (zh) * | 2016-11-25 | 2017-04-26 | 深圳前海微众银行股份有限公司 | 区块链的性能分析方法及装置 |
CN107526625A (zh) * | 2017-07-18 | 2017-12-29 | 杭州趣链科技有限公司 | 一种基于字节码检查的Java智能合约安全检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346406B2 (en) * | 2016-03-28 | 2019-07-09 | International Business Machines Corporation | Decentralized autonomous edge compute coordinated by smart contract on a blockchain |
-
2018
- 2018-01-24 CN CN201810067460.4A patent/CN108304307B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598824A (zh) * | 2016-11-25 | 2017-04-26 | 深圳前海微众银行股份有限公司 | 区块链的性能分析方法及装置 |
CN107526625A (zh) * | 2017-07-18 | 2017-12-29 | 杭州趣链科技有限公司 | 一种基于字节码检查的Java智能合约安全检测方法 |
Non-Patent Citations (1)
Title |
---|
【区块链】Truffle部署编译测试智能合约的完整实践操作;小雨雨hi;《云栖社区阿里云https://yq.aliyun.com/articles/237962》;20171027;1-17页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108304307A (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304307B (zh) | 一种区块链上智能合约的性能检测方法 | |
CN107943691B (zh) | 一种自动产生智能合约的功能测试页面的方法及装置 | |
US10318595B2 (en) | Analytics based on pipes programming model | |
Rosenberg et al. | An end-to-end approach for QoS-aware service composition | |
US8078914B2 (en) | Open error-handling system | |
US20110145799A1 (en) | Path-sensitive dataflow analysis including path refinement | |
CN112581018B (zh) | 一种流程任务管理方法、系统、装置以及存储介质 | |
US11755293B2 (en) | Code execution and data processing pipeline | |
CN110955409B (zh) | 在云平台上创建资源的方法和装置 | |
CN110362630B (zh) | 数据管理方法、装置、设备与计算机可读存储介质 | |
US11262986B2 (en) | Automatic software generation for computer systems | |
CN110058996B (zh) | 程序调试方法、装置、设备和存储介质 | |
CN114756211B (zh) | 模型训练方法、装置、电子设备和存储介质 | |
CN116009852A (zh) | 代码构建方法、装置、计算机设备及存储介质 | |
US20160110170A1 (en) | Message inlining | |
CN110941655A (zh) | 一种数据格式转换方法及装置 | |
CN115167822A (zh) | 分支代码合并方法、装置、设备和存储介质 | |
CN114968751A (zh) | 一种无代码开发平台的程序调试方法和程序调试装置 | |
CN111694729A (zh) | 应用测试方法、装置、电子设备和计算机可读介质 | |
Doglio | Mastering Python High Performance | |
US11847448B2 (en) | Automatic generation of exporter configuration rules | |
CN110688430A (zh) | 一种获得数据旁路的方法、装置及电子设备 | |
CN103544017A (zh) | Lammps的计算任务的实现方法和装置 | |
CN117075912B (zh) | 用于程序语言转换的方法、编译方法及相关设备 | |
US11740989B2 (en) | Generating performance metrics from events derived from user interface logs |
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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Jiang Shengfang Inventor after: Ma Zhanjun Inventor before: Ma Zhanjun |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |