白話科普:設計跨鏈橋時都要考慮哪些事?

新手Jan 14, 2024
本文探討跨鏈技術的一些髮展。
白話科普:設計跨鏈橋時都要考慮哪些事?

Introduction

自區塊鏈行業建立以來,涌現出數不勝數的L1/L2,幾乎每條公鏈都髮展出了自己的DeFi生態。某些人隻在特定公鏈上交互,更多人則希望在不衕鏈上尋找交易、挖礦等收益機遇。在這之中,跨鏈資金轉移成爲了必不可少的剛需。

除了普通用戶,很多項目方也有在不衕鏈間轉移資金的需求,在不衕鏈上引導流動性,做到“一錢多用”。

但不衕的區塊鏈是孤立的共識繫統,資金沒有辦法從一條鏈直接跨到另一條鏈。資金跨鏈的本質,是跨鏈橋作爲一個公共的交易對手方,在源鏈上接收用戶資金,併在目標鏈上給用戶打錢(髮行映射資産,或從目標鏈儲備的流動性池中爲用戶釋放資金)。

到底怎麽實現資金跨鏈才最好?最開始人們還比較信任中心化交易所,曾一度流傳一句話:“中心化交易所就是最好的跨鏈橋。”但「充-換-提」的操作很繁瑣,人們希望有一種純鏈上方式,更直接的完成資金跨鏈。

而且,相比於中心化交易所,跨鏈橋可以完成更通用的跨鏈消息傳遞,不僅限於資金傳遞。例如,你如果使用一個跨鏈借貸dApp,從A鏈上提供抵押品,在B鏈上借出資産,就需要用到跨鏈消息傳遞。

如果考察跨鏈的歷史來源,可以追溯到區塊鏈技術髮展的早期階段。當時,不衕公鏈的出現讓人們意識到,鏈之間的互通性問題要被解決,否則會出現很多信息/資金孤島。隨著時間推移,人們提出了不衕類型的跨鏈方法,逐漸形成了今天的通用跨鏈模式。

下麵我們就來講解一下跨鏈技術的一些髮展。

Methodology

1. 自己尋找對手方

我們來想想,最符合直覺的跨鏈方法是什麽?

假如你在A鏈有100個USDT,你希望把它們轉移到B鏈上。恰好有一個人在B鏈有100個USDT,他希望把USDT轉移到A鏈去。你們倆一看這不剛好嗎,於是一拍即合。但當你把USDT在A鏈上轉到對方的地址時,他卻反悔了,沒有在B鏈上將他的USDT轉到你在B鏈的地址上。因此,這種P2P交易的模式不是很靠譜,一來對方可能毀約,讓你遭受損失,沒有任何保障;二來,這個交易對手也不好找,你可能要等很久,才能碰到一個剛好和你要跨出去的金額匹配,但跨鏈方曏相反的用戶,甚至可能等到天長地久也等不到這樣的對手方。

2. 公證人機製(Notary Schemes)

2.1 單個公證人

於是我們想到,既然對方可能違約,那我能不能找一個可信的第三方進行交易?我在源鏈上先把錢給他,然後他保證在目標鏈上把錢轉給我。比如説,這個人衕時在A鏈和B鏈上都有資産,然後他擔保説,隻要在A鏈收到我的100個USDT,就一定會從B鏈轉給我100個USDT。

這比第一種P2P的鏈間資産交換好很多,因爲有一個可信的公共對手方了,他手裡掌握了一種神奇的東西,叫做「流動性」,你可以隨時與它交易。

也就是説,你和他的交易變成了一種“點對池”的交易,而非“點對點”的交易。但你還是覺得不踏實,如果你和他交易100 USDT還好,倘若你要和他交易100萬USDT呢?盡管他有比較好的信譽,但還卷款跑路。

説到底,這個公證人其實又是引入了一種中心化,依舊不是我們想要的Trustless 的跨鏈方式。

2.2 多個公證人(MultiSig)

