“机密”并不等于我想的那样

“机密”并不等于我想的那样

由英语翻译

好吧,我直接说:我错了。至少,直到最近我都是错的。

如果你已经阅读这个博客有一段时间了,你大概还记得我曾经热情地写过关于 Liquid 网络上资产的文章。L-BTC、Liquid 上的 USDT——我不止一次夸赞过它们。我写道那里的交易是机密的,这能保护你免受无所不在的反洗钱(AML)分析师的窥探,也能防止集中化交易所(CEX)因为某些地址“曾经交往不良”而冻结你的聪(satoshis)。

我真心相信这是如此。

当你从大多数钱包发送一笔 Liquid 交易时,通常会得到两个区块浏览器链接:一个显示机密交易,另一个显示“去盲(unblinded)”的版本。第二个链接只有发送者可以看到,而第一个任何浏览区块浏览器的人都能查看。出于某种原因,我从未怀疑过“机密”究竟意味着什么。我也从未停下来检查这些链接到底能看到什么。

然而,最近我们在 rabbit.io 处理了另一笔互换,把一些加密货币兑换为 Liquid 区块链上的 USDT。用户向我们询问交易细节。我打开了区块浏览器——那一刻我震惊了。

地址之间的整个交互图都赤裸裸地摆在那里。谁向谁发送了什么。何时发生。多频繁。地址之间关系的结构完全暴露。而这些都没有被任何“机密性”所隐藏。

那时我意识到我严重地弄错了——更糟的是,我无意中误导了你。对此我感到抱歉。

Liquid 并不能保护你免受 与 AML 相关的滥用。如果某个 AML 监控服务决定把曾经向你发送过资金的任何地址标记为“受污染(tainted)”,它同样可以以在任何其他透明区块链上采用的相同理由将你的地址标记为受污染。

我把一种机密性和另一种机密性混淆了。这种混淆很重要。

Liquid 实际隐藏的是什么?

在 Liquid 的语境下,“机密交易”不是比喻——这是一个技术上准确的术语。但它指的是非常具体的内容:交易的金额和资产类型被隐藏。仅此而已。

不过,这里有一个帮助我理解的比喻。当我开始深入细节时,我开始把 Liquid 想象成一张覆盖着桌布的桌子。桌布遮住了盘子——你看不到盘子里是什么,也看不到有多少——但桌子本身,以及盘子在桌子上移动的轨迹,仍然对任何通过区块浏览器查看的人完全可见。

外界观察者无法判断你是转移了一百个比特币还是价值五十美分的 USDT。但他们可以清楚地看到地址 A 向地址 B 发送了某些东西,随后 B 又从地址 C 收到了一些东西。

问题就从这里开始。

对于与在 rabbit.io 的互换无关的个人比特币付款,我使用的是 闪电网络(Lightning Network)。原因很简单:收款人看不到这些币的历史。他们没有依据将其声明为“受污染”并以此为由扣留我的比特币而不予回报。

我天真地以为 Liquid 提供了类似的保护——也许在完全自托管方面要作出一些权衡,但无需管理支付通道的操作复杂性。

事实证明,并非如此。

Liquid 做得非常好的是解决完全不同的问题。Liquid 上交易的机密性保护用户免受在网络上运营的代币发行者的滥用。

在以太坊、Tron 和类似区块链上,流行代币背后的智能合约设计使得发行者可以看到每个钱包余额,并在必要时按下按钮冻结你的代币。

而在 Liquid 上,发行者在技术上无法做到这一点——这是第一点。即使他们想这样做,也毫无意义:每个地址持有的金额和资产类型是被隐藏的。发行者根本不知道谁持有多少他们的代币。

这对于针对性审查是一种有意义的防御。它也能较好地抵御来自骗子和窃贼的不必要关注——没人能看出有多少价值流入你的地址。

Liquid 解决了它被设计来解决的问题。只是它并不是我以为它正在解决的问题。但这并不意味着这个区块链不好——它只是更为专门化。

我们实际所说的“机密”是什么意思

在我们继续之前,先澄清一件事。当我们称一笔交易为“机密”时,我们究竟在谈论什么?

每笔交易有若干组成部分,它们中的每一个都可以分别被隐藏:

  • 金额和资产——转移了多少什么资产。
  • 地址之间的关系——谁与谁发生了交互,交易图是什么样子。
  • 身份——地址与现实世界个人或组织之间的关联。
  • 传输本身的存在——是否任何人甚至能看到一笔交易发生了。

不同系统会让不同的部分变得机密。一旦我们把这些层次分开,就更容易理解每种技术实际保护的是什么——以及它不能保护什么。

