Moveは、スマートコントラクト(ブロックチェーン上に保存され実行されるプログラム)を記述するための言語である。 一つのプログラムはパッケージ(package)内に構成される。パッケージはブロックチェーン上で公開され、アドレス(address)で識別される。 公開されたパッケージは、その関数を呼び出すトランザクション(transaction)を送信することでやり取りできる。 また、他のパッケージの従属としても動作できる。

<aside> 💡 新規パッケージを作るには、sui move newコマンドを使う。 本コマンドの詳細については、sui move new --helpを実行すること。

</aside>

パッケージはモジュール(関数、タイプ、その他アイテムを含む個別のスコープ)で構成される。

package 0x...
    module a
        struct A1
        fun hello_world()
    module b
        struct B1
        fun hello_package()

パッケージ構造

ローカルにおいて、パッケージはMove.tomlファイルとsourcesディレクトリを持つディレクトリである。 Move.toml ファイル (「パッケージマニフェスト(package manifest)」と呼ばれる) にはパッケージに関するメタデータが含まれ、sourcesディレクトリにはモジュールのソースコードが含まれる。 パッケージは通常、次のようになる:

sources/
    my_module.move
    another_module.move
    ...
tests/
    ...
examples/
    using_my_module.move
Move.toml

testsディレクトリはオプションであり、パッケージのテストを含む。testsディレクトリに置かれたコードはオンチェーンで公開されず、テスト時のみ利用可能である。examplesディレクトリはコード例のために使用でき、こちらもオンチェーンでは公開されない。

公開パッケージ

開発中、パッケージはアドレスを持っておらず、0x0に設定する必要がある。パッケージが公開されると、ブロックチェーン上で、そのモジュールのバイトコードを含む一意のアドレス[TODO]が得られる。公開されたパッケージは不変(immutable)となり、トランザクションを送信することでやりとりできる。

0x...
    my_module: <bytecode>
    another_module: <bytecode>

リンク

The Move Book へ戻る