SPV的技术原理

在区块链中,区块信息主要包括区块大小、区块头、交易数量和交易信息四部分内容。其中,区块头大小为固定字节,比如比特币中区块头的大小始终为80字节。区块头中一般包括如下信息:前一区块(也称父区块)的哈希值、区块中交易默克尔树的根哈希值、时间戳等。以比特币为例,其区块头的数据结构如表3-1所示。

image.png

表3-1区块头的数据结构

字段描述字节数

版本软件协议版本号4字节

前一区块的哈希值也称父区块的哈希值,为区块链中前一区块的哈希值32字节

默克尔树根区块中所有交易信息生成的默克尔树的根哈希值32字节

时间戳区块生成时间4字节

难度工作量证明的难度目标4字节

Nonce(随机数)用于工作量证明算法的计数器4字节

通过区块的哈希值,可以识别出区块链中的对应区块。区块前后有序链接,每一个区块都可以通过其区块头的“前一区块的哈希值”字段引用前一区块。这样把每个区块均链接到各自前一区块的哈希值序列就创建了一条一直可以追溯到第一个区块(创世区块)的链条。前一区块的哈希值,可以确保区块链所记录的交易次序。默克尔树的根哈希值则可以确保收录到区块中的所有交易的真实性。

区块链节点利用SPV对支付进行验证的工作原理如下:

①计算待验证支付的交易哈希值;

②节点从区块链网络上获取并存储最长链的所有区块头至本地;

③节点从区块链获取待验证支付对应的默克尔树哈希认证路径;

④根据哈希认证路径,计算默克尔树的根哈希值,将计算结果与本地区块头中的默克尔树的根哈希值进行比较,定位到包含待验证支付的区块;

⑤验证该区块的区块头是否已经包含在已知最长链中,如果包含则证明支付真实有效;

⑥根据该区块头所处的位置,确定该支付已经得到的确认数量。

上述方法可以减轻用户的负担。以比特币为例,无论未来的交易量多大,区块头的大小始终只有80字节,按照每小时6个的区块生成速度,每年产出52560个区块。当只保存区块头时,每年新增存储需求约为4兆字节,100年后累计的存储需求仅为400兆字节,即使用户使用的是最低端的设备,正常情况下也完全能够负载。

SPV的工作原理中,最为关键和复杂的是步骤③,节点从区块链获取待验证支付对应的默克尔树哈希认证路径的过程。例如,一个区块链节点想要知道其钱包中某个比特币地址即将到达的某笔支付,该节点会在节点间的通信链接上建立起布鲁姆过滤器,限制只接受含有目标比特币地址的交易。当节点探测到某交易符合布鲁姆过滤器的要求时,将以默克尔区块消息的形式发送该区块。默克尔区块消息包含区块头和一条连接目标交易与默克尔树根的默克尔哈希认证路径。默克尔树哈希认证路径是验证待验证支付是否存在于默克尔树的关键条件,该认证路径由默克尔树所有路径中节点的哈希值共同构成,自下而上进行哈希计算。节点能够使用该路径找到与该交易相关的区块,进而验证对应区块中该交易的有无。如图3-1所示为根据交易A、B、C、D、E、F、G、H生成的默克尔树。这是一棵自下而上通过哈希运算生成的二叉树。叶子节点为交易信息的哈希值,叶子节点两两进行哈希运算得到其父节点,继续此过程,直至生成默克尔树根节点。需要注意的是,如果存在单个叶子节点无法匹配成对,则用复制的方法构成完整的二叉树,比如图3-2中交易H不存在,则可以将交易G的哈希值M(G)复制一份替代M(H),从而完成二叉树的生成过程。

SPV的技术原理


假设待验证交易为E,则交易E的默克尔树哈希认证路径为图3-2虚线框所示的M(F)、M(GH)和M(ABCD)。通过该哈希认证路径,即可以通过哈希计算找到一条链接交易E与默克尔树根的完整路径。

玖壹区块链声明

加微信:469649885区块链培训教程
还可免费获取区块链培训班试学名额

分享:

扫一扫在手机阅读、分享本文

区块链评论

玖壹区块链培训

玖壹区块链培训学院简称(玖壹学院http://www.91xiubbs.com/)提供区块链技术培训资料、区块链开发培训视频教程等下载,不过网上自学区块链技术课程必然存在一些缺陷:遇到问题易卡壳、学习周期漫长、无针对性等。区块链培训机构现场面对面的讲授区块链培训课程可以让您和团队在最短时间内掌握正确、系统、高效的区块链实战技术。