SUIの「MOVE言語」って何が凄いの?他の言語と比較して解説。
次世代のイーサリアムキラーとして大きな期待を持つレイヤー1ブロックチェーンのSUI。そんなSUI最大の特徴がプログラミング言語MOVEです。
プログラミング言語はブロックチェーン開発に大きく関わっているため仮想通貨の土台ともなっています。
今回、SUIチェーンにおけるMOVE言語は一体どれ程優れているのか、他の言語と比較して解説致します。
SUI MOVEとは
SUI MOVEとはSUI開発の基盤となり、SUIネットワークで働くスマートコントラクト開発用のプログラミング言語です。
参考:Sui NetworkとSui Moveを理解する!! #solidity – Qiita Move, the revolutionary smart contract language powering Sui
では、Aptosで使われるMOVE言語とSUI MOVEは一体何が違うのでしょう。以下で説明します。
SUI MOVEとAptos MOVE言語の違い
SUI MOVEとMOVE言語は、基になるdiemプロジェクトから端を発していますが、大きく異なるところはトランザクションのアカウントモデルに「オブジェクト」を採用している点です。
SUIのオブジェクトについては以前記事にしました↓アカウントモデルについても詳しく書いてあります
アカウントモデルとは取引全体(アカウント)を一つずつ順番に処理していくシステムです。例えば取引Aと取引Bは「アカウントn」となりn+1、n+2とアカウント全体を更新していく。このやり方ではすぐに速度が頭打ちとなっていまいます。
Diemプロジェクトとは
Diemプロジェクトは2020年にFacebook(現Meta)が提唱したブロックチェーン技術を用いたネットワークと暗号通貨サービスの提供としたもので、このプロジェクト通貨を用い、決済やその他サービスの利用料支払いに計画されたものです。
しかし、諸事情により国から規制がかかり頓挫してしまいました。
これが当時のニュース記事です。
引用:Bloombergメタ主導の「ディエム」が買い手求める、計画頓挫で-関係者 – Bloomberg
現在はDiemプロジェクトをそのまま引き継いだAptosと、さらに改良を加えたSUIに分かれ、それぞれで開発に取り組んでいます。
Aptos MOVE言語と比べたSUI MOVEの実力
SUI MOVEでは通常(Aptos)のアカウントモデルと異なり、取引をオブジェクト化(固有のIDを持たせる事)で、取引の所有権を明確化し、強固なセキュリティを得る事が出来ました。「取引」の全てをNFT化したといっても過言ではありません。
取引アカウントの全てをNFT化?それはセキュリティ面で安心ですね(^^)/
実際にこちらの専門記事ではSUIのNFT化した概要を語っています。
引用:Sui NetworkとSui Moveを理解する!! #solidity – Qiita
また、Aptosと比べ各アカウントは独立している事により並列的に取引処理する事が可能です。これにより高速なトランザクション処理能力も獲得ました。
イーサリアム Solidityとは
イーサリアムで使われているのがSolidityという言語です。
引用:Solidity公式X Solidity (@solidity_lang) / X
Solidityは2014年に開発されたイーサリアムのスマートコントラクト用に開発されたプログラミング言語で、WEB3ではもっともポピュラーなものです。
元からある言語(C++やPython、JavaScriptなど)に似ており、開発者が慣れ親しんでいる為か、習得が用意で扱いやすい一方、プログラムの仕組み上バグが多発していると言われており、そのバグを悪用されて資産の流出も起こる可能性があります。
かつてのTHE DAO事件もSolidiyのコードバグを悪用されたのが原因だったそう。
スマートコントラクト開発の為イーサリアム仮想マシン(EVM)と互換性持つ事で急成長を遂げていますが、言語上の根本的問題と、取引処理システムにアカウントモデルを利用しているが故のスケーラビリティ問題やコードバグの声が後を絶ちません。
ソラナ Rustとは
次はソラナと比較してみます。
ソラナはRustという言語が使われています。
引用:Rust公式X Rust Language (@rustlang) / X
RustはSolidityのイーサリアム仮想マシン(EVM)互換性とは異なる路線を歩んでおり、独自の言語で開発が行われています。
2011年に発売、スマートコントラクトのプログラミングのみに限定されず、汎用性のある言語とされています。Rustはデータを並列処理し高スループットを実現、開発者が経験豊富な為コードバグが少ないという利点があります。
参考:Solidity vs Move vs Rust:スマートコントラクトプログラミング言語の進化 |by イールドアプリラボ |中程度 (medium.com)
関連記事↓
しかし、Rustは元々ブロックチェーン専用に作られた言語では無いため、実際にプログラムを書くと余分なコードも必要になり、コードが長くなってしまう問題があります。詳細は以下で説明します。
Rust vs SUi MOVE
さっき言った様にRustは並列処理システム導入とコードバグが少ない優れた言語ですが、SUI MOVEと比較するとどうでしょう。
MOVE言語は元来Rustをベースに作られており、Facebook(現Meta)がDiemブロックチェーン様に新たに開発された歴史があります。
では、SUI MOVEはRustと何が違うのか??「Medium」によると、1.MOVEはRustと同様に並列処理する事で高いスループットを可能にした。2.コードのバグが無い。「ここからが注目する点で」、3.Moveはセキュリティを念頭に置いて設計されており、再入性などの脆弱性を排除することを目的としてる。とあります。
プログラミングコードの長さについて
さっきRustではコードが長くなってしまうという問題を上げました。その詳細を説明します。
≈前略≈
次に、コードを見て、実装がどのように異なるかを見てみましょう。以下は、このスマートコントラクトの完全なSolanaとSuiの実装のコードスクリーンショットを並べたものです。
すぐに気付くのは、同じ機能で、Solanaの実装はSuiと比較して2倍以上のサイズ(230 LOC対104)であるということです。コードが少ないということは、一般的にバグが少なく、開発期間が短いことを意味するため、これはすでに大きな問題です。
引用:スマートコントラクト開発 — Move vs. Rust |by クレシミール・クラス|中程度 (medium.com)
コードの長さになんと2倍以上の差があるのが分かります。
これは処理速度やバグの発生に直結するもので、当然コードは短い方が優れている事を示していますよね。
つまりMOVE言語はRustを超え、そのMOVE言語にオブジェクトを加えさらに発展したのがSUI MOVEという事です。👏
まとめ
SUI MOVEはRust言語をベースに作られ、それにオブジェクトを加え発展させました。
SUI MOVEはオブジェクトモデルによってイーサリアム(ETH)やソラナ(SOL)で使われていた言語の課題を解決しました。
SUIはユーザーからの期待も大きく将来イーサリムやソラナを超えるかもしれません。これからも益々目が離せませんね(^^)/