Canal: 一種跨鏈交易解決方案

買賣虛擬貨幣
隨著區塊鏈技術的發展,基於區塊鏈的數字貨幣也大量湧現。這些數字貨幣分佈在不同的區塊鏈網路中,無法直接進行資料互通,因此主要藉助於數字貨幣交易所進行交易。傳統的數字貨幣交易所多為中心化的服務,在安全性、隱私性等方面都受到挑戰。而執行在鏈上的去中心化交易所,因為其資料透明、隱私保障、實時結算等優點,越來越受到廣泛的關注。當前提出的去中心化交易所大都只實現了同一條鏈上的代幣交易,並不能實現跨鏈的數字貨幣交易,限制了去中心化交易所的應用場景。本文提出了一種去中心化的數字貨幣交易所的解決方案,使用該解決方案可以實現跨鏈的數字貨幣交易。這裡我們僅闡述基本的想法,具體的設計和開發仍在進行中。我們將這個解決方案稱為運河(Canal),因為運河實現的是多個城市之間的貨物運輸和交易。該方案設計的初衷是,當使用者使用一鍵發鏈服務釋出了自己的區塊鏈後,可以藉助該解決方案實現與其他鏈上數字貨幣的兌換,從而方便數字貨幣的流通。相關技術去中心化交易所目前提出的去中心化交易所可分為以下兩類。
掛單撮合包括0x[1]、Kyber Network[2]在內的去中心化交易所繫統都屬於掛單撮合交易的型別。使用者透過智慧合約釋出自己的買單或者賣單,然後系統幫助尋找最合適的買賣單組合進行交易。這種去中心化的交易所可以看做是把原本中心化交易所的交易流程移植到了鏈上,交易的流程機制並未發生變化。這種交易方式的優點如下:· 交易透明:掛單資料完全公開;· 資金安全:數字貨幣透過智慧合約管理,交易完成後及時轉至使用者賬戶;· 交易成本低:除了區塊鏈gas,沒有第三方費用。
缺點如下:· 交易在區塊鏈上完成,交易速度慢;· 市場不活躍時,買賣雙方難以達成一致,流動性變弱。自動定價Bancor Network[3]透過智慧合約,實現了使用者和數字貨幣資金池之間的自動定價交易。交易流程如下:· 搭建交易合約,並往合約裡存入一定數量的數字貨幣A和B作為初始時刻的資金池;
· 當使用者需要使用A幣換取B幣的時候,先把A幣存入合約的資金池中;然後系統會根據當前合約中的A、B幣的存量計算出A至B的轉換率,並把資金池中對應數量的B幣轉至使用者賬戶。· 如果使用者不斷地使用A幣換取B幣,則資金池中的A幣增加,B幣減少,從而轉換率降低,即A幣能換取到的B幣減少。自動定價交易的優點如下:· 無需支付鉅額上幣費用。· 使用者買賣不需要掛單,可隨時交易。· 保證流動性,使用者無需擔心交易深度。
缺點如下:· 需要專案方提前質押一部分幣到系統中· 當前只支援同一條鏈上的數字貨幣轉換跨鏈技術區塊鏈網路之間資料無法互通,極大程度的限制了區塊鏈的應用空間。跨鏈技術旨在解決這一問題,實現區塊鏈之間的資料傳輸。目前市場上的跨鏈解決方案,僅僅實現了不同區塊鏈上價值的交換,而並未實現交易功能;即數字貨幣僅能按照預先約定的轉換率進行轉換,而不能隨著市場動態變化價格。這點一定程度上阻礙了數字貨幣價值的自由流動,也限制了跨鏈技術的應用空間。跨鏈的解決方案可以分為兩類。
中繼一類是使用一條主鏈連線各個側鏈,實現側鏈之間的資料互通,這條主鏈通常稱為Hub或Relay。比如Cosmos[4]、Polkadot[5]等,其基本思想大體一致:1. 主鏈採用dPoS(Delegated Proof of Stake)、PoA(Proof of Authority)等弱中心化的共識演算法,即區塊的產出是由少數超級節點完成的,或者可以稱之為聯盟鏈。2. 主鏈的超級節點監控側鏈的資料變化,然後在主鏈產生相應的資料;或是監控主鏈資料的變化,在側鏈產生相應的資料。從而實現主鏈和側鏈資料的互通。這種跨鏈模式的優點是資料傳輸快速高效,且可以傳輸鏈上任何形式的資料;缺點是帶來了中心化,即跨鏈資料的準確性和完整性依賴了聯盟鏈的超級節點。原子交換
原子跨鏈交換[6]是使用區塊鏈的指令碼,實現兩個區塊鏈網路中的數字貨幣進行原子交換。這裡原子的意思是指,交換雙方在兩個區塊鏈系統上釋出的兩筆交易必須同時完成或同時失敗。其具體步驟如下:1. Alice用自己的A幣交換Bob擁有的B幣。2. Alice建立交易,將A幣支付給一個輸出指令碼,這個指令碼需要用一個Alice自己知道的key和Bob的簽名才能解開。3. Bob看到這筆交易後,也建立交易,將B幣支付給一個輸出指令碼,這個指令碼需要同樣的key和Alice的簽名才能解開。4. Alice用key和簽名解開Bob建立的交易,將B幣轉移至自己的賬戶地址,key會隨著轉移操作而上鍊。5. Bob看到鏈上的key之後,使用key和自己的簽名解開Alice建立的交易,並將A幣轉移至自己的賬戶地址,交換完成。
6. 如果Alice和Bob在過程中終止操作,則兩筆交易在一定時間後,會分別退還給Alice和Bob,交換失敗。這種跨鏈模式的優點是完全的去中心化,交換不依賴任何第三方;缺點是一次交換過程必須依賴4次交易才能完成,速度慢效率低。演算法介紹

