掌桥专利:专业的专利平台
掌桥专利
首页

基于区块链的数据处理方法、装置、设备及可读存储介质

文献发布时间:2024-04-18 19:59:31


基于区块链的数据处理方法、装置、设备及可读存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种基于区块链的数据处理方法、装置、设备及可读存储介质。

背景技术

随着网络技术的快速发展以及企业对数据安全的重视,区块链得到了极大的重视和应用,因此区块链上去中心化应用逐渐增多,区块链中部署的智能合约数量也日益增加。

在现有的技术方案中,为了实现智能合约的访问控制,可以在合约的方法中添加白名单机制,合约管理员可以设定能够使用该方法的用户,并将他们加入方法白名单中,不在方法白名单中的用户将无法调用该方法。利用白名单实现访问控制的方法虽然有效,但是合约管理员的权限过大,一旦管理员滥用权限,如,获取未经授权的信息或执行未经授权的操作,可能导致智能合约的安全性降低。此外,合约管理员的操作没有受到约束,一旦管理员出现误操作,可能会导致不可估量的风险,从而降低智能合约的安全性。

发明内容

本申请实施例提供了一种基于区块链的数据处理方法、装置、设备及可读存储介质,可以增强智能合约权限管理的安全性和灵活性。

本申请实施例一方面提供了一种基于区块链的数据处理方法,包括:

接收合约提案请求,根据合约提案请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对合约提案请求关联的提案对象进行提案鉴权处理,得到提案鉴权结果;合约提案请求包含针对权限合约的合约更新提案;

若提案鉴权结果为鉴权通过结果,则为合约更新提案设置提案等待期;权限代理合约不具有在提案等待期内执行合约更新提案的权限;

若确定合约更新提案对应的提案等待期结束,且接收到针对合约更新提案发送的提案执行请求,则根据提案执行请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对提案执行请求关联的执行对象进行执行鉴权处理,得到执行鉴权结果;

若执行鉴权结果为鉴权通过结果,则通过权限代理合约执行合约更新提案。

本申请实施例一方面提供了一种基于区块链的数据处理装置,包括:

合约调用模块,用于接收合约提案请求,根据合约提案请求获取权限代理合约,通过权限代理合约调用权限合约;

提案鉴权模块,用于通过权限合约对合约提案请求关联的提案对象进行提案鉴权处理,得到提案鉴权结果;合约提案请求包含针对权限合约的合约更新提案;

期限设置模块,用于若提案鉴权结果为鉴权通过结果,则为合约更新提案设置提案等待期;权限代理合约不具有在提案等待期内执行合约更新提案的权限;

执行鉴权模块,用于若确定合约更新提案对应的提案等待期结束,且接收到针对合约更新提案发送的提案执行请求,则根据提案执行请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对提案执行请求关联的执行对象进行执行鉴权处理,得到执行鉴权结果;

提案执行模块,用于若执行鉴权结果为鉴权通过结果,则通过权限代理合约执行合约更新提案。

其中,上述数据处理装置,还包括:

协调鉴权模块,用于若在提案等待期内,接收到协调对象针对合约更新提案发送的提案撤回请求,则根据提案撤回请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对协调对象进行协调鉴权处理,得到协调鉴权结果;

提案撤回模块,用于若协调鉴权结果为鉴权通过结果,则确定提案等待期提前终止,向协调对象发送提案撤回提示信息。

其中,提案鉴权模块,包括:

名单读取单元,用于通过权限合约,从权限代理合约中读取提案白名单;提案白名单包含一个或多个具备提案权限的对象地址;

地址获取单元,用于获取合约提案请求关联的提案对象分别对应的提案对象地址;

鉴权单元,用于若在提案白名单中分别查找到与每个提案对象地址相同的对象地址,则确定提案鉴权结果为鉴权通过结果;

鉴权单元,还用于若在提案白名单中未查找到与目标提案对象地址相同的对象地址,则确定提案鉴权结果为鉴权失败结果;目标提案对象地址为合约提案请求关联的提案对象分别对应的提案对象地址中的任一提案对象地址。

其中,合约提案请求关联的提案对象的数量为M个;M为正整数;

上述数据处理装置,还包括:

多签验证模块,用于在接收合约提案请求的同时,接收M个提案对象分别对应的签名数据;

多签验证模块,还用于若提案鉴权结果为鉴权通过结果,则获取M个提案对象分别对应的公钥;

多签验证模块,还用于通过每个提案对象对应的公钥分别验证每个提案对象对应的签名数据,得到M个签名验证结果;

多签验证模块,还用于若M个签名验证结果中,属于签名验证通过结果的签名验证结果的数量超过多签阈值,则调用期限设置模块为合约更新提案设置提案等待期。

其中,合约更新提案包含合约升级代码;权限代理合约中的权限验证字段包含权限合约对应的权限合约地址;

提案执行模块,包括:

合约升级单元,用于通过权限代理合约部署合约升级代码所对应的新权限合约;

合约升级单元,还用于将权限验证字段包含的权限合约地址更新为新权限合约对应的新权限合约地址。

其中,合约更新提案包含更新角色信息和更新可调用方法信息;

提案执行模块,包括:

角色列表获取单元,用于通过权限代理合约获取权限角色列表;权限角色列表用于记录权限角色和与权限角色相关联的可调用方法信息;记录于权限角色列表中的权限角色具有调用相关联的可调用方法信息所指示的可调用方法的权限;

角色新增单元,用于若未在权限角色列表中查找到更新角色信息所指示的权限角色,则根据更新角色信息创建新增权限角色;

角色新增单元,还用于建立新增权限角色和更新可调用方法信息之间的关联关系,根据关联关系将新增权限角色和更新可调用方法信息写入权限角色列表。

其中,上述数据处理装置,还包括:

角色更新模块,用于若在权限角色列表中查找到更新角色信息所指示的权限角色,则将更新角色信息所指示的权限角色确定为更新权限角色;

角色更新模块,还用于将权限角色列表中更新权限角色相关联的可调用方法信息,替换为更新可调用方法信息。

其中,合约更新提案包含新增业务对象和预绑定权限角色;

提案执行模块,包括:

记录表获取单元,用于通过权限代理合约获取对象权限记录表;对象权限记录表用于记录业务对象和与业务对象相关联的权限角色;记录于对象权限记录表中的业务对象具有与相关联的权限角色相同的权限;

对象更新单元,用于建立新增业务对象和预绑定权限角色的关联关系,根据关联关系将新增业务对象和预绑定权限角色写入对象权限记录表。

其中,上述数据处理装置,还包括:

业务调用模块,用于接收目标业务对象发送的目标业务请求,根据业务请求获取权限代理合约,通过权限代理合约调用权限合约;

权限验证模块,用于通过权限合约对目标业务对象进行权限验证处理,得到权限验证结果;

业务执行模块,用于若权限验证结果为权限验证成功结果,则通过权限代理合约将目标业务请求转发至目标业务合约;

业务执行模块,还用于通过目标业务合约执行目标业务请求,得到业务执行结果,将业务执行结果返回至目标业务对象。

其中,目标业务请求包含目标调用方法信息;

权限验证模块,包括:

表获取单元,用于通过权限合约获取对象权限记录表和权限角色列表;

对象角色验证单元,用于若未在对象权限记录表中查找到目标业务对象相同的业务对象,则确定权限验证结果为权限验证失败结果;

对象角色验证单元,还用于若在对象权限记录表中查找到目标业务对象相同的业务对象,则将对象权限记录表中,与目标业务对象相同的业务对象相关联的权限角色,确定为目标权限角色;

角色方法验证单元,用于将权限角色列表中,与目标权限角色相关联的可调用方法信息,确定为目标可调用方法信息;

角色方法验证单元,还用于若目标可调用方法信息包含目标调用方法信息,则确定权限验证结果为权限验证成功结果;

角色方法验证单元,还用于若目标可调用方法信息不包含目标调用方法信息,则确定权限验证结果为权限验证失败结果。

其中,权限代理合约中包含超级管理对象地址;

上述数据处理装置,还包括:

对象配置模块,用于接收管理对象发送的对象配置请求,根据对象配置请求获取权限代理合约,通过权限代理合约调用权限合约;对象配置请求包含提案白名单、执行白名单以及协调白名单;

对象配置模块,还用于通过权限合约获取管理对象对应的管理对象地址,若确定管理对象地址和超级管理对象地址相同,则将提案白名单、执行白名单以及协调白名单写入权限代理合约中,将超级管理对象地址从权限代理合约中删除。

本申请实施例一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;

上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信网元,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以执行本申请实施例中的方法。

本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。

本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中的方法。

本申请实施例中,接收到包含针对权限合约的合约更新提案的合约提案请求时,可以根据合约提案请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对合约提案请求关联的提案对象进行提案鉴权处理,得到提案鉴权结果;若提案鉴权结果为鉴权通过结果,则为合约更新提案设置提案等待期;若确定合约更新提案对应的提案等待期结束,且接收到针对合约更新提案发送的提案执行请求,则根据提案执行请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对提案执行请求关联的执行对象进行执行鉴权处理,得到执行鉴权结果;若执行鉴权结果为鉴权通过结果,则通过权限代理合约执行合约更新提案。其中,权限代理合约不具有在提案等待期内执行合约更新提案的权限。采用本申请实施例提供的方法,权限控制由单独的权限合约实现,并通过权限代理合约调用,相当于将权限管理与业务实现解耦,提高了合约权限管理的灵活性,此外,为针对权限合约的合约更新提案设置提案等待期来延迟其执行,避免误操作带来的风险,并且合约更新提案的执行需要提议对象与执行对象的多重确认,相当于分散了管理的权限,可以进一步地提高合约权限管理的安全性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种网络架构示意图;

