轻节点技术最开始被用于低性能终端的支付验证,可以大大缩减节点部署的成本。超轻节点技术则更进一步,让手机、浏览器插件都可轻松运行节点,并且它还是实现分片、侧链和跨链技术的基础。路云区链的超轻节点技术能极大地方便普通用户使用,并且已经在实验链Dipperin上得到检验。
轻节点技术的由来
在比特币整个生态圈里,大部分都是普通用户,即只有基本的比特币投资及消费支付需要的用户,他们可能没有矿机,没有高端配置的电脑,那么他们是否也要运行一个全节点程序呢?因为随着时间的推移,目前比特币主链的区块数据高达200G,想想如果是一个手机钱包,或者个人PC的钱包,下载主网完整区块的话,存储压力未免过大。这时候就出现了轻节点技术,比特币网络里的节点在打包一个区块的时候,会对区块里所有的交易进行验证,并且每一个交易还会得到6至7次区块的确认来确保交易最后的完成。正是如此,在使用简单支付验证时,只要判断出一个交易在主链上的某个区块里出现过,则可以证明该交易之前已被验证过,故目前市面上约90%的钱包都为轻节点钱包。
另外,绝大多数分片、侧链和跨链技术都需要传递不同分片或者区块链的状态,同时运行几个分片(链)的成本非常高,所以超轻节点技术是一个必不可少的解决方案。
轻节点技术的原理
中本聪最早提出的SPV轻节点技术可用于交易的有效验证。轻节点只需下载全节点主链中所有区块头,并根据全节点提供的交易的Merkle Proof,即可自行验证交易的有效性。要想验证一笔交易是否上链可分为以下三个步骤:
1. 选择最“可信”的区块链
2. 验证交易在某个区块当中
3. 验证该区块在这条可信链上
由于比特币网络秉持着长链优先原则,所以在SPV中步骤一非常的简单,即轻节点相信最长链。接下来第二步,轻节点根据全节点提供的Merkle Path计算出Merkle Root,并把它与区块头中的Transaction Root进行比较,验证出区块的有效性。Merkle Path包括从交易Hash到Merkle Root之间所需要的所有兄弟叶子节点,比如对于为了证明下面这个Merkle Tree的叶子H(K),需要提供的Merkle Path包含: H(L), H(IJ), H(MNOP), H(ABCDEFGH)。
Merkle Path示意图
最后第三步,轻节点在本地下载的区块链上验证步骤二中的区块是否存在。
超轻节点技术的原理
虽然SPV技术显著降低了轻节点的验证开销,但对于诸如手机、平板电脑等资源有限的客户端来说,这种程度的开销仍然是不能接受的。NIPoPoW超轻节点技术无需下载所有的区块头,只需根据抽样算法向网络中保持联系的全节点索取一个NIPoPoW证明,选择其中最可信的一个,并且其自身就能验证该证明的有效性。另外,由于算法是非交互式的,所以NiPoPoW证明是可转发的,全节点只需生成一份证明就可以给所有的超轻节点使用。
FlyClient是目前最高效的超轻节点算法,它具有NIPoPoW的所有优点,但是在抽样算法、证明的生成与验证方式上进行了优化,它不仅支持难度值可调,还支持PoS、PoET、PoSpace等单一的、基于最长链优先原则的共识机制。FlyClient算法的最大特点是把整条链的n个区块头作为叶子,构建Merkle Mountain Ranges(MMR),并将其MMR Root写入下一个区块的区块头。MMR和Merkle Tree非常相似,其不同的是对非对称二叉树结构的处理方式,
MMR示意图
路云区链超轻节点技术的“份量”
目前主流的超轻节点方案基于单一共识机制比如PoW,他们可以不需要关心用户状态,原因在于超轻节点仅通过区块头就可以获取到足够的信息,从而证明当前区块有效(工作量足够)。只要验证一条链上所抽样的区块都有效,且这条链是最长的,就可以信任这条链(最长链原则)。所以说PoW的安全性是基于主链的总算力,在优化的抽样算法下可以认为作恶的难度近似与在主链作恶的难度。
但是路云区链在实验链Dipperin采用了DPoW的共识机制,其安全性由算力和权益共同组成。如果没有把PBFT的过程也在超轻节点方案中作出证明,那么超轻节点的安全性会远远低于主网,不足以在侧链或客户端中使用。然而权益的证明是基于状态的,除了状态的验证并没有其他途径可以验证用户的权益。在FlyClient的方案中,超轻节点无法通过区块头获得用户的状态,因此恶意用户实际上是可以对超轻节点谎称自己的权益。另外,DPoW也打破了FlyClient最长链原则这个验证前提。所以,Dipperin在设计超轻节点方案的时候把PBFT的过程也考虑了进来。
Dipperin的超轻节点方案抛弃了FlyClient复杂的抽样算法,吸收了MMR的树状结构的区块头设计。由于MMR形成的树状结构和其不可篡改的特性,超轻节点一旦确认最新区块就相当于确定了整条链,那么轻节点原理中的步骤一其实可转换为确认最新区块。为了解决这个问题Dipperin引入了一组可信任的信标节点,他们每一轮发送包含区块高度、区块Hash、当前验证者列表的信标交易。全节点需要收集这些信标交易,并在提供给超轻节点最新区块时包含最新轮信标交易。超轻节点先通过信标交易确认最新轮的验证者,再通过验证验证者对区块的签名确认最新区块。此方案不但大大提高了超轻节点的安全性,而且算法简单、代码易实现。
路云区链作为一家致力于区块链底层技术领域研发的公司,通过把真实世界的交互搬到区块链上。毫无疑问,便捷的超轻节点技术能极大地提升业务效率,也是让客户能快速、安全、低成本地上链的技术保障之一。