一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于区块链的键值存储方法、设备及介质与流程

2022-02-21 10:37:39 来源:中国专利 TAG:
1.本技术涉及信息化软件系统、互联网及区块链
技术领域
:,尤其涉及一种基于区块链的键值存储方法、设备及介质。
背景技术
::2.信息社会中政府、企业、社会团体及个人等都需要向社会公开发布信息。传统的信息发布系统存在信息遭受篡改、伪造等各种风险。例如,有人故意发布虚假信息迷惑群众;有人拦截网址并提供虚假网页或者文件。特别是在新闻媒体领域,信息具有公开性,各媒体之间相互借鉴引用消息,相互转发,这其中不乏篡改信息者,在复杂的信息网络中,普通民众很难分辨真假信息,给人民生产生活带来很大的困扰。3.社会各种组织之间也需要共享信息。组织之间共享信息一般采用点对点的传输方式,这种传统的信息共享方式也存在信息遭受窃取、篡改、伪造和重放等各种风险。例如,组织之间共享数据时,其中一方篡改了包括操作日志在内的所有相关数据,导致另一方遭受经济损失,双方互相指责、推诿责任,但因为没有第三方参与者而无法最终定责。技术实现要素:4.本说明书实施例提供一种基于区块链的键值存储方法、设备及介质,用于解决现有技术中的如下技术问题:信息系统为单一组织所控制,存在篡改数据的风险;信息共享过程中,缺少第三方参与者,发生篡改数据情形时,无法明晰责任;信息系统部署节点少,容易发生单点故障,造成系统无法访问。5.本说明书实施例采用下述技术方案:本发明实施例的第一方面提供了一种基于区块链的键值存储方法,包括:通过区块链系统中的超级管理员和/或管理员对区块链系统中的其他用户进行用户信息的管理,其中,所述超级管理员具有区块链系统的全部权限,所述管理员具有区块链系统的部分权限;通过用户权限控制智能合约对所述用户信息的管理过程中的管理员权限进行验证,并在验证通过后将形成用户管理数据对应的键值存入区块链中;通过用户权限控制智能合约对所述用户发布信息过程中的用户权限进行验证,并在验证通过后形成用户发布数据;通过键值存储数据库管理智能合约对所述用户发布数据进行验证,并在验证通过后将所述用户发布数据对应的键值写入区块链中。6.本发明实施例用于发布与共享可信信息。利用区块链信息不可篡改、不可抵赖、公开性及透明性保证共享数据的真实性及不可篡改性,保证数据共享行为的不可抵赖性,建立一种安全、可靠,可信的数据共享平台。7.在一个示例中,所述用户信息至少包括下列之一:用户id、用户名称、是否有效、角色列表、创建时间、更新时间;所述用户信息的管理至少包括下列之一:管理包括:创建用户、修改用户、查询用户、校验用户有效性、配置角色、用户存在性检查、移交系统默认超级管理员。8.本发明示例拥有安全、灵活的权限控制。支持用户、角色及权限管理。可以创建任意角色,可以为每个角色分配任意多个权限,可以为每个用户配置任意多个角色,权限控制非常灵活。9.本发明示例灵活的权限控制机制支持建立多级管理员,还可以创建与系统默认超级管理员拥有相同权限的管理员用户,从而达到多人共管共治的效果,提高管理效率。10.本发明示例中,用户信息的管理都通过区块链智能合约实现与控制,数据记录在区块链底层账本中,不需要任何链下服务程序的辅助即可完成数据内容的存储与读取,大大增强了内容发布的安全性、不可篡改性及可信性。11.在一个示例中,所述通过区块链系统中的超级管理员和/或管理员对区块链系统中的其他用户进行用户信息的管理,包括:通过所述区块链系统中的超级管理员和/或管理员对区块链中的其他超级管理员和/或管理员进行用户信息的管理。12.在一个示例中,所述通过所述区块链系统中的超级管理员和/或管理员对区块链中的其他超级管理员和/或管理员进行用户信息的管理,包括:通过原超级管理员、新超级管理员以及至少一名其他鉴证管理员的联合签名,将超级管理员的角色从原超级管理员转移至新超级管理员,其中,所述鉴定管理员的具体数目在区块链系统初始化时指定。13.本发明示例中,系统默认超级管理员的公钥可以更换,即系统默认超级管理员的权限可以移交。为了保证系统永远可控,需要三名及上管理员达成一致并联合签名才可以更换系统默认超级管理员。14.在一个示例中,所述超级管理员具有的权限包括:创建用户权限、修改用户权限、增加用户角色权限、删除用户角色权限、创建角色权限、修改角色权限、增加角色权限的权限、删除角色权限的权限,所述超级管理员的权限永久有效,不可修改。15.在一个示例中,所述在验证通过后将所述用户发布数据对应的键值写入区块链中在验证通过后将所述用户管理数据对应的键值写入区块链中,包括:将所述用户发布数据对应的数据主键和数据值两个字段写入数据表中,将所述用户发布的数据对应的数据主键和数据值两个字段写入数据表中;其中,所述区块链中具有多个数据库,每个所述数据库具有多个所述数据表,所述区块链中的数据库和数据表根据所述用户发布数据动态生成。16.本发明示例中,支持多个数据库,同时,支持在同一数据库中建立多个数据表,可以按照不同的业务建立多个不同的数据库与数据表,分类管理与存储,有利于性能优化。17.在一个示例中,所述通过用户权限控制智能合约对所述用户信息的管理过程中的管理员权限进行验证,包括:通过验证所述管理员的数字签名,确定所述管理员权限,其中,所述数字签名中包括一个或多个安全因子。18.本发明示例中,数字签名中要包含安全因子,例如时间戳。为了防止参数被篡改,需要对保护的参数放入签名中。19.本发明示例中,用户信息的管理都需要用户数字签名后,方可进行,以保证行为不可抵赖性及可信性。20.在一个示例中,所述通过用户权限控制智能合约对所述用户信息的管理过程中的管理员权限进行验证,包括:通过区块链数字实名身份系统中的用户公钥验证所述管理员的数字签名,确定所述管理员权限其中,所述管理员的数字签名通过管理员的用户私钥生成。21.本发明示例中,与区块链数字实名身份系统相结合,采用区块链数字实名身份系统的用户id作为本案的用户id,可以锁定用户真实身份,做到用户行为不可抵赖、可追查,增强数据可信。22.本发明实施例的第二方面提供了一种基于区块链的键值存储设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:通过区块链系统中的超级管理员和/或管理员对区块链系统中的其他用户进行用户信息的管理,其中,所述超级管理员具有区块链系统的全部权限,所述管理员具有区块链系统的部分权限;通过用户权限控制智能合约对所述用户信息的管理过程中的管理员权限进行验证,并在验证通过后形成用户管理数据;通过键值存储数据库管理智能合约对所述用户管理数据进行验证,并在验证通过后将所述用户管理数据对应的键值写入区块链中。23.本发明实施例的第三方面提供了一种基于区块链的键值存储非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:通过区块链系统中的超级管理员和/或管理员对区块链系统中的其他用户进行用户信息的管理,其中,所述超级管理员具有区块链系统的全部权限,所述管理员具有区块链系统的部分权限;通过用户权限控制智能合约对所述用户信息的管理过程中的管理员权限进行验证,并在验证通过后形成用户管理数据;通过键值存储数据库管理智能合约对所述用户管理数据进行验证,并在验证通过后将所述用户管理数据对应的键值写入区块链中。附图说明24.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:图1为本发明实施例提供的方法流程示意图;图2为本发明实施例提供的区块链系统的框架结构示意图;图3为本说明书实施例提供的设备框架示意图。具体实施方式25.为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。26.区块链通过去中心化的共识机制,实现信息的不可篡改、不可抵赖及可信性。结合区块链的技术特性,本发明针对信息发布与共享领域中的虚假信息、数据篡改及抵赖行为,提出一种基于区块链的键值存储方法及相应方案,用于发布与共享可信信息。利用区块链信息不可篡改、不可抵赖、公开性及透明性保证共享数据的真实性及不可篡改性,保证数据共享行为的不可抵赖性,建立一种安全、可靠,可信的数据共享平台。27.以下结合附图,详细说明本技术各实施例提供的技术方案。28.图1为本发明实施例提供的方法流程示意图。如图所示,方法包括:s101通过区块链系统中的超级管理员和/或管理员对区块链系统中的其他用户进行用户信息的管理,其中,所述超级管理员具有区块链系统的全部权限,所述管理员具有区块链系统的部分权限;s102通过用户权限控制智能合约对所述用户信息的管理过程中的管理员权限进行验证,并在验证通过后将形成用户管理数据对应的键值存入区块链中;s103通过用户权限控制智能合约对所述用户发布信息过程中的用户权限进行验证,并在验证通过后形成用户发布数据;s104通过键值存储数据库管理智能合约对所述用户发布数据进行验证,并在验证通过后将所述用户发布数据对应的键值写入区块链中。29.图2为本发明实施例提供的区块链系统的框架结构示意图,如图2所示,基于区块链平台的可信键值存储数据库系统(区块链系统)包括:可信键值存储数据库系统及客户端2大部分。其中,可信键值存储数据库系统包括:用户权限控制智能合约、键值存储数据库管理智能合约、区块链平台3个主要组件。用户权限控制智能合约包括:用户管理、角色管理、用户权限验证3个主要功能。键值存储数据库管理智能合约包括:数据库管理、数据保存/更新、数据查询3个主要功能。30.根据本发明的具体实施例,用户管理(用户信息的管理)的功能包括:创建用户、修改用户、查询用户、校验用户有效性、配置角色、用户存在性检查、移交系统默认超级管理员等功能。用户信息包括:用户id、用户名称、是否有效、角色列表、是否系统默认超级管理员、创建时间、更新时间等信息。区块链系统内置一个默认的超级管理员用户,拥有超级管理员角色,拥有用户管理、角色管理的所有权限。默认的超级管理员用户不可以删除,不可以设置为无效,不可以改变角色列表,但可以移交系统默认超级管理员。移交系统默认超级管理员,需要原系统默认超级管理员、新系统默认超级管理员以及1名及以上其他鉴证管理员的联合签名,才能移交成功。鉴证管理员的具体数目在系统初始化时指定。用户信息通过区块链平台存储在区块链账本中。用户不能为自身配置角色,只有拥有角色配置权限的用户,才能为他人配置角色。所有用户都不可以删除,仅能对系统默认超级管理员以外的用户设置为无效。31.根据本发明的具体实施例,将用户id作为唯一主键,不能重复创建id相同的用户。创建用户的步骤如下:参数校验。必须输入的参数有:管理员用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。32.用户有效性校验。将“管理员用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。33.用户权限校验。将“管理员用户id”、“创建用户权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“创建用户权限”的权限,若用户没有权限,则返回错误。34.验证签名。将“管理员用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到新用户id、用户名称、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。35.用户存在性校验。将从数字签名中解密出来的“新用户id”作为参数,通过用户权限控制智能合约的“用户存在性检查”功能,检查用户是否存在,若已存在,说明已经创建过相同“用户id”的用户,返回错误。36.保存用户。将固定前缀“bcbased_kv_db_u_”以及从数字签名中解密出来的“新用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{新用户id}”的组合key。将从数字签名中解密出来的“用户名称”、以及当前系统时间戳,构造成如下形式的“用户信息记录”:{username:{用户名称},issupperadmin:false,enabled:true,createtime:{当前系统时间戳},updatetime:{当前系统时间戳}}。最后,通过区块链平台的记账接口,将“组合key”与“用户信息记录”一起写入区块链平台底层的账本,完成创建用户的操作。37.根据本发明的具体实施例,修改用户仅能修改用户名称、是否有效、更新时间。用户不能修改自身的状态,只能修改其他用户的信息。将用户设置为无效后,用户账号失效,用户所拥有的所有权限失效。修改用户的步骤如下:参数校验。必须输入的参数有:管理员用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。38.用户有效性校验。将“管理员用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。39.用户权限校验。将“管理员用户id”、“修改用户权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“修改用户权限”的权限,若用户没有权限,则返回错误。40.验证签名。将“管理员用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到用户id、用户名称、是否有效、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。41.自我修改限制检查。将参数“管理员用户id”与从数字签名中解密出来的“用户id”进行比较,如果两者相同,则判定为非法修改,返回错误。42.目标用户存在性校验。将从数字签名中解密出来的“用户id”作为参数,通过用户权限控制智能合约的“用户存在性检查”功能,检查用户是否存在,若不存在,则返回错误。43.更新用户信息记录。将固定前缀“bcbased_kv_db_u_”以及从数字签名中解密出来的“用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”。44.如果“用户信息记录”的“issupperadmin”为“true”,则判定为修改系统默认超级管理员,则违反了不能修改系统默认超级管理员的原则,返回错误。45.如果从数字签名中解密出来的参数中存在“用户名称”项目,则使用该“用户名称”替换“用户信息记录”中的“用户名称”;如果从数字签名中解密出来的参数中存在“是否有效”项目,则使用该“是否有效”替换“用户信息记录”中的“是否有效”;使用当前系统时间戳替换替换“用户信息记录”中的“更新时间”。46.最后,通过区块链平台的记账接口,将“组合key”与最新的“用户信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“用户信息记录”,从而完成用户信息记录的修改操作。47.根据本发明的具体实施例,查询用户的具体实现方式包括:将固定前缀“bcbased_kv_db_u_”以及参数ꢀ“用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”。最后,返回查询结果数据。48.根据本发明的具体实施例,校验用户的有效性的具体实现方式包括:将固定前缀“bcbased_kv_db_u_”以及参数ꢀ“用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”。若找不到对应的用户信息记录,则判定为无效用户,返回无效用户的错误。49.接着,通过用户信息记录的“是否有效”字段判断用户是否有效,若无效,则返回无效用户的错误;若有效,则返回有效用户的结果。50.根据本发明的具体实施例,配置角色的功能包括:增加用户角色、删除用户角色。用户角色信息存放在“用户信息记录”的“角色列表”字段中。用户不能为自身配置角色,只有拥有角色配置权限的用户,才能为他人配置角色。用户角色信息通过区块链平台存储在区块链账本中。51.根据本发明的具体实施例,为用户增加角色的步骤如下:参数校验。必须输入的参数有:管理员用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。52.用户有效性校验。将“管理员用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。53.用户权限校验。将“管理员用户id”、“增加用户角色权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“增加用户角色权限”的权限,若用户没有权限,则返回错误。54.验证签名。将“管理员用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到用户id、角色id、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。55.自我配置角色限制检查。将参数“管理员用户id”与从数字签名中解密出来的“用户id”进行比较,如果两者相同,则判定为非法配置角色,返回错误。56.目标用户存在性校验。将从数字签名中解密出来的“用户id”作为参数,通过用户权限控制智能合约的“用户存在性检查”功能,检查用户是否存在,若不存在,则返回错误。57.用户角色存在性检查。将从数字签名中解密出来的“用户id”、“角色id”作为参数,通过用户权限控制智能合约的“用户角色存在性检查”功能,检查用户角色是否存在,若已存在,说明已经为用户添加过相同的角色,返回错误。58.更新用户信息记录。将固定前缀“bcbased_kv_db_u_”以及从数字签名中解密出来的“用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”。59.如果“用户信息记录”的“issupperadmin”为“true”,则判定为修改系统默认超级管理员,则违反了不能修改系统默认超级管理员的原则,返回错误。60.从数字签名中解密出“角色id”参数项目,将其加入到“用户信息记录”的“角色列表”字段中;使用当前系统时间戳替换替换“用户信息记录”中的“更新时间”。最后,通过区块链平台的记账接口,将“组合key”与最新的“用户信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“用户信息记录”,从而完成增加用户角色的操作。61.根据本发明的具体实施例,为用户删除角色的步骤如下:参数校验。必须输入的参数有:管理员用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。62.用户有效性校验。将“管理员用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。63.用户权限校验。将“管理员用户id”、“删除用户角色权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“删除用户角色权限”的权限,若用户没有权限,则返回错误。64.验证签名。将“管理员用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到用户id、角色id、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。65.自我配置角色限制检查。将参数“管理员用户id”与从数字签名中解密出来的“用户id”进行比较,如果两者相同,则判定为非法配置角色,返回错误。66.目标用户存在性校验。将从数字签名中解密出来的“用户id”作为参数,通过用户权限控制智能合约的“用户存在性检查”功能,检查用户是否存在,若不存在,则返回错误。67.用户角色存在性检查。将从数字签名中解密出来的“用户id”、“角色id”作为参数,通过用户权限控制智能合约的“用户角色存在性检查”功能,检查用户角色是否存在,若不存在,说明目标用户不拥有该角色,返回错误。68.更新用户信息记录。将固定前缀“bcbased_kv_db_u_”以及从数字签名中解密出来的“用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”。69.如果“用户信息记录”的“issupperadmin”为“true”,则判定为修改系统默认超级管理员,则违反了不能修改系统默认超级管理员的原则,返回错误。70.其次,从数字签名中解密出参数项目“角色id”,然后从“用户信息记录”的“角色列表”字段中查找该“角色id”并将其删除;使用当前系统时间戳替换替换“用户信息记录”中的“更新时间”。最后,通过区块链平台的记账接口,将“组合key”与最新的“用户信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“用户信息记录”,从而完成删除用户角色的操作。71.根据本发明的具体实施例,用户的角色存在性检查的具体实施步骤包括:将固定前缀“bcbased_kv_db_u_”以及参数“用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”。从“用户信息记录”的“角色列表”字段中查找参数“角色id”,如果找到了该“角色id”,则判定为存在指定的用户角色,如果没有找到,则判定为指定的用户角色不存在。72.根据本发明的具体实施例,用户的存在性检查包括:将固定前缀“bcbased_kv_db_u_”以及参数“用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”。若能找到对应的“用户信息记录”,则判定为目标用户存在,否则判定为目标用户不存在。73.根据本发明的具体实施例,移交系统默认超级管理员,需要原系统默认超级管理员、新系统默认超级管理员以及1名及以上其他鉴证管理员的联合签名,才能移交成功。鉴证管理员的具体数目在系统初始化时指定。具体移交步骤如下:参数校验。参数为一个数组列表,数组列表的大小要大于等于(2 鉴证管理员的数目)。每个数组项必须包含:管理员用户id、时间戳、数字签名三个子项目。若不符合上述约定,则判定为非法参数,返回错误。74.遍历数组列表,验证参数、管理员、签名及移交目标的一致性。在遍历过程中要找出唯一的原系统默认超级管理员及唯一的新系统默认超级管理员,若不符合这个条件,则返回错误。从所有签名管理员的数字签名中得到“新系统默认超级管理员id”必须一致,否则判定为管理员对系统默认超级管理员的移交对象未达成一致,不予变更,返回错误。75.时效性校验。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如10分钟。时间戳用来防止数字签名盗用、数据重放攻击等。76.用户有效性校验。将“管理员用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。77.用户权限校验。将“管理员用户id”、“修改用户权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“修改用户权限”的权限,若用户没有权限,则返回错误。78.验证签名。将“管理员用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到管理员类型、新系统默认超级管理员id、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。79.验证原系统默认超级管理员。如果从数字签名中解密出来的“管理员类型”的值为“原系统默认超级管理员”,则验证是否原系统默认超级管理员。将固定前缀“bcbased_kv_db_u_”以及“管理员用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{管理员用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”,接着,通过“用户信息记录”中的“issupperadmin”字段判断是否系统默认超级管理员,如果不是,则判定为非法操作,返回错误。80.验证新系统默认超级管理员。如果从数字签名中解密出来的“管理员类型”的值为“新系统默认超级管理员”,则参数“管理员用户id”与从数字签名中解密出来的“新系统默认超级管理员id”应该相等,否则判定为非法签名,返回错误。81.更新用户信息记录。82.将固定前缀“bcbased_kv_db_u_”以及“管理员类型”的值为“原系统默认超级管理员”的“管理员用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{管理员用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”,接着,“用户信息记录”中的“issupperadmin”设置为“false”;使用当前系统时间戳替换替换“用户信息记录”中的“更新时间”。最后,通过区块链平台的记账接口,将“组合key”与最新的“用户信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“用户信息记录”,完成原系统默认超级管理员的注销操作。83.将固定前缀“bcbased_kv_db_u_”以及“管理员类型”的值为“新系统默认超级管理员”的“管理员用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{管理员用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”,接着,“用户信息记录”中的“issupperadmin”设置为“true”;在“用户信息记录”的“角色列表”字段中加入“defaultsuperadminrole”的角色;使用当前系统时间戳替换替换“用户信息记录”中的“更新时间”。最后,通过区块链平台的记账接口,将“组合key”与最新的“用户信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“用户信息记录”,从而完成移交系统默认超级管理员的操作。84.根据本发明的具体实施例,角色管理包括:创建角色、修改角色、配置权限等功能。角色信息包括:角色id、角色名称、是否有效、权限列表、创建时间、更新时间等信息。将角色设置为无效后,拥有该角色的用户失去与该角色对应的所有权限。系统内置一个默认的超级管理员角色,拥有用户管理、角色管理的所有权限。修改角色仅能修改角色名称、是否有效、更新时间。85.系统内置的默认超级管理员角色(defaultsuperadminrole),不可以删除,不可以改变名称、不可以设置为无效,不可以改变权限列表。角色信息通过区块链平台存储在区块链账本中。86.在本发明的一些实施例中,将角色id作为唯一主键,不能重复创建id相同的角色。创建角色的步骤如下:参数校验。必须输入的参数有:管理员用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。87.用户有效性校验。将“管理员用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。88.用户权限校验。将“管理员用户id”、“创建角色权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“创建角色权限”的权限,若用户没有权限,则返回错误。89.验证签名。将“管理员用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到角色id、角色名称、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。90.角色存在性校验。将从数字签名中解密出来的“角色id”作为参数,通过用户权限控制智能合约的“角色存在性检查”功能,检查角色是否存在,若已存在,说明已经创建过相同“角色id”的角色,返回错误。91.保存角色。将固定前缀“bcbased_kv_db_r_”以及从数字签名中解密出来的“角色id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_r_{角色id}”的组合key。将从数字签名中解密出来的“角色名称”、以及当前系统时间戳,构造成如下形式的“角色信息记录”:{rolename:{角色名称},enabled:true,createtime:{当前系统时间戳},updatetime:{当前系统时间戳}}。最后,通过区块链平台的记账接口,将“组合key”与“角色信息记录”一起写入区块链平台底层的账本,完成创建角色的操作。92.在本发明的一些实施例中,修改角色仅能修改角色名称、是否有效、更新时间。将角色设置为无效后,拥有该角色的用户将失去该角色对应的所有权限。不能修改系统默认的超级管理员角色。修改角色的步骤如下:参数校验。必须输入的参数有:管理员用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。93.用户有效性校验。将“管理员用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。94.用户权限校验。将“管理员用户id”、“修改角色权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“修改角色权限”的权限,若用户没有权限,则返回错误。95.验证签名。将“管理员用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到角色id、角色名称、是否有效、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。96.超级管理员角色检查。如果从数字签名中解密出来的“角色id”等于“defaultsuperadminrole”,则违反了不能修改系统默认超级管理员角色的原则,返回错误。97.角色存在性校验。将从数字签名中解密出来的“角色id”作为参数,通过用户权限控制智能合约的“角色存在性检查”功能,检查角色是否存在,若不存在,则返回错误。98.更新角色信息记录。将固定前缀“bcbased_kv_db_r_”以及从数字签名中解密出来的“角色id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_r_{角色id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“角色信息记录”。如果从数字签名中解密出来的参数中存在“角色名称”项目,则使用该“角色名称”替换“角色信息记录”中的“角色名称”;如果从数字签名中解密出来的参数中存在“是否有效”项目,则使用该“是否有效”替换“角色信息记录”中的“是否有效”;使用当前系统时间戳替换替换“角色信息记录”中的“更新时间”。最后,通过区块链平台的记账接口,将“组合key”与最新的“角色信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“角色信息记录”,从而完成角色信息记录的修改操作。99.根据本发明的具体实施例,角色权限配置管理的功能包括:增加角色权限、删除角色权限。系统内置下列14种权限:创建用户权限、修改用户权限、增加用户角色权限、删除用户角色权限、创建角色权限、修改角色权限、增加角色权限的权限、删除角色权限的权限、创建数据库权限、修改数据库权限、创建数据表权限、修改数据表权限、数据更新权限、数据查询权限。权限不可删除、不可修改。100.系统内置一个默认的超级管理员角色,拥有下列权限:创建用户权限、修改用户权限、增加用户角色权限、删除用户角色权限、创建角色权限、修改角色权限、增加角色权限的权限、删除角色权限的权限。凡拥有上述全部或者部分权限的用户都可称之为管理员。系统内置的默认超级管理员角色不可删除、不可修改。角色权限信息通过区块链平台存储在区块链账本中。101.根据本发明的具体实施例,为角色增加权限的步骤如下:参数校验。必须输入的参数有:管理员用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。102.用户有效性校验。将“管理员用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。103.用户权限校验。将“管理员用户id”、“增加角色权限的权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“增加角色权限的权限”的权限,若用户没有权限,则返回错误。104.验证签名。将“管理员用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到角色id、权限、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。105.超级管理员角色检查。如果从数字签名中解密出来的“角色id”等于“defaultsuperadminrole”,则违反了不能为系统默认超级管理员角色配置权限的原则,返回错误。106.目标角色存在性校验。将从数字签名中解密出来的“角色id”作为参数,通过用户权限控制智能合约的“角色存在性检查”功能,检查角色是否存在,若不存在,则返回错误。107.角色权限存在性检查。将从数字签名中解密出来的“角色id”、“权限”作为参数,通过用户权限控制智能合约的“权限存在性检查”功能,检查角色权限是否存在,若已存在,说明已经为角色添加过相同的权限,返回错误。108.更新角色信息记录。将固定前缀“bcbased_kv_db_r_”以及从数字签名中解密出来的“角色id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_r_{角色id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“角色信息记录”。从数字签名中解密出“权限”参数项目,将其加入到“角色信息记录”的“权限列表”字段中;使用当前系统时间戳替换替换“角色信息记录”中的“更新时间”。最后,通过区块链平台的记账接口,将“组合key”与最新的“角色信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“角色信息记录”,从而完成增加角色权限的操作。109.根据本发明的具体实施例,为角色删除权限的步骤如下:参数校验。必须输入的参数有:管理员用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。110.用户有效性校验。将“管理员用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。111.用户权限校验。将“管理员用户id”、“删除角色权限的权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“删除角色权限的权限”的权限,若用户没有权限,则返回错误。112.验证签名。将“管理员用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到角色id、权限、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。113.超级管理员角色检查。如果从数字签名中解密出来的“角色id”等于“defaultsuperadminrole”,则违反了不能为系统默认超级管理员角色配置权限的原则,返回错误。114.目标角色存在性校验。将从数字签名中解密出来的“角色id”作为参数,通过用户权限控制智能合约的“角色存在性检查”功能,检查用户是否存在,若不存在,则返回错误。115.角色权限存在性检查。将从数字签名中解密出来的“角色id”、“权限”作为参数,通过用户权限控制智能合约的“用户角色存在性检查”功能,检查用户角色是否存在,若不存在,说明目标用户不拥有该角色,返回错误。116.更新角色信息记录。将固定前缀“bcbased_kv_db_r_”以及从数字签名中解密出来的“角色id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_r_{角色id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“角色信息记录”。其次,从数字签名中解密出参数项目“权限”,然后从“角色信息记录”的“权限列表”字段中查找该“权限”并将其删除;使用当前系统时间戳替换替换“角色信息记录”中的“更新时间”。最后,通过区块链平台的记账接口,将“组合key”与最新的“角色信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“角色信息记录”,从而完成删除角色权限的操作。117.在一个示例中,还包括角色权限存在性检查,具体包括:将固定前缀“bcbased_kv_db_r_”以及参数“角色id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_r_{角色id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“角色信息记录”。其次,从“角色信息记录”的“权限列表”字段中查找参数“权限”,如果找到了该“权限”,则判定为角色的权限已经存在,如果没有找到,则判定为角色的权限不存在。118.在一个示例中,还包括,角色存在性检查,具体包括:将固定前缀“bcbased_kv_db_r_”以及参数“角色id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_r_{角色id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“角色信息记录”。若找到对应的“角色信息记录”,则判定为存在目标角色,否则判定为不存在目标角色。119.根据本发明的具体实施例,用户的角色权限验证通过参数“用户id”查找用户信息记录,并获取用户拥有的角色列表。然后,循环遍历角色列表,进一步查找角色信息记录,并获取角色权限列表,从中找出目标权限。若能找出与参数匹配的目标权限,则判定用户拥有权限,否则判定用户无权限。具体包括:将固定前缀“bcbased_kv_db_u_”以及参数ꢀ“用户id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_u_{用户id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“用户信息记录”。从“用户信息记录”的“角色列表”字段中得到用户所拥有的所有角色列表“用户角色列表”。120.针对于在上述骤中得到的“用户角色列表”中的每一个“角色id”,进行如下的处理:查找角色信息记录。将固定前缀“bcbased_kv_db_r_”以及“角色id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_r_{角色id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“角色信息记录”。121.查找权限。从“角色信息记录”的“权限列表”字段中查找参数“权限”。若找到与参数“权限”匹配的权限,则判定用户拥有权限,结束处理。否则继续重复查找角色信息记录、查找权限的步骤,直至处理完“用户角色列表”的所有角色。122.若果遍历完成“用户角色列表”的所有角色,而找不到与参数匹配的权限,则判断为用户没有权限,结束处理过程。123.根据本发明的具体实施例,所述在验证通过后将所述用户发布数据对应的键值写入区块链中在验证通过后将所述用户管理数据对应的键值写入区块链中,包括:将所述用户管理数据对应的数据主键和数据值两个字段写入数据表中,将所述用户发布的数据对应的数据主键和数据值两个字段写入数据表中;其中,所述区块链中具有多个数据库,每个所述数据库具有多个所述数据表,所述区块链中的数据库和数据表根据所述用户发布数据动态生成。124.根据本发明的具体实施例,数据库管理的功能包括:创建数据库、修改数据库、创建数据表、修改数据表、数据库存在性检查、数据表存在性检查。数据库信息包括:数据库id、数据库名称、创建时间、更新时间等。数据表的信息包括:数据库id、数据表id、数据表名称、创建时间、更新时间等。数据库中可以创建多个数据表。数据表中仅包含数据主键(数据key)与数据值两个字段。数据库、数据表信息通过区块链平台存储在区块链账本中。125.根据本发明的具体实施例,将数据库id作为唯一主键,不能重复创建id相同的数据库。创建数据库的步骤如下:参数校验。必须输入的参数有:用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。126.用户有效性校验。将“用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。127.用户权限校验。将“用户id”、“创建数据库权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“创建数据库权限”的权限,若用户没有权限,则返回错误。128.验证签名。将“用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到数据库id、数据库名称、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。129.数据库存在性校验。将从数字签名中解密出来的“数据库id”作为参数,通过键值存储数据库管理智能合约的“数据库存在性检查”功能,检查数据库是否存在,若已存在,说明已经创建过相同“数据库id”的数据库,返回错误。130.保存数据库。将固定前缀“bcbased_kv_db_”以及从数字签名中解密出来的“数据库id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_{数据库id}”的组合key。将从数字签名中解密出来的“数据库名称”以及当前系统时间戳,构造成如下形式的“数据库信息记录”:{databasename:{数据库名称},createtime:{当前系统时间戳},updatetime:{当前系统时间戳}}。最后,通过区块链平台的记账接口,将“组合key”与“数据库信息记录”一起写入区块链平台底层的账本,完成创建数据库的操作。131.根据本发明的具体实施例,修改数据库仅能修改数据库名称及更新时间,步骤如下:参数校验。必须输入的参数有:用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。132.用户有效性校验。将“用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。133.用户权限校验。将“用户id”、“修改数据库权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“修改数据库权限”的权限,若用户没有权限,则返回错误。134.验证签名。将“用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到数据库id、数据库名称、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。135.数据库存在性校验。将从数字签名中解密出来的“数据库id”作为参数,通过键值存储数据库管理智能合约的“数据库存在性检查”功能,检查数据库是否存在,若不存在,则返回错误。136.修改数据库名称及更新时间。将固定前缀“bcbased_kv_db_”以及从数字签名中解密出来的“数据库id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_{数据库id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“数据库信息记录”。使用从数字签名中解密出来的“数据库名称”替换“数据库信息记录”中的“数据库名称”;使用当前系统时间戳替换替换“数据库信息记录”中的“更新时间”。最后,通过区块链平台的记账接口,将“组合key”与最新的“数据库信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“数据库信息记录”,从而完成数据库的修改操作。137.根据本发明的具体实施例,在数据库中,将数据表id作为唯一主键,不能重复创建id相同的数据表。创建数据表的步骤如下:参数校验。必须输入的参数有:用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。138.用户有效性校验。将“用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。139.用户权限校验。将“用户id”、“创建数据表权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“创建数据表权限”的权限,若用户没有权限,则返回错误。140.验证签名。将“用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到数据库id、数据表id、数据表名称、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。141.数据库存在性校验。将从数字签名中解密出来的“数据库id”作为参数,通过键值存储数据库管理智能合约的“数据库存在性检查”功能,检查数据库是否存在,若不存在,则返回错误。142.数据表存在性校验。将从数字签名中解密出来的“数据库id”、“数据表id”作为参数,通过键值存储数据库管理智能合约的“数据表存在性检查”功能,检查数据表是否存在,若已存在,说明已经创建过相同“数据库id”、“数据表id”的数据表,返回错误。143.保存数据表。将固定前缀“bcbased_kv_db_table_”以及从数字签名中解密出来的“数据库id”、“数据表id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_table_{数据库id}_{数据表id}”的组合key。将从数字签名中解密出来的“数据表名称”以及当前系统时间戳,构造成如下形式的“数据表信息记录”:{tablename:{数据表名称},createtime:{当前系统时间戳},updatetime:{当前系统时间戳}}。最后,通过区块链平台的记账接口,将“组合key”与“数据表信息记录”一起写入区块链平台底层的账本,完成数据表的创建操作。144.根据本发明的具体实施例,修改数据表仅能修改数据表名称及更新时间。修改数据表的步骤如下:参数校验。必须输入的参数有:用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。145.用户有效性校验。将“用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。146.用户权限校验。将“用户id”、“修改数据表权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“修改数据表权限”的权限,若用户没有权限,则返回错误。147.验证签名。将“用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到数据库id、数据表id、数据表名称、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。148.数据表存在性校验。将从数字签名中解密出来的“数据库id”、“数据表id”作为参数,通过键值存储数据库管理智能合约的“数据表存在性检查”功能,检查数据表是否存在,若不存在,则返回错误。149.修改数据表名称及更新时间。将固定前缀“bcbased_kv_db_table_”以及从数字签名中解密出来的“数据库id”、“数据表id”,通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_table_{数据库id}_{数据表id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据“数据表信息记录”。使用从数字签名中解密出来的“数据表名称”替换“数据表信息记录”中的“数据表名称”;使用当前系统时间戳替换替换“数据表信息记录”中的“更新时间”。最后,通过区块链平台的记账接口,将“组合key”与最新的“数据表信息记录”一起写入区块链平台底层的账本,覆盖掉原来旧的“数据表信息记录”,从而完成数据表的修改操作。150.根据本发明的具体实施例,通过以下步骤描述数据保存的方法,数据更新与数据保存的方法相同。151.参数校验。必须输入的参数有:用户id、数据值、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。152.用户有效性校验。将“用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。153.用户权限校验。将“用户id”、“数据更新权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“数据更新权限”的权限,若用户没有权限,则返回错误。154.验证签名。将“用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到数据库id、数据表id、数据key、时间戳t1、数据值哈希值h1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。155.数据表存在性校验。将从数字签名中解密出来的“数据库id”、“数据表id”作为参数,通过键值存储数据库管理智能合约的“数据表存在性检查”功能,检查数据表是否存在,若不存在,则返回错误。156.数据完整性校验。计算参数“数据值”的哈希值,然后与从数字签名中解密出来的“数据值哈希值h1”进行比较,若两者不一致,则判定为数据损坏,返回错误。157.数据保存。将固定前缀“bcbased_kv_db_v_”以及从数字签名中解密出来的“数据库id”、“数据表id”、“数据key”通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_v_{数据库id}_{数据表id}_{数据key}”的组合key。最后,通过区块链平台的记账接口,将“组合key”与参数中的“数据值”一起写入区块链平台底层的账本。158.根据本发明的具体实施例,数据查询步骤如下:参数校验。必须输入的参数有:用户id、时间戳、数字签名。验证是否缺少参数,若缺少参数,则返回错误。参数“时间戳”应该在预定的时间范围内,即当前系统时间戳减去参数“时间戳”的绝对值小于预定的值,比如30秒。时间戳用来防止数字签名盗用、数据重放攻击等。159.用户有效性校验。将“用户id”作为参数,通过用户权限控制智能合约的“校验用户有效性”功能判断用户是否有效,若属于无效用户,则返回错误。160.用户权限校验。将“用户id”、“数据查询权限”作为参数,通过用户权限控制智能合约的“用户权限验证”功能判断用户是否拥有“数据查询权限”的权限,若用户没有权限,则返回错误。161.验证签名。将“用户id”作为参数,向区块链数字实名身份智能合约查询用户身份信息,使用用户身份信息的“用户公钥”解密数字签名,得到数据库id、数据表id、数据key、时间戳t1。若解密失败,则返回错误。比较参数“时间戳”与从数字签名中解密出来的“时间戳t1”是否相同,如果不同,则判定为非法签名,返回错误。162.数据表存在性校验。将从数字签名中解密出来的“数据库id”、“数据表id”作为参数,通过键值存储数据库管理智能合约的“数据表存在性检查”功能,检查数据表是否存在,若不存在,则返回错误。163.查询数据。将固定前缀“bcbased_kv_db_v_”以及从数字签名中解密出来的“数据库id”、“数据表id”、“数据key”通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_v_{数据库id}_{数据表id}_{数据key}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标数据。最后,返回查询结果。164.根据本发明的具体实施例,还包括数据库存在性检查,将固定前缀“bcbased_kv_db_”以及参数“数据库id”通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_{数据库id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标“数据库信息记录”,若找到对应的信息记录,则判定为存在目标数据库,否则判定为不存在目标数据库。165.根据本发明的具体实施例,将固定前缀“bcbased_kv_db_table_”以及参数“数据库id”、“数据表id”通过连接符,例如“_”,连接在一起,构造一个形如“bcbased_kv_db_table_{数据库id}_{数据表id}”的组合key。然后,通过区块链平台的查询接口,按照“组合key”从区块链平台底层的账本中查找目标“数据表信息记录”,若找到对应的信息记录,则判定为存在目标数据表,否则判定为不存在目标数据表。166.根据本发明的具体实施例,用户的私钥即是用户的密码,而用户的私钥无需存储在系统中。用户的私钥即是用户的身份,基于用户私钥的数字签名即是用户身份的代表。与区块链数字实名身份系统相结合,采用区块链数字实名身份系统的用户id作为本案的用户id,区块链数字实名身份系统的用户公钥作为本案的解密密钥,可以锁定用户真实身份,做到用户行为不可抵赖、行为可追查,数据可追溯。可以理解的是,用户包括普通用户,管理员和超级管理员。167.基于同样的思路,本技术的一些实施例还提供了上述方法对应的设备和非易失性计算机存储介质。168.图3为本说明书实施例提供的设备框架示意图,基于区块链的键值存储设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:通过区块链系统中的超级管理员和/或管理员对区块链系统中的其他用户进行用户信息的管理,其中,所述超级管理员具有区块链系统的全部权限,所述管理员具有区块链系统的部分权限;通过用户权限控制智能合约对所述用户信息的管理过程中的管理员权限进行验证,并在验证通过后形成用户管理数据;通过键值存储数据库管理智能合约对所述用户管理数据进行验证,并在验证通过后将所述用户管理数据对应的键值写入区块链中。169.本技术的一些实施例提供的对应于图1的一种基于区块链的键值存储非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:通过区块链系统中的超级管理员和/或管理员对区块链系统中的其他用户进行用户信息的管理,其中,所述超级管理员具有区块链系统的全部权限,所述管理员具有区块链系统的部分权限;通过用户权限控制智能合约对所述用户信息的管理过程中的管理员权限进行验证,并在验证通过后形成用户管理数据;通过键值存储数据库管理智能合约对所述用户管理数据进行验证,并在验证通过后将所述用户管理数据对应的键值写入区块链中。170.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。171.本技术实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献