當傳統局域網被打通後,人類迎來了互聯網浪潮的大爆發。而當不同區塊鏈連接在一起時,人類必將徹底改變價值傳遞方式。Wanchain 正構建分佈式金融基礎設施,讓價值交換完全去中心化,讓傳統資產和數字資產這兩個平行世界能夠交織在一起。
——呂旭軍,Wanchain 創始人

去年今日,Wanchain 跨鏈團隊發表了一篇區塊鏈跨鏈機制詳述的文章,不僅詳細介紹了 Wanchain 的跨鏈機制,也介紹了當時的跨鏈背景和現狀。光陰荏苒,一年的光景在變幻莫測的區塊鏈行業是漫長的,很多紅極一時的概念如今早已無人問津,但跨鏈,註定會成爲區塊鏈行業永恆的話題,除非未來某一天,我們真正迎來了那個萬鏈互連的大千世界。下面,讓我們一起重溫這篇由 Wanchain 跨鏈團隊出品的經典文章吧!

原文標題:《區塊鏈跨鏈機制詳述 —— Wanchain 的跨鏈機制》
撰文:呂旭軍,Wanchain 創始人

區塊鏈技術發展至今,誕生了無數條不同的鏈,衆多鏈的信息隔離不可避免的形成了區塊鏈的價值孤島效應。跨鏈從字面上的理解就是把不同的區塊鏈連接起來,就像兩島之間建橋相連一樣。建橋的方案是一方面,但至少要搞清楚這座橋要通行的是什麼,行人、行車、行火車?衆多區塊鏈項目都提到了跨鏈,跨鏈的本質到底是什麼,跨鏈需要解決的是什麼問題卻鮮有探討。

作爲一個嚴謹的跨鏈技術項目,我們準備通過本文闡述我們的觀點,並希望引起整個區塊鏈行業對這一問題的深入探討和思考。同時我們也將在本文中公佈 Wanchain 的跨鏈機制。

1 什麼在跨鏈

區塊鏈發展至今,創造了無數的 token,不同的 token 本質上是一種記賬符號,某種價值的符號表現。這一符號可以是作爲價值尺度的「貨幣」符號(如比特幣),或者是某種「內在價值」的虛擬化符號。暫且拋開貨幣型的 token 不談,基於區塊鏈 token 的「內在價值」類似於傳統金融意義上的資產「內在價值」:現代金融的重要特徵是實際資產的價值化,實際資產被以貨幣爲度量的金融虛擬資產(如股票、金融衍生品等)所表徵,社會實際資產的積累也表現爲虛擬資產的積累。區塊鏈爲某種「內在價值」提供了更加便捷、透明和公平的記賬方式,區塊鏈上的 token 可以讓更大範圍的「內在價值」被體現。

簡單來看跨鏈就是解決如何讓一條鏈上的 token 轉移到另一條鏈上,從技術層面來看 token 是一段數字信息,很多人會將 token 理解爲信息的傳遞,如果 token 的傳遞只是簡單信息傳遞的過程,那在分佈式的系統中,中本聰也沒有必要設計精巧的 POW 機制來解決雙重支付問題。正如上文中所述,token 代表的是某種價值,價值就需要有精確的記賬作爲保證,否則價值將煙消雲散。在傳統世界中,中心化的記賬體系下,無論是出於責任、義務還是商業利益,央行、商業銀行、支付機構、證券交易所、證券登記機構、房產登記機構在確保各類價值記賬的精確性。而在區塊鏈世界中,記賬的精確性就由一個個分佈式的區塊鏈賬本保障,所以說跨鏈的不只是信息流,更是信息流背後的需要被精確記賬的價值。

2 跨鏈不只是信息的傳輸

區塊鏈記錄的是價值,跨鏈的也是價值,如果從記賬的角度,單一區塊鏈解決的是分佈式情況下如何精確記賬的問題,跨鏈解決的是兩個分佈式賬本針對同一用戶或不同用戶控制的賬戶發生 token 轉移時,如何在兩個賬本中精確記賬的問題。很多白皮書或者技術文章中把跨鏈稱爲協議,但這個協議不完全等同於互聯網的 TCP/IP 那樣的信息傳輸協議,因爲信息傳輸協議只需要確保接收方收到完整信息,發送方得到相應的反饋,在這個過程中如果出現傳輸障礙是可以多次反覆的發送,而不用考慮信息重複發送的問題。但是在賬本之間同步數據,就需要確保兩個賬本的變動是一致的,否則就會出現雙重支付或者價值丟失的問題。在這過程中信息傳遞只是兩個賬本同步數據的過程,而不是最終的目的和結果。跨鏈本質是在價值守恆定律前提下,價值在不同區塊鏈之間流動的過程。

