Довідник SPL Token CLI

Інтерфейс командного рядка spl-token створює mint і token account, а також керує повноваженнями, переказами та розширеннями Token-2022.

Цей довідник відповідає spl-token-cli v5.6.1 — версії, що постачається разом з Agave v4.2.1. Виконайте spl-token --version і скористайтеся <command> --help, щоб побачити точний набір параметрів у вашій встановленій версії.

Створення mint, перекази, зміна повноважень, спалювання, заморожування та закриття акаунтів надсилають транзакції. Перш ніж виконувати команду, перевірте кластер, Token Program, підписувача й адреси. Зміни в Mainnet використовують реальні активи.

Встановлення та довідка

Пакет Agave CLI містить spl-token. Якщо його не встановлено, скористайтеся опублікованим Rust-крейтом:

cargo install spl-token-cli --version 5.6.1
spl-token --version

Перегляньте довідку на рівні кореня або окремої команди:

spl-token --help
spl-token create-token --help
spl-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.
--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. Використовуйте --program-2022 для mint або акаунта Token-2022, зокрема й під час читання. Команда завершується помилкою, якщо вибрана програма не є власником указаної адреси.

Створення та використання токена

Команди виводять адреси створених об’єктів. Збережіть адресу mint, яку повертає 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

Суми — це UI-суми токенів, скориговані з урахуванням десяткових знаків mint. Команди, як-от transfer, burn і unwrap-sol, приймають ALL там, де це вказано в їхній довідці.

Створення mint Token-2022

Розширення виділяють додатковий стан mint або акаунта й зазвичай мають бути вибрані під час створення mint. Цей приклад створює mint із шістьма десятковими знаками та підтримкою вбудованих метаданих:

spl-token --program-2022 create-token \
--decimals 6 \
--enable-metadata
spl-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 дозволяє використовувати разом. Перш ніж створювати незмінну конфігурацію mint, ознайомтеся з відповідним посібником із розширень 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 підтримує типи повноважень mint, freeze, owner, close, а також специфічні для розширень. Видалення повноваження за допомогою --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

Використовуйте sync-native після прямого переказу lamports на token account із wrapped SOL, щоб кількість його токенів відповідала базовим lamports.

Підписання multisig

Створіть multisig Token Program за схемою M-of-N із кількістю учасників до 11:

spl-token create-multisig \
2 \
<MEMBER_1_ADDRESS> \
<MEMBER_2_ADDRESS> \
<MEMBER_3_ADDRESS>

Для транзакції, яку контролює цей multisig, передайте адресу multisig як відповідне повноваження та вкажіть keypair учасників через повторювані значення --multisig-signer. Перевірте довідку цільової команди, оскільки прапорець її основного повноваження залежить від операції.

Конфіденційні баланси

Команди конфіденційного балансу потребують mint 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 власника. Депозит і виведення завжди приймають mint і підтримують --address для перевизначення цього акаунта за замовчуванням.

Використовуйте enable-confidential-credits, disable-confidential-credits, enable-non-confidential-credits і disable-non-confidential-credits, щоб керувати тим, які надходження приймає акаунт. Ці налаштування впливають на приватність акаунта та сумісність платежів; перегляньте акаунт перед їх зміною.

Повний індекс команд

Нижче наведено індекс усіх команд верхнього рівня в spl-token-cli v5.6.1.

