背景
上篇文章介紹 Libra 區塊鏈後,本文我們將介紹 LibraSwap,這是個實驗性質的專案,旨在實作 MVP 來實現 Libra 與 ETH 之間的 Swap 互換。挑選這個專案的原因,一方面是為了學習 Libra 區塊鏈,另一方面是我們對於以太坊區塊鏈較為熟悉,但是考量目前 Libra 測試鏈上僅能收送交易,尚無法部署合約交易功能,所以這個專案我們將會實作單方向的 Swap 互換。
問題描述
本專案將基於 Loi Luu 的文章 — “Bringing Bitcoin to Ethereum”,實現 Libra 與 ETH 的互換,想法是有人手上有 Libra,但想透過他人來交換其手上的 ETH。
假設 Libra:ETH = 1:1
- A 有 1 Libra
- B 有 1 ETH
- A 與 B 要做鏈上的 atomic swap A ↔ B
最終:
- A 會拿到 1 ETH
- B 會拿到 1 Libra
技術上,我們可以透過兩個支援智能合約的區塊鏈來實現代幣間的原子交換 (Atomic Swap)。但由於目前在 Libra 上還無法部署合約交易,所以在實作上會有些簡化。
Overview of LibraSwap
正常的流程如下:


但由於 Libra 目前尚不能在鏈上與合約互動,因此我們修改了流程,我們將步驟 3–5 簡化成,當 A 執行 Libra 交易到 B 的地址後,再由 B 將秘密交給 A 領取 ETH


流程圖


DEMO
以下 demo 的原始碼均有 open source — “Libra swap”
步驟一
部署智能合約。


步驟二
B 產生一組密碼及密碼鎖。


步驟三
B 初始化 swap 智能合約,指定收款方為 A,並且將 1 ETH 存入合約當中。


步驟四
A 傳送 1 個 LIB token 給 B。


步驟五
B 驗證 Libra 交易。如果驗證成功,B 將密碼私底下交給 A。


步驟六
A 透過 B 的密碼至合約取款。


結論
在上述的文章中,我們實現了一個 LibraSwap MVP 功能,透過簡化 Libra 鎖定交易的流程,以及在 Ethereum 上的 Hash Time Locked Contract 合約。但事實上,這樣的交易對於 A 是有風險的,因為他必須信任 B 會在 A 轉帳後,並給予秘密,在這樣的場景中,B 更像是一個 Trusted custodian。
為了實現使用者與無需信任的監護人(Trustless Custodian) 之間的代幣交換,我們需要智能合約來驗證 Libra 上的交易,我們將在下篇文章介紹 Trustless Custodian 的設計。