トランザクションは、ブロックチェーンの世界における基本的な概念で、ブロックチェーンとやり取りをするための手段です。トランザクションはブロックチェーンの状態を変更するために用いられ、それを行うための唯一の方法でもあります。Moveでは、トランザクションを使用してパッケージ内の関数を呼び出したり、新しいパッケージをデプロイしたり、既存のパッケージをアップグレードしたりします。

トランザクション構造

<aside> 💡

すべてのトランザクションは、それが操作するオブジェクトを明示的に指定します!

</aside>

トランザクションは以下の要素で構成されます。

インプット(Inputs)

トランザクションインプットは、トランザクションの引数であり、以下の2つのタイプに分けられます。

コマンド(Commands)

Suiトランザクションは、複数のコマンドで構成されることがあります。各コマンドは、(パッケージの公開のような)単一の組み込みコマンド、または既に公開されているパッケージ内の関数を呼び出すものです。これらのコマンドはトランザクション内に記載された順に実行され、前のコマンドの結果を利用することができ、チェーンを形成します。トランザクションは全体として成功するか、失敗するかのいずれかです。

トランザクションは模式的には次のようになります:

Inputs:
- sender = 0xa11ce

Commands:
- payment = SplitCoins(Gas, [ 1000 ])
- item = MoveCall(0xAAA::market::purchase, [ payment ])
- TransferObjects(item, sender)