一种区块链权限管理方法及系统与流程

文档序号:14179044阅读:463来源:国知局
一种区块链权限管理方法及系统与流程

本发明涉及区块链技术领域,特别涉及一种区块链权限管理方法及系统。



背景技术:

区块链通过密码学的手段为每个参与者建立对应的数字身份。每个参与者的数字身份由一对非对称公私钥对构成,其中公钥可通过私钥生成。参与者利用私钥对信息签名后发送至区块链,区块链根据签名恢复出公钥,并基于公钥(或者其摘要)识别参与者,进一步对参与者的操作进行鉴权。

公有区块链在处理参与者提供的信息时,需要消耗一定的手续费,通常是区块链中的代币。只有参与者具有足额的代币储备,才能够将信息记入区块链。然而,上述限制过于简单,无法适应更复杂的应用场景。当区块链技术被应用于特定行业中时,其参与者往往是行业中的企业、机构等。出于安全性、性能等因素,需要对区块链中参与者的权限进行更为细致的管理。

目前,针对上述应用场景,已提出一些权限管理方案。现有方案的种类及不足之处如下:

第一、通过隔离的方式实现访问权限的控制。具体的实施方法包括但不限于:建立虚拟专用网络,能够连接到网络内节点的参与者则具有权限;在区块链外围建立网关,只有通过网关才能连接到区块链网络中,并在网关进行权限管理。此类方案的关键之处是,权限管理由外部设施承担,不直接在区块链中进行。应用此类方案需要承担外部设施失效、作恶等风险,因此此类方案大多用于参与者之间的信任度较高的场景中。

第二、使用智能合约进行权限管理。此方案的关键是权限管理智能合约。该智能合约中保存了身份及权限信息,其他智能合约在执行的过程中通过调用该智能合约的接口,实现权限的鉴定。此方案中的权限信息和鉴权逻辑均在智能合约层面实现,因此无法对低于智能合约层面的权限(例如发送交易、获取区块链状态等)进行控制。应用此类方案需要承担交易洪水攻击(记录大量无用交易在区块链中)等风险。

因此,如何解决上述问题,实现对区块链中的权限进行全方位的配置,不仅限于智能合约层面,也不需要借助外部设施,是本领域技术人员需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种区块链权限管理方法及系统,实现对区块链中的权限进行全方位的配置,不仅限于智能合约层面,也不需要借助外部设施。

为解决上述技术问题,本发明提供一种区块链权限管理方法,所述方法包括:

识别用户发送的权限变更交易;其中,所述权限变更交易的内容包括发起者、变更权限用户、需变更权限以及对应的变更权限值;

判断所述权限变更交易中的所述发起者是否具有权限变更权限;

若所述发起者具有权限变更权限,则将所述变更权限用户的每个需变更权限的权限值修改为对应的变更权限值,并将执行后的所述权限变更交易记录到区块中;

对所述区块中的交易进行共识,当所述共识通过后所述区块中对应的权限变更交易生效。

可选的,所述判断所述权限变更交易中的所述发起者是否具有权限变更权限,包括:

从区块链中获取最新区块,并从所述最新区块中获取校验信息作为mpt树的根;

利用所述mpt树的根构造mpt树,并从所述mpt树中获取所述发起者对应的权限信息;

根据所述权限信息判断所述权限变更交易中的所述发起者是否具有权限变更权限。

可选的,所述判断所述权限变更交易中的所述发起者是否具有权限变更权限,包括:

调用智能合约接口从数据库中获取所述发起者对应的权限信息;

根据所述权限信息判断所述权限变更交易中的所述发起者是否具有权限变更权限。

可选的,所述对区块中的交易进行共识,当所述共识通过后所述区块中对应的权限变更交易生效,包括:

接收到所述区块时,提取所述区块中的全部交易;

在接收到的所述区块的父区块的基础上构建临时区块,并在所述临时区块中依次执行各所述交易;

当全部所述交易执行完成后,判断所述临时区块中的权限校验信息是否与接收到的所述区块中的权限校验信息一致;

若一致,则所述区块中的交易校验通过,并进行共识,当所述共识通过,所述区块中对应的权限变更交易生效。

可选的,所述识别用户发送的权限变更交易,包括:

接收用户发送的交易;

判断所述交易是否具有权限变更交易设定标识;

若具有,则确定所述交易为权限变更交易。

可选的,区块链中权限保存的方式,包括:

利用数据摘要算法对每个权限信息进行处理,生成每个所述权限信息对应的校验信息;

在区块结构中增加所述校验信息的关键字段,用于记录每个区块对应的权限信息。

可选的,该方法还包括:

识别用户发送的操作;

判断所述操作的发起者是否具执行所述操作的权限;

若所述操作的发起者具有执行所述操作的权限,则执行所述操作。

本发明还提供一种区块链权限管理系统,所述系统包括:

识别模块,用于识别用户发送的权限变更交易;其中,所述权限变更交易的内容包括发起者、变更权限用户、需变更权限以及对应的变更权限值;

判断模块,用于判断所述权限变更交易中的所述发起者是否具有权限变更权限;

权限变更执行模块,用于若所述发起者具有权限变更权限,则将所述变更权限用户的每个需变更权限的权限值修改为对应的变更权限值,并将执行后的所述权限变更交易记录到区块中;

共识模块,用于对所述区块中的交易进行共识,当所述共识通过后所述区块中对应的权限变更交易生效。

可选的,所述判断模块,包括:

权限读取单元,用于从区块链中获取最新区块;

校验信息获取单元,用于从所述最新区块中获取校验信息作为mpt树的根;

第一权限信息获取单元,用于利用所述mpt树的根构造mpt树,并从所述mpt树中获取所述发起者对应的权限信息;

第一判断单元,用于根据所述权限信息判断所述权限变更交易中的所述发起者是否具有权限变更权限。

可选的,所述判断模块,包括:

第二权限信息获取单元,用于调用智能合约接口从数据库中获取所述发起者对应的权限信息;

第二判断单元,用于根据所述权限信息判断所述权限变更交易中的所述发起者是否具有权限变更权限。

本发明所提供的一种区块链权限管理方法将权限管理深度集成在区块链中。每一次对权限进行的操作,均需要全网达成共识才会生效。每一次操作均会打包记录在区块链中,便于审计。由于深度集成在区块链中,因此在实施的过程中,能够对区块链中的权限进行全方位的配置,不仅限于智能合约层面,也不需要借助外部设施。本发明还提供一种区块链权限管理系统,具有上述有益效果,在此不再赘述。

附图说明

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

图1为本发明实施例所提供的区块链权限管理方法的流程图;

图2为本发明实施例所提供的区块链权限管理系统的结构框图。

具体实施方式

本发明的核心是提供一种区块链权限管理方法及系统,其权限管理直接在区块链中进行,无需借助外部设施,且深度集成到区块链中,能够对区块链进行全方位的权限控制,对权限的变更需经过全网共识,并记录在区块链中,使变更记录不可篡改,便于审计。

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

请参考图1,图1为本发明实施例所提供的区块链权限管理方法的流程图;该方法可以包括:

s100、识别用户发送的权限变更交易;其中,权限变更交易的内容包括发起者、变更权限用户、需变更权限以及对应的变更权限值。

由于本实施例提供的区块链权限管理方法要求深度集成到区块链中,能够对区块链进行全方位的权限控制,以便克服现有技术中仅能在智能合约层面实现区块链权限管理(即无法对低于智能合约层面的权限,例如发送交易、获取区块链状态等进行控制)或者是依靠外部设施。因此本实施例在区块链中增加了一种新的交易类型即权限变更交易,对应于权限的操作。每当区块链收到权限的变更请求时,会产生对应的权限变更交易。该权限变更交易可以与普通交易类似,在执行之后会记录在区块中即将权限信息的更改历史记录在区块链中,以便审计。同时可以像普通交易那样产生回执(receipt),以便用户可以根据回执确定权限变更交易是否成功,即该回执可以使用户及时了解到权限变更交易的执行情况。本实施例通过权限变更交易实现权限信息的改动操作包括:增加、删除、修改等。实施例中涉及到的权限可以包括权限管理、部署合约以及发送普通交易,实际并不局限于上述三种,甚至可以包括具有限制(如有效期)的复杂权限。

进一步,本实施例并不限定通过向区块链中发送该权限变更交易的方式,例如可以是通过外部调用接口发送权限变更交易,或者是通过智能合约接口发送权限变更交易。具体的,用户可通过调用该外部接口来操作权限信息。或者是用户通过调用智能合约接口,使智能合约在执行的过程中,由智能合约虚拟机来操作权限信息。借助智能合约接口,可实现利用智能合约进行权限的自动化配置。当然如无需自动化配置,也可不提供具有该功能的智能合约接口。区块链上的其他智能合约,可通过合约间的消息调用,直接变更、获取权限信息。外部用户的访问接口可以为jsonrpc。以下以jsonrpc接口为例说明权限变更交易请求的具体形式。

jsonrpc接口请求示例:

{"jsonrpc":"2.0","method":"get_permission","params":["0x1234567890123456789012345678901234567890"],"id":1}

jsonrpc接口响应示例:

{"jsonrpc":"2.0","id":1,"result":{"change_permission":false,"deploy_contract":true,"send_transaction":false}}

由于该权限变更交易与其它普通交易类似,因此需要使得区块链能够识别出该权限变更交易。本实施例并不限定具体的识别方法。例如可以通过在权限变更交易中添加特殊的标识使之与普通交易进行区分,也可以是通过发送该权限变更交易对应的特定接口的地址等唯一标识信息使之与普通交易进行区分。本实施例并不限定标识的种类和形式,只要是可以与权限变更交易具有唯一对应关系即可。即可选的,识别用户发送的权限变更交易可以包括:

接收用户发送的交易;

判断交易是否具有权限变更交易设定标识;

若具有,则确定交易为权限变更交易。

具体的,本实施例并不限定权限变更交易设定标识的形式。例如可以是在交易中添加特殊标识位;或者是根据调用的智能合约的地址等。例如,用户可直接发送交易,调用权限智能合约中的接口。可根据调用合约的地址,区分该交易是否是权限变更交易。或用户发送权限变更交易到区块链,该交易有特殊的标识,从而区块链能够识别出该交易的操作为权限变更。

本实施例并不对权限变更交易中包含的内容以及内容格式等进行限定,用户可以根据实际情况进行设定。但是该权限变更交易至少需要包含,权限变更交易的发起者,变更权限用户(即要变更的用户,可以使用外部账户地址来表示),需变更权限(即要变更的权限的项目,例如部署合约、发送交易等),变更权限值(即要变更的权限的值,例如可以用true或false表示)。

s110、判断权限变更交易中的发起者是否具有权限变更权限。

具体的,步骤s110和s120为对权限变更交易具体的执行过程。其中步骤s110主要是判断权限变更交易发起者是否合法,即发起者是否有权限执行区块链权限的变更修改操作。仅仅当权限变更交易发起者合法时,才会执行具体的变更操作。当权限变更交易发起者不合法时,则权限变更交易失败。本实施例并不限定具体的判断过程,该过程与权限信息的保存形式等有关。即在区块链这样一个应用场景中如何对权限进行保存,例如如何维持一个权限表。为了进一步保证权限管理的可靠性,可以对权限信息的变更记录通过密码学手段进行保护,无法被篡改。也便于对审计。例如使用一种密码学的可验证的数据结构来保存权限信息。该数据结构在保存原始数据之外,提供了校验信息。校验信息具有如下特性:

第一:相同的原始数据具有相同的校验信息;

第二:难以根据校验信息构造出与之匹配的原始数据。

其中,信息字段通常使用密码学中的摘要算法来产生。权限信息的校验信息作为关键字段,包括在区块结构中。关键字段的意义是:该字段会被编码到区块数据中,并用于产生区块的哈希。通过上述设计,权限信息的变化会导致其校验信息的变化,校验信息的变化会导致区块数据及其哈希的变化。因此,可通过区块哈希快速检查权限信息是否正确,使权限信息难以被篡改。可使用任何能够导致区块哈希发生确定性改变的方法来实现,例如通过trie来实现。优选的,区块链中权限保存的方式可以包括:

利用数据摘要算法对每个权限信息进行处理,生成每个权限信息对应的校验信息;在区块结构中增加所述校验信息的关键字段,用于记录每个区块对应的权限信息。这样每个区块中对应的校验信息(即该区块对应关键字段的数据)的变化会导致该区块数据及其哈希的变化。因此,可通过区块哈希快速检查权限信息是否正确,使权限信息难以被篡改。下面列举两种可选的实施例。

第一种,可选的,判断权限变更交易中的发起者是否具有权限变更权限可以包括:

从区块链中获取最新区块,并从最新区块中获取校验信息作为mpt树的根;

利用mpt树的根构造mpt树,并从mpt树中获取发起者对应的权限信息;

根据权限信息判断权限变更交易中的发起者是否具有权限变更权限。

