Rooch Network:比特幣的原生應用層與未來生態建構者
作者:Rooch Network
Rooch Network 是什麼?
Rooch Network 是 Bitcoin 的原生應用層,基於堆疊式 L2 解決方案,為用戶和開發者提供比特幣資產的啟動平台和比特幣應用基礎設施。
為什麼需要 Rooch Network?
2023 年 Bitcoin 生態湧現出了各種新型資產協議,這些新型資產的特點是只在 Bitcoin 上登記資產的所有權,有效性在鏈下驗證,可以統稱為基於客戶端驗證(Client side validation)的資產。而這些新資產協議預示的 Bitcoin 生態的遠景是什麼?業界存在著不同的看法,我們認為 Bitcoin 上的新型資產協議預示著一種新的應用生態構建範式。
客戶端驗證資產將資產的有效性放在鏈下驗證,所以可以設計出一種跨層資產遷移協議,真正實現資產從鏈上到鏈下的遷移,在數字世界模擬出"現金"效果。這樣為資產提供使用場景不再受限於鏈的可擴展性難題,是一種新的擴容方案,也為應用提供了無限可能。
同時,這種模式也預示著一種可能的應用生態的啟動模式。通過應用內資產先吸引用戶,構建用戶社區,然後社區中誕生應用,解決應用冷啟動難題。
那這種模式需要什麼樣的基礎設施來支持呢?
- 首先,需要一個鏈下可擴展的應用環境。這個環境既可以給鏈上資產協議提供校驗服務和擴展性,也可以運行應用,給資產提供應用場景。
- 其次,需要一個資產跨層遷移的協議,以實現資產從鏈上到鏈下遷移。
- 最後,需要一個網絡將鏈下應用互相連接起來,保證應用間的互操作能力。
這是 Rooch Network 要探索和嘗試的方向。
技術方案和路線圖
可驗證應用容器(VApp Container)
鏈下的應用環境首先要保證可驗證,可驗證是去中心化的前提條件。我們把可驗證應用(Verifiable App)簡稱為 VApp。
智能合約來保證計算的可驗證,狀態樹來保證狀態的可驗證,組合起來就是可驗證應用容器。
Rooch 團隊經過一年時間的開發,完成了 Move 語言的 VApp 容器,它包括以下模塊:
- MoveOS:包括 MoveVM 以及堆疊的狀態樹,給應用提供執行環境,以及保存應用的狀態,保證計算和狀態的可驗證性。
- Move 基礎庫以及框架:包含 Move Stdlib,MoveOS Stdlib,RoochFramework,BitcoinMove 等,給應用提供賬戶抽象,資產定義,Bitcoin 協議執行等基礎功能。
- 基礎的開發工具,RPC 接口,索引服務,以及 SDK。
基於這個應用容器,應用開發者幾乎可以把大多數 Web2 應用通過 Move 語言實現,變成可驗證應用。Rooch 同時引入了 WASM 虛擬機,Move 虛擬機運行應用邏輯,管理狀態,WASM 虛擬機提供擴展能力,方便開發者復用已有編程語言的庫。
Root 到 Bitcoin
有了 VApp 容器後,我們需要和 Bitcoin 結合起來。Rooch 採用的方案是直接在 VApp 容器中執行 Bitcoin 網絡上的所有區塊,驗證 UTXO 以及 UTXO 之上附加的擴展協議,轉換成 Move 的 Object,為 Bitcoin 提供一個包含 L1 狀態的 L2 解決方案。
這個智能合約層主要提供三種能力:
- 給 Bitcoin 生態應用提供 Bitcoin 的狀態證明。因為 Bitcoin 上的狀態,包括 UTXO 以及 Inscription 等都會包含在狀態樹裡,我們把狀態樹的根(Root)寫到 Bitcoin 網絡上,就可以給 Bitcoin 生態應用提供 Bitcoin 的狀態證明。可以證明在某個區塊高度,用戶是否擁有某個 UTXO,或者某個 Inscription。
- 給 Bitcoin L1 的資產協議提供擴展能力。基於已有的資產協議擴展新協議,主要的工作是定義和實現新協議的驗證規則,而這些可以通過智能合約協議插件的方式來實現。這樣開發者就不需要構建新的索引器。
- 給 Bitcoin 上所有的數據以及資產提供可編程能力,創造應用場景。
有了 Bitcoin 的全量狀態後,我們在上面再堆疊一層 L2 的狀態,就可以基於 Bitcoin 上的數據和資產來創建應用場景,主要有幾種方案:
用 Bitcoin L1 資產結算
主要有"原子交換(opens in a new tab)","PSBT(opens in a new tab)","鏈上支付觸發鏈下結算"三種模式。這幾種模式都適合交換或者支付場景,直接在 Bitcoin 上結算,開發者可以利用 Rooch 提供的智能合約來實現交易訂單的展示,撮合,以及簡化與 Bitcoin 的結算。
原子綁定
通過 UTXO 和 Move Object 的原子綁定,綁定 L2 的資產到 Bitcoin L1 的資產之上,實現 L2 上的資產的所有權隨著 Bitcoin L1 資產轉移而轉移。比如在 L1 上有一個 Inscription 來表達一塊土地。然後在 L2 上蓋一個房子,所有權綁定到 L1 的地上,轉移土地的時候,房子也隨著轉移。
衍生資產
通過 Bitcoin L1 的資產來衍生新的資產,相當於基於已有資產發行新資產的一種模式。比如持有某種 L1 的資產,可以獲得某種 L2 的資產。
道具和身份標誌
在應用中將 Bitcoin L1 的資產作為道具或者身份標誌。比如某種 Inscription 代表遊戲中的裝備,直接在 L2 中的遊戲中使用。或者用 L1 的資產進行投票治理。
對 Bitcoin 腳本進行編程
在智能合約中生成 Bitcoin 的腳本以及交易,通過 L2 構建的約束力(治理或者抵押),來保證用戶必須簽名這個交易並包含在 L1 的區塊中,否則會被懲罰。通過這個特性,可以構建 Bitcoin 上的鏈上多簽錢包,DAO,以及給多簽橋提供附加的安全保證。
更多的模式還需要探索,我們把這種模式叫做"堆疊式 "的應用構建模式,應用在鏈的狀態之上堆疊一層狀態,來實現對已有的數據和資產的復用 。關於"堆疊式"模式的詳細方案請參考 Stackable L2。關於 Bitcoin 和 Move 的編程文檔以及案例請參看 擴展 Bitcoin。
分佈式狀態樹協議(Distributed State Tree Protocol - DSTP)
VApp 容器都是獨立的,如何將它們連接成一個網絡?並且實現狀態和資產的互通?這是分佈式狀態樹協議需要解決的問題。
分佈式狀態樹協議的思路是通過把堆疊狀態樹的不同子樹,分散到 P2P 網絡的節點上,以實現擴容和並行計算。通過分佈式狀態樹協議,可以讓整個網絡可以支持無限多的應用,實現並行水平擴容,但同時能通過全局狀態來共享數據和資產,以及實現應用的互操作性。
基於"堆疊式"的狀態模式,每個 VApp 節點都會包含 Bitcoin 和 Rooch 的狀態,它們是全局狀態。而應用的狀態是全局狀態樹的一個子樹,可以只存在特定的節點上。如果某個交易只修改了應用的狀態,而沒有修改全局狀態,那個交易就不需要廣播到網絡中,應用只需定時將自己的狀態根同步到全局狀態中即可,相當於一種基於應用的分片。
這樣就形成了Root 在 Bitcoin 上,數據分散在各應用節點上的分佈式狀態樹。應用內的資產可以在狀態樹之間移動,也可以和 Bitcoin 上的資產互通。
分佈式狀態樹協議還可以向兩個方向擴展:
- 融合狀態通道。狀態通道可以理解成一種特殊的有生命周期的狀態樹。當多方參與者的狀態通道開啟的時候,狀態樹創建,狀態通道結算的時候,應用可以將狀態樹中的狀態丟棄或者結算到上一層。這種場景配合 P2P 網絡,非常適合多人即時交互類的應用(遊戲)。
- 支持其他格式的狀態樹。理論上已有的狀態樹都可以作為子樹掛載到分佈式狀態樹中,比如 git 倉庫。這樣應用可以直接讀取 git 倉庫中的文件。
資產躍遷協議(Asset Leap Protocol)
直接在 Bitcoin L1 進行結算,依然存在交易成本高,等待確認時間長的用戶體驗問題。如何把 Bitcoin 上的資產跨到 L2,當前業界有幾種方案:
- 托管跨鏈橋的模式。這種模式廣泛使用,如何利用 Bitcoin 來保證橋的安全以及去中心化依然是探索的一個方向,Rooch 會和專門的跨鏈橋項目進行合作,實現資產的橋接,以及通過 Rooch 提供的編程能力增強橋的安全性。
- 非托管模式:這是 Rooch 主要探索的方向,比如類似 statechains(opens in a new tab) 。
而針對 Bitcoin 上的新協議的資產,我們會嘗試一種資產躍遷協議。如果未來大量的新型資產發行在 Bitcoin 上,需要一種協議實現資產在 Bitcoin 網絡和 L2 之間的遷移,降低 Bitcoin 上的狀態存儲壓力。同時,L2 上的新型資產也要能遷移到 Bitcoin 上,從而獲取更高的安全以及更廣泛的流通能力。
資產躍遷協議的核心思想
RGB/Ordinals 這樣的基於客戶端驗證(Client side validation)的資產,利用 Bitcoin 來登記資產的所有權,但它的有效性在客戶端進行驗證。如果我們在協議層定義一種 leap
指令,表達出將資產從 L1 遷移到 L2,或者從 L2 遷移到 L1,然後客戶端可以同時在兩層進行驗證,我們就可以實現資產的跨層遷移。
這種協議比當前的橋模式有幾個優點:
- 不會聚集大量的資產在橋中,避免了集中性風險,資產遷移模式的風險是分散的。資產遷出,以及遷入,都是用戶觸發的,客戶端追蹤的是所有權,只要驗證遷出時的銷毀操作和遷入時的重新發行操作是匹配的,資產就是安全的。
- 資產可以像"現金"一樣在各種網絡之間遷移。將資產的存儲和資產的應用場景分開,既能解決狀態爆炸問題,也能解決新型資產的大規模發行問題。
- 這種模式要求錢包扮演重要的角色,而不僅僅是當前這種只信任 RPC 的"笨"錢包,需要更"智能"一些。
為此,Rooch 團隊設計了基於 Ordinals 的 SFT 協議 Bitseed(opens in a new tab),未來會基於 Bitseed 協議來探索資產的遷移協議,更詳細的內容請參看 客戶端驗證協議 的資產躍遷協議部分。
安全問題
前面的方案描述中並沒有涉及安全方案,在 Rooch 網絡中,安全主要包含兩個方面:
- 應用端的安全方案,主要是應用狀態根的更新權限。
- 客戶端的安全方案,客戶端需要有狀態校驗能力。
應用端的安全需要由應用根據場景以及發展階段來自定義,主要有幾種選項:
- 基於 Bitcoin 的時間片輪換節點 + 數據可用層 + 欺詐證明:通過時間片輪換來實現多節點切換,保證應用的高可用以及去中心化,欺詐證明用於懲罰作惡的節點。這是 Rooch Network 會採用的方案,我們會嘗試和合作夥伴一起探索如何利用 Bitcoin 來作為安全源。
- PoA 節點 + 數據可用層:該類型的應用可以保證數據的可驗證性,任何人都可以運行一個獨立的節點對數據進行校驗。
- PoA 節點:該類型的應用可以對外提供狀態證明,用戶錢包可以校驗自己的數據,但由於沒有數據可用層保證交易的可用性,存在數據隱藏風險。它可以作為 Web2 應用到 Web3 應用的中間過渡。
- 所有參與者多簽:適合狀態通道類的應用。
客戶端驗證資產要求錢包不再完全信任 RPC 節點,而是要求錢包具備一定的校驗能力,可以稱為智能錢包。
- 客戶端錢包需要有能力接入 P2P 網絡,發現網絡中的應用的節點,並通過隨機抽樣機制,校驗應用的狀態樹的根,甚至可以本地運行智能合約虛擬機校驗自己的交易。
- 客戶端錢包需要有能力追蹤資產的遷移,至少要驗證資產遷移的有效性。
這樣就形成了基礎設施,應用,用戶三方的博弈機制,在擴展性和安全性之間尋求一種平衡。應用可以先通過偏中心化的方案,驗證市場,然後逐漸過渡,讓渡權限,採取一種漸進式的去中心化路線。
階段性路線
Rooch VApp 容器的研發即將發布一個新的穩定版本,我們會基於這個版本啟動 Rooch Network 的先行網。
在先行網上,我們會先嘗試跨層資產協議的設計,主要包括兩個方向:
- 通過自鎖倉衍生資產的模式,發行一種鏈下的新資產,並嘗試從鏈下遷移到鏈上。
- 嘗試基於 Bitseed 資產從鏈上到鏈下的遷移。包括 NFT 和 FT 兩種用 Bitseed 的 SFT 標準發行的資產。
同時,我們會嘗試基於 Bitcoin 資產的遊戲,也鼓勵開發者來構建遊戲和應用,構建 VApp 模式的應用生態,通過遊戲和應用來給用戶分發 Rooch Network 主網代幣的期權資產,未來可以用來兌換主網代幣。
然後我們會接入 P2P 網絡,接入數據可用層,實現節點的去中心化,尋求合作夥伴一起研發基於 Bitcoin 的安全方案,將先行網升級為主網。詳細的路線圖請參看 Roadmap。
總結
這篇文章介紹了 Rooch Network 藍圖以及目標,還有嘗試驗證的途徑,它不是一個完備的白皮書。
VApp 給應用提供運行環境,分佈式狀態樹協議將應用通過 P2P 網絡連接起來,資產遷移協議讓資產在 Bitcoin 和應用之間流動,我們就有了一個完整的 Bitcoin 應用層藍圖。
當然距離這個藍圖的實現還有許多待解決的問題,但我們認為很多技術方案都是根據實踐演化出來的,而不是規劃設計出來的。我們像是大航海時代探險者,大致知道寶藏的方向和價值,但具體的途徑需要尋找和摸索。我們只能先做一些假設,然後設計最小化的協議和產品,在市場中進行驗證,解決難題,調整方向,不斷循環,最終我們會尋找到那個 One Piece。