見出し画像

MOVE言語 チュートリアルStep_3 モジュールの設計

前回の記事

ではソースコードの内容を見ていきましょう!

cd <自分がmoveをクローンしたディレクトリ>/move/language/documentation/tutorial/step_3

ここのBasicCoin.moveを見ていきます!

今回は文法というより
Coinを発行する機能の関数の説明になっているかと思います!

私のわかる範囲でコメントを残しています。

module NamedAddr::BasicCoin {
    // Coinの構造体
    // storeはこの構造体がモジュールのグローバルストレージ内で使えることを示す
    struct Coin has store {
        value: u64
    }

    // keyはこの構造体(Balance)がグローバルストレージ操作のキーとして機能することを許可する。
    struct Balance has key {
        coin: Coin
    }

    /// このモジュールに残っている残高を表示する
    /// mintやtranferの時に必ず呼び出す必要がある
    public fun publish_balance(account: &signer) { .. }

    /// &sinnerがトランザクションを起こしたアドレス、mint_addrにamountの数だけコインを生成する。
    // acquiresのアノテーションはBalanceの構造体を必ず呼び出さないといけなくする。(イマイチピンとこないので、中身を書いたりしないとわからなそう)
    public fun mint(module_owner: &signer, mint_addr: address, amount: u64) acquires Balance { .. }

    /// アドレスを渡すとそのアドレスの所有している数が帰ってくる
    public fun balance_of(owner: address): u64 acquires Balance { .. }

    /// FromからToのアドレスへCoinを送る関数 amountはコインの数
    public fun transfer(from: &signer, to: address, amount: u64) acquires Balance { .. }
}

vscode上の色がついているものも載せておきます。



acquiresの構文記事


以上になります。
次回もまたよろしくお願いします!

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