图2是本申请实施例提供的一种合约权限管理与验证系统的架构示意图;

图3a是本申请实施例提供的一种提案发起的场景示意图;

图3b是本申请实施例提供的一种提案执行的场景示意图;

图4是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;

图5a是本申请实施例提供的一种权限合约升级成功的流程示意图;

图5b是本申请实施例提供的一种权限合约升级失败的流程示意图;

图6a是本申请实施例提供的一种权限角色新增的流程示意图;

图6b是本申请实施例提供的一种角色绑定功能的流程示意图;

图7是本申请实施例提供的一种业务对象绑定角色的流程示意图;

图8是本申请实施例提供的一种权限验证方法的流程示意图;

图9是本申请实施例提供的一种权限合约初始化方法的流程示意图;

图10是本申请实施例提供的一种多签场景下的权限合约更新的流程示意图;

图11是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图;

图12是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参见图1,图1是本申请实施例提供的一种网络架构示意图。区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链,区块链网络可以将节点区分为共识节点和业务节点,其中共识节点负责区块链全网的共识。对于区块链网络中交易数据被写入账本的过程可以为:客户端发送交易数据至业务节点,随后该交易数据以接力棒的方式在区块链网络中的业务节点之间传递,直到共识节点收到该交易数据,共识节点再将该交易数据打包进区块,与其他共识节点之间进行共识,在共识通过后,将携带该交易数据的区块写入账本。

其中,可以理解的是,区块(Block)是在区块链网络上承载交易数据(即交易业务)的数据包,是一种被标记上时间戳和之前一个区块的哈希值的数据结构,区块经过网络的共识机制验证并确定区块中的交易。

其中,可以理解的是,哈希(hash)值,也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前继区块的哈希值,前继区块被称为当前区块的父区块。哈希值是区块链技术中的潜力核心基础和最重要的方面,它保留了记录和查看数据的真实性,以及区块链作为一个整体的完整性。

其中,可以理解的是,区块链系统中可以包括有智能合约,该智能合约在区块链系统中可以理解为是一种区块链各节点(包括共识节点)可以理解并执行的代码,可以执行任意逻辑并得到结果。用户可以通过客户端发起一个交易业务请求的方式,调用区块链上已经部署的智能合约,随后,区块链上的业务节点可以将该交易业务请求发送至共识节点,而区块链上的各个共识节点可以分别运行该智能合约。应当理解,区块链中可以包括一个或多个智能合约,这些智能合约可以标识号(Identity document,ID)或名称来进行区分,而客户端发起的交易业务请求中,也可以携带智能合约的标识号或名称,以此指定区块链需要运行的智能合约。而若客户端所指定的智能合约为需要读取数据的合约,则各个共识节点会访问本地账本来进行数据的读取,最后各个共识节点会互相验证执行结果是否一致(也就是进行共识),若一致则可以将执行结果存入各自的本地账本中,并将执行结果返回至客户端。

如图1所示,该网络架构可以包括区块链节点集群1000、业务服务器(服务端)集群100以及终端设备(客户端)集群10,该区块链节点集群1000可以包括至少两个区块链节点。如图1所示,该区块链节点集群1000可以包括区块链节点1000a、区块链节点1000b、…、区块链节点1000n,该业务服务器集群100具体可以包括业务服务器100a、业务服务器100b、…、业务服务器100n,该终端设备集群10具体可以包括终端设备10a、终端设备10b、…、终端设备10n。

如图1所示,终端设备10a、终端设备10b、...、终端设备10n可以分别与业务服务器100a进行数据连接;终端设备10a、终端设备10b、...、终端设备10n可以分别与业务服务器100b进行数据连接;...;终端设备10a、终端设备10b、...、终端设备10n可以分别与业务服务器100n进行数据连接,以便于终端设备可以通过该数据连接与业务服务器进行数据交互;业务服务器100a、业务服务器100b、…、业务服务器100n可以分别与区块链节点1000a进行数据连接;业务服务器100a、业务服务器100b、…、业务服务器100n可以分别与区块链节点1000b进行数据连接;…;业务服务器100a、业务服务器100b、…、业务服务器100n可以分别与区块链节点1000n进行数据连接,以便于业务服务器可以通过该数据连接与区块链节点进行数据交互;区块链节点1000a、区块链节点1000b、…、区块链节点1000n互相连接,以便于区块链节点之间可以进行数据交互。

可以理解的是,区块链节点之间可以通过上述数据连接进行数据或者区块传输。区块链网络可以基于节点标识实现区块链节点之间的数据连接,对于区块链网络中的每个区块链节点,均具有与其对应的节点标识,而且上述每个区块链节点均可以存储与自身有相连关系的其他区块链节点的节点标识,以便后续根据其他区块链节点的节点标识,将获取到的数据或生成的区块广播至其他区块链节点,例如区块链节点1000a中可以维护一个如表1所示的节点标识列表,该节点标识列表保存着其他节点的节点名称和节点标识:

表1

其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任意一种能够用于标识区块链网络中区块链节点的信息,表1中仅以IP地址为例进行说明。例如,区块链节点1000a可以通过节点标识BBB.BBB.BBB.BBB向区块链节点1000b发送信息(例如,交易数据),且区块链节点1000b可以通过节点标识AAA.AAA.AAA.AAA确定该信息是由区块链节点1000a所发送的。

在区块链中,在将一个区块进行上链之前,该区块必须经过区块链网络中的共识节点进行共识,在共识通过后才能将该区块添加到区块链上。可以理解的是,当区块链被用于商业机构的一些场景中时,并非区块链中的所有参与节点(即上述区块链节点集群1000中的区块链节点)都有足够的资源和必要性成为区块链的共识节点。例如,在图1所示的区块链节点集群1000中,可以将区块链节点1000a、区块链节点1000b和区块链节点1000n作为该区块链节点集群中的共识节点。区块链节点集群1000中的共识节点参与共识,也就是对区块(包含一批交易)进行共识,包括生成区块,对区块进行投票;而非共识节点不参与共识,但会帮助传播区块和投票消息,以及相互同步状态等。

其中,可以理解的是,上述的数据连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接方式,本申请在此不做限制。

可以理解的是,本申请实施例所提供的基于区块链的数据处理方法可以由计算机设备执行,计算机设备包括但不限于上述区块链节点(可以为终端或者服务器)、业务服务器、终端设备。上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。上述终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。

可以理解的是,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等场景。

可以理解的是,在本申请的具体实施方式中,涉及到的交易数据等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准。

其中,可以理解的是,上述的数据连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接方式,本申请在此不做限制。

可以理解的是,本申请实施例所提供的数据处理方法可以由计算机设备执行,计算机设备包括但不限于上述主链节点(可以为终端或者服务器)、子链节点(可以为终端或者服务器)、终端设备。上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。上述终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。

可以理解的是,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、区块链、智慧驾驶等场景。

可以理解的是,在本申请的具体实施方式中,涉及到的交易数据、状态数据等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准。

如图1所示,终端设备集群中的每个终端设备均可以安装有应用客户端,当该应用客户端运行于各终端设备中时,可以分别与上述业务服务器集群100中的任一业务服务器之间进行数据交互,使得上述业务服务器集群100中的任一业务服务器可以接收来自于每个终端设备的业务数据。其中,该应用客户端可以为游戏应用、视频编辑应用、社交应用、即时通信应用、直播应用、短视频应用、视频应用、音乐应用、购物应用、小说应用、支付应用、浏览器等具有显示文字、图像、音频以及视频等数据信息功能的应用客户端。其中,该应用客户端可以为独立的客户端,也可以为集成在某客户端(例如即时通信客户端、社交客户端、视频客户端等)中的嵌入式子客户端,在此不做限定。

业务对象可以通过与其关联的终端设备中运行的应用客户端,与区块链进行数据交互,从而使用由区块链中的业务合约提供的业务功能。具体的,业务对象可以通过与其关联的终端设备中运行的应用客户端进行业务操作,终端设备会响应该业务操作,生成业务请求,然后将该业务请求发送给业务服务器,业务服务器可以将该业务请求以交易的形式发送至区块链节点。不过,区块链节点在接收到业务请求后,并不会直接调用业务合约来执行该业务请求,区块链节点需要先验证发起业务请求的业务对象是否具有使用相关功能的权限,例如,业务请求为资源转移请求时,区块链节点需要验证业务对象是否具有使用资源管理合约提供的资源转移功能的权限。

本申请中,业务对象所具有的针对业务合约的相关权限可以通过业务合约对应的权限合约来进行管理。为了提高业务合约的权限管理的灵活性,将业务功能的实现与权限管理解耦,即业务功能的实现依然由业务合约完成,但权限管理与验证则通过权限合约来完成。另外,权限合约的调用可以通过权限代理合约作为入口,权限相关的设置可以保存在权限代理合约中,当权限合约升级时,原来的权限设置不会受到影响,以便于权限合约的合约代码的更新。而且,本申请中,权限合约的更新不再由某个合约管理员单独决定,而是需要经过提案等待期的延迟执行、以及提案对象、执行对象以及协调对象的多重确认后,才能实现,从而降低合约管理员的误操作以及合约管理员权限过大时带来的权限滥用的风险。

