11

跨鏈橋比較. 本文將介紹跨鏈橋是什麼並將跨鏈橋進行分類與比較,搭配一些著名跨鏈橋攻...

 1 year ago
source link: https://medium.com/taipei-ethereum-meetup/%E8%B7%A8%E9%8F%88%E6%A9%8B%E6%AF%94%E8%BC%83-4327192f7200
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

跨鏈橋比較

本文將介紹跨鏈橋是什麼並將跨鏈橋進行分類與比較,搭配一些著名跨鏈橋攻擊事件進行分析。

0*DEYJOA2ebVJz9fS1
Photo by raffaele brivio on Unsplash

什麼是跨鏈橋

跨鏈橋是一個在不同鏈之間負責傳遞「訊息」的橋,至於是什麼樣的訊息,接下來會介紹。跨鏈橋的例子包含 MultichainCelerLayerZeroNomadHop 等等。

鏈是不知道彼此的存在的

大家熟悉的跨鏈橋使用場景絕大多數都是將資產例如 ETH、BTC 進行跨鏈。但實際上「資產」是沒辦法跨鏈的,這是因為每一條鏈都是各自獨立的,它們不會知道彼此的存在、彼此的狀態。

至於 Solana 上的 ETH 或是 ETH 上的 BTC 是怎麼來的?那些都是跨鏈橋鑄造出來的,只要這些跨鏈橋是安全的,這些鑄造出來的幣就是安全的。

註:其他像是 USDT 或 USDC,有些是 Tether 和 Circle 到不同鏈上去鑄造出來的,剩下則一樣是由跨鏈橋所鑄造。

傳遞什麼「訊息」?

表面雖然是資產在跨鏈,但背後實際上就只是「訊息」在跨鏈而已。這些訊息像是「我在 A 鏈上把 X 資產鎖住/燒毀了」或「我在 B 鏈上把 Y 資產解鎖/鑄造出來了」,訊息的接收方就按照訊息內容來執行相對應的處理。

例如當 Alice 想透過一個跨鏈橋把 USDT 從 A 鏈「轉移」到 B 鏈,實際上背後發生的是:

  • 跨鏈橋在 A 鏈的合約把 USDT 從 Alice 身上轉過來,並送出一個訊息:「Alice 在我這鎖住了 10 USDT」
  • 訊息被帶至跨鏈橋在 B 鏈的合約,合約從自己身上轉 10 USDT 給 Alice 在 B 鏈上的地址
1*rUlxyiMsQJNCsfor97MG5g.png
資產跨鏈實際上背後是單純的訊息傳遞,中間省略許多細節

「訊息」的傳遞是跨鏈橋的核心,現在最常見的資產跨鏈只是其中一種用途而已,像 Aave 的 V3 版本就是一個運行在多個網路之上的抵押借貸平台。

限制與挑戰

但跨鏈橋並沒有像上面那個例子這麼簡單。跨鏈橋的一個最根本的限制來自於「鏈不知道彼此存在」這個事實,因此它需要「相信某個人來傳遞訊息」。所以跨鏈橋的主要挑戰就在於「要怎麼驗證一個送來的訊息的有效性」。

註:這裡的「相信」訊息傳遞者並非指完全相信,後面的段落中會介紹到有些橋是不需要相信訊息傳遞者的。傳遞者可能是好人也可能是壞人,但對傳遞者(們)的特質會有一些其他的假設。

基本上一個跨鏈橋的安全性取決於:

  • 需要放多少信任在訊息傳遞者身上?對訊息傳遞者的行為有沒有一些假設?是否假設訊息傳遞者只能誠實地執行他的工作?
  • 如何驗證訊息的有效性?

接下來將介紹不同跨鏈橋的分類。

跨鏈橋的分類

跨鏈橋基本上可以分成四種:

  1. Trusted Relayers
  2. Optimistic Verification
  3. Light client + Trustless relayers

(如果對分類有其他想法或意見都歡迎留言或信件討論。)

