Move プログラミング言語は、当初 Diem ブロックチェーンの構築に使用されました。これは、Meta が支援する技術コンソーシアムである Diem Association によって作成されました。ブロックチェーンは最終的に廃止されましたが、Move は現在でも使用されています。
Move プログラミング言語は、実行可能なバイトコード言語です。スマート コントラクトとカスタム トランザクションを実装します。Move は、Solidity などの他のブロックチェーン プログラミング言語で発生する問題を解決することを目的としています。ただし、デジタルの希少性を実現し、デジタル資産を管理するという基本的な目標は同じです。特に、二重支出を防ぎ、デジタル資産の所有者が所有権情報を維持できるようにすることも目的としています。
そうすることで、Move は、合理化された設計を維持しながら安全性を最大限に高め、Move 上に構築されていないブロックチェーンよりもガスコストを大幅に削減します。
Move プログラミング言語はどのように機能しますか?
Move は線形ロジックを使用します。つまり、リソースは 1 回しか使用できず、コピーされたり暗黙的に破棄されたりすることはありません。これにより、開発者は、消去または複製できず、他のリソースよりも優先されるカスタム リソース タイプをエンコードできます。
Move の静的型システムでは、変数は型 (数値/単語) として定義する必要があります。これにより、優先順位が付けられたリソースが保護されます。ただし、通常の要素のように使用したり、データ構造に格納したり、計算で値として提供したりすることもできます。また、リソースはモジュール内で透過的であり、外部ソースから呼び出されないように隠されています。
さらに、Move のモジュールは、モジュール、リソース、プロシージャ間の関係がオブジェクト指向プログラミングのクラス、オブジェクト、メソッド間の関係に似ているため、柔軟かつ安全です。
Move は、オンチェーンのすべての安全性特性を検証し、オフチェーンの静的検証ツールをサポートすることもできます。これにより、オンチェーン検証の複雑さが大幅に軽減されます。その設計は、次の 3 つの主要な決定に基づいています。
—> 動的ディスパッチがないため、呼び出しグラフの構築が回避され、呼び出しサイトの静的決定が可能になります。これにより、Move は、追加の複雑さなしに、より簡単にプロシージャ呼び出しの効果を識別できます。
—> モジュール性のおかげで、モジュールは機能検証のために分離することができ、データの抽象化やリソースに対する重要な操作のローカライズに役立ちます。安全性は、モジュールを言語の型システムと一緒にカプセル化することで保証されます。つまり、モジュール外部のコードはその型に違反できません。さらに、分離されたモジュールを検査することで、重要なモジュール不変条件の徹底的な機能検証が提供されます。
—> 最後に、その制限された可変性により、C++ に似た参照型を使用できます。参照は各 Move 値を変更するために不可欠であり、通常、一時的な値は転写スクリプト内で作成および破棄されます。Rust と同様に、Move のバイトコード検証は「借用チェック」を行って、少なくとも 1 つの可変参照を確認します。
—> 最後に、Move は、型の安全性、メモリの安全性、リソースの安全性に従わないプログラムを拒否します。代わりに、プロパティのチェックを担当するコンパイラを備えた高レベルのプログラミング言語を使用できます。代替案は、安全性チェックを備えた低レベルの型なしアセンブリです。
