|
【一期二团Day-4胡林华】第三章 区块链进阶
一、 简单支付验证(SPV)
简单支付验证是一种无须维护完整的区块信息,只需保存所有的区块头部信息即可进行支付验证的技术。
1. SPV与轻钱包的区别:
1) 轻钱包是指节点本地只保存与其自身相关的交易数据(尤其是可支配的交易数据),但并不保证完整的区块链信息的技术。
SPV的目标是验证某个支付是否真实存在,并得到了多少个确认。
2) 轻钱包仍需下载每个新区块的全部数据并进行解析,获取并本地存储与自身相关的交易数据,只是无须在本地保存全部数据而已。
而SPV节点不需要下载新区块的全部数据,只需要保存区块头部的信息即可。
2. 区块链支付验证和区块链交易验证的区别:
SPV指的是区块链支付验证,而不区块链交易验证。
区块链交易验证的过程比较复杂,包括帐户余额验证、双重支付判断等,通常由保存区块链完整信息的区块链节点来完成。
而支付验证过程就比较简单,只是判断该笔支付交易是否已经得到了区块链节点共识验证,并得到了多少的确认数即可。
问题:为什么要验证鲍伯的帐户,而不从爱丽丝的帐户验证有无款项进来?
(一) SPV的技术原理
区块信息主要包括区块大小、区块头、交易数量和交易信息四部分内容。
SPV的工作原理中,最关键和复杂的是步骤③,节点从区块链获取待验证支付对应的默克尔树哈希认证路径的过程。
默克尔树哈希认证路径是验证待验证支付是否存在于默克尔树的关键条件,该认证路径由默克尔树所有路径中节点的哈希值共同构成,自上而下进行哈希计算。
(二)SPV的扩展功能
以太坊对SPV的功能进行了扩展:每一个区块头,并非只包含一颗默克尔树,而是包含了三棵默克尔树,分别对应了三种对象——默克尔交易树、默克尔收据树和默克尔状态树。
默克尔收据树是由展示每一笔交易影响数据条构成的默克尔树。
默克尔状态树中,则保存帐户信息、帐户余额等信息。
(二) SPV面临的问题
第一个问题是SPV节点与区块链系统去中心化程度似乎存在一定矛盾。
第二个问题是交易可锻性攻击。
在比特币系统中,交易可锻性攻击体现在交易ID可被伪造,而交易ID可被伪造的原因是比特币签名算法不够完善。
交易可锻性体现在虽然交易签名被“锻造过”(即修改伪造过),但最终的交易依然有效。
二、 侧链
(一) 侧链的起源
侧链:是指遵守铡链协议的所有区块链。
侧链协议是指可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地返回比特币主链的一种协议。
(二) 侧链协议
侧链协议的目的是实现双向锚定,使比特币可以在主链和侧链中互转。
(三) 元素链
元素链是BlockStream实现的一个参考侧链。元素链Alpha是比特币测试链的一个侧链。
三、 闪电网络
(一) 闪电网络的起源
比特币扩容问题长期规则派和短期搁置派的较量,目前长期规则派完败。
区块值上调是无法真正解决比特币扩容问题的。
(二) 扩容问题
1. 清算系统
当块容量不够用时,可以保证高价值的交易进块,低价值的交易永远无法进块,低价值块无法支付高网络手续费。网络退化为清算系统。在闪电网络出现之前,低价值交易由第三方记帐系统(主要是链外钱包提供商)进行替代完成。
2. 现金系统
短时间可能发生交易入块堵塞。
3. 扩容大小的选择
扩容争论的结果还是倾向于2MB,使升级过程更加可控些,风险更低些。
(三) 微支付通道
|