本发明涉及区块链底层p2p网络数据传输技术领域,具体为一种区块链底层网络交易同步优化方法。
背景技术:
区块链也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录,p2p是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上,p2p网络通常用于通过adhoc连接来连接节点。这类网络可以用于多种用途,各种文件共享软件已经得到了广泛的使用。
在目前的区块链系统中,区块链底层p2p网络信息随着整个网络节点数量的增多,交易会在网络重复传输多次,这些重复传输的冗余交易信息会占用大量的cpu以及带宽资源。
技术实现要素:
本发明的目的就是为了弥补现有技术的不足,提供了一种区块链底层网络交易同步优化方法,它具有能够去除冗余信息的优点,解决了区块链底层网络交易过程中信息冗余的问题。
本发明为解决上述技术问题,提供如下技术方案:一种区块链底层网络交易同步优化方法,包括以下步骤:
s1,用户通过客户端发送交易给交易池中的区块链节点1;
s2,在每个区块链节点上都创建三个临时存储空间:交易缓冲池、历史交易缓冲池和接收到的历史交易哈希列表;
s3,区块链节点收到交易时验证交易并将交易存入缓冲池;
s4,在区块链节点上启动定时任务;
s5,节点1发送一条交易广播消息,消息内容包含这批交易通过默克尔树计算出的哈希值;
s6,节点2接收到这条消息时,在接收到的历史交易哈希列表中检查这一哈希是否已经存在;
s7,若哈希值不存在,将哈希值存入接收到的历史交易哈希列表,并发送消息获取交易详情,消息内容包含这批交易的哈希值;
s8,节点1接收到消息同步请求,检查哈希值是否存在历史交易缓冲池中,若存在,打包交易消息进行交易同步;
s9,节点2接收到消息详情之后存入缓冲池,并以同样的方式进行二次广播。
进一步的,所述s3中的交易若已经存在于缓冲池中,则不对其进行处理。
通过采用上述技术方案,避免缓冲池中交易信息重复的问题。
进一步的,所述s4中定时任务执行的步骤为:
(1)将交易缓冲池中的所有交易通过默克尔树计算哈希值,存放至历史缓冲池中;
(2)清空交易缓冲池;
(3)广播这批交易。
通过采用上述技术方案,能够将批量交易通过默克尔树计算哈希值,通过这一哈希值进行交易重复验证,交易进行二次广播时仅仅发送一条哈希值消息,大大的减少了底层p2p网络的带宽占用。
进一步的,所述s6中若哈希值已存在,则不进行任何后续操作。
通过采用上述技术方案,通过比对传输带哈希值,避免在进行同步过程中重复的问题。
进一步的,所述s8中若哈希值不存在历史交易缓冲池中,则不进行任何后续操作。
通过采用上述技术方案,能够更好的对历史交易缓冲池中的哈希值进行比对,若不存在,则对改信息进行终止结束。
进一步的,所述交易池用于存储所有的交易,打包新区块时从中选取可执行的交易,交易缓冲池用于存储接收到但还未广播的交易,历史交易缓冲池用于存储已经广播的交易信息以及批量哈希值,接收到的历史交易哈希用于记录已经同步完成的批量交易哈希值。
通过采用上述技术方案,能够更好的在同步过程中通过哈希值的比对,避免了在同步过程中信息传输冗余的问题,大大减小了网络同步过程中大量占用的带宽。
与现有技术相比,该区块链底层网络交易同步优化方法具备如下有益效果:
1、本发明通过在区块链节点上创建三个临时存储空间:交易缓冲池、历史交易缓冲池和接收到的历史交易哈希列表,能够更好的通过将交易缓冲池进行存储接收到但还还未广播的交易,通过历史缓冲池能够存储已经广播的交易信息以及批量的哈希值,通过接收到的历史交易哈希值能够记录已经同步完成的批量交易哈希值。
2、本发明通过后台定时任务,能够将批量交易通过默克尔树计算哈希值,通过这一哈希值进行交易重复验证,交易进行二次广播时仅仅发送一条哈希值消息,大大减少了底层p2p网络的带宽占用,并通过在区块链每个节点上都建立一个缓冲池,并通过默克尔树对交易池进行哈希值计算,从而达到去除冗余交易信息的效果。
附图说明
图1为本发明区块链节点接收交易流程图;
图2为本发明区块链批量交易流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2,本发明提供一种技术方案:一种区块链底层网络交易同步优化方法,包括以下步骤:
s1,用户通过客户端发送交易给交易池中的区块链节点1;
s2,在每个区块链节点上都创建三个临时存储空间:交易缓冲池、历史交易缓冲池和接收到的历史交易哈希列表;
s3,区块链节点收到交易时验证交易并将交易存入缓冲池;
s4,在区块链节点上启动定时任务;
s5,节点1发送一条交易广播消息,消息内容包含这批交易通过默克尔树计算出的哈希值;
s6,节点2接收到这条消息时,在接收到的历史交易哈希列表中检查这一哈希是否已经存在;
s7,若哈希值不存在,将哈希值存入接收到的历史交易哈希列表,并发送消息获取交易详情,消息内容包含这批交易的哈希值;
s8,节点1接收到消息同步请求,检查哈希值是否存在历史交易缓冲池中,若存在,打包交易消息进行交易同步;
s9,节点2接收到消息详情之后存入缓冲池,并以同样的方式进行二次广播。
进一步的,s3中的交易若已经存在于缓冲池中,则不对其进行处理,避免缓冲池中交易信息重复的问题。
进一步的,s4中定时任务执行的步骤为:
(1)将交易缓冲池中的所有交易通过默克尔树计算哈希值,存放至历史缓冲池中;
(2)清空交易缓冲池;
(3)广播这批交易。
能够将批量交易通过默克尔树计算哈希值,通过这一哈希值进行交易重复验证,交易进行二次广播时仅仅发送一条哈希值消息,大大的减少了底层p2p网络的带宽占用。
进一步的,s6中若哈希值已存在,则不进行任何后续操作,通过比对传输带哈希值,避免在进行同步过程中重复的问题。
进一步的,s8中若哈希值不存在历史交易缓冲池中,则不进行任何后续操作,能够更好的对历史交易缓冲池中的哈希值进行比对,若不存在,则对改信息进行终止结束。
进一步的,交易池用于存储所有的交易,打包新区块时从中选取可执行的交易,交易缓冲池用于存储接收到但还未广播的交易,历史交易缓冲池用于存储已经广播的交易信息以及批量哈希值,接收到的历史交易哈希用于记录已经同步完成的批量交易哈希值,能够更好的在同步过程中通过哈希值的比对,避免了在同步过程中信息传输冗余的问题,大大减小了网络同步过程中大量占用的带宽。
本发明通过在区块链节点上创建三个临时存储空间:交易缓冲池、历史交易缓冲池和接收到的历史交易哈希列表,能够更好的通过将交易缓冲池进行存储接收到但还还未广播的交易,通过历史缓冲池能够存储已经广播的交易信息以及批量的哈希值,通过接收到的历史交易哈希值能够记录已经同步完成的批量交易哈希值,通过后台定时任务,能够将批量交易通过默克尔树计算哈希值,通过这一哈希值进行交易重复验证,交易进行二次广播时仅仅发送一条哈希值消息,大大减少了底层p2p网络的带宽占用,并通过在区块链每个节点上都建立一个缓冲池,并通过默克尔树对交易池进行哈希值计算,从而达到去除冗余交易信息的效果。