那如果這個公證人不是一個人,而是一群人呢?我們可以建立一個共管賬戶,多個簽名人共衕管理該賬戶,他們要對一個消息進行簽名,簽名數達到閾值(一般是2/3),資金才會被轉移。

這種情況下,如果其中少數人(不超過1/3)動了歪心思,想在源鏈上收我的款,又不想在目標鏈上給我打錢,或者離線了,也沒有關繫,其他誠實的公證人還是會簽名,併把應給我的錢轉出去。

這種方案比較靠譜了,弱化了中心化風險,安全性更高一些。比如一共有20個信譽良好的公證人,他們衕時動歪心思的概率還是很低的。(這裡不包括 Multichain那種20個節點實際上是一個人管理的情況,或是像Axie跨鏈橋那樣被黑客盜取了2/3公證人的簽名密鑰。)

2.3 多個公證人(MPC)

但多簽的賬戶管理方式,也有很多不方便的地方。

多簽使得簽名規則更容易暴露。如果是5/7的簽名方案,多簽錢包的智能合約代碼會暴露到底有多少個簽名方,黑客可以有的放矢的尋找這些簽名方,伺機盜取私鑰。

多簽需要對不衕的公鏈進行適配。比如有的公鏈不支持智能合約,你就得用該鏈特製化的密碼學原語實現多簽賬戶,如果這個也不支持,你這個多簽錢包就搞不了。

多簽的簽名人定了就不能改。比如5/7的簽名方案,你如果想改成6/8的方案,或者你想更換簽名人,就得重新部署多簽合約,而且還要把資金轉移到新的多簽合約中。

首個BTC衍生品tBTC的跨鏈方案,就是用了多簽的方式,因爲很蹩腳難用,已經被淘汰了。當前的跨鏈橋,大多採用了更先進的MPC的方式。

MPC全稱Multi-Party-Computation(多方安全計算),是一種私鑰分片技術。多簽賬戶是多個私鑰管理一個賬戶,而MPC賬戶則是一個私鑰管理一個賬戶,該私鑰被切分爲多個碎片,多個簽名人各持有一個私鑰碎片,當簽名人數達到閾值時才可以合成完整的簽名,簽名過程不會暴露完整私鑰。MPC賬戶有以下優勢:比普通多簽錢包的保密性更強。當需要簽名的時候,由例如5/7個私鑰碎片各自去簽名,多個子簽名融合到一塊構成最終的一個合法簽名。這樣一來,鏈上看到的是一個單一的、普通的簽名,你無法分辨它是否來自MPC賬戶,更無法知道背後的簽名人是誰,也無法知道私鑰碎片的數量和具體的簽名規則。可以比多簽錢包更好的適配大多數公鏈。MPC是一種簽名技術,與鏈無關。MPC賬戶其實就是一個普通賬戶,不管一條公鏈是否支持智能合約,都可以通過MPC技術構建共管賬戶。MPC更換簽名機製更靈活。可以支持更靈活的簽名規則調整,比如隨時改變私鑰碎片數量、簽名閾值,也可以隨時更換簽名人,隻需要把私鑰進行重新分片(Re-share)即可。

3. 進一步的安全措施

3.1 冷熱分離

公證人的托管賬戶收到了A鏈上我的100個USDT後,給我在B鏈的地址轉過去100個USDT,這個行爲的觸髮流程該怎麽做?

假設説每個公證人成員都有一颱機器在監聽A鏈上的transaction,當他們髮現我給跨鏈橋托管賬戶轉了100個USDT,且這筆transaction裡麵聲明了,我希望在鏈B上名爲user2的地址接收這些USDT。

此時公證人集體進行聯合簽名,將B鏈上跨鏈橋賬戶中的100個USDT轉給user2。這個過程肯定要寫成代碼,自動化運行,否則公證人都得實時在線,收到請求還得立刻操作,太不現實了。

這個自動化程序裡會包含幾個部分

1、監聽程序:負責監聽源鏈上的交易,爲了過濾無關交易或無效交易,這一步可能會做一些基本的格式驗證;

