学术向丨将大象压缩到忽略不计,FlyClient怎么样让区块链变得超轻

当前位置:首页 > 币圈百科 > 学术向丨将大象压缩到忽略不计,FlyClient怎么样让区块链变得超轻

学术向丨将大象压缩到忽略不计,FlyClient怎么样让区块链变得超轻

2022-12-06币圈百科223

如果说比特币区块链臃肿得像一头头重约300公斤的猪,那么以太坊区块链就像一头重约3吨的大象。

而且他们的体重还在增加.

虽然中本聪提出的SPV(简化支付验证)方案只需验证块头数据就能有效减少客户端下载验证的数据,但在以太坊的情况下,其SPV客户端需要下载存储的数据仍然高达3.6 GB(相当于从一头大象瘦到6 kg左右的婴儿),然而,对于

通常,我们使用的加密货币钱包依赖于一个强大的可信方,它代表客户端验证支付。但是,这种可信实体的存在大大降低了加密货币网络的分散性。

因此,我们有必要探索一种比SPV更可行的超轻节点解决方案。

elephant

(图片来自pexels.com)

来自斯坦福大学的Benedikt B unz、东北大学的Lucian Nakifer、Kyber Network的Loi Luu和Visa研究部的Mahdi Zamani共同提出了一种新的轻量级客户端交易验证协议FlyClient。该协议仅需要下载对数数量的块报头来同步和验证事务,同时在执行之间仅存储一个块报头。

以以太坊为例,它将验证数据压缩到500 KB左右,相当于将一只原始大象压缩成一个约0.83克重的微小部分,因此可以完全加载到手机等移动设备中。

到目前为止,新一代的隐私币Grin和Beam一直使用的是协议FlyClient。

p6

摘要

为了保证交易的有效性,比特币、以太坊等加密货币要求节点验证工作量证明(PoW)区块链是否有效。不幸的是,这通常需要下载和验证所有的交易块,这意味着目前需要用户花费几天时间和大量的带宽和存储资源来验证区块链。因此,资源有限(如手机)的客户无法独立验证交易,需要信任所有节点。作为解决方案,比特币和以太坊提供了一种已知的轻客户端,我们称之为简化支付验证(SPV)客户端。它通过仅下载块头数据来验证区块链,因此它将比所有验证节省大量资源。不幸的是,SPV客户端的存储和带宽仍然会随着区块链的长度而线性增长。比如以太坊,SPV客户端需要下载存储3.6 GB以上的数据。

最近,Kiayias等人提出了一种解决方案,叫做workload proof非交互证明(NIPoPoW),它要求轻客户端只下载和存储对数数量的块头。然而,NIPoPoW方案仍然有缺点:它的简洁前提是没有攻击者影响诚实链。此外,该方案只能应用于具有固定阻塞难度功率区块链。然而,大多数加密货币(包括比特币和以太坊)往往需要根据网络计算能力来调整分块难度,这意味着该方案无法适用于主流加密货币。

然而,FlyClient方案也只需要下载对数数量的块头来同步和验证事务,同时在执行之间只存储一个块头。

目前研究人员已经正式证明了FlyClient的有效性。对于以太坊来说,这个协议可以将验证数据压缩到500 KB左右。这是通过使用称为MMR(Merkle Mountain Range)承诺的简单设计和概率块采样协议来实现的。FlyClient克服了NIPoPoW方案的局限性,并在所有测量参数上生成了一个更短的证明。研究人员还讨论了如何通过一次性软叉或天鹅绒叉将该协议应用于比特币和以太坊。

SPV技术的具体解释及存在的问题

现在很多金融服务商都可以在低容量客户端提供数字支付服务,如手机、可穿戴设备(如智能手表、健身追踪器)、物联网设备等,增加了便利性和安全性。 这些客户端的特点是对存储、带宽和计算的访问有限,但它们仍然需要即时确认延迟。

传统金融服务为移动客户提供了效率和强大的安全性。他们使用集中式支付系统,由于设计完全不同,一般不适合去中心化的加密货币网络(如比特币和以太坊)。另一方面,当前用于在大多数加密货币网络上验证交易的解决方案不适用于低容量设备。这通常是因为分散协议需要大量的存储、计算和带宽来验证图书交易。这些书依赖于网络中许多不可信节点之间的状态机复制。

