对用户来说,普通交易的隐私保护(译者注:文中有时也会简称为隐私交易)基本上算是一个已解决了的问题(尽管在研究上仍然遗留了一些挑战)。如果我们想在不透露账户余额或转账金额的前提下转移密码学货币,我们有诸如大零币(Zcash)或门罗币(Monero)这样可接受的选项。不过,对于去中心化应用或者智能合约来说,隐私保护仍是一个尚未解决的问题。
是什么让智能合约与普通交易在输入/输出(I/O)的隐私保护上有所不同呢?
在本文中,我们将解密隐私保护从普通交易拓展到智能合约上会遇到哪些挑战。为此,我们将考察应用于隐私币的常用密码学工具,并探讨为什么这些工具不太适合更复杂的隐私应用。最后,我们将简要介绍最近提出的一些智能合约隐私保护方案。
隐私保护的定义
“隐私保护” 到底是什么意思?
我们将从函数的角度来定义隐私保护。例如,我们可以把 交易 看作是一些函数,它以账户余额和转账金额作为输入。然后它输出更新后的余额。
图 1:以函数来表示交易过程。
(要实现隐私保护)我们可以考虑隐藏函数的输入和输出。就交易而言,这可以让我们隐藏账户余额和转账金额。你会愿意公开你的账户余额和转账历史吗?可能不会吧。因此,我们至少要支持函数(以及随后的智能合约)的 I/O 隐私保护。
图 2:隐藏函数的 I/O。
我们也可以考虑隐藏函数的调用者信息。有时候,函数输入会留下关于函数调用者身份的线索。在实践中,隐藏函数的输入和输出通常会和隐藏函数调用者的身份相结合。
图 3:隐藏函数调用者。
最后,我们可以考虑隐藏函数本身。这在密码学货币领域不太常见,其通常与隐藏函数的输入/输出相结合。
图 4:隐藏函数本身。
当你在本文中看到 “隐私保护” 这个词时,请把它当成一个总称,指的是 至少支持 I/O 隐私保护 的东西。