LibraBridge: 連接 Libra 與 Ethereum

Chang-Wu Chen
Oct 4, 2019 · 5 min read

在前面的文章中,我們介紹過 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 交易所的情況下來實現呢?


方法

正常的情況下,首先 MAX 會在 LibraContract 中放入保證金,作為履約保證,而合約內的保證金僅能在一定時間後才能由 MAX 取回,其他時間保證金則由非受第三方控制的合約鎖定與保管。而當用戶想與 MAX 進行幣幣交換時,會先查詢合約上是否有足夠的保證金,如果有的話,則將手上的 Libra 資產傳送到 MAX 的 Libra 地址,而當 MAX 確認後,則會在以太鏈上傳送等值的 ETH 給用戶,以完成本次交易。

同樣的,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 應用的發展,這將會是相當大的優勢。

getamis

Using breakthrough blockchain technology, Amis has created a standardized platform to let business create information exchange systems and make transaction data open and shareable to improve the quality of life for everyone.

Chang-Wu Chen

Written by

getamis

getamis

Using breakthrough blockchain technology, Amis has created a standardized platform to let business create information exchange systems and make transaction data open and shareable to improve the quality of life for everyone.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade