BUSINESS TECHNOLOGY ETHEREUM

【Meta(旧Facebook)が開発】Move:スマートコントラクト向けプログラミング言語

2022年8月18日

悩んでいる人

Meta(旧Facebook)が開発したスマートコントラクトを記述できるプログラミング言語Moveを教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOS(Linuxカーネル)の授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
  • プログラミング歴15年以上,習得している言語: C/C++PythonSolidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開
  • 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
  • 最近は自然言語処理AIイーサリアムに関する有益な情報発信に従事.
    • (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
    • (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.

こういった私から学べます.

国内・海外のブロックチェーンエンジニアのおすすめ求人サイトを知りたいあなたはこちらからどうぞ.

プログラミング言語Move

Moveは,Meta(旧Facebook)が開発したスマートコントラクト向けプログラミング言語です.

Moveの特徴は以下になります.

  • Meta(旧Facebook)が開発し,仮想通貨Diemでスマートコントラクトを記述するために利用されたこと
  • Rust言語で開発され,Rust言語の長所である強力な型システムとリソース管理の仕組みにより,メモリ安全性が保証されること
  • イーサリアムのスマートコントラクト向けプログラミング言語Solidityより安全で信頼性が高いこと
  • イーサリアムのERC-20のようなFungible Token(FT),ERC-721のようなNon-Fungible Token(NFT)を作成できること(同じではない)

Rust,Solidityを知りたいあなたはこちらからどうぞ.

MoveはGitHubにオープンソースとして公開されています.

ライセンスはApache License 2.0です.

Moveの解説動画はこちらです.

Moveを利用しているブロックチェーン基盤

Moveを利用しているブロックチェーン基盤は以下になります.

MoveでHello Worldを表示

MoveでHello Worldを表示します.

本記事では,Moveの仮想マシン(Docker)を利用するリポジトリを利用します.

また,OSはUbuntu 22.04 LTSです.

Rustとcargoをインストール

Rustとcargoを以下のコマンドでインストールします.

cargoの実行ファイルにパスを通します.

毎回入力するのが面倒な場合は,シェルの設定ファイルに追加しましょう!

Move CLIをインストール

Move CLIを以下のコマンドでインストールします.

本記事で利用するMoveのバージョンは0.1.0です.

Moveで「Hello World!」を表示するコードを作成

MoveでHello Worldを表示するコードを作成します.

以下の手順で実行しましょう!

step
1
helloという名前のmoveパッケージを作成

まずは,以下のコマンドでhelloという名前のmoveパッケージを作成します.

treeコマンドを実行するとMove.tomlファイルとsourcesディレクトリが作成されていることがわかります.

※treeコマンドがインストールされていない場合は「sudo apt-get install tree」でインストールしましょう.

step
2
hello.moveファイルを作成

「Hello World!」を表示するhello.moveファイルをsourcesディレクトリに作成します.

step
3
Move.tomlファイルを更新

Move.tomlファイルを更新します.

更新部分は,7行目の「MoveNursery = { git = "https://github.com/move-language/move.git", subdir = "language/move-stdlib/nursery", rev = "main" }」の部分です.

step
4
「Hello World!」を表示

Move 0.1.0では,文字列をサポートしていないのでバイト列で「Hello World!」を表示します.

以下のコマンドを実行しましょう!

2行目の「debug [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]」の「[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]」が「Hello World!」になります.

※「Hello World!」が正しく表示されているかは,ASCIIコード表をみると確認できます.

参考までに,以下の値になります.

  • 72:'H'
  • 101:'e'
  • 108:'l'
  • 111:'o'
  • 32:' '
  • 87:'W'
  • 114:'r'
  • 100:'d'
  • 33:'!'

まとめ

Meta(旧Facebook)が開発したスマートコントラクトを記述できるプログラミング言語Moveを紹介しました.

MoveはRustの長所を持ち,Solidityより安全で信頼性が高いことがわかりました.

Moveを深く理解したいあなたは,以下の記事を読みましょう!

国内・海外のブロックチェーンエンジニアのおすすめ求人サイトを知りたいあなたはこちらからどうぞ.

-BUSINESS, TECHNOLOGY, ETHEREUM
-, , , , , , ,