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 へ戻る