基于智能合约设计的权限控制方法、系统及介质与流程

文档序号:23551343发布日期:2021-01-05 21:09阅读:70来源:国知局
本发明涉及金融技术、区块链应用
技术领域
:,具体地,涉及基于智能合约设计的权限控制方法、系统及介质。尤其地,涉及区块链以及智能合约相关技术模块。
背景技术
::区块链用户权限管理是区块链技术在行业领域实用化的核心内容,传统的权限管理技术可以分为某一节点的权限控制和外挂权限系统的权限控制(如图1所示,为传统的链的访问流程示意图),这些访问控制技术都能很好的解决行业应用问题,但同样也存在一些缺陷,目前技术中无法实现把权限控制细化到节点中各个模块的功能级别,目前技术中方案的权限控制粒度都是在节点级别或着需要依赖于外部权限系统,把某一节点的所有功能模块开放给用户,相对来说权限控制粒度还是太大或者太重,且无法保证依赖的外部权限系统是否可信,如果需要控制链节点中某些功能可以访问和/或某些功能却不能访问,在目前技术中还没有解决方案。专利文献cn201911085168.6公开了一种基于链下授权的隐私数据查询方法及装置,该专利是应用于区块链节点,调用权限控制合约中维护的白名单来实现权限控制,而本专利中只提到针对于查询类操作的白名单控制,该专利目前有三个问题,一是对于白名单的维护过于繁琐,添加人或者删除人都需要对白名单进行更新,二是该专利只涉及了查询类的操作的权限控制,并没有涉及到交易类或者账户类操作的权限控制,三是该专利的权限控制是在节点级别,那如果有需要控制到节点的某些功能权限可以访问而某些功能不能访问,该专利却无法实现。而我们的方法应用于区块链的所有节点的所有功能和方法,控制的粒度更加精细,我们是基于权限控制合约中的权限标识来达到权限控制,不区分查询类和交易类操作,针对任意操作和行为都可以进行权限控制,而且可以随意组合,权限控制的更加灵活专利文献cn201911424785.4公开了一种区块链权限机制的使用方法,该专利中利用了身份信息与权限请求信息与区块链共识策略达到共识来实现权限控制,此方法还需要基于用户模块、区块链管理模、处理模块、信息反馈模块,几大模块的协同处理来共同完成用户的权限校验和管理,专利中共识策略也是模糊带过,依赖的处理模块也比较多,太重,专利中也是利用某一种策略来实现权限控制,控制粒度还是太大,对于新进来的用户都需要重新维护权限,且需要通过权限的更新请求来维护用户权限范围,维护成本过高,而我们的方法可以控制的function级别,更加的精细化,我们利用的权限控制合约来进行权限控制,无需依赖其他模块,更加的轻量级专利文献cn201710556783.5公开了一种用户权限控制方法及装置,该专利中是基于区块链的去中心化系统中的任一节点设备,接收用户在执行预设的权限操作时,基于持有的私钥提交的执行结果,读取与所述用户持有的私钥对应的公钥绑定的所述用户的身份标识,基于身份标识查询与所述身份标识关联的用户权限,并基于查询到的所述用户权限对所述用户进行权限控制,该专利存在以下问题,问题一专利是基于去中心化系统的任一节点进行权限控制,控制粒度还是节点级别,不够细,问题二,需要基于获取到身份标识在去查询模块去查询用户的权限信息,才能进行权限控制,效率不高,流程过于复杂化,。针对于以上两个问题,我们的方法的控制粒度是在function级别,更加的精细化,其次我们的我们权限处理全部是在权限控制合约里面进行处理,无需其他的模块交互,流程简单,更加的轻量级,效率更高技术实现要素:针对现有技术中的缺陷,本发明的目的是提供一种基于智能合约设计的权限控制方法、系统及介质。根据本发明提供的一种基于智能合约设计的权限控制方法,将智能合约拆分为第一合约和第二合约,第一合约包含权限控制组件,第二合约包括权限校验组件和功能分发组件以及具体的功能模块,第二合约只能通过第一合约访问,第一合约对外开放。优选地,包括:步骤s1:第一合约接受到用户的访问请求,通过权限控制组件首先区分用户是超级用户还是普通用户,超级用户可以对权限映射hash表进行维护,普通用户都只能进行常规交易和查询操作;步骤s2:第一合约的权限控制组件通过权限映射hash表快速获取到用户的权限标识,权限控制组件再将请求转发至第二合约的权限校验组件;步骤s3:第二合约的权限校验组件判断请求是否是通过第一合约转发过来,如果不是则直接打回请求,然后在对用户的权限标识进行校验,判断用户权限标识是否可以访问目标功能,如果无权访问则直接打回;步骤s4:第二合约中通过权限校验的组件的校验之后,再把请求转发给功能分发组件进行功能分发;步骤s5:第二合约功能分发组件把请求分发至具体的功能,此时在进行链的相关操作然后再由第二合约依据弹栈原理依次反馈数据至第一合约,第一合约再反馈数据给到外部用户。优选地,所述步骤s1:所述权限映射表预设多个超级用户,用来对权限映射表进行相关维护,只有超级用户可以维护权限映射表的权限规则;所述权限映射hash表的权限规则利用hash表的线性原理和/或笛卡尔集算法原理;所述权限规则分为两种:其一是角色类权限标识,将规则划分为多种角色,一种角色包含0到多个允许访问的具体功能的标识代码;其二是function代码标识,就是由0到多个允许访问的体功能的标识代码组成;基于所述的两种权限规则,两种规则可以自由组合,组合算法由超级用户自由设定,包括:基于笛卡尔集算法取两种规则的多种结果集、基于hash表的线性算法取交集和并集、通过简单覆盖的过程实现;简单覆盖的实现:是指两种规则相互覆盖,其一覆盖其二,或者其二覆盖其一;超级用户给第一合约中的权限控制组件预设定一个默认的权限规则,当新用户进来时可以默认分配相应的权限规则。优选地,所述步骤s2:权限控制组件主要由权限映射hash表组成,通过hash算法存储预设的权限规则和普通的权限规则以及用户的权限标识,通过权限映射hash表线性算法高效的获取用户的权限标识。优选地,所述步骤s3包括:步骤s3.1:第二合约权限校验组件入口通过过关设计,只提供了被第一合约权限控制组件访问的接口,不提供对外访问的接口,外部用户无法直接访问到第二合约任何组件;步骤s3.2:通过第二合约权限校验组件的入口过关校验之后,才会对用户的权限标识进行校验,判断用户的权限标识是否可以访问目标功能,如果不能则直接打回请求步骤s3.3:如果用户因无权访问接口,导致业务无法正常进行,可以通过发起权限升级申请至超级用户,告知超级用户需要升级的功能,管理员通过线上接口方式可以对用户的权限进行线上实时升级,实时生效。优选地,所述步骤s3.1:第二合约权限校验组件入口通过过关设计,是指权限校验组件的入口存放了第一合约的地址,当请求进来是会校验接受的请求的地址是否是来自于第一合约,如果是则算过关,如果不是则直接打回。优选地,所述步骤s4:第二合约中分发组件接受到权限校验组件的功能分发请求,功能分发组件基于hash表数据结构对功能方法入口设计成b树索引通道方式,功能分发组件基于b树算法索引快速找到目标功能的方法入口,然后进行对链的具体功能调用。优选地,所述步骤s5:第二合约中对链的具体功能能进行调用之后,根据方法栈原理,具体的功能数据再根据弹栈原理依次返回,即调用顺序反方向依次返回。根据本发明提供的一种基于智能合约设计的权限控制系统,将智能合约拆分为第一合约和第二合约,第一合约包含权限控制组件,第二合约包括权限校验组件和功能分发组件以及具体的功能模块,第二合约只能通过第一合约访问,第一合约对外开放;包括:模块s1:第一合约接受到用户的访问请求,通过权限控制组件首先区分用户是超级用户还是普通用户,超级用户可以对权限映射hash表进行维护,普通用户都只能进行常规交易和查询操作;模块s2:第一合约的权限控制组件通过权限映射hash表快速获取到用户的权限标识,权限控制组件再将请求转发至第二合约的权限校验组件;模块s3:第二合约的权限校验组件判断请求是否是通过第一合约转发过来,如果不是则直接打回请求,然后在对用户的权限标识进行校验,判断用户权限标识是否可以访问目标功能,如果无权访问则直接打回;模块s4:第二合约中通过权限校验的组件的校验之后,再把请求转发给功能分发组件进行功能分发;模块s5:第二合约功能分发组件把请求分发至具体的功能,此时在进行链的相关操作然后再由第二合约依据弹栈原理依次反馈数据至第一合约,第一合约再反馈数据给到外部用户。根据本发明提供的一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现上述中任一项所述的基于智能合约设计的权限控制方法的步骤。与现有技术相比,本发明具有如下的有益效果:本发明针对
背景技术
:中的问题通过我们的方法可以实现对链用户访问权限更加精细化,可以把权限控制在区块链任意节点的任意功能上面,用户权限控制直接放在链上面,无需依赖外部服务,非常轻量级,可信度高;本发明基于智能合约,提供了两种规则去对用户权限进行管理,第一种是基于特定的角色去进行分类,每一种角色里面预设n个function可以访问,第二种是我们也可以基于function去对应用户的权限进行分类,可以智能的更新用户可以访问的function数目,这两种方法可以相互兼容,可以通过二者并集的方式或者覆盖的方式进行用户权限更新、增加、注销等操作。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:图1为传统的链的访问流程示意图。图2为本发明技术方案中方法流程示意图。具体实施方式下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。下面通过实施例,对本发明进行更为具体地说明。实施例1:本发明公开了一个基于智能合约设计的权限控制方法,该方法将智能合约拆分为第一合约和第二合约,第一合约包含权限控制组件,第二合约包括权限校验组件和功能分发组件以及具体的功能模块,其中第二合约只能通过第一合约访问,第一合约对外开放。如图2所示,具体方法步骤为:步骤1:第一合约接受到用户的访问请求,通过权限控制组件首先区分用户是否有权限可以对权限映射hash表进行维护(是否是超级用户),超级用户可以对权限映射表进行维护,普通用户都只能进行常规交易和查询操作;步骤2:第一合约的权限控制组件通过权限映射hash表(散列表hashtable,也叫哈希表,是根据关键码值keyvalue而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表,权限映射hash表是基于hash表数据结构对权限规则和用户权限标识的存储方式);快速获取到用户的权限标识,权限控制组件再将请求转发至第二合约的权限校验组件;步骤3:第二合约的权限校验组件判断请求是否是通过第一合约转发过来,如果不是则直接打回请求,然后在对用户的权限标识进行校验,判断用户权限标识是否可以访问目标(function)功能,如果无权访问则直接打回;步骤4:第二合约中通过权限校验的组件的校验之后,再把请求转发给功能分发组件进行(function)功能分发;步骤5:第二合约功能分发组件把请求分发至具体的(function)功能,此时在进行链的相关操作然后再由第二合约依据弹栈原理依次反馈数据至第一合约,第一合约再反馈数据给到外部用户;所述步骤1包括:步骤1.1:权限映射表预设多个超级用户,用来对权限映射表进行相关维护,只有超级用户可以维护权限映射表的权限规则步骤1.2:权限映射hash表的权限规则也是利用的hash表的线性原理(依据hash表的key值唯一性原理,可以通过对key计数方法,可以快数的取出两个规则的交集和并集,这种算法的计算量小,性能较高,可以满足两种权限规则的交并集获取,对权限规则控制更加灵活)和/或笛卡尔集算法原理(笛卡尔乘积是指在数学中,两个集合x和y的笛卡尔积cartesianproduct,又称直积,表示为x×y,第一个对象是x的成员而第二个对象是y的所有可能有序对的其中一个成员,假设集合a={a,b},集合b={0,1,2},则两个集合的笛卡尔积为{[a,0],[a,1],[a,2],[b,0],[b,1],[b,2]},这种可以使得权限规则分布比较均匀,减少权限规则的维护次数)将规则分为两种:其一是角色类权限标识,将规则划分为多种角色,一种角色包含0到多个允许访问的function代码(具体功能的标识代码)其二是function代码标识,就是由0到多个允许访问的function代码组成步骤1.3:基于步骤1.2描述的两种权限规则,两种规则可以自由组合,可以基于笛卡尔集算法取两种规则的多种结果集,也可以基于hash表的线性算法取交集和并集,还可以的通过简单覆盖的过程实现,由超级用户自由设定;其中,1.基于笛卡尔积算法取两种规则是指的多种结果集是指:将1.2中的描述的两种规则通过笛卡尔积算法进行均匀组合,假设规则a={a,b},规则b={0,1,2},则两个集合的笛卡尔积为{[a,0],[a,1],[a,2],[b,0],[b,1],[b,2]},会产生多种结果集;2.基于hash表的线性算法取两种规则的交集和并集是指:通过hash的key我们可以两1.2中描述的两种规则拆分成两个hash表,例如:hash表a:{key1:val1,key2:val2};,hash表b:{key1:val1,key2:val2,key3:val3},我们可以通过比对hash表a和hash表b中的key相同的就是取两种规则的交集,通过将hash表a和hash表b的全部数据进行去重后合并,就是取两种规则的并集;3.简单覆盖是指:1.2中描述的两种规则,预先设定好要么以规则1为准,要么以规则2为准,例如:假如以规则1为准,我们在处理权限规则的时候,发现规则1和规则2同时存在,就直接取规则1的数据进行权限控制,假如以规则2的数据为准,同理如上;步骤1.4:基于1.3中的三种算法(即1:笛卡尔积算法2:hash表算法3:简单覆盖),超级用户需要给第一合约中的权限控制组件预设定一个默认的权限规则,当新用户进来时可以默认分配相应的权限规则(即,判断用户是否权限可以对权限映射表进行维护,是判断该用户是否是超级用户的逻辑,而默认分配相应的权限规则是指:新的用户进来的时候,权限控制控制组件通过预先设定好的权限规则,默认给新用户分配相应的权限标识);所述步骤2包括:步骤2.1:权限控制组件主要由权限映射hash表组成,通过hash算法存储预设的权限规则和普通的权限规则以及用户的权限标识,通过权限映射hash表线性算法可以高效的获取用户的权限标识;所述步骤3包括:步骤3.1:第二合约权限校验组件入口通过过关设计,只提供了被第一合约权限控制组件访问的接口,不提供对外访问的接口,外部用户无法直接访问到第二合约任何组件;步骤3.2:通过第二合约权限校验组件的入口过关校验之后,才会对用户的权限标识进行校验,判断用户的权限标识是否可以访问目标功能,如果不能则直接打回请求;步骤3.3:如果用户因无权访问接口,导致业务无法正常进行,可以通过发起权限升级申请至超级用户(管理员),告知超级用户需要升级的功能,管理员通过线上接口方式可以对用户的权限进行线上实时升级,实时生效;所述步骤4包括:步骤4.1:第二合约中分发组件接受到权限校验组件的功能分发请求,功能分发组件基于hash表数据结构对功能方法入口设计成b树索引通道方式,功能分发组件基于b树算法;(在b-树中查找给定关键字的方法是,首先把根结点取来,在根结点所包含的关键字k1,…,kn查找给定的关键字,可用顺序查找或二分查找法,若找到等于给定值的关键字,则查找成功;否则,一定可以确定要查找的关键字在ki与ki+1之间,pi为指向子树根节点的指针,此时取指针pi所指的结点继续查找,直至找到,或指针pi为空时查找失败。举例:b-树包含n个关键字,因此有n+1个叶子结点,叶子都在第i层。因为根至少有两个孩子,因此第二层至少有两个结点。除根和叶子外,其它结点至少有┌m/2┐个孩子,因此在第三层至少有2┌m/2┐个结点,在第四层至少有2(┌m/2┐2)个结点,...,在第i层至少有2*(┌m/2┐(l-2))个结点,其中,┌m/2┐2:是向上取整,即取与结果最接近的比结果大的2个整数,┌m/2┐(l-2):是向上取整,即取与结果最接近的比结果大的1到2个整数,于是有:n+1≥2┌m/2┐i-2考虑第l层的结点个数为n+1,那么2(┌m/2┐^(l-2))≤n+1,也就是l层的最少结点数刚好达到n+1个即:i≤log┌m/2┐((n+1)/2)+2所以,当b-树包含n个关键关键字时,b-树的最大高度为l-1(因为计算b-树高度时,叶结点所在层不计算在内)即:log┌m/2┐((n+1)/2)+1。这个公式保证了b-树的查找效率是相当高的,大大提供帮助索引对应功能方法入口时间)索引可以快速找到目标功能的方法入口,然后进行对链的具体功能调用所述步骤5包括:步骤5.1:第二合约中对链的具体功能能进行调用之后,根据方法栈原理,具体的功能数据再根据弹栈原理依次返回(调用顺序反方向依次返回)所述步骤1.1包括:1.1.1:简单覆盖的实现:是指两种规则相互覆盖,其一覆盖其二,或者其二覆盖其一,这种实现方式比较简便,性能极高,但是降低了权限规则的灵活性,以上三种算法可以供超级用户选择进行权限设计所述步骤3.1中:3.1.1:第二合约权限校验组件入口通过过关设计,是指权限校验组件的入口存放了第一合约的地址,当请求进来是会校验接受的请求的地址是否是来自于第一合约,如果是则算过关,如果不是则直接打回,实施例2:1.1:用户进行链的访问时,第一合约权限控制组件首先会判断访问用户是否为超级用户,如果是超级用户则再根据用户的目标功能号判断是否进行权限升级,如果不是超级用户,则会在判断用户是否是新用户(根据用户公钥key可以去权限hash映射表中快速查找用户是否是新用户),如果是则根据超级用户预设好的权限规则分配默认的权限标识给用户,否则直接获取到用户权限hash表中的用户的权限标识,然后再将请求转发至第二合约中的权限校验组件1.2:第二合约中的权限校验组件接受到第一合约转发过来的请求,权限校验组件的入口过关设计会校验请求是否来自第一合约,如果来自第一合约,才会开始对请求中的用户的权限标识进行校验,权限校验组件会拿着用户的权限标识和目标功能进行匹配,匹配机制也是基于hash表的kv结构,可以快速判断用户是否用户访问目标功能的权限,如果无,则直接打回请求,如果有,则再转发请求至功能分发组件1.3:第二合约中的功能分发组件接受到请求,会直接根据目标功能号结合b树索引方式,找到具体的功能方法,然后进行链的功能调用1.4:功能调用完成后,返回的数据会依据方法弹栈的方式,将返回的数据依次由第二合约中的功能方法->功能分发组件->权限校验组件->第一合约权限控制组件->外部用户1.5:用户如果遇到因权限不足请求被打回的情况而导致业务无法正常进行,用户可以通过给超级用户发起权限升级申请1.6:超级用户接受到权限升级申请,会通过接口的方式调用第一合约对用户的权限进行在线升级,升级完成后试试生效1.7:用户权限升级完成以后,可以再次重复1.1的步骤进行链的功能调用在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1