
作者:jolestar,Rooch Network創始人 來源:X,@jolestar
Bitcoin 的可編程性擴展方案可分為兩個大的方向:鏈上擴展和鏈外擴展。
Bitcoin 鏈上擴展
這個方向一直受限於 Bitcoin 腳本的編程性。Bitvm 這樣的方案嘗試通過 Taproot 樹來模擬電路,實現圖靈完備的計算。但 Bitcoin L1 更大的限制在於 Bitcoin 腳本是無狀態的。無論計算多複雜,對狀態的所有權都只能表達為時間鎖、哈希鎖、私鑰鎖,無法表達出「狀態鎖」,而這是實現複雜應用的前提。
假設把 Bitcoin 的腳本替換成一個圖靈完備的虛擬機,其他條件不變,請設計出一個計數器,任何用戶發送交易都可以讓它加一,這時就會理解這個限制。
這個計數器場景有什麼用呢?在典型的打銘文場景下,需要一個計數器來計算資產的總量。如果鏈上能表達計數器,就不會有打廢銘文的情況了。
用通俗的比喻來解釋「狀態鎖」:如果把 Bitcoin 腳本理解成一個對 UTXO 的智能鎖,這個智能鎖可以通過密碼解鎖,可以通過指紋解鎖,但它內部不能記錄腳本執行後的結果,所以無法實現解鎖幾次後就不能再解鎖的功能。
所以鏈上擴展如果能配合一次性籤名設計出仲裁和挑戰機制,就已經非常有突破性了。
Bitcoin 鏈外擴展
既然鏈上擴展有瓶頸,那只能尋求鏈外擴展。為了避免 L2/側鏈,on-chain/off-chain 的歧義,統稱為鏈外擴展。
鏈外擴展需要在幾個選項之間取捨:
-
用什麼智能合約以及虛擬機。
-
智能合約裡如何讀寫 Bitcoin 上的狀態(數據以及資產)。
-
交易寫到哪裡去,如何保證可用性。
例如,在 AVM 的方案裡:
-
選 Bitcoin Script。
-
通過增加新的 OP code 來實現。
-
交易寫回 Bitcoin L1。
而 EVM 側鏈方案一般是:
-
用 EVM。
-
通過橋跨資產過去。
-
用獨立的共識網保證。
文章提到了 RoochNetwork,詳細介紹其方案如下:
-
智能合約以及虛擬機 :用 Move 以及 MoveVM。
-
智能合約裡如何讀寫 Bitcoin 上的狀態 :在 L2 執行 Bitcoin L1 的所有交易,將 Bitcoin 的狀態(UTXO/Inscription 等)表達為 Move Object。
這樣有幾個好處:
-
智能合約中可以讀取到所有 Bitcoin 上的狀態(UTXO/Inscription 等),還包括交易和區塊頭。
-
L2 的狀態可以通過 Object 的動態欄位,綁定到 Bitcoin 的狀態上(原子綁定),所有權歸 Bitcoin 資產的所有者。舉幾個典型場景:L1 的狀態表達地塊,L2 上蓋房子;L1 的狀態表達域名,解析記錄在 L2。
-
通過在 L2 的智能合約中生成 Bitcoin Script 以及 Bitcoin 交易,給交易提供可編程性。
如何保證可用性
RoochNetwork 的交易可用性依賴第三方 DA。因為 Rooch 的方案中,L2 會包含所有 L1 的交易,所以不能再寫回 L1,只需要把 L2 狀態樹的根定期寫回 Bitcoin 即可。這樣也保證 L2 的交易成本足夠低,可以給更複雜的應用提供基礎設施。
總結
Bitcoin 生態期待可編程性的擴展方案很久,有各種路線和方案的嘗試。Bitcoin L1 的可編程性有限,但它的優勢是所有狀態都是全局的,不存在合約間的割裂。所以無論任何擴展方案,只要該方案在 Bitcoin 上寫了數據,就可以和其他方案進行結合,優勢互補,最終會湧現出不一樣的生態。