背景談到區塊鏈的發展,用一個較為形象的比喻來形容可能更為貼切,它就像春秋時期的朝代更替一般,最開始還是零零散散的諸侯分割,各自為地,發展到後來往往需要有一定統一的東西出現,不管是貨幣、語言抑或度量單位,而這就是區塊鏈發展的未來雛形。如果說 2017 年之前的區塊鏈是諸侯分割,那麼之後的 2 年中,人們談論更多的可能是如何讓無數條鏈變得略加統一些,畢竟每一條公鏈都聲稱自己會是未來的底層作業系統,但哪怕真的有 10 條這樣的“鏈”產生,人們也依然無法達成“鏈間協作”的目的。尤其是當區塊鏈的協議越來越多、資產互動也越來越頻繁時,人們迫切需要一類技術來讓不同鏈之間能夠產生互動,而這就是“跨鏈”技術慢慢產生和逐漸成熟的原因。當然,跨鏈(Cross Chain)並不是最近兩年才出現,跨鏈最早可追溯到 2012 年,當時的瑞波實驗室提出了一種名為 Interledger 的協議,該協議旨在連線不同區塊鏈賬本並實現它們之間的協同,而它的目標是要打造一個全球統一的支付標準,建立統一的網路金融傳輸的協議。簡單來說瑞波帶來的跨鏈更像一種支付協議,它透過設定一個自動執行的“中間商”,讓交易雙方的資訊匯聚到一起,一旦雙方約定達成,便自動完成交易,其實這種跨鏈更像後來的一種特殊智慧合約,而不是我們現在所熟知的跨鏈。那麼,在跨鏈提出來的 8 年後,跨鏈領域究竟發生了怎樣的鉅變,又將走向何方,我們嘗試透過 Polkadot 和 Cosmos 兩個跨鏈專案來深度剖析跨鏈的發展,以饗讀者。什麼是真正的跨鏈?1. 跨鏈的誤解當然,當我們談到跨鏈時,大家可能都聽過這個詞,甚至把它作為 2020 年的區塊鏈熱門詞彙也不足為過,畢竟區塊鏈的世界也需要一些新鮮的故事來填補歷史的空缺,至於智慧合約和公鏈已經是 2 年前的故事,而跨鏈似乎更符合區塊鏈發展的巨集偉目標,雖然事實也確實如此。不過,市場上有不少人對跨鏈似乎存在一些誤解,而這些誤解對於理解什麼是真正的跨鏈又產生了門檻,因此,我們先從幾個常見的誤解說起。A、跨鏈是讓鏈上資產像互換位置一樣交換?談到跨鏈,有些朋友可能真的以為跨鏈是能把類似比特幣鏈上的資產透過“跨鏈”的方式轉移到以太坊上來,就像把桌子上的蘋果和梨交換位置一樣,似乎這樣聽起來的確很神奇,但跨鏈真的如此嗎?在區塊鏈世界裡我們常講的跨鏈其實更像一種人民幣和美元兌換的關係,什麼意思呢,跨鏈好比我們將人民幣兌換成美元,歐元或者其他貨幣,而中間的兌換過程我們稱為跨鏈,這也是較早期跨鏈所留存的形態,但它並不是物物交換一般的真實轉移,而是價值的對等交換。因此,2012 年之後幾年提出的跨鏈其實通常代指資產跨鏈,它包括了大家熟知的雙向錨定、雜湊時間鎖、原子交換、資產質押轉移、閘道器和聯邦簽名等等,而這些是實現的方式,它們的目標都不是為了完成變魔法一般的將鏈上比特幣轉換成其他型別的通證,而只是資產的形式轉換。B、跨鏈的實現路徑非常簡單?也許很多人聽到跨鏈技術時會覺得這是一個極為簡單的理工科工程,畢竟從字面上來理解的意思似乎非常簡單,就像把資訊從 A 地傳輸到 B 地一樣,只要透過手機或者物流即可完成,但事實上,對於跨鏈而言,並非這般簡單。哪怕是資產跨鏈這種聽起來較為容易的方式,人們已經摸索了很多年,透過不同的方式來嘗試突破一些問題和瓶頸,但依然沒有找到一種最好或者更加普世的方式來完成這一目標。例如我們從幾年前就看到了在提的比特幣側鏈,其中雙向錨定作為比特幣側鏈技術中非常重要的概念,目的是實現比特幣主鏈幣和側鏈幣之間的跨鏈。雙向錨定能夠讓側鏈“知道”主鏈上的特定幣是否處於鎖定狀態,並且依此鎖定狀態來解鎖或銷燬對應數量的側鏈,這就好像 BTC “跨”到了側鏈,或者反過來,側鏈幣“跨”回了主鏈,但發展至今資深技術人員依然認為該方式太過簡陋,甚至存在不少安全隱患。所以,跨鏈並沒有大家想得那般簡單,實際上它要比我們預想的複雜的多,正因如此也才成為了區塊鏈行業需要攻堅的問題。C、跨鏈的實現方式只有一種?這可能是大部分不太懂技術的區塊鏈從業者常犯的一個錯誤,他們會認為區塊鏈的跨鏈方式其實只有一種,而大家都在朝著一個正確的方式努力,但相信透過上面兩點的講解,大家不會再這樣認為了,跨鏈的實現方式其實包羅太多,只是我們把它們都統稱為了跨鏈。我們將在下節較為詳細的為大家講解目前跨鏈常見的幾種實現方式,相信會讓大家有豁然開朗的感覺。2. 實現跨鏈的方式既然跨鏈的實現方式不止一種,那麼目前可以有哪些值得關注的跨鏈方式呢?當然我們嘗試不從那些複雜的技術名詞入手,以一種更好理解的方式為大家講解跨鏈的幾個主流方式。A、中心化閘道器跨鏈顧名思義這是一種由一個權威機構外部預言機(Oracle)模式輸入的一種跨鏈方式,透過引入外部力量接入跨鏈,相當於藉助第三方機構來完成跨鏈動作,就好比轉賬藉助銀行系統一樣,該方式雖然效率較高,但也存在一些安全隱患。B、多籤託管跨鏈相較於上一種方式,在單箇中心化的基礎上加入了一組權威機構,透過他們投票來承擔跨鏈資料的互動,這點類似於議會制度一樣,因為多機構的存在進一步提高了安全性,但相對地,效率也大打折扣。C、映象跨鏈映象跨鏈是一種更為趣味的解決跨鏈的方式,它透過最大資產映象合成其他小額資產,來完成經濟學上的虛擬跨鏈,比如 Synthetix 就是用它的數字資產 SNX,以超額抵押幾倍價值的 SNX (最大資產)來合成小額的其他資產。 D、輕節點跨鏈沿著前面幾種跨鏈思路深入下去,我們可以找到另一種跨鏈思路,也就是完全由程式碼來託管資料的互動,不需要任何中間人執行,當然這是較理想的方式,理論上它可以最終完成塊頭 Header 跨鏈、交易 Transaction 跨鏈和終極的共識跨鏈,但也意味著技術實現最難,需要更多時間和精力去開發。3. 真正的跨鏈雖然市面上關於跨鏈的具體實現方式不下 10 種,甚至每年還會有新的關於跨鏈的名詞出現,但我們回到本質上來看跨鏈這個問題,並思考到底什麼才是真正的跨鏈。最近一位區塊鏈技術資深人士談到了一個更有趣的關於跨鏈的描述,首先他給共識穿透下了個定義,共識穿透是指兩條不同共識的區塊鏈,如何從共識層打通,讓兩條鏈互聯有無,最終實現共識跨鏈。綜上我們認為跨鏈的基本作用是實現鏈間資產的互動,其次是資訊互動,而放大來說,跨鏈需要解決的其實是相同共識下鏈與鏈之間的資訊傳遞與互動,但更本質來說跨鏈解決的是不同共識下鏈與鏈之間的 Transaction,而能解決這個問題的方式或者技術我們稱為跨鏈。當然,這只是目前我們認為關於跨鏈較為準確的定義,但隨著區塊鏈的發展,不排除會有更有趣的描述出現。為什麼區塊鏈需要跨鏈?1. 打破區塊鏈資訊孤島困境USDT 是目前市值最高,使用範圍最廣的穩定幣,是 Tether 公司推出的基於穩定價值貨幣美元(USD)的加密貨幣 Tether USD(簡稱USDT),1USDT = 1 美元。Tether 公司嚴格遵守 1:1 的準備金保證,即每發行 1 個 USDT,其銀行賬戶都會有 1 美元的資金保障。而 USDT 也是幾經周折在多條區塊鏈上發行,從最開始基於 Omni 協議發行,再到後來開始在以太坊上發行 ERC20 版本的 USDT,再到之後在波場上發行 TRC20 版本的 USDT,如此一步步發展最終成為了市值第三的加密貨幣。而由於 USDT 是有對應的美元作為支撐的,所以 USDT 可以隨著保障的美元數量的增加而增發,但是也經常會遇到這樣的情況,比如今年 DeFi 火熱,以太坊上的許多 ERC20 的 USDT 被所到 DeFi 專案中,使得 ERC20 的 USDT 不夠用了,這時如果緊急增發 USDT 很難快速籌集到大體量的美元,沒辦法,Tether 公司不得不把 TRC20 上的 USDT 轉移到以太坊上,以滿足市場需要。Tether 公司採用的方法,是把 TRC20 的 USDT 銷燬一部分,再在以太坊上增發同樣數量的 ERC20 版 USDT。而後,波場上的一些 DeFi 專案也逐漸誕生,又出現波場上的 TRC20 版 USDT 不夠用了,所以,Tether 公司不得不經常將幾條區塊鏈上的 USDT 來回轉移。這就是目前區塊鏈的一個大的痛點,區塊鏈與區塊鏈之間並不能隨意的轉移資料(即資訊和資產),每個區塊鏈生態做的再好,也只是相當於一個發展很好但卻不能與其他城市互通的城市,而這就是資訊孤島。而好的區塊鏈應用,肯定不滿足於只在一條區塊鏈上,正如我們剛才舉例的 USDT。還有一種方式是,類似於路印協議(LRC)以另一個名字的加密資產 LRN 發行在 NEO 鏈上,來做到在 NEO 上擴充套件路印協議的使用場景。所以,如果有一種跨鏈技術,能將不同區塊鏈的資料進行互相互動,Tether 公司和路印協議的團隊就不用那麼麻煩地在不同的鏈上來回折騰了。而 Polkadot 的設計初衷就是能將所有區塊鏈連結在一起,互聯互通,最終形成一個由多個區塊鏈組成的網際網路絡,它完美的契合了這個需求,未來想要在多個區塊鏈上應用的區塊鏈應用專案,只需要在 Polkadot 上發行,就可以將這個應用擴充套件到所有區塊鏈上了。2. 提供區塊鏈效能今年 DeFi 大熱,以太坊再次證明了它是區塊鏈領域裡最大的區塊鏈應用平臺,在這段 DeFi 盛宴中,一些區塊鏈的老問題又再次走到臺前,讓我們難以忽視它。目前,90 %以上的 DeFi 專案都在以太坊上,帶來結果之一就是以太坊和 ERC20 的 Token 轉賬速度變慢,轉賬費用飆升。以太坊的轉賬 Gas 費在很長一段時間平均在 500Gwei 以上,居高不下,最高還到過 1000Gwei,而這也嚴重影響了 DeFi 生態以外的專案和組織。NFT 市場 Cargo 創始人 Sean Papanikolas 就曾表示,NFT 行業正處於一個拐點。但由於 Gas 價格飆升,以太坊可擴充套件性不足給該行業的新參與者帶來了壓力。而高 Gas 費已經導致一些平臺開始致力於 Layer2 擴充套件,也就是二層網路的解決方案,而還有一些專案方則將目光投向了其他的區塊鏈,完全離開了以太坊。另一方面,交易所也是另一個受害者,高昂的轉賬費讓許多交易所在使用者每次轉賬以太坊和 ERC20 的時候都要虧上幾美金甚至更多。而美國最大的加密貨幣交易所 Coinbase Pro 不堪重負,最後釋出公告讓使用者來承擔轉賬的網路費用。提高效能,降低轉賬費用,對區塊鏈進行擴容已是迫在眉睫的剛需。目前擴容的方案有兩大類,一類是鏈上擴容,透過修改區塊鏈的修改規則,包括區塊大小、共識機制等來做到。比如,加密貨幣圈就曾經熱議過,考慮把比特幣的區塊大小增加來提高比特幣的轉賬速度。又比如,以太坊 2.0 的設計,是將共識機制由 PoW 轉換成 PoS,並採用改變網路驗證方式的分片技術來提高效率。第二類則是鏈下擴容,比如我們常說的 Layer2 擴充套件,也就是二層網路的擴充套件方式。二層網路顧名思義,是把一條區塊鏈上的資料交給另一個網路來處理,處理好了再傳回來。這其中也分為中心化的解決方案,比如比特幣的鏈下擴容方案——閃電網路,也有去中心化的解決方案,比如能將比特幣跨過來的 ChainX,區別在於第二個網路是否是區塊鏈,中間過程是否是透過智慧合約完成的。而 Polkadot 作為知名跨鏈專案,其本身的架構就屬於分片,不用擔心 Polkadot 的效能問題,另一方面,Polkadot 可以連結其他的平行鏈,這些平行鏈可以自發的作為某些鏈的二層擴充套件的一條鏈,來提高這條鏈的效能。3. 增加區塊鏈可擴充套件性上一點中,我們提到 Polkadot 的平行鏈可以作為某些鏈的二層網路,那麼如果這條鏈擁有的屬性是原有的區塊鏈沒有的,就可以為原有的鏈增加更多功能。如果我們在 Polkadot 上給比特幣做了一條帶有智慧合約功能的二層網路,這樣就可以讓比特幣也擁有了智慧合約的功能了。4. 豐富區塊鏈生態老一輩人都知道,要致富,先修路,要發展一定要與外界的資源進行流通,北京發展的再好,也比不過互聯互通之後,一次十一長假帶來的整體經濟效益。區塊鏈同樣也是這個道理。我們還是以今年紅極一時的 DeFi 來說,以太坊最火爆的時候,全網參與 DeFi 的資金也才一百多億美金。如果透過跨鏈的方式,能將價值上千億體量的比特幣拉入到 DeFi 生態中,如此龐大的流動性來參與到 DeFi,所帶來的經濟效益絕對不可同日而語。屆時,DeFi 的發展將有可能遠超 2017 年牛市的盛況,並且震動傳統金融。5. 保護各條鏈隱私首先澄清一下,我們所說的跨鏈絕不僅限於公鏈與公鏈之間的連結,還可以是聯盟鏈與公鏈,或者聯盟鏈與聯盟鏈之間的跨鏈。那麼,有這麼一種情況,A 聯盟鏈和 B 聯盟鏈它們之間的資料不是共享的,如果需要互動兩者的資料,就可以透過跨鏈的方式連線起來,兩者互相互動僅僅會涉及到需要互動的資料,這既保護了各條鏈的隱私,又能讓各鏈之間進行互動。6. 業務邏輯進一步細化未來每條鏈都會有獨立的業務,多條鏈聯合起來,理解和分析也比較清晰,比如有專注於 DeFi 的鏈,有專注於遊戲的鏈,有比特幣的智慧合約鏈,還有以太坊的 Layer2 鏈等等,因此跨鏈可以讓不同業務的鏈也產生連結。Polkadot 的跨鏈是如何實現的?Polkadot 號稱跨鏈之王,是當下最複雜最龐大的設計之一,這也由於它所謀甚大,希望能聯通所有的區塊鏈。那它是一種怎樣的結構,又是以什麼方式來實現跨鏈的呢?1. Polkadot 的跨鏈結構我們之前在之前的文章中就介紹過以太坊 2.0 是同構分片,Polkadot 是異構分片的結構,如下圖所示,Polkadot 的主要結構是由主鏈——中繼鏈,再連線其他分片——平行鏈組成的。要清楚的理解 Polkadot 的結構,我們需要理解 Polkadot 結構的三條重要的鏈(中繼鏈,平行鏈和轉接橋平行鏈)與四個重要的角色。其中,中繼鏈是負責處理網路中整體的共識和安全性的主鏈,平行鏈是基於 Substrate 框架做出來的與中繼鏈有相同共識的分片,轉接橋平行鏈是由於一些已經成熟的區塊鏈(比如比特幣、以太坊)與 Polkadot 的底層共識不一樣,不能直接連線到中繼鏈上,所以透過在 Polkadot 的平行鏈和外部的區塊鏈上部署智慧合約來達到橋的效果,以實現跨鏈的功能。Polkadot 網路有四個基本的角色在維持:收集人(幫助驗證人收集、驗證和提交備選的平行鏈區塊)、提名人(類似於比特幣礦工)、驗證人(類似於比特幣的礦池,打包網路區塊)、釣魚人(防止網路作惡,負責舉報其他角色)。
透過這幾個角色,以及 Polkadot 的跨鏈訊息傳遞方案(XCMP),可以讓資料在不同的區塊鏈之間進行互動。
那麼,為什麼說,我們需要注意到上圖的右邊有個二級中繼鏈,如果一條中繼鏈能連線的平行鏈和轉接橋是有限的,那麼中繼鏈還可以透過生成或者連線一個二級中繼鏈,進一步擴大自己的連線能力,而二級中繼鏈還可以再連線新的中繼鏈,以此類推,從理論上講 Polkadot 的這個結構具有無限擴充套件性,可以連線所有的區塊鏈。
2. Polkadot如何實現跨鏈?
Polkadot 主要是透過跨鏈訊息傳遞方案(XCMP)來傳遞訊息,下面我們透過一個趣味的方式來向大家講解跨鏈的具體實現流程。
假如有個這樣的場景,我要用 1 個平行鏈 A 的資產和你交換 10 個平行鏈 B 的資產,那麼如果把平行鏈 A 比作美國,平行鏈 B 比作日本,就相當於我用 1 萬美元和你交換 10 萬日元,那麼,整個跨鏈的流程就是這樣的:
我在美國的銀行發起一筆轉賬,轉給你在美國的賬戶 1 萬美元,美國的收集人就註明,我給你在美國的賬戶轉 1 萬美元,並且求你在日本這邊的銀行給我轉 10 萬日元。
美國的收集人準備將這個資訊連同目的地與時間,一併傳遞到日本,這些資訊會先放置在美國的輸出佇列中,傳遞之前需要經過美國的驗證人確認這筆交易後,就會經過中繼鏈這個組織將該資訊從美國的輸出佇列放置到日本的輸入佇列。
當日本的驗證人會收到該資訊後,透過日本這邊的收集人來執行資訊中的要求,然後將你賬戶中的 10 萬日元轉到了我在日本的賬戶中,由此完成整個過程。
而對映到區塊鏈網路中同樣是這樣的路徑,美國和日本就好比不同的區塊鏈,透過該方式就完成了兩個資訊孤島的網路的連結,而具體 Polkadot 的跨鏈實現,整個過程全部由區塊鏈和智慧合約執行,是以去中心化的方式做到鏈間通訊的。
Cosmos 的跨鏈是如何實現的?
雖然 Polkadot 作為跨鏈領域當下的王者,但是人們常常以 Cosmos 作為 Polkadot 的有力對手相比較,因此,我們需要以同樣的角度淺談一些關於 Cosmos 的跨鏈構成。
1. Cosmos的跨鏈結構
同樣 Cosmos 也是採用了中繼鏈的方式來進行跨鏈互動,但 Cosmos 意在提供一個標準的協議(IBC)讓其他區塊連結入該協議後,完成資訊互動。
我們將 Cosmos 的結構進行拆分後可分為 Zones 和 Hubs,Zones 相當於 Polkadot 中的平行鏈(類似於接入不同的區塊鏈網路),而 Hubs 則對應了 Polkadot 中的中繼鏈(負責監視其他鏈是否正常執行),總體來說,Hub 管理著被稱為 “Zone” 的獨立區塊鏈,而由 Hub 來追蹤記錄各個 Zone 的狀態。
而他們之間的資訊傳遞是有被稱為“IBC”(區塊鏈之間的通訊協議)的協議來負責傳輸資訊,讀者可以理解為是 Cosmos 中特有的編碼模式,只要透過該編碼即可確認是 Cosmos 生態的一部分,也可進行安全的資訊互動。
而基於這些底層構成和通訊協議,Cosmos 還開發了一個名為 Cosmos SDK 的一個通用框架,它的目標是建立一個模組生態系統,允許開發人員輕鬆地建立特定應用的區塊鏈,而無需從頭開始編寫應用的每個功能,從而大大減少程式設計師在區塊鏈底層開發上花費的時間。
2. Cosmos 如何實現跨鏈?
談到 Cosmos 如何具體完成跨鏈動作,我們依然要回到其結構構成來看,Cosmos 將區塊鏈拆分出了共識層(Tendermint 核心)、網路層和應用層(Cosmos SDK),這能讓開發者在開發各種型別應用的時候有更大的靈活性。
因此,Cosmos 的跨鏈方式其實是透過自己搭建一套區塊鏈開發框架,來讓其他區塊鏈在此框架上進行開發,並滿足自身像 BFT 共識演算法或者 Cosmos SDK 這樣的應用加入進去,這樣的理想狀態聽起來似乎很有趣,但離真正的跨鏈依然有不少差距,所以它依然在“輕節點跨鏈”的方式上努力著。
Polkadot 與 Cosmos 的區別
1. 兩者核心對比
為了便於更加直觀的讓使用者瞭解 Polkadot 和 Cosmos 兩者之間的不同,我們製作了下圖:
如果單從功能上或者某一方面來對比兩個跨鏈專案的優劣,似乎並不能判斷孰是孰非,因為單一的組成只能體現某一方面的優勢,因此,我們還是回到跨鏈本身來看,或許會有更不錯的效果。
2. 兩者發展現狀
Cosmos 自 2015 年立項以來,受到不了行業不同程度的關注,畢竟作為跨鏈領域的翹楚不管是資方還是社羣,都賦予了極大期望,而其主網在 2019 年上半年迎來了上線。
但是就在主網上線半年後,Tendermint Labs (Cosmos背後核心開發團隊)的總監 Zaki Manian在推特上公開表示,在過去的 6 個月中,Jae Kwon (Cosmos創始人)一直專注於 Virgo 專案,而忽略了 Cosmos 的 IBC 開發,沒有為 IBC 提供資源,造成了許多才華橫溢的工程師離開公司的局面,這使核心軟體團隊的資源嚴重不足,並表示要辭去 CEO 職位,此舉引發了 Cosmos 社羣巨大動盪。
正是因為 Cosmos 社羣開發人數的下降,使得其 IBC 跨鏈通訊協議開發一直處於緩慢爬坡階段,因此跨鏈目標變得遙不可及,現在僅出來了一個 Cosmos SDK 框架。
反觀另 Polkadot 的開發自 8 月主網上線以來,團隊一直在努力開發平行鏈功能(跨鏈的核心部件),並且上週區塊鏈大會上,創始人 Gavin 博士表示平行鏈程式碼將在未來 2 周內公佈,這讓人們對跨鏈的到來有了更強的期許。
當然某種意義上來說,Polkadot 的跨鏈是藉助 XCMP 完成平行鏈之間的訊息互動,還處於同一共識下的跨鏈,離我們理想的終極跨鏈(不同共識鏈的互動)還有一段差距,但按照發展路徑來看,符合預期。
從跨鏈的功能性和發展來說,我們認為 Polkadot 目前更像是真正的跨鏈,而 Cosmos 目前還是偽跨鏈,其設計只是在轉移資產這一層面,最主要的是 Cosmos 團隊在實現最基礎的資產轉移之前就戛然而止了。儘管當初的理想很美好,但現實卻很骨感,跨鏈的重任還是交給 Polkadot 來實現吧。
後記
儘管我們瞭解到有許多跨鏈的方式,但是我們更推崇的還是 Polkadot 設計的跨鍊形式,因為許多跨鏈技術往往考慮的只是針對性的解決某一些問題,讓某一條鏈能獲得擴充套件,但這並不能使區塊鏈真正成為所謂的價值網際網路和可信網際網路。而要承載起價值網際網路的名號,一定是非常龐大的網路,而不會僅僅侷限在某一條區塊鏈上,現在的公有鏈或者聯盟鏈都只是像區域網,只有像 Polkadot 所設計的,將所有區塊鏈都互聯互通,最終形成由眾多區塊鏈組成的網際網路絡,才更符合這個標準。當然,跨鏈的解決方式也絕非我們現在看到的這些,不排除未來會有更創新的方式出現,但從專案演變和區塊鏈發展來看,像 Polkadot 和 Cosmos 這樣的跨鏈專案都值得我們去了解,而至於誰能成為未來的“跨鏈之王”,除了技術層面的因素,可能還要考慮市場和商業落地,而這才是區塊鏈當下更應關心的問題,我們也將在後續文章中進一步去發掘 Polkadot 或者 Polkadot 生態中這樣優質的專案。