1. Trusted Relayers

顧名思義,Trusted Relayers 就是信任訊息傳遞者。基本上相信訊息傳遞者後,也不需要再驗證訊息有效性了,只要是信任的訊息傳遞者帶來的訊息都相信是有效的。而自然地當有了信任及中心化的假設,架構就會簡單許多,而且成本會很低、使用體驗會很好。

Trusted Relayers 的技術沒什麼特別之處或亮點,就看這些訊息傳遞者的組成,可以是單個或多個(就像多簽);每一個訊息傳遞者背後也可以是多簽或是 MPC。

這裡必須要提到的一點是 Trusted Relayers 的安全假設是 Honest Majority,也就是過半數的訊息傳遞者必須是誠實的好人。如果超過一半的訊息傳遞者是壞人或被駭客入侵,則這個跨鏈橋的就不再安全。

另外要提到的是 Layer Zero 也是屬於 Trusted Relayers,即便在他們的定義裡訊息傳遞者的角色被分成「Oracle」及「Relayer」,但還是不改變整個橋的安全性仰賴這兩個角色不能都是壞人。不過 Layer Zero 相較於其他 Trusted Relayers 橋的優點是:每個 dApp 能自己客製化自己需要的安全性。如果你很需要安全性,你可以把「Oracle」及「Relayer」的數量設定的很高。另一個優點是:每個 dApp 的安全性彼此是獨立、不互相影響的。

例子:MultichainCelerLayerZeroWormholeRonin BridgeXY

2. Optimistic Verification

和 Optimistic Rollup 的 Optimistic 一樣,都是先樂觀地接受傳遞過來的訊息,但會驗證訊息的有效性,如果發現是無效的則發起挑戰。優點是絕大多數的時間系統都會是正常運作(因為作惡會被挑戰並懲罰),訊息都是有效所以不需發起挑戰,所以成本非常低,因為不需要在鏈上去驗證訊息。缺點是必須要有一段挑戰期,讓負責驗證的人有足夠多時間驗證並發起挑戰。接下來會以 Nomad 為例,介紹 Optimistic Verification 的運作。

Nomad 裡有三個角色:Updater、Relayer 及 Watcher。

  • Updater 抵押擔保品,並負責為訊息簽名做擔保,例如「我以我的擔保品發誓 Alice 申請要從鏈 A 送 XXX 訊息到鏈 B」
  • Relayer 單純負責把訊息及 Updater 的簽名送到目標鏈(鏈 B)上
  • Watcher 負責監督 Updater,並在 Updater 作惡時反應
1*s819MTkGpxetnf8m0GMOgg.png
Alice 觸發鏈 A 合約,要求送訊息到鏈 B
1*ZRRgOhwQvR2oDtzo4chCqg.png
Updater 對 Alice 的訊息簽名
1*pnYo0Gbi53FVGaPc3Hm2wA.png
Relayer 負責將訊息及 Updater 簽名送到鏈 B

等到挑戰期(Optimistic Window)結束後,訊息生效,完成訊息跨鏈。

Updater 作惡

1*uEg5eFsb0JXGuODAMjTCbg.png
Updater 對一個憑空捏造的訊息簽名,並請 Relayer 夥伴送到鏈 B
1*LdKCzTcCB5UvBhlE55L3nQ.png
Watcher 發現後,先到鏈 B 把訊息作廢,再把證據(Updater 簽名)送到鏈 A,沒收 Updater 擔保品

鏈 A 的合約可以很清楚驗證 Updater 所簽名的訊息到底存不存在,因為只有使用者親自送請求到合約,訊息才會真的存在。所以當 Updater 對一個不存在的訊息簽名,這個簽名就會變成作惡的 Updater 百口莫辯的證據,用來沒收 Updater 的擔保品。

證據只在訊息來源鏈(鏈 A)有效

目標鏈(鏈 B)永遠沒辦法知道鏈 A 上有誰要送什麼訊息過來,所以鏈 B 合約沒辦法知道 Updater 擔保的訊息到底是不是真的。