本文提出了一種去中心化的跨鏈數字貨幣交易所解決方案。其交易流程由一個聯盟鏈網路和多個智慧合約完成。以這樣一個場景為例進行說明:側鏈A上的數字貨幣需要換成側鏈B上的數字貨幣,我們透過主鏈作為中繼完成這筆交易。 

主鏈

主鏈採用聯盟鏈。聯盟鏈的超級節點透過交易所的所有使用者投票得到,或其他任意方式。超級節點負責驗證區塊鏈上的所有交易,併產生新的區塊。主鏈連線了所有需要進行交易的側鏈,從而保證了資料可以進行跨鏈傳輸。同時,主鏈負責執行數字貨幣交易所需的智慧合約。方案的細節將在下文中描述。

跨鏈

跨鏈部分採用中繼的模式,由兩個合約組成,一個部署在主鏈上,稱之為主合約,另一個部署在側鏈上,稱之為子合約。子合約是用於使用者在側鏈上進行充幣和提幣的,和中心化交易所中的充提幣概念一致。主合約是用來同步使用者的充提幣和交易記錄,並且儲存使用者餘額的。

跨鏈步驟如下:

充幣
· 使用者向側鏈A上的子合約中存入需要兌換的數字貨幣A。
· 超級節點監聽到子合約地址下的數字貨幣A數量變化,然後在主合約中往使用者的地址下增加相應數量的代幣。

交易
· 使用者操作用主合約中自己地址下的代幣呼叫交易介面。
· 介面將轉換後的數字貨幣B轉移至主合約B的使用者地址下。

提幣
· 使用者向側鏈B的子合約發起提幣請求。
· 超級節點監聽到側鏈B上的提幣請求,然後銷燬主合約中使用者的代幣,並在側鏈B上將對應數量的數字貨幣B轉移至使用者地址下。

交易

交易採用自動定價的模式,由一個智慧合約組成。合約在初始化的時候,需要充入一定數量的數字貨幣A、B,作為資金池,從而實現A與B之間的交易。

交易的流程如下:

· 使用者想將一定數量的數字貨幣A轉換為數字貨幣B。
· 使用者將需要轉換數字貨幣A存入合約地址下,進入資金池。
· 系統根據需要轉換的A的數量和當前資金池中A、B的存量,計算出能轉換到的B的數量。
· 系統將轉換到的B從系統的資金池轉出到使用者的地址。

步驟3中的轉換計算需要遵循以下原則:

· 資金池內的A越少,則A到B的轉換率越高。B也亦然。
· 不能將資金池中的任何一種數字貨幣用盡,否則則無法繼續轉換。

基於以上原則,轉換的邏輯可以有多種設計。例如:

· 假設資金池中的數字貨幣A、B的存量分別為a0、b0(a0 > 0,b0 > 0),使用者想要將△a(△a > 0)的數字貨幣A轉換,得到△b(△b > 0)的數字貨幣B。
· 則能轉換到的B的數量為:△b =( b0 *△a ) / (a0 + △a)。
· 可以看到,△b是b0的增函式,是a0的減函式,符合上文中的原則1。
· 可以看到,△b < b0,則資金池中的B不會用盡,符合上文中的原則2。

總結


在設計的過程中,我們有兩點思考。第一,我們覺得不應過分強調去中心化,而犧牲交易的效率;因為如果交易的速度太慢,則會影響使用者的體驗;而去中心化的需求在一個聯盟鏈的系統中,透過投票給可信的超級節點,也是一定程度上可以滿足的。第二,自動定價交易的模式在實際的使用中應該是明顯優於掛單交易的,因為很多新發的數字貨幣交易量小流動性無法保證,而自動定價交易的模式很好地解決了流動性的問題。

參考文獻

[1] 0x protocol. https://www.0xproject.com/
[2] Kyber network. https://kyber.network/
[3] Bancor. https://www.bancor.network/
[4] Cosmos. https://cosmos.network/
[5] Polkadot. https://polkadot.network/
[6] Atomic Cross-Chain Swaps. https://arxiv.org/abs/1801.09515

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;