|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
移動 (プログラミング言語)
Move(プログラミング言語)とは何ですか?
Move プログラミング言語は、最初は Diem ブロックチェーンの構築に使用されました。これは、Meta が支援する技術コンソーシアムである Diem Association によって作成されました。ブロックチェーンは最終的に廃棄されましたが、Move は現在でも使用されています。
Move プログラミング言語は、実行可能なバイトコード言語です。スマートコントラクトとカスタムトランザクションを実装します。 Move は、Solidity などの他のブロックチェーン プログラミング言語から生じる問題を解決することを目的としています。ただし、デジタルの希少性とデジタル資産の管理を達成するという基本的な目標は変わりません。特に、二重支払いを防止し、デジタル資産の所有者が所有権情報を維持できるようにすることも目的としています。
そうすることで、Move は合理化された設計を維持しながら安全性を最大限に高め、Move で構築されていないブロックチェーンよりもガスコストを大幅に削減します。
Move プログラミング言語はどのように機能しますか?
移動では線形ロジックが使用されます。つまり、リソースは 1 回だけ使用でき、コピーしたり暗黙的に破棄したりすることはできません。これにより、開発者は、消去または複製できず、他のものよりも適切に扱われるカスタム リソース タイプをエンコードできるようになります。
Move の静的型システムでは、変数を型 (数値/単語) として定義する必要があります。優先順位の高いリソースを保護します。それでも、通常の要素と同様に使用でき、データ構造に保存したり、計算の値として指定したりできます。リソースはモジュール内でも透過的であり、外部ソースからの呼び出しから隠されています。
さらに、モジュール、リソース、プロシージャ間の関係は、オブジェクト指向プログラミングにおけるクラス、オブジェクト、メソッド間の関係に似ているため、Move のモジュールは柔軟で安全です。
Move は、すべての安全特性をオンチェーンで検証し、オフチェーンの静的検証ツールをサポートすることもできます。これにより、オンチェーン検証に関する複雑さが大幅に軽減されます。その設計は、次の 3 つの主要な決定に基づいています。
動的なディスパッチがないため、コール グラフの構築が回避され、コール サイトの静的な決定が可能になります。これにより、Move は、複雑さを増すことなく、プロシージャ呼び出しの影響をより簡単に識別できるようになります。
そのモジュール性のおかげで、機能検証のためにモジュールを分離することができ、データの抽象化とリソースに対する重要な操作のローカライズに役立ちます。安全性は、言語の型システムと一緒にモジュールをカプセル化することによって保証されます。つまり、モジュールの外側のコードがその型に違反することはできません。さらに、分離されたモジュールを検査することで、モジュールの重要な不変条件について徹底的な機能検証が可能になります。
最後に、可変性が制限されているため、C++ と同様の参照型を使用できます。参照は各 Move 値を変更するために不可欠であり、通常、一時的な値は転写スクリプト内で作成および破棄されます。 Rust と同様に、Move のバイトコード検証ツールは「チェックを借用」して、少なくとも 1 つの変更可能な参照を確認します。
最後に、Move は、型安全性、メモリ安全性、およびリソース安全性に従っていないプログラムを拒否します。代わりに、プロパティのチェックを担当するコンパイラを備えた高級プログラミング言語を使用できます。代替案は、安全チェックを備えた低レベルの型なしアセンブリです。
Move プログラミング言語はどう違うのですか?
Move プログラミング言語は、いくつかの点で他のブロックチェーン プログラミング言語より際立っています。
プロシージャのカスタム データ型の定義に制限はありません。
言語セマンティクスにアクセス制御ポリシーを埋め込みます。
(ビットコインやイーサリアムとは異なり) デジタル資産のデフォルトのタイプ システムが廃止されます。
これにより、プログラミング言語で表現された単一のアセットを見つけることができます。カスタム資産は、開発者によって安全性についてレビューされる必要があります。
これにより、Move は、開発者が独自に設計する必要がなく、希少性のある新しいアセットを簡単に作成できるようになります。さらに、開発者はアクセス制御を変更およびカスタマイズできるため、プログラミング言語が競合他社よりも多用途でスケーラブルになります。
Move プログラミング言語のコンポーネント
Move プログラミング言語には、その基礎を形成するいくつかのコンポーネントがあります。
種類
これらには、ブール値、符号なし整数 (64 ビット)、固定サイズのバイト配列、およびアドレス (256 ビット) データ型を使用できます。
構造体
2 つの具体的なタイプ: 種類と無制限。前者はリソース構造を指し、後者は一般構造を指します。
手順
パブリックまたは内部のメソッド。非周期的なモジュールの依存関係は、再入攻撃を防ぐのに役立ちます。
バイトコードベリファイア
モジュールの公開前に安全特性をチェックすることに重点を置いています。プログラムはネットワーク上で稼働する前に、検証ツールを通過し、次のようないくつかの検証段階を通過します。
型チェック
スタックバランスチェック
参照チェック
制御グラフの開発
参照リンク
リソースのチェック
バイトコードインタープリタ
検証を経たもので、ガスを使用したイーサリアムに似ています。したがって、無限ループの実行が保証されます。
仮想マシンの移動
他のブロックチェーンと同様に、ブロックには複数のトランザクションが含まれており、各トランザクションはトランザクション効果を生み出すために実行されます。エフェクトは、エフェクトと状態遷移を分離して、ブロックチェーンの更新されたグローバル状態を生成します。
Move プログラミング言語を使用するブロックチェーンはどれですか?
Moveは、Metaによって廃棄されたDiemブロックチェーンで使用されました。 Move上に構築されている現在のブロックチェーンには、AptosブロックチェーンとSuiブロックチェーンが含まれます。
信頼できる実行環境(TEE) 信頼できる実行環境(TEE)は、メインプロセッサ内の安全な領域であり、外部の世界からの改ざんや観察を恐れることなく、敏感なコードとデータが動作できる保護スペースを提供します。 |
人間の鍵 人間の鍵は、あなたが何であるか、あなたが知っていること、またはあなたが持っているものから派生した暗号化キーです。それらは、デジタル資産を保護し、プライバシーを保護し、分散型Webにアクセスするために使用されます。 |
オープンファイナンス(openfi) 「Open Finance」の略であるOpenFiは、従来の金融(TRADFI)を分散型金融(DEFI)と統合する財務フレームワークです。 |
Rollups-as-a-service(raas) Rollups-as-a-Service(RAAS)により、ビルダーは独自のロールアップをすばやく構築および起動できます。 RAASプロバイダーは、基礎となる技術スタックのカスタマイズ、コード管理、コアインフラストラクチャとのワンクリックカスタム統合など、エンドツーエンドのソリューションを提供します。 |
データの可用性サンプリング(DAS) データの可用性サンプリング(DAS)は、各参加者がデータセット全体をダウンロードする必要なく、分散型アプリケーションをブロックデータの可用性を検証できるようにする方法です。 |
複数のデータ可用性(Multida) このブロックチェーンアーキテクチャでは、複数のデータ可用性(DA)サービスを使用して、データの冗長性を確保しています。 |