需要为唯一的计算设备是智能手机并且居住在移动互联网接入所在的地方的人们增强比特币生态系统 昂贵的, 缓慢,不可靠或 审查. 塞内加尔比特币开发人员 福迪·迪奥普(FodéDiop) 已经指出,世界上许多地区都是“仅移动设备”,而不仅仅是“移动设备优先”。

允许用户保留用于签名交易的私钥控制权但不充当完整比特币节点的移动钱包应用程序通常被称为“轻型”客户端。轻型客户端需要权衡隐私和最小化信任,以减少所需的内存,持久性存储和通信带宽。本文重点介绍如何最大程度地减少在手机上运行的轻客户端钱包所使用的带宽.

轻客户端的带宽要求比完整节点低得多,因为它们不下载完整的比特币区块链。相反,轻度客户使用某种形式的“简单付款验证”(SPV)以确认交易。自从创世区块以来,SPV钱包并没有直接确认添加到比特币总账中的每笔交易的有效性,而是仅确认与该钱包相关联的特定交易已添加到一个区块中,并且该区块是带有区块链的区块链的一部分。确保安全的大部分工作。 SPV钱包假设但不验证大多数诚实矿工只会贡献工作来扩展遵循比特币共识规则的交易所构建的区块链.

在本技术讨论中,我们研究了轻型客户端带宽要求以及设计用于在有限的Internet连接下运行的轻型客户端所存在的微妙的安全性和隐私权衡.

轻量级客户的权衡

用户最安全的解决方案是使用自己的比特币完整节点运行并确认付款。但是,在人们依赖相对昂贵或不可靠的计量互联网连接的国家(最需要比特币的审查抵制)与那些人们不太可能拥有技术或财务资源来运行比特币完整节点的国家之间存在某种关联。在世界许多地方,由于带宽成本,比特币用户别无选择,只能使用在线托管比特币钱包。使用低带宽,仅限移动的轻客户端可以充当最终运行专用的完整节点的中间步骤.

托管比特币交易所的一个优势是,它们对用户隐私和资金的风险与其他可信赖的支付提供商(如PayPal和Western Union)的风险非常相似。轻量级客户钱包需要对使用匿名公共节点和复杂的对等协议产生的安全性和隐私权衡进行更细微的了解。.

还有一种观点认为,轻客通常会对比特币网络有害。随着越来越多的人运行轻量客户端,它增加了为它们服务的公共完整节点的带宽和计算需求。这可能导致公共完整节点(尤其是为轻型客户端提供信息的节点)数量减少。如果所有轻量客户端都依赖一小部分公共完整节点,那么如果这些完整节点合谋反对它们,则它们的安全性和隐私可能会受到损害。.

我们认为,如果轻客也直接与其他轻客交换数据,则对比特币网络的影响可以降至最低。轻型客户端的激增最终将导致更多的用户运行全节点,特别是在连接成本更高且个人计算机未被广泛使用的发展中国家.

网络层

轻客户端必须支持许多与比特币完整节点相同的网络协议层。两者都从直接与一组初始的比特币节点通信开始。他们从这些初始节点交换比特币网络中其他节点的地址.

轻客户端和完整节点都必须向其同行学习有关工作量证明的安全性,并将替代的区块链技巧连接回创世纪块。完整节点与轻客户端的主要区别在于它们共享有关交易的信息的方式。完整节点交换有关区块交易的信息,并独立验证新区块是否遵循比特币的共识规则。轻客户端仅确认特定交易存在于由完整节点确认的区块中.

连接性

与通常用于完整节点的固定成本有线互联网连接不同,移动电话使用计量互联网连接,因为在互联网上传输大量数据可能会非常昂贵。手机的电池也用完了,电池在传输数据时会更快地用完。他们也无法直接利用需要固定卫星天线或大型无线电天线的广播数据源.

与具有固定电源和数据连接的节点相比,移动设备确实具有一些弹性和隐私优势。他们可以在离网或断电的情况下运行,在某些地区可以匿名购买预付费的互联网订阅。当移动设备四处移动时,它们可以通过ad-hoc网络连接到不同的本地对等设备,从而获得抵御隐私和审查的能力.

专为手机设计的轻型客户端应允许用户配置要使用多少移动带宽,并知道何时重新分配数据或即将终止数据分配。当可用于带宽密集型任务(例如下载块以保持计量带宽)可用时,应选择使用其他未计量的本地连接(例如WiFi热点).

同行

全节点和轻客户端都依赖强大的功能 对等发现 确保它们连接到一组诚实的对等节点的过程。比特币节点最初会连接到预设的种子节点,但必须始终发现新的对等节点,以保持与“诚实的”比特币网络的连接。比特币核心全节点软件已经开发了强大的启发式方法来缓解 蚀攻击 与恶意对等节点断开连接,并与行为异常的节点断开连接。由于对等方地址每个只有30个字节,因此轻客户端可以使用与完整节点相同的启发式方法来频繁地向多个对等方查询新地址.

防止与诚实的比特币网络隔离的最佳方法是维持庞大,持久和多样的对等连接。为了帮助延长电池寿命,轻型客户端软件应注意不要太频繁地唤醒手机,以免闲聊对方地址或执行其他任务。轻客户端应在相同的固定时间间隔与对等方进行同步,以最大程度地减少电池使用量和对等方断开连接.

块头

完整节点和轻客户端安全性都取决于发现区块链的链梢的能力,而链梢的工作最多。此过程开始于向所有对等方查询最新消息 块头 他们知道区块链。节点可能需要在不同点查询其对等点,以在它们首次不同意哪个链叉正确时找到该点。轻客户端还应验证其收到的每个块标题的工作量证明,时间戳,Merkle根和先前的标题块哈希,并禁止提供无效块标题的同级。完整节点还可以在下载块之前验证标头,以防止拒绝服务(DoS)攻击.

确定规范的链提示后,轻客户端可以将区块头同步回去,以确保链提示连接到比特币创世区块-大约50 MB的数据。某些使用慢速连接或计量连接的轻客户端最初可能仅将块标头加载回检查点,而不是创世块。完整节点应始终同步所有块标头。在检查了整个标头链之前,应警告用户接受付款的风险。轻客户端和完整节点必须继续从每个对等方下载80字节的块头,以与增长的区块链保持同步,并向多个对等点查询块头,以确保它们始终遵循当前最佳的块头链。.

现代轻型客户钱包可以使用以下功能检测他们跟踪的交易何时出现在区块中 BIP-157 块过滤器。像块标题一样,轻客户端也查询其对等方,以确定过滤器标题链的当前提示。 BIP-157轻型客户端每个块下载32个字节的块过滤器标头,以与块过滤器标头链保持同步。在对等方之间关于正确的过滤器标头链存在分歧的情况下,轻客户端可以下载相应的块,以确定哪个对等方遵循正确的链。轻客户端应忽略包含无效标头的块过滤器链和提供无效块或过滤器头的黑名单同级物.

阻止过滤器比不推荐使用的过滤器提供更大的隐私 BIP-37 布隆过滤器系统,因为轻客户端不会泄漏到他们感兴趣的事务的整个节点。块过滤器的扩展性也比布隆过滤器好。因为每个块仅生成一个块过滤器,所以一个完整的节点只需要恒定的计算量即可为多个轻客户端对等方服务。轻客户端本身也可以帮助中继块过滤器和八卦块过滤头,以增加每个完整节点支持的轻客户端对等体的数量。.

