本文作者VitalikButerin
“L2DeFi协议当前无法相互通信,因此V神Vitalik提出了解决方案。为了应对不断上升的交易费用,V神在提案中,提出了一种针对特定类型跨Rollup扩展的解决方案。该提案概述了使用rollup的两个协议如何在保持互连性和可组合性的同时相互通信。V神提案假设,一个rollup可以处理简单的事务,而另一个rollup具有完整的智能合约支持。使用rollups在两个智能合约支持的协议之间进行传输,目前早已有提案。”
假设我们有两个Rollup,A和B,并且Alice希望将RollupA上的一些币兑换为RollupB上的相同币。如果A和B同时都支持完整智能合约,那目前就有以一种去中心方式来实现这种兑换的提案。而在本文档中,提出了当只有RollupB支持完整智能合约的情况下的一种解决方法。
声音 | HashCash:建立基于区块链的石油供应链:美国区块链公司HashCash Consultants宣布与一家大型石油公司合作,建立基于区块链的石油供应链。他们将把其区块链网络HC Net供应给位于阿联酋的合作伙伴公司,以通过DLT平台帮助他们。(prweb)[2020/2/21]
我们假定A上的交易具有某种“备注字段”;如果没有,我们可以使用该值的低位数字作为备注。
提案
假设有一个兑换中介Ivan。Ivan在A上拥有一个帐户IVAN_A。Ivan在B的智能合约IVAN_B中也存有一些资金。
智能合约IVAN_B具有以下规则:
如果有人发送了一笔发送TRADE_VALUE币到IVAN_A的交易,其中包含一个地址DESTINATION作为备忘录,则在MIN_REDEMPTION_DELAY区块之后,他们可以发送一笔包含转移证明的交易给IVAN_B,并进入地址DESTINATION的TRADE_VALUE币提款队列中。
动态 | 保险经纪公司Marsh试行基于区块链的数字安置平台:领先的保险经纪和风险管理公司Marsh试行了基于区块链的数字安置平台Risk Exchange。该平台旨在确保更加透明和安全的数字安置,并使用户能够接收有关安置和绑定过程的实时信息和反馈。据悉,保险安置是指购买保险产品或更新现有产品。(cointelegraph)[2019/9/25]
在等待一些延迟后,按批次和索引顺序处理提款,并将这些转账包含到RollupA。
当Ivan看到自己在IVAN_A收到资金时,便可以亲自将TRADE_VALUE*币发送到DESTINATION。他可以通过使用IVAN_B中的方法发送交易来完成此操作,该方法可以保存一条记录,以防止合约中的自动发送语段触发该交易。
动态 | 韩国SBI储蓄银行推出基于区块链的身份验证应用程序:据ethereumworldnews报道,韩国SBI储蓄银行与ICONLOOP合作创建了一个移动智能应用程序“SBI简单身份验证”,客户可以通过个人识别码(PIN)或指纹使用该应用程序进行个人身份验证。目前新系统已可供公众使用。[2019/4/1]
预期的行为很简单:
Alice将N个币和备忘录ALICE_B通过一笔交易发送给IVAN_A
Ivan发送一笔交易,通过IVAN_B将TRADE_VALUE*币发送到ALICE_B
第二步可以在第一步之后立即进行。如果Ivan证明第二笔交易与第一笔交易之间的时间戳差异很小,则合约甚至可以具有允许费用增加的规则。
动态 | 澳大利亚新南威尔士州发布基于区块链的数字驾照:澳大利亚的一家区块链公司今天公布了一个名为TrustGrid飞新平台,这是电子汽车牌照的关键架构组件之一,预计该牌照将于明年年底前在全州范围内就位。[2018/9/10]
“最坏的情况”是如果Ivan没有按预期方式将币发送到ALICE_B。在这种情况下,Alice可以等到RollupA上的交易确认之后,找到某个替代路由让RollupB上的币支付费用,然后自己领取资金。
资本成本
该方案的主要限制是IVAN_B需要持有大量资金以确保所有发送者都将得到付款。特别是,假设:
我们将交易大小限制为TRADE_LIMIT个币
每个Rollup批次最多可以包含TXS_PER_BATCH个交易
在即将进行的RollupA批次之前,Alice可以自己检查有多少未处理的交易,可以从她在IVAN_B合约中看到的资本中减去该值,然后检查剩余金额是否足够。因为提款是按顺序处理的,所以Alice不必担心那些自己的交易之前被处理的提款。
一个批次可以交易的最大金额为TRADE_LIMIT*TXS_PER_BATCH,因此IVAN_B合约需要至少持有这个数量的ETH,加起来需要足以覆盖未处理的交易。例如,假设TRADE_LIMIT=0.1ETH并且TXS_PER_BATCH=1000。那么,IVAN_B将需要持有100ETH。
请注意,这种设计需要支付额外的隐性费用,因为任何交易量超过0.1ETH的人都将浪费区块空间。这是向资金要求妥协的:如果将区块浪费减半,则资金要求将增加一倍,反之亦然。对于正确的余额,似乎隐性费用比市场上出现的显性费用小几倍。
如果我们想减少或消除这种浪费,可以设计RollupA来这样做,例如,让sequencer发送一个签名的消息,向Alice证明到目前为止在批处理中批准的所有消息。这样,Alice就会知道在她前面没有交易。
Memos
上面的设计假定RollupA上的交易具有一个备注字段,Alice可以使用该字段将ALICE_B指定为目的地。如果rollup不具有此功能,那么我们可以使用以下解决方法。Alice可以按顺序注册表合约在B上注册ALICE_B,并获得按顺序分配的ID。令MAX_USER_COUNT为最大用户数;如有必要,此值可以随时间向上调整。Alice只需使用TRADE_VALUE的低位数字来表示她要交易的金额,即可确保TRADE_VALUE%MAX_USER_COUNT等于。
RollupB到A的交易
如果Alice从RollupB上的币开始并将其移动到RollupA,则可以使用类似的机制,但角色相反:
爱丽丝将币发送到IVAN_B
经过一段时间的延迟后,她有权利收回这些币
如果Ivan可以向IVAN_B证明他在RollupA中向Alice发送了币,则她将失去该权利。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。