跨鏈技術(shù)的分析和思考

本文首發(fā)于[深入淺出區(qū)塊鏈社區(qū)(https://learnblockchain.cn/)
原文鏈接:跨鏈技術(shù)的分析和思考原文已更新,請讀者前往原文閱讀

當前的區(qū)塊鏈底層技術(shù)平臺百花齊放,不同的業(yè)務(wù)、不同的技術(shù)底層的區(qū)塊鏈之間缺乏統(tǒng)一的互聯(lián)互通的機制,這極大限制了區(qū)塊鏈技術(shù)和應(yīng)用生態(tài)的健康發(fā)展??珂湹男枨笥纱硕鴣?,本文通過分析幾種主流的跨鏈方案探討跨鏈技術(shù)的本質(zhì)及相應(yīng)的解決思路。

跨鏈的類型

跨鏈交互根據(jù)所跨越的區(qū)塊鏈底層技術(shù)平臺的不同可以分為同構(gòu)鏈跨鏈和異構(gòu)鏈跨鏈:同構(gòu)鏈之間安全機制、共識算法、網(wǎng)絡(luò)拓撲、區(qū)塊生成驗證邏輯都一致,它們之間的跨鏈交互相對簡單。而異構(gòu)鏈的跨鏈交互相對復(fù)雜,比如比特幣采用PoW算法而聯(lián)盟鏈Fabric采用傳統(tǒng)確定性共識算法,其區(qū)塊的組成形式和確定性保證機制均有很大不同,直接跨鏈交互機制不易設(shè)計。異構(gòu)鏈之間的跨鏈交互一般需要第三方輔助服務(wù)輔助跨鏈交互。

主流跨鏈機制概述

截至目前,主流的區(qū)塊鏈跨鏈技術(shù)方案按照其具體的實現(xiàn)方式主要分為三大類,分別是公證人機制、側(cè)鏈/中繼和哈希鎖定:

  1. 公證人機制(Notary schemes): 公證人也稱見證人機制,公證人機制本質(zhì)上是一種中介的方式。具體而言,假設(shè)區(qū)塊鏈A和B本身是不能直接進行互操作的,那么他們可以引入一個共同信任的第三方作為中介,由這個共同信任的中介進行跨鏈消息的驗證和轉(zhuǎn)發(fā)。公證人機制的優(yōu)點在于能夠靈活地支持各種不同結(jié)構(gòu)的區(qū)塊鏈(前提是公證人能夠訪問相關(guān)方的鏈上信息),缺點在于存在中心化風險。
  2. 哈希鎖定(Hash-locking): 哈希鎖定技術(shù)主要是支持跨鏈中的原子資產(chǎn)交換,最早起源自比特幣的閃電網(wǎng)絡(luò)。其典型實現(xiàn)是哈希時間鎖定合約HTLC(Hashed TimeLock Contract)。哈希鎖定的原理是通過時間差和影藏哈希值來達到資產(chǎn)的原子交換。哈希鎖定只能做到交換而不能做到資產(chǎn)或者信息的轉(zhuǎn)移,因此其使用場景有限。
  3. 側(cè)鏈/中繼鏈(Sidechains / Relays): 側(cè)鏈是指完全擁有某鏈的功能的另一條區(qū)塊鏈,側(cè)鏈可以讀取和驗證主鏈上的信息。主鏈不知道側(cè)鏈的存在,由側(cè)鏈主動感知主鏈信息并進行相應(yīng)的動作。而中繼鏈則是側(cè)鏈和公證人機制的結(jié)合體,中繼鏈具有訪問需要和驗證進行互操作的鏈的關(guān)鍵信息并對兩條鏈的跨鏈消息進行轉(zhuǎn)移。從這個角度看中繼鏈也是一種去中心的公證人機制。

下面就這幾種跨鏈方式的典型實現(xiàn)方式進行詳細分析:

典型跨鏈機制實現(xiàn)分析

公證人機制

最傳統(tǒng)的公證人機制是基于中心化交易所得跨鏈資產(chǎn)交換,這種跨鏈的方式比較單一,只支持資產(chǎn)的交換,如下圖演示了Alice通過交易所,用比特幣和Bob交換ETH的過程。

image
  1. Alice 通過交易所錢包將自己的比特幣打入交易所地址;
  2. Alice 在交易所上掛上賣單1個BTC賣出20ETH價格;
  3. Bob需要將自己的ETH打入交易所的以太坊地址;
  4. Bob通過交易所掛出購買比特幣的單子 20ETH買一個比特幣;
  5. 交易所將Alice的賣單和Bob的賣單進行撮合;
  6. 交易所將Alice在交易所存儲的1BTC 轉(zhuǎn)移給Bob的比特幣地址;
  7. 交易所將Bob在交易所存儲的20ETH 轉(zhuǎn)移給Alice的以太坊地址;

至此完成了Alice和Bob的BTC和ETH的交換(案例中省去了交易所的服務(wù)費)。通過該例子可以看出交易所的方式目前僅能夠支持資產(chǎn)的交換,且資產(chǎn)交換的原子性、安全性完全由中心化的交易所保障存在較大的中心化風險。

image

除此之外還有一種著名的分布式賬本技術(shù)Ripple,也是采用類似公證人的機制來解決全球金融機構(gòu)之間的資產(chǎn)交換。Ripple的系統(tǒng)架構(gòu)如上圖所示,Ripple系統(tǒng)中交易通過網(wǎng)絡(luò)中的驗證者進行交易的驗證,驗證者驗證的交易通過加密算法保護交易內(nèi)容不能被驗證著窺探從而保證交易的隱私性。

公證人機制的跨鏈技術(shù)實現(xiàn)簡單,且能夠比較靈活地支持不同類型的底層區(qū)塊鏈體系。公證人機制的主要問題在于公證人機制的安全性保障完全由公證人系統(tǒng)保障。參與跨鏈的相關(guān)方需要對中間人給予較大的信任。

哈希鎖定

哈希時間鎖定(HTLC)最早出現(xiàn)在比特幣的閃電網(wǎng)絡(luò),跨鏈資產(chǎn)交換支持一定數(shù)量的A鏈資產(chǎn)和一定數(shù)量的B鏈資產(chǎn)進行原子交換。哈希時間鎖定巧妙地采用了哈希鎖時間鎖,迫使資產(chǎn)的接收方在deadline內(nèi)確定收款并產(chǎn)生一種收款證明給打款人,否則資產(chǎn)會歸還給打款人。收款證明能夠被付款人用來獲取接收人區(qū)塊鏈上的等量價值的數(shù)量資產(chǎn)或觸發(fā)其他事件。

如下圖所示,我們用一個例子來闡述如何使用哈希時間鎖定進行跨鏈的原子資產(chǎn)交換,假設(shè)Alice和Bob有資產(chǎn)交換的需求,Alice想用1個BTC和Bob換20個ETH. 那么首先需要在兩條鏈上設(shè)置哈希時間鎖定合約,然后執(zhí)行如下步驟:

image
  1. Alice 隨機構(gòu)建一個字符串s,并計算出其哈希 h = hash(s);
  2. Alice 將h發(fā)送給Bob的合約;
  3. Alice鎖定自己的1個BTC資產(chǎn),并設(shè)置一個較長的鎖定時間t1, 并設(shè)置了獲取該BTC的一個條件:誰能夠提供h的原始值s就可以得到該BTC;
  4. Bob觀察到Alice 合約中鎖定了一個BTC, 然后Bob鎖定自己的20個ETH資產(chǎn),并設(shè)置一個相對較短的鎖定時間t2, t2 < t1, Bob也設(shè)置了同樣獲取條件(誰提供h的原始值s就可以獲取20個ETH);
  5. Alice將自己最初生成的字符串s 發(fā)送到Bob的合約里取得了20個ETH;
  6. Bob觀察到步驟5中Alice的s值,將其發(fā)送給Alice的合約成功獲取1個BTC; 至此Alice和Bob完成了資產(chǎn)的交換。

從上述的過程我們可以看出哈希時間鎖定合約有一些約束條件:

  • 進行跨鏈資產(chǎn)交換的雙方必須能夠解析雙方的合約內(nèi)部數(shù)據(jù),例如s,例如鎖定資產(chǎn)的證明等;
  • 哈希鎖定的超時時間設(shè)置時需要保證存在時間差,這樣在單方面作弊時另一方可以及時撤回自己的資產(chǎn)。

哈希鎖定的思想運用在支付領(lǐng)域較多,例如閃電網(wǎng)絡(luò)雷電網(wǎng)絡(luò)以及跨鏈資產(chǎn)轉(zhuǎn)移協(xié)議Interledger等。但是哈希鎖定目前看只適合偏資產(chǎn)或者關(guān)鍵數(shù)據(jù)的交換,甚至不支持轉(zhuǎn)移因此其試用場景受限。

側(cè)鏈/中繼鏈

側(cè)鏈

側(cè)鏈是相對于主鏈而言的,最初的側(cè)鏈提出是針對比特幣做新特性的測試和研發(fā)。側(cè)鏈相對主鏈而言能夠驗證和解析主鏈中的區(qū)塊數(shù)據(jù)和賬本數(shù)據(jù)。側(cè)鏈實現(xiàn)的基礎(chǔ)技術(shù)是雙向錨定(Two-way Peg),通過雙向錨定技術(shù)可以將數(shù)字資產(chǎn)在主鏈上進行鎖定,同時將等價的資產(chǎn)在側(cè)鏈中釋放。相反當側(cè)鏈中相關(guān)資產(chǎn)進行鎖定時,主鏈上錨定的等價資產(chǎn)也可以被釋放。

BTC-Relay是號稱的史上第一個側(cè)鏈,BTC-Relay是通過以太坊構(gòu)建了一個比特幣的側(cè)面,運用以太坊的智能合約允許用戶驗證比特幣的交易。這里我們?nèi)匀灰訟lice 1BTC和Bob的20ETH數(shù)字資產(chǎn)交換為例闡述相應(yīng)原理:

  1. Bob將20ETH發(fā)送到BTCSwap的合約進行凍結(jié);(該合約只要能夠確認BTC網(wǎng)絡(luò)上Bob接收到來自Alice 1BTC就自動將20ETH轉(zhuǎn)給Alice)
  2. Alice 確認Bob凍結(jié)信息后,將1 BTC轉(zhuǎn)給Bob比特幣賬戶;
  3. BTC Relayer將比特幣區(qū)塊頭推送到BTCSwap合約;
  4. Alice 接下來就可以調(diào)用relay tx;
  5. BTCSwap合約結(jié)合tx和BTC鏈的區(qū)塊鏈進行SPV驗證,驗證通過則將20ETH轉(zhuǎn)給Alice以太坊地址。
image

這種跨鏈的實現(xiàn)方式簡單,但是BTC Relay需要額外的信任和維護成本,且智能合約內(nèi)部的數(shù)據(jù)存儲會有體積膨脹的問題。但是側(cè)鏈的機制相對哈希鎖定而言能夠提供更多的跨鏈交互場景,側(cè)鏈以及類SPV驗證的思想適合所有跨鏈的場景。

中繼鏈

中繼鏈本質(zhì)上算是公證人機制和側(cè)鏈機制的融合和擴展,目前社區(qū)內(nèi)最活躍的兩個跨鏈項目CosmosPolkadot 采用的都是基于中繼鏈的多鏈多層架構(gòu),其中Cosmos目前支持的是跨鏈資產(chǎn)交互而Polkadot則宣稱提供任意類型的跨鏈交互,具體實現(xiàn)還有待觀察。

Cosmos

Cosmos網(wǎng)絡(luò)是一個多鏈混合的區(qū)塊鏈網(wǎng)格結(jié)構(gòu),如下圖所示,該網(wǎng)絡(luò)中主要包括兩種角色:
Hub: 用于處理跨鏈交互的中繼鏈;
Zone: Cosmos中的平行鏈, Cosmos中平行鏈需要具備兩個前提條件: 1. 快速確定性(fast finality), 這個特性由共識算法保障,也就是說Cosmos的跨鏈不直接支持PoW等概率確定模型的區(qū)塊鏈; 2. 強監(jiān)管性(Sovereignty):每個平行鏈都具有一組驗證者能夠決定其出塊。

image

為了支持平行鏈之間的跨鏈互操作,Cosmos提出了一種跨鏈交互協(xié)議IBC(Inter-Blockchain Communication protocol), 并利用tendermint共識算法的即時確定性實現(xiàn)多個異構(gòu)鏈之間的價值和數(shù)據(jù)傳輸。

首先我們以Chain A 到Chain B 轉(zhuǎn)賬10 token為例說明使用IBC的跨鏈交互: 1. 互相跟蹤,也就是說如果A要和B進行跨鏈交易,那么A和B鏈需要分別運行相當于對方區(qū)塊鏈的輕節(jié)點服務(wù),這樣互相可以實時接收到對方的區(qū)塊頭信息(方便后續(xù)執(zhí)行類SPV驗證); 2. A鏈上初始化IBC協(xié)議,凍結(jié)相關(guān)資產(chǎn)10 token, 并生成相應(yīng)的證明發(fā)送給B區(qū)塊鏈; 3. B鏈接收到相應(yīng)的IBC消息,通過A鏈的區(qū)塊頭信息確定A確實進行相應(yīng)的資產(chǎn)凍結(jié),然后B鏈會生成等價值10 token的資產(chǎn)。

以上是使用IBC協(xié)議的兩個平行鏈直接進行跨鏈的基本過程,如果區(qū)塊鏈很多,那么這種方式的兩兩跨鏈復(fù)雜度會呈現(xiàn)組合級別增加。因此Cosmos網(wǎng)絡(luò)又引入了一種Hub的中繼鏈,所有的平行鏈都通過IBC連接到Hub,讓Hub輔助跨鏈交易的驗證和轉(zhuǎn)移,目前Cosmos實現(xiàn)了一個官方的Hub稱為Cosmos Hub(如前圖所示)。

如下圖所示是Cosmos 網(wǎng)絡(luò)的詳細架構(gòu)圖,Cosmos為方便平行鏈開發(fā)提供了基本服務(wù)CosmosSDK包括:共識、網(wǎng)絡(luò)以及IBC協(xié)議等,這樣基于Cosmos SDK開發(fā)的子鏈之間都能夠方便地互相交互。此外對于非Cosmos SDK 開發(fā)的區(qū)塊鏈需要使用Peg Zone進行橋接,如圖中的Ethereum。

image

筆者認為Cosmos為跨鏈帶來的最大貢獻在于IBC協(xié)議的設(shè)計,IBC協(xié)議提供了一種通用的跨鏈協(xié)議標準。IBC的設(shè)計使得跨鏈交易可以在多個Hub之間進行安全路由和轉(zhuǎn)發(fā),類似目前互聯(lián)網(wǎng)的TCP/IP 協(xié)議。但是遺憾的是目前的Cosmos設(shè)計也只能夠支持資產(chǎn)的跨鏈,而且由于不同區(qū)塊鏈的業(yè)務(wù)不同其共識速率的不一致也會影響跨鏈交易有效性的證明。

Polkadot

Polkadot也是一種集成平行鏈和中繼鏈的多層多鏈架構(gòu),Polkadot區(qū)塊鏈的整體架構(gòu)圖如下圖所示,主要包含三種角色鏈和四種參與方:

image

三種鏈角色:

  1. 中繼鏈(Relay chain): 中繼鏈位于Polkadot的體系的核心地位,主要是為整個系統(tǒng)提供統(tǒng)一的共識和安全性保障;
  2. 平行鏈(Parachain): 在Polkadot中平行鏈負責具體的業(yè)務(wù)場景,平行鏈自身不具備區(qū)塊的共識,它們將共識的職責渡讓給了中繼鏈,所有平行鏈共享來自中繼鏈的安全保障,中繼鏈是Polkadot組成的一部分;
  3. 橋接鏈:橋接鏈指的是非Polkadot體系之外的區(qū)塊鏈,如Bitcoin, Ethereum, 這些區(qū)塊鏈有自身的共識算法,它們通過不同的Bridge與Polkadot連接在一起進行跨鏈交互。

四種參與方:

  1. 驗證者(Validator): 驗證者負責Polkadot的網(wǎng)絡(luò)出塊,會運行一個中繼鏈的客戶端,在每一輪區(qū)塊產(chǎn)生中會對其提名的平行鏈出的塊進行核驗。當平行鏈的跨都被他們的子驗證者集合確定好之后,驗證者們會將所有平行鏈區(qū)塊頭組裝到中繼鏈的區(qū)塊并進行共識。
  2. 核驗人(Collator): 幫助驗證者收集、驗證和提交備選平行鏈區(qū)塊,維護了一個平行鏈的全節(jié)點。
  3. 釣魚人(Fisherman):釣魚人主要靠檢舉非法交易或者區(qū)塊以獲取收益;
  4. 提名人(Nominator): 擁有stake的相關(guān)方,維護和負責驗證者的安全性。

Polkadot的特性包括兩個,一個是共享安全性,一個是不需信任的跨鏈交互。這里的不需信任的跨鏈交互其實是和第一個特點共享安全性密切相關(guān)的,而且Polkadot的不需信任的跨鏈交互也主要是只其內(nèi)部的平行鏈之間。

在Polkadot中如果parachain A 需要發(fā)送一筆交易到parachain B的過程如下:

  1. A鏈將跨鏈交易放到自己的engress(每個平行鏈有一個消息輸出隊列engress 和一個消息輸入隊列ingress);
  2. A鏈的Collator收集A鏈的普通交易以及跨鏈交易并提交給A鏈的驗證者集合;
  3. A鏈的驗證者集合驗證成功,將本次A鏈的區(qū)塊頭信息以及A鏈的engress內(nèi)信息提交到中繼鏈上;
  4. 中繼鏈運行共識算法進行區(qū)塊確認以及跨鏈交易路由,中繼鏈上的驗證者會將A鏈的相應(yīng)交易從A鏈的engress queue中移動到B鏈的ingress queue中。
  5. B鏈執(zhí)行區(qū)塊,將ingress queue中相應(yīng)交易執(zhí)行并修改自身賬本。

以上便是Polkadot跨鏈交易的主要步驟,由于所有平行鏈的共識同步發(fā)生(中繼鏈區(qū)塊示意圖如下),因此跨鏈交易不會有諸如雙花等安全性問題。

image

Polkadot 的平行鏈之間的跨鏈交換的安全性保障主要來自共享安全性這個特點,共享安全性使得跨鏈交易和普通交易同步發(fā)生也就不存在其他跨鏈場景中的雙花等跨鏈數(shù)據(jù)不一致問題。其次Polkadot中的引入的特殊狀態(tài)驗證方法方便中繼鏈進行跨鏈等消息的有效性驗證。

值得一提的是Polkadot項目目前還處在項目初期,對于parachain的設(shè)計、Collator的協(xié)作以及Validator的共識、工作效率等都未完善。這種共享安全性的方式是否也限制了平行鏈自身的性能都還有待考證。

關(guān)于跨鏈技術(shù)的幾點思考

綜合以上的一些主流跨鏈場景和方案的分析,從跨鏈的概念以及需求上看跨鏈的本質(zhì)其實就是 如何將A鏈上的消息M安全可信地轉(zhuǎn)移到B鏈并在B鏈上產(chǎn)生預(yù)期效果。那么一個成功的跨鏈交互到底需要解決哪些問題呢?筆者認為主要有以下四個問題:

  1. 消息M的真實性證明,也就是說M是否確實是存在A鏈上的,也確實是A鏈發(fā)給B鏈的;
  2. 消息M的路由,如何讓跨鏈消息安全跨系統(tǒng)路由;
  3. 消息M的有效性證明,這里的有效性是指來自A鏈的消息M如何讓B鏈認可其抵達B鏈時狀態(tài)仍然有效,比如轉(zhuǎn)移的資產(chǎn)是否是凍結(jié)的,沒有雙花的,如果是狀態(tài)那么是否在此期間未發(fā)生改變等;
  4. 消息M的執(zhí)行結(jié)果證明,這個是指A鏈需要確認跨鏈操作是否成功,以及成功操作的相應(yīng)回執(zhí)。

那么針對這些關(guān)鍵本質(zhì)問題,如何去處理呢?筆者設(shè)想未來的區(qū)塊鏈應(yīng)該在底層平臺的設(shè)計之初就需要遵循統(tǒng)一的跨鏈協(xié)議標準,就像現(xiàn)在的操作系統(tǒng)對TCP/IP協(xié)議的支持一樣。需要進行通用跨鏈的區(qū)塊鏈至少要支持一下功能:

  1. 提供跨鏈消息的輸入和輸出口徑,例如Cosmos和Polkadot的跨鏈隊列;

  2. 提供跨鏈消息的真實性證明,區(qū)塊鏈需要提供類似SPV的證明手段;

  3. 消息的有效路由需要構(gòu)建跨鏈消息的統(tǒng)一格式,定義好消息的來源和去處以及消息內(nèi)容,如Cosmos的IBC協(xié)議;

  4. 消息的有效性證明,區(qū)塊鏈可能需要設(shè)計新的類似UTXO的可驗證存儲結(jié)構(gòu),方便做類SPV類驗證,否則目前的基于KV的數(shù)據(jù)存儲方式做有效性證明幾乎不可能;

  5. 跨鏈執(zhí)行結(jié)果證明,和有效性證明類似,需要全新的數(shù)據(jù)結(jié)構(gòu)和運行算法支持。

除此之外,跨鏈系統(tǒng)的設(shè)計還需要考慮系統(tǒng)穩(wěn)定性、可擴展性以及易升級性、容錯等等,總而言之,真正的可信互聯(lián)網(wǎng)建設(shè)艱辛蠻長,諸君共勉!

本文經(jīng)作者授權(quán)轉(zhuǎn)自BITKING

深入淺出區(qū)塊鏈 - 系統(tǒng)學習區(qū)塊鏈,打造最好的區(qū)塊鏈技術(shù)博客。

??
本文原文鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容