LibraBridge: 连接Libra与Ethereum

在前面的文章中,我们介绍过LibraSwap,但实际上透过Libra SPV,我们可用于搭建Libra与Ethereum之间的桥梁,称做LibraBridge。利用SPV validation实作跨链的代币交换不是新的创举,过去有许多项目利用这个方法来桥接两个不同的链上资产,如下。SPV是一种用于轻节点验证交易的方法,透过智能合约的协助,我们可以在合约上验证来自Libra的交易。

  1. BTC Relay
  2. Bringing Bitcoin to Ethereum
  3. peaceBridge: Connecting Ethereum Classic and Ethereum

下文中,我们将介绍如何在Libra与Ethereum上搭建一个无需信任的托管服务(Trustless Custodian)。主要的合约原始码在这: Libra.sol

问题描述

在上篇介绍LibraSwap 的文章中,我们实现了Libra 与ETH 间的代币互换,但在仅有一条链支持智能合约的情况下,我们无法直接执行原子代币交换(Atomic Swap),而必须透过可信任的第三方来确保交易执行,这离去中心化还有点距离。但实际上,透过协定的设计,我们是能够实现无需信任的托管服务。

举例来说,假设我手中只有Libra 代币,而MAX 交易所有卖ETH,我想与其币币交换。最简单的作法就是从MAX 入金Libra 并与之交换ETH,而前提是相信MAX 会出金。

注: MAX 是一间中心化交易所,但下图的交易系指链上交易,而非来自资料库更新。

如果问题变成,同样要做币币交换,是否可在不完全信任MAX 交易所的情况下来实现呢?

方法

情况 1

正常的情况下,首先MAX 会在LibraContract 中放入保证金,作为履约保证,而合约内的保证金仅能在一定时间后才能由MAX 取回,其他时间保证金则由非受第三方控制的合约锁定与保管。而当用户想与MAX 进行币币交换时,会先查询合约上是否有足够的保证金,如果有的话,则将手上的Libra 资产传送到MAX 的Libra 地址,而当MAX 确认后,则会在以太链上传送等值的ETH 给用户,以完成本次交易。

情况 2

同样的,MAX 会抵押保证金,以取得用户的信任,相信可与之币币交换。但若MAX 收到Libra 后却没转送ETH 给用户,即违约,由于合约内含一个违约挑战的功能,若用户可以出示在Libra 上的转帐证明,则可递交证明作为凭据。而链外转帐的证明可由Libra SPV 来进行交易验证,当能够证明某笔交易已经被核定,而这正是SPV 的既有功能。另一方面,MAX 作为违约的一方,将由公正第三方的合约,削减合约上的押金作为给用户的归还,甚至再由保证金多付出该笔交易x% 的罚金来补偿用户。

其他讨论

这是个桥接Libra 与Ethereum 的PoC,一些细节上我们并没有优化,加上Libra 在我们过去一个多月的开发中就改版了几次。但我们相信,若Move 合约语言成熟,而Libra 上也可以部署合约交易,我们预期会看到更多的合约应用。以下列出一些未来可以优化的细项:

  • 支援SHA3–256

在目前的LibraContract 上有关SPV 的设计,由于Libra 上是采用SHA3–256,而EVM 本身并不支持,仅有SHA-256, KECCAK-256, RIPEMD-160 及即将升级会支援的BLAKE2b。故我们先以KECCAK-256 替换掉Libra-core 的SHA3-256 套件,让SPV 可以在EVM 正常运作,作为一种过渡方案。另一种方法则是直接在智能合约中实现SHA3–256。

  • 需要可信任的资讯来源

为了让SPV 能够正确被验证,轻节点需要向全节点询问merkle root 与merkle branch。但是,如果得到的资讯是错的,那么SPV 验证则会出错。目前,由于Libra 上的全节点仅由联盟成员所维护,我们姑且可以相信资讯是正确的。

另一种方法是,我们可以将state root 的版本资讯,由可信方记录在合约之中,但这件事在Libra 上成本会相当高因为以下的原因,第一:Libra 每个tx 就是一个version ,第二:Libra 的交易速度比以太坊快,要记录的资讯量相对大,第三,即使减少资料纪录量,每一笔纪录在链上都需要成本

  • 需要有安全的轻节点

由于全节点都是由Libra联盟成员所维护,相信未来Libra的发展将会在钱包服务上,因此,保护私钥将成为一大重点。由于Libra支援EdDSA签章演算法,加上iPhone的Secure Enclave (SE)支持ed25519,或许可以直接将私钥保管在SE中。而另外一种方法则是透过门槛式签章演算法( Threshold Signature Scheme )来保护私钥,目前Zengo的团队已经在Libra的钱包中实现了该种方案。刚好TSS也是AMIS提供的服务之一,并且我们能够在算法上提供当责性(Accontability)的支持,而这是目前其他TSS所缺乏的。

讨论

SPV 验证与协定设计让我们能够实现无需信任的托管服务,并无需仰赖区块链都支持智能合约。此外,一个可受信任的托管服务,相较于点对点的直接交易,资金池在流通性上来的更有优势,但相对也有一些挑战需要克服。这个专案只是个prototype,毕竟未来若Libra 真的成为全球货币,让Libra 在不同链之间进行流通将有助于市场流动,加上Ethereum 目前在DeFi 应用的发展,这将会是相当大的优势。

本文链接地址:https://www.wwsww.cn/Libra/5972.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。