3 跨鏈的屬性

由於區塊鏈技術快速發展,每一條鏈的記賬機制、共識機制都有區別,建立通用的跨鏈協議就變的更加複雜。這完全不同於互聯網中所說的「協議」(protocol),而更像是「協定」(agreement)。如果用現實世界舉例,「協議」(protocol)類似於傳真機和集裝箱,這類協議相對容易達成,而且一旦達成,將被更大範圍內使用,規模效應明顯。而跨鏈「協定」(agreement)更像是雙邊和多邊的貿易協定,在達成和實現過程中個性化更加明顯,大範圍的統一更加困難。如果把每一個區塊鏈生態看成一個經濟體,‘’協定‘’就更加貼切了。

現實世界中的「協定」(agreement)不只是一個技術問題,協定的達成是需要參與方協商一致的,但是在區塊鏈的世界中,「協定」(agreement)的對象不是一個主體,而是一個分佈式的網絡,希望通過傳統的主體談判模式達成「協定」基本不可能 —— 因爲沒有主體,比特幣生態內部調整內部協議(如擴容)都無法達成共識,與其他區塊鏈網絡達成跨鏈協定更加不可行。區塊鏈世界的跨鏈「協定」(agreement)變成了一個技術問題,需要通過技術的方法實現兩個賬本的跨賬本精確記賬問題。

分析到此,跨鏈稱爲協定(agreement)和協議 (protocol) 都是不準確的,而是一種機制(mechanism)。

4 跨鏈的意義

跨鏈本質上是一套鏈和鏈之間的清算機制,而清算的本質就是精確記賬。中本聰把比特幣描述爲一套點對點的現金系統,實際上是一套點對點的賬本或者說是一套點對點的清算機制。如果全球只有一套比特幣賬本,中本聰的目標就實現了。而區塊鏈的發展趨勢看,無論是技術實現的角度還是商業應用的角度,一套賬本是不可能實現的。相反無數的區塊鏈出現,區塊鏈世界正在向哈耶克描述的自由市場方向發展。清算能力是任何價值交換市場存在的基礎,沒有便捷的清算,市場就會缺乏流動性,更繁榮的市場就無法出現。

數字貨幣發展至今,交易所功不可沒,交易所除了提供價格發現的能力外,更重要的能力在於增強流動性。但成也蕭何敗也蕭何,交易所中心化的弊端一直伴隨着數字貨幣的發展,黑客攻擊、交易所跑路、後臺不透明等問題成爲數字經濟的阿克琉斯之踵。跨鏈的意義之一就在於通過分佈式的方式提供鏈和鏈之間轉賬的清算機制。

很多時候,大家會把交易所的能力與跨鏈提供的能力混爲一談。實際上是有區別的,首先交易所本身爲 token 提供價格撮合機制,其次交易所是一個集合了各種 token 賬本的清算中心,只不過這個清算中心是中心化的。應該說後者是前者的基礎,沒有後者撮合交易是不可行的。而跨鏈機制是通過分佈式的方式提供更基礎的清算能力。分佈式跨鏈清算能力的建立也是分佈式交易所產生的前提。

記賬和清算是一切金融活動的基礎,現代金融業的所有金融活動都是基於銀行系統提供的基礎清算能力而展開的。無論是簡單的轉賬業務、存貸,還是跨國支付,第三方支付,基金,保險、金融衍生品都是基於銀行系統提供的基礎清算能力。類比到區塊鏈世界是同樣的道理,數字世界的泛金融應用創新與跨鏈清算能力密切相關。

5 跨鏈的應用場景

分佈式交易

當前的區塊鏈世界的清算體系是由一個個分佈式的區塊鏈網絡與一個個中心化的交易所共同構成的。在很多時候,中心化交易所的作用甚至超過了區塊鏈網絡本身,例如很多擁有 Token 的用戶從始至終都沒有使用過區塊鏈錢包,而是把交易所的機制當成了區塊鏈的全部,甚至根本不關心區塊鏈的意義所在。中心化交易所在放大區塊鏈意義的同時也在扭曲它。

讓我們回顧區塊鏈經濟簡短的交易發展史,在最初只有比特幣的時代,法幣與比特幣的交易機制讓比特幣這個極客圈子的「玩具」有機會與現實世界接軌,讓更多人有機會持有比特幣。隨着更多 Token 的誕生,法幣交易通道的減少,幣幣交易讓區塊鏈世界快速發展成爲了一個相對獨立的經濟體系,比特幣成爲了區塊鏈世界中的硬通貨和價值度量尺度。在整個過程中,中心化交易所居功至偉,他們不但是現實世界與區塊鏈世界的出入口,還是不同區塊鏈網絡的連接器。但是問題也隨之而來,交易所成爲了流量的入口,掌握了區塊鏈世界最大的話語權,任何一個獨立的區塊鏈網絡無論大小,都要看交易所的眼色行事,否則無法獲得進入區塊鏈世界的入口,更不可能與傳統世界連接。簡單來說,交易所決定了一個新的 token 是否有資格接入其他 token 以及法幣共同構成的清算網絡。很多區塊鏈項目的發展在被扭曲爲滿足交易所需求的方向上越走越遠。

區塊鏈經濟網絡急需分佈式的清算機制加入,他的意義不在於要迅速替代中心化的交易所,而是帶來一種新的選擇與制衡,讓被扭曲的部分有被矯正的可能,讓區塊鏈的真正價值被再次發掘,讓用分佈式的方式解決分佈式的問題成爲可能。

所以我們認爲跨鏈能力實現後的最重要的應用場景是分佈式交易,這裏包括分佈式交易所、分佈式場外交易、中心化競價撮合與分佈式清結算混合模式的交易所等多種實現模式。

數字金融創新

在以太坊的白皮書中,Vitalik 提到的最重要的應用場景之一就是金融衍生品或者類金融合約應用,這也是智能合約似乎可以發揮最大價值的應用場景之一。我們依然相信 Vitalik 的判斷和理想,只是現實發展情況出現了一些變化。大量的競爭鏈(無論是公鏈還是聯盟鏈)的出現,讓無論是數字資產,傳統上鍊金融資產存在於很多條不同的鏈上,也就是記賬的基礎賬本不同。在此情況下,要實現數字金融創新的前提條件除了智能合約之外,還需加上分佈式的清算能力(跨鏈能力)。否則基於智能合約的應用場景將十分有限。舉個例子,如果一個傳統的金融資產在某個銀行聯盟鏈中,一個數字資產在以太坊網絡,一個穩定貨幣在 Wanchain 網絡,要基於這兩個基礎資產創設一個以穩定貨幣作爲對價的金融合約(以智能合約的方式而非中心化的方式),在沒有跨鏈能力的時候是完全不可行的。因爲要創建這樣一個智能合約,需要首先將上述三個資產轉移到一個區塊鏈網絡中,然後在該網絡中部署智能合約,才能實現通過合約控制三個資產的相互關係。簡單解釋就是先把三個資產放到一個賬本中,再通過智能合約統一控制這個賬本。

具體的應用場景會十分豐富,單純從技術上來看傳統金融可以實現的,數字金融可以實現的更多。描述類似場景的文章很多,在此不再一一展開。

打通兩個平行世界

Wanchain 在白皮書中就提到過,區塊鏈技術在傳統資產上鍊和數字資產兩個領域的發展如同兩個平行的世界。從長遠來看,區塊鏈帶來的社會經濟變革總會讓這兩條平行線交匯在一起。從技術上來看,無論是已經出現的以傳統資產上鍊爲代表的商業聯盟鏈,還是以穩定幣、虛擬資產上鍊爲代表的公鏈項目,甚至是國家數字貨幣爲代表的主權公鏈,最終要發揮更大的商業價值和產生更多的創新應用,都需要跨鏈能力作爲支撐。跨鏈能力是推動基於區塊鏈的數字經濟全面發展和融合的技術驅動力。我們無法預知未來基於區塊鏈的金融是怎樣的一番景象,但是回看歷史,互聯網技術催生的第三方支付、科技金融創新正在以巨大的力量重新雕刻着傳統金融的輪廓,深刻的影響着人類金融的進程。

6 跨鏈的難點

跨鏈從 Blockstream 提出側鏈概念以來,一直是區塊鏈技術的重點攻關方向。目前並沒有被普遍認可的跨鏈機制,原因除了在此之前需求的強烈程度沒有那麼高之外,技術上的難點也是一大障礙。

跨鏈需要解決的兩個難點問題,一個是如何通過分佈式的方式驗證原鏈上的交易狀態。原鏈上的交易信息對於另一條鏈來說是一個外部信息(Oracle),如何保證這個外部信息進入另一條鏈時是正確的就是整個跨鏈機制的重要環節。如果要考慮到使用 POW 機制的區塊鏈上沒有終局狀態(始終存在分叉的情況,只是隨着確認塊的增加,概率逐漸變小),這個問題的複雜度會更高。爲了後文描述的便利性,本文把這個難點定義爲難點 Alpha。

可能對區塊鏈分佈式機制不熟悉的讀者會難以理解這個難點,因爲在中心化機制下,這個難題簡單很多。舉個例子,如果 Alice 用 A 銀行的信用卡在 B 銀行的 POS 機上進行消費,POS 機上的指令會通過 Visa 這樣的組織將刷卡信息傳遞到 A 銀行確認,當 Visa 收到 A 銀行確認信息後,跨行支付就完成了。A 銀行確認的就是 Alice 的交易合法,這時候 B 銀行或者 Visa 不用考慮這筆交易是否真的合法,因爲這時候 A 銀行已經承擔了付款的責任,無論 Alice 是否真有足夠的餘額還是 A 銀行的系統錯誤,都是 A 銀行與 Alice 的事情了。而在區塊鏈分佈式記賬的情況下,沒有一箇中心化 A 銀行來確認並承諾付款。如果將 A、B 銀行替換爲 A、B 鏈,確認 A 鏈上 Alice 的與跨鏈有關的付款交易是否完成就變成了一個難題。

如果驗證跨鏈交易的是分佈式的節點,這個難題會衍生爲如何確保處理跨鏈的節點不作惡。節點作惡就會導致鏈之間信息驗證的錯誤,進而產生雙重支付而給跨鏈用戶造成損失,這與在單一賬本中記賬的節點作惡面臨的情況類似,但是當這個問題放在兩條互不識別的鏈上時,問題的複雜性就變高了。

另一個難點是跨鏈交易要確保原鏈上的 token 總量不會因爲跨鏈而減少或增多(即價值守恆定律定義爲難點 Beta)。原鏈上 Token 總量減少的後果是當 token 需要跨回原鏈時,原鏈無法產生新的 token,也就是隻能單向跨鏈。原鏈 token 增多是名義上的增多,實際上是本來已經跨到另一個賬本的 token 在原鏈上被雙重支付了,這種情況違背了精確記賬的原則,是在任何時候都無法接受的。因此當 token 跨出原鏈時,原鏈上的 token 必然需要進入「鎖定」的狀態,當 token 跨回原鏈時,這些 token 需要被解鎖。如何通過去信任的管理機制完成「鎖定」「解鎖」的過程就成爲了跨鏈的關鍵。

確保難點 Beta 實現的的另一個關鍵是保證交易的原子性。交易的原子性,簡單來說是指交易處理的某個環節停止,整個交易能夠撤銷,而不會存在部分成功,部分失敗的情況。無法保證原子性會造成雙重支付。

以上問題將在後文描述 Wanchain 跨鏈的實現模式時進一步論述。

7 跨鏈的不同模式

繁雜的跨鏈技術分析文章都試圖對跨鏈技術進行分類,經常被提到的如中繼模式(Relay),側鏈模式 (Sidechain) 等,這些分類文章往往沒有弄清楚不同模式解決的是跨鏈中的什麼難題,不同的模式往往只是解決了跨鏈中的某一難題而存在的,放在一起分類不夠嚴謹和科學。下文中我們將詳細介紹和分析目前跨鏈中常用的模式,而不是簡單、粗暴的去做分類。

Relay 中繼

BTC-Relay 是一個在以太坊上部署的 Relay 合約,其目標是通過第三方提交 BTC 的區塊頭,爲以太坊上的跨鏈等其他應用提供一個可信的 BTC 數據源。在 Relay 合約會校驗區塊頭的合法性,由於 BTC 強大的算力保證,第三方僞造合法區塊頭幾乎不可能,因此理論上 BTC-Relay 能夠提供一個客觀的比特幣鏈上的數據。但是 BTC-Relay 的問題在於,由於存儲區塊頭和驗證合法性需要大量的 Gas,第三方提交區塊頭將花費大量的手續費,而調用 Relay 的交易較少無法覆蓋提交區塊頭花費的手續費,如果提交方將調用手續費提高,則調用 Relay 的交易會變少,最終仍然無法覆蓋手續費,對於數據的提交者是不經濟的。BTC-Relay 是平均 10 分鐘提交一次(比特幣出塊速度),如果是提交出塊速度很快的鏈的區塊頭,提交所有區塊頭本身將是一筆巨大的開銷。

Relay 本身並不是一個完整的跨鏈方案,而是爲解決跨鏈中的原鏈數據的客觀性問題(難點 Alpha),該機制不涉及交易的處理。

側鏈

跨鏈概念的鼻祖毫無疑問是 Sidechain 的提出者,Blockstream 團隊。其論文中對於跨鏈涉及到的難題,提出使用雙向錨定(two-way peg)的方法:爲了將父鏈幣轉移爲側鏈幣,父鏈幣被髮送到父鏈上的一個特殊輸出中,該輸出只能由側鏈上擁有的一個 SPV 證明來解鎖。SPV 是一個包含了交易所在的區塊頭和交易本身的密碼信息。這種方法存在兩個問題,一個是 SPV 證明的大小和驗證過程的複雜性都要遠大於普通交易的驗證。另一個是,現有區塊鏈的協議中是不包含 SPV 驗證的,兩條鏈都需要更改協議才能實現跨鏈,也就是說需要通過協議的更改讓一條鏈能夠讀懂另一條鏈,甚至進行聯合挖礦。對於後者,前文中我們已經論述過,這幾乎是不可能完成的任務。

無論如何 Sidechain 是第一個將跨鏈的定義清晰描述的,其提出的方案中包含了如何保證交易的原子性(難點 Beta),以及如何通過 SPV 去驗證另一條鏈上的交易狀態(難點 Alpha),整個方案是完整的而且在理論上也十分合理。Sidechain 還提到了另一種更爲簡易的方案:原子交換(Atomic Swap),利用時間鎖及一個密數,直接在需要跨鏈的兩人之間完成交易。這種模式在閃電網絡和 ripple 的機制中也被應用到,原子交換是一種非常巧妙的跨鏈設計。當然可以說閃電網絡和 ripple 本身也是一種跨鏈的機制。Wanchain 在 2.0 版本實現跨鏈的過程中也應用了該機制,後文中我們將詳細描述。

Polkadot

Polkadot 擁有一個比任何跨鏈方案更加宏偉的設想,他提出的機制不只是要解決跨鏈的問題,還是要創造一種異構的,具有可擴展性(Scalability)的架構。相比於 Sidechain 方案只是解決了比特幣與其側鏈的跨鏈問題,Polkadot 的提出者 Gavin Wood 希望用一條中繼鏈(Relay-chain)來實現其他所有鏈的交易的驗證工作(難點 Alpha), 在通過平行鏈的創建實現與原鏈的交易與通信(難點 Beta)。對於中繼鏈,通過多種角色的劃分與分組來實現去信任的驗證機制。而其驗證過程本身並沒有超出 Sidechain 提出的基本的驗證理論。Polkadot 白皮書展示了一個宏偉的框架,但其也承認只是一個框架性的描述,對於細節性的實現邏輯還未展開和進行可行性的驗證。

Cosmos

Cosmos 在某些理念上與 Polkadot 相似,也是希望創造一個異構的系統解決跨鏈問題。其引入了 Hub 與 Zone 的概念,但同樣的問題是跨鏈要面臨的兩個難題並不會因爲是一個異構設計而變的容易解決。根據 Cosmos 目前最新的進展,我們並未看到解決如上問題的細節方案。

