CN111177777B - 智能合约部署方法及电子设备 - Google Patents
智能合约部署方法及电子设备 Download PDFInfo
- Publication number
- CN111177777B CN111177777B CN201911328046.5A CN201911328046A CN111177777B CN 111177777 B CN111177777 B CN 111177777B CN 201911328046 A CN201911328046 A CN 201911328046A CN 111177777 B CN111177777 B CN 111177777B
- Authority
- CN
- China
- Prior art keywords
- contract
- layer contract
- logic control
- control layer
- address
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供一种智能合约部署方法及电子设备,方法包括:将智能合约划分为一个或多个数据层合约、一个或多个逻辑控制层合约,以及一个或多个权限接口层合约,并发布所述数据层合约;发布所述逻辑控制层合约,并将所述逻辑控制层合约和所述数据层合约进行绑定;发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定。本发明实施例实现在保证宏观智能合约可信度的情况下,根据应用需求对智能合约进行灵活部署和更新。
Description
技术领域
本发明属于区块链技术领域,尤其涉及一种智能合约部署方法及电子设备。
背景技术
智能合约的理念在很早就被提出,但由于缺少可信的执行环境,智能合约并没有被应用到实际产业中。直到区块链的出现,智能合约越来越多的被应用到各行各业。
智能合约程序不只是一个可以自动执行的计算机程序,由于基于区块链平台智能合约同时拥有能够保证合约的规则和内容不会被篡改的特性。正是这种特性,成为智能合约被广泛应用的关键,智能合约的应用代表一个绝对可信的应用。但是不会被篡改的特性有利也有弊。在一些稍复杂的应用中,应用的需求不可能一层不变,应用也不可能没有缺陷能够完美运行。因此,不会被篡改的特性会让应用受到很大的局限性。
如果要强行更新智能合约,因为智能合约不能篡改,所以只能使用新智能合约替换旧智能合约。但是对于使用智能合约的人而言,因为这种方式的更新,旧智能合约被废弃,那么旧智能合约上的数据也就全部失效。这就代表着智能合约没法保证用户数据的安全,智能合约就失去了可信度,把应用部署在智能合约上也就没有意义。
发明内容
为克服上述现有的智能合约部署方法智能合约不能篡改,应用受到很大局限的问题或者至少部分地解决上述问题,本发明实施例提供一种智能合约部署方法及电子设备。
根据本发明实施例的第一方面,提供一种智能合约部署方法,包括:
将智能合约划分为一个或多个数据层合约、一个或多个逻辑控制层合约,以及一个或多个权限接口层合约,并发布所述数据层合约;
发布所述逻辑控制层合约,并将所述逻辑控制层合约和所述数据层合约进行绑定;
发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定;
其中,所述数据层合约用于存放数据和提供所述数据的读写接口;所述逻辑控制层合约用于实现应用的业务逻辑;所述权限接口层合约用于提供用户访问的接口和设置用户访问的权限。
具体地,将所述逻辑控制层合约和所述数据层合约进行绑定的步骤包括:
为每个所述数据层合约申明limit函数和预先确定的对接合约地址;其中,所述limit函数用于限制只让所述对接合约地址对应的逻辑控制层合约访问所述数据层合约;
对于任一所述逻辑控制层合约,为该逻辑控制层合约设定待绑定的数据层合约的地址,并根据所述待绑定的数据层合约的地址获取所述待绑定的数据层合约;
判断该逻辑控制层合约的地址在所述待绑定的数据层合约的对接合约地址中是否存在;
若不存在,则将该逻辑控制层合约的地址作为所述待绑定的数据层合约的对接合约地址写入所述待绑定的数据层合约中。
具体地,将所述权限接口层合约和所述逻辑控制层合约进行绑定的步骤包括:
为每个所述逻辑控制层合约申明limit函数和预先确定的对接合约地址;其中,所述limit函数用于限制只让所述对接合约地址对应的权限接口层合约访问所述逻辑控制层合约;
对于任一所述权限接口层合约,为该权限接口层合约设定待绑定的逻辑控制层合约的地址,并根据所述待绑定的逻辑控制层合约的地址获取所述待绑定的逻辑控制层合约;
判断该权限接口层合约的地址在所述待绑定的逻辑控制层合约的对接合约地址中是否存在;
若不存在,则将该权限接口层合约的地址作为所述待绑定的逻辑控制层合约的对接合约地址写入所述待绑定的逻辑控制层合约中。
具体地,发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定的步骤之后还包括:
发布新的逻辑控制层合约,获取所述新的逻辑控制层合约对应的原来的逻辑控制层合约;
取消所述数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;
将与所述原来的逻辑控制层合约取消绑定的数据层合约和权限接口层合约与所述新的逻辑控制层合约进行绑定。
具体地,取消所述数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;将与所述原来的逻辑控制层合约取消绑定的数据层合约和权限接口层合约与所述新的逻辑控制层合约进行绑定的步骤包括:
为所述新的逻辑控制层合约设定待绑定的数据层合约的地址为与所述原来的逻辑控制层合约绑定的数据层合约的地址;
在与所述原来的逻辑控制层合约绑定的数据层合约中写入所述新的逻辑控制层合约的地址,并删除所述原来的逻辑控制层合约的地址;
将与所述原来的逻辑控制层合约绑定的权限接口层合约的地址写入所述新的逻辑控制层合约中;
为与所述原来的逻辑控制层合约绑定的权限接口层合约设定待绑定的逻辑控制层合约的地址为所述新的逻辑控制层合约的地址。
具体地,发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定的步骤之后还包括:
发布新的数据层合约,获取所述新的数据层合约对应的原来的数据层合约;
发布所述新的数据层合约对应的新的逻辑控制层合约;
若所述新的数据层合约和所述原来的数据层合约有共同的逻辑,则获取与所述原来的数据层合约绑定的原来的逻辑控制层合约,并取消所述原来的数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;
将所述新的逻辑控制层合约与所述新的数据层合约、所述原来的数据层合约和取消绑定的所述权限接口层进行绑定;
若所述新的数据层合约和所述原来的数据层合约没有共同的逻辑,则将所述新的逻辑控制层合约与所述新的数据层合约和与所述原来的逻辑控制层合约绑定的权限接口层合约进行绑定。
具体地,若所述新的数据层合约和所述原来的数据层合约有共同的逻辑,则获取与所述原来的数据层合约绑定的原来的逻辑控制层合约,并取消所述原来的数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;将所述新的逻辑控制层合约与所述新的数据层合约、所述原来的数据层合约和取消绑定的所述权限接口层进行绑定的步骤包括:
若所述新的数据层合约和所述原来的数据层合约有共同的逻辑,则为所述新的逻辑控制层合约设定待绑定的数据层合约的地址为所述新的数据层合约的地址和所述原来的数据层合约的地址;
在所述原来的数据层合约中写入所述新的逻辑控制层合约的地址,并删除所述原来的逻辑控制层合约的地址;在所述新的数据层合约中写入所述新的逻辑控制层合约的地址;
将与所述原来的逻辑控制层合约绑定的权限接口层合约的地址写入所述新的逻辑控制层合约中,并为所述权限接口层合约设定待绑定的逻辑控制层合约为所述新的逻辑控制层合约。
具体地,若所述新的数据层合约和所述原来的数据层合约没有共同的逻辑,则将所述新的逻辑控制层合约与所述新的数据层合约和与所述原来的逻辑控制层合约绑定的权限接口层合约进行绑定的步骤包括:
若所述新的数据层合约和所述原来的数据层合约没有共同的逻辑,则为所述新的逻辑控制层合约设定待绑定的数据层合约的地址为所述新的数据层合约的地址;
在所述新的数据层合约中写入所述新的逻辑控制层合约的地址;
将与所述原来的逻辑控制层合约绑定的权限接口层合约的地址写入到所述新的逻辑控制层合约中,并为所述权限接口层合约设定待绑定的逻辑控制层合约为所述新的逻辑控制层合约和所述原来的逻辑控制层合约。
具体地,为所述权限接口层合约设定待绑定的逻辑控制层合约为所述新的逻辑控制层合约和所述原来的逻辑控制层合约的步骤之后还包括:
发布新的权限接口层合约,在所述新的逻辑控制层合约中添加所述新的权限接口层合约的地址;
为所述新的权限接口层合约设定待绑定的逻辑控制层合约的地址为所述新的逻辑控制层合约的地址。
根据本发明实施例的第二个方面,还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器调用所述程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的智能合约部署方法。
本发明实施例提供一种智能合约部署方法及电子设备,该方法通过将智能合约划分为三层结构,即数据层合约、逻辑控制层合约和权限接口层合约,将三层结构全部组合在一起作为一个宏观的智能合约,在需求发生变更时,只需要发布新的某层合约,然后通过更新三层结构之间的绑定关系即可,对用户来说宏观的智能合约没有发生变化,从而实现在保证宏观智能合约可信度的情况下,根据应用需求对智能合约进行灵活部署和更新。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的智能合约部署方法整体流程示意图;
图2为本发明实施例提供的智能合约部署方法中最简单的宏观智能合约的关系示意图;
图3为本发明实施例提供的智能合约部署方法中宏观智能合约的发布流程示意图;
图4为本发明实施例提供的智能合约部署方法中逻辑控制层合约更新的关系示意图;
图5为本发明实施例提供的智能合约部署方法中逻辑控制层合约更新的流程示意图;
图6为本发明实施例提供的智能合约部署方法中新的数据层合约和原来的数据层合约有共同逻辑的情况下数据层合约更新的关系示意图;
图7为本发明实施例提供的智能合约部署方法中新的数据层合约和原来的数据层合约没有共同逻辑的情况下数据层合约更新的关系示意图;
图8为本发明实施例提供的智能合约部署方法中数据层合约更新的流程示意图;
图9为本发明实施例提供的智能合约部署方法中权限接口层合约更新的关系示意图;
图10为本发明实施例提供的智能合约部署方法中权限接口层合约更新的流程示意图
图11为本发明实施例提供的电子设备整体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的一个实施例中提供一种智能合约部署方法,图1为本发明实施例提供的智能合约部署方法整体流程示意图,该方法包括:S101,将智能合约划分为一个或多个数据层合约、一个或多个逻辑控制层合约,以及一个或多个权限接口层合约,并发布所述数据层合约;
其中,每一个应用以一个或多个智能合约的方式来部署。将智能合约分为三层结构,分别为数据层合约、逻辑控制层合约和权限接口层合约。数据层合约用于存放数据和提供数据的读写接口。逻辑控制层合约用于实现应用的业务逻辑,如各种功能实现和流程逻辑等。权限接口层合约用于对外提供用户访问的接口和设置用户访问的权限。
在本实施例中,为了实现智能合约的灵活部署,这三层结构必不可少。这三层结构是基于智能合约不能篡改特性下的一种化微观为宏观的设计。既能替换某层合约来实现智能合约的更新,对用户来说智能合约的功能和数据没有发生变化,又保证了合约的可信度。微观上来讲,单个的某层合约是不能篡改的,因此是可信的。而本实施例中智能合约的三层结构全部组合在一起,可以当作一个宏观的智能合约。宏观的智能合约相当于是三层结构中的每一层节约的联合声明。既然单个的某层节约是可信的,那么这个宏观的智能合约自然也是可信的。
本实施例中,对于一个应用,要部署在智能合约上时,发布一个宏观的智能合约。具体地,最简单的组合就是发布一个数据层合约、一个逻辑控制层合约和一个权限接口层合约。但本实施例中不限于发布的数据层合约、逻辑控制层合约和权限接口层合约的数量。
S102,发布所述逻辑控制层合约,并将所述逻辑控制层合约和所述数据层合约进行绑定;
S103,发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定;
本实施例中先发布数据层合约,然后发布逻辑控制层合约,最后发布权限接口层合约。如图2所示,将逻辑控制层合约和数据层合约进行绑定,将权限接口层合约和逻辑控制层合约进行绑定。逻辑控制层合约位于数据层合约和权限接口层合约的中间层。宏观智能合约的发布流程如图3所示。
当应用的智能合约被访问时,先访问权限接口层合约,权限接口层合约收到访问请求,会去访问逻辑控制层合约,逻辑控制层合约如果在流程中有需要用到数据层合约的数据时,就去读写数据层合约。
本实施例通过将智能合约划分为三层结构,即数据层合约、逻辑控制层合约和权限接口层合约,将三层结构全部组合在一起作为一个宏观的智能合约,在需求发生变更时,只需要发布新的某层合约,然后通过更新三层结构之间的绑定关系即可,对用户来说宏观的智能合约没有发生变化,从而实现在保证宏观智能合约可信度的情况下,根据应用需求对智能合约进行灵活部署和更新。
在上述实施例的基础上,本实施例中将所述逻辑控制层合约和所述数据层合约进行绑定的步骤包括:为每个所述数据层合约申明limit函数和预先确定的对接合约地址;其中,所述limit函数用于限制只让所述对接合约地址对应的逻辑控制层合约访问所述数据层合约;对于任一所述逻辑控制层合约,为该逻辑控制层合约设定待绑定的数据层合约的地址,并根据所述待绑定的数据层合约的地址获取所述待绑定的数据层合约;判断该逻辑控制层合约的地址在所述待绑定的数据层合约的对接合约地址中是否存在;若不存在,则将该逻辑控制层合约的地址作为所述待绑定的数据层合约的对接合约地址写入所述待绑定的数据层合约中。
具体地,首先发布数据层合约,为每个数据层合约申明一个limit函数和预先确定的一个或多个对接合约地址。其中,预先确定的对接合约地址为预先与数据层合约进行绑定的逻辑控制层合约的地址。limit函数用于限制只有地址为对接合约地址的逻辑控制层合约才能对该数据层合约进行访问。然后发布逻辑控制层合约,为每个逻辑控制层合约指定待绑定的数据层合约的地址。如果逻辑控制层合约的地址在其待绑定的数据层合约的对接合约地址中不存在,说明逻辑控制层合约还没有与待绑定的数据层合约进行绑定,将逻辑控制层合约的地址作为待绑定的数据层合约新的对接合约地址写入待绑定的数据层合约中,完成逻辑控制层合约和待绑定的数据层合约的绑定。
在上述实施例的基础上,本实施例中将所述权限接口层合约和所述逻辑控制层合约进行绑定的步骤包括:为每个所述逻辑控制层合约申明limit函数和预先确定的对接合约地址;其中,所述limit函数用于限制只让所述对接合约地址对应的权限接口层合约访问所述逻辑控制层合约;对于任一所述权限接口层合约,为该权限接口层合约设定待绑定的逻辑控制层合约的地址,并根据所述待绑定的逻辑控制层合约的地址获取所述待绑定的逻辑控制层合约;判断该权限接口层合约的地址在所述待绑定的逻辑控制层合约的对接合约地址中是否存在;若不存在,则将该权限接口层合约的地址作为所述待绑定的逻辑控制层合约的对接合约地址写入所述待绑定的逻辑控制层合约中。
具体地,为每个逻辑控制层合约也申明一个limit函数和预先确定的一个或多个对接合约地址。其中,预先确定的对接合约地址为预先与逻辑控制层合约进行绑定的权限接口层合约的地址。limit函数用于限制只有地址为对接合约地址的权限接口层合约才能对该逻辑控制层合约进行访问。最后发布权限接口层合约,为每个权限接口层合约指定待绑定的逻辑控制层合约的地址。如果权限接口层合约的地址在待绑定的逻辑控制层合约的对接合约地址中不存在,说明权限接口层合约还没有与待绑定的逻辑控制层合约进行绑定,将权限接口层合约的地址作为待绑定的逻辑控制层合约新的对接合约地址写入待绑定的逻辑控制层合约中,完成权限接口层合约和待绑定的逻辑控制层合约的绑定。
在上述各实施例的基础上,本实施例中发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定的步骤之后还包括:发布新的逻辑控制层合约,获取所述新的逻辑控制层合约对应的原来的逻辑控制层合约;取消所述数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;将与所述原来的逻辑控制层合约取消绑定的数据层合约和权限接口层合约与所述新的逻辑控制层合约进行绑定。
具体地,变更需求可能性最大的逻辑控制层合约是数据层合约和权限接口层合约的中间层。如果逻辑控制层合约需要更新,只需要将数据层合约和权限接口层合约关联到新的逻辑控制层合约即可。因为数据层合约和权限接口层合约并不需要更新,所以对用户而言,已有的数据依旧得到保证,而不需要对接新的访问接口。因为逻辑控制层合约的更新对于宏观的智能合约而言,是一个内部的逻辑更新行为,对外界而言没有变化。而且,数据层合约和权限接口层合约关联到新的逻辑控制层合约,这个操作会被记录在区块链,逻辑控制层合约的替换是一种公开的行为,从而保证了宏观的智能合约的可信度。
如图4所示,当有需求变更或逻辑缺陷时,发布一个新的逻辑控制层合约。然后,新的逻辑控制层合约取代相应的原来的逻辑控制层合约和数据层合约、权限接口层合约进行绑定。图4是在图2的宏观智能合约关系的基础上进行逻辑控制层合约的更新。
在上述实施例的基础上,如图5所示本实施例中取消所述数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;将与所述原来的逻辑控制层合约取消绑定的数据层合约和权限接口层合约与所述新的逻辑控制层合约进行绑定的步骤包括:为所述新的逻辑控制层合约设定待绑定的数据层合约的地址为与所述原来的逻辑控制层合约绑定的数据层合约的地址;在与所述原来的逻辑控制层合约绑定的数据层合约中写入所述新的逻辑控制层合约的地址,并删除所述原来的逻辑控制层合约的地址;将与所述原来的逻辑控制层合约绑定的权限接口层合约的地址写入所述新的逻辑控制层合约中;为与所述原来的逻辑控制层合约绑定的权限接口层合约设定待绑定的逻辑控制层合约的地址为所述新的逻辑控制层合约的地址。
在上述各实施例的基础上,本实施例中发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定的步骤之后还包括:发布新的数据层合约,获取所述新的数据层合约对应的原来的数据层合约;发布所述新的数据层合约对应的新的逻辑控制层合约;若所述新的数据层合约和所述原来的数据层合约有共同的逻辑,则获取与所述原来的数据层合约绑定的原来的逻辑控制层合约,并取消所述原来的数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;将所述新的逻辑控制层合约与所述新的数据层合约、所述原来的数据层合约和取消绑定的所述权限接口层进行绑定;若所述新的数据层合约和所述原来的数据层合约没有共同的逻辑,则将所述新的逻辑控制层合约与所述新的数据层合约和与所述原来的逻辑控制层合约绑定的权限接口层合约进行绑定。
具体地,数据层合约因为没有任何流程逻辑,所以通常不需要更新。但有一种情况就是应用需求的变更,需要更多的数据。这时需要改变数据层合约。但是作为保证宏观智能合约可信度的关键,数据层合约不同于逻辑控制层合约的替换方法,这里使用化整为零的方法。将数据层合约拆分为多个数据层合约。每个数据层合约代表一类数据,每个数据层合约永远不会被替换,如果需求变更,需要更多的数据,只需要增加新的数据层合约,以多个数据层合约来共同代表数据层。
当需求变更需要新的数据时,发布一个新的数据层合约。从对接逻辑层的角度而言,有两种情况。第一种情况是新的数据层合约和相应地原来的数据层合约有共同的逻辑,这时需要同时替换原来的逻辑控制层合约,新的逻辑控制层合约会同时对接多个数据层合约,从多个数据层合约读写数据完成一个流程,如图6所示。
第二种情况是新的数据层合约和原来的数据层合约没有共同的逻辑,这时不需要去替换原来的逻辑控制层合约。使用一个新的逻辑控制层合约对接新的数据层合约,如图7所示。
在上述实施例的基础上,如图8所示,本实施例中若所述新的数据层合约和所述原来的数据层合约有共同的逻辑,则获取与所述原来的数据层合约绑定的原来的逻辑控制层合约,并取消所述原来的数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;将所述新的逻辑控制层合约与所述新的数据层合约、所述原来的数据层合约和取消绑定的所述权限接口层进行绑定的步骤包括:若所述新的数据层合约和所述原来的数据层合约有共同的逻辑,则为所述新的逻辑控制层合约设定待绑定的数据层合约的地址为所述新的数据层合约的地址和所述原来的数据层合约的地址;在所述原来的数据层合约中写入所述新的逻辑控制层合约的地址,并删除所述原来的逻辑控制层合约的地址;在所述新的数据层合约中写入所述新的逻辑控制层合约的地址;将与所述原来的逻辑控制层合约绑定的权限接口层合约的地址写入所述新的逻辑控制层合约中,并为所述权限接口层合约设定待绑定的逻辑控制层合约为所述新的逻辑控制层合约。
在上述实施例的基础上,如图8所示,本实施例中若所述新的数据层合约和所述原来的数据层合约没有共同的逻辑,则将所述新的逻辑控制层合约与所述新的数据层合约和与所述原来的逻辑控制层合约绑定的权限接口层合约进行绑定的步骤包括:若所述新的数据层合约和所述原来的数据层合约没有共同的逻辑,则为所述新的逻辑控制层合约设定待绑定的数据层合约的地址为所述新的数据层合约的地址;在所述新的数据层合约中写入所述新的逻辑控制层合约的地址;将与所述原来的逻辑控制层合约绑定的权限接口层合约的地址写入到所述新的逻辑控制层合约中,并为所述权限接口层合约设定待绑定的逻辑控制层合约为所述新的逻辑控制层合约和所述原来的逻辑控制层合约。
在上述实施例的基础上,本实施例中为所述权限接口层合约设定待绑定的逻辑控制层合约为所述新的逻辑控制层合约和所述原来的逻辑控制层合约的步骤之后还包括:发布新的权限接口层合约,在所述新的逻辑控制层合约中添加所述新的权限接口层合约的地址;为所述新的权限接口层合约设定待绑定的逻辑控制层合约的地址为所述新的逻辑控制层合约的地址。
具体地,作为保证宏观智能合约可信度的另一个关键,权限接口层合约也是不会被替代的。每个权限接口层合约代表一系列合约约定的接口。这些接口是不可篡改的且不会被替代的。如果有新的需求要新增接口或者老的接口升级,会发布一个新的权限接口层合约。用户根据需求可选择的对接新的权限接口层合约,但是原来的接口层合约依旧生效,每个接口层合约对应的接口都永久有效。
当需求变更需要提供新的接口时,发布一个新的权限接口合约,新的权限接口合约根据需求去对接相对应的逻辑控制层合约。原来的权限接口层合约保持不变。另外,当需求是权限变更时,是不需要更改权限接口合约的,因为权限是权限接口合约的约定组成的一部分,通过权限接口层合约提供的接口就可以实现更改权限范围,如图9和图10所示。
图11示例了一种电子设备的实体结构示意图,如图11所示,该电子设备可以包括:处理器(processor)111、通信接口(Communications Interface)112、存储器(memory)113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信。处理器111可以调用存储器113中的逻辑指令,以执行如下方法:将智能合约划分为一个或多个数据层合约、一个或多个逻辑控制层合约,以及一个或多个权限接口层合约,并发布所述数据层合约;发布所述逻辑控制层合约,并将所述逻辑控制层合约和所述数据层合约进行绑定;发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定。
此外,上述的存储器113中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种智能合约部署方法,其特征在于,包括:
将应用的智能合约划分为一个或多个数据层合约、一个或多个逻辑控制层合约,以及一个或多个权限接口层合约,并发布所述数据层合约;
发布所述逻辑控制层合约,并将所述逻辑控制层合约和所述数据层合约进行绑定;将所述逻辑控制层合约的地址作为待绑定的数据层合约新的对接合约地址写入所述待绑定的数据层合约中,完成所述逻辑控制层合约和所述待绑定的数据层合约的绑定;
发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定;将所述权限接口层合约的地址作为待绑定的逻辑控制层合约新的对接合约地址写入待绑定的逻辑控制层合约中,完成所述权限接口层合约和待绑定的逻辑控制层合约的绑定;
其中,所述数据层合约用于存放数据和提供所述数据的读写接口;所述逻辑控制层合约用于实现应用的业务逻辑;所述权限接口层合约用于提供用户访问的接口和设置用户访问的权限。
2.根据权利要求1所述的智能合约部署方法,其特征在于,将所述逻辑控制层合约和所述数据层合约进行绑定的步骤包括:
为每个所述数据层合约申明limit函数和预先确定的对接合约地址;其中,所述limit函数用于限制只让所述对接合约地址对应的逻辑控制层合约访问所述数据层合约;
对于任一所述逻辑控制层合约,为该逻辑控制层合约设定待绑定的数据层合约的地址,并根据所述待绑定的数据层合约的地址获取所述待绑定的数据层合约;
判断该逻辑控制层合约的地址在所述待绑定的数据层合约的对接合约地址中是否存在;
若不存在,则将该逻辑控制层合约的地址作为所述待绑定的数据层合约的对接合约地址写入所述待绑定的数据层合约中。
3.根据权利要求1所述的智能合约部署方法,其特征在于,将所述权限接口层合约和所述逻辑控制层合约进行绑定的步骤包括:
为每个所述逻辑控制层合约申明limit函数和预先确定的对接合约地址;其中,所述limit函数用于限制只让所述对接合约地址对应的权限接口层合约访问所述逻辑控制层合约;
对于任一所述权限接口层合约,为该权限接口层合约设定待绑定的逻辑控制层合约的地址,并根据所述待绑定的逻辑控制层合约的地址获取所述待绑定的逻辑控制层合约;
判断该权限接口层合约的地址在所述待绑定的逻辑控制层合约的对接合约地址中是否存在;
若不存在,则将该权限接口层合约的地址作为所述待绑定的逻辑控制层合约的对接合约地址写入所述待绑定的逻辑控制层合约中。
4.根据权利要求1-3任一所述的智能合约部署方法,其特征在于,发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定的步骤之后还包括:
发布新的逻辑控制层合约,获取所述新的逻辑控制层合约对应的原来的逻辑控制层合约;
取消所述数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;
将与所述原来的逻辑控制层合约取消绑定的数据层合约和权限接口层合约与所述新的逻辑控制层合约进行绑定。
5.根据权利要求4所述的智能合约部署方法,其特征在于,取消所述数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;将与所述原来的逻辑控制层合约取消绑定的数据层合约和权限接口层合约与所述新的逻辑控制层合约进行绑定的步骤包括:
为所述新的逻辑控制层合约设定待绑定的数据层合约的地址为与所述原来的逻辑控制层合约绑定的数据层合约的地址;
在与所述原来的逻辑控制层合约绑定的数据层合约中写入所述新的逻辑控制层合约的地址,并删除所述原来的逻辑控制层合约的地址;
将与所述原来的逻辑控制层合约绑定的权限接口层合约的地址写入所述新的逻辑控制层合约中;
为与所述原来的逻辑控制层合约绑定的权限接口层合约设定待绑定的逻辑控制层合约的地址为所述新的逻辑控制层合约的地址。
6.根据权利要求1-3任一所述的智能合约部署方法,其特征在于,发布所述权限接口层合约,并将所述权限接口层合约和所述逻辑控制层合约进行绑定的步骤之后还包括:
发布新的数据层合约,获取所述新的数据层合约对应的原来的数据层合约;
发布所述新的数据层合约对应的新的逻辑控制层合约;
若所述新的数据层合约和所述原来的数据层合约有共同的逻辑,则获取与所述原来的数据层合约绑定的原来的逻辑控制层合约,并取消所述原来的数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;
将所述新的逻辑控制层合约与所述新的数据层合约、所述原来的数据层合约和取消绑定的所述权限接口层进行绑定;
若所述新的数据层合约和所述原来的数据层合约没有共同的逻辑,则将所述新的逻辑控制层合约与所述新的数据层合约和与所述原来的逻辑控制层合约绑定的权限接口层合约进行绑定。
7.根据权利要求6所述的智能合约部署方法,其特征在于,若所述新的数据层合约和所述原来的数据层合约有共同的逻辑,则获取与所述原来的数据层合约绑定的原来的逻辑控制层合约,并取消所述原来的数据层合约和权限接口层合约与所述原来的逻辑控制层合约的绑定;将所述新的逻辑控制层合约与所述新的数据层合约、所述原来的数据层合约和取消绑定的所述权限接口层进行绑定的步骤包括:
若所述新的数据层合约和所述原来的数据层合约有共同的逻辑,则为所述新的逻辑控制层合约设定待绑定的数据层合约的地址为所述新的数据层合约的地址和所述原来的数据层合约的地址;
在所述原来的数据层合约中写入所述新的逻辑控制层合约的地址,并删除所述原来的逻辑控制层合约的地址;在所述新的数据层合约中写入所述新的逻辑控制层合约的地址;
将与所述原来的逻辑控制层合约绑定的权限接口层合约的地址写入所述新的逻辑控制层合约中,并为所述权限接口层合约设定待绑定的逻辑控制层合约为所述新的逻辑控制层合约。
8.根据权利要求6所述的智能合约部署方法,其特征在于,若所述新的数据层合约和所述原来的数据层合约没有共同的逻辑,则将所述新的逻辑控制层合约与所述新的数据层合约和与所述原来的逻辑控制层合约绑定的权限接口层合约进行绑定的步骤包括:
若所述新的数据层合约和所述原来的数据层合约没有共同的逻辑,则为所述新的逻辑控制层合约设定待绑定的数据层合约的地址为所述新的数据层合约的地址;
在所述新的数据层合约中写入所述新的逻辑控制层合约的地址;
将与所述原来的逻辑控制层合约绑定的权限接口层合约的地址写入到所述新的逻辑控制层合约中,并为所述权限接口层合约设定待绑定的逻辑控制层合约为所述新的逻辑控制层合约和所述原来的逻辑控制层合约。
9.根据权利要求8所述的智能合约部署方法,其特征在于,为所述权限接口层合约设定待绑定的逻辑控制层合约为所述新的逻辑控制层合约和所述原来的逻辑控制层合约的步骤之后还包括:
发布新的权限接口层合约,在所述新的逻辑控制层合约中添加所述新的权限接口层合约的地址;
为所述新的权限接口层合约设定待绑定的逻辑控制层合约的地址为所述新的逻辑控制层合约的地址。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至9任一项所述智能合约部署方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911328046.5A CN111177777B (zh) | 2019-12-20 | 2019-12-20 | 智能合约部署方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911328046.5A CN111177777B (zh) | 2019-12-20 | 2019-12-20 | 智能合约部署方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177777A CN111177777A (zh) | 2020-05-19 |
CN111177777B true CN111177777B (zh) | 2022-08-02 |
Family
ID=70650300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911328046.5A Active CN111177777B (zh) | 2019-12-20 | 2019-12-20 | 智能合约部署方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177777B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112291327A (zh) * | 2020-10-23 | 2021-01-29 | 中化能源股份有限公司 | 区块链节点管理方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775619A (zh) * | 2016-11-12 | 2017-05-31 | 杭州复杂美科技有限公司 | 灵活区块链架构 |
CN108282459A (zh) * | 2017-12-18 | 2018-07-13 | 中国银联股份有限公司 | 基于智能合约的数据传递方法及系统 |
CN109151031A (zh) * | 2018-08-28 | 2019-01-04 | 北京奇虎科技有限公司 | 基于区块链的合约处理方法及装置 |
CN109840429A (zh) * | 2019-01-08 | 2019-06-04 | 北京众享比特科技有限公司 | 智能合约部署、调用方法和装置 |
CN110188097A (zh) * | 2019-04-19 | 2019-08-30 | 阿里巴巴集团控股有限公司 | 区块链中智能合约的存储、执行方法及装置和电子设备 |
WO2019186282A1 (en) * | 2018-03-29 | 2019-10-03 | Dlt Labs, Inc. | Updateable smart contracts |
-
2019
- 2019-12-20 CN CN201911328046.5A patent/CN111177777B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775619A (zh) * | 2016-11-12 | 2017-05-31 | 杭州复杂美科技有限公司 | 灵活区块链架构 |
CN108282459A (zh) * | 2017-12-18 | 2018-07-13 | 中国银联股份有限公司 | 基于智能合约的数据传递方法及系统 |
WO2019186282A1 (en) * | 2018-03-29 | 2019-10-03 | Dlt Labs, Inc. | Updateable smart contracts |
CN109151031A (zh) * | 2018-08-28 | 2019-01-04 | 北京奇虎科技有限公司 | 基于区块链的合约处理方法及装置 |
CN109840429A (zh) * | 2019-01-08 | 2019-06-04 | 北京众享比特科技有限公司 | 智能合约部署、调用方法和装置 |
CN110188097A (zh) * | 2019-04-19 | 2019-08-30 | 阿里巴巴集团控股有限公司 | 区块链中智能合约的存储、执行方法及装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111177777A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2912840B2 (ja) | ファイル管理システム | |
US7669024B2 (en) | Storage system with multiple copy targeting | |
CN102736945B (zh) | 一种运行应用程序的多个实例的方法和系统 | |
JP5172855B2 (ja) | データ・ストレージにおけるリソース再利用のための装置および方法 | |
US20080215837A1 (en) | Storage System With Multiple Copy Targeting and Disk Failure Protection | |
JP2004127274A (ja) | Raidコントローラおよびデータ記憶システム管理方法 | |
WO2010109568A1 (ja) | ストレージ装置 | |
CN103780638A (zh) | 数据同步方法及系统 | |
CN102567142B (zh) | 系统复位和系统恢复 | |
EP2437462A2 (en) | Data access processing method and device | |
CN111177777B (zh) | 智能合约部署方法及电子设备 | |
US7370165B2 (en) | Apparatus and method for protecting data recording on a storage medium | |
CN110032544A (zh) | 云端服务的权限管理方法及其云端数据存储系统 | |
FI111195B (fi) | Älykäs transaktio | |
CN104268097A (zh) | 一种元数据处理方法及系统 | |
CN108399076A (zh) | 一种基于uefi的固件更新方法与装置 | |
CN103309696B (zh) | 一种Java卡扩展库更新方法、装置和Java卡 | |
US7278000B2 (en) | Data migration with worm guarantee | |
KR20150103886A (ko) | 파이프라인 실행 가속을 위한 데이터 처리 장치 및 그 방법 | |
CN113836116A (zh) | 数据迁移方法、装置、电子设备及可读存储介质 | |
WO2022034433A1 (en) | Logical corruption protection for data | |
CN109992449A (zh) | 备份镜像管理系统、方法、设备及介质 | |
CN101794254A (zh) | Nand flash的数据处理方法 | |
CN104461382A (zh) | 运行多个文件系统的文件服务器的内部写方法和服务器 | |
CN107547648A (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 |