header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

探索FuelVM:為執行智能合約而專門構建的定制虛擬機

閱讀本文需 23 分鐘
下一代區塊鏈應用,需要新的執行環境。
原文標題:《探索 FuelVM:為執行智能合約而專門構建的定制虛擬機》
原文作者:Ryan Sproule,medium
原文編譯:RR
本文來自微信公眾號:老雅痞


介紹 Sway 和 FuelVM


Fuel Labs 正在構建一個新的執行層,用於擴展下一代區塊鏈應用程序。 FuelVM 被設計成模塊化性質——它可以作為任何區塊鏈的執行引擎。首先,FuelVM 將被部署為以太坊的第 2 層 rollup,但在理論上,它可以作為 L2 甚至另一個 L1 部署在任何地方。 FuelVM 旨在擴展以太坊而不增加節點需求,而是通過從現有硬件中獲得更多內容。

Fuel Labs 還在為 FuelVM 構建一種名為 Sway 的新型 DSL,用於編寫合約。 Sway 受到了 Rust 和 Solidity 的啟發,創建了理想的智能合約編程語言。


什麼是 FuelVM?


FuelVM 是一個完全為執行智能合約而專門構建的定制虛擬機。 Fuel VM 從一開始就被設計成易於防欺詐,可以用作 optimistic rollup 的交易執行層使用。


FuelVM 經過了優化,可以更好地利用硬件來提高交易執行的吞吐量。具體地說,它基於 UTXO,並強制每個交易明確定義它將接觸的 UTXO。由於執行引擎可以準確地識別每個交易所觸及的狀態,因此它能夠輕鬆地找到沒有爭議的交易並將其並行化。


為什麼 VM 很重要?


在智能合約區塊鏈系統中,VM 是能夠理解智能合約代碼並根據該代碼中定義的規則執行狀態轉換的系統。 VM 是智能合約區塊鏈的操作系統。


到目前為止,智能合約 VM 還沒有在以太坊提供的初始版本之外有什麼迭代。目前所有廣泛使用的智能合約鏈 (Solana 除外) 都使用了與以太坊相同的 VM:EVM。


目前,EVM 是「足夠好」的,因為擴展的主要瓶頸不是交易執行的速度,而是共識引擎可以支持的帶寬 (區塊空間)。隨著第二層擴展解決方案和 Celestia、EIP-4844、Danksharding、EigenDA 等 DA 解決方案的發展,將 rollup 交易數據發佈到 L1 的成本將不再是主要製約因素。


在這個即將到來的帶寬很便宜的環境中,下一個瓶頸將是計算吞吐量:在保持底層硬件需求足夠低的情況下,系統能以多快的速度執行交易,以實現足夠的去中心化。 FuelVM 的優勢是在設計時就考慮到了這些未來因素,並能相應地進行優化。


FuelVM 的差異化優勢


執行+驗證並行化


FuelVM 的可並行虛擬機背後的秘密是其嚴格的訪問列表——它要求用戶指出他們的交易將涉及哪些合約。檢查 FuelVM 中交易的確切組成是很有幫助的。


輸入:交易將觸及的所有合約 UTXO 的列表+解鎖 UTXO 或謂詞腳本的數據。


輸出:定義將被創建的 UTXO


Gas 信息:Gas 價格+Gas 限制


見證人:元數據+數字簽名授權


這裡的關鍵點是明確的「輸入」列表,它列出了將要消耗的所有 UTXO。這包括「特殊」合約 UTXO。如果在執行任何代碼之前,VM 能夠判斷出交易將觸及哪些合約,它就可以安全地並行執行所有其他無爭議的狀態訪問交易。



 交易執行和驗證都可以利用並行性 (驗證的程度甚至更高)。


請注意,由於交易輸出被明確包括在驗證中,因此在斷言另一個節點提出的區塊是否正確的過程中,不需要按順序執行重疊的交易。這意味著無論狀態爭用如何,驗證都可以完全並行進行。在實踐中,這意味著當節點與網絡同步時,它們可以實現更大的並行化,並且可以更快地趕上。


原生資產系統


在 EVM 中,有一種原生資產:ETH。所有其他資產都是通過處理餘額會計 (ERC20) 的智能合約實現的。在 Fuel 中,開發人員可以自由地在智能合約中實現資產,但是,有一個選項允許 VM 以本地方式處理這一點。


在餘額管理方面,本地資產比起 ERC20 風格的智能合約有幾個相當大的優勢。首先,本原生資產的操作比智能合約中操作狀態更便宜。這可以歸因於它在較低級的原語中運行 (UTXO 系統被用來代替操縱存儲)。其次,原生資產具有更好的用戶體驗,類似於發送 ETH 比發送 ERC20 簡單得多 (不需要設置審批)。


原生帳戶抽象+謂詞


