Інтерфейс командного рядка 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.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. |
--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-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 дозволяє використовувати разом. Перш ніж створювати незмінну конфігурацію 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 jsonspl-token display <MINT_ADDRESS> --output json-compact
Команди, що створюють транзакції, зазвичай підтримують --sign-only, --blockhash,
--signer <PUBKEY=SIGNATURE>, --nonce і --nonce-authority. Точні офлайн-вхідні
дані залежать від команди, десяткових знаків mint і схеми повноважень, тому згенеруйте
непідписане повідомлення за інструкціями --help цієї команди та перевірте кожну адресу,
перш ніж збирати підписи.
Is this page helpful?