http://www.7klian.com

Vitalik:实现跨RollupDEX

假设我们有两个 rollup(A和B),,而且 Alice 但愿用 rollup A 上的必然数量的代币互换 rollup B 上的沟通硬币。已经有人提出方案办理这个问题了,假如 rollup A 和 B 都是完全支持智能合约时,那么就可以去中心化地实现这个假设。

本篇文章提出了在只有 rollup B 具有完全智能合约支持(而rollup A只能处理惩罚简朴生意业务)的环境下如何执行此操纵。

我们假设 rollup A 上的生意业务有某种“备注字段”;假如没有,可以利用该生意业务值的低位数字作为备注发送。

提案

假设有一个互换中介 Ivan(在实际实现中,会有很多中介可供选择)。Ivan 在 rollup A 上有一个帐户 Ivan_A(由他完全节制)。Ivan 还在 rollup B 的智能合约 Ivan_B 中存入了一些资金。

智能条约 IBAN_B 具有以下法则:

假如任何人向 IVAN_A 发送事务处理惩罚,将 TRADE_VALUE 代币作为备注包括地点目标地,则在 MIN_REDEMION_DELAY 延迟后,他们可以向 IBAN_B 发送包括转账证明的生意业务处理惩罚,该生意业务处理惩罚会将 TRADE_VALUE 代币的取款列队到地点目标地。

提款在延迟一段时间后处理惩罚(譬喻,1天)凭据批次和索引的顺序,转移包罗在 rollup A 中。

当 Ivan 发明其在 Ivan_A 收到金钱时,他就可以亲自发送 TRADE_VALUE*(1 - fee)代币至 DESTINATION 中。他可以用 IVAN_B 的要领发送生意业务来完成上述操纵,这个要领生存了一个记录,防备合约中的自动发送条款触发该生意业务。

预期行为很简朴:

Alice 向 Ivan_A 发送带有 N 个代币和备忘录 Alice_B 的生意业务。

Ivan 通过 Ivan_B 发送生意业务,通过 Ivan_B 向 Alice_B 发送 TRADE_VALUE*(1-fee)代币。

第二步可以在第一笔生意业务之后当即举办。假如 Ivan 证明第二笔生意业务和第一笔生意业务之间的时间戳差别很是小,条约甚至可以有法则答允收取更高的用度。

“最坏的环境”是假如 Ivan 没有像他期望的那样把代币寄给 Alice_B。在这种环境下,Alice 可以期待 rollup A 上的生意业务确认,找到一些替代要领来得到 rollup B 上的代币来付出用度,然后简朴地本身认领资金。

成本本钱

该方案的主要范围性是,Ivan_B 需要持有大量资金,以确保所有发送者城市获得付出。详细地说,假设:

我们配置了 Trade_Limit 代币的生意业务巨细限制(因此,前往Ivan_A且Value>Trade_Limit的生意业务不是有效生意业务)。

每个 rollup 批次最多可以包括 TXS_PER_BATCH 生意业务。

Alice 可以本身查抄在 rollupA 中即将到来的批次之前有几多未处理惩罚的生意业务,从她在 IVAN_B 条约中看到的成本中减去这个值,然后查抄剩余的金额是否足够。

因为取款是按顺序处理惩罚的(这是上面行列机制的方针),所以 Alice 不需要担忧未来取款在她本身的取款之前被处理惩罚的大概性。一批可以生意业务的最大金额是 TRACE_LIMIT*TXS_PER_BATCH,因此 IBAN_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 的生意业务

假如 Alice 从 Rollup B 上的代币开始,并将它们移动到 Rollup A,则可以利用雷同的机制,只是脚色颠倒:

Alice 给 Ivan_B 送代币。

颠末一段时间的延迟后,她将得到取回代币的权利。

假如 Ivan 能向 Ivan_B 证明他用 Rollup A 发送了 Alice 代币,那么她就失去了这一权利。

End

很是感激您对 IPFS&Filecoin 项目标一连支持。我们很兴奋继承与您一起,为人类信息成立一个强大的,去中心化和高效的基本。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读