由於篇幅原因,更多的跨鏈項目在此不詳細展開。無論是架構上的新思路還是引入很多新的概念,跨鏈都無法繞開我們提到的兩個難點。讀者在剖析跨鏈時,可以更好的從如上兩個點去分析,更容易理解到本質並且不被一些新的名詞或概念所迷惑。

8 Wanchain 跨鏈的實現模式

設計理念

Wanchain 在進行跨鏈設計及實現的過程中,無疑借鑑和參考了衆多前人的經驗並在此基礎上以可用性爲目標,進行了理論和工程上的創新。如果說每一篇關於跨鏈的論文都在爲跨鏈理論做出貢獻,Wanchain 希望基於理論創新在工程上爲區塊鏈的跨鏈做出貢獻,並推動跨鏈技術的落地。

Wanchain 的跨鏈機制遵循如下設計原則:

基於密碼學原理的安全保障

前文提到跨鏈的本質是價值的轉移,因此安全性是考慮的重中之重。Wanchain 的跨鏈機制通過巧妙設計和使用密碼學機制解決難點 Alpha 和 Beta,整個跨鏈流程的安全性基於密碼學原理,這樣從根本上給予了萬維鏈跨鏈機制安全支撐。

異構性與延展性

從架構上來看,Wanchain 是一個異構跨鏈框架,也就是說 Wanchain 跨鏈的機制不只針對某一條具體的鏈,而是希望搭建一個可以不斷延伸拓展的通用機制。這個通用機制確保未來通過社區的開發力量,可以不斷與更多的鏈和鏈上的多種 Token 實現跨鏈交易。

可用性

Wanchain 的跨鏈機制不單純的追求純粹的理論創新和概念設計,而是讓理論設計能夠與工程實現有機結合,在開發過程的每個階段體現出工程上的開發成果以及對於最終用戶或者開發人員的可用性。

迭代開發

考慮到跨鏈機制的複雜性,在跨鏈實現上 Wanchain 進行迭代開發,一方面在確保最小可用功能的情況下完成每一個版本的升級直到最終實現較爲完美的解決方案,另一方面確保代碼的可拓展性,保證每一次迭代的平滑進行。

下文中我們將通過描述 Wanchain 是如何解決跨鏈的兩個難點來說明我們的跨鏈實現方案。

解決兩個難點的方案

難點 Alpha

如何去信任的驗證另一條鏈上的交易,Wanchain 在白皮書中提出了一個角色 Voucher,Voucher 不是單一的個體,而是一個共識組,通過共識去驗證另一條鏈的交易合法性和終局性。Voucher 共識的模式目前正在理論驗證和工程驗證的階段,Voucher 面臨的主要障礙在於工程上和經濟上。工程上 Voucher 信息的提交和驗證如果上鍊,需要耗費較高的鏈上資源,會嚴重限制交易的吞吐量;經濟上,如何通過更合理的激勵機制讓 Voucher 成員積極參與並消極作惡。

在 Voucher 機制沒有完美實現之前,基於可用性與迭代開發原則,我們在即將上線的 2.0 方案中引入了原子互換完成跨鏈的過程。

原子互換的基本原則是不需要第三方公證人,而是讓交易的參與雙方自行判定對方的交易是否完成,通過哈希時間鎖(hash time lock)和密數(Secret)控制,實現交易雙方「一手交錢一手交貨」,也就是兩種不同 token 的互換。這種方式能夠有效的規避第三方公證人不完美的問題。在 Wanchain 的跨鏈過程中,兩種互換的 token 分別是指原鏈 token 與 Wanchain 上的映射 token. 當原鏈上的某個用戶需要發送一筆跨鏈交易使原鏈 token 能夠轉移到 Wanchain 上時,用戶的錢包會構造一筆原鏈交易,這筆原鏈交易被哈希時間鎖鎖定,Wanchain 上負責處理跨鏈交易的 Storeman 在檢測到這筆跨鏈交易後,會在 Wanchain 上發起一筆跨鏈的合約交易,該筆交易負責產生映射 token 並轉移到用戶指定的跨鏈接收賬戶,此時該筆交易被跨鏈合約鎖定。當用戶的錢包檢測到被跨鏈合約鎖定的交易後,主動釋放密數到跨鏈合約中,Storeman 通過該密數獲得鎖定賬戶中對應的原鏈 token 的控制權,用戶獲得 Wanchain 上映射 token 的控制權。如果這個過程中,用戶在哈希時間鎖的時間範圍內沒有釋放密數,則哈希時間鎖到期後,用戶重新獲得原鏈 token 的控制權,跨鏈合約中的交易自動失效。

