一种基于区块链多层联盟式账户管理系统及方法与流程

文档序号:18886540发布日期:2019-10-15 21:00阅读:276来源:国知局
一种基于区块链多层联盟式账户管理系统及方法与流程

本发明属于区块链技术领域,具体涉及一种基于区块链多层联盟式账户管理系统。

技术背景

在商业活动及公司内部管理过程中,不可避免的会遇到权限控制问题,为了满足系统在各个应用场景下的业务需求,并提高系统的安全性能,就需要对参与区块链系统不同的组织和不同的角色进行权限区分,采用多层架构管理方式,系统性管理所有积分账户。

当区块链技术应用到更为复杂的场景时,其参与者往往是行业中的企业、机构等,出于安全性、性能等因素,需要对区域链中参与者的权限进行更为细致的管理。

当前解决账户权限管理的技术是,为不同的角色在数据库中添加不同的角色控制字段,字段的值不同,代表着不同的权限,用户访问系统中的方法时,系统会判断是否满足权限,然后选择放行或是发出警告并阻止程序继续执行,如此实现了权限管理。

但是在现有技术方案下,如果数据库遭到了攻击,权限字段被修改,很容易导致整个系统的权限失控,该方法的对数据库的安全性要求较高,提高系统的安全性也会增加维护的成本。比如,现有的积分系统主要依赖数据库存储所有的历史交易信息,历史信息和账户数据遭遇攻击时,很可能会被修改或清空,安全性不能完全保障;中心化的数据库的错误会影响整个系统的运营。

此外,如果拥有访问数据库权限的账户恶意修改数据库内的信息,会造成不可逆的影响,不能再次找回之前的数据;如果要解决这个问题就需要对数据库进行多次备份,这也增加了数据库的维护成本。



技术实现要素:

基于现有技术的上述缺陷,本发明的目的是提供一种基于区块链多层联盟式账户管理系统,以解决现有的账户管理系统组织扩展性差、安全性不高的问题。

为解决上述技术问题,本发明的一方面,提供了一种基于区块链多层联盟式账户管理系统,所述账户管理系统包括多个层级的架构,根据架构层级创建各层的组织,每个组织拥有自己的账本,各个组织的账户数据分别存储在各自的账本中。

进一步地,所述层级由上到下为:

系统管理层,用于管理所有组织和所有账户;

服务主体层,用于管理各种自定义服务给商户或用户;

商户层,用于使用上层的服务并提供服务给用户,也就是说,下一层使用上层提供的服务,并且提供服务给下一层;

用户层,用于查询用户账户信息。

进一步地,在联盟式账户管理系统的某层级需要增加新的组织时,则创建一个新的账本,并在该账本中赋予该组织有权限调用的智能合约方法。

进一步地,形成的四层架构中的各个组织的账户使用权限不同,其中,整个系统只有一个系统管理账户,拥有账户权限管理系统的最高权限,可以调用智能合约中的所有方法,系统管理账户是唯一可以发行基础积分,并通过管控基础积分实现对系统内积分的发行总量的控制;系统支持多个服务主体账户,并可以水平扩展,每个服务主体账户对应一个独立的商业服务,可以接受系统管理账户向其发放的基础积分,可以通过自定义的规则向商户发放基础积分,也可以通过自定义的规则向普通用户发放积分,服务主体账户拥有与其相应的信息统计查询功能;系统支持多个商户账户,可以接受系统管理账户或者某个服务主体账户向其发放的基础积分,可以通过自定义规则向普通用户发放积分,他拥有商户的信息统计查询功能,并在与服务主体进行交易按照既定的规则使用积分转账;用户账户,可以接收服务主体或商户发放的积分,并与商户间进行转账。

进一步地,在已有的一个层级中新增一个组织的过程包括:

更新原通道配置文件,把新组织添加到通道配置文件中,启动新组织节点,将节点加入通道;

新增智能合约,为该智能合约赋予新组织所能调用的方法权限;

安装新的智能合约,初始化智能合约,设置智能合约的背书策略。