低容量客户端的一个选择是依赖强可信方,该方可以代表客户端验证支付。但是,这种可信实体的存在大大降低了加密货币网络的分散性。

工作量证明(POW)区块链:大多数加密货币,包括比特币和以太坊,都维护着一个只能附加数据的区块链账本。它存储一系列使用加密哈希链接在一起的事务块。这些区块通过称为采矿的工程与区块链相连。

当参与节点(即矿工)竞争成为下一个块簿记员时,通常需要解决一个计算密集型的问题,这个问题被称为工作量证明(POW)。通过区块倡议者发起的八卦协议,每个矿工都会收到一个包含战俘解决方案的区块。如果这个解决方案是有效的,矿工将把这个块附加到他们本地的区块链拷贝上。由于这一过程没有任何中心方的协调(也没有传统的共识协议),区块链可能会分叉成多个链(例如,因为不同的矿工找到了同一问题的多个解决方案,甚至因为恶意行为)。其中,最长的共识链将被达成,也被称为诚实(有效性)链。

为了在不参与挖掘过程的情况下验证区块链分类帐是否有效,客户可以选择从具有完整区块链分类帐或所有节点的挖掘者处下载每个块。

目前下载验证比特币和以太坊的所有数据块需要节点分别下载190 GB和1.8 TB以上的数据,需要几天时间才能完全同步本地区块链。这使得存储空间有限的用户无法完全验证数据。

轻客户端:中本聪设计并描述了一种更快的同步机制,称为简化支付验证(SPV),而允许对区块链上的交易进行轻量级验证的客户端称为SPV客户端(也称为轻客户端),它们只下载并验证区块链总账的每个块头数据。以比特币为例,一个完整的块数据是1 MB,而块头数据只有80字节,有效节省了开销。值得注意的是,轻型客户端不会验证所有交易,理论上它可能会收到无效的区块链分类帐。它基本上依赖于这样的假设,即大多数工作负载证明只包含有效的事务,并且遵循系统的规则。

除了对交易的轻量级验证有用之外,轻量级客户端还可以为需要验证区块链上记录的过去事件日志的各种用户实现各种应用程序。

例如,SPV证明可用于跨链交易的有效验证。

虽然仅依靠块头可以显著降低SPV客户端的验证开销,但在资源有限的客户端上仍然会产生很大的开销,尤其是考虑到这种开销会随着块数的增加而线性增加。这成为了以太坊的主要关注点,因为它的分块时间相比比特币的10分钟分块间隔只有15秒,而且它的块头数据更大(528字节)。考虑到以太坊区块链有超过700万个数据块,希望验证以太坊交易的SPV客户必须下载和存储超过3.6 GB的数据。每当客户端想要验证事务时,它必须下载新的数据副本,或者在其存储中保留本地副本,并且仅下载自上次同步以来所做的更改。在这两种情况下,都会给当事人带来很大的负担。

而对于侧链,问题会进一步扩大。

FlyClient协议的简单描述

研究人员提出的这种新的fly client区块链验证协议可用于比特币、以太坊等加密货币。与传统的SPV客户端(需要线性数量的带宽和存储)不同,FlyClient客户端只需要下载对数数量的区块头来验证区块链。验证后,客户端只需要存储一个块就可以有效地验证链中是否有事务。FlyClient协议克服了NIPoPoW的局限性。即使面对反对者,也能提供简洁的证明。

协议由c [0,1]和 N参数化,使敌人最多控制C分的诚实计算能力,其成功概率最多为2(?).

以太坊背景下,证明FlyClient不到1KB,相比NIPoPoW方案需要1.5MB另外,FlyClient协议可以应用于难度有所变化的区块链。

fly client协议的实现是基于以下技术的使用:

