Aptos對比回顧:Move 語言和資源模型

語言: CN / TW / HK

最近,基於Move語言的區塊鏈項目即Aptos ,被廣泛關注。截止到今天為主(09.13)Aptos,社區成員已經突破10w 用户,生態項目覆蓋Wallet、DEX、DeFi、Web3、NFT和MemeCoin、Game & Metaverse等多個領域;據統計到的數據,生態項目已達250+。

以太坊 以來,出現了許多新的layer1 區塊鏈,旨在解決已有公鏈尚未解決的的難題。 區塊鏈努力平衡去中心化、可擴展性和安全性的三難困境。其中大多數旨在實現可擴展性以促進使用率。Aptos 旨在解決困擾現有Layer1的可靠性、可擴展性和可用性問題,同時具有基於 EVM 的區塊鏈缺乏的安全功能。

Aptos 以高性能著稱,其背後是基於Move智能合約編程語言。關於Move 褒貶不一,有人稱其為智能合約發展的未來,也有人持謹慎態度,認為其並無太多創新。 在眾多公鏈的角逐中,我們可以看到使用最為廣泛的Solidity 語言、高性能的Rust 語言,基於Move 語言的是否能夠勝出?

Solana/Rust 與 Sui/Move

《智能合約發展:Move 與 Rust 對比研究 1 》一文對Solana/Rust 與 Sui/Move進行比較,其關鍵點如下:

智能合約是關於數字資產的編程,現有的編程語言和編程模型並不能適用。我們希望能有一種語言模型,能夠自然地與資源打交道,但同時又與不受信的代碼互動。

基於Rust的Solana在這裏做了妥協,它使智能合約在一個不信任環境中具備了必要的可編程性,但其編程模型並不自然。字節碼驗證使其有可能同時擁有這兩種特性。在某種程度上,它把不受信代碼變成了受信代碼。

基於Move的Sui,核心創新之處在於字節碼,被特意設計為可被驗證。雖然字節碼驗證本身並不是一個新概念,但Move所做的驗證確實是一種創新。通過其字節碼和驗證,Move實現了一個智能合約編程模型,對資源支持並保證在一個不受信任的環境中安全編程。

Move對智能合約開發的作用就像React對前端開發的作用一樣。説“用Move做的事能用Rust做”就像説“用React做的事能用jQuery做”一樣。當然有可能實現基於jQuery的應用,能夠與React應用相當,但這並不實際。React引入了虛擬DOM的概念,這對開發者來説是完全易懂的的,但使前台的開發速度更快、可擴展、更簡單。同樣,Move的字節碼驗證是一種底層技術,對開發者來説也易於理解,但它提供了一個更符合人體工效學、可組合、更安全的智能合約開發。由於其安全性和更直觀的編程模型,Move也大大降低了智能合約開發者的准入門檻。

Move對Solana的威脅

  1. 基於Move智能合約的開發時間要快得多。在Move中從頭開始開發一個智能合約可能比在Rust中快2-5倍。因此,Move生態系統的發展可以超過Solana。由於區塊鏈的開放性和無許可性,不存在嚴重的鎖定效應。Solana的開發者可能純粹因為經濟考量而被迫採用Move——要麼轉到Move,要麼被Move的開發者超越。

  2. Move的入門門檻比Rust或Solidity低得多。因為Move語法更簡單,編程模型更直觀。一些開發人員無法用Rust或Solidity進行智能合約開發,但在Move中可能能夠進行。由於需要學習的概念較少,非智能合約開發者進入Move,要比進入Rust(Rust本身就是一種複雜的語言,再加上Solana的概念,如PDA,會給初學者帶來很多困惑)或Solidity(你需要熟悉語言中非常精細的細節,如重入,以便能夠開發安全的智能合約)容易得多。即使現有Solana和Solidity開發者不轉向Move,尚未進入該領域的開發者市場也比該領域現有的開發者數量多出好幾個量級。由於Move的准入門檻較低,且開發速度更快,它比Rust或Solidity有更好的產品市場適應性,可以從這塊蛋糕中分得更大一杯羹。

智能合約簡史: 比特幣 與以太坊

