区块头传播方法及存储介质技术

技术编号:32133248 阅读:19 留言:0更新日期:2022-01-29 19:37
本申请涉及区块链技术领域,具体涉及一种区块头传播方法及存储介质。本方法包括以下步骤:付款方与收款方之间建立点对点连接;收款方向付款方发送可以判断区块高度起始值的信息以及付款交易模板;若付款方本地信息可计算的最新区块高度大于所述区块高度起始值,则将所述区块高度起始值至本地最新区块高度之间的区块头数据以及所述付款交易模板的对应数据一起发送给收款方;收款方根据接收到数据验证所述区块头数据是否正确;若区块头数据验证正确,则收款方进行区块头数据更新。本申请可实现两个轻节点之间双向进行区块头数据同步,减少与保存区块链全账本的全节点的交互和依赖,同时支持离线设备同步区块头数据,应用场景更加灵活。景更加灵活。景更加灵活。

【技术实现步骤摘要】
区块头传播方法及存储介质


[0001]本申请涉及区块链
,具体涉及一种区块头传播方法及存储介质。

技术介绍

[0002]区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链技术可以理解为分布式账本技术,是一种互联网数据库技术,其特点是去中介化、公开透明,让每个人均可参与数据库记录。
[0003]区块高度是区块的标示符,区块有两个标示符,一是区块头的哈希值,二是区块高度。区块头的哈希值是通过SHA256算法对区块头进行二次哈希计算而得到的数字。区块哈希值可以唯一、明确地标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值。区块高度是指该区块在区块链中的位置。
[0004]SPV Node,又称为“轻节点”或“用户节点”,其只存储与用户相关的公私钥、区块头、默克尔路径、未花费输出集合等信息,具备一定的构建交易、转发交易的能力。同时,为了实现无需全节点的参与就能快速检验收到交易的合法性,SPV节点还需要在本地保存并更新整个区块链的区块头数据。以比特币为例,每个区块头是由包含版本号、父区块头哈希值、默克尔根、时间戳、难度目标、Nonce值的80字节的数据结构组成。不同区块链的区块头格式可能有所差异。根据比特币区块链的生成机制举例,平均每10分钟产出一个区块,一年只产出约4.2M大小的区块头数据,因此SPV节点本地保存全区块链的区块头数据并不会占用太多的存储。又可以使用区块头数据结合其他信息来验证交易是否在账本中被包含。
[0005]因此,如何将区块头实时更新到所有SPV节点的终端中是一个重要的问题,现有的方式是所有SPV节点间隔一段时间都向全节点申请区块头数据并进行更新,或等待所连接的对等方主动发送区块头更新的信息。但是该方式存在以下几个问题:第一、某些SPV设备无法联网或联网成本较高,例如:带支付功能的智慧卡、带支付功能的路灯等,不能连接全节点及时实时更新区块头数据。第二、所有的SPV节点设备都向全节点请求区块头会极大的占用全节点的带宽、资源等,效率低下。
[0006]因此,如何实现区块头数据高效便捷地传播与管理,成为区块链业界的研究重点之一。

技术实现思路