КомандаОпис
accountsПоказати token account, що належать гаманцю, з можливістю фільтрації за mint.
addressВивести адресу вибраного гаманця або адресу його associated token account.
apply-pending-balanceПеремістити відкладені конфіденційні токени до доступного конфіденційного балансу.
approveСхвалити делегата й ліміт витрат для token account.
authorizeЗмінити або вимкнути повноваження mint, акаунта чи розширення.
balanceПоказати баланс token account.
benchЗапустити команди бенчмаркінгу токенів.
burnЗнищити токени на акаунті й зменшити пропозицію mint.
closeЗакрити придатний token account і повернути його lamports.
close-mintЗакрити mint Token-2022, налаштований із розширенням close-mint.
configure-confidential-transfer-accountНалаштувати акаунт на використання конфіденційних переказів.
create-accountСтворити associated або допоміжний token account.
create-multisigСтворити multisig Token Program за схемою M-of-N.
create-tokenСтворити mint, за потреби з розширеннями Token-2022.
deposit-confidential-tokensПеремістити неконфіденційні токени до відкладеного конфіденційного балансу.
disable-confidential-creditsВідхиляти вхідні конфіденційні перекази для акаунта.
disable-cpi-guardВимкнути CPI Guard для акаунта.
disable-non-confidential-creditsВідхиляти вхідні неконфіденційні перекази для конфіденційного акаунта.
disable-required-transfer-memosБільше не вимагати наявності memo у вхідних переказах.
displayПоказати повні відомості про mint, token account або multisig.
enable-confidential-creditsПриймати вхідні конфіденційні перекази для налаштованого акаунта.
enable-cpi-guardОбмежити вибрані операції з токенами, коли їх викликають через CPI.
enable-non-confidential-creditsПриймати вхідні неконфіденційні перекази для конфіденційного акаунта.
enable-required-transfer-memosВимагати наявності memo у вхідних переказах.
freezeЗаморозити token account за допомогою freeze authority mint.
gcЗакрити непотрібні token account і за можливості консолідувати баланси.
helpВивести довідку кореня або команди.
initialize-groupІніціалізувати конфігурацію групи Token-2022 для mint.
initialize-memberДодати mint Token-2022 як учасника групи.
initialize-metadataІніціалізувати вбудовані метадані Token-2022.
mintСтворити нові одиниці токена за допомогою mint authority.
pauseПризупинити mint, burn і transfer для mint Token-2022 із підтримкою паузи.
resumeВідновити операції для призупиненого mint Token-2022.
revokeВидалити делегата token account.
set-interest-rateОновити ставку для mint із нарахуванням відсотків.
set-transfer-feeЗапланувати нові параметри комісії за переказ.
set-transfer-hookЗмінити ідентифікатор програми transfer hook для mint.
supplyПоказати загальну пропозицію mint.
sync-nativeСинхронізувати кількість на акаунті wrapped SOL з його lamports.
thawРозморозити заморожений token account.
transferПеревести токени на token account або гаманець.
unwrapЗакрити акаунт wrapped SOL і повернути всі lamports.
unwrap-solВилучити частину або весь SOL з акаунта wrapped SOL.
update-confidential-transfer-settingsОновити параметри схвалення конфіденційних переказів або аудитора для mint.
update-default-account-stateЗмінити стан за замовчуванням для нових token account цього mint.
update-group-addressЗмінити адресу вказівника групи mint.
update-group-max-sizeЗмінити максимальну кількість учасників групи токенів.
update-member-addressЗмінити адресу вказівника учасника групи mint.
update-metadataЗмінити або видалити поля вбудованих метаданих.
update-metadata-addressЗмінити адресу вказівника метаданих mint.
update-ui-amount-multiplierЗапланувати новий множник масштабованої UI-суми.
withdraw-confidential-tokensПовернути конфіденційні токени на неконфіденційний баланс.
withdraw-excess-lamportsВивести lamports понад баланс, що звільняє від орендної плати, з акаунта Token Program.
withdraw-withheld-tokensЗібрати комісії за переказ, утримані на token account або в mint.
wrapОбгорнути SOL у token account рідного mint.

Структурований вивід і офлайн-підписання

Використовуйте структурований вивід замість розбору тексту для відображення:

spl-token accounts --output json
spl-token display <MINT_ADDRESS> --output json-compact

Команди, що створюють транзакції, зазвичай підтримують --sign-only, --blockhash, --signer <PUBKEY=SIGNATURE>, --nonce і --nonce-authority. Точні офлайн-вхідні дані залежать від команди, десяткових знаків mint і схеми повноважень, тому згенеруйте непідписане повідомлення за інструкціями --help цієї команди та перевірте кожну адресу, перш ніж збирати підписи.

Is this page helpful?