solana-cli
Version:
Solana cli tools
438 lines (394 loc) • 15.3 kB
Markdown
* [solana-cli](
* [Install](
* [Environment variable settings](
* [Commands](
* [Create wallet](
* [Current wallet](
* [Network](
* [Airdrop](
* [GetSlot](
* [GetRecentBlock](
* [GetTransaction](
* [GetBalance](
* [Transfer](
* [SubCommands [Token]](
* [Deploy SPL-Token](
* [SPL-Token Info](
* [Mint SPL-Token](
* [SPL-Token Balance](
* [SPL-Token Transfer](
* [Update SPL-Token authorize](
* [Update SPL-Token metadata](
**solana cli for nodejs**
Support SOL transfer balance query and SPL-TOKEN create, mint, transfer, metadata update, authorize update. Support metaplex token metedata account
```bash
npm install solana-cli -g
```
```shell
export SOLANA_PRIVATE_KEY=${your_account_private_key}
export SOLANA_NETWORK=${network}
```
Generate a new wallet public and private key pair
```shell
solana-cli createWallet
```
Output
```shell
{
privateKey: '3YcgCAMhihf2FACfUi2Ska3oQ3Bz8g5asmyEEHdyw9AdGqSZjiXi2bsx1dXLFXEGfkSzPvHcRZnetHp1VuPK8hMs',
publicKey: 'AoNWGW75xhuMxmv6ByR1NWfgugN8bZaAgY3Lhx4UNh7',
address: 'AoNWGW75xhuMxmv6ByR1NWfgugN8bZaAgY3Lhx4UNh7'
}
```
Display the wallet address and public key used in the current environment
```shell
solana-cli wallet
```
Output
```shell
{
publicKey: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c',
address: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c'
}
```
Return current network connection provider endpoint
```shell
solana-cli endpoint
```
Output
```shell
https://api.devnet.solana.com
```
Request SOL from a faucet (Support devnet and testnet)
Usage
```shell
Usage: solana-cli airdrop [options]
Options:
-d, --destination <string> Account of airdrop recipient
-a, --amount <number> The airdrop amount to request, in SOL (default: 1)
-h, --help display help for command
```
Example
```shell
solana-cli airdrop -d 2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c
```
Output
```shell
- Start send airdrop 1 SOL to 2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c transaction .....
- Send airdrop 1 SOL to 2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c transaction successful. hash="262xhTkfTsXw1N6R3cn6BPfeN84i7per4BGSQSXYvTe3j5HnAByejABiaRVct6ZP4V92w243r82obHvh78xSyPiq"
```
Fetch the slot that has reached the given or default commitment level, call rpc.getSlot()
```shell
solana-cli slot
```
Output
```shell
333533488
```
Fetch the latest blockhash from the cluster
```shell
solana-cli recentBlock
```
Output
```shell
{
blockHash: '5Jad67Tugvt1QFnh797GiD5PeZMFdKdoCHEC4d6MxR2v',
blockNumber: 333533635
}
```
Fetch parsed transaction details for a confirmed or finalized transaction
```shell
solana-cli transaction -hash 5Dx8utXK8W6Z1hnmrE9HmB4Xft6FPdSxXkAE8QKay7jVMr1ptbFBUpDsuYogdJi256dAF9ncDFqpYAdoseRXi7fD
```
Output
```shell
{
"blockTime": 1729157369,
"meta": {...},
"transaction": {....}
}
```
Fetch the SOL balance for the specified public key
```shell
solana-cli balance -a 2sFWRzFKaCRLH88yDNtKdSxnrksYr148qeaG2Gw6HUsW
```
Output
```shell
{
"amount": 1992559560,
"uiAmount": 1.99255956
}
```
Transfer SOL from the current wallet to the specified destination address
Usage
```shell
Usage: solana-cli transfer [options]
Options:
-d, --destination <string> Account that will receive transferred sol
-a, --amount <number> Amount to transfer
-c, --commitment <string> Configuring State Commitment, values of(finalized | confirmed | processed) (default: "finalized")
-h, --help display help for command
```
Example
```shell
solana-cli transfer -d 6cMTwC6QvwgMHv8nbyeTsobvmMxFHFe4343RMutQdUQU -a 0.1
```
Output
```shell
- Start building transfer SOL transaction ....
+ Transfer 0.1 SOL transaction send successful. hash="5yce6Pe7yhKo5YeLq9Q88zbYkKS8ct2iZiZ9QaJLZ6WqBUjD2CFtGE6q6skPmNLAYPicKMi6MwyHiDt9fbn35z8H".
```
```shell
solana-cli token [options] [command]
Commands:
info [options] Get solana SPL-TOKEN information
deploy [options] Deploy new solana SPL-TOKEN
mint [options] Mint solana SPL-TOKEN amount
getBalance [options] Fetch parsed token accounts owned by the specified account
transfer [options] Transfer spl token to the destination address
authorize [options] Set spl token authority to new account
update [options] Update spl token metadata
help [command] display help for command
```
Create and mint new solana SPL-Token. If the ata account of the target address does not exist, it will be automatically created without the need to create it separately
Usage
```shell
solana-cli token deploy [options]
Options:
-n, --name <string> Token name
-s, --symbol <string> Token symbol
-u, --uri <string> Token URI
-d, --decimals <number> Token decimals
-a, --amount <number> First supply amount
-m, --metadataAccount <string> Whether to create metadataAccount, if not, use extension (only valid for TOKEN_2022_PROGRAM_ID)
-p, --programId <string> SPL-TOKEN programId version, values of (TOKEN || TOKEN_2022)
-h, --help display help for command
```
Example
```shell
solana-cli token deploy -n "Test Token" -s "TT" -u "https://arweave.net/7BzVsHRrEH0ldNOCCM4_E00BiAYuJP_EQiqvcEYz3YY" -d 8 -a 1000000 -m "YES" -p TOKEN
```
Output
```shell
- Start build create token transaction....
- Start sending create token transaction....
+ Create token send successful. hash="2z4SG6EQPga99nNzhRtaKANLZvN4LveGftCGdQjgchvGSrjaK4ebLDnTu2GD2t7JWBTP9DR5UnMp1f9pCwLHJnU9", mint="nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT"
- Start building mint token transaction.....
{
payer: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c',
mint: 'nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT',
destination: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c',
amount: '1000000',
programIdVersion: 'TOKEN'
}
- Generate associated token account by owner destination="2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c"
+ Destination="2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c" associated token account created at "BZ7hD9b5CfW11wgwhR1iCDXshNaFodCPtXoMTzHtThry"
- Start fetch destination associated token account "BZ7hD9b5CfW11wgwhR1iCDXshNaFodCPtXoMTzHtThry"
+ Destination associated token account not found, create associated token account instruction....
- Create mint to instruction....
- Start send mint token transaction....
+ Mint token transaction send successful. hash="3tHcqWfWtaGNduKDo99vpDQPxoBHqTNxKZEy4NtUfjeQifcGAcKVDnvZUikpVXjJbxJ6tF3x9GNfBdkDRDPfwud7".
Token info create and mint success, details:
{
tokenName: 'Test Token',
tokenSymbol: 'TT',
tokenUri: 'https://arweave.net/7BzVsHRrEH0ldNOCCM4_E00BiAYuJP_EQiqvcEYz3YY',
tokenAddress: 'nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT',
tokenDecimals: '8',
totalSupply: '1000000',
programIdVersion: 'TOKEN',
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
sender: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c',
createMintHash: '2z4SG6EQPga99nNzhRtaKANLZvN4LveGftCGdQjgchvGSrjaK4ebLDnTu2GD2t7JWBTP9DR5UnMp1f9pCwLHJnU9',
mintTokenHash: '3tHcqWfWtaGNduKDo99vpDQPxoBHqTNxKZEy4NtUfjeQifcGAcKVDnvZUikpVXjJbxJ6tF3x9GNfBdkDRDPfwud7'
}
```
**--metadataAccount <string> Whether to create metadataAccount, if not, use extension (only valid for TOKEN_2022_PROGRAM_ID)**
#### SPL-Token Info
Get solana SPL-TOKEN information
```shell
solana-cli token info -m nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT -p TOKEN
```
Output
```shell
{
address: 'nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT',
name: 'Test Token',
symbol: 'TT',
uri: 'https://arweave.net/7BzVsHRrEH0ldNOCCM4_E00BiAYuJP_EQiqvcEYz3YY',
isMutable: true,
updateAuthority: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c',
metaplex: true,
metadataAccount: 'Av6TsjYDgodgCUVV7nmeYCYGnWszRq7Tf77HTH9TmCH3',
decimals: 8,
totalSupply: '1000000',
mintAuthority: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c',
freezeAuthority: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c'
}
```
Mint solana SPL-TOKEN amount, If the ata account of the target address does not exist, it will be automatically created without the need to create it separately
Usage
```shell
solana-cli token mint [options]
Options:
-m, --mint <string> Mint for the account
-d, --destination <string> Address of the account to mint to
-a, --amount <number> Amount to mint
-p, --programId <string> SPL-TOKEN programId version, values of (TOKEN || TOKEN_2022)
-h, --help display help for command
```
Example
```shell
solana-cli token mint -m nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT -d 2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c -a 20000 -p TOKEN
```
Output
```shell
- Start building mint token transaction.....
{
payer: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c',
mint: 'nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT',
destination: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c',
amount: '20000',
programIdVersion: 'TOKEN'
}
- Generate associated token account by owner destination="2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c"
+ Destination="2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c" associated token account created at "BZ7hD9b5CfW11wgwhR1iCDXshNaFodCPtXoMTzHtThry"
- Start fetch destination associated token account "BZ7hD9b5CfW11wgwhR1iCDXshNaFodCPtXoMTzHtThry"
+ Destination associated token account info :
{
account: 'BZ7hD9b5CfW11wgwhR1iCDXshNaFodCPtXoMTzHtThry',
mint: 'nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT',
owner: '2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c',
amount: 100000000000000n,
delegate: null,
delegatedAmount: 0n,
isInitialized: true,
isFrozen: false,
isNative: false,
rentExemptReserve: null,
closeAuthority: null,
tlvData: <Buffer >
}
- Create mint to instruction....
- Start send mint token transaction....
+ Mint token transaction send successful. hash="5FvJFy5CPHCgpdAAeY4Pkkesi27jLvgQRYNVVUJ6vDY1qbkofuAUE2KBvZVQhsExQCKeA4hjb1T3yXfGiKGbZRPq".
```
Fetch parsed token accounts owned by the specified account
Usage
```shell
solana-cli token getBalance [options]
Options:
-a, --address <string> Address public key
-m, --mint <string> SPL-TOKEN account
-p, --programId <string> SPL-TOKEN programId version, values of (TOKEN || TOKEN_2022) (default: "TOKEN")
-c, --commitment <string> Configuring State Commitment, values of(finalized | confirmed | processed) (default: "finalized")
-h, --help display help for command
```
Example
```shell
solana-cli token getBalance -m nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT -a 2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c -p TOKEN
```
Output
```shell
[
{
"address": "2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c",
"account": "BZ7hD9b5CfW11wgwhR1iCDXshNaFodCPtXoMTzHtThry",
"state": "initialized",
"amount": "102000000000000",
"uiAmount": "1020000",
"token": "nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT",
"decimals": 8,
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
}
]
```
Transfer spl token to the destination address. If the ata account of the target address does not exist, it will be automatically created without the need to create it separately
Usage
```shell
solana-cli token transfer [options]
Options:
-m, --mint <string> Mint for the account
-d, --destination <string> Account that will receive transferred token
-a, --amount <number> Amount to transfer
-p, --programId <string> SPL-TOKEN programId version, values of (TOKEN || TOKEN_2022)
-c, --commitment <string> Configuring State Commitment, values of(finalized | confirmed | processed) (default: "finalized")
-h, --help display help for command
```
Example
```shell
solana-cli token transfer -m nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT -d 6cMTwC6QvwgMHv8nbyeTsobvmMxFHFe4343RMutQdUQU -a 100 -p TOKEN
```
Output
```shell
- Start building TT transfer transaction ....
+ Transfer 100 TT transaction send successful. hash="YkP25WMpZXsLPbXEWPH2FbodW3iu5kdyigqhymmXTxBg5UC46f47KRd854qUKZsHtVdvkJUK9691G5RBGiK9NUx".
```
Update spl token authority to new account
Usage
```shell
solana-cli token authorize [options]
Options:
-m, --mint <string> Mint for the account
-a, --authorize <string> Type of authority to set, values of (mint|freeze|update)
-n, --newAuthority <number> New authority of the account
-p, --programId <string> SPL-TOKEN programId version, values of (TOKEN || TOKEN_2022)
-c, --commitment <string> Configuring State Commitment, values of(finalized | confirmed | processed) (default: "finalized")
-h, --help display help for command
```
Example (update freeze authorize)
```shell
solana-cli token authorize -m nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT -a freeze -n 6cMTwC6QvwgMHv8nbyeTsobvmMxFHFe4343RMutQdUQU -p TOKEN
```
Output
```shell
- Start building set authority transaction ....
Token=nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT || authorityType=freeze || oldAuthority=2AZZJJghtv5HjYm9SiMGB6NAby8mMHBAr9qXfFVYE34c || newAuthority=6cMTwC6QvwgMHv8nbyeTsobvmMxFHFe4343RMutQdUQU
+ Set authority transaction send successful. hash="2dCuvW2waptP54DjWhQR3G7w9sTDd6JN9XRTwCkXBBD2dU4muGYcCpEZoKz6zSmcfo7HuwPMiF6xRscB5kPsFq7R".
```
Update spl token metadata field. support TOKEN_2022 extension and TOKEN Metaplex Metadata, The program will automatically recognize
Usage
```shell
solana-cli token update [options]
Options:
-m, --mint <string> Mint for the account
-f, --field <string> Field to update in the metadata (name|symbol|uri)
-V, --value <number> Value to write for the field
-p, --programId <string> SPL-TOKEN programId version, values of (TOKEN || TOKEN_2022)
-c, --commitment <string> Configuring State Commitment, values of(finalized | confirmed | processed) (default: "finalized")
-h, --help display help for command
```
Example (update metadata 'symbol' field)
```shell
solana-cli token update -m nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT -f "symbol" -V "TTT" -p TOKEN
```
Output
```shell
- Start building update metadata field transaction ....
Token=nxpgh68Kkz67oabxTY74z4JvC4hKrZnKYq2FtpCDGUT || Field=symbol || value=TTT
+ Update token metadata field transaction send successful. hash="2uqaMj1F44xnSfV3EwbuFHvP1DfzUAu4Vcy8TnAsSgP6wgkFfN4Dsb2fbRnymXKvinBRLjbgfEpwcpDCWUXFmemV".
```