最近持续读比特币白皮书,正在准备一系列比特币的视频,希望大家关注。 中本聪在《比特币白皮书:一种点对点的电子现金系统》第八章提到 SPV ( Simple Payment Verification ),即 简单支付验证:
什么是 SPV ? SPV,翻译为简单支付验证,是一种不用运行全节点、只需保存所有的区块头,就可以验证支付的技术手段。是一个在轻客户端环境下,就能验证支付有效性的过程。 SPV 是支付验证,不是交易验证。 SPV 只负责判断用于支付的那笔交易,是否已经被验证过,有多少个确认数。而不是全节点操作的复杂的交易验证。 全节点,即完整区块链节点,是同步保存所有区块链数据的节点。比特币发展早期,所有节点都是全节点。全节点进行的交易验证,需要完整的UTXO记录,涉及:合法性检查、双重花费检查、脚本检查等等,需要全节点矿工完成。 轻节点,又称SPV节点,是指通过 SPV 方式,可以在不必存储完整区块链数据的情况下,进行工作的节点。通常运行在储存空间有限和性能较低的设备,比如手机。 为什么要提出 SPV ? SPV 主要就是解决在轻客户端条件下的支付确认问题。 因为我们普通用户,只关心与自己相关的那些交易。 小明只希望运行一个轻客户端手机钱包,就能进行验证。中本聪设计的 SPV ,可以帮助小明判断卖家的的支付交易,是否已经存在于区块链中,是否已经被验证过,以及有多少确认数等信息。 小明如果使用 SPV 钱包,只需要下载所有区块的区块头(Block Header),进行简单的定位和计算工作就可以给出验证结论。 验证交易支付时,如果需要将整个区块链数据保存在本地,为了验证一笔交易的真实性而保存整个网络信息,会占据大量的存储空间,耗费巨大的网络带宽资源,这是极其不合理的。 SPV 只需为每个区块存储80个字节的区块头信息,而不是全节点所需的每个区块1MB字节,节省了 99.992% 的存储空间。这使得轻客户端进行支付验证,资源配置较低的设备(比如手机)运行支付验证,变得可行。 SPV 如何实现? 这里要先谈谈比特币区块的构成,主要包括两个部分: 区块头( Block Headers ) 区块体( Block Body )其中,区块头包含本区块的一些信息,包括版本号、随机数、挖矿难度、前一个区块的哈希、默克尔根(Merkle root)等信息。 值得注意的是,区块头中并没有保存默克尔树,只保存默克尔根。而一个默克尔根,对应一棵默克尔树。 默克尔树 ( Merkle Tree) 默克尔树,又称为“可信树”,是一种哈希二叉树,是一种可以快速归纳和校验大规模数据完整性的数据结构。默克尔树的树形结构,已经被广泛应用到了信息安全的各个领域。 中本聪设计比特币时,就使用了默克尔树的数据结构。具体实现方法是:将所有交易成对分组,并对其进行哈希处理,然后对所得的哈希继续进行哈希处理,继续此过程,直到只剩下一个哈希,称为默克尔根(merkle root)。 所以,默克尔树底部的树叶,就是交易数据。每一个父节点,都是两个子节点哈希值之和的哈希值。通过层层往上计算,最终算得根节点。这棵“信息树”就构成了整个网络的交易数据。节点都是哈希值,十分易于存储和验证。 SPV 支付验证过程 从区块链网络上,获取并保存最长链上的所有区块头至本地。 计算待验证支付交易的哈希值 tx_hash(为了简化模型,此处假设用tx_hash来定位区块)。 定位到包含该 tx_hash 所在的区块,并验证区块头是否包含在已知的最长链中,如果在最长链,则进行下一步验证。 从区块中获取待验证支付交易构建默克尔树所需的哈希值。 根据这个哈希值,计算出默克尔根哈希值。 如果计算结果,与区块头中的默克尔根的哈希值相等,则交易是真实存在的。 根据区块头所处的位置,确定该交易的确认数(比特币网络确认一笔交易需要至少6次确认)。简单来说,比特币全节点在打包一个区块时,会对区块里的所有交易进行验证,一次交易会得到6~7次确认,来确保交易完成。 SPV 的使用场景: 轻钱包中的支付校验 侧链协议的 SPV 证明(SPV Proof):侧链的双向挂钩中,主链和侧链需要对对方的特定交易做 SPV 验证,用以确保该笔交易确实发生过支付,从而使得一方锁定资产,另一方转移资产。总结 SPV 极大的节省了存储空间。无论未来比特币的交易量变得有多大,区块头的大小始终是固定的80个字节,每小时出块6个,每年出块52560个。则每年新增的存储量,仅仅4M 字节,100年后累计的存储量,也仅仅增加400M,4G 网络的带宽都能轻松驾驭,将数据保存在手机上也没有问题。 参考文章: WTF is an SPV and Why Satoshi put it in the Bitcoin Whitepaper 区块链轻节点和SPV 「注意」 我是金马,别人离开币圈的时候,正是我深耕的时候。 —- 编译者/作者:金马 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
为什么中本聪会在比特币白皮书中提出 SPV ?什么是 SPV (简单支付验证) ?
2020-01-13 金马 来源:区块链网络
- 上一篇:2020年1月13日BTC现货行情分析
- 下一篇:币不可少
LOADING...
相关阅读:
- 开源区块链钱包CASHBOX技术编译教程(一)2020-08-03
- 默燃 EOS 周报 |Block.one 即将公布新路线图;EOS主网账户超200万2020-08-03
- 链接无限,引领西安-----IMU plus西安运营中心盛典圆满礼成2020-08-03
- 区块链助力中小企业数字化转型2020-08-03
- DeFi成为区块链行业热点,火币大学线上特训营系统讲解行业机遇2020-08-03