如图1所示,区块链节点接收到合约提案请求后,可以根据合约提案请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对合约提案请求关联的提案对象进行提案鉴权处理,得到提案鉴权结果。其中,合约提案请求包含针对权限合约的合约更新提案,如,更新权限合约的合约代码、新增针对业务合约的权限角色(一个角色通常具有调用业务合约中的一个或者少数合约方法的权限)、增加某个业务对象绑定的权限角色(绑定某个权限角色的业务对象,即具有调用该权限角色具有的权限)。若提案鉴权结果为鉴权通过结果,则为合约更新提案设置提案等待期,其中,提案等待期可以根据实际情况来设置,如,一天、十分钟、一小时,权限代理合约不具有在提案等待期内执行合约更新提案的权限。若区块链节点确定合约更新提案对应的提案等待期结束,且接收到针对合约更新提案发送的提案执行请求,则根据提案执行请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对提案执行请求关联的执行对象进行执行鉴权处理,得到执行鉴权结果;若执行鉴权结果为鉴权通过结果,则通过权限代理合约执行合约更新提案。可选的,如果在提案等待期内,区块链节点接收到协调对象针对该合约更新提案发生的提案撤回请求,则可以根据提案撤回请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对协调对象进行协调鉴权处理,得到协调鉴权结果;若协调鉴权结果为鉴权通过结果,则确定提案等待期提前终止。可以理解,提前终止的提案等待期无法正常结束,即之后哪怕区块链节点接收到执行对象的提案执行请求,也无法正常通过权限代理合约执行合约更新提案。

为便于理解上述权限代理合约、权限合约以及业务合约之间的关系,请一并参见图2,图2是本申请实施例提供的一种合约权限管理与验证系统的架构示意图。如图2所示,区块链网络中可以部署有多个需要使用权限管理与验证功能的业务合约,如,业务合约1、业务合约2、…、业务合约n。其中,不同业务合约可以实现不同的业务功能。可以理解,这些业务合约对应的权限验证以及管理可以通过权限合约来实现。其中,权限合约可以用于验证业务对象是否具有执行某项操作或者使用某个业务合约中的某个业务功能的权限;权限合约还可以用于管理业务对象的权限,如,增加业务对象对业务合约的使用权限,或者减少业务对象对业务合约的使用权限。此外,在调用业务合约或者权限合约时,均通常权限代理合约作为统一入口,以实现对所有业务合约方法的精细权限管理与验证。通过如图2所示的合约架构,可以集中管理对象权限,避免将权限管理与验证功能与业务代码耦合,使得业务代码更整洁,更易于维护。

如图2所示,能够通过权限代理合约调用上述权限合约或者业务合约的对象可以分为业务对象、提案对象、执行对象以及协调对象。其中,提案对象、执行对象以及协调对象是本申请为合约权限管理与验证系统设计的三种权限管理对象。其中,提案对象负责提交针对权限合约的合约更新提案,如,更新权限合约的合约代码、新增权限角色(一个角色通常具有调用某个业务合约中的某个合约方法的权限)、增加某个业务对象绑定的权限角色(绑定权限角色的业务对象即具有调用该权限角色能够调用的合约方法的权限)。其中,执行对象负责在合约更新提案的提案等待期结束后对其进行二次确认。其中,协调对象具有在合约更新提案的提案等待期结束前否决掉该合约更新提案。其中,业务对象是指可以调用业务合约的普通对象,业务对象能够调用哪些业务合约中的哪些合约方法,需要由提案对象、执行对象以及协调对象共同确定。

进一步地,为便于理解上述针对权限合约的合约更新提案的执行过程,请一并参见图3a-图3b,其中,如图3a-图3b所示的终端设备30和终端设备31可以为上述图1所示的终端设备集群中的不同终端设备,如,终端设备30可以为终端设备10a,终端设备31可以为终端设备10b;如图3a-图3b所示的业务服务器32和业务服务器33可以分别为上述图1所示的业务服务器集群100中的任一业务服务器,如,业务服务器32可以为业务服务器100b,业务服务器33可以为业务服务器100a;如图3a-图3b中所示的区块链网络34可以为上述图1所示区块链节点集群1000共同构成的区块链网络,区块链网络34中的区块链节点35可以为上述图1所示区块链节点集群1000中的任一区块链节点,如,区块链节点35为区块链节点1000a。

请先参见图3a,图3a是本申请实施例提供的一种提案发起的场景示意图。如图3a所示,终端设备30与提案对象A具有关联关系,终端设备30中安装有上述应用客户端,具有登录该应用客户端权限的普通对象,可以通过该应用客户端与区块链网络34进行数据交互。假设提案对象A想为业务对象B增加资源转移权限,即允许业务对象B调用资源管理合约中的资源转移方法,提案对象A可以通过终端设备30中运行的应用客户端进行权限增加操作,终端设备30响应该权限增加操作后,会生成合约提案请求301。其中,合约提案请求301中包含合约更新提案302,该合约更新提案302则用于指示为业务对象B添加资源转移权限。

如图3a所示,终端设备30生成合约提案请求301后,然后,终端设备30会将该合约提案请求301发送给业务服务器32,该业务服务器32可以将该合约提案请求301以交易的形式发送至区块链网络34中的任一区块链节点,例如,区块链节点35。区块链节点35在接收到合约提案请求301后,会同区块链网络34中的其他区块链节点一起进行合约提案请求301的共识处理。若区块链节点35确定合约提案请求301通过区块链网络34中的共识节点的共识,则可以获取权限代理合约351,然后通过权限代理合约351调用权限合约352,区块链节点可以通过权限合约352对提案对象A进行提案鉴权处理,其中,提案鉴权处理即验证提案对象A是否具有针对权限合约352的提案权限。若提案鉴权通过,则区块链节点35可以为合约更新提案302设置一个提案等待期,该提案等待期可以是事先设置好的期限,也可以是根据合约更新提案的提案类型匹配出的期限,具体可以根据实际情况来设置,如可以为十分钟,也可以为一小时。然后,区块链节点35会进入提案等待期开始等待。不过仅有提案对象A的确认,合约更新提案302是无法正常执行的,因为为了避免单个对象的权限过大造成权限滥用的情况,因此针对权限合约的合约更新提案还需要经过执行对象的确认。因此,即使区块链节点35确定提案等待期结束,也不会立即执行合约更新提案302,还需等待执行对象的确认。

为便于理解,请一并参见图3b,图3b是本申请实施例提供的一种提案执行的场景示意图。如图3b所示,终端设备31与执行对象C具有关联关系,终端设备30中安装有上述应用客户端,具有登录该应用客户端权限的普通对象,可以通过该应用客户端与区块链网络34进行数据交互。终端设备31可以定时向区块链网络34进行提案查询,即查询最新的合约更新提案,然后将查询到的合约更新提案302展示给执行对象C。如果执行对象C也认可合约更新提案302,即同意业务对象B调用资源管理合约中的资源转移方法,执行对象C可以通过终端设备31中运行的应用客户端进行提案同意操作,终端设备31响应该提案同意操作后,会生成提案执行请求311。

如图3b所示,终端设备31生成提案执行请求311后,然后,终端设备31会将该提案执行请求311发送给业务服务器33,该业务服务器33可以将该提案执行请求311以交易的形式发送至区块链网络34中的任一区块链节点,例如,区块链节点35。区块链节点35在接收到提案执行请求311后,会同区块链网络34中的其他区块链节点一起进行提案执行请求311的共识处理。若区块链节点35确定提案执行请求311通过区块链网络34中的共识节点的共识,则可以获取权限代理合约351,然后通过权限代理合约351调用权限合约352,区块链节点可以通过权限合约352对执行对象C进行执行鉴权处理,其中,执行鉴权处理即验证执行对象C是否具有针对权限合约352的执行权限。若执行鉴权通过,且区块链节点35确定提案等待期结束,则区块链节点35可以执行合约更新提案302,即为业务对象B增加调用资源管理合约中的资源转移方法的权限。

可选的,在提案等待期内,协调对象D关联的终端设备也可以向区块链网络34进行提案查询,得到合约更新提案302,若协调对象D觉得业务对象B不适合调用资源管理合约中的资源转移方法,则协调对象D可以通过关联的终端设备进行提案否决操作,其关联的终端设备可以响应该提案否决操作,生成提案撤回请求,然后发送给相应的业务服务器,再由业务服务器将该提案撤回请求以交易的形式发送至区块链网络34。当区块链节点35确定提案撤回请求共识通过时,可以先根据提案撤回请求获取权限代理合约351,通过权限代理合约35调用权限合约352,通过权限合约352对协调对象进行协调鉴权处理,其中,协调鉴权处理即验证协调对象D是否具有针对权限合约352的协调权限。若协调鉴权通过,则区块链节点35可以确定提案等待期提前终止,此时哪怕区块链节点35再接收到执行对象C发送的提案执行请求311,也不会再执行合约更新提案302了。

通过本申请实施例提供的方法,将业务实现与权限管理进行解耦,并通过权限代理合约来存储权限合约的相关权限设置,在权限合约进行代码升级时无需迁移旧权限设置,可以提高智能合约权限管理的兼容性和灵活性,此外,通过提案等待期的延迟执行以及提案对象、执行对象和协调对象的多重确认方式,可以提高智能合约权限管理的安全性。

进一步地,请参见图4,图4是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。其中,该方法可以由计算机设备(例如,上述图1所对应实施例中的区块链节点集群1000中的任一区块链节点)执行。以下将以本方法由计算机设备执行为例进行说明,其中,该基于区块链的数据处理方法至少可以包括以下步骤S101-步骤S104:

步骤S101,接收合约提案请求,根据所述合约提案请求获取权限代理合约,通过所述权限代理合约调用权限合约,通过所述权限合约对所述合约提案请求关联的提案对象进行提案鉴权处理,得到提案鉴权结果;所述合约提案请求包含针对所述权限合约的合约更新提案。

