一种基于算力寄生的区块链共识方法与流程

文档序号:17016136发布日期:2019-03-02 02:28阅读:127来源:国知局
一种基于算力寄生的区块链共识方法与流程

本发明涉及区块链领域,特别涉及一种基于算力寄生的区块链共识方法。



背景技术:

非算力的区块链网络,仅仅对包含上一区块的哈希值的本区块头进行哈希求解获得本区块的哈希值,并将该哈希值作为下一区块头的组成部分,并形成链式账本结构,每个区块仅执行一次哈希值求解,若整体区块数为100万个,则攻破该非算力区块链网络算力1gh/s的矿机只需一秒即可攻破。

据btc.com数据显示,今年八月底的比特币全网算力为50.13eh/s,全网难度约为6.73t,未确认交易数为1500,即每秒可执行哈希算法数为5×1016次。即便拥有区块链网络的1‰的算力,也能够轻易攻破非算力的区块链网络。

而随着区块链技术的发展,越来越多的区块链项目出现,并且每个区块链项目都具有负责挖矿的旷工和矿机。然后,主要的较大的区块链网络(如比特币、以太坊)等已经产生,其已经聚集了较多的算力资源。与对于大型区块链网络的算力相比而言,一方面,小型的新兴区块链项目的算力对其毫无防御能力,在收到大型区块链网络的攻击时,小型区块链网络瞬间瓦解;另一方面,若越来越多的小型区块链网络发展为大型区块链网络,则会进一步损耗社会算力资源,造成电力资源、水力资源的浪费。



技术实现要素:

有鉴于现有技术的一部分缺陷,本发明所要解决的技术问题是在现有技术中,构建一个稳定的区块链网络需要耗费较大的算力资源,并且存在被大算力区块链网络的攻击可能,存在算力攻击风险。本发明旨在提供一种基于算力寄生的区块链共识方法,基于该方法形成的区块链网络无需较高的算力基础设施即可减少被算力攻击攻破的可能,提高本区块链网络数据的防止被算力攻击篡改的能力。

为实现上述目的,在本发明的第一方面提供一种基于算力寄生的区块链共识方法,所述方法包括:

接收本区块链网络的第一时间周期内的至少一组当前业务数据,并将所述当前业务数据经哈希运算求解获得与所述当前业务数据相匹配的第一当前业务哈希值;其中,所述第一当前业务哈希值用于生成与所述第一当前业务哈希值相匹配的第一交易;所述第一交易用于在第一相关链上发布,并以便记录于所述第一相关链的主链区块上;

根据与历史业务数据相匹配的各个历史业务哈希值,检测所述第一相关链在所述第一时间周期内与各个所述历史业务哈希值相匹配且未被所述第一相关链所确认的第二交易是否被确认;其中,所述历史业务哈希值由所述历史业务哈希值相对应的所述历史业务数据经哈希运算求解获得;

获取新增的被所述第一相关链所确认的所述第二交易的所述历史业务哈希值,并将所述历史业务哈希值作为第二历史业务哈希值;获取所述第二交易在所述第一相关链上所在区块所相对应的第二区块号;

将所述第一当前业务哈希值、所述第二历史业务哈希值以及第二区块号记录于与所述第一时间周期相对应的本区块链网络的当前区块上。

在一具体实施方式中,所述将所述第一当前业务哈希值、所述第二历史业务哈希值以及第二区块号记录于与所述第一时间周期相对应的本区块链网络的当前区块上,包括:

将所述第一当前业务哈希值标记为未共识,将所述第二历史业务哈希值标记为已共识,并记录于与所述第一时间周期相对应的本区块链网络的当前区块上。

在一具体实施方式中,所述本区块链网络的本链区块包括区块头、第一哈希存储区、第二哈希存储区;所述第一哈希存储区用于存储所述当前区块在所述第一时间周期内新打包的所述当前业务数据的所述第一当前业务哈希值,所述第二哈希存储区用于存储在所述第一时间周期内新增的被所述第一相关链所确认的所述第二交易的所述第二历史业务哈希值以及所述第二交易所相对应的所述第二区块号。

在一具体实施方式中,所述接收本区块链网络的第一时间周期内的至少一组当前业务数据,并将所述当前业务数据经哈希运算求解获得与所述当前业务数据相匹配的第一当前业务哈希值,还包括:

获取在第一时间周期内接收到的本区块链网络的各个业务单元;所述至少一组业务数据由所述业务单元组成;

求解各个业务单元的单元哈希值;

根据各个所述单元哈希值及默克尔树算法,生成默克尔树顶部哈希值,并将所述默克尔树顶部哈希值作为所述第一当前业务哈希值。

在一具体实施方式中,所述根据与历史业务数据相匹配的各个历史业务哈希值,检测所述第一相关链在所述第一时间周期内与各个所述历史业务哈希值相匹配且未被所述第一相关链所确认的第二交易是否被确认,还包括:

与所述第一相关链上的至少三个不同网络的主链节点进行通讯,定时检测至少三个不同网络的所述主链节点的所述第二交易是否被确认;其中,所述主链节点数为奇数个;

在所有的所述主链节点中,若所述第二交易被半数以上的所述主链节点所确认,则认为所述第二交易被确认。

在一具体实施方式中,还包括:

在所述第二交易被确认后,采集与所述第二历史业务哈希值相对应的所述第二交易所在区块的第三区块号;

响应于所述第三区块号与所述第二区块号不相同,执行第一修改操作;所述第一修改操作包括:删除本区块链网络上原先在第一本链区块上针对所述第二交易所记录的所述第二历史业务哈希值及所述第二区块号,在与所述第三区块号相对应的本区块链网络上的第二本链区块记录所述第二历史业务哈希值及所述第三区块号。

在一具体实施方式中,所述方法还包括:

在所述第二交易被确认后,采集与所述第二历史业务哈希值相对应的所述第二交易所在区块的第三区块号;

响应于所述第三区块号与所述第二区块号不相同,向本区块链网络的本链节点发送链数据变更请求;其中,所述本链节点接收所述链数据变更请求后,根据所述第二历史业务哈希值,向与所述本链节点相对应的所述第一相关链的主链节点请求所述第二交易的所述第三区块号,并响应于所述第三区块号与所述第二区块号不相同,删除本区块链网络上原先在第一本链区块上针对所述第二交易所记录的所述第二历史业务哈希值及所述第二区块号,在与所述第三区块号相对应的本区块链网络上的第二本链区块记录所述第二历史业务哈希值及所述第三区块号。

在一具体实施方式中,本区块链网络的前一区块哈希值作为后一区块哈希值求解的输入参数;在执行所述第一修改操作后,所述方法还包括:

比较所述第一本链区块和所述第二本链区块的区块序号的大小;

自所述第一本链区块和所述第二本链区块的区块序号较小者起,重新逐个求解本区块链网络的各个区块的哈希值,使得本区块链网络的各个区块组成链式连接。

在一具体实施方式中,所述本区块链网络的若干个节点在连接本区块链网络的同时,也连接所述第一相关链的网络。

在一具体实施方式中,所述方法还包括:

将与未共识的业务数据相匹配的业务哈希值存放于第一哈希列表中;

和/或将已共识的业务数据相匹配的业务哈希值存放于第二哈希列表中。

本发明的有益效果是:本发明的有益效果是:本区块链网络是依附于另一相关区块链网络,将本区块的业务数据的哈希值以交易的形式记录于相关区块链上,并在该交易被确认之后,本区块链网络的节点接收到该交易被确认的信息后,将该业务的交易信息写入本区块链,使得该业务数据得到确认,实现共识;本区块链网络依托于相关区块链的算力,只需要相关区块链的防御算力攻击能力较高,则本区块链的防御算力攻击能力也得到提升,提高本区块链的防御算力攻击的能力。此外,本发明提供的区块链技术无需自身网络建设算力基础,节约社会成本。

附图说明

图1是本发明一具体实施方式中的一种基于算力寄生的区块链共识方法的流程示意图;

图2是本发明一具体实施方式中的一种基于算力寄生的区块链共识方法的数据传输示意图;

图3是本发明一具体实施方式中的一种基于算力寄生的区块链共识方法的基于默克尔树生成业务哈希值的示意图;

图4是本发明一具体实施方式中的第一相关链网络与本区块链网络的关联结构图;

图5是本发明一具体实施方式中的一种基于算力寄生的区块链共识方法的区块数据变更时的数据传输示意图。

图6是本发明一具体实施方式中的一种基于算力寄生的区块链共识装置的结构框图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明:

如图1-6所示,在本发明第一实施例中,提供一种基于算力寄生的区块链共识方法,所述方法包括:

步骤s1、接收本区块链网络的第一时间周期内的至少一组当前业务数据,并将所述当前业务数据经哈希运算求解获得与所述当前业务数据相匹配的第一当前业务哈希值;其中,所述第一当前业务哈希值用于生成与所述第一当前业务哈希值相匹配的第一交易;所述第一交易用于在第一相关链上发布,并以便记录于所述第一相关链的主链区块上;

值得一提的是,第一当前业务哈希值的生成可以是对一组或多组业务数据整体进行哈希运算;第一当前业务哈希值的生成也可以是采用默克尔树的形式对每个业务数据进行哈希运算后,再两两生成上级哈希值,并直至求解出默克尔树顶部哈希值,该默克尔树顶部哈希值即为所述第一当前业务哈希值;

在本实施例中,并不限定本区块链网络的第一时间周期的长短,可选的,第一时间周期就是本区块链网络的区块生成周期;可选的,第一时间周期与本区块链网络的区块生成周期无关。

在本实施例中是将第一时间周期内的若干或所有业务数据作为整体打包为哈希值,并在第一相关链(如比特币网络、以太坊)上以交易的形式发布;其中,第一时间周期与第一相关链的区块生成周期并无关系,在本实施例中,只需将第一交易发布于第一相关链,而交易的确认时间与第一相关链本身设置有关,本区块链网络只需要等待该交易的确认即可。例如,在比特币网络中,发起一笔比特币交易,在等待一定时长后,该交易能够被比特币网络的旷工进行记账和确认,并写入区块链中。

步骤s2、根据与历史业务数据相匹配的各个历史业务哈希值,检测所述第一相关链在所述第一时间周期内与各个所述历史业务哈希值相匹配且未被所述第一相关链所确认的第二交易是否被确认;其中,所述历史业务哈希值由所述历史业务哈希值相对应的所述历史业务数据经哈希运算求解获得;

对于本区块链网络的区块而言,在将业务数据以交易的形式发布于第一相关链的同时,也对之前发布于第一相关链的交易进行检测,并在业务数据相对应的交易被确认之后,写入本区块链网络的区块中;

值得一提的是,首次写入第一相关链的主链区块上,即可认为该交易是被确认的;可选的,累计多次写入第一相关链的主链区块上,即可认为是该交易是被确认的。

步骤s3、获取新增的被所述第一相关链所确认的所述第二交易的所述历史业务哈希值,并将所述历史业务哈希值作为第二历史业务哈希值;获取所述第二交易在所述第一相关链上所在区块所相对应的第二区块号;

步骤s4、将所述第一当前业务哈希值、所述第二历史业务哈希值以及第二区块号记录于与所述第一时间周期相对应的本区块链网络的当前区块上。

可选的,在本实施例中,所述将所述第一当前业务哈希值、所述第二历史业务哈希值以及第二区块号记录于与所述第一时间周期相对应的本区块链网络的当前区块上,包括:

将所述第一当前业务哈希值标记为未共识,将所述第二历史业务哈希值标记为已共识,并记录于与所述第一时间周期相对应的本区块链网络的当前区块上。

可选的,在本实施例中,所述本区块链网络的本链区块包括区块头、第一哈希存储区、第二哈希存储区;所述第一哈希存储区用于存储所述当前区块在所述第一时间周期内新打包的所述当前业务数据的所述第一当前业务哈希值,所述第二哈希存储区用于存储在所述第一时间周期内新增的被所述第一相关链所确认的所述第二交易的所述第二历史业务哈希值以及所述第二交易所相对应的所述第二区块号。

值得一提的是,可选的,在第一哈希存储区及第二哈希存储区设定标识符,以便确定分区;可选的,通过固定第一哈希存储区及第二哈希存储区的大小或者字节数,以便确定各个相对的分区。

可选的,在本实施例中,所述接收本区块链网络的第一时间周期内的至少一组当前业务数据,并将所述当前业务数据经哈希运算求解获得与所述当前业务数据相匹配的第一当前业务哈希值,还包括:

获取在第一时间周期内接收到的本区块链网络的各个业务单元;所述至少一组业务数据由所述业务单元组成;

求解各个业务单元的单元哈希值;

