您好!刚知道Zcash吗?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with monthly highlights on ecosystem growth, network development and how to get started with Zcash!

语言

交易的可连接性

Paige Peterson | Jan 25, 2017

Zcash 地址有两种类型(透明地址和隐私地址),这样做的优势是让用户可以更加灵活的选择将自己的 ZEC 存在哪。透明地址与隐私地址之间的动态,则增大了包涵两种交易地址的复杂程度(比如,通过将 ZEC 由透明地址发送至隐私地址的方式将 ZEC 隐藏,或是通过将 ZEC 由隐私地址转出至透明地址的方式将 ZEC 透明化)。

如果所有的 Zcash 交易都选择隐私地址 (这是我们希望在未来的某一天能够实现的),那么两种地址所带来的复杂性则被降低了,同时在这个系统中的每个人都增强了自身的隐私性。直到那是,懂得隐私的含义就像交易的链接会帮助像掌控自己交易细节的用户那样有帮助。

这篇博文将概述一些隐私设计所需要考虑的因素,同时使用 Zcash 当前版本,利用它同时支持透明地址和隐私地址的特性来为用户介绍可行的解决方案。

Zcash 从哪里引入可连接性?

透明地址

要知道,透明地址把它所包涵交易的每个细节都放在了 Zcash 区块链上,我们可以从由一串透明地址的交易中看到某种程度的连接性,这样的连接性与比特币交易一致。

但是,当隐私地址与透明地址之间发生交互又会发生什么呢?幸好,在 Zcash 中的隐私地址确实已恰当的方式打破了可连接性。

Comparing transaction series: three transparent addresses vs a shielded address sandwiched between two transparent addresses

隐私地址可以与透明地址解除链接 [1]

商家仅仅使用隐私地址来接受 ZEC 付款,你的朋友使用这样的支付方式为你提升隐私性。在上面这个例子中,Bob 所使用的转账序列包涵一个隐藏地址 (b),它将 Alice 和 Carol 之间的链接解除了。为了帮助理解以上的特性,我们建立了以下的交易,这笔交易模仿了上面例子之中的特性: Alice 发送 15 个 ZEC (除去手续费) 给透明的 Bob 同时 透明的 Bob 发送 10 ZEC 给 Carol 与之相比 Alice 发送 15 个 ZEC (除去手续费) 给隐藏的 Bob 和 透明的 Bob 发送 10 ZEC 给 Carol

因此,即便你和你的朋友出于某种原因必须使用透明地址,但在交易中间只要有其他人使用隐私地址 (无论他们是否刻意) 都将打破在透明地址之前存在的可连接性。

链接价值

以上的方法,Bob 使用隐私地址将 Alice 与 Carol 之间的交易解除了链接,这种方法并不在所有情况下 100% 可靠,然而。

为了解释其中的原由,让我们先来关注包含两种地址类型的交易:当透明的地址将 ZEC 隐藏 (t → z) 或是隐私的地址将 ZEC 透明化 (z → t),透明地址所发送或接收的货币价值被公开化,即便这些价值曾经被隐藏在隐私地址之中。我们可以在以上交易序列中查看这一特性,比如虽然 Bob 使用了隐私地址,但是由于 Alice 和 Carol 使用的透明地址使得交易的价值被有效揭露了。

A diagram showing the possibile value linkability in a transaction series even when a shielded address is used in between transparent addresses

一个隐私地址在某些情况下不会防范价值可连接性

现在,让我们考虑一种特殊情况,Bob 将从 Alice 处收到的所有资金都发送给了 Alice,这时没有差异输出。如果 Alice 的公开输出 X 和 Carol 的公开输入 Y 时相等的 (或者 X 与 Y 之间仅差两个标准的转账费用),同时这笔金额与其他储存在 Zcash 区块链上的公开价值相比具有明显的独特性, 那么在某种程度上,就可以把 Alice 和 Carol 之间建立联系。你可以从下面这个例子中看出:Alice 发送 15 个 ZEC (减去 .0001 个 ZEC 的转账费) 给 Bob 的隐私地址 同时 Bob 的隐私地址发送 14.9999 个 ZEC (减去 .0001 个 ZEC 的转账费) 给 Carol

而且,这样的联系使得 Alice 的公开输出和 Carol 的公开输入在区块链上被记录的时间离得很近, Alice 发送 ZEC 给 Bob 是在区块高度 50374 处,而 Bob 把这笔 ZEC 发送给 Carol 是在区块高度 50378 处。这使得联系这两笔交易变得简单,当然如果 Bob 选择在区块高度 111583 处再发送给 Carol,这种情况就复杂多了。

为了减小以上因素造成的影响,Bob 需要对何时向透明的地址揭露隐私地址中的价值保持警惕。Zcash 钱包也许会在未来的开发中集成自动识别和提醒隐私 ZEC 转入透明地址时的可连接性问题。[2]

特别转账费率

另一项可连接性问题关乎转账费率。对于大部分钱包来说,付给矿工的典型转账费率时 (.0001 ZEC)。在之前的博文 Zcash 交易匿名性 中,我们介绍了转账费率总是会转出至透明地址中。虽然这样做并不向公众揭露是否转账使用了典型费率,但地址之间如果使用了特别转账费率则有可能被联系在一起。

以上问题的最简单解决办法时使用典型的转账费率!

通过减少复杂程度来减少可连接性

虽然同时提供透明地址和隐私地址的优势可以让用户有更多的选择 [3],但毋庸置疑的是在这两种地址之间转账 ZEC 增加了复杂度同时影响了隐私性。减少交易连接性更为行之有效的方式是让其他的用户也使用隐藏地址,这样做将会增加整个社区的隐私性。Zcash 核心研发团队有义务支持隐私地址的使用和成长,并号召第三方服务团队简化隐私地址的使用。我们仅仅处于一个信生态系统的早起,我们期待隐私可以随着时间不断被加强。

[1]交易序列 b,我们使用一个问好来标识 Bob 的隐私地址所接收的价值,即便它看起来像是接收了 14.9999 个 ZEC。这是因为可能一个另外的隐私输入或输出同样被包含在这次转账中,而我们并不能在区块链上查询到。
[2]这个价值可连接性与其在不同的用户之间传递,反而更像是在自己的不同地址之间传递。在以上的例子中,Alice 和 Bob 也许是同一个人在自己的透明和隐私地址之间进行交易。
[3]虽然 隐私地址 提供的隐私特性使 Zcash 区别于其他共有区块链,但它所包括的透明地址 (至少在现在) 与之前所有发布的密码学货币使功能相似,这也暂时满足了当前用户的 资源需求