LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 区块链入门(11) — 简单支付的那些事

区块链入门(11) — 简单支付的那些事

2019-11-08 币自来 来源:区块链网络

上一期我们学习了区块链系统里的51%攻击,今天我们来聊聊在

区块链入门(7) — 区块链的骨骼2

文章中提起过的SPV支付(简易支付验证)吧。通过这个SPV支付能带给我们什么便利呢?

中本聪在论文里简要地提及了这一概念,指出:?不运行完全节点也可验证支付,用户只需要保存所有的block header就可以了。

1.?SPV的是怎么出现的?

比特币整个生态圈里,大部分都是普通用户,即只有基本的比特币投资及消费支付需要的用户,他们可能没有矿机,没有高端配置的电脑,那么他们是否也要运行一个全节点程序呢?

而对于这些用户来说,他们需要知道自己是否支付成功,就只能到区块链上查找这笔交易。在一个全节点中就可以做到查询,因为全节点保存了整条区块链的所有数据。

但你要知道,现在官方显示的结果,比特币所有区块数据目前在120G左右,而且还是持续增长中。用户们不可能在手机上安装那么大内存的软件,想要在手机得到验证,就只能通过SPV简单支付验证了。

SPV可真的对于大多数的用户来说是福利了,不需要大量数据就能够进行支付验证,支持简单支付验证!

8c8a1fe1d7846635827c9ec12f549b29.jpg?x-oss-process=style%2Fcailu-watermark

小编在这里提醒各位同学注意了!!!(重要的事情只说一遍)

大家要搞清楚区块链的支付验证与交易认证的区别!不要混淆了:

SPV指的是区块链支付验证,而不是区块链交易验证。?这两种验证方式存在很大的区别:区块链交易验证的过程比较复杂,包括账户余额验证、双重支付判断等,通常由保存区块链完整信息的区块链验证节点来完成。而支付验证的过程比较简单,只是判断该笔支付交易是否已经得到了区块链节点共识验证,并得到了多少的确认数即可。总的来说就是:?交易验证要检验这个交易是否合法,支付验证就是验证这笔交易是否已经存在?。

2.?SPV是怎么验证的?

67e99a1ee3a65685807b94c314048ce4.jpg?x-oss-process=style%2Fcailu-watermark

想学的话,我们用一张表格来对比全节点和SPV节点吧:

存储数据存储数据大小UTXO数据库验证方法全节点全部区块N*1M未花费UTXO参考交易在区块链中的高度来验证SPV全部区块头N*80byte无参考交易在区块链中的深度来证明

通过上面这个表格,我们可以很容易看到,全节点的验证方法。

一个全节点,想要检查123号区块中的某个交易,你就要把从这个区块开始一直追溯到创世区块的123个区块全部连接起来,然后建立一个完整的UTXO数据库,通过确认该utxo是否还未被支付来证实交易的有效性,是比较繁琐复杂的。?而SPV验证,它的工作只需要做这两件事:1.找到要验证的这笔交易在哪个区块2.确定这个交易是否被6次确认过了

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

具体的验证过程如图:

96a109155b8c17e18ae01b7770ff0c02.jpg?x-oss-process=style%2Fcailu-watermarkSPV支付验证过程

3.?SPV的安全性如何?

用SPV简单支付验证,可以节省一大笔存储空间,无论未来交易量有多大,它的区块头保存的数据都是固定大小,80个字节,按照每小时6个的出块速度,每年产出52560个区块。当只保存区块头时,每年新增的存储需求约为4兆字节,100年后累计的存储需求仅为400兆,即便是最普通的终端硬件设备,也有将数据保存在本地的能力。?当然,这种简单的支付验证也带来一定的弊端。?由于只是简单地通过区块头来验证以下是否存在交易,相当于警卫在进行登记检查的时候,只是看了以下门牌号是不是在许可范围内,而不再去检查住在里面的这个人的身份。这个时候安全性就完全地取决于门牌的真实性了。?SPV 由于没有全部的交易记录,不能验证某个交易不存在,这个漏洞会被针对spv节点的?拒绝服务?或者?双重支付攻击?利用。相当于把主要的工作交给了同事(其他完整节点),同事认真负责就不会有问题了,同事如果被掉包了或者叛逆了,就要出事了。?因此,SPV节点需要随机链接多个节点,增加与至少一个可靠节点相连接的概率,但是这种随机链接的需求也会容易受到网络分区和sybil攻击。

adf2e2bf083e50c40651a97136e4f7a3?x-oss-process=style%2Fcailu-watermark

【总结】各种节点的出现是为了满足区块链不同应用的场景需求,也就是说成为节点的终端越来越多样化,逐渐完善区块链的生态圈。区块头汇聚了区块链实现各种功能的重要信息,而SPV节点就是充分利用了这一点,只保存区块链的区块头信息从而实现“简单支付验证”的功能。当然啦,如果想要保证万无一失的安全性,最可靠的方法还是运行完整区块链的节点。

—-

编译者/作者:币自来

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

LOADING...
LOADING...