以上跨鏈過程看似複雜,但多數功能都由錢包和合約完成,用戶只需要在發起交易、釋放密數、撤銷交易的環節進行操作。對於參與跨鏈的 Storeman,Wanchain 會提供專門的客戶端,客戶端根據協議進行無需值守的自動化運行。

難點 Beta

對於原鏈鎖定賬號的去信任管理機制,Wanchain 採用了首創的安全多方計算+門限祕鑰的方式,鎖定賬號的管理者命名爲 Storeman。相關內容詳見 Wanchain 白皮書及黃皮書。簡單描述,對於鎖定賬號的生成到轉賬操作,我們通過密碼學安全多方計算和門限的方法實現了一種小型的共識,參與方必須共同參與計算才能生成鎖定賬號的公私鑰,而鎖定賬戶的私鑰嚴格來說只是理論存在,從沒有實際出現在網絡中,而是以碎片的方式分散在各 Storeman 手中,通過多方計算的方式參與賬戶控制,當需要進行交易時,參與方要再次合力才能共同構造簽名,爲了保證可用性,構造簽名的參與方並不需要完全參與,而只需要達到一個門限值即可(N 個參與者中的 M 個,M<=N)。

理論上 N 與 M 的數量越大,安全性越高,計算代價越大。經過我們理論和工程上的驗證,我們在 2.0 版本中暫時選取 N=21,M=16 的參數運行(與 EOS 的 21 個超級節點數量相同完全是巧合)。經過測試,以如上參數進行交易簽名的吞吐量遠遠大於所需要連接的主流的區塊鏈,也就是說安全多方計算和門限祕鑰方法不會是跨鏈的吞吐量瓶頸。

根據如上機制,16 個以上的 Storeman 成員合謀會造成原鏈 Token 丟失。爲了避免這一問題,類似 POW 或者 POS 的設計,任何參與者都需要付出參與的代價並獲得參與的回報,如果發生合謀行爲,不但整個網絡受害,其自身的投資和未來的收益都將損失。在 POW 中這個代價是購買礦機,在 POS 中這個代價是鎖定一定數量的 Token。我們在 Storeman 機制中引入了類似機制,任何 Storeman 的參與者(Storeman menbers)都必須繳納一定數量的 WAN 到管理 Storeman 的智能合約中鎖定,Storeman 能夠處理的跨鏈 token 數量與繳納的鎖定金相關。同時 Storeman 作爲保證跨鏈機制運行的參與者,會同時獲得系統獎勵和跨鏈手續費。

必須指出的是,當 Storeman 繳納的鎖定金 WAN 相對原鏈 token 的市場價值出現長期的巨大的貶值時,Storeman 依然有合謀的動機。最大限度的避免這一情況,我們引入了兩個機制,一個機制是 Storeman 從申請退出到完全退出,有一個較長的時間週期。在這個週期內,Storeman 無法準確預測市場的波動,也就無法準確判斷是作惡還是按規則遊戲獲得的收益(或者遭受的損失)更大,短時的市場波動就不會造成影響。另一個機制是,通過 Oracle 輸入調整鎖定金的比例。這個 Oracle 輸入在 2.0 版本中會通過基金會完成,之後的版本會通過節點投票的形式完成。

對於保證交易的原子性,我們通過智能合約控制 Storeman 的交易行爲,Storeman 在 Wanchain 上有一個跨鏈的額度(Credit),當從原鏈跨出時,相應額度被凍結,交易完成時,額度轉換爲等量的 Wanchain 上的映射 token (以太坊的映射 token 用 WETH 表示),如果交易撤銷,額度解鎖。當映射 token 返回原鏈時,映射 token 銷燬後解鎖 Storeman 額度。在這個過程中,嚴格遵循原鏈 token 與 Storeman 額度保持同方向記賬,Storeman 額度與映射 token 保持反方向記賬的邏輯,以確保整個交易過程中任何一個環節的原子性。