CN113961202B - 一种自动调试智能合约的方法及系统 - Google Patents

一种自动调试智能合约的方法及系统 Download PDF

Info

Publication number
CN113961202B
CN113961202B CN202111566451.8A CN202111566451A CN113961202B CN 113961202 B CN113961202 B CN 113961202B CN 202111566451 A CN202111566451 A CN 202111566451A CN 113961202 B CN113961202 B CN 113961202B
Authority
CN
China
Prior art keywords
block chain
debugging
intelligent contract
nodes
network
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
Application number
CN202111566451.8A
Other languages
English (en)
Other versions
CN113961202A (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.)
Beijing Sinodata Technology Co ltd
Original Assignee
Beijing Sinodata Technology 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 Beijing Sinodata Technology Co ltd filed Critical Beijing Sinodata Technology Co ltd
Priority to CN202111566451.8A priority Critical patent/CN113961202B/zh
Publication of CN113961202A publication Critical patent/CN113961202A/zh
Application granted granted Critical
Publication of CN113961202B publication Critical patent/CN113961202B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

本申请涉及区块链技术领域,尤其涉及一种自动调试智能合约的方法及系统,包括:向测试区块链网络的代表区块链节点上部署智能合约的代码;响应于智能合约的代码在测试区块链网络的代表区块链节点上部署完毕,生成随机交易事件,以使测试区块链网络的执行区块链节点进行智能合约的调试;通过调试结果得到调试结果的综合评价指标,以依据综合评价指标调整智能合约或者向正式区块链网络中部署智能合约;响应于向正式区块链网络中部署智能合约完毕,删除测试区块链网络的代表区块链节点上部署的智能合约的代码。本申请可以自动调试智能合约,减少对于智能合约调试的人力投入。

Description

