作者:DongHyun Kang,Xangle;編譯:松雪,金色財經
1、簡介
在Web3產業,重點是為用戶提供無縫的體驗。從這個角度來看,dApp建構在哪個區塊鏈上並不那麼重要,比起確保在不同區塊鏈之間實現平穩用戶體驗的互通性更為關鍵。在2021年和2022年,關於單體區塊鏈和多鏈之間的激烈辯論不斷發展。值得注意的是,Solana和Luna曾一度嶄露頭角,然後逐漸淡出,為Aptos和Sui搶佔市場的關注創造了機會。
Aptos 和Sui 都是Meta 區塊鏈專案Diem(以前的Libra)的後繼者,有一個共同點——他們都使用Move 程式語言。本文重點介紹Aptos,深入探討其使用的Move 語言和MoveVM 狀態機的特性,以及它如何與現有的程式語言和狀態機(例如Solidity/EVM 和Rust/WASM)進行比較。
2、什麼是Move?
2.1 Move 是如何誕生的
Facebook(現為Meta)的Diem 團隊發現了區塊鏈產業廣泛採用的Solidity 程式語言的兩個限制。首先,Solidity 有重入攻擊和雙花攻擊等漏洞。雖然採用Solidity 的區塊鏈網路(例如以太坊)透過共識演算法減輕了這些攻擊,但不可否認的事實是,語言本身蘊藏著潛在的攻擊向量。
其次,Solidity 無法並行化事務處理導致瓶頸。為了防止雙重支出,Solidity 要求依序執行智能合約等交易。這種順序處理限制了速度,進而阻礙了區塊鏈的可擴展性。
在這些擔憂的推動下,Diem 團隊(Meta 的區塊鏈部門)受Rust 的影響,開發了Move 語言,以解決上述缺點。雖然Rust 是一種值得稱讚的程式語言,但在用於編寫智能合約時可能會導致冗長的程式碼。隨後,Aptos保留了原來的Move語言,同時融入了物件導向的程式設計模型,演變成Aptos Move。同時,Sui 採用了一種稱為Sui Move 的物件導向語言。
2.2 Aptos Move/MoveVM 功能
Aptos 的Move/MoveVM 經過精心設計,主要專注於安全性。此外,Aptos 簡化了Move 的合約程式碼並啟用了並行處理,最大限度地減少了區塊鏈攻擊的可能性並最大限度地提高了可擴展性。在本節中,我們將深入探討Move 如何實現這些功能。
透過Move Prover 和資源模型增強安全性
形式驗證涉及以數學方式證明軟體的程式碼遵守特定的規則或屬性。 Aptos 透過Move Prover 工具利用形式驗證來驗證其智慧合約的安全性。 Move Prover 可以透過應用形式驗證來防禦智慧合約中潛在的攻擊媒介,例如雙花和重入攻擊,同時還可以識別其他程式碼錯誤並確保穩定性。與其他依靠共識演算法來抵禦雙花和重入攻擊的區塊鏈不同,Move 透過其語言和工具主動解決這些問題。
靜態調度VS 動態調度
此外,MoveVM採用靜態調度來呼叫函數,以防止函數呼叫的重入攻擊。相較之下,傳統的以太坊虛擬機器(EVM)使用動態調度。這兩種方法的不同之處在於程式執行序列中函數呼叫的時序,通常會依照以下順序進行:編譯→連結→載入→運行→終止。靜態調度涉及在編譯時調用函數,使智能合約能夠在此經歷初步的錯誤檢查階段。因此,在MoveVM中,智能合約提前進入驗證階段,從源頭有效預防重入攻擊。
事務並行處理
Aptos MoveVM 透過交易並行處理增強可擴展性。為了實現這一目標,MoveVM 採用Block-STM(區塊級軟體事務記憶體)將資料庫事務分佈在多個執行緒之間以進行並行執行。仔細觀察Block-STM 可以發現以下主要特徵:
-
Block-STM 利用樂觀並發控制並行執行交易並隨後驗證它們。遇到衝突的事務會重新執行。
-
Block-STM採用多版本資料結構來防止寫入衝突。所有寫入以及事務ID 和重新執行的次數都儲存在同一位置。這確保了即使交易被重新執行,交易也會按照預先定義的順序處理。
-
Block-STM引入了協作調度程序來優先考慮子事務的執行和驗證,從而指定事務執行緒之間的處理順序。 Move 使用這種協作調度程序來防止事務之間的衝突並防止其失效。
-
最後,動態依賴性估計用於透過估計交易的依賴性並識別相關交易來對交易進行分組。
透過Block-STM,Aptos透過以下方式實現並行交易處理。此外,雖然驗證器之間的驗證是統一的,但每個驗證器之間的執行是並行發生的,這進一步增強了可擴展性。 Aptos的事務平行處理總結如下:
1. 用戶產生交易並將其發送到網路。
2. 驗證器驗證交易。
3. 經過驗證的交易根據動態依賴估計進行分組,同時每個交易組由驗證器進行並行處理。
4. 處理後的交易被編譯成區塊並在整個網路中傳播。
Aptos 代幣標準增強了開發人員和使用者的便利性
Aptos 也使用Move 建構了自己的代幣標準,即Aptos Coin Standard。在此過程中,Aptos 改進了與傳統EVM 相關的限制。 MoveVM 無需為代幣發行單獨發行智能合約,只需少量的Gas 費用即可發行代幣。然而,這並不是一個顯著的優勢,因為Solana 和Algorand 等非EVM 區塊鏈也使用自己的代幣標準。
儘管如此,從2023 年8 月開始,Aptos 推出了FT 和NFT 兩個新標準。值得注意的是,新的FT 標準使開發者可以根據自己的開發目標選擇和發行以下其中一種:常規代幣資產、代幣化RWA 或遊戲內代幣。這似乎符合Aptos 進軍不斷成長的RWA 相關市場的策略。在實踐中,Web 2.0 公司在對RWA 進行代幣化時通常會尋求對資產的控制權,但以太坊的限制使得實現這一目標具有挑戰性,導致許多公司開始創建自己的區塊鏈。相比之下,Aptos 透過代幣標準設定在協議層面實現了這一目標。
3. 與其他語言和虛擬機器的比較
比較Aptos Move/Move VM &其他語言與虛擬機
3.1. Move vs. Solidity
Move/MoveVM 的創建是為了彌補Solidity 的局限性,因此它比Solidity 更安全且可擴展。如前所述,Move/MoveVM 的功能增強了Aptos 的安全性和可擴充性。如同2.1所提到的,MoveVM在語言階段防止了重入和雙花攻擊,而Solidity/EVM已經出現了大量的重入攻擊。 2016年以太坊的DAO攻擊就是一個很好的例子,雖然以太坊基金會已經推出了防範措施,但DeFi中仍然存在大量的重入攻擊。駭客仍在嘗試重入攻擊,希望將錯誤的合約部署在EVM 生態系統的DeFi 中。
如上所述,Move/MoveVM 也具有高度可擴展性,由於能夠並行處理事務,理論上最高可達160,000 TPS。這使得Aptos 擺脫了瓶頸。同時,由於雙花和重入攻擊的風險,EVM 必須依序處理交易。因此,EVM 鏈遇到了瓶頸,當大量交易同時發生時,gas 成本迅速上升,交易陷入停滯。
在靈活性方面,Solidity/EVM 比Move/MoveVM 更有優勢。 Solidity/EVM 使用動態調度,而Move/MoveVM 則使用靜態調度。 Move 使用靜態調度增強了智慧合約的安全性,但與Solidity 相比限制了其功能。此外,Solidity 允許隨時升級協定和合約程式碼,而Move 對這些升級施加了限制。在區塊鏈之間的互通性方面,Solidity 比Move 表現出更大的靈活性和可擴展性,主要是因為Team EVM(包括以太坊)偏向模組化區塊鏈,而Team Move 則傾向於整體區塊鏈。
3.2. Move vs. Rust
Move 源自Rust,與Rust 有許多效能和功能相似之處,例如效率和安全性。關鍵區別在於它們的預期目的:Rust 作為通用程式語言,而Move 專門從事智能合約開發。 Rust 是為更廣泛的應用而設計的,並廣泛應用於各種開發環境中,包括與區塊鏈無關的開發環境。因此,使用Rust 編寫智能合約程式碼可能會導致程式碼更長、更複雜。相比之下,Move 被客製化為專用於智慧合約的區塊鏈專用語言。雖然這限制了它在區塊鏈開發中的使用,但在編寫智能合約時,它會導致相對簡潔且不太複雜的程式碼。
上圖是Solana 和Sui 開發同一個智慧合約時的程式碼長度比較。顯然,更長的程式碼意味著更多潛在智能合約攻擊的機會。較長的程式碼還會增加開發人員犯錯的機會,而這些錯誤在程式碼檢查期間可能會被忽略。相比之下,Move 的優勢在於其程式碼開發更簡單,減少了開發人員出錯的可能性並促進更有效的檢查。
3.3. Aptos Move vs. Sui Move
Aptos Move 和Sui Move 都源自於同一個Diem 團隊,因此有許多相似之處。它們最初受到Rust 的影響,這賦予了它們相似的語法和功能。此外,這兩個項目都使用Move Prover 來驗證智能合約。
然而,Aptos Move保留了原始的Diem區塊鏈並採用了物件導向的程式設計模型,而Sui Move則引入了物件導向的Sui區塊鏈作為Diem的演變。 Sui 過渡到物件導向的區塊鏈以支援並行性,這取決於了解要讀取和寫入的資料。因此,Aptos 利用資源模型將應用程式建構塊分為三個不同的單元:唯一識別碼、屬性和方法。另一方面,Sui 採用物件導向的模型,將應用程式的建構塊劃分為狀態和行為。這導致Aptos Move 為開發人員提供了相當大的靈活性,而Sui Move 則相對固執己見。
Aptos Move 和Sui Move 在區塊鏈上的操作方式上表現出差異。首先,兩個區塊鏈都支援並行處理,儘管方法不同。如前所述,Aptos 透過Block-STM 實現並行交易處理,而Sui 採用有向無環圖(DAG)結構來儲存交易。 DAG結構切斷了交易互連,實現了平行交易處理。
另一個區別在於如何防止重入攻擊。如前所述,Aptos 透過在執行前使用靜態調度來驗證智慧合約的狀態來防止重入攻擊。相較之下,Sui 透過在交易執行期間僅更新一次智能合約的狀態來阻止重入攻擊,確保即使攻擊者中斷交易,狀態也保持不變。此外,由於Sui的DAG結構不依賴交易順序,因此一筆交易的中斷不會影響其他交易的獨立處理,從而為防止重入攻擊提供了額外的保護。
4.下一步:建立強大的開發者生態系統和殺手級DApp
Move/MoveVM 為區塊鏈開發提供了一個有前景的平台,但它面臨兩個重大挑戰。 1)在擁有成熟的開發者生態系統方面,Move 仍然落後於Solidity。 Aptos 已經存在近一年了,而Sui 最近才推出主網。因此,與擁有成熟開發者社群的Solidity 相比,Move 有著相當長的路要走。 Solidity 擁有八年歷史,提供廣泛的開發人員工具和專門的培訓計畫。對於開發人員來說,擁有一個支持性社群來為其工作提供回饋至關重要,Solidity 已經擁有一個在全球舉辦黑客馬拉鬆的龐大開發者社群。 Turing 估計Solidity 開發者社群約有20 萬名。
相較之下,Move 自Facebook 以來一直在發展,但大部分都是Diem 團隊的內部努力。因此,Move 的開發者生態系統既不像Solidity 那麼成熟,也不像Solidity 那麼廣泛。雖然存在Aptos 開發者社區,包括Aptos 論壇,但它缺乏Solidity 中的結構化培訓計劃、開發者工具和開放反饋機制。 Sui 背後的公司Mysten Labs 估計Move 開發人員的數量為10,000 人,儘管Aptos 沒有提供官方數字。
其次,2)Move 缺乏出色的殺手級dApp。許多EVM 鏈(例如以太坊和Arbitrum)託管著眾多在加密用戶中廣泛使用的dApp。然而,Move 生態系統尚未產生類似的出色應用程式。截至9 月26 日,Aptos 的總鎖定價值(TVL) 為4,350 萬美元,明顯小於主要EVM 第2 層,後者的基礎超過3 億美元(資料來源:DeFiLlama)。
Aptos 基金會承認其面臨的挑戰,並正在積極採取措施克服這些挑戰。首先,Aptos基金會高度重視開發開發者工具,以培育繁榮的開發者生態系統。他們推出了Aptos 教學來幫助早期開發人員入門,並正在創建像Move Spider 這樣的教育計畫。此外,Aptos 基金會正在透過在世界各地(包括美國、韓國和中國)組織聚會小組來培養開發者社區,以進一步增強開發者生態系統。
在業務方面,Aptos 正在積極與知名實體和在各個領域擁有大量分銷的實體建立合作夥伴關係,例如NBCUniversal、微軟、Google、Netmarble(Marblex)、Neowiz 和Chingari 等。另一方面,Aptos 正在努力透過AIP-41 內部化鏈上隨機性,以促進遊戲公司整合。 Aptos 採用AIP-41 為遊戲公司提供了一種經濟高效的中間件替代方案,可取代Chainlink 的VRF 等中間件,以確保EVM 鏈內的項目隨機化,使Aptos 成為一個有吸引力的選擇。
5. 結束語
本文以Aptos 的Move/MoveVM 為中心,與現有的區塊鏈開發語言進行功能比較。研究結果表明,Move 是專門為開發區塊鏈智能合約而構建的,並且比現有語言具有明顯的技術優勢。然而,就開發者和dApp 生態系統而言,Move 仍處於早期階段。目前,Solidity 的開發者數量是Move 的約20 倍,在總鎖定價值(TVL)和影響力dApp 方面,Solidity 佔據著穩固的地位。儘管如此,Move 才誕生一年,是少數專門用於區塊鏈開發的程式語言之一,這表明它具有巨大的未開發潛力。此外,Diem 團隊開發的該語言的聲譽增加了Move 生態系統成長的前景。因此,如上圖所示,作為一種綜合性區塊鏈程式語言的Move是否能夠發展到與Solidity競爭是值得關注的。