Bitcoin(BTC)作為全球首個加密貨幣,自2009年問世以來,逐漸成為數字資產和去中心化金融的基石。然而,隨著用戶數量和交易量的增加,BTC網絡的問題日益顯現,主要表現為以下幾點:
-
高交易費用:當比特幣網絡擁堵時,用戶需要支付更高的費用以確保交易能盡快被確認。
-
交易確認時間:比特幣區塊鏈平均每10分鐘生成一個新區塊,這意味著鏈上交易通常需要等待多個區塊確認才能被視為最終確認。
智能合約的局限性:比特幣的腳本語言功能有限,難以實現復雜的智能合約。
本文中,我們將閃電網絡(Lightning Network)、側鏈(Sidechains)、Rollup等技術統稱為BTC Layer2擴容解決方案,它們在實現快速、低費用交易的同時,保持瞭BTC網絡的去中心化和安全性。Layer2技術的引入可以提升交易速度和降低交易成本,優化用戶體驗和擴展網絡容量,為BTC的未來發展提供瞭重要的技術支持和創新方向。
目前Beosin已成為Merlin Chain等BTC Layer2的官方安全夥伴,審計瞭多個BTC生態協議,如Bitmap.Games、Surf Protocol、Savmswap、Mineral。在過往的審計中,已有多條知名公鏈通過瞭Beosin的公鏈安全審計,包括Ronin Network、Clover、Self Chain、Crust Network等。Beosin現推出針對BTC Layer2的審計方案,為整個BTC生態提供全面可靠的安全審計服務。
閃電網絡
閃電網絡最早的概念叫「支付通道」,其設計思路是通過交易替換的方式不斷更新未確認的交易狀態,直到最終將其廣播到比特幣網絡上為止。中本聰在 2009 年創造比特幣時,就已經提出瞭支付通道的想法,並在 Bitcoin 1.0 中包含瞭支付通道的代碼草稿,這一草稿允許用戶在交易被網絡確認之前更新交易狀態。然而,直到《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payment》白皮書的發佈,閃電網絡才真正誕生並進入大眾視野。
如今,支付通道和閃電網絡的實現方案已經非常成熟。截至目前,閃電網絡共有13,325個節點,49,417條通道,總質押的BTC數量達到4,975。
https://1ml.com/
在閃電網絡中,保證用戶資產在轉移過程中的安全性是十分重要的。下面將根據網絡節點的規模闡述閃電網絡是如何運作以及如何保護用戶資產安全性。
雙方用戶向比特幣主網提交兩筆交易:一筆用於開啟通道,一筆用於關閉通道。大致分為以下三步:
1. 通道開啟:
首先,參與雙方用戶將比特幣質押到閃電網絡在BTC上的多重簽名錢包中。一旦比特幣被成功質押並鎖定,支付通道即開啟,雙方可以在此通道中進行鏈下交易。
2. 鏈下交易:
一旦通道開啟,用戶之間的所有轉賬交易都將在閃電網絡中進行處理,並且這些鏈下交易不受次數限制。當然,這些交易不需要立即提交到比特幣主網,而是通過閃電網絡的鏈下機制即時完成。
這種鏈下處理方式顯著提高瞭交易速度和效率,避免瞭比特幣主網的擁堵和高額交易費用。
3. 通道關閉與賬本結算:
當任意一方的用戶決定退出通道時,將進行最終的賬本結算。這一過程確保通道中的所有資金按最新狀態進行分配。同時,雙方用戶將從多重簽名錢包中提取結算後的餘額,該餘額反映瞭通道關閉時的實際資金分配。最終,通道會將最終狀態的賬本交易提交到比特幣主網。
閃電網絡的優勢在於:
-
交易速度提升。閃電網絡允許用戶在鏈下進行交易,這意味著交易可以在幾乎瞬間完成,不需要等待區塊確認時間。這樣可以實現秒級別的交易速度,極大提升瞭用戶體驗。
隱私性增強。閃電網絡的鏈下交易不需要在比特幣主鏈上公開記錄,這提高瞭交易的隱私性。隻有通道的開啟和關閉需要在主鏈上記錄,因此用戶的交易行為不會完全公開。
微支付支持。閃電網絡非常適合處理小額支付(微支付),如內容付費、物聯網設備支付等。傳統的比特幣交易因手續費較高,不適合頻繁的小額支付,而閃電網絡則解決瞭這個問題。
閃電網絡面臨的挑戰:
-
網絡流動性問題:閃電網絡依賴於預先在通道中鎖定的比特幣。這意味著用戶必須提前在他們的支付通道中存入足夠的比特幣,以便進行交易。流動性不足可能導致支付失敗,特別是在較大的支付時。
路由問題:找到從支付發送方到接收方的有效路徑可能是一個復雜的問題,尤其是在網絡規模較大的情況下。隨著網絡節點和通道的增加,確保支付順利完成的難度也增加。
資金托管信任問題:節點可能會遇到惡意攻擊,用戶需要信任他們所連接的節點不會試圖竊取資金。節點是否可以防止私鑰泄露
技術標準和互操作性:不同的閃電網絡實現之間需要有一致的技術標準和協議,以確保互操作性。目前,多個開發團隊在開發閃電網絡的不同實現,這可能導致兼容性問題。
隱私問題:雖然閃電網絡提高瞭比特幣交易的隱私性,但交易信息仍可能被追蹤或分析。此外,網絡節點運營者可以看到通過其節點的交易,從而可能泄露某些隱私信息。
閃電網絡的安全性直接影響比特幣的鏈下擴展能力和用戶資金的安全。因此除瞭公鏈的通用審計項(具體見本文末尾附錄)以外,閃電網絡還需要關註以下重要安全風險點:
-
通道擁堵:檢查閃電網絡系統的設計的全面性,是否會因為悲傷攻擊導致通道擁堵。
通道幹擾:檢查閃電網絡通道結構的安全性,是否會遭受通道幹擾攻擊。
通道資產鎖定與解鎖:審查閃電網絡中資產鎖定和解鎖的過程,確保在開通或關閉支付通道時,資金在鏈上和鏈下的轉移是安全和可靠的。
狀態更新與關閉:評估通道的狀態更新流程和強制關閉(force-close)機制,確保在出現異常情況時,能夠正確識別並執行最新狀態。
時間鎖與哈希鎖合約(HTLC):評估HTLC的實施,確保時間鎖和哈希鎖條件能夠正確執行,防止因時間窗口問題導致的資金損失。
區塊鏈時間戳依賴:評估閃電網絡對比特幣區塊鏈時間戳的依賴性,確保鏈上和鏈下時間能夠正確協調,防止時間攻擊。
路由算法安全:檢查路由算法的效率和安全性,防止用戶隱私暴露和惡意路由操控風險。
通道存儲與數據恢復:檢查通道的存儲機制和數據恢復策略,確保在節點故障或意外斷線時能夠恢復通道狀態,避免資金丟失。
側鏈
與閃電網絡不同,側鏈(Sidechain)是一種獨立的區塊鏈,與主鏈(如BTC區塊鏈)平行運行,並通過雙向錨定(Two-Way Peg)與主鏈進行互操作。側鏈的目的是在不改變主鏈協議的前提下,實現更多功能和提高擴展性。
側鏈作為獨立的區塊鏈,擁有自己的共識機制、節點和交易處理規則。它可以根據特定應用場景的需求,采用不同於主鏈的技術和協議。通過雙向錨定機制(2WP),側鏈與主鏈實現通信,確保資產在兩者之間自由、安全地轉移。雙向錨定機制(2WP)運行機制大致如下:
1. 用戶在主鏈上鎖定BTC,受信任的機構1獲取並使用SPV驗證2確保用戶鎖定交易的是否確認。
2. 受信任機構會在側鏈上發行等值的代幣給用戶。
3. 用戶在自由交易過後,在側鏈上鎖定剩餘的代幣。
4. 受信任的機構在驗證交易合法性過後,於主鏈解鎖並釋放相應價值的BTC給用戶。
註1: 受信任的機構在雙向錨定機制中扮演關鍵角色,負責管理資產的鎖定和釋放。這些機構需要具有高度的信譽和技術能力,以確保用戶資產的安全。
註2: SPV驗證允許節點在不下載完整區塊鏈的情況下,驗證特定交易的有效性。SPV節點隻需下載區塊頭,並通過Merkle Tree驗證交易是否包含在區塊中。
側鏈的代表性項目:
CKB(Nervos Network)
Nervos Network是一個開源的公共區塊鏈生態系統,旨在利用BTC的POW共識機制的安全性和去中心化優勢,同時引入更具可擴展性和靈活性的UTXO模型來處理交易。其核心為Common Knowledge Base(CKB),是基於RISC-V構建,使用PoW(工作量證明)作為共識的Layer 1區塊鏈。其將UTXO模型拓展為Cell模型,使其可存儲任何數據,支持任何語言編寫腳本從而作為智能合約在鏈上執行。
Stacks
Stacks通過其PoX(Proof of Transfer)機制,將每個Stacks區塊與比特幣區塊連接。為瞭開發智能合約,Stacks設計瞭專門的Clarity編程語言。在Clarity中,get-burn-block-info? 函數允許傳入比特幣區塊高度並獲取該區塊的頭部哈希。同時,burn-block-height 關鍵字能夠獲取比特幣鏈的當前區塊高度。這兩個功能使得Clarity智能合約能夠讀取比特幣基礎鏈的狀態,從而使比特幣交易可以作為合約觸發器。通過自動執行這些智能合約,Stacks擴展瞭比特幣的功能。
有關Stacks的詳細分析,可閱讀Beosin之前的研究文章:《什麼是Stacks?BTC二層網絡Stacks可能面臨哪些挑戰?》
側鏈的優勢在於:
-
側鏈可以采用不同的技術和協議,進行各種實驗和創新,而不會影響主鏈的穩定性和安全性。
側鏈可以引入主鏈不具備的功能,例如智能合約、隱私保護、代幣發行等,豐富區塊鏈生態系統的應用場景。
側鏈面臨的挑戰:
-
側鏈具有獨立的共識機制,可能不如BTC主鏈那樣安全。如果側鏈的共識機制較弱或存在漏洞,可能會導致51%攻擊或其他形式的攻擊,影響用戶資產的安全。BTC主鏈的安全性依賴於其龐大的算力和廣泛的節點分佈,而側鏈可能無法達到同樣的安全標準。
雙向錨定機制的實現需要復雜的加密算法和協議,如果其中存在漏洞,可能導致主鏈和側鏈之間的資產轉移出現問題,甚至可能導致資產丟失或被盜。
為瞭在速度和安全之間找到平衡,大多數側鏈的中心化程度比主鏈更高。
Layer2是一個完整的區塊鏈系統,因此公鏈的通用審計項也適用於側鏈,具體見本文末尾附錄。
此外,由於其特殊性,側鏈還需要進行一些額外的審計:
-
共識協議安全性:審查側鏈的共識協議(如PoW、PoS、DPoS)是否經過充分驗證和測試,是否存在潛在的漏洞或攻擊向量,如51%攻擊、長程攻擊等。
共識節點安全性:評估共識節點的安全性,包括密鑰管理、節點防護和冗餘備份,防止節點被攻破或濫用。
資產鎖定與釋放:審查側鏈與主鏈之間的資產雙向錨定機制,確保鎖定和釋放資產的智能合約是安全可靠的,防止出現雙花、資產丟失或鎖定失敗的情況。
跨鏈驗證:檢查跨鏈驗證的準確性和安全性,確保驗證過程是去中心化和防篡改的,防止驗證失敗或惡意驗證。
合約代碼審計:深入審計側鏈上運行的所有智能合約,檢測可能存在的漏洞或後門,尤其是在處理跨鏈操作時的合約邏輯。
升級機制:檢查智能合約的升級機制是否安全,是否有適當的審計和社區共識流程,防止惡意升級或合約篡改。
節點間通信:檢查側鏈節點之間的通信協議是否安全,是否使用加密通道防止中間人攻擊或數據泄露。
跨鏈通信:檢查側鏈與主鏈之間的通信通道,確保數據的完整性和真實性,防止通信被劫持或篡改。
時間戳與區塊時間:驗證側鏈的時間同步機制,確保區塊生成時間的一致性和準確性,防止時間差導致的攻擊或區塊回滾。
鏈上治理安全性:審查側鏈的治理機制,確保投票、提案和決策過程的透明性和安全性,防止惡意控制或攻擊。
代幣經濟審計:檢查側鏈的代幣經濟模型,包括代幣分配、激勵機制和通脹模型,確保經濟激勵不會導致惡意行為或系統不穩定。
費用機制:檢查側鏈的交易費用機制,確保其與主鏈和側鏈用戶的需求匹配,防止費用操控或網絡擁堵。
資產安全性:審計鏈上資產的管理機制,確保資產的存儲、轉移和銷毀過程安全可靠,不存在未授權訪問或盜竊的風險。
密鑰管理:檢查側鏈的密鑰管理策略,確保私鑰的安全性和訪問控制,防止密鑰泄露或被盜用。
Rollup
Rollup是一種Layer2擴展解決方案,旨在提高區塊鏈的交易吞吐量和效率。它通過將大量交易打包("Rollup")並在鏈下處理,隻將最終結果提交到主鏈,從而大幅減少主鏈的負擔。
Rollup主要分為zk-Rollup和op-Rollup。但是與ETH不同的是,由於BTC的圖靈不完備性,無法在BTC上使用合約進行零知識證明驗證。傳統的zk-Rollup解決方案無法在BTC上進行實現。那麼如何使用zk-Rollup實現BTC Layer2?接下來以B² Network項目為例:
為瞭在BTC上完成零知識證明驗證,B² Network創建瞭Taproot腳本,其同時結合瞭zk-Rollup的零知識證明驗證以及op-Rollup的激勵挑戰。其運行機制大致如下:
1. B² Network首先將所有用戶發起的交易進行Rollup。
2. 使用排序器對Rollup交易排序後,將Rollup交易使用去中心化存儲進行保存並同時交由zkEVM進行處理。
3. zkEVM同步BTC鏈狀態後,處理合約執行等交易,將結果合並打包發送到聚合器。
4. Prover生成零知識證明並發送到聚合器,經聚合器聚合交易以及證明發送到B² Nodes。
5. B² Nodes進行零知識證明的驗證並根據去中心化存儲裡的Rollup數據創建Taproot腳本。
6. Taproot是一個value為1 satoshi 的UTXO,其數據結構中的B² Inscription存儲瞭所有的Rollup數據,Tapleaf中存儲瞭所有的證明的verify數據。通過激勵挑戰機制後,其將作為基於zk證明驗證的承諾被發送到BTC。
Rollup的優勢在於:
-
Rollup繼承瞭主鏈的安全性和去中心化特性。通過定期將交易數據和狀態提交到主鏈,確保瞭數據的完整性和透明性。
Rollup能夠無縫集成到現有區塊鏈網絡中,如以太坊,使開發者可以輕松利用其優勢,而無需大幅修改現有的智能合約和應用。
Rollup通過將大量交易在鏈下處理並打包成一個批次提交到主鏈,大幅提升瞭交易處理能力,使得每秒交易數量(TPS)顯著增加。
Rollup交易隻需在鏈下處理,大幅減少瞭鏈上交易所需的計算資源和存儲空間,從而顯著降低瞭用戶的交易費用。
Rollup面臨的挑戰:
-
如果鏈下數據不可用,用戶可能無法驗證交易和恢復狀態。
Rollup交易需要批量處理並最終提交到主鏈,可能會導致結算時間較長。尤其在op-Rollup中,存在爭議期,用戶可能需要等待較長時間才能最終確認交易。
ZK Rollup雖然提供更高的安全性和即時確認,但其計算和存儲需求較高,生成零知識證明需要大量的計算資源。
由於采用的方案為Rollup,其重點安全審計項與ETH Layer2基本一致。
其他(Babylon)
除瞭傳統的BTC Layer2以外,近來還有一些全新概念的與BTC生態相關的第三方協議,例如Babylon:
Babylon的目標是將2100萬BTC轉化為去中心化的質押資產。不像BTC的其它Layer2,Babylon沒有對BTC鏈擴容。其本身是一條獨特的鏈,具有特殊的BTC抵押協議,主要目的是為瞭和PoS鏈對接,抵押BTC為PoS鏈提供更強的安全性,解決諸如來自鏈中遠端的攻擊風險和中心化的問題。
架構分為三層:
比特幣層:這是Babylon的堅實基礎,利用比特幣眾所周知的安全性來確保所有交易都超級安全,就像在比特幣網絡上一樣。
巴比倫層:Babylon的核心是Babylon層,這是一個將比特幣與各種權益證明(PoS)鏈連接起來的定制區塊鏈。它處理交易,運行智能合約,並確保整個生態系統中的一切都順利進行。
PoS 鏈層:頂層由多個 PoS 鏈組成,每個 PoS 鏈都因其獨特的優勢而被選中。這賦予瞭BabylonChain驚人的可擴展性和靈活性,讓用戶可以享受不同PoS區塊鏈的最佳功能。
運作方式是使用在BTC鏈上簽署最終的區塊來保護PoS鏈。這實質上是通過額外的簽名輪次擴展瞭基礎協議。最後+1輪中的這些簽名具有一個獨特的特征:它們是可提取的一次性簽名(EOTS)。目的是把PoS檢查點集成到BTC上,解決PoS的長時間解綁期和遠程攻擊問題。
Babylon的優勢在於:
-
使PoS的解綁期變快
由於質押瞭BTC,價格與BTC掛鉤,能夠減輕對應PoS網絡的通脹壓力
為BTC收益開啟瞭新的途徑
Babylon面臨的挑戰:
-
質押回報率等經濟設計對BTC質押積極性影響較大
-
缺乏PoS鏈之間的獎勵一致性規定
第三方協議根據其實現的不同,所關註的安全點也不一致,僅以Babylon為例,需要註意的部分安全審計項如下:
1. 智能合約安全:BTC上的質押合約通過UTXO腳本實現,需要關註其安全性。
2. 簽名算法安全:合約中使用簽名管理用戶的質押,其算法安全性關系到簽名的生成與校驗。
3. 協議經濟模型設計:協議的經濟模型在獎勵和懲罰等方面是否設置合理,是否會導致用戶資產損失。
附錄:
公鏈 & Layer2 通用審計項
-
整數溢出:檢查整數上溢和整數下溢
死循環:檢查程序的循環判斷條件是否合理
無限遞歸調用:檢查程序遞歸調用的退出條件是否合理
競爭條件:檢查在並發狀態下,對共享資源的訪問操作
異常崩潰:檢查能讓程序主動退出的異常拋出代碼
除0漏洞:檢查是否有除以0的情況
類型轉換:檢查類型轉換是否正確,轉換過程中是否丟失重要信息
數組越界:檢查是否訪問超出數組界限的元素
反序列化漏洞:檢查反序列化過程中有沒有問題
功能實現安全:檢查各RPC接口實現是否存在安全隱患,是否與RPC接口功
能設計相符
敏感RPC接口權限設置是否合理:檢查敏感RPC接口的訪問權限設置
加密傳輸機制:檢查是否用加密傳輸協議,比如TLS等
請求數據格式解析:檢查對請求數據的格式解析過程
錢包解鎖攻擊:節點解鎖其錢包的時候,被RPC請求竊取資金
傳統Web安全:檢查是否存在以下漏洞:跨站點腳本 (XSS) / 模板註入 /
第三方組件漏洞 / HTTP 參數污染 / SQL 註入 / XXE 實體註入 / 反序列
化漏洞 / SSRF 漏洞 / 代碼註入 / 本地文件包含 / 遠程文件包含 / 命令執行註入等傳統漏洞
網絡節點身份認證和識別機制:檢查是否存在節點身份識別機制,節點身份識別機制能否被繞
路由表污染:檢查路由表是否能夠被隨意插入或覆蓋數據
節點發現算法:檢查節點發現算法是否均衡且不可預測,比如距離算法不平衡等問題
連接數占用審計:檢查p2p網絡連接節點數的限制和管理是否合理
日蝕攻擊:評估日食攻擊的成本與危害,必要時提供量化分析
女巫攻擊:評估投票共識機制,分析投票資格檢查策略
竊 聽攻擊:檢查通信協議是否泄露隱私
異形攻擊:評估節點是否能識別同類鏈節點
時間劫持:檢查節點的網絡時間計算機制
內存耗盡攻擊:檢查大內存消耗的地方
硬盤耗盡攻擊:檢查大文件存儲的地方
socket壓力攻擊:檢查鏈接數量的限制策略
內核句柄耗盡攻擊:檢查內核句柄創建的限制,比如文件句柄等
持續性的內存泄露:檢查內存泄露的地方
哈希算法安全性:檢查哈希算法的抗碰撞性
數字簽名算法安全性:檢查簽名算法安全性,算法實現的安全性
加密算法安全性:檢查加密算法安全性,算法實現的安全性
隨機數生成器安全性:檢查關鍵隨機數生成算法是否合理
BFT實現安全:評估BFT算法的實現安全性
分叉選擇規則:檢查分叉選擇規則以確保安全性
中心化程度檢測:鑒別系統設計中是否存在過度中心化設計
激勵機制審計:評估激勵機制對安全性的影響
雙花攻擊:檢查共識是否可以防禦雙花攻擊
MEV攻擊審計:檢查區塊打包節點的MEV對鏈公平的影響
區塊同步過程審計:檢查同步過程中的安全問題
區塊格式解析過程審計:檢查格式解析過程中的安全問題,比如解析錯誤導致奔潰
區塊生成過程審計:檢查區塊生成過程中的安全問題,包括Merkle tree root構建方式是否合理
區塊校驗過程審計:檢查區塊簽名內容項及驗證邏輯是否充分
區塊確認邏輯審計:檢查區塊確認算法及實現是否合理
區塊哈希碰撞:檢查區塊哈希碰撞的構造方式,及碰撞時的處理是否合理
區塊處理資源限制:檢查孤兒區塊池、驗證計算、硬盤尋址等資源限制是否合理
交易同步過程審計:檢查同步過程中的安全問題
交易哈希碰撞:檢查交易哈希碰撞的構造方式,及碰撞時的處理
交易格式解析:檢查格式解析過程中的安全問題,比如解析錯誤導致奔潰
交易合法性校驗:檢查各類型交易簽名內容項及驗證邏輯是否充分
交易處理資源限制:檢查交易池、驗證計算、硬盤尋址等資源限制是否合理
交易延展性攻擊:交易是否可以改變內部字段(比如ScriptSig)從而改變交易hash而不影響交易的有效性。
交易重放攻擊審計:檢查系統對交易重放的檢測
合約字節碼校驗:檢查虛擬機校驗合約的過程的安全問題,比如整數溢出、死循環等
合約字節碼執行:檢查虛擬機執行字節碼的過程的安全問題,比如整數溢出、死循環等
gas模型:檢查交易處理/合約執行的各原子操作對應的手續費是否與資源消耗成正比
日志記錄的完整性:檢查關鍵信息是否被 日志記錄
日志記錄的安全性:檢查處理日志的過程中,是否因處理不當造成安全問題,比如整數溢出等
日志包含隱私信息:檢查日志是否包含密鑰等隱私信息
日志存儲:檢查日志是否記錄過多內容,導致節點資源消耗
節點代碼供應鏈安全:檢查所有第三方庫、組件及公鏈框架對應版本的已知問題
以上就是破解比特幣瓶頸:BTC Layer2擴容技術的全面審計指南的詳細內容,更多關於Rollup繼承瞭主鏈的安全性和去中心化特性的資料請關註腳本之傢其它相關文章!
原创文章,作者:fanbi,如若转载,请注明出处:https://fanbi.net/btc/3560