Move 編程語言最初用于構(gòu)建 Diem 區(qū)塊鏈。 它是由 Diem Association 創(chuàng)建的,該協(xié)會是 Meta 支持的技術(shù)聯(lián)盟。 盡管區(qū)塊鏈最終被廢棄,Move至今仍在使用。
Move 編程語言是一種可執(zhí)行的字節(jié)碼語言。 它實現(xiàn)智能合約和自定義交易。 Move 旨在解決其他區(qū)塊鏈編程語言(例如 Solidity)引起的問題。 然而,實現(xiàn)數(shù)字稀缺和對數(shù)字資產(chǎn)的控制的基本目標(biāo)保持不變。 特別是,它還旨在防止雙重支出,并使數(shù)字資產(chǎn)持有者能夠維護所有權(quán)信息。
在此過程中,Move 最大限度地提高了安全性,同時保持了精簡的設(shè)計,并且比非 Move 構(gòu)建的區(qū)塊鏈顯著降低了 Gas 成本。
Move 編程語言如何工作?
Move 使用線性邏輯,這意味著資源只能使用一次,并且永遠(yuǎn)不會復(fù)制或隱式丟棄。 這使得開發(fā)人員能夠?qū)o法刪除或復(fù)制的自定義資源類型進行編碼,并且比其他資源類型得到更好的處理。
Move 的靜態(tài)類型系統(tǒng)是變量必須定義為類型(數(shù)字/字)的地方。 它保護優(yōu)先資源。 盡管如此,它們?nèi)匀豢梢韵癯R?guī)元素一樣使用并存儲在數(shù)據(jù)結(jié)構(gòu)中或作為計算中的值提供。 資源在模塊中也是透明的,并且隱藏起來,不被外部資源調(diào)用。
此外,Move中的模塊靈活且安全,因為模塊、資源和過程之間的關(guān)系就像面向?qū)ο缶幊讨蓄?、對象和方法之間的關(guān)系。
Move還可以驗證鏈上的所有安全特征,并支持鏈下靜態(tài)驗證工具。 這大大降低了鏈上驗證的復(fù)雜性。 其設(shè)計基于三個核心決策:
—> 缺乏動態(tài)調(diào)度避免了調(diào)用圖構(gòu)建并實現(xiàn)了調(diào)用站點的靜態(tài)確定。 這使得 Move 能夠更輕松地識別過程調(diào)用的效果,并且不會產(chǎn)生額外的復(fù)雜性。
—> 由于其模塊化,模塊可以被隔離以進行功能驗證,并且它們有助于抽象數(shù)據(jù)和本地化資源上的關(guān)鍵操作。 通過將模塊與語言的類型系統(tǒng)一起封裝來保證安全性,這意味著模塊外部的代碼不能違反其類型。 此外,通過檢查孤立的模塊,它將為重要的模塊不變量提供徹底的功能驗證。
—> 最后,其有限的可變性允許使用類似于 C++ 的引用類型。 引用對于改變每個 Move 值至關(guān)重要,并且通常會在轉(zhuǎn)錄腳本中創(chuàng)建和銷毀臨時值。 與 Rust 類似,Move 的字節(jié)碼驗證器“借用檢查”來確認(rèn)至少一個可變引用。
—> 最后,Move 會拒絕不遵循類型安全、內(nèi)存安全和資源安全的程序。 相反,可以使用帶有編譯器的高級編程語言,負(fù)責(zé)檢查屬性。 另一種選擇是帶有安全檢查的低級無類型程序集。