隨着Bystack的主側鏈架構的推出,主側鏈之間的跨鏈問題也成爲比原鏈團隊的主要攻克工程難題,當前比原鏈已經推出了兩種跨鏈的機制,各有不一樣的側重點,可能由於自己的跨鏈技術比較晦澀,本篇想以較爲通俗的方式向社區介紹比原鏈最新的跨鏈技術。安全
一些預備知識架構
跨鏈簡單的來講就是解決如何讓一條鏈上的token轉移到另外一條鏈上,本質是將一條鏈上的價值轉移到另外一條鏈,跨鏈須要保證如下幾點:框架
1. 確保已跨鏈的資產的妥善保管,不能在原鏈上可以繼續流通,要防止被竊取或者挪用;分佈式
2. 確保兩條鏈上轉移的資產是等同的,不能A鏈上減小了100價值的資產,而B鏈上只增長了50價值的資產;性能
3. 轉移的資產可以安全的再轉移回原鏈上,不能價值只是單向轉移,或者轉移過去沒法轉移回來;區塊鏈
基於這些要求,誕生出不少不一樣的跨鏈方案,主要是公證人機制,側鏈/中繼和哈希時間鎖等方案,除此以外還有分佈式私鑰,和公證人機制+側鏈混合技術。這裏不對這些技術進行展開,若是有興趣的朋友,能夠推薦閱讀V神給R3寫的關於跨鏈的文章《Chain Interoperability》。blog
比原鏈的跨鏈選型token
比原鏈的跨鏈模型也脫離不了上面敘述的跨鏈模型,當前主要使用的是公證人機制和哈希時間鎖的模式。接口
由於側鏈Vapor自己是沒有資產的,因此咱們使用公證人機制將主鏈的資產轉移到側鏈上(其實是在主鏈鎖定資產,在Vapor側鏈創造資產),同時由於公證人機制須要必定的時間進行簽名審覈,因此咱們再使用哈希時間鎖的機制作補充,能夠快速的交換主側鏈之間的資產(但哈希時間鎖機制不會創造資產,只是對現有的主側鏈資產進行跨鏈互換)。產品
公證人(網關)機制
但凡是參與過比原側鏈超級節點投票對於跨鏈轉移BTM必定不會陌生,在Bycoin中經過切換到側鏈錢包,能夠實現一鍵跨鏈,如圖所示:
經過一鍵跨鏈就能夠將BTM或者其餘資產跨到側鏈上,從而在側鏈上進行資產交換。那麼公證人機制背後的原理是怎麼樣的呢?忽略其中的技術細節,核心就是價值生成和銷燬,資產託管和主側鏈的接口通訊,以下圖所示:
每當從主鏈轉移到側鏈,就須要在側鏈上創造相應的資產,而若是要從側鏈上轉回主鏈,則須要銷燬側鏈上相應的資產,這就是價值的生成和銷燬。當主鏈的資產跨鏈到側鏈上,就須要對主鏈的資產進行託管,出於安全的考慮,通常都會採用多籤的方式,還有對大額資產進行冷熱分離。
先介紹幾個概念:
1. 驗證人:側鏈的出塊人,就是當前的正式出塊的超級節點方(前十的超級節點)。
2. 收集人:監控主鏈鎖定在聯邦合約地址的交易,收集主鏈的交易並在側鏈上建立等額的資產,監控側鏈跨鏈請求,銷燬側鏈的資產並釋放等額資產到主鏈上。驗證人和收集人都是系統中的角色,並非指代實際的人,但其中可能會須要人進行參與。
3. 聯邦地址:由多名聯邦成員公鑰生成的多籤地址。
當用戶點擊一鍵跨鏈以後,發生了什麼事情?
若是是從主鏈到側鏈:
1. 收集人監測到主鏈的聯邦地址接受到了一筆轉帳;
2. 收集人等待主鏈打包,當到達必定確認數後這筆交易將不能被逆轉;
3. 收集人在側鏈上建立等額的資產,經過多籤進行審覈確認,並打入到用戶的側鏈地址;
4. 用戶的側鏈上得到能夠流通的資產;
若是是從側鏈到主鏈:
1. 收集人監測到一筆側鏈銷燬資產的交易(這裏用戶並不須要將本身的側鏈資產打到聯邦地址上,而是本身發起一筆銷燬側鏈資產的交易);
2. 收集人等待側鏈打包,當到達必定確認數後這筆交易將不能被逆轉;
3. 收集人將聯邦地址中等額的資產,經過多籤進行審覈確認,並打入到用戶的主鏈地址;
4. 用戶在主鏈上得到能夠流通的資產;
網關(公證人)機制則是一個被實際場景檢驗過的高效可實用機制,網關起到了創建跨鏈信任背書、統一跨鏈通訊協議、協調主側鏈交易確認的重要做用。但在實際場景裏,跨鏈網關會面臨中心化運營的弊端,致使跨鏈協做沒法徹底去信任,互操做性不高。後續的開放式聯邦網關管理框架 OFMF就是爲了解決中心化的問題,這塊後續會專門寫文探討,這裏不作贅述。
同時由於須要人工多籤的緣由,跨鏈須要用戶較長的等待時間,因此又推出了基於哈希時間鎖的跨鏈資產原子互換機制,和公證人機制進行一個互補。
哈希時間鎖跨鏈機制
哈希鎖定模式是指用戶在規定的時間段對於哈希值的原值進行猜想來支付的一種機制。簡單講,就是在智能合約的基礎上,雙方先鎖定資產,若是都在有限的時間內輸入正確哈希值的原值,便可完成交易。
經過公證人機制,能夠將比原主鏈的資產遷移到側鏈上去,那麼經過哈希時間鎖,則能夠將比原主鏈和側鏈的資產直接進行交換。
好比你在主鏈上有BTC,我在側鏈上有ETH,若是使用公證人機制,我須要首先將BTC跨到側鏈上去,或者將ETH跨到主鏈上來,這樣才能進行互換;而有了哈希時間鎖的機制,就能夠直接把我主鏈上的資產打給你,而你將側鏈上的資產打給我,並能保證整個過程的原子性和資產安全。
哈希時間鎖的大概模式以下圖所示:
這個圖是簡化的流程,爲了保證主側鏈資產交易的原子性,其中涉及比較多的流程,大體流程描述以下:
1. 用戶A想用主鏈上的BTC換取用戶B側鏈上的ETH;
2. A開通一個主鏈上的智能合約,並設置一個可以解開該合約的謎語(哈希鎖H),設置一個能夠猜謎的時間(時間鎖T),超過這個猜謎時間A能夠拿回他本身的BTC;
3. A將謎面(哈希鎖H)給用戶B,用戶B用一樣的謎語(哈希)在側鏈上開通一個智能合約,也設置一個猜謎時間(時間鎖t);
4. A,B雙方互相檢查各自的合約(檢查是否用統一的哈希鎖,檢查是否接收地址是對方的);
5. 確認智能合約無誤後,A在時間t內使用謎底(哈希原值)去解鎖B的側鏈智能合約,並得到側鏈的ETH;
6. 一旦A成功解鎖B的智能合約,那麼謎底(哈希原值)就會暴露,B得到了謎底(哈希原值),在時間T內,去解鎖A的主鏈上的智能合約,並得到主鏈上的BTC;
7. 雙方的資產互換完成;
哈希時間鎖徹底使用合約來進行跨鏈資產的交換,因此無需擔憂中心化的風險,但哈希時間鎖機制只能互換主側鏈已有的資產,而不能將資產價值轉移到另外一條鏈上。當前的比原的哈希時間鎖機制並無集成到界面上,因此普通用戶使用還比較困難,須要產品的進一步提高。
跨鏈的展望
比原鏈Bystack的跨鏈技術正在如火如荼的完善中,經過跨鏈技術,咱們能夠很好的發揮側鏈的高性能優點,讓各種資產在側鏈上流通起來並造成各類各樣的應用。
除此以外,跨鏈技術的成熟,除了能夠利用在咱們本身的主側鏈以外,咱們還能夠將這套技術用在比原鏈跟其餘區塊鏈的跨鏈上,將其餘區塊鏈資產都跨到比原鏈上來,從而實現比原鏈多樣性資產的目標。