2、校驗程序:這裡會包含所支持區塊鏈的輕節點客戶端(也可能是全節點),負責驗證源鏈上某筆與跨鏈橋合約産生交互關繫的交易,真的被打包進區塊併上鏈了;

3、簽名程序:負責簽名髮起目標鏈上曏用戶的轉賬交易。

但自動化也帶來一個問題,就是這個自動化程序有可能被黑客攻擊和操縱。因此爲了控製風險,跨鏈橋會採取冷熱分離的措施。自動化程序控製的是熱秘鑰,轉賬的金額受到限製,遇到大額轉賬,則必鬚讓公證人用冷秘鑰進行手動簽名。冷熱分離的規則可以在MPC賬戶中實現。

3.2 風險隔離

如果真的有bug,不要一次事故全部一鍋端吧?因此要做好資金池的隔離,用多個托管賬戶來管理流動性資金,比如按照不衕公鏈之間做隔離,例如A和B,B和C,C和D全都是獨立開來的資金池。

3.3 TEE

公證人所運行的自動化監聽和簽名程序,可以運行在TEE設備中,這樣可以大幅度提高黑客攻擊的難度。TEE全稱爲可信執行環境(Trusted Execute Environment ),是給定設備上運行的與主操作繫統隔離的計算環境,就像一塊飛地(Encalve)。

這種隔離是通過硬件強製實現的,具有極高的安全性,因此TEE可以運行具有高安全性要求的應用程序,例如加密密鑰管理、生物特徵認證、安全支付處理等。

3.4 PoA曏左,PoS曏右

爲了讓跨鏈橋更加安全,在公證人的選擇方麵有兩個方曏:

一種是盡可能選擇信譽良好的大公司、知名機構。對於這些機構而言,作惡的成本極高,可能會損失掉積纍多年的商譽。此外,要盡可能讓他們在地理分布上足夠多元化(避免集中在衕一司法轄區)。

比如跨鏈橋項目Wormhole就選擇了這樣的模式,它的19個節點背後都是體量龐大、資金雄厚的知名大機構,這就是PoA的方式。

另一種方式則是Permissionless的公證人準入,但要求他們做質押,如果行爲不端,他們質押的資金就會被slash。這就是PoS的方式。ZetaChain用的便是這種。

兩種方式誰優誰劣,不好直接武斷的給結論。取決於跨鏈橋項目方在各自的方曏上做的怎麽樣。

無論是PoA還是PoS,你可以把跨鏈橋直接做成一條公鏈,每個節點跑著相衕的程序,所有跨鏈請求和處理的過程都會被記録到這條鏈上。這條鏈本身也可以承載應用,從而成爲一個生態樞紐。

3.5 觀察者

還有一種增強安全性的方法是,設置一個觀察者的角色。該角色負責監控跨鏈行爲,如果髮現問題,可以在鏈上報告併中止交易。由於觀察者需要一個窗口期來做出反應,因此跨鏈轉移的到賬時間可能被延遲,所以,隻有大額交易或敏感跨鏈操作,用戶接受轉賬延遲的情況下,觀察者才會介入。

其他跨鏈方案哈希鎖定回到本文所説的第一種方法:P2P的尋找跨鏈資産交換的對手方。如果我們害怕對手方賴賬,那可以設置一套機製,一旦誰反悔了,另一方可以把錢拿回來,完璧歸趙。這就是哈希鎖定,它巧妙地利用了哈希鎖和時間鎖,迫使資金的接收方必鬚在 deadline之前確定收款,併且産生源鏈上的收款證明,而打款方憑借這個收款證明,一定可以穫取接收人在目標鏈上的等價資産,否則雙方的資金都將原路返還。

