然后分离用户的状态,并提供其状态的用户数据及其证明作为运营商对其交易的收据,从而降低了大量 gas 成本。 1. 交易者向运营方发送交易; 2. 运营商将其用户状态的 merle 证明作为交易的收据; 3. 交易者签署这个收据; 4. 电路中只接收带有签名收据的交易数据; 如果一个用户进行了交易,并且多个用户的余额发生了变化,并且他们知道自己的状态,包括这些余额和 Merkle 证明,那么他们中的任何一个都可以随时通过 zkp 退出其资金。 这证明这是其余额的最后一个状态,可以通过每个批次的更改状态所有者的每个帐户列表的不包含证明来确定。更改状态所有者的帐户列表的稀疏 Merkle 树可用于有效证明。 有两种方法可以让更改状态的所有者知道他们最近的更改。 如果他们在线,运营商发送最后一个差异,接收签名的差异,并将其放入 zkp 电路的输入,这样的 gas 成本是最低的。 如果他们不在线,运营商会将其发布到 txcalldata 或链下去中心化存储。 通过这种状态分离,运营商不再需要将最终状态的任何差异都放在 txcalldata 中,因为用户的帐户状态对于退出来说足够安全,而丢失共同共享的数据,只是意味着运营商无法更新 zkRollup 的 Merkle 根,他们将简单地停止服务。然后,公共共享存储和用户存储都可以在链外分发。每批只需要在 txcalldata 中记录一个状态改变的所有者的账户列表。 第三步,隐私智能合约执行 用户的交易不在链上,但运营商仍然可以看到并需要看到用户状态(包括余额),以进行 zkp 证明。 如果用户在其一边进行 zkp 以证明其用户状态的 Merkle 根和公共共享存储的转换,则运营商只需更改该 Merkle 根和存储,余额的秘密仍然存在。 1. 用户向运营商发送交易; 2. 运营商返回余额和更新后的公共共享存储的差异; 3. 用户对更新后的用户状态和公共共享存储的 Merkle 根进行 zkp 证明; 制作每个批次(区块)的运营商可通过更改批次中/共享存储的变化知道余额差异,但其无法知道其他批次的余额差异,因为运营商之间只共享最终差异。这具有混合级别的隐私。 这种机制需要用到递归 zk。 更详细的讨论 在链下与离线状态改变者通信 这只是一种选择。该协议可以在没有这部分的情况下构建。 即使在最坏的情况下,状态更改器处于离线状态,这种情况下的数据可用性风险也非常有限。 (责任编辑:admin) |