那鏈 B 能怎麼辦?答案是需要引入 Permissioned Watcher。Permissioned Watcher 有權利能作廢任何一個訊息,避免偽造的訊息造成任何破壞。但相反地它也可以作廢一個正常的訊息,也因此這個角色必須要是 Permissioned,他需要是一個被信任的角色。

如果有 Permissioned Watcher 亂搞,惡意作廢正常的訊息,則這時候只能仰賴另一層信任,可能是 Governance 或是一個多簽 Admin 之類的來介入,將惡意的 Watcher 剔除。

只需要假設至少有一個 Watcher 有在做事

和 Trusted Relayer 的安全假設非常不同,相對於 Trusted Relayer 需要假設有過半數誠實參與者,Optimistic Verification 只需要假設至少有一個 Watcher 是好人即可。這表示要攻破 Optimistic Verification,你需要攻破(例如駭入、賄賂、DoS)全部的 Watcher

30 分鐘挑戰期

不同於 Optimistic Rollup 挑戰期多達七天,Optimistic Verification 的挑戰期只有 30 分鐘。這是因為 Optimistic Verification 的挑戰不需要挑戰者與被挑戰者之間來回交互,而是直接提交一個一次定生死的證據:「Updater 簽名的訊息存不存在?(yes/no)」。

3. Light client + Trustless relayers

這種跨鏈橋的方式是讓目標鏈成為來源鏈的輕節點,可以是鏈下運行一個輕節點,也可以是用鏈上合約模擬一個輕節點:合約裡記錄來源鏈每個區塊並驗證每個區塊的標頭檔(Block Header)。除了驗證標頭檔的內容是有效的之外,還需要驗證共識,也就是 PoW 的驗算或 PoS 的投票結果。PoW 的驗算還算簡單,但 PoS 的投票結果就複雜許多,尤其是像 Ethereum Beacon Chain 多達四十多萬的 Validator,要維護這些名單在合約或計票的成本都非常高。

另外每條鏈的區塊內容和共識機制都不一樣,因此要支援新的一條鏈並非簡單的工作,再加上驗證成本會比其他跨鏈橋高上許多,這些都是這種跨鏈橋的主要缺點。不過優點是它非常安全,它不需要相信負責帶區塊資訊來的 Relayer,它會自己驗證區塊和共識。

1*zZw_bOxWTqb5kpHqEDN_Xg.png
Light Client 合約驗證 Relayer 帶來的鏈 A 的區塊資訊及共識

註:雖然 Relayer 只是跑腿的,但還是需要假設有誠實的 Relayer 在線,確保正確的區塊資訊會被帶過來,避免造假的分叉鏈來破壞安全性。

驗證完區塊標頭檔後,剩下就是去驗證 (1) 交易存在於某個區塊,或是 (2) 某個 event 在某個區塊被 emit,或是 (3) 某個地址的 storage 是某個值。舉例:

(1) 像是驗證 BTC 上 Alice 轉帳給某個地址,或是在 OP_RETURN 附上某個訊息

(2) 像是驗證 ETH 上的 Bridge 合約確實 emit 了 CrossChainMessageRequested event(event 的 receipt 會存在 receipt tree,tree root 會記錄在標頭檔裡)

(3) 像是驗證 Optimism 上的 Bridge 合約的 storage 確實存在一筆資料是記錄了 Alice 申請的訊息跨鏈的請求

1*Z53zMokGxxBiS8ptovbjyA.png
接著 Alice 向 Light Client 合約利用 (1)(2)(3) 的方法證明自己發起過跨鏈請求

驗證成功後就能相信來源鏈真的存在一筆訊息跨鏈的請求。

例子:Cosmos IBCNear Rainbow Bridge

註:Cosmos IBC 是透過運行輕節點,而不是用合約的方式,在不同(也僅限於) Cosmos 鏈之間傳遞訊息。Near Rainbow Bridge 只能在 Ethereum、Near、Aurora 三條鏈之間傳遞。

除了建造複雜與驗證成本高之外,這種跨鏈橋還有一個缺點是:每條鏈的 Finality 時間不一樣,例如 BTC 來的資料可能要等六個區塊(一小時)、ETH 來的資料可能要等 12.8 分鐘等等,使用體驗會差很多。

4. HTLC

HTLC 代表的是 Hashed TimeLock Contract(接下來會假設讀者知道 HTLC 的運作方式)。

註:HTLC 不一定要用 Hash 的方式來做 commitment,可以用簽章來代替

HTLC 優點是非常安全,但缺點是使用體驗比其他跨鏈橋差很多,例如:

  • 需要花更多筆交易才能完成跨鏈
  • 使用者必須待在線上直到跨鏈完成
  • Free Option Problem,發起 HTLC 的人是被動方,對手方可以選擇配合或不配合(看哪個對他有利)。不過如果對手方是一個有名聲要顧的商家(稱作 Router)就不需要那麼擔心這個問題
  • 不同 Router 的服務品質會有差異,導致使用體驗不一致

例子:Connext、Celer V1

以上是四種跨鏈橋的介紹,接下來會分析每一種跨鏈橋發生過的攻擊事件。

攻擊事件分析

1. Trusted Relayers 跨鏈橋的攻擊事件

Multichain, 2021.07, ~8M loss

在他們的 MPC 套件庫中重用了該是隨機產生的隨機值,導致私鑰可以被還原。相關連結

PolyNetwork, 2021.08, ~600M loss

智能合約漏洞導致攻擊者能獲得存取協議資產的權限。相關 連結

Multichain, 2022.01, ~3M loss

智能合約漏洞導致攻擊者可以任意轉走受害者的 wrapped token(例如 WETH、WBNB 等)。相關 連結

Qubit, 2022.01, ~80M loss

智能合約漏洞以及合約升級過程的疏忽,導致攻擊者可以直接把協議裡的資產全部提走。相關連結

Wormhole, 2022.02, ~300M loss

智能合約漏洞讓攻擊者可以跳過權限檢查,無限鑄造出新的代幣。相關連結

Ronin Bridge, 2022.03, ~600M loss

多簽成員(九個裡的五個)的節點被攻陷。相關連結

Horizon Bridge, 2022.06, ~100M loss

多簽成員(五個裡的兩個)的私鑰被盜。相關連結

2. Optimistic Verification 跨鏈橋的攻擊事件

Nomad, 2022.08, ~190M loss

智能合約漏洞及合約升級過程的疏忽,導致任何人都可以偽造跨鏈訊息來轉走資產。相關連結

3. Light Client + Trustless Relayers 跨鏈橋的攻擊事件

Near Rainbow Bridge, 2022.05 & 2022.08, no fund lost

兩次嘗試偽造跨鏈訊息的攻擊都被 watchdog 服務擋下來。相關連結

4. HTLC 則沒有過攻擊事件

其實可以看出來攻擊事件都是發生在 Trusted Relayers 節點安全管理問題及合約出現問題,沒有針對 Optimistic Verification、Light Client 或 HTLC 跨鏈橋本身協議成功的攻擊事件。

跨鏈橋的比較

接著是不同種跨鏈橋技術在「成本(Cost)」、「使用者體驗(UX) 」及「安全性(Security)」三個方面的比較。以下會直接以圖片呈現

1*USEPOisZwOqnZxMvrC8jGA.png

1. 成本(Cost)

  • Trusted Relayers:成本最低,因為不需什麼複雜的驗證,Relayer 帶來的資訊都直接相信
  • Optimistic Verification:只需要驗證 Merkle Proof
  • Light Client:要驗證最多東西,包含共識、區塊標頭檔及交易或狀態的證明
  • HTLC:驗證的東西很簡單,但會需要多筆交易(Lock/Unlock)才能完成

2. 使用者體驗(UX)

1*Rva885P_yay6MCDsOed2dg.png
  • Trusted Relayers:體驗最好,Relayer 動作多快跨鏈就有多快,使用者也不需要做什麼事
  • Optimistic Verification:需要等待挑戰期(Optimistic Window),以及有可能遇到 Updater 下線或 Watcher 惡搞
  • Light Client:需要等待 Finality、不同鏈會有不一樣的體驗,且支援的鏈少
  • HTLC:需要多筆交易(Lock/Unlock)才能完成、使用者需要保持在線、Router 們的服務品質不一致

3. 安全性(Security)

1*KSsjeunwQhfgSMp5MRZoXw.png
  • Trusted Relayers:安全性最低、需要大多數多簽成員是誠實的假設,或是少部分成員被 DoS 打下線也會造成服務停擺
  • Optimistic Verification:只需要假設至少有一個 Watcher 是誠實的,但 Updater 被 DoS 打下線還是會造成服務停擺
  • Light Client:非常安全,必須要能攻擊那些鏈的共識才有可能造成傷害
  • HTLC:最安全,必須要攻破 hash function 才有可能造成傷害

Rollup Bridge 和跨鏈橋的不同

Rollup Bridge 指的是 Rollup 和其 L1 之間的原生橋,因為 L1 和Rollup 之間可以直接傳遞訊息,且訊息的有效性是被零知識證明或詐欺證明所保障的,所以比 L1 與 L1 之間的跨鏈橋還要安全許多。

不過 Rollup 原生橋會有一些延遲:ZK Rollup 要等待零知識證明產生並上鏈、Optimistic Rollup 要等待挑戰期結束。

註:延遲主要是發生在 Rollup -> L1 的訊息,L1 -> Rollup 的訊息都非常快速

如果不想等待則可以使用第三方提供的服務:你用原生橋的方式轉錢給第三方,第三方在 L1 先把錢墊付給你,他再慢慢等錢從原生橋過來。更多關於 Rollup Bridge 的介紹可以參考 imToken 的系列文:

使用跨鏈與提供流動性的安全性需求是不同的

如果你只是單純使用跨鏈服務,例如把錢從鏈 A 轉到鏈 B,則你不需要擔心太多,即便橋被駭,只要橋還有殘存流動性或後來有新注入的流動性,你的跨鏈請求就一定會被完成。

但如果你是想要提供流動性給跨鏈橋來賺跨鏈手續費的話,就要謹慎選擇跨鏈橋了。如果被盜的金額太大,項目方賠不出來,那你就一定會賠錢。可以選擇有額外安全機制的跨鏈橋,例如 Celer 和 XY 都有對跨鏈轉帳訂一個上限(例如單次或一段時間內最高累積只能轉 100M)。

其實就和使用 AMM 一樣,提供流動性一定會承受比單純 swap 更大的風險。

最近的新技術或發展

ZK Light Client Bridge

前面有提到 Light Client 跨鏈橋雖然安全,但成本很高,好消息是零知識證明可以有效降低這個成本。但要注意的是零知識證明只能提高效率,並不能提高安全性。而且零知識證明更為複雜,要等到 ZK Light Client 支援足夠多的鏈還要很長一段時間。

有兩個新項目在實作 ZK Light Client

跨鏈的世界還是個尚未開發的 MEV 寶地

  • 跨鏈交易比單鏈轉帳創造出更多的 MEV 機會
  • 如果跨鏈交易再搭配去 DEX 做 swap 的話那 MEV 機會又更多

想了解更多資訊可以參考 Nomad 創辦人在 ETHAmsterdam 的 MEV Day 的演講投影片。他推斷跨鏈 DEX 做不起來,因為價格會因為更多的 MEV 機會影響而導致沒有競爭力,要用跨鏈 DEX 還不如單純先把資產跨鏈再自己去 DEX swap。

Disclosure: I currently serve as an advisor to XY Finance

Special thanks to

for reviewing and improving this post

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK