6 月 10 日,RGB++ 協議作者、CELL Studio 創始人 Cipher,DotSwap 聯合創始人 Lin,Shell Finance 聯合創始人 Timxie,以及 TBC(Turingbitchain)的 CMO NIGO 做客 UTXO Stack 的推特 Space,暢聊 UTXO 模型能否催生比特幣生態新模式。
UTXO Stack 是模塊化的 BTC L2 一鍵發鏈平臺,可以幫助項目開發者一鍵發行基於 UTXO 架構的比特幣 L2,並且原生集成了 RGB++ 協議。在安全性上,UTXO Stack 通過質押比特幣、CKB 以及比特幣 L1 的資產來保證 L2 的安全。簡單來講,我們可以把 UTXO Stack 想象成比特幣生態的 OP Stack + EigenLayer。
UTXO Stack 已經完成種子輪融資,由 ABCDE 和 SNZ Capital 共同領投,OKX Ventures、Waterdrip Capital、Matrixport、y2z Ventures、DRK Lab 和 Bitcoin Magazine 母公司 BTC Inc 風投部門 UTXO Management 等多家知名機構跟投。
以下是根據音頻整理的重點內容:
1、UTXO 模型和賬戶模型在設計哲學、安全性、效率等方面,有什麼本質的區別和優勢?
Cipher:我覺得主要是設計哲學和效率有一些區別,安全性可能更多的還是看共識機制,和賬戶模型關係不大。
設計哲學上,UTXO 其實更偏驗證,而不是偏計算。我們知道以太坊的賬戶模型,你去寫程序或者發交易的時候,你並不知道這個交易結果,你發的是一個動作或者是一個函數調用,那至於這個調用的結果是什麼,只有交易被打包成區塊之後你才知道結果。
典型的例子是,假設你的賬戶裏面只有 0.1 個 ETH,能不能發一筆往外轉賬 0.2 個 ETH 的交易?可以的,你發出去,但是這筆交易可能進交易池之後,它會被打包,然後返回錯誤,因爲你沒有這麼多錢,但是你的 gas fee 還是會被扣掉。但是如果你發送的同時,剛好有人給你賬戶上轉了一筆錢,使得你的賬戶餘額超過 0.2 個 ETH,那你這筆交易就成功執行了,當然也要扣 gas fee。
但是對於 UTXO 模型而言,你這筆交易就發不出去,因爲你賬戶錢不夠,你湊不出來足夠的 input。所以在 UTXO 模型下面不存在交易失敗這種狀態,它只存在交易成功或者發不出去這兩種狀態,即所謂的交易失敗是驗證不通過,也不會扣你的手續費。UTXO 更認爲區塊鏈就是個驗證機器,而不是計算機器,而採用賬戶模型的以太坊曾經有一個外號叫世界計算機,它是要計算的,完全是不同的設計哲學。
效率方面兩者也有非常大的區別。UTXO 明確地指出之前使用的是哪些狀態,然後把它銷燬掉,更新成新的狀態。而以太坊在函數調用的時候,並不知道在調用之前它會訪問哪些狀態,所以它只能按最差情況處理,就是對所有的狀態都不做預處理。因此,以太坊每一筆交易只能串行執行。普通的一臺桌面電腦,它的 CPU 至少是六核 12 線程,但是對於標準的 EVM 來說,仍然是單線程去執行。而 UTXO 不同, UTXO 天然就是並行的,它的所有交易都是自動可以區分哪些交易是衝突的,甚至衝突的交易都不會發到交易池裏面,因此 UTXO 區塊鏈的效率明顯高於賬戶模型。當然現在有一個敘事叫做並行 EVM,想用某種形式解決這個問題,但是從剛纔的描述大家也能意識到這不可能從本質上解決。
Tim Xie:我很認同剛剛 Cipher 講的 “比特幣 UTXO 模型更偏驗證,以太坊的賬戶模型更偏計算”。在 DeFi Summer 的時候,我們去做一些 swap,以太坊的 gas fee 會很高,雖然相比於比特幣,以太坊的出塊速度更快、區塊更大、性能更好,但以太坊對於擴容的需求其實比比特幣還要更高。爲什麼呢?原因在於以太坊是一個計算模型。我們玩 DeFi,支付的 gas fee,可能有 98% 都是花在計算上,在驗證、傳播和存儲賬戶狀態這部分的花費其實是非常少的。比特幣是一個驗證網絡,它不做計算,所以我們在比特幣二層上做 lending 或者 swap,同樣的場景下,手續費反而比以太坊那邊還要便宜。
第二個是併發。EVM 爲什麼是串行的,剛剛 Cipher 解釋得非常清楚,UTXO 則可以做併發,這點在做業務上會帶來什麼差異點呢?在以太坊上做 lending,你需要先存款然後才能借款,因爲業務邏輯是你要有抵押物,要先等抵押的這筆交易確認了,狀態固定了,它纔可以去計算你的抵押物淨值和清算閾值,讓你借款,這一切是串行的。而 UTXO 可以做併發,我們可以把所有的交易儘可能壓縮在一起,這意味着可以把用戶的存款交易和借款交易合併成一起,提高效率。
從我們的感受上來講,在比特幣上用 UTXO 模型做 DeFi,最後給用戶帶來的體驗其實並沒有人們想象中那麼的差,雖然體驗不如以太坊或者 Arbitrum 上的應用那麼絲滑,但也不會太差,還是可以用的。
Lin:我做一個補充。現有的技術在不斷地演進,我認爲 UTXO 不是不做計算,它同樣也是可以做計算的。比如大家最近熱議的比特幣操作碼 OP_CAT, 如果啓用,我們就可以在比特幣的 UTXO 中保留狀態。如果我們把各種比特幣原生的限制都拿掉的話,我們可以在比特幣的 UTXO 中去模擬無數個以太坊,每一個 UTXO 都可以是一個以太坊的狀態,然後把數據和執行在這個狀態當中進行延續,從而使這個狀態一直往下推演下去,雖然這樣不一定能做到完全的 EVM 兼容。
所以我認爲比特幣一樣可以做計算,而且比特幣的邏輯是你隨時可以開新的線程,你隨時可以分裂出一個新的 UTXO,新的 UTXO 和原來的 UTXO 完全切割開來,這是比特幣 UTXO 在計算上的一個特點。
加入 OP_CAT 之後,將會帶來很巧妙的一些應用場景。比如說,以太坊 ERC-20 代幣會維護一個列表,可以知道哪些賬戶有多少錢,加入 OP_CAT 之後,在比特幣上我們也可以做類似的事情,甚至可能比以太坊做得更好。
在 UTXO 當中,數據共享其實是一個很大的未知的空間。比如說 Covenants(限制條款),現在還需要一段時間的建設,等這個事情往前推進了以後,在不同的 UTXO 當中如何實現共享數據,在交易當中如何引用交易之外的數據等等,或許會有突破。
NIGO:我一直認爲以太坊把比特幣的 UTXO 模型改成了賬戶模型,其實是典型的畫蛇添足,而且把本來能夠進行併發的系統變成了一個串聯的系統。以太坊被很多人稱爲世界計算機,一個普通人的計算任務憑什麼要讓全球的礦工去計算,這個過程耗費巨大能量,而且成本很高,但並沒有帶來什麼實質性的好處,反而耽誤了整體的效率。以太坊轉爲 PoS 之後,更是讓整個網絡的礦工(節點)失去了進化動力。而中本聰設計的 UTXO 模型,天然適合高併發、高性能,我相信會有更多的 Web3 用戶看到 UTXO 模型的潛力。
2、是 UTXO 模型導致比特幣不具備智能合約能力嗎?如果要在 UTXO 模型的基礎上實現智能合約能力,一般通過什麼機制來實現?
Cipher:肯定有很多種方法可以在 UTXO 模型的基礎上實現智能合約能力,我介紹一下我最熟悉的 CKB 是如何實現的。
CKB 引入了 lock script,它和比特幣的 lock script 是一致的,當這個 UTXO 被花費的時候,lock script 會自動執行,它會根據 witness 裏面的數據來作爲輸入,以及當前的交易也會作爲輸入來執行。它跟比特幣的 lock script 的區別是,它支持一個完整的圖靈完備的虛擬機,而不是比特幣那種非常有限的腳本環境,所以在解鎖的這個階段它是圖靈完備的。
同時,CKB 又引入了 type script 字段,這個字段不論是輸入還是輸出它都會執行,它更多的是作爲這個資產的類別,或者說同一個 type 就代表同一種資產這種邏輯來執行的。比如說,fungible token 交易前後總量保持不變,non-fungible token 交易前後這個數量保持不變、內容保持不變,或者用來判斷誰有權利如何去增發一種新的資產,等等。它本身也是一個圖靈完備的 VM。
CKB 的虛擬機基於 RISC-V 硬件指令集,任何的調整都涉及到重新的流片,所以 RISC-V 指令集的設計非常的精簡、高效和周全。
總結一下,CKB 採用了 RISC-V 的虛擬機,它是圖靈完備的,而且它還有 lock script 和 type script 兩個地方來存放智能合約的腳本,並且還有一個叫 data 的字段來存放智能合約的狀態,所以它是一個完整的合約執行環境。
Tim Xie:在我們 Shell Finance 的整個產品構建過程當中,因爲我們要做 lending protocol,要做清算,所以需要一些高級合約的功能,最後我們選擇了 DLC(Discreet Log Contracts,謹慎日誌合約)。DLC 和閃電網絡都屬於同等級別的擴容技術,都是 offchain,不同點在於閃電網絡主要做 payment,而 DLC 主要用來做 oracle。我們其實不是圖靈完備的,限制依然很多,但即便是在限制很多的情況下,通過 DLC 我們就已經能夠做 lending 了。
比特幣其實有很多 OP Code,如果能啓用或者解鎖比如之前 DotSwap 的 Lin 提到的 OP_CAT,或是其他一些操作碼,那我們其實也可以繼續沿着閃電網絡和 DLC 這樣的路線來去創造出更多的可能性,智能合約肯定是能做的。核心點就在於有沒有需求,有沒有用戶,有沒有市場,有沒有更多的人去投入時間和投入精力去構思它、去使用它、去滿足用戶的需求。只要有人使用,有市場,那新的想法、新的概念自然會出來。
我現在敢肯定的是比特幣生態的形態一定會跟 EVM 那邊完全不一樣。也許在業務層面,用戶的感受可能差不多,同樣都是做 swap 和 lending,同樣都有 oracle,但背後的體系以及最後能夠使用的工具其實有巨大的差異性。如果是在比特幣主網,這個差異會更大,所以我其實比較期待有較好 UTXO 結構的 L2,因爲它可以更大地釋放比特幣生態的潛力。
Lin:我覺得把一個東西設計成圖靈完備其實不是很難的事情,反而圖靈不完備是很難的,把腳本設計成非圖靈完備其實是個非常高深的技術活。
比特幣原先的腳本是可以做到圖靈完備的,只是現在的比特幣很多能力被封印了,比如我之前提到的 OP_CAT,它是一個很重要的能力,但這個能力卻被操作符禁用了,而不是說比特幣一開始設計的時候沒有這些操作符。比特幣在一開始的時候涉及了非常多的操作符,但是因爲所謂的安全性,或者是所謂的這種安全性的隱患,或者是沒有搞清楚到底是什麼、怎麼用等等,就把某些操作符給禁用了。更有甚者,很多本來是可以用來做智能合約的這種功能,被所謂的標準交易做了一個過濾。我們都說比特幣是一個去中心化的系統,但在這個去中心化的系統中,竟然還有一個叫標準交易的東西,它是由某些組織來決定的。標準交易在礦工領域是不存在的,因爲礦工可以去打包任何的合法交易,它是基於用戶端的一個 policy 問題。
所以總的來說,我覺得原始比特幣的這種能力本身是很強大的,但是現在比特幣受到了劫持,大家如果有興趣的話,可以看一下 Roger Ver 的書《Hijacking Bitcoin: The Hidden History of BTC》。因爲比特幣原始的能力受到了封印,所以我們就被迫地在各種地方去找出路,這是我們目前所面臨的一個現狀,但是比特幣的前途和未來肯定是比較好的。
我一直在說現在的很多所謂的比特幣 L2 其實是寄生蟲協議,它們並不是把自己的價值貢獻到比特幣上,也沒有辦法讓礦工有更高的收入,但實際上也確實是沒有辦法,因爲比特幣的限制非常多。我講個類比,HTTP 協議其實是構建在 TCP/IP 協議上的 L2,而我們的 HTML 協議又是構建在 HTTP 協議之上的。這裏我覺得纔是一層一層的概念,而不是說交易數據完全的從 TCP/IP 裏面分離出來,從上一層協議裏面分離出來,去另外一個地方跑,然後回頭跟別人說我這個是二層協議。真正的二層協議其實是一層一層堆疊的,所以,我們去構建的那些 L2,它也應該是在上一層裏面被接受爲合法的交易。這就是爲什麼我們現在正在一層的 swap 上面做探索的一個很重要的原因。我們認爲大部分情況下我們其實是要 settle 到一層,我們要在一層上面有很多的驗證和共識的承載,而不是說我去做一個所謂的資產橋,然後把大家的資產搬到另外一個地方,這可能不是一個特別好的事情。
NIGO:UTXO 模型能否支持複雜的智能合約功能?當然是可以的。它就是將合約的邏輯和數據存儲在 UTXO 中,然後將合約的調用和參數作爲 input 來嘗試解鎖合約,通過 BVM(Blockchain Virtual Machine)執行合約的邏輯,最終通過解鎖函數返回 ture or false 來達到控制合約狀態的目的。這種模式可能對於以太坊智能合約的開發者來說有些陌生,但實際上,如果你結合函數式編程思想,再配合一些概念的轉換,UTXO 智能合約可以實現非常複雜的邏輯。
UTXO 模型由於不存在全局狀態,因此它需要將合約的狀態和邏輯存儲在 UTXO 中,然後通過 UTXO 交易調用鏈的傳遞來進行狀態的傳遞和轉換,所以每一次的 UTXO 交易都會消耗之前的 UTXO,並生成新的 UTXO,通過這種方式可以實現合約的鏈式狀態轉移。所以,能否解鎖 UTXO,也就對應着合約的執行結果,它是否允許狀態進行轉移。如果合約判斷不允許修改狀態,比如不允許轉賬、不允許修改數據等,它則會返回 false,那 UTXO 不會被解鎖,合約執行失敗。
我們把合約看作對數據狀態進行轉移操作的狀態機,那麼這裏就可以看出來 UTXO 合約和賬戶型合約的區別。賬戶合約的 EVM 是要維護全局狀態,一個交易可能導致 EVM 進行多次的狀態轉移,頻繁的修改狀態數據直到合約執行或者 gas 消耗完。而 UTXO 合約的交易,它是一個 input 合約,調用只會觸發一次狀態轉移,並且無論合約內部的邏輯多複雜,狀態轉移多少次,BVM 只會將最終的狀態轉移結果記錄在鏈上。所以 UTXO 合約沒有全局狀態,只有一個個等待被執行的函數。
UTXO 是多輸入多輸出,以太坊想做的,包括 Monad 也想做的並行 EVM, 其實完全可以通過 UTXO 來實現,需要轉移狀態就要先找到這個狀態所在的函數,通過函數調用來修改狀態,並且生成新的函數,這樣的模式使得 UTXO 合約的狀態轉移更加清晰了。
UTXO 合約並不依賴外部狀態,因此,一次合約調用,無論調用多少次,它的結果必然是確定的,所以這也就跟合約的分析和調試以及單元測試帶來了巨大的便利。而 EVM 合約要依賴全局狀態,所以合約的執行結果很可能會受到外部環境的影響,導致合約的執行結果不確定,比如說餘額夠是一個結果,不夠又是另一個結果。所以這也是 EVM 合約的安全性和可預測性的一個重要問題。
當然,每次將狀態傳遞下去也不是沒有代價的,在一些需要溯源的場景中,狀態可能會隨着 UTXO 傳遞鏈條的增大而增大,因爲溯源是需要校驗的,數據越來越多,所以狀態本身會無限膨脹。我們 TBC 通過其他技術和哈希、數據抽取等密碼學的手段,將狀態膨脹的一大的問題給解決了。所以 TBC 的智能合約區別於其他 UTXO 鏈的一個重要特點是, UTXO 模型是 TBC 進行無限擴容的一個基礎,使 UTXO 模型進行標準的轉賬交易是非常簡單的。
綜上,TBC 在充分考慮了 UTXO 模型的優勢和缺點,在吸取以太坊和其他 UTXO 公鏈精華的基礎上,引入了一個 BVM 的概念和其他技術來實現真正的一層 UTXO 的智能合約,然後配合更加友好的一些智能合約開發工具,降低了編寫和部署 BVM 智能合約的門檻。
(未完待續)