
摘要
本文介紹了跨鏈的3種機(jī)制:公證人機(jī)制(Notary schemes),哈希鎖定(Hash-locking),側(cè)鏈/中繼鏈(Sidechains / Relays),并且著重講解了基于中繼鏈技術(shù)的COSMOS和Polkadot項目的技術(shù)方案和原理。
跨鏈的類型
跨鏈交互根據(jù)所跨越的區(qū)塊鏈底層技術(shù)平臺的不同可以分為同構(gòu)鏈跨鏈和異構(gòu)鏈跨鏈:同構(gòu)鏈之間安全機(jī)制、共識算法、網(wǎng)絡(luò)拓?fù)?、區(qū)塊生成驗(yàn)證邏輯都一致,它們之間的跨鏈交互相對簡單。而異構(gòu)鏈的跨鏈交互相對復(fù)雜,比如比特幣采用PoW算法而聯(lián)盟鏈Fabric采用傳統(tǒng)確定性共識算法,其區(qū)塊的組成形式和確定性保證機(jī)制均有很大不同,直接跨鏈交互機(jī)制不易設(shè)計。異構(gòu)鏈之間的跨鏈交互一般需要第三方輔助服務(wù)輔助跨鏈交互。
主流跨鏈機(jī)制概述
截至目前,主流的區(qū)塊鏈跨鏈技術(shù)方案按照其具體的實(shí)現(xiàn)方式主要分為三大類,分別是公證人機(jī)制、側(cè)鏈/中繼和哈希鎖定:
-
公證人機(jī)制(Notary schemes): 公證人也稱見證人機(jī)制,公證人機(jī)制本質(zhì)上是一種中介的方式。具體而言,假設(shè)區(qū)塊鏈A和B本身是不能直接進(jìn)行互操作的,那么他們可以引入一個共同信任的第三方作為中介,由這個共同信任的中介進(jìn)行跨鏈消息的驗(yàn)證和轉(zhuǎn)發(fā)。公證人機(jī)制的優(yōu)點(diǎn)在于能夠靈活地支持各種不同結(jié)構(gòu)的區(qū)塊鏈(前提是公證人能夠訪問相關(guān)方的鏈上信息),缺點(diǎn)在于存在中心化風(fēng)險。 -
哈希鎖定(Hash-locking): 哈希鎖定技術(shù)主要是支持跨鏈中的原子資產(chǎn)交換,最早起源自比特幣的閃電網(wǎng)絡(luò)。其典型實(shí)現(xiàn)是哈希時間鎖定合約HTLC(Hashed TimeLock Contract)。哈希鎖定的原理是通過時間差和影藏哈希值來達(dá)到資產(chǎn)的原子交換。哈希鎖定只能做到交換而不能做到資產(chǎn)或者信息的轉(zhuǎn)移,因此其使用場景有限。 -
側(cè)鏈/中繼鏈(Sidechains / Relays): 側(cè)鏈?zhǔn)侵竿耆珦碛心虫湹墓δ艿牧硪粭l區(qū)塊鏈,側(cè)鏈可以讀取和驗(yàn)證主鏈上的信息。主鏈不知道側(cè)鏈的存在,由側(cè)鏈主動感知主鏈信息并進(jìn)行相應(yīng)的動作。而中繼鏈則是側(cè)鏈和公證人機(jī)制的結(jié)合體,中繼鏈具有訪問需要和驗(yàn)證進(jìn)行互操作的鏈的關(guān)鍵信息并對兩條鏈的跨鏈消息進(jìn)行轉(zhuǎn)移。從這個角度看中繼鏈也是一種去中心的公證人機(jī)制。
下面就這幾種跨鏈方式的典型實(shí)現(xiàn)方式進(jìn)行詳細(xì)分析:
典型跨鏈機(jī)制實(shí)現(xiàn)分析
公證人機(jī)制
最傳統(tǒng)的公證人機(jī)制是基于中心化交易所得跨鏈資產(chǎn)交換,這種跨鏈的方式比較單一,只支持資產(chǎn)的交換,如下圖演示了Alice通過交易所,用比特幣和Bob交換ETH的過程。
- Alice 通過交易所錢包將自己的比特幣打入交易所地址;
- Alice 在交易所上掛上賣單1個BTC賣出20ETH價格;
- Bob需要將自己的ETH打入交易所的以太坊地址;
- Bob通過交易所掛出購買比特幣的單子 20ETH買一個比特幣;
- 交易所將Alice的賣單和Bob的賣單進(jìn)行撮合;
- 交易所將Alice在交易所存儲的1BTC 轉(zhuǎn)移給Bob的比特幣地址;
- 交易所將Bob在交易所存儲的20ETH 轉(zhuǎn)移給Alice的以太坊地址;
至此完成了Alice和Bob的BTC和ETH的交換(案例中省去了交易所的服務(wù)費(fèi))。通過該例子可以看出交易所的方式目前僅能夠支持資產(chǎn)的交換,且資產(chǎn)交換的原子性、安全性完全由中心化的交易所保障存在較大的中心化風(fēng)險。