比特币中的机密性

闪电网络:从未知发送者交付比特币

如果 Liquid 隐藏的是“多少”和“什么”,那么闪电隐藏的是“从哪里来”。

想象你要给另一座城市的朋友寄一个包裹。你不亲自送达。你把它交给快递员,快递员交给长途客车司机,客车司机在目的地城市把包裹交给本地出租车司机,最后出租车司机把它交给你的朋友。

那位出租车司机,链条中的最后一环,只知道客车司机把箱子交给了他。他不知道你是最初的寄件人。

在闪电网络中,这叫洋葱路由——与 Tor 使用的概念相同。收款人只看到路线中的最后一跳。你的币的历史对他们是不可见的。AML 分析师无从可分析,因为没有任何交易历史被记录。

这正是我个人所需要的。这就是为什么我将闪电用于我的私人交易。

有一个细节:开通和关闭支付通道会记录在比特币区块链上。但那只是第一笔和最后一笔交易——而不是可能在它们之间发生的几十、几百甚至成千上万笔支付。

静默支付:一个收款人,多个不可见地址

公众人物面临一个重大问题。如果他们发布一个常规的比特币地址用于捐赠或支付,任何人都可以打开区块浏览器,看到向该地址发送资金的次数以及该地址当前持有多少比特币。就好像你的银行卡号让陌生人可以查看你的账户流水。

静默支付对此提供了优雅的解决方案。

  • 我发布一个“静默地址”。
  • 你把它粘贴到你的钱包去给我付款。
  • 你的钱包随后执行一个巧妙的数学技巧:它取我的公钥和你的密钥,并从中生成一个全新的、唯一的一次性地址。
  • 该地址属于我——但即便是我也事先不知道它。它也无法被链接回我的公开静默地址。

金额仍然可见——这只是一次常规的比特币交易。但公开发布地址的身份与具体入账支付之间的链接被隐藏了。

最近在 Stellar 网络上也有人提出了类似的隐私方案

Ark:比特币的大熔炉

Ark 是一个建立在比特币之上的相对较新的协议,正在积极开发中。它旨在提供类似闪电的功能,但无需用户管理通道。

参与者不是各自开通支付通道,而是将他们的币存入一个共享池中,同时保留对自身贡献金额的控制。你把币丢进这个锅里——它们在成千上万的其他币中“溶解”。

当你想支付给某人时,你指示运营者在池子内部把某个金额重新分配给另一个参与者。如果收款人不在池内,运营者会把资金提出并发送到指定地址。运营者不能拒绝你的请求。

因此,你最初存入的币和你朋友最终收到的币在链上不会有可见的关联痕迹。连接被打断了。

乍看之下这类似于混币器,但它的主要目的并不是切断存款与取款之间的链路。核心特性是池内的内部转账——对运营者的权利进行重新分配。这些是即时且廉价的,很像 CEX 内部的转账。

关键的区别是,与 CEX 运营者不同,Ark 的运营者不能冻结你的资金。

从机密性的角度看,这也类似于 CEX 内部转账:运营者能看到一切,而外部观察者什么都看不到——甚至看不到转账是否发生过。

Shielded CSV:收款人单独验证

这是一个非常新的想法,仍处于研究阶段。但可以非常简单地解释。

  • 常规区块链如何工作?Alice 向所有人公开宣布:“我正在给 Bob 发送一千聪!”每个人都看得到、验证并记录它。
  • Shielded CSV 会如何工作?Alice 私下发消息给 Bob:“我正在给你发送一千聪。这是我曾拥有这些资金并正确花费它们的证明。你自己验证。”对世界其他人来说,Alice 发布的不是交易本身,而是一个密码学证明,证明她曾有这些资金并且正确花费了它们,意味着她不能再次花费同一笔资金。

有关她发送了多少以及发送给谁的所有信息都是由 Alice 直接传递给 Bob 的。收款人在不向世界揭示的情况下验证传输内容。更准确地说,网络验证交易的有效性,而收款人验证交易实际包含的内容。

区块链仅存储防止双重支付所需的最小密码学痕迹。如果你没有参与那笔交易,你不会从中得知任何关于它的细节——除了某个 UTXO 被销毁的事实。

类似的模型——区块链只存储交易正确性的 zk 证明——已经在 Zcash 网络上成功运行了近十年。

其他加密货币的机密性

MimbleWimble:一个没有地址的区块链

我们跳出比特币的范畴。在这里,开发者以更激进的方式处理交易图问题。