进一步地,所述系统管理账户对积分管理的方法包括:

创建基础积分账户,通过传入基础积分编号、基础积分余额、创建账户对象及账户类型类进行基础积分的创建;

基础积分发放,通过传入接受基础积分的通道名、智能合约名、接受基础积分账户编号、发放基础积分的额度、描述信息、发放基础积分时间、渠道、交易编号、账户交易类型这九个参数类进行积分发放;

基础积分交易,通过传入接受账户的通道名、智能合约名、转出账户、接受账户、转账、转账描述、交易时间、渠道、交易编号、账户交易类型这十个参数来进行积分交易;

查询基础积分账户,通过传入基础积分编号来进行查询;

查询基础积分账户交易历史,通过传入基础积分编号来进行查询交易历史。

进一步地,所述智能合约包含业务层、入口层和实体层,其中,业务层为全部业务规则的指定,是实体层数据和逻辑的组合,实体层为业务层提供结构体和读写数据库的方法,其中,每增加一个组织,则只增加一个入口层即可,如果业务改变,则只修改业务层中的对应方法。

基于本发明的另一方面,还提供了一种基于区块链多层联盟式账户管理的方法,所述方法包括:

设置不同的架构层级,不同的层级具有不同的管理权限;

根据架构层级创建各层的组织,每个组织拥有自己的账本,各个组织的账户数据分别存储在各自的账本中;

在联盟式账户管理系统的某层级需要增加新的组织时,则创建一个新的账本,并在该账本中赋予该组织有权限调用的智能合约方法。

进一步地,所述架构层级包括从上往下的四层组织架构,组织中的账户分别为系统管理账户、服务主体账户、商户账户和用户账户,其中,所述系统管理账户,用于发行基础积分,对发行的基础积分进行总量控制;所述服务主体账户,用于向系统管理账户购买基础积分,通过自定义的规则向商户发放基础积分,并拥有相应的信息统计查询功能;所述商户账户,用于接受系统管理账户或某个服务主体账户向其发放的基础积分,通过自定义的规则向用户账户发放基础积分,并拥有相应的商户的信息统计查询功能;所述用户账户,位于最底层,接受服务主体账户或商户账户发放的基础积分,与商户交易时使用该基础积分。

进一步地,所述方法还包括:在已有的一个层级中新增一或多个组织,包括:

更新原通道配置文件,把新组织添加到通道配置文件中,启动新组织节点,将节点加入通道;

新增智能合约,为该智能合约赋予新组织所能调用的方法权限;

安装新的智能合约,初始化智能合约,设置智能合约的背书策略。

与现有技术相比,本发明所公开的一种基于区块链多层联盟式账户管理系统及方法,具有如下技术效果:

(1)本发明中基于区块链的多层联盟式账户权限管理系统可以满足更复杂的商业服务要求,可以容纳服务内容区别迥异的服务主体,可以满足不同商业服务中对积分系统的权限管理需求,可以保障账户体系的稳定和安全性。

(2)本发明的系统的智能合约采用低耦合度的三层架构,分别为入口层,业务层和实体层;业务层为入口层提供所有公有方法,实体层为业务层提供结构体和读写数据库的方法,业务层和实体层对于入口层来讲都是相同的;当业务有改变时,只要修改业务层中的对应方法就可以,并不需要修改实体层中的方法。

(3)在本发明的系统中,当需要增加一个组织时,因为业务层提供的所有公有方法都相同,所以只要增加一个入口,根据这个组织的权限,为这个入口赋予权限范围内的业务层中的公有方法。

(4)本发明的系统中,每个组织拥有多个节点和多个用户,智能合约根据组织不同,分成了多个入口文件,选择不同的入口文件具有不同的访问权限,新增一个入口文件,文件中赋予该组织有权限调用的智能合约方法,然后再从该入口文件作为安装路径,安装并实例化智能合约。

附图说明

图1为采用本发明实施例所述的一种基于区块链多层联盟式账户管理系统的架构图。