除此之外還有一種著名的分布式賬本技術(shù)Ripple,也是采用類似公證人的機(jī)制來解決全球金融機(jī)構(gòu)之間的資產(chǎn)交換。Ripple的系統(tǒng)架構(gòu)如上圖所示,Ripple系統(tǒng)中交易通過網(wǎng)絡(luò)中的驗(yàn)證者進(jìn)行交易的驗(yàn)證,驗(yàn)證者驗(yàn)證的交易通過加密算法保護(hù)交易內(nèi)容不能被驗(yàn)證著窺探從而保證交易的隱私性。
公證人機(jī)制的跨鏈技術(shù)實(shí)現(xiàn)簡單,且能夠比較靈活地支持不同類型的底層區(qū)塊鏈體系。公證人機(jī)制的主要問題在于公證人機(jī)制的安全性保障完全由公證人系統(tǒng)保障。參與跨鏈的相關(guān)方需要對中間人給予較大的信任。
哈希鎖定
哈希時間鎖定(HTLC-全稱是 Hashed Timelock Contracts)最早出現(xiàn)在比特幣的閃電網(wǎng)絡(luò),跨鏈資產(chǎn)交換支持一定數(shù)量的A鏈資產(chǎn)和一定數(shù)量的B鏈資產(chǎn)進(jìn)行原子交換。哈希時間鎖定巧妙地采用了哈希鎖和時間鎖,迫使資產(chǎn)的接收方在deadline內(nèi)確定收款并產(chǎn)生一種收款證明給打款人,否則資產(chǎn)會歸還給打款人。收款證明能夠被付款人用來獲取接收人區(qū)塊鏈上的等量價值的數(shù)量資產(chǎn)或觸發(fā)其他事件。
如下圖所示,我們用一個例子來闡述如何使用哈希時間鎖定進(jìn)行跨鏈的原子資產(chǎn)交換,假設(shè)Alice和Bob有資產(chǎn)交換的需求,Alice想用1個BTC和Bob換20個ETH. 那么首先需要在兩條鏈上設(shè)置哈希時間鎖定合約,然后執(zhí)行如下步驟:

- Alice 隨機(jī)構(gòu)建一個字符串s,并計算出其哈希
h = hash(s); - Alice 將h發(fā)送給Bob的合約;
- Alice鎖定自己的1個BTC資產(chǎn),并設(shè)置一個
較長的鎖定時間t1, 并設(shè)置了獲取該BTC的一個條件:誰能夠提供h的原始值s就可以得到該BTC; - Bob觀察到Alice 合約中鎖定了一個BTC, 然后Bob鎖定自己的20個ETH資產(chǎn),并設(shè)置一個
相對較短的鎖定時間t2, t2 < t1, Bob也設(shè)置了同樣獲取條件(誰提供h的原始值s就可以獲取20個ETH); - Alice將自己最初生成的字符串s 發(fā)送到Bob的合約里取得了20個ETH;
- Bob觀察到步驟5中Alice的s值,將其發(fā)送給Alice的合約成功獲取1個BTC; 至此Alice和Bob完成了資產(chǎn)的交換。
從上述的過程我們可以看出哈希時間鎖定合約有一些約束條件:
- 進(jìn)行跨鏈資產(chǎn)交換的雙方必須能夠解析雙方的合約內(nèi)部數(shù)據(jù),例如s,例如鎖定資產(chǎn)的證明等;
- 哈希鎖定的超時時間設(shè)置時需要保證存在時間差,這樣在單方面作弊時另一方可以及時撤回自己的資產(chǎn)。
哈希鎖定的思想運(yù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è)鏈?zhǔn)窍鄬τ谥麈湺缘?,最初的?cè)鏈提出是針對比特幣做新特性的測試和研發(fā)。側(cè)鏈相對主鏈而言能夠驗(yàn)證和解析主鏈中的區(qū)塊數(shù)據(jù)和賬本數(shù)據(jù)。側(cè)鏈實(shí)現(xiàn)的基礎(chǔ)技術(shù)是雙向錨定(Two-way Peg),通過雙向錨定技術(shù)可以將數(shù)字資產(chǎn)在主鏈上進(jìn)行鎖定,同時將等價的資產(chǎn)在側(cè)鏈中釋放。相反當(dāng)側(cè)鏈中相關(guān)資產(chǎn)進(jìn)行鎖定時,主鏈上錨定的等價資產(chǎn)也可以被釋放。
BTC-Relay是號稱的史上第一個側(cè)鏈,BTC-Relay是通過以太坊構(gòu)建了一個比特幣的側(cè)面,運(yùn)用以太坊的智能合約允許用戶驗(yàn)證比特幣的交易。這里我們?nèi)匀灰訟lice 1BTC和Bob的20ETH數(shù)字資產(chǎn)交換為例闡述相應(yīng)原理:
- Bob將20ETH發(fā)送到BTCSwap的合約進(jìn)行凍結(jié);(該合約只要能夠確認(rèn)BTC網(wǎng)絡(luò)上Bob接收到來自Alice 1BTC就自動將20ETH轉(zhuǎn)給Alice)
- Alice 確認(rèn)Bob凍結(jié)信息后,將1 BTC轉(zhuǎn)給Bob比特幣賬戶;
- BTC Relayer將比特幣區(qū)塊頭推送到BTCSwap合約;
- Alice 接下來就可以調(diào)用relay tx;
- BTCSwap合約結(jié)合tx和BTC鏈的區(qū)塊鏈進(jìn)行SPV驗(yàn)證,驗(yàn)證通過則將20ETH轉(zhuǎn)給Alice以太坊地址。

