区块链知识讲解:SPV简单支付验证

1 评论 8547 浏览 21 收藏 8 分钟

在上一期中我们学习了比特币网络的内部结构,其中我们提到了SPV简单支付验证通过区块头进行交易验证,这期我们将着重说明SPV简单支付验证这个概念。

一、节点的分类

比特币网络中的节点是不一样的,主要包括全节点、轻节点和SPV节点。

全节点是指维持包含全部交易信息的完整区块链的节点。更加准确地说,这样的节点应当被称为完整区块链节点。

在比特币发展的早期,所有节点都是全节点,当前的比特币核心客户端也是完整区块链节点。但随着区块链网络的数据的增多,出现了新型的节点。

许多比特币客户端被设计成运行在空间和功率受限的设备上,如智能电话、平板电脑、嵌入式系统等。对于这样的设备,通过简化的支付验证(SPV)的方式,可以使它们在不必存储完整区块链的情况下进行工作。这种类型的客端被称为轻节点和SPV节点。

二、SPV节点和轻节点的区别

轻节点指的是:节点本地只保存与其自身相关的交易数据(尤其是可支配交易数据),但并不保存完整区块链信息的技术。SPV的目标是验证某个支付是否真实存在,并得到了多少个确认。

比如:小明收到来自小红的一个通知,小红声称已经从其账户中汇款一定数额的钱给了小明。如何快速验证该支付的真实性,是SPV的工作目标。

轻节点的目标不仅是支付验证,而且是用于管理节点自身的资产收入、支付等信息。比如:小明使用轻节点管理自身在区块链的收入信息、支出信息,在本地只保存与小明自身相关的交易数据,尤其是可支配交易数据。

轻钱包与SPV的最大区别是:

  • 轻节点仍需下载每个新区块的全部数据并进行解析,获取并在本地存储与自身相关的交易数据,只是无须在本地保存全部数据而已。
  • 而SPV节点不需要下载新区块的全部数据,只需要保存区块头部信息即可。

虽然轻节点部分借鉴了SPV的理念,但和SPV是完全不同的。

三、支付验证和交易验证的区别

SPV节点进行的是区块链支付验证,而不是区块链交易验证。这两种验证方式存在很大的区别。

区块链交易验证的过程比较复杂,包括账户余额验证、双重支付判断等,通常由保存区块链完整信息的区块链验证节点来完成。

而支付验证的过程比较简单,只是判断该笔支付交易是否已经得到了区块链节点共识验证,并得到了多少的确认数即可。

简单的说就是:交易验证要检验这个交易是否合法,支付验证就是验证这笔交易是否已经存在。

四、SPV支付验证的实现步骤

我们现在知道SPV节点是通过区块头进行支付验证的,区块头中一般包括如下信息:前一区块(也称父区块)的哈希值、区块中交易默克尔树的根哈希值、时间戳等,通过区块的哈希值,可以识别出区块链中的对应区块。

区块前后有序链接,每一个区块都可以通过其区块头的“前一区块的哈希值”字段引用前一区块。这样把每个区块均链接到各自前一区块的哈希值序列,就创建了一条一直可以追溯到第一个区块(创世区块)的链条。

前一区块的哈希值,可以确保区块链所记录的交易次序。默克尔树的根哈希值,则可以确保收录到区块中的所有交易的真实性。

当比特币网络需要利用SPV进行简单支付验证时步骤如下:

  1. 计算待验证支付的交易哈希值;
  2. 节点从区块链网络上获取并存储最长链的所有区块头至本地;
  3. 节点从区块链获取待验证支付对应的默克尔树哈希认证路径;(这里找到了该交易对应的哈希值)
  4. 根据哈希认证路径,计算默克尔树的根哈希值,将计算结果与本地区块头中的默克尔树的根哈希值进行比较,定位到包含待验证支付的区块;(找到这个哈希值属于哪个区块)
  5. 根据该区块头所处的位置,验证该区块的区块头是否已经包含在已知最长链中,确定该支付已经得到的确认数量,如果包含则证明支付真实有效。(证明本交易得到了6次确认)

简单的讲,其实SPV就做了两件事:

  1. 找到要验证的这笔交易在哪个区块;
  2. 确定这个交易是否被6次确认过了。

如果验证的这笔交易已经被6次确认过了,代表这笔交易已经被最长链承认了,则这笔交易是真实存在的。

五、总结

SPV对普通用户一个很友好的支付验证方式,可以帮助节省更多的硬件控件。但是凡事都有两面性,这种方式有利也有弊。

SPV因为没有保存全部区块的节点信息,需要和其他节点配合才能进行验证,所以SPV节点存在被诱导连入了一个虚假的网络中的情况,存在被恶意攻击的可能。

在绝大多数的实际情况中,具有良好连接的SPV节点是足够安全的,它在资源需求、实用性和安全性之间维持恰当的平衡。当然,如果要保证万无一失的安全性,最可靠的方法还是运行完整区块链的节点。

 

版权声明:数字签名:Press.one

作者:liheng,区块链探索者、互联网产品经理,超级个体修炼中,只创作对用户有价值的内容

本文由 @liheng 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!