具体的,区块链网络中需要使用权限控制功能的业务合约可以通过与其独立的权限合约来实现相关功能,从而保证业务的实现与权限的管理解耦,从而提高智能合约的权限管理的灵活性。当然,区块链节点在调用权限合约时,可以使用delegatecall(委托调用)的方式调用权限合约。其中,delegatecall指令是Solidity(一门面向合约的、为实现智能合约而创建的高级编程语言)中实现跨合约的函数调用功能的指令函数,delegatecall简单来说就是“委托”被调用者去管理自己的上下文环境(即storage),采用delegatecall指令委托调用合约时,执行环境修改依然为调用者的运行环境,也就是合约的storage,msg.sender(调用发起的地址)则是调用栈最初的地址。例如,A调用B,然后B去delegatecall了C,在delegatecall中B调用C的msg.sender是A,此时的上下文环境为B的上下文环境。也就是说,权限合约中的权限相关的设置都保存在权限代理合约中,当权限合约需要升级时,原来的权限设置不会受到影响。

具体的,合约提案请求是指包含针对权限合约的合约更新提案的请求,该合约更新提案是指需要对权限合约的权限设置或者合约代码进行更新的提案,如升级合约代码、更新某个业务对象的业务权限。

具体的,合约提案请求关联的提案对象的数量可以为一个或者多个。当合约提案请求关联的提案对象为一个时,该合约提案请求可以是由该提案对象发起的。当合约提案请求关联的提案对象为M个时,M为正整数,该合约提案请求可以是由目标提案对象所发起的,具体的,可以假设权限合约对应的提案对象有N个,N为大于M的正整数;当N个提案对象中的任一提案对象想要在区块链网络中执行合约更新提案时,可以将该合约更新提案广播给N个提案对象,此时N个提案对象可以对该合约更新提案进行投票,如果有提案对象同意执行该合约更新提案,就可以对该合约更新提案进行签名,然后将签名数据发给目标提案对象。可以理解,可以采用少数服从多数的原则,即目标提案对象并不需要等待所有的提案对象均同意执行合约更新提案,当目标提案对象确定接收到M(此时的M为同意阈值,通常可以低于N值的2/3)个签名数据时,就可以生成包含合约更新提案的合约提案请求,然后发送至区块链网络。

具体的,提案鉴权处理是指确定提案对象是否具有针对权限合约的提案权限。通过权限合约对合约提案请求关联的提案对象进行提案鉴权处理,得到提案鉴权结果的一个可行实施过程,可以为:通过权限合约,从权限代理合约中读取提案白名单;提案白名单包含一个或多个具备提案权限的对象地址;获取合约提案请求关联的提案对象分别对应的提案对象地址;若在提案白名单中分别查找到与每个提案对象地址相同的对象地址,则确定提案鉴权结果为鉴权通过结果;若在提案白名单中未查找到与目标提案对象地址相同的对象地址,则确定提案鉴权结果为鉴权失败结果。其中,目标提案对象地址为合约提案请求关联的提案对象分别对应的提案对象地址中的任一提案对象地址。

可选的,合约提案请求关联的提案对象(指对合约更新提案进行签名的提案对象)的数量为M个时,区块链节点在接收合约提案请求的同时,还需要接收M个提案对象分别对应的签名数据;若提案鉴权结果为鉴权通过结果,则获取M个提案对象分别对应的公钥;通过每个提案对象对应的公钥分别验证每个提案对象对应的签名数据,得到M个签名验证结果;若M个签名验证结果中,属于签名验证通过结果的签名验证结果的数量超过多签阈值,则执行为合约更新提案设置提案等待期的步骤。

步骤S102,若所述提案鉴权结果为鉴权通过结果,则为所述合约更新提案设置提案等待期;所述权限代理合约不具有在所述提案等待期内执行所述合约更新提案的权限。

具体的,提案等待期也可以称为提案冷静期或者提案时间锁,为了确保提案对象有足够的时间进行反思和悔改,可以设置特定的时间间隔,称之为提案等待期。在此期间,提案对象有机会撤回之前的决定,即提案对象可以再提案等待期内发送针对该合约更新提案的提案撤回请求。因此,权限代理合约不具有在提案等待期内执行合约更新提案的权限,即在提案等待期内,区块链节点不能通过权限代理合约执行合约更新提案。

步骤S103,若确定所述合约更新提案对应的提案等待期结束,且接收到针对所述合约更新提案发送的提案执行请求,则根据所述提案执行请求获取所述权限代理合约,通过所述权限代理合约调用所述权限合约,通过所述权限合约对所述提案执行请求关联的执行对象进行执行鉴权处理,得到执行鉴权结果。

具体的,提案等待期结束是指区块链节点的等待时间到达提案等待期,且在提案等待期内没有接收到任何针对合约更新提案的提案撤回请求(可以是提案对象发起的,也可以是协调对象发起的)。

具体的,执行合约更新提案,除了需要经过提案等待期的延迟执行外,还需要经过提案对象、协调对象以及执行对象的多重确认。其中,多重确认包含提案对象确认,即提案对象发起合约更新提案,并在提案等待期内没有向区块链节点发送提案撤回请求;协调对象确认,即协调对象在提案等待期内没有向区块链节点发送提案撤回请求;执行对象确认,即执行对象在提案等待期结束后向区块链节点发送提案执行请求。

具体的,执行鉴权处理是指确定执行对象是否具有针对权限合约的执行权限。通过权限合约对合约提案请求关联的执行对象进行执行鉴权处理,得到执行鉴权结果的一个可行实施过程,可以为:通过权限合约,从权限代理合约中读取执行白名单;执行白名单包含一个或多个具备执行权限的对象地址;获取合约提案请求关联的执行对象分别对应的执行对象地址;若在执行白名单中分别查找到与每个执行对象地址相同的对象地址,则确定执行鉴权结果为执行通过结果;若在执行白名单中未查找到与每个执行对象地址相同的对象地址,则确定执行鉴权结果为鉴权失败结果。

步骤S104,若所述执行鉴权结果为鉴权通过结果,则通过所述权限代理合约执行所述合约更新提案。

具体的,合约更新提案的目的可以是更新权限合约的合约代码,此时合约更新提案可以包含合约升级代码,权限代理合约中的权限验证字段包含权限合约对应的权限合约地址,则通过权限代理合约执行合约更新提案的一个可行实施过程,可以为:通过权限代理合约部署合约升级代码所对应的新权限合约;将权限验证字段包含的权限合约地址更新为新权限合约对应的新权限合约地址。

具体的,合约更新提案的目的可以是更新权限合约的权限设置。权限合约对应的权限设置可以根据实际情况来设定,如每个业务对象直接绑定业务权限,此时更新权限设置即更新某个业务对象绑定的业务权限。本申请给出了一种基于权限角色的权限设置,其中,权限角色是一个虚拟的对象,可以根据业务需求来设定,不同的权限角色可以绑定不同的业务功能,如,权限角色可以为资源发行角色,其绑定的业务功能可以是资源发行功能,此时为业务对象1绑定资源发行角色,业务对象1就可以使用业务合约提供的资源发行功能。可以理解,一个权限角色通常只绑定少量的业务功能,当业务对象需要使用的业务功能很多时,就可以绑定多个权限角色,通过权限角色的设计,可以使得权限分配更加明晰,操作更加便捷。

具体的,合约更新提案的目的为更新权限设置时,具体可以是更新权限角色以及权限角色绑定的功能(即权限角色可以调用的方法),此时,合约更新提案可以包含更新角色信息和更新可调用方法信息,则通过权限代理合约执行合约更新提案的一个可行实施过程,可以为:通过权限代理合约获取权限角色列表,若未在权限角色列表中查找到更新角色信息所指示的权限角色,则根据更新角色信息创建新增权限角色;建立新增权限角色和更新可调用方法信息之间的关联关系,根据关联关系将新增权限角色和更新可调用方法信息写入权限角色列表。其中,该权限角色列表用于记录权限角色和与权限角色相关联的可调用方法信息,记录于权限角色列表中的权限角色具有调用相关联的可调用方法信息所指示的可调用方法的权限。例如,权限角色列表可以为{资源转移角色-资源管理合约地址-资源转移方法名称;资源发行角色-资源管理合约地址-资源发行方法名称},通过该权限角色列表可知,资源转移角色具有调用资源管理合约中的资源转移方法名称所指示的资源转移方法的权限,资源发行角色具有调用资源管理合约中的资源发行方法名称所指示的资源发行方法的权限。

可选的,若在权限角色列表中查找到更新角色信息所指示的权限角色,则将更新角色信息所指示的权限角色确定为更新权限角色;将权限角色列表中更新权限角色相关联的可调用方法信息,替换为更新可调用方法信息。

具体的,合约更新提案的目的为更新权限设置时,具体可以是为业务对象绑定权限角色。此时,合约更新提案可以包含新增业务对象和预绑定权限角色,通过权限代理合约执行合约更新提案的一个可行实施过程,可以为:通过权限代理合约获取对象权限记录表;建立新增业务对象和预绑定权限角色的关联关系,根据关联关系将新增业务对象和预绑定权限角色写入对象权限记录表。其中,对象权限记录表用于记录业务对象和与业务对象相关联的权限角色;记录于对象权限记录表中的业务对象具有与相关联的权限角色相同的权限。例如,对象权限记录表可以为{业务对象1-资源发行角色和资源转移角色},通过对象权限记录表可知,业务对象1具有和资源发行角色以及资源转移角色相同的权限。