這種跨鏈的實(shí)現(xiàn)方式簡單,但是BTC Relay需要額外的信任和維護(hù)成本,且智能合約內(nèi)部的數(shù)據(jù)存儲會有體積膨脹的問題。但是側(cè)鏈的機(jī)制相對哈希鎖定而言能夠提供更多的跨鏈交互場景,側(cè)鏈以及類SPV驗(yàn)證的思想適合所有跨鏈的場景。
中繼鏈
中繼鏈本質(zhì)上算是公證人機(jī)制和側(cè)鏈機(jī)制的融合和擴(kuò)展,目前社區(qū)內(nèi)最活躍的兩個跨鏈項目Cosmos 和 Polkadot 采用的都是基于中繼鏈的多鏈多層架構(gòu),其中Cosmos目前支持的是跨鏈資產(chǎn)交互而Polkadot則宣稱提供任意類型的跨鏈交互,具體實(shí)現(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. 強(qiáng)監(jiān)管性(Sovereignty):每個平行鏈都具有一組驗(yàn)證者能夠決定其出塊。

為了支持平行鏈之間的跨鏈互操作,Cosmos提出了一種跨鏈交互協(xié)議IBC(Inter-Blockchain Communication protocol), 并利用tendermint共識算法的即時確定性實(shí)現(xiàn)多個異構(gòu)鏈之間的價值和數(shù)據(jù)傳輸。
首先我們以Chain A 到Chain B 轉(zhuǎn)賬10 token為例說明使用IBC的跨鏈交互: 1. 互相跟蹤,也就是說如果A要和B進(jìn)行跨鏈交易,那么A和B鏈需要分別運(yùn)行相當(dāng)于對方區(qū)塊鏈的輕節(jié)點(diǎn)服務(wù),這樣互相可以實(shí)時接收到對方的區(qū)塊頭信息(方便后續(xù)執(zhí)行類SPV驗(yàn)證); 2. A鏈上初始化IBC協(xié)議,凍結(jié)相關(guān)資產(chǎn)10 token, 并生成相應(yīng)的證明發(fā)送給B區(qū)塊鏈; 3. B鏈接收到相應(yīng)的IBC消息,通過A鏈的區(qū)塊頭信息確定A確實(shí)進(jìn)行相應(yīng)的資產(chǎn)凍結(jié),然后B鏈會生成等價值10 token的資產(chǎn)。
以上是使用IBC協(xié)議的兩個平行鏈直接進(jìn)行跨鏈的基本過程,如果區(qū)塊鏈很多,那么這種方式的兩兩跨鏈復(fù)雜度會呈現(xiàn)組合級別增加。因此Cosmos網(wǎng)絡(luò)又引入了一種Hub的中繼鏈,所有的平行鏈都通過IBC連接到Hub,讓Hub輔助跨鏈交易的驗(yàn)證和轉(zhuǎn)移,目前Cosmos實(shí)現(xiàn)了一個官方的Hub稱為Cosmos Hub(如前圖所示)。
如下圖所示是Cosmos 網(wǎng)絡(luò)的詳細(xì)架構(gòu)圖,Cosmos為方便平行鏈開發(fā)提供了基本服務(wù)CosmosSDK包括:共識、網(wǎng)絡(luò)以及IBC協(xié)議等,這樣基于Cosmos SDK開發(fā)的子鏈之間都能夠方便地互相交互。此外對于非Cosmos SDK 開發(fā)的區(qū)塊鏈需要使用Peg Zone進(jìn)行橋接,如圖中的Ethereum。

筆者認(rèn)為Cosmos為跨鏈帶來的最大貢獻(xiàn)在于IBC協(xié)議的設(shè)計,IBC協(xié)議提供了一種通用的跨鏈協(xié)議標(biāo)準(zhǔn)。IBC的設(shè)計使得跨鏈交易可以在多個Hub之間進(jìn)行安全路由和轉(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)圖如下圖所示,主要包含三種角色鏈和四種參與方:

三種鏈角色:
- 中繼鏈(Relay chain): 中繼鏈位于Polkadot的體系的核心地位,主要是為整個系統(tǒng)提供統(tǒng)一的共識和安全性保障;
- 平行鏈(Parachain): 在Polkadot中平行鏈負(fù)責(zé)具體的業(yè)務(wù)場景,平行鏈自身不具備區(qū)塊的共識,它們將共識的職責(zé)渡讓給了中繼鏈,所有平行鏈共享來自中繼鏈的安全保障,中繼鏈?zhǔn)荘olkadot組成的一部分;
- 橋接鏈:橋接鏈指的是非Polkadot體系之外的區(qū)塊鏈,如Bitcoin, Ethereum, 這些區(qū)塊鏈有自身的共識算法,它們通過不同的Bridge與Polkadot連接在一起進(jìn)行跨鏈交互。
四種參與方:
- 驗(yàn)證者(Validator): 驗(yàn)證者負(fù)責(zé)Polkadot的網(wǎng)絡(luò)出塊,會運(yùn)行一個中繼鏈的客戶端,在每一輪區(qū)塊產(chǎn)生中會對其提名的平行鏈出的塊進(jìn)行核驗(yàn)。當(dāng)平行鏈的跨都被他們的子驗(yàn)證者集合確定好之后,驗(yàn)證者們會將所有平行鏈區(qū)塊頭組裝到中繼鏈的區(qū)塊并進(jìn)行共識。
- 核驗(yàn)人(Collator): 幫助驗(yàn)證者收集、驗(yàn)證和提交備選平行鏈區(qū)塊,維護(hù)了一個平行鏈的全節(jié)點(diǎn)。
- 釣魚人(Fisherman):釣魚人主要靠檢舉非法交易或者區(qū)塊以獲取收益;
- 提名人(Nominator): 擁有stake的相關(guān)方,維護(hù)和負(fù)責(zé)驗(yàn)證者的安全性。
Polkadot的特性包括兩個,一個是共享安全性,一個是不需信任的跨鏈交互。這里的不需信任的跨鏈交互其實(shí)是和第一個特點(diǎn)共享安全性密切相關(guān)的,而且Polkadot的不需信任的跨鏈交互也主要是只其內(nèi)部的平行鏈之間。
在Polkadot中如果parachain A 需要發(fā)送一筆交易到parachain B的過程如下:
- A鏈將跨鏈交易放到自己的engress(每個平行鏈有一個消息輸出隊列engress 和一個消息輸入隊列ingress);
- A鏈的Collator收集A鏈的普通交易以及跨鏈交易并提交給A鏈的驗(yàn)證者集合;
- A鏈的驗(yàn)證者集合驗(yàn)證成功,將本次A鏈的區(qū)塊頭信息以及A鏈的engress內(nèi)信息提交到中繼鏈上;
- 中繼鏈運(yùn)行共識算法進(jìn)行區(qū)塊確認(rèn)以及跨鏈交易路由,中繼鏈上的驗(yàn)證者會將A鏈的相應(yīng)交易從A鏈的engress queue中移動到B鏈的ingress queue中。
- B鏈執(zhí)行區(qū)塊,將ingress queue中相應(yīng)交易執(zhí)行并修改自身賬本。
以上便是Polkadot跨鏈交易的主要步驟,由于所有平行鏈的共識同步發(fā)生(中繼鏈區(qū)塊示意圖如下),因此跨鏈交易不會有諸如雙花等安全性問題。