根据各个所述单元哈希值及默克尔树算法,生成默克尔树顶部哈希值,并将所述默克尔树顶部哈希值作为所述第一当前业务哈希值。

常见的默克尔树算法是对单元哈希值进行两两生成上级哈希值,并直至求解出默克尔树顶部哈希值。

可选的,在本实施例中,所述根据与历史业务数据相匹配的各个历史业务哈希值,检测所述第一相关链在所述第一时间周期内与各个所述历史业务哈希值相匹配且未被所述第一相关链所确认的第二交易是否被确认,还包括:

与所述第一相关链上的至少三个不同网络的主链节点进行通讯,定时检测至少三个不同网络的所述主链节点的所述第二交易是否被确认;其中,所述主链节点数为奇数个;

在所有的所述主链节点中,若所述第二交易被半数以上的所述主链节点所确认,则认为所述第二交易被确认。

实际上,本区块链网络仅与第一相关链上的一个主链节点进行通讯,即可获得交易是否被确认的信息;而通过与多个主链节点,降低分叉率。在实际应用场景中,可以在不同的矿场设置第一相关链的主链节点。由于同一个矿场一般集体挖矿,并且通络延时少,矿场内数据相对一致,故而可以选择不同矿场的不同主链节点以便获得第一交易的交易记录信息。

可选的,在本实施例中,所述方法,还包括:

在所述第二交易被确认后,采集与所述第二历史业务哈希值相对应的所述第二交易所在区块的第三区块号;

响应于所述第三区块号与所述第二区块号不相同,执行第一修改操作;所述第一修改操作包括:删除本区块链网络上原先在第一本链区块上针对所述第二交易所记录的所述第二历史业务哈希值及所述第二区块号,在与所述第三区块号相对应的本区块链网络上的第二本链区块记录所述第二历史业务哈希值及所述第三区块号。

值得一提的是,在基于算力共识的区块链技术中,如比特币区块,是依靠矿工们不断进行数学运算而产生的,每一个区块都必须引用其上一个区块,因此最长的链也是最难以推翻和篡改的,所以节点永远认为最长链才是有效的区块链,只有在最长链上挖矿的矿工才能够获得奖励,这就是我们常说的比特币最长链原则。当二个或多个节点几乎同时记账,则出现分叉,此时,暂时保留两个份记账方式,并最终由较长链的区块链作为最终的记账账本。

在可选案例中,当第一相关链出现分叉且本区块链网络的节点根据第一交易是否被确认而记账时,会遵循分叉之一,而后若因第一相关链选择另一分叉造成本区块链网络的第一交易的交易记录信息发生变动,此时,可以对其修改,并相应的修改之后的区块链。

可选的,在本实施例中,所述方法还包括:

在所述第二交易被确认后,采集与所述第二历史业务哈希值相对应的所述第二交易所在区块的第三区块号;

响应于所述第三区块号与所述第二区块号不相同,向本区块链网络的本链节点发送链数据变更请求;其中,所述本链节点接收所述链数据变更请求后,根据所述第二历史业务哈希值,向与所述本链节点相对应的所述第一相关链的主链节点请求所述第二交易的所述第三区块号,并响应于所述第三区块号与所述第二区块号不相同,删除本区块链网络上原先在第一本链区块上针对所述第二交易所记录的所述第二历史业务哈希值及所述第二区块号,在与所述第三区块号相对应的本区块链网络上的第二本链区块记录所述第二历史业务哈希值及所述第三区块号。

在典型的区块链实例中,本网络区块链的前一区块哈希值作为后一区块哈希值求解的输入参数,以便求解后一区块哈希值。

可选的,在本实施例中,本区块链网络的前一区块哈希值作为后一区块哈希值求解的输入参数;在执行所述第一修改操作后,所述方法还包括:

比较所述第一本链区块和所述第二本链区块的区块序号的大小;

自所述第一本链区块和所述第二本链区块的区块序号较小者起,重新逐个求解本区块链网络的各个区块的哈希值,使得本区块链网络的各个区块组成链式连接。

由于算力竞争及网络延时等因素,第一相关链会存在分叉并保留若干个区块生成周期,并选取最长链作为最终账本;本区块链网络也会因第一相关链而形成分叉,但是随着主链的运行,本区块链网络更新区块数据,本区块链网络的分叉问题也能够随着主链解决分叉问题而自行得到解决。

