來源:Bitlayer研究組

作者:林德爾,mutourend。

郵箱: lyndell2010@gmail.com, zouyudi@gmail.com

1.引言

比特幣是一種去中心化、安全且值得信賴的數字資產。但是,它有很大的限制,無法成為支付和其他應用的可擴展網路。比特幣的擴容問題自誕生以來就一直存在嚴重關注。幣UTXO模型將每筆交易視為一個獨立事件,導致一個無狀態的系統,缺乏執行複雜性、依賴狀態的計算能力。因此,雖然比特幣可以執行簡單的腳本和多標籤交易,但它很難推廣有狀態的區塊鏈平台上常見的複雜和動態的交互。這個問題明顯限制了在比特幣上構建去中心化應用(dApps)和複雜的金融工具的全球化,而狀態模型平台提供了一個更加多樣化的環境,用於部署和執行功能豐富的智能合約。

對於比特幣擴容,主要有狀態通道、側鏈、客戶端驗證等技術。其中,狀態通道提供了安全且多樣化的支付解決方案,但其在驗證複雜計算的能力上有限。這種限制減少其在需要複雜性、條件性邏輯和交互的各種場景中的應用。側鏈雖然支持廣泛的應用,並提供超越比特幣功能的多樣性,但具有較低的安全性。這種安全性上差異源於側鏈的採用獨立的共識機制,這些機制遠不如比特幣共識機制的健壯性。客戶端驗證,使用比特幣 UTXO 模型,可以處理更複雜的交易,但是與比特幣沒有機構耗盡和約束能力,導致其安全性低於比特幣。客戶端驗證協議的鏈下設計依賴於伺服器或雲基礎設施,這可能導致中心化或通過妥協伺服器進行潛在的審查。客戶端驗證的鏈下設計還給區塊鏈基礎設施引入了更加複雜性,可能導致可擴展性問題。

2023年12月,ZeroSync項目負責人Robin Linus發表了一篇名為《BitVM:Compute Anything On Bitcoin》的白皮書,引發了大家對於提升比特幣靈活性的思考。該論文提出了一種在不改變比特幣的情況下幣網路認為的情況下可實現圖靈的比特幣合約解決方案,使得任何複雜的計算都可以在比特幣上進行驗證,從而改變比特幣基本規則。BitVM充分利用比特幣腳本和Taproot,實現樂觀Rollup基於Lamport簽名(又名比特承諾),讓比特幣兩個UTXO建立關聯,實現有狀態的比特幣腳本。在Taproot地址中承諾一個大型程序,操作者和驗證方之間進行大量的鏈下交互,在鏈上產生的足跡很小。如果雙方合作,則可以執行任意複雜的、有狀態的鏈下計算,而不在鏈上留下任何痕迹。如果雙方不合作,則發生爭議時,需要鏈上執行因此,BitVM極大地拓展了比特幣的潛在例子,使比特幣不僅可以作為一種貨幣,還可以作為各種去中心化應用和複雜計算任務的驗證平台。

但是,雖然BitVM技術在比特幣擴容方面佔有優勢,但目前處於早期階段,在效率和安全方面還存在一些問題。如:(1)挑戰與響應需要多次交互,導致手續費昂貴,挑戰周期長;(2)Lamport瞬時簽名數據,需要降低數據長度;(3)哈希函數複雜度較高,需要比特幣友好的哈希函數,降低費用;(4)現有BitVM約定龐大而比特幣區塊容量有限,是可以藉助無腳本腳本來實現無腳本BitVM,節省比特幣區塊空間,同時提升BitVM效率;(5)現有BitVM採用許可模型,僅聯盟成員可發起挑戰,且限定為僅兩者之間,應擴展至無需許可的多方挑戰模式,將信任假設進一步增加。為此,本文提出了一些優化思路,進一步提高BitVM的效率和安全性。

2.BitVM原理

所以BitVM定位為比特幣的合約,致力於推動比特幣合約功能。當前比特幣腳本是完全無狀態的,比特幣腳本執行時,其執行環境在每個腳本之後都會重置。令腳本1和腳本2 擁有相同 x 值的初始化方式是不存在的,比特幣腳本暫時不支持該方式。但仍然可以藉助現有的操作碼,通過 Lamport 補充簽名讓比特幣腳本是有狀態的,如可強制 script1 和 script2 中的x為相同的值。如果參與方簽署了相互衝突的x值,則可對其進行懲罰。BitVM程序計算髮生在鏈上,而計算結果驗證發生在鏈上。當前比特幣區塊有1MB限制,當驗證計算複雜度較高時,可藉助OP技術,採用挑戰響應模式,支持更高複雜度的計算驗證。

