目前看來只能是兩方參與,在鏈外可以設計成很複雜的程式,但鏈上一定是一個證明者和挑戰證明者。
(前情提要:萬字深究「比特幣二層網路」,Ordinals vs Taro 誰更有機會? )
(背景補充:天橋資本創辦人:美國 Fed 體系瀕臨崩潰!比特幣市值上看15兆美元 )
上週(2023 年 10 月中旬)在 Twitter 上看到了 BitVM 的論文,《BitVM: Compute Anything on Bitcoin》。這個論文在比特幣生態上得到了很大的關注。
如果有底層的電腦實現基礎知識,理解這論文並不難。
第一部分:電腦學基本原理
論文的第一部分是描述了電腦的基本原理,即電腦完成的所有事件最終都是歸結為幾個簡單的數位邏輯電路基本單元的計算,與、非、或,這三種門構建的邏輯計算。包括我們現在可以使用電腦完成各種複雜的操作,如看視訊、寫文件、購物……,都是這樣。
有一種特殊的門,叫 NAND 門,中文叫「非與門」,中使用 NAND 門就可以用來構建所有的其他邏輯閘。
上面這些都是基礎的電腦知識,看不懂也不重要,你只需要知道,整個電腦世界就是靠這些「門」來設計出來的。
而比特幣指令碼引擎裡有兩個操作碼,OP_NOT 和 OP_BOOLAND,再加上hash鎖,就可以設計出 NAND 門(非與門)。
而這就意味著,使用比特幣指令碼就可以實現任何計算問題,這就是所謂的圖靈完備。也就可以基於比特幣指令碼來搭建一臺「虛擬電腦」,這就是標題裡 VM 這兩個字母的意思。
(再次推薦學習下電腦的基礎知識,對於理解區塊鏈非常有幫助,掌握電腦基礎知識是區塊鏈和數位貨幣世界的通行證)
第二部分:如何用操作碼和 hash 鎖計算問題
論文的第二大部分就是解釋如何使用這兩個操作碼和hash鎖來實現各種計算問題,以及,為什麼是正確的。
這些吧啦吧啦的,非常難看的懂。
我也看不懂,只能假裝認為它是對的,然後按我的理解,我來科普下它是怎麼工作的。
先來設定一個計算任務,並使用 BitVM 這套東西來設計成程式來執行,這個任務是:兩個人(A 和 B)分別拿出 1BTC 的資金進行打賭,賭大小。
程式設計如下:
1.A 和 B 分別將自己的 1BTC 入金進一個他們生成的 2-2 簽名地址,要花費這個 2-2 地址裡的資金,可以使用如下任一方法:
- A 和 B 同時提供簽名;
- A 提供簽名,以及提供一個 「證明檔案」,然後等待一定的挑戰週期(比如 10 個區塊),如果在挑戰週期內,B 沒有發起有效的不同意見挑戰,則 A 可以花費裡面的幣。
2. 打賭的規則使用 NAND 門來設計,並且執行在鏈上,但執行的結果可供鏈上使用。我們可以視執行的結果是生成一個上述說的可供贖回 UTXO 的 「證明檔案」。
按我的理解,本質上 BitVM 實現的是在依據鏈外的特定資訊,贖回鏈上特定的 UTXO。外鏈的特定資訊需要按 BitVM 約定好的方式程式設計,以生成可供鏈上使用的「證明檔案」。
可供贖回的 UTXO 也需要設計成特殊的贖回指令碼。
BitVM 的這種模式,我判斷至少要保證以下:
1. 目前看來只能是兩方參與,即只能搞一個 2-2 簽名的地址,在鏈外可以設計成很複雜的程式,但鏈上一定是一個證明者和挑戰證明者。
這個和閃電網路有點像。
2. 在鏈上雙方都必須線上,以防止挑戰週期內自己不在場而導致不公平的結果。
這個和以太坊的合約帳戶區別還是非常大。
以太坊的合約帳戶是可以定義程式,這些程式可以託管以太坊幣等鏈上資產,這些資產按程式碼規則進行執行。
以太坊的合約帳戶裡的程式碼是真正執行在礦工節點裡的。
小結
期待 BitVM 給比特幣帶來一些新的應用場景,不過我覺得離真正有用的東西還是太遠。
目前還只是一個白皮書,連模型都沒有,也沒有可供使用的高階程式語言,只能使用 opcode 來程式設計,相當於只能使用匯編吧,連 C 語言都還沒有。