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

新手3/24/2024, 6:46:02 PM
B^2 Network是一個去中心化的DA平台和存儲平台,通過鏈下DA網路解決數據壓縮和驗證問題,避免過度依賴比特幣主網。B^2 Hub充當了類似於Celestia的DA層和鏈下的驗證層,有效防止數據扣留和其他作惡場景。B^2 Network未來還將集成比特幣Layer2,打造通用的比特幣鏈下DA層和數據存儲層。B^2 Hub節點負責驗證交易批次,存儲節點通過爭奪出塊權來獲取激勵。B^2 Network的工作流程包括排序器產生新區塊,聚合器發送給Prover生成ZK證明,B^2Hub節點驗證並將數據hash發送至比特幣鏈。B^2 Hub作爲通用的DA層和驗證層,可以賦能其他比特幣二層。

摘要

B^2 Network在比特幣鏈下設置了名爲B^2 Hub的DA層,該DA層網路借鑑了Celestia的思路,引入數據採樣與糾刪碼,確保新增數據可以快速的分發給大量的外部節點,並極力避免數據扣留的發生。同時,B^2 Hub網路中的Committer會把DA數據的存儲索引以及數據hash上傳到比特幣鏈上,供任何人讀取;

爲了減輕DA層節點的壓力,B^2 Hub中的歷史數據不會永久保存,所以B^2又嘗試搭建起一個存儲網路,通過類似於Arweave的存儲激勵方式,刺激更多節點存儲更完備的歷史數據集,以獲取存儲激勵;

在狀態驗證方面,B^2採用了混合式的驗證方案,在鏈下驗證ZK證明,鏈上通過bitVM的思路,挑戰ZK證明驗證痕跡,只要有1個挑戰者節點在檢測到錯誤後發起挑戰,B^2 網路就是安全的,這符合欺詐證明協議的信任模型,但由於用到了ZK,這種狀態驗證實際上是混合型的。

按照B^2 Network的未來路線圖,EVM兼容的B^2 Hub可以成爲對接多個比特幣Layer2的鏈下驗證層與DA層,成爲一個類似於BTCKB的比特幣鏈下功能拓展層。由於比特幣本身無法支持很多場景,這種鏈下搭建功能拓展層的方式將會成爲Layer2生態裏越來越常態化的現象。

B^2 Hub:比特幣鏈下的通用DA層與驗證層

如今的比特幣生態可謂是一片機會與騙局共存的藍海,這個因銘文之夏而煥發生機的全新領域簡直是一片肥沃的處女地,到處都彌漫着金錢的氣息。隨着今年1月比特幣Layer2如雨後春筍般集體湧現,這片原本如荒蕪原野的土地瞬間就成爲了無數造夢者的搖籃。

但回歸到最本質的問題:什麼是Layer2,人們似乎始終沒有達成共識。側鏈是嗎?索引器是嗎?搭個橋的鏈就叫Layer2嗎?一個依賴於比特幣和以太坊的簡易插件,可不可以當做一個Layer?這些問題就像一組難解的方程式,始終都沒有一個確切的結局。

而按照以太坊和Celestia社區的思路,Layer2只是模塊化區塊鏈的特殊情況,在這種情況下,所謂的“二層”與“一層”之間會存在緊密的耦合關係,二層網路可以很大程度,或一定程度繼承Layer1的安全性。至於安全性這個概念本身,可以拆解爲細分的多個指標,包括:DA、狀態驗證、提款驗證、抗審查性、抗重組等。

由於比特幣網路本身存在諸多問題,其天生不利於支持較完備的Layer2網路。比如在DA上,比特幣的數據吞吐量遠低於以太坊,以其平均10min的出塊時間來計算,比特幣最大的數據吞吐量僅爲6.8KB/s,差不多是以太坊的1/20,如此擁擠的區塊空間自然而然造就了高昂的數據發布成本。

(比特幣區塊裏的數據發布成本,甚至可以達到每KB 5美元)

如果Layer2直接把新增的交易數據發布到比特幣區塊裏,既不能實現高吞吐量,也不能實現低手續費。所以要麼就通過高度壓縮,把數據尺寸壓縮的盡可能小,再上傳到比特幣區塊。目前Citrea採用了這種方案,它們聲稱,將把一段時間內的狀態變化量(state diff),也就是多個帳戶上發生的狀態變更結果,連同對應的ZK證明,一起上傳到比特幣鏈上。

這種情況下,任何人都可以從比特幣主網下載state diff 和ZKP,驗證其是否有效,但上鏈的數據尺寸卻可以輕量化。

(前Polygon Hermez的白皮書中,說明了上述壓縮方案的原理)

這種方案在極大程度壓縮了數據尺寸的同時,最終還是容易遇到瓶頸。比如,假設在10分鍾內發生了幾萬筆交易,使得上萬個帳戶發生了狀態變更,你最終還是要把這些帳戶的變化情況,匯總上傳到比特幣鏈上。雖然比起直接上傳每筆交易數據,要輕量很多,但還是會產生很可觀的數據發布成本。