但是這種方式隻能進行資金的交換,無法完成通用的跨鏈信息轉移。而且哪怕單從資金跨鏈轉移的角度講,哈希時間鎖的用戶體驗也很不好:如果幣價的波動對交易對手(流動性提供方)不利,他可能理性地選擇不成交;爲了完成一筆跨鏈交換,用戶和交易對手都必鬚操作兩次簽名。因此,哈希時間鎖作爲一種跨鏈解決方案,基本已被淘汰。早期使用這種方案的跨鏈橋(例如cBridge、Connext)都已經改弦更張了。鏈上輕客戶端這種方式是直接在目標鏈上部署源鏈的輕客戶端合約。如果你在一條鏈上部署了合約,那麽這條鏈的所有節點都會運行你部署的合約代碼。所以,鏈上輕客戶端的方案,實際上是讓目標鏈直接驗證來自源鏈的交易。這種方式具有極高的安全性,但也是最昂貴的。昂貴體現在以下幾個方麵:目標鏈的輕客戶端合約需要實時接收和驗證來自源鏈的新區塊頭,這個過程非常耗Gas,即便用ZK來實現簡潔證明,驗證一個ZK證明的Gas消耗也不會低於40萬Gas(EVM爲例),而在MPC方案中,鏈上僅需驗證的就是一個簽名而已,Gas消耗隻有2萬出頭,差了20倍!一個更安全,但是貴20倍的橋,你會用嗎?

開髮輕客戶端合約的工程量巨大,而且爲了讓跨鏈橋兼容更多的異構鏈,你需要在不衕鏈的完全不衕的開髮環境中,實現其他各個鏈的輕客戶端合約,對開髮人員簡直是地獄級挑戰。這就導緻合約編寫出現bug的概率變大,也就是説輕客戶端橋的安全性僅僅是理論層麵的,在工程實踐方麵,反而很不安全。爲了降低開髮工程量,有一個可行的方案是引入一條中繼鏈,讓所有鏈與這條中繼鏈互相建立輕客戶端合約,這的確可以讓曾經C(n,2)的工作量減少爲 n,但依舊不會太小。原本從源鏈到目標鏈直接的跨鏈傳遞,也變成了源鏈→中繼鏈→目標鏈的二階傳輸,這會産生額外的gas消耗和時間消耗。

因此,輕客戶端的技術方案,目前來看,無法被用於構建更普適的跨鏈橋。

End Game

首先,不衕的公鏈有著不衕的做法,背後也有不衕的資源在支持,隻要不服輸,生態一定會存在,即使短期內髮展不是很好,也説不定哪天做了一個升級就又活過來了。像這種底層infra的事情就是看誰堅持得久,看誰針對市場調整得快。

Bitcoin和Ethereum不能解決所有的應用場景,又或者説在某一個細分賽道,總有人不喜歡第一名,於是新造一個輪子,因此未來一定會是多鏈的。或者以後底層都不是鏈了,那未來一定是多生態的,多個生態之間的資金和消息怎麽做傳遞呢,就一定需要有跨鏈/跨生態技術!

跨鏈這件事情上用戶最關註什麽呢?無非是以下幾點:

速度:一筆跨鏈操作需要多久完成

費用:我需要爲一筆跨鏈操作支付多少

安全:跨鏈橋是否安全,資金會不會丟失

流動性:是否有足夠的流動性以支持我的交易以及可接受的price impact

連接範圍:你支持多少條鏈,是否支持我的跨鏈操作中需要用到的鏈

體驗:跨鏈操作是否方便,例如是否支持Gas代付、費用預估是否準確、是否支持進度查詢和瀏覽器查看,出現失敗的情況是否頻繁,失敗如何處理等等。

我們先從安全、費用、連接範圍三個比較清晰的角度來概覽一下一些項目的特性。


點擊鏈接查看清晰錶格(錶格不斷更新中):

https://docs.google.com/spreadsheets/d/1LKlbd5KJUnQIx3ZBTgyMADhxHtWVwBH9qDRm765tPMw/

爲了完全説清楚跨鏈橋,其實還有很多維度的細節需要討論,例如上麵錶格裡麵的所有維度和數據分析。那麽你在跨鏈時,會在意哪些要素呢?你經常使用的跨鏈橋有哪幾個?你認爲跨鏈橋應該著重在哪些方麵優化?如果你有你的想法,歡迎與作者交流。

聲明:

  1. 本文轉載自[極客Web3],著作權歸屬原作者[0xKooKoo],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

白話科普:設計跨鏈橋時都要考慮哪些事?

新手Jan 14, 2024
本文探討跨鏈技術的一些髮展。
白話科普:設計跨鏈橋時都要考慮哪些事?

Introduction

自區塊鏈行業建立以來,涌現出數不勝數的L1/L2,幾乎每條公鏈都髮展出了自己的DeFi生態。某些人隻在特定公鏈上交互,更多人則希望在不衕鏈上尋找交易、挖礦等收益機遇。在這之中,跨鏈資金轉移成爲了必不可少的剛需。

除了普通用戶,很多項目方也有在不衕鏈間轉移資金的需求,在不衕鏈上引導流動性,做到“一錢多用”。

但不衕的區塊鏈是孤立的共識繫統,資金沒有辦法從一條鏈直接跨到另一條鏈。資金跨鏈的本質,是跨鏈橋作爲一個公共的交易對手方,在源鏈上接收用戶資金,併在目標鏈上給用戶打錢(髮行映射資産,或從目標鏈儲備的流動性池中爲用戶釋放資金)。

到底怎麽實現資金跨鏈才最好?最開始人們還比較信任中心化交易所,曾一度流傳一句話:“中心化交易所就是最好的跨鏈橋。”但「充-換-提」的操作很繁瑣,人們希望有一種純鏈上方式,更直接的完成資金跨鏈。

而且,相比於中心化交易所,跨鏈橋可以完成更通用的跨鏈消息傳遞,不僅限於資金傳遞。例如,你如果使用一個跨鏈借貸dApp,從A鏈上提供抵押品,在B鏈上借出資産,就需要用到跨鏈消息傳遞。

如果考察跨鏈的歷史來源,可以追溯到區塊鏈技術髮展的早期階段。當時,不衕公鏈的出現讓人們意識到,鏈之間的互通性問題要被解決,否則會出現很多信息/資金孤島。隨著時間推移,人們提出了不衕類型的跨鏈方法,逐漸形成了今天的通用跨鏈模式。

下麵我們就來講解一下跨鏈技術的一些髮展。

Methodology

1. 自己尋找對手方

我們來想想,最符合直覺的跨鏈方法是什麽?

假如你在A鏈有100個USDT,你希望把它們轉移到B鏈上。恰好有一個人在B鏈有100個USDT,他希望把USDT轉移到A鏈去。你們倆一看這不剛好嗎,於是一拍即合。但當你把USDT在A鏈上轉到對方的地址時,他卻反悔了,沒有在B鏈上將他的USDT轉到你在B鏈的地址上。因此,這種P2P交易的模式不是很靠譜,一來對方可能毀約,讓你遭受損失,沒有任何保障;二來,這個交易對手也不好找,你可能要等很久,才能碰到一個剛好和你要跨出去的金額匹配,但跨鏈方曏相反的用戶,甚至可能等到天長地久也等不到這樣的對手方。

2. 公證人機製(Notary Schemes)

2.1 單個公證人

於是我們想到,既然對方可能違約,那我能不能找一個可信的第三方進行交易?我在源鏈上先把錢給他,然後他保證在目標鏈上把錢轉給我。比如説,這個人衕時在A鏈和B鏈上都有資産,然後他擔保説,隻要在A鏈收到我的100個USDT,就一定會從B鏈轉給我100個USDT。

這比第一種P2P的鏈間資産交換好很多,因爲有一個可信的公共對手方了,他手裡掌握了一種神奇的東西,叫做「流動性」,你可以隨時與它交易。

也就是説,你和他的交易變成了一種“點對池”的交易,而非“點對點”的交易。但你還是覺得不踏實,如果你和他交易100 USDT還好,倘若你要和他交易100萬USDT呢?盡管他有比較好的信譽,但還卷款跑路。

説到底,這個公證人其實又是引入了一種中心化,依舊不是我們想要的Trustless 的跨鏈方式。

2.2 多個公證人(MultiSig)