可选的,若在提案等待期内,接收到协调对象针对合约更新提案发送的提案撤回请求,则根据提案撤回请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对协调对象进行协调鉴权处理,得到协调鉴权结果;若协调鉴权结果为鉴权通过结果,则确定提案等待期提前终止,向协调对象发送提案撤回提示信息。可以理解,提案等待期提前终止,就意味着提案等待期不会正常结束,合约更新提案也就无法执行。

其中,协调鉴权处理是指确定协调对象是否具有针对权限合约的协调权限。通过权限合约对合约提案请求关联的协调对象进行协调鉴权处理,得到协调鉴权结果的一个可行实施过程,可以为:通过权限合约,从权限代理合约中读取协调白名单;协调白名单包含一个或多个具备协调权限的对象地址;获取合约提案请求关联的协调对象分别对应的协调对象地址;若在协调白名单中分别查找到与每个协调对象地址相同的对象地址,则确定协调鉴权结果为协调通过结果;若在协调白名单中未查找到与每个协调对象地址相同的对象地址,则确定协调鉴权结果为鉴权失败结果。

通过本申请实施例提供的方法,提供了一个去中心化的、加入时间锁(即提案等待期)功能、多次确认的权限管理方法,该方法可以为各类决策过程提供一个安全、可靠的确认机制。通过时间锁功能,可以减少误操作的风险,通过引入双重确认功能,可以确保在关键操作执行前得到多方验证,从而降低错误决策的风险。

为便于理解上述图4所对应实施例中更新权限合约的合约代码的过程,请一并参见图5a-图5b。其中,如图5a-图5b所示的流程涉及到提案终端设备51、执行终端设备52、协调终端设备53、权限代理合约54、权限合约55以及新权限合约56。其中,提案终端设备51是指提案者(即提案对象)关联的终端设备,其可以是上述图1所示的终端设备集群10中的任一终端设备,例如,提案终端设备51可以为终端设备10a。其中,执行终端设备52是指执行者(即执行对象)关联的终端设备,其可以是上述图1所示的终端设备集群10中的任一终端设备,例如,执行终端设备52可以为终端设备10b。其中,协调终端设备53可以是指协调者(即协调对象)关联的终端设备,其可以是上述图1所示的终端设备集群10中的任一终端设备,例如,协调终端设备53可以为终端设备10n。其中,权限代理合约54、权限合约55以及新权限合约56均可以是部署在区块链网络中的智能合约,即区块链网络中的任一区块链节点(可以为上述图1所示的区块链网络1000中的任一区块链节点,例如,区块链节点1000a)中可以部署有权限代理合约54、权限合约55以及新权限合约56。可以理解,提案终端设备51(或者执行终端设备52、协调终端设备53)与权限代理合约54、权限合约55以及新权限合约56之间的数据交互,可以通过提案终端设备51(或者执行终端设备52、协调终端设备53)对应的业务服务器与部署有权限代理合约54、权限合约55以及新权限合约56的区块链节点进行通信实现。

首先,请先参见图5a,图5a是本申请实施例提供的一种权限合约升级成功的流程示意图。如图5a所示,权限合约升级成功的流程包括以下步骤:

步骤S211,提案终端设备51发送合约升级提案请求。

具体的,当提案者想升级权限合约,如修复权限合约的漏洞,增加权限合约的功能等,就可以通过提案终端设备51进行升级操作(如输入合约升级代码),提案终端设备51可以响应该升级操作,生成合约升级提案请求,然后将该合约升级提案请求发送至区块链网络。

步骤S212,区块链节点根据合约升级提案请求获取权限代理合约54,然后通过权限代理合约54调用权限合约55来确定提案者身份。

具体的,确定提案者身份即对提案者进行提案鉴权处理,具体实现可以参见上述步骤S101的描述,这里不再进行赘述。

步骤S213,当提案者身份确认,区块链节点进入等待期。

具体的,提案者身份确认是指提案鉴权处理对应的提案鉴权结果为提案鉴权通过结果。等待期即上述提案等待期,可以为预设的时间间隔,如十分钟、一小时等等。

步骤S214,等待期结束后,执行终端设备52发送合约升级执行请求。

具体的,区块链节点进入等待期时,也会将合约升级提案写入链上。由于执行者具有二次确认提案者发起的提案的职责,执行终端设备52可以定时查询区块链中新写入的提案。可选的,也可以是区块链节点在进入等待期时或者确定等待期结束时将合约升级提案发送给执行终端设备52的。

具体的,执行者通过执行终端设备52知晓合约升级提案后,如果同意该合约升级提案,就可以通过执行终端设备52进行提案同意操作,执行终端设备52可以响应该提案同意操作,生成合约升级执行请求,然后发送至区块链网络。

步骤S215,区块链节点根据合约升级执行请求获取权限代理合约54,然后通过权限代理合约54调用权限合约55来确定执行者身份。

具体的,确定执行者身份即对执行者进行执行鉴权处理,具体实现可以参见上述步骤S103的描述,这里不再进行赘述。

步骤S216,当执行身份确认,且等待期结束,部署新权限合约。

具体的,执行身份确认是指执行鉴权处理对应的执行鉴权结果为执行鉴权通过结果。当区块链节点确定执行身份确认,且等待期也结束了,就可以根据合约升级提案请求中包含的合约升级代码部署新权限合约56。

步骤S217,设置新权限合约地址。

具体的,权限代理合约54中可以包含有权限验证字段,该权限验证字段用于记录用于进行权限验证的权限合约的合约地址,可以理解,在新权限合约56部署之前,权限验证字段中应该存储的是权限合约55的合约地址,在新权限合约部署后,之后进行权限验证的权限合约应该是新权限合约56,因此,区块链节点可以将权限验证字段中的权限合约55的合约地址替换为新权限合约56对应的合约地址。

步骤S218,区块链节点返回新权限合约部署结果。

具体的,区块链节点可以将新权限合约部署结果返回至执行终端设备52,也可以一起将新权限合约部署结果返回至提案终端设备51。

请再参见图5b,图5b是本申请实施例提供的一种权限合约升级失败的流程示意图。如图5b所示,权限合约升级失败的流程包括以下步骤:

步骤S221,提案终端设备51发送合约升级提案请求。

步骤S222,区块链节点根据合约升级提案请求获取权限代理合约54,然后通过权限代理合约54调用权限合约55来确定提案者身份。

步骤S223,当提案者身份确认,区块链节点进入等待期。

具体的,步骤S221-步骤S223的实现过程可以参见上述图5a所对应实施例中步骤S211-步骤S213的具体描述,这里不再进行赘述。

步骤S224,等待期内,协调终端设备53发送合约升级撤回请求。

具体的,协调终端设备53也可以定时查询区块链中新写入的提案,或者区块链节点可以在进入等待期时就向协调终端设备53发送合约升级提案。

具体的,协调者通过协调终端设备53知晓合约升级提案后,如果觉得不满意,可以通过协调终端设备53进行提案撤回操作,协调终端设备53可以响应该提案撤回操作,生成合约升级撤回请求,然后发送至区块链网络。

步骤S225,区块链节点根据合约升级撤回请求获取权限代理合约54,然后通过权限代理合约54调用权限合约55来确定协调者身份。

具体的,确定协调者身份即对协调者进行协调鉴权处理,具体实现可以参见上述步骤S104的可选描述,这里不再进行赘述。

步骤S226,当协调身份确认,确定等待期提前终止。

具体的,协调身份确认是指协调鉴权处理对应的协调鉴权结果为协调鉴权通过结果。当协调身份确认,区块链节点会确定等待期提前终止。

步骤S227,返回权限合约升级失败信息。

具体的,区块链节点可以将权限合约升级失败信息返回至协调终端设备53,也可以一起将权限合约升级失败信息返回至提案终端设备51。

进一步地,为便于理解上述权限角色新增以及权限角色功能绑定的过程,请一并参见图6a-图6b。其中,如图6a-图6b所示的流程涉及到提案终端设备61、执行终端设备62、权限代理合约63、权限合约64。其中,提案终端设备61可以是上述图5a-图5b所述的提案终端设备51;执行终端设备62可以是上述图5a-图5b所述的执行终端设备52;权限代理合约63可以是上述图5a-图5b所述的权限代理合约54;权限合约64可以是上述图5a-图5b所述的权限合约55。

请先参见图6a,图6a是本申请实施例提供的一种权限角色新增的流程示意图。如图6a所示,权限角色新增的流程包括以下步骤:

步骤S311,提案终端设备61发送角色新增提案请求。

具体的,当提案者想新增一个权限角色,如资源发行角色,就可以通过提案终端设备61进行角色新增操作,提案终端设备61可以响应该角色新增操作,生成角色新增提案请求(可以包含资源发行角色的角色信息),然后将该角色新增提案请求发送至区块链网络。

步骤S312,区块链节点根据合约新增提案请求获取权限代理合约63,然后通过权限代理合约63调用权限合约64来确定提案者身份。

步骤S313,当提案者身份确认,区块链节点进入等待期。

具体的,步骤S312-步骤S313的实现可以参见上述图5a中步骤S212-步骤S213的描述,这里不再进行赘述。

步骤S314,等待期结束后,执行终端设备62发送角色新增执行请求。

具体的,执行者通过执行终端设备62知晓角色新增提案后,如果同意该角色新增提案,就可以通过执行终端设备62进行提案同意操作,执行终端设备62可以响应该提案同意操作,生成角色新增执行请求,然后发送至区块链网络。

步骤S315,区块链节点根据角色新增执行请求获取权限代理合约63,然后通过权限代理合约63调用权限合约64来确定执行者身份。

具体的,步骤S315的实现可以参见上述步骤S215的描述,这里不再进行赘述。

步骤S316,当执行身份确认,且等待期结束,保存新增角色。

具体的,当区块链节点确定执行身份确认,且等待期也结束了,就可以创建新增角色,即资源发行角色,然后在权限代理合约63中保存该新增角色,如,在权限代理合约63中的权限角色列表中存储该新增角色。

步骤S317,区块链节点返回新增角色创建成功信息。

具体的,区块链节点可以将新增角色创建成功信息返回至执行终端设备62,也可以一起将新增角色创建成功信息返回至提案终端设备61。

可以理解,新添加的权限角色默认没有任何权限,只有当权限角色绑定到指定的业务合约的特定功能时,才拥有权限。一个权限角色可以绑定到多个合约的多个方法,不过通常只为每个角色绑定少数方法,即做到单个权限角色的权限小,但权限角色之间拥有的权限不重复。请一并参见图6b,图6b是本申请实施例提供的一种角色绑定功能的流程示意图。如图6b所示,角色绑定功能的流程包括以下步骤:

步骤S321,提案终端设备61发送角色功能绑定提案请求。

具体的,当提案者想为资源发行角色绑定资源发行功能,就可以通过提案终端设备61进行功能绑定操作,提案终端设备61可以响应该功能绑定操作,生成角色功能绑定提案请求(可以包含用于提供资源发行功能的资源发行方法的信息),然后将该角色功能绑定提案请求发送至区块链网络。

步骤S322,区块链节点根据角色功能绑定提案请求获取权限代理合约63,然后通过权限代理合约63调用权限合约64来确定提案者身份。

步骤S323,当提案者身份确认,区块链节点进入等待期。

具体的,步骤S322-步骤S323的实现可以参见上述图5a中步骤S212-步骤S213的描述,这里不再进行赘述。

步骤S324,等待期结束后,执行终端设备62发送角色功能绑定执行请求。

具体的,执行者通过执行终端设备62知晓角色功能绑定提案后,如果同意该角色功能绑定提案,就可以通过执行终端设备62进行提案同意操作,执行终端设备62可以响应该提案同意操作,生成角色功能绑定执行请求,然后发送至区块链网络。

步骤S325,区块链节点根据角色功能绑定执行请求获取权限代理合约63,然后通过权限代理合约63调用权限合约64来确定执行者身份。

具体的,步骤S325的实现可以参见上述步骤S215的描述,这里不再进行赘述。

步骤S326,当执行身份确认,且等待期结束,为角色绑定功能。

具体的,当区块链节点确定执行身份确认,且等待期也结束了,就可以为资源发行角色绑定资源发行功能,即在权限代理合约63中保存该新增角色与资源发行方法信息的关联关系。

步骤S327,区块链节点返回角色功能绑定成功信息。

具体的,区块链节点可以将角色功能绑定成功信息返回至执行终端设备62,也可以一起将角色功能绑定成功信息返回至提案终端设备61。

进一步地,为便于理解上述为业务对象绑定权限角色的过程,请一并参见图7,图7是本申请实施例提供的一种业务对象绑定角色的流程示意图。其中,如图7所示的流程涉及到提案终端设备71、执行终端设备72、权限代理合约73、权限合约74。其中,提案终端设备71可以是上述图5a-图5b所述的提案终端设备51;执行终端设备72可以是上述图5a-图5b所述的执行终端设备52;权限代理合约73可以是上述图5a-图5b所述的权限代理合约54;权限合约74可以是上述图5a-图5b所述的权限合约55。

如图7所示,业务对象绑定角色的流程包括以下步骤:

步骤S411,提案终端设备71发送角色绑定提案请求。

具体的,业务对象可以向提案者申请绑定某个权限角色,如,业务对象A可以向提案者申请绑定资源发行角色,提案者通过提案终端设备71接收到业务对象A的申请后,可以通过提案终端设备71进行角色绑定操作,提案终端设备71可以响应该角色绑定操作,生成角色绑定提案请求(可以包含业务对象A的信息和资源发行角色),然后将该角色绑定提案请求发送至区块链网络。

需要说明的是,本申请所述的提案对象、执行对象以及协调对象也可以认为是三种不同的权限角色,因此,业务对象此时想申请的权限角色也可以是提案对象、执行对象或者协调对象。

步骤S412,区块链节点根据角色绑定提案请求获取权限代理合约73,然后通过权限代理合约73调用权限合约74来确定提案者身份。

步骤S413,当提案者身份确认,区块链节点进入等待期。

具体的,步骤S412-步骤S413的实现可以参见上述图5a中步骤S212-步骤S213的描述,这里不再进行赘述。

步骤S414,等待期结束后,执行终端设备72发送角色绑定执行请求。

具体的,执行者通过执行终端设备72知晓角色绑定提案后,如果同意该角色绑定提案,就可以通过执行终端设备72进行提案同意操作,执行终端设备72可以响应该提案同意操作,生成角色绑定执行请求,然后发送至区块链网络。

步骤S415,区块链节点根据角色绑定执行请求获取权限代理合约73,然后通过权限代理合约73调用权限合约74来确定执行者身份。

具体的,步骤S415的实现可以参见上述图5a中步骤S215的描述,这里不再进行赘述。

步骤S416,当执行身份确认,且等待期结束,为业务对象绑定角色。

具体的,当区块链节点确定执行身份确认,且等待期也结束了,就可以为业务对象1绑定资源发行角色,即在权限代理合约73中保存业务对象1与资源发行角色的关联关系。

步骤S417,区块链节点返回角色绑定成功信息。

具体的,区块链节点可以将角色绑定成功信息返回至执行终端设备72,也可以一起将角色绑定成功信息返回至提案终端设备71。

可以理解,通过上述图6a-图6b以及上述图7所对应实施例中所述的流程,将业务合约的使用权限分配给不同的权限角色,当业务对象需要使用相应的业务功能时,就为其绑定相应的权限角色,可以使得业务合约对应的权限分配更加明晰,操作更加便捷,可以提高权限管理的准确性和可控性。

进一步地,基于上述图4所对应实施例所提供的数据处理方法,当业务对象需要调用业务合约时,就可以通过权限代理合约以及权限合约对其进行权限验证了。为便于理解,请一并参见图8,图8是本申请实施例提供的一种权限验证方法的流程示意图。其中,该方法可以由计算机设备(例如,上述图1所对应实施例中的区块链节点集群1000中的任一区块链节点)执行。以下将以本方法由计算机设备执行为例进行说明,其中,该基于区块链的数据处理方法至少可以包括以下步骤S501-步骤S502:

步骤S501,接收目标业务对象发送的目标业务请求,根据所述业务请求获取权限代理合约,通过所述权限代理合约调用权限合约,通过所述权限合约对所述目标业务对象进行权限验证处理,得到权限验证结果。

具体的,目标业务请求中可以包含目标调用方法信息,则通过权限合约对目标业务对象进行权限验证处理,得到权限验证结果的一个可行实施过程,可以为:通过权限合约获取对象权限记录表和权限角色列表;若未在对象权限记录表中查找到目标业务对象相同的业务对象,则确定权限验证结果为权限验证失败结果;若在对象权限记录表中查找到目标业务对象相同的业务对象,则将对象权限记录表中,与目标业务对象相同的业务对象相关联的权限角色,确定为目标权限角色;将权限角色列表中,与目标权限角色相关联的可调用方法信息,确定为目标可调用方法信息;若目标可调用方法信息包含目标调用方法信息,则确定权限验证结果为权限验证成功结果;若目标可调用方法信息不包含目标调用方法信息,则确定权限验证结果为权限验证失败结果。

为便于理解,假设对象权限记录表为{业务对象D-资源发行角色和资源转移角色;业务对象F-资源转移角色},权限角色列表为{资源转移角色-资源管理合约地址-资源转移方法名称;资源发行角色-资源管理合约地址-资源发行方法名称},假设目标业务对象为业务对象D,其想调用的方法对应的调用方法信息E为资源管理合约地址-资源发行方法名称,那么区块链节点在获取到对象权限记录表后,可以确定资源发行角色和资源转移角色为目标权限角色,然后将资源管理合约地址-资源转移方法名称以及资源管理合约地址-资源发行方法名称确定为目标可调用方法信息,明显,目标可调用方法信息中也包含调用方法信息E,则区块链节点可以确定权限验证结果为权限验证成功结果。

步骤S502,若所述权限验证结果为权限验证成功结果,则通过所述权限代理合约将所述目标业务请求转发至目标业务合约;通过所述目标业务合约执行所述目标业务请求,得到业务执行结果,将所述业务执行结果返回至所述目标业务对象。

具体的,权限验证成功结果表明目标业务对象具有执行目标业务请求的权限,因此可以通过权限代理合约将目标业务请求转发至目标业务合约,然后,区块链节点可以通过目标业务合约执行目标业务请求,得到业务执行结果。

通过本申请实施例提供的方法,业务对象无法直接调用业务合约,其发起的请求会以权限代理合约为入口,区块链节点会先通过权限代理合约调用权限合约来获取业务对象绑定的权限角色以及权限角色绑定权限,从而验证业务对象的权限,可以提高权限管理的准确性和可控性。

进一步地,当权限代理合约中存储有提案对象对应的提案白名单、执行对象对应的执行白名单以及协调对象对应的协调白名单后,任何有关权限合约的合约更新提案(合约升级、新增权限角色、权限角色功能绑定以及业务对象绑定权限角色)均需要经过提案对象、执行对象以及协调对象的多重确认。在权限代理合约中未存储有提案白名单、执行白名单以及协调白名单之前,可以超级管理对象来配置提案白名单、执行白名单以及协调白名单,从而将权限管理的权限分散开。

为便于理解,请一并参见图9,图9是本申请实施例提供的一种权限合约初始化方法的流程示意图。如图9所示的流程涉及到部署终端设备91、管理终端设备92、权限代理合约93以及权限合约94。其中,部署终端设备91是指合约所有者关联的终端设备,其可以是上述图1所示的终端设备集群10中的任一终端设备,例如,执行终端设备91可以为终端设备10a。其中,管理终端设备92是指超级管理员关联的终端设备,其可以是上述图1所示的终端设备集群10中的任一终端设备,例如,执行终端设备91可以为终端设备10b。其中,权限代理合约93、权限合约94均可以是部署在区块链网络中的智能合约,即区块链网络中的任一区块链节点(可以为上述图1所示的区块链网络1000中的任一区块链节点,例如,区块链节点1000a)中可以部署有权限代理合约93、权限合约94。可以理解,部署终端设备91(或者管理终端设备92)与权限代理合约93、权限合约94之间的数据交互,可以通过部署终端设备91(或者管理终端设备92)对应的业务服务器与部署有权限代理合约93、权限合约94的区块链节点进行通信实现。

如图9所示,权限合约初始化方法的流程包括以下步骤:

步骤S611,部署终端设备91请求区块链节点部署权限合约。

具体的,部署终端设备91可以向区块链节点发送权限合约部署请求(包含权限合约对应的合约代码),区块链节点在权限合约部署请求通过共识后,可以根据权限合约对应的合约代码部署权限合约,并向部署终端设备91返回权限合约的合约地址。

步骤S612,部署终端设备91请求区块链节点部署权限代理合约。

具体的,部署终端设备91可以向区块链节点发送权限代理合约部署请求(包含权限代理合约对应的合约代码,权限合约地址,超级管理对象地址)。区块链节点在权限代理合约部署请求通过共识后,可以根据权限代理合约对应的合约代码部署权限代理合约,并向部署终端设备91返回权限代理合约的合约地址。

步骤S613,设置权限合约地址、超级管理对象地址。

具体的,区块链节点还会通过部署好的权限代理合约存储权限合约地址、超级管理对象地址。

步骤S614,管理终端设备向区块链节点发送对象配置请求。

具体的,对象配置请求中可以包含提案白名单、执行白名单以及协调白名单。

步骤S615,区块链节点根据对象配置请求获取权限代理合约93,然后通过权限代理合约93调用权限合约94来确定管理者身份。

具体的,确定管理者身份即确定管理终端设备92关联的管理对象的身份。区块链节点可以通过权限合约获取管理对象对应的管理对象地址,若确定管理对象地址和权限代理合约93中存储的超级管理对象地址相同,就确定管理确认通过。

步骤S616,管理确认通过,区块链节点设置提案者、执行者和协调者。

具体的,区块链节点可以将提案白名单、执行白名单以及协调白名单写入权限代理合约中。

步骤S617,删除超级管理对象地址。

具体的,超级管理对象的职责就是设置提案者、协调者和执行者,当设置完成后,超级管理对象就失去了作用,此时可以删除超级管理对象地址。

通过本申请实施例提供的方法,可以将权限管理的权限分散到提议者、执行者和协调者,这样可以确保在权限实施过程中有更多的检查和平衡,减少了错误或不适当行为的可能性,从而避免超级管理员的权限滥用带来的问题,增强合约的安全性和灵活性。

进一步地,为便于了解多签场景下(即提案对象、执行对象以及协调对象的数量均为多个时)的权限合约更新的数据交互过程,请一并参见图10,图10是本申请实施例提供的一种多签场景下的权限合约更新的流程示意图。如图10所示的流程涉及到提案终端设备11a、…、提案终端设备11n、执行终端设备12a、…、执行终端设备12n、权限代理合约13、权限合约14。其中,提案终端设备11a、…、提案终端设备11n、执行终端设备12a、…、执行终端设备12n均可以为上述图1所示的终端设备集群10中的任一终端设备。其中,权限代理合约13、权限合约14均可以是部署在区块链网络中的智能合约,即区块链网络中的任一区块链节点(可以为上述图1所示的区块链网络1000中的任一区块链节点,例如,区块链节点1000a)中可以部署有权限代理合约13、权限合约14。可以理解,提案终端设备11a(或者提案终端设备11n、执行终端设备12a、…、执行终端设备12n)与权限代理合约13、权限合约14之间的数据交互,可以通过提案终端设备51(或者提案终端设备11n、执行终端设备12a、…、执行终端设备12n)对应的业务服务器与部署有权限代理合约13、权限合约14的区块链节点进行通信实现。

如图10所示,多签场景下的权限合约更新的流程包括以下步骤:

步骤S711,提案终端设备11a签名合约更新提案,并广播签名和合约更新提案。

具体的,多个提案终端设备中可以有个目标提案终端设备,用于负责生成合约提案请求和收集其他提案终端设备的签名。假设当前的目标提案终端设备为终端设备11n。

步骤S712,提案终端设备11n接收到M个签名,生成合约提案请求。

具体的,多个提案终端设备接收到合约更新提案,会决定是否赞同该合约更新提案,如果赞同,就对合约更新提案进行签名发送给提案终端设备11n。

具体的,提案终端设备11n可以不用等待所有的提案终端设备均赞同该合约更新提案后,再生成合约提案请求,提案终端设备11n可以等到接收到M个签名,就根据合约更新提案生成合约提案请求。其中,M为设置的阈值,其值通常低于提案对象的总数量的2/3,可以防止过多的提案对象丢失私钥时,权限管理系统失效。

步骤S713,提案终端设备11n向区块链节点发送合约提案请求和M个签名。

步骤S714,区块链节点根据合约提案请求获取权限代理合约13,然后通过权限代理合约13调用权限合约14来确定提案者身份。

具体的,步骤S713-步骤714的实现可以参考上述图4所对应实施例中步骤S101的相关描述,这里不再进行赘述。

步骤S715,当提案者身份确认,区块链节点进行提案多签验证。

具体的,提案多签验证即对M个签名进行验证,具体实现可以参加上述图4所对应实施例中步骤S101的可选描述,这里不再进行赘述。

步骤S716,提案多签验证通过,区块链节点进入等待期。

步骤S717,多个执行终端设备向执行终端设备12n发送同意签名。

具体的,多个执行终端设备中可以有个目标执行终端设备,用于负责生成提案执行请求和收集其他执行终端设备的同意签名。其中,同意签名是执行终端设备同意合约更新提案后通过自己的私钥生成的签名。

步骤S718,执行终端设备12n接收到L个同意签名,生成提案执行请求。

具体的,执行终端设备12n也可以不用等待所有的执行终端设备均赞同该合约更新提案后,再生成提案执行请求,执行终端设备12n可以等到接收到L个同意签名,就生成提案执行请求。其中,L为设置的阈值,其值通常低于执行对象的总数量的2/3,可以防止过多的执行对象丢失私钥时,权限管理系统失效。

步骤S719,执行终端设备12n向区块链节点发送提案执行请求和L个同意签名。

步骤S720,区块链节点根据提案执行请求获取权限代理合约13,然后通过权限代理合约13调用权限合约14来确定执行者身份。

步骤S721,当执行者身份确认,区块链节点进行执行多签验证。

具体的,执行多签验证集对M个同意签名进行验证,即实现过程可以参考提案多签验证。

步骤S722,执行多签验证通过,区块链节点执行合约更新提案。

通过本申请实施例提供的方法,将更多业务对象设定为提议者、执行者和协调者,从而形成提议者组、执行者组和协调者组,进一步实现多签功能,例如20/30多签,要求在30个提议者中至少20名提议者签名同意提案,提案方能生效。执行者组和协调者组也可实现此类多签功能。通过引入多角色设计、双重确认机制、时间锁技术以及多签功能等特点,为各类决策过程提供了一个安全可靠的确认机制,实现了一个功能完备、既安全又灵活的权限管理方案。

请参见图11,图11是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图。该数据处理装置可以是运行于计算机设备的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该数据处理装置1可以用于执行本申请实施例提供的数据处理方法中的相应步骤。如图11所示,该数据处理装置1可以包括:合约调用模块101、提案鉴权模块102、期限设置模块103、执行鉴权模块104以及提案执行模块105。

合约调用模块101,用于接收合约提案请求,根据合约提案请求获取权限代理合约,通过权限代理合约调用权限合约;

提案鉴权模块102,用于通过权限合约对合约提案请求关联的提案对象进行提案鉴权处理,得到提案鉴权结果;合约提案请求包含针对权限合约的合约更新提案;

期限设置模块103,用于若提案鉴权结果为鉴权通过结果,则为合约更新提案设置提案等待期;权限代理合约不具有在提案等待期内执行合约更新提案的权限;

执行鉴权模块104,用于若确定合约更新提案对应的提案等待期结束,且接收到针对合约更新提案发送的提案执行请求,则根据提案执行请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对提案执行请求关联的执行对象进行执行鉴权处理,得到执行鉴权结果;

提案执行模块105,用于若执行鉴权结果为鉴权通过结果,则通过权限代理合约执行合约更新提案。

其中,合约调用模块101、提案鉴权模块102、期限设置模块103、执行鉴权模块104以及提案执行模块105的具体实现方式可以参见上述图4所对应实施例中对步骤S101-步骤S104的具体描述,这里不再进行赘述。

其中,上述数据处理装置1,还包括:协调鉴权模块106以及提案撤回模块107。

协调鉴权模块106,用于若在提案等待期内,接收到协调对象针对合约更新提案发送的提案撤回请求,则根据提案撤回请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对协调对象进行协调鉴权处理,得到协调鉴权结果;

提案撤回模块107,用于若协调鉴权结果为鉴权通过结果,则确定提案等待期提前终止,向协调对象发送提案撤回提示信息。

其中,提案撤回模块107的具体实现方式可以参见上述图4所对应实施例中对步骤S104的可选描述,这里不再进行赘述。

其中,提案鉴权模块102,包括:名单读取单元1021、地址获取单元1022以及鉴权单元1023。

名单读取单元1021,用于通过权限合约,从权限代理合约中读取提案白名单;提案白名单包含一个或多个具备提案权限的对象地址;

地址获取单元1022,用于获取合约提案请求关联的提案对象分别对应的提案对象地址;

鉴权单元1023,用于若在提案白名单中分别查找到与每个提案对象地址相同的对象地址,则确定提案鉴权结果为鉴权通过结果;

鉴权单元1023,还用于若在提案白名单中未查找到与目标提案对象地址相同的对象地址,则确定提案鉴权结果为鉴权失败结果;目标提案对象地址为合约提案请求关联的提案对象分别对应的提案对象地址中的任一提案对象地址。

其中,名单读取单元1021、地址获取单元1022以及鉴权单元1023的具体实现方式可以参见上述图4所对应实施例中对步骤S101的具体描述,这里不再进行赘述。

其中,合约提案请求关联的提案对象的数量为M个;M为正整数;

上述数据处理装置1,还包括:多签验证模块108。

多签验证模块108,用于在接收合约提案请求的同时,接收M个提案对象分别对应的签名数据;

多签验证模块108,还用于若提案鉴权结果为鉴权通过结果,则获取M个提案对象分别对应的公钥;

多签验证模块108,还用于通过每个提案对象对应的公钥分别验证每个提案对象对应的签名数据,得到M个签名验证结果;

多签验证模块108,还用于若M个签名验证结果中,属于签名验证通过结果的签名验证结果的数量超过多签阈值,则调用期限设置模块为合约更新提案设置提案等待期。

其中,多签验证模块108的具体实现方式可以参见上述图4所对应实施例中对步骤S101的可选描述,这里不再进行赘述。

其中,合约更新提案包含合约升级代码;权限代理合约中的权限验证字段包含权限合约对应的权限合约地址;

提案执行模块105,包括:合约升级单元1051。

合约升级单元1051,用于通过权限代理合约部署合约升级代码所对应的新权限合约;

合约升级单元1051,还用于将权限验证字段包含的权限合约地址更新为新权限合约对应的新权限合约地址。

其中,合约升级单元1051的具体实现方式可以参见上述图4所对应实施例中对步骤S104的具体描述,这里不再进行赘述。

其中,合约更新提案包含更新角色信息和更新可调用方法信息;

提案执行模块105,包括:角色列表获取单元1052以及角色新增单元1053。

角色列表获取单元1052,用于通过权限代理合约获取权限角色列表;权限角色列表用于记录权限角色和与权限角色相关联的可调用方法信息;记录于权限角色列表中的权限角色具有调用相关联的可调用方法信息所指示的可调用方法的权限;

角色新增单元1053,用于若未在权限角色列表中查找到更新角色信息所指示的权限角色,则根据更新角色信息创建新增权限角色;

角色新增单元1053,还用于建立新增权限角色和更新可调用方法信息之间的关联关系,根据关联关系将新增权限角色和更新可调用方法信息写入权限角色列表。

其中,角色列表获取单元1052以及角色新增单元1053的具体实现方式可以参见上述图4所对应实施例中对步骤S104的具体描述,这里不再进行赘述。

其中,上述数据处理装置1,还包括:角色更新模块109。

角色更新模块109,用于若在权限角色列表中查找到更新角色信息所指示的权限角色,则将更新角色信息所指示的权限角色确定为更新权限角色;

角色更新模块109,还用于将权限角色列表中更新权限角色相关联的可调用方法信息,替换为更新可调用方法信息。

其中,角色更新模块109的具体实现方式可以参见上述图4所对应实施例中对步骤S104的可选描述,这里不再进行赘述。

其中,合约更新提案包含新增业务对象和预绑定权限角色;

提案执行模块105,包括:记录表获取单元1054以及对象更新单元1055。

记录表获取单元1054,用于通过权限代理合约获取对象权限记录表;对象权限记录表用于记录业务对象和与业务对象相关联的权限角色;记录于对象权限记录表中的业务对象具有与相关联的权限角色相同的权限;

对象更新单元1055,用于建立新增业务对象和预绑定权限角色的关联关系,根据关联关系将新增业务对象和预绑定权限角色写入对象权限记录表。

其中,记录表获取单元1054以及对象更新单元1055的具体实现方式可以参见上述图4所对应实施例中对步骤S104的具体描述,这里不再进行赘述。

其中,上述数据处理装置1,还包括:业务调用模块110、权限验证模块111以及业务执行模块112。

业务调用模块110,用于接收目标业务对象发送的目标业务请求,根据业务请求获取权限代理合约,通过权限代理合约调用权限合约;

权限验证模块111,用于通过权限合约对目标业务对象进行权限验证处理,得到权限验证结果;

业务执行模块112,用于若权限验证结果为权限验证成功结果,则通过权限代理合约将目标业务请求转发至目标业务合约;

业务执行模块112,还用于通过目标业务合约执行目标业务请求,得到业务执行结果,将业务执行结果返回至目标业务对象。

其中,业务执行模块112的具体实现方式可以参见上述图8所对应实施例中对步骤S501-步骤S502的具体描述,这里不再进行赘述。

其中,目标业务请求包含目标调用方法信息;

权限验证模块111,包括:表获取单元1111、对象角色验证单元1112以及角色方法验证单元1113。

表获取单元1111,用于通过权限合约获取对象权限记录表和权限角色列表;

对象角色验证单元1112,用于若未在对象权限记录表中查找到目标业务对象相同的业务对象,则确定权限验证结果为权限验证失败结果;

对象角色验证单元1112,还用于若在对象权限记录表中查找到目标业务对象相同的业务对象,则将对象权限记录表中,与目标业务对象相同的业务对象相关联的权限角色,确定为目标权限角色;

角色方法验证单元1113,用于将权限角色列表中,与目标权限角色相关联的可调用方法信息,确定为目标可调用方法信息;

角色方法验证单元1113,还用于若目标可调用方法信息包含目标调用方法信息,则确定权限验证结果为权限验证成功结果;

角色方法验证单元1113,还用于若目标可调用方法信息不包含目标调用方法信息,则确定权限验证结果为权限验证失败结果。

其中,表获取单元1111、对象角色验证单元1112以及角色方法验证单元1113的具体实现方式可以参见上述图8所对应实施例中对步骤S501的描述,这里不再进行赘述。

其中,权限代理合约中包含超级管理对象地址;

上述数据处理装置1,还包括:对象配置模块113。

对象配置模块113,用于接收管理对象发送的对象配置请求,根据对象配置请求获取权限代理合约,通过权限代理合约调用权限合约;对象配置请求包含提案白名单、执行白名单以及协调白名单;

对象配置模块113,还用于通过权限合约获取管理对象对应的管理对象地址,若确定管理对象地址和超级管理对象地址相同,则将提案白名单、执行白名单以及协调白名单写入权限代理合约中,将超级管理对象地址从权限代理合约中删除。

其中,对象配置模块113的具体实现方式可以参见上述图9所对应实施例中对步骤S614-步骤S617的描述,这里不再进行赘述。

请参见图12,图12是本申请实施例提供的一种计算机设备的结构示意图。如图12所示,上述图11所对应实施例中的数据处理装置1可以应用于计算机设备1000,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图12所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。

在如图12所示的计算机设备1000中,网络接口1004可提供网络通讯网元;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:

接收合约提案请求,根据合约提案请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对合约提案请求关联的提案对象进行提案鉴权处理,得到提案鉴权结果;合约提案请求包含针对权限合约的合约更新提案;

若提案鉴权结果为鉴权通过结果,则为合约更新提案设置提案等待期;权限代理合约不具有在提案等待期内执行合约更新提案的权限;

若确定合约更新提案对应的提案等待期结束,且接收到针对合约更新提案发送的提案执行请求,则根据提案执行请求获取权限代理合约,通过权限代理合约调用权限合约,通过权限合约对提案执行请求关联的执行对象进行执行鉴权处理,得到执行鉴权结果;

若执行鉴权结果为鉴权通过结果,则通过权限代理合约执行合约更新提案。

应当理解,本申请实施例中所描述的计算机设备1000可执行前文任一实施例中对该数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。

此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文任一实施例中对上述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。

上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

此外,这里需要指出的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文任一实施例提供的方法。

本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。

本申请实施例中,术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照网元一般性地描述了各示例的组成及步骤。这些网元究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的网元,但是这种实现不应认为超出本申请的范围。

以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

相关技术
  • 一种铁锰钴共掺杂负载型芬顿催化剂、制备方法及其应用
  • 离子交换树脂为载体的非均相芬顿催化剂及其制备方法与应用
  • 三维石墨烯基非均相芬顿催化剂、其制备方法及其应用
  • 介孔钴系碳硅纳米球芬顿催化剂的制备方法、介孔钴系碳硅纳米球芬顿催化剂及其应用
  • 一种类芬顿催化剂及其制备方法和应用
技术分类

06120116523274