一种自动调试智能合约的方法及系统
技术领域
本申请涉及区块链技术领域,尤其涉及一种自动调试智能合约的方法及系统。
背景技术
区块链是一个去中心化去信任的集体维护的可靠数据库,从本质上讲,它是一个共享数据库,存储于其中的数据或信息具有不可伪造、全程留痕、可以追溯、公开透明、集体维护等特征。基于这些特征,区块链技术奠定了坚实的信任基础,创造了可靠的合作机制,具有广阔的运用前景。
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,其部署在区块链上,允许在没有第三方的情况下进行可信交易,保证交易可追踪且不可逆转,提供了优于传统合约的安全方法,并减少与合约相关的其他交易成本。
由于智能合约就是代码,与纸质合同不同,智能合约对代码精确度要求极高,在智能合约编写不正确时会导致交易失败,浪费大量人力物力以及时间,所以智能合约需要通过调试器来调试代码,保证在发生错误时操作人员能迅速、准确地找到错误并解决它。
目前,对于智能合约的调试,需要开发人员将智能合约的源代码输入调试器,然后对智能合约进行本地调试,这样必须要有专门的人员进行智能合约的调试,增加了人力投入。
因此,如何能够实现自动调试智能合约,以减少对于智能合约调试的人力投入,是本领域技术人员目前急需解决的技术问题。
发明内容
本申请提供了一种自动调试智能合约的方法及系统,以自动调试智能合约,减少对于智能合约调试的人力投入。
为解决上述技术问题,本申请提供如下技术方案:
一种自动调试智能合约的方法,包括如下步骤:步骤S110、向测试区块链网络的代表区块链节点上部署智能合约的代码;步骤S120、响应于智能合约的代码在测试区块链网络的代表区块链节点上部署完毕,生成随机交易事件,以使测试区块链网络的执行区块链节点进行智能合约的调试;步骤S130、通过调试结果得到调试结果的综合评价指标,以依据综合评价指标调整智能合约或者向正式区块链网络中部署智能合约;步骤S140、响应于向正式区块链网络中部署智能合约完毕,删除测试区块链网络的代表区块链节点上部署的智能合约的代码。
如上所述的自动调试智能合约的方法,其中,优选的是,智能合约的代码包括能够实现智能合约所约束事件的合约代码和能够发起智能合约调试的调试代码。
如上所述的自动调试智能合约的方法,其中,优选的是,将合约代码和调试代码部署至测试区块链网络的代表区块链节点上,从而完成智能合约的部署。
如上所述的自动调试智能合约的方法,其中,优选的是,计算测试区块链网络中的每个区块链节点的安全评价值,将安全评价值最高的区块链节点作为代表区块链节点,而将剩余的区块链节点作为执行区块链节点。
如上所述的自动调试智能合约的方法,其中,优选的是,若调试结果的综合评价指标不小于预设值,则调整代表区块链节点中的合约代码,接着进行步骤S120和步骤S130,以反复进行智能合约的调试;若调试结果的综合评价指标小于预设值,则将部署在代表区块链节点上的合约代码部署至正式区块链网络的区块链节点上。
一种自动调试智能合约的系统,其中,优选的是,包括:测试区块链网络、正式区块链网络、部署模块、随机交易事件生成模块、综合评价指标获取模块和删除模块;其中,测试区块链网络包括:代表区块链节点和执行区块链节点;正式区块链网络包括区块链节点;部署模块向测试区块链网络的代表区块链节点上部署智能合约的代码;响应于智能合约的代码在测试区块链网络的代表区块链节点上部署完毕,随机交易事件生成模块生成随机交易事件,以使测试区块链网络的执行区块链节点进行智能合约的调试;综合评价指标获取模块通过调试结果得到调试结果的综合评价指标,以依据综合评价指标调整智能合约或者向正式区块链网络中部署智能合约;响应于向正式区块链网络中部署智能合约完毕,删除模块删除测试区块链网络的代表区块链节点上部署的智能合约的代码。
如上所述的自动调试智能合约的系统,其中,优选的是,智能合约的代码包括能够实现智能合约所约束事件的合约代码和能够发起智能合约调试的调试代码。
如上所述的自动调试智能合约的系统,其中,优选的是,将合约代码和调试代码部署至测试区块链网络的代表区块链节点上,从而完成智能合约的部署。
如上所述的自动调试智能合约的系统,其中,优选的是,计算测试区块链网络中的每个区块链节点的安全评价值,将安全评价值最高的区块链节点作为代表区块链节点,而将剩余的区块链节点作为执行区块链节点。
如上所述的自动调试智能合约的系统,其中,优选的是,若调试结果的综合评价指标不小于预设值,则调整代表区块链节点中的合约代码,以反复进行智能合约的调试;若调试结果的综合评价指标小于预设值,则将部署在代表区块链节点上的合约代码部署至正式区块链网络的区块链节点上。
相对上述背景技术,本申请提供的自动调试智能合约的方法及系统,能够实现自动调试智能合约,减少了对于智能合约调试的人力投入。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的自动调试智能合约的方法的流程图;
图2是本申请实施例提供的自动调试智能合约的系统的示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
实施例一
请参阅图1,图1是本申请实施例提供的自动调试智能合约的方法的流程图。
本申请提供了一种自动调试智能合约的方法,包括如下步骤:
步骤S110、向测试区块链网络的代表区块链节点上部署智能合约的代码;
在开发人员将智能合约编写完毕后,将智能合约的代码部署至测试区块链网络中。其中,本申请的智能合约不仅能够实现智能合约所约束的事件(例如:货物售卖及收款事件),还能够自动发起智能合约的调试,因此本申请的智能合约的代码包括能够实现智能合约所约束事件的合约代码,例如:用于付款的货币、汇率、可变利率、执行时间等约束事件的所有规则、交易方式和状态转移函数等,而且还包括能够发起智能合约调试的调试代码。
测试区块链网络中包括多个区块链节点,从多个区块链节点中选择出一个区块链节点作为部署智能合约的代表区块链节点,而剩余的区块链节点作为执行区块链节点,并且执行区块链节点均遵守相同的共识机制(例如:POW工作量证明机制、POS股权证明机制、DPOS授权股权证明机制、PBFT实用拜占庭容错机制、POI重要度证明机制),以判断智能合约的正确性。
计算测试区块链网络中的每个区块链节点的安全评价值,将安全评价值最高的区块链节点作为代表区块链节点,而将剩余的区块链节点作为执行区块链节点。具体的,通过公式
Figure DEST_PATH_IMAGE001
,计算测试区块链网络中的每个区块链节点的安全评价值;其中,
Figure DEST_PATH_IMAGE002
为第
Figure DEST_PATH_IMAGE003
个区块链节点的安全评价值;
Figure DEST_PATH_IMAGE004
为第
Figure DEST_PATH_IMAGE005
个区块链节点的属性对安全评价值的影响权重;
Figure DEST_PATH_IMAGE006
为第
Figure 892498DEST_PATH_IMAGE005
个区块链节点所关联的第
Figure DEST_PATH_IMAGE007
个区块链节点的安全特征值;
Figure DEST_PATH_IMAGE008
为第
Figure 370491DEST_PATH_IMAGE007
个区块链节点的安全特征值的影响因子;
Figure DEST_PATH_IMAGE009
为与第
Figure 743703DEST_PATH_IMAGE005
个区块链节点所关联的区块链节点的数量;
Figure DEST_PATH_IMAGE010
Figure DEST_PATH_IMAGE011
为第
Figure 873333DEST_PATH_IMAGE005
个区块链节点要执行的业务(例如:存储智能合约的代码或者执行智能合约的事件)对安全评价值的影响权重;
Figure DEST_PATH_IMAGE012
为第
Figure 281181DEST_PATH_IMAGE005
个区块链节点要执行业务的第
Figure DEST_PATH_IMAGE013
段数据(例如:智能合约的代码或者执行智能合约的事件的数据)安全特征值;
Figure DEST_PATH_IMAGE014
为第
Figure 572485DEST_PATH_IMAGE005
个区块链节点要执行业务的第
Figure 167414DEST_PATH_IMAGE013
段数据长度。
将智能合约的合约代码和调试代码部署至测试区块链网络的代表区块链节点上,从而完成智能合约的部署。
步骤S120、响应于智能合约的代码在测试区块链网络的代表区块链节点上部署完毕,生成随机交易事件,以使测试区块链网络的执行区块链节点进行智能合约的调试;
响应于调试代码和合约代码在测试区块链网络的代表区块链节点上部署完毕后,调试代码生成随机交易事件,例如:随机生成一个货物售卖及收款事件,测试区块链网络中除代表区块链节点以外的执行区块链节点均依据智能合约的合约代码执行随机交易事件,从而得到调试结果。
具体的,除代表区块链节点以外的执行区块链节点均执行随机交易事件,得到调试结果,将所有的调试结果集合在一起形成调试结果集合
Figure DEST_PATH_IMAGE015
,其中,
Figure DEST_PATH_IMAGE016
为第1个执行区块链节点生成的调试结果,
Figure DEST_PATH_IMAGE017
为第2个执行区块链节点生成的调试结果,
Figure DEST_PATH_IMAGE018
为第
Figure DEST_PATH_IMAGE019
个执行区块链节点生成的调试结果,
Figure DEST_PATH_IMAGE020
为第
Figure DEST_PATH_IMAGE021
个执行区块链节点生成的调试结果,
Figure 992413DEST_PATH_IMAGE021
为测试区块链中的执行区块链节点的数量。
步骤S130、通过调试结果得到调试结果的综合评价指标,以依据综合评价指标调整智能合约或者向正式区块链网络中部署智能合约;
具体的,依据调试结果集合
Figure DEST_PATH_IMAGE022
,得到调试结果的综合评价指标
Figure DEST_PATH_IMAGE023
Figure DEST_PATH_IMAGE024
Figure DEST_PATH_IMAGE025
对应的预设的标准值,
Figure DEST_PATH_IMAGE026
Figure 192450DEST_PATH_IMAGE025
Figure 451393DEST_PATH_IMAGE024
之间的差距,
Figure DEST_PATH_IMAGE027
为调试结果集合
Figure DEST_PATH_IMAGE028
Figure DEST_PATH_IMAGE029
之间的差距,
Figure 2460DEST_PATH_IMAGE028
为第
Figure DEST_PATH_IMAGE030
个执行区块链节点生成的调试结果,
Figure 831483DEST_PATH_IMAGE029
为第
Figure DEST_PATH_IMAGE031
个执行区块链节点生成的调试结果。
若调试结果的综合评价指标
Figure DEST_PATH_IMAGE032
不小于预设值
Figure DEST_PATH_IMAGE033
,即
Figure DEST_PATH_IMAGE034
,则调整代表区块链节点中的合约代码,然后再进行步骤S120和步骤S130,以反复进行智能合约的调试,从而使得智能合约更加完善,进而保证了交易的正常。
若调试结果的综合评价指标
Figure 417185DEST_PATH_IMAGE032
小于预设值
Figure 112608DEST_PATH_IMAGE033
,即
Figure DEST_PATH_IMAGE035
,则将测试区块链网络的代表区块链节点上部署的智能合约的合约代码部署至正式区块链网络的区块链节点上,以在正式区块链网络上执行智能合约。
具体的,测试区块链网络的代表区块链节点向正式区块链网络的区块链节点发送建立安全通道请求,正式区块链网络中的区块链节点均依据共识机制验证建立安全通道请求的可靠性,待验证通过后,在测试区块链网络的代表区块链节点与正式区块链网络的一个区块链节点之间建立安全通道,并且将测试区块链网络的代表区块链节点中合约代码部署至正式区块链网络的该区块链节点中,接下来就可以在正式区块链网络中依据智能合约进行交易。
步骤S140、响应于向正式区块链网络中部署智能合约完毕,删除测试区块链网络的代表区块链节点上部署的智能合约的代码;
待将测试区块链网络的代表区块链节点上的智能合约的合约代码部署至正式区块链网络的一个区块链节点上后,将测试区块链网络的代表区块链节点上的合约代码和调试代码均删除,以使该测试区块链网络可以再进行下一次智能合约的调试。
实施例二
请参阅图2, 图2是本申请实施例提供的自动调试智能合约的系统的示意图。
本申请提供了一种自动调试智能合约的系统200,包括:测试区块链网络210、正式区块链网络220、部署模块230、随机交易事件生成模块240、综合评价指标获取模块250和删除模块260。
其中,测试区块链网络210包括:代表区块链节点211和执行区块链节点212;正式区块链网络220包括区块链节点221。
部署模块230向测试区块链网络220的代表区块链节点211上部署智能合约的代码。
在开发人员将智能合约编写完毕后,将智能合约的代码部署至测试区块链网络210中。其中,本申请的智能合约不仅能够实现智能合约所约束的事件(例如:货物售卖及收款事件),还能够自动发起智能合约的调试,因此本申请的智能合约的代码包括能够实现智能合约所约束事件的合约代码,例如:用于付款的货币、汇率、可变利率、执行时间等约束事件的所有规则、交易方式和状态转移函数等,而且还包括能够发起智能合约调试的调试代码。
测试区块链网络210中包括多个区块链节点,从多个区块链节点中选择出一个区块链节点作为部署智能合约的代表区块链节点211,而剩余的区块链节点作为执行区块链节点212,并且执行区块链节点212均遵守相同的共识机制(例如:POW工作量证明机制、POS股权证明机制、DPOS授权股权证明机制、PBFT实用拜占庭容错机制、POI重要度证明机制),以判断智能合约的正确性。
计算测试区块链网络210中的每个区块链节点的安全评价值,将安全评价值最高的区块链节点作为代表区块链节点211,而将剩余的区块链节点作为执行区块链节点212。具体的,通过公式
Figure DEST_PATH_IMAGE036
,计算测试区块链网络210中的每个区块链节点的安全评价值;其中,
Figure DEST_PATH_IMAGE037
为第
Figure DEST_PATH_IMAGE038
个区块链节点的安全评价值;
Figure DEST_PATH_IMAGE039
为第
Figure 619813DEST_PATH_IMAGE038
个区块链节点的属性对安全评价值的影响权重;
Figure DEST_PATH_IMAGE040
为第
Figure 160516DEST_PATH_IMAGE038
个区块链节点所关联的第
Figure DEST_PATH_IMAGE041
个区块链节点的安全特征值;
Figure DEST_PATH_IMAGE042
为第
Figure 600724DEST_PATH_IMAGE041
个区块链节点的安全特征值的影响因子;
Figure DEST_PATH_IMAGE043
为与第
Figure 201470DEST_PATH_IMAGE038
个区块链节点所关联的区块链节点的数量;
Figure DEST_PATH_IMAGE044
Figure DEST_PATH_IMAGE045
为第
Figure 228594DEST_PATH_IMAGE038
个区块链节点要执行的业务(例如:存储智能合约的代码或者执行智能合约的事件)对安全评价值的影响权重;
Figure DEST_PATH_IMAGE046
为第
Figure 572988DEST_PATH_IMAGE038
个区块链节点要执行业务的第
Figure DEST_PATH_IMAGE047
段数据(例如:智能合约的代码或者执行智能合约的事件的数据)安全特征值;
Figure DEST_PATH_IMAGE048
为第
Figure 867703DEST_PATH_IMAGE038
个区块链节点要执行业务的第
Figure 904929DEST_PATH_IMAGE047
段数据长度。
将智能合约的合约代码和调试代码部署至测试区块链网络210的代表区块链节点211上,从而完成智能合约的部署。
响应于智能合约的代码在测试区块链网络的代表区块链节点上部署完毕,随机交易事件生成模块240生成随机交易事件,以使测试区块链网络的执行区块链节点212进行智能合约的调试。
响应于调试代码和合约代码在测试区块链网络210的代表区块链节点211上部署完毕后,随机交易事件生成模块240执行调试代码生成随机交易事件,例如:随机生成一个货物售卖及收款事件,测试区块链网络210中除代表区块链节点211以外的执行区块链节点212均依据智能合约的合约代码执行随机交易事件,从而得到调试结果。
具体的,除代表区块链节点211以外的执行区块链节点212均执行随机交易事件,得到调试结果,将所有的调试结果集合在一起形成调试结果集合
Figure DEST_PATH_IMAGE049
,其中,
Figure DEST_PATH_IMAGE050
为第1个执行区块链节点生成的调试结果,
Figure DEST_PATH_IMAGE051
为第2个执行区块链节点生成的调试结果,
Figure DEST_PATH_IMAGE052
为第
Figure DEST_PATH_IMAGE053
个执行区块链节点生成的调试结果,
Figure DEST_PATH_IMAGE054
为第
Figure DEST_PATH_IMAGE055
个执行区块链节点生成的调试结果,
Figure 511360DEST_PATH_IMAGE055
为测试区块链中的执行区块链节点的数量。
综合评价指标获取模块250通过调试结果得到调试结果的综合评价指标,以依据综合评价指标调整智能合约或者向正式区块链网络220中部署智能合约。
具体的,依据调试结果集合
Figure DEST_PATH_IMAGE056
,得到调试结果的综合评价指标
Figure DEST_PATH_IMAGE057
Figure DEST_PATH_IMAGE058
Figure DEST_PATH_IMAGE059
对应的预设的标准值,
Figure DEST_PATH_IMAGE060
Figure 157979DEST_PATH_IMAGE059
Figure DEST_PATH_IMAGE061
之间的差距,
Figure DEST_PATH_IMAGE062
为调试结果集合
Figure DEST_PATH_IMAGE063
中所有任意两个个性化需求
Figure 369518DEST_PATH_IMAGE059
Figure DEST_PATH_IMAGE064
之间的差距,
Figure DEST_PATH_IMAGE065
为第
Figure DEST_PATH_IMAGE066
个执行区块链节点生成的调试结果,
Figure DEST_PATH_IMAGE067
为第
Figure DEST_PATH_IMAGE068
个执行区块链节点生成的调试结果。
若调试结果的综合评价指标
Figure DEST_PATH_IMAGE069
不小于预设值
Figure DEST_PATH_IMAGE070
,即
Figure DEST_PATH_IMAGE071
,则调整代表区块链节点211中的合约代码,然后再进行步骤S120和步骤S130,以反复进行智能合约的调试,从而使得智能合约更加完善,进而保证了交易的正常。
若调试结果的综合评价指标
Figure DEST_PATH_IMAGE072
小于预设值
Figure 436700DEST_PATH_IMAGE070
,即
Figure DEST_PATH_IMAGE073
,则将测试区块链网络210的代表区块链节点211上部署的智能合约的合约代码部署至正式区块链网络220上,以在正式区块链网络220上执行智能合约。
具体的,测试区块链网络210的代表区块链节点211向正式区块链网络220的区块链节点221发送建立安全通道请求,正式区块链网络220中的区块链节点均依据共识机制验证建立安全通道请求的可靠性,待验证通过后,在测试区块链网络210的代表区块链节点211与正式区块链网络220的一个区块链节点221之间建立安全通道,并且将测试区块链网络210的代表区块链节点211中合约代码部署至正式区块链网络220的该区块链节点221中,接下来就可以在正式区块链网络220中依据智能合约进行交易。
响应于向正式区块链网络220中部署智能合约完毕,删除模块260删除测试区块链网络210的代表区块链节点211上部署的智能合约的代码。
待将测试区块链网络210的代表区块链节点211上的智能合约的合约代码部署至正式区块链网络220的一个区块链节点221上后,将测试区块链网络210的代表区块链节点211上的合约代码和调试代码均删除,以使该测试区块链网络210可以再进行下一次智能合约的调试。
本申请能够在测试区块链网络中实现智能合约的自动调试,从而能够减少对于智能合约调试的人力投入。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

Claims (4)

1.一种自动调试智能合约的方法,其特征在于,包括如下步骤:
步骤S110、向测试区块链网络的代表区块链节点上部署智能合约的代码;
其中,智能合约的代码包括能够实现智能合约所约束事件的合约代码和能够发起智能合约调试的调试代码;
步骤S120、响应于智能合约的代码在测试区块链网络的代表区块链节点上部署完毕,生成随机交易事件,以使测试区块链网络的执行区块链节点进行智能合约的调试;
其中,计算测试区块链网络中的每个区块链节点的安全评价值,将安全评价值最高的区块链节点作为代表区块链节点,而将剩余的区块链节点作为执行区块链节点;
步骤S130、将所有的调试结果集合在一起形成调试结果集合
Figure 771806DEST_PATH_IMAGE001
,其中,
Figure 287101DEST_PATH_IMAGE002
为第1个执行区块链节点生成的调试结果,
Figure 974172DEST_PATH_IMAGE003
为第2个执行区块链节点生成的调试结果,
Figure 549510DEST_PATH_IMAGE004
为第
Figure 823497DEST_PATH_IMAGE005
个执行区块链节点生成的调试结果,
Figure 142483DEST_PATH_IMAGE006
为第
Figure 185525DEST_PATH_IMAGE007
个执行区块链节点生成的调试结果,
Figure 135026DEST_PATH_IMAGE007
为测试区块链中的执行区块链节点的数量;
通过调试结果集合
Figure 693047DEST_PATH_IMAGE008
得到调试结果的综合评价指标
Figure 753407DEST_PATH_IMAGE009
Figure 713272DEST_PATH_IMAGE010
Figure 833675DEST_PATH_IMAGE011
对应的预设的标准值,
Figure 878991DEST_PATH_IMAGE012
Figure 477463DEST_PATH_IMAGE011
Figure 291835DEST_PATH_IMAGE013
之间的差距,
Figure 583139DEST_PATH_IMAGE014
为调试结果集合
Figure 115752DEST_PATH_IMAGE015
中所有任意两个个性化需求
Figure 282029DEST_PATH_IMAGE016
Figure 888591DEST_PATH_IMAGE017
之间的差距,
Figure 413113DEST_PATH_IMAGE018
为第
Figure 370704DEST_PATH_IMAGE019
个执行区块链节点生成的调试结果,
Figure 373296DEST_PATH_IMAGE017
为第
Figure 99943DEST_PATH_IMAGE020
个执行区块链节点生成的调试结果;
若调试结果的综合评价指标
Figure 795367DEST_PATH_IMAGE021
不小于预设值
Figure 974675DEST_PATH_IMAGE022
,则调整代表区块链节点中的合约代码,再进行步骤S120和步骤S130;
若调试结果的综合评价指标
Figure 780957DEST_PATH_IMAGE021
小于预设值
Figure 627690DEST_PATH_IMAGE022
,则将测试区块链网络的代表区块链节点上部署的智能合约的合约代码部署至的区块链节点上;
步骤S140、响应于向正式区块链网络中部署智能合约完毕,删除测试区块链网络的代表区块链节点上部署的智能合约的代码。
2.根据权利要求1所述的自动调试智能合约的方法,其特征在于,将合约代码和调试代码部署至测试区块链网络的代表区块链节点上,从而完成智能合约的部署。
3.一种自动调试智能合约的系统,其特征在于,包括:测试区块链网络、正式区块链网络、部署模块、随机交易事件生成模块、综合评价指标获取模块和删除模块;其中,测试区块链网络包括:代表区块链节点和执行区块链节点;正式区块链网络包括区块链节点;
部署模块向测试区块链网络的代表区块链节点上部署智能合约的代码;
其中,智能合约的代码包括能够实现智能合约所约束事件的合约代码和能够发起智能合约调试的调试代码;
响应于智能合约的代码在测试区块链网络的代表区块链节点上部署完毕,随机交易事件生成模块生成随机交易事件,以使测试区块链网络的执行区块链节点进行智能合约的调试;
其中,计算测试区块链网络中的每个区块链节点的安全评价值,将安全评价值最高的区块链节点作为代表区块链节点,而将剩余的区块链节点作为执行区块链节点;
综合评价指标获取模块将所有的调试结果集合在一起形成调试结果集合
Figure 228436DEST_PATH_IMAGE023
,其中,
Figure 160620DEST_PATH_IMAGE024
为第1个执行区块链节点生成的调试结果,
Figure 505014DEST_PATH_IMAGE025
为第2个执行区块链节点生成的调试结果,
Figure 206253DEST_PATH_IMAGE026
为第
Figure 977900DEST_PATH_IMAGE027
个执行区块链节点生成的调试结果,
Figure 895916DEST_PATH_IMAGE028
为第
Figure 44000DEST_PATH_IMAGE029
个执行区块链节点生成的调试结果,
Figure 599746DEST_PATH_IMAGE029
为测试区块链中的执行区块链节点的数量;通过调试结果集合
Figure 807874DEST_PATH_IMAGE030
得到调试结果的综合评价指标
Figure 449071DEST_PATH_IMAGE031
Figure 135267DEST_PATH_IMAGE032
Figure 811099DEST_PATH_IMAGE033
对应的预设的标准值,
Figure 924549DEST_PATH_IMAGE034
Figure 53042DEST_PATH_IMAGE035
Figure 542929DEST_PATH_IMAGE036
之间的差距,
Figure 73267DEST_PATH_IMAGE037
为调试结果集合
Figure 623197DEST_PATH_IMAGE038
中所有任意两个个性化需求
Figure 238986DEST_PATH_IMAGE039
Figure 266985DEST_PATH_IMAGE040
之间的差距,
Figure 651830DEST_PATH_IMAGE041
为第
Figure 372661DEST_PATH_IMAGE042
个执行区块链节点生成的调试结果,
Figure 980141DEST_PATH_IMAGE043
为第
Figure 15093DEST_PATH_IMAGE044
个执行区块链节点生成的调试结果;
若调试结果的综合评价指标
Figure 316762DEST_PATH_IMAGE045
不小于预设值
Figure 146177DEST_PATH_IMAGE046
,则调整代表区块链节点中的合约代码,再进行步骤S120和步骤S130;
若调试结果的综合评价指标
Figure 798876DEST_PATH_IMAGE045
小于预设值
Figure 106360DEST_PATH_IMAGE046
,则将测试区块链网络的代表区块链节点上部署的智能合约的合约代码部署至的区块链节点上;
响应于向正式区块链网络中部署智能合约完毕,删除模块删除测试区块链网络的代表区块链节点上部署的智能合约的代码。
4.根据权利要求3所述的自动调试智能合约的系统,其特征在于,将合约代码和调试代码部署至测试区块链网络的代表区块链节点上,从而完成智能合约的部署。
CN202111566451.8A 2021-12-21 2021-12-21 一种自动调试智能合约的方法及系统 Active CN113961202B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111566451.8A CN113961202B (zh) 2021-12-21 2021-12-21 一种自动调试智能合约的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111566451.8A CN113961202B (zh) 2021-12-21 2021-12-21 一种自动调试智能合约的方法及系统

Publications (2)

Publication Number Publication Date
CN113961202A CN113961202A (zh) 2022-01-21
CN113961202B true CN113961202B (zh) 2022-02-22

Family

ID=79473364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111566451.8A Active CN113961202B (zh) 2021-12-21 2021-12-21 一种自动调试智能合约的方法及系统

Country Status (1)

Country Link
CN (1) CN113961202B (zh)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3388994A1 (de) * 2017-04-12 2018-10-17 Siemens Aktiengesellschaft Verfahren und vorrichtung zum rechnergestützten testen einer blockkette
CN108763058A (zh) * 2018-04-24 2018-11-06 苏州同济区块链研究院有限公司 一种区块链测评系统
CN109408373B (zh) * 2018-09-26 2022-03-04 深圳壹账通智能科技有限公司 智能合约的测试方法、计算机可读存储介质及测试终端
CN109446096B (zh) * 2018-11-06 2021-08-24 北京知道创宇信息技术股份有限公司 一种智能合约调试方法、装置及其存储介质
CN109670951B (zh) * 2018-11-19 2021-03-26 南京苏宁软件技术有限公司 一种区块链智能合约调试发布方法及系统
CN109753434A (zh) * 2018-12-26 2019-05-14 中链科技有限公司 基于区块链的性能测试方法、装置、电子设备及存储介质
CN109783195A (zh) * 2019-01-16 2019-05-21 杭州趣链科技有限公司 一种基于容器的智能合约实时调试方法
CN110097467B (zh) * 2019-05-05 2021-04-13 华中科技大学 一种针对智能合约安全性和稳定性的侧链测试系统和方法
CN111290958B (zh) * 2020-02-20 2023-05-30 联动优势科技有限公司 一种调试智能合约的方法及装置

