当前位置:首页区块链Vitalik Buterin:Rollup 应用间如何进行通信?

Vitalik Buterin:Rollup 应用间如何进行通信?

Vitalik Buterin 提出了一种针对特定类跨 Rollup 扩展的解决方案。

原文标题:《V 神最新 L2 解决方案,提出跨 Rollup 扩展方案以实现 L2 项目相互通信》
撰文:Vitalik Buterin
编译:Kyle

「L2 DeFi 协议当前无法相互通信,因此 V 神 Vitalik 提出了解决方案。为了应对不断上升的交易费用,V 神在提案中,提出了一种针对特定类跨 Rollup (cross-rollup)扩展的解决方案。该提案概述了使用 Rollup 的两个协议如何在保持互连性和可组合性的同时相互通信。V 神提案假设,一个 Rollup 可以处理简单的事务,而另一个 Rollup 具有完整的智能合约支持。使用 Rollups 在两个智能合约支持的协议之间进行传输,目前早已有提案。」

假设我们有两个 Rollup,A 和 B,并且 Alice 希望将 Rollup A 上的一些币兑换为 Rollup B 上的相同币。如果 A 和 B 同时都支持完整智能合约,那目前就有以一种去中心方式来实现这种兑换的提案。 而在本文档中,提出了当只有 Rollup B 支持完整智能合约( Rollup A 仅能处理简单交易)的情况下的一种解决方法。

我们假定 A 上的交易具有某种「备注字段(memo field)」; 如果没有,我们可以使用该值的低位数字作为备注。

提案

假设有一个兑换中介 Ivan (在实际的实现中,会有很多中介可供选择)。 Ivan 在 A (他完全控制)上拥有一个帐户 IVAN_A。 Ivan 在 B 的智能合约 IVAN_B 中也存有一些资金。

智能合约 IVAN_B 具有以下规则:

  • 如果有人发送了一笔发送 TRADE_VALUE 币到 IVAN_A 的交易,其中包含一个地址 DESTINATION 作为备忘录(memo),则在 MIN_REDEMPTION_DELAY 区块之后,他们可以发送一笔包含转移证明的交易给 IVAN_B,并进入地址 DESTINATION 的 TRADE_VALUE 币提款队列中。
  • 在等待一些延迟(例如 1 天)后,按批次和索引顺序处理提款,并将这些转账包含到 Rollup A。
  • 当 Ivan 看到自己在 IVAN_A 收到资金时,便可以亲自将 TRADE_VALUE *(1-fee)币发送到 DESTINATION。 他可以通过使用 IVAN_B 中的方法发送交易来完成此操作,该方法可以保存一条记录,以防止合约中的自动发送语段触发该交易。

预期的行为很简单:

  1. Alice 将 N 个币和备忘录 ALICE_B 通过一笔交易发送给 IVAN_A
  2. Ivan 发送一笔交易,通过 IVAN_B 将 TRADE_VALUE *(1-fee)币发送到 ALICE_B

第二步可以在第一步之后立即进行。 如果 Ivan 证明第二笔交易与第一笔交易之间的时间戳差异很小,则合约甚至可以具有允许费用增加的规则。

「最坏的情况」是如果 Ivan 没有按预期方式将币发送到 ALICE_B。 在这种情况下,Alice 可以等到 Rollup A 上的交易确认之后,找到某个替代路由让 Rollup B 上的币支付费用,然后自己领取资金。

资本成本

该方案的主要限制是 IVAN_B 需要持有大量资金以确保所有发送者都将得到付款。特别是,假设:

  • 我们将交易大小限制为 TRADE_LIMIT 个币(因此,进入 IVAN_A 且 value gt; TRADE_LIMIT 的交易是无效交易)
  • 每个 Rollup 批次最多可以包含 TXS_PER_BATCH 个交易

在即将进行的 Rollup A 批次之前,Alice 可以自己检查有多少未处理的交易,可以从她在 IVAN_B 合约中看到的资本中减去该值,然后检查剩余金额是否足够。因为提款是按顺序处理的(这是上述队列机制的目标),所以 Alice 不必担心那些自己的交易之前被处理的提款。

一个批次可以交易的最大金额为 TRADE_LIMIT * TXS_PER_BATCH,因此 IVAN_B 合约需要至少持有这个数量的 ETH,加起来需要足以覆盖未处理的交易。例如,假设 TRADE_LIMIT = 0.1 ETH (低限制是可以的,因为可以通过多次交易完成更大的交易)并且 TXS_PER_BATCH =1000。那么,IVAN_B 将需要持有 100 ETH。

请注意,这种设计需要支付额外的隐性费用,因为任何交易量超过 0.1 ETH 的人都将浪费区块空间。 这是向资金要求妥协的:如果将区块浪费减半,则资金要求将增加一倍,反之亦然。 对于正确的余额,似乎隐性费用比市场上出现的显性费用小几倍。

如果我们想减少或消除这种浪费,可以设计 Rollup A 来这样做,例如,让 sequencer 发送一个签名的消息,向 Alice 证明到目前为止在批处理中批准的所有消息。 这样,Alice 就会知道在她前面没有交易(尽管恶意 sequencer 可能会以高昂的代价诱骗爱丽丝)。

Memos

上面的设计假定 Rollup A 上的交易具有一个备注字段(memo field),Alice 可以使用该字段将 ALICE_B 指定为目的地。如果 Rollup 不具有此功能,那么我们可以使用以下解决方法。Alice 可以按顺序注册表合约在 B 上注册 ALICE_B,并获得按顺序分配的 ID (因此,爱 Alice 的 ID 等于在她之前注册的用户数)。令 MAX_USER_COUNT 为最大用户数;如有必要,此值可以随时间向上调整。Alice 只需使用 TRADE_VALUE 的低位数字(表示无足轻重的金额)来表示她要交易的金额,即可确保 TRADE_VALUE%MAX_USER_COUNT 等于(Alice 的 ID)。

Rollup B 到 A 的交易

如果 Alice 从 Rollup B 上的币开始并将其移动到 Rollup A,则可以使用类似的机制,但角色相反:

  • 爱丽丝将币发送到 IVAN_B
  • 经过一段时间的延迟后,她有权利收回这些币
  • 如果 Ivan 可以向 IVAN_B 证明他在 Rollup A 中向 Alice 发送了币,则她将失去该权利。

来源链接:www.8btc.com

温馨提示:

文章标题:Vitalik Buterin:Rollup 应用间如何进行通信?

文章链接:https://www.btchangqing.cn/203446.html

更新时间:2021年03月03日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

Vitalik Buterin:Rollup 应用间如何进行通信?
区块链

Tim Draper:Netflix“可能”是下一家购买比特币的财富100强公司

2021-3-3 23:36:23

区块链

晚间必读5篇 | 波卡平行链竞拍将至 必须关注四个方面

2021-3-3 23:41:53

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索