BIP 158
一句话定义: 为轻客户端定义紧凑区块过滤器(Neutrino),取代布隆过滤器,隐私更好。
BIP-158 定义紧凑区块过滤器——一种保护隐私的方式,让 SPV 客户端判断哪些区块包含与自己相关的交易。与配套的网络协议规范 BIP-157(取回过滤器的通信协议)一起,它是旧式 BIP 37 布隆过滤器方案(配合默克尔块使用)的现代替代品。
布隆过滤器的隐私问题:轻客户端把过滤器(内含从自己的地址派生的模式)发给一个全节点,节点可以用概率方法反推出客户端关心哪些地址。到 2010 年代中期,这一点已被公认为有实质意义的隐私泄漏。
BIP-158 的修法:把方向倒过来。全节点为每个区块计算一个确定性过滤器,编码该区块触及了哪些脚本。轻客户端下载每个区块的过滤器,在本地对照自己的地址做匹配。全节点完全不知道客户端在找什么。
过滤器使用 Golomb-Rice 编码(一种紧凑表示)加一个 SipHash 变体做查询。典型过滤器大小约每区块 20 KB——过去一年加起来也就几 MB,而下载全部区块本身要几百 GB。
这套方案有时以「Neutrino 协议」之名为人所知,得名于 Lightning Labs 的原始实现——它被整合进了 LND 和 Neutrino 客户端。截至 2026 年,BIP-157/158 已是注重隐私的 SPV 式移动钱包的标准——Phoenix、Mutiny、Breez 等都在用。
相对跑全节点的取舍没变:省下存储与带宽,让出直接的共识执行权(关于哪条是最长有效链,你仍在信任对端)。对自我托管的移动钱包来说,BIP-158 是隐私与成本的强力折中。
相关词条: BIP(比特币改进提案) · BIP 37 · Bitcoin Core · 布隆过滤器(Bloom Filter) · 默克尔块(Merkle Block) · 默克尔包含证明 · 默克尔证明(Merkle Proof) · 默克尔根(Merkle Root) · Neutrino · SPV(简化支付验证)