其中,该种判断方式对应的权限信息的保存形式可以如下:

使用mpt(merklepatriciatrie)树保存权限数据,并使用其根节点的哈希作为权限数据的校验信息。在区块结构中新增区块字段(例如permissions字段),用于保存权限数据的校验信息。权限数据的结构可以是基于用户的列表、基于组的列表等,在此不做限制。涉及到的权限可以根据区块链的特性进行配置,如发送交易、部署合约、调用只读接口等,具体不做限制。此时按照区块链的特性,可获取在某一区块中的权限信息,具体步骤如下:

1、从数据库中获取指定的区块(可以根据区块编号或区块哈希来确定指定的区块,这里的指定的区块可以是最新区块)。

2、从区块关键字段中得到permissions字段的值。

3、根据permissions的值构造一棵merklepatriciatrie树。

4、从merklepatriciatrie树中获取发起者对应的权限信息。

第二种,可选的,判断权限变更交易中的发起者是否具有权限变更权限可以包括:

调用智能合约接口从数据库中获取发起者对应的权限信息;

根据权限信息判断权限变更交易中的发起者是否具有权限变更权限。

其中,该种判断方式对应的权限信息的保存在智能合约中。具体的实施方式如下:

1、编写智能合约称之为权限智能合约。

2、将权限智能合约写入到创世块中。

3、为权限智能合约分配特定的地址。

经过上述步骤后,权限信息将被保存至权限智能合约的存储区(storage)中。对权限信息的变更会导致该合约存储区的变更,使状态树(statetrie)发生变化,从而导致区块的哈希改变。在本实施例中,状态树可作为权限的校验信息。由于采用了智能合约的形式,外部用户查询权限信息,可直接调用权限智能合约中的接口。与普通的智能合约查询方式完全一致,在此不再赘述。区块链内部获取权限信息用于对操作进行控制时,可使用以下两种方式来进行。

第一:在区块链内部模拟call的执行,调用智能合约接口得到权限值。

第二:模拟智能合约的执行,直接从数据库中获取权限值。

s120、若发起者具有权限变更权限,则将变更权限用户的每个需变更权限的权限值修改为对应的变更权限值,并将执行后的权限变更交易记录到区块中。

具体的,此时若发起者不具有权限变更权限,则权限变更交易失败,为了完整记录权限修改的过程,此时也需要将该权限变更交易记录到区块中。进一步若发起者具有权限变更权限,则将变更权限用户的每个需变更权限的权限值修改为对应的变更权限值,无论修改是否成功均将执行后的权限变更交易记录到区块中。

这两种方式中执行交易的方式也不同。第一种,先从临时区块中获取校验信息,并以其为根构建mpt树。将变更后的权限信息更新到mpt树。获取更新后的mpt树的根,作为区块的新的权限校验信息。第二种,直接调用智能合约接口执行该交易即可,智能合约执行之后会自动更新区块中的校验信息。

无论哪种情况下都可以产生回执,使得发起者可以通过回执的具体内容判断出权限变更交易的具体执行情况。

s130、对区块中的交易进行共识,当共识通过后区块中对应的权限变更交易生效。

具体的,本实施例为了保证权限变更的合法性和有效性,权限交易需要在全网达成共识后,才会记录到区块链中,所做的权限变更才会生效。即可以理解为步骤s130是区块链在共识的过程,其中包括了对权限信息的变化进行校验的过程。本实施例并不限定全网共识通过的具体条件。例如可以是全网超过三分之二的用户共识通过即认为该权限变更交易实现了全网共识。此时共识通过后区块中对应的权限变更交易生效。即可选的,对区块中的交易进行共识,当共识通过后区块中对应的权限变更交易生效可以包括:

接收到区块时,提取区块中的全部交易;

在接收到的区块的父区块的基础上构建临时区块,并在临时区块中依次执行各交易;

当全部交易执行完成后,判断临时区块中的权限校验信息是否与接收到的区块中的权限校验信息一致;

若一致,则所述区块中的交易校验通过,并进行共识,当所述共识通过,所述区块中对应的权限变更交易生效。

其中,在临时区块中依次执行各交易的具体执行形式,即权限变更交易的执行方式根据权限获取形式的不同而有所不同。例如当利用mpt树形式获取权限信息时,对应的权限变更交易的执行方式为:先从临时区块中获取校验信息并以其为根构建mpt树。将变更后的权限信息更新到mpt树。获取更新后的mpt树的根,作为区块的新的权限校验信息。当利用智能合约接口形式获取权限信息时,对应的权限变更交易的执行方式为:直接调用智能合约接口执行该交易即可,智能合约执行之后会自动更新区块中的校验信息。

