本文旨在解释starkex提出的支持快速撤销(在一个块时间内从Layer2撤销到任何第一层地址)的解决方案。该方案的优点是其速度与L2算子生成有效性证明的速度完全无关。
快速取款模块已经在以太坊主网的starkex上运行(自2020年10月starkex2.0发布以来),并启用了devosifi交换和dydx交换。
除了快速退出外,我们将在下面解释该方案的许多场景。让我们先了解一下需求是什么。
需要
区块链使得双方之间的无信任互动成为可能。Alice希望发布一个只有在满足某些条件时才能执行的事务;Bob希望在满足条件时直接执行Alice的事务,而不必再次获得Alice的许可。我们将支持这种交互模式的组件称为“条件事务(CT)”。
在L1上实现CT不需要任何幻想,因为智能合约可以保证时间和事务执行的耦合。但是如果需要在L2中实现,这是一个挑战。例如,在starkex中,事务发起人签名后,事务被传递给负责执行事务的操作员。但是,在满足所需条件之前,如何防止操作员执行事务呢?
本文只讨论了依赖于L1事件(表示为L2 | L1)的CT在L2上的实现。换言之,此类CT应确保操作员只能在某个连锁事件发生后执行已签名的事务。此外,我们将添加一个依赖于另一个L2事件(表示为L21 | L22)的CT,以支持starkex实例和starknet之间的互操作性。
让我们看看starkex是如何将其事件链形式化的。
条件交易概论
链上事件的注册
CT使用事实注册契约来跟踪链上的事件。事实上,只有在事实注册契约中注册的事件才能“解锁”CT。例如,如果Alice直接在以太坊链上(而不是通过fact registry契约)将1ETH传输给Bob,那么CT就不能满足执行前提。
在上述情况下,事实登记合同需要一个函数transfer(),其中Alice作为收款人传入Bob的地址。transfer()函数做两件事:(1)将要传输的ETH发送给收款人;(2)保存传输记录,例如将传输相关参数(sender、paye、amount)的散列值存储到合同的存储项中。fact registry contract还有一个isvalid()函数,它将哈希值作为参数并返回布尔值。如果合同中输入的哈希值等于合同中记录的哈希值,则返回true。这样,合同中记录的散列值就可以看作是事实(事件发生)的证明。将新事实引入事实登记合同的过程通常称为“事实登记”。
签名CT中包含的链上事件的指纹有两个字段(实际上是这两个参数的散列值):(1)事实注册合同的地址;(2)应记录在合同中的事实。
Starkex有条件交易
Starkex批量打包layey-2中的事务,并使用发送到链的stark证书来结算事务。如果CT包含在一个批次中,starkex将确保相关事实已经登记,以便该批次可以被清除;否则,整个批次将被回滚。
有条件交易的情况
在本节中,我们将提出一些应用场景,并指出如何在这些场景中使用CT。
详细案例:快速取款
在任何L2方案中,将资金从L2转移到L1的主要方法是终止L2的状态更新(包括取款交易)。在一个基于有效性证明(比如starkex)的系统中,在链上提交一个对应的有效性证明需要10分钟来进行最终的L2状态更新。这意味着,如果用户使用这种方法取钱,他们必须等待至少10分钟。
快速取款的目的是将这种依赖性解耦(取款取决于L2状态更新),这样用户就可以在“阻塞时间”内不受信任地取款,也就是说,就像使用普通的以太坊合同一样。
过程是什么?如果Alice想从L2到L1取1个ETH,Alice可以在L2上签署CT,将1个ETH转到LP,前提是LP将1个ETH(减去一些手续费)转到L1上的Alice。Alice的CT只有在收到L1的转移后才能执行,因此她不会面临对方的风险。
让我们看看一个简单的事实登记合同,它可以帮助CT
我们可以看到,此合同有一个payabe函数transfer(),它有两个函数:
(1) 将一定数量的ETH转移到一个地址
(2) 寄存器keccack(数量、地址、nonce)
Alice签名的CT只能在keccack(1ETH,Alice,nonce)在事实注册表中注册后执行。事实上,只有在1 ETH转让给Alice后,注册才能成功。艾丽丝可以不信任地干掉一个人。整个过程只需要她和以太坊链上的LP发起一个事务。
更多应用场景
类似的过程可以捕获以下类的事件,因此L2 CT可以有更多的用途,例如:
如果ETH的价格降到1010dai(它可以通过已知的信息输入服务在链上注册),Alice希望在L2卖出1ETH,在L1换成1000 Dai
只要Bob以Alice的名义在Alice指定的DAPP(例如AAVE或Compound)中存储9.5 ETH,Alice就想在L2上给Bob 10 ETH
爱丽丝想在devosifi的L2上给鲍勃10 ETH,只要鲍勃把9.5 ETH存入爱丽丝在dydx L2的账户
总结
CT的第一个用途是快速取款,但starkex操作员可以将此组件用于多种l2-l1交互。
文章标题:条件转移:L1-L2互操作性的关键
文章链接:https://www.btchangqing.cn/215521.html
更新时间:2021年03月21日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。