解析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的情況下不得復制、傳播或抄襲經翻譯文章。

即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.