值得一提的是,当本区块链的区块之间采用链式连接,即将前一区块的哈希值存储与后一区块之中时,则应第一交易记录信息发生变动,则需要重新求解区块哈希值,并同时修改之后的哈希值,值得一提的是,例如比特币网络需要6次确认以保证区块链数据的不被篡改,故而,仅需要修改第一相关链6个区块周期内的本区块链网络的区块之间的链式连接,其算力要求并不高。

可选的,在本实施例中,本区块链网络的区块头包括但不限于区块序号、第一当前业务哈希值、第二历史业务哈希值、时间戳、所述当前区块的上一区块的哈希值。

可选的,本区块链网络的若干个节点会对第一相关链进行数据监控,以便获知第一交易、第二交易的是否被确认;可选的,本区块链网络的若干个节点在连接本区块链网络的同时,也连接第一相关链网络;

可选的,在本实施例中,所述本区块链网络的若干个节点在连接本区块链网络的同时,也连接所述第一相关链的网络。

可选的,在本实施例中,所述方法还包括:

将与未共识的业务数据相匹配的业务哈希值存放于第一哈希列表中;

和/或将已共识的业务数据相匹配的业务哈希值存放于第二哈希列表中。

通过设置第一哈希管理模块和/或第二哈希管理模块,便于管理相关业务数据在第一相关链上的共识的发起、确认、追踪。

此外,由于第一交易的第一发起者接收第一交易的确认信息相对而言,较为及时。可选的,接收所述第一交易的第一发起者关于所述第一交易被确认的第一确认信息;所述第一发起者与本区块网络连接,所述第一发起者与第一相关链网络连接;

本实例提供的是一种区块链共识技术,当相关业务数据的哈希值被确认于第一相关链上,则认为相关业务数据能够不容易被篡改,而被共识。同时,在第一交易被确认后,可以将相关交易信息,如业务数据的第一当前业务哈希值被确认于区块链的哪一区块中。

在实际应用中,根据本区块链业务数据的数量、交易手续费以及第一相关链网络的吞吐能力,对一次打包的业务数据的数量设定;值得一提的是,当设置较高的单次业务数据打包数量时,可以减低在第一相关区块链上发布第一交易或第二交易的手续费,并且降低第一相关区块链的负载,而另一方面单次业务数据打包数量较少时,可以有效提高交易的确认速度。

值得一提的是,如图2所示,在第一相关链网络200的区块xgl1000完成之后,在一个时间周期内,收集本区块链网络100的客户端发起的业务数据,并生成业务哈希值1,并在第一相关链网络200上生成交易1;并进一步在第一相关链网络200上发起交易2、交易3;并且,交易1和交易2在第一相关链网络200的区块xgl1001上得到确认,最后,将交易1(所匹配的业务哈希值)、交易2(所匹配的业务哈希值)以及相关链上的区块xgl1000的区块序号记录在本区块链网络100的区块bqkl1001-1上,即,完成了业务哈希值1、业务哈希值2的共识。值得一提的是,对于本区块链网络的区块bqkl1001-1而言,一方面业务哈希值4所对应的交易4是该区块的第一交易,而交易1、交易2经主链区块xgl1001所确认,交易1、交易2是区块bqkl1001-1的第二交易,此时,上述第一交易、第二交易被记录在本区块链网络的区块bqkl1001-1上。

如图3中,业务数据1-7两两配对生成上一级业务哈希值,并最终形成第一当前业务哈希值。

如图4中,本区块链网络100和第一相关链网络200存在两个共同节点。

如图5中,图中的第一相关链存在分叉,本区块链网络第一次记录业务数据时采用上半图的记账结果,后由于第一相关链分叉并重新共识,而变更为下半图的记账结果。首先,第一相关链的区块xgl1001发生变动,并且,原第一交易3的确认由区块xgl1001内发生而变成区块xgl1002内发生。故而,造成本区块网络区块bqkl1001-1的输入发生变化,使得首先需要将原输入的交易3的第二历史业务哈希值剔除,然后,并且要重新求解区块bqkl1001-1的区块哈希值以便重新作为区块bqkl1001-2的输入,并做相应的修改。值得一提的是,其它后续的区块未修改是因为原本的区块并未记录这些信息,后续的记录为新增数据。

如图6所示,在本发明的第二实施例中,提供一种基于算力寄生的区块链共识装置,所述装置包括:

第一哈希获取模块101,用于接收本区块链网络的第一时间周期内的至少一组当前业务数据,并将所述当前业务数据经哈希运算求解获得与所述当前业务数据相匹配的第一当前业务哈希值;其中,所述第一当前业务哈希值用于生成与所述第一当前业务哈希值相匹配的第一交易;所述第一交易用于在第一相关链上发布,并以便记录于所述第一相关链的主链区块上;

值得一提的是,第一当前业务哈希值的生成可以是对一组或多组业务数据整体进行哈希运算;第一当前业务哈希值的生成也可以是采用默克尔树的形式对每个业务数据进行哈希运算后,再两两生成上级哈希值,并直至求解出默克尔树顶部哈希值,该默克尔树顶部哈希值即为所述第一当前业务哈希值;

在本实施例中,并不限定本区块链网络的第一时间周期的长短,可选的,第一时间周期就是本区块链网络的区块生成周期;可选的,第一时间周期与本区块链网络的区块生成周期无关。

在本实施例中是将第一时间周期内的若干或所有业务数据作为整体打包为哈希值,并在第一相关链(如比特币网络、以太坊)上以交易的形式发布;其中,第一时间周期与第一相关链的区块生成周期并无关系,在本实施例中,只需将第一交易发布于第一相关链,而交易的确认时间与第一相关链本身设置有关,本区块链网络只需要等待该交易的确认即可。例如,在比特币网络中,发起一笔比特币交易,在等待一定时长后,该交易能够被比特币网络的旷工进行记账和确认,并写入区块链中。

交易监控模块102,用于根据与历史业务数据相匹配的各个历史业务哈希值,检测所述第一相关链在所述第一时间周期内与各个所述历史业务哈希值相匹配且未被所述第一相关链所确认的第二交易是否被确认;其中,所述历史业务哈希值由所述历史业务哈希值相对应的所述历史业务数据经哈希运算求解获得;

对于本区块链网络的区块而言,在将业务数据以交易的形式发布于第一相关链的同时,也对之前发布于第一相关链的交易进行检测,并在业务数据相对应的交易被确认之后,写入本区块链网络的区块中;

值得一提的是,首次写入第一相关链的主链区块上,即可认为该交易是被确认的;可选的,累计多次写入第一相关链的主链区块上,即可认为是该交易是被确认的。

第二哈希获取模块103,用于获取新增的被所述第一相关链所确认的所述第二交易的所述历史业务哈希值,并将所述历史业务哈希值作为第二历史业务哈希值;获取所述第二交易在所述第一相关链上所在区块所相对应的第二区块号;

数据记录模块104,用于将所述第一当前业务哈希值、所述第二历史业务哈希值以及第二区块号记录于与所述第一时间周期相对应的本区块链网络的当前区块上。

可选的,在本实施例中,所述数据记录模块104,包括:

第一标记单元,用于将所述第一当前业务哈希值标记为未共识;

第二标记单元,用于将所述第二历史业务哈希值标记为已共识;

数据记录单元,用于将所述第一当前业务哈希值、所述第二历史业务哈希值记录于与所述第一时间周期相对应的本区块链网络的当前区块上。

可选的,在本实施例中,所述本区块链网络的本链区块包括区块头、第一哈希存储区、第二哈希存储区;所述第一哈希存储区用于存储所述当前区块在所述第一时间周期内新打包的所述当前业务数据的所述第一当前业务哈希值,所述第二哈希存储区用于存储在所述第一时间周期内新增的被所述第一相关链所确认的所述第二交易的所述第二历史业务哈希值以及所述第二交易所相对应的所述第二区块号。

值得一提的是,可选的,在第一哈希存储区及第二哈希存储区设定标识符,以便确定分区;可选的,通过固定第一哈希存储区及第二哈希存储区的大小或者字节数,以便确定各个相对的分区。

可选的,在本实施例中,所述第一哈希获取模块101,还包括:

业务获取单元,用于获取在第一时间周期内接收到的本区块链网络的各个业务单元;所述至少一组业务数据由所述业务单元组成;

业务哈希求解单元,用于求解各个业务单元的单元哈希值;

第一哈希求解单元,用于根据各个所述单元哈希值及默克尔树算法,生成默克尔树顶部哈希值,并将所述默克尔树顶部哈希值作为所述第一当前业务哈希值。