所以很多比特幣Layer2幹脆就不把DA數據上傳到比特幣主網,直接採用Celestia等第三方DA層。而B^2採用了另一種方式,直接在鏈下搭建一個DA網路(數據分發網路),名爲B^2 Hub。在B^2的協議設計中,交易數據或state diff等重要數據存放於鏈下,只向比特幣主網上傳這些數據的存儲索引,以及數據hash(其實是merkle root,爲了表述方便說成數據hash)。

這些數據hash和存儲索引,以類似銘文的方式寫入到比特幣鏈上,只要你運行一個比特幣節點,就可以把數據hash和存儲索引下載到本地,根據索引值,能從B^2的鏈下DA層或存儲層中,讀取到原始數據。根據數據hash,你可以判斷,自己從鏈下DA層獲取的數據是否正確(能否和比特幣鏈上的數據hash相對應)。通過這種簡單的方式,Layer2可以避免在DA問題上過度依賴比特幣主網,節約手續費成本並實現高吞吐量。

當然,有一點不可忽視,就是這種鏈下的第三方DA平台有可能搞數據扣留,拒絕讓外界獲取到新增的數據,這種場景有一個專用術語,叫“數據扣留攻擊”,可以歸納爲數據分發中的抗審查問題。不同的DA方案有不同的解決辦法,但核心宗旨,都是要把數據盡可能快、盡可能廣泛的傳播出去,防止一小撮特權節點控制着數據獲取權限不放。

按照B^2 Network官方新的路線圖,其DA方案借鑑了Celestia。在後者的設計中,第三方的數據提供者會不斷的向Celestia網路提供數據,Celestia出塊者會把這些數據片段,組織爲Merkle Tree的形態,塞到TIA區塊裏,廣播給網路裏的Validator/全節點。

由於這些數據比較多,區塊比較大,大多數人運行不起全節點,只能運行輕節點。輕節點不同步完整區塊,只同步一個區塊頭,寫有Mekrle Tree的樹根Root。

輕節點僅憑區塊頭,自然不知道Merkle Tree的全貌,不知道新增數據都有什麼,無法驗證數據是否有問題。但輕節點可以向全節點索要樹上的某個葉子leaf。全節點會按照要求,把leaf和對應的Merkle Proof,一並提交給輕節點,讓後者確信,這個leaf的確存在於Celestia區塊裏的Merkle Tree上,而不是被節點憑空杜撰出的虛假數據。

(圖源:W3 Hitchhiker)

Celestia網路裏存在大量的輕節點,這些輕節點可以向不同的全節點發起高頻的數據採樣,隨機性的抽選Merkle Tree上的某幾個數據片段。輕節點獲取到了這些數據片段後,也可以傳播給他能連接到的其他節點,這樣就可以快速的把數據分發給盡可能多的人/設備,以此來實現高效的數據傳播,只要足夠多的節點都能快速獲取最新的數據,人們就不用再信任一小撮數據提供者,這其實就是DA/數據分發的核心目的之一。

當然,僅憑上面描述的方案,還是存在攻擊場景,因爲它只能保證數據分發時,人們都能快速獲取到數據,但無法保證數據的生產源頭不作惡。比如,Celestia出塊者可能在區塊裏摻雜一點垃圾數據,人們即便獲取了區塊中的全部數據片段,也無法還原出“本應包含”的完整數據集(注意:這裏“本應”這個詞很重要)。

進一步說,原始數據集中可能有100筆交易,其中某筆交易的數據沒有被完整傳播給外界。這時,只需要隱藏1%的數據片段,外界就無法解析出完整數據集。這正是最早的數據扣留攻擊問題中,所探討的場景。

其實,根據這裏描述的場景來理解數據可用性,可用性這個詞描述的是區塊裏的交易數據是否完整,是否可用,能否直接交由其他人去驗證,而不是像很多人理解的那樣,可用性代表區塊鏈歷史數據能否被外界讀取到。所以,Celestia官方和L2BEAT創始人曾指出,數據可用性應該改名爲數據發布,意指區塊裏是否發布了完整可用性的交易數據集。

Celestia引入了二維糾刪碼,解決上面描述的數據扣留攻擊。只要區塊裏包含的 1/4 的數據片段(糾刪碼)有效,人們就可以還原出對應的原始數據集。除非出塊者在區塊裏摻雜 3/4 的垃圾數據片段,才能讓外界無法還原出原始數據集,但這種情況下,區塊裏包含的垃圾數據太多了,很容易就會被輕節點們檢測出來。所以對於區塊生產者而言,還是不要作惡來的更好些,因爲作惡幾乎很快就被無數人察覺到。

通過前面描述的方案,可以有效防止“數據分發平台”出現數據扣留,而B^2 Network未來會以Celestia的數據採樣作爲重要參考,可能結合KZG承諾等密碼學技術,進一步降低輕節點執行數據採樣和驗證的成本。只要執行數據採樣的節點足夠多,就能讓DA數據的分發變得有效且去信任。

當然,上述方案只解決了DA平台自身的數據扣留問題,但在Layer2的底層結構中,有能力發動數據扣留的不止DA平台,還有排序器(Sequencer)。在B^2 Network乃至大多數Layer2的工作流程中,新增數據是由排序器Sequencer產生的,它會把用戶端發來的交易匯總處理,附帶這些交易執行後的狀態變更結果,打包成批次(batch),再發送給充當DA層的B^2 Hub節點們。

