简单支付验证SPV

作者: 云天明ytm_ltd | 来源:发表于2017-06-16 22:16 被阅读257次

    简单支付验证(SPV,Simplified Payment Verification)

    SPV产生背景

    比特币所有区块数据目前在80G左右,而且还是持续增长中。普通用户来讲,主要就是为了支付交易,下载完整的区块数据没必要,也比较占用空间。

    SPV的技术原理

    简单来讲,就是比特币网络里的节点在打包一个区块的时候,会对区块里所有的交易进行验证,并且,一个交易还会得到6至7次的确认来确保交易最后的完成。正是如此,在使用简单支付验证时,只要判断出一个交易在主链上的某个区块里出现过,则可以证明该交易之前已被验证过。

    如何判断这个交易在哪个区块呢?首先通过区块中的父区块字段去顶交易在哪个区块,确定在那个区块中,就需要继续在区块结构中的默克树寻找这个交易。

    默克树结构

    所有的具体交易信息的哈希值都存放在叶子节点,将所有这些信息两两进行归纳,重复这样一个过程,最后归纳成一个节点,即根节点(如图中的节点0),通过一个根节点这样的哈希值就代表了所有打包到这个区块里的交易信息,所以大大减少了区块头部的大小。不仅如此,当要搜索某一个交易,比如上图中的23的时候,可通过几步,比如0-2-5-11即可以快速搜到。

    SPV如何实现?

    SPV节点验证交易在那个区块时,有两种好处:
    1、SPV充分利用默克树结构,在寻找交易时,只需下载寻找区块头而不是整个区块。
    2、区块头只有80字节,每小时6个,一年也就4M大小。
    3、如何定位区块呢?

    比特币提供了一种叫做布隆过滤器(Bloom filter)的功能,节点会在通信链路上建立一个这样的过滤器,限制只接受含有目标地址的交易,从而能过滤掉大量不相关的数据,减少客户端不必要的下载量。

    以上条件让SPV成为可能。

    相关文章

      网友评论

        本文标题:简单支付验证SPV

        本文链接:https://www.haomeiwen.com/subject/gfomqxtx.html