見出し画像

ブロックチェーン開発言語としてのSolidity - Move - Sui-Move間の違いについて

こんにちは!enmaiです。
本日2023年7月29日に開催されたMove Hackathon Demodayに参加し、SolidityとMove、Cadenceのブロックチェーン言語の比較やメリット・デメリットについてのセッションに参加してきました!


Hackathon Demoday Prize受賞プロジェクト

InstaSui
写真付きの投稿をNFTとして発行し、売買できるプロトコル
Balance Objectに月々の支払いをdepositする

Scallop
耐フラッシュローンlendingプロトコル

Bucket Protocol
Raffle winnerを決めるためのプロトコル
人数・名称・送金額を決めると簡単に設定した数のアドレスをWinnerとして選択してくれる。NFT、FT両方対応

セッション: Moveの開発体験についてSolidity, Cadenceなどのブロックチェーン言語と比較して

スピーカー

Araさん: Flowテックアンバサダー、2017年以来のブロックチェーンエンジニア

https://twitter.com/arandoros

wasabiさん:UmiProtocolの開発者。現在Sui自体の開発に関わっている。Aptos/Sui両方へUmiをdeployした経験あり。

https://twitter.com/wasabijiro

Imatakaさん:Solana, Aptosの開発者。最近はSuiで開発。元々Rustエンジニア。


https://twitter.com/imataka7


MoveとSolidityの違い

Araさん:Moveは元々Facebook Libraプロジェクトのメンバーが開発したリソース指向の開発言語です。FlowもMove言語を拡張したCadence言語でスマートコントラクトを実装するため、Moveに興味を持ちました。Move言語は直感的に書ける点がとても素晴らしく、一方でDeFiにとても向いている印象を受けています。Sui-MoveはMoveと比較して取り扱えるリソースを制限しており、DeFiを構築した際にバグが入りづらいような印象を受けました。

wasabiさん:Sui-Moveはリソースベースのプログラミング言語です。EVMとMove VMとSui-Move VMの違いは、EVMはトランザクションの下にストレージを持ち、Sui-Move VMはオブジェクトIDの配下にオブジェクトを持っています。Moveは静的型検査を採用しており、コンパイル時に複製や二重支払いを排除しています。そのため、Moveはセキュリティが高い言語として評価されています。EVMと比較すると、EVMではデータ自体はオフチェーンに存在し、メタデータの書き換えが難しいです。また、ERC-721の標準に合わせないとコンポーザビリティが保てないかもしれませんが、Sui-Moveはオブジェクトにダイナミックフィールドを持たせることができるため、動的なゲーム内アセットをNFT化するなど、ゲームにも向いています。

Araさん:Solidityと比較してMoveはとても良いです。 しかしCadenceの方がもっといい笑。オリジナルのMoveはとてもシンプルな言語になっています。CadenveとMoveは同じ思想を継承していて、言語自体の派生は別です。CadenceはMoveを更に書きやすくした言語で、Sui-MoveはMoveを更に抽象化した言語です。特にアセットの取り扱いに特化しており、Rust言語が好きな人には書きやすいと思います。

Imatakaさん:Moveは色々なユースケースに活用できます。Move自体は文法や型システム等、Rustにインスピレーションを受けていますが、Rustで開発可能なSolanaと比較すると、Solana独自の書き方に従うことなく、書きやすいです。実際にSolanaで1年かかった開発がMoveで半年で完了するような事例が存在します。それだけSui-Moveは開発者フレンドリーで、独特なルールに従うことなく、より抽象的に、自由に書くことができます。
また、開発チームも優秀です。FacebookのMove開発チームがSuiで開発しているケースが多く、Moveの開発に情熱を持つ方が現在も開発を継続しています。
Suiは元々のMove言語の特徴であるアカウントベースのデータ構造ではなく、オブジェクトセントリックを実現するためのMove言語に特化しています。この言語特徴はコンセンサスアルゴリズムにも深く関連していて、他のチェーンと比較して30万TPSを実現できます。一方でAptosで使われるようなMoveとは全く異なるため、多少学習が必要な点はデメリットです。

wasabiさん:Suiにしかない特徴はオブジェクトセントリックであること。特にSuiは並列実行が可能な点が特徴です。オブジェクトセントリックであることで依存関係がわかるため、並列処理が実行できる仕組みになっています。ガス代も需要と供給に応じてコントラクト別に決定され、例えばアクセスが集中しているコントラクトへのトランザクションのガス代は高騰し、他のコントラクトに対するトランザクションのガス代は高騰しません。AppSpecificチェーンのように、ガス代が高いからそれぞれのアプリのためにチェーンを構築しなければならないような事態が発生しないのがSuiの良いところです。App Specific Chainの場合、ユーザーは別のアプリケーションを利用する際ブリッジリスクを負わなければなりませんが、Suiでは同じチェーン上で複数のアプリケーションが稼働するため、ユーザーはブリッジする必要がありません。正直Suiでの開発で不便を感じた事は今までありません。

Araさん:オブジェクトセントリックな方向性は、今後スマートコントラクトが進むべき進化の道の一つだと考えています。MoveやCadenceで利用されている方向性が次の世代として進化していくことが望ましく、コントラクトやトランザクション別にガス代を変更することはイーサリアムでも可能である一方、Moveの方向にイーサリアムが進んでいく可能性も考えられます。Sui-MoveはMoveとだいぶ異なっており、あえて言うのであればドキュメントをもっと充実させてほしいです笑

今回作ったプロジェクト

Araさん:Decentralizedに存在する神社を構築しました。任意のコインをお賽銭として投げるとトークンやお守りが貰え、祈祷して貰えます。オープンソースで公開しているので、興味ある人はぜひご覧になってください。

今後のSuiの未来

Imatakaさん:イーサリアムにはスケーリング問題が存在する一方、Suiは設計時点から10億人をオンボーディングできる設計になっており、スケーリングソリューションとしては自信があります。ゲームに利用されるオンチェーン上の乱数生成やオフチェーンとの接続性(Google接続等)等の機能はデフォルトの機能として開発を推進していく予定です。この点は特に他のチェーンと比較して優位性になりうると考えています。

まとめ

今回はMove言語とSuiブロックチェーン、Solidityとの比較について伺いました!大変有益な機会を設定してくださった主催者のkinjoさん、ありがとうございました!

https://twitter.com/illshin/status/1684430576433119232

この記事が気に入ったらサポートをしてみませんか?