與 Optimistic Rollup 和 MATT 提議(Merkelize All The Things)類似,BitVM 系統基於欺騙論證和挑戰響應協議,但不需要修改比特幣的共識規則。BitVM 基礎原語簡單,主要基於區塊鏈、時間鎖和大型Taproot樹。

證明者逐位元組承諾,但在鏈上驗證所有計算將極其昂貴。因此,驗證者執行一系列所提出的設計的挑戰,以簡單地駁斥證明者的意圖。證明者和驗證者共同預簽挑戰和響應交易,用於解決爭議,從而允許在比特幣上進行通用計算驗證。

BitVM關鍵組件有:

  • 承諾電路:證明者和驗證者將程序編譯為大型二進位電路。證明者在一個Taproot地址中承諾電路,該地址下的每個葉子腳本,對應該電路中的每個邏輯門。核心是基於位的承諾到實現邏輯門承諾,從實現電路承諾。

  • 挑戰與響應:證明者和驗證者預簽一系列交易來實現挑戰響應遊戲。理想情況下,這種交互是在鏈下進行的,當證明者不配合時,也可以在上鏈執行。

  • 存款模塊兩可懲罰:如果證明者提出任何不正確的聲明,則驗證者挑戰成功後可拿走證明者,挫敗證明者的作惡行為。

3.BitVM優化

3.1 基於ZK降低OP交易量

當前有2大主流正確Rollups:ZK Rollups和OP Rollups。其中,ZK Rollups依賴於ZK Proof的有效性驗證,即執行的密碼學證明,其安全性依賴於計算複雜度假設;OP Rollups依賴於Fraud Proof ,假設所提交的狀態均是正確的,挑戰設定周期通常為7天,其安全性假設步驟系統內至少有一個公平方能夠探測到不正確的狀態,並提交欺詐證明。假設BitVM挑戰程序最大數為2^{32},需要內存為2^{32}*4位元組,約17GB。在最壞的情況下,需要約40輪挑戰和響應,約半年時間,總腳本約150KB。該情況下激勵嚴重不足,但實際情況幾乎不會發生。

考慮使用零知識證明降低BitVM的挑戰次數,從而提高BitVM的效率。根據零知識證明理論,如果數據數據滿足演算法F,則證明證明滿足驗證演算法進行驗證,即驗證演算法為真輸出;如果數據數據不滿足演算法F,則證明證明也不滿足驗證演算法驗證,即驗證演算法輸出False。在BitVM系統中,如果挑戰者不認可證明方提交的數據,則發起挑戰。

對於演算法F,使用二分法拆開,假設需要2^n次,則能找到錯誤點;如果演算法複雜度太高,則n增加,需要很久才能完成。但是,零知識證明的驗證演算法驗證的複雜度是固定的,公開證明和驗證演算法驗證整個過程,發現輸出為假。零知識證明的優勢在於打開驗證演算法要驗證所需的計算複雜度,相比於二分法打開原始演算法F,低因此,藉助零知識證明,讓BitVM挑戰的不再是原始演算法F,而是驗證演算法驗證,降低挑戰輪數,每小時挑戰周期。

最後,雖然零知識證明有效和解決證明依賴於不同的安全假設,可將二者結合,可構建ZK欺詐證明,實現按需ZK證明。相反完整的ZK Rollup,不再需要為每個人單個狀態變換生成ZK證明,按需模型使得,只有在有挑戰的時候才需要ZK證明,而整個Rollup設計仍然是樂觀的。因此,仍然默認所生成的狀態是有效的,直到挑戰有人該狀態。如果某個狀態無挑戰,則消耗生成任何ZK Proof。但是,如果參與方發起挑戰,則需為挑戰區塊內所有交易的正確性生成ZK Proof。未來,可探索為單個有爭議指令生成ZK Fraud Proof,避免一直生成ZK Proof的計算成本。

3.2 比特幣匯率的瞬時簽名

比特幣網路中,遵循共識規則的交易是有效交易,但除共識規則之外,還額外引入了規範性規則。比特幣節點僅轉發標準廣播交易,但有效但非標準的交易被分配的唯一方法直接是與礦工合作。

根據共識規則,傳統(即非隔離見證)交易的最大大小為1MB,即佔滿整個區塊。但傳統交易的規範度上限為100kB。根據共識規則,隔離見證交易的最大大小為4MB,即權重限制。但Segwit交易的規範度上限為400kB。

Lamport簽名是BitVM的基礎組件,降低簽名和端點長度,有助於降低交易數據,從而降低手續費。Lamport瞬時簽名需使用哈希函數(如單向排列函數f)。Lamport瞬時簽名方案中,消息長度為v比特,端點長度為2v比特,簽名長度也為2v比特。簽名和端點,需要消耗大量的存儲gas。因此,需要尋找類似功能的簽名方案,以降低簽名和峰值長度。相比於Lamport瞬時簽名,Winternitz瞬時簽名的簽名和峰值長度大幅降低,但是增加了簽名和驗簽的計算複雜度。