除了以上對比之外,我們可以再回顧下比特幣和以太坊。比特幣的出現向世界展示了分佈式賬本技術是如何工作的,以及人們如何建立一個完全基於密碼學的金融系統。比特幣很強大,但只實現一個功能:記賬。要擴展這種分佈式賬本模型以獲得更多實用性,必須構建另一個區塊鏈網絡。如:用於加密傳輸的網絡、內容網絡,音樂共享網絡等等。這就是以太坊作為可編程區塊鏈平台發揮作用的地方,它允許構建和部署稱為智能合約的鏈上程序。開發者部署不同的智能合約來創建加密貨幣或 NFT,或者構建共享相同底層基礎設施的 DeFi 平台或 NFT 市場。

以太坊於 2015 年推出時,實際上無法看到它可以做什麼,或者將在其上構建什麼樣的智能合約。現在,經過七年多的發展,從業者對dApp和區塊鏈有了更好的瞭解。幾乎所有能夠更好地利用區塊鏈特性的 dApp 都與資產或所有權有關。不同的編程語言用於各種功能。例如,SQL 或結構化查詢語言與 JavaScript 不同。前者跨多個數據庫對結構化數據執行操作,而後者用於開發交互式網頁的跨平台應用程序。但是,儘管區塊鏈的透明度、去中心化和防篡改使交易更加安全,但它在數據存儲方面比傳統的集中式金融系統更慢且成本更高。此外,儘管有一些量身定製的鏈上數據存儲機制,但以太坊的智能合約語言和虛擬機(VM)大多基於中心化編程語言。它對數字資產和所有權等高價值數據的處理與客户十二生肖等低價值數據沒有任何不同。由於大多數 dApp 處理的是高價值資產,它會促使黑客在區塊鏈智能合約中尋找漏洞,發生了許多安全事件,導致大量資產損失。有些是故意攻擊,例如 DAO 的重入黑客;有些是意外事故,例如 Parity 錢包的鎖定。

Aptos的資源模型

Apots和Sui 都是基於Move的變體,通過採取不同的機制,來實現同樣的功能。Aptos的資源模型如何解決以上問題的?本文對Aptos的新功能,進行回顧。

在 Move 語言中,有價值的資產作為資源單獨處理。受 Haskell 和 Rust 中的線性類型以及 Rust 的所有權模型的影響,Move 中的資源受到一定的限制:

  1. 資源保證了安全,因為它們永遠不會被複制或丟棄,總是隻通過一次;

  2. 只有特定的指令才能創建或銷燬資源,所以開發者只需要更加關注這些創建和銷燬的過程,並正確實施即可;

  3. 這些資源存儲在用户的存儲帳户中。除了更高的安全保證之外,資源可以以與其他原生類型相同的方式使用。它們可以存儲為數據結構並作為參數傳遞給函數或從函數返回。

由於這些特性,Move 模塊(基於資源模型的智能合約)有很多好處:

  1. 安全性:用資源構建智能合約更安全。以太坊的常見攻擊,如重入,幾乎不可能發生在作為資源存儲的資產上;

  2. 性能:由於資源存儲在用户帳户中,而不是像以太坊的 EVM 這樣的共享智能合約存儲中,因此並行運行多個事務要容易得多。例如,以太坊上的所有 USDC 轉賬都必須按順序運行。相比之下,Aptos 上的 USDC 轉賬僅在發送方和接收方的賬户存儲上運行,這使得並行交易變得可行。

  3. 公平性:在區塊鏈上存儲數據成本高昂,因為它需要多個賬本管理員(也稱為礦工)來保存數據記錄。在 Aptos 上,用户的資源存儲在帳户中,這使得收取存儲租金成為可能。用户存儲的資源越多,支付的租金就越多。這不僅在收取存儲費方面是公平的,而且還鼓勵用户刪除無用的數據。

此外,Move的語法使其有可能用形式化驗證來證明一個函數完全做了它應該做的事情,並且永遠不會產生意外的結果。

結論

與其他區塊鏈相比,具有資源模型的區塊鏈有很多優勢。它們可以實現安全性、性能和公平性,如果想把下一個10億用户帶到區塊鏈上,這一點至關重要。Move的歷史並不長,但我們有理由相信這是一項偉大的技術並給智能合約的發展帶來革命性的變革。

參考

https://medium.com/@kklas/smart-contract-development-move-vs-rust-4d8f84754a8f

https://github.com/move-language/move

https://aptos.dev

https://aptos.dev/assets/files/Aptos-Whitepaper-47099b4b907b432f81fc0effd34f3b6a.pdf