B^2網路在比特幣鏈下設置了名為B^2 Hub 的DA 層,傳達了Celestia 的思路,引入數據採樣與糾錯碼,確保新增數據快速分發給大量外部節點,極力避免數據扣留。 B^2 Hub的Committer上傳DA資料的儲存索引和資料hash至比特幣鏈,增強節點壓力。在狀態驗證方面,B^2採用混合驗證方案,鏈下驗證ZK論證,鏈上透過bitVM思路。未來,B^2 Hub可成為介面多個比特幣Layer2的鏈下驗證層,建構通用比特幣鏈下功能拓展層。 B^2 Hub引入二維糾錯碼,解決資料扣留問題。整體工作流程包括排序器、聚合器、Prover、B^2 Hub節點等,狀態驗證採用ZK與詐欺證明混用的方案。未來的發展可能會引起比特幣主網適當分叉。
摘要:· B^2 網路在比特幣鏈下設置了名為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網路的未來路線圖,EVM相容的B^2 Hub可以成為對接多個比特幣Layer2的鏈下驗證層與DA層,成為一個類似BTCKB的比特幣鏈下功能拓展層。比特幣本身無法支援許多場景,這種鏈下搭建功能拓展層的方式將成為Layer2生態越來越常態化的現象。
B^2 Hub:比特幣鏈下的通用DA層與驗證層
如今的比特幣生態呈現出一片與騙局共存的藍海,這個因銘文之夏而煥然一新的全新領域簡直就是一片肥沃的處女地,到處都承載著金錢的氣息。今年1月比特幣Layer2如雨後春筍般地集體守護,這片究竟如荒蕪原野的土地瞬間就成為了無數造夢者的搖籃。
但回歸到最本質的問題:什麼是Layer2,似乎人們始終沒有共識。側鍊是嗎?索引器是嗎?搭橋的鏈條就叫Layer2嗎?一個依賴比特幣和以太坊的簡單插件這些問題就像一組難解的方程式,終究沒有一個結局的結局。
而以太坊與Celestia社群的思路,Layer2分級區塊鏈的特殊情況,在這種情況下,所謂的「二層」與「一層」之間會存在緊密的關聯關係,遵循二層網路存在可以很大程度,或一定程度繼承Layer1的安全性。至於安全性這個概念本身,可以拆解為解讀的多個指標,包括:DA、狀態驗證、提領驗證、抗審查性、抗重組等。
由於比特幣網路本身存在問題,其天然不利於支援較早的Layer2網路。例如在DA上,比特幣的資料吞吐量遠低於以太坊坊,恢復平均10min的出塊時間來計算,比特幣最大的資料吞吐量6.8KB/s,大約是以太坊的1/20,如此擁擠的區塊空間自然而然就造成了高昂的資料發布成本。
(比特幣區塊裡的數據發布成本,甚至可以達到每KB 5美元)
如果Layer2直接把新增的交易資料發佈到比特幣區塊裡,既無法實現高吞吐量,也無法實現低手續費。那麼就透過高度壓縮,把資料尺寸壓縮的需求小,再上傳到目前Citrea採用了這種方案,他們聲稱,將把一段時期的狀態變化量(state diff),因為多個帳戶上發生的狀態變化結果,對應的ZK證明,一起上傳到比特幣鏈。
在這種情況下,任何人都可以從比特幣主網下載狀態diff 和ZKP,驗證是否有效,但上鍊的資料尺寸卻可以輕鬆量化。
(之前Polygon Hermez的PDF中,說明了上述壓縮方案的原理)
方案在達到極大壓縮了資料大小的同時,最終還是很容易遇到瓶頸。或者說,假設這在10 分鐘內發生了幾萬筆交易,使得上萬個帳戶發生了狀態變更,你最終認為這些帳戶的變化情況,匯總上傳到比特幣鏈上。雖然林直接上傳每筆交易數據,要輕量很多,但還是會產生很可觀的數據發布成本。
所以很多比特幣Layer2乾脆不會把DA資料上傳到比特幣主網,直接採用Celestia等第三方DA層。而B^2採用了另一種方式,直接在鏈下搭建一個DA網路(資料分發網路) ),稱為B^2 Hub。在B^2的協議設計中,交易數據或狀態差異等重要數據存放於鏈下,只向比特幣主網上傳這些數據的存儲索引,以及數據哈希(其實是merkle root,為了方便說成數據哈希)。
這些資料哈希和儲存索引,以類似銘文的方式寫入到比特幣鏈上,只要你運行一個比特幣節點,就可以把資料哈希和儲存索引下載到本地,根據索引值,可以從B^ 2的鏈下DA層或儲存層中,讀取到原始資料。根據資料哈希,你可以判斷,自己從鏈下DA層取得的資料是否正確(能否與比特幣鏈上的資料哈希相對應)。透過簡單的方式,Layer2 可以避免在DA 問題上過度依賴比特幣主網,從而節省手續費成本並實現高吞吐量。
當然,有一點不可忽視,就是這種鏈下的第三方DA平台有搞數據扣留,拒絕讓幼兒獲取額外的數據,這種場景有一個專用術語,叫“數據扣留攻擊”,可以歸納對於數據分發中的抗審查問題。不同的DA方案有不同的解決方法,但核心,都是資料問題快、問題廣泛的傳播出去,防止一撮分節點控制資料獲取權限不放。
根據B^2 Network官方新的路線圖,其DA方案採集了Celestia。在今晚的設計中,第三方的數據提供者會不斷的向Celestia網絡提供數據,Celestia出塊者拿走了這些數據片段,組織為Merkle Tree的形態,塞到TIA區塊裡,廣播給網絡裡的Validator/全節點。
由於這些數據比較多,區塊比較大,多數人運作不起全節點,只能運行輕節點。輕節點不同步完整區塊,只同步一個區塊頭,寫有Mekrle Tree的樹根。
輕節點只靠區塊頭,自然不知道Merkle Tree的全貌,不知道新增資料都有什麼,無法驗證資料是否有問題。但輕節點可以向全節點索取樹上的某個葉子葉。全節點會根據要求,把葉子和對應的Merkle Proof,一併提交給輕節點,讓估值相信,這個葉子確實存在於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網路中其實大多數Layer2的工作流程中,新增資料是由排序器Sequencer產生的,它會將用戶端發送的交易匯總處理,附帶這些交易執行後的狀態變更結果,預算成批次(batch),然後發送給等待DA層的B^2 Hub節點們。
如果排序器一開始產生的批次有問題,就還存在資料扣留的可能性,當然也包含其他形式的作惡場景。所以,B^2的DA網路(B^2 Hub)收到排序器產生的批次後,會先對驗證批的內容,有問題就拒收。可以說,B^2 Hub 取代了類似Celestia 的DA 層,也扮演了鏈下的驗證層,有點類似CKB 在RGB++ 協定中的角色。
(不完整的B^2網路底層結構圖)
根據B^2 Network最新的技術路線圖,B^2 Hub在收到並驗證了批次後,只保留一段時間,過了這個視窗期,批次就會資料被淘汰,從B^2 Hub節點本地為了解決EIP-4844的數據淘汰及丟失問題,B^2 Network設置了一個存儲節點,這些存儲節點會負責永存Batch數據,這樣一來,任何人在任何時候,都可以在存儲網絡中搜索到自己需要的歷史數據。
,沒有人會平白無故的運行B^2儲存節點,如果能讓更多人來運行儲存節點,增強網路的信任去程度,就要提供激勵機制;要提供激勵機制,就要先想辦法反之作弊。假設你提出了一套激勵機制,任何人在自己的設備本地存儲了數據,就可以獲得獎勵,可能有人在下載了數據後,又偷偷的把一部分數據刪掉,但卻聲稱自己的存儲的數據是完整的,這就是最常見的作弊方法。
Filecoin透過名為PoRep和PoSt的證明協議,讓儲存節點向下一代出示儲存證明,證明自己在給定時間段內有完整的保存了資料。但這種儲存證明方案需要產生ZK證明,且運算複雜度很高興,對儲存節點的硬體設備有更高的要求,可能不是一個經濟成本上可安裝的方法。
在B^2 Network的新版技術路線中,儲存節點會採用Arweave的機制,需要爭奪出塊權來取得代幣誘因。如果儲存節點私自刪除了一些數據,則其成為下一個出塊者的機率會降低,而保留資料最多的節點,越有可能成功出塊,獲得更多的獎勵。所以對於最多儲存節點而言,還是保留完整的歷史資料集比較好。
當然,啟發性的不僅是儲存節點,還包括前面提到的B^2 Hub節點,依照路線圖,B^2 Hub會組成一個無許可的POS網絡,任何人只要質押了足夠多的Token ,就可以成為B^2 Hub或儲存網路中的一員,透過這種方式,B^2 Network嘗試在鏈下打造去中心化的DA平台及儲存平台,並在未來整合B^2以外的比特幣Layer2 ,建構通用的比特幣鏈下DA層和資料儲存層。
ZK與詐欺證明混用的狀態驗證方案
前面我們闡述了B^2網路的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節點收到了包含錯誤狀態的批次,則將其拒收。
其實,B^2 Hub本質上是一條POS公鏈,會有出塊和驗證人的分野。每隔一段時間,B^2 Hub的出塊人就會產生新的區塊,並傳播給其他節點(驗證人),這些區塊包含了排序器提交的大量資料。剩餘的工作流程和前面提到的Celestia有些許類似,有很多外部的節點,間隔的向B^2 Hub節點索要資料片段,在這個過程中,批量資料會被分發給很多節點設備,也包括前面提到的儲存網路。
B^2 Hub中存在名為Committer(承諾人)的可輪換角色,它包含Batch的資料雜湊(其實是Merkle root),以及儲存索引,以銘文的形式提交到比特幣鏈上。只要你讀取到這個資料hash和儲存索引,存在辦法在鏈下的DA層/儲存層取得到完整的資料。假設鏈下有N個節點安置著大量數據,只要其中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證明,這其中涉及的全部計算過程,會被分割為非常底層的邏輯閘電路形態,這些邏輯閘電路又會以比特幣腳本語言的形式表達出來,全部提交至貨運量夠大的第三方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的工作流程:
B^2的排序器Sequencer負責產生新的Layer2區塊,放入多個區塊聚合為資料批次(資料批次)。資料批次會被傳送聚合器Aggregator,以及B^Hub網路中的Validator節點。聚合器建立資料Batch,發送給Prover節點,讓生日產生對應的零知識論證。 ZK論證會被送到B^2的DA與驗證者網路(B^2Hub)。 B^2Hub節點會驗證聚合器發來的ZK Proof,可行性和Sequencer發過來的Batch相對應。若兩者可以對應,則通過驗證。透過驗證的Batch,其資料hash與儲存索引,會被某個指定的B^Hub節點(稱為Committer)傳送至比特幣鏈上。 B^Hub節點保留其驗證ZK Proof的整個計算過程公開披露,將計算過程的承諾發送到比特幣鏈上,允許任何人對其進行挑戰。如果挑戰成功,則發布Commitment的B^Hub節點將受到經濟懲罰(比特幣鏈上的UTXO將解鎖並轉移給挑戰者)
B^2 Network的這種狀態方案,一面引入了ZK,一面採用了欺騙證明,實際上屬於混合驗證型的狀態驗證方式。只要鏈下存在至少1個投票的節點,在偵測出錯誤後進行願意發起的交易挑戰,就可以保證B^2網路的狀態轉換是沒有問題的。
根據我們比特幣社群成員的看法,未來比特幣主網可能會進行適當的分叉,以支援更多的運算功能,也許在未來,直接在比特幣鏈上驗證ZK證明會成為現實,將會是整個比特幣Layer2帶來新的典範轉移。而B^2 Hub作為通用的DA層與驗證層,不僅可以作為B^2網路的專用模組,還可以賦能其他比特幣二層,在比特幣Layer2的大爭之世中,鏈下功能拓展層必將越來越重要,而B^Hub和BTCKB的支撐,或許才剛揭開這些功能拓展層的冰山一角。
資訊來源:0x資訊編譯自網際網路。版權歸作者極客web3所有,未經許可,不得轉載