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

一种面向PoW区块链的跨链验证系统

2023-02-04 12:27:10 来源:中国专利 TAG:

一种面向pow区块链的跨链验证系统
技术领域
1.本发明涉及跨链技术领域,特别是涉及一种面向pow区块链的跨链验证系统。


背景技术:

2.跨链技术是打通不同区块链系统,实现链间信息互联互通,区块链数据价值最大化的重要技术手段。跨链过程中最为核心的步骤是跨链数据验证,其是实现跨链资产转移、跨链锁定资产留置等功能的前提。
3.跨链数据验证中需要根据不同区块链系统的设计,使用对应哈希算法,对以哈希值形式保存的数据进行验证。哈希算法是一类将任意长度数据映射为固定长度数据的函数,输出的固定长度数据被称为哈希值或消息摘要,输入的任意长度数据被称为哈希值的原像。哈希算法具有单向性、抗碰撞性和雪崩效应,因此在区块链中被应用于数据的存储,验证以及共识机制。
4.工作量证明(pow)共识机制是当前区块链系统使用的主要共识机制之一,包括比特币、以太坊等区块链系统均使用pow共识机制。pow最初被用于对抗垃圾邮件,其主要思想是用户在对资源进行访问时,需要先对某个计算难度适中,但验证简单的难题进行求解,才能够获得资源,从而防止资源滥用。pow的关键设计之一是难题的计算难度和验证难度的不同,对于计算方,难题需要花费一定成本进行计算,而对于验证方,难题的结果是易于验证的。这一难题便是根据哈希值寻找原像。pow区块链与其他共识区块链同样使用哈希值保存数据,且使用不同哈希算法作为pow计算难题的单向函数,在跨链验证中具有代表性。
5.目前,面向pow区块链的跨链验证中哈希算法的使用已经存在使用合约编写哈希算法的方案。该方案解决了跨链验证需要不同哈希函数的问题,但仍存在一定的局限性。
6.局限1:跨链验证中所使用的哈希算法使用合约语言编写,由于合约在虚拟机环境中实际运行时每一步计算操作都将消耗gas,而哈希算法内部包含大量循环代码,且对数据进行了大量代换和置换操作,导致在合约中运行哈希算法成本极高,极大限制了跨链验证的应用。且可能存在哈希算法计算量过大,导致无法在合约中实现的问题。
7.局限2:原有方案主要针对两个区块链系统之间的跨链操作,因此所需哈希算法数量少。而面对大量区块链系统之间相互跨链的情况,由于合约的限制,原有方案并不能很好地适配,存在无法在单个合约中实现所有算法,使用多个合约实现哈希算法需要设计新的合约管理方案等问题。
8.局限3:由于合约一旦被部署在区块链上之后,就难以修改该合约。而区块链系统中可能存在更改哈希算法的需求。原有方案并不能很好地处理这一情况,已实现的哈希算法无法根据需要进行更改,只能重新创建合约。
9.针对以上问题,亟需提供一个面向pow区块链的跨链验证系统,为pow区块链的跨链验证环节提供统一接口进行调用,屏蔽底层技术细节,实现算法更新功能,支持未来添加新的算法,提高系统可扩展性。


技术实现要素:

10.本发明的目的是提供一种面向pow区块链的跨链验证系统,为pow区块链的跨链验证环节提供统一接口进行调用,屏蔽底层技术细节,实现算法更新功能,支持未来添加新的算法,提高系统可扩展性。
11.为实现上述目的,本发明提供了如下方案:
12.一种面向pow区块链的跨链验证系统,包括:哈希算法库模块、算法更新模块以及数据验证模块;
13.所述哈希算法库模块分别与所述算法更新模块和所述数据验证模块连接;所述哈希算法库模块用于采用面向对象的方式实现哈希算法,并规定哈希算法的统一格式,类中方法实现哈希值计算,采用统一接口对不同哈希算法的进行调用;
14.所述数据验证模块用于为跨链过程提供不同区块链上数据的验证;
15.所述算法更新模块用于对哈希算法库模块进行哈希算法的添加、更新、更名和移除。
16.可选地,所述哈希算法库模块包括:哈希算法单元、辅助单元以及测试单元;
17.所述哈希算法单元用于采用统一接口对不同哈希算法的进行调用并采用面向对象的方式实现哈希算法;
18.所述辅助单元用于存储所述哈希算法库模块中使用的通用工具函数和自定义类型,并进行哈希算法中的常用操作;所述常用操作包括:字节序转换,类型的转换和读取;
19.所述测试单元用于对实现的哈希算法进行性能测试。
20.可选地,所述哈希算法单元包括:抽象哈希类、具体哈希算法类和哈希调用接口;
21.所述具体哈希算法类存储多种哈希算法;所述具体哈希算法类作为所述抽象哈希类的子类,对抽象类中的方法进行覆写,实现不同的哈希计算过程;
22.所述哈希调用接口用于存储哈希算法唯一标识与具体哈希算法对象之间的映射关系,并根据所述映射关系以及哈希算法唯一标识选择对应哈希算法对象进行哈希运算,进而实现不同哈希算法的统一调用。
23.可选地,所述哈希算法唯一标识为哈希算法名称。
24.可选地,所述数据验证模块包括:区块头数据验证单元和交易支付验证单元;
25.所述区块头数据验证单元用于对区块头多个数据字段进行哈希计算验证;
26.所述交易支付验证单元用于根据交易重新计算merkle根哈希,并将重新计算的merkle根哈希与区块头中存储的merkle根哈希进行比对。
27.可选地,区块链中交易以哈希值的形式保存。
28.可选地,所述算法更新模块包括:算法添加单元、算法更新单元、算法更名单元以及算法移除单元。
29.根据本发明提供的具体实施例,本发明公开了以下技术效果:
30.本发明所提供的一种面向pow区块链的跨链验证系统,通过数据验证模块为跨链过程提供不同区块链上数据的验证,简化跨链验证操作。通过实现面向跨链的哈希函数库模块,本发明能够提供多种哈希算法,支持多个pow区块链系统之间相互跨链验证。本发明能够提供哈希算法的更新、添加、更名和移除功能,能够根据实际需要对哈希算法进行管理和更新。本发明为pow区块链的跨链验证环节提供统一接口进行调用,屏蔽底层技术细节,
实现算法更新功能,支持未来添加新的算法,提高系统可扩展性。
附图说明
31.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1为本发明所提供的一种面向pow区块链的跨链验证系统结构示意图;
33.图2为调用哈希算法的流程示意图;
34.图3为测试单元测试流程示意图;
35.图4为区块头验证流程示意图;
36.图5为交易支付验证流程示意图;
37.图6为更名已有哈希算法流程示意图;
38.图7为更新已有哈希算法流程示意图;
39.图8为添加新哈希算法流程示意图;
40.图9为移除已有哈希算法流程示意图。
具体实施方式
41.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.本发明的目的是提供一种面向pow区块链的跨链验证系统,为pow区块链的跨链验证环节提供统一接口进行调用,屏蔽底层技术细节,实现算法更新功能,支持未来添加新的算法,提高系统可扩展性。
43.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
44.图1为本发明所提供的一种面向pow区块链的跨链验证系统结构示意图,如图1所示,本发明所提供的一种面向pow区块链的跨链验证系统,包括:哈希算法库模块、算法更新模块以及数据验证模块。
45.所述哈希算法库模块分别与所述算法更新模块和所述数据验证模块连接;所述哈希算法库模块用于采用面向对象的方式实现哈希算法,并规定哈希算法的统一格式,类中方法实现哈希值计算,采用统一接口对不同哈希算法的进行调用。
46.哈希算法库模块是跨链验证系统的底层密码学基础,通过实现统一的调用接口,为跨链验证环节屏蔽了底层哈希计算细节,简化了验证操作。同时,哈希算法库中哈希算法以面向对象的方式实现,通过抽象哈希类规定了哈希算法的统一格式,具体哈希类实现抽象类中方法,以实现统一哈希算法调用的同时,并具有一定的可扩展性,便于算法的移除、更新和新算法的添加,为算法更新模块的实现提供了基础。
47.所述数据验证模块用于为跨链过程提供不同区块链上数据的验证。
48.所述算法更新模块用于对哈希算法库模块进行哈希算法的添加、更新、更名和移除。
49.如图1所示,所述哈希算法库模块包括:哈希算法单元、辅助单元以及测试单元;
50.所述哈希算法单元用于采用统一接口对不同哈希算法的进行调用并采用面向对象的方式实现哈希算法。所述哈希算法单元
51.所述辅助单元用于存储所述哈希算法库模块中使用的通用工具函数和自定义类型,并进行哈希算法中的常用操作;所述常用操作包括:字节序转换,类型的转换和读取。辅助单元提高了代码复用性。在更新和添加算法时,可以直接调用辅助函数进行数据操作,不用重复编写代码,减少了算法更新和添加的成本。辅助代码中还包含测试函数所用的自定义类和函数。
52.所述测试单元用于对实现的哈希算法进行性能测试。
53.测试单元用于帮助对比分析不同哈希算法性能和优缺点。算法性能测试使用随机产生的固定长度数据,对其进行哈希计算并统计花费时间,重复多次并对时间取平均值,以此计算出哈希算法效率。测试算法性能详细流程如图3所示。输入哈希算法名,测试数据长度和测试循环次数,获取对应哈希算法方法,设置计时器,循环生成给定长度的随机数据并进行哈希运算,记录哈希运算消耗时间,对哈希运算时间取平均值,返回平均消耗时间,结束算法性能测试流程。
54.所述哈希算法单元包括:抽象哈希类、具体哈希算法类和哈希调用接口。
55.所述具体哈希算法类存储多种哈希算法;所述具体哈希算法类作为所述抽象哈希类的子类,对抽象类中的方法进行覆写,实现不同的哈希计算过程。
56.哈希算法代码部分包括抽象哈希类和具体哈希类。不同于现有密码学库中哈希算法以函数的方式实现,本发明使用面向对象的思想,哈希算法封装成类,类中方法实现哈希值计算。从哈希算法中提取相同的数据结构和方法,形成一个抽象类。具体哈希算法作为抽象哈希类的子类,对抽象类中的方法进行覆写,从而实现不同的哈希计算过程。
57.所述哈希调用接口用于存储哈希算法唯一标识与具体哈希算法对象之间的映射关系,并根据所述映射关系以及哈希算法唯一标识选择对应哈希算法对象进行哈希运算,进而实现不同哈希算法的统一调用。所述哈希算法唯一标识为哈希算法名称。
58.由于哈希算法实现时具体哈希类和抽象哈希类存在继承关系,实现了动态多态,因此哈希调用接口能够统一调用不同哈希算法对象。调用哈希算法的流程如图2所示。输入哈希算法名和需要进行哈希计算的消息,使用哈希算法名查找哈希算法映射,若映射中存在对应的条目,则获取对应哈希算法,调用方法对消息进行哈希运算,以字符串类型返回计算得到的哈希值,结束哈希算法调用流程。若映射中不存在对应的条目,则返回空字符串,结束哈希算法调用流程。
59.所述数据验证模块包括:区块头数据验证单元和交易支付验证单元。进而数据验证模块中还包括:验证区块头接口和验证交易接口。
60.所述区块头数据验证单元用于对区块头多个数据字段进行哈希计算验证。
61.区块头中包含多个数据字段,区块头数据验证过程即对区块头多个数据字段进行哈希计算验证的过程。以比特币为例,区块头中包含版本号、前一区块哈希值、merkle根哈希值、时间、目标值和随机数nonce等字段。进行pow共识计算时,区块头中字段序列化得到
80字节的字符串。对字符串进行解析得到输入数据,字符串中每两个字符表示一个十六进制字节,如“1c”表示字节0x1c。对输入数据使用指定哈希算法计算得到哈希值。
62.区块头验证过程即对区块头中字段进行序列化后,使用对应哈希算法重新计算哈希值,并与给定哈希值进行比较的过程。区块头数据验证流程如图4所示,输入哈希名、待验证区块头数据和区块头哈希,根据哈希算法名获取对应哈希算法实例,若算法不存在,则返回验证失败,结束流程。对区块头数据进行哈希计算,验证计算得到的哈希值是否满足共识条件,若满足共识条件,则返回验证成功,否则返回验证失败。
63.所述交易支付验证单元用于根据交易重新计算merkle根哈希,并将重新计算的merkle根哈希与区块头中存储的merkle根哈希进行比对。
64.区块链中交易以哈希值的形式保存。区块头中保存了该区块中交易的merkle根哈希。通过使用该区块包含的交易重新计算merkle根哈希,并与区块头中的merkle根哈希比较,以验证交易支付。验证交易支付的流程如图5所示。将merkle树所用哈希名、交易列表和预期merkle根哈希输入验证函数中,判断交易数量,若仅包含1个交易,则直接与预期merkle根哈希进行比较,返回比较结果,否则进入merkle哈希计算循环。当计算过程中出现哈希数量为奇数的情况,则复制列表中最后一个交易哈希与列表末尾。当哈希列表中仅有一个哈希值时退出merkle哈希计算循环,该哈希值即为计算得到的merkle根哈希。将计算结果与预期merkle根哈希进行比较,返回比较结果。
65.所述算法更新模块包括:算法添加单元、算法更新单元、算法更名单元以及算法移除单元,以支持区块链系统中使用的修改和更换哈希算法的情况,对哈希算法库中已实现的哈希算法进行相应的调整,添加新的哈希算法,移除不再使用的哈希算法。实现更多区块链系统的跨链数据验证,提高可扩展性。
66.其中,算法更新模块还包括:更新算法接口、更名算法接口、添加算法接口以及移除算法接口。
67.更名已有算法的流程如图6所示,输入旧算法名称和新算法名称后,首先检查对应算法是否存在,若不存在,则返回更名失败,结束更名流程。若算法存在,检查新算法名是否可用,包括是否符合命名规则,是否已存在对应算法等。若新名称不可用,则返回算法更名失败,结束更名流程。读取算法名称存储文件,删除原有名称映射,添加新算法名的映射,并保存算法名称存储文件,返回算法更名成功,结束更名流程。
68.已有算法的更新流程如图7所示。首先以字符串格式输入要更新的算法名、类名、新代码的源文件和头文件位置。检查是否存在对应算法,若不存在,则返回算法更新失败,结束流程。检查算法名和类名是否可用,若不可用,则返回算法更新失败,结束流程。读取源文件和头内容并分别保存为字符串,若读取失败,则返回算法更新失败,结束流程。在哈希算法库中对应位置创建文件,将字符串形式的文件内容写入并保存,若写入失败,则返回算法更新失败,结束流程。在哈希调用接口中插入对新算法的引用,在算法名称字典种存储算法名称和对应类的映射。返回算法更新成功,结束算法更新流程。
69.添加新算法的详细流程如图8所示,输入要添加的哈希算法名、类名以及源文件和头文件位置,算法更新函数读取文件内容并分别保存为字符串,在哈希算法库中对应位置创建文件,将字符串形式的文件内容写入并保存。随后算法更新函数在哈希调用接口中插入对新算法的引用,在哈希类实例中插入新算法的实例。最后返回添加新算法的结果。
70.移除已有算法的流程如图9所示。首先以字符串格式输入要移除的算法名。检查是否存在对应算法,若不存在,则返回算法更新失败,结束流程。检查算法名和类名是否可用,若不可用,则返回算法更新失败,结束流程。读取源文件和头内容并分别保存为字符串,若读取失败,则返回算法更新失败,结束流程。在哈希算法库中对应位置创建文件,将字符串形式的文件内容写入并保存,若写入失败,则返回算法更新,结束流程。在哈希调用接口中插入对新算法的引用,在算法名称字典种存储算法名称和对应类的映射。返回算法移除成功,结束算法移除流程。
71.本发明提供区块头数据验证功能和交易支付验证功能,简化跨链验证操作。通过系统内部实现面向跨链的哈希函数库,系统能够提供多种哈希算法,支持多个pow区块链系统之间相互跨链验证。系统提供了哈希算法的更新、添加、更名和移除功能,能够根据实际需要对哈希算法进行管理和更新,具有较高可扩展性。
72.在面向pow区块链的跨链验证中,相较于使用在合约中编写所需哈希算法,实现验证过程中的哈希值计算的方案,本发明采用虚拟机外实现哈希算法,提供统一的接口用于区块头和交易的验证,能够有效降低验证过程中哈希计算成本,避免了哈希算法计算量过大,导致无法实现的问题。在支持区块链系统数量上,本发明的方案能够提供哈希算法的数量更多,相比原有方案能够支持更多区块链系统之间进行跨链验证。面对哈希算法需要进行修改的情况时,本发明提出的方案提供了相应接口,支持哈希算法的更名、更新、添加和移除,具有较高的可扩展性。
73.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
74.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献