帳戶抽像一直是研究的熱點話題,多年來以太坊社區在 EIP (EIP-86、EIP-2938、EIP-3074、EIP-4337、EIP-5003) 上進行了多次嘗試。實施和升級以太坊以支持帳戶抽像是困難的,這主要是因為核心團隊的工程帶寬/技術債務加上相關的複雜性,以及一長串更高優先級的項目。許多 rollup 從一開始就有機會在其新穎的執行環境上實施賬戶抽象。 FuelVM 就是其中之一,除了原生賬戶抽象之外,它還將包括一個有趣的新原語:謂詞。



謂詞是一個純粹的 (不訪問狀態) 合約腳本,它只返回一個布爾值 (true 或 false)。 UTXO 可以被鎖定在一個謂詞後面,所以只有當謂詞中定義的條件被滿足時,它們才能被使用。這帶來了一個有趣的 UX 機會,用戶可以將交易設置為只在某些條件下執行,然後一旦滿足謂詞,他們的交易就可以自動執行。此外,謂詞在被銷毀時可以被刪減,因此它們不會導致狀態膨脹。


簡單的演示示例:用戶設置一個交易,只要價格滿足謂詞中定義的閾值,就購買 X 個代幣。瞧,pice de rsistance,完全鏈上的無信任限價訂單,不會使狀態膨脹!


多維資源定價


資源定價是智能合約區塊鏈最關鍵的組成部分之一。通過將鏈上的資源需求保持在合理的、負擔得起的水平來維持去中心化。資源定價允許系統向用戶收取網絡中節點的「工作」的費用。


在 EVM 中,引入 EIP 的最常見原因之一是操作碼的重新定價。這是因為操作碼具有硬編碼的 Gas 價格,而資源的基礎價格並不按比例擴展 (從歷史上看,CPU 的改進比 SSD 更快)。理想情況下,這些系統能夠完全獨立地為每個資源定價,這樣整個收費系統就可以根據底層硬件系統的變化進行動態調整。


FuelVM 將能夠實現動態的多資源定價,這可以激勵節點運行者更好地優化其底層硬件,同時仍然最大優化「每區塊效用」。


圖片


這張圖演示了智能合約的需求明顯高於其他智能合約的情況。有了本地化的資源定價,其他合約就不會受到相同程度的影響。 NFT 空投便是一個很好的例子。這與資源定價與合約定價 (Solana 風格) 並不完全相同,但效果非常相似。具有特定資源配置文件的智能合約與其他合約的定價不同。對於 NFT 空投的示例,熱合約可能具有一個存儲密集型但計算成本非常低的資源配置文件。相對於存儲而言,對計算量要求較高的智能合約不會受到嘈雜的 NFT 空投的影響。


Solana 打破帳戶或合約收費市場的策略在實際基礎資源和對它們的需求之間增加了一層抽象。這意味著仍然可能存在費用非常低,但節點上的壓力非常大的情況。例如,由於一個事件 (例如,許多不同的 NFT 同時被鑄造),系統上的存儲負載可能非常高,但費用非常低,因為不是所有的流量都發生在一個帳戶上。每個帳戶的費用模型確實解決了帳戶的熱分區問題,但留下了系統無法正確定價底層資源的情況,因此它仍然可能導致失敗。


基於底層硬件資源為系統定價更簡潔、更準確,而不是試圖添加基於多個市場的資源定價的帳戶這種特定於網絡的抽象層。


狀態膨脹注意事項


正如 geth 團隊多次提到的,geth 目前的瓶頸在於狀態讀寫的 I/O。最初的想法是,100% 的 Merkle Patricia trie(MPT) 狀態將適合於標准設備的 RAM。現在的情況已經不同了,因為狀態已經增長到 900 多 GB,並且預計每年將增長大約 50-100 GB,這對於任何一個人來說都是不合理的,所以大多數節點已經轉向 SSD 來存儲狀態。從歷史上看,SSD 的不會隨著狀態大小的增長而迅速改進,因此這種成本將繼續影響網絡的去中心化。這是以太坊研究人員討論了一段時間的一個關鍵問題。


相反,FuelVM 在構建時就考慮到了這個問題。 Fuel Labs 的聯合創始人 John Adler 曾多次談到資源定價在智能合約消耗狀態或其他資源的過程中所扮演的角色。通過將適當的資源定價和更清晰的數據模型與 UTXO 系統相結合,FuelVM 將能夠保持狀態處於控制之下,降低運行節點的成本,這相當於增加了網絡的去中心化。


「排序器」的去中心化


儘管第 2 層允許我們從主鏈上卸載計算工作,但他們仍然需要提供一種機制來排序交易。許多第 2 層解決方案都是使用所謂的「排序器」啟動的。排序器是一個特權節點,負責對交易進行排序,執行狀態轉換,然後將狀態根更新連同壓縮的交易信息提交給第一層以太坊。值得注意的是,一台負責排序的超級計算機比許多冗餘地執行相同交易序列的小型計算機在每個 epoch 可以執行更多的交易。


