Merlin技術方案解讀:它到底是怎麼運轉的?

進階4/26/2024, 10:31:31 AM
比特幣 Layer2 賽道中,坐擁數十億美元 TVL 的 Merlin,毫無疑問是體量最大、關注者最多的一個。極客 Web3 創始人 Faust 聚焦於 Merlin Chain 的技術方案,對其已公開文檔及協議設計思路進行解讀,幫助讀者理解 Merlin 的大致工作流程以及安全模型。

從2023年的銘文之夏至今,比特幣Layer2始終都是整個Web3的重頭戲。雖然這一領域的興起遠晚於以太坊Layer2,但憑藉着POW的獨特魅力,以及現貨ETF的順利落地,無需顧忌“證券化”風險的比特幣在短短半年時間裏,就爲Layer2這一衍生賽道吸引了動輒百億美元的資本注意力。而在比特幣Layer2賽道中,坐擁數十億美元TVL的Merlin,毫無疑問是體量最大、關注者最多的那一個。憑藉着明確的質押激勵和可觀的收益率,Merlin幾乎是在幾個月之內突然拔地而起,打造了一個超越Blast的生態神話。隨着Merlin的逐漸火熱,關於其技術方案的探討也成爲越來越多人關注的話題。在本文中,極客web3將聚焦於Merlin Chain技術方案,對其已公開的文檔及協議設計思路進行解讀,我們致力於讓更多人理解Merlin的大致工作流程,對其安全模型有更清晰的認知,讓大家以更直觀的方式來理解這個“頭部比特幣Layer2”到底是怎麼運轉的。

Merlin的去中心化預言機網路:開放性的鏈下DAC委員會

對於所有的Layer2而言,無論是以太坊Layer2,還是比特幣Layer2,DA與數據發布成本,都是最需要解決的問題之一。由於比特幣網路本身存在諸多問題,天生不支持較大的數據吞吐量,該如何利用這寸土寸金的DA空間,成爲了考驗Layer2項目方想象力的難題。

有一個結論是顯而易見的:如果Layer2“直接”把未經處理的的交易數據,發布到比特幣區塊裏,既不能實現高吞吐量,也不能實現低手續費。最主流的解決方案,要麼通過高度壓縮,把數據尺寸壓縮的盡可能小,再上傳到比特幣區塊,要麼就把數據直接發布在比特幣鏈下。

採用第一種思路的Layer2中,最出名的可能是Citrea,它們打算把一段時間內Layer2的狀態變化(state diff),也就是多個帳戶上的狀態變更結果,連同對應的ZK證明,一起上傳到比特幣鏈上。這種情況下,任何人都可以從比特幣主網下載state diff 和ZKP,進而監測到Citrea狀態的變化結果。這種方法可以把上鏈的數據尺寸壓縮90%以上。

雖然這可以極大程度壓縮數據尺寸,但瓶頸還是很明顯。如果在短時間內,有大量的帳戶發生狀態變更,Layer2要把這些個帳戶的變更情況,全部匯總上傳到比特幣鏈上,最終的數據發布成本無法壓到很低,這一點在很多以太坊ZK Rollup身上可見一斑。

很多比特幣Layer2幹脆走第二種路徑:直接用比特幣鏈下的DA解決方案,要麼自己搭建一個DA層,要麼就用Celestia、EigenDA等。B^Square、BitLayer以及本文的主角Merlin,都沿用了這種鏈下的DA擴容方案。

在極客web3此前文章——《解析B^2新版技術路線圖:比特幣鏈下DA與驗證層的必要性》中,我們提到,B^2直接模仿Celestia,在鏈下搭建了一個支持數據採樣功能的DA網路,名爲B^2 Hub。交易數據或state diff等“DA數據”存放於比特幣鏈下,只向比特幣主網上傳datahash / merkle root 。

這其實是把比特幣當做一個去信任的公告板:任何人都可以從比特幣鏈上讀取datahash。當你從鏈下的數據提供者那裏獲取DA數據後,可以檢查它和鏈上的datahash是否對應,即 hash(data1) == datahash1 ?。如果兩者之間存在對應關係,說明鏈下的數據提供者給你的數據沒錯。

(DA層存在於比特幣鏈下的Layer2原理圖

圖源:極客web3)

上述流程可以保證鏈下節點提供給你的數據,與Layer1上的某些“線索”相關聯,防止DA層惡意提供虛假數據。但這裏有一個很重要的作惡場景:假如數據的源頭——Sequencer,壓根沒有把datahash對應的data發出去,只把datahash發到了比特幣鏈上,卻故意扣住對應的data不讓任何人讀取,這種時候怎麼辦?

類似的場景包括但不限於:只把ZK-Proof和StateRoot發布出來,卻不發布對應的DA數據(state diff或Transaction data),人們雖然可以驗證ZKProof,確定Prev_Stateroot到New_Stateroot的計算過程有效無誤,但卻不知道有哪些帳戶的state(狀態)發生了變化。這種情況下,雖然用戶的資產是安全的,但大家根本不能確定網路的實際狀態,不知道有哪些交易被打包上鏈,哪些合約的狀態發生了更新,此時的Layer2基本等同於停機。

這其實就是“數據扣留”,以太坊基金會的Dankrad曾經在2023年8月,於推特上簡單討論了類似的問題,當然他主要針對的是一個名爲“DAC”的東西。

很多採用鏈下DA方案的以太坊Layer2,往往會設置幾個具有特殊權限的節點,組成一個委員會,全稱Data Availability Committee (DAC) 。這個DAC委員會充當了擔保人的角色,對外聲稱:Sequencer的確在鏈下發布了完整的DA數據(transaction data或state diff)。然後DAC節點集體生成一個多籤,只要多籤滿足閾值要求(比如2/4),Layer1上的相關合約就會默認,Sequencer通過了DAC委員會的檢查,如實的在鏈下發布了完整的DA數據。


以太坊Layer2的DAC委員會基本都遵循POA模式,只允許少數經過KYC或官方指定的節點加入DAC委員會,這使得DAC成爲了“中心化”、“聯盟鏈”的代名詞。此外,在某些採用DAC模式的以太坊Layer2那裏,排序器只把DA數據發送給DAC成員節點,幾乎不會再往其他地方上傳數據,任何人要獲取DA數據,必須得到DAC委員會的許可,和聯盟鏈沒有本質區別。

毫無疑問,DAC應該去中心化,Layer2可以不把DA數據直接上傳至Layer1,但DAC委員會的準入權限應該對外開放,這樣才能防止少數人串謀作惡。(對於DAC作惡場景的討論,可以參考Dankrad此前在推特上的發言)

Celestia此前提出的BlobStream,本質是用Celestia替代中心化的DAC,以太坊L2的排序器可以把DA數據發布到Celestia鏈上,如果有2/3的Celestia節點爲之籤名,以太坊上部署的Layer2專屬合約就認爲排序器如實發布了DA數據,這實際是讓Celestia節點作爲擔保人。考慮到Celestia有上百號Validator節點,我們可以認爲這個大號DAC是比較去中心化的。

Merlin採用的DA解決方案,其實和Celestia的BlobStream比較接近,都是通過POS的形式開放DAC的準入權限,使之趨於去中心化。任何人只要質押足夠的資產,就可以運行一個DAC節點。在Merlin的文檔中,將上述DAC節點稱爲Oracle,並且指出,將支持BTC、MERL甚至是BRC-20代幣的資產質押,實現靈活的質押機制,也支持類似於Lido的代理質押。(預言機的POS質押協議基本是Merlin接下來的核心敘事之一,提供的質押利率等都比較高)

在此我們簡述下Merlin的工作流程(圖片在下面):

  1. 排序器Sequencer接收到大量交易請求後,將其匯總並產生data batch(數據批次),傳給Prover節點,以及Oracle節點(去中心化DAC)。

  2. Merlin的Prover節點是去中心化的,採用了lumoz的Prover as a Service服務。Prover礦池在收到多個data batch後,會生成對應的零知識證明,之後,ZKP會發給Oracle節點,交由後者去驗證。

  3. Oracle節點會驗證Lmuoz的ZK礦池發來的ZK Proof,能否和Sequencer發來的data Batch相對應。若兩者可以對應上,且不包含其他錯誤,則通過驗證。在此過程中,去中心化的Oracle節點們會通過門限籤名來生成多籤,對外聲明——排序器完整的發出了DA數據,且對應的ZKP是有效的,通過了Oracle節點的驗證。

  4. 排序器從Oracle節點處收集多籤結果,當籤名數量滿足閾值要求後,就把這些籤名信息發到比特幣鏈上,附帶DA數據(data batch)的datahash,交由外界去讀取並確認。

(Merlin工作原理圖 圖源:極客web3)

  1. Oracle節點對其驗證ZK Proof的計算過程進行特殊處理,生成Commitment承諾,發送到比特幣鏈上,允許任何人對“承諾”進行挑戰,這裏面的流程和bitVM的欺詐證明協議基本一致。如果挑戰成功,則發布Commitment的Oracle節點將受到經濟懲罰。當然,Oracle要發布到比特幣鏈上的數據,還包括當前Layer2狀態的hash——StateRoot,以及ZKP本身,都要發布到比特幣鏈上,讓外界檢測。

參考資料:《極簡解讀BitVM:如何在BTC鏈上驗證欺詐證明》

這裏面還有幾個需要闡述的細節,首先Merlin路線圖中提到,未來會讓Oracle把DA數據備份到Celestia上,這樣一來,Oracle節點可以適當的淘汰掉本地的歷史數據,不需要把數據永存在本地。同時,Oracle Network生成的Commitment,其實是一棵Merkle Tree的root,光對外披露root還不行,要把Commitment對應的完整數據集全部公開,這就需要尋找一個第三方的DA平台,這個平台可以是Celestia或EigenDA,也可以是其他的DA層。

參考資料:《解析B^2新版技術路線圖:比特幣鏈下DA與驗證層的必要性》

安全模型分析:樂觀的ZKRollup+Cobo的MPC服務

上面我們簡述了Merlin的工作流程,相信大家已經對其基本構造有所掌握。我們不難看出,Merlin與B^Square、BitLayer、Citrea,基本都遵循相同的安全模型——樂觀的ZK-Rollup。

初讀這個詞,可能讓很多以太坊愛好者感到怪異,什麼叫“樂觀的ZK-Rollup”?在以太坊社區的認知裏,ZK Rollup的“理論模型”完全建立在密碼學計算的可靠性上,不需要引入信任假設,而樂觀一詞,恰恰就引入了信任假設,這意味着,人們在大多數時候,要樂觀的認爲Rollup沒有出現錯誤,是可靠的。而一旦出現錯誤,可以通過欺詐證明的方式去懲罰Rollup運行者,這就是樂觀Rollup——Optimistic Rollup,又名OP Rollup的命名由來。

對於Rollup大本營的以太坊生態而言,樂觀的ZK-Rollup可能有些不倫不類,但這恰恰貼合了比特幣Layer2的現狀。由於技術上的限制,比特幣鏈上無法完整的驗證ZK Proof,只能在特殊情況下驗證ZKP的某一步計算過程,在這種前提下,比特幣鏈上實際只能支持欺詐證明協議,人們可以指出ZKP在鏈下驗證過程中,某一個計算步驟有錯誤,並通過欺詐證明的方式進行挑戰,當然這無法向以太坊式的ZK Rollup看齊,但已經是目前比特幣Layer2所能企及的最可靠、最穩妥的安全模型。

在上述樂觀的ZK-Rollup方案下,假設Layer2網路中存在N個有權限發起挑戰的人,只要這N個挑戰者中有1人是誠實可靠的,隨時能夠檢測出錯誤並發起欺詐證明,Layer2的狀態轉換就是安全的。當然,完成度比較高的樂觀Rollup需要確保其提款橋也受到欺詐證明協議的保護,而目前幾乎所有的比特幣Layer2都無法實現這個前提,需要依賴於多籤/MPC,那麼該如何選用多籤/MPC方案,就成爲了與Layer2安全性息息相關的問題。

Merlin在橋接方案上選擇了Cobo的MPC服務,採用冷熱錢包隔離等措施,橋接資產由Cobo和Merlin Chain共同管理,任何提款行爲需要Cobo和Merlin Chain的MPC參與者共同處理,本質上是通過機構的信用背書來保障提款橋的可靠性。當然這只是目前階段的權宜之計,隨着項目的逐漸完善,提款橋可以通過引入BitVM與欺詐證明協議來更替爲1/N信任假設的“樂觀橋”,只是這樣做的落地難度會比較大(目前幾乎所有的Layer2官方橋都依賴於多籤)。

整體來看,我們可以梳理下,Merlin引入了基於POS的DAC、基於BitVM的樂觀ZK-Rollup、基於Cobo的MPC資產托管方案,通過開放DAC權限來解決DA問題;通過引入BitVM及欺詐證明協議來保障狀態轉換的安全;通過引入知名資產托管平台Cobo的MPC服務來保證提款橋的可靠性。

基於Lumoz的兩步驗證式ZKP提交方案

前面我們梳理了Merlin的安全模型,介紹了樂觀ZK-rollup的概念。在Merlin的技術路線圖中,還談到了去中心化Prover。衆所周知,Prover是ZK-Rollup架構中的一個核心角色,它負責爲Sequencer發布的Batch生成ZKProof,而零知識證明的生成過程恰恰是非常消耗硬件資源的,是一個很棘手的問題。

要加速ZK證明的生成,將任務並行化切分處理,是一個最基本的操作。所謂的並行化,其實就是把ZK證明的生成任務切分爲不同的部分,由不同的Prover來分別完成,最後再由Aggregator聚合者把多段Proof聚合爲一個整體。

爲了加速ZK證明的生成過程,Merlin將採用Lumoz的Prover as a service方案,實際上就是把大量的硬件設備聚在一起組建出一個礦池,然後把計算任務分配給不同的設備,並分配對應的激勵,和POW挖礦有些類似。

在這種去中心化的Prover方案中,存在一類攻擊場景,俗稱搶跑攻擊:假設某個聚合者Aggregator組建好了ZKP,它把ZKP發送出去以期獲得獎勵。其他聚合者看到了ZKP的內容後,搶跑在他前面發布相同的內容,聲稱這個ZKP是自己先生成的,這種情況該怎麼解決?

可能大家想到的一個最本能的解決方案,就是給每個Aggregator分配指定的任務號碼,比如說,任務1只有Aggregator A可以接,其他人就算完成了任務1也拿不到獎勵。但這種方法存在一個問題,就是不能抵御單點風險。假如Aggregator A出現了性能故障或是掉線了,任務1就一直卡着沒法完成。而且,這種把任務分配給單一實體的做法,無法以競爭性的激勵機制提升生產效率,不是一個很好的辦法。

Polygon zkEVM曾在一篇博客中提出名爲Proof of efficiency的方法,其中指出,應該以競爭性的手段促使不同的Aggregator之間展開競爭,以先到先得的方式來分配激勵,最先把ZK-Proof提交上鏈的Aggregator可以獲得獎勵。當然他這裏面沒有提到該怎麼解決MEV搶跑問題。

Lumoz採用了兩步驗證的ZK證明提交方式,某個Aggregator生成了ZK證明後,先不用把完整的內容發出去,而只發布ZKP的hash,換言之,發布hash(ZKP+Aggregator Address)。這樣一來,就算其他人看到了hash值,也不知道對應的ZKP內容,無法直接搶跑;

如果有人幹脆把整個hash復制一份搶先發布出去,也沒有意義,因爲hash裏面包含了特定聚合者X的地址,聚合者A就算搶先發布這個hash,等hash的原像被揭露時,大家也會看到其中包含的聚合者地址是X的,而不是A的。

通過這種兩步驗證式的ZKP提交方案,Merlin(Lumoz)可以解決ZKP提交過程中存在的搶跑問題,進而實現高度競爭性的零知識證明生成激勵,從而提高ZKP的生成速度。

Merlin’s Phantom:多鏈互操作

按照Merlin的技術路線圖,他們還會支持Merlin與其他EVM鏈之間的互操作,其實現路徑與此前Zetachain的思路基本一致,假如以Merlin作爲源鏈,其他EVM鏈作爲目標鏈,當Merlin節點感知到用戶發出的跨鏈互操作請求後,會在目標鏈上觸發後續的工作流程。

比如,可以在Polygon上部署一個由Merlin網路控制的EOA帳戶,當用戶在Merlin Chain上發布跨鏈互操作指令後,Merlin網路先解析其內容,生成一筆在目標鏈上執行的交易數據,再由Oracle Network對該筆交易進行MPC籤名處理,生成交易的數字籤名。之後Merlin的Relayer節點在Polygon上釋放這筆交易,通過Merlin在目標鏈上EOA帳戶中的資產完成後續操作如。

當用戶要求的操作完成後,對應的資產將直接轉發給用戶在目標鏈上的地址,理論上也可以直接跨到Merlin Chain中。這種方案有一些比較明顯的好處:可以避免傳統資產跨鏈時與跨鏈橋合約產生的手續費磨損,而且是直接由Merlin的Oracle Network保障跨鏈操作的安全性,不需要再依賴於外部的基礎設施。只要用戶信任Merlin Chain,就可以默認此類跨鏈互操作行爲是沒有問題的。

總結

在本文中,我們對Merlin Chain大體的技術方案進行了簡要解讀,相信可以讓更多人理解Merlin的大致工作流程,對其安全模型有更清晰的認知。考慮到當前比特幣生態的如火如荼,我們認爲,此類技術科普行爲是有價值且爲廣大羣衆所需要的,我們將在日後對Merlin及bitLayer、B^Square等項目進行長期的跟進,對其技術方案進行更爲深入的解析,大家敬請期待!

聲明:

  1. 本文轉載自[極客web3],著作權歸屬原作者[Faust],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。

  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。

  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

Merlin技術方案解讀:它到底是怎麼運轉的?

進階4/26/2024, 10:31:31 AM
比特幣 Layer2 賽道中,坐擁數十億美元 TVL 的 Merlin,毫無疑問是體量最大、關注者最多的一個。極客 Web3 創始人 Faust 聚焦於 Merlin Chain 的技術方案,對其已公開文檔及協議設計思路進行解讀,幫助讀者理解 Merlin 的大致工作流程以及安全模型。

從2023年的銘文之夏至今,比特幣Layer2始終都是整個Web3的重頭戲。雖然這一領域的興起遠晚於以太坊Layer2,但憑藉着POW的獨特魅力,以及現貨ETF的順利落地,無需顧忌“證券化”風險的比特幣在短短半年時間裏,就爲Layer2這一衍生賽道吸引了動輒百億美元的資本注意力。而在比特幣Layer2賽道中,坐擁數十億美元TVL的Merlin,毫無疑問是體量最大、關注者最多的那一個。憑藉着明確的質押激勵和可觀的收益率,Merlin幾乎是在幾個月之內突然拔地而起,打造了一個超越Blast的生態神話。隨着Merlin的逐漸火熱,關於其技術方案的探討也成爲越來越多人關注的話題。在本文中,極客web3將聚焦於Merlin Chain技術方案,對其已公開的文檔及協議設計思路進行解讀,我們致力於讓更多人理解Merlin的大致工作流程,對其安全模型有更清晰的認知,讓大家以更直觀的方式來理解這個“頭部比特幣Layer2”到底是怎麼運轉的。

Merlin的去中心化預言機網路:開放性的鏈下DAC委員會

對於所有的Layer2而言,無論是以太坊Layer2,還是比特幣Layer2,DA與數據發布成本,都是最需要解決的問題之一。由於比特幣網路本身存在諸多問題,天生不支持較大的數據吞吐量,該如何利用這寸土寸金的DA空間,成爲了考驗Layer2項目方想象力的難題。

有一個結論是顯而易見的:如果Layer2“直接”把未經處理的的交易數據,發布到比特幣區塊裏,既不能實現高吞吐量,也不能實現低手續費。最主流的解決方案,要麼通過高度壓縮,把數據尺寸壓縮的盡可能小,再上傳到比特幣區塊,要麼就把數據直接發布在比特幣鏈下。

採用第一種思路的Layer2中,最出名的可能是Citrea,它們打算把一段時間內Layer2的狀態變化(state diff),也就是多個帳戶上的狀態變更結果,連同對應的ZK證明,一起上傳到比特幣鏈上。這種情況下,任何人都可以從比特幣主網下載state diff 和ZKP,進而監測到Citrea狀態的變化結果。這種方法可以把上鏈的數據尺寸壓縮90%以上。

雖然這可以極大程度壓縮數據尺寸,但瓶頸還是很明顯。如果在短時間內,有大量的帳戶發生狀態變更,Layer2要把這些個帳戶的變更情況,全部匯總上傳到比特幣鏈上,最終的數據發布成本無法壓到很低,這一點在很多以太坊ZK Rollup身上可見一斑。

很多比特幣Layer2幹脆走第二種路徑:直接用比特幣鏈下的DA解決方案,要麼自己搭建一個DA層,要麼就用Celestia、EigenDA等。B^Square、BitLayer以及本文的主角Merlin,都沿用了這種鏈下的DA擴容方案。

在極客web3此前文章——《解析B^2新版技術路線圖:比特幣鏈下DA與驗證層的必要性》中,我們提到,B^2直接模仿Celestia,在鏈下搭建了一個支持數據採樣功能的DA網路,名爲B^2 Hub。交易數據或state diff等“DA數據”存放於比特幣鏈下,只向比特幣主網上傳datahash / merkle root 。

這其實是把比特幣當做一個去信任的公告板:任何人都可以從比特幣鏈上讀取datahash。當你從鏈下的數據提供者那裏獲取DA數據後,可以檢查它和鏈上的datahash是否對應,即 hash(data1) == datahash1 ?。如果兩者之間存在對應關係,說明鏈下的數據提供者給你的數據沒錯。

(DA層存在於比特幣鏈下的Layer2原理圖

圖源:極客web3)

上述流程可以保證鏈下節點提供給你的數據,與Layer1上的某些“線索”相關聯,防止DA層惡意提供虛假數據。但這裏有一個很重要的作惡場景:假如數據的源頭——Sequencer,壓根沒有把datahash對應的data發出去,只把datahash發到了比特幣鏈上,卻故意扣住對應的data不讓任何人讀取,這種時候怎麼辦?

類似的場景包括但不限於:只把ZK-Proof和StateRoot發布出來,卻不發布對應的DA數據(state diff或Transaction data),人們雖然可以驗證ZKProof,確定Prev_Stateroot到New_Stateroot的計算過程有效無誤,但卻不知道有哪些帳戶的state(狀態)發生了變化。這種情況下,雖然用戶的資產是安全的,但大家根本不能確定網路的實際狀態,不知道有哪些交易被打包上鏈,哪些合約的狀態發生了更新,此時的Layer2基本等同於停機。

這其實就是“數據扣留”,以太坊基金會的Dankrad曾經在2023年8月,於推特上簡單討論了類似的問題,當然他主要針對的是一個名爲“DAC”的東西。

很多採用鏈下DA方案的以太坊Layer2,往往會設置幾個具有特殊權限的節點,組成一個委員會,全稱Data Availability Committee (DAC) 。這個DAC委員會充當了擔保人的角色,對外聲稱:Sequencer的確在鏈下發布了完整的DA數據(transaction data或state diff)。然後DAC節點集體生成一個多籤,只要多籤滿足閾值要求(比如2/4),Layer1上的相關合約就會默認,Sequencer通過了DAC委員會的檢查,如實的在鏈下發布了完整的DA數據。


以太坊Layer2的DAC委員會基本都遵循POA模式,只允許少數經過KYC或官方指定的節點加入DAC委員會,這使得DAC成爲了“中心化”、“聯盟鏈”的代名詞。此外,在某些採用DAC模式的以太坊Layer2那裏,排序器只把DA數據發送給DAC成員節點,幾乎不會再往其他地方上傳數據,任何人要獲取DA數據,必須得到DAC委員會的許可,和聯盟鏈沒有本質區別。

毫無疑問,DAC應該去中心化,Layer2可以不把DA數據直接上傳至Layer1,但DAC委員會的準入權限應該對外開放,這樣才能防止少數人串謀作惡。(對於DAC作惡場景的討論,可以參考Dankrad此前在推特上的發言)

Celestia此前提出的BlobStream,本質是用Celestia替代中心化的DAC,以太坊L2的排序器可以把DA數據發布到Celestia鏈上,如果有2/3的Celestia節點爲之籤名,以太坊上部署的Layer2專屬合約就認爲排序器如實發布了DA數據,這實際是讓Celestia節點作爲擔保人。考慮到Celestia有上百號Validator節點,我們可以認爲這個大號DAC是比較去中心化的。

Merlin採用的DA解決方案,其實和Celestia的BlobStream比較接近,都是通過POS的形式開放DAC的準入權限,使之趨於去中心化。任何人只要質押足夠的資產,就可以運行一個DAC節點。在Merlin的文檔中,將上述DAC節點稱爲Oracle,並且指出,將支持BTC、MERL甚至是BRC-20代幣的資產質押,實現靈活的質押機制,也支持類似於Lido的代理質押。(預言機的POS質押協議基本是Merlin接下來的核心敘事之一,提供的質押利率等都比較高)

在此我們簡述下Merlin的工作流程(圖片在下面):

  1. 排序器Sequencer接收到大量交易請求後,將其匯總並產生data batch(數據批次),傳給Prover節點,以及Oracle節點(去中心化DAC)。

  2. Merlin的Prover節點是去中心化的,採用了lumoz的Prover as a Service服務。Prover礦池在收到多個data batch後,會生成對應的零知識證明,之後,ZKP會發給Oracle節點,交由後者去驗證。

  3. Oracle節點會驗證Lmuoz的ZK礦池發來的ZK Proof,能否和Sequencer發來的data Batch相對應。若兩者可以對應上,且不包含其他錯誤,則通過驗證。在此過程中,去中心化的Oracle節點們會通過門限籤名來生成多籤,對外聲明——排序器完整的發出了DA數據,且對應的ZKP是有效的,通過了Oracle節點的驗證。

  4. 排序器從Oracle節點處收集多籤結果,當籤名數量滿足閾值要求後,就把這些籤名信息發到比特幣鏈上,附帶DA數據(data batch)的datahash,交由外界去讀取並確認。

(Merlin工作原理圖 圖源:極客web3)

  1. Oracle節點對其驗證ZK Proof的計算過程進行特殊處理,生成Commitment承諾,發送到比特幣鏈上,允許任何人對“承諾”進行挑戰,這裏面的流程和bitVM的欺詐證明協議基本一致。如果挑戰成功,則發布Commitment的Oracle節點將受到經濟懲罰。當然,Oracle要發布到比特幣鏈上的數據,還包括當前Layer2狀態的hash——StateRoot,以及ZKP本身,都要發布到比特幣鏈上,讓外界檢測。

參考資料:《極簡解讀BitVM:如何在BTC鏈上驗證欺詐證明》

這裏面還有幾個需要闡述的細節,首先Merlin路線圖中提到,未來會讓Oracle把DA數據備份到Celestia上,這樣一來,Oracle節點可以適當的淘汰掉本地的歷史數據,不需要把數據永存在本地。同時,Oracle Network生成的Commitment,其實是一棵Merkle Tree的root,光對外披露root還不行,要把Commitment對應的完整數據集全部公開,這就需要尋找一個第三方的DA平台,這個平台可以是Celestia或EigenDA,也可以是其他的DA層。

參考資料:《解析B^2新版技術路線圖:比特幣鏈下DA與驗證層的必要性》

安全模型分析:樂觀的ZKRollup+Cobo的MPC服務

上面我們簡述了Merlin的工作流程,相信大家已經對其基本構造有所掌握。我們不難看出,Merlin與B^Square、BitLayer、Citrea,基本都遵循相同的安全模型——樂觀的ZK-Rollup。

初讀這個詞,可能讓很多以太坊愛好者感到怪異,什麼叫“樂觀的ZK-Rollup”?在以太坊社區的認知裏,ZK Rollup的“理論模型”完全建立在密碼學計算的可靠性上,不需要引入信任假設,而樂觀一詞,恰恰就引入了信任假設,這意味着,人們在大多數時候,要樂觀的認爲Rollup沒有出現錯誤,是可靠的。而一旦出現錯誤,可以通過欺詐證明的方式去懲罰Rollup運行者,這就是樂觀Rollup——Optimistic Rollup,又名OP Rollup的命名由來。

對於Rollup大本營的以太坊生態而言,樂觀的ZK-Rollup可能有些不倫不類,但這恰恰貼合了比特幣Layer2的現狀。由於技術上的限制,比特幣鏈上無法完整的驗證ZK Proof,只能在特殊情況下驗證ZKP的某一步計算過程,在這種前提下,比特幣鏈上實際只能支持欺詐證明協議,人們可以指出ZKP在鏈下驗證過程中,某一個計算步驟有錯誤,並通過欺詐證明的方式進行挑戰,當然這無法向以太坊式的ZK Rollup看齊,但已經是目前比特幣Layer2所能企及的最可靠、最穩妥的安全模型。

在上述樂觀的ZK-Rollup方案下,假設Layer2網路中存在N個有權限發起挑戰的人,只要這N個挑戰者中有1人是誠實可靠的,隨時能夠檢測出錯誤並發起欺詐證明,Layer2的狀態轉換就是安全的。當然,完成度比較高的樂觀Rollup需要確保其提款橋也受到欺詐證明協議的保護,而目前幾乎所有的比特幣Layer2都無法實現這個前提,需要依賴於多籤/MPC,那麼該如何選用多籤/MPC方案,就成爲了與Layer2安全性息息相關的問題。

Merlin在橋接方案上選擇了Cobo的MPC服務,採用冷熱錢包隔離等措施,橋接資產由Cobo和Merlin Chain共同管理,任何提款行爲需要Cobo和Merlin Chain的MPC參與者共同處理,本質上是通過機構的信用背書來保障提款橋的可靠性。當然這只是目前階段的權宜之計,隨着項目的逐漸完善,提款橋可以通過引入BitVM與欺詐證明協議來更替爲1/N信任假設的“樂觀橋”,只是這樣做的落地難度會比較大(目前幾乎所有的Layer2官方橋都依賴於多籤)。

整體來看,我們可以梳理下,Merlin引入了基於POS的DAC、基於BitVM的樂觀ZK-Rollup、基於Cobo的MPC資產托管方案,通過開放DAC權限來解決DA問題;通過引入BitVM及欺詐證明協議來保障狀態轉換的安全;通過引入知名資產托管平台Cobo的MPC服務來保證提款橋的可靠性。

基於Lumoz的兩步驗證式ZKP提交方案

前面我們梳理了Merlin的安全模型,介紹了樂觀ZK-rollup的概念。在Merlin的技術路線圖中,還談到了去中心化Prover。衆所周知,Prover是ZK-Rollup架構中的一個核心角色,它負責爲Sequencer發布的Batch生成ZKProof,而零知識證明的生成過程恰恰是非常消耗硬件資源的,是一個很棘手的問題。

