免责声明:金色财经所有资讯仅代表作者个人观点,不构成任何投资理财建议。请确保访问网址为(jinse.cn) 举报

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

    上一期我们学习了区块链系统里的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节点就是充分利用了这一点,只保存区块链的区块头信息从而实现“简单支付验证”的功能。当然啦,如果想要保证万无一失的安全性,最可靠的方法还是运行完整区块链的节点。

    jinse.cn 0
    好文章,需要你的鼓励
    jinse.cn 0
    好文章,需要你的鼓励
    参与评论
    0/140
    提交评论
    文章作者: / 责任编辑:

    声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。

    提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

    金色财经 > 币自来 > 区块链入门(11) — 简单支付的那些事
    • 寻求报道
    • 金色财经中国版App下载
      金色财经APP
      iOS & Android
    • 加入社群
      Telegram
    • 意见反馈
    • 返回顶部
    • 返回底部