简单支付验证是一种无须维护完整的区块链信息,只需要保存所有的区块头部信息即可进行支付验证的技术。该技术可以大大节省区块链支付验证用户的存储空间,减轻用户存储负担,降低区块链未来交易量剧增而给用户带来的压力。以比特币系统为例,节点只需保存所有区块头信息,即可进行交易支付验证。节点虽然不能独立验证交易,但能够从区块链其他节点获取交易验证的必要信息,从而完成交易支付验证,同时还可以得到整个区块链网络对交易的确认数。
要理解这个首先得理解两个概念:
一是SPV与轻钱包(或瘦客户端)的区别。轻钱包指的是节点本地只保存与其自身相关的交易数据(尤其是可支配交易数据),但并不保存完整区块链信息的技术。SPV的目标是验证某个支付是否真实存在,并得到了多少个确认。比如爱丽丝(Alice)收到来自鲍伯(Bob)的一个通知,鲍伯声称已经从其账户中汇款一定数额的钱给了爱丽丝。如何快速验证该支付的真实性,是SPV的工作目标。轻钱包或瘦客户端的目标不仅是支付验证,而且是用于管理节点自身的资产收入、支付等信息。比如爱丽丝使用轻钱包或瘦客户端管理自身在区块链的收入信息、支出信息,在本地只保存与爱丽丝自身相关的交易数据,尤其是可支配交易数据。轻钱包与SPV的最大区别是,轻钱包节点仍需下载每个新区块的全部数据并进行解析,获取并本地存储与自身相关的交易数据,只是无须在本地保存全部数据而已。而SPV节点不需要下载新区块的全部数据,只需要保存区块头部信息即可。虽然轻钱包或瘦客户端中部分借鉴了SPV的理念,但和SPV是完全不同的。
二是区块链支付验证与区块链交易验证的区别。SPV指的是区块链支付验证,而不是区块链交易验证。这两种验证方式存在很大的区别。区块链交易验证的过程比较复杂,包括账户余额验证、双重支付判断等,通常由保存区块链完整信息的区块链验证节点来完成。而支付验证的过程比较简单,只是判断该笔支付交易是否已经得到了区块链节点共识验证,并得到了多少的确认数即可。还是以比特币系统为例,用户爱丽丝收到来自鲍伯的通知,鲍伯声称已经从其账户中汇款一定数额的钱给爱丽丝。爱丽丝进行交易验证的过程如下:首先,爱丽丝遍历完整的区块链账本,在区块链账本的交易中保存了鲍伯的历史交易信息(包括鲍伯的汇款账户、鲍伯的签名、历史收款人的地址以及汇款金额信息等),查询鲍伯的账户,就可以判断鲍伯提供的账户是否有足够的余额,如果余额不足则交易验证失败;其次,爱丽丝要根据区块链账本判断鲍伯是否已经支出了这个账户上的钱给别人,即是否存在双重支付问题,如果存在则交易验证失败;最后,判断鲍伯是否拥有其提供账户的支配权,如果判断失败则交易验证失败。而如果爱丽丝只是进行支付验证,则过程简单得多:通过SPV,爱丽丝可以进行支付快速验证,即检查此项支付交易是否已经被收录存储于区块链中,并得到了多少个确认数,就可以判断支付验证的合法性。
网友评论