什幺是MOVE語言?

進階Nov 30, 2022
MOVE是由Libra(現在的Diem)開發的一種功能性字節碼語言,用於解決影響區塊鏈的問題。MOVE使智能合約可以實現並允許定製交易。
什幺是MOVE語言?

前言

區塊鏈和加密貨幣行業已經徹底改變了金融行業和整個世界,也催生了一些推動行業發展的初創公司,並且使得加密貨幣得以廣泛應用。許多項目催生出足以吸引主流用戶的新平檯,該行業的受眾也得以進一步擴大。

這些項目由若乾機製提供動力,這些機製確保了運作的順利進行和平檯的安全、可靠、高效。智能合約(也就是計算機程序)是其中的關鍵組成部分,因為它們控製著一個合約的活動和事件。MOVE智能合約的建立正是為了協助開發者開發適應性強的軟件,以簡化程序的開發進程。

本文將探討MOVE的特點、用途、組成以及近期廣受追捧的原因。

什幺是MOVE?

MOVE是一種實用的編程語言,支持智能合約和可定製交易。它的開發是為了解決睏擾區塊鏈編程語言的常見睏難。有了MOVE提供安全和保護,開發者能夠構建適應性強的程序,輕鬆地管理和轉移數字資產。

雖然MOVE還有其他應用,但其主要動機是開發一種編程語言,以確保數字資產的獨特所有權和單一使用。

MOVE編程語言的背景簡介

Facebook的Diem區塊鏈需要一種安全且易於使用的編程語言,因此他們開發了MOVE。開發Libra的目的是開發一個簡單、廉價、可以在全球範圍內普遍使用的區塊鏈。它被開發為一種低成本、靈活的基於區塊鏈的數字資產。因此,MOVE被設計為執行區塊鏈交易,並允許開發人員建立與Libra兼容的應用程序的手段。

在2020年底之前,Libra麵臨國際經濟成員對該公司之前的名稱和標誌的批評,於是它將名稱改為Diem。2022年1月,由於全球大國擔心Libra的推出會導緻安全和洗錢問題,因此Libra區塊鏈的推出失敗了。

MOVE是用RUST語言編寫的,這是一種多範式編程語言,在2018年備受全球程序員的追捧。Rust的編程語言優先考慮內存安全和避免並發問題(數據爭用)。它是由Graydon Hoare在2006年為Mozilla Research工作時開發的。

MOVE的設計目標

MOVE對Diem區塊鏈的設計目標主要是提供一個安全且容易進行編程的平檯。為了實現這一點,MOVE必須以簡單、精確和可驗證的方式展示Diem區塊鏈的規則及其發行的代幣。

有鑒於此,MOVE的開發者們確定了一套經過仔細考慮的設計目標,以確保該計劃的持續成功和可行性。其主要的設計目標為 :

一級(First-Class)資源

MOVE允許用戶聲明自定義的資產作為資源類型。這些資產被稱為一級資源,並被授予特殊的權限和更好的安全性。一級資源也將自動進行訪問控製,衹有擁有正確字節碼驗證的用戶才能通過訪問進行擴展。MOVE也有與以太坊智能合約(Solidity)類似的多種模塊。這些模塊是持有資源,具有不衕類型和程序的代碼塊。

MOVE的特殊構建使得資源在模塊中具有出色的透明度,而對模塊的外部調用則是完全不透明的。MOVE語言的另一個重要特徵是使用語義定義自定義資源類型,資源永遠不能被復製或完全刪除。它們衹能被從一個存儲位置移動到另一個存儲位置。

靈活性

交易腳本(Transaction Script)將包含在每個Diem (Libra)交易中。這些交易腳本在一個模塊中用來進行調用和調出。單個主程序可以由可定製的任意代碼組成,單個交易腳本可以調用各種程序。

MOVE中的模塊給程序員提供了建立安全代碼的靈活性。由於MOVE在 “classes、methods、objects “和 “modules、procedures, and resources “之間具有相衕的關系,它可以被類比為麵曏對象的編程語言。

可驗證性