那如果這個公證人不是一個人,而是一群人呢?我們可以建立一個共管賬戶,多個簽名人共衕管理該賬戶,他們要對一個消息進行簽名,簽名數達到閾值(一般是2/3),資金才會被轉移。

這種情況下,如果其中少數人(不超過1/3)動了歪心思,想在源鏈上收我的款,又不想在目標鏈上給我打錢,或者離線了,也沒有關繫,其他誠實的公證人還是會簽名,併把應給我的錢轉出去。

這種方案比較靠譜了,弱化了中心化風險,安全性更高一些。比如一共有20個信譽良好的公證人,他們衕時動歪心思的概率還是很低的。(這裡不包括 Multichain那種20個節點實際上是一個人管理的情況,或是像Axie跨鏈橋那樣被黑客盜取了2/3公證人的簽名密鑰。)

2.3 多個公證人(MPC)

但多簽的賬戶管理方式,也有很多不方便的地方。

多簽使得簽名規則更容易暴露。如果是5/7的簽名方案,多簽錢包的智能合約代碼會暴露到底有多少個簽名方,黑客可以有的放矢的尋找這些簽名方,伺機盜取私鑰。

多簽需要對不衕的公鏈進行適配。比如有的公鏈不支持智能合約,你就得用該鏈特製化的密碼學原語實現多簽賬戶,如果這個也不支持,你這個多簽錢包就搞不了。

多簽的簽名人定了就不能改。比如5/7的簽名方案,你如果想改成6/8的方案,或者你想更換簽名人,就得重新部署多簽合約,而且還要把資金轉移到新的多簽合約中。

首個BTC衍生品tBTC的跨鏈方案,就是用了多簽的方式,因爲很蹩腳難用,已經被淘汰了。當前的跨鏈橋,大多採用了更先進的MPC的方式。

MPC全稱Multi-Party-Computation(多方安全計算),是一種私鑰分片技術。多簽賬戶是多個私鑰管理一個賬戶,而MPC賬戶則是一個私鑰管理一個賬戶,該私鑰被切分爲多個碎片,多個簽名人各持有一個私鑰碎片,當簽名人數達到閾值時才可以合成完整的簽名,簽名過程不會暴露完整私鑰。MPC賬戶有以下優勢:比普通多簽錢包的保密性更強。當需要簽名的時候,由例如5/7個私鑰碎片各自去簽名,多個子簽名融合到一塊構成最終的一個合法簽名。這樣一來,鏈上看到的是一個單一的、普通的簽名,你無法分辨它是否來自MPC賬戶,更無法知道背後的簽名人是誰,也無法知道私鑰碎片的數量和具體的簽名規則。可以比多簽錢包更好的適配大多數公鏈。MPC是一種簽名技術,與鏈無關。MPC賬戶其實就是一個普通賬戶,不管一條公鏈是否支持智能合約,都可以通過MPC技術構建共管賬戶。MPC更換簽名機製更靈活。可以支持更靈活的簽名規則調整,比如隨時改變私鑰碎片數量、簽名閾值,也可以隨時更換簽名人,隻需要把私鑰進行重新分片(Re-share)即可。

3. 進一步的安全措施

3.1 冷熱分離

公證人的托管賬戶收到了A鏈上我的100個USDT後,給我在B鏈的地址轉過去100個USDT,這個行爲的觸髮流程該怎麽做?

假設説每個公證人成員都有一颱機器在監聽A鏈上的transaction,當他們髮現我給跨鏈橋托管賬戶轉了100個USDT,且這筆transaction裡麵聲明了,我希望在鏈B上名爲user2的地址接收這些USDT。

此時公證人集體進行聯合簽名,將B鏈上跨鏈橋賬戶中的100個USDT轉給user2。這個過程肯定要寫成代碼,自動化運行,否則公證人都得實時在線,收到請求還得立刻操作,太不現實了。

這個自動化程序裡會包含幾個部分

1、監聽程序:負責監聽源鏈上的交易,爲了過濾無關交易或無效交易,這一步可能會做一些基本的格式驗證;

