LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 三分钟带你了解SPV证明

三分钟带你了解SPV证明

2019-11-29 量化踢马河 来源:区块链网络

1575004652161129.jpg

简单付款验证(Simple Payment Verification),简称SPV. 是比特币白皮书中提到的系统,此系统令轻型客户端(运行在低端系统上的钱包)可以验证交易是否已经被包含在比特币中,并因此进行支付。

在中本聪设计比特币时,他使用Merkle 树数据结构将交易存储在各个区块中。Merkle树只是通过将所有交易成对分组并对其进行哈希处理,然后继续对生成的哈希进行哈希处理并将该过程一直进行下去,直到只剩下一个哈希,也就是Merkle的根,它就是这样的一个结构。

1575004652740957.jpg

上图为Merkle树,其中L1-L4为比特币交易。

只有直到Merkle 根或者如图所示的顶部哈希,才能验证交易是否是树的一部分,即,交易是否已经包含在了比特币区块中。这要通过将从Merkle根到底部事物之一的路径中的节点连接并捆绑在一起才能创建证明来完成:

1575004653132240.jpg上图所示:构造SPV证明以验证L1包含在区块中。

通过此证明,只有原始用户可以顺着一条可验证的路径追踪返回根部,这可以通过对Hash1与Hash0进行哈希生成Top Hash. 这意味着Hash1与Hash0是其合法哈希的子对象,然后对Hash0-0和Hash0-1进行相同的验证,确定这两个对象也是原始块的一部分。最后,验证L1是Hash0-0的源,证明L1包含在Hash0-0中。因此,可以确认其已接受比特币交易。

为什么SPV证明很重要?

了解了SPV证明的运行过程,感觉似乎SPV没什么大不了的,为什么我们不通过运行一个完整的节点来验证比特币交易呢?事实上,如果要运行一个完整的节点,需要下载整个区块链,但是使用SPV的话,我们只需要知道每个区块链的Merkle根即可。也就是说,我们只需要为每个区块存储80个字节,而非完整节点,直接减少了99.99%的工作量。这使得在低资源设备或者智能合约中运行验证变得可行(这些轻型客户端无法支持下载整个节点的每个区块)。

缺点

虽然SPV证明也有着各种好处,也为交易者们带来了便利,但是它也有着无法忽视的缺点。如果对加密货币成功进行了51%攻击,攻击者就能够欺骗依靠SPV证明的用户接受任何类型的无效交易,例如,凭空制造的交易。为此,目前有不少针对克服该缺陷进行的研究正在进行。

1575004653564360.jpg

踢马河:RaTiO Fintech合伙人,曾任某券商自营操盘手,十余年海外对冲基金和国内大型投资机构基金经理,资深交易建模专家,币圈大咖。

请尊重原创!转载请注明出处。

—-

编译者/作者:量化踢马河

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...