其中,本实施例中并不对共识通过的条件进行限定,具体条件因所使用的共识算法而异。

具体的,此时区块中的全部交易包括权限变更交易也包括普通交易,即对权限信息更改的验证通常与普通交易的验证同时进行。每个区块链用户都会执行上述验证过程,当共识过程完成且结果正确时,区块中对应的权限变更交易生效。本实施例并不对共识过程所使用的具体算法进行限定。

基于上述技术方案,本发明实施例提供的区块链权限管理方法将权限管理深度集成在区块链中。区块链提供权限的操作接口,包括增、删、改、查等。每一次对权限进行的操作,均需要全网达成共识才会生效,共识及生效的过程无需人工干预。每一次操作均会记录在区块链中,便于审计。权限信息以及操作的历史记录通过密码学的手段进行保护,无法被恶意篡改。由于深度集成在区块链中,本方案在实施的过程中,能够对区块链中的权限进行全方位的配置,不仅限于智能合约层面,也不需要借助外部设施。

在区块链运行的过程中,每当遇到需要判断权限的场景时,无论发起者是通过什么形式发起的交易(例如通过智能合约接口发起的交易),无论该交易中涉及到什么种类的权限,都会对发起者是否具有该操作的权限进行验证,仅当发起者具有该种权限时,才会允许其执行对应的操作。甚至用户可能没有发起交易,只是发了一个普通的请求。例如当用户通过智能合约接口发起的交易时,会判断部署智能合约交易中的发起者是否具有部署智能合约的权限。因此,基于上述任意实施例,该方法还可以包括:

识别用户发送的操作;

判断所述操作的发起者是否具执行所述操作的权限;

若所述操作的发起者具有执行所述操作的权限,则执行所述操作。

基于上述技术方案,本发明实施例提供的区块链权限管理方法不仅能够将将权限管理深度集成在区块链中,能够对区块链中的权限进行全方位的配置,不仅限于智能合约层面,也不需要借助外部设施。还能够对区块链中各种形式的操作的权限进行验证,保证操作的可靠性。

下面对本发明实施例提供的区块链权限管理系统进行介绍,下文描述的区块链权限管理系统与上文描述的区块链权限管理方法可相互对应参照。

请参考图2,图2为本发明实施例所提供的区块链权限管理系统的结构框图;该系统可以包括:

识别模块100,用于识别用户发送的权限变更交易;其中,权限变更交易的内容包括发起者、变更权限用户、需变更权限以及对应的变更权限值;

判断模块200,用于判断权限变更交易中的发起者是否具有权限变更权限;

权限变更执行模块300,用于若发起者具有权限变更权限,则将变更权限用户的每个需变更权限的权限值修改为对应的变更权限值,并将执行后的权限变更交易记录到区块中;

共识模块400,用于对区块中的交易进行共识,当共识通过后区块中对应的权限变更交易生效。

基于上述实施例,判断模块200可以包括:

权限读取单元,用于从区块链中获取最新区块;

校验信息获取单元,用于从最新区块中获取校验信息作为mpt树的根;

第一权限信息获取单元,用于利用所述mpt树的根构造mpt树,并从所述mpt树中获取所述发起者对应的权限信息;

第一判断单元,用于根据权限信息判断权限变更交易中的发起者是否具有权限变更权限。

基于上述实施例,判断模块200可以包括:

第二权限信息获取单元,用于调用智能合约接口从数据库中获取发起者对应的权限信息;

第二判断单元,用于根据权限信息判断权限变更交易中的发起者是否具有权限变更权限。

基于上述任意实施例,识别模块100可以包括:

接收单元,用于接收用户发送的交易;

标识判断单元,用于判断交易是否具有权限变更交易设定标识;

识别单元,用于若具有权限变更交易设定标识,则确定交易为权限变更交易。

基于上述任意实施例,该系统还可以包括:

操作识别模块,用于识别用户发送的操作;

操作权限判断模块,用于判断所述操作的发起者是否具执行所述操作的权限;

操作执行模块,用于若所述操作的发起者具有执行所述操作的权限,则执行所述操作。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种区块链权限管理方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1