Интерфейс командной строки spl-token создаёт минты, token accounts, полномочия, переводы
и расширения Token-2022 и управляет ими.
Этот справочник соответствует
spl-token-cli v5.6.1 —
версии, входящей в состав Agave v4.2.1. Выполните spl-token --version и используйте
<command> --help, чтобы узнать точный набор опций в установленной у вас версии.
Создание минтов, переводы, смена полномочий, сжигание, заморозка и закрытие аккаунтов отправляют транзакции. Перед запуском команды проверьте кластер, 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> | Использовать явно указанный ID 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 для
минта или аккаунта Token-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
Суммы указываются в UI-единицах токена с учётом количества десятичных знаков минта. Такие команды, как
transfer, burn и unwrap-sol, принимают ALL там, где это указано в их справке.
Создание минта Token-2022
Расширения выделяют дополнительное состояние минта или аккаунта и, как правило, должны выбираться при создании минта. В этом примере создаётся минт с шестью десятичными знаками и поддержкой встроенных метаданных:
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 поддерживает типы полномочий 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 аккаунта настроенному получателю; сожжённые токены он не восстанавливает.
Wrap и unwrap 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 на wrapped SOL token
account, чтобы сумма токенов соответствовала базовым lamports.
Подпись multisig
Создайте multisig M-из-N для Token Program, включающий до 11 участников:
spl-token create-multisig \2 \<MEMBER_1_ADDRESS> \<MEMBER_2_ADDRESS> \<MEMBER_3_ADDRESS>
Для транзакции, управляемой этим multisig, передайте адрес multisig в качестве
соответствующих полномочий и укажите 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 accounts, принадлежащих кошельку, с возможной фильтрацией по минту. |
address | Вывести адрес выбранного кошелька или адрес его associated token account. |
apply-pending-balance | Перевести ожидающие конфиденциальные токены в доступный конфиденциальный баланс. |
approve | Одобрить делегата и лимит расходования для token account. |
authorize | Изменить или отключить полномочия минта, аккаунта или расширения. |
balance | Показать баланс token account. |
bench | Запустить команды бенчмаркинга токенов. |
burn | Уничтожить токены на аккаунте и уменьшить предложение минта. |
close | Закрыть подходящий token account и вернуть его lamports. |
close-mint | Закрыть минт Token-2022, настроенный с расширением close-mint. |
configure-confidential-transfer-account | Настроить аккаунт для конфиденциальных переводов. |
create-account | Создать associated или вспомогательный token account. |
create-multisig | Создать multisig M-из-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 | Перестать требовать, чтобы входящие переводы содержали memo. |
display | Показать полные сведения о минте, token account или multisig. |
enable-confidential-credits | Принимать входящие конфиденциальные переводы для настроенного аккаунта. |
enable-cpi-guard | Ограничить отдельные операции с токенами при вызове через CPI. |
enable-non-confidential-credits | Принимать входящие неконфиденциальные переводы для конфиденциального аккаунта. |
enable-required-transfer-memos | Требовать, чтобы входящие переводы содержали memo. |
freeze | Заморозить token account с помощью freeze authority минта. |
gc | Закрыть ненужные token accounts и по возможности объединить балансы. |
help | Вывести справку по корню или по команде. |
initialize-group | Инициализировать конфигурацию группы Token-2022 для минта. |
initialize-member | Добавить минт Token-2022 в группу в качестве участника. |
initialize-metadata | Инициализировать встроенные метаданные Token-2022. |
mint | Выпустить новые единицы токена с помощью mint authority. |
pause | Приостановить выпуск, сжигание и перевод для минта Token-2022 с поддержкой паузы. |
resume | Возобновить операции для приостановленного минта Token-2022. |
revoke | Удалить делегата token account. |
set-interest-rate | Обновить ставку минта с начислением процентов. |
set-transfer-fee | Запланировать новые параметры комиссии за перевод. |
set-transfer-hook | Изменить ID программы transfer hook для минта. |
supply | Показать общее предложение минта. |
sync-native | Синхронизировать сумму аккаунта wrapped SOL с его lamports. |
thaw | Разморозить замороженный token account. |
transfer | Перевести токены на token account или кошелёк. |
unwrap | Закрыть аккаунт wrapped SOL и вернуть все lamports. |
unwrap-sol | Вывести часть или весь SOL с аккаунта wrapped SOL. |
update-confidential-transfer-settings | Обновить настройки одобрения или аудитора конфиденциальных переводов для минта. |
update-default-account-state | Изменить состояние по умолчанию для новых token accounts минта. |
update-group-address | Изменить адрес group pointer минта. |
update-group-max-size | Изменить максимальное число участников группы токенов. |
update-member-address | Изменить адрес group member pointer минта. |
update-metadata | Изменить или удалить поля встроенных метаданных. |
update-metadata-address | Изменить адрес metadata pointer минта. |
update-ui-amount-multiplier | Запланировать новый множитель масштабируемой UI-суммы. |
withdraw-confidential-tokens | Вернуть конфиденциальные токены на неконфиденциальный баланс. |
withdraw-excess-lamports | Вывести lamports сверх баланса, освобождающего от аренды, с аккаунта Token Program. |
withdraw-withheld-tokens | Собрать комиссии за перевод, удержанные на token accounts или в минте. |
wrap | Обернуть SOL в token account нативного минта. |
Структурированная и офлайн-подпись
Используйте структурированный вывод вместо разбора отображаемого текста:
spl-token accounts --output jsonspl-token display <MINT_ADDRESS> --output json-compact
Команды, формирующие транзакции, обычно поддерживают --sign-only, --blockhash,
--signer <PUBKEY=SIGNATURE>, --nonce и --nonce-authority. Точный набор
офлайн-входных данных зависит от команды, количества десятичных знаков минта и схемы полномочий,
поэтому сформируйте неподписанное сообщение по инструкциям --help этой команды и
проверьте каждый адрес, прежде чем собирать подписи.
Is this page helpful?