区块链技术博客
www.b2bchain.cn

区块链技术ZK汇总改进理念:不需要事务历史数据,提高效率和隐私

第25294篇区块链技术文章区块链技术ZK汇总改进理念:不需要事务历史数据,提高效率和隐私

虽然它可以提高效率和隐私,但用户在从L1提取资金时需要对客户端执行额外的计算,而且很难与EVM兼容

原始标题:zkrollup改进建议:不需要TX历史数据来提高效率和隐私
作者:Leona HIOKI
编译:隔夜粥

长话短说

本文介绍了一个没有TX历史数据的zkrollup从运营商的角度来看,它具有在L1上使用txcalldata的天然气效率,还具有智能合同执行和资产隐私的特点。每批只需在txcalldata中记录状态变化所有人的账户列表

缺点是每个用户在向L1提取资金时需要进行客户端zkp计算,另一个缺点是给汇总操作员和交易员带来EVM兼容性困难

背景和动机

,在使用txcalldata时,它们仍然会产生消耗。此限制仅是因为需要恢复交易结果的状态,以便用户无法生成其资金的Merkle证明。大多数汇总规范要求操作员将所有事务历史数据转储到L1上的txcalldata

事务历史数据的透明度不仅增加了txcalldata的气体成本,但是也破坏了交易的隐私

据推测,交易历史数据的累加器不仅解决了效率问题,而且还解决了隐私问题

方法

简言之,在第一步,我们构造了一个zkrollup,其中操作符将最终状态差直接写入txcalldata。事务历史数据将在zkp电路的隐私输入中

在第二步中,我们通过分离公共存储和用户状态存储从txcalldata中删除最终状态差异。这允许用户使用非包含证书(如plasma prime的状态版本)退出。用户保留其用户存储,只公开其Merkle根。用户可以使用zkp验证根转换并更新智能合约的公共存储,具体步骤如下:

步骤1:在zkrollup中使用txcalldata有两个选项使用txcalldata恢复完整状态

选项1:将所有事务历史数据记录到txcalldata

选项2:记录由于块(批处理)中的事务而导致的最终状态差异

在选项2中,因为txcalldata中没有要记录的内容,数百万具有相同结果的事务使用0 gas作为txcalldata。Merkle根转换的可靠性由zkp保证,“选项2”是第一步,第2步:优化“选项2”

当批/块中的事务更改合同中相同的存储值时,上述选项2的成本将更低。共享和更改的值类似于erc20的总供应量、掉期协议的总资产池等

此外,该存储值还将影响所有资产持有人,该数据的丢失将导致zkrollup活动的丢失。另一方面,大多数不经常共享和更改的其他数据都是个人资产数据。这些数据的丢失直接意味着资产持有人已经损失了金钱。该风险是独立的,不会影响彼此的资金

然后分离用户的状态,并提供其状态的用户数据和证明,作为运营商交易的收据,以减少大量的天然气成本

如果用户进行交易,且多个用户的余额发生变化,他们知道自己的状态,包括这些余额和Merkle的证书,其中任何人都可以随时通过zkp提取资金

这证明这是其余额的最后状态,这可以由每批更改状态所有者的每个帐户列表的非包含证书确定。更改状态所有者帐户列表的稀疏Merkle树可用于有效认证

有两种方法可以让更改状态的所有者知道他们最近的更改

如果他们在线,操作员发送最后的差异,接收签名差异,并将其输入zkp电路,因此天然气的成本最低

  1. 交易者向运营方发送交易;
  2. 运营商将其用户状态的 merle 证明作为交易的收据;
  3. 交易者签署这个收据;
  4. 电路中只接收带有签名收据的交易数据;

如果他们不在线,运营商将通过这种状态分离将其发布到txcalldata或链下的集中存储

,运营商不再需要在txcalldata的最终状态中添加任何差异,因为用户的帐户状态足够安全,可以退出,而共享数据的丢失只意味着运营商无法更新zkrollup的Merkle根,他们将简单地停止服务。然后,公共共享存储和用户存储都可以分布在链外。对于每个批次,只需在txcalldata中记录状态已更改的所有者的一个帐户列表。步骤3:隐私智能合约执行。用户的交易不在链中,但操作员仍然可以看到并需要看到用户状态(包括余额)对于zkp证明

如果用户执行zkp来证明其用户状态的Merkle根和公共共享存储之间的转换,则操作员只需更改Merkle根和存储,并且余额的秘密仍然存在

每个批次(块)的操作员可以通过更改批次中共享存储的更改来了解余额差异,但无法了解其他批次的余额差异,因为操作员之间只共享最终差异。这具有混合的隐私级别

此机制需要递归ZK

与链下的脱机状态更改者通信

这只是一个选项。即使在最坏的情况下,状态转换器处于脱机状态,协议也可以在没有此部分的情况下构建,这种情况下的数据可用性风险非常有限

脱机用户可以在联机时获取数据以安全退出。他们可以设置一个代理,而不是自己接收数据,我们可以构造一个退出方法,以便上次状态更新不会由于数据可用性问题而使以前的状态变得危险。典型的分散存储结构如下所示:

账户链上的气体费用

  1. 用户向运营商发送交易;
  2. 运营商返回余额和更新后的公共共享存储的差异;
  3. 用户对更新后的用户状态和公共共享存储的 Merkle 根进行 zkp 证明;

每个帐户可以获得比地址本身短得多的ID

每个批次只需要一个帐户列表,因此可以省略重复的帐户列表,这比在以太坊L1上的txcalldata中使用的事务历史记录

更详细的讨论

进一步优化公共共享存储

,不能擦除txcalldata。我们可以修改它,因为公共共享存储不需要在链上

与事务历史数据不同,我们只需要最后一个状态数据,而不需要任何以前的状态。然后,运营商可以丢弃之前在网络中共享的“最终状态数据”

运营商可以通过zkp逻辑知道可以丢弃的数据

分离用户状态使zkrollup智能合约执行高效且私有,几乎所有txcalldata成本都从zkrollup中删除了

感谢Alex gluchowski(zksync)和Barry WhiteHat的评论

  1. 提交哈希(存储)
  2. 证明 preimage(hash(storage)) = preimage(hash(storage, last-Ethereum-block-header)) – last-Ethereum-block-header
  3. 继续观察有多少节点可以完成(2)

来源链接:www.8btc.com

每个帐户都可以获得一个比地址本身短得多的 ID。

每个 batch 只需要一个账户列表,这样就可以省略重复项,这比 txcalldata 中使用的交易历史要高效得多。

公共共享存储的进一步优化

在以太坊 L1 上,你无法擦除 txcalldata。我们可以修改它,因为公共共享存储不需要在链上。

与交易历史数据不同,我们只需要最后的状态数据,不需要任何之前的状态。然后运营商可以放弃之前在网络中共享的“最终状态数据”。

运营商可以通过 zkp 逻辑知道可以丢弃的数据。

结论

分离用户状态使得 zkRollup 智能合约执行既高效又隐私,几乎所有的 txcalldata 成本都从 zkRollup 中移除了。

感谢 Alex Gluchowski (zkSync)以及 Barry Whitehat 提供的意见和看法。

来源链接:www.8btc.com

区块链技术ZK汇总改进理念:不需要事务历史数据,提高效率和隐私 由www.b2bchain.cn 提供
文章整理自网络,只为个人学习与分享使用
链接地址https://www.b2bchain.cn/25294.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 区块链技术ZK汇总改进理念:不需要事务历史数据,提高效率和隐私
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们