この記事では Aptos に焦点を当て、Aptos が使用する Move/MoveVM の機能と、Solidity/EVM や Rust/WASM などの確立されたプログラミング言語やステート マシンとの比較について詳しく説明します。

脚本:カン・ドンヒョン、Xangle

編集者: Peng SUN、Foresight News の中国語版の編集と発行が独占的に許可されています

1. はじめに

Web3 では、シームレスなユーザー エクスペリエンスが非常に重要です。ある意味、ユーザーが異なるブロックチェーン間でスムーズな相互運用性を体験できるようにすることは、DApp が構築されているブロックチェーンよりもはるかに重要です。 2021 年から 2022 年にかけて、モノリシック ブロックチェーンとマルチチェーンを巡る業界での激しい議論が巻き起こります。 Solana と Luna が有名になったものの、その後衰退し、Aptos と Sui が市場の注目を集める道を開いたということは注目に値します。

AptosとSuiはどちらもMetaブロックチェーンプロジェクトDiem(旧Libra)から生まれており、共通点が1つあります。それは両方ともMoveプログラミング言語を使用しているということです。この記事では、Aptos に焦点を当て、その Move 言語と MoveVM ステート マシンの特徴を詳しく掘り下げ、Solidity/EVM や Rust/WASM などの成熟したプログラミング言語やステート マシンと比較します。

2. 移動とは何ですか?

(1) Move はどこから来たのですか?

Facebook (現 Meta) の Diem チームは、ブロックチェーン業界で広く採用されている Solidity プログラミング言語の 2 つの制限を発見しました。まず、Solidity には再入攻撃や二重支出攻撃などの脆弱性があります。イーサリアムなどの Solidity を使用するブロックチェーン ネットワークはコンセンサス アルゴリズムを通じてこれらの攻撃を軽減しますが、言語自体に潜在的な攻撃ベクトルが存在することは否定できません。

第 2 に、Solidity はトランザクションを並行して処理できないため、ボトルネックに直面しています。二重支出を防ぐため、Solidity ではスマート コントラクトなどのトランザクションを順番に実行する必要があります。これによりトランザクションの処理速度が制限され、ブロックチェーンのスケーラビリティが妨げられます。

これに基づいて、Diem チームは上記の問題を解決するために Rust の影響を受けた Move 言語を開発しました。 Rust プログラミング言語は優れていますが、スマート コントラクトの作成に使用するとコードが冗長になる可能性があります。その後、Aptos は元の Move 言語を維持しながらオブジェクト指向プログラミング モデルを組み込み、Aptos Move に進化させました。一方、Sui は、Sui Move と呼ばれるオブジェクト指向言語を使用します。

(2) Aptos Move/MoveVM にはどのような機能がありますか?

Aptos の Move/MoveVM は、セキュリティに重点を置いて慎重に設計されています。さらに、Aptos は Move コントラクト コードを簡素化し、並列処理を可能にすることで、ブロックチェーン攻撃の可能性を最小限に抑え、スケーラビリティを向上させます。このセクションでは、Move がこれらの機能をどのように実装するかを詳しく見ていきます。

Move Prover と Resource Model でセキュリティを強化する

正式な検証には、ソフトウェア コードが特定のルールまたはプロパティに準拠していることを数学的に証明することが含まれます。 Aptos は、Move Prover ツールによる正式な検証を利用して、スマート コントラクトのセキュリティを検証します。 Move Prover は、形式検証を適用することで、二重支払い攻撃や再入攻撃など、スマート コントラクトにおける潜在的な攻撃ベクトルを防御すると同時に、他のコード エラーを特定して安定性を確保できます。二重支払いや再入攻撃を防ぐためにコンセンサスアルゴリズムに依存する他のブロックチェーンとは異なり、Move の言語とそのツールはこれらの問題に直接対処します。

さらに、MoveVM は関数呼び出しに静的スケジューリングを採用し、関数呼び出しに対する再入攻撃を防ぎます。対照的に、従来の EVM は動的スケジューリングを使用します。これら 2 つの方法は、プログラム実行シーケンスにおける関数呼び出しのタイミングが異なります。通常のシーケンスは、コンパイル → リンク → ロード → 実行 → 終了です。静的スケジューリングには、コンパイル時に関数を呼び出すことが含まれ、その段階でスマート コントラクトの初期エラー チェックを実行できます。したがって、MoveVM では、スマート コントラクトが事前に検証フェーズに入り、ソースからのリエントラント攻撃を効果的に防ぎます。