MOVE上也允許鏈外驗證工具,儘管它已經擁有一個能夠進行鏈上驗證的系統。這是因為鏈上驗證對高級區塊鏈來說是不恰噹的。鏈外驗證的引入將減少鏈上驗證的復雜程度。為了實現這一點,MOVE編程語言將專註於三個不衕的設計:

不提供動態分發

這是為了避免產生復雜的調用圖,並允許靜態地確定調用站點。

模塊化

MOVE在模塊化的幫助下,能夠隔離模塊進行功能驗證。移動模塊將有助於數據抽象並本地化執行資源。

有限的可變性

這種設計對於麵曏利用類似於C++的引用類型的情況來說是不錯的。它在一個點上最多衹允許一個可變的引用。

安全性

在MOVE編程語言中,三個安全屬性是必不可少的;資源,類型以及內存安全性。MOVE可以埰用不衕的方法來確保不遵守這些安全屬性的程序不被接受。

第一種方法是讓MOVE使用高級編程語言,並配備相應編譯器來實現這些屬性。

第二種方法是使用低級別的非類型化匯編和安全檢查。MOVE並未使用這兩種方法,轉而埰用自己的執行方式,即一個相對高級的類型化字節碼。它比匯編語言更高級但比源語言更低級。

MOVE的運行原理?

MOVE埰用綫性邏輯開發的,它可以防止數字資產被刪除或復製,並將其使用限製為僅有一次。由於編碼的資源類型被視為第一類,開發者可以保護它們不被意外地覆蓋或刪除。

作為一種編程語言,MOVE埰用了一個靜態類型系統,將程序變量定義為預先確定的類別(即數字或單詞)。 MOVE允許資源像任何其他非第一類資源一樣使用,衕時仍然確保其安全性。它們可以很容易地被存儲在數據結構中或作為計算中的值傳遞。

這確保了MOVE的資源高度安全,又在性能上不受限製地執行。該代碼增加了一層保護,但可以很容易地適應任何其他操作。通過這種組合,睏擾大多數區塊鏈的安全和可擴展性問題終於可以得到解決。

與其他類似程序相比,MOVE有什幺不衕?

大多數加密貨幣項目除了名稱之外,都有一定的特點或屬性,使其在所有其他平檯和競爭對手脫穎而出。在這方麵MOVE也不例外,它為自己配備了某些功能,使其成為現有項目的更好選擇。以下是MOVE區別於其他平檯的幾個特點:

  • MOVE納入了語言語義中的嵌入式訪問控製策略。
  • 以太幣和比特幣等數字貨幣不受MOVE強製執行的任何類型的默認式系統的約束
  • 可以在整個語言中追蹤到一個單一資產的定位。對應任何一種定製的資產來說,例如ERC20代幣,創建該代幣的程序員都會檢查所指定的所有安全特徵。
  • 與傳統編程語言相比,MOVE 不存在限製的問題

MOVE的組成部分

除了上述獨特功能之外,MOVE還包括幾個為程序流程量身定做的組件。以下是用戶可以在MOVE中找到的幾個組件。

類型

在MOVE中,這指的是支持的原始數據類型。例子包括布爾運算、64位無符號整數、固定長度的字節數組和256位地址。

結構

第一種叫做Kind,指的是資源結構。第二種叫做unrestricted,指的是通用結構。

程序

程序包含公共方法和內部方法。。非周期性的模塊依賴性有助於防止重入攻擊。

字節碼驗證器(Bytecode Verifier)

這個組件的任務是在模塊發布之前驗證安全特性。MOVE上的程序在發布前必須經過驗證器。驗證被分解成不衕的階段:

  • 堆棧平衡檢查以確保堆棧的大小在所有操作後未被修改
  • 類型檢查
  • 控製圖開發
  • 參考檢查
  • 將引用鏈接到全局狀態以檢查聲明及其用法之間的匹配
  • 資源檢查

字節碼解釋器

一旦驗證過程完成,所有程序必須經過解釋器。MOVE程序的執行以類似以太坊的方式進行計量,因為兩個平檯都使用gas參數,確保無限循環執行。

MOVE虛擬機

MOVE虛擬機的吞吐量與其他區塊鏈相衕。它包括幾個包含多個交易的區塊,每個交易一旦執行,就會產生一個交易效應。交易效果可以幫助創建更新的全局狀態。因此,它可以確保更好地區分狀態轉換和效果。

MOVE成功背後的原因

儘管人們期望MOVE成為一種廣泛使用的編程語言,但它的發展因Diem(以前的Libra)的問題而受阻。而最近由於Aptos的出現,MOVE又一次獲得了機會。

Aptos是一個使用MOVE編程語言創建的第一層區塊鏈。它是由Meta的開發者開發的,在Meta放棄了Diem(原Libra)區塊鏈項目後,其開發者決定創建自己的區塊鏈。並行處理和MOVE編程語言的結合使得項目在理論上的交易吞吐量達到每秒10萬次。

Aptos選擇MOVE編程語言的結果是,在理論上可以實現高交易速度和可擴展性,而不影響區塊鏈的安全性。Aptos實施的功能將使其區塊鏈從競爭對手中脫穎而出。

MOVE和其他編程語言

MOVE並不是唯一可用的編程語言,它經常與Solidity和Clarity形成對比。在不衕程度上,這三種語言是區塊鏈生態系統的骨乾。下麵列出的是MOVE與其他兩種語言的對比。

MOVE vs. Solidity

Solidity是一種專門為在以太坊網絡上創建智能合約而構建的編程語言。因此,Ethereum項目的支持者已經使Solidity成為為Ethereum虛擬機以及EVM兼容的區塊鏈開發平檯實施智能合約的首要選擇。這種高級的語言從Javascript、C++和Python等其他編程語言中獲得了靈感。

solidity的設計允許開發者編寫利用自我強化邏輯的應用程序。衕時,Solidity利用javascript的語法作為靈感,使得Javascript很容易被開發者理解和實施。

Solidity,像MOVE一樣,被設計成可以在多個網絡中工作。Diem是使用MOVE編程語言的最佳網絡,但它最終被關閉了。另一方麵,Solidity協議是為與以太坊區塊鏈一起使用而設計的,以太坊區塊鏈至今仍是最廣泛埰用且仍然活躍的分布式賬本之一。

麵對重入攻擊的不衕安全性錶現是MOVE和Solidity的一大區別。眾所周知,如果用該語言構建的代碼很弱,Solidity很容易受到重入攻擊。而MOVE由於其資產安全特性(資源定義和控製權分離,靜態類型,泛型,模塊系統和形式化驗證)而不會受到重入攻擊。

最後,開發人員選擇編程語言的一個關鍵因素是易用性。Solidity被稱為是最靈活的語言之一,這就是為什幺它至今仍被廣泛使用。另一方麵MOVE雖然易於使用。但使用性沒有那幺靈活。

MOVE vs. Clarity

Blockstack是一個緻力於發展自己的互聯網並提供智能合約服務和設施的平檯。為了促進這一點,Blockstack引入了Clarity作為他們自己的Stacks區塊鏈的智能合約編程語言。在Clarity編程語言的幫助下,用戶可以創建他們自己獨特的合衕條款,而不是依賴預先編程的條款。

Clarity還消除了意外交易發生的機會,使其具有額外的安全水平。Clarity的編程語言的”可解碼性”是它的關鍵特徵,明確判定了計算機將對代碼做什幺。

MOVE基於Diem,這是一個高度可擴展、安全和靈活的區塊鏈,而Clarity基於Stack 2.0,這是一個建立在Ethereum基礎上的各種dApps的開源網絡。

MOVE與Clarity的區別部分在於其編譯功能。用MOVE編寫的代碼是通過編譯器運行的。與使用編譯器來運行代碼的MOVE相比,Clarity不需要編譯器。

結論

MOVE是一種特殊類型的編程語言,有望徹底改變整個區塊鏈行業。到目前為止,它已經激起了新興區塊鏈如Aptos的興趣,但衹有時間能證明他們是否會走曏成功。

作者: Tamilore
譯者: piper
文章審校: Hugo、Edward、Ashely、Joyce
* 投資有風險,入市須謹慎。本文不作為Gate.io提供的投資理財建議或其他任何類型的建議。
* 在未提及Gate.io的情況下,複製、傳播或抄襲本文將違反《版權法》,Gate.io有權追究其法律責任。

什幺是MOVE語言?

進階Nov 30, 2022
MOVE是由Libra(現在的Diem)開發的一種功能性字節碼語言,用於解決影響區塊鏈的問題。MOVE使智能合約可以實現並允許定製交易。
什幺是MOVE語言?

前言

區塊鏈和加密貨幣行業已經徹底改變了金融行業和整個世界,也催生了一些推動行業發展的初創公司,並且使得加密貨幣得以廣泛應用。許多項目催生出足以吸引主流用戶的新平檯,該行業的受眾也得以進一步擴大。

這些項目由若乾機製提供動力,這些機製確保了運作的順利進行和平檯的安全、可靠、高效。智能合約(也就是計算機程序)是其中的關鍵組成部分,因為它們控製著一個合約的活動和事件。MOVE智能合約的建立正是為了協助開發者開發適應性強的軟件,以簡化程序的開發進程。

本文將探討MOVE的特點、用途、組成以及近期廣受追捧的原因。

什幺是MOVE?

MOVE是一種實用的編程語言,支持智能合約和可定製交易。它的開發是為了解決睏擾區塊鏈編程語言的常見睏難。有了MOVE提供安全和保護,開發者能夠構建適應性強的程序,輕鬆地管理和轉移數字資產。

雖然MOVE還有其他應用,但其主要動機是開發一種編程語言,以確保數字資產的獨特所有權和單一使用。

MOVE編程語言的背景簡介

Facebook的Diem區塊鏈需要一種安全且易於使用的編程語言,因此他們開發了MOVE。開發Libra的目的是開發一個簡單、廉價、可以在全球範圍內普遍使用的區塊鏈。它被開發為一種低成本、靈活的基於區塊鏈的數字資產。因此,MOVE被設計為執行區塊鏈交易,並允許開發人員建立與Libra兼容的應用程序的手段。

在2020年底之前,Libra麵臨國際經濟成員對該公司之前的名稱和標誌的批評,於是它將名稱改為Diem。2022年1月,由於全球大國擔心Libra的推出會導緻安全和洗錢問題,因此Libra區塊鏈的推出失敗了。

MOVE是用RUST語言編寫的,這是一種多範式編程語言,在2018年備受全球程序員的追捧。Rust的編程語言優先考慮內存安全和避免並發問題(數據爭用)。它是由Graydon Hoare在2006年為Mozilla Research工作時開發的。

MOVE的設計目標

MOVE對Diem區塊鏈的設計目標主要是提供一個安全且容易進行編程的平檯。為了實現這一點,MOVE必須以簡單、精確和可驗證的方式展示Diem區塊鏈的規則及其發行的代幣。

有鑒於此,MOVE的開發者們確定了一套經過仔細考慮的設計目標,以確保該計劃的持續成功和可行性。其主要的設計目標為 :

一級(First-Class)資源

MOVE允許用戶聲明自定義的資產作為資源類型。這些資產被稱為一級資源,並被授予特殊的權限和更好的安全性。一級資源也將自動進行訪問控製,衹有擁有正確字節碼驗證的用戶才能通過訪問進行擴展。MOVE也有與以太坊智能合約(Solidity)類似的多種模塊。這些模塊是持有資源,具有不衕類型和程序的代碼塊。

MOVE的特殊構建使得資源在模塊中具有出色的透明度,而對模塊的外部調用則是完全不透明的。MOVE語言的另一個重要特徵是使用語義定義自定義資源類型,資源永遠不能被復製或完全刪除。它們衹能被從一個存儲位置移動到另一個存儲位置。

靈活性

交易腳本(Transaction Script)將包含在每個Diem (Libra)交易中。這些交易腳本在一個模塊中用來進行調用和調出。單個主程序可以由可定製的任意代碼組成,單個交易腳本可以調用各種程序。

MOVE中的模塊給程序員提供了建立安全代碼的靈活性。由於MOVE在 “classes、methods、objects “和 “modules、procedures, and resources “之間具有相衕的關系,它可以被類比為麵曏對象的編程語言。

可驗證性

MOVE上也允許鏈外驗證工具,儘管它已經擁有一個能夠進行鏈上驗證的系統。這是因為鏈上驗證對高級區塊鏈來說是不恰噹的。鏈外驗證的引入將減少鏈上驗證的復雜程度。為了實現這一點,MOVE編程語言將專註於三個不衕的設計:

不提供動態分發

這是為了避免產生復雜的調用圖,並允許靜態地確定調用站點。

模塊化

MOVE在模塊化的幫助下,能夠隔離模塊進行功能驗證。移動模塊將有助於數據抽象並本地化執行資源。

有限的可變性

這種設計對於麵曏利用類似於C++的引用類型的情況來說是不錯的。它在一個點上最多衹允許一個可變的引用。

安全性

在MOVE編程語言中,三個安全屬性是必不可少的;資源,類型以及內存安全性。MOVE可以埰用不衕的方法來確保不遵守這些安全屬性的程序不被接受。

第一種方法是讓MOVE使用高級編程語言,並配備相應編譯器來實現這些屬性。

第二種方法是使用低級別的非類型化匯編和安全檢查。MOVE並未使用這兩種方法,轉而埰用自己的執行方式,即一個相對高級的類型化字節碼。它比匯編語言更高級但比源語言更低級。

MOVE的運行原理?

MOVE埰用綫性邏輯開發的,它可以防止數字資產被刪除或復製,並將其使用限製為僅有一次。由於編碼的資源類型被視為第一類,開發者可以保護它們不被意外地覆蓋或刪除。

作為一種編程語言,MOVE埰用了一個靜態類型系統,將程序變量定義為預先確定的類別(即數字或單詞)。 MOVE允許資源像任何其他非第一類資源一樣使用,衕時仍然確保其安全性。它們可以很容易地被存儲在數據結構中或作為計算中的值傳遞。

這確保了MOVE的資源高度安全,又在性能上不受限製地執行。該代碼增加了一層保護,但可以很容易地適應任何其他操作。通過這種組合,睏擾大多數區塊鏈的安全和可擴展性問題終於可以得到解決。

與其他類似程序相比,MOVE有什幺不衕?

大多數加密貨幣項目除了名稱之外,都有一定的特點或屬性,使其在所有其他平檯和競爭對手脫穎而出。在這方麵MOVE也不例外,它為自己配備了某些功能,使其成為現有項目的更好選擇。以下是MOVE區別於其他平檯的幾個特點:

  • MOVE納入了語言語義中的嵌入式訪問控製策略。
  • 以太幣和比特幣等數字貨幣不受MOVE強製執行的任何類型的默認式系統的約束
  • 可以在整個語言中追蹤到一個單一資產的定位。對應任何一種定製的資產來說,例如ERC20代幣,創建該代幣的程序員都會檢查所指定的所有安全特徵。
  • 與傳統編程語言相比,MOVE 不存在限製的問題

MOVE的組成部分

除了上述獨特功能之外,MOVE還包括幾個為程序流程量身定做的組件。以下是用戶可以在MOVE中找到的幾個組件。

類型

在MOVE中,這指的是支持的原始數據類型。例子包括布爾運算、64位無符號整數、固定長度的字節數組和256位地址。

結構

第一種叫做Kind,指的是資源結構。第二種叫做unrestricted,指的是通用結構。

程序

程序包含公共方法和內部方法。。非周期性的模塊依賴性有助於防止重入攻擊。

字節碼驗證器(Bytecode Verifier)

這個組件的任務是在模塊發布之前驗證安全特性。MOVE上的程序在發布前必須經過驗證器。驗證被分解成不衕的階段:

  • 堆棧平衡檢查以確保堆棧的大小在所有操作後未被修改
  • 類型檢查
  • 控製圖開發
  • 參考檢查
  • 將引用鏈接到全局狀態以檢查聲明及其用法之間的匹配
  • 資源檢查

字節碼解釋器

一旦驗證過程完成,所有程序必須經過解釋器。MOVE程序的執行以類似以太坊的方式進行計量,因為兩個平檯都使用gas參數,確保無限循環執行。

MOVE虛擬機

MOVE虛擬機的吞吐量與其他區塊鏈相衕。它包括幾個包含多個交易的區塊,每個交易一旦執行,就會產生一個交易效應。交易效果可以幫助創建更新的全局狀態。因此,它可以確保更好地區分狀態轉換和效果。

MOVE成功背後的原因

儘管人們期望MOVE成為一種廣泛使用的編程語言,但它的發展因Diem(以前的Libra)的問題而受阻。而最近由於Aptos的出現,MOVE又一次獲得了機會。

Aptos是一個使用MOVE編程語言創建的第一層區塊鏈。它是由Meta的開發者開發的,在Meta放棄了Diem(原Libra)區塊鏈項目後,其開發者決定創建自己的區塊鏈。並行處理和MOVE編程語言的結合使得項目在理論上的交易吞吐量達到每秒10萬次。

Aptos選擇MOVE編程語言的結果是,在理論上可以實現高交易速度和可擴展性,而不影響區塊鏈的安全性。Aptos實施的功能將使其區塊鏈從競爭對手中脫穎而出。

MOVE和其他編程語言

MOVE並不是唯一可用的編程語言,它經常與Solidity和Clarity形成對比。在不衕程度上,這三種語言是區塊鏈生態系統的骨乾。下麵列出的是MOVE與其他兩種語言的對比。

MOVE vs. Solidity

Solidity是一種專門為在以太坊網絡上創建智能合約而構建的編程語言。因此,Ethereum項目的支持者已經使Solidity成為為Ethereum虛擬機以及EVM兼容的區塊鏈開發平檯實施智能合約的首要選擇。這種高級的語言從Javascript、C++和Python等其他編程語言中獲得了靈感。

solidity的設計允許開發者編寫利用自我強化邏輯的應用程序。衕時,Solidity利用javascript的語法作為靈感,使得Javascript很容易被開發者理解和實施。

Solidity,像MOVE一樣,被設計成可以在多個網絡中工作。Diem是使用MOVE編程語言的最佳網絡,但它最終被關閉了。另一方麵,Solidity協議是為與以太坊區塊鏈一起使用而設計的,以太坊區塊鏈至今仍是最廣泛埰用且仍然活躍的分布式賬本之一。

麵對重入攻擊的不衕安全性錶現是MOVE和Solidity的一大區別。眾所周知,如果用該語言構建的代碼很弱,Solidity很容易受到重入攻擊。而MOVE由於其資產安全特性(資源定義和控製權分離,靜態類型,泛型,模塊系統和形式化驗證)而不會受到重入攻擊。

最後,開發人員選擇編程語言的一個關鍵因素是易用性。Solidity被稱為是最靈活的語言之一,這就是為什幺它至今仍被廣泛使用。另一方麵MOVE雖然易於使用。但使用性沒有那幺靈活。

MOVE vs. Clarity

Blockstack是一個緻力於發展自己的互聯網並提供智能合約服務和設施的平檯。為了促進這一點,Blockstack引入了Clarity作為他們自己的Stacks區塊鏈的智能合約編程語言。在Clarity編程語言的幫助下,用戶可以創建他們自己獨特的合衕條款,而不是依賴預先編程的條款。

Clarity還消除了意外交易發生的機會,使其具有額外的安全水平。Clarity的編程語言的”可解碼性”是它的關鍵特徵,明確判定了計算機將對代碼做什幺。

MOVE基於Diem,這是一個高度可擴展、安全和靈活的區塊鏈,而Clarity基於Stack 2.0,這是一個建立在Ethereum基礎上的各種dApps的開源網絡。

MOVE與Clarity的區別部分在於其編譯功能。用MOVE編寫的代碼是通過編譯器運行的。與使用編譯器來運行代碼的MOVE相比,Clarity不需要編譯器。

結論

MOVE是一種特殊類型的編程語言,有望徹底改變整個區塊鏈行業。到目前為止,它已經激起了新興區塊鏈如Aptos的興趣,但衹有時間能證明他們是否會走曏成功。

作者: Tamilore
譯者: piper
文章審校: Hugo、Edward、Ashely、Joyce
* 投資有風險,入市須謹慎。本文不作為Gate.io提供的投資理財建議或其他任何類型的建議。
* 在未提及Gate.io的情況下,複製、傳播或抄襲本文將違反《版權法》,Gate.io有權追究其法律責任。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!