V神最新L2解决方案,提出跨Rollup扩展方案以实现L2项目相互通信
本文作者Vitalik Buterin
“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中的方法发送交易来完成此操作,该方法可以保存一条记录,以防止合约中的自动发送语段触发该交易。
预期的行为很简单:
- Alice将N个币和备忘录ALICE_B通过一笔交易发送给IVAN_A
- 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 > 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发送了币,则她将失去该权利。
原文:https://ethresear.ch/t/cross-rollup-dex-with-smart-contracts-only-on-the-destination-side/8778
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum