側鏈

側鏈(Sidechain)協議允許資產在比特幣區塊鏈和其他區塊鏈之間互轉。這一項目也來自比特幣社區,最早是在 2013 年 12 月提出,2014 年 4 月立項,由 Blockstream 公司(由比特幣核心開發者 Adam Back、Matt Corallo 等共同發起成立)主導研發。側鏈協議於 2014 年 10 月在白皮書《Enabling Blockchain Innovations with Pegged Sidechains》中公開。

側鏈誕生前,眾多“山寨幣”的出現正在碎片化整個數字貨幣市場,再加上以太坊等項目的競爭,一些比特幣開發者希望能借助側鏈的形式擴展比特幣的底層協議。

簡單來講,以比特幣區塊鏈作為主鏈(Parent chain),其他區塊鏈作為側鏈,二者通過雙向掛鉤(Two-way peg),可實現比特幣從主鏈轉移到側鏈進行流通。

側鏈可以是一個獨立的區塊鏈,有自己按需定製的賬本、共識機制、交易類型、腳本和合約的支持等。側鏈不能發行比特幣,但可以通過支持與比特幣區塊鏈掛鉤來引入和流通一定數量的比特幣。當比特幣在側鏈流通時,主鏈上對應的比特幣會被鎖定,直到比特幣從側鏈回到主鏈。可以看到,側鏈機制可將一些定製化或高頻的交易放到比特幣主鏈之外進行,實現了比特幣區塊鏈的擴展。側鏈的核心原理在於能夠凍結一條鏈上的資產,然後在另一條鏈上產生,可以通過多種方式來實現。這裡講解 Blockstream 提出的基於簡單支付驗證(Simplified Payment Verification,SPV)證明的方法。

SPV 證明

如前面章節所述,在比特幣系統中驗證交易時,涉及到交易合法性檢查、雙重花費檢查、腳本檢查等。由於驗證過程需要完整的 UTXO 記錄,通常要由運行著完整功能節點的礦工來完成。

而很多時候,用戶只關心與自己相關的那些交易,比如當用戶收到其他人號稱發來的比特幣時,只希望能夠知道交易是否合法、是否已在區塊鏈中存在了足夠的時間(即獲得足夠的確認),而不需要自己成為完整節點做出完整驗證。

中本聰設計的簡單支付驗證(Simplified Payment Verification,SPV)可以實現這一點。SPV 能夠以較小的代價判斷某個支付交易是否已經被驗證過(存在於區塊鏈中),以及得到了多少算力保護(定位包含該交易的區塊在區塊鏈中的位置)。SPV 客戶端只需要下載所有區塊的區塊頭(Block Header),並進行簡單的定位和計算工作就可以給出驗證結論。

側鏈協議中,用 SPV 來證明一個交易確實已經在區塊鏈中發生過,稱為 SPV 證明(SPV Proof)。一個 SPV 證明包括兩部分內容:一組區塊頭的列表,表示工作量證明;一個特定輸出(output)確實存在於某個區塊中的密碼學證明。

雙向掛鉤

側鏈協議的設計難點在於如何讓資產在主鏈和側鏈之間安全流轉。簡而言之,接受資產的鏈必須確保發送資產的鏈上的幣被可靠鎖定。

具體,協議採用雙向掛鉤機制實現比特幣向側鏈轉移和返回。主鏈和側鏈需要對對方的特定交易做 SPV 驗證。完整過程如下:

  • 當用戶要向側鏈轉移比特幣時,首先在主鏈創建交易,待轉移的比特幣被髮往一個特殊的輸出。這些比特幣在主鏈上被鎖定。

  • 等待一段確認期,使得上述交易獲得足夠的工作量確認。

  • 用戶在側鏈創建交易提取比特幣,需要在這筆交易的輸入指明上述主鏈被鎖定的輸出,並提供足夠的 SPV 證明。

  • 等待一段競爭期,防止雙重花費攻擊。

  • 比特幣在側鏈上自由流通。

  • 當用戶想讓比特幣返回主鏈時,採取類似的反向操作。首先在側鏈創建交易,待返回的比特幣被髮往一個特殊的輸出。先等待一段確認期後,在主鏈用足夠的對側鏈輸出的 SPV 證明來解鎖最早被鎖定的輸出。競爭期過後,主鏈比特幣恢復流通。

最新進展

側鏈技術最早由 Blockstream 公司進行探索,於 2015 年 10 月聯合合作伙伴發佈了基於側鏈的商業化應用 Liquid。

基於一年多的探索,Blockstream 於 2017 年 1 月發表文章《Strong Federations: An Interoperable Blockchain Solution to Centralized Third Party Risks》,被稱為對側鏈早期白皮書的補充和改良。白皮書中著重描述了聯合掛鉤(Federated Pegs)的相關概念和應用。

此外,還有一些其他公司或組織也在探索如何合理地應用側鏈技術,包括 ConsenSys、Rootstock、Lisk 等。

Last updated