http://www.7klian.com

引介 | 有条件转账 —— 实现 L1-L2 互操纵性的要害

引介 | 有条件转账 —— 实现 L1-L2 互哄骗性的关键


本文意在讲授 StarkEX 为支持快速取款(Fast Withdrawel)(在一个区块时间内从 Layer-2 中取款到任意 Layer-1 地点)而提出的办理方案。本方案的利益在于,其速度完全独立于 L2 的运营者生成有效性证明的速度。

快速取款模块已经运行在以太坊主网的 StarkEx 上(自 2020 年 10 月 StarkEx 2.0 宣布始),而且赋能了 DeversiFi 生意业务所和 dYdX 生意业务所。

而下文我们讲授的方案除了快速取款以外,尚有很是多的利用场景。我们先来相识一下需求是什么。


需求


区块链使得两方之间的免信任交互成为大概。Alice 想宣布一笔仅在特定条件满意时才气执行的生意业务;Bob 但愿在条件满意时能直接执行 Alice 的生意业务、不必再次得到 Alice 的许可。我们把支持此类交互模式的元件称作 “有条件生意业务(Conditional Transaction,CT)”。

在 L1 上实现 CT 不需要什么奇思妙想,因为智能合约可以担保时间和生意业务执行的耦合。但假如要求在 L2 中实现,那就有些挑战了。好比,在 StarkEx 中,生意业务提倡人签名之后把生意业务通报给运营者,后者有责任来执行这笔生意业务,但是你用什么步伐来阻止运营者在所需条件满意之前就执行这笔生意业务呢?

在本文中,我们只聚焦于在 L2 上实现依赖于 L1 事件(记作 L2 | L1)的 CT。也就是说,这种 CT 要能担保,运营者仅能在某个链上事件产生之后才气执行某笔签过名的生意业务。更进一步,我们将插手一种依赖于另一个 L2 中事件(记作L21 | L22 )的 CT,从而支持 StarkEx 实例之间以及 StarkNet 中的互操纵性。

下面,我们来形式化这种链上事件的观念,看看我们如安在 StarkEx 中的 CT 如何操作它。


有条件生意业务简介


链上事件的注册

CT 利用了 Fact Registry 合约来跟踪链上事件。实际上,只有在一个 Fact Registry 合约中注册了的事件,才气 “解锁” CT。举个例子,假如 Alice 直接在以太坊链上转账了 1 ETH 给 Bob(而不是通过 Fact Registry 合约),那 CT 是不能因此满意执行前提的。

在上面这个案例中,Fact Registry 合约需要一个函数transfer(),Alice 传入 Bob 的地点作为收款方。transfer()函数做两件事:(1)把需要转移的 ETH 发送给收款方;(2)生存对这笔转账的记录,好比存储这笔转账相关参数(发送者、收款方、数额)的哈希值,到合约的存储项中。Fact Registry 合约还带有一个isValid()函数,接管一条哈希值作为参数,返回一个布尔值 —— 假如该条输入的哈希值便是合约中记录的某条哈希值,就返回True。如此,这个记录在合约中的哈希值,就可以当成是一个事实(某个事件已经产生)的证明。这个为 Fact Registry 合约引入一个新的事实的进程,凡是称为 “事实注册”。

一笔签过名的 CT 所包括的链上事件的指纹有两个字段(实际上是这两个参数的哈希值):(1)一个 Fact Registry 合约的地点;(2)上述合约中该当记录的事实。


StarkEx 有条件生意业务

StarkEx 会批量打包 Layey-2 中的生意业务,并利用一条发送到链上的 STARK 证明来结算这些生意业务。假如某一批次中包括 CT,StarkEx 将担保相关的事实已经注册,以便能清算该批生意业务;不然,整批生意业务城市回滚。


有条件生意业务的案例


在本部门,我们会提出一些应用场景,并指出 CT 如何能用在这些场景中。


具体案例 —— 快速取款

在任意 L2 方案中,最低级的从 L2 转出资金到 L1 中的步伐即是终局化一次 L2 的状态更新(在该次更新中包括一笔取款生意业务)。在基于有效性证明的系统(好比 StarkEx)中,终局化一次 L2 的状态更新需要在链上提交一个相应(于此次更新)的有效性证明,一般来说需要 10 分钟。这就意味着,假如用户利用这种方法来取款,就不得不期待至少 10 分钟。

而快速取款的用意正是为相识耦这种(取款对 L2 状态更新的)依赖,让用户可以或许在 “区块时间” 内免信任地将资金取出,也即,就像利用普通的以太坊合约一样。

那到底是怎么个流程呢?假如 Alice 想要从 L2 中取出 1 ETH 到 L1,Alice 可以在 L2 上签名一条将 1 ETH 转移给活动性提供者(LP)的 CT,条件是 LP 在 L1 上转移 1 ETH(减去一些手续费)给 Alice。Alice 的 CT 仅能在她收到 L1 上的转账之后才气执行,所以她不谋面对敌手方风险。

我们来看一个可以或许协助 CT 的浅易的 Fact Registry 合约:

引介 | 有条件转账 —— 实现 L1-L2 互哄骗性的关键


我们可以看到这个合约有一个 payabe 函数transfer(),它的成果有两个:

(1)转移必然数量的 ETH 到某个地点

(2)挂号 keccack(amount, address, nonce)

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