深入理解三種跨鏈技術:HTLC、共識跨鏈和中繼跨鏈

來源:星想法

作者:Star Li

原標題:《跨鏈技術分類總結》

最近看了看跨鏈相關的項目,總結一下跨鏈的相關技術。所謂“跨鏈”,一條鏈上的“跨鏈”語義能在另外鏈上正確執行。目前跨鏈項目主要實現在一個鏈上的資產映射到另外一條鏈上。從技術角度看,個人認為目前跨鏈技術主要有三種:HTLC,跨鏈橋(基於共識)和跨鏈橋(基於輕客戶端)。相關的技術以及項目總結如下圖:

深入理解三種跨鏈技術:HTLC、共識跨鏈和中繼跨鏈

01HTLC(Hash Time Lock Contract)

HTLC原理比較簡單:

深入理解三種跨鏈技術:HTLC、共識跨鏈和中繼跨鏈

如果Alice和Tom之間想交換資產,Alice先創建HTLC,Tom接着創建具有同樣Hash的HTLC。簡單的說,Tom和Alice創建了具有同樣秘鑰的“鎖”,鎖住各自資產。當Alice用秘鑰打開Tom的資產時,Tom用同樣的秘鑰可以打開Alice的資產。當然,Tom和Alice都需要確認資產和鎖的時間。

通過HTLC實現跨鏈,簡單並且保證了交易雙方的原子操作,但是要求兩條鏈都支持智能合約,限定了兩個交易方並且交換的資產不可分割。事實上,為了保證交易雙方有效交易,交易雙方需要額外的溝通渠道預先達成共識。

02跨鏈橋 – 基於共識

基於其他共識的跨鏈橋邏輯上比較好實現,由共識確認一個鏈上的事件,並在另外一條鏈上執行。整個橋的安全性取決於共識的強弱。共識,除了傳統意義的共識機制(BFT,PoS等等)外,還包括多方計算(MPC)和多簽。

03跨鏈橋 – 基於輕客戶端

為了在一條鏈上能驗證另外一條鏈上的信息,在這條鏈上“運行”另外一條鏈的輕客戶端。通常輕客戶端都是基於SPV(Simple Payment Verification)協議。SPV源自BTC,主要用在PoW共識的鏈中。Celo和Harmony也針對自己鏈的共識算法實現了輕客戶端。純粹的PoS共識的鏈比較難實現輕客戶端,因為共識依賴Staking,而Staking由交易組成。為了實現輕客戶端,窮舉Staking交易不現實。

深入理解三種跨鏈技術:HTLC、共識跨鏈和中繼跨鏈

跨鏈橋的兩個鏈互相通過輕客戶端驗證對方鏈的狀態。這種跨鏈橋依賴Relay(中繼),及時同步鏈的區塊頭信息。因為要同步區塊頭,需要如下的一些因素:

1/ 同步頻次和費用:在另外一條鏈上存儲區塊頭信息需要費用。特別是tps比較高的鏈,區塊比較多。

2/ 確認主鏈以及區塊確認:根據鏈的共識,通過區塊頭信息確定主鏈。以PoW的鏈為例,區塊確認一般通過後續區塊個數確認。

優化同步費用有幾種思路:1/ 隨機挑戰(NiPoPOW,FlyClient)2/ zk-SNARK (包括recursive zk-SNARK)。選一些典型介紹:

  • BTCRelay

採用傳統的SPV輕客戶端的實現方式實現從BTC到ETH的跨鏈。顯然為了同步BTC的區塊頭,在ETH消耗Gas。在以太坊Gas price比較高的情況下,同步費用比較高。

  • FlyClient

FlyClient採用隨機挑戰和MMR(Merkle Mountain Range)的技術,降低輕客戶端同步區塊的個數。隨機挑戰的目的是在一定範圍的區塊並不需要全部同步到鏈上,隨機抽取一些區塊同步。為了在鏈上能驗證沒有抽取到的區塊,所有的區塊信息通過MMR組織在一起。MMR是一種變種的Merkle樹,適用於追加節點的場景。MMR,相對於普通二叉的Merkle樹,具有更新葉子結點代價小的特點。

  • zkRelay

zkRelay也嘗試降低鏈上輕客戶端同步區塊的費用。和FlyClient不同,zkRelay採用的是zk-SNARK證明。將一段範圍內的區塊有效性,通過將鏈下證明提交到鏈上,鏈上只需要檢查證明是否有效。

  • Celo

Celo是個有意思的項目。Celo項目本身和跨鏈沒有什麼關係,但是給輕客戶端提供了一些新思路。為了實現更輕客戶端,Celo採用遞歸零知識證明技術,將區塊頭的連接信息進行遞歸證明。一個證明就能證明從創世區塊到當前區塊的合法性。一個輕結點,只需要同步最新的證明就能確定所有區塊的有效性。

  • Summa (Stateless SPV)

上述的項目,還都是在降低輕客戶端鏈上同步代價方面做優化。Summa提供了一個全新的思路:

深入理解三種跨鏈技術:HTLC、共識跨鏈和中繼跨鏈

摘抄自Summa介紹的PPT。Summa項目觀察到一個有趣的事實:一條鏈的區塊頭在另外一條鏈上同步了,但是很多區塊有可能是浪費的。原因是並沒有需要證明的交易在這些區塊中。Summa假設了一種“Ecnomic“安全的做法:證明一個交易在一個區塊中,並且區塊後有若干區塊確認。Summa認為在偽造的區塊后連續出塊是一個非常不經濟的做法,有這樣的算力應該去計算真正的區塊。使用這種方式,在鏈上不需要存儲輕結點信息,只需要在一個交易需要證明時提供相應區塊以及確認區塊的證明即可。這樣的方式也稱為Stateless SPV(無狀態SPV)。當然這種經濟安全假設需要推敲,特別是在難度較低的情況下,偽造區塊以及確認區塊相對比較容易。

  • Xclaim

針對傳統的沒有鏈上計算能力的鏈,不可能在鏈上實現其他鏈的輕客戶端。也就是說,如果只是通過鏈上輕客戶端的方式,在這些鏈上只能實現單向的跨鏈。為了在這些鏈上也實現雙向跨鏈,Xclaim在引入抵押角色的情況下實現資產雙向映射。Xclaim在論文中提出了三種操作:issue(發行),swap(交換),redeem(贖回)。以issue和redeem為例,看看抵押角色的作用:

深入理解三種跨鏈技術:HTLC、共識跨鏈和中繼跨鏈

大部分鏈都支持轉賬功能。抵押者作為中間人,在另外一條鏈(支持智能合約)有抵押的情況下,接受其他人的資金的轉賬。轉賬發起者,可以通過輕客戶端驗證的方式在另外鏈上證明交易合法。在另外一條鏈上,驗證合法的跨鏈交易后,進行轉賬。

深入理解三種跨鏈技術:HTLC、共識跨鏈和中繼跨鏈

在一條鏈上提出burn操作后,抵押者觀察到后,主動先發起轉賬。並在轉賬成功后,向另外一條鏈上的智能合約提供交易證明“贖回”資金。簡單的說,在兩條鏈只要有一條支持智能合約的基礎上,通過抵押者角色,可以完成雙向跨鏈的操作。根本原因就是鏈上的轉賬交易能夠被確認驗證。

總結:

跨鏈是個複雜的話題。通過其他共識實現跨鏈相對簡單現實。HTLC能實現交易雙方的原子操作,但是限定交易為兩方,而且為了提供交易的效率需要交易雙方預先溝通。通過在鏈上實現輕客戶端驗證其他鏈的狀態是一直探索的方向。對於PoW鏈,鏈上實現輕客戶端需要考慮區塊頭同步成本以及主鏈確認邏輯。

本文鏈接:https://www.8btc.com/article/6669649

轉載請註明文章出處

(0)
上一篇 2021-08-04 15:14
下一篇 2021-08-04 16:11

相关推荐