术语表 /地址与密钥
地址重用
- 地址重用是什么?
- 地址重用是指在同一个比特币地址上接收多笔付款,这会公开建立一条永久的公共关联,将所有曾在该地址向您付款的人联系在一起。
比特币地址免费,且实际上数量不受限制,协议中没有任何机制阻止您重复使用同一个地址。中本聪的白皮书在第10节中反对这种做法,建议每笔交易使用新的密钥对,使各笔付款无法与同一所有者关联。地址重用会使一份假名账本变成可供检索的您的财务记录。
运作方式
区块链是一个公开的索引,地址就是该索引所依据的键。每个区块浏览器都提供地址搜索框,在一个页面上返回完整的历史记录:每笔转入、每笔转出、累计余额和时间戳。加载该页面无需任何费用,也无需任何人许可。
只使用一次的地址只产生一行记录。使用四十次则产生四十行记录,这些记录可以证明属于同一收款方,而且每位付款方都能看到其余三十九行。要获知这一点,无需破解任何东西。账本在设计上就是公开的,唯一可用的隐私,就是为一串字符关联上姓名所存在的难度。
地址重用还会改变外界对该地址背后密钥的了解程度。在 pay-to-public-key-hash 或 pay-to-witness-public-key-hash 输出中,地址对应的是一个哈希值,公钥在首次花费之前保持未公开。一旦花费一次,该公钥便永远留在链上。此后继续在同一地址收款,之后收到的每一笔币都将处于已暴露的公钥之后,而不是隐藏的公钥之后,这是一个更弱的处境,却没有任何好处。
钱包早在多年前就已解决这个问题,无需您费心考虑。一个 BIP-32账户仅在其收款分支上就包含2,147,483,648个地址,每笔付款之后,收款界面都会前进到下一个未使用的地址。Bitcoin Core 会将地址标记为已使用,并且不再重复提供。如今有意重用地址,通常意味着从您自己的历史记录中复制一个旧地址。
购买比特币时为何重要
每家已验证您身份的交易所,都会在合规记录中保存您的提币地址,而地址重用使这一条记录就能涵盖您持有的全部资产。
一年内向同一地址提币52次,您就等于把一条能揭开您全部储蓄状况的线索交给了交易所、其分析服务商,以及向其中任何一方发出传票的人。每次提币都使用新地址,这些相同的各方看到的则是52笔互不关联的输出,其关系只能推断,而无法直接从页面上读出。推断往往可行,但这需要下功夫,而且并不构成证明。
提币白名单使这一建议变得复杂,假装并非如此则是不诚实的。Kraken、Binance 以及大多数大型平台都允许您将提币限制在已保存的地址列表内,这能有效防范他人接管您的账户,同时也促使您重用地址。可行的折中办法是,将同一钱包中的多个地址加入白名单,而不是只加一个,并保留该白名单。账户被接管而被清空的钱包,比链分析导致的更多。
企业面临的是这一问题最直白的版本。一家商店打印一个二维码并贴在柜台上,就是在向每位顾客展示其每日收入和余额。支付处理商正是出于这个原因,从扩展公钥为每张发票派生一个新地址;而只公布一个静态地址的捐赠页面,则选择了公开而非隐私,有时自己并未意识到。
重复使用的捐赠地址会暴露什么
在公开资料中发布一个地址,并保留一年,由此得到的可读结果令人不安。
任何人都可以精确到聪地汇总收到的金额,统计单笔付款的数量,并读出每笔到账的具体分钟。直接从已验证身份的交易所账户付款的捐赠者,可能会被对应到自己的那笔捐款,进而看到并列的所有其他捐款。当您最终花费这些币时,该交易会向一批早已知道该地址属于您本人姓名的受众,披露您选择了哪些币、多少作为找零退回,以及流向何处。
BIP-352中规定的静默支付,是应对这一取舍的现代方案。您像以前一样发布一个静态字符串,每位付款方用它计算出各不相同的链上地址,因此公开标识符保持不变,而链上看不出各笔付款之间有任何共同之处。它无需共识变更,只需要双方钱包的支持,因此其可用性参差不齐,而非普遍支持。
地址重用 vs 合并输入
地址重用关联的是到达同一地址的付款;合并输入关联的则是到达多个地址的币。只要一笔交易同时花费两个或更多输入,就会发生合并,这会让所有观察者知道,同一方掌握了所有这些输入的密钥,链分析公司把这条规则称为共同输入所有权启发式。这两个问题会叠加。一次同时花费全部资金的归集,就会使精心维护的地址管理前功尽弃,而币控制是针对第二个问题的对策,并非针对第一个。
地址重用 vs 粉尘攻击
地址重用是自己造成的;粉尘攻击则是别人加在您身上的。攻击者向数千个地址发送几百聪,然后等待收款人将这些粉尘合并进一笔较大的交易,从而把被撒粉尘的地址与收款人其余的币关联起来。地址重用无需任何攻击者,而且泄露的信息要多得多,因为它暴露的是完整的付款历史,而不是单个关联。两者的应对方式相同:收款时使用新地址,花费时有意识地选择输入。