📢 Gate廣場專屬 #WXTM创作大赛# 正式開啓!
聚焦 CandyDrop 第59期 —— MinoTari (WXTM),總獎池 70,000 枚 WXTM 等你贏!
🎯 關於 MinoTari (WXTM)
Tari 是一個以數字資產爲核心的區塊鏈協議,由 Rust 構建,致力於爲創作者提供設計全新數字體驗的平台。
通過 Tari,數字稀缺資產(如收藏品、遊戲資產等)將成爲創作者拓展商業價值的新方式。
🎨 活動時間:
2025年8月7日 17:00 - 8月12日 24:00(UTC+8)
📌 參與方式:
在 Gate廣場發布與 WXTM 或相關活動(充值 / 交易 / CandyDrop)相關的原創內容
內容不少於 100 字,形式不限(觀點分析、教程分享、圖文創意等)
添加標籤: #WXTM创作大赛# 和 #WXTM#
附本人活動截圖(如充值記錄、交易頁面或 CandyDrop 報名圖)
🏆 獎勵設置(共計 70,000 枚 WXTM):
一等獎(1名):20,000 枚 WXTM
二等獎(3名):10,000 枚 WXTM
三等獎(10名):2,000 枚 WXTM
📋 評選標準:
內容質量(主題相關、邏輯清晰、有深度)
用戶互動熱度(點讚、評論)
附帶參與截圖者優先
📄 活動說明:
內容必須原創,禁止抄襲和小號刷量行爲
獲獎用戶需完成 Gate廣場實名
Move語言安全性解析:智能合約的新範式
Move語言安全性解析:智能合約語言的變革者
前言
Move語言是一種可在實現MoveVM的區塊鏈環境中運行的智能合約語言。它的設計初衷考慮了區塊鏈和智能合約的諸多安全性問題,並借鑑了Rust語言的部分安全設計理念。作爲新一代以安全爲主要特點的智能合約語言,Move的安全性如何?它是否能在語言層面或相關機制上規避EVM、WASM等合約虛擬機常見的安全威脅?Move本身是否存在特有的安全性問題?
本文將從語言特性、運行機制和驗證工具三個層面,探討Move語言的安全性問題。
1. Move語言的安全特性
與許多現有編程語言不同,Move語言被設計爲既支持與不受信任代碼安全交互,又支持靜態驗證。Move舍棄了基於靈活性考慮的非線性邏輯,不支持動態分派和遞歸外部調用,而是使用泛型、全局存儲、資源等概念來實現替代性的編程模式。例如,Move省略了可能導致重入漏洞的動態調度和遞歸調用特性。
Move的主要安全特性包括:
模塊:每個Move模塊由一系列結構類型和過程定義組成。模塊可以導入類型定義並調用其他模塊中聲明的過程。
結構體:可以定義爲資源類型,表示可存儲在持久全局鍵/值存儲中。
過程:定義了初始化、安全過程和不安全過程。
全局存儲:允許Move程序存儲持久數據,這些數據只能由擁有它的模塊以編程方式讀寫。
不變量檢查:支持靜態檢查的不變量,保證系統中資源的完整性。
字節碼驗證器:在字節碼級別強制執行類型系統,防止惡意客戶端模塊的非法操作。
通過不變量檢查和字節碼驗證器兩種機制,Move在編譯時實現了代碼安全性的雙重保障。
2. Move的運行機制
Move程序運行在虛擬機中,運行時不能訪問系統內存。這使Move可以在不信任的環境中安全運行,不會被破壞或濫用。
Move程序在堆棧上執行,全局存儲被分爲內存(堆)和全局變量(棧)兩部分。內存是一階存儲,其單元不能存儲指向內存單元的指針。全局變量用於存儲指向內存單元的指針,但索引方式與內存不同。
Move的字節碼指令在棧式解釋器中執行。棧式虛擬機易於實現和控制,對硬件環境要求較少,適合區塊鏈場景。相比寄存器式解釋器,棧式解釋器在變量間的copy和move操作更易控制和檢測。
Move程序運行時狀態爲⟨C, M, G, S⟩四元組,包括調用棧(C)、內存(M)、全局變量(G)和操作數(S)。堆棧還維護函數表以解析包含函數體的指令。
MoveVM將數據存儲和調用堆棧(過程邏輯)存儲分開,這是與EVM最大的不同。在MoveVM中,用戶狀態(帳戶地址下的資源)獨立存儲,程序調用必須符合權限和資源相關的強制規則。這種設計犧牲了一定靈活性,但在安全性和執行效率(有助於實現並發執行)方面獲得很大提升。
3. Move Prover
Move Prover是一種基於推理的形式化驗證工具。它使用形式化語言描述程序行爲,並用推理算法驗證程序是否符合預期,幫助開發人員確保智能合約的正確性,減少交易風險。
Move Prover使用演繹驗證算法驗證程序是否符合預期。這意味着它可以根據已知信息推斷程序行爲,確保與預期行爲匹配。這有助於保證程序正確性,減少人工手動測試工作量。
Move Prover的工作流程如下:
Move使用Move Specification Language描述規範系統。它是Move語言的子集,支持靜態描述程序正確性行爲,不影響生產。可獨立編寫爲專門的規約化文件,將業務代碼和形式化驗證代碼分開。
Move Prover是一種有用的工具,可幫助開發人員確保智能合約正確性。它使用形式化語言描述程序行爲,並用推理算法驗證程序是否符合預期,有助於減少交易風險,使開發人員能更自信地將智能合約部署到生產環境。
4. 總結
Move語言在安全性設計上非常出色,在語言特性、虛擬機執行和安全工具層面都給出了全面考慮。語言特性犧牲了部分靈活性,強制類型檢查和線性邏輯,便於編譯檢查和形式化驗證的自動化和安全可驗證性。MoveVM設計將狀態與邏輯分開,更貼合區塊鏈上資產安全管理需求。
在語言層面,Move可有效避免EVM常見的重入、溢出、Call/DelegateCall注入等漏洞。但鑑權、代碼邏輯、大整數結構溢出等問題仍需開發者注意。Move Prover在整體大意疏忽時可能無法發揮作用。
雖然Move語言在安全層面爲程序員考慮了很多,但沒有完全安全的語言和程序。建議Move智能合約開發者使用第三方安全公司審計服務,並將specification部分代碼的編寫和驗證交由第三方安全公司完成。