トランザクションの並列処理

Aptos MoveVM は、トランザクションの並列処理によりスケーラビリティを強化します。この目標を達成するために、MoveVM は、データベース トランザクションを複数のスレッドに分散して並列実行する Block-STM (ブロックレベル ソフトウェア トランザクション メモリ) を使用します。 Block-STM を詳しく見ると、次の主要な機能が明らかになります。

  • Block-STM は、Optimistic Concurrency Control (OCC) を利用してトランザクションを並列実行します。その後、トランザクションが検証され、競合が発生したトランザクションは再実行されます。

  • Block-STM は、書き込みと書き込みの競合を防ぐためにマルチバージョン データ構造を使用します。すべての書き込みは、トランザクション ID および再実行回数とともに同じ場所に保存されます。これにより、トランザクションが再実行された場合でも、意図した順序で処理されることが保証されます。

  • Block-STM は、サブトランザクションの優先実行と検証のための協調スケジューラを導入し、それによってトランザクション スレッド間の処理順序を指定します。 Move は、この協調スケジューラを採用して、トランザクション間の競合を防ぎ、トランザクションが無効になるのを防ぎます。

  • 最後に、動的な依存関係推定では、依存関係を推定し、関連するトランザクションを特定することでトランザクションをグループ化します。

Block-STM を通じて、Aptos は次の方法で並列トランザクション処理を実現できます。さらに、検証はバリデータ間で統合されますが、実行は各バリデータ間で並列化されるため、スケーラビリティがさらに向上します。 Aptos のトランザクション並列処理は次のように要約されます。

  • ユーザーはトランザクションを生成し、ネットワークに送信します。

  • バリデーターはトランザクションを検証します。

  • 検証されたトランザクションは動的な依存関係の推定に基づいてグループ化され、各トランザクション グループはバリデーターによって並行して処理されます。

  • 処理されたトランザクションはブロックにコンパイルされ、ネットワーク全体に伝播されます。

Aptos トークン標準で開発者とユーザーの利便性を向上

また、Aptos は Move を使用して、従来の EVM に関連する制限を改善する独自のトークン標準である Aptos Coin Standard を構築します。 MoveVM は、トークン発行のために個別のスマート コントラクトを発行する必要がなく、トークンを発行するために少額のガス料金を支払うだけで済みます。ただし、Solana や Algorand などの非 EVM ブロックチェーンにも独自のトークン規格があるため、この機能は特に優れているわけではありません。

ただし、2023 年 8 月に、Aptos は FT と NFT という 2 つの新しい標準を発表しました。特に、新しい FT 標準では、開発者は開発目標に応じて、通常のトークン アセット、トークン化された RWA、またはゲーム内トークンのいずれかを選択して発行できます。これは、成長する RWA 関連市場を開拓するという Aptos の戦略と一致しているようです。具体的には、Web 2.0 企業は RWA をトークン化する際に資産の制御を求めることがよくありますが、これはイーサリアムでは簡単に実現できないため、多くの企業が独自のブロックチェーンを構築し始めています。対照的に、Aptos では、トークン標準設定を通じてこれをプロトコル レベルで有効にします。

3. 他言語やVMとの比較

(一)移動と堅実性

Move/MoveVM は、Solidity の制限を補うために作成され、Solidity よりも安全で拡張性が高くなります。前述したように、Move/MoveVM 機能は Aptos のセキュリティとスケーラビリティを強化します。 MoveVM は言語段階でリエントランシー攻撃と二重支出攻撃を防止し、Solidity/EVM では複数のリエントランシー攻撃が確認されています。 2016 年のイーサリアムに対する DAO 攻撃がその最良の例です。イーサリアム財団は多くの予防措置を講じてきましたが、DeFi では依然として多数のリエントランシー攻撃が存在します。ハッカーは、EVMエコシステム内のDeFiに欠陥のある契約を展開することを絶え間なく探しています。

<EVM エコシステムは依然として再入攻撃に悩まされている、出典: Google>

前述したように、Move/MoveVM はトランザクションを並列処理できるため、理論的には最大 160,000 TPS に達し、トランザクション処理効率が制限されません。同時に、二重支払いや再入攻撃のリスクがあるため、EVM はトランザクションを順番に処理する必要があります。したがって、EVM チェーンはこれによって大幅に制限され、多数のトランザクションが同時に送信されると、ガスコストが急激に上昇し、トランザクションがキューに入れられて停止してしまいます。

柔軟性の点では、Solidity/EVM は Move/MoveVM よりも優れています。 Solidity/EVM は動的スケジューリングを使用しますが、Move/MoveVM は静的スケジューリングを使用します。 Solidity と比較すると、Move は静的スケジューリングを使用してスマート コントラクトのセキュリティを強化しますが、その機能は制限されています。さらに、Solidity ではプロトコルとコントラクト コードをいつでもアップグレードできますが、Move にはこの点でいくつかの制限があります。ブロックチェーン間の相互運用性の点では、Solidity は Move よりも柔軟でスケーラブルです。これは主に、イーサリアムなどの EVM チームがモジュール型ブロックチェーンを好むのに対し、Move チームはモノリシック領域のブロックチェーンを好むためです。

(二)Move vs Rust

Move は Rust から派生しており、効率や安全性などのパフォーマンスと機能の点で Rust と多くの類似点があります。主な違いはその意図された目的にあります。Rust は汎用プログラミング言語ですが、Move はスマート コントラクトの開発に焦点を当てています。 Rust は、より幅広いアプリケーション向けに設計されており、ブロックチェーン関連以外の開発環境も含め、さまざまな開発環境で使用されています。したがって、Rust でスマート コントラクト コードを記述すると、コードがより長く複雑になる可能性があります。対照的に、Move は、スマート コントラクト向けに特別に調整されたブロックチェーン固有の言語です。これにより、ブロックチェーン開発での使用が制限されますが、スマート コントラクトを作成する場合は、コードが比較的簡潔で複雑さが軽減されます。

<Move vs. Rust: スマート コントラクトの比較、出典: Krešimir Klas>

上記は、同じスマート コントラクトを開発する場合の Solana と Sui のコード長トークンです。明らかに、コードが長いということは、スマート コントラクトが攻撃される可能性が高く、開発者が間違いを犯す可能性が高くなることを意味しますが、これはコード検査時に無視される可能性もあります。対照的に、Move の利点は、コード開発がより簡単で、開発者がエラーを犯す可能性を低減でき、コード検査がより効果的になることです。

(三)アプトスムーブ vs スイムーブ

Aptos MoveとSui Moveは両方ともDiemチームから開発されたものであるため、多くの類似点があります。どちらも元々は Rust に基づいているため、構文と機能は似ています。さらに、両方のプロジェクトは Move Prover を使用してスマート コントラクトを検証します。

ただし、Aptos Move はオリジナルの Diem ブロックチェーンを保持し、オブジェクト指向プログラミング モデルを採用していますが、Sui Move は Diem の進化版としてオブジェクト指向の Shu ブロックチェーンを起動します。スイのオブジェクト指向ブロックチェーンへの移行は、読み書きされるデータを知っていることに依存する並列処理をサポートすることです。したがって、Aptos は、アプリケーションの構成要素を一意の識別子、プロパティ、メソッドという 3 つの異なる単位に分割するリソース モデルを採用しています。一方、Sui は、アプリケーション コンポーネントを状態と動作に分割するオブジェクト指向モデルを使用します。その結果、Aptos Move は、Sui Move にはないかなりの柔軟性を開発者に提供します。

Aptos MoveとSui Moveがブロックチェーン上で動作する方法にも違いがあります。まず、どちらのブロックチェーンも、方法は異なりますが、並列処理をサポートしています。前述したように、Aptos は Block-STM を通じて並列トランザクション処理を実装しますが、Sui は有向非巡回グラフ (DAG) 構造を使用してトランザクションを保存します。 DAG構造によりトランザクション間の相互接続が遮断され、トランザクションの並列処理が可能になります。

もう 1 つの違いは、再入攻撃を防止する方法です。前述したように、Aptos は静的ディスパッチを使用して実行前にスマート コントラクトのステータスを確認し、再入攻撃を防ぎます。対照的に、Sui はトランザクション実行中にスマート コントラクトの状態を 1 回だけ更新することで再入攻撃を防ぎ、攻撃者がトランザクションを中断した場合でも状態が変化しないようにします。さらに、Sui の DAG 構造はトランザクションの順序に依存しないため、1 つのトランザクションの中断は他のトランザクションの独立した処理に影響を与えず、再入攻撃に対する追加の保護を提供します。

4. 次のステップ: 強力な開発者エコシステムとキラー DApp を確立する

Move/MoveVM は有望なブロックチェーン開発プラットフォームですが、2 つの大きな課題にも直面しています。 (1) Move はまだ成熟した開発者エコシステムを持っておらず、この点で Solidity と比較することはできません。 Aptos は 1 年近く存在していますが、Sui はつい最近メインネットを立ち上げたばかりです。したがって、成熟した開発者コミュニティを持つ Solidity と比較すると、Move の開発にはまだ長い道のりがあります。 Solidity には 8 年の歴史があり、幅広い開発ツールと専用のトレーニング プログラムを提供しています。開発者にとって、自分の仕事についてフィードバックを提供してくれる協力的なコミュニティを持つことが重要であり、Solidity はすでに大規模な開発者コミュニティを持ち、世界中でハッカソンを主催しています。 Turing 氏は、Solidity 開発者コミュニティの人数は約 200,000 人であると推定しています。

対照的に、Move は Facebook の立ち上げ以来開発が続けられてきましたが、ほとんどが Diem チームによる社内の取り組みでした。結果として、Move の開発者エコシステムは、Solidity ほど成熟しておらず、また広く普及していません。現在、Aptos フォーラムを含む Aptos 開発者コミュニティは存在しますが、体系化されたトレーニング プログラム、開発者ツール、Solidity エコシステムのオープンなフィードバック メカニズムが欠けています。 Sui 開発会社 Mysten Labs は、Move 開発者の数を 10,000 人と推定していますが、Aptos は公式統計を提供していません。

次に、(2) Move にはキラー DApp がありません。多くの EVM チェーン (Ethereum や Arbitrum など) には多数の DApp があり、ユーザーはそれらを広範囲に使用しています。ただし、Move エコシステムでは同様のアプリケーションがまだ作成されていません。 9 月 26 日の時点で、Aptos Network TVL は 4,350 万ドルで、主流の Layer2 よりも大幅に低かった。

<Aptos Move チュートリアルは Aptos Foundation によって作成されました。ソース: Aptos Move Github>

アプトス財団は現在直面している課題を認識しており、それらを克服するために積極的に対策を講じています。まず、Aptos Foundation は、開発者エコシステムの繁栄を促進するために開発者ツールを重視しています。彼らは、初期の開発者が開始できるように Aptos チュートリアルを立ち上げ、Move Spider のような教育プロジェクトを作成しています。さらに、Aptos Foundation は、米国、韓国、中国を含む世界中で Meetup を開催することで開発者コミュニティの発展を促進し、開発者エコシステムをさらに強化しています。

ビジネス面では、Aptos は、BBCUniversal、Microsoft、Google、Netmarble (Marblex)、Neowiz、Chingari など、さまざまな業界の有名企業や大規模な流通チャネルを持つ企業と積極的にパートナーシップを確立しています。一方、Aptos は、ゲーム会社の統合を促進するために、AIP-41 を通じてオンチェーンランダムネスを実装しています。 Aptos は AIP-41 を使用して、EVM プロジェクトのランダム性を保証する Chainlink VRF などのコスト効率の高いミドルウェア代替手段をゲーム会社に提供し、Aptos で製品を構築するプロジェクトをさらに誘致します。

5. 結論

<ブロックチェーン開発言語と進化を比較した図、出典: Krešimir Klas>

この記事では、Aptos の Move/MoveVM に焦点を当て、既存のブロックチェーン開発言語との機能比較を行います。研究結果は、Move がブロックチェーン スマート コントラクトの開発に特化して設計されており、既存の言語に比べて明らかな技術的利点があることを示しています。ただし、開発者と DApp エコシステムの観点から見ると、Move はまだ初期段階にあります。現在、Solidity には Move の約 20 倍の開発者数がおり、TVL とキラー DApps の点でその地位はより強固です。ただし、Move は誕生してからわずか 1 年で、ブロックチェーン開発に特化した数少ないプログラミング言語の 1 つであり、未開発の大きな可能性がまだあることを示しています。

さらに、Move は Facebook の Diem チームによって開発されており、これも Move エコシステムの開発の見通しを高めます。したがって、上図にあるように、総合的なブロックチェーンプログラミング言語として、Moveが今後Solidityと競合できるかどうかは注目に値します。