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