跳转到正文
buybitcoinsmart

术语表 /节点与软件

轻量级客户端

又称 Lightweight client、瘦客户端。

轻量级客户端是什么?
轻量级客户端是一种不保存区块链副本、而是向他人的服务器询问您的地址发生了什么的钱包。

手机上几乎所有的比特币应用都属于这一类。2026年8月,完整区块链已超过759 GB,任何手机都无法存储,因此钱包至多保存几兆字节的区块头,其余全部交给他人处理。便利是真实的,代价也是真实的:别人会知道您的地址,而您无法独立核实他们告诉您的内容。

运作方式

轻量级客户端分为三类,它们泄露的关于您的信息量各不相同。

最早的一类请全节点代为过滤。在 BIP37 下,钱包上传一个描述其关注内容的布隆过滤器,对等节点返回匹配的交易,以及将这些交易与区块关联起来的默克尔证明。它的隐私性从来没有宣传的那么好:2014年发表的学术研究表明,这些过滤器泄露了本应隐藏的地址。Bitcoin Core 在2019年11月发布的0.19.0版本中默认关闭了该功能,因为提供这些过滤器也很容易耗尽节点的磁盘。

最常见的一类则直接向服务器提问。使用 Electrum 协议的钱包会把所监视的每个地址的指纹发送给服务器,服务器回复历史记录和余额。这种方式即时生效,在较差的移动网络下也能工作,所以大量软件采用它。这也意味着,一个运营方掌握着您的币、您的地址以及您连接时所用 IP 地址的完整清单。

最新的一类把过滤的方向反了过来。在 BIP157 和 BIP158 下,节点为每个区块计算并发布一个紧凑过滤器,钱包下载这些过滤器,自行判断哪些区块看起来相关,然后再获取完整区块。没有人知道您在查找什么。Bitcoin Core 自2021年1月的0.21.0版本起就能提供这些过滤器,而 Neutrino 是大多数移动端闪电网络钱包使用的实现。

这类钱包大多保存由80字节区块头组成的链,借此得知某个区块存在并带有工作量证明。在约960,000个区块时,这条链大约重77 MB,对手机来说足够小,却无法用来检查这些区块内的交易是否合法。

在哪里会遇到它

打开任何一款不到一分钟就完成自行设置的钱包,您看到的就是轻量级客户端。

需要留意的风险不是盗窃。您的密钥保存在您的设备上,服务器无法花费任何资金,也无法凭空伪造一笔带有真实工作量证明的付款。服务器能做的是保持沉默:它可以隐瞒您收到的一笔付款,向您显示过时的余额;如果它不只是出了故障而是怀有恶意,还可以向您提供一条真正的节点会舍弃的链。要发现其中任何一种情况,都需要轻量级客户端所不具备的东西。

升级的路径很短。大多数桌面钱包和一些移动钱包都可以改为连接您自己的节点,而不是公共服务器,这样可以彻底消除隐私泄露,除了您已购买的硬件之外不需要任何额外费用。

轻量级客户端 vs 简化支付验证

简化支付验证是一种技术;轻量级客户端是一类软件,而属于后者的许多软件并未实现前者。真正的简化支付验证是依据工作量证明构建区块头链,并在相信任何信息之前,对照该链检查默克尔分支。Electrum 桌面钱包正是对其服务器给出的答复这样做的。大量借用 Electrum 服务器的应用并不如此,只是显示拿到的余额,即便宣传中写着"SPV wallet"。如果您想知道自己运行的是哪一种,请看它是否同步区块头。

请勿混淆

常见问题

轻量级客户端会盗走我的比特币吗?

服务器不能,因为您的私钥从不离开您的设备,服务器也无法签署任何内容。但它可以通过隐瞒来撒谎,例如隐藏一笔付款或显示过时的余额,并且会得知哪些地址属于您。

哪些轻量级钱包泄露的信息最少?

采用 BIP157 和 BIP158 下紧凑区块过滤器的钱包,因为钱包下载过滤器并在本地决定要获取什么,而不是把您的地址告知服务器。让任何钱包连接您自己的节点,都能彻底消除这种泄露。

接着阅读

相关术语

节点与软件中的更多术语

阅读本页英文版