CN111932260A - 一种智能合约版本的管理方法、设备及可读存储介质 - Google Patents
一种智能合约版本的管理方法、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111932260A CN111932260A CN202010983139.8A CN202010983139A CN111932260A CN 111932260 A CN111932260 A CN 111932260A CN 202010983139 A CN202010983139 A CN 202010983139A CN 111932260 A CN111932260 A CN 111932260A
- Authority
- CN
- China
- Prior art keywords
- contract
- condition
- transaction
- code
- version
- 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
Links
Images
Classifications
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- 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
本发明提供一种智能合约版本的管理方法、设备及可读存储介质,管理方法包括:接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和条件规则表;其中,合约代码表包括若干呈映射关系的合约代码与版本代号;条件规则表包括若干条件规则,每个条件规则包括呈映射关系的版本代号、条件组合模式和条件列表,条件列表记录了各检查条件;接收根据合约地址和调用参数创建的用于调用智能合约的第二交易,根据合约地址获取对应的条件规则表;根据条件规则表确定版本代号以按照版本代号对应的合约代码执行第二交易。本发明的有益效果:基于单一的合约地址实现对多合约代码版本进行管理。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种智能合约版本的管理方法、设备及可读存储介质。
背景技术
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。
智能合约,区块链上的智能合约是指由solidity编写和编译并运行与区块链上的一串二进制代码,我们可以通过智能合约实现在区块链上的数据存储、读写以及一些逻辑操作,因此一些基于区块链的应用是利用智能合约完成的。
其中,智能合约(smart contract)是先于区块链技术诞生的,早在1997年就被跨领域法律学者尼克·萨博提出,却一直未能得到快速地发展和广泛地应用,缺乏有效的机制保证满足合约的可观察性、可验证性和自强制性。区块链技术的出现成为智能合约发展的巨大推动力,区块链的去中心化与不可篡改的特性给智能合约提供了一个很好地发展环境,因此近年来,比特币网络、以太坊网络等一系列区块链社区都陆续开始提供了公开的智能合约编程的接口。但是在智能合约的管理维护过程中,智能合约的代码变更都是硬变更,合约代码变更前所有合约用户均使用变更前的智能合约,在合约代码变更之后所有合约用户均使用变更后的智能合约,缺少一个在新旧智能合约之间平滑地切换代码版本的管理方式。
发明内容
针对现有技术中存在的上述问题,现提供一种智能合约版本的管理方法、设备及可读存储介质。
具体技术方案如下:
一种智能合约版本的管理方法,其中,包括:
接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和条件规则表;
其中,合约代码表包括若干呈映射关系的合约代码与版本代号;
条件规则表包括若干条件规则,每个条件规则包括呈映射关系的版本代号、条件组合模式和条件列表,条件列表记录了各检查条件;
接收根据合约地址和调用参数创建的用于调用智能合约的第二交易,根据合约地址获取对应的条件规则表;
根据条件规则表确定版本代号以按照版本代号对应的合约代码执行第二交易。
优选的,智能合约版本的管理方法,其中,接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约状态数据、合约代码表和条件规则表,具体包括以下步骤:
根据合约代码和部署参数构建第一交易;
检测第一交易是否合法;
于第一交易不合法时,确定第一交易为非法交易,退出执行;
于第一交易合法时,根据第一交易设置智能合约的合约地址,并于合约地址对应的存储空间中存储合约状态数据、合约代码表和条件规则表。
优选的,智能合约版本的管理方法,其中,接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和条件规则表,还包括:
给合约代码设置默认版本代号;
将默认版本代号和合约代码填入合约代码表;
优选的,智能合约版本的管理方法,其中,接收根据合约地址和调用参数创建的用于调用智能合约的第二交易,根据合约地址获取对应的条件规则表,包括以下步骤:
以区块链交易的形式输入合约地址和调用参数,以根据合约地址和调用参数形成第二交易;
检测第二交易是否合法;
于第二交易不合法时,确定第二交易为非法交易,退出执行;
于第二交易合法时,获取合约地址对应的存储空间中的条件规则表;
优选的,智能合约版本的管理方法,其中,根据条件规则表确定版本代号以按照版本代号对应的合约代码执行第二交易包括:
读取条件规则表一条件规则,在该条件规则对应的条件组合模式下,判断第二交易是否满足对应的检查条件:
若是,则获取条件组合模式对应的版本代号,并根据版本代号获取合约代码表中对应合约代码以执行第二交易;
若否,判断下一条件规则的条件组合模式下的第二交易参数是否满足对应的检查条件;
遍历所有条件规则后,第二交易仍不符合条件规则,则调用默认版本代号对应的合约代码以执行第二交易。
优选的,智能合约版本的管理方法,其中,各条件规则还包括若干条件编号,各条件编号与各版本代号、条件组合模式和条件列表一一对应;各条件编号配置优先级,根据条件规则表确定版本代号以按照版本代号对应的合约代码执行第二交易,包括:
在条件规则表中按照条件编号优先级顺序逐个读取条件规则:
该条件规则对应的条件组合模式下判断第二交易是否满足对应的检查条件:
若是,则找到该条件规则对应的版本代号,从合约代码表中根据版本代号获取对应的合约代码,执行第二交易;
若否,则继续读取下一条件规则,继续执行判断;
遍历完所有条件规则后,第二交易仍不符合条件规则,则调用默认版本代号对应的合约代码以执行第二交易。
优选的,智能合约版本的管理方法,其中,条件组合模式包括“与”模式和/或“或”模式;
“与”模式为第二交易符合与条件组合模式相关联的条件列表中的所有条件;
“或”模式为第二交易符合与条件组合模式相关联的条件列表中的至少一个条件。
优选的,智能合约版本的管理方法,其中,还包括:
接收到根据合约代码、合约地址和版本代号创建的用于设置合约代码表的第三交易后,将第三交易中的合约代码和版本代号存储到第三交易中的合约地址对应的合约代码表中。
优选的,智能合约版本的管理方法,其中,还包括:
输入合约地址和条件规则表,并根据输入的合约地址和输入的条件规则表创建用于设置条件规则表的第四交易,将输入的条件规则表更新到第四交易中的合约地址中的条件规则表中。
还包括一种智能合约版本的管理设备,其中,包括存储器和处理器,存储器上保存有可在处理器上运行的基于区块链的智能合约管理程序,智能合约管理程序被处理器执行时实现如上述任一项所述的智能合约版本的管理方法。
还包括一种计算机可读存储介质,其中,计算机可读存储介质上保存有可在处理器上运行的基于区块链的智能合约调用程序,智能合约调用程序被处理器执行时实现如上述任一项所述的智能合约版本的管理方法。
上述技术方案具有如下优点或有益效果:
基于单一的合约地址实现对多合约代码版本管理的方法,并允许配置交易流量的条件组合模式和条件列表,提供了对合约代码灰度测试与平滑过渡版本切换的支持,提高了智能合约运维的便利性。
附图说明
参考所附附图,以更加充分的描述本发明的实施例。然而,所附附图仅用于说明和阐述,并不构成对本发明范围的限制。
图1为本发明智能合约版本的管理方法的实施例的流程图;
图2为本发明智能合约版本的管理方法的实施例的合约地址对应的存储空间的结构示意图;
图3为本发明智能合约版本的管理设备的原理框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
本发明包括一种智能合约版本的管理方法,如图1所示,包括:
步骤S1,接收到根据合约代码和部署参数创建地用于部署智能合约的第一交易后,根据第一交易设置智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和条件规则表,如图2所示;
其中,合约代码表包括呈若干映射关系的合约代码与版本代号;
条件规则表包括呈映射关系的条件编号、版本代号、条件组合模式和条件列表,条件列表记录了各检查条件;
具体的,作为一种实施例,可以在条件规则表中设置以下条件规则:
第一个条件规则,其条件编号为1,版本代号为a,条件组合模式为“与”模式,条件列表1中检查条件包含:第一条件,交易签署者账号具有名为“X”的角色;第二条件,交易签署者账号具有名为“Y”的角色。
第二个条件规则,其条件编号为2,版本代号为b,条件组合模式为“或”模式,条件列表2中检查条件包含:第一条件,交易签署者账号具有名为“X”的角色;第二条件,交易签署者账号具有名为“Y”的角色。
其中默认版本代号为c。
上述实施例的效果是,如果签署交易者账号既有名为“X”的账号,又有名为”Y”的账号,那么符合第一个条件规则,交易将使用版本代号a对应的合约代码执行;如果签署交易者账号有名为”X”的角色,但没有名为“Y”的角色,那么符合第二个条件规则,交易将使用版本代号b对应的合约代码执行;如果签署交易者账号有名为“Y”的角色,但没有名为“X”的角色,那么符合第二个条件规则,交易将使用版本代号b对应的合约代码执行;上述条件均不满足时,交易使用默认版本代号c对应的合约代码执行。
在上述实施例中,步骤S1是部署智能合约的过程,即对智能合约进行初始化的过程;
首先,根据合约代码和部署参数创建第一交易,随后根据第一交易设置智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和条件规则表;即每个合约地址对应的存储空间中均存在对应于智能合约的合约代码表和条件规则表;从而完成对智能合约的部署。
在上述实施例中,通过在一个合约地址对应的存储空间中存储合约状态数据、合约代码表和条件规则表;
并且合约代码表中保存有多个版本代码对应的合约代码,从而实现在区块链账本上以表的形式存储若干具有相同合约地址的不同版本的合约代码;
以及条件规则表中保存有多个不同的版本代码对应的条件组合模式和条件列表,因此可以实现按合约维护人员定义的条件组合模式和条件列表中的条件确定条件列表对应的版本代号;
而且合约代码表和条件规则表中均存在版本代号这一相同的参数;
而且在合约代码表中,合约代码与版本代号呈映射关系;
在条件规则表中,版本代号、条件组合模式和条件列表呈映射关系;
因此,可以通过获取条件规则表中的版本代号于合约代码表中查询合约代码。
步骤S2,接收根据合约地址和调用参数创建的用于调用智能合约的第二交易,根据合约地址获取对应的条件规则表,根据条件规则表确定版本代号以按照版本代号对应的合约代码执行第二交易。
在上述实施例中,于合约地址对应的存储空间中还存储有合约状态数据,在执行第二交易的过程中会对第二交易的合约地址中的合约状态数据进行读写。
在上述实施例中,上述步骤S2是对智能合约进行调用的过程;
具体的,根据输入的合约地址和调用参数创建第二交易,第二交易中的合约地址对应的存储空间中存储有条件规则表和合约代码表,其中,条件规则表可以包括多条条件规则,每条条件规则包括版本代号、条件组合模式和条件列表;
根据每条条件规则中的条件组合模式依照同一条条件规则中的条件列表检测第二交易,即检测第二交易是否同时满足条件列表中的检查条件和条件组合模式,随后在条件规则表中获取通过检测的第二交易对应的条件列表,并根据条件列表于条件规则表中获取对应的版本代号,然后根据在条件规则表中获取的版本代号,于合约代码表中获取与版本代号对应的合约代码,最后调用上述合约代码执行第二交易,进而对第二交易的合约地址对应的存储空间中的合约状态数据进行读写,随后将执行结果进行反馈。
在上述实施例中,通过在区块链账本上以表的形式存储若干具有相同地址的不同版本合约代码,调用合约维护人员定义的条件组合模式和条件列表指定的智能合约的交易执行所使用合约代码。
在上述实施例中,基于单一的合约地址实现对多合约代码版本管理的方法,并允许配置交易流量的条件组合模式和条件列表,提供了对合约代码灰度测试与平滑过渡版本切换的支持,提高了智能合约运维的便利性。
在上述实施例中,步骤S1在步骤S4、步骤S3和步骤S2之前执行,但是步骤S4、步骤S3和步骤S2之间没有固定的执行顺序。
进一步地,在上述实施例中,步骤S1具体包括以下步骤:
步骤S11,根据合约代码和部署参数构建第一交易;
步骤S12,检测第一交易是否合法;
于第一交易不合法时,确定第一交易为非法交易,退出执行;
于第一交易合法时,根据第一交易设置智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和条件规则表。
在上述实施例中,也可以在合约地址对应的存储空间中存储合约状态数据。
在上述实施例中,合约维护人员可以以区块链交易的形式输入合约代码和部署参数,随后可以采用区块链交易执行器检测第一交易的合法性,如果检测不通过,则认为第一交易是非法交易,退出执行;如果检测通过,则此采用区块链交易执行器自动生成智能合约的合约地址,其中,合约地址是智能合约的唯一标识。
合约地址对应的存储空间中专门分配一块空间给用于存放版本代号到合约代码映射关系的合约代码表;
还需要在合约地址对应的存储空间中还分配一块空间给用于存放版本代号、条件组合模式和条件列表的映射关系的条件规则表。
进一步地,在上述实施例中,步骤S1还包括:
步骤S13,给合约代码设置默认版本代号;
步骤S14,将默认版本代号和合约代码填入合约代码表;
于条件规则表为空时,调用默认版本代号对应的合约代码。
在上述实施例中,区块链交易执行器分配一个默认版本代号,以默认代号版本为键,以合约维护人员输入的合约代码为值,存放到合约代码表中。
并在条件规则表为空时,表示所有智能合约均调用合约代码表中与默认合约代号对应的合约代码执行。
其中,条件规则表在未更新前为空。
进一步地,在上述实施例中,还包括:
采用区块链交易执行器在区块链账本上记录智能合约的合约地址、合约状态数据、合约代码表和条件规则表。
在上述实施例中,可以在步骤S1中采用区块链交易执行器在区块链账本上记录智能合约的合约地址、合约状态数据、合约代码表和条件规则表。
其中,合约状态数据可以根据输入的合约代码和部署参数进行初始化。
进一步地,在上述实施例中,步骤S2包括以下步骤:
步骤S21,以区块链交易的形式输入合约地址和调用参数,以根据合约地址和调用参数形成第二交易;
步骤S22,检测第二交易是否合法;
若否,确定第二交易为非法交易,退出执行;
若是,获取与合约地址对应的条件规则表。
进一步地,作为优选的实施方式,当各条件规则包括一一对应的版本代号、条件组合模式和条件列表时;
步骤S2还包括以下步骤:
步骤S23,读取条件规则表一条件规则,在该条件规则对应的条件组合模式下,判断第二交易是否满足对应的检查条件:
若是,则获取条件组合模式对应的版本代号,并根据版本代号获取合约代码表中对应合约代码以执行第二交易;
若否,判断下一条件规则的条件组合模式下的第二交易参数是否满足对应的检查条件;
步骤S24,遍历所有条件规则后,第二交易仍不符合条件规则,则调用默认版本代号对应的合约代码以执行第二交易。
在上述优选的实施方式中,可以直接读取到条件规则表中一条条件规则,更加便捷。
进一步地,作为优选的实施方式,各条件规则还包括若干条件编号,各条件编号与各版本代号、条件组合模式和条件列表一一对应;此时的步骤S2具体包括以下步骤:
步骤S25,在条件规则表中按照条件编号优先级顺序逐个读取条件规则:
步骤S26,该条件规则对应的条件组合模式下判断第二交易是否满足对应的检查条件:
是,则找到该条件规则对应的版本代号,从合约代码表中根据版本代号获取对应的合约代码,执行第二交易;
否,则继续读取下一条件规则,继续执行判断;
步骤S27,遍历完所有条件规则后,第二交易仍不符合条件规则,则调用默认版本代号对应的合约代码以执行第二交易。
在上述优选的实施方式中,可以根据条件编号优先级顺序逐个读取条件规则,增加操作性。
进一步地,作为优选的实施方式,条件组合模式包括“与”模式;
进一步地,作为优选的实施方式,条件组合模式包括“或”模式;
其中,“与”模式为第二交易符合与条件组合模式相关联的条件列表中的所有检查条件;
“或”模式为第二交易符合与条件组合模式相关联的条件列表中的至少一个检查条件。
进一步地,在上述实施例中,条件包括:
指定数值型参数的范围、字符串型参数的正则匹配和数值型参数进过数值计算之后的结果范围。
作为优选的实施方式,可以根据条件编号的优先级顺序依次选择条件规则对第二交易进行检测,包括:
首先,将获取当前条件规则的条件组合模式;
接着,判断第二交易是否满足当前条件列表中的每个条件;
然后结合条件组合模式判断第二交易是否通过检测。
例如,当条件编号为1的条件规则中的条件组合模式为“与”模式;
而条件编号为1的条件规则中的条件列表包括第一条件、第二条件和第三条件;
可以判断第二交易是否满足第一条件,第一判断结果为满足;
可以判断第二交易是否满足第二条件,第二判断结果为不满足;
可以判断第二交易是否满足第三条件,第三判断结果为满足;
然后结合“与”模式,第二交易需要满足所有的条件才能通过检测,因此得到第二交易没有通过检测,此时可以继续获取下一个条件编号对应的条件规则对第二交易进行检测;
例如,当条件编号为2的条件规则中的条件组合模式为“或”模式;
而条件编号为2的条件规则中的条件列表包括第四条件、第五条件、第六条件和第七条件;
可以判断第二交易是否满足第四条件,第四判断结果为不满足;
可以判断第二交易是否满足第五条件,第五判断结果为不满足;
可以判断第二交易是否满足第六条件,第六判断结果为不满足;
可以判断第二交易是否满足第七条件,第七判断结果为满足;
然后结合“或”模式,第二交易只需要满足条件列表中的一个条件就能通过检测,因此得到第二交易通过检测,此时可以选取条件编号为2的条件规则中的版本代号,根据版本代号于合约代码表中调用对应的合约代码执行第二交易,进而对第二交易的合约地址中的合约状态数据进行读写。
在上述实施例中,用户需要调用智能合约时,用户以区块链交易的形式输入合约地址、调用参数。区块链交易执行器检查第二交易的合法性,如果检查不通过,则认为是非法交易,退出执行;如果检查通过,则找到输入的合约地址对应账本空间中存储的智能合约流量切分规则模式,则从条件规则表中按照条件编号从小到大的顺序逐条读出条件规则,判断是否满足条件规则检查。如果满足则从合约代码表中找到条件规则规定的版本代号对应合约代码,执行交易;如果不满足,则继续读取下一条件规则,继续执行检查;遍历完所有条件规则后,即交易不符合所有合约维护人员定义的条件规则,那么从合约代码表中,找到默认版本代号对应的合约代码执行第二交易,进而对第二交易的合约地址中的合约状态数据进行读写。
值得注意的是,上述实施例中的编号虽然采用了从小到大的顺序逐条读取,但这并不意味着只有这一种顺序实施方式,只要能按照设定的编号顺序逐条读取即可。
进一步地,在上述实施例中,还包括:
步骤S3,接收到根据合约代码、合约地址和版本代号创建用于设置合约代码表的第三交易后,将第三交易中的合约代码和版本代号存储到第三交易中的合约地址对应的合约代码表中;
在上述实施例中,上述步骤S3是设置合约代码表的过程;
具体的,根据输入的合约代码、合约地址和版本代号创建第三交易,其中第三交易中输入的合约地址对应的存储空间中存储有合约代码表;
因此可以根据输入的合约代码和版本代号对第三交易中的合约地址对应的存储空间中存储有合约代码表进行更新设置。
进一步地,在上述实施例中,步骤S3包括以下步骤:
步骤S31,以区块链交易的形式输入合约代码、合约地址和版本代号,以根据合约代码、合约地址和版本代号形成第三交易;
步骤S32,检测第三交易是否合法;
于第三交易不合法时,确定第三交易为非法交易,退出执行;
于第三交易合法时,以版本代号为键,以合约代码为值,将键值对存放到第三交易中的合约地址中的合约代码表中。
在上述实施例中,当合约维护人员需要维护合约代码时,
首先,合约维护人员以区块链交易的形式输入合约代码、合约地址和版本代号,以形成第三交易;
接着,区块链交易执行器检查交易合法性与权限,如果检查不通过,则认为是非法交易,退出执行;如果检查通过,则以输入的版本代号为键,以输入的合约代码为值,将键值对第三交易中的合约地址中的合约代码表中,从而完成对合约代码表的更新设置。
进一步地,在上述实施例中,还包括:
步骤S4,输入合约地址和条件规则表,并根据输入的合约地址和输入的条件规则表创建用于设置条件规则表的第四交易,将输入的条件规则表更新到第四交易中的合约地址中的条件规则表中;
在上述实施例中,步骤S4是设置条件规则表的过程;
具体的,根据输入的合约地址和条件规则表创建第四交易,其中,第四交易中的合约地址对应的存储空间中存储有初始化时已经存储好的条件规则表;
因此在上述步骤S4中只需要将输入的条件规则表更新到第四交易中的合约地址对应的条件规则表中,从而完成对条件规则表的更新设置。
在上述实施例中,步骤S4具体包括以下步骤:
步骤S41,以区块链交易的形式输入合约地址和条件规则表,以根据输入的合约地址和输入的条件规则表形成第四交易;
需要说明的是,此时输入的合约地址和输入的条件规则表分别为新的合约地址的新的条件规则表;
步骤S42,检测第四交易是否合法;
若否,确定第四交易为非法交易,退出执行;
若是,将输入的条件规则表覆盖第四交易中的合约地址对应的存储空间中的条件规则表。
在上述实施例中,当合约维护人员需要按照条件进行交易流量切分时:
上述条件列表中的条件和条件组合模式可以由合约维护人员自设定;
首先,合约维护人员以区块链交易的形式输入合约地址以及条件规则表。其中,条件编号用于标识条件规则的优先级,例如,条件编号越小,应用规则的优先级越高;
条件列表包括多个条件,上述条件均为检查交易所使用的字段检查条件,包括但不限于指定数值型参数的范围、字符串型参数的正则匹配和数值型参数进过数值计算之后的结果范围等;
条件组合模式为条件列表中的所有条件的组合模式,例如“与”模式和“或”模式;
“与”模式为第二交易均符合与条件组合模式相关联的条件列表中的所有条件;
“或”模式为第二交易符合与条件组合模式相关联的条件列表中的至少一个条件。
版本代号标识符合该条件规则的账号使用该版本代号对应的合约代码执行智能合约调用。
接着,区块链交易执行器检查第四交易的合法性,如果无法通过检查,则认为是非法交易,退出执行;如果通过检查,则将输入的条件规则表直接覆盖到第四交易的合约地址对应的存储空间中的条件规则表中。
在上述实施例中,于步骤S2中,用户无法指定自己使用的合约代码,只要用户输入的合约地址相同,就会对该合约地址所指向的同一份合约状态数据进行读写操作。在合约维护人员没有修改合约代码表和条件规则表的情况下,使用特定区块链账号的用户将始终调用默认版本代号对应的合约代码。
在上述实施例中,于步骤S2、步骤S3和步骤S4中,均需要以步骤S1中部署智能合约时生成交易所使用的区块链账户,来发起交易,从而通过区块链交易执行器检测第一交易或第二交易或第三交易或第四交易是否合法。
在上述实施例中,于步骤S2、步骤S3和步骤S4中,合约维护人员需要输入的合约地址为步骤S1中由区块链交易执行器分配的合约地址,用户调用智能合约同样输入该合约地址。
进一步地,在上述实施例中,于步骤S2、步骤S3和步骤S4中,均需要以步骤S1中部署智能合约时生成交易所使用的区块链账户,来发起交易,从而,采用区块链交易执行器检测第一交易或第二交易或第三交易或第四交易是否合法。
还包括一种智能合约版本的管理设备,如图3所示,包括存储器2和处理器1,存储器2上保存有可在处理器1上运行的基于区块链的智能合约管理程序3,智能合约管理程序3被处理器1执行时实现上述任一项的智能合约版本的管理方法。
本发明智能合约版本的管理设备的具体实施方式与上述智能合约版本的管理方法各实施例基本相同,在此不再赘述。
还包括一种计算机可读存储介质,其中,计算机可读存储介质上保存有可在处理器上运行的基于区块链的智能合约调用程序,智能合约调用程序被处理器执行时实现上述任一项的智能合约版本的管理方法。
本发明计算机可读存储介质的具体实施方式与上述智能合约版本的管理方法各实施例基本相同,在此不再赘述。
以上仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (11)
1.一种智能合约版本的管理方法,其特征在于,包括:
接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据所述第一交易生成所述智能合约的合约地址,并于所述合约地址对应的存储空间中存储合约代码表和条件规则表;
其中,所述合约代码表包括若干呈映射关系的所述合约代码与版本代号;
所述条件规则表包括若干条件规则,每个所述条件规则包括呈映射关系的所述版本代号、条件组合模式和条件列表,所述条件列表记录了各检查条件;
接收根据所述合约地址和调用参数创建的用于调用智能合约的第二交易,根据所述合约地址获取对应的所述条件规则表;
根据所述条件规则表确定版本代号以按照所述版本代号对应的所述合约代码执行所述第二交易。
2.如权利要求1所述的智能合约版本的管理方法,其特征在于,所述接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据所述第一交易生成所述智能合约的合约地址,并于所述合约地址对应的存储空间中存储合约状态数据、合约代码表和条件规则表,具体包括以下步骤:
根据所述合约代码和所述部署参数构建所述第一交易;
检测所述第一交易是否合法;
于所述第一交易不合法时,确定所述第一交易为非法交易,退出执行;
于所述第一交易合法时,根据所述第一交易设置所述智能合约的所述合约地址,并于所述合约地址对应的存储空间中存储所述合约状态数据、所述合约代码表和所述条件规则表。
3.如权利要求1所述的智能合约版本的管理方法,其特征在于,所述接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据所述第一交易生成所述智能合约的合约地址,并于所述合约地址对应的存储空间中存储合约代码表和条件规则表,还包括:
给所述合约代码设置默认版本代号;
将所述默认版本代号和所述合约代码填入所述合约代码表。
4.如权利要求3所述的智能合约版本的管理方法,其特征在于,所述接收根据所述合约地址和调用参数创建的用于调用智能合约的第二交易,根据所述合约地址获取对应的所述条件规则表,包括以下步骤:
以区块链交易的形式输入所述合约地址和所述调用参数,以根据所述合约地址和所述调用参数形成所述第二交易;
检测所述第二交易是否合法;
于所述第二交易不合法时,确定所述第二交易为非法交易,退出执行;
于所述第二交易合法时,获取所述合约地址对应的存储空间中的所述条件规则表。
5.根据权利要求4所述的智能合约版本的管理方法,其特征在于,所述根据所述条件规则表确定版本代号以按照所述版本代号对应的合约代码执行所述第二交易包括:
读取条件规则表一条件规则,在该条件规则对应的条件组合模式下,判断第二交易是否满足对应的检查条件:
若是,则获取所述条件组合模式对应的版本代号,并根据所述版本代号获取所述合约代码表中对应合约代码以执行所述第二交易;
若否,判断下一条件规则的条件组合模式下的第二交易参数是否满足对应的检查条件;
遍历所有条件规则后,第二交易仍不符合条件规则,则调用所述默认版本代号对应的所述合约代码以执行所述第二交易。
6.根据权利要求1所述的智能合约版本的管理方法,其特征在于,各条件规则还包括若干条件编号,各所述条件编号与各所述版本代号、条件组合模式和条件列表一一对应;各所述条件编号配置优先级,所述根据所述条件规则表确定版本代号以按照所述版本代号对应的合约代码执行所述第二交易,包括:
在条件规则表中按照条件编号优先级顺序逐个读取条件规则:
该条件规则对应的条件组合模式下判断所述第二交易是否满足对应的检查条件:
若是,则找到该条件规则对应的版本代号,从合约代码表中根据版本代号获取对应的合约代码,执行第二交易;
若否,则继续读取下一条件规则,继续执行判断;
遍历完所有条件规则后,第二交易仍不符合条件规则,则调用所述默认版本代号对应的所述合约代码以执行所述第二交易。
7.如权利要求5或6所述的智能合约版本的管理方法,其特征在于,所述条件组合模式包括“与”模式和/或“或”模式;
所述“与”模式为所述第二交易符合与所述条件组合模式相关联的所述条件列表中的所有条件;
所述“或”模式为所述第二交易符合与所述条件组合模式相关联的所述条件列表中的至少一个条件。
8.如权利要求1所述的智能合约版本的管理方法,其特征在于,还包括:
接收到根据所述合约代码、所述合约地址和所述版本代号创建的用于设置所述合约代码表的第三交易后,将所述第三交易中的所述合约代码和所述版本代号存储到所述第三交易中的所述合约地址对应的所述合约代码表中。
9.如权利要求1所述的智能合约版本的管理方法,其特征在于,还包括:
输入合约地址和条件规则表,并根据输入的合约地址和输入的条件规则表创建用于设置所述条件规则表的第四交易,将输入的条件规则表更新到所述第四交易中的所述合约地址中的所述条件规则表中。
10.一种智能合约版本的管理设备,其特征在于,包括存储器和处理器,所述存储器上保存有可在所述处理器上运行的基于区块链的智能合约管理程序,所述智能合约管理程序被所述处理器执行时实现如权利要求1至9中任一项所述的智能合约版本的管理方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上保存有可在处理器上运行的基于区块链的智能合约调用程序,所述智能合约调用程序被所述处理器执行时实现如权利要求1至9中任一项所述的智能合约版本的管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010983139.8A CN111932260B (zh) | 2020-09-18 | 2020-09-18 | 一种智能合约版本的管理方法、设备及可读存储介质 |
PCT/CN2020/141103 WO2022057153A1 (zh) | 2020-09-18 | 2020-12-29 | 一种智能合约版本的管理方法、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010983139.8A CN111932260B (zh) | 2020-09-18 | 2020-09-18 | 一种智能合约版本的管理方法、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111932260A true CN111932260A (zh) | 2020-11-13 |
CN111932260B CN111932260B (zh) | 2021-01-26 |
Family
ID=73333923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010983139.8A Active CN111932260B (zh) | 2020-09-18 | 2020-09-18 | 一种智能合约版本的管理方法、设备及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111932260B (zh) |
WO (1) | WO2022057153A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527781A (zh) * | 2020-12-23 | 2021-03-19 | 上海万向区块链股份公司 | 一种智能合约数据迁移方法及系统 |
CN113590213A (zh) * | 2021-06-24 | 2021-11-02 | 深圳开源互联网安全技术有限公司 | 组件维护方法、电子设备及存储介质 |
WO2022057153A1 (zh) * | 2020-09-18 | 2022-03-24 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107945021A (zh) * | 2017-12-07 | 2018-04-20 | 杭州趣链科技有限公司 | 一种基于区块链智能合约的数字资产管理方法 |
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
CN109978477A (zh) * | 2017-12-27 | 2019-07-05 | 现代财富控股有限公司 | 基于区块链的智能合约版本控管系统及其方法 |
CN110413304A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 基于区块链网络的智能合约热升级方法及装置 |
CN110544097A (zh) * | 2019-09-06 | 2019-12-06 | 杭州复杂美科技有限公司 | 智能合约版本控制、调用和升级方法、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807168B (zh) * | 2010-03-15 | 2011-11-16 | 北京航空航天大学 | 一种支持版本兼容的数字终端测试环境及其构建方法 |
US10579368B2 (en) * | 2017-03-10 | 2020-03-03 | Salesforce.Com, Inc. | Blockchain version control systems |
CN109859038B (zh) * | 2018-12-26 | 2021-06-25 | 联动优势科技有限公司 | 一种区块链智能合约的生效方法及装置 |
CN111932260B (zh) * | 2020-09-18 | 2021-01-26 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
-
2020
- 2020-09-18 CN CN202010983139.8A patent/CN111932260B/zh active Active
- 2020-12-29 WO PCT/CN2020/141103 patent/WO2022057153A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107945021A (zh) * | 2017-12-07 | 2018-04-20 | 杭州趣链科技有限公司 | 一种基于区块链智能合约的数字资产管理方法 |
CN109978477A (zh) * | 2017-12-27 | 2019-07-05 | 现代财富控股有限公司 | 基于区块链的智能合约版本控管系统及其方法 |
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
CN110413304A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 基于区块链网络的智能合约热升级方法及装置 |
CN110544097A (zh) * | 2019-09-06 | 2019-12-06 | 杭州复杂美科技有限公司 | 智能合约版本控制、调用和升级方法、设备及存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022057153A1 (zh) * | 2020-09-18 | 2022-03-24 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
CN112527781A (zh) * | 2020-12-23 | 2021-03-19 | 上海万向区块链股份公司 | 一种智能合约数据迁移方法及系统 |
CN112527781B (zh) * | 2020-12-23 | 2022-07-15 | 上海万向区块链股份公司 | 一种智能合约数据迁移方法及系统 |
CN113590213A (zh) * | 2021-06-24 | 2021-11-02 | 深圳开源互联网安全技术有限公司 | 组件维护方法、电子设备及存储介质 |
CN113590213B (zh) * | 2021-06-24 | 2023-04-25 | 深圳开源互联网安全技术有限公司 | 组件维护方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022057153A1 (zh) | 2022-03-24 |
CN111932260B (zh) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111932260B (zh) | 一种智能合约版本的管理方法、设备及可读存储介质 | |
CN111932215A (zh) | 一种智能合约版本的管理方法、设备及可读存储介质 | |
AU2022252826A1 (en) | Systems and methods for implementing deterministic finite automata (DFAS) via a blockchain | |
JPH05313940A (ja) | ネットワーク故障診断のためのモデルベース推理システム | |
CN107122364A (zh) | 数据操作方法和数据管理服务器 | |
EP3458954B1 (en) | A method and system for evaluating upgrade campaigns | |
US7441232B2 (en) | Task management | |
CN107092491A (zh) | 一种配置加载方法和系统 | |
CN110162407A (zh) | 一种资源管理方法及装置 | |
CN110297721A (zh) | 一种基于java的智能合约的跨合约调用方法 | |
CN105786525B (zh) | 一种进程模型向线程模型移植代码的方法及装置 | |
CN110162274A (zh) | 一种基于区块链的数据处理方法、装置及设备 | |
CN108733567A (zh) | 软件资源泄露情况的监测方法及系统 | |
KR20010041783A (ko) | 소프트웨어의 생성장치 및 소프트웨어의 생성방법 | |
Layouni et al. | Conflict detection in call control using first-order logic model checking | |
CN109919762A (zh) | 客户信息的报备方法、装置、设备及存储介质 | |
CN106875184A (zh) | 异常场景模拟方法、装置及设备 | |
CN106776803A (zh) | 一种日志记录的更新方法及装置 | |
CN110879900A (zh) | 一种基于区块链系统的数据处理方法及装置 | |
CN109240773A (zh) | 解决房间串数据的方法、装置、终端及可读存储介质 | |
CN109857450A (zh) | 一种校验服务编排方法及装置 | |
CN111901149B (zh) | 自动生成和检测Fabric网络配置文件的方法及系统 | |
CN112486481B (zh) | 多模块分层架构实现方法、装置、电子设备及介质 | |
US5966713A (en) | Method for determining the contents of a restoration log | |
CN107808097A (zh) | JavaScript 路径枚举 |
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 |