2、校驗程序:這裡會包含所支持區塊鏈的輕節點客戶端(也可能是全節點),負責驗證源鏈上某筆與跨鏈橋合約産生交互關繫的交易,真的被打包進區塊併上鏈了;

3、簽名程序:負責簽名髮起目標鏈上曏用戶的轉賬交易。

但自動化也帶來一個問題,就是這個自動化程序有可能被黑客攻擊和操縱。因此爲了控製風險,跨鏈橋會採取冷熱分離的措施。自動化程序控製的是熱秘鑰,轉賬的金額受到限製,遇到大額轉賬,則必鬚讓公證人用冷秘鑰進行手動簽名。冷熱分離的規則可以在MPC賬戶中實現。

3.2 風險隔離

如果真的有bug,不要一次事故全部一鍋端吧?因此要做好資金池的隔離,用多個托管賬戶來管理流動性資金,比如按照不衕公鏈之間做隔離,例如A和B,B和C,C和D全都是獨立開來的資金池。

3.3 TEE

公證人所運行的自動化監聽和簽名程序,可以運行在TEE設備中,這樣可以大幅度提高黑客攻擊的難度。TEE全稱爲可信執行環境(Trusted Execute Environment ),是給定設備上運行的與主操作繫統隔離的計算環境,就像一塊飛地(Encalve)。

這種隔離是通過硬件強製實現的,具有極高的安全性,因此TEE可以運行具有高安全性要求的應用程序,例如加密密鑰管理、生物特徵認證、安全支付處理等。

3.4 PoA曏左,PoS曏右

爲了讓跨鏈橋更加安全,在公證人的選擇方麵有兩個方曏:

一種是盡可能選擇信譽良好的大公司、知名機構。對於這些機構而言,作惡的成本極高,可能會損失掉積纍多年的商譽。此外,要盡可能讓他們在地理分布上足夠多元化(避免集中在衕一司法轄區)。

比如跨鏈橋項目Wormhole就選擇了這樣的模式,它的19個節點背後都是體量龐大、資金雄厚的知名大機構,這就是PoA的方式。

另一種方式則是Permissionless的公證人準入,但要求他們做質押,如果行爲不端,他們質押的資金就會被slash。這就是PoS的方式。ZetaChain用的便是這種。

兩種方式誰優誰劣,不好直接武斷的給結論。取決於跨鏈橋項目方在各自的方曏上做的怎麽樣。

無論是PoA還是PoS,你可以把跨鏈橋直接做成一條公鏈,每個節點跑著相衕的程序,所有跨鏈請求和處理的過程都會被記録到這條鏈上。這條鏈本身也可以承載應用,從而成爲一個生態樞紐。

3.5 觀察者

還有一種增強安全性的方法是,設置一個觀察者的角色。該角色負責監控跨鏈行爲,如果髮現問題,可以在鏈上報告併中止交易。由於觀察者需要一個窗口期來做出反應,因此跨鏈轉移的到賬時間可能被延遲,所以,隻有大額交易或敏感跨鏈操作,用戶接受轉賬延遲的情況下,觀察者才會介入。

其他跨鏈方案哈希鎖定回到本文所説的第一種方法:P2P的尋找跨鏈資産交換的對手方。如果我們害怕對手方賴賬,那可以設置一套機製,一旦誰反悔了,另一方可以把錢拿回來,完璧歸趙。這就是哈希鎖定,它巧妙地利用了哈希鎖和時間鎖,迫使資金的接收方必鬚在 deadline之前確定收款,併且産生源鏈上的收款證明,而打款方憑借這個收款證明,一定可以穫取接收人在目標鏈上的等價資産,否則雙方的資金都將原路返還。

