CoinEx中文官方
CoinEx中文官方

CoinEx成立於2017年12月,是一家面向全球的專業數字資產交易服務商。聚集創新數字資產為核心,多年來良好的專案服務水準及優質資產篩選能力,為全球用戶提供全面且優質的投資選擇。 CoinEx中文繁體群:https://t.me/CoinExGlobalChinese

CoinEx研究院:BitVM,比特幣主網上的智能合約潛力

E1I-A215

10月9日,ZeroSync 的開發者Robin Linus 公佈了BitVM的白皮書,吸引了社群的極大關注。 它是一種新的計算範式,能夠在比特幣網路上表達\驗證圖靈完全的合約,而無需對網路共識規則進行任何更改。

去中心化智能合約的限制與追求

比特幣腳本語言作為一種堆疊式語言,提供了條件判斷等基本控制結構,用於定義交易的驗證邏輯。 它要求提供正確的數位簽名才能花費比特幣,這體現了簡單的條件驗證。 但是,比特幣腳本有意設計為非圖靈完備的,不支援循環等複雜控制流,來保證語言的簡潔性和安全性。 這些限制使得比特幣腳本難以執行智慧合約等複雜計算。

一些比特幣的 Layer 2解決方案雖然可透過鎖定資產實現基本智能合約,但本質上依賴多簽地址與跨鏈資產映射,仍需要一定的中心化信任。 這降低了整個方案的去中心化程度,與比特幣的設計理念不完全契合。 在BitVM被提出之前,比特幣社群一直在探討既去中心化、信任最小化,又能實現圖靈完備計算的方法。

BitVM:在比特幣上進行任何計算

BitVM的核心創新在於利用比特幣現有的腳本系統來實現邏輯閘(邏輯閘種類包括與閘、或閘、非閘、異或閘,可以實現如與、或、非、異或等邏輯運算) ,進而建構任意複雜的布林電路(布林電路是一種用來實現邏輯運算的電路,輸入和輸出都是二進位的,可以使用邏輯閘實現布林運算,如與、或、非、異或等)。 具體來說,BitVM使用哈希鎖(Hash Time Locked Contract,HTLC)和Taproot(2021年11月啟動的最佳化比特幣腳本的軟分叉)來表示基本的邏輯門,如與非門、或門等 。 透過組合這些基本邏輯閘,就可以建構出任意複雜度的計算電路,這相當於在比特幣區塊鏈上模擬了一個可程式化的電腦。

最後,當交易雙方出現糾紛,他們可以通過一個優雅的挑戰——響應協議,類似詐騙證明在比特幣進行驗證。 即證明者(Prover)聲稱給定函數對某些特定輸入求值會得到某個特定的輸出,如果這個聲明是假的,則驗證者(Verifier)可以透過執行詐騙證明來懲罰證明者。 利用這種機制,任何可計算的函數都可以在比特幣上得到驗證。

BitVM的設計

Bit Value Commitment

Bit Value Commitment 是一種比特幣腳本,透過if-else 語句實作了一個Commitment Scheme(一種加密原語,用於確保發送者在發送訊息之前能夠確定訊息的內容,並且在訊息被公開驗證之前無法 更改該內容),其中包含兩個哈希值:hash0 和hash1。 根據輸入值的雜湊值與這兩個雜湊值的比較,確定回傳值為 0 還是 1。

圖一:一個用於1-bit承諾的具體實現

資料來源:https://bitvm.org/bitvm.pdf

Logic Gate Commitment

在計算理論中,任何可計算的函數都可以表示為布林電路。 其中,NAND閘是一種通用的基本邏輯閘,可以建構所有其他複雜邏輯閘。 BitVM透過包含兩個表示輸入的Bit Value Commitment和一個表示輸出的第三個Bit Value Commitment來實作NAND閘。

BitVM巧妙地利用這一點,透過比特幣腳本來表達NAND門,進而建構任意複雜的布林邏輯電路,這相當於在比特幣腳本中模擬了一個可程式計算機。

圖二:Bit Value Commitment實作的NAND閘

https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754

圖三:用於NAND操作的邏輯閘承諾

資料來源:https://bitvm.org/bitvm.pdf

腳本計算兩個輸入的NAND值,以確保與已承諾的輸出位元相符。

Binary Circuit Commitment

任何電路可以透過組合閘承諾來表示,執行的每個步驟都記錄在Tapleaf中。 它們都合併到同一個Taproot位址中,以便證明者可以執行電路中的任何閘。 執行一個閘需要證明者打開對應的閘承諾,並為其輸入和輸出位元設定值。 例如圖四, A、B、C、D 都是給定的bit value commitment,每個承諾表示一個位元。 透過8個 NAND 閘的邏輯運算,如A NAND B 得到 E,E 再作為下一個NAND的輸入,最後整個電路的輸出結果為 TRUE。 這種布林電路的設計透過連接bit value commitment的 NAND 閘實現了複雜的邏輯運算,為比特幣鏈上的可驗證計算提供了一種緊湊的表示方式。

圖四:一個有8個NAND閘的電路範例

資料來源:https://bitvm.org/bitvm.pdf

Challenges and Responses

在BitVM中,僅僅承諾一個電路是不夠的,還需要一個挑戰-響應機制來驗證計算的正確性。 為此,證明者和驗證者在設定階段預先簽署一系列相互連結的交易。 這些交易按照「挑戰-回應-挑戰-回應」的順序進行,形成多輪互動。 如果任何一方停止回應,則另一方可以在超時後贏得這輪挑戰,獲取雙方的存款。 這個機制只有在有詐欺時才需要用到,只要雙方合作,可以用2對2簽章直接完成計算。

具體操作上,例如當Paul(證明者)和Vicky(驗證者)預先簽署一系列交易,Vicky隨後可以發起挑戰(TX 2), 通過打開Tapscript中的哈希鎖選擇一個挑戰(hash7),迫使證明 者執行被挑戰的閘電路(TX 3),公開輸入輸出。 任何不一致都可以透過幾輪查詢快速證明。 如果證明者停止協作,驗證者可以透過解鎖自己持有的雜湊預映射強制其在鏈上回應。 每輪質詢都可能驗證或證偽某一閘的正確性。 透過二分搜尋(一種用於在有序數組中尋找特定元素位置的演算法),驗證者可以在幾輪後找出證明者的錯誤。 一旦證明者的兩個承諾衝突,驗證者就直接贏得質疑並獲得押金。

圖五:預先簽署的一系列交易,以執行多輪挑戰和回應

資料來源:https://bitvm.org/bitvm.pdf

這種細緻的設計使BitVM實現了對任意複雜計算的鏈上驗證。 同時確保了協作時的高效,與詐欺時的可懲罰性。 它展示了在比特幣網路中進行圖靈完備互動計算驗證的可能性。

BitVM 設計的關鍵點

鏈下計算,鏈上驗證

BitVM把複雜的計算邏輯都放在了鏈下,只在比特幣鏈上進行結果的驗證。 這避免了將複雜合約直接運行在區塊鏈上的做法,可以防止區塊鏈膨脹。

使用哈希鎖和比特幣腳本進行邏輯閘表示

BitVM使用哈希鎖和比特幣支援的各種腳本操作碼來表示基本的邏輯閘,如與非閘。 接著透過連接這些邏輯閘,可以建構任意複雜度的電路,實現圖靈完備的計算。

證明者與驗證者的賽局理論

BitVM這種驗證所採用的機制類似Optimistic Rollup,透過讓計算的雙方進行互動挑戰和回應,最終在鏈上確認誰的計算結果是正確的。 如果證明者作弊,驗證者可以在比特幣鏈上執行懲罰。 因此兩者都採取了類似的鏈上驗證互動機制,不同在於BitVM直接利用比特幣腳本實現了互動式的挑戰-回應流程。

最小的鏈上影響

BitVM的計算過程對比特幣區塊鏈基本上沒有影響,只有當出現糾紛時,才會在鏈上留下少量交易。 這保持了比特幣的高效和可擴展性。

不需要軟分叉

由於BitVM只是利用了比特幣現有的腳本功能,所以不需要對比特幣協議進行任何軟分叉,這降低了將其應用到比特幣主網的難度。

總結

BitVM的最大創新在於不需要修改比特幣核心協議,僅透過創新地運用現有腳本,尤其是Taproot優化後的腳本,即可實現圖靈完備的驗證能力。 這種高妙的設計使得BitVM可以無縫整合入比特幣主網,而不會引入新的相容性問題、也不會影響比特幣的去中心化特性。

基於此,BitVM具有將智慧合約和去中心化應用引入比特幣生態的潛力,如可以建立最小信任的跨鏈橋來連接不同區塊鏈資產,提升比特幣的互通性;還可協助建構更 優化的zkRollup擴充層,提高比特幣的可擴充性。 BitVM展現了僅透過創新使用現有屬性,即可讓比特幣生態進入新階段的巨大想像空間。

參考資料

https://bitvm.org/bitvm.pdf

https://github.com/supertestnet/tapleaf-circuits

https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754

CC BY-NC-ND 4.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论