Polkadot 的平行鏈之間的跨鏈交換的安全性保障主要來自共享安全性這個特點(diǎn),共享安全性使得跨鏈交易和普通交易同步發(fā)生也就不存在其他跨鏈場景中的雙花等跨鏈數(shù)據(jù)不一致問題。其次Polkadot中的引入的特殊狀態(tài)驗(yàn)證方法方便中繼鏈進(jìn)行跨鏈等消息的有效性驗(yàn)證。
值得一提的是Polkadot項目目前還處在項目初期,對于parachain的設(shè)計、Collator的協(xié)作以及Validator的共識、工作效率等都未完善。這種共享安全性的方式是否也限制了平行鏈自身的性能都還有待考證。
關(guān)于跨鏈技術(shù)的幾點(diǎn)思考
綜合以上的一些主流跨鏈場景和方案的分析,從跨鏈的概念以及需求上看跨鏈的本質(zhì)其實(shí)就是 如何將A鏈上的消息M安全可信地轉(zhuǎn)移到B鏈并在B鏈上產(chǎn)生預(yù)期效果。那么一個成功的跨鏈交互到底需要解決哪些問題呢?筆者認(rèn)為主要有以下四個問題:
- 消息M的真實(shí)性證明,也就是說M是否確實(shí)是存在A鏈上的,也確實(shí)是A鏈發(fā)給B鏈的;
- 消息M的路由,如何讓跨鏈消息安全跨系統(tǒng)路由;
- 消息M的有效性證明,這里的有效性是指來自A鏈的消息M如何讓B鏈認(rèn)可其抵達(dá)B鏈時狀態(tài)仍然有效,比如轉(zhuǎn)移的資產(chǎn)是否是凍結(jié)的,沒有雙花的,如果是狀態(tài)那么是否在此期間未發(fā)生改變等;
- 消息M的執(zhí)行結(jié)果證明,這個是指A鏈需要確認(rèn)跨鏈操作是否成功,以及成功操作的相應(yīng)回執(zhí)。
那么針對這些關(guān)鍵本質(zhì)問題,如何去處理呢?筆者設(shè)想未來的區(qū)塊鏈應(yīng)該在底層平臺的設(shè)計之初就需要遵循統(tǒng)一的跨鏈協(xié)議標(biāo)準(zhǔn),就像現(xiàn)在的操作系統(tǒng)對TCP/IP協(xié)議的支持一樣。需要進(jìn)行通用跨鏈的區(qū)塊鏈至少要支持一下功能:
- 提供跨鏈消息的輸入和輸出口徑,例如Cosmos和Polkadot的跨鏈隊列;
- 提供跨鏈消息的真實(shí)性證明,區(qū)塊鏈需要提供類似SPV的證明手段;
- 消息的有效路由需要構(gòu)建跨鏈消息的統(tǒng)一格式,定義好消息的來源和去處以及消息內(nèi)容,如Cosmos的IBC協(xié)議;
- 消息的有效性證明,區(qū)塊鏈可能需要設(shè)計新的類似UTXO的可驗(yàn)證存儲結(jié)構(gòu),方便做類SPV類驗(yàn)證,否則目前的基于KV的數(shù)據(jù)存儲方式做有效性證明幾乎不可能;
- 跨鏈執(zhí)行結(jié)果證明,和有效性證明類似,需要全新的數(shù)據(jù)結(jié)構(gòu)和運(yùn)行算法支持。
除此之外,跨鏈系統(tǒng)的設(shè)計還需要考慮系統(tǒng)穩(wěn)定性、可擴(kuò)展性以及易升級性、容錯等等,總而言之,真正的可信互聯(lián)網(wǎng)建設(shè)艱辛蠻長,諸君共勉!
本文轉(zhuǎn)載自《跨鏈技術(shù)的分析和思考》,來源 | BitLife(ID:bitlife2017)作者 | Xiaoyi Wang,感謝分享