图2为本发明实施例所述的各层级账户对积分管理的流程示意图。

图3为本发明实施例所述的一种基于区块链多层联盟式账户管理方法的流程图。

具体实施方式

为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。

参照图1所示,本发明实施例公开了一种基于区块链多层联盟式账户管理系统,该联盟式账户管理系统包含四层架构,也即系统管理层、服务主体层、商户层和用户层,每层架构所具有的权限不同,其中,系统管理层的权限范围最大,服务主体层次之,用户层的权限范围相对最小。本领域技术人员应当理解的是,本发明实施例的账户管理系统包含有四层架构,但根据实际需求及层级功能的划分,其还可以是超过四层的架构或者低于四层的架构。

具体来说,整个系统只有一个系统管理账户,拥有账户权限管理系统的最高权限,可以调用智能合约中的所有方法,系统管理账户是唯一可以发行基础积分,并通过管控基础积分实现对系统内积分的发行总量的控制;系统支持多个服务主体账户,并可以水平扩展,每个服务主体账户对应一个独立的商业服务,可以接受系统管理账户向其发放的基础积分,可以通过自定义的规则向商户发放基础积分,也可以通过自定义的规则向普通用户发放积分,服务主体账户拥有与其相应的信息统计查询功能;系统支持多个商户账户,可以接受系统管理账户或者某个服务主体账户向其发放的基础积分,可以通过自定义规则向普通用户发放积分,他拥有商户的信息统计查询功能,并在与服务主体进行交易按照既定的规则使用积分抵扣交易;用户账户,可以接收服务主体或商户发放的积分,并在与商户进行交易时使用。

每个架构层级创建有各层的组织,每个组织拥有自己的账本,各个组织的账户数据分别存储在各自的账本中。

具体来说,以四层架构为例,该四层架构层级中的账户由上到下包括:

系统管理账户,对应于系统管理层,用于发行基础积分,对发行的基础积分进行总量控制;

服务主体账户,对应于服务主体层,用于向系统管理账户购买基础积分,通过自定义的规则向商户发放基础积分或转账给商户账户,并拥有相应的信息统计查询功能;用于转账给商户账户;

商户账户,对应于商户层,用于接受系统管理账户或某个服务主体账户向其发放的基础积分,通过自定义的规则向用户账户发放基础积分,并拥有相应的商户的信息统计查询功能;

用户账户,对应于用户层,接受服务主体账户或商户账户发放的基础积分,与商户交易时使用该基础积分,还可查询该用户的账户信息;

其中,所有系统管理账户信息存储在系统管理账本中,所有服务主体账户信息存储在服务主体账本中,所有商户账户信息存储在商户账本中,所有用户账户信息存储在用户账本中,每个层级的组织拥有的账本独立。

在联盟式账户管理系统的某层级需要增加新的组织时,则创建一个新的账本,并在该账本中赋予该组织有权限调用的智能合约方法。

具体来说,本发明的智能合约采用低耦合度的三层架构,包含业务层、入口层和实体层,其中,业务层为入口层提供所有公有方法,实体层为业务层提供结构体和读写数据库的方法,业务层和实体层对于入口层来讲均为相同,其中,每增加一个组织,则只增加一个入口层即可,如果业务改变,则只修改业务层中的对应方法,并不需要修改实体层中的方法。分别为入口层,业务层和实体层,现有技术中,每个组织创建一个智能合约,一个智能合约中包含了所有的方法,当业务有改变时,就要修改整个智能合约,但是本发明在业务有改变时,只要修改业务层中的对应方法就可以,并不需要修改实体层中的方法。

本发明根据不同的组织,分成多个入口文件,比如可以分成用户账户入口、商户账户入口、服务主体账户入口、系统管理账户入口四个入口文件,不同的入口文件具有不同的访问权限;选择不同的入口文件会要求用户访问时拥有不同的权限,形成了独特的通过智能合约入口管理权限方法。四个入口文件分别对应有四层组织,四个智能合约,即:用户智能合约,商户智能合约,服务主体智能合约,系统管理智能合约,组成了一个总的的智能合约。每个智能合约存储着对应组织的数据,方便数据的查询和统计。

通过将四个组织对应的四个智能合约组合成一个大的智能合约,来管理整套区块链联盟系统;例如:每个智能合约内可调用的方法不同。从可调用方法的多与少中达到了控制账户管理权限;如:用户智能合约智能调用创建账户和查询账户的方法,但是商户智能合约不仅可以创建账户和查询账户,还有权限调用转移基础积分的方法,商户智能合约就比用户智能合约的权限范围高;同理,更多的,服务主体账户拥有有权限调用查询统计方法,系统管理账户拥有有权限调用发放基础积分和发放基础积分总额统计的方法

本发明实施例中,在已有的一个层级中新增一个组织的过程包括:

更新原通道配置文件,把新组织添加到通道配置文件中,启动新组织节点,将节点加入通道;

新增智能合约,为该智能合约赋予新组织所能调用的方法权限;

安装新的智能合约,初始化智能合约,设置智能合约的背书策略。

现有技术每增加一个组织,需要重写一个新的智能合约,每个智能合约都是完全不同的,对于使用区块链联盟链的组织扩展性很差。而在本发明的系统中,当需要增加一个组织时,因为业务层提供的所有公有方法都相同,所以只要增加一个入口,根据这个组织的权限,为这个入口赋予权限范围内的业务层中的公有方法;例如:在业务场景中有三个组织,分别是用户,商户,系统管理账户。用户可以通过入口调用创建账户、查询账户方法;商户可以通过入口调用创建账户、查询账户、转账方法;系统管理账户可以通过入口调用创建账户、查询账户、发放基础积分方法;如果加入一个新的组织:服务主体商户,只要创建一个新的入口,在入口添加服务主体商户有权限调用的方法,包括创建账户、查询账户、转账方法;这种通过入口文件管理权限的方法具有很强的扩展性,可以对各种业务场景完全适应。

本发明实例中智能合约在实例化的时候,需要指定背书策略,举例如下:

用户智能合约:

or(‘pfmsp.member’,‘smctmsp.member’,‘mctmsp.member’,‘cstmsp.member’),请求4个组织的签名中任意一个都可以。

商户智能合约:

or(‘pfmsp.member’,‘smctmsp.member’,‘mctmsp.member’),请求3个组织的签名中任意一个都可以。

服务主体智能合约:or(‘pfmsp.member’,‘smctmsp.member’),请求2个组织的签名中任意一个都可以。

系统管理智能合约:or(‘pfmsp.member’),请求系统管理账户这个组织的签名。

其中,所述系统管理账户对积分管理的方法包括:

创建基础积分账户,通过传入基础积分编号、基础积分余额、创建账户对象及账户类型类进行基础积分的创建;通过checkargslength()方法检查传入参数个数;通过querywallet()方法查询是否有系统账户,判断是否已经创建过该账号,如果存在,返回账户已存在的错误;通过strconv.parseint()方法判断传入的基础积分余额是否为整数;创建账户对象typewalletstruct{},内含基础积分编号、基础积分余额、账户类型属性,调用wallet.save()方法将账户对象保存到世界状态数据库中;返回该账户对象。

基础积分发放,通过传入接受基础积分的通道名、智能合约名、接受基础积分账户编号、发放基础积分的额度、描述信息、发放基础积分时间、渠道、交易编号、账户交易类型这九个参数类进行积分发放;通过checkargslength()方法检查传入参数个数;通过strconv.parseint()方法判断传入的发放基础积分的额度是否为正整数;调用跨智能合约调用方法invokeotherchaincode(),调用接受账户所在智能合约的创建增量的方法createincrement(),为接受账户创建增量;同时调用系统管理账户的创建增量方法createincrement()为系统账户增加相同的额度,方便于统计发放基础积分总额。

