主页 > 比特币 > 正文

要给智能合约增加隐私性并不简单

2020-12-17 18:18

对用户来说,普通交易的隐私保护(译者注:文中有时也会简称为隐私交易)基本上算是一个已解决了的问题(尽管在研究上仍然遗留了一些挑战)。如果我们想在不透露账户余额或转账金额的前提下转移密码学货币,我们有诸如大零币(Zcash)或门罗币(Monero)这样可接受的选项。不过,对于去中心化应用或者智能合约来说,隐私保护仍是一个尚未解决的问题。

是什么让智能合约与普通交易在输入/输出(I/O)的隐私保护上有所不同呢?

在本文中,我们将解密隐私保护从普通交易拓展到智能合约上会遇到哪些挑战。为此,我们将考察应用于隐私币的常用密码学工具,并探讨为什么这些工具不太适合更复杂的隐私应用。最后,我们将简要介绍最近提出的一些智能合约隐私保护方案。

隐私保护的定义

“隐私保护” 到底是什么意思?

我们将从函数的角度来定义隐私保护。例如,我们可以把 交易 看作是一些函数,它以账户余额和转账金额作为输入。然后它输出更新后的余额。

要给智能合约增加隐私性并不简单

图 1:以函数来表示交易过程。

(要实现隐私保护)我们可以考虑隐藏函数的输入和输出。就交易而言,这可以让我们隐藏账户余额和转账金额。你会愿意公开你的账户余额和转账历史吗?可能不会吧。因此,我们至少要支持函数(以及随后的智能合约)的 I/O 隐私保护。

要给智能合约增加隐私性并不简单

图 2:隐藏函数的 I/O。

我们也可以考虑隐藏函数的调用者信息。有时候,函数输入会留下关于函数调用者身份的线索。在实践中,隐藏函数的输入和输出通常会和隐藏函数调用者的身份相结合。

要给智能合约增加隐私性并不简单

图 3:隐藏函数调用者。

最后,我们可以考虑隐藏函数本身。这在密码学货币领域不太常见,其通常与隐藏函数的输入/输出相结合。

要给智能合约增加隐私性并不简单

图 4:隐藏函数本身。

当你在本文中看到 “隐私保护” 这个词时,请把它当成一个总称,指的是 至少支持 I/O 隐私保护 的东西。