對話 Orbiter Finance:跨鏈攻擊事件頻發,如何評估不同的橋接方案?
來源:ETH 中文
本期的訪談內容圍繞跨鏈相關話題進行。跨鏈安全其實一直在社區中備受關注,跨鏈攻擊事件頻繁發生,因此對於跨鏈安全性質疑的聲音也難免越來越多。當然,不同的跨鏈解決方案採用的技術不一樣,這樣他們的安全系數也分高低。
隨著多鏈生態以及以太坊 L2 逐漸成熟起來,跨 L1 和跨 L2 交易的需求也越來越大。對於用戶和開發者來說,了解如何評估一個跨鏈方案的安全性無比重要,因為這涉及自身資產的安全性。
本期節目邀請了來自 Orbiter Finance 技術團隊的 Eric,為我們介紹跨鏈以及 Orbiter Finance。Orbiter Finance 是一個專注於以太坊跨 rollup 的去中心化橋接解決方案,基於 "提前信任+爭議仲裁" 的這樣一個解決方案,並且依賴於以太坊網絡自身的安全性能。Orbiter Finance 表示很快將推出其流動性提供機制和 Maker 合約的測試。
涉及的話題有:
跨鏈攻擊事件以及其根本安全限制的探討
跨鏈的基本原理以及不同的跨鏈類型
Orbiter Finance 的實現方式和項目介紹
Orbiter Finance 的仲裁機制如何保護用戶資產安全?
Maker 流動性提供合約的介紹和開放計劃
數據服務 L2 data 的介紹
對跨鏈生態的未來展望
為什麼說跨鏈具有根本的安全限制?
Franci:說到跨鏈。大家可能會有一個不好的印象就是,好像很多黑客攻擊都是針對跨鏈協議的,而且被盜金額都非常龐大。比如去年 ChainSwap 和 Poly Network 攻擊事件,還有今年 Multichain、Wormhole、Ronin Network、Nomad 等等,我就不一一列舉了,這些攻擊事件中,損失達到數百萬甚至數億美元。
而且跨鏈交易還會有一個反網絡效應,就是當交易活動不多時,網絡就會非常安全,因為黑客攻擊的激勵不足以覆蓋他的攻擊成本;而當交易多了起來,攻擊風險就會越大。也就是說,跨鏈生態越繁榮,就越容易受到攻擊。這對資產大的用戶以及跨鏈應用來說,是一個致命的隱患。那為什麼會這樣呢?跨鏈橋為什麼那麼容易被 hack?
Vitalik 在以太坊基金會第七次 Reddit AMA 中曾表示,他之所以對多鏈的區塊鏈生態系統保持積極態度,而對跨鏈應用保持消極態度,一個關鍵原因就是橋接具有根本性的安全限制。你怎麼看這一點?
Eric:其實這個例子裡面有很多是因為是合約裡面的邏輯代碼,以及驗證證明上的一些缺陷造成的,但是我覺得這些都會隨著技術的一些發展和成長都就會得到解決。
但是確實在跨鏈協議上會有一個最根本的安全限制。我認為其實就是鏈的安全性。因為跨鏈協議安全限制,我覺得是符合水桶理論的。也就是跨鏈的話,會涉及到多條鏈。而這個跨鏈協議的安全性能的上限呢,對我們某一條鏈的安全性能下限來決定的。就是如果你的跨鏈協議中涉及到的某一條鏈,它的安全性能不佳,極易遭受到攻擊。那麼你這個跨鏈協議的安全性能就無法得到保障,那麼你用戶呢,在這個跨鏈的過程中,資產就很容易損失。
比如說有兩條鏈,這兩條鏈是異構的鏈。然後其中的一條鏈的安全性能比較差,那麼你從 A 鏈往 B 鏈去轉移資金,或者去進行跨鏈協議運行的時候,但後來如果在 B 鏈,因為某些安全問題需要回滾的話,對於 A 鏈上是沒有辦法進行處理的。像這種情況下,就可能因為 B 鏈的安全性能的一個瓶頸,就造成了整個跨鏈協議的安全性,不能夠得到保證。
Franci:那麼延續你說的這個話題,Vitalik 其實後來有基於這個話題,繼續寫了一篇文章。他提出了一個概念,叫做共享安全性。那我看完這篇文章之後,大概的理解就是:這個共享安全區域指的是,當我在某條鏈比如說鏈 A 跨到另一條鏈,鏈 B 使用該鏈的資產時,我是否能共享來源鏈的安全性?那根據這個劃分方式,其實 cross-L1s 和 cross-l2s 是兩種不同的情況,跨 L2 要比跨 L1 安全得多,因為他們的安全性都像 rollup 一樣,是由以太坊提供安全保障的。那麼 Orbiter 其實是專注於跨 L2 的解決方案,針對 Vitalik 說的共享安全性,Eric 你是怎麼理解的呢?你覺得跨 L2 比跨 L1 安全的同時,它會不會也有很明顯的安全隱患呢?
Eric:我覺得 cross-L2 因為共享了 L1 的安全的機制,繼承了 L1 網絡的安全性。所以我認為它其實並沒有什麼明顯的安全的隱患,但是它會有一個很明確很明顯的缺點。Rollup 具有一個退出時間的問題,就是我們平常會說到提現時間。這個是 rollup 它本身的一個技術特點所決定的,有效性證明可能需要大約四個小時,而欺詐證明需要七天的時間。這樣就會大大地限制了資產的流動性,限制 rollup 的發展。
跨鏈的基本邏輯
Franci:跨鏈的基本邏輯是什麼?一般來說,用戶是怎麼在兩條不同的鏈之間實現跨鏈活動的呢?
Eric:了解以太坊和區塊鏈生態的人會知道,我們現在區塊鏈系統裡面是有很多異構的,就是不能夠進行相互關聯的。一些鏈和鏈之間沒有辦法去直接地進行價值以及信息的交流。這在很大程度上會限制區塊鏈的功能的發展。
我們平時所指的跨鏈,其實指的就是在這些不同的區塊鏈網絡之間進行信息的一個交換。而且對這些交換的信息加以利用,實現我們在不同的區塊鏈之間的一個互通,以及價值的轉移。
如果一個用戶使用跨鏈的話,它在實現的基本邏輯就是這樣的:現在有 A 和 B 兩條鏈,從源網絡 A 鏈發起一個跨鏈信息,這個信息可能會經過某一些被信任的一些安全的方式,然後被發送到目標鏈 B 鏈上。而在這個過程中,可能會需要去驗證這個信息的有效性,即這條跨鏈信息是保證真實的;並且當這條消息發送到 B 鏈上時,在 B 鏈上可能也會對這個消息的有效證明之類的去進行一些確認。然後在 B 鏈上會根據 A 鏈上的這條消息進行某些處理。處理之後,我們可以在 A 鏈上得到一個處理的結果。這個其實就是跨鏈的基本邏輯。
不同的跨鏈類型介紹
Franci:我注意到你剛才說的一些點,當用戶他進行跨鏈時,目標鏈會需要去驗證那個來源鏈交易的一個有效性,在驗證的技術選擇方面可能會有不同的方式,可以列舉一下一些比較主流的方式嗎?我們是不是可以通過這些方式了解跨鏈的不同方案的基本的架構。
消息傳遞者的類型
Eric:跨鏈的一個基本邏輯裡面,其實我們會發現有一個比較重要的角色。這個角色就是要把發起鏈上的交易信息發送到目標網絡上。這樣一個角色必須要是可信任的,因為我們要保證它要發送的是正確的交易。它屬於消息的一個傳遞者。基本上在跨鏈協議裡面,它都是一個鏈下的角色。然後這個 relayer,它通過不同的實現方式,它可能是單節點的;也可能是多節點的;還有可能是一些像 chainlink 這種第三方機構。
最基礎的一個就是完全受信任的 relayer 模式。我們在正常的消息傳遞中,這個跨鏈協議裡面鏈下會有 relayer 的角色。這個角色是通過不同的方式篩選出來的。有的可能是通過投票,有的可能是通過資金的質押篩選出來的。而且這個角色有可能是一個,也有可能是多個。然後這些角色會在鏈下對這個發起鏈上的一些跨鏈信息進行驗證、打包。這個驗證的過程中可能是多簽的,也可能是分佈式簽名的方式,去保證安全性。但是這種方式會有一個問題,需要大多數簽名的成員都是誠實的。
然後第二種的話就是可以著重講一下 Layer Zero。它是在這種受信任的中繼者模式的基礎上又增加了一個角色,添加了一個叫做 oracle 的角色。它把 oracle 的角色和 relayer 的角色做了區分。Oracle 是用來提交發起鏈的區塊頭的一些信息,而 relayer 只是用來發送一些交易的驗證的證明。然後在線下會對這兩者去進行匹配,並且通過算法進行證明,證明出區塊的頭驗證。
最後一種就是樂觀驗證模式。這個模式上也是有鏈下的 relayer 角色,還會有一個 watcher 和 updater 這兩種角色。其中 updater 是要質押資金的,通過質押資金他會擁有負責打包這個發起鏈上的跨鏈信息的權利。然後 relayer 就只是單純把 updater 的簽名信息發送到目標鏈上去。其中還有 watcher 的角色,他負責監督負責簽名交易信息的 updater。如果 updater 作惡的話,watcher 能夠及時響應,然後使用其他證明方式阻止 updater 作惡。而這種方式在安全性上來說的話,它是最高的,因為它假設只要有一個誠實的 updater 運行。但是因為它使用了欺詐證明的方式,所以它可能在時間成本上會有一點高,和前面兩種來相比的話。
消息有效性的驗證方式
Eric:然後當這些消息傳遞到了目標網絡之後,它的有效性是如何的,對於它的有效性的驗證方式也不同。
第一種就是目標網絡上的一個合約驗證。這個合約驗證又可以分為兩個方面,一個就是共識的驗證,還有一種就是有效性的驗證。然後有效性驗證比較好理解,我們現在的 rollup 其實使用的都是這樣的。它會通過欺詐證明和有效性證明的方式在 L1 的 rollup 合約去進行驗證 L2 的狀態。然後對於共識驗證,它就是在目標鏈上要去驗證來源鏈的一個共識這樣的一個功能,而這個驗證的功能可能就會涉及到它來源鏈,它使用的是什麼樣的一個共識的機制。嗯用的是 Pow 還是說 PoS 協議這樣一種方式。第二種,其實就是放在鏈下去操作的,也就是一些外部的驗證。而我們說了這些外部的驗證者,他們都是通過某種方式選舉出來這些可信的驗證者,然後使這些可信的驗證者通過多簽或者是運行共識算法的方式去統一。在鏈下進行驗證之後,然後才會提交到我們的目標網絡上。然後第三種就是前面提到的樂觀驗證模式。只有在作惡的時候,watcher 才會負責在目標網絡上提交欺詐證明。所以這個就是三種可能不同的驗證方式。
Orbiter 就是使用了我們現在這種提前信任,加上爭議仲裁的這樣一個解決方案,然後就把我們的安全性完全依賴於以太坊網絡自身的安全性能。然後我們在保證這個安全性能的前提下,專注於 cross-L2 的開發。
Orbiter Finance 的實現方式
介紹 Orbiter 的架構
Eric:從角色層面上來說,可能會分為兩個,一個是 sender 角色,一個是 maker 角色。也可以說一個是使用跨鏈服務的角色,還有一個是提供流動資金來幫助跨鏈的角色。
我可以先簡單地講一下用戶使用 Orbiter Finance 跨鏈時的流程。比如說用戶想從 zkSync 網絡上把自己的以太坊資金轉移到以太坊網絡上。那麼它就可以在 Orbiter 網頁的前端進行操作,然後把他的資金從 zkSync 他自己的 EOA 地址轉到我們提供服務的 Maker 地址裡面去。
然後 Maker 在收到資金之後就會在目標網絡上將計算後的代幣,發送到用戶的地址裡面。這裡面涉及的都是 EOA 之間的轉帳邏輯。在這個過程中呢,針對 maker,Orbiter 會給他提供一個客戶端。然後 Maker 也可以自己去部署一個客戶端,然後自動化地實現後端,就是回款的一個流程。然後這個客戶端裡面,會去對用戶跨鏈的金額、幣種、網絡狀態之類的數據去進行一個監聽。這是一個正常的流程,但如果是出現作惡的話,會有另外的邏輯。
Orbiter 採用的是提前信任的模式,就是我們默認了這些 maker 會正確地處理資產,正確地給用戶返回這些資金。但是在整個的過程當中,maker 是存在作惡可能的,有可能他在發起網絡上收到了用戶的資產,之後把這個資產給扣留下了。
圖片來源:Orbiter Finance
我們採用了一套去中心化的機制來防止作惡。主要是由三個合約,MDC、EBC 和 SPV 去實現這個功能。
而其中 MDC 合約其實就是一個 maker,就是 maker 註冊的一個合約。然後在這個合約裡面,會負責創建它的跨鏈規則服務,然後還要存放一些 maker 保證金,還有就是後續為 sender 和 maker 提供一個仲裁處理的規則。
然後 EBC 合約就是一個事件綁定合約。現在我們主要的運用其實還只是在資產轉移方面,所以這個 EBC 合約裡面其實會對發起鏈,就是 sender 給予 maker 的這筆交易,通過來源鏈交易去推算出目標鏈交易。
而 SPV 合約就是一個簡單的交易驗證合約,就是用於證明用戶提供的某條鏈上的一個交易是否真實的在這條鏈上。
然後通過這三個合約會運行一套機制,我們可以確保當 maker 作惡的時候,用戶不會遭受到資產的損失。可以通過整個申訴仲裁的這樣一個流程,到最後去得到資產的賠付,甚至是一個超額的賠付。
彩蛋
Franci:Orbiter Finance 創立以來有沒有發生過什麼有趣的故事呢?
Eric:有趣的故事的話,應該就是去年年底的時候,當時 Vitalik 在 Gitcoin 上發布一個 cross-rollup bounty。當時看到這個覺得挺有意思的,當時有一些自己的想法,然後當時我和我的同事,我們兩個人就用了二十多天搞出了一個 pizza 合約,當時去參加了。而且最終的話就是從中獲勝,然後得到了那個 Vitalik 的 16 個 ETH 的獎勵。這個對我們其實也是一個很大的鼓舞。