区块链系统及其权限管理方法
技术领域
本公开涉及区块链领域,尤其涉及一种区块链系统及其权限管理方法。
背景技术
随着区块链技术的发展,目前业界将区块链划分为三类:公有链(如比特币网络)、联盟链(同类型机构联盟组建的区块链)和私有链(同一公司内部的区块链)。其中,公有链对全部节点开放,而联盟链和私有链通常是许可链,有权限限制,在安全性上有更多的保障。
具体地,许可链可能有数十个可信节点承担维护网络共识处理用户请求的任务,其它节点可以是代表用户自己的节点,也可以是中间服务商运行的节点,为用户设备上的轻节点提供服务,还可以是监管机构运行的节点,监督整个网络中的交易数据。这样的许可链系统和公有链并无本质上的不同,只有管理上的差别,即公有链允许任何匿名用户随时加入退出,而许可链系统则只允许通过身份认证的用户加入网络,每一个用户在链上的权限也各有不同。
但是,目前现有的技术还没有考虑到具体如何对区块链上的账户进行权限控制,例如哪些账户拥有哪些权限,哪些账户可以修改其他账户的权限,并修改成什么样的权限。
发明内容
本公开实施例的主要目的是提供一种区块链系统及其权限管理方法,能够对区块链系统中的各个节点的权限进行管理。
为了实现上述目的,本公开实施例第一方面提供一种区块链系统,所述区块链系统包括多个节点组,并且,所述区块链系统的区块中存储有每一节点组的组账号信息,所述组账号信息包括所述节点组的权限集,所述节点组中的每一节点拥有所述节点组的权限集中的所有权限;并且,
每一节点组中的节点的权限由所述节点组的父组中的管理节点控制,其中,所述节点组的父组是指创建所述节点组的上一级节点组;并且,
每一节点组的权限集中的权限多于所述节点组的孩子组对应的权限集,其中,所述节点组的孩子组是指所述节点组创建的下一级节点组;并且,
每一节点的成员账号信息存储于区块链的区块中,所述成员账号信息包括所述节点的权限。
本公开实施例第二方面提供一种区块链系统的权限管理方法,所述方法包括:
第一节点组中的管理节点判断目标节点是否属于所述第一节点组或者属于所述第一节点组的孩子组,其中,所述第一节点组是所述区块链系统中的任一级的节点组;
若所述目标节点属于所述第一节点组或者属于所述第一节点组的孩子组,则向区块链系统广播权限管理信息,所述权限管理信息包括所述目标节点所属节点组的组账号信息以及所述目标节点的成员账号信息,所述权限管理信息用于在所述区块链系统中产生新区块时,被记录在所述新区块中。
本公开实施例第三方面提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序被处理器执行时实现如第二方面所述的方法。
本公开实施例第四方面提供一种区块链节点,包括:第三方面所述的非临时性计算机可读存储介质;以及
一个或者多个处理器,用于执行所述非临时性计算机可读存储介质中的程序。
上述技术方案,实现了用树状结构的组关系管理不同权限集的目的,利用树节点间上下级和平级关系,约束管理的范围,达到灵活且直观的权限管理效果,并且组账号信息以及成员账号信息保存于区块链的区块中,实现利用区块链的防篡改特性,构建一个安全、可靠的权限分组管理系统。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种区块链系统的结构示意图;
图2为本公开实施例提供的一种区块链系统的权限管理方法的流程示意图;
图3为本公开实施例提供的另一种区块链系统的权限管理方法的流程示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了使本领域技术人员更容易理解本发明实施例提供的技术方案,下面首先对涉及到的相关技术进行简单介绍。
区块链是由区块链网络中所有节点共同参与维护的去中心化分布式数据库系统,它是由一系列基于密码学方法产生的数据块组成,每个数据块即为区块链中的一个区块。根据产生时间的先后顺序,区块被有序地链接在一起,形成一个数据链条,被形象地称为区块链。
在基于PoW(Proof of Work,工作量证明)的区块产生机制中,有效区块的产生要求区块链网络中的挖矿的节点正确解出一个需要计算量的数学难题,在计算出满足特定条件的结果后,节点设备将包括区块数据的区块进行广播,其它节点设备认可此区块符合协议定义的格式和标准后,即可将该区块添加到区块链上,其中,区块链网络中的所有节点设备本地存储有完整的区块链区块。
值得说明的是,参照比特币(bitcoin)应用,上述区块数据可以包括各个节点设备在转账(Transaction)过程中广播的交易数据。该交易数据通常包括了一定的货币属性,以及拥有者的数字签名,接受者的地址。在交易数据被写入区块后,经过对拥有者数字签名的验证,即将所有权转移到接受者一方。
许可链是在区块链的基础上,增加了对各个节点设备的权限控制,从而可以要求用户需要通过身份认证才可以加入网络,也可以让许可链上的每个用户的权限各有不同。
针对现有技术中没有一套完备的区块链权限机制的问题,本公开实施例提供一种区块链系统10,如图1所示,所述区块链系统10包括多个节点组,如图1中所示的节点组101、节点组102、节点组103、节点组104和节点组105。每个节点组中包括至少一个节点,所述节点是指区块链中的登录用户账号的节点设备。
其中,所述区块链的区块中存储有每一节点组的组账号信息,所述组账号信息包括所述节点组的权限集,所述节点组中的每一节点拥有所述节点组的权限集中的所有权限。
并且,每一节点组中的节点的权限由所述节点组的父组中的管理节点控制,其中,所述节点组的父组是指创建所述节点组的上一级节点组。
并且,每一节点组的权限集中的权限多于所述节点组的孩子组对应的权限集,其中,所述节点组的孩子组是指所述节点组创建的下一级节点组。
并且,每一节点的成员账号信息存储于区块链的区块中,所述成员账号信息包括所述节点的权限。
上述技术方案利用树状结构的组关系管理不同权限集,利用树节点间上下级和平级关系约束管理的范围,达到灵活且直观的权限管理效果,从而使区块链系统具备权限控制(即成为许可链系统),并且组账号信息以及成员账号信息保存于区块链的区块中,实现利用区块链的防篡改特性,构建一个安全、可靠的权限分组管理系统。
示例地,许可链系统中包括如下表1所示的权限:
权限名 |
作用 |
Miner(挖矿) |
是否允许参与共识算法 |
Sender(转账) |
是否允许转出金额 |
Receiver(收账) |
是否允许接收金额 |
Deployment(部署) |
是否允许部署合约 |
Caller(调用) |
是否允许调用合约 |
Connection(接入) |
是否允许接入许可链 |
Admin(权限管理) |
可以给其他节点赋哪些权限 |
表1
以图1所示的区块链系统为了进行说明,节点组101作为root组,其组账号信息可以预先存储在区块链的创始块中,并且,节点组101的组账号信息的权限集中拥有表1中的所有权限。节点组102和节点组103作为节点组101创建的孩子组,其分别拥有表1中所示权限的部分权限。值得说明的是,节点组102和节点组103称为兄弟组,本公开实施例对于兄弟组之间的权限集不做约束,也就是说,节点组102和节点组103之间可以拥有相同或部分相同的权限集,也可以拥有完全不同的权限集。
节点组104和节点组105作为节点组102的孩子组,其拥有的权限集少于节点组102的权限集,节点组102和节点组103作为节点组101的孩子组,其拥有的权限集少于节点组101。
另外,表1中所示的权限只是举例说明,在具体实施时,许可链系统中的权限可以根据实际应用场景设定。例如,在银行的应用场景下,取款ATM和存款ATM可以作为许可链系统中的两个节点组,则取款ATM组的权限应包括读取许可链数据的权限,而存款ATM组的权限应包括写许可链的权限。本公开实施例对具体的应用场景不做限定。
除了节点组具有账号信息,每一个节点还具有成员账号信息,其中,节点成员账号信息包括该节点的权限。值得说明的是,每一个节点可以默认具备包括该节点所属节点组的所有权限。在本公开实施例的一种可能的实现方式中,同一个节点可以属于不同的多个节点组,还可以根据实际需求,为某一节点配置该节点组没有的权限,因此,节点的权限可以多于该节点组所属的节点组的权限。
节点的成员账号信息还可以包括指示该节点是否为所属节点组中的管理节点的信息,其中,管理节点可以对孩子组中的节点的权限进行更改。在一种可能的实现方式中,管理节点还可以对同组的非管理节点的权限进行更改。
下面对成员账号信息和组账号信息进行详细说明。
具体地,节点的成员账号信息可以包括以下字段:
Auth字段,用以表示所述节点具有的权限;
GroupStatus字段,用于表示所述节点所属的节点组;
Organizer字段,用于描述所述节点在所属的节点组中是否为管理节点。
可选地,节点的成员账号信息可以包括:Status字段,用于描述所述节点在所属节点组中是否有效。
示例地,某一节点的成员账号信息如下所示:
“Auth”:Object{……},
“GroupStatus”:{
“bccefc5abfa2f53556da6c015e1862e42e7823a1”:{
“Organizer”:true,
“Status”:enable}
}
其中,bccefc5abfa2f53556da6c015e1862e42e7823a1是节点组的标识,“Organizer”:true表示该节点在节点组中属于管理节点,“Status”:enable表示该节点在所属节点组中有效,其中,管理节点可以通过改变某一成员节点的Status字段的值,实现将该成员节点添加或者删除节点组。
每一节点组的组账号信息包括以下字段:
PGroup字段,用于表示所述节点组的父组;
Auth字段,用于表示所述节点组对应的权限集;
SubStatus字段,用于表示所述节点组的孩子组。
示例地,某一节点组的组账号信息如下所示:
“PGroup”:“bccefc5abfa2f53556da6c015e1862e42e7823a1”,
“Auth”:Object{……},
“SubStatus”:{
“bccefc5abfa2f53556da6c015e1862e42e7823a3”:enable
}
其中,bccefc5abfa2f53556da6c015e1862e42e7823a1是该节点组的父组,bccefc5abfa2f53556da6c015e1862e42e7823a3是该节点组的孩子组。
在本公开实施例的一种可能的实现方式中,区块链系统包括M个节点组,其中,第N个节点组是第N-1个节点组的孩子组,N是大于1且小于M的正整数,其中,所述第N个节点组的组账号信息还包括DirectMgr字段,用于表示所述第N个节点组是否允许超父组管理,其中,所述第N个节点组的超父组是指第1至第N-2个节点组。
仍以图1所示的区块链系统10进行说明,节点组101是节点104和节点组105的超父组,则该节点组104和节点组105的组账号信息中还可以包括DirectMgr字段,例如:“DirectMgr”:true,表示该节点组允许超父组管理。
本公开实施例还提供一种区块链系统的权限管理方法,如图2所示,所述方法包括:
S201、第一节点组中的管理节点判断目标节点是否属于所述第一节点组或者属于所述第一节点组的孩子组,其中,所述第一节点组是所述区块链系统中的任一级的节点组;
S202、若所述目标节点属于所述第一节点组或者属于所述第一节点组的孩子组,则向区块链系统广播权限管理信息,所述权限管理信息包括所述目标节点所属节点组的组账号信息以及所述第二节点的成员账号信息,所述权限管理信息用于在所述区块链中产生新区块时,被记录在所述新区块中。
其中,在目标节点属于所述第一节点组或者属于所述第一节点组的孩子组的情况下,该权限管理信息用于更改所述目标节点的目标节点所属节点组的组账号信息或者所述第二节点的成员账号信息,也就是说,该权限管理信息包括更改后的目标节点所属节点组的组账号信息以及所述第二节点的成员账号信息。
值得说明的是,每一次权限更改后,更改后的成员账号信息以及所属组的组账号信息存储在区块链新的区块中,并将之前的区块存储的该目标节点的账号信息无效。由于每一节点本地存储有区块链的所有区块,因此,每一节点在执行任何操作时,可以查询区块链中最新储存的该节点所属组的组账号信息以及该节点的成员账号信息,以确定该节点是否具有执行该操作的权限。
在本公开实施例的一种可能的实现方式中,所述方法还包括:
若所述目标节点不属于所述第一节点组且不属于所述目标节点组的孩子组时,判断所述第一节点组是否为所述目标节点所属节点组的超父组;若所述第一节点组是所述目标节点所属节点组的超父组,则根据所述目标节点所属节点组的组账号信息判断所述目标节点所属节点组是否允许超父组管理;若所述目标节点所属节点组允许超父组管理,则向所述区块链系统广播所述权限管理信息。
仍以图1进行说明,若节点组101中的管理节点在需要对节点组104中的任一节点的权限进行更改时,需查询节点组104的组账号信息,以确定节点组104是否允许超父组管理,若节点组104允许超父组管理,则节点组101中的管理节点可以在区块链系统中广播修改节点组104中的任一节点的权限管理信息。若节点组104不允许超父组管理,则节点组101中的管理节点广播修改节点组104中的任一节点的权限管理信息的操作。
可选地,所述方法还包括:若所述第一节点组不是所述目标节点所属节点组的超父组,则判断所述目标节点当前是否加入任何节点组;所述目标节点当前未加入任何节点组,则向所述区块链系统广播所述权限管理信息。
这样,除了对节点权限进行修改,上述方法还可以创建节点组以及将新接入许可链系统的节点加入节点组。也就是说,在目标节点为新接入许可链系统的节点时,该第一节点组的管理节点具备创建组和允许新节点接入的权限,则该管理节点可以广播权限管理信息,该权限管理信息包括新创建的节点组的组账号信息,以及新接入的目标节点在该节点组的成员账号信息。
为了使本领域技术人员更加理解本公开实施例提供的技术方案,下面以一个具体的例子对区块链系统的权限管理方法进行说明,如图3所示,该方法包括:
S301、在区块链的创始块中写入root组的组账号信息以及成员账号信息。
示例地,在创始块中写入3292ff3619b62d584ef82863652fcfa1ac23e0c7节点的账号信息:
其中,节点3292ff3619b62d584ef82863652fcfa1ac23e0c7属于root组bccefc5abfa2f53556da6c015e1862e42e7823a1,并且为该root组的管理节点。root组拥有系统所有权限。并且,由于root组没有父组,因此,组账号信息中的Pgroup字段为空。
进一步地,可以通过步骤S302创建新的节点组(即root组的孩子组)并将第一目标节点加入该节点组。
S302、root组的管理节点在区块链系统中广播第一权限控制信息,所述第一权限控制信息包括第一目标节点的成员账号信息以及该第一目标节点所属的第二节点组的组账号信息。
示例地,该第一权限控制信息可以参照步骤S301中描述的写入创始块的账号信息,此处不再赘述,其中,该第二节点组账号信息的Pgroup字段应为root组的标识bccefc5abfa2f53556da6c015e1862e42e7823a1。
进一步地,第二节点组中的管理节点可以执行步骤S303至步骤S308管理第二目标节点的权限。
S303、第二节点组中的管理节点判断第二目标节点是否属于第二节点组中的非管理节点。
若该第二目标节点属于第二节点组中的非管理节点,则执行步骤S307;若该第二目标节点不属于第二节点组中的非管理节点,则执行步骤S304。
S304、该第二节点组中的管理节点判断第二目标节点所属的节点组是否为该第二节点组的孩子组。
若第二目标节点所属的节点组是该第二节点组的孩子组,则执行步骤S307;若第二目标节点所属的节点组不是该第二节点组的孩子组,则执行步骤S305。
S305、该第二节点组中的管理节点判断该第二节点组是否为第二目标节点所属的节点组的超父组。
若该第二节点组是第二目标节点所属的节点组的超父组,则执行步骤S306;若该第二节点组不是第二目标节点所属的节点组的超父组,则执行步骤S308。
S306、该第二节点组中的管理节点判断第二目标节点所属的节点组是否允许超父组管理。
若第二目标节点所属的节点组允许超父组管理,则执行步骤S307;若第二目标节点所属的节点组不允许超父组管理,则执行步骤S308。
S307、该第二节点组中的管理节点在区块链系统中广播第二权限控制信息,所述第二权限控制信息用于更改所述第二目标节点的在所述区块链系统中的权限。
S308、禁止该第二节点组中的管理节点更改所述第二目标节点的在所述区块链系统中的权限的操作。
值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
本公开实施例还提供一种非临时性计算机可读存储介质1,该非临时性计算机可读存储介质1中包括一个或多个程序,该一个或多个程序用于执行一种区块链系统的权限管理方法,其中,所述区块链系统具体可参照图1对应的实施例的描述,此处不再赘述。所述方法包括:
第一节点组中的管理节点判断目标节点是否属于所述第一节点组或者属于所述第一节点组的孩子组,其中,所述第一节点组是所述区块链系统中的任一级的节点组;
若所述目标节点属于所述第一节点组或者属于所述第一节点组的孩子组,则向区块链系统广播权限管理信息,所述权限管理信息包括所述目标节点所属节点组的组账号信息以及所述第二节点的成员账号信息,所述权限管理信息用于在所述区块链中产生新区块时,被记录在所述新区块中。
可选地,所述方法还包括:
若所述目标节点不属于所述第一节点组且不属于所述目标节点组的孩子组时,判断所述第一节点组是否为所述目标节点所属节点组的超父组;
若所述第一节点组是所述目标节点所属节点组的超父组,则根据所述目标节点所属节点组的组账号信息判断所述目标节点所属节点组是否允许超父组管理;
若所述目标节点所属节点组允许超父组管理,则向所述区块链系统广播所述权限管理信息。
可选地,所述方法还包括:
若所述第一节点组不是所述目标节点所属节点组的超父组,则判断所述目标节点当前是否加入任何节点组;
所述目标节点当前未加入任何节点组,则向所述区块链系统广播所述权限管理信息。
本公开实施例还提供一种区块链节点2,该区块链节点2包括:
上述的非临时性计算机可读存储介质1;以及
一个或者多个处理器,用于执行上述的非临时性计算机可读存储介质1中的程序。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。