2019-11-22

2019-11-22  本文已影响0人  Dipperin

2019年被称为“跨链元年”,随着Cosmos、Polkadot这些项目的推出,跨链似乎不再是一个纸面上的想法。不要误会,今天和大家分享的并不是跨链技术,而是随着跨链技术发展而受到关注的超轻节点技术。

超轻节点概念的由来

对于比特币、以太坊之类的数字货币,如果要自己运行全节点才能使用的话,使用成本就太高了,因此无需维护数据的轻钱包就成为很多用户一个不错的选择。轻钱包不维护链的信息,但将私钥等账户信息存储在本地。通过连接一个或多个信任节点来获取链信息和发送交易信息。

由于轻钱包无法进行支付验证,当信任的节点作恶或者连接被拦截时,就可能存在钱包收到交易上链而实际交易未上链的情况,使用户蒙受损失。为了进一步减小这种可能,轻节点技术开始受到关注。轻节点又称为SPV节点,其中SPV是“Simplified Payment Verification”(简单支付验证)的缩写。在中本聪论文中就简要地提及了这一概念:不运行完全节点也可验证支付,用户只需要保存所有的block header就可以了。用户虽然不能自己验证交易,但如果能够从区块链的某处找到相符的交易,他就可以知道网络已经认可了这笔交易,而且得到了网络的多少个确认。

按照中本聪的原文,这里有个细节需要注意,SPV指的是“支付验证“,而不是“交易验证”。这两种验证有很大区别。“交易验证”非常复杂,涉及到验证是否有足够余额可供支出、是否存在双花、脚本能否通过等等,通常由运行完全节点的矿工来完成。“支付验证”则比较简单,只判断用于“支付”的那笔交易是否已经被验证过,并得到了多少的算力保护(多少确认数)。

然而,虽然下载全部区块头比下载完整区块消耗的带宽和硬盘空间大大减小,像Bitcoin目前下载全部的区块头只需要几十兆,但是如以太坊由于出块间隔更短,区块体积更大,全部区块头大约有4GB,SPV客户端也不算轻。于是就开始有人研究相应的超轻节点技术。在这些超轻节点中,要验证某个区块的存在性,节点不需要保存任何数据,而只需要向网络中保持联系的一些全节点索取若干证明并进行验证即可。

轻节点技术解析

对于SPV节点,由于节点本身已经保存了链上所有区块头的信息,因此进行支付验证只需要验证交易确实在某个确认的区块中(比如比特币的确认区块一般被认为需要得到六个区块的确认)。就以比特币的SPV节点作例子,当比特币网络需要利用SPV进行简单支付验证时步骤如下:

1.计算待验证支付的交易哈希值;

2.节点从区块链网络上获取并存储最长链的所有区块头至本地;

3.节点从区块链获取待验证支付对应的默克尔树哈希认证路径;(这里找到了该交易对应的哈希值)

4.根据哈希认证路径,计算默克尔树的根哈希值,将计算结果与本地区块头中的默克尔树的根哈希值进行比较,定位到包含待验证支付的区块;(找到这个哈希值属于哪个区块)

5.根据该区块头所处的位置,验证该区块的区块头是否已经包含在已知最长链中,确定该支付已经得到的确认数量,如果包含则证明支付真实有效。(证明本交易得到了6次确认)

超轻节点由于没有链上区块头的信息,无法确定交易所在区块存在链上,因此相比SPV节点,需要多进行两步验证:

1.证明信息提供节点的链为最长合法链;

2.证明交易所在区块存在最长合法链上。

目前比较流行的超轻节点技术有两个:

1.NIPoPoW(非交互式的工作量证明的证明)

NIPoPoW(非交互式的工作量证明的证明)提供了一个高效的区块存在性证明方法,并根据此方法创造了一种叫做超轻节点的协议。在这种超轻节点中,要验证某个区块的存在性,节点不需要保存任何数据,而只需要向网络中保持联系的一些全节点索取若干个叫做NIPoPoW的证明。NIPoPoW是很难伪造的,轻节点在索取到的这几个证明中比较,选择其中最可信的一个,并进行对该证明有效性的验证。

与我们之前提到的在移动客户端上通过连接全节点进行交易验证所不同的是,移动客户端是完全信任他们连接的全节点的,如果该全节点欺骗了客户端,则客户端无法分辨自己被欺骗了。在NIPoPoW协议中,全节点发送的是一套难以伪造的证明。这个证明与当前区块链长度是log多项式的关系,非常简短,使得节点可以在资源受限的移动客户端内对这个证明进行验证。在这里,对正确性的验证不是基于对所连接的全节点的信任,而是基于其协议背后的数学原理。

2.FlyClient

FlyClient方案,同样只要求下载对数数量的区块头来同步和验证交易,同时在执行之间只存储一个区块头。目前,研究人员已正式证明了FlyClient的有效性,对于以太坊,这种协议可把验证证明数据压缩到500KB左右。这是通过使用一种名为MMR(MerkleMountainRange)承诺的简单设计,以及一个概率区块采样协议实现的。FlyClient克服了NIPoPoW方案的局限性,并在所有测量参数上,生成了更短的证明。研究人员还讨论了如果通过一次软分叉或天鹅绒分叉(Velvetfork)方式,将这种协议应用到比特币和以太坊。

目前运用超轻节点技术的项目

项目名使用方案项目特点

WebDollarNiPoPOWjs实现,主打便捷支付

NimiqNIPoPoW运行与浏览器,主打便捷支付

GrinFlyclient基于MimbleWimble的隐私币

BeamFlyclient基于MimbleWimble的隐私币

超轻节点技术的意义

SPV技术最开始被用于低性能终端的支付验证,可以大大缩减节点部署的成本。超轻节点则更进一步,让手机、浏览器插件都可轻松运行节点。举个具体运用的例子,有一个用户想用自己创建一个区块链节点来进行DApp的开发,但是又不想参与共识,其实对于这个用户来说,同步大量的数据是一件很耗时的事情,并且十分浪费相关的硬盘资源,部署SPV节点可以轻松在服务器上运行,使用超轻节点技术甚至可以让页面直接验证交易。

另一个运用的方向在于分片、侧链和跨链技术。绝大多数分片、侧链和跨链技术都需要传递不同分片(链)的状态,同时运行几个分片(链)的成本太高并不现实,超轻节点是一个相对综合的解决方案。对于分片技术来说,当存在大量分片时,哪怕运行的是SPV节点也会需要大量的储存空间,超轻节点则完全不需要保存数据。

上一篇下一篇

猜你喜欢

热点阅读