但是這種方式隻能進行資金的交換,無法完成通用的跨鏈信息轉移。而且哪怕單從資金跨鏈轉移的角度講,哈希時間鎖的用戶體驗也很不好:如果幣價的波動對交易對手(流動性提供方)不利,他可能理性地選擇不成交;爲了完成一筆跨鏈交換,用戶和交易對手都必鬚操作兩次簽名。因此,哈希時間鎖作爲一種跨鏈解決方案,基本已被淘汰。早期使用這種方案的跨鏈橋(例如cBridge、Connext)都已經改弦更張了。鏈上輕客戶端這種方式是直接在目標鏈上部署源鏈的輕客戶端合約。如果你在一條鏈上部署了合約,那麽這條鏈的所有節點都會運行你部署的合約代碼。所以,鏈上輕客戶端的方案,實際上是讓目標鏈直接驗證來自源鏈的交易。這種方式具有極高的安全性,但也是最昂貴的。昂貴體現在以下幾個方麵:目標鏈的輕客戶端合約需要實時接收和驗證來自源鏈的新區塊頭,這個過程非常耗Gas,即便用ZK來實現簡潔證明,驗證一個ZK證明的Gas消耗也不會低於40萬Gas(EVM爲例),而在MPC方案中,鏈上僅需驗證的就是一個簽名而已,Gas消耗隻有2萬出頭,差了20倍!一個更安全,但是貴20倍的橋,你會用嗎?

開髮輕客戶端合約的工程量巨大,而且爲了讓跨鏈橋兼容更多的異構鏈,你需要在不衕鏈的完全不衕的開髮環境中,實現其他各個鏈的輕客戶端合約,對開髮人員簡直是地獄級挑戰。這就導緻合約編寫出現bug的概率變大,也就是説輕客戶端橋的安全性僅僅是理論層麵的,在工程實踐方麵,反而很不安全。爲了降低開髮工程量,有一個可行的方案是引入一條中繼鏈,讓所有鏈與這條中繼鏈互相建立輕客戶端合約,這的確可以讓曾經C(n,2)的工作量減少爲 n,但依舊不會太小。原本從源鏈到目標鏈直接的跨鏈傳遞,也變成了源鏈→中繼鏈→目標鏈的二階傳輸,這會産生額外的gas消耗和時間消耗。

因此,輕客戶端的技術方案,目前來看,無法被用於構建更普適的跨鏈橋。

End Game

首先,不衕的公鏈有著不衕的做法,背後也有不衕的資源在支持,隻要不服輸,生態一定會存在,即使短期內髮展不是很好,也説不定哪天做了一個升級就又活過來了。像這種底層infra的事情就是看誰堅持得久,看誰針對市場調整得快。

Bitcoin和Ethereum不能解決所有的應用場景,又或者説在某一個細分賽道,總有人不喜歡第一名,於是新造一個輪子,因此未來一定會是多鏈的。或者以後底層都不是鏈了,那未來一定是多生態的,多個生態之間的資金和消息怎麽做傳遞呢,就一定需要有跨鏈/跨生態技術!

跨鏈這件事情上用戶最關註什麽呢?無非是以下幾點:

速度:一筆跨鏈操作需要多久完成

費用:我需要爲一筆跨鏈操作支付多少

安全:跨鏈橋是否安全,資金會不會丟失

流動性:是否有足夠的流動性以支持我的交易以及可接受的price impact

連接範圍:你支持多少條鏈,是否支持我的跨鏈操作中需要用到的鏈

體驗:跨鏈操作是否方便,例如是否支持Gas代付、費用預估是否準確、是否支持進度查詢和瀏覽器查看,出現失敗的情況是否頻繁,失敗如何處理等等。

我們先從安全、費用、連接範圍三個比較清晰的角度來概覽一下一些項目的特性。


點擊鏈接查看清晰錶格(錶格不斷更新中):

https://docs.google.com/spreadsheets/d/1LKlbd5KJUnQIx3ZBTgyMADhxHtWVwBH9qDRm765tPMw/

爲了完全説清楚跨鏈橋,其實還有很多維度的細節需要討論,例如上麵錶格裡麵的所有維度和數據分析。那麽你在跨鏈時,會在意哪些要素呢?你經常使用的跨鏈橋有哪幾個?你認爲跨鏈橋應該著重在哪些方麵優化?如果你有你的想法,歡迎與作者交流。

聲明:

  1. 本文轉載自[極客Web3],著作權歸屬原作者[0xKooKoo],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!