遵循隐私交易模型:在这里,用户提供加密后的输入和一个 ZKP,证明他们的输入满足特定应用的一些指定条件。矿工验证证明,使用同态加法对输入进行操作。需要注意,应用于输入的函数只能用加法来表示。因此,只要函数只需要用到同态加法,我们就可以要求矿工对我们加密的输入执行任意满足该条件的函数。这就是 Zether 所采用的方法。 将工作外包给用户:在这里,我们要求用户将对明文的几乎所有计算都放到线下进行,而最后用户会公布计算的加密输入和加密输出。因为计算是在线下完成的(这也导致用户的诚实与否无法证明),用户同样需要提供一个 ZKP 证明计算过程是正确的。注意,这一步对隐私交易来说是不必要的,因为矿工会执行计算,而我们假设大多数矿工是诚实的。就应用而言,她可能还需要另一个 ZKP,证明应用指定的条件已被满足。矿工所需要做的就是验证 ZKP 是否有效,然后同意用户提出的状态变更。这就是 Zexe 和 Zkay 所采取的办法。 4:智能合约的隐私保护 现在来看一看一些已有智能合约隐私保护方案的具体构造。在继续阅读之前需要注意的是,这个领域距离解决问题还有很长的路要走。设计这些构造的论文(即 Zether,Zkay,Zexe)都是在过去两年中发表的。 Zether 是一个建立在以太坊上的隐私交易方案。它可以延伸到支持有限的智能合约的 I/O 隐私保护 —— 即那些可以通过同态加法表示的合约。这使得我们可以执行简单的封闭式拍卖(假设竞拍者会一次买下所有单位)和隐私投票(假设投票选项非 0 即 1)。遗憾的是,由于 gas 的限制,目前在以太坊上只能实现在交易中隐藏用户余额和转账金额。与接下来的两种构造不同,Zether 使用的是 “透明” 的 ZKP(即 ZKP 不需要可信的启动设置)。 Zkay 同样延伸了以太坊的设计以支持智能合约的隐私保护。他们依赖 ZKP 保障隐私计算的正确性,从而可以将大部分工作丢给用户在线下完成。因此,这种设计选择使得它们能够支持比 Zether 更多类型的函数。 Zexe 则试图延展大零币的设计,以支持任意脚本。与前两者不同,Zexe 还可以支持函数本身的隐私保护。 请注意: 1、Zkay 和 Zexe(如前所述)使用的是带有可信设置的 ZKP 方案。不过,这些 ZKP 方案可被无需可信设置的方案替代。 2、在区块链的场景中,I/O 隐私保护似乎比函数隐私保护更有意义,因为用户很可能希望在决定是否参与合约之前先对合约进行审计。 除此以外,还有其他一些用于智能合约隐私保护的构造(即 Ekiden、Hawk、Arbitrum),但是这些方案都需要某种准-受信任(semi-trusted)的管理器或受信任的硬件。 (责任编辑:admin) |