隐私对以太坊的长期生存能力和可操作性至关重要。
遵循精彩的以太坊隐私:通向自主权的道路路线图,我们提出了一个保密的WETH概念,这可能在未来发展成一个成熟的保密代币标准(EIP)。
很想听听你对这份草案的想法!
1. 引言
透明性是公共区块链的关键优势之一。然而,交易的公开可见性可能会损害用户的隐私。根本挑战在于平衡区块链开放性的内在好处与个人保密性的重要需求。
目标是创建一个无需许可的公共协议,通过加密余额和转账金额来混淆用户在ETH代币中的财务活动。这将允许在不依赖中心化实体的情况下进行保密的点对点支付、捐赠和获取。
该提案建议在应用层完全创建一个保密版本的包装以太坊(cWETH)。该解决方案结合了椭圆曲线(EC)扭曲ElGamal基础承诺方案以保持保密性,以及EC迪菲-赫尔曼(DH)协议以引入由承诺方案限制的可访问性。为了强制执行正确的承诺生成、加密和解密,使用了zk-SNARKs。
1.1. 与现有协议的区别
至少有两种已知解决方案不需要协议层修改,可以直接实施。
Solana和Zether方法乍看起来非常相似,因为它们也使用ElGamal承诺。然而,主要区分因素是需要解决离散对数问题以访问加密余额。
Solana通过维护一个单独的可解密余额部分缓解了这一问题。但主要区别在于所使用的加密方案不支持聚合,这样的余额主要作为缓存,在待定金额移动到实际金额时更新。然而,仍然需要解密表示为ElGamal承诺的余额,这重新引入了解决离散对数问题的必要性。尽管通过将值分块可以简化这个过程,但cWETH协议提出了一种可聚合的加密方案,并与ElGamal承诺一起管理,以完全避免计算离散对数。
另一个区别在于cWETH使用的零知识证明。Solana和Zether方法依赖于Sigma协议和bulletproofs,而这个提案基于zk-SNARKs。这里的权衡是需要可信设置,但可以通过使用现有的可信设置(如Plonk的通用设置)来缓解,该设置已被证明随时间推移是安全的。
(由于篇幅限制,只翻译了部分内容,翻译保留了原文的技术细节和结构)余额承诺是按照以下方式加法计算的:
3.3. 使用椭圆曲线迪菲-赫尔曼共享密钥进行加密
由于ElGamal承诺本身并不能为用户提供一种方便的方式来访问解密余额,需要解决离散对数问题,因此通过使用椭圆曲线迪菲-赫尔曼共享密钥进行额外的金额隐藏加密。
DH共享密钥的推导如下:
转账金额的DH基础加密对发送方和接收方的处理方式不同。
用于聚合接收方余额的转账金额加密按以下公式计算:
随机数的使用是为了解决加密方案缺乏随机性导致的潜在转账数据泄露问题,在重复支付时尤其明显。这些随机数必须与发送方的公钥一起存储,以便用户可以解密其余额。
加密金额进一步用于聚合加密的接收方余额:
根据公式,接收方可以按以下方式解密其余额:
在发送方这边,使用这种方法加密转账金额可能会导致管理无限数量的公钥和解密余额所需的随机数。为了解决这个问题,每次用户转账时,都会重置现有发送方公钥和随机数的列表。这是通过计算新的加密发送方余额来实现的,如下所示:
更新加密余额后,发送方只需管理自己的公钥和随机数作为单一条目来解密所拥有的代币总额。
相同的新余额计算逻辑可用于解包cWETH代币。
(后续部分省略,因为篇幅限制)- 用户私钥;
- 在ElGamal承诺中使用的随机数。
操作这些信号,电路必须具有以下约束:
- 所提供的私钥确实是所提供公钥的私钥。
- 所提供的存款金额被证明是使用基于ElGamal的承诺所提交的。
- 用户存款后的余额被证明是使用DH共享密钥加密的。
5.2. 保密转账电路
保密转账证明的电路信号列表如下:
公开信号:
- 发送方公钥;
- 接收方公钥;
- 发送方余额的ElGamal承诺;
- 基于发送方公钥的转账金额的ElGamal承诺;
- 基于接收方公钥的转账金额的ElGamal承诺;
- 使用发送方公钥为基础的DH共享密钥加密的发送方新余额;
- 用于发送方新余额加密的随机数;
- 使用接收方公钥为基础的DH共享密钥加密的转账金额;
- 用于接收方转账金额加密的随机数。
私密信号:
- 发送方私钥;
- 发送方余额;
- 转账金额;
- 用于发送方ElGamal承诺的随机数;
- 用于接收方ElGamal承诺的随机数;
操作这些信号,电路必须具有以下约束:
- 所提供的私钥确实是所提供发送方公钥的私钥。
- 所提供的发送方余额被证明是使用ElGamal承诺提交的,并且大于或等于转账金额。
- 发送方的转账金额ElGamal承诺是正确生成的。
- 接收方的转账金额ElGamal承诺是正确生成的。
- 发送方的新余额是使用发送方公钥为基础的DH共享密钥正确加密的。
- 转账金额是使用接收方公钥为基础的DH共享密钥正确加密的。
5.3. 从cWETH提取电路
提取cWETH证明的电路信号列表如下:
公开信号:
- 用户公钥;
- 接收地址;
- 提取金额;
- 用户余额的ElGamal承诺;
- 基于用户公钥的提取金额的ElGamal承诺;
- 使用用户公钥为基础的DH共享密钥加密的提取后余额;
- 用于新余额加密的随机数。
私密信号:
- 用户私钥;
- 用户余额;
- 用于ElGamal承诺的随机数;
操作这些信号,电路必须具有以下约束:
- 所提供的私钥确实是所提供公钥的私钥。
- 所提供的发送方余额被证明是使用ElGamal承诺提交的,并且大于或等于提取金额。
- 提取金额的ElGamal承诺是正确生成的。
- 新余额(提取后)是使用用户公钥为基础的DH共享密钥正确加密的。
参考文献
Solana基金会。保密代币扩展。2022年。
Benedikt B¨unz等。Zether:迈向智能合约世界的隐私。2020年。