可变难度的概率抽样:它引入了一种从远程区块链随机抽样Oc,(log n)个可变块难度的块头的协议。此外,研究人员证明了只要对手的计算能力不超过诚实节点(原论文为c 1的百分比)高效链承诺,协议就是安全的:研究人员完善并使用了一个叫做MMR(Merkle mountain range)的概念,这是一个高效的可更新的承诺机制,使得证明者能够以较小(固定大小)的承诺保证整个区块链,同时提供位置约束保证的对数块包含证明;非交互式和可转移证明:研究人员引入了一种非交互式FlyClient变体,它使用Fiat-Shamir启发式技术,允许轻客户端和所有节点将证明转发给其他轻客户端,而无需重新计算证明。

FlyClient协议的具体性能

为了实际测量fly client协议的性能,研究人员在以太坊区块链上进行了实际测试。首先,他们比较了FlyClient和Nippow,结果显示Nippow无法处理难度可变的区块链。同时,Nippow和FlyClient的证明大小都与链长的对数有关,而其他参数,Flyclient更胜一筹。与SPV客户端相比,FlyClient的性能更加出众。

注意:所有计算都假设以太坊块头大小为508字节,哈希输出为32字节。此外,MMR节点还包含8个字节来存储难度。

p4

对比以太坊区块链SPV客户端和FlyClient的校样大小(以KB为单位)可以看出,块高越高,FlyClient的优势越明显。

部署FlyClient协议(不仅适用于所有PoW,也适用于很多PoX协议)

对于比特币、以太坊等类似的区块链协议,使用FlyClient的唯一修改就是在每个块中包含MMR root。我们有三种方法将这个MMR根添加到模块中。第一种方法是硬分叉,其中MMR根被添加到所有块(旧的和新的)。在这种情况下,MMR根甚至可以替换为前一个块的当前哈希指针。例如,基于Mimblewimble的两个隐私币Grin和Beam已经在使用这种方案。这些区块链可以直接部署FlyClient协议。

或者,第二种方案通过软fork可以使新块包含MMR根,而旧块不包含MMR根。在软分叉方案中,非升级挖掘器不会拒绝新块,而升级挖掘器可能拒绝属于非升级挖掘器的旧块。当大多数节点执行新的协议规则时,软分叉将被“激活”。从软分叉的出现开始,新的块将以向后兼容的方式存储MMR根。例如,MMR根可以存储在一个特殊的事务中。在FlyClient协议中,矿工会提供块头、这个特殊的事务以及这个事务属于这个块的证明。证明大小将与log(|tx|)成比例增加,其中tx是事务的数量。

第三种展开路径,称为天鹅绒分叉,是其他研究者提出的分叉方案。 根据这一计划,过时矿工的区块将不会被拒绝。因此,Velvet 蓑衣网小编2022 Fork是区块链协议的向后兼容更新,并依赖于客户端来重新解释区块链数据。对于FlyClient来说,Velvet fork会导致常数分值为的块包含一个MMR根,导致证明效率较低,但对于FlyClient来说,这是一个没有争议的部署机制。

为了简单起见,原论文只描述了比特币和以太坊背景下的FlyClient方案,但并不局限于PoW区块链,同样适用于权益证明(PoS)、空间证明或时间证明区块链。这种协议必须允许任何节点独立验证每个块的有效性,以确保块创建者已经为该块使用(或消耗)了特定量的资源。

PoS协议通常从不同的来源提取随机性,例如以前的区块或多方掷硬币。这些协议中的一些根据最长链规则增长链(这可能导致分叉)。然而,一些PoS协议(如Algorand和OmniLedger)使用混合设计来避免分叉。虽然FlyClient可以应用在第一类PoS协议中,以最小的改动实现轻量级的交易验证,但是对于混合经典拜占庭容错的混合PoS协议,FlyClient是无能为力的。

关于FlyClient协议的更多细节,读者可以阅读原文:https://eprint.iacr.org/2019/226.pdf

或者参考Grin的讨论:3359github.com/mimblewimble/grin/issues/1555

和Beam的代码实现https://github.com/BeamMW/. 蓑衣网小编2022 Beam/blob/42ef 470 c 322 a 230 CFA 45 f 7 f 268 BF 37987 da 92057/core/fly _ client . CPP

学术向丨将大象压缩到忽略不计,FlyClient怎么样让区块链变得超轻 | 分享给朋友: