BitVM:比特幣主網上智能合約的潛力
- BTC0%
10月9日,來自ZeroSync的開發者Robin Linus發布了BitVM白皮書,引起了社區的巨大關注。BitVM引入了一種新的計算範式,能夠表達圖靈完備的比特幣合約,而無需修改網絡的共識規則。
去中心化智能合約:限制與目標
比特幣的Script,一種基於堆棧的語言,為定義交易的驗證邏輯提供了基本的控制結構,如條件檢查。它通過簡單的條件驗證過程要求有效的數字簽名來花費比特幣。然而,Script被設計為非圖靈完備的。儘管它不支持複雜的流程控制特性如循環,但這種設計確保了語言的簡單性和安全性。這些限制使得Script難以執行複雜的計算,包括涉及智能合約的計算。
雖然為比特幣設計的一些第二層解決方案可以通過鎖定資產來實現基本的智能合約功能,但它們本質上依賴於多重簽名地址和跨鏈資產映射,這需要一定程度的中心化信任。這違背了比特幣對去中心化的承諾。在BitVM引入之前,比特幣社區一直在探索既去中心化、最小化信任,又能進行圖靈完備計算的方法。
BitVM:在比特幣上計算任何事物
作為其創新的核心,BitVM利用比特幣現有的Script系統來實現邏輯門(這包括AND門、OR門、NOT門和XOR門,實現如AND、OR、NOT和XOR等操作)以構建任意複雜的布爾電路。這些電路用於對二進制輸入執行邏輯運算並給出二進制輸出;布爾計算可以使用邏輯門來實現AND、OR、NOT和XOR等操作。具體而言,BitVM採用哈希時間鎖定合約(HTLC)和Taproot(2021年11月激活的用於優化Script的軟分叉)來表示基本邏輯門,如AND和OR門。然後,BitVM將這些基本邏輯門組合起來構建任意複雜度的電路,本質上在比特幣區塊鏈上模擬了一台可編程計算機。
最後,在交易雙方發生爭議時,可以採用一種優雅的挑戰-回應協議進行驗證,類似於比特幣上的欺詐證明。證明者聲稱某個特定函數對某些特定輸入的評估結果為某個特定輸出。如果該聲明是虛假的,那麼驗證者可以執行欺詐證明並懲罰證明者。使用這種機制,任何可計算的函數都可以在比特幣上進行驗證。
BitVM的設計
比特值承諾
比特值承諾是一個比特幣腳本,它使用if-else語句來實現承諾方案。這種密碼學原語確保發送者在發送消息之前可以確認消息的內容,且一旦公開披露,內容就無法更改。這種承諾方案包含兩個哈希值,hash0和hash1。通過將輸入的哈希值與這兩個哈希值進行比較來決定返回值是0還是1。
圖1:1比特承諾的具體實現
:quality(80)/2023-11-01/1321A251238D665AA862939993DE617A.png)
來源:https://bitvm.org/bitvm.pdf
邏輯門承諾
在計算理論中,任何可計算函數都可以表示為布爾電路。特別是,NAND門是一種通用邏輯門,可用於構建所有其他複雜的邏輯門。BitVM結合了代表兩個輸入的兩個比特值承諾和代表輸出的第三個比特值承諾來實現NAND門。
BitVM巧妙地通過比特幣腳本表達NAND門。這使其能夠構建任意複雜的布爾邏輯電路,有效地通過腳本模擬一台可編程計算機。
圖2:使用比特值承諾實現NAND門
:quality(80)/2023-11-01/23A48B54E874C749C41F131C7D4730C6.png)
來源: https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754
圖3:NAND運算的邏輯門承諾
:quality(80)/2023-11-01/E98F6725AA61147C861A13360ADD94C1.png)
來源: https://bitvm.org/bitvm.pdf
該腳本計算兩個輸入的NAND值,以確保其與已承諾的輸出位元相匹配。
二進制電路承諾
BitVM 可以通過組合門承諾來表達任何電路。執行的每個步驟都在一個 Tapleaf 中進行承諾。它們都被組合到同一個 Taproot 地址中,使得證明者可以執行電路中的任何門。執行一個門需要證明者打開相應的門承諾,並為其輸入和輸出位設置值。例如,在圖 4 中,A、B、C 和 D 是預定義的位值承諾,每個代表一個位。然後使用八個 NAND 門進行邏輯運算。例如,如果 A NAND B 得到 E,而 E 用作下一個 NAND 門的輸入,整個電路的最終輸出將為 TRUE。這種布爾電路的設計將位值承諾的 NAND 門連接起來,實現了複雜的邏輯運算,為比特幣區塊鏈上的可驗證計算提供了一種緊湊的表示方法。
圖 4:具有八個不同 NAND 門的電路
:quality(80)/2023-11-01/2A444519852359C0EA95AC2D2F5C054A.png)
來源: https://bitvm.org/bitvm.pdf
挑戰和回應
在 BitVM 中,僅僅承諾一個電路是不夠的,需要一個挑戰-回應機制來證明計算的正確性。為了實現這一點,證明者和驗證者應在設置階段預先簽署一系列交易。這些交易按照"挑戰 - 回應 - 挑戰 - 回應"的順序連接,形成多輪挑戰和回應的互動。如果其中一方停止參與,那麼在超時後,另一方就會贏得挑戰並可以取走雙方的保證金。這種機制只有在出現欺詐的情況下才需要。只要雙方合作,他們就可以用 2-of-2 簽名共同結算任何合約。
讓我們看看這個機制在一個假設案例中如何運作。保羅(證明者)和維姬(驗證者)預先簽署了一系列交易。維姬隨後可以通過從她的 Tapscript 葉子中選擇一個挑戰(hash7)來發起挑戰(TX 2)。這為保羅解鎖了一個特定的 Tapscript,並迫使他執行它,同時輸入和輸出是開放的。任何不一致的聲明都可以通過幾輪查詢重複這個程序來快速證明是錯誤的。如果證明者停止合作,驗證者可以解鎖他持有的哈希原像,以強制證明者在鏈上回應。每一輪查詢可能驗證或反駁一個特定的邏輯門。通過二分查找(一種用於在排序數組中定位特定元素的算法),驗證者可以在僅僅幾輪挑戰和回應後快速識別出證明者的錯誤。一旦證明者的兩個承諾發生衝突,驗證者立即贏得挑戰並獲得押金。
圖 5:執行多輪挑戰和回應的預先簽署的交易序列
:quality(80)/2023-11-01/8D9777E151B617754A912BDA1F5097CF.png)
來源: https://bitvm.org/bitvm.pdf
這種精心設計允許 BitVM 對任何複雜計算執行鏈上驗證,這確保了協作的效率,並在欺詐事件中施加懲罰。它展示了在比特幣網絡中驗證圖靈完備的交互式計算的可能性。
BitVM 設計的關鍵方面
鏈下計算與鏈上驗證
BitVM 將複雜計算的負擔轉移到區塊鏈之外,僅保留比特幣區塊鏈用於驗證結果的目的。這種方法避免了直接在區塊鏈上運行複雜合約,從而緩解了區塊鏈膨脹的問題。
以哈希鎖和比特幣腳本表達的邏輯門
BitVM 利用比特幣支持的哈希鎖和腳本操作碼來表示基本邏輯門,如 AND 和 NOT 門。通過連接這些邏輯門,它可以構建任意複雜度的電路,從而實現圖靈完備的計算。
證明者和驗證者之間的博弈論機制
BitVM 的驗證機制類似於樂觀卷軸(Optimistic Rollup),涉及計算參與方之間的交互式挑戰和回應。最終,正確的計算結果會在鏈上得到確認。如果證明者作弊,驗證者可以在比特幣區塊鏈上執行懲罰。因此,BitVM 和樂觀卷軸採用類似的交互機制進行鏈上驗證,唯一的區別是 BitVM 直接使用比特幣腳本來實現交互式挑戰-回應過程。
對鏈上影響最小化
BitVM 的計算過程對比特幣區塊鏈的影響最小,只有在出現爭議時才會在鏈上留下少量交易。這保護了比特幣的效率和可擴展性。
無需軟分叉
由於 BitVM 只利用現有的比特幣腳本功能,因此不需要通過軟分叉對比特幣協議進行任何修改。這使得 BitVM 更容易整合到比特幣主網中。
結論
BitVM 最大的創新在於其能夠在不修改比特幣核心協議的情況下實現圖靈完備的驗證;它通過創造性地使用腳本,特別是經 Taproot 優化的腳本來實現這一目標。這種巧妙的設計使其能夠無縫集成到比特幣主網中,而不會引入新的兼容性問題或使比特幣變得更不去中心化。
BitVM 的創新解決方案有潛力為比特幣生態系統引入智能合約和去中心化應用程序。例如,它可用於構建最小信任的跨鏈橋,以連接不同的區塊鏈資產,從而增強比特幣的互操作性。此外,BitVM 還可以幫助構建更高效的 zkRollup 擴展層,使比特幣更具可擴展性。簡而言之,BitVM 展示了僅通過創新利用現有功能就能將比特幣生態系統推向新時代的巨大可能性。
參考文獻:
https://github.com/supertestnet/tapleaf-circuits
https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754