Vitalik说的跨Rollup DEX是什么?

当人们还在思考用rollup的方式缓解Layer1拥堵的时候,Vitalik已经在考虑rollup之间怎么做交互。 6天前,Vitalik发起了一个叫做“跨rollup DEX”的提案,其中提到当一条rollup有智能合约部署,另一条rollup没有完全的智能合约功能的时候,资产可以在两条rollup之间以去中心化的方式转移。

有一点“隔空挪物”的感觉。 这个过程到底是怎么实现的呢?哔哔News将提案,以及Vitalik和社区成员间的精彩讨论内容翻译如下: 假设我们有两条rollup,分别是rollup A和rollupB。Alice想要把rollup A上特定数量的代币转移到rollup B上。如果A和B都有完全的智能合约支持,在这种情况下,已经有关于如何以去中心化的方式解决这个问题的提案。本提案想要为只有rollup B有完全的智能合约支持(rollup A只能处理简单的交易)的情况提供思路。 我们假设,融易新媒体,rollup A上的交易有某种“备注字段”,如果没有的话,我们可以使用值的低阶位作为备注发送。

提案

假设存在一个交易中介Ivan(在实际实现中,将有许多中介可供选择)。Ivan在rollup A上有一个账户IVAN_A(他完全控制该帐户)。Ivan还将一些资金存入了rollupB上的智能合约IVAN_B中。 智能合约IVAN_B有以下规则:如果任何人发送TRADE_VALUE数量的代币到IVAN_A,其中包含一个地址DESTINATION作为备注,那么在MIN_REDEMPTION_DELAY块之后, IVAN_B将收到一笔交易,该交易包含一个代币转移的证明,从而把提取TRADE_VALUE数量的代币这样一笔交易排队到DESTINATION地址。提币按照交易被包括到rollup A中的批次和索引顺序处理,要经过一些延迟(比如1天)。

当Ivan看到他在IVAN_A收到资金时,他可以亲自将TRADE_VALUE *(1 – fee)数量的代币发送到DESTINATION地址。他可以通过IVAN_B中的方法发送交易,该方法保存一条记录,防止合约中的自动发送条款触发该交易。 预期的操作很简单: -Alice向IVAN_A发送一笔交易,其中包含N个代币和备注地址ALICE_B。-Ivan通过IVAN_B发送TRADE_VALUE * (1 – fee)数量的代币到ALICE_B。 第二步可以在第一步之后立即进行。如果Ivan证明第二笔交易和第一笔交易之间的时间戳差异非常小,那么合约甚至可以制定规则,允许费用更高。 “最坏的情况”是Ivan没有像预期的那样向ALICE_B发送代币。在这种情况下,Alice可以等待rollup A上的交易确认,找到获得rollup B上的代币的其他途径来支付费用,然后她自己就可以索要资金。

资本成本

该方案的主要限制是,IVAN_B需要持有大量资金,以确保所有发送者都能得到支付。特别是,假设:我们把交易金额上限设置为TRADE_LIMIT(所以发送到IVAN_A的交易中,交易值> TRADE_LIMIT的交易都不是有效交易)。 同时,我们设置每个rollup批次最多可包含的交易数量是TXS_PER_BATCH。Alice可以自己检查,rollup A即将到来的批处理之前有多少未处理交易,用她在IVAN_B合约中看到的资金减去这个值,并检查剩余的金额是否足够。

由于提币是按顺序处理的(这是上面顺序机制的目标),Alice不需要担心在她自己提币之前IVAN_B会去处理后面的提币需求。 在一个批次中可以交易的最大金额是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可以被设计成这样,例如,让排序器发送一个签名消息,向Alice证明到目前为止,批次中批准的所有消息。然后Alice就会知道在她之前没有交易(尽管恶意的排序器可以欺骗Alice,但代价很高)。

备注

上面的设计建立在rollup A上的交易有一个备注字段的假设上,Alice可以使用该字段指定ALICE_B作为她接收代币的目的地址。如果rollup没有此特性,那么我们可以使用以下解决方案。 Alice可以在顺序注册合约的rollup B上注册ALICE_B,并获得一个按顺序分配的ID(因此Alice的ID等于在她之前注册的用户数量)。设置MAX_USER_COUNT为用户数的最大值,如果有必要,这个值可以随时间向上调整。Alice可以简单地确保TRADE_VALUE % MAX_USER_COUNT等于(Alice的ID),使用TRADE_VALUE的低阶位(这个数字表示一个不重要的值)来表示她想交易的代币数量。

从rollup B到rollup A的交易

 文章标题:Vitalik说的跨Rollup DEX是什么?

内容摘要:当人们还在思考用rollup的方式缓解Layer1拥堵的时候,Vitalik已经在考虑rollup之间怎么做交互。 6天前,Vitalik发起了一个 ...

免责声明:融易新媒体转载此文目的在于传递更多信息,不代表本网的观点和立场。文章内容仅供参考,不构成投资建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。


本文网址:http://mt.ironge.com.cn/opinion/sypl/244549.html