PTBで複数コマンドをまとめて実行
このレッスンでは、PTB Builderを使って複数の送金コマンドを1つのトランザクションにまとめるPTBを、ゼロから自分で組み立てます。難しくありません。手順どおりに進めれば完成します。
PTB(Programmable Transaction Block)とは
Suiでは、複数のコマンドを1つのトランザクションにまとめて実行できます。これを PTB(Programmable Transaction Block) と呼びます。
PTBを使うと、以下のようなメリットがあります:
- トランザクションのオーバーヘッドを削減 — 各コマンドの実行コストは支払いますが、署名コストと基本トランザクション手数料をまとめることで節約できます
- 原子性(アトミック性) — すべてのコマンドが成功するか、すべて失敗するかのどちらかになります(中途半端な状態になりません)
- 効率的 — 1回の署名で複数のコマンドを完了できます
PTBのイメージ
「Aさんに1 SUI送金」と「Bさんに2 SUI送金」を別々のトランザクションで実行すると、2回署名が必要で、トランザクションのオーバーヘッドも2回かかります。 PTBでまとめると、1回の署名・1回のオーバーヘッドで済みます。各コマンドの実行コストは支払いますが、オーバーヘッドを節約できます。
前提条件
このレッスンを始める前に、以下が完了していることを確認してください:
PTB Builder で複数コマンドのPTBを組み立てよう
以下のビジュアルエディタは空の状態です。Start と End のノードだけがあります。
左上のガイドに従ってノードを追加・接続し、複数の送金コマンドを1つのトランザクションに組み立ててください。 まず、サイトヘッダー右上のウォレットアイコンからSlushウォレットを接続してください。
Explorerで確認
トランザクション実行後、Explorerで結果を確認しましょう:
- 表示された Transaction Digest の横のリンクをクリックします
- Suiscan(または別のExplorer)が開きます
- Transactions セクションで、以下のコマンドが含まれていることを確認します:
- SplitCoins — gasコインを各送金額に分割するコマンド
- TransferObjects — 2回表示されます(各受取人への送金)
成功の確認
以下ができれば、このレッスンは完了です:
- 空のPTB Builderにノードを追加して、複数コマンドのPTBを組み立てられた
- gas ノードを SplitCoins コマンドに接続できた
- 複数のコマンドを1つのトランザクションとして実行できた
- ExplorerでSplitCoinsと2つのTransferObjectsコマンドが含まれていることを確認できた
よくあるトラブル
ウォレットが接続できない
- ブラウザ拡張機能のSlushウォレットがインストールされているか確認してください
- ネットワークがDevnetに設定されているか確認してください
- L07: ウォレットをPTB Builderに接続する を参照してください
Execute ボタンが押せない
- ウォレットが接続されているか確認してください
- すべてのノードが正しく接続されているか確認してください
- Start から End まで途切れなくフローが繋がっている必要があります
トランザクションが失敗する
- ガス残高が十分にあるか確認してください
- 分割元の SUI コイン(gas)の残高が、送金額合計 + ガス代を上回っているか確認してください
- 残高が不足している場合は、Faucet で追加のSUIを取得してください
このレッスンでやったこと
- PTB(Programmable Transaction Block)の概念を理解した
- 空のPTB Builderからノードを追加・接続して、複数コマンドのPTBを組み立てた
- 複数のコマンドを1つのトランザクションにまとめて実行した
- Explorerで結果を確認した