這種中心化排序角色中有幾個關鍵問題需要得到更多的關注!


控制交易的順序是非常有利可圖的。我們在以太坊和其他區塊鏈中觀察到,MEV 是那些排序區塊的人的主要收入來源之一。正如我們今天在傳統金融中看到的那樣,單方控制排序和 MEV 捕獲最終會導致用戶執行能力的下降。


從可用性和監管的角度來看,中心化的排序器可能是一個單點故障。如果一個或少數組織正在運行排序器,它們可能會癱瘓或被關閉。這對網絡來說是一個活生生的風險。


一個中心化的排序器可以審查第二層的交易。排序器可以選擇任何交易,並在構建區塊的過程中以任何順序放置它們,這就產生了審查的能力。許多 L2 通過提供「強制交易」機制來處理這種情況,這種機制允許用戶繞過排序器,通過利用 L1 直接包括交易。


排序器可能會對 rollup 用戶做出不一致的鏈狀態承諾。這通常被稱為 equivocation,這基本上意味著排序器可以對 L2 的某些狀態做出誤導性的承諾。這是因為,rollup 的快速終結是一個可信的步驟,一個排序器可能濫用這種信任,導致用戶做他們不打算做的事情。


Fuel 如何解決這些問題?


首先,Fuel 不只是一個 rollup 或 L1 區塊鏈,相反,它是一個應用狀態轉換的系統,如果配置為 rollup 或者作為 L1 在網絡中運行以實現共識,它可以將狀態轉換發佈到 L1。關鍵的區別在於,Fuel 的執行引擎並不關心共識或交易排序。 Fuel 只負責盡可能快地應用交易。但是,由於 Fuel 可以在如此輕量級的硬件上運行,而且驗證是如此便宜,Fuel 可以引導一個多樣化和去中心化的共識網絡,這比運行性能較差的執行引擎 (如 EVM) 的同等系統要便宜得多。


此外,Fuel 團隊正在考慮將去中心化、MEV 和其他考慮因素結合在一起的第二層代幣經濟學。 Fuel 聯合創始人 John Adler 在 1 月份寫了一篇關於第二層區塊鏈的代幣模型的文章,闡述了一種通過允許 rollup 通過作為區塊生產者收取費用的權利來代幣化區塊空間的稀缺性,從而幫助去中心化區塊生產的代幣設計。收費只是區塊生產者收入的一部分,正如我們在其他鏈中看到的,MEV 是收入的另一大部分。與區塊空間的稀缺性類似,MEV 收入也將通過區塊生產權進行被代幣化。


狀態模型:UTXO vs 基於帳戶


將 UTXO 數據模型和賬戶模型之間的區別概念化的最佳方法如下:UTXO 可以被比作現金賬單,而賬戶模型更類似於銀行分類賬。帳戶系統自然會導致狀態膨脹,因為每個交易都試圖訪問同一個帳戶,而 UTXO 如果設計正確,則爭議較小。這一特點使其能夠更好地實現並行化,也可以通過簡化狀態截斷的過程來防止狀態膨脹。



繼續使用現金 vs.銀行分類賬的比喻,就可以清楚地了解為什麼使用 UTXO 並行化會容易得多。兩筆現金交易可以同時發生,它們彼此不需要知道任何信息,而如果一個分類賬上有 2 個賬戶更新,則兩筆交易都必須更新同一個共享分類賬。


VM 大戰


除了 Fuel 之外,其他團隊也在為智能合約區塊鏈開發下一代虛擬機,如 Mysten Labs 和 Aptos,後者正在使用最初由 Facebook 工程師設計的 Libra 項目的一部分的 MoveVM。這進一步支持了這樣一個論點:為了支持下一代區塊鏈應用,需要新的執行環境。所有這些項目都有有趣的方法,並做出了不同的權衡。


在 MoveVM 停滯不前的幾年裡,當 Libra 忙於打官司時,加密貨幣世界發生了很多變化。 Fuel 能夠適應這些變化並在一個節奏極快的行業中保持敏捷,而 Move 則略微落後。儘管如此,由於 Move 已經從 Facebook 分離出來,新的大型融資輪已經完成,他們肯定已經準備好開戰了!


結論


與其他 L2 不同,Fuel 計劃從一開始就通過設計 VM 來去中心化排序器角色,這樣就不需要昂貴的硬件來增加規模。


Fuel 是靈活的。它可以部署在許多環境中,但其優先考慮的是作為與以太坊對齊的 Optimistic Rollup。


Fuel 的用戶體驗將比 EVM 好得多,因為它採用了原生和新穎的方式與鏈交互,例如賬戶抽象、腳本和謂詞。


UTXO 數據模型的爭議自然比帳戶數據模型小,並且會帶來更多的並行性和更少的狀態膨脹。


原文鏈接


歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交