边注:基于零知识证明的可扩展性方案并不会从根本上改变区块链的扩展性,只是改变区块链的用法:小型计算全部从链上转移到链下执行,区块链只需验证大批计算结果即可。
通过二层扩展方案生成的零知识证明首先需要遵守一组预定义规则。如果是交易系统,这组规则可能类似区块链的共识规则,例如,每个交易必需署上正确的签名,或者用户不得透支等。二层系统将规则转化成了一连串数学表达式(电路和多项式),然后使用这些数学表达式来创建零知识证明生成过程所必需的两个计算机程序:证明者与验证者。 只要有了证明者和验证者,我们就可以使用该系统生成并验证交易。假设 Alice 的钱包里有 3 ETH ,她想向 Bob 转一笔账。她签署了交易,交易数据被提交到了证明者手里。证明者使用该数据生成了一个零知识证明,然后发送给验证者。现在让我们考虑以下两个场景。 生成一个有效的零知识证明 验证者可以在完全不知道交易信息的情况下验证 Alice 是否按照预定义规则执行了交易。其中一条规则是 Alice 不能透支,因此如果她想转账 2 ETH ,验证者会同意该交易。 生成一个虚假的零知识证明 现在,假设 Alice 想要发送 5 ETH 。按理说,该交易在证明者阶段就会遭到拒绝。即使证明者作恶,该交易也得不到许可,通不过验证者的验证,因为它没有按照规定执行。 安比按:读者应该注意到了,2.3.1 章节和 2.3.2 章节分别就是零知识证明属性中的 「完备性」 和 「可靠性」:正确的证明必定能够通过验证;错误的证明必定不能通过验证。这里并没有用到零知识证明的 「零知识性」。因此,若不需要满足隐私要求,仅仅是为了提高可扩展性,则任何满足完备性、可靠性、简洁性(证明体积小)、验证速度快的证明系统,实际上都能用作同样的用途。因此,Vitalik 就曾提议 「以 snarks 替换掉 ZK rollup 的 ZK 前缀」,或者更细致的命名比如 「Validium」,因为这些方案实际上都没有用到零知识属性。包括 StakWare 也一直在强调自己是在利用证明系统(proof system)实现计算完整性(computational integrity)证明。但在 「ZK Rollup」 深入人心的情况下,AZTEC 使用零知识证明(提供隐私性)的 rollup 方案,只好命名为 「ZK-ZK-rollup」。令人唏嘘。
(责任编辑:admin)
|