在传统区块链中,你可以看到地址、金额和显式的交易结构:这是一个输入,这是一个输出,这是它们之间的链接。

在 MimbleWimble(用于 Grin 和 Beam)中,根本没有地址。甚至没有可见的金额。只有输入和输出,而且它们的大小被隐藏。

当一个区块被形成时,它不包含带有清晰输入与输出链接的单独交易。相反,它包含:

  • 该区块中包含的所有输入的完整列表,
  • 该区块中创建的所有输出的完整列表,
  • 以及一个数学证明,证明整体余额是正确的。

没有谁向谁发送了币的记录。此外,如果一笔交易的输出在包含其父交易的同一区块内被花费,那么那些中间输入和输出会从区块链历史中完全消失。

外部观察者仅能看到某些币被销毁并且新的币被创建。

然而,交易在被包含进区块之前,会在处理它们的网络节点之间传播,对于这些节点而言交易并不是机密的。在交易传播期间,其输入和输出之间的链接是可见的。如果有人在区块包含之前积极监控交易传播,他们可能能够重建部分图。

Litecoin 的 MWEB:并不存在的地址

Litecoin 网络实现了一个名为 MimbleWimble Extension Block(MWEB)的扩展。这并不是像 Grin 或 Beam 那样的独立 MimbleWimble 链,而是嵌入主区块链的一个附加层。

币可以:

  • 从常规 UTXO 转移到 MWEB,
  • 在 MWEB 内部使用,
  • 然后再提现回标准的 Litecoin。

在某些方面,这类似于比特币上的 Ark——只是没有单一的运营者。“运营者”是网络节点,当然还有将输入和输出包含进区块的矿工。

为方便用户,Litecoin 的 MWEB 实现包含地址功能。有看起来熟悉的字符串表现得像地址,区块链也能识别何时有交易发送到“MWEB 地址”。

但这些地址只是存在于用户界面层。在 MWEB 区块内部,根本没有地址——只有聚合的输入和输出列表。

Monero:“我是斯巴达克斯!”

我是斯巴达克斯!

这基本上就是 Monero 的工作原理。

当你发送交易时,你的钱包会把你的币与区块链上若干其他不相关的历史输出作为诱饵混合。从外部观察者的角度来看,这笔交易可能是由该组中任何成员发起的。

同时,Monero 使用一次性隐身地址来隐藏收款人:每笔支付都会生成一个唯一地址(在精神上类似于静默支付),它无法与收款人的公开地址关联。交易金额也被隐藏。

这是目前链上机密性最激进的形式。这也正是监管者倾向于不喜欢 Monero 的原因。

但“最激进”并不自动意味着“最能抵御未来风险”。即便区块链记录本身是不透明的,它们仍然存在。没有人能完全确定未来不会出现能够从这些记录中提取更多信息的新分析技术。

这种潜在风险将 Monero 与像闪电网络那样的系统区分开来——在闪电网络中,交易记录在链上根本不存在。

事实上,一位知名的比特币爱好者 Supertestnet 多月来一直在发起一个挑战:他要求 Monero 用户通过闪电给他支付一笔款项,作为回报他则以等值的 Monero 向他们付款。然后他邀请他们比较每个发送者能从收款人处得知多少信息。有趣的是,他有时能从 Monero 区块链上有限的记录中提取出一些敏感信息。

结论:不存在普适的“机密”

让我们把所有内容放到一幅简单的图景中。

想要保护自己免受针对性发行者审查或金融监控? 那么 Liquid 是你的工具。它在这方面做得非常好。Tether 无法看到你在 Liquid 上的 USDT 余额,也无法冻结它,骗子也无法判断哪些地址值得用钓鱼攻击瞄准。

想要隐藏币的来源并保护自己免受 AML 滥用? 选择闪电网络。收款人无法看到资金来自何处。

你只需防止入账交易被链接到你的公开身份? 在比特币上使用静默支付或在 Stellar 上使用类似方案。

想要没人看到交易图? 可关注 MimbleWimble(Grin、Beam、Litecoin)、Ark 或 Zcash。

想今天就隐藏一切——发送方、接收方、金额和交易图——即便有小概率未来的分析可能将其部分揭示? 这就是 Monero 的定位。

在等待下一步吗? 关注 Shielded CSV。

每项技术都是为应对特定的威胁模型而设计的。因为它不擅长拧螺丝而批评一把锤子是没有意义的。Liquid 完全做到了它被构建来做的事。只是它并没有解决我以为它会解决的问题——而在向你推荐它之前,我没有花时间去理解这一点。

现在我已经理解了。我也希望这能帮助你更好地理解它。