
关于资金:CypherpunkGuide 不投放监控型广告——没有广告网络,没有跟踪像素,也没有软文。运营依靠透明的资金来源:现阶段是读者捐赠,将来会加入订阅以及符合编辑方针的联盟推广。我们面向读者,而非广告主。
收 Bitcoin 这件事的正中央,藏着一个安静的小矛盾。每一份指南都叮嘱你:地址绝不要重复用——地址复用,是链分析师能拿到的最干净的信号之一。可一旦你想收钱——个人简介里挂个打赏地址、README 里留一行捐赠地址、一张开出去就忘掉的发票——你就需要一个固定不动的地址。地址要轮换,身份要固定,这两头,是往相反方向拽的。
Silent Payments(BIP-352)就是化解它的那套协议:你只公布一个地址,而每一个付款给你的人,都会由它推导出一个各不相同的链上地址——于是盯着链看的观察者,只看到一堆互不相干、没有共同去向的输出。这是这些年来收款隐私上最要紧的进展之一。它同样被广泛误解,在各家钱包里只落地了一半,还带着一笔实打实的代价,而那些热情洋溢的介绍文章,往往把这笔代价一笔带过。
我用化名写作,把手里的每一枚币都当成早已被人盯上,所以我不想仅凭信任就接受这套协议。动笔写这份指南之前,我先用 Python 把 BIP-352 从零实现了一遍——底层通过 coincurve 库调用 libsecp256k1——再拿规范里的官方测试向量去跑:发送的 28个子用例全部通过,接收的 29个子用例也全部通过,逐比特一致,全程不到 200毫秒(随文日志)。下面就是它能用的那个版本——它保护什么、2026年哪些钱包真正实现了它,以及在你依赖它之前该弄懂的那笔扫描开销。
| 那句宣传 | 真实情况 | 藏着的代价 |
|---|---|---|
| “一个地址,隐私拉满” | 一个地址,但只护得住收款这一层 | 金额,还有你的付款人,都原封没动 |
| “它取代了混币” | 它跟 CoinJoin 解决的不是一个问题 | 它不混币;它切断的是复用留下的那条线 |
| “公布出去,就不用再操心” | 公布是免费的;收款可不是 | 总得有人替你把整条链扫一遍,才找得出你的币 |
| “现在每个钱包都支持了” | 发送已经普遍;收款要新得多 | 得逐个钱包、逐个版本,把发送和收款分开核 |
Silent Payment 到底是什么(以及它护不住什么)#
**一个 Silent Payment,就是一个由 BIP-352 定义的可复用 Bitcoin 地址:你只公布一次这串字符,付款人就能凭它,为你推导出一个独一无二、且无法彼此关联的链上地址。它保护的是收款这条连接——同一个身份收到的、一笔笔本来各自独立的款项之间的关联——仅此而已。**它不隐藏金额,不保护你的付款人,对那些把币和你名字绑在一起的链下记录,也无能为力。
这个地址,是把两个公钥——一个 scan key、一个 spend key——编码在一起。主网上它以 sp1 开头,测试网上则以 tsp1 开头(其中可读前缀(HRP)是 sp / tsp,那个 1 只是 bech32m 的分隔符)。当有人付款给你,他的钱包会把自己的输入密钥和你的 scan key 凑到一起,算出一个共享密钥,再由这个密钥推导出一个全新的 Taproot 输出——只有你才认得出、也只有你才花得动。任何两个付款人,都不会产生相同的输出;而且不存在一笔昭告这条关联的"通知交易"——这正是它比更早的 BIP-47 支付码方案强的关键一点。
它护不住的地方,值得直说,因为"隐私"这个词,在这个圈子里常常担着它其实配不上的分量。Silent Payments 是一件收款工具。你收到的金额,照旧明明白白写在链上。付款人自己的隐私,是他的事,不是你的事。而针对一个具名化名,最狠的那记攻击,往往根本不在链上——而在你写下的文字、在元数据、在那个币与护照相遇的 KYC 交易所。这正是链上追踪到底怎么运作讲的那套相加模型,而在链下那一头,则是AI 去匿名化讲的事。Silent Payments 补上的,是一个具体而宝贵的缺口。它是必要的,却不是充分的。
2026年,哪些钱包支持 Silent Payments#
**支持是真的,但很不均衡,而最有用的一个习惯,就是把发送和收款分开来看——它们上线的时间不同、落在不同的钱包里,有时相隔好几年。**给一个 Silent Payment 地址发款,如今已经稀松平常;而能收款到这样一个地址——这要求钱包去扫描整条链——则要新、也要罕见得多。下面这张表,反映的是截至 2026-07-09 的一手资料;在你动真金白银之前,请对照各个项目自己的发布说明再核一遍,因为这份名单一直在变。
| 钱包 | 发送 | 收款 | 说明(截至 2026-07-09) |
|---|---|---|---|
| Sparrow | ✅ v2.3.0(2025年10月) | ✅ v2.5.0(2026年5月) | 桌面端最完整的实现;经 BIP-375 的硬件钱包签名于 v2.4.0(2026年2月)加入。最新为 v2.5.2 |
| Cake Wallet | ✅ | ✅ | 首个功能完整的移动端钱包(v4.18.0,2024年5月下旬)。采用设备本地扫描——更费电,同步也更慢 |
| Bitcoin Core | ⏳ 尚未合并 | ⏳ 尚未合并 | libsecp256k1 密码学模块已合并(PR #1765);钱包层面的支持仍未合入(PR #35301 / #35302) |
这张表省去了两句提醒。其一,收款才是真正要紧、也最滞后的那一栏——一个钱包能让你付款到朋友的 sp1 地址,往往要比它能持有你自己的这样一个地址,早了好一阵子。其二,一个钱包怎么扫描,是一道隐私上的取舍,不只是性能问题——这正是接下来两节要讲的。至于你打算这样收下的那些币,最初该怎么弄到手、又不在交易所那头种下身份关联,可以看怎样不做 KYC 买 Bitcoin。
发送:简单的那一半#
**给一个 Silent Payment 地址发款,是这套协议里直截了当的那一半,因为发送方所有的活儿都在本地干完,从头到尾不用扫描任何东西。**在一个支持它的钱包里——桌面端的标杆体验是 Sparrow——你把收款人的 sp1… 地址粘进发送框,跟填任何别的地址一模一样,剩下的推导,钱包在你看不见的地方悄悄完成。
往里看:你的钱包会取出它正要花掉的那些输入的私钥,和收款人的 scan key 凑在一起,算出一个共享密钥,再用这个密钥,为这一笔具体的付款推导出一个一次性的 Taproot 输出地址。因为推导时把你的输入也揉了进去,所以同一个收款地址,每换一个人——或每换一组你自己的币——去付它,落到链上就是一个不一样的输出。发送方除了那个已公布的地址,从收款人那儿什么都不需要:不用来回一趟,不用通知,不用任何交互。这正是发送这一侧的支持最先到位、如今又最常见的原因。而这种不对称,就是下一节的全部故事:发送能躲开的那笔开销,恰恰是收款躲不掉的那一笔。
收款:没人提醒你的那笔扫描开销#
**要收 Silent Payments,你的钱包必须把区块链上一个个候选输出翻出来,逐一拿你的密钥去试,才能找出那些冲着你来的付款——链上并没有一个地址供你直接"一查了事"。**这笔扫描开销,是 BIP-352 最核心、也最少被人提起的那处取舍,而你的钱包怎么消化它,同时决定了你的便利和你的隐私。公布地址是免费的。找出有谁往它打了款,就不是了。
如果你自己跑一个全节点,扫描就是在区块数据上做一次本地计算——吃资源,但私密,因为没有任何东西离开你的机器。你想用一部手机、或一台没有节点的笔记本来收款时,麻烦就来了。这时就轮到索引服务器登场了。在 Sparrow 里,这个服务器是 Frigate(一个 Silent Payments 的 Electrum 服务器,最新版 v1.5.3),并且有一个公共实例跑在 frigate.2140.dev。你不能用浏览器去"访问"它——它讲的是 Electrum 协议,不是 HTTP。在 Sparrow 里,你在 Preferences → Server → Public Server 里选它,然后测试连接。
下面这一段,是那些欢天喜地的教程会跳过的,而它是一处隐私要害,不是脚注。要让一个服务器替你扫描,你的钱包得把你的 scan 私钥和你的 spend 公钥交给它。哪怕这个服务器只把它们放在内存里——Frigate 就是这么设计的——一个心怀恶意、或被人攻陷的索引服务器,也能拿它们,把 Silent Payments 本该瞒住观察者的那幅图景,原原本本地重建出来:你收到过的每一笔款的完整清单。bennet.org 上那份实操指南把话挑明了——一个坏掉的服务器"能把你的收款历史,重建成 Silent Payments 本该阻止的那副模样"。所以诚实的说法是一道光谱:你自己的节点,完全私密,但更费工夫;一个公共索引服务器,很便利,但要你把收款历史托付给它的运营者去信任。要有意识地去选,别让"我用了 Silent Payments"变成一种虚假的安全感——尤其当替你扫描的,是一台陌生人的服务器。
我亲手复现了一遍 BIP-352#
**要信一套隐私协议,最快的办法,就是把它跑起来,拿规范自己给出的数字去对——我干的正是这个,而不是把那些说法当成信条照单全收。**我从零写的这份实现,把官方测试向量的全部 57个子用例都精确复现了出来——发送 28/28,接收 29/29——完整的日志连同脚本,都随这篇文章一起附上(bip352-verification.txt),你可以自己动手复现一遍。不过,比通过数目更有意思的,是盯着一笔付款,一步一步看它怎么推导出来。
拿一个已公布的地址,把一个发送方要算的东西追一遍。下面这些值都是真的,取自规范自己的测试向量:
| 步骤 | 它是什么 | 值(已缩略) |
|---|---|---|
a | 发送方各输入私钥之和 | 7ed265a6…56345f86 |
A | 对应各公钥之和 | 032562c1…dedc4bee |
input_hash | 绑定所花那几枚具体币的哈希 | 5bfe5321…b7ad0668 |
ecdh | 双方各自独立推导出的共享密钥(input_hash · a · B_scan) | 028158af…3e14d80d |
t₀ | 微调值 tweak,hash(ecdh‖0) | f438b401…c2e7eef6 |
| output | B_spend + t₀·G(即那个链上地址) | 3e9fce73…de46e3c1 |
接下来,是让这一整套都值回票价的那个性质。我自己另外造了第二个、彼此独立的发送方——不同的密钥材料,一枚假想中的不同的币——去付同一个已公布的地址(这里没有广播任何交易;和上面那次追踪一样,纯粹是推导)。它的输出是 3f1dd702…879b98ad。两笔付款,一个地址,落到链上后,这两个输出却毫无瓜葛:没有共同地址,也没有任何看得见的关联。唯有握着 scan key 的那个人,才能跑一遍反向计算,认出这两个都是自己的。这就是收款隐私的那份保证——你可以在这段追踪里眼看着它成立,而不必把它当成一句断言去信。它正是Bitcoin 链上隐私一文里拆解的那个复用难题、在链上的对照面——复用白白递给分析师的那种聚类,恰恰就是这段推导死死扣住、不肯交出的东西。
几处坑:多签、标签,以及 K_max 上限#
**除了那笔扫描开销,还有三处实现细节,决定了 Silent Payments 合不合你的用法——而每一处,都是那种你该在依赖它之前、而不是之后才弄明白的东西。**这些都是那些"它如何运作"式的科普文章,很少会拐进去的犄角旮旯。
- **多签和协作型交易,很别扭。**因为发送方是从正被花掉的那些输入的私钥里推导出这笔付款的,所以从一个多签(multisig:一笔资金需要多把私钥共同签名才动得了)钱包、或一个 CoinJoin 里发款——那里签名密钥被拆分在几方手上、而这几方本就不该把私钥简单地凑到一起——就没法和 BIP-352 干净地拼合。Silent Payments 解决的是复用这条连接,不是混币这个问题;你要是想要金额和交易图上的隐私,那仍旧是协作型交易的地盘,链上隐私一文里讲过。把两者看作互补,而不是可以互相替换。
- **标签是一种带着不对称的便利。**BIP-352 允许收款方从一个地址推导出带标签的若干变体——这对分清哪些输出来自哪个来源,很有用。标签信息只对你——也就是持有者——有意义,它不会暴露在链上。但它是一份由你自己保管的账目,也就意味着,它是一份一旦钱包或备份被攻陷、就可能泄出去的账目。便利,但要老老实实把它记在账上。
- **有一个收款方上限,
K_max = 2323。**规范(v1.1.0,2026年3月;当前 v1.1.1,2026年4月)给单笔交易里一个组能推导出多少个输出,设了个上限,作为一种防御——防的是那种被人精心构造、专门用来把收款方扫描工作量撑爆的交易。作为个人你永远碰不到这个上限——但正因如此,一个天真的"往一个地址付 3,000个输出"的做法,会按设计失败;而它也告诉你,协议的作者们,是把这种针对扫描开销的攻击当回事的。
关于轻客户端(light client),还有一记与之相关的现实核查——因为人们恰恰指望在这里,扫描难题早已被解决:截至 2026年年中,还没有一个开箱即用、信任最小化的轻客户端工具,能让你装上就用。blindbitd 这个钱包守护进程已于 2025年8月归档;只有它的配套索引器 blindbit-oracle 仍在活跃维护,而轻客户端规范本身,还是一份进行中的草案。像 bdk-sp 这样的实验性库倒是有,但它们自己的作者,就劝你别在主网上用。要是哪份指南暗示手机端的 Silent Payments 收款已经是一件解决了的、没有取舍的体验,那它就跑在软件前头了。
结论:现在该用 Silent Payments 吗?#
**Silent Payments 已经能胜任一件具体而宝贵的活儿——一个可公开、可复用、又不泄露复用关联的收款地址——但它还没准备好,去当你唯一的隐私工具,或是一个毫无摩擦的移动端默认项。让工具去配任务,而如果你的收款历史很敏感,就自己跑一个节点。**这里诚实的目标,是更好的收款隐私,不是匿名。
| 你的处境 | 结论 | 怎么做 |
|---|---|---|
| 一个公开的打赏/捐赠地址(创作者、项目、化名) | 很合适 | 公布一个 sp1… 地址;有条件的话,用你自己的节点扫描 |
| 日常收款,而且你自己跑节点 | 合适 | Sparrow + 你的节点;扫描完全私密 |
| 日常收款,没有节点,手机优先 | 部分合适 | 靠一个公共索引服务器能用——要么接受那份信任上的取舍,要么等轻客户端 |
| 你想要金额、或付款方交易图上的隐私 | 用错了工具 | Silent Payments 干不了这个;去看协作型交易和 Lightning |
| 从多签 / CoinJoin 发款 | 仔细核对 | 拼合起来很别扭;先确认你钱包的支持情况 |
无论你是哪种情况,次序都和一贯的一样:先点出对手是谁,先修好那些既便宜、又无法回头的连接——在合法之处不经 KYC 地弄到币、管好 coin hygiene(用币的基本习惯:别复用地址、别把不同来源的币随手混作一处)、绝不复用一个普通地址——然后,在 Silent Payments 恰好补上"一个你想让它保持不可关联的、已公布地址"这道具体缺口的地方,把它加进来。它是一次货真价实的进步。它同时也是一件带着扫描账单的收款工具,而搞清楚这张账单由谁来付——是你,还是一台你信任的服务器——就是隐私、与隐私的错觉之间的那道分界。
常见问题#
什么是 silent payment 地址?#
silent payment 地址是一个由 BIP-352 定义、可以公布一次的可复用 Bitcoin 地址——在主网上它以 sp1 开头。和普通地址不同,每一个付款人都会从它推导出一个各不相同的一次性链上地址,所以打给你的这些款项,彼此之间没有共同去向。它编码的是两个公钥(一个 scan key、一个 spend key),而不是单个脚本。
Silent Payments 会隐藏我收到的金额吗?#
不会。Silent Payments 保护的是收款这条连接——同一个身份收到的、一笔笔各自独立的款项之间的关联——仅此而已。每一笔付款的金额,依旧记在公开的区块链上,你的付款人自己的隐私不受影响,而链下记录(比如一家 KYC 交易所里的记录)也原封没动。想要金额上的隐私,Lightning 或协作型交易才是对口的工具。
2026年哪些钱包支持 Silent Payments?#
截至 2026-07-09,Sparrow 发送(自 v2.3.0,2025年10月起)和收款(自 v2.5.0,2026年5月起)都支持;Cake Wallet 两样都支持,采用设备本地扫描(自 v4.18.0,2024年5月下旬起)。Bitcoin Core 钱包层面的支持尚未合并,尽管底层的密码学模块已经合并。请务必把发送和收款的支持分开来核,并对照当前的发布说明再确认。
为什么收一笔 Silent Payment 会慢?#
因为链上没有一个地址供你直接查。要找出打给你的款项,你的钱包必须扫描一个个区块里的候选输出,再逐一拿你的密钥去试。在你自己的节点上,这是一次私密的本地计算;没有节点,你就得靠一个索引服务器——它更快,却引入了一份信任上的取舍。那种既省掉开销、又免去信任的轻客户端工具,目前还在打磨当中。
用公共服务器的话,Silent Payments 还私密吗?#
只私密一部分。为了替你扫描,一个公共索引服务器会拿到你的 scan 私钥和 spend 公钥。哪怕只放在内存里,这些密钥也足以让一个心怀恶意、或被攻陷的服务器,把你收到过的所有款项的完整历史重建出来——而这,恰恰是 Silent Payments 本该防着一个链上观察者去做的事。自己跑一个节点就能避开这一点;一个公共服务器,是拿这份隐私去换便利。
| # | 来源 | URL | 存档 |
|---|---|---|---|
| 1 | BIP-352——Silent Payments(规范,v1.1.1) | https://github.com/bitcoin/bips/blob/master/bip-0352.mediawiki | https://web.archive.org/web/*/https://github.com/bitcoin/bips/blob/master/bip-0352.mediawiki |
| 2 | Bitcoin Optech——Silent Payments 专题 | https://bitcoinops.org/en/topics/silent-payments/ | https://web.archive.org/web/*/https://bitcoinops.org/en/topics/silent-payments/ |
| 3 | Sparrow Wallet——发布记录 | https://github.com/sparrowwallet/sparrow/releases | https://web.archive.org/web/*/https://github.com/sparrowwallet/sparrow/releases |
| 4 | Frigate——Silent Payments 的 Electrum 服务器 | https://github.com/sparrowwallet/frigate | https://web.archive.org/web/*/https://github.com/sparrowwallet/frigate |
| 5 | bennet.org——Silent Payments 实操指南(服务器隐私取舍) | https://bennet.org/learn/silent-payments-bitcoin-privacy/ | https://web.archive.org/web/*/https://bennet.org/learn/silent-payments-bitcoin-privacy/ |
| 6 | libsecp256k1——Silent Payments 模块(PR #1765,已合并) | https://github.com/bitcoin-core/secp256k1/pull/1765 | https://web.archive.org/web/*/https://github.com/bitcoin-core/secp256k1/pull/1765 |
本站有三条线索,在这里交汇。Silent Payments 回答的,是《Bitcoin 链上隐私:追踪如何运作》里拆解的那个复用难题的收款那一半——聚类看得见什么、又看不见什么,去那篇里读。因为一个地址的私密程度,顶多等于你收进它的那些币的私密程度,所以请把本文和《怎样不做 KYC 买 Bitcoin》搭配着看——那篇在上游把身份这个锚点修好。而又因为链从来都不是威胁的全部,《AI 去匿名化》讲的,是与这一切并行奔跑的那种链下推断。