常见的默克尔树算法是对单元哈希值进行两两生成上级哈希值,并直至求解出默克尔树顶部哈希值。

可选的,在本实施例中,所述交易监控模块102,还包括:

多节点检测单元,用于与所述第一相关链上的至少三个不同网络的主链节点进行通讯,定时检测至少三个不同网络的所述主链节点的所述第二交易是否被确认;其中,所述主链节点数为奇数个;

多节点交易确认单元,用于在所有的所述主链节点中,若所述第二交易被半数以上的所述主链节点所确认,则认为所述第二交易被确认。

实际上,本区块链网络仅与第一相关链上的一个主链节点进行通讯,即可获得交易是否被确认的信息;而通过与多个主链节点,降低分叉率。在实际应用场景中,可以在不同的矿场设置第一相关链的主链节点。由于同一个矿场一般集体挖矿,并且通络延时少,矿场内数据相对一致,故而可以选择不同矿场的不同主链节点以便获得第一交易的交易记录信息。

可选的,在本实施例中,所述装置,还包括:

交易持续监控模块105,用于在所述第二交易被确认后,采集与所述第二历史业务哈希值相对应的所述第二交易所在区块的第三区块号;

第一交易修改模块106,用于响应于所述第三区块号与所述第二区块号不相同,执行第一修改操作;所述第一修改操作包括:删除本区块链网络上原先在第一本链区块上针对所述第二交易所记录的所述第二历史业务哈希值及所述第二区块号,在与所述第三区块号相对应的本区块链网络上的第二本链区块记录所述第二历史业务哈希值及所述第三区块号。

值得一提的是,在基于算力共识的区块链技术中,如比特币区块,是依靠矿工们不断进行数学运算而产生的,每一个区块都必须引用其上一个区块,因此最长的链也是最难以推翻和篡改的,所以节点永远认为最长链才是有效的区块链,只有在最长链上挖矿的矿工才能够获得奖励,这就是我们常说的比特币最长链原则。当二个或多个节点几乎同时记账,则出现分叉,此时,暂时保留两个份记账方式,并最终由较长链的区块链作为最终的记账账本。

在可选案例中,当第一相关链出现分叉且本区块链网络的节点根据第一交易是否被确认而记账时,会遵循分叉之一,而后若因第一相关链选择另一分叉造成本区块链网络的第一交易的交易记录信息发生变动,此时,可以对其修改,并相应的修改之后的区块链。

可选的,在本实施例中,所述装置还包括:

交易持续监控模块105,用于在所述第二交易被确认后,采集与所述第二历史业务哈希值相对应的所述第二交易所在区块的第三区块号;

第二交易修改模块107,用于响应于所述第三区块号与所述第二区块号不相同,向本区块链网络的本链节点发送链数据变更请求;其中,所述本链节点接收所述链数据变更请求后,根据所述第二历史业务哈希值,向与所述本链节点相对应的所述第一相关链的主链节点请求所述第二交易的所述第三区块号,并响应于所述第三区块号与所述第二区块号不相同,删除本区块链网络上原先在第一本链区块上针对所述第二交易所记录的所述第二历史业务哈希值及所述第二区块号,在与所述第三区块号相对应的本区块链网络上的第二本链区块记录所述第二历史业务哈希值及所述第三区块号。

在典型的区块链实例中,本网络区块链的前一区块哈希值作为后一区块哈希值求解的输入参数,以便求解后一区块哈希值。

可选的,在本实施例中,本区块链网络的前一区块哈希值作为后一区块哈希值求解的输入参数;所述第一交易修改模块106还包括区块重建单元;

所述区块重建单元,用于比较所述第一本链区块和所述第二本链区块的区块序号的大小;

所述区块重建单元,还用于自所述第一本链区块和所述第二本链区块的区块序号较小者起,重新逐个求解本区块链网络的各个区块的哈希值,使得本区块链网络的各个区块组成链式连接。

由于算力竞争及网络延时等因素,第一相关链会存在分叉并保留若干个区块生成周期,并选取最长链作为最终账本;本区块链网络也会因第一相关链而形成分叉,但是随着主链的运行,本区块链网络更新区块数据,本区块链网络的分叉问题也能够随着主链解决分叉问题而自行得到解决。

