spl-token コマンドラインインターフェイスでは、ミント、token account、権限、転送、
Token-2022 拡張機能を作成・管理できます。
このリファレンスは、Agave v4.2.1 に同梱されている
spl-token-cli v5.6.1 に基づいています。
spl-token --version を実行し、インストール済みのバージョンで使用できる正確なオプションは
<command> --help で確認してください。
ミントの作成、転送、権限の変更、バーン、フリーズ、アカウントのクローズは、 いずれもトランザクションを送信します。コマンドを実行する前に、クラスター、Token Program、署名者、 アドレスを確認してください。メインネットでの変更には実際の資産が使われます。
インストールとヘルプの表示
Agave CLI のリリースバンドルには spl-token が含まれています。インストールされていない場合は、
公開されている Rust クレートを使用してください:
cargo install spl-token-cli --version 5.6.1spl-token --version
ルートまたはコマンドレベルでヘルプを表示します:
spl-token --helpspl-token create-token --helpspl-token transfer --help
グローバルオプション
グローバルオプションはコマンドの前に指定します。
| オプション | 用途 |
|---|---|
-u, --url <URL_OR_MONIKER> | RPC URL、または mainnet-beta、testnet、devnet、localhost を選択します。 |
-C, --config <PATH> | 別の Solana CLI 設定ファイルを使用します。 |
--fee-payer <KEYPAIR> | トランザクション手数料を支払うアカウントを選択します。 |
-p, --program-id <ADDRESS> | 明示的に指定した Token Program ID を使用します。 |
--program-2022 | Token-2022(TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb)を使用します。 |
--output <FORMAT> | 対応しているコマンドで json または json-compact 形式で結果を返します。 |
--with-compute-unit-limit <UNITS> | トランザクションのコンピュートユニット上限を設定します。 |
--with-compute-unit-price <MICRO_LAMPORTS> | コンピュートユニットあたりの優先価格を設定します。 |
-v, --verbose | 追加の出力を表示します。 |
-V, --version | インストールされている CLI のバージョンを表示します。 |
デフォルトのプログラムは従来の Token Program です。Token-2022 のミントまたはアカウントには、
読み取り時も含めて --program-2022 を使用してください。選択したプログラムが指定したアドレスを
所有していない場合、コマンドは失敗します。
トークンの作成と使用
コマンドは作成されたアドレスを出力します。create-token が返すミントアドレスは、
後続のコマンドで使用するため保存しておいてください。
# Create a six-decimal mint under the original Token Program.spl-token --url devnet create-token --decimals 6# Create the default signer's associated token account for the mint.spl-token --url devnet create-account <MINT_ADDRESS># Mint 100 tokens to that associated token account.spl-token --url devnet mint <MINT_ADDRESS> 100# Read supply, balance, and complete mint or account details.spl-token --url devnet supply <MINT_ADDRESS>spl-token --url devnet balance <MINT_ADDRESS>spl-token --url devnet display <MINT_OR_TOKEN_ACCOUNT_ADDRESS># Transfer tokens to a wallet and create its associated account if needed.spl-token --url devnet transfer \<MINT_ADDRESS> \10 \<RECIPIENT_WALLET_ADDRESS> \--fund-recipient
金額は、ミントの decimals に合わせて調整された UI トークン量です。transfer、burn、unwrap-sol などの
コマンドでは、ヘルプに記載されている箇所で ALL を指定できます。
Token-2022 ミントの作成
拡張機能はミントまたはアカウントの状態を追加で割り当てるもので、通常はミントの作成時に 選択する必要があります。次の例では、メタデータの埋め込みをサポートする、小数桁数 6 のミントを作成します:
spl-token --program-2022 create-token \--decimals 6 \--enable-metadataspl-token --program-2022 initialize-metadata \<MINT_ADDRESS> \"Example Token" \EXAMPLE \https://example.com/token.json
create-token の主な拡張オプションは次のとおりです:
--enable-close--enable-confidential-transfers auto|manual--enable-freeze--enable-groupと--enable-member--enable-metadata--enable-non-transferable--enable-pause--enable-permanent-delegate--enable-permissioned-burn--enable-transfer-hookまたは--transfer-hook <PROGRAM_ID>--interest-rate <BASIS_POINTS>--transfer-fee-basis-points <BASIS_POINTS>と--transfer-fee-maximum-fee <AMOUNT>の併用--ui-amount-multiplier <MULTIPLIER>
組み合わせて使用できるのは、Token-2022 プログラムが併用を許可している拡張機能のみです。 元に戻せないミント構成を作成する前に、関連する Token-2022 拡張機能ガイドを 確認してください。
権限とデリゲートの管理
# Change the mint authority.spl-token authorize <MINT_ADDRESS> mint <NEW_AUTHORITY_ADDRESS># Permanently remove the mint authority.spl-token authorize <MINT_ADDRESS> mint --disable# Let a delegate spend up to 25 tokens from one token account.spl-token approve \<TOKEN_ACCOUNT_ADDRESS> \25 \<DELEGATE_ADDRESS># Remove the current delegate.spl-token revoke <TOKEN_ACCOUNT_ADDRESS>
authorize は、ミント、フリーズ、オーナー、クローズ、および拡張機能固有の権限タイプに
対応しています。--disable による権限の削除は、他のプログラムの仕組みで復元できない場合、
恒久的なものになります。
フリーズ、バーン、クローズ
spl-token freeze <TOKEN_ACCOUNT_ADDRESS>spl-token thaw <TOKEN_ACCOUNT_ADDRESS>spl-token burn <TOKEN_ACCOUNT_ADDRESS> 5# A token account must normally have a zero token balance before closing.spl-token close --address <TOKEN_ACCOUNT_ADDRESS>
burn はアカウント残高と総供給量の両方を減らします。close はアカウントに残っている lamports を
設定された受取先に返しますが、バーンしたトークンは回復されません。
SOL のラップとアンラップ
# Create or fund the owner's wrapped SOL token account.spl-token wrap 1# Unwrap part of the wrapped SOL balance.spl-token unwrap-sol 0.25# Close the wrapped SOL account and return its full lamport balance.spl-token unwrap
ラップされた SOL の token account に lamports を直接転送した後は sync-native を使用して、
トークン量を基になっている lamports と一致させます。
マルチシグ署名
最大 11 メンバーの M-of-N Token Program マルチシグを作成します:
spl-token create-multisig \2 \<MEMBER_1_ADDRESS> \<MEMBER_2_ADDRESS> \<MEMBER_3_ADDRESS>
そのマルチシグが管理するトランザクションでは、マルチシグのアドレスを該当する権限として渡し、
メンバーの keypair を --multisig-signer の値として繰り返し指定します。主な権限フラグは
操作によって異なるため、対象コマンドのヘルプを確認してください。
機密残高
機密残高のコマンドには、機密転送用に構成された Token-2022 ミントと、 構成済みの受取アカウントが必要です。
spl-token --program-2022 configure-confidential-transfer-account \--address <TOKEN_ACCOUNT_ADDRESS>spl-token --program-2022 deposit-confidential-tokens \<MINT_ADDRESS> \10 \--address <TOKEN_ACCOUNT_ADDRESS>spl-token --program-2022 apply-pending-balance \--address <TOKEN_ACCOUNT_ADDRESS>spl-token --program-2022 withdraw-confidential-tokens \<MINT_ADDRESS> \5 \--address <TOKEN_ACCOUNT_ADDRESS>spl-token --program-2022 transfer \<MINT_ADDRESS> \1 \<RECIPIENT_ADDRESS> \--confidential
configure-confidential-transfer-account と apply-pending-balance では、
--address <TOKEN_ACCOUNT_ADDRESS> か位置引数の <MINT_ADDRESS> のどちらか一方を指定し、
両方は指定しないでください。位置引数の形式では、オーナーの associated token account が使用されます。
入金と出金では常にミントを指定し、--address でそのデフォルトのアカウントを上書きできます。
enable-confidential-credits、disable-confidential-credits、
enable-non-confidential-credits、disable-non-confidential-credits を使用して、
アカウントが受け入れる入金を制御します。これらの設定はアカウントのプライバシーと
支払いの互換性に影響するため、変更する前にアカウントを確認してください。
全コマンド一覧
次の一覧には、spl-token-cli v5.6.1 のすべてのトップレベルコマンドが含まれています。
| コマンド | 説明 |
|---|---|
accounts | ウォレットが所有する token account を一覧表示します。ミントで絞り込むこともできます。 |
address | 選択したウォレットのアドレス、またはその associated token account のアドレスを表示します。 |
apply-pending-balance | 保留中の機密トークンを、利用可能な機密残高に移します。 |
approve | token account のデリゲートと使用許可額を承認します。 |
authorize | ミント、アカウント、または拡張機能の権限を変更または無効化します。 |
balance | token account の残高を表示します。 |
bench | トークンのベンチマークコマンドを実行します。 |
burn | アカウントからトークンを破棄し、ミントの供給量を減らします。 |
close | クローズ可能な token account をクローズし、その lamports を回収します。 |
close-mint | close-mint 拡張機能で構成された Token-2022 ミントをクローズします。 |
configure-confidential-transfer-account | アカウントが機密転送を使用できるように構成します。 |
create-account | associated token account または補助の token account を作成します。 |
create-multisig | M-of-N の Token Program マルチシグを作成します。 |
create-token | ミントを作成します。必要に応じて Token-2022 拡張機能も設定できます。 |
deposit-confidential-tokens | 非機密トークンを、保留中の機密残高に移します。 |
disable-confidential-credits | アカウントへの機密転送の受信を拒否します。 |
disable-cpi-guard | アカウントの CPI Guard を無効にします。 |
disable-non-confidential-credits | 機密アカウントへの非機密転送の受信を拒否します。 |
disable-required-transfer-memos | 受信転送へのメモの添付を必須としないようにします。 |
display | ミント、token account、またはマルチシグの詳細をすべて表示します。 |
enable-confidential-credits | 構成済みアカウントへの機密転送の受信を受け入れます。 |
enable-cpi-guard | CPI 経由で呼び出された場合に、一部のトークン操作を制限します。 |
enable-non-confidential-credits | 機密アカウントへの非機密転送の受信を受け入れます。 |
enable-required-transfer-memos | 受信転送にメモの添付を必須にします。 |
freeze | ミントのフリーズ権限を使用して token account をフリーズします。 |
gc | 不要な token account をクローズし、可能な場合は残高を統合します。 |
help | ルートまたはコマンドのヘルプを表示します。 |
initialize-group | ミントの Token-2022 グループ構成を初期化します。 |
initialize-member | Token-2022 ミントをグループメンバーとして追加します。 |
initialize-metadata | Token-2022 の埋め込みメタデータを初期化します。 |
mint | ミント権限を使用して新しいトークンを発行します。 |
pause | 一時停止可能な Token-2022 ミントの発行、バーン、転送を一時停止します。 |
resume | 一時停止中の Token-2022 ミントの操作を再開します。 |
revoke | token account のデリゲートを削除します。 |
set-interest-rate | 利息付きミントの金利を更新します。 |
set-transfer-fee | 新しい転送手数料パラメーターを予約設定します。 |
set-transfer-hook | ミントの transfer hook プログラム ID を変更します。 |
supply | ミントの総供給量を表示します。 |
sync-native | ラップされた SOL アカウントの量を lamports と同期します。 |
thaw | フリーズされた token account のフリーズを解除します。 |
transfer | token account またはウォレットにトークンを転送します。 |
unwrap | ラップされた SOL アカウントをクローズし、すべての lamports を回収します。 |
unwrap-sol | ラップされた SOL アカウントから SOL の一部またはすべてを取り出します。 |
update-confidential-transfer-settings | ミントの機密転送の承認設定または監査人設定を更新します。 |
update-default-account-state | 新しい token account に対するミントのデフォルト状態を変更します。 |
update-group-address | ミントのグループポインターアドレスを変更します。 |
update-group-max-size | トークングループの最大メンバー数を変更します。 |
update-member-address | ミントのグループメンバーポインターアドレスを変更します。 |
update-metadata | 埋め込みメタデータのフィールドを変更または削除します。 |
update-metadata-address | ミントのメタデータポインターアドレスを変更します。 |
update-ui-amount-multiplier | 新しいスケール済み UI 金額の乗数を予約設定します。 |
withdraw-confidential-tokens | 機密トークンを非機密残高に戻します。 |
withdraw-excess-lamports | Token Program アカウントから、レント免除残高を超える lamports を引き出します。 |
withdraw-withheld-tokens | token account またはミントに留保されている転送手数料を回収します。 |
wrap | ネイティブミントの token account に SOL をラップします。 |
構造化出力とオフライン署名
表示テキストを解析するのではなく、構造化出力を使用してください:
spl-token accounts --output jsonspl-token display <MINT_ADDRESS> --output json-compact
トランザクションを生成するコマンドは、通常 --sign-only、--blockhash、
--signer <PUBKEY=SIGNATURE>、--nonce、--nonce-authority に対応しています。必要なオフライン入力は、
コマンド、ミントの decimals、権限の構成によって異なります。そのため、そのコマンドの --help の instructions に従って
未署名メッセージを生成し、署名を集める前にすべてのアドレスを確認してください。
Is this page helpful?