法律状态公告日
法律状态信息
法律状态
2022-01-04
实质审查的生效 IPC(主分类):G06Q40/04 专利申请号:2021111077007 申请日:20210922
实质审查的生效
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种区块链用户请求处理方法、装置、委托服务器及存储介质。
背景技术
随着科学技术的发展,区块链技术也发展迅速,区块链是一个共享数据库,存储于其中的数据或信息,具有不可伪造、全程留痕、可以追溯、公开透明、集体维护的特点,区块链在多个行业和领域得到了广泛的应用。客户端与区块链之间交互,以对区块链中的数据进行处理也成为了研究的热点。
相关技术中,每个用户对应的客户端可以向委托服务器发送请求,该请求用于指示对区块链对用户标识信息进行处理,委托服务器可以调用区块链,区块链对用户标识信息进行处理。
但是,相关技术中,当多个客户端均向委托服务器发送用户请求时,委托服务器需要多次调用区块链,容易出现区块链交易压力过大,导致交易异常的问题。
发明内容
本发明的目的在于,针对上述现有技术中的不足,提供一种区块链用户请求处理方法、装置、委托服务器及存储介质,以便解决相关技术中,当多个客户端均向委托服务器发送用户请求时,委托服务器需要多次调用区块链,容易出现区块链交易压力过大,导致交易异常的问题。
为实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种区块链用户请求处理方法,应用于委托服务器,包括:
接收第一客户端发送的至少一个用户处理请求,每个所述用户处理请求用于指示区块链节点对第一用户标识信息进行处理,所述第一用户标识信息为所述第一客户端对应的第一用户的标识信息;
对预设时间段内收到的所述用户处理请求进行合并处理,得到合并处理后的用户处理请求;
根据所述合并处理后的用户处理请求调用区块链节点,以使所述区块链节点根据所述合并处理后的用户处理请求进行处理。
可选的,所述对预设时间段内收到的所述用户处理请求进行合并处理,得到合并处理后的用户处理请求,包括:
将所述预设时间段内收到的所述用户处理请求汇聚到待上链队列,得到所述合并处理后的用户处理请求。
可选的,在所述根据所述合并处理后的用户处理请求调用区块链节点之前,所述方法还包括:
随机生成操作标识信息;
根据所述操作标识信息、所述用户处理请求、预设线程等待工具创建目标对象;
将所述目标对象保存至所述待上链队列中。
可选的,在所述根据所述合并处理后的用户处理请求调用区块链节点之后,所述方法还包括:
若监听到来自所述区块链节点的第一用户标识信息变更事件,对所述第一用户标识信息变更事件进行解析处理,得到解析结果,所述解析结果包括:所述操作标识信息和所述第一用户标识信息,所述第一用户标识信息变更事件指示处理成功;
根据所述操作标识信息和所述第一用户标识信息,通过所述目标对象,将所述处理成功的结果传输至所述第一客户端。
可选的,所述根据所述操作标识信息和所述第一用户标识信息,通过所述目标对象,将所述处理成功的结果传输至所述第一客户端,包括:
根据所述操作标识信息查找所述目标对象,得到查找结果;
若查找结果指示查找到所述目标对象,则将所述处理成功的结果和所述第一用户标识信息写入所述目标对象;
唤醒所述目标对象中的所述预设线程等待工具,以唤醒第一用户标识信息线程,将所述处理成功的结果传输至所述第一客户端。
可选的,所述方法还包括:
删除用户标识缓存列表中所述第一用户标识信息对应的用户标识文档数据,确定删除通知信息。
通过所述第一用户标识信息线程,将所述删除通知信息传输至所述第一客户端。
可选的,所述方法还包括:
若查找结果指示未查找到所述目标对象,删除用户标识缓存列表中第一用户标识信息对应的用户标识文档数据。
可选的,所述方法还包括:
若监听到来自所述区块链节点的第一用户标识信息变更事件,删除用户标识缓存列表中所述第一用户标识信息对应的用户标识文档数据。
可选的,所述方法还包括:
接收第二客户端发送的用户查询请求,所述用户查询请求包括:第二用户标识信息;
根据所述第二用户标识信息,查询本地缓存,得到本地查询结果;
若所述本地查询结果指示查找到所述第二用户标识信息对应的目标用户标识文档数据,则向所述第二客户端发送所述目标用户标识文档数据。
可选的,所述根据所述第二用户标识信息,查询本地缓存,得到本地查询结果,包括:
根据所述第二用户标识信息,通过用户标识缓存列表,得到所述本地查询结果,其中,所述用户标识缓存列表包括多个预设用户标识文档数据。
可选的,所述方法还包括:
若所述本地查询结果指示未查找到所述目标用户标识文档数据,则调用所述区块链节点,获取所述第二用户标识信息的账号信息;
根据所述账号信息恢复所述目标用户标识文档数据;
并向所述第二客户端发送所述目标用户标识文档数据。
可选的,所述方法还包括:
在预设时长内,缓存所述目标用户标识文档数据。
根据所述用户标识文档数据,更新所述用户标识缓存列表。
可选的,所述方法还包括:
对所述用户处理请求进行验证,得到验证结果,所述验证结果用于指示验证是否成功;
所述对预设时间段内收到的所述用户处理请求进行合并处理,得到合并处理后的用户处理请求,包括:
根据所述验证结果,对验证成功的至少一个所述用户处理请求进行合并处理,得到合并处理后的用户处理请求。
可选的,所述用户处理请求为用户创建请求或者用户更改请求;
所述用户创建请求用于指示创建所述第一用户标识信息,所述用户更改请求用于指示更改所述第一用户标识信息。
第二方面,本发明实施例还提供了一种区块链用户请求处理装置,应用于委托服务器,包括:
接收模块,用于接收第一客户端发送的至少一个用户处理请求,每个所述用户处理请求用于指示区块链节点对第一用户标识信息进行处理,所述第一用户标识信息为所述第一客户端对应的第一用户的标识信息;
处理模块,用于对预设时间段内收到的所述用户处理请求进行合并处理,得到合并处理后的用户处理请求;
调用模块,用于根据所述合并处理后的用户处理请求调用区块链节点,以使所述区块链节点根据所述合并处理后的用户处理请求进行处理。
可选的,所述处理模块,还用于将所述预设时间段内收到的所述用户处理请求汇聚到待上链队列,得到所述合并处理后的用户处理请求。
可选的,所述装置还包括:
生成模块,用于随机生成操作标识信息;
创建模块,用于根据所述操作标识信息、所述用户处理请求、预设线程等待工具创建目标对象;
保存模块,用于将所述目标对象保存至所述待上链队列中。
可选的,所述装置还包括:
第一解析模块,用于若监听到来自所述区块链节点的第一用户标识信息变更事件,对所述第一用户标识信息变更事件进行解析处理,得到解析结果,所述解析结果包括:所述操作标识信息和所述第一用户标识信息,所述第一用户标识信息变更事件指示处理成功;
第一传输模块,用于根据所述操作标识信息和所述第一用户标识信息,通过所述目标对象,将所述处理成功的结果传输至所述第一客户端。
可选的,所述第一传输模块,还用于根据所述操作标识信息查找所述目标对象,得到查找结果;若查找结果指示查找到所述目标对象,则将所述处理成功的结果和所述第一用户标识信息写入所述目标对象;唤醒所述目标对象中的所述预设线程等待工具,以唤醒第一用户标识信息线程,将所述处理成功的结果传输至所述第一客户端。
可选的,所述装置还包括:
第一删除模块,用于删除用户标识缓存列表中所述第一用户标识信息对应的用户标识文档数据,确定删除通知信息。
第二传输模块,用于通过所述第一用户标识信息线程,将所述删除通知信息传输至所述第一客户端。
可选的,所述装置还包括:
第二删除模块,用于若查找结果指示未查找到所述目标对象,删除用户标识缓存列表中第一用户标识信息对应的用户标识文档数据。
可选的,所述装置还包括:
第二解析模块,用于若监听到来自所述区块链节点的第一用户标识信息变更事件,用于删除用户标识缓存列表中所述第一用户标识信息对应的用户标识文档数据。
可选的,所述装置还包括:
第一接收模块,用于接收第二客户端发送的用户查询请求,所述用户查询请求包括:第二用户标识信息;
查询模块,用于根据所述第二用户标识信息,查询本地缓存,得到本地查询结果;
第一发送模块,用于若所述本地查询结果指示查找到所述第二用户标识信息对应的目标用户标识文档数据,则向所述第二客户端发送所述目标用户标识文档数据。
可选的,所述查询模块,还用于根据所述第二用户标识信息,通过用户标识缓存列表,得到所述本地查询结果,其中,所述用户标识缓存列表包括多个预设用户标识文档数据。
可选的,所述装置还包括:
获取模块,用于若所述本地查询结果指示未查找到所述目标用户标识文档数据,则调用所述区块链节点,获取所述第二用户标识信息的账号信息;
恢复模块,用于根据所述账号信息恢复所述目标用户标识文档数据;
第二发送模块,用于并向所述第二客户端发送所述目标用户标识文档数据。
可选的,所述装置还包括:
缓存模块,用于在预设时长内,缓存所述目标用户标识文档数据。
更新模块,用于根据所述用户标识文档数据,更新所述用户标识缓存列表。
可选的,所述装置还包括:
验证模块,用于对所述用户处理请求进行验证,得到验证结果,所述验证结果用于指示验证是否成功;
所述处理模块,用于根据所述验证结果,对验证成功的至少一个所述用户处理请求进行合并处理,得到合并处理后的用户处理请求。
可选的,所述用户处理请求为用户创建请求或者用户更改请求;所述用户创建请求用于指示创建所述第一用户标识信息,所述用户更改请求用于指示更改所述第一用户标识信息。
第三方面,本发明实施例还提供了一种委托服务器,包括:存储器和处理器,所述存储器存储有所述处理器可执行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法。
第四方面,本发明实施例还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被读取并执行时,实现上述第一方面任一项所述的方法。
本发明的有益效果是:本发明实施例提供一种区块链用户请求处理方法,包括:接收第一客户端发送的至少一个用户处理请求,每个用户处理请求用于指示区块链节点对第一用户标识信息进行处理,第一用户标识信息为第一客户端对应的第一用户的标识信息;对预设时间段内收到的用户处理请求进行合并处理,得到合并处理后的用户处理请求;根据合并处理后的用户处理请求调用区块链节点,以使区块链节点根据合并处理后的用户处理请求进行处理。对于至少一个用户处理请求进行合并处理,至少一个用户处理请求仅需要调用一次区块链即可,减小了区块链交易压力,提高了交易稳定性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种用户请求处理系统的结构示意图;
图2为本发明实施例提供的一种区块链用户请求处理方法的流程示意图;
图3为本发明实施例提供的一种区块链用户请求处理方法的流程示意图;
图4为本发明实施例提供的一种区块链用户请求处理方法的流程示意图;
图5为本发明实施例提供的一种区块链用户请求处理方法的流程示意图;
图6为本发明实施例提供的一种区块链用户请求处理方法的流程示意图;
图7为本发明实施例提供的一种区块链用户请求处理方法的流程示意图;
图8为本发明实施例提供的一种区块链用户请求处理方法的流程示意图;
图9为本发明实施例提供的一种区块链用户请求处理装置的结构示意图;
图10为本发明实施例提供的一种委托服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要说明的是,若出现术语“上”、“下”、等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
此外,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请的实施例中的特征可以相互结合。
以下对本申请实施例中所涉及的名词进行解释说明:
分布式身份标识:分布式身份标识(Decentralized Identifiers,DID)是一种去中心化的可验证的数字标识符,具有分布式、自主可控、跨链复用等特点。实体可自主完成DID的注册、解析、更新或者撤销操作。DID具体解析为DID Document(DID文档),DIDDocument包括DID的唯一标识码,公钥列表和公钥的详细信息(持有者、加密算法、密钥状态等),以及DID持有者的其他属性描述。
可验证声明:可验证声明(Verifiable Credential,VC)提供了一种规范来描述实体所具有的某些属性,实现基于证据的信任。DID持有者,可以通过VC,向其他实体(个人、组织、具体事物等)证明自己的某些属性是可信的。
发行者:拥有用户数据并能开具VC的实体,如医院、银行、大学等机构和组织。
持有者即用户:持有者向发行者请求、收到、持有VC的实体,向验证者出示VC。开具的VC可以自我保存,方便以后再次使用。
需要说明的是,持有者可以进行DID注册以及DID文档查询,发行者注册DID并成为发行者,持有者用户申请VC,发行者验证DID发行VC,持有者用户向验证者提供VC,验证者验证持有者/发行者/签名信息等,验证者也可能调用发行者检查VC状态。
另外,持有者可以将一个或多个VC转让给其他持有者;持有者可以将一个或多个VC呈现给验证者,且可选择性的出示VP;验证者可以验证所呈现的VC和VP的真实性(这里也包括检查VC的吊销状态);发行者可以吊销VC;持有者可以删除VC。
图1为本申请实施例提供的一种用户请求处理系统的结构示意图,如图1所示,该用户请求处理系统可以包括:区块链101、多个用户设备102、委托服务器103,每个用户设备102与委托服务器103通信连接,委托服务器103与区块链101通信连接。
其中,每个用户设备102上可以安装有第一客户端或者第二客户端,第一客户端和第二客户端为可以相同类型的客户端或者不同类型的客户端。第一客户端和第二客户端的数量也可以均为多个,多个第一客户端和多个第二客户端可以与委托服务器103进行通信。
需要说明的是,第一客户端可以为持有者用户对应的持有者客户端,第二客户端可以为持有者客户端、发行者客户端、验证者客户端中的任意一个,其中,发行者客户端为发行者对应的客户端,验证者客户端为验证者对应的客户端。
在一些实施方式中,至少一个第一客户端可以向委托服务器103发送至少一个用户处理请求;委托服务器103可以接收该至少一个用户处理请求,并对预设时间段内收到的用户处理请求进行合并处理,得到合并处理后的用户处理请求;继而根据合并处理后的用户处理请求调用区块链101中的区块链节点1011,以使区块链节点1011根据合并处理后的用户处理请求进行处理。
其中,用户处理请求用于指示区块链节点1011对第一用户标识信息进行处理。
在本申请实施例中,用户设备102可以为终端设备,例如可以为智能手机、台式电脑、笔记本电脑、平板电脑中的任一种。区块链101是指用于进行节点与节点之间数据共享的系统,一个区块链101中可以包括多个区块链节点1011,多个区块链节点1011可以是指区块链101中各个服务器,当然区块链101中的一个服务器可以对应有多个区块链节点1011。
委托服务器上可以部署有多个委托服务,可选的,委托服务器可以基于委托服务执行本申请实施例提供的区块链用户请求处理方法,以下以委托服务器为执行主体对本申请实施例提供的区块链用户请求处理方法进行解释说明。
图2为本发明实施例提供的一种区块链用户请求处理方法的流程示意图,如图2所示,该方法可以包括:
S101、接收第一客户端发送的至少一个用户处理请求。
其中,每个用户处理请求用于指示区块链节点对第一用户标识信息进行处理。第一用户标识信息为第一客户端对应的第一用户的标识信息。
在一些实施方式中,第一客户端响应输入的处理操作生成第一用户处理请求,并向委托服务器发送至少一个用户处理请求,委托服务器可以接收该至少一个用户处理请求。其中,第一客户端可以为至少一个不同的客户端。
可选的,第一用户标识信息可以为分布式身份标识DID。
S102、对预设时间段内收到的用户处理请求进行合并处理,得到合并处理后的用户处理请求。
其中,合并处理后的用户处理请求可以为批量户处理请求。
在本申请实施例中,委托服务器可以将预设时间段内收到的用户处理请求聚集在一起,实现对于预设时间段内收到的用户处理请求的合并处理,得到合并处理后的用户处理请求。
需要说明的是,预设时间段可以为3s(秒),也可以为5s,还可以为根据实际情况或者经验值进行设定,本申请实施例对此不进行具体限制。
S103、根据合并处理后的用户处理请求调用区块链节点,以使区块链节点根据合并处理后的用户处理请求进行处理。
在一些实施方式中,委托服务器可以获取待上链的合并处理后的用户处理请求,并进行合并上链,调用合约上链接口。相应的,区块链中的区块链节点可以根据合并处理后的用户处理请求进行处理。
在本申请实施例中,区块链节点可以根据不同类型的用户处理请求进行相应的交易,在交易完成后出块,将处理结果反馈至委托服务器,委托服务器可以将处理结果反馈至第一客户端。
另外,至少一个第一客户端可以同步等待区块链节点对于用户处理请求的处理结果。
综上所述,本发明实施例提供一种区块链用户请求处理方法,包括:接收第一客户端发送的至少一个用户处理请求,每个用户处理请求用于指示区块链节点对第一用户标识信息进行处理,第一用户标识信息为第一客户端对应的第一用户的标识信息;对预设时间段内收到的用户处理请求进行合并处理,得到合并处理后的用户处理请求;根据合并处理后的用户处理请求调用区块链节点,以使区块链节点根据合并处理后的用户处理请求进行处理。对于至少一个用户处理请求进行合并处理,至少一个用户处理请求仅需要调用一次区块链即可,减小了区块链交易压力,提高了交易稳定性。
可选的,用户处理请求为用户创建请求或者用户更改请求;用户创建请求用于指示创建第一用户标识信息,用户更改请求用于指示更改第一用户标识信息。
其中,用户创建请求可以包括:创建参数、签名数据;用户更改请求可以包括:第一用户标识信息、更改参数、签名数据。签名数据可以为第一客户端通过私钥采用预设区块链签名算法对创建参数或者更改参数进行签名后所获取的数据。
可选的,预设区块链签名算法可以为Secp256k1椭圆曲线签名算法。将创建参数或者更改参数表示为changeInfo,私钥可以表示为privateKey,则签名数据可以表示为Sign=secp256k1Sign(changeInfo,privateKey)。
需要说明的是,创建参数或者更改参数包括:第一用户标识信息账号的公钥信息(表示为verificationMethod)、持有者、持有的服务信息、创建时间、修改时间、恢复账号等。
可选的,该方法还可以包括:对用户处理请求进行验证,得到验证结果。其中,验证结果用于指示验证是否成功。
在本申请实施例中,若用户处理请求为用户创建请求,则公钥内的信息(verificationMethod.publicKeyHex)必须为区块链私钥对应的公钥信息,基于当前私钥信息进行签名,确保前区块链账号对创建的第一用户标识信息有控制权。若用户处理请求为用户更改请求,则签名数据对应的公钥必须存在于第一用户标识文档中的公钥信息。
在一些实施方式中,委托服务器可以采用预设的验证算法,验证用户处理请求中的签名数据,若用户处理请求为用户创建请求,获取创建参数内的公钥信验证签名有效性,若验证无效则返回第一客户端验证失败,若验证有效则等待创建第一用户标识信息。若用户处理请求为用户更改请求,获取区块链上的第一用户标识信息文档内的公钥消息,并用相应的算法验证签名。验证签名有效性,若验证无效则返回用户失败,若验证有效则等待变更第一用户标识信息。
其中,预设的验证算法可以表示为:
flag=verifySecp256k1Signature(changeInfo,sign,publicKey)
可选的,上述S102中对预设时间段内收到的用户处理请求进行合并处理,得到合并处理后的用户处理请求的过程,可以包括:根据验证结果,对验证成功的至少一个用户处理请求进行合并处理,得到合并处理后的用户处理请求。
可选的,上述S102中对预设时间段内收到的用户处理请求进行合并处理,得到合并处理后的用户处理请求的过程,可以包括:将预设时间段内收到的用户处理请求汇聚到待上链队列,得到合并处理后的用户处理请求。
在一种可能的实施方式中,委托服务器可以将验证成功的用户创建请求和/或用户修改请求汇聚在一起,加入到待上链队列,得到合并处理后的用户处理请求。
该过程的实现程序代码如下所示:
//待上链队列
ArrayBlockingQueue
//待获取结果map
Map
//DID委托服务将请求加入到待上链队列及待获取结果map
public DIDChange addDIDChangeRequest(String did,String changeInfo){
//生成本次操作的唯一编号
String generateNumber=GenerateUtils.generateOrderId(new Date());
//新建本次创建的对象
DIDChange didChange=new DIDChange();
didChange.setNumber(generateNumber);
didChange.setDid(did);
didChange.setChangeInfo(changeInfo);
didChange.setCountDownLatch(new CountDownLatch(1));
//加入待上链队列及等待结果创建的map
waitDIDChangeMap.put(generateNumber,didChange);
waitOnChainQueue.offer(didChange);
return didChange;
}
在本申请实施例中,委托服务器可以不断的轮询待上链队列,获取合并处理后的N个用户处理请求,调用合约上链接口。
该过程的实现程序代码如下所示:
//轮询获取队列请求
public void pollDIDBlocking(){
while(true){
//一次性获取N个
List
waitOnChainQueue.drainTo(list);
//对N笔交易执行上链
}
}
可选的,图3为本发明实施例提供的一种区块链用户请求处理方法的流程示意图,如图3所示,在上述S103中根据合并处理后的用户处理请求调用区块链节点的过程之前,该方法还可以包括:
S301、随机生成操作标识信息。
其中,操作标识信息可以为此次操作的唯一标识,该操作标识信息可以表示为generateNumber。
S302、根据操作标识信息、用户处理请求、预设线程等待工具创建目标对象。
其中,用户处理请求可以包括操作的第一用户标识信息,创建参数或者修改参数。
在一些实施方式中,委托服务器根据操作标识信息、操作的第一用户标识信息、创建/修改参数、预设线程等待工具,创建目标对象。其中,线程等待工具可以用CountDownLatch表示,目标对象可以用DIDChange表示。
S303、将目标对象保存至待上链队列中。
其中,待上链队列可以表示为waitOnChainQueue。
需要说明的是,委托服务器可以将目标对象保存至待上链队列中,同时还可以保存到待获取结果中,将操作标识信息作为键key,将目标对象DIDChange作为值,待获取结果可以表示为map waitDIDChangeMap。
在本申请实施例中,委托服务器可以调用合约上链接口,上链接口可以表示为batchChangeDID,该上链接口的输入参数可以包括:第一用户标识信息地址列表、变更消息列表、操作标识信息。其中,第一用户标识信息地址列表可以表示为identityList,变更消息列表可以表示为changeInfoList。
区块链节点可以依次循环第一用户标识信息地址列表,若第一用户标识信息存在,则区块链节点的智能合约执行变更操作,执行各第一用户标识信息的各自变更,触发第一用户标识信息变更事件,该第一用户标识信息可以表示为DIdAttributeChanged。若第一用户标识信息不存在,则区块链节点的智能合约执行新增操作,执行各第一用户标识信息的各自新增,继而最后触发第一用户标识信息变更事件。
该过程的实现程序代码如下所示:
//did参数事件//did地址//单号信息
event DIdAttributeChanged(address identity,string generateNumber);
//批量创建或修改did identityList did地址,changeInfoList变更消息,包括创建信息/公钥消息/授权公钥列表等信息,本次操作的唯一单号列表functionbatchChangeDID(address[]identityList,string[]changeInfoList,string[]generateNumberList)public{
//循环did地址
for(uint i=0;i address identity=identityList[i]; if(identity!=0){ //变更业务操作 DIdAttributeChanged(identity,generateNumberList[i]); }else{ //新增业务操作 DIdAttributeChanged(identity,generateNumberList[i]); } } } 可选的,图4为本发明实施例提供的一种区块链用户请求处理方法的流程示意图,如图4所示,在上述S103中根据合并处理后的用户处理请求调用区块链节点的过程之后,该方法还可以包括: S401、若监听到来自区块链节点的第一用户标识信息变更事件,对第一用户标识信息变更事件进行解析处理,得到解析结果。 其中,解析结果可以包括:操作标识信息和第一用户标识信息,第一用户标识信息变更事件指示处理成功。 另外,第一用户标识信息变更事件可以包括:第一用户标识信息以及操作标识信息。 在一些实施方式中,区块链节点在交易完成并出块后,会将第一用户标识信息变更事件发生给委托服务器中订阅当前第一用户标识信息合约的委托服务;委托服务器可以通过委托服务监听第一用户标识信息变更事件,并对第一用户标识信息变更事件进行解析处理,得到解析结果。 S402、根据操作标识信息和第一用户标识信息,通过目标对象,将处理成功的结果传输至第一客户端。 在本申请实施例中,委托服务器可以根据操作标识信息确定目标对象,基于目标对象中的线程等待工具被唤醒,则说明第一用户标识信息创建有了结果,此时便可将目标对象返回给用户。若为新建,则第一客户端可获取到最新的第一用户标识信息;若为变更,则第一客户端也可获取到成功变更。 该过程的实现程序代码如下所示: //用户线程等待结果 public DIDChange waitDIDChangeResult(DIDChange didChange){ try{ didChange.getCountDownLatch().await(); }catch(InterruptedException e){ e.printStackTrace(); } return didChange; } 可选的,图5为本发明实施例提供的一种区块链用户请求处理方法的流程示意图,如图5所示,上述S402中根据所述操作标识信息,通过所述目标对象,将所述处理成功的结果传输至所述第一客户端的过程,可以包括: S501、根据操作标识信息查找目标对象,得到查找结果。 其中,委托服务器可以根据操作标识信息,查询待获取结果,得到查找结果。该查找结果可以指示是否查找到目标对象。待获取结果的键为操作标识信息,值为目标对象。 S502、若查找结果指示查找到目标对象,则将处理成功的结果和第一用户标识信息写入目标对象。 在一些实施方式中,目标对象中可以包括:创建/更改成功以及第一用户标识信息。 S503、唤醒目标对象中的预设线程等待工具,以唤醒第一用户标识信息线程,将处理成功的结果传输至第一客户端。 在一些实施方式中,基于目标对象中的线程等待工具被唤醒,则说明第一用户标识信息创建有了结果,此时便可将目标对象返回给用户。若为新建,则第一客户端可获取到最新的第一用户标识信息;若为变更,则第一客户端也可获取到成功变更的信息。 可选的,图6为本发明实施例提供的一种区块链用户请求处理方法的流程示意图,如图6所示,解析结果还包括:第一用户标识信息;方法还包括: S601、删除用户标识缓存列表中第一用户标识信息对应的用户标识文档数据,确定删除通知信息。 S602、通过第一用户标识信息线程,将删除通知信息传输至第一客户端。 需要说明的是,可以实现及时的更新用户标识缓存列表,提高查询用户标识缓存列表的准确性,并将删除通知信息传输至第一客户端,使得第一客户端的用户可以及时获知,用户标识缓存列表中第一用户标识信息对应的用户标识文档数据已被删除。 而且,委托服务器上的委托服务可以订阅当前区块链节点的did合约事件,方便区块链节点通过所有的订阅者订阅到did变更事件,则及可清除缓存同时通知用户线程。这样可以保证用户查询的did缓存数据一定是最新的。 可选的,该方法还包括:若查找结果指示未查找到目标对象,删除用户标识缓存列表中第一用户标识信息对应的用户标识文档数据。 其中,若为查找到目标对象,则说明委托服务器的该委托服务器中不存在对应的用户线程,也无需通知第一客户端。 该过程的实现程序代码如下所示: //监听事件结果 public void noticeBlockchainEvent(){ //event DIdAttributeChanged(address identity,string generateNumber); //获取事件did-identity及generateNumber生成单号 String generateNumber=resolveGenerateNumberByEvent(); String identity=resolveDIDByEvent(); //根据generateNumber获取DIDChange,写入结果,并唤醒用户等待线程 DIDChange didChange=waitDIDChangeMap.get(generateNumber); if(didChange!=null){ didChange.setDid(identity); didChange.setResult(true); didChange.getCountDownLatch().countDown(); waitDIDChangeMap.remove(didChange); } //根据did-identity清除缓存 didCacheMap.remove(identity); } 可选的,该方法还可以包括: 若监听到来自区块链节点的第一用户标识信息变更事件,删除用户标识缓存列表中第一用户标识信息对应的用户标识文档数据。 在一些实施方式中,若第一用户标识信息发生变更,委托服务器通过区块链订阅功能通知每一个订阅区块事件的委托服务,委托服务可以监听到第一用户标识信息变更事件,并对第一用户标识信息变更事件进行解析处理,得到解析结果;解析结果中可以包括:第一用户标识信息;对用户标识缓存列表中第一用户标识信息对应的用户标识文档数据进行删除。 综上所述,通过区块链订阅功能,可以通知对第一用户标识信息对应的用户标识文档数据的缓存进行实时删除,可以实现及时的清理缓存,可以保证缓存列表中与用户标识文档数据的时效性,继而可以保证从缓存列表中每次查询到的数据都是最新的。 可选的,图7为本发明实施例提供的一种区块链用户请求处理方法的流程示意图,如图7所示,接收第二客户端发送的用户查询请求,用户查询请求包括:第二用户标识信息;该方法还可以包括: S701、根据第二用户标识信息,查询本地缓存,得到本地查询结果。 S702、若本地查询结果指示查找到第二用户标识信息对应的目标用户标识文档数据,则向第二客户端发送目标用户标识文档数据。 在本申请实施例中,第二客户端每次获取目标用户标识文档数据的时候,通过本地缓存查询,提高查询性能,并减少区块链的查询压力。 可选的,上述S701中根据第二用户标识信息,查询本地缓存,得到本地查询结果的过程,可以包括:根据第二用户标识信息,通过用户标识缓存列表,得到本地查询结果。 其中,用户标识缓存列表包括多个预设用户标识文档数据。用户标识缓存列表可以表示为didCacheMap。 在一些实施方式中,用户标识缓存列表该可以包括:各个预设用户标识信息和各个预设用户标识文档数据之间的映射关系,委托服务器可以查找与第二用户标识信息相同的目标预设用户标识信息,将该目标预设用户标识信息对应的预设用户标识文档数据,作为目标用户标识文档数据。 可选的,图8为本发明实施例提供的一种区块链用户请求处理方法的流程示意图,如图8所示,该方法还可以包括: S801、若本地查询结果指示未查找到目标用户标识文档数据,则调用区块链节点,获取第二用户标识信息的账号信息。 其中,委托服务器可以从第二用户标识信息的账号中获取账号信息。 另外,账号信息可以包括:公钥、持有者、持有的服务信息、创建时间、修改时间、恢复公钥等参数。 S802、根据账号信息恢复目标用户标识文档数据。 S803、向第二客户端发送目标用户标识文档数据。 需要说明的是,委托服务器可以向第二客户端发送目标用户标识文档数据,第二客户端可以接收目标用户标识文档数据,继而展示和/或存储目标用户标识文档数据。 该过程的实现程序代码如下所示: //通过didCacheMap查询did文档 public String queryDIDDocumentByDID(String did){ //若didCacheMap本地缓存存在则从本地缓存拉取 if(didCacheMap.containsKey(did)){ return didCacheMap.get(did); }else{ //不存在,则从区块链拉取,并放入缓存 String dIDDocument=queryByBlockChain(did); didCacheMap.put(did,dIDDocument); return dIDDocument; } } 可选的,该方法还可以包括:在预设时长内,缓存目标用户标识文档数据。根据用户标识文档数据,更新用户标识缓存列表。 其中,委托服务器可以将用户标识文档数据存入用户标识缓存列表中。另外,预设时长可以为5s,也可以为7s,还可以根据实际需求进行设定,本申请实施例对此不进行具体限制。 综上所述,本发明实施例提供一种区块链用户请求处理方法,该方法可以包括:接收第一客户端发送的至少一个用户处理请求,每个用户处理请求用于指示区块链节点对第一用户标识信息进行处理,第一用户标识信息为第一客户端对应的第一用户的标识信息;对预设时间段内收到的用户处理请求进行合并处理,得到合并处理后的用户处理请求;根据合并处理后的用户处理请求调用区块链节点,以使区块链节点根据合并处理后的用户处理请求进行处理。对于预设时间段内收到的至少一个用户处理请求进行合并处理,至少一个用户处理请求仅需要调用一次区块链即可,减小了区块链交易压力,提高了交易稳定性。 而且,第二客户端每次获取目标用户标识文档数据时,通过本地缓存查询,提高查询性能,并减少区块链的查询压力。通过区块链订阅事件功能,可对用户标识信息缓存进行实时删除,保证用户标识信息缓存的时效性。 下述对用以执行本申请所提供的区块链用户请求处理方法的区块链用户请求处理装置、委托服务器及存储介质等进行说明,其具体的实现过程以及技术效果参见上述区块链用户请求处理方法的相关内容,下述不再赘述。 图9为本发明实施例提供的一种区块链用户请求处理装置的结构示意图,该装置应用于委托服务器,如图9所示,该装置可以包括: 接收模块901,用于接收第一客户端发送的至少一个用户处理请求,每个所述用户处理请求用于指示区块链节点对第一用户标识信息进行处理,所述第一用户标识信息为所述第一客户端对应的第一用户的标识信息; 处理模块902,用于对预设时间段内收到的所述用户处理请求进行合并处理,得到合并处理后的用户处理请求; 调用模块903,用于根据所述合并处理后的用户处理请求调用区块链节点,以使所述区块链节点根据所述合并处理后的用户处理请求进行处理。 可选的,所述处理模块902,还用于将所述预设时间段内收到的所述用户处理请求汇聚到待上链队列,得到所述合并处理后的用户处理请求。 可选的,所述装置还包括: 生成模块,用于随机生成操作标识信息; 创建模块,用于根据所述操作标识信息、所述用户处理请求、预设线程等待工具创建目标对象; 保存模块,用于将所述目标对象保存至所述待上链队列中。 可选的,所述装置还包括: 解析模块,用于若监听到来自所述区块链节点的第一用户标识信息变更事件,对所述第一用户标识信息变更事件进行解析处理,得到解析结果,所述解析结果包括:所述操作标识信息和所述第一用户标识信息,所述第一用户标识信息变更事件指示处理成功; 第一传输模块,用于根据所述操作标识信息和所述第一用户标识信息,通过所述目标对象,将所述处理成功的结果传输至所述第一客户端。 可选的,所述第一传输模块,还用于根据所述操作标识信息查找所述目标对象,得到查找结果;若查找结果指示查找到所述目标对象,则将所述处理成功的结果和所述第一用户标识信息写入所述目标对象;唤醒所述目标对象中的所述预设线程等待工具,以唤醒第一用户标识信息线程,将所述处理成功的结果传输至所述第一客户端。 可选的,所述装置还包括: 第一删除模块,用于删除用户标识缓存列表中所述第一用户标识信息对应的用户标识文档数据,确定删除通知信息。 第二传输模块,用于通过所述第一用户标识信息线程,将所述删除通知信息传输至所述第一客户端。 可选的,所述装置还包括: 第二删除模块,用于若查找结果指示未查找到所述目标对象,删除用户标识缓存列表中第一用户标识信息对应的用户标识文档数据。 可选的,所述装置还包括: 第一接收模块,用于接收第二客户端发送的用户查询请求,所述用户查询请求包括:第二用户标识信息; 查询模块,用于根据所述第二用户标识信息,查询本地缓存,得到本地查询结果; 第一发送模块,用于若所述本地查询结果指示查找到所述第二用户标识信息对应的目标用户标识文档数据,则向所述第二客户端发送所述目标用户标识文档数据。 可选的,所述查询模块,还用于根据所述第二用户标识信息,通过用户标识缓存列表,得到所述本地查询结果,其中,所述用户标识缓存列表包括多个预设用户标识文档数据。 可选的,所述装置还包括: 获取模块,用于若所述本地查询结果指示未查找到所述目标用户标识文档数据,则调用所述区块链节点,获取所述第二用户标识信息的账号信息; 恢复模块,用于根据所述账号信息恢复所述目标用户标识文档数据; 第二发送模块,用于并向所述第二客户端发送所述目标用户标识文档数据。 可选的,所述装置还包括: 缓存模块,用于在预设时长内,缓存所述目标用户标识文档数据。 更新模块,用于根据所述用户标识文档数据,更新所述用户标识缓存列表。 可选的,所述装置还包括: 验证模块,用于对所述用户处理请求进行验证,得到验证结果,所述验证结果用于指示验证是否成功; 所述处理模块902,用于根据所述验证结果,对验证成功的至少一个所述用户处理请求进行合并处理,得到合并处理后的用户处理请求。 可选的,所述用户处理请求为用户创建请求或者用户更改请求;所述用户创建请求用于指示创建所述第一用户标识信息,所述用户更改请求用于指示更改所述第一用户标识信息。 上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。 以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digitalsingnalprocessor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。 图10为本发明实施例提供的一种委托服务器的结构示意图,如图10所示,该委托服务器包括:处理器1001、存储器1002。其中,存储器1002用于存储程序,处理器1001调用存储器1002存储的程序,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。 可选地,本发明还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。 在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。 以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 基于公钥基础结构的身份验证通过提供登录流的PKI方法,以响应用户使用服务提供商服务器提供的服务的登录请求,该服务使用具有区块链数据库的智能合约,并且服务器使用相同的
机译: 请求消息处理方法,装置和系统以及服务器和存储介质
机译: 用于多区块链,设备,服务器和存储介质的碎片处理方法