CN111932215A - 一种智能合约版本的管理方法、设备及可读存储介质 - Google Patents
一种智能合约版本的管理方法、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111932215A CN111932215A CN202010983586.3A CN202010983586A CN111932215A CN 111932215 A CN111932215 A CN 111932215A CN 202010983586 A CN202010983586 A CN 202010983586A CN 111932215 A CN111932215 A CN 111932215A
- Authority
- CN
- China
- Prior art keywords
- contract
- transaction
- proportion
- code
- interval
- 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
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/101—Collaborative creation, e.g. joint development of products or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Marketing (AREA)
- Accounting & Taxation (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Technology Law (AREA)
- Operations Research (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种智能合约版本的管理方法、设备及可读存储介质,管理方法包括:接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和比例规则表;其中,合约代码表包括呈映射关系的合约代码与版本代号;比例规则表包括呈映射关系的比例编号、版本代号和交易流量比例;接收根据合约地址和调用参数创建的第二交易,根据合约地址获取对应的比例规则表;根据比例规则表确定版本代号,以按照版本代号对应的合约代码执行第二交易。本发明的有益效果:基于单一的合约地址实现对多合约代码版本管理的方法。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种智能合约版本的管理方法、设备及可读存储介质。
背景技术
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。
智能合约,区块链上的智能合约是指由solidity编写和编译并运行与区块链上的一串二进制代码,我们可以通过智能合约实现在区块链上的数据存储、读写以及一些逻辑操作,因此一些基于区块链的应用是利用智能合约完成的。
其中,智能合约(smart contract)是先于区块链技术诞生的,早在1997年就被跨领域法律学者尼克·萨博提出,却一直未能得到快速地发展和广泛地应用,缺乏有效的机制保证满足合约的可观察性、可验证性和自强制性。区块链技术的出现成为智能合约发展的巨大推动力,区块链的去中心化与不可篡改的特性给智能合约提供了一个很好地发展环境,因此近年来,比特币网络、以太坊网络等一系列区块链社区都陆续开始提供了公开的智能合约编程的接口。但是在智能合约的管理维护过程中,智能合约的代码变更都是硬变更,合约代码变更前所有合约用户均使用变更前的智能合约,在合约代码变更之后所有合约用户均使用变更后的智能合约,缺少一个在新旧智能合约之间平滑地切换代码版本的管理方式。
发明内容
针对现有技术中存在的上述问题,现提供一种智能合约版本的管理方法、设备及可读存储介质。
具体技术方案如下:
一种智能合约版本的管理方法,其中,包括:
接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和比例规则表;
其中,合约代码表包括呈映射关系的合约代码与版本代号;
比例规则表包括呈映射关系的比例编号、版本代号和交易流量比例;
接收根据合约地址和调用参数创建的第二交易,根据合约地址获取对应的比例规则表;
根据比例规则表确定版本代号,以按照版本代号对应的合约代码执行第二交易。
优选的,智能合约版本的管理方法,其中,接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和比例规则表,具体包括以下步骤:
以区块链交易的形式输入合约代码和部署参数,以创建第一交易;
检测第一交易是否合法;
于第一交易不合法时,确定第一交易为非法交易,退出执行;
于第一交易合法时,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和比例规则表。
优选的,智能合约版本的管理方法,其中,接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和比例规则表,还包括:
给合约代码设置默认版本代号;
将默认版本代号和合约代码填入合约代码表。
优选的,智能合约版本的管理方法,其中,接收根据合约地址和调用参数创建的第二据合约地址获取对应的比例规则表;包括以下步骤:
以区块链交易的形式输入合约地址和调用参数,以根据合约地址和调用参数创建第二交易;
检测第二交易是否合法;
于第二交易不合法时,确定第二交易为非法交易,退出执行;
于第二交易合法时,获取第二交易中的合约地址对应的存储空间中的比例规则表。
优选的,智能合约版本的管理方法,其中,根据比例规则表确定版本代号以执行第二交易包括:
将比例规则表中的每个交易流量比例映射到第一区间,并按照预设转换条件将第一区间划分为若干映射分区间和/或一个默认分区间;
将发送第二交易的区块链账号映射到第一区间;
当第二交易的区块链账号映射到第一区间的映射值在映射分区间内时,于比例规则表中查找到与映射分区间对应的交易流量比例相关联的版本代号,根据版本代号于合约代码表中获取对应的合约代码执行第二交易;和/或
当第二交易的区块链账号映射到第一区间的映射值在默认分区间内时,获取默认版本代号对应的合约代码执行第二交易。
优选的,智能合约版本的管理方法,其中,按照预设转换条件将第一区间划分为若干映射分区间,具体包括以下步骤:
根据比例编号的优先级顺序依次选择与比例编号相关联的交易流量比例;
将交易流量比例根据预设转换条件转换为对应的映射分区间。
优选的,智能合约版本的管理方法,其中,映射分区间是第一区间的子集,任意两个映射分区间之间的交集为空;或
第一区间还包括一个默认分区间,默认分区间是第一区间的子集,映射分区间与默认分区间之间的交集为空;或
第一区间由一个默认分区间组成。
优选的,智能合约版本的管理方法,其中,还包括:
接收根据合约代码、合约地址和版本代号创建的用于设置合约代码表的第三交易,将第三交易中的合约代码和版本代号存储到第三交易中的合约地址对应的存储空间的合约代码表中。
优选的,智能合约版本的管理方法,其中,还包括:输入合约地址和比例规则表,并接收根据输入的合约地址和输入的比例规则表创建用于设置比例规则表的第四交易,检测第四交易中的输入的比例规则表中的所有交易流量比例的总和是否超过一比例阈值范围;若否,将输入的比例规则表更新到第四交易中的合约地址对应的存储空间中的比例规则表中。
还包括一种智能合约版本的管理设备,其中,包括存储器和处理器,存储器上保存有可在处理器上运行的基于区块链的智能合约管理程序,智能合约管理程序被处理器执行时实如上述任一项所述的智能合约版本的管理方法。
还包括一种计算机可读存储介质,其中,计算机可读存储介质上保存有可在处理器上运行的基于区块链的智能合约调用程序,智能合约调用程序被处理器执行时实现如上述任一项所述的智能合约版本的管理方法。
上述技术方案具有如下优点或有益效果:基于单一的合约地址实现对多合约代码版本管理的方法,提供了对合约代码灰度测试与平滑过渡版本切换的支持,提高了智能合约运维的便利性。
附图说明
参考所附附图,以更加充分的描述本发明的实施例。然而,所附附图仅用于说明和阐述,并不构成对本发明范围的限制。
图1为本发明智能合约版本的管理方法的实施例的流程图;
图2为本发明智能合约版本的管理方法的实施例的合约地址对应的存储空间的结构示意图;
图3为本发明智能合约版本的管理设备的原理框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
本发明包括一种智能合约版本的管理方法,如图1所示,包括:
步骤S1,接收到根据合约代码和部署参数创建地用于部署智能合约的第一交易后,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和比例规则表,如图2所示;
其中,合约代码表包括呈映射关系的合约代码与版本代号;
比例规则表包括呈映射关系的比例编号、版本代号和交易流量比例;
在上述实施例中,步骤S1是部署智能合约的过程,即对智能合约进行初始化的过程;
首先,根据合约代码和部署参数创建第一交易,随后根据第一交易设置智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和比例规则表;即每个合约地址对应的存储空间中均存在对应于智能合约的合约代码表和比例规则表;从而完成对智能合约的部署。
在上述实施例中,通过在一个合约地址对应的存储空间中存储合约状态数据、合约代码表和比例规则表;
并且合约代码表中保存有多个版本代码对应的合约代码,从而实现在区块链账本上以表的形式存储若干具有相同合约地址的不同版本的合约代码;
以及比例规则表中保存有多个不同的版本代码对应的交易流量比例,因此可以实现按合约维护人员定义的流量切分规则确定交易流量比例对应的版本代号;
而且合约代码表和比例规则表中均存在版本代号这一相同的参数;
而且在合约代码表中,合约代码与版本代号呈映射关系;
在比例规则表中,比例编号、版本代号和交易流量比例呈映射关系;
因此,可以通过获取比例规则表中的版本代号于合约代码表中查询合约代码。
步骤S2,接收根据合约地址和调用参数创建的第二交易,根据合约地址获取对应的比例规则表;
根据比例规则表确定版本代号以按照版本代号对应的合约代码执行第二交易;
在上述实施例中,于合约地址对应的存储空间中还存储有合约状态数据,在执行第二交易的过程中会同时对第二交易的合约地址对应的存储空间中的合约状态数据进行读写。
在上述实施例中,上述步骤S2是对智能合约进行调用的过程;
具体的,根据输入的合约地址和调用参数创建第二交易,第二交易中的合约地址对应的存储空间中存储有比例规则表和合约代码表,根据流量切分规则检测比例规则表中的每条交易流量比例,随后在比例规则表中获取通过检测的交易流量比例对应的版本代号,然后根据在比例规则表中获取的版本代号于合约代码表中获取与版本代号对应的合约代码,最后调用上述合约代码执行第二交易,以及对第二交易中的合约地址对应的存储空间中存储的合约状态数据进行读写,并将调用结果进行反馈。
在上述实施例中,通过在区块链账本上以表的形式存储若干具有相同地址的不同版本合约代码,并于交易执行入口使用交易流量比例切分组件,按合约维护人员定义的流量切分规则指定的调用智能合约的交易执行所使用合约代码。
在上述实施例中,基于单一的合约地址实现对多合约代码版本管理的方法,并允许配置线上交易流量切分比例,提供了对合约代码灰度测试与平滑过渡版本切换的支持,提高了智能合约运维的便利性。
进一步地,在上述实施例中,步骤S1具体包括以下步骤:
步骤S11,以区块链交易的形式输入合约代码和部署参数,以创建第一交易;
步骤S12,检测第一交易是否合法;
若否,确定第一交易为非法交易,退出执行;
若是,根据第一交易生成智能合约的合约地址,并于合约地址对应的存储空间中存储合约代码表和比例规则表。
在上述实施例中,合约维护人员可以以区块链交易的形式输入合约代码和部署参数,随后可以采用区块链交易执行器检测第一交易的合法性,如果检测不通过,则认为第一交易是非法交易,退出执行;如果检测通过,则此采用区块链交易执行器自动生成智能合约的合约地址,其中,合约地址是智能合约的唯一标识。
合约地址对应的存储空间中专门分配一块空间给用于存放合约代码表,合约代码表中的版本代号与合约代码呈映射关系;
还需要在合约地址对应的存储空间中还分配一块空间给用于存放比例规则表,比例规则表中的比例编号、版本代号和交易流量比例呈映射关系。
进一步地,在上述实施例中,步骤S1还包括:
步骤S13,给合约代码设置默认版本代号;
步骤S14,将默认版本代号和合约代码填入合约代码表。
在上述实施例中,当比例规则表为空时,可以采用默认版本代号对应的合约代码。
在上述实施例中,区块链交易执行器分配一个默认版本代号,以默认代号版本为键,以合约维护人员输入的合约代码为值,存放到合约代码表中。
并在比例规则表为空时,表示所有智能合约均调用合约代码表中与默认合约代号对应的合约代码执行。
其中,比例规则表在未更新前为空。
进一步地,在上述实施例中,还包括:
采用区块链交易执行器在区块链账本上记录智能合约的合约地址、合约状态数据、合约代码表和比例规则表。
在上述实施例中,可以在步骤S1中采用区块链交易执行器在区块链账本上记录智能合约的合约地址、合约状态数据、合约代码表和比例规则表。
其中,合约状态数据可以根据输入的合约代码和部署参数进行初始化。
进一步地,在上述实施例中,步骤S2具体包括以下步骤:
步骤S21,以区块链交易的形式输入合约地址和调用参数,以根据合约地址和调用参数创建第二交易;
步骤S22,检测第二交易是否合法;
若否,确定第二交易为非法交易,退出执行;
若是,获取第二交易中的合约地址中的比例规则表。
进一步地,作为优选的实施方式一,按照预设转换条件将第一区间划分为若干映射分区间时,步骤S22之后还包括:
步骤S23,将比例规则表中的每个交易流量比例映射到第一区间,并按照预设转换条件将第一区间划分为若干映射分区间;
步骤S24,将发送第二交易的区块链账号映射到第一区间,当第二交易的区块链账号映射到所述第一区间的映射值在映射分区间内时,于所述比例规则表中查找到与所述映射分区间对应的所述交易流量比例相关联的所述版本代号,根据所述版本代号于所述合约代码表中获取对应的所述合约代码执行所述第二交易。
在上述实施方式一中,可以根据需要自设定第一区间的区间范围,例如可以设置第一区间的区间范围是[0,1),因此可以将比例规则表中的每个交易流量比例映射到[0,1)中。
进一步地,在上述实施方式一中,映射分区间是第一区间的子集,任意两个映射分区间之间的交集为空;例如当设置的第一区间的区间范围是[0,1)时,映射分区间可以为[0,0.5),[0.5,0.8),[0.8,1),其中[0,0.5),[0.5,0.8),[0.8,1)之间没有重叠的区域。
具体的,作为优选的实施方式,所有映射分区间的并集可以是第一区间,如下,比例规则表中包含三个比例规则,依次是:
第一个比例规则,其比例编号为1,版本代号为a,交易流量比例为50%;
第二个比例规则,其比例编号为2,版本代号为b,交易流量比例为30%;
第三个比例规则,其比例编号为3,版本代号为c,交易流量比例为20%。
其中,默认版本代号为d。
设置的第一区间的区间范围是[0,1)时,对于第一个比例规则映射出的区间,左端点值设置为0,区间右端点通过区间左端点的数值加上该比例规则对应的流量比例计算得到;即映射分区间可以为[0,0.5),[0.5,0.8),[0.8,1),此时所有映射分区间的并集是[0,1);
那么比例规则映射到[0,1)区间上之后,按照预设转换条件根据交易流量比例将第一区间划分为三个映射分区间,上述第一个比例规则对应映射分区间[0,0.5),上述第二个比例规则对应映射分区间[0.5,0.8)、上述第三个比例规则对应映射分区间[0.8,1)。判断第二交易的区块链账号映射到第一区间的映射值是否在映射分区间内:
若是,于所述比例规则表中查找到与所述映射分区间对应的所述交易流量比例相关联的所述版本代号;当签署交易的区块链账号映射到[0,1)区间上的映射值在映射分区间[0,0.5)内时,则其满足第一个比例规则,交易执行所使用的合约版本代号为a;当签署交易的区块链账号的映射值在映射分区间[0.5,0.8)内时,则其满足第二个比例规则,交易执行所使用的合约版本代号为b;当签署交易的区块链账号的映射值在映射分区间[0.8,1)内时,则其满足第三个比例规则,交易执行所使用的合约版本代号为c;
由于上述所有流量比例加起来满足100%,因此在本实施方式一中的第二交易的区块链账号映射到第一区间的映射值均在映射分区间内,即在本实施方式一中不需要执行默认版本代号。
具体的,作为优选的实施方式,所有映射分区间的并集可以小于第一区间,如下,比例规则表中包含三个比例规则,依次是:
第一个比例规则,其比例编号为1,版本代号为a,交易流量比例为50%;
第二个比例规则,其比例编号为2,版本代号为b,交易流量比例为30%;
第三个比例规则,其比例编号为3,版本代号为c,交易流量比例为10%。
其中,默认版本代号为d。
设置的第一区间的区间范围是[0,1)时,对于第一个比例规则映射出的区间,左端点值设置为0,区间右端点通过区间左端点的数值加上该比例规则对应的流量比例计算得到;即映射分区间可以为[0,0.5),[0.5,0.8),[0.8,0.9),此时所有的映射分区间的并集是[0,0.9);
那么比例规则映射到[0,1)区间上之后,按照预设转换条件根据交易流量比例将第一区间划分为三个映射分区间,上述第一个比例规则对应映射分区间[0,0.5),上述第二个比例规则对应映射分区间[0.5,0.8)、上述第三个比例规则对应映射分区间[0.8,0.9);那么第一区间会存在一个不属于任何一个映射分区间的其他区间范围[0.9,1)。
判断第二交易的区块链账号映射到第一区间的映射值是否在映射分区间内:
若是,于所述比例规则表中查找到与所述映射分区间对应的所述交易流量比例相关联的所述版本代号;当签署交易的区块链账号映射到[0,1)区间上的映射值在映射分区间[0,0.5)内时,则其满足第一个比例规则,交易执行所使用的合约版本代号为a;当签署交易的区块链账号的映射值在映射分区间[0.5,0.8)内时,则其满足第二个比例规则,交易执行所使用的合约版本代号为b;当签署交易的区块链账号的映射值在映射分区间[0.8,0.9)内时,则其满足第三个比例规则,交易执行所使用的合约版本代号为c;
若否,则此时的映射值在其他区间范围[0.9,1)内,则其不满足任一比例规则,此时交易执行所使用的合约版本代号为d。
由于上述所有流量比例加起来不满足100%,因此在本实施方式一中的第二交易的区块链账号映射到第一区间的映射值可以在映射分区间内,也可以在其他分区间中,即在本实施方式一中需要执行默认版本代号。
进一步地,在上述实施方式一中,步骤S23中的按照预设转换条件将第一区间划分为若干映射分区间,具体包括以下步骤:
步骤S231,根据比例编号的优先级顺序依次选择与比例编号相关联的交易流量比例;
步骤S232,将交易流量比例根据预设转换条件转换为对应的映射分区间。
作为优选的实施方式,所有区间叠加的区间范围可以为[0,1);
具体的,比例规则表包括多个比例规则,比例规则包括比例编号、版本代号和交易流量比例;
例如,根据比例编号的优先级顺序依次判断第二交易是否满足比例规则表中的流量切分规则的方法可以包括:
首先,将当前比例规则指定的交易流量比例映射到一个左闭右开区间上;区间左端点为前一个比例规则映射出的区间的右端点,区间右端点通过区间左端点的数值加上规则设定的比例范围计算得到;其中,对于第一个比例规则映射出的区间,左端点值设置为0,而且所有区间叠加的区间范围为[0,1);
接着,将签署交易的区块链账号的账号地址映射到[0,1)区间上,如果账号地址的映射值包含在某一比例规则对应的映射分区间内,则查找到与该映射分区间对应的版本代号,根据版本代号于合约代码表中调用对应的合约代码执行第二交易,以对第二交易的合约地址中的合约状态数据进行读写;如果遍历完比例规则表后依然没找到对应的映射分区间,调用默认版本代号对应的合约代码执行第二交易,以对第二交易的合约地址中的合约状态数据进行读写。
进一步地,作为优选的实施方式二,按照预设转换条件将第一区间划分为若干映射分区间和一个默认分区间时,步骤S22之后还包括:
步骤S23,将比例规则表中的每个交易流量比例映射到第一区间,并按照预设转换条件将第一区间划分为若干映射分区间;
步骤S24,将发送第二交易的区块链账号映射到第一区间;
当第二交易的区块链账号映射到所述第一区间的映射值在映射分区间内时,于所述比例规则表中查找到与所述映射分区间对应的所述交易流量比例相关联的所述版本代号,根据所述版本代号于所述合约代码表中获取对应的所述合约代码执行所述第二交易;
当第二交易的区块链账号映射到所述第一区间的映射值在所述默认分区间内时,获取所述默认版本代号对应的所述合约代码执行所述第二交易。
进一步地,在上述实施方式二中,所述第一区间包括若干映射分区间和一个默认分区间,所述默认分区间是所述第一区间的子集,映射分区间与默认分区间之间的交集为空;例如,当设置的第一区间的区间范围是[0,1)时,映射分区间可以为[0,0.5),[0.5,0.8),[0.8,0.9),默认分区间可以为[0.9,1),其中[0,0.5),[0.5,0.8),[0.8,0.9),[0.9,1)之间没有重叠的区域。
具体的,在上述实施方式二中,作为优选的实施方式,如下,比例规则表中包含三个比例规则,依次是:
第一个比例规则,其比例编号为1,版本代号为a,交易流量比例为50%;
第二个比例规则,其比例编号为2,版本代号为b,交易流量比例为30%;
第三个比例规则,其比例编号为3,版本代号为c,交易流量比例为10%。
其中,默认版本代号为d。
设置的第一区间的区间范围是[0,1)时,对于第一个比例规则映射出的区间,左端点值设置为0,区间右端点通过区间左端点的数值加上该比例规则对应的流量比例计算得到;即映射分区间可以为[0,0.5),[0.5,0.8),[0.8,0.9),此时的默认分区间为[0.9,1);
那么比例规则映射到[0,1)区间上之后,按照预设转换条件根据交易流量比例将第一区间划分为三个映射分区间,上述第一个比例规则对应映射分区间[0,0.5),上述第二个比例规则对应映射分区间[0.5,0.8)、上述第三个比例规则对应映射分区间[0.8,0.9);由于上述所有流量比例加起来不满足100%,那么第一区间会存在一个不属于任何一个映射分区间的默认分区间[0.9,1)。当签署交易的区块链账号映射到[0,1)区间上的映射值在映射分区间[0,0.5)内时,则其满足第一个比例规则,交易执行所使用的合约版本代号为a;当签署交易的区块链账号的映射值在映射分区间[0.5,0.8)内时,则其满足第二个比例规则,交易执行所使用的合约版本代号为b;当签署交易的区块链账号的映射值在映射分区间[0.8,0.9)内时,则其满足第三个比例规则,交易执行所使用的合约版本代号为c;当映射值在默认分区间[0.9,1)内时,则其不满足任一比例规则,交易执行所使用的合约版本代号为d。
进一步地,作为优选的实施方式三,第一区间由一个所述默认分区间组成时,获取所述默认版本代号对应的所述合约代码执行所述第二交易。
例如,当比例规则表为空时,表示第一区间为一个所述默认分区间,即此时的所有智能合约均调用合约代码表中与默认合约代号对应的合约代码执行。
在上述实施例中,用户需要调用智能合约时,用户以区块链交易的形式输入合约地址、调用参数。区块链交易执行器检查第二交易的合法性,如果检查不通过,则认为是非法交易,退出执行;如果检查通过,则找到输入的合约地址对应账本空间中存储的智能合约流量切分规则模式,则从比例规则表中按照比例编号从小到大的顺序逐条读出比例规则,判断是否满足比例规则检查。如果满足则从合约代码表中找到比例规则规定的版本代号对应合约代码,执行交易;如果不满足,则继续读取下一比例规则,继续执行检查;遍历完所有比例规则后,即交易不符合所有合约维护人员定义的比例规则,那么从合约代码表中,找到默认版本代号对应的合约代码执行第二交易。
进一步的,在上述实施例中,还包括:步骤S3,接收到根据合约代码、合约地址和版本代号创建用于设置合约代码表的第三交易后,将第三交易中的合约代码和版本代号存储到第三交易中的合约地址对应的存储空间的合约代码表中;
在上述实施例中,上述步骤S3是设置合约代码表的过程;
具体的,根据输入的合约代码、合约地址和版本代号创建第三交易,其中第三交易中输入的合约地址对应的存储空间中存储有合约代码表;
因此可以根据输入的合约代码和版本代号对第三交易中的合约地址对应的存储空间中存储有合约代码表进行更新设置。
进一步地,在上述实施例中,步骤S3包括以下步骤:
步骤S31,以区块链交易的形式输入合约代码、合约地址和版本代号,以根据合约代码、合约地址和版本代号形成第三交易;
步骤S32,检测第三交易是否合法;
若否,确定第三交易为非法交易,退出执行;
若是,执行步骤S33;
步骤S33,以版本代号为键,以合约代码为值,将键值对存放到第三交易中的合约地址中的合约代码表中。
在上述实施例中,当合约维护人员需要维护合约代码时,
首先,合约维护人员以区块链交易的形式输入合约代码、合约地址和版本代号,以形成第三交易;
接着,区块链交易执行器检查交易合法性与权限,如果检查不通过,则认为是非法交易,退出执行;如果检查通过,则以输入的版本代号为键,以输入的合约代码为值,将键值对第三交易中的合约地址中的合约代码表中,从而完成对合约代码表的更新设置。
进一步的,在上述实施例中,还包括:步骤S4,输入合约地址和比例规则表,并根据输入的合约地址和输入的比例规则表创建用于设置比例规则表的第四交易,检测第四交易中的输入的比例规则表中的所有交易流量比例的总和是否超过一比例阈值范围;若否,将输入的比例规则表更新到第四交易中的合约地址对应的存储空间中的比例规则表中;
在上述实施例中,步骤S4是设置比例规则表的过程;
具体的,根据输入的合约地址和输入的比例规则表创建第四交易,其中,第四交易中的合约地址对应的存储空间中存储有初始化时已经存储好的比例规则表;
因此在上述步骤S4中只需要判断输入的比例规则表中的所有交易流量比例的总和是否超过比例阈值范围,并在输入的比例规则表中的所有交易流量比例的总和未超过比例阈值范围时,将输入的比例规则表更新到第四交易中的合约地址中的比例规则表中,从而完成对比例规则表的更新设置。
进一步地,在上述实施例中,步骤S4具体包括以下步骤:
步骤S41,以区块链交易的形式输入合约地址和比例规则表,以根据输入的合约地址和输入的比例规则表形成第四交易;
需要说明的是,此时输入的合约地址和输入的比例规则表分别为新的合约地址的新的比例规则表;
步骤S42,检测第四交易是否合法;
若否,确定第四交易为非法交易,退出执行;
若是,执行步骤S43;
步骤S43,判断第四交易的输入的比例规则表中的所有交易流量比例的总和是否超过比例阈值范围;
若是,确定第四交易为非法交易,退出执行;
若否,执行步骤S44;
步骤S44,将输入的比例规则表更新到比例规则表中。
在上述实施例中,当合约维护人员需要按照比例进行交易流量切分时:
上述比例阈值范围可以由合约维护人员自设定,此处可以设置为100%;
首先,合约维护人员以区块链交易的形式输入合约地址以及比例规则表。输入的比例规则表包括多个比例规则,比例规则包括比例编号、交易流量比例和版本代号的三种属性。
其中,比例编号用于标识比例规则的优先级,例如,比例编号越小,应用规则的优先级越高;
交易流量比例指的是所有区块链账号中有多少比例的账号需要应用该规则;
版本代号标识符合该比例规则的账号使用该版本代号对应的合约代码执行智能合约调用。
接着,区块链交易执行器检查第四交易的合法性,如果无法通过检查,则认为是非法交易,退出执行;如果通过检查,则继续检查流量比例表的内容,验证交易流量比例的总和是否大于100%。若交易流量比例总和超过100%,则认为交易为非法交易,退出执行;若交易流量比例总和小于或等于100%,最后将输入的比例规则表中的该条比例规则更新到第四交易的合约地址对应的存储空间中的比例规则表中。
在上述实施例中,于步骤S2中,用户无法指定自己使用的合约代码,不管用户调用智能合约时使用的是否为合约维护人员指定的合约代码,只要用户输入的合约地址相同,就会对该合约地址所指向的同一份合约状态数据进行读写操作。在合约维护人员没有修改合约代码表和比例规则表的情况下,使用特定区块链账号的用户将始终调用默认版本代号对应的合约代码。
在上述实施例中,于步骤S2、步骤S3和步骤S4中,合约维护人员需要输入的合约地址为步骤S1中由区块链交易执行器分配的合约地址,用户调用智能合约同样输入该合约地址。
需要说明的是,步骤S1在步骤S2、步骤S3和步骤S4之前执行,但是步骤S2、步骤S3和步骤S4之间没有固定的执行顺序。
还包括一种智能合约版本的管理设备,如图3所示,包括存储器2和处理器1,存储器2上保存有可在处理器1上运行的基于区块链的智能合约管理程序3,智能合约管理程序3被处理器1执行时实现上述任一项的智能合约版本的管理方法。
本发明智能合约版本的管理设备的具体实施方式与上述智能合约版本的管理方法各实施例基本相同,在此不再赘述。
还包括一种计算机可读存储介质,其中,计算机可读存储介质上保存有可在处理器上运行的基于区块链的智能合约调用程序,智能合约调用程序被处理器执行时实现上述任一项的智能合约版本的管理方法。
本发明计算机可读存储介质的具体实施方式与上述智能合约版本的管理方法各实施例基本相同,在此不再赘述。
以上仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (11)
1.一种智能合约版本的管理方法,其特征在于,包括:
接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据所述第一交易生成所述智能合约的合约地址,并于所述合约地址对应的存储空间中存储合约代码表和比例规则表;
其中,所述合约代码表包括呈映射关系的所述合约代码与版本代号;
所述比例规则表包括呈映射关系的比例编号、所述版本代号和交易流量比例;
接收根据所述合约地址和调用参数创建的第二交易,根据所述合约地址获取对应的比例规则表;
根据所述比例规则表确定所述版本代号,以按照所述版本代号对应的所述合约代码执行所述第二交易。
2.如权利要求1所述的智能合约版本的管理方法,其特征在于,所述接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据所述第一交易生成所述智能合约的合约地址,并于所述合约地址对应的存储空间中存储合约代码表和比例规则表,具体包括以下步骤:
以区块链交易的形式输入所述合约代码和所述部署参数,以创建所述第一交易;
检测所述第一交易是否合法;
于所述第一交易不合法时,确定所述第一交易为非法交易,退出执行;
于所述第一交易合法时,根据所述第一交易生成所述智能合约的所述合约地址,并于所述合约地址对应的存储空间中存储所述合约代码表和所述比例规则表。
3.如权利要求1所述的智能合约版本的管理方法,其特征在于,所述接收根据合约代码和部署参数创建的用于部署智能合约的第一交易,根据所述第一交易生成所述智能合约的合约地址,并于所述合约地址对应的存储空间中存储合约代码表和比例规则表,还包括:
给所述合约代码设置默认版本代号;
将所述默认版本代号和所述合约代码填入所述合约代码表。
4.如权利要求3所述的智能合约版本的管理方法,其特征在于,所述接收根据所述合约地址和调用参数创建的第二交易,根据所述合约地址获取对应的比例规则表;包括以下步骤:
以区块链交易的形式输入所述合约地址和所述调用参数,以根据所述合约地址和所述调用参数创建所述第二交易;
检测所述第二交易是否合法;
于所述第二交易不合法时,确定所述第二交易为非法交易,退出执行;
于所述第二交易合法时,获取所述第二交易中的所述合约地址对应的存储空间中的所述比例规则表。
5.根据权利要求4所述的智能合约版本的管理方法,其特征在于,所述根据所述比例规则表确定所述版本代号以执行所述第二交易包括:
将所述比例规则表中的每个所述交易流量比例映射到第一区间,并按照预设转换条件将所述第一区间划分为若干映射分区间和/或一个默认分区间;
将发送第二交易的区块链账号映射到所述第一区间;
当第二交易的区块链账号映射到所述第一区间的映射值在所述映射分区间内时,于所述比例规则表中查找到与所述映射分区间对应的所述交易流量比例相关联的所述版本代号,根据所述版本代号于所述合约代码表中获取对应的所述合约代码执行所述第二交易;和/或
当第二交易的区块链账号映射到所述第一区间的映射值在所述默认分区间内时,获取所述默认版本代号对应的所述合约代码执行所述第二交易。
6.如权利要求5所述的智能合约版本的管理方法,其特征在于,所述按照预设转换条件将第一区间划分为若干映射分区间,具体包括以下步骤:
根据所述比例编号的优先级顺序依次选择与所述比例编号相关联的所述交易流量比例;
将所述交易流量比例根据所述预设转换条件转换为对应的所述映射分区间。
7.如权利要求5所述的智能合约版本的管理方法,其特征在于,所述映射分区间是所述第一区间的子集,任意两个所述映射分区间之间的交集为空;或
所述第一区间还包括一个默认分区间,所述默认分区间是所述第一区间的子集,所述映射分区间与所述默认分区间之间的交集为空;或
所述第一区间由一个所述默认分区间组成。
8.如权利要求1所述的智能合约版本的管理方法,其特征在于,还包括:
接收根据所述合约代码、所述合约地址和所述版本代号创建的用于设置所述合约代码表的第三交易,将所述第三交易中的所述合约代码和所述版本代号存储到所述第三交易中的所述合约地址对应的存储空间的所述合约代码表中。
9.如权利要求1所述的智能合约版本的管理方法,其特征在于,还包括:
输入合约地址和比例规则表,并根据输入的合约地址和输入的比例规则表创建用于设置所述比例规则表的第四交易,检测所述第四交易中的输入的比例规则表中的所有所述交易流量比例的总和是否超过一比例阈值范围;若否,将所述输入的比例规则表更新到所述第四交易中的所述合约地址对应的存储空间中的所述比例规则表中。
10.一种智能合约版本的管理设备,其特征在于,包括存储器和处理器,所述存储器上保存有可在所述处理器上运行的基于区块链的智能合约管理程序,所述智能合约管理程序被所述处理器执行时实现如权利要求1至9中任一项所述的智能合约版本的管理方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上保存有可在处理器上运行的基于区块链的智能合约调用程序,所述智能合约调用程序被所述处理器执行时实现如权利要求1至9中任一项所述的智能合约版本的管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010983586.3A CN111932215B (zh) | 2020-09-18 | 2020-09-18 | 一种智能合约版本的管理方法、设备及可读存储介质 |
PCT/CN2020/141104 WO2022057154A1 (zh) | 2020-09-18 | 2020-12-29 | 一种智能合约版本的管理方法、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010983586.3A CN111932215B (zh) | 2020-09-18 | 2020-09-18 | 一种智能合约版本的管理方法、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111932215A true CN111932215A (zh) | 2020-11-13 |
CN111932215B CN111932215B (zh) | 2023-09-29 |
Family
ID=73334584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010983586.3A Active CN111932215B (zh) | 2020-09-18 | 2020-09-18 | 一种智能合约版本的管理方法、设备及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111932215B (zh) |
WO (1) | WO2022057154A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590213A (zh) * | 2021-06-24 | 2021-11-02 | 深圳开源互联网安全技术有限公司 | 组件维护方法、电子设备及存储介质 |
WO2022057154A1 (zh) * | 2020-09-18 | 2022-03-24 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
CN114745327A (zh) * | 2022-06-10 | 2022-07-12 | 鹏城实验室 | 业务数据转发方法、装置、设备及存储介质 |
CN116664129A (zh) * | 2023-07-28 | 2023-08-29 | 杭州趣链科技有限公司 | 区块链账本数据迭代方法、电子设备及可读存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116126392B (zh) * | 2023-04-18 | 2023-07-25 | 南京邮电大学 | 一种基于区块链和ipfs的代码版本管理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
CN109977638A (zh) * | 2019-02-22 | 2019-07-05 | 亦非云互联网技术(上海)有限公司 | 基于以太坊的智能合约更新方法及系统、存储介质及终端 |
CN110544097A (zh) * | 2019-09-06 | 2019-12-06 | 杭州复杂美科技有限公司 | 智能合约版本控制、调用和升级方法、设备及存储介质 |
CN110580411A (zh) * | 2019-11-08 | 2019-12-17 | 支付宝(杭州)信息技术有限公司 | 基于智能合约的权限查询配置方法及装置 |
CN110933163A (zh) * | 2019-11-27 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 区块链合约部署方法、装置、设备以及存储介质 |
US20200193541A1 (en) * | 2018-12-18 | 2020-06-18 | Crosschain Group LLC | Computer system enabling flexible creation of and participation in blockchain-based smart contracts for transactions in tokenized digital assets |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109978477B (zh) * | 2017-12-27 | 2022-12-23 | 现代财富控股有限公司 | 基于区块链的智能合约版本控管系统及其方法 |
US10896195B2 (en) * | 2018-07-29 | 2021-01-19 | International Business Machines Corporation | Automatic generation of smart contracts |
CN109885612B (zh) * | 2018-12-26 | 2021-04-20 | 联动优势科技有限公司 | 区块链智能合约的同步生效方法及装置 |
CN111932215B (zh) * | 2020-09-18 | 2023-09-29 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
-
2020
- 2020-09-18 CN CN202010983586.3A patent/CN111932215B/zh active Active
- 2020-12-29 WO PCT/CN2020/141104 patent/WO2022057154A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
US20200193541A1 (en) * | 2018-12-18 | 2020-06-18 | Crosschain Group LLC | Computer system enabling flexible creation of and participation in blockchain-based smart contracts for transactions in tokenized digital assets |
CN109977638A (zh) * | 2019-02-22 | 2019-07-05 | 亦非云互联网技术(上海)有限公司 | 基于以太坊的智能合约更新方法及系统、存储介质及终端 |
CN110544097A (zh) * | 2019-09-06 | 2019-12-06 | 杭州复杂美科技有限公司 | 智能合约版本控制、调用和升级方法、设备及存储介质 |
CN110580411A (zh) * | 2019-11-08 | 2019-12-17 | 支付宝(杭州)信息技术有限公司 | 基于智能合约的权限查询配置方法及装置 |
CN110933163A (zh) * | 2019-11-27 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 区块链合约部署方法、装置、设备以及存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022057154A1 (zh) * | 2020-09-18 | 2022-03-24 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
CN113590213A (zh) * | 2021-06-24 | 2021-11-02 | 深圳开源互联网安全技术有限公司 | 组件维护方法、电子设备及存储介质 |
CN113590213B (zh) * | 2021-06-24 | 2023-04-25 | 深圳开源互联网安全技术有限公司 | 组件维护方法、电子设备及存储介质 |
CN114745327A (zh) * | 2022-06-10 | 2022-07-12 | 鹏城实验室 | 业务数据转发方法、装置、设备及存储介质 |
CN116664129A (zh) * | 2023-07-28 | 2023-08-29 | 杭州趣链科技有限公司 | 区块链账本数据迭代方法、电子设备及可读存储介质 |
CN116664129B (zh) * | 2023-07-28 | 2023-11-10 | 武汉趣链数字科技有限公司 | 区块链账本数据迭代方法、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022057154A1 (zh) | 2022-03-24 |
CN111932215B (zh) | 2023-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111932215A (zh) | 一种智能合约版本的管理方法、设备及可读存储介质 | |
CN111932260B (zh) | 一种智能合约版本的管理方法、设备及可读存储介质 | |
CN108595157B (zh) | 区块链数据的处理方法、装置、设备和存储介质 | |
US10992459B2 (en) | Updating a state Merkle tree | |
US7240247B2 (en) | Providing a chain of tokenized error and state information for a call stack | |
CN106548091A (zh) | 一种数据存证、验证的方法及装置 | |
CN110473030B (zh) | 基于区块链的电子票据号码申领方法及装置、电子设备 | |
CN110599177A (zh) | 一种交易验证方法及相关设备 | |
CN113868010B (zh) | 应用于业务系统的异常数据处理方法及系统 | |
CN111552570B (zh) | 物联网数据处理资源的自适应分配方法及云计算服务器 | |
CN112560114B (zh) | 调用智能合约的方法及装置 | |
CN110297721B (zh) | 一种基于java的智能合约的跨合约调用方法 | |
CN109446211A (zh) | 一种一致性校验方法及装置 | |
CN113506035A (zh) | 一种审批流程的确定方法、装置和设备 | |
CN1976353B (zh) | 恢复和调试失败的网络可访问服务构建的方法和系统 | |
CN113010255A (zh) | 基于捆绑会话组的交互方法、装置和计算机设备 | |
CN109165102B (zh) | 一种基于智能合约的约束求解器分布式调度方法 | |
CN110162274A (zh) | 一种基于区块链的数据处理方法、装置及设备 | |
CN110598419A (zh) | 一种区块链客户端漏洞挖掘方法、装置、设备及存储介质 | |
CN109886030B (zh) | 一种面向服务组合的隐私最小暴露方法 | |
CN111400399A (zh) | 区块链系统的账本同步方法、装置及硬件设备 | |
Lim et al. | Evolving relationships between social networks and stakeholder involvement in software projects | |
CN111901149B (zh) | 自动生成和检测Fabric网络配置文件的方法及系统 | |
CN112288575B (zh) | 基于区块链的交易管理方法及装置 | |
CN111831678A (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 |