Also Published As

Publication number Publication date
CN113961202A (zh) 2022-01-21

Similar Documents

Publication Publication Date Title
Parry et al. A survey of flaky tests
CN112073269B (zh) 区块链网络测试方法、装置、服务器及存储介质
CN107704393A (zh) 数据测试方法、装置及电子设备
CN112035350B (zh) 针对区块链系统的测试方法、装置及计算机设备
Liu et al. Invcon: A dynamic invariant detector for ethereum smart contracts
Kerzazi et al. Botched releases: Do we need to roll back? Empirical study on a commercial web app
CN102624476A (zh) 一种基于模型检测的无线传感器网络时间同步检验方法
CN112202647B (zh) 区块链网络中的测试方法、装置及测试设备
CN113961202B (zh) 一种自动调试智能合约的方法及系统
US20120060064A1 (en) Soft error verification in hardware designs
CN101894073B (zh) 基于控制流交集的缺陷自动定位装置及其自动定位方法
CN106533824A (zh) 一种给定扰动下的通信网络弹性测评方法
CN113282496B (zh) 接口自动测试方法、装置、设备及存储介质
CN112819621B (zh) 一种智能合约资损测试方法及系统
CN110765193B (zh) 一种区块链数据导出的方法及装置
Wu et al. Multi-scale software network model for software safety of the intended functionality
Varghese et al. Can commercial testing automation tools work for iot? A case study of selenium and node-red
Şerban et al. A conceptual framework for component-based system metrics definition
CN111782537B (zh) 一种基于区块链技术的众测流程管理系统及方法
US11360882B2 (en) Method and apparatus for calculating a software stability index
Saeed et al. Robust Requirements Specifications for Safety—Critical Systems
CN116302907A (zh) 一种业务系统的联调测试方法、装置及联调测试系统
Lun et al. C2-Style Architecture Testing and Metrics Using Dependency Analysis.
Sharma et al. Machine Learning Based Approach On Full Stack Development Utilizing Mongodb To Diagnose Faults In Complex Mechatronics System
CN105786514A (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
GR01 Patent grant
GR01 Patent grant