基础积分交易,通过传入接受账户的通道名、智能合约名、转出账户、接受账户、转账、转账描述、交易时间、渠道、交易编号、账户交易类型这十个参数来进行积分交易;通过strconv.parseint()方法判断传入的转账是否为整数并且不为零;调用跨智能合约调用方法invokeotherchaincode(),调用接受账户所在智能合约的创建增量的方法createincrement(),为接受账户创建增量;打印日志;调用转出账户所在智能合约的创建增量的方法createincrement(),为转出账户创建增量;

查询基础积分账户,通过传入基础积分编号来进行查询;通过checkargslength()方法检查传入参数个数;通过getwallet()方法统计所有的增量和;通过querywallet()查询账户信息,判断是否存在,如果存在账户,账户余额增加该增量和;通过json.marshal()将值转化为账户对象,则返回该对象。

查询基础积分账户交易历史,通过传入基础积分编号来进行查询交易历史。通过checkargslength()方法检查传入参数个数;通过gethistoryforkey()方法查询基础积分编号所对应的数据库内的交易历史,遍历返回的交易历史,将返回的值通过json.marshal()方法编组成账户集合;返回该集合。

发明的系统的网络是不公开的,如果想进入网络中必须获取授权,根据账户层级创建不同的组织,每个组织拥有多个节点、多个用户,用户通过账户服务模块注册获取对应的证书文件和密钥文件;当使用某用户节点通过中间层访问区块链网络时,选择该节点权限的智能合约入口来安装和实例化智能合约,此时该节点在调用智能合约时会验证证书是否具有权限;选择不同的入口文件会限制用户访问时拥有不同的权限,形成了独特的通过智能合约入口来管理权限的方法;这种方法使新增一个组织变得非常简单了,只要新增一个入口文件,文件中赋予该组织有权限调用的智能合约方法,然后在从入口文件路径安装并实例化智能合约即可,极大地提高了系统的扩展性。

下面来对本发明利用区块链网络进行交易的控制过程作详细叙述:

1、新的用户使用账户服务模块进行注册认证授权(ca)登记;先基于fabric网络的多层联盟式账户权限管理系统分成四层管理架构,配置账户对应的组织关系,根据系统架构和联盟链的特点,(1)我们要进行fabricca服务端和客户端的配置,实现fabric系统msp账户权限管理;(2)然后根据安装部署智能合约的入口不同,对账户管理权限进行二次管理;其中,第一种账户权限管理方法中,fabricca是超级账本fabric内的memberservice组件,对网络内各个实体的身份证书的管理,主要实现:负责fabric网络内所有实体的身份管理,包括身份的注册、注销等;负责证书管理,包括ecert(身份证书)、tcerts(交易证书)等的发放和注销;

2、账户服务模块产生用户证书文件和用户的私钥;

3、客户端提交交易提案,将本次请求提交到该组织的背书模块,由背书模块验证事务;系统的网络验证基于grpc的安全传输层协议连接,而密码生成工具默认生成的用于节点作为服务端时使用的服务端证书均不包含在账户对象中(与账户目录同级别的),网络验证体系中,当客户端(如peer)与服务端(如orderer)为了顺利建立安全连接时,使用标准的tls握手流程,各自提供所持有的tls凭证,进行身份的验证。

4、背书验证模块检查背书策略,确定指定的对等节点的正确分配、已经签署了客户端节点用户的私钥签名并且携带有客户端节点用户的身份证书文件,并根据签名进行身份验证,验证身份通过后,模拟执行该请求中所调用的智能合约的方法;这次模拟的输出就是智能合约的结果,分别是读集合和写集合;执行完成之后对交易结果用该背书模块的私钥进行签名并返回给客户端;

上述背书节点验证过程中,需要对每个事务进行验证,以确保没有其他事务修改他已经读取的数据;换句话来讲,其确保了执行批准时间以后读取的数据没有发生变化,因此执行结果仍然有效,并且可以提交到账本状态数据库;如果读取的数据被另一个事务更改,则该区块中的相同事务被标记为无效,并且不应用于账本的状态数据库;客户端应用程序被警告,并且可以在适当的情况下处理错误或者再一次尝试提交请求;

5、当客户端收到一个或多个背书节点发来的带有背书节点签名后的交易信息后,判断本次提案请求是否通过,如果通过,就通过sdk向排序服务模块发起更新申请,排序服务模块接收到客户端发来的请求之后,无须检查该事务的全部内容,只是从网络上所有的通道中接收事务,对相同的通道的事务进行封装,发送给共识模块,并监听共识模块;

6、共识模块接收到封装的交易信息后,按照时间顺序进行排序后放到消息队列中,共识模块保证了所有的排序服务模块看到的信息顺序都是相同的;

7、由排序服务模块从共识模块排序后放到的消息队列中拉取信息;

8、排序服务模块将为从共识模块的消息队列中拉取到的每一个通道中的一个或者多个事务创建区块,排序服务模块将打包好的区块发送给通道中组织里的通信模块,由通信节模块接受新的区块;

9、在新的区块中的事务集将被通信模块验证;在peer记账节点将区块提交到本地的区块链之前,其会检验该区块中所有的交易,首先根据背书策略来检测是否所有需要进行背书的节点都已经对交易结果进行签名,并且根据交易的负载验证签名的正确性。然后,peer会对交易的读集合进行版本检测,以确保数据的完整性以及二次消费这样的危险。fabric为了增加整个系统的吞吐量,增加了交易在并行执行中并发控制的功能,并在区块被正式提交并写入区块链之前会保证所有被读的数据都没有经过修改。而区块中的事务集也会因此被添加标记,标记为有效或者无效;每一个通道都会将生成的区块添加到所属的链上,对于每个有效的事务,记账模块都会将事务的写集提交到当前状态数据库中;如果因为前面已经发起了一个事务,则通知客户端应用程序,事务已经被追加到该链上,并通知该事务是否被验证或者无效。

一个新的服务主体账户接入本区块链网络的过程为:

更新原通道配置文件,把新组织添加到通道配置文件中,启动新组织节点,将节点加入通道;

新增智能合约,为该智能合约赋予新组织所能调用的方法权限;

安装新的智能合约,初始化智能合约,设置智能合约的背书策略。

参照图3所示,本发明的另一实施例还提供了一种基于区块链多层联盟式账户管理的方法,该方法包括:

提供了一种基于区块链多层联盟式账户管理的方法,所述方法包括:

设置不同的架构层级,不同的层级具有不同的管理权限;

根据架构层级创建各层的组织,每个组织拥有自己的账本,各个组织的账户数据分别存储在各自的账本中;

在联盟式账户管理系统的某层级需要增加新的组织时,则创建一个新的账本,并在该账本中赋予该组织有权限调用的智能合约方法。

本实施例以四层组织架构为例,组织中的账户分别为系统管理账户、服务主体账户、商户账户和用户账户,其中,系统管理账户,用于发行基础积分,对发行的基础积分进行总量控制;服务主体账户,用于向系统管理账户购买基础积分,通过自定义的规则向商户发放基础积分,并拥有相应的信息统计查询功能;商户账户,用于接受系统管理账户或某个服务主体账户向其发放的基础积分,通过自定义的规则向用户账户发放基础积分,并拥有相应的商户的信息统计查询功能;所述用户账户,位于最底层,接受服务主体账户或商户账户发放的基础积分,与商户交易时使用该基础积分。每层所拥有的权限不同。

该方法还包括:在已有的一个层级中新增一或多个组织,包括:

更新原通道配置文件,把新组织添加到通道配置文件中,启动新组织节点,将节点加入通道;

新增智能合约,为该智能合约赋予新组织所能调用的方法权限;

安装新的智能合约,初始化智能合约,设置智能合约的背书策略。

本发明中基于区块链的多层联盟式账户权限管理系统及方法可以满足更复杂的商业服务要求,可以容纳服务内容区别迥异的服务主体,可以满足不同商业服务中对积分系统的权限管理需求,可以保障账户体系的稳定和安全性。

上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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