[0007]本专利技术的目的之一在于克服以上缺点,提供一种区块头传播方法,在收款方和付款方支付交易的时候触发区块头更新动作,同时利用区块头中的工作量证明等信息对区块头进行验证,并通过区块头对接收到的交易数据进行验证,可实现在SPV之间同步区块头数据,有效减少了SPV对全节点的依赖,提高区块头数据的同步更新效率。
[0008]为了解决上述技术问题,本专利技术提供了一种区块头传播方法,包括以下步骤:
[0009]S1、付款方与收款方之间建立点对点连接;
[0010]S2、收款方发送区块高度请求参数以及付款交易模板给付款方;
[0011]S3、付款方根据所述区块高度请求参数得到区块高度起始值;
[0012]S4、付款方判断本地最新区块高度是否大于所述区块高度起始值;
[0013]S5、若付款方本地最新区块高度大于所述区块高度起始值,则将本地区块头中从所述区块高度起始值至本地最新区块高度之间的区块头数据、所述付款交易模板的对应交易数据、所述交易数据的默克尔路径以及所述默克尔路径所在的区块高度一起发送给收款方;
[0014]S6、收款方验证所述区块头数据是否正确。
[0015]本申请的技术方案,收款方在支付交易的同时发送区块头数据请求信息给付款方,由付款方将所需的区块头数据和交易数据一起发送给收款方,同时收款方根据交易数据进行区块头数据验证后更新至本地区块头数据中。可实现在区块链网络上任意两个节点之间进行区块头数据同步,尤其是在两个轻节点之间进行区块头数据同步,减少与全节点的交互和依赖。
[0016]进一步地,所述付款方为区块链全节点或区块链轻节点,所述收款方为区块链全节点或区块链轻节点。
[0017]进一步地,所述付款方与收款方之间建立点对点连接,具体形式为:基于互联网连接、基于短距离通信连接或基于局域网连接。
[0018]本申请的技术方案,付款方与收款方可通过任意点对点方式连接即可进行区块头数据同步,不需要交易双方中的任何一方或同时接入区块链网络,应用场景更加灵活,尤其适用离线智慧设备的支付交易场景。
[0019]进一步地,所述区块高度请求参数为区块高度值或区块哈希值。
[0020]进一步地,所述收款方验证所述区块头数据是否正确,包括以下步骤:
[0021]S61、根据交易数据及默克尔证明信息验证交易数据所在的默克尔树的默克尔根,是否被对应的区块头包含;
[0022]S62、若交易数据所在区块的默克尔根正确,则根据交易数据所在区块头中的信息判断交易数据所在区块头是否正确,否则执行步骤S66;
[0023]S63、若交易数据所在区块头正确,则根据该区块头中的上一个区块哈希验证上一个区块头是否正确,若上一个区块头正确,则执行步骤S64,否则执行步骤S66;
[0024]S64、重复执行步骤S63,直至所述区块头数据中与收款方本地最新区块高度对应的区块头验证完成;
[0025]S65、判定所述区块头数据是正确的;
[0026]S66、判定所述区块头数据不正确。
[0027]本申请的技术方案,收款方可直接根据接收到的付款交易模板对应数据验证所述区块头数据的正确性,一方面可保证区块头数据不被篡改,另一方面也避免了通过区块链全节点进行验证,减少对全节点的依赖。
[0028]进一步地,所述的区块头传播方法,还包括以下步骤:
[0029]S7、若区块头数据验证正确,则收款方进一步判断所述区块头数据中与收款方本地最新区块高度对应的区块头和收款方本地最新区块高度的区块头两者的信息是否相同;
[0030]S8、若相同,则收款方将所述区块头数据中从收款方本地最高区块高度至交易数据所在的区块头高度之间的区块头数据更新到本地区块头数据中,并且将所述区块头数据
中从交易数据所在的区块头高度至付款方本地最新区块高度之间的区块头数据保存至本地;
[0031]S9、若不相同,则收款方将所述区块头数据保存至本地。
[0032]进一步地,所述的区块头传播方法,还包括以下步骤:
[0033]S10、若付款方本地最新区块高度小于或等于所述区块高度起始值,则付款方将区块高度请求参数返回给收款方;所述区块高度请求参数为区块高度值或区块哈希值;
[0034]S11、收款方将本地区块头中根据所述区块高度请求参数计算出区块高度初始值,将所述区块高度初始值至本地最新区块高度之间的区块头数据发送给付款方;
[0035]S12、付款方更新区块头数据到本地区块头数据中。
[0036]本申请的技术方案,同时支持付款方与收款方之间的双向区块头数据同步更新,适用场景更加灵活,同步效率更高。
[0037]相应地,本申请本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块头传播方法,其特征在于,包括以下步骤:S1、付款方与收款方之间建立点对点连接;S2、收款方发送区块高度请求参数以及付款交易模板给付款方;S3、付款方根据所述区块高度请求参数得到区块高度起始值;S4、付款方判断本地最新区块高度是否大于所述区块高度起始值;S5、若付款方本地最新区块高度大于所述区块高度起始值,则将本地区块头中从所述区块高度起始值至本地最新区块高度之间的区块头数据、所述付款交易模板的对应交易数据、所述交易数据的默克尔路径以及所述默克尔路径所在的区块高度一起发送给收款方;S6、收款方验证所述区块头数据是否正确。2.如权利要求1所述的区块头传播方法,其特征在于,所述付款方为区块链全节点或区块链轻节点,所述收款方为区块链全节点或区块链轻节点。3.如权利要求1所述的区块头传播方法,其特征在于,所述付款方与收款方之间建立点对点连接,具体形式为:基于互联网连接、基于短距离通信连接或基于局域网连接。4.如权利要求1所述的区块头传播方法,其特征在于,所述区块高度请求参数为区块高度值或区块哈希值。5.如权利要求1所述的区块头传播方法,其特征在于,所述收款方验证所述区块头数据是否正确,包括以下步骤:S61、根据交易数据及默克尔证明信息验证交易数据所在的默克尔树的默克尔根,是否被对应的区块头包含;S62、若交易数据所在区块的默克尔根正确,则根据交易数据所在区块头中的信息判断交易数据所在区块头是否正确,否则执行步骤S66;S63、若交易数据所在区块头正确,则根据该区块头中的上一个区...

【专利技术属性】
技术研发人员:林哲明喻念
申请(专利权)人:福建博泉哈希科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1