要加速ZK證明的生成,將任務並行化切分處理,是一個最基本的操作。所謂的並行化,其實就是把ZK證明的生成任務切分爲不同的部分,由不同的Prover來分別完成,最後再由Aggregator聚合者把多段Proof聚合爲一個整體。

爲了加速ZK證明的生成過程,Merlin將採用Lumoz的Prover as a service方案,實際上就是把大量的硬件設備聚在一起組建出一個礦池,然後把計算任務分配給不同的設備,並分配對應的激勵,和POW挖礦有些類似。

在這種去中心化的Prover方案中,存在一類攻擊場景,俗稱搶跑攻擊:假設某個聚合者Aggregator組建好了ZKP,它把ZKP發送出去以期獲得獎勵。其他聚合者看到了ZKP的內容後,搶跑在他前面發布相同的內容,聲稱這個ZKP是自己先生成的,這種情況該怎麼解決?

可能大家想到的一個最本能的解決方案,就是給每個Aggregator分配指定的任務號碼,比如說,任務1只有Aggregator A可以接,其他人就算完成了任務1也拿不到獎勵。但這種方法存在一個問題,就是不能抵御單點風險。假如Aggregator A出現了性能故障或是掉線了,任務1就一直卡着沒法完成。而且,這種把任務分配給單一實體的做法,無法以競爭性的激勵機制提升生產效率,不是一個很好的辦法。

Polygon zkEVM曾在一篇博客中提出名爲Proof of efficiency的方法,其中指出,應該以競爭性的手段促使不同的Aggregator之間展開競爭,以先到先得的方式來分配激勵,最先把ZK-Proof提交上鏈的Aggregator可以獲得獎勵。當然他這裏面沒有提到該怎麼解決MEV搶跑問題。

Lumoz採用了兩步驗證的ZK證明提交方式,某個Aggregator生成了ZK證明後,先不用把完整的內容發出去,而只發布ZKP的hash,換言之,發布hash(ZKP+Aggregator Address)。這樣一來,就算其他人看到了hash值,也不知道對應的ZKP內容,無法直接搶跑;

如果有人幹脆把整個hash復制一份搶先發布出去,也沒有意義,因爲hash裏面包含了特定聚合者X的地址,聚合者A就算搶先發布這個hash,等hash的原像被揭露時,大家也會看到其中包含的聚合者地址是X的,而不是A的。

通過這種兩步驗證式的ZKP提交方案,Merlin(Lumoz)可以解決ZKP提交過程中存在的搶跑問題,進而實現高度競爭性的零知識證明生成激勵,從而提高ZKP的生成速度。

Merlin’s Phantom:多鏈互操作

按照Merlin的技術路線圖,他們還會支持Merlin與其他EVM鏈之間的互操作,其實現路徑與此前Zetachain的思路基本一致,假如以Merlin作爲源鏈,其他EVM鏈作爲目標鏈,當Merlin節點感知到用戶發出的跨鏈互操作請求後,會在目標鏈上觸發後續的工作流程。

比如,可以在Polygon上部署一個由Merlin網路控制的EOA帳戶,當用戶在Merlin Chain上發布跨鏈互操作指令後,Merlin網路先解析其內容,生成一筆在目標鏈上執行的交易數據,再由Oracle Network對該筆交易進行MPC籤名處理,生成交易的數字籤名。之後Merlin的Relayer節點在Polygon上釋放這筆交易,通過Merlin在目標鏈上EOA帳戶中的資產完成後續操作如。

當用戶要求的操作完成後,對應的資產將直接轉發給用戶在目標鏈上的地址,理論上也可以直接跨到Merlin Chain中。這種方案有一些比較明顯的好處:可以避免傳統資產跨鏈時與跨鏈橋合約產生的手續費磨損,而且是直接由Merlin的Oracle Network保障跨鏈操作的安全性,不需要再依賴於外部的基礎設施。只要用戶信任Merlin Chain,就可以默認此類跨鏈互操作行爲是沒有問題的。

總結

在本文中,我們對Merlin Chain大體的技術方案進行了簡要解讀,相信可以讓更多人理解Merlin的大致工作流程,對其安全模型有更清晰的認知。考慮到當前比特幣生態的如火如荼,我們認爲,此類技術科普行爲是有價值且爲廣大羣衆所需要的,我們將在日後對Merlin及bitLayer、B^Square等項目進行長期的跟進,對其技術方案進行更爲深入的解析,大家敬請期待!

聲明:

  1. 本文轉載自[極客web3],著作權歸屬原作者[Faust],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。

  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。

  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

今すぐ始める
登録して、
$100
のボーナスを獲得しよう!