区块链之我见15

作者: 清扬先生 | 来源:发表于2018-01-29 17:39 被阅读54次

    本文由【区块链研习社】专栏优质内容计划支持。

          区块链进阶01 SPV

    Simplified Payment Verification,即SPV

    定义

    是一种无须维护完整的区块链信息,只需要保存所有的区块头部信息即可进行支付验证的技术。

    优势:

    该技术可以大大节省区块链支付验证用户的存储空间,减轻用户存储负担,降低区块链未来交易量剧增而给用户带来的压力。以比特币系统为例,节点只需保存所有区块头信息,即可进行交易支付验证。节点虽然不能独立验证交易,但能够从区块链其他节点获取交易验证的必要信息,从而完成交易支付验证,同时还可以得到整个区块链网络对交易的确认数。

    要理解SPV的概念,首先需要理解如下两类概念的区别:

    一是SPV与轻钱包的区别

    轻钱包指的是节点本地只保存与其自身相关的交易数据(尤其是可支配交易数据),但并不保存完整区块链信息的技术。

    SPV的目标是验证某个支付是否真实存在,并得到了多少个确认。比如李笑来收到来自薛蛮子的一个通知,薛蛮子声称已经从其账户中汇款一定数额的钱给了李笑来。

    那么如何快速验证该支付的真实性,是SPV的工作目标。

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

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

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

    而SPV节点不需要下载新区块的全部数据,只需要保存区块头部信息即可。虽然轻钱包或瘦客户端中部分借鉴了SPV的理念,但和SPV是完全不同的。

    二是区块链支付验证与区块链交易验证的区别

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

    区块链交易验证的过程比较复杂,包括账户余额验证、双重支付判断等,通常由保存区块链完整信息的区块链验证节点来完成。而支付验证的过程比较简单,只是判断该笔支付交易是否已经得到了区块链节点共识验证,并得到了多少的确认数即可。

    还是以比特币系统为例,用户李笑来收到来自薛蛮子的通知,薛蛮子声称已经从其账户中汇款一定数额的钱给李笑来。

    李笑来进行交易验证的过程如下:首先,李笑来遍历完整的区块链账本,在区块链账本的交易中保存了薛蛮子的历史交易信息(包括薛蛮子的汇款账户、薛蛮子的签名、历史收款人的地址以及汇款金额信息等),查询薛蛮子的账户,就可以判断薛蛮子提供的账户是否有足够的余额,如果余额不足则交易验证失败。

    其次,李笑来要根据区块链账本判断薛蛮子是否已经支出了这个账户上的钱给别人,即是否存在双重支付问题,如果存在则交易验证失败;

    最后,判断薛蛮子是否拥有其提供账户的支配权,如果判断失败则交易验证失败。而如果李笑来只是进行支付验证,则过程简单得多:通过SPV,李笑来可以进行支付快速验证,即检查此项支付交易是否已经被收录存储于区块链中,并得到了多少个确认数,就可以判断支付验证的合法性。

    有朋友私聊我要如何进阶的高级小韭菜,个人推荐陈菜根等大咖带来的《6小时,解码区块链》,看了些陈菜根的关于区块链的文章见解独到,各位自行决定

    区块链之我见15 区块链之我见15

    相关文章

      网友评论

        本文标题:区块链之我见15

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