轻客户端至少需要对可能包含相关交易的区块进行区块过滤。过滤器大约每个块15 KB,因此对于需要六个块(大约一小时)进行确认的交易,轻型客户端将需要下载90 KB的过滤器数据以指示该事务出现在哪个块中。第二层协议的情况,例如 闪电网络, 除非另有说明,否则监视交易的期限是无期限的 望塔 正在被使用。 t望塔对于移动设备上的轻客户端特别有用,因为它们很可能长时间处于离线状态,并且带宽有限.

交易次数

仅块的完整节点

为了减少带宽消耗,可以将完整的节点配置为使用 仅限区块模式 下载完整的区块,而不是有关交易的八卦。这是一种安全且私密的确认交易的方式,并且不需要块过滤器,因为每个块都已下载。作为客户端运行的移动客户端 修剪 仅块的完整节点每周最多需要2 GB的下载带宽。具有快速,廉价或不计量互联网的移动客户端可以在此模式下运行,以获得运行完整节点的安全性和隐私优势,但是当对带宽进行计量或电池电量受限时,仍支持轻客户端模式。在不经常使用个人计算机的国家中,移动照明客户端机会性地作为仅块的完整节点进行操作的灵活性可以帮助增加完整节点的数量。仅移动块的完整节点还可以为轻型客户端提供块过滤器,而不会显着增加其自身的带宽使用量.

块滤光灯客户端

新的BIP-157块过滤器系统下载 剥了 仅当在已下载的块过滤器链中检测到跟踪的事务时,才可将块大小限制为1 MB。与监视仅具有块的比特币完整节点的交易所需的每周2 GB带宽相比,这是一个很大的改进。下载的块可用于验证块过滤器,使块过滤器链无效以及与共享无效过滤器的对等方断开连接。这为轻客户端创建了一种防止传播无效的过滤器链的方法,并使轻客户端可以彼此共享过滤器信息并减少整个节点上的负载。轻客户端可以查询整个完整节点集以获取最近的块,而不仅仅是服务于块过滤器的完整节点。这样可以防止泄漏有关轻客户端感兴趣的交易的信息,并在更大的完整节点集中分散负载.

使用BIP-157区块过滤器的轻型客户不会独立确认区块中的所有交易均符合比特币的共识规则,而是假设以最高散列能力确认的链条遵循正确的规则。可以诱使这些节点跟随大多数矿工,他们合谋采用不同的支出规则。在诸如SegWit2x争议性硬分叉的情况下,轻客户端用户可能被误导了接受来自比特币区块链分叉的无效付款。低带宽轻客户端用户还比矿工领导的硬分叉更容易遭受各种日食攻击,这些日食攻击更容易秘密进行。第二层协议(如闪电网络)的用户也可能容易受到低成本的影响 时间膨胀攻击.

Electrum Light客户端

Electrum客户端-服务器协议是轻型设备的另一种流行解决方案。与其从整个节点下载块过滤器和块来确认交易,不如 电子 轻量级客户钱包要求小 默克尔证明 直接从一台或多台运行Electrum协议的服务器进行的特定交易(由唯一交易ID引用)。由于Electrum服务器可以记录每个轻客户端所请求的确切交易,因此,重要的是,客户端应使用 洋葱服务 或类似服务。当前的许多公共Electrum服务器有可能由私有链监视公司运营,目的是收集数据以对比特币交易进行匿名处理。依赖Electrum服务器模型的另一个风险是服务器运营商可能会恶意扣留(检查员)为特定交易提供证据,而在BIP-157模型下很难做到这一点.

虽然公共Electrum服务器的数量少于比特币完整节点,但目前很少有完整节点为轻型客户端提供块过滤器。由于现在已经支持BIP-157块过滤器,因此这种情况有望改变 合并 进入比特币核心软件.

与基于块过滤器的光客户端相比,基于Electrum的光客户端需要的带宽甚至更少,因为它不需要下载块过滤器标头,块过滤器或剥离的完整块来确认交易。相反,Electrum客户仅需要请求大约400 B的Merkle证明即可确认每笔交易.

概括

下表总结了仅块的完整节点,基于块过滤器的光客户端和基于Electrum的光客户端将使用多少计量数据。正如您在摘要中所看到的,这两种类型的轻客户端每周使用的带宽都大大少于,甚至是最小的仅块完整节点.

资料大小 被问到的同伴 返回值 仅块的完整节点 块滤光灯客户端 Electrum Light客户端
对等地址 30 B 8 1000 234 KB 234 KB 234 KB
当前链提示的块标题 80 B 8 1个 640乙 640乙 640乙
过滤链头的过滤头 32 B 8 1个 256乙
块头回到创世纪块 80 B 1个 650,000 50兆字节 50兆字节 50兆字节
新块标题(1周) 80 B 8 1008 630 KB 630 KB 630 KB
新块过滤器(1周) 15 KB 1个 1008 15兆字节
块回到创世纪块 1至1.5 MB 1个 650,000 200 GB
新块(1周) 约2 MB 1个 1008 2 GB
每笔交易的块数 1兆字节 1个 1个 1兆字节
每笔交易的Merkle证明 〜400乙 1个 1个 400 B
最大初始同步 200 GB 50兆字节 50兆字节
每周最大 2 GB 15兆字节 630 KB
每笔交易上限 1兆字节 400 B

闪电

移动Lightning客户端可以如上所述使用light客户端来创建,关闭和监视Lightning通道。移动Lightning客户端还可以减少用于传播网络路由的带宽,而使用本地路由来减少带宽。 会合 或者 蹦床 闪电节点。一旦将闪电通道锚定在比特币区块链上,对该通道的更新就不需要互联网访问,而只需与通道合作伙伴直接建立点对点数据连接即可。可以配置马裤监视通道以匹配轻客户端访问互联网的频率。如果更新Watch望台所需的带宽比单个链上交易更昂贵,则还可以定期重新锚定/拼接渠道的资金交易。通过LAN或无线电连接与对等方协商信道更新方向,也可以提高弹性,减少计量的互联网使用率并提高隐私性.

第2层协议(如Lightning)的用户使用光客户端监视和响应通道破坏的行为可能更容易受到低成本攻击的侵害,例如 时间膨胀 或者 洪水泛滥. 轻量级客户直到出现在区块中之前,才能发现违规交易,因为它们不会闲谈未决交易。如果轻客户端依靠一小部分对等点进行块过滤器,那么它们也可能更容易被忽略。.

例子

对于这些示例,我们描述了如何使用轻量级客户端在链上以及使用闪电来发送和接收比特币付款:

链上

为了确认已在区块链上接收到交易,轻型客户端必须完成以下步骤:

  1. 将块标题同步到当前链提示
  2. 将块过滤器标头同步到当前链提示
  3. 将事务提交到完整节点以包含在块中
  4. 从事务提交到完整节点的点开始同步块过滤器
  5. 区块过滤器匹配交易后,下载相应的剥离区块

在此示例中,我们假设块头和块过滤器头已被同步回到创世块。最初需要50 MB的数据,此后每周需要约1 MB的数据,才能与多个对等方当前的链提示保持同步。离线一段时间后,将块标题(1)和块过滤器标题(2)重新同步到当前区块链提示所需的数据量取决于此信息最近的更新时间.

下载块过滤器(4)来监视特定交易取决于交易确认的速度。在支付低廉的交易费用与使用更多带宽下载块过滤器之间需要权衡取舍。一个小时的块过滤器价值仅需下载90 KB的过滤器数据。轻型客户端的最大固定数据成本是下载与相应于其感兴趣的事务的块过滤器相对应的剥离后的块。每个事务最多需要1 MB的块数据。如果同一块中出现多个感兴趣的交易,则只需下载一个块.

即使他们拥有昂贵或缓慢的移动数据用户,如果他们能够负担每笔交易1 MB的数据和每周1 MB的数据以保持与区块链的同步,那么他们也应该能够使用此系统通过手机确认比特币交易.

“关于您的估计;如果能够实施,那将是相关的,并且其经济性可以促使更多的比特币用户自保,”开发人员说。 伊曼纽尔·恩当古拉(Emmanuel Ndangurura) 来自肯尼亚内罗毕。 Emmanuel指出,可以在内罗毕购买仅需$ 0.50的175 MB数据计划,该数据​​计划不会过期,或者每周打包500 MB。使用上面的数据估计,只有175 MB的用户可以下载50 MB的应用程序,同步块头并仍然具有使用块过滤器以私人和自保方式发送和接收付款的数据.

闪电

Lightning节点必须执行上述概述的链上步骤才能打开通道,关闭通道并响应通道违规。他们还必须访问以下内容的Internet连接:

  1. 使用以下技术之一监视不正确的频道关闭:
    • a)订阅并提交约会 望塔 对于每个频道更新
    • b)下载整个时段的阻止过滤器闪电通道处于打开状态
    • 接收网络拓扑八卦以进行源路由
    • 直接与渠道合作伙伴协商Lightning协议

    与链上交易不同,不需要为每笔闪电付款访问比特币网络。取而代之的是,轻量客户端必须在可配置的时间范围内(例如一周)访问比特币对等端,以检查其通道交易对手是否未尝试使用较旧的通道状态来欺诈性地强制关闭通道。理想情况下,当未测量的连接可用时,可以执行通道状态监视。在只有昂贵的计量连接可用的情况下,使用t望塔(6a)监视信道状态更为合适。但是,如果其守望台对通道的反应不做出反应,则那些未独立监控区块链(6b)的客户可能会遭受资金损失的风险。.

    望塔(6a)要求通过对等方支付或路由给对等点,将每笔Lightning费用中的500 B数量级的内容通过互联网网关发送到sent望塔。这远比直接监视臀位交易(6b)少,后者需要每周下载大约15 MB的块过滤器数据。通道也可以合作关闭或 重新锚定/拼接 如果从带宽或t望台订购成本的角度来看,这将较便宜,那么在其监视窗口到期之前就可以在链上运行.

    轻型客户端应该使用私有的Lightning节点,而不是为带宽昂贵的其他节点路由支付,而不是闲聊网络拓扑(7)。相反,他们应该使用蹦床路由或类似的增量路由技术。这将减少带宽使用,但会牺牲路由的隐私性.

    实际上,协商信道更新(8)每次由节点进行的付款或转发给对等方的付款仅需要2 KB。即使没有Internet网关,也可以在同一本地网络上的节点之间进行频道更新.

    移动闪电节点为其创建或关闭链上的每个通道都需要1 MB的带宽。他们将需要2 KB来协商每个通道更新,另外需要500 B才能在Watch望塔注册每个更新,或者每周需要15 MB以使用块过滤器直接监视区块链。.

    结论

    移动照明客户端可以大大提高当前依赖于托管比特币钱包的比特币用户的安全性。新的基于块过滤器的轻客户端将允许每周只有2 MB带宽的用户确认链上交易.

    通过使用Watch望塔,移动闪电节点可以执行许多低价交易,而不需要比当前的链上交易更多的计量带宽。或Lightning节点可以使用块过滤器以每周少于20 MB的速度独立监视区块链.

    移动照明客户端还可以机会利用未计量的Internet访问,在世界上“仅移动”区域中作为仅修剪块的完整节点进行操作。我们认为,专注于低带宽比特币轻型客户端将有助于将自我监护的优势带给全世界更多人,并最终导致更大的比特币完整节点的地理多样性.

    特别感谢 卡里姆·赫尔米(Karim Helmy)威尔·克拉克 进行有益的讨论并阅读本文的草稿;也感谢 亚历杭德罗·马查多(Alejandro Machado) 鼓励他继续这个项目.