在Winternitz瞬時簽名方案中,使用特殊函數P將v比特的消息映射為長度為n的傳輸。s中每個元素的取值為{0,…,d}。Lamport瞬時簽名方案是d=1特殊情況下的Winternitz瞬時簽名方案。在Winternitz瞬時簽名方案中,n,d,v之間的關係滿足:n≈v/log2(d+1)。當d=15時,有n≈(v/4)+1。對於包含n個元素的Winternitz簽名而言,比Lamport瞬時簽名方案中的峰值長度和簽名長度短4倍。但是,驗簽的複雜度提高了4倍。在BitVM中使用d=15,v=160,f=ripemd160(x)實現Winternitz一次性簽名,可將比特承諾大小降低50%,從而將BitVM的交易費用降低至少50%。未來,在對現有Winternitz比特幣腳本實現進行優化的同時,可探索以比特幣腳本表達的更簡潔的一次性簽名方案。

3.3 比特幣匯率的哈希函數

根據共識規則,P2TR腳本的最大大小為10kB,P2TR腳本見證人的最大大小與最大Segwit交易大小相同,為4MB。但P2TR腳本見證人的標準上限為400kB。

當前比特幣網路不支持OP_CAT,無法編輯字元串做Merkle路徑驗證。因此,需要用現有的比特幣腳本,以腳本大小和腳本見證大小最優化的方式,實現一種比特幣友好的哈希函數,從而支持merkle包含證明驗證功能。

BLAKE3為BLAKE2哈希函數的優化版本,並引入了Bao樹模式。相比於BLAKE2s,其壓縮函數的輪數由10個7組成。BLAKE3哈希函數將其輸入切分為1024位元組大小的連續chunk,最後一個chunk可能更短但不為空。當只有一個chunk時,則該chunk為根節點,且為該樹的唯一節點。將這些chunk排布為二叉樹的葉子節點,然後對每個塊獨立壓縮。

當將BitVM用於驗證Merkle包含證明場景時,硬碟腐蝕的輸入由2個256位硬碟值拼接而成,即硬碟腐蝕的輸入為64位元組。使用BLAKE3硬碟函數時,這64位元組可分配於單個chunk內,整個BLAKE3哈希偏置僅需要對單個chunk應用一次壓縮函數。BLAKE3的壓縮函數中,需要運行7次輪函數和6次替換函數。

目前BitVM中已經完成了基於u32值的XOR、加法、位右移等模侵犯,可以很容易地組成出比特幣腳本實現的BLAKE3哈希函數。使用stack中4個分開的位元組來表示u32個單詞,來實現BLAKE3所需的u32加法、u32按位異或和u32按位旋轉。目前BLAKE3哈希函數比特幣腳本共約100kB,足以用於構建一個玩具版本的BitVM。

另外,可分割這些BLAKE3代碼,使得Verifier和Prover可以通過將挑戰響應遊戲中的執行一分為二而不是完全執行來顯著降低所需的鏈上數據。最後,使用比特幣腳本實現Keccak- 256、Grøstl等哈希函數,初步選出了最多比特幣匯率的哈希函數,並探索其他新的比特幣匯率哈希函數。

3.4 無腳本腳本 BitVM

Scriptless Scripts是一種通過使用Schnorr簽名,在鏈下執行智能合約的方法。Scripless Scripts概念誕生於Mimblewimble,除了內核及其簽名之外,不存儲永久數據。

無腳本腳本的優點是功能、隱私和效率。

  • 功能:無腳本腳本可增加智能合約的範圍和複雜性。比特幣腳本能力基於網路中已啟用的OP_CODES數量,而無腳本腳本將智能合約的規範和執行從鏈上轉移到僅設計契約參與方的討論,花費等待比特幣網路的分叉來實現新的操作碼。

  • 隱私:將智能合約的規範和執行從鏈上轉移到鏈下,可增加隱私。在鏈上,合約的很多細節都會共享到整個網路,這些詳細信息包括參與者的數量和地址轉賬金額等。通過將智能合約轉移至鏈下,網路只知道參與者同意其合約條款已得到滿足且相關交易有效。

  • 效率:無腳本腳本最大限度地降低鏈上驗證和存儲的數據量。通過將智能合約移至鏈下,全節點的管理費用會減少,用戶的交易費用也會降低。

無腳本腳本是一種在比特幣上設計密碼學協議的方法,可避免執行顯著的智能合約。核心思想是使用密碼演算法實現期望功能,而不是使用腳本實現功能。式簽名和鎖定簽名,是無腳本腳本的原始構建基礎。使用Scriptless腳本,可以實現比常規交易更小的交易,降低交易手續費。

可藉助Scriptless Scripts,使用Schnorr簽名和鎖定簽名,不再像BitVM方案那樣提供哈希值和哈希原像,也可以實現BitVM電路中的邏輯門承諾,從而可節省BitVM腳本空間,提高BitVM效率雖然現有的 Scriptless Scripts 方案能夠降低 BitVM 腳本空間,需要論證者和挑戰者大量交互來組合。未來將對該方案進行改進,同時嘗試將 Scripless Scripts 引入具體的 BitVM 功能模塊內。

3.5 消耗許可的多方挑戰

當前BitVM挑戰默認需要許可的原因在於:比特幣的UTXO只能執行一次,導致惡劣的驗證者可以通過挑戰誠實證明者來「浪費」該契約。當前BitVM限定為雙方挑戰模式。嘗試作惡的證明者,可同時利用自己控制的驗證者發起挑戰,從而「浪費」該契約,使得作惡成功,而其他驗證者無法阻止該行為。因此,在比特幣基礎之上,需要研究許可的多方OP挑戰協議,可將BitVM的現有1-of-n信任模型,擴展至1-of-N。其中,N遠大於n。另外,需要研究解決挑戰者與證明者串謀或惡意挑戰「浪費」契約的問題。最終實現信任更小的BitVM協議。

缺乏許可的多方挑戰,允許任何人在沒有許可名單的情況下參與。這就意味著,用戶可以在沒有任何可信第三方參與的情況下,從L2提幣。此外,任何想要參與OP挑戰協議的用戶期待和質疑刪除無效提款。

將BitVM擴展為消耗許可多方挑戰模型,需要解決以下攻擊:

  • 巫攻擊:即使攻擊者複數參與多個爭議挑戰,單個誠實參與方仍能夠贏得爭議。如果關係參與方維護正確結果的成本,與對者的數量呈線性攻擊時,則當涉及大量攻擊者此時,誠實參與方贏得爭議所需的成本將變得不切實際,且容易遭受巫術攻擊。論文在Permissionless Refereed Tournaments中,提出了一種改變遊戲規則的爭議解決演算法,單個誠實參與方贏得了爭議的爭議成本對手隨著數量的增長呈對數增長,而不是線性增長。

  • 延遲攻擊:某些或一群惡意方,遵循某種策略來阻止或延遲正確結果(如將資產提取到L1)在L1上的確認,並依據誠實的證明者消耗L1手續費。可要求挑戰者需提前質押來解決該問題。如果挑戰者發起延遲攻擊,則沒有收到其質押。但是,如果攻擊者願意在一定時間內犧牲質押來解決延遲攻擊,則應該有應對策略來降低延遲攻擊的影響。論文BoLD: Rollup Challenge 協議中的有限流動性延遲提出了一種演算法,使得無論攻擊者願意損失多少質押,最壞情況下的攻擊也只會導致一定程度的延遲上限。

未來,將探索適用於比特幣特性的、可抵抗以上攻擊問題的BitVM需要許可多方挑戰模型。

4.結論

BitVM技術探索才剛剛開始,未來將探索和實踐更多的優化方向,以實現對比特幣的擴容,繁榮比特幣生態。

參考文獻

  1. BitVM:在比特幣上計算任何東西

  2. BitVM:鏈下比特幣合約

  3. 羅賓·萊納斯 (Robin Linus) 談 BitVM

  4. [bitcoin-dev] BitVM:在比特幣上計算任何東西

  5. 奇怪的一對:可擴展性日期上的 ZK 和 Optimistic Rollups

  6. 比特幣的交易和腳本限制是什麼?

  7. BIP-342:Taproot腳本的驗證

  8. https://twitter.com/robin_linus/status/1765337186​​222686347

  9. 應用密碼學研究生價格

  10. BLAKE3:一種功能,無處不在

  11. [bitcoin-dev] 在比特幣腳本中實現 Blake3

  12. https://github.com/BlockstreamResearch/scriptless-scripts

  13. 無腳本腳本簡介

  14. 使用無腳本腳本的 BitVM

  15. Rollups延遲攻擊的解決方案

  16. 介紹戴夫。 Cartesi 的無許可防錯系統。

  17. Rollups 的延遲攻擊

  18. Rollup 延遲攻擊的解決方案 – Arbitrum Research

  19. 多人互動計算遊戲筆記

  20. BoLD:Rollup 挑戰協議中的有限流動性延遲

  21. 未經許可的裁判錦標賽