值得一提的是,当本区块链的区块之间采用链式连接,即将前一区块的哈希值存储与后一区块之中时,则应第一交易记录信息发生变动,则需要重新求解区块哈希值,并同时修改之后的哈希值,值得一提的是,例如比特币网络需要6次确认以保证区块链数据的不被篡改,故而,仅需要修改第一相关链6个区块周期内的本区块链网络的区块之间的链式连接,其算力要求并不高。

可选的,在本实施例中,本区块链网络的区块头包括但不限于区块序号、第一当前业务哈希值、第二历史业务哈希值、时间戳、所述当前区块的上一区块的哈希值。

可选的,本区块链网络的若干个节点会对第一相关链进行数据监控,以便获知第一交易、第二交易的是否被确认;可选的,本区块链网络的若干个节点在连接本区块链网络的同时,也连接第一相关链网络;

可选的,在本实施例中,所述本区块链网络的若干个节点在连接本区块链网络的同时,也连接所述第一相关链的网络。

可选的,在本实施例中,所述装置还包括:

第一哈希管理模块108,用于将与未共识的业务数据相匹配的业务哈希值存放于第一哈希列表中;

和/或第二哈希管理模块109,用于将已共识的业务数据相匹配的业务哈希值存放于第二哈希列表中。

通过设置第一哈希管理模块108和/或第二哈希管理模块109,便于管理相关业务数据在第一相关链上的共识的发起、确认、追踪。

此外,由于第一交易的第一发起者接收第一交易的确认信息相对而言,较为及时。可选的,接收所述第一交易的第一发起者关于所述第一交易被确认的第一确认信息;所述第一发起者与本区块网络连接,所述第一发起者与第一相关链网络连接;

本实例提供的是一种区块链共识技术,当相关业务数据的哈希值被确认于第一相关链上,则认为相关业务数据能够不容易被篡改,而被共识。同时,在第一交易被确认后,可以将相关交易信息,如业务数据的第一当前业务哈希值被确认于区块链的哪一区块中。

在实际应用中,根据本区块链业务数据的数量、交易手续费以及第一相关链网络的吞吐能力,对一次打包的业务数据的数量设定;值得一提的是,当设置较高的单次业务数据打包数量时,可以减低在第一相关区块链上发布第一交易或第二交易的手续费,并且降低第一相关区块链的负载,而另一方面单次业务数据打包数量较少时,可以有效提高交易的确认速度。

值得一提的是,如图2所示,在第一相关链网络200的区块xgl1000完成之后,在一个时间周期内,收集本区块链网络100的客户端发起的业务数据,并生成业务哈希值1,并在第一相关链网络200上生成交易1;并进一步在第一相关链网络200上发起交易2、交易3;并且,交易1和交易2在第一相关链网络200的区块xgl1001上得到确认,最后,将交易1(所匹配的业务哈希值)、交易2(所匹配的业务哈希值)以及相关链上的区块xgl1000的区块序号记录在本区块链网络100的区块bqkl1001-1上,即,完成了业务哈希值1、业务哈希值2的共识。值得一提的是,对于本区块链网络的区块bqkl1001-1而言,一方面业务哈希值4所对应的交易4是该区块的第一交易,而交易1、交易2经主链区块xgl1001所确认,交易1、交易2是区块bqkl1001-1的第二交易,此时,上述第一交易、第二交易被记录在本区块链网络的区块bqkl1001-1上。

如图3中,业务数据1-7两两配对生成上一级业务哈希值,并最终形成第一当前业务哈希值。

如图4中,本区块链网络100和第一相关链网络200存在两个共同节点。

如图5中,图中的第一相关链存在分叉,本区块链网络第一次记录业务数据时采用上半图的记账结果,后由于第一相关链分叉并重新共识,而变更为下半图的记账结果。首先,第一相关链的区块xgl1001发生变动,并且,原第一交易3的确认由区块xgl1001内发生而变成区块xgl1002内发生。故而,造成本区块网络区块bqkl1001-1的输入发生变化,使得首先需要将原输入的交易3的第二历史业务哈希值剔除,然后,并且要重新求解区块bqkl1001-1的区块哈希值以便重新作为区块bqkl1001-2的输入,并做相应的修改。值得一提的是,其它后续的区块未修改是因为原本的区块并未记录这些信息,后续的记录为新增数据。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1