如果排序器一開始生成的batch就有問題,就還存在數據扣留的可能性,當然還包括其他形式的作惡場景。所以,B^2 的DA網路(B^2 Hub)收到排序器生成的Batch後,會先對驗證Batch的內容,有問題就拒收。可以說,B^2 Hub 不但充當了類似於Celestia的DA層,也充當了鏈下的驗證層,有點類似於CKB在RGB++協議中的角色。

(不完整的B^2 Network底層結構圖)

按照B^2 Network最新的技術路線圖,B^2 Hub在收到並驗證了Batch後,只保留一段時間,過了這個窗口期,Batch數據就會被過期淘汰,從B^2 Hub節點本地刪除掉。爲了解決類似於EIP-4844的數據淘汰及丟失問題,B^2 Network設置了一組存儲節點,這些存儲節點會負責永存Batch數據,這樣一來,任何人在任何時候,都可以在存儲網路中搜索到自己需要的歷史數據。

不過,沒有人會平白無故的運行B^2存儲節點,如果想讓更多人來運行存儲節點,增強網路的去信任程度,就要提供激勵機制;要提供激勵機制,就要先想辦法反作弊。比如,假如你提出了一套激勵機制,任何人在自己的設備本地存儲了數據,就可以獲取獎勵,可能有人在下載了數據後,又偷偷的把一部分數據刪掉,卻聲稱自己存儲的數據是完整的,這就是最常見的作弊方法。

FIL通過名爲PoRep和PoSt的證明協議,讓存儲節點向外界出示存儲證明,證明自己在給定時間段內的確完整的保存了數據。但這種存儲證明方案需要生成ZK證明,且計算復雜度很高,對存儲節點的硬件設備會有較高要求,可能不是一個經濟成本上可行的方法。

在B^2 Network的新版技術路線圖中,存儲節點會採用類似於Arweave的機制,需要爭奪出塊權來獲取代幣激勵。如果存儲節點私自刪除了一些數據,則其成爲下一個出塊者的概率會降低,而保留數據最多的節點,越有可能成功出塊,獲取到更多的獎勵。所以對於大多數存儲節點而言,還是保留完整的歷史數據集比較好。

當然,有激勵的不只是存儲節點,還包括前面提到的B^2 Hub節點,按照路線圖,B^2 Hub會組建成一個Permissionless的POS網路,任何人只要質押了足夠多的Token,就可以成爲B^2 Hub或存儲網路中的一員,通過這種方式,B^2 Network嘗試在鏈下打造去中心化的DA平台及存儲平台,並在未來集成B^2 以外的比特幣Layer2,搭建通用的比特幣鏈下DA層與數據存儲層。

ZK與欺詐證明混用的狀態驗證方案

前面我們闡述了B^2 Network的DA解決方案,接下來我們將重點講述其狀態驗證方案。所謂的狀態驗證方案,就是指Layer2如何保證自己的狀態轉換足夠“去信任”。

(L2BEAT網站針對Scroll,評估出的五大安全指標,State Validation就是指狀態驗證方案)

前面我們曾提到,在B^2 Network乃至大多數Layer2的工作流程中,新增數據是由排序器Sequencer產生的,它會把用戶端發來的交易匯總處理,附帶這些交易執行後的狀態變更結果,打包成批次(batch),發送給Layer2網路中的其他節點,包括普通的Layer2全節點,以及B^2 Hub節點。

B^2 Hub節點在收到Batch數據後,會解析其內容並做出驗證,這裏就包含了前面提到的“狀態驗證”。其實狀態驗證,就是驗證排序器生成的Batch中,記錄的“交易執行後的狀態變化”是否正確。如果B^2 Hub節點收到了包含錯誤狀態的Batch,會將其拒收。

其實,B^2 Hub本質是一條POS公鏈,會有出塊人和驗證人的分野。每隔一段時間,B^2 Hub的出塊人會生成新的區塊,並傳播給其他節點(驗證人),這些區塊裏包含了排序器提交的Batch數據。剩下的工作流程和前面提到的Celestia有些許類似,有很多外部的節點,頻繁的向B^2 Hub節點索要數據片段,在這個過程中,Batch數據會被分發給很多節點設備,也包括前面提到的存儲網路。

B^2 Hub中存在名爲Committer(承諾人)的可輪換角色,它會把Batch的數據hash(其實是Merkle root),以及存儲索引,以銘文的形式提交到比特幣鏈上。只要你讀取到這個數據hash和存儲索引,就有辦法在鏈下的DA層/存儲層獲取到完整的數據。假設鏈下有N個節點存放着Batch數據,只要其中1個節點願意對外提供數據,就能讓任何人獲取到它需要的數據,這裏的信任假設是1/N。

當然,我們不難發現,上述過程中,負責驗證Layer2狀態轉換有效性的B^2 Hub,是獨立於比特幣主網的,只是一個鏈下的驗證層,所以這個時候,Layer2的狀態驗證方案,在可靠性上無法等價於比特幣主網。

一般而言,ZK Rollup可以完整的繼承Layer1的安全性,但目前比特幣鏈上只支持一些極爲簡單的計算,無法直接驗證ZK證明,所以還沒有哪個Layer2可以在安全模型上等價於以太坊的那種ZK Rollup,包括Citrea和BOB等。

目前看來,“比較可行”的思路是BitVM白皮書中所闡述的那樣,復雜的計算過程挪到比特幣鏈下,僅在必要時把某些簡單的計算挪到鏈上進行。比如驗證ZK證明時產生的計算痕跡,可以公開,交由外界去檢查。如果人們發現其中某個比較細微的計算步驟有問題,就可以在比特幣鏈上驗證這道“有爭議的計算”。這裏面需要用比特幣的腳本語言,模擬出EVM等特殊虛擬機的功能,消耗的工程量可能會非常巨大,但並不是不可行。

參考資料:《極簡解讀BitVM:如何在BTC鏈上驗證欺詐證明(執行EVM或其他VM的操作碼)》

在B^2 Network的技術方案中,排序器產生了新的Batch後,會轉發給聚合器以及Prover,後者把Batch的數據驗證過程ZK化,生成ZK證明,最終轉發給B^2 Hub節點。B^Hub節點是EVM兼容的,通過Solidity合約來驗證ZK Proof,這其中涉及的全部計算過程,會被拆分爲非常底層的邏輯門電路形態,這些邏輯門電路又會以比特幣腳本語言的形式表達出來,全部提交至吞吐量足夠大的第三方DA平台中。

如果人們對這些披露出來的ZK驗證痕跡存在疑問,覺得某個小步驟有錯誤,就可以在比特幣鏈上進行“挑戰”,要求比特幣節點直接檢查這個有問題的步驟,並適當做出懲罰。

(B^2 Network的整體結構圖,不包含數據採樣節點)

那麼是誰被懲罰呢?其實是Committer。在B^2 Network的設定中,Committer不但會把前面說的數據hash發布到比特幣鏈上,還要把ZK證明的驗證“承諾”發布到比特幣主網。通過比特幣Taproot的一些設定,你可以隨時在比特幣鏈上,對Committer發布的“ZK證明驗證承諾”進行質疑和挑戰。

這裏解釋下什麼“承諾”(Commitment)。“承諾”的含義在於,某些人聲稱,某些鏈下數據是準確無誤的,並在鏈上發布對應的聲明,這個聲明就是“承諾”,承諾值與特定的鏈下數據相綁定。在B^2的方案中,如果有人認爲Committer發布的ZK驗證承諾有問題,就可以進行挑戰。

可能有人會問,前面不是提到B^2 Hub在收到Batch後,會直接驗證其有效性嗎,這裏爲何又要“多次一舉”的驗證ZK證明?爲什麼不直接把驗證Batch的過程公開披露,讓人們直接挑戰,非要引入ZK證明幹什麼?這其實是爲了把計算痕跡壓縮的足夠小,如果直接把驗證Layer2交易、產生狀態變更的計算流程,全部以邏輯門電路和比特幣腳本的形式公開披露,將會產生極大的數據尺寸。而ZK化之後,可以把數據尺寸極大程度壓縮後,再發布出去。

這裏大致總結下B^2的工作流程:

  1. B^2的排序器Sequencer負責產生新的Layer2區塊,並將多個區塊聚合爲data batch(數據批次)。data batch會被送給聚合器Aggregator,以及B^Hub網路中的Validator節點。

  2. 聚合器會將data Batch,發送給Prover節點,讓後者生成對應的零知識證明。ZK證明隨後會被發送給B^2的DA與驗證者網路(B^2Hub)。

  3. B^2Hub節點會驗證聚合器發來的ZK Proof,能否和Sequencer發過來的Batch相對應。若兩者可以對應,則通過驗證。通過驗證的Batch,其數據hash與存儲索引,會被某個指定的B^Hub節點(稱爲Committer)發送至比特幣鏈上。

  4. B^Hub節點會將其驗證ZK Proof的整個計算過程公開披露,將計算過程的Commitment發送到比特幣鏈上,允許任何人對其進行挑戰。如果挑戰成功,則發布Commitment的B^Hub節點將受到經濟懲罰(它在比特幣鏈上的UTXO將被解鎖並轉移給挑戰者)

B^2 Network的這種狀態驗證方案,一面引入了ZK,一面採用了欺詐證明,實際上屬於混合型的狀態驗證方式。只要鏈下存在至少1個誠實的節點,在檢測出錯誤後願意發起挑戰,就可以保證B^2 Network的狀態轉換是沒有問題的。

按照西方比特幣社區成員的看法,未來比特幣主網可能會進行適當的分叉,以支持更多的計算功能,也許在未來,直接在比特幣鏈上驗證ZK證明會成爲現實,屆時將爲整個比特幣Layer2帶來新的範式級變革。而B^2 Hub作爲一個通用的DA層與驗證層,不但可以作爲B^2 Network的專用模塊,還可以賦能其他比特幣二層,在比特幣Layer2的大爭之世中,鏈下功能拓展層必將越來越重要,而B^Hub和BTCKB的湧現,或許才剛剛揭開這些功能拓展層的冰山一角。

聲明:

  1. 本文轉載自[極客 Web3],原文標題“解析B^2新版技術路線圖:比特幣鏈下DA與驗證層的必要性”,著作權歸屬原作者[Faust,極客web3],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。

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

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

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

新手3/24/2024, 6:46:02 PM
B^2 Network是一個去中心化的DA平台和存儲平台,通過鏈下DA網路解決數據壓縮和驗證問題,避免過度依賴比特幣主網。B^2 Hub充當了類似於Celestia的DA層和鏈下的驗證層,有效防止數據扣留和其他作惡場景。B^2 Network未來還將集成比特幣Layer2,打造通用的比特幣鏈下DA層和數據存儲層。B^2 Hub節點負責驗證交易批次,存儲節點通過爭奪出塊權來獲取激勵。B^2 Network的工作流程包括排序器產生新區塊,聚合器發送給Prover生成ZK證明,B^2Hub節點驗證並將數據hash發送至比特幣鏈。B^2 Hub作爲通用的DA層和驗證層,可以賦能其他比特幣二層。

摘要

B^2 Network在比特幣鏈下設置了名爲B^2 Hub的DA層,該DA層網路借鑑了Celestia的思路,引入數據採樣與糾刪碼,確保新增數據可以快速的分發給大量的外部節點,並極力避免數據扣留的發生。同時,B^2 Hub網路中的Committer會把DA數據的存儲索引以及數據hash上傳到比特幣鏈上,供任何人讀取;

爲了減輕DA層節點的壓力,B^2 Hub中的歷史數據不會永久保存,所以B^2又嘗試搭建起一個存儲網路,通過類似於Arweave的存儲激勵方式,刺激更多節點存儲更完備的歷史數據集,以獲取存儲激勵;

在狀態驗證方面,B^2採用了混合式的驗證方案,在鏈下驗證ZK證明,鏈上通過bitVM的思路,挑戰ZK證明驗證痕跡,只要有1個挑戰者節點在檢測到錯誤後發起挑戰,B^2 網路就是安全的,這符合欺詐證明協議的信任模型,但由於用到了ZK,這種狀態驗證實際上是混合型的。

按照B^2 Network的未來路線圖,EVM兼容的B^2 Hub可以成爲對接多個比特幣Layer2的鏈下驗證層與DA層,成爲一個類似於BTCKB的比特幣鏈下功能拓展層。由於比特幣本身無法支持很多場景,這種鏈下搭建功能拓展層的方式將會成爲Layer2生態裏越來越常態化的現象。

B^2 Hub:比特幣鏈下的通用DA層與驗證層

如今的比特幣生態可謂是一片機會與騙局共存的藍海,這個因銘文之夏而煥發生機的全新領域簡直是一片肥沃的處女地,到處都彌漫着金錢的氣息。隨着今年1月比特幣Layer2如雨後春筍般集體湧現,這片原本如荒蕪原野的土地瞬間就成爲了無數造夢者的搖籃。

但回歸到最本質的問題:什麼是Layer2,人們似乎始終沒有達成共識。側鏈是嗎?索引器是嗎?搭個橋的鏈就叫Layer2嗎?一個依賴於比特幣和以太坊的簡易插件,可不可以當做一個Layer?這些問題就像一組難解的方程式,始終都沒有一個確切的結局。

而按照以太坊和Celestia社區的思路,Layer2只是模塊化區塊鏈的特殊情況,在這種情況下,所謂的“二層”與“一層”之間會存在緊密的耦合關係,二層網路可以很大程度,或一定程度繼承Layer1的安全性。至於安全性這個概念本身,可以拆解爲細分的多個指標,包括:DA、狀態驗證、提款驗證、抗審查性、抗重組等。

由於比特幣網路本身存在諸多問題,其天生不利於支持較完備的Layer2網路。比如在DA上,比特幣的數據吞吐量遠低於以太坊,以其平均10min的出塊時間來計算,比特幣最大的數據吞吐量僅爲6.8KB/s,差不多是以太坊的1/20,如此擁擠的區塊空間自然而然造就了高昂的數據發布成本。

(比特幣區塊裏的數據發布成本,甚至可以達到每KB 5美元)

如果Layer2直接把新增的交易數據發布到比特幣區塊裏,既不能實現高吞吐量,也不能實現低手續費。所以要麼就通過高度壓縮,把數據尺寸壓縮的盡可能小,再上傳到比特幣區塊。目前Citrea採用了這種方案,它們聲稱,將把一段時間內的狀態變化量(state diff),也就是多個帳戶上發生的狀態變更結果,連同對應的ZK證明,一起上傳到比特幣鏈上。

這種情況下,任何人都可以從比特幣主網下載state diff 和ZKP,驗證其是否有效,但上鏈的數據尺寸卻可以輕量化。

(前Polygon Hermez的白皮書中,說明了上述壓縮方案的原理)

這種方案在極大程度壓縮了數據尺寸的同時,最終還是容易遇到瓶頸。比如,假設在10分鍾內發生了幾萬筆交易,使得上萬個帳戶發生了狀態變更,你最終還是要把這些帳戶的變化情況,匯總上傳到比特幣鏈上。雖然比起直接上傳每筆交易數據,要輕量很多,但還是會產生很可觀的數據發布成本。

所以很多比特幣Layer2幹脆就不把DA數據上傳到比特幣主網,直接採用Celestia等第三方DA層。而B^2採用了另一種方式,直接在鏈下搭建一個DA網路(數據分發網路),名爲B^2 Hub。在B^2的協議設計中,交易數據或state diff等重要數據存放於鏈下,只向比特幣主網上傳這些數據的存儲索引,以及數據hash(其實是merkle root,爲了表述方便說成數據hash)。

這些數據hash和存儲索引,以類似銘文的方式寫入到比特幣鏈上,只要你運行一個比特幣節點,就可以把數據hash和存儲索引下載到本地,根據索引值,能從B^2的鏈下DA層或存儲層中,讀取到原始數據。根據數據hash,你可以判斷,自己從鏈下DA層獲取的數據是否正確(能否和比特幣鏈上的數據hash相對應)。通過這種簡單的方式,Layer2可以避免在DA問題上過度依賴比特幣主網,節約手續費成本並實現高吞吐量。

當然,有一點不可忽視,就是這種鏈下的第三方DA平台有可能搞數據扣留,拒絕讓外界獲取到新增的數據,這種場景有一個專用術語,叫“數據扣留攻擊”,可以歸納爲數據分發中的抗審查問題。不同的DA方案有不同的解決辦法,但核心宗旨,都是要把數據盡可能快、盡可能廣泛的傳播出去,防止一小撮特權節點控制着數據獲取權限不放。

按照B^2 Network官方新的路線圖,其DA方案借鑑了Celestia。在後者的設計中,第三方的數據提供者會不斷的向Celestia網路提供數據,Celestia出塊者會把這些數據片段,組織爲Merkle Tree的形態,塞到TIA區塊裏,廣播給網路裏的Validator/全節點。

由於這些數據比較多,區塊比較大,大多數人運行不起全節點,只能運行輕節點。輕節點不同步完整區塊,只同步一個區塊頭,寫有Mekrle Tree的樹根Root。

輕節點僅憑區塊頭,自然不知道Merkle Tree的全貌,不知道新增數據都有什麼,無法驗證數據是否有問題。但輕節點可以向全節點索要樹上的某個葉子leaf。全節點會按照要求,把leaf和對應的Merkle Proof,一並提交給輕節點,讓後者確信,這個leaf的確存在於Celestia區塊裏的Merkle Tree上,而不是被節點憑空杜撰出的虛假數據。

(圖源:W3 Hitchhiker)

Celestia網路裏存在大量的輕節點,這些輕節點可以向不同的全節點發起高頻的數據採樣,隨機性的抽選Merkle Tree上的某幾個數據片段。輕節點獲取到了這些數據片段後,也可以傳播給他能連接到的其他節點,這樣就可以快速的把數據分發給盡可能多的人/設備,以此來實現高效的數據傳播,只要足夠多的節點都能快速獲取最新的數據,人們就不用再信任一小撮數據提供者,這其實就是DA/數據分發的核心目的之一。

當然,僅憑上面描述的方案,還是存在攻擊場景,因爲它只能保證數據分發時,人們都能快速獲取到數據,但無法保證數據的生產源頭不作惡。比如,Celestia出塊者可能在區塊裏摻雜一點垃圾數據,人們即便獲取了區塊中的全部數據片段,也無法還原出“本應包含”的完整數據集(注意:這裏“本應”這個詞很重要)。

進一步說,原始數據集中可能有100筆交易,其中某筆交易的數據沒有被完整傳播給外界。這時,只需要隱藏1%的數據片段,外界就無法解析出完整數據集。這正是最早的數據扣留攻擊問題中,所探討的場景。

其實,根據這裏描述的場景來理解數據可用性,可用性這個詞描述的是區塊裏的交易數據是否完整,是否可用,能否直接交由其他人去驗證,而不是像很多人理解的那樣,可用性代表區塊鏈歷史數據能否被外界讀取到。所以,Celestia官方和L2BEAT創始人曾指出,數據可用性應該改名爲數據發布,意指區塊裏是否發布了完整可用性的交易數據集。

Celestia引入了二維糾刪碼,解決上面描述的數據扣留攻擊。只要區塊裏包含的 1/4 的數據片段(糾刪碼)有效,人們就可以還原出對應的原始數據集。除非出塊者在區塊裏摻雜 3/4 的垃圾數據片段,才能讓外界無法還原出原始數據集,但這種情況下,區塊裏包含的垃圾數據太多了,很容易就會被輕節點們檢測出來。所以對於區塊生產者而言,還是不要作惡來的更好些,因爲作惡幾乎很快就被無數人察覺到。

通過前面描述的方案,可以有效防止“數據分發平台”出現數據扣留,而B^2 Network未來會以Celestia的數據採樣作爲重要參考,可能結合KZG承諾等密碼學技術,進一步降低輕節點執行數據採樣和驗證的成本。只要執行數據採樣的節點足夠多,就能讓DA數據的分發變得有效且去信任。

當然,上述方案只解決了DA平台自身的數據扣留問題,但在Layer2的底層結構中,有能力發動數據扣留的不止DA平台,還有排序器(Sequencer)。在B^2 Network乃至大多數Layer2的工作流程中,新增數據是由排序器Sequencer產生的,它會把用戶端發來的交易匯總處理,附帶這些交易執行後的狀態變更結果,打包成批次(batch),再發送給充當DA層的B^2 Hub節點們。

如果排序器一開始生成的batch就有問題,就還存在數據扣留的可能性,當然還包括其他形式的作惡場景。所以,B^2 的DA網路(B^2 Hub)收到排序器生成的Batch後,會先對驗證Batch的內容,有問題就拒收。可以說,B^2 Hub 不但充當了類似於Celestia的DA層,也充當了鏈下的驗證層,有點類似於CKB在RGB++協議中的角色。

(不完整的B^2 Network底層結構圖)

按照B^2 Network最新的技術路線圖,B^2 Hub在收到並驗證了Batch後,只保留一段時間,過了這個窗口期,Batch數據就會被過期淘汰,從B^2 Hub節點本地刪除掉。爲了解決類似於EIP-4844的數據淘汰及丟失問題,B^2 Network設置了一組存儲節點,這些存儲節點會負責永存Batch數據,這樣一來,任何人在任何時候,都可以在存儲網路中搜索到自己需要的歷史數據。

不過,沒有人會平白無故的運行B^2存儲節點,如果想讓更多人來運行存儲節點,增強網路的去信任程度,就要提供激勵機制;要提供激勵機制,就要先想辦法反作弊。比如,假如你提出了一套激勵機制,任何人在自己的設備本地存儲了數據,就可以獲取獎勵,可能有人在下載了數據後,又偷偷的把一部分數據刪掉,卻聲稱自己存儲的數據是完整的,這就是最常見的作弊方法。

FIL通過名爲PoRep和PoSt的證明協議,讓存儲節點向外界出示存儲證明,證明自己在給定時間段內的確完整的保存了數據。但這種存儲證明方案需要生成ZK證明,且計算復雜度很高,對存儲節點的硬件設備會有較高要求,可能不是一個經濟成本上可行的方法。

在B^2 Network的新版技術路線圖中,存儲節點會採用類似於Arweave的機制,需要爭奪出塊權來獲取代幣激勵。如果存儲節點私自刪除了一些數據,則其成爲下一個出塊者的概率會降低,而保留數據最多的節點,越有可能成功出塊,獲取到更多的獎勵。所以對於大多數存儲節點而言,還是保留完整的歷史數據集比較好。

當然,有激勵的不只是存儲節點,還包括前面提到的B^2 Hub節點,按照路線圖,B^2 Hub會組建成一個Permissionless的POS網路,任何人只要質押了足夠多的Token,就可以成爲B^2 Hub或存儲網路中的一員,通過這種方式,B^2 Network嘗試在鏈下打造去中心化的DA平台及存儲平台,並在未來集成B^2 以外的比特幣Layer2,搭建通用的比特幣鏈下DA層與數據存儲層。

ZK與欺詐證明混用的狀態驗證方案

前面我們闡述了B^2 Network的DA解決方案,接下來我們將重點講述其狀態驗證方案。所謂的狀態驗證方案,就是指Layer2如何保證自己的狀態轉換足夠“去信任”。

(L2BEAT網站針對Scroll,評估出的五大安全指標,State Validation就是指狀態驗證方案)

前面我們曾提到,在B^2 Network乃至大多數Layer2的工作流程中,新增數據是由排序器Sequencer產生的,它會把用戶端發來的交易匯總處理,附帶這些交易執行後的狀態變更結果,打包成批次(batch),發送給Layer2網路中的其他節點,包括普通的Layer2全節點,以及B^2 Hub節點。

B^2 Hub節點在收到Batch數據後,會解析其內容並做出驗證,這裏就包含了前面提到的“狀態驗證”。其實狀態驗證,就是驗證排序器生成的Batch中,記錄的“交易執行後的狀態變化”是否正確。如果B^2 Hub節點收到了包含錯誤狀態的Batch,會將其拒收。

其實,B^2 Hub本質是一條POS公鏈,會有出塊人和驗證人的分野。每隔一段時間,B^2 Hub的出塊人會生成新的區塊,並傳播給其他節點(驗證人),這些區塊裏包含了排序器提交的Batch數據。剩下的工作流程和前面提到的Celestia有些許類似,有很多外部的節點,頻繁的向B^2 Hub節點索要數據片段,在這個過程中,Batch數據會被分發給很多節點設備,也包括前面提到的存儲網路。

B^2 Hub中存在名爲Committer(承諾人)的可輪換角色,它會把Batch的數據hash(其實是Merkle root),以及存儲索引,以銘文的形式提交到比特幣鏈上。只要你讀取到這個數據hash和存儲索引,就有辦法在鏈下的DA層/存儲層獲取到完整的數據。假設鏈下有N個節點存放着Batch數據,只要其中1個節點願意對外提供數據,就能讓任何人獲取到它需要的數據,這裏的信任假設是1/N。

當然,我們不難發現,上述過程中,負責驗證Layer2狀態轉換有效性的B^2 Hub,是獨立於比特幣主網的,只是一個鏈下的驗證層,所以這個時候,Layer2的狀態驗證方案,在可靠性上無法等價於比特幣主網。

一般而言,ZK Rollup可以完整的繼承Layer1的安全性,但目前比特幣鏈上只支持一些極爲簡單的計算,無法直接驗證ZK證明,所以還沒有哪個Layer2可以在安全模型上等價於以太坊的那種ZK Rollup,包括Citrea和BOB等。

目前看來,“比較可行”的思路是BitVM白皮書中所闡述的那樣,復雜的計算過程挪到比特幣鏈下,僅在必要時把某些簡單的計算挪到鏈上進行。比如驗證ZK證明時產生的計算痕跡,可以公開,交由外界去檢查。如果人們發現其中某個比較細微的計算步驟有問題,就可以在比特幣鏈上驗證這道“有爭議的計算”。這裏面需要用比特幣的腳本語言,模擬出EVM等特殊虛擬機的功能,消耗的工程量可能會非常巨大,但並不是不可行。

參考資料:《極簡解讀BitVM:如何在BTC鏈上驗證欺詐證明(執行EVM或其他VM的操作碼)》

在B^2 Network的技術方案中,排序器產生了新的Batch後,會轉發給聚合器以及Prover,後者把Batch的數據驗證過程ZK化,生成ZK證明,最終轉發給B^2 Hub節點。B^Hub節點是EVM兼容的,通過Solidity合約來驗證ZK Proof,這其中涉及的全部計算過程,會被拆分爲非常底層的邏輯門電路形態,這些邏輯門電路又會以比特幣腳本語言的形式表達出來,全部提交至吞吐量足夠大的第三方DA平台中。

如果人們對這些披露出來的ZK驗證痕跡存在疑問,覺得某個小步驟有錯誤,就可以在比特幣鏈上進行“挑戰”,要求比特幣節點直接檢查這個有問題的步驟,並適當做出懲罰。

(B^2 Network的整體結構圖,不包含數據採樣節點)

那麼是誰被懲罰呢?其實是Committer。在B^2 Network的設定中,Committer不但會把前面說的數據hash發布到比特幣鏈上,還要把ZK證明的驗證“承諾”發布到比特幣主網。通過比特幣Taproot的一些設定,你可以隨時在比特幣鏈上,對Committer發布的“ZK證明驗證承諾”進行質疑和挑戰。

這裏解釋下什麼“承諾”(Commitment)。“承諾”的含義在於,某些人聲稱,某些鏈下數據是準確無誤的,並在鏈上發布對應的聲明,這個聲明就是“承諾”,承諾值與特定的鏈下數據相綁定。在B^2的方案中,如果有人認爲Committer發布的ZK驗證承諾有問題,就可以進行挑戰。

可能有人會問,前面不是提到B^2 Hub在收到Batch後,會直接驗證其有效性嗎,這裏爲何又要“多次一舉”的驗證ZK證明?爲什麼不直接把驗證Batch的過程公開披露,讓人們直接挑戰,非要引入ZK證明幹什麼?這其實是爲了把計算痕跡壓縮的足夠小,如果直接把驗證Layer2交易、產生狀態變更的計算流程,全部以邏輯門電路和比特幣腳本的形式公開披露,將會產生極大的數據尺寸。而ZK化之後,可以把數據尺寸極大程度壓縮後,再發布出去。

這裏大致總結下B^2的工作流程:

  1. B^2的排序器Sequencer負責產生新的Layer2區塊,並將多個區塊聚合爲data batch(數據批次)。data batch會被送給聚合器Aggregator,以及B^Hub網路中的Validator節點。

  2. 聚合器會將data Batch,發送給Prover節點,讓後者生成對應的零知識證明。ZK證明隨後會被發送給B^2的DA與驗證者網路(B^2Hub)。

  3. B^2Hub節點會驗證聚合器發來的ZK Proof,能否和Sequencer發過來的Batch相對應。若兩者可以對應,則通過驗證。通過驗證的Batch,其數據hash與存儲索引,會被某個指定的B^Hub節點(稱爲Committer)發送至比特幣鏈上。

  4. B^Hub節點會將其驗證ZK Proof的整個計算過程公開披露,將計算過程的Commitment發送到比特幣鏈上,允許任何人對其進行挑戰。如果挑戰成功,則發布Commitment的B^Hub節點將受到經濟懲罰(它在比特幣鏈上的UTXO將被解鎖並轉移給挑戰者)

B^2 Network的這種狀態驗證方案,一面引入了ZK,一面採用了欺詐證明,實際上屬於混合型的狀態驗證方式。只要鏈下存在至少1個誠實的節點,在檢測出錯誤後願意發起挑戰,就可以保證B^2 Network的狀態轉換是沒有問題的。

按照西方比特幣社區成員的看法,未來比特幣主網可能會進行適當的分叉,以支持更多的計算功能,也許在未來,直接在比特幣鏈上驗證ZK證明會成爲現實,屆時將爲整個比特幣Layer2帶來新的範式級變革。而B^2 Hub作爲一個通用的DA層與驗證層,不但可以作爲B^2 Network的專用模塊,還可以賦能其他比特幣二層,在比特幣Layer2的大爭之世中,鏈下功能拓展層必將越來越重要,而B^Hub和BTCKB的湧現,或許才剛剛揭開這些功能拓展層的冰山一角。

聲明:

  1. 本文轉載自[極客 Web3],原文標題“解析B^2新版技術路線圖:比特幣鏈下DA與驗證層的必要性”,著作權歸屬原作者[Faust,極客web3],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。

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

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

Comece agora
Registe-se e ganhe um cupão de
100 USD
!