トランザクションは、ブロックチェーンの世界における基本的な概念で、ブロックチェーンとやり取りをするための手段です。トランザクションはブロックチェーンの状態を変更するために用いられ、それを行うための唯一の方法でもあります。Moveでは、トランザクションを使用してパッケージ内の関数を呼び出したり、新しいパッケージをデプロイしたり、既存のパッケージをアップグレードしたりします。
<aside> 💡
すべてのトランザクションは、それが操作するオブジェクトを明示的に指定します!
</aside>
トランザクションは以下の要素で構成されます。
pure
(数値や文字列などのシンプルな値)またはobject
(トランザクションがアクセスするオブジェクト)。Coin
オブジェクトトランザクションインプットは、トランザクションの引数であり、以下の2つのタイプに分けられます。
bool
)u16
, u32
, u64
, u128
, u256
)address
)std::string::String
)std::ascii::String
)vector<T>
(ここでT
は純粋な型)std::option::Option<T>
(ここでT
は純粋な型)std::object::ID
(通常、オブジェクトを指します。「オブジェクトとは何か」も参照。)Suiトランザクションは、複数のコマンドで構成されることがあります。各コマンドは、(パッケージの公開のような)単一の組み込みコマンド、または既に公開されているパッケージ内の関数を呼び出すものです。これらのコマンドはトランザクション内に記載された順に実行され、前のコマンドの結果を利用することができ、チェーンを形成します。トランザクションは全体として成功するか、失敗するかのいずれかです。
トランザクションは模式的には次のようになります:
Inputs:
- sender = 0xa11ce
Commands:
- payment = SplitCoins(Gas, [ 1000 ])
- item = MoveCall(0xAAA::market::purchase, [ payment ])
- TransferObjects(item, sender)