一种面向跨链的哈希函数库更新系统

文档序号:33127637发布日期:2023-02-01 06:00阅读:28来源:国知局
一种面向跨链的哈希函数库更新系统

1.本发明涉及区块链技术领域,特别是涉及一种面向跨链的哈希函数库更新系统。


背景技术:

2.跨链技术是打通各个区块链系统,实现链间信息互联互通,区块链数据价值最大化的重要技术手段。跨链过程中最为核心的步骤是跨链数据验证,其是实现跨链资产转移、跨链锁定资产留置等功能的前提。跨链数据验证中需要根据不同区块链系统的设计,使用对应哈希函数,对以哈希值形式保存的数据进行验证。
3.哈希函数是一类将任意长度数据映射为固定长度数据的函数,输出的固定长度数据被称为哈希值或消息摘要,输入的任意长度数据被称为哈希值的原像。哈希函数具有单向性、抗碰撞性和雪崩效应,在区块链中被应用于数据的存储,验证以及共识算法中。
4.目前,跨链验证中哈希函数的使用已经存在使用合约编写哈希函数的方案。但该方案存在合约中计算消耗高,支持哈希函数数量少,哈希函数更新困难等问题。为解决原有方案问题,一种面向跨链的哈希函数库方案被提了出来。该方案将哈希函数计算从合约中转移到虚拟机外运行,极大降低了哈希运算的成本,且能够提供更多哈希函数用于跨链验证,适用区块链系统更多。但由于哈希函数库不在链上,对哈希函数更新只能通过硬分叉的方式进行,而硬分叉在实际区块链系统中是难以接受的,这使得该方案在可用性方面存在极大问题。该方案缺少有效的更新机制。


技术实现要素:

5.本发明的目的是提供一种面向跨链的哈希函数库更新系统,提高了哈希函数更新的可用性和安全性。
6.为实现上述目的,本发明提供了如下方案:
7.一种面向跨链的哈希函数库更新系统,包括:哈希函数存储合约、哈希函数管理合约和本地哈希函数库,所述哈希函数存储合约和所述哈希函数管理合约位于区块链上,所述本地哈希函数库位于本地服务器;
8.每个所述哈希函数存储合约用于存储一种哈希函数,每个所述哈希函数存储合约存储有合约管理权限账户、哈希函数名称和哈希函数代码;
9.所述哈希函数管理合约包括管理权限的账户列表,所述管理权限的账户列表用于存储多个所述哈希函数名称,以及与各所述哈希函数名称对应的所述合约管理权限账户;
10.所述本地哈希函数库用于存储多种哈希函数代码,所述本地哈希函数库包括更新接口;所述更新接口用于通过所述哈希函数管理合约判断当前账户是否为待更新哈希函数的合约管理权限账户,当当前账户为待更新哈希函数的合约管理权限账户时,更新待更新哈希函数的所述哈希函数存储合约和所述本地哈希函数库。
11.可选地,所述本地哈希函数库还包括调用接口,所述调用接口用于所述本地服务器对所述本地哈希函数库中哈希函数代码的调用。
12.可选地,所述哈希函数管理合约还用于存储与各所述哈希函数名称对应的哈希函数存储合约地址的映射;
13.所述更新接口还用于通过所述哈希函数管理合约中哈希函数存储合约地址的映射,判断所述待更新哈希函数是否存在所述哈希函数存储合约。
14.可选地,各所述哈希函数名称作为各哈希函数的唯一标识。
15.可选地,所述待更新哈希函数的更新操作包括哈希函数添加、哈希函数更名、哈希函数更新和哈希函数移除。
16.可选地,所述哈希函数添加包括以下步骤:
17.所述哈希函数管理合约用于判断当前账户是否为所述待更新哈希函数的合约管理权限账户;
18.若当前账户不是合约管理权限账户,则提示添加失败;
19.若当前账户是合约管理权限账户,则判断所述待更新哈希函数的所述哈希函数存储合约是否存在;
20.若所述待更新哈希函数的所述哈希函数存储合约存在,则提示添加失败;
21.若所述待更新哈希函数的所述哈希函数存储合约不存在,则创建所述待更新哈希函数的所述哈希函数存储合约,并将添加成功的结果发送所述本地哈希函数库;
22.当所述本地哈希函数库接收到添加成功的结果,则在所述本地哈希函数库中添加所述待更新哈希函数的哈希函数名称和哈希函数代码。
23.可选地,所述哈希函数更名包括以下步骤:
24.所述哈希函数管理合约用于判断当前账户是否为所述待更新哈希函数的合约管理权限账户;
25.若当前账户不是合约管理权限账户,则提示更名失败;
26.若当前账户是合约管理权限账户,则判断所述待更新哈希函数的所述哈希函数存储合约是否存在;
27.若所述待更新哈希函数的所述哈希函数存储合约不存在,则提示更名失败;
28.若所述待更新哈希函数的所述哈希函数存储合约存在,则将所述待更新哈希函数的所述哈希函数存储合约和所述哈希函数管理合约中对应的哈希函数名称按照预设名称进行更名,并将更名成功的结果发送所述本地哈希函数库;
29.当所述本地哈希函数库接收到更名成功的结果,则在所述本地哈希函数库中对所述待更新哈希函数的哈希函数名称按照所述预设名称进行更名。
30.可选地,所述哈希函数更新包括以下步骤:
31.所述哈希函数管理合约用于判断当前账户是否为所述待更新哈希函数的合约管理权限账户;
32.若当前账户不是合约管理权限账户,则提示更新失败;
33.若当前账户是合约管理权限账户,则判断所述待更新哈希函数的所述哈希函数存储合约是否存在;
34.若所述待更新哈希函数的所述哈希函数存储合约不存在,则提示更新失败;
35.若所述待更新哈希函数的所述哈希函数存储合约存在,则将所述待更新哈希函数的所述哈希函数存储合约中对应的哈希函数代码按照预设哈希函数代码进行修改,并将更
新成功的结果发送所述本地哈希函数库;
36.当所述本地哈希函数库接收到更新成功的结果,则在所述本地哈希函数库中对所述待更新哈希函数的哈希函数代码按照预设哈希函数代码进行修改。
37.可选地,所述哈希函数移除包括以下步骤:
38.所述哈希函数管理合约用于判断当前账户是否为所述待更新哈希函数的合约管理权限账户;
39.若当前账户不是合约管理权限账户,则提示移除失败;
40.若当前账户是合约管理权限账户,则判断所述待更新哈希函数的所述哈希函数存储合约是否存在;
41.若所述待更新哈希函数的所述哈希函数存储合约不存在,则提示移除失败;
42.若所述待更新哈希函数的所述哈希函数存储合约存在,则将所述待更新哈希函数的所述哈希函数存储合约销毁,并将移除成功的结果发送所述本地哈希函数库;
43.当所述本地哈希函数库接收到移除成功的结果,则在所述本地哈希函数库中对所述待更新哈希函数的文件进行删除。
44.根据本发明提供的具体实施例,本发明公开了以下技术效果:
45.本发明公开了一种面向跨链的哈希函数库更新系统,通过哈希函数存储合约存储各哈希函数的合约管理权限账户,并根据哈希函数管理合约对哈希函数存储合约进行管理,通过本地哈希函数库的更新接口与哈希函数管理合约交互,实现链上哈希函数和本地哈希函数的统一更新,提高了哈希函数更新的可用性和安全性。
附图说明
46.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
47.图1为本发明一种面向跨链的哈希函数库更新系统结构示意图;
48.图2为本发明哈希函数添加流程示意图;
49.图3为本发明哈希函数更名流程示意图;
50.图4为本发明哈希函数更新流程示意图;
51.图5为本发明哈希函数移除流程示意图;
52.图6为本发明本地哈希函数库更新流程示意图。
具体实施方式
53.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
54.本发明的目的是提供一种面向跨链的哈希函数库更新系统,提高了哈希函数更新的可用性和安全性。
55.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
56.图1为本发明一种面向跨链的哈希函数库更新系统结构示意图,如图1所示,一种面向跨链的哈希函数库更新系统,包括:哈希函数存储合约102、哈希函数管理合约101和本地哈希函数库103,所述哈希函数存储合约102和所述哈希函数管理合约101位于区块链上,属于链上合约部分,所述本地哈希函数库103位于本地服务器。
57.哈希函数存储合约102用于在区块链上存放哈希函数代码,每个所述哈希函数存储合约102用于存储一种哈希函数,每个所述哈希函数存储合约102存储有合约管理权限账户、哈希函数名称和哈希函数代码。哈希函数存储合约102存储的哈希函数代码为压缩后的哈希函数代码,哈希函数存储合约102存储还用于存储哈希函数更新时间。其中,哈希函数名称作为哈希函数的唯一标识。由于哈希函数存储合约102所在交易上链,因此能保证所有可信节点统一更新。哈希函数存储合约102中提供获取和更新哈希函数的方法,其中更新哈希函数方法仅有拥有者能够调用。哈希函数存储合约102仅通过哈希函数管理合约101进行创建,创建时设置拥有者为哈希函数管理合约101。
58.本地哈希函数库103中哈希函数与哈希函数存储合约102一一对应,如图1中,哈希函数1对应合约(哈希函数存储合约102)1,哈希函数2对应合约(哈希函数存储合约102)2,哈希函数n对应合约(哈希函数存储合约102)n,
59.哈希函数管理合约101用于对存储在合约中的哈希函数进行管理。所述哈希函数管理合约101包括管理权限的账户列表,所述管理权限的账户列表用于存储多个所述哈希函数名称,以及与各所述哈希函数名称对应的所述合约管理权限账户。所述哈希函数管理合约101还用于存储与各所述哈希函数名称对应的哈希函数存储合约102地址的映射。
60.哈希函数管理合约101提供向链上添加哈希函数的方法,以及对已存储在链上的哈希函数进行获取、更名、更新和移除的方法,其中获取哈希函数的方法可以被任何账户进行调用,而哈希函数添加、更名、更新和移除的方法仅有拥有合约管理权限的账户进行调用,防止恶意账户对哈希函数进行篡改。
61.本地哈希函数库103存储多种哈希函数的代码实现,为跨链验证提供哈希函数调用。
62.所述本地哈希函数库103用于存储多种哈希函数代码,每个哈希函数均以单独代码文件形式存储。所述本地哈希函数库103包括更新接口和调用接口。
63.更新接口用于与合约(哈希函数管理合约101和哈希函数存储合约102)进行交互,包括从合约中更新哈希函数,向合约中添加哈希函数,对合约中哈希函数进行更名、更新和移除。本地哈希函数库103中存储本地哈希函数名称与更新时间的映射,用于更新本地哈希函数。
64.所述更新接口用于通过所述哈希函数管理合约101判断当前账户是否为待更新哈希函数的合约管理权限账户,当当前账户为待更新哈希函数的合约管理权限账户时,更新待更新哈希函数的所述哈希函数存储合约102和所述本地哈希函数库103。
65.所述调用接口用于所述本地服务器对所述本地哈希函数库103中哈希函数代码的调用。
66.所述更新接口还用于通过所述哈希函数管理合约101中哈希函数存储合约102地
址的映射,判断所述待更新哈希函数是否存在所述哈希函数存储合约102。
67.所述待更新哈希函数的更新操作包括哈希函数添加、哈希函数更名、哈希函数更新和哈希函数移除。
68.如图2所示,所述哈希函数添加包括以下步骤:
69.向本地哈希函数库103输入要添加的哈希函数名称和哈希函数代码。
70.本地哈希函数库103使用压缩算法对哈希函数代码进行压缩,将哈希函数名称和压缩后的哈希函数代码作为参数,本地哈希函数库103通过更新接口调用哈希函数管理合约101中添加哈希函数方法。
71.所述哈希函数管理合约101用于判断当前账户是否为所述待更新哈希函数的合约管理权限账户。
72.若当前账户不是合约管理权限账户,则提示添加失败,将添加失败的结果发送到所述本地哈希函数库103。
73.若当前账户是合约管理权限账户,则判断所述待更新哈希函数的所述哈希函数存储合约102是否存在,即检查存储哈希函数的地址映射中是否已存在对应哈希函数。
74.若所述待更新哈希函数的所述哈希函数存储合约102存在,则提示添加失败,将添加失败的结果发送到所述本地哈希函数库103;
75.若所述待更新哈希函数的所述哈希函数存储合约102不存在,则创建所述待更新哈希函数的所述哈希函数存储合约102,并将创建时间作为更新时间记录在哈希函数存储合约102中,并将添加成功的结果发送所述本地哈希函数库103。
76.当所述本地哈希函数库103接收到添加成功的结果,则在所述本地哈希函数库103中添加所述待更新哈希函数的哈希函数名称和哈希函数代码,并保持在对应的文件中,在映射中记录哈希函数,映射(map)是代码中一种数据结构,用于记录对象和对象之间的对应关系。此处映射用于记录哈希函数标识(哈希函数名称)与代码之间的对应关系。对哈希函数代码进行编译,返回哈希函数成功,结束添加哈希函数流程。
77.如图3所示,所述哈希函数更名包括以下步骤:
78.向本地哈希函数库103输入原哈希函数名称(图3中旧哈希函数名)和新哈希函数名称(预设名称,图3中新名称)。原哈希函数名称和新哈希函数名称作为参数,本地哈希函数库103通过更新接口调用哈希函数管理合约101中更名哈希函数方法。
79.所述哈希函数管理合约101用于判断当前账户是否为所述待更新哈希函数(原哈希函数名称对应的哈希函数)的合约管理权限账户。
80.若当前账户不是合约管理权限账户,则提示更名失败,将更名失败的结果发送到所述本地哈希函数库103。
81.若当前账户是合约管理权限账户,则判断所述待更新哈希函数的所述哈希函数存储合约102是否存在,即哈希函数管理合约101检查存储哈希函数的映射中是否已存在对应哈希函数。
82.若所述待更新哈希函数的所述哈希函数存储合约102不存在,则提示更名失败,将更名失败的结果发送到所述本地哈希函数库103。
83.若所述待更新哈希函数的所述哈希函数存储合约102存在,则判断新哈希函数名称是否可用(是否为唯一标识),若新哈希函数名称不可用,则提示更名失败,将更名失败的
结果发送所述本地哈希函数库103。
84.若新哈希函数名称可用,将所述待更新哈希函数的所述哈希函数存储合约102和所述哈希函数管理合约101中对应的哈希函数名称按照预设名称进行修改,并将更名成功的结果发送所述本地哈希函数库103。
85.当所述本地哈希函数库103接收到更名成功的结果,则在所述本地哈希函数库103中对所述待更新哈希函数的哈希函数名称按照所述预设名称进行更名,修改本地哈希函数库103中的映射,将对应原哈希函数名称修改为新哈希函数名称,返回更名哈希函数成功,结束更名哈希函数流程。
86.如图4所示,所述哈希函数更新包括以下步骤:
87.向本地哈希函数库103输入要更新的哈希函数名称和哈希函数代码。本地哈希函数库103使用压缩算法对哈希函数代码进行压缩。哈希函数名称和压缩后的哈希函数代码作为参数,本地哈希函数库103通过更新接口调用哈希函数管理合约101中更新哈希函数方法。
88.所述哈希函数管理合约101用于判断当前账户是否为所述待更新哈希函数的合约管理权限账户。
89.若当前账户不是合约管理权限账户,则提示更新失败,将更新失败的结果发送到所述本地哈希函数库103。
90.若当前账户是合约管理权限账户,则判断所述待更新哈希函数的所述哈希函数存储合约102是否存在。
91.若所述待更新哈希函数的所述哈希函数存储合约102不存在,则提示更新失败,将更新失败的结果发送所述本地哈希函数库103。
92.若所述待更新哈希函数的所述哈希函数存储合约102存在,则将所述待更新哈希函数的所述哈希函数存储合约102中对应的哈希函数代码按照预设哈希函数代码进行修改,即哈希函数存储合约102中存储新的哈希函数代码,并将当前时间作为哈希函数存储合约102中更新时间,并将更新成功的结果发送所述本地哈希函数库103。
93.当所述本地哈希函数库103接收到更新成功的结果,则在所述本地哈希函数库103中对所述待更新哈希函数的哈希函数代码按照预设哈希函数代码进行修改,即保存新的哈希函数代码至对应的哈希函数文件中,对新的哈希函数代码进行编译,返回更新哈希函数成功,结束更新哈希函数流程。
94.如图5所示,所述哈希函数移除包括以下步骤:
95.向本地哈希函数库103中输入要移除的哈希函数名称。输入的要移除的哈希函数名称作为参数,本地哈希函数库103通过更新接口调用哈希函数管理合约101中移除哈希函数方法。
96.所述哈希函数管理合约101用于判断当前账户是否为所述待更新哈希函数的合约管理权限账户。
97.若当前账户不是合约管理权限账户,则提示移除失败,将移除失败的结果发送到所述本地哈希函数库103。
98.若当前账户是合约管理权限账户,则判断所述待更新哈希函数的所述哈希函数存储合约102是否存在。
99.若所述待更新哈希函数的所述哈希函数存储合约102不存在,则提示移除失败,将移除失败的结果发送到所述本地哈希函数库103。
100.若所述待更新哈希函数的所述哈希函数存储合约102存在,则将所述待更新哈希函数的所述哈希函数存储合约102销毁,并从哈希函数管理合约101中删除待更新哈希函数的映射,并将移除成功的结果发送所述本地哈希函数库103。
101.当所述本地哈希函数库103接收到移除成功的结果,则在所述本地哈希函数库103中对所述待更新哈希函数的文件进行删除,从映射中移除该哈希函数。对哈希函数代码进行编译,返回移除哈希函数成功,结束移除哈希函数流程。
102.更新接口还包括本地哈希函数库103更新方法,如图6所示,本地哈希函数库103的更新包括以下步骤:
103.本地哈希函数库103调用哈希函数管理合约101中获取所有哈希函数的方法,得到所有哈希函数名称和更新时间。
104.将得到的所有哈希函数名称和更新时间与本地哈希函数库103中哈希函数名称和更新时间对比,选出需要添加、更新和移除的哈希函数。从本地哈希函数库103中移除哈希函数管理合约101中没有的哈希函数,从哈希函数管理合约101中获取要添加和更新的哈希函数代码,添加和更新到本地哈希函数文件,并对哈希函数库中映射进行更新。对哈希函数代码进行编译,结束更新本地哈希函数库103流程。
105.图2至图6中哈希函数库为本地哈希函数库103。
106.本发明公开了一种面向跨链的哈希函数库更新系统,通过合约存储哈希函数,本地哈希函数库与合约进行交互,实现本地哈希函数库从合约中更新,向合约中添加新哈希函数,更名、更新和移除已有哈希函数。本发明为实现面向跨链的哈希函数库解决了可信节点上的一致更新问题,避免了硬分叉的更新方式,解决了使用虚拟机外哈希函数库进行跨链验证的可用性问题。
107.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
108.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1