Tài liệu SolanaTài liệu tham khảo

Tham chiếu SPL Token CLI

Giao diện dòng lệnh spl-token tạo và quản lý mint, token account, authority, các giao dịch chuyển token và các tiện ích mở rộng Token-2022.

Tài liệu tham chiếu này dựa trên spl-token-cli v5.6.1, phiên bản đi kèm với Agave v4.2.1. Chạy spl-token --version và dùng <command> --help để xem chính xác các tùy chọn có trong phiên bản bạn đã cài đặt.

Việc tạo mint, chuyển token, thay đổi authority, đốt token, đóng băng và đóng tài khoản đều gửi giao dịch. Hãy xác nhận cluster, Token Program, signer và địa chỉ trước khi chạy lệnh. Các thay đổi trên Mainnet sử dụng tài sản thật.

Cài đặt và xem trợ giúp

Gói phát hành Agave CLI đã bao gồm spl-token. Nếu chưa được cài đặt, hãy dùng crate Rust đã được phát hành:

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

Xem trợ giúp ở cấp gốc hoặc cấp lệnh:

spl-token --help
spl-token create-token --help
spl-token transfer --help

Tùy chọn toàn cục

Đặt các tùy chọn toàn cục trước lệnh.

Tùy chọnMục đích
-u, --url <URL_OR_MONIKER>Chọn một URL RPC hoặc mainnet-beta, testnet, devnet hay localhost.
-C, --config <PATH>Dùng một tệp cấu hình Solana CLI khác.
--fee-payer <KEYPAIR>Chọn tài khoản trả phí giao dịch.
-p, --program-id <ADDRESS>Dùng một Token Program ID cụ thể.
--program-2022Dùng Token-2022 (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb).
--output <FORMAT>Trả về json hoặc json-compact ở nơi được hỗ trợ.
--with-compute-unit-limit <UNITS>Đặt giới hạn compute unit của giao dịch.
--with-compute-unit-price <MICRO_LAMPORTS>Đặt giá ưu tiên cho mỗi compute unit.
-v, --verboseHiển thị thêm đầu ra.
-V, --versionIn phiên bản CLI đã cài đặt.

Chương trình mặc định là Token Program gốc. Hãy dùng --program-2022 cho mint hoặc token account Token-2022, kể cả khi chỉ đọc. Lệnh sẽ thất bại nếu chương trình được chọn không sở hữu địa chỉ được cung cấp.

Tạo và sử dụng token

Các lệnh sẽ in ra địa chỉ đã tạo. Hãy lưu địa chỉ mint do create-token trả về để dùng cho các lệnh tiếp theo.

# 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

Số lượng là số token theo giao diện (UI), được điều chỉnh theo số chữ số thập phân của mint. Các lệnh như transfer, burn và unwrap-sol chấp nhận ALL ở nơi phần trợ giúp có nêu.

Tạo mint Token-2022

Các tiện ích mở rộng cấp phát thêm trạng thái cho mint hoặc tài khoản và thường phải được chọn khi tạo mint. Ví dụ này tạo một mint có sáu chữ số thập phân với hỗ trợ metadata nhúng:

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

Các tùy chọn tiện ích mở rộng phổ biến của create-token gồm:

  • --enable-close
  • --enable-confidential-transfers auto|manual
  • --enable-freeze
  • --enable-group và --enable-member
  • --enable-metadata
  • --enable-non-transferable
  • --enable-pause
  • --enable-permanent-delegate
  • --enable-permissioned-burn
  • --enable-transfer-hook hoặc --transfer-hook <PROGRAM_ID>
  • --interest-rate <BASIS_POINTS>
  • --transfer-fee-basis-points <BASIS_POINTS> cùng với --transfer-fee-maximum-fee <AMOUNT>
  • --ui-amount-multiplier <MULTIPLIER>

Chỉ kết hợp các tiện ích mở rộng mà chương trình Token-2022 cho phép dùng cùng nhau. Hãy xem lại hướng dẫn về tiện ích mở rộng Token-2022 có liên quan trước khi tạo cấu hình mint không thể hoàn tác.

Quản lý authority và delegate

# 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 hỗ trợ các loại authority: mint, freeze, owner, close và theo từng tiện ích mở rộng. Việc gỡ bỏ một authority bằng --disable là vĩnh viễn nếu không có cơ chế chương trình nào khác có thể khôi phục.

Đóng băng, đốt và đóng

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 giảm cả số dư tài khoản lẫn tổng nguồn cung. close trả lại lamports còn lại của tài khoản cho người nhận đã cấu hình; lệnh này không khôi phục token đã bị đốt.

Wrap và 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

Dùng sync-native sau khi chuyển lamports trực tiếp vào một token account SOL đã wrap để số lượng token của nó khớp với lamports bên dưới.

Ký multisig

Tạo một multisig M-of-N của Token Program với tối đa 11 thành viên:

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

Với giao dịch do multisig đó kiểm soát, hãy truyền địa chỉ multisig làm authority liên quan và cung cấp keypair của các thành viên thông qua các giá trị --multisig-signer lặp lại. Hãy kiểm tra phần trợ giúp của lệnh đích vì cờ authority chính thay đổi tùy theo thao tác.

Số dư bảo mật

Các lệnh về số dư bảo mật yêu cầu một mint Token-2022 được cấu hình cho chuyển khoản bảo mật và một tài khoản nhận đã được cấu hình.

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

Với configure-confidential-transfer-account và apply-pending-balance, hãy truyền --address <TOKEN_ACCOUNT_ADDRESS> hoặc <MINT_ADDRESS> theo vị trí, không dùng cả hai. Dạng theo vị trí dùng associated token account của chủ sở hữu. Lệnh gửi và rút luôn nhận mint và chấp nhận --address để ghi đè tài khoản mặc định đó.

Dùng enable-confidential-credits, disable-confidential-credits, enable-non-confidential-credits và disable-non-confidential-credits để kiểm soát những khoản nạp mà tài khoản chấp nhận. Các thiết lập này ảnh hưởng đến quyền riêng tư của tài khoản và khả năng tương thích thanh toán; hãy kiểm tra tài khoản trước khi thay đổi.

Chỉ mục lệnh đầy đủ

Chỉ mục sau đây gồm mọi lệnh cấp cao nhất trong spl-token-cli v5.6.1.

LệnhMô tả
accountsLiệt kê các token account thuộc sở hữu của một ví, có thể lọc theo mint.
addressIn địa chỉ ví đã chọn hoặc associated token account address của ví đó.
apply-pending-balanceChuyển token bảo mật đang chờ vào số dư bảo mật khả dụng.
approvePhê duyệt một delegate và hạn mức chi tiêu cho một token account.
authorizeThay đổi hoặc vô hiệu hóa authority của mint, tài khoản hoặc tiện ích mở rộng.
balanceHiển thị số dư của một token account.
benchChạy các lệnh đo hiệu năng token.
burnHủy token từ một tài khoản và giảm nguồn cung của mint.
closeĐóng một token account đủ điều kiện và thu hồi lamports của nó.
close-mintĐóng một mint Token-2022 được cấu hình với tiện ích mở rộng close-mint.
configure-confidential-transfer-accountCấu hình một tài khoản để sử dụng chuyển khoản bảo mật.
create-accountTạo một associated token account hoặc token account phụ trợ.
create-multisigTạo một multisig M-of-N của Token Program.
create-tokenTạo một mint, có thể kèm các tiện ích mở rộng Token-2022.
deposit-confidential-tokensChuyển token không bảo mật vào số dư bảo mật đang chờ.
disable-confidential-creditsTừ chối các khoản chuyển bảo mật đến một tài khoản.
disable-cpi-guardTắt CPI Guard cho một tài khoản.
disable-non-confidential-creditsTừ chối các khoản chuyển không bảo mật đến một tài khoản bảo mật.
disable-required-transfer-memosNgừng yêu cầu các khoản chuyển đến phải kèm memo.
displayHiển thị đầy đủ thông tin chi tiết về mint, token account hoặc multisig.
enable-confidential-creditsChấp nhận các khoản chuyển bảo mật đến một tài khoản đã được cấu hình.
enable-cpi-guardHạn chế một số thao tác token nhất định khi được gọi qua CPI.
enable-non-confidential-creditsChấp nhận các khoản chuyển không bảo mật đến một tài khoản bảo mật.
enable-required-transfer-memosYêu cầu các khoản chuyển đến phải kèm memo.
freezeĐóng băng một token account bằng freeze authority của mint.
gcĐóng các token account không cần thiết và hợp nhất số dư nếu có thể.
helpIn phần trợ giúp gốc hoặc của lệnh.
initialize-groupKhởi tạo cấu hình nhóm Token-2022 cho một mint.
initialize-memberThêm một mint Token-2022 làm thành viên của nhóm.
initialize-metadataKhởi tạo metadata nhúng của Token-2022.
mintTạo thêm đơn vị token mới bằng mint authority.
pauseTạm dừng mint, burn và transfer cho một mint Token-2022 có thể tạm dừng.
resumeTiếp tục hoạt động cho một mint Token-2022 đang bị tạm dừng.
revokeGỡ bỏ delegate của một token account.
set-interest-rateCập nhật lãi suất của mint sinh lãi.
set-transfer-feeLên lịch các tham số phí chuyển mới.
set-transfer-hookThay đổi program ID của transfer hook cho một mint.
supplyHiển thị tổng nguồn cung của một mint.
sync-nativeĐồng bộ số lượng của tài khoản SOL đã wrap với lamports của nó.
thawRã đông một token account đang bị đóng băng.
transferChuyển token đến một token account hoặc ví.
unwrapĐóng một tài khoản SOL đã wrap và thu hồi toàn bộ lamports.
unwrap-solRút một phần hoặc toàn bộ SOL khỏi một tài khoản SOL đã wrap.
update-confidential-transfer-settingsCập nhật cài đặt phê duyệt hoặc auditor của chuyển khoản bảo mật cho một mint.
update-default-account-stateThay đổi trạng thái mặc định của mint đối với các token account mới.
update-group-addressThay đổi địa chỉ group pointer của một mint.
update-group-max-sizeThay đổi số thành viên tối đa của một nhóm token.
update-member-addressThay đổi địa chỉ group member pointer của một mint.
update-metadataThay đổi hoặc xóa các trường metadata nhúng.
update-metadata-addressThay đổi địa chỉ metadata pointer của một mint.
update-ui-amount-multiplierLên lịch hệ số nhân số lượng UI theo tỷ lệ mới.
withdraw-confidential-tokensChuyển token bảo mật trở lại số dư không bảo mật.
withdraw-excess-lamportsRút lamports vượt quá số dư miễn phí thuê (rent-exempt) từ một tài khoản của Token Program.
withdraw-withheld-tokensThu các khoản phí chuyển bị giữ lại trong token account hoặc mint.
wrapWrap SOL vào một token account của native mint.

Ký có cấu trúc và ký ngoại tuyến

Hãy dùng đầu ra có cấu trúc thay vì phân tích văn bản hiển thị:

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

Các lệnh tạo giao dịch thường hỗ trợ --sign-only, --blockhash, --signer <PUBKEY=SIGNATURE>, --nonce và --nonce-authority. Các đầu vào ngoại tuyến chính xác phụ thuộc vào lệnh, số chữ số thập phân của mint và cách bố trí authority, vì vậy hãy tạo thông điệp chưa ký theo hướng dẫn --help của lệnh đó và xác minh mọi địa chỉ trước khi thu thập chữ ký.

Is this page helpful?