Cli: Remove units from various subcommands (#8301)
* Cli: Remove unit arg from various subcommands * Update book usage page * Update scripts and docs
This commit is contained in:
parent
9bcca268a3
commit
b997d3eb4e
|
@ -22,12 +22,6 @@ $ solana airdrop 2
|
||||||
|
|
||||||
// Return
|
// Return
|
||||||
"2.00000000 SOL"
|
"2.00000000 SOL"
|
||||||
|
|
||||||
// Command
|
|
||||||
$ solana airdrop 123 --lamports
|
|
||||||
|
|
||||||
// Return
|
|
||||||
"123 lamports"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Get Balance
|
### Get Balance
|
||||||
|
|
|
@ -191,12 +191,17 @@ FLAGS:
|
||||||
-v, --verbose Show extra information header
|
-v, --verbose Show extra information header
|
||||||
|
|
||||||
OPTIONS:
|
OPTIONS:
|
||||||
--ask-seed-phrase <KEYPAIR NAME> Recover a keypair using a seed phrase and optional passphrase [possible
|
--ask-seed-phrase <KEYPAIR NAME>
|
||||||
values: keypair]
|
Recover a keypair using a seed phrase and optional passphrase [possible values: keypair]
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
|
||||||
~/.config/solana/cli/config.yml]
|
-C, --config <PATH>
|
||||||
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--derivation-path <ACCOUNT or ACCOUNT/CHANGE>
|
||||||
|
Derivation path to use: m/44'/501'/ACCOUNT'/CHANGE'; default key is device base pubkey: m/44'/501'/0'
|
||||||
|
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
SUBCOMMANDS:
|
SUBCOMMANDS:
|
||||||
account Show the contents of an account
|
account Show the contents of an account
|
||||||
|
@ -226,6 +231,8 @@ SUBCOMMANDS:
|
||||||
genesis-hash Get the genesis hash
|
genesis-hash Get the genesis hash
|
||||||
gossip Show the current gossip network nodes
|
gossip Show the current gossip network nodes
|
||||||
help Prints this message or the help of the given subcommand(s)
|
help Prints this message or the help of the given subcommand(s)
|
||||||
|
leader-schedule Display leader schedule
|
||||||
|
live-slots Show information about the current slot progression
|
||||||
new-nonce Generate a new nonce, rendering the existing nonce useless
|
new-nonce Generate a new nonce, rendering the existing nonce useless
|
||||||
nonce Get the current nonce value
|
nonce Get the current nonce value
|
||||||
nonce-account Show the contents of a nonce account
|
nonce-account Show the contents of a nonce account
|
||||||
|
@ -233,14 +240,17 @@ SUBCOMMANDS:
|
||||||
ping Submit transactions sequentially
|
ping Submit transactions sequentially
|
||||||
send-signature Send a signature to authorize a transfer
|
send-signature Send a signature to authorize a transfer
|
||||||
send-timestamp Send a timestamp to unlock a transfer
|
send-timestamp Send a timestamp to unlock a transfer
|
||||||
show-stake-account Show the contents of a stake account
|
|
||||||
slot Get current slot
|
slot Get current slot
|
||||||
|
split-stake Split a stake account
|
||||||
|
stake-account Show the contents of a stake account
|
||||||
stake-authorize-staker Authorize a new stake signing keypair for the given stake account
|
stake-authorize-staker Authorize a new stake signing keypair for the given stake account
|
||||||
stake-authorize-withdrawer Authorize a new withdraw signing keypair for the given stake account
|
stake-authorize-withdrawer Authorize a new withdraw signing keypair for the given stake account
|
||||||
stake-history Show the stake history
|
stake-history Show the stake history
|
||||||
|
stake-set-lockup Set Lockup for the stake account
|
||||||
stakes Show stake account information
|
stakes Show stake account information
|
||||||
storage-account Show the contents of a storage account
|
storage-account Show the contents of a storage account
|
||||||
transaction-count Get current transaction count
|
transaction-count Get current transaction count
|
||||||
|
transfer Transfer funds between system accounts
|
||||||
validator-info Publish/get Validator info on Solana
|
validator-info Publish/get Validator info on Solana
|
||||||
validators Show summary information about the current validators
|
validators Show summary information about the current validators
|
||||||
vote-account Show the contents of a vote account
|
vote-account Show the contents of a vote account
|
||||||
|
@ -273,7 +283,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
-o, --output <FILE> Write the account data to this file
|
-o, --output <FILE> Write the account data to this file
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
|
@ -301,7 +311,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-airdrop
|
#### solana-airdrop
|
||||||
|
@ -310,7 +320,7 @@ solana-airdrop
|
||||||
Request lamports
|
Request lamports
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana airdrop [FLAGS] [OPTIONS] <AMOUNT> [UNIT]
|
solana airdrop [FLAGS] [OPTIONS] <AMOUNT>
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
@ -327,11 +337,10 @@ OPTIONS:
|
||||||
--faucet-host <HOST> Faucet host to use [default: the --url host]
|
--faucet-host <HOST> Faucet host to use [default: the --url host]
|
||||||
--faucet-port <PORT> Faucet port to use [default: 9900]
|
--faucet-port <PORT> Faucet port to use [default: 9900]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<AMOUNT> The airdrop amount to request (default unit SOL)
|
<AMOUNT> The airdrop amount to request, in SOL
|
||||||
<UNIT> Specify unit to use for request and balance display [possible values: SOL, lamports]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-authorize-nonce-account
|
#### solana-authorize-nonce-account
|
||||||
|
@ -357,7 +366,7 @@ OPTIONS:
|
||||||
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--nonce-authority <KEYPAIR or PUBKEY>
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
Provide the nonce authority keypair to use when signing a nonced transaction
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
|
@ -392,7 +401,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<PUBKEY> The public key of the balance to check
|
<PUBKEY> The public key of the balance to check
|
||||||
|
@ -420,7 +429,7 @@ OPTIONS:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
--epoch <epoch> Epoch to show block production for [default: current epoch]
|
--epoch <epoch> Epoch to show block production for [default: current epoch]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--slot-limit <slot_limit> Limit results to this many slots from the end of the epoch [default: full
|
--slot-limit <slot_limit> Limit results to this many slots from the end of the epoch [default: full
|
||||||
epoch]
|
epoch]
|
||||||
```
|
```
|
||||||
|
@ -446,7 +455,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<SLOT> Slot number of the block to query
|
<SLOT> Slot number of the block to query
|
||||||
|
@ -473,7 +482,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<PROCESS ID> The process id of the transfer to cancel
|
<PROCESS ID> The process id of the transfer to cancel
|
||||||
|
@ -500,7 +509,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<PUBKEY> Identity pubkey of the validator
|
<PUBKEY> Identity pubkey of the validator
|
||||||
|
@ -527,7 +536,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<NODE PUBKEY> The node account to credit the rewards to
|
<NODE PUBKEY> The node account to credit the rewards to
|
||||||
|
@ -555,7 +564,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-config
|
#### solana-config
|
||||||
|
@ -579,7 +588,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
SUBCOMMANDS:
|
SUBCOMMANDS:
|
||||||
get Get current config settings
|
get Get current config settings
|
||||||
|
@ -608,7 +617,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<SIGNATURE> The transaction signature to confirm
|
<SIGNATURE> The transaction signature to confirm
|
||||||
|
@ -636,7 +645,7 @@ OPTIONS:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
--from <PUBKEY> From (base) key, defaults to client keypair.
|
--from <PUBKEY> From (base) key, defaults to client keypair.
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<SEED_STRING> The seed. Must not take more than 32 bytes to encode as utf-8
|
<SEED_STRING> The seed. Must not take more than 32 bytes to encode as utf-8
|
||||||
|
@ -665,7 +674,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<STORAGE ACCOUNT OWNER PUBKEY>
|
<STORAGE ACCOUNT OWNER PUBKEY>
|
||||||
|
@ -678,7 +687,7 @@ solana-create-nonce-account
|
||||||
Create a nonce account
|
Create a nonce account
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana create-nonce-account [FLAGS] [OPTIONS] <NONCE ACCOUNT> <AMOUNT> [UNIT]
|
solana create-nonce-account [FLAGS] [OPTIONS] <NONCE ACCOUNT> <AMOUNT>
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
@ -693,13 +702,12 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--nonce-authority <BASE58_PUBKEY> Assign noncing authority to another entity
|
--nonce-authority <BASE58_PUBKEY> Assign noncing authority to another entity
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<NONCE ACCOUNT> Keypair of the nonce account to fund
|
<NONCE ACCOUNT> Keypair of the nonce account to fund
|
||||||
<AMOUNT> The amount to load the nonce account with (default unit SOL)
|
<AMOUNT> The amount to load the nonce account with, in SOL
|
||||||
<UNIT> Specify unit to use for request [possible values: SOL, lamports]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-create-stake-account
|
#### solana-create-stake-account
|
||||||
|
@ -708,34 +716,56 @@ solana-create-stake-account
|
||||||
Create a stake account
|
Create a stake account
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana create-stake-account [FLAGS] [OPTIONS] <STAKE ACCOUNT> <AMOUNT> [UNIT]
|
solana create-stake-account [FLAGS] [OPTIONS] <STAKE ACCOUNT> <AMOUNT>
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
--sign-only Sign the transaction offline
|
||||||
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
||||||
official English word list
|
official English word list
|
||||||
-V, --version Prints version information
|
-V, --version Prints version information
|
||||||
-v, --verbose Show extra information header
|
-v, --verbose Show extra information header
|
||||||
|
|
||||||
OPTIONS:
|
OPTIONS:
|
||||||
--ask-seed-phrase <KEYPAIR NAME> Recover a keypair using a seed phrase and optional passphrase [possible
|
--ask-seed-phrase <KEYPAIR NAME>
|
||||||
values: keypair]
|
Recover a keypair using a seed phrase and optional passphrase [possible values: keypair]
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
|
||||||
~/.config/solana/cli/config.yml]
|
--blockhash <BLOCKHASH> Use the supplied blockhash
|
||||||
--custodian <PUBKEY> Identity of the custodian (can withdraw before lockup expires)
|
-C, --config <PATH>
|
||||||
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--custodian <KEYPAIR or PUBKEY> Identity of the custodian (can withdraw before lockup expires)
|
||||||
|
--fee-payer <KEYPAIR or PUBKEY>
|
||||||
|
Specify the fee-payer account. This may be a keypair file, the ASK keyword
|
||||||
|
or the pubkey of an offline signer, provided an appropriate --signer argument
|
||||||
|
is also passed. Defaults to the client keypair.
|
||||||
|
--from <KEYPAIR or PUBKEY> Source account of funds (if different from client local account)
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--lockup-date <RFC3339 DATE TIME> The date and time at which this account will be available for withdrawal
|
--lockup-date <RFC3339 DATE TIME>
|
||||||
--lockup-epoch <EPOCH> The epoch height at which this account will be available for withdrawal
|
The date and time at which this account will be available for withdrawal
|
||||||
--seed <SEED STRING> Seed for address generation; if specified, the resulting account will be at
|
|
||||||
a derived address of the STAKE ACCOUNT pubkey
|
--lockup-epoch <EPOCH>
|
||||||
|
The epoch height at which this account will be available for withdrawal
|
||||||
|
|
||||||
|
--nonce <PUBKEY>
|
||||||
|
Provide the nonce account to use when creating a nonced
|
||||||
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
requires a lengthy signing process. Learn more about nonced
|
||||||
|
transactions at https://docs.solana.com/offline-signing/durable-nonce
|
||||||
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
|
--seed <SEED STRING>
|
||||||
|
Seed for address generation; if specified, the resulting account will be at a derived address of the STAKE
|
||||||
|
ACCOUNT pubkey
|
||||||
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
--stake-authority <PUBKEY> Public key of authorized staker (defaults to cli config pubkey)
|
--stake-authority <PUBKEY> Public key of authorized staker (defaults to cli config pubkey)
|
||||||
--withdraw-authority <PUBKEY> Public key of authorized withdrawer (defaults to cli config pubkey)
|
--withdraw-authority <PUBKEY> Public key of authorized withdrawer (defaults to cli config pubkey)
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<STAKE ACCOUNT> Keypair of the stake account to fund
|
<STAKE ACCOUNT> Signing authority of the stake address to fund
|
||||||
<AMOUNT> The amount of send to the vote account (default unit SOL)
|
<AMOUNT> The amount of send to the vote account, in SOL
|
||||||
<UNIT> Specify unit to use for request [possible values: SOL, lamports]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-create-validator-storage-account
|
#### solana-create-validator-storage-account
|
||||||
|
@ -759,7 +789,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<STORAGE ACCOUNT OWNER PUBKEY>
|
<STORAGE ACCOUNT OWNER PUBKEY>
|
||||||
|
@ -790,7 +820,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--seed <SEED STRING> Seed for address generation; if specified, the resulting account will be at
|
--seed <SEED STRING> Seed for address generation; if specified, the resulting account will be at
|
||||||
a derived address of the VOTE ACCOUNT pubkey
|
a derived address of the VOTE ACCOUNT pubkey
|
||||||
|
|
||||||
|
@ -823,8 +853,12 @@ OPTIONS:
|
||||||
-C, --config <PATH>
|
-C, --config <PATH>
|
||||||
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--fee-payer <KEYPAIR or PUBKEY>
|
||||||
|
Specify the fee-payer account. This may be a keypair file, the ASK keyword
|
||||||
|
or the pubkey of an offline signer, provided an appropriate --signer argument
|
||||||
|
is also passed. Defaults to the client keypair.
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--nonce <PUBKEY>
|
--nonce <PUBKEY>
|
||||||
Provide the nonce account to use when creating a nonced
|
Provide the nonce account to use when creating a nonced
|
||||||
transaction. Nonced transactions are useful when a transaction
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
@ -833,8 +867,8 @@ OPTIONS:
|
||||||
--nonce-authority <KEYPAIR or PUBKEY>
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
Provide the nonce authority keypair to use when signing a nonced transaction
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
--signer <PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
--stake-authority <KEYPAIR of PUBKEY> Public key of authorized staker (defaults to cli config pubkey)
|
--stake-authority <KEYPAIR or PUBKEY> Public key of authorized staker (defaults to cli config pubkey)
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<STAKE ACCOUNT> Stake account to be deactivated.
|
<STAKE ACCOUNT> Stake account to be deactivated.
|
||||||
|
@ -864,8 +898,12 @@ OPTIONS:
|
||||||
-C, --config <PATH>
|
-C, --config <PATH>
|
||||||
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--fee-payer <KEYPAIR or PUBKEY>
|
||||||
|
Specify the fee-payer account. This may be a keypair file, the ASK keyword
|
||||||
|
or the pubkey of an offline signer, provided an appropriate --signer argument
|
||||||
|
is also passed. Defaults to the client keypair.
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--nonce <PUBKEY>
|
--nonce <PUBKEY>
|
||||||
Provide the nonce account to use when creating a nonced
|
Provide the nonce account to use when creating a nonced
|
||||||
transaction. Nonced transactions are useful when a transaction
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
@ -874,8 +912,8 @@ OPTIONS:
|
||||||
--nonce-authority <KEYPAIR or PUBKEY>
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
Provide the nonce authority keypair to use when signing a nonced transaction
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
--signer <PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
--stake-authority <KEYPAIR of PUBKEY> Public key of authorized staker (defaults to cli config pubkey)
|
--stake-authority <KEYPAIR or PUBKEY> Public key of authorized staker (defaults to cli config pubkey)
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<STAKE ACCOUNT> Stake account to delegate
|
<STAKE ACCOUNT> Stake account to delegate
|
||||||
|
@ -903,7 +941,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<PATH TO BPF PROGRAM> /path/to/program.o
|
<PATH TO BPF PROGRAM> /path/to/program.o
|
||||||
|
@ -931,7 +969,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-fees
|
#### solana-fees
|
||||||
|
@ -955,7 +993,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-genesis-hash
|
#### solana-genesis-hash
|
||||||
|
@ -979,7 +1017,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-gossip
|
#### solana-gossip
|
||||||
|
@ -1003,7 +1041,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-help
|
#### solana-help
|
||||||
|
@ -1018,6 +1056,55 @@ ARGS:
|
||||||
<subcommand>... The subcommand whose help message to display
|
<subcommand>... The subcommand whose help message to display
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### solana-leader-schedule
|
||||||
|
```text
|
||||||
|
solana-leader-schedule
|
||||||
|
Display leader schedule
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
solana leader-schedule [FLAGS] [OPTIONS]
|
||||||
|
|
||||||
|
FLAGS:
|
||||||
|
-h, --help Prints help information
|
||||||
|
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
||||||
|
official English word list
|
||||||
|
-V, --version Prints version information
|
||||||
|
-v, --verbose Show extra information header
|
||||||
|
|
||||||
|
OPTIONS:
|
||||||
|
--ask-seed-phrase <KEYPAIR NAME> Recover a keypair using a seed phrase and optional passphrase [possible
|
||||||
|
values: keypair]
|
||||||
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
|
~/.config/solana/cli/config.yml]
|
||||||
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
```
|
||||||
|
|
||||||
|
#### solana-live-slots
|
||||||
|
```text
|
||||||
|
solana-live-slots
|
||||||
|
Show information about the current slot progression
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
solana live-slots [FLAGS] [OPTIONS]
|
||||||
|
|
||||||
|
FLAGS:
|
||||||
|
-h, --help Prints help information
|
||||||
|
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
||||||
|
official English word list
|
||||||
|
-V, --version Prints version information
|
||||||
|
-v, --verbose Show extra information header
|
||||||
|
|
||||||
|
OPTIONS:
|
||||||
|
--ask-seed-phrase <KEYPAIR NAME> Recover a keypair using a seed phrase and optional passphrase [possible
|
||||||
|
values: keypair]
|
||||||
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
|
~/.config/solana/cli/config.yml]
|
||||||
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
-w, --ws <URL> WebSocket URL for PubSub RPC connection [default: ws://127.0.0.1:8900]
|
||||||
|
```
|
||||||
|
|
||||||
#### solana-new-nonce
|
#### solana-new-nonce
|
||||||
```text
|
```text
|
||||||
solana-new-nonce
|
solana-new-nonce
|
||||||
|
@ -1041,7 +1128,7 @@ OPTIONS:
|
||||||
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--nonce-authority <KEYPAIR or PUBKEY>
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
Provide the nonce authority keypair to use when signing a nonced transaction
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
|
@ -1071,7 +1158,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<NONCE ACCOUNT> Address of the nonce account to display
|
<NONCE ACCOUNT> Address of the nonce account to display
|
||||||
|
@ -1099,7 +1186,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<NONCE ACCOUNT> Address of the nonce account to display
|
<NONCE ACCOUNT> Address of the nonce account to display
|
||||||
|
@ -1111,7 +1198,7 @@ solana-pay
|
||||||
Send a payment
|
Send a payment
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana pay [FLAGS] [OPTIONS] <TO PUBKEY> <AMOUNT> [--] [UNIT]
|
solana pay [FLAGS] [OPTIONS] <TO PUBKEY> <AMOUNT>
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
--cancelable
|
--cancelable
|
||||||
|
@ -1131,7 +1218,7 @@ OPTIONS:
|
||||||
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--nonce <PUBKEY>
|
--nonce <PUBKEY>
|
||||||
Provide the nonce account to use when creating a nonced
|
Provide the nonce account to use when creating a nonced
|
||||||
transaction. Nonced transactions are useful when a transaction
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
@ -1140,15 +1227,14 @@ OPTIONS:
|
||||||
--nonce-authority <KEYPAIR or PUBKEY>
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
Provide the nonce authority keypair to use when signing a nonced transaction
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
--signer <PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
--after <DATETIME> A timestamp after which transaction will execute
|
--after <DATETIME> A timestamp after which transaction will execute
|
||||||
--require-timestamp-from <PUBKEY> Require timestamp from this third party
|
--require-timestamp-from <PUBKEY> Require timestamp from this third party
|
||||||
--require-signature-from <PUBKEY>... Any third party signatures required to unlock the lamports
|
--require-signature-from <PUBKEY>... Any third party signatures required to unlock the lamports
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<TO PUBKEY> The pubkey of recipient
|
<TO PUBKEY> The pubkey of recipient
|
||||||
<AMOUNT> The amount to send (default unit SOL)
|
<AMOUNT> The amount to send, in SOL
|
||||||
<UNIT> Specify unit to use for request [possible values: SOL, lamports]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-ping
|
#### solana-ping
|
||||||
|
@ -1175,7 +1261,7 @@ OPTIONS:
|
||||||
-c, --count <NUMBER> Stop after submitting count transactions
|
-c, --count <NUMBER> Stop after submitting count transactions
|
||||||
-i, --interval <SECONDS> Wait interval seconds between submitting the next transaction [default: 2]
|
-i, --interval <SECONDS> Wait interval seconds between submitting the next transaction [default: 2]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--lamports <NUMBER> Number of lamports to transfer for each transaction [default: 1]
|
--lamports <NUMBER> Number of lamports to transfer for each transaction [default: 1]
|
||||||
-t, --timeout <SECONDS> Wait up to timeout seconds for transaction confirmation [default: 15]
|
-t, --timeout <SECONDS> Wait up to timeout seconds for transaction confirmation [default: 15]
|
||||||
```
|
```
|
||||||
|
@ -1201,7 +1287,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<PUBKEY> The pubkey of recipient
|
<PUBKEY> The pubkey of recipient
|
||||||
|
@ -1230,41 +1316,13 @@ OPTIONS:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
--date <DATETIME> Optional arbitrary timestamp to apply
|
--date <DATETIME> Optional arbitrary timestamp to apply
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<PUBKEY> The pubkey of recipient
|
<PUBKEY> The pubkey of recipient
|
||||||
<PROCESS ID> The process id of the transfer to unlock
|
<PROCESS ID> The process id of the transfer to unlock
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-show-stake-account
|
|
||||||
```text
|
|
||||||
solana-show-stake-account
|
|
||||||
Show the contents of a stake account
|
|
||||||
|
|
||||||
USAGE:
|
|
||||||
solana show-stake-account [FLAGS] [OPTIONS] <STAKE ACCOUNT>
|
|
||||||
|
|
||||||
FLAGS:
|
|
||||||
-h, --help Prints help information
|
|
||||||
--lamports Display balance in lamports instead of SOL
|
|
||||||
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
|
||||||
official English word list
|
|
||||||
-V, --version Prints version information
|
|
||||||
-v, --verbose Show extra information header
|
|
||||||
|
|
||||||
OPTIONS:
|
|
||||||
--ask-seed-phrase <KEYPAIR NAME> Recover a keypair using a seed phrase and optional passphrase [possible
|
|
||||||
values: keypair]
|
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
|
||||||
~/.config/solana/cli/config.yml]
|
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
|
||||||
|
|
||||||
ARGS:
|
|
||||||
<STAKE ACCOUNT> Address of the stake account to display
|
|
||||||
```
|
|
||||||
|
|
||||||
#### solana-slot
|
#### solana-slot
|
||||||
```text
|
```text
|
||||||
solana-slot
|
solana-slot
|
||||||
|
@ -1287,7 +1345,85 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
```
|
||||||
|
|
||||||
|
#### solana-split-stake
|
||||||
|
```text
|
||||||
|
solana-split-stake
|
||||||
|
Split a stake account
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
solana split-stake [FLAGS] [OPTIONS] <STAKE ACCOUNT> <SPLIT STAKE ACCOUNT> <AMOUNT>
|
||||||
|
|
||||||
|
FLAGS:
|
||||||
|
-h, --help Prints help information
|
||||||
|
--sign-only Sign the transaction offline
|
||||||
|
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
||||||
|
official English word list
|
||||||
|
-V, --version Prints version information
|
||||||
|
-v, --verbose Show extra information header
|
||||||
|
|
||||||
|
OPTIONS:
|
||||||
|
--ask-seed-phrase <KEYPAIR NAME>
|
||||||
|
Recover a keypair using a seed phrase and optional passphrase [possible values: keypair]
|
||||||
|
|
||||||
|
--blockhash <BLOCKHASH> Use the supplied blockhash
|
||||||
|
-C, --config <PATH>
|
||||||
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--fee-payer <KEYPAIR or PUBKEY>
|
||||||
|
Specify the fee-payer account. This may be a keypair file, the ASK keyword
|
||||||
|
or the pubkey of an offline signer, provided an appropriate --signer argument
|
||||||
|
is also passed. Defaults to the client keypair.
|
||||||
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
--nonce <PUBKEY>
|
||||||
|
Provide the nonce account to use when creating a nonced
|
||||||
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
requires a lengthy signing process. Learn more about nonced
|
||||||
|
transactions at https://docs.solana.com/offline-signing/durable-nonce
|
||||||
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
|
--seed <SEED STRING>
|
||||||
|
Seed for address generation; if specified, the resulting account will be at a derived address of the SPLIT
|
||||||
|
STAKE ACCOUNT pubkey
|
||||||
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
|
--stake-authority <KEYPAIR or PUBKEY> Public key of authorized staker (defaults to cli config pubkey)
|
||||||
|
|
||||||
|
ARGS:
|
||||||
|
<STAKE ACCOUNT> Stake account to be split
|
||||||
|
<SPLIT STAKE ACCOUNT> Keypair of the new stake account to split funds into
|
||||||
|
<AMOUNT> The amount to move into the new stake account, in unit SOL
|
||||||
|
```
|
||||||
|
|
||||||
|
#### solana-stake-account
|
||||||
|
```text
|
||||||
|
solana-stake-account
|
||||||
|
Show the contents of a stake account
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
solana stake-account [FLAGS] [OPTIONS] <STAKE ACCOUNT>
|
||||||
|
|
||||||
|
FLAGS:
|
||||||
|
-h, --help Prints help information
|
||||||
|
--lamports Display balance in lamports instead of SOL
|
||||||
|
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
||||||
|
official English word list
|
||||||
|
-V, --version Prints version information
|
||||||
|
-v, --verbose Show extra information header
|
||||||
|
|
||||||
|
OPTIONS:
|
||||||
|
--ask-seed-phrase <KEYPAIR NAME> Recover a keypair using a seed phrase and optional passphrase [possible
|
||||||
|
values: keypair]
|
||||||
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
|
~/.config/solana/cli/config.yml]
|
||||||
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
|
ARGS:
|
||||||
|
<STAKE ACCOUNT> Address of the stake account to display
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-stake-authorize-staker
|
#### solana-stake-authorize-staker
|
||||||
|
@ -1314,8 +1450,12 @@ OPTIONS:
|
||||||
-C, --config <PATH>
|
-C, --config <PATH>
|
||||||
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--fee-payer <KEYPAIR or PUBKEY>
|
||||||
|
Specify the fee-payer account. This may be a keypair file, the ASK keyword
|
||||||
|
or the pubkey of an offline signer, provided an appropriate --signer argument
|
||||||
|
is also passed. Defaults to the client keypair.
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--nonce <PUBKEY>
|
--nonce <PUBKEY>
|
||||||
Provide the nonce account to use when creating a nonced
|
Provide the nonce account to use when creating a nonced
|
||||||
transaction. Nonced transactions are useful when a transaction
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
@ -1324,8 +1464,8 @@ OPTIONS:
|
||||||
--nonce-authority <KEYPAIR or PUBKEY>
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
Provide the nonce authority keypair to use when signing a nonced transaction
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
--signer <PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
--stake-authority <KEYPAIR of PUBKEY> Public key of authorized staker (defaults to cli config pubkey)
|
--stake-authority <KEYPAIR or PUBKEY> Public key of authorized staker (defaults to cli config pubkey)
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<STAKE ACCOUNT> Stake account in which to set the authorized staker
|
<STAKE ACCOUNT> Stake account in which to set the authorized staker
|
||||||
|
@ -1356,8 +1496,12 @@ OPTIONS:
|
||||||
-C, --config <PATH>
|
-C, --config <PATH>
|
||||||
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--fee-payer <KEYPAIR or PUBKEY>
|
||||||
|
Specify the fee-payer account. This may be a keypair file, the ASK keyword
|
||||||
|
or the pubkey of an offline signer, provided an appropriate --signer argument
|
||||||
|
is also passed. Defaults to the client keypair.
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--nonce <PUBKEY>
|
--nonce <PUBKEY>
|
||||||
Provide the nonce account to use when creating a nonced
|
Provide the nonce account to use when creating a nonced
|
||||||
transaction. Nonced transactions are useful when a transaction
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
@ -1366,7 +1510,7 @@ OPTIONS:
|
||||||
--nonce-authority <KEYPAIR or PUBKEY>
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
Provide the nonce authority keypair to use when signing a nonced transaction
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
--signer <PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
--withdraw-authority <KEYPAIR or PUBKEY> Public key of authorized withdrawer (defaults to cli config pubkey)
|
--withdraw-authority <KEYPAIR or PUBKEY> Public key of authorized withdrawer (defaults to cli config pubkey)
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
|
@ -1396,7 +1540,61 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
```
|
||||||
|
|
||||||
|
#### solana-stake-set-lockup
|
||||||
|
```text
|
||||||
|
solana-stake-set-lockup
|
||||||
|
Set Lockup for the stake account
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
solana stake-set-lockup [FLAGS] [OPTIONS] <STAKE ACCOUNT>
|
||||||
|
|
||||||
|
FLAGS:
|
||||||
|
-h, --help Prints help information
|
||||||
|
--sign-only Sign the transaction offline
|
||||||
|
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
||||||
|
official English word list
|
||||||
|
-V, --version Prints version information
|
||||||
|
-v, --verbose Show extra information header
|
||||||
|
|
||||||
|
OPTIONS:
|
||||||
|
--ask-seed-phrase <KEYPAIR NAME>
|
||||||
|
Recover a keypair using a seed phrase and optional passphrase [possible values: keypair]
|
||||||
|
|
||||||
|
--blockhash <BLOCKHASH> Use the supplied blockhash
|
||||||
|
-C, --config <PATH>
|
||||||
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--custodian <KEYPAIR or PUBKEY> Public key of signing custodian (defaults to cli config pubkey)
|
||||||
|
--fee-payer <KEYPAIR or PUBKEY>
|
||||||
|
Specify the fee-payer account. This may be a keypair file, the ASK keyword
|
||||||
|
or the pubkey of an offline signer, provided an appropriate --signer argument
|
||||||
|
is also passed. Defaults to the client keypair.
|
||||||
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
--lockup-date <RFC3339 DATE TIME>
|
||||||
|
The date and time at which this account will be available for withdrawal
|
||||||
|
|
||||||
|
--lockup-epoch <EPOCH>
|
||||||
|
The epoch height at which this account will be available for withdrawal
|
||||||
|
|
||||||
|
--new-custodian <KEYPAIR or PUBKEY>
|
||||||
|
Identity of the new lockup custodian (can withdraw before lockup expires)
|
||||||
|
|
||||||
|
--nonce <PUBKEY>
|
||||||
|
Provide the nonce account to use when creating a nonced
|
||||||
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
requires a lengthy signing process. Learn more about nonced
|
||||||
|
transactions at https://docs.solana.com/offline-signing/durable-nonce
|
||||||
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
|
|
||||||
|
ARGS:
|
||||||
|
<STAKE ACCOUNT> Stake account for which to set Lockup
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-stakes
|
#### solana-stakes
|
||||||
|
@ -1421,7 +1619,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<VOTE ACCOUNT PUBKEYS>... Only show stake accounts delegated to the provided vote accounts
|
<VOTE ACCOUNT PUBKEYS>... Only show stake accounts delegated to the provided vote accounts
|
||||||
|
@ -1448,7 +1646,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<STORAGE ACCOUNT PUBKEY> Storage account pubkey
|
<STORAGE ACCOUNT PUBKEY> Storage account pubkey
|
||||||
|
@ -1476,7 +1674,53 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
```
|
||||||
|
|
||||||
|
#### solana-transfer
|
||||||
|
```text
|
||||||
|
solana-transfer
|
||||||
|
Transfer funds between system accounts
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
solana transfer [FLAGS] [OPTIONS] <TO PUBKEY> <AMOUNT>
|
||||||
|
|
||||||
|
FLAGS:
|
||||||
|
-h, --help Prints help information
|
||||||
|
--sign-only Sign the transaction offline
|
||||||
|
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
||||||
|
official English word list
|
||||||
|
-V, --version Prints version information
|
||||||
|
-v, --verbose Show extra information header
|
||||||
|
|
||||||
|
OPTIONS:
|
||||||
|
--ask-seed-phrase <KEYPAIR NAME>
|
||||||
|
Recover a keypair using a seed phrase and optional passphrase [possible values: keypair]
|
||||||
|
|
||||||
|
--blockhash <BLOCKHASH> Use the supplied blockhash
|
||||||
|
-C, --config <PATH>
|
||||||
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--fee-payer <KEYPAIR or PUBKEY>
|
||||||
|
Specify the fee-payer account. This may be a keypair file, the ASK keyword
|
||||||
|
or the pubkey of an offline signer, provided an appropriate --signer argument
|
||||||
|
is also passed. Defaults to the client keypair.
|
||||||
|
--from <KEYPAIR or PUBKEY> Source account of funds (if different from client local account)
|
||||||
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
--nonce <PUBKEY>
|
||||||
|
Provide the nonce account to use when creating a nonced
|
||||||
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
requires a lengthy signing process. Learn more about nonced
|
||||||
|
transactions at https://docs.solana.com/offline-signing/durable-nonce
|
||||||
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
|
|
||||||
|
ARGS:
|
||||||
|
<TO PUBKEY> The pubkey of recipient
|
||||||
|
<AMOUNT> The amount to send, in SOL
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-validator-info
|
#### solana-validator-info
|
||||||
|
@ -1500,7 +1744,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
SUBCOMMANDS:
|
SUBCOMMANDS:
|
||||||
get Get and parse Solana Validator info
|
get Get and parse Solana Validator info
|
||||||
|
@ -1530,7 +1774,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-vote-account
|
#### solana-vote-account
|
||||||
|
@ -1555,7 +1799,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<VOTE ACCOUNT PUBKEY> Vote account pubkey
|
<VOTE ACCOUNT PUBKEY> Vote account pubkey
|
||||||
|
@ -1582,7 +1826,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<VOTE ACCOUNT PUBKEY> Vote account in which to set the authorized voter
|
<VOTE ACCOUNT PUBKEY> Vote account in which to set the authorized voter
|
||||||
|
@ -1610,7 +1854,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<VOTE ACCOUNT PUBKEY> Vote account in which to set the authorized withdrawer
|
<VOTE ACCOUNT PUBKEY> Vote account in which to set the authorized withdrawer
|
||||||
|
@ -1638,7 +1882,7 @@ OPTIONS:
|
||||||
-C, --config <PATH> Configuration file to use [default:
|
-C, --config <PATH> Configuration file to use [default:
|
||||||
~/.config/solana/cli/config.yml]
|
~/.config/solana/cli/config.yml]
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<VOTE ACCOUNT PUBKEY> Vote account to update
|
<VOTE ACCOUNT PUBKEY> Vote account to update
|
||||||
|
@ -1652,7 +1896,7 @@ solana-withdraw-from-nonce-account
|
||||||
Withdraw lamports from the nonce account
|
Withdraw lamports from the nonce account
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana withdraw-from-nonce-account [FLAGS] [OPTIONS] <NONCE ACCOUNT> <DESTINATION ACCOUNT> <AMOUNT> [UNIT]
|
solana withdraw-from-nonce-account [FLAGS] [OPTIONS] <NONCE ACCOUNT> <DESTINATION ACCOUNT> <AMOUNT>
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
@ -1669,7 +1913,7 @@ OPTIONS:
|
||||||
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
--nonce-authority <KEYPAIR or PUBKEY>
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
Provide the nonce authority keypair to use when signing a nonced transaction
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
|
@ -1677,8 +1921,7 @@ OPTIONS:
|
||||||
ARGS:
|
ARGS:
|
||||||
<NONCE ACCOUNT> Nonce account from to withdraw from
|
<NONCE ACCOUNT> Nonce account from to withdraw from
|
||||||
<DESTINATION ACCOUNT> The account to which the lamports should be transferred
|
<DESTINATION ACCOUNT> The account to which the lamports should be transferred
|
||||||
<AMOUNT> The amount to withdraw from the nonce account (default unit SOL)
|
<AMOUNT> The amount to withdraw from the nonce account, in SOL
|
||||||
<UNIT> Specify unit to use for request [possible values: SOL, lamports]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### solana-withdraw-stake
|
#### solana-withdraw-stake
|
||||||
|
@ -1687,10 +1930,11 @@ solana-withdraw-stake
|
||||||
Withdraw the unstaked lamports from the stake account
|
Withdraw the unstaked lamports from the stake account
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
solana withdraw-stake [FLAGS] [OPTIONS] <STAKE ACCOUNT> <DESTINATION ACCOUNT> <AMOUNT> [UNIT]
|
solana withdraw-stake [FLAGS] [OPTIONS] <STAKE ACCOUNT> <DESTINATION ACCOUNT> <AMOUNT>
|
||||||
|
|
||||||
FLAGS:
|
FLAGS:
|
||||||
-h, --help Prints help information
|
-h, --help Prints help information
|
||||||
|
--sign-only Sign the transaction offline
|
||||||
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
--skip-seed-phrase-validation Skip validation of seed phrases. Use this if your phrase does not use the BIP39
|
||||||
official English word list
|
official English word list
|
||||||
-V, --version Prints version information
|
-V, --version Prints version information
|
||||||
|
@ -1700,17 +1944,29 @@ OPTIONS:
|
||||||
--ask-seed-phrase <KEYPAIR NAME>
|
--ask-seed-phrase <KEYPAIR NAME>
|
||||||
Recover a keypair using a seed phrase and optional passphrase [possible values: keypair]
|
Recover a keypair using a seed phrase and optional passphrase [possible values: keypair]
|
||||||
|
|
||||||
|
--blockhash <BLOCKHASH> Use the supplied blockhash
|
||||||
-C, --config <PATH>
|
-C, --config <PATH>
|
||||||
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
Configuration file to use [default: ~/.config/solana/cli/config.yml]
|
||||||
|
|
||||||
|
--fee-payer <KEYPAIR or PUBKEY>
|
||||||
|
Specify the fee-payer account. This may be a keypair file, the ASK keyword
|
||||||
|
or the pubkey of an offline signer, provided an appropriate --signer argument
|
||||||
|
is also passed. Defaults to the client keypair.
|
||||||
-u, --url <URL> JSON RPC URL for the solana cluster
|
-u, --url <URL> JSON RPC URL for the solana cluster
|
||||||
-k, --keypair <PATH> /path/to/id.json
|
-k, --keypair <PATH> /path/to/id.json or usb://remote/wallet/path
|
||||||
|
--nonce <PUBKEY>
|
||||||
|
Provide the nonce account to use when creating a nonced
|
||||||
|
transaction. Nonced transactions are useful when a transaction
|
||||||
|
requires a lengthy signing process. Learn more about nonced
|
||||||
|
transactions at https://docs.solana.com/offline-signing/durable-nonce
|
||||||
|
--nonce-authority <KEYPAIR or PUBKEY>
|
||||||
|
Provide the nonce authority keypair to use when signing a nonced transaction
|
||||||
|
|
||||||
|
--signer <BASE58_PUBKEY=BASE58_SIG>... Provide a public-key/signature pair for the transaction
|
||||||
--withdraw-authority <KEYPAIR or PUBKEY> Public key of authorized withdrawer (defaults to cli config pubkey)
|
--withdraw-authority <KEYPAIR or PUBKEY> Public key of authorized withdrawer (defaults to cli config pubkey)
|
||||||
|
|
||||||
ARGS:
|
ARGS:
|
||||||
<STAKE ACCOUNT> Stake account from which to withdraw
|
<STAKE ACCOUNT> Stake account from which to withdraw
|
||||||
<DESTINATION ACCOUNT> The account to which the lamports should be transferred
|
<DESTINATION ACCOUNT> The account to which the lamports should be transferred
|
||||||
<AMOUNT> The amount to withdraw from the stake account (default unit SOL)
|
<AMOUNT> The amount to withdraw from the stake account, in SOL
|
||||||
<UNIT> Specify unit to use for request [possible values: SOL, lamports]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ Command
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
solana@offline$ solana pay --sign-only --blockhash 5Tx8F3jgSHx21CbtjwmdaKPLM5tWmreWAnPrbqHomSJF \
|
solana@offline$ solana pay --sign-only --blockhash 5Tx8F3jgSHx21CbtjwmdaKPLM5tWmreWAnPrbqHomSJF \
|
||||||
recipient-keypair.json 1 SOL
|
recipient-keypair.json 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Output
|
Output
|
||||||
|
@ -67,7 +67,7 @@ Command
|
||||||
```bash
|
```bash
|
||||||
solana@online$ solana pay --blockhash 5Tx8F3jgSHx21CbtjwmdaKPLM5tWmreWAnPrbqHomSJF \
|
solana@online$ solana pay --blockhash 5Tx8F3jgSHx21CbtjwmdaKPLM5tWmreWAnPrbqHomSJF \
|
||||||
--signer FhtzLVsmcV7S5XqGD79ErgoseCLhZYmEZnz9kQg1Rp7j=4vC38p4bz7XyiXrk6HtaooUqwxTWKocf45cstASGtmrD398biNJnmTcUCVEojE7wVQvgdYbjHJqRFZPpzfCQpmUN
|
--signer FhtzLVsmcV7S5XqGD79ErgoseCLhZYmEZnz9kQg1Rp7j=4vC38p4bz7XyiXrk6HtaooUqwxTWKocf45cstASGtmrD398biNJnmTcUCVEojE7wVQvgdYbjHJqRFZPpzfCQpmUN
|
||||||
recipient-keypair.json 1 SOL
|
recipient-keypair.json 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Output
|
Output
|
||||||
|
|
|
@ -36,7 +36,7 @@ A nonce account is created by first generating a new keypair, then create the ac
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
solana-keygen new -o nonce-keypair.json
|
solana-keygen new -o nonce-keypair.json
|
||||||
solana create-nonce-account nonce-keypair.json 1 SOL
|
solana create-nonce-account nonce-keypair.json 1
|
||||||
```
|
```
|
||||||
|
|
||||||
- Output
|
- Output
|
||||||
|
@ -127,7 +127,7 @@ Withdraw funds from a nonce account with
|
||||||
- Command
|
- Command
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
solana withdraw-from-nonce-account nonce-keypair.json ~/.config/solana/id.json 0.5 SOL
|
solana withdraw-from-nonce-account nonce-keypair.json ~/.config/solana/id.json 0.5
|
||||||
```
|
```
|
||||||
|
|
||||||
- Output
|
- Output
|
||||||
|
@ -197,7 +197,7 @@ Alice will need some funds to create a nonce account and send to Bob. Airdrop
|
||||||
her some SOL
|
her some SOL
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana airdrop -k alice.json 10 SOL
|
$ solana airdrop -k alice.json 10
|
||||||
10 SOL
|
10 SOL
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ has full authority over the nonce account
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana create-nonce-account -k alice.json nonce.json 1 SOL
|
$ solana create-nonce-account -k alice.json nonce.json 1
|
||||||
3KPZr96BTsL3hqera9up82KAU462Gz31xjqJ6eHUAjF935Yf8i1kmfEbo6SVbNaACKE5z6gySrNjVRvmS8DcPuwV
|
3KPZr96BTsL3hqera9up82KAU462Gz31xjqJ6eHUAjF935Yf8i1kmfEbo6SVbNaACKE5z6gySrNjVRvmS8DcPuwV
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -221,7 +221,7 @@ Alice attempts to pay Bob, but takes too long to sign. The specified blockhash
|
||||||
expires and the transaction fails
|
expires and the transaction fails
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ solana pay -k alice.json --blockhash expiredDTaxfagttWjQweib42b6ZHADSx94Tw8gHx3W7 bob.json 1 SOL
|
$ solana pay -k alice.json --blockhash expiredDTaxfagttWjQweib42b6ZHADSx94Tw8gHx3W7 bob.json 1
|
||||||
[2020-01-02T18:48:28.462911000Z ERROR solana_cli::cli] Io(Custom { kind: Other, error: "Transaction \"33gQQaoPc9jWePMvDAeyJpcnSPiGUAdtVg8zREWv4GiKjkcGNufgpcbFyRKRrA25NkgjZySEeKue5rawyeH5TzsV\" failed: None" })
|
[2020-01-02T18:48:28.462911000Z ERROR solana_cli::cli] Io(Custom { kind: Other, error: "Transaction \"33gQQaoPc9jWePMvDAeyJpcnSPiGUAdtVg8zREWv4GiKjkcGNufgpcbFyRKRrA25NkgjZySEeKue5rawyeH5TzsV\" failed: None" })
|
||||||
Error: Io(Custom { kind: Other, error: "Transaction \"33gQQaoPc9jWePMvDAeyJpcnSPiGUAdtVg8zREWv4GiKjkcGNufgpcbFyRKRrA25NkgjZySEeKue5rawyeH5TzsV\" failed: None" })
|
Error: Io(Custom { kind: Other, error: "Transaction \"33gQQaoPc9jWePMvDAeyJpcnSPiGUAdtVg8zREWv4GiKjkcGNufgpcbFyRKRrA25NkgjZySEeKue5rawyeH5TzsV\" failed: None" })
|
||||||
```
|
```
|
||||||
|
@ -242,7 +242,7 @@ minimum balance required: 0.00136416 SOL
|
||||||
nonce: F7vmkY3DTaxfagttWjQweib42b6ZHADSx94Tw8gHx3W7
|
nonce: F7vmkY3DTaxfagttWjQweib42b6ZHADSx94Tw8gHx3W7
|
||||||
```
|
```
|
||||||
```bash
|
```bash
|
||||||
$ solana pay -k alice.json --blockhash F7vmkY3DTaxfagttWjQweib42b6ZHADSx94Tw8gHx3W7 --nonce nonce.json bob.json 1 SOL
|
$ solana pay -k alice.json --blockhash F7vmkY3DTaxfagttWjQweib42b6ZHADSx94Tw8gHx3W7 --nonce nonce.json bob.json 1
|
||||||
HR1368UKHVZyenmH7yVz5sBAijV6XAPeWbEiXEGVYQorRMcoijeNAbzZqEZiH8cDB8tk65ckqeegFjK8dHwNFgQ
|
HR1368UKHVZyenmH7yVz5sBAijV6XAPeWbEiXEGVYQorRMcoijeNAbzZqEZiH8cDB8tk65ckqeegFjK8dHwNFgQ
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -169,7 +169,7 @@ trigger a seed phrase input prompt for the stake account and use
|
||||||
`--ask-seed-phrase keypair` to securely input the funding keypair.
|
`--ask-seed-phrase keypair` to securely input the funding keypair.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
solana create-stake-account ASK 1 SOL --ask-seed-phrase keypair
|
solana create-stake-account ASK 1 --ask-seed-phrase keypair
|
||||||
|
|
||||||
[stake_account] seed phrase: 🔒
|
[stake_account] seed phrase: 🔒
|
||||||
[stake_account] If this seed phrase has an associated passphrase, enter it now. Otherwise, press ENTER to continue:
|
[stake_account] If this seed phrase has an associated passphrase, enter it now. Otherwise, press ENTER to continue:
|
||||||
|
|
|
@ -129,7 +129,7 @@ Use solana-keygen to show the public keys for each of the keypairs, they will be
|
||||||
```text
|
```text
|
||||||
Then set up the storage accounts for your archiver by running:
|
Then set up the storage accounts for your archiver by running:
|
||||||
```bash
|
```bash
|
||||||
solana --keypair archiver-keypair.json airdrop 100000 lamports
|
solana --keypair archiver-keypair.json airdrop .0001
|
||||||
solana --keypair archiver-keypair.json create-archiver-storage-account $ARCHIVER_IDENTITY $STORAGE_IDENTITY
|
solana --keypair archiver-keypair.json create-archiver-storage-account $ARCHIVER_IDENTITY $STORAGE_IDENTITY
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ solana-keygen new -o ~/validator-stake-keypair.json
|
||||||
Now delegate 1 SOL to your validator by first creating your stake account:
|
Now delegate 1 SOL to your validator by first creating your stake account:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
solana create-stake-account ~/validator-stake-keypair.json 1 SOL
|
solana create-stake-account ~/validator-stake-keypair.json 1
|
||||||
```
|
```
|
||||||
|
|
||||||
and then delegating that stake to your validator:
|
and then delegating that stake to your validator:
|
||||||
|
|
|
@ -93,12 +93,8 @@ pub fn pubkeys_sigs_of(matches: &ArgMatches<'_>, name: &str) -> Option<Vec<(Pubk
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn amount_of(matches: &ArgMatches<'_>, name: &str, unit: &str) -> Option<u64> {
|
pub fn lamports_of_sol(matches: &ArgMatches<'_>, name: &str) -> Option<u64> {
|
||||||
if matches.value_of(unit) == Some("lamports") {
|
|
||||||
value_of(matches, name)
|
|
||||||
} else {
|
|
||||||
value_of(matches, name).map(sol_to_lamports)
|
value_of(matches, name).map(sol_to_lamports)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn derivation_of(matches: &ArgMatches<'_>, name: &str) -> Option<DerivationPath> {
|
pub fn derivation_of(matches: &ArgMatches<'_>, name: &str) -> Option<DerivationPath> {
|
||||||
|
@ -269,24 +265,21 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_amount_of() {
|
fn test_lamports_of_sol() {
|
||||||
let matches = app()
|
let matches = app()
|
||||||
.clone()
|
.clone()
|
||||||
.get_matches_from(vec!["test", "--single", "50", "--unit", "lamports"]);
|
.get_matches_from(vec!["test", "--single", "50"]);
|
||||||
assert_eq!(amount_of(&matches, "single", "unit"), Some(50));
|
assert_eq!(lamports_of_sol(&matches, "single"), Some(50000000000));
|
||||||
assert_eq!(amount_of(&matches, "multiple", "unit"), None);
|
assert_eq!(lamports_of_sol(&matches, "multiple"), None);
|
||||||
let matches = app()
|
let matches = app()
|
||||||
.clone()
|
.clone()
|
||||||
.get_matches_from(vec!["test", "--single", "50", "--unit", "SOL"]);
|
.get_matches_from(vec!["test", "--single", "1.5"]);
|
||||||
assert_eq!(amount_of(&matches, "single", "unit"), Some(50000000000));
|
assert_eq!(lamports_of_sol(&matches, "single"), Some(1500000000));
|
||||||
|
assert_eq!(lamports_of_sol(&matches, "multiple"), None);
|
||||||
let matches = app()
|
let matches = app()
|
||||||
.clone()
|
.clone()
|
||||||
.get_matches_from(vec!["test", "--single", "1.5", "--unit", "SOL"]);
|
.get_matches_from(vec!["test", "--single", "0.03"]);
|
||||||
assert_eq!(amount_of(&matches, "single", "unit"), Some(1500000000));
|
assert_eq!(lamports_of_sol(&matches, "single"), Some(30000000));
|
||||||
let matches = app()
|
|
||||||
.clone()
|
|
||||||
.get_matches_from(vec!["test", "--single", "1.5", "--unit", "lamports"]);
|
|
||||||
assert_eq!(amount_of(&matches, "single", "unit"), None);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
160
cli/src/cli.rs
160
cli/src/cli.rs
|
@ -411,7 +411,6 @@ pub enum CliCommand {
|
||||||
faucet_host: Option<IpAddr>,
|
faucet_host: Option<IpAddr>,
|
||||||
faucet_port: u16,
|
faucet_port: u16,
|
||||||
lamports: u64,
|
lamports: u64,
|
||||||
use_lamports_unit: bool,
|
|
||||||
},
|
},
|
||||||
Balance {
|
Balance {
|
||||||
pubkey: Option<Pubkey>,
|
pubkey: Option<Pubkey>,
|
||||||
|
@ -644,14 +643,12 @@ pub fn parse_command(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, Box<dyn
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let lamports = required_lamports_from(matches, "amount", "unit")?;
|
let lamports = lamports_of_sol(matches, "amount").unwrap();
|
||||||
let use_lamports_unit = matches.value_of("unit") == Some("lamports");
|
|
||||||
Ok(CliCommandInfo {
|
Ok(CliCommandInfo {
|
||||||
command: CliCommand::Airdrop {
|
command: CliCommand::Airdrop {
|
||||||
faucet_host,
|
faucet_host,
|
||||||
faucet_port,
|
faucet_port,
|
||||||
lamports,
|
lamports,
|
||||||
use_lamports_unit,
|
|
||||||
},
|
},
|
||||||
require_keypair: true,
|
require_keypair: true,
|
||||||
})
|
})
|
||||||
|
@ -684,7 +681,7 @@ pub fn parse_command(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, Box<dyn
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
("pay", Some(matches)) => {
|
("pay", Some(matches)) => {
|
||||||
let lamports = required_lamports_from(matches, "amount", "unit")?;
|
let lamports = lamports_of_sol(matches, "amount").unwrap();
|
||||||
let to = pubkey_of(&matches, "to").unwrap();
|
let to = pubkey_of(&matches, "to").unwrap();
|
||||||
let timestamp = if matches.is_present("timestamp") {
|
let timestamp = if matches.is_present("timestamp") {
|
||||||
// Parse input for serde_json
|
// Parse input for serde_json
|
||||||
|
@ -768,7 +765,7 @@ pub fn parse_command(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, Box<dyn
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
("transfer", Some(matches)) => {
|
("transfer", Some(matches)) => {
|
||||||
let lamports = required_lamports_from(matches, "amount", "unit")?;
|
let lamports = lamports_of_sol(matches, "amount").unwrap();
|
||||||
let to = pubkey_of(&matches, "to").unwrap();
|
let to = pubkey_of(&matches, "to").unwrap();
|
||||||
let sign_only = matches.is_present(SIGN_ONLY_ARG.name);
|
let sign_only = matches.is_present(SIGN_ONLY_ARG.name);
|
||||||
let signers = pubkeys_sigs_of(&matches, SIGNER_ARG.name);
|
let signers = pubkeys_sigs_of(&matches, SIGNER_ARG.name);
|
||||||
|
@ -947,12 +944,11 @@ fn process_airdrop(
|
||||||
config: &CliConfig,
|
config: &CliConfig,
|
||||||
faucet_addr: &SocketAddr,
|
faucet_addr: &SocketAddr,
|
||||||
lamports: u64,
|
lamports: u64,
|
||||||
use_lamports_unit: bool,
|
|
||||||
) -> ProcessResult {
|
) -> ProcessResult {
|
||||||
let pubkey = config.pubkey()?;
|
let pubkey = config.pubkey()?;
|
||||||
println!(
|
println!(
|
||||||
"Requesting airdrop of {} from {}",
|
"Requesting airdrop of {} from {}",
|
||||||
build_balance_message(lamports, use_lamports_unit, true),
|
build_balance_message(lamports, false, true),
|
||||||
faucet_addr
|
faucet_addr
|
||||||
);
|
);
|
||||||
let previous_balance = match rpc_client.retry_get_balance(&pubkey, 5)? {
|
let previous_balance = match rpc_client.retry_get_balance(&pubkey, 5)? {
|
||||||
|
@ -971,11 +967,7 @@ fn process_airdrop(
|
||||||
.retry_get_balance(&pubkey, 5)?
|
.retry_get_balance(&pubkey, 5)?
|
||||||
.unwrap_or(previous_balance);
|
.unwrap_or(previous_balance);
|
||||||
|
|
||||||
Ok(build_balance_message(
|
Ok(build_balance_message(current_balance, false, true))
|
||||||
current_balance,
|
|
||||||
use_lamports_unit,
|
|
||||||
true,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn process_balance(
|
fn process_balance(
|
||||||
|
@ -1858,7 +1850,6 @@ pub fn process_command(config: &CliConfig) -> ProcessResult {
|
||||||
faucet_host,
|
faucet_host,
|
||||||
faucet_port,
|
faucet_port,
|
||||||
lamports,
|
lamports,
|
||||||
use_lamports_unit,
|
|
||||||
} => {
|
} => {
|
||||||
let faucet_addr = SocketAddr::new(
|
let faucet_addr = SocketAddr::new(
|
||||||
faucet_host.unwrap_or_else(|| {
|
faucet_host.unwrap_or_else(|| {
|
||||||
|
@ -1874,13 +1865,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult {
|
||||||
*faucet_port,
|
*faucet_port,
|
||||||
);
|
);
|
||||||
|
|
||||||
process_airdrop(
|
process_airdrop(&rpc_client, config, &faucet_addr, *lamports)
|
||||||
&rpc_client,
|
|
||||||
config,
|
|
||||||
&faucet_addr,
|
|
||||||
*lamports,
|
|
||||||
*use_lamports_unit,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
// Check client balance
|
// Check client balance
|
||||||
CliCommand::Balance {
|
CliCommand::Balance {
|
||||||
|
@ -2055,22 +2040,6 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If clap arg `name` is_required, and specifies an amount of either lamports or SOL, the only way
|
|
||||||
// `amount_of()` can return None is if `name` is an f64 and `unit`== "lamports". This method
|
|
||||||
// catches that case and converts it to an Error.
|
|
||||||
pub(crate) fn required_lamports_from(
|
|
||||||
matches: &ArgMatches<'_>,
|
|
||||||
name: &str,
|
|
||||||
unit: &str,
|
|
||||||
) -> Result<u64, CliError> {
|
|
||||||
amount_of(matches, name, unit).ok_or_else(|| {
|
|
||||||
CliError::BadParameter(format!(
|
|
||||||
"Lamports cannot be fractional: {}",
|
|
||||||
matches.value_of("amount").unwrap()
|
|
||||||
))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pub(crate) fn build_balance_message(
|
pub(crate) fn build_balance_message(
|
||||||
lamports: u64,
|
lamports: u64,
|
||||||
use_lamports_unit: bool,
|
use_lamports_unit: bool,
|
||||||
|
@ -2128,15 +2097,7 @@ pub fn app<'ab, 'v>(name: &str, about: &'ab str, version: &'v str) -> App<'ab, '
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.validator(is_amount)
|
.validator(is_amount)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The airdrop amount to request (default unit SOL)"),
|
.help("The airdrop amount to request, in SOL"),
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("unit")
|
|
||||||
.index(2)
|
|
||||||
.value_name("UNIT")
|
|
||||||
.takes_value(true)
|
|
||||||
.possible_values(&["SOL", "lamports"])
|
|
||||||
.help("Specify unit to use for request and balance display"),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.subcommand(
|
.subcommand(
|
||||||
|
@ -2245,15 +2206,7 @@ pub fn app<'ab, 'v>(name: &str, about: &'ab str, version: &'v str) -> App<'ab, '
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.validator(is_amount)
|
.validator(is_amount)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The amount to send (default unit SOL)"),
|
.help("The amount to send, in SOL"),
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("unit")
|
|
||||||
.index(3)
|
|
||||||
.value_name("UNIT")
|
|
||||||
.takes_value(true)
|
|
||||||
.possible_values(&["SOL", "lamports"])
|
|
||||||
.help("Specify unit to use for request"),
|
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("timestamp")
|
Arg::with_name("timestamp")
|
||||||
|
@ -2358,15 +2311,7 @@ pub fn app<'ab, 'v>(name: &str, about: &'ab str, version: &'v str) -> App<'ab, '
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.validator(is_amount)
|
.validator(is_amount)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The amount to send (default unit SOL)"),
|
.help("The amount to send, in SOL"),
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("unit")
|
|
||||||
.index(3)
|
|
||||||
.value_name("UNIT")
|
|
||||||
.takes_value(true)
|
|
||||||
.possible_values(&["SOL", "lamports"])
|
|
||||||
.help("Specify unit to use for request"),
|
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("from")
|
Arg::with_name("from")
|
||||||
|
@ -2468,15 +2413,14 @@ mod tests {
|
||||||
// Test Airdrop Subcommand
|
// Test Airdrop Subcommand
|
||||||
let test_airdrop = test_commands
|
let test_airdrop = test_commands
|
||||||
.clone()
|
.clone()
|
||||||
.get_matches_from(vec!["test", "airdrop", "50", "lamports"]);
|
.get_matches_from(vec!["test", "airdrop", "50"]);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse_command(&test_airdrop).unwrap(),
|
parse_command(&test_airdrop).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Airdrop {
|
command: CliCommand::Airdrop {
|
||||||
faucet_host: None,
|
faucet_host: None,
|
||||||
faucet_port: solana_faucet::faucet::FAUCET_PORT,
|
faucet_port: solana_faucet::faucet::FAUCET_PORT,
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
use_lamports_unit: true,
|
|
||||||
},
|
},
|
||||||
require_keypair: true,
|
require_keypair: true,
|
||||||
}
|
}
|
||||||
|
@ -2624,18 +2568,15 @@ mod tests {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Test Simple Pay Subcommand
|
// Test Simple Pay Subcommand
|
||||||
let test_pay = test_commands.clone().get_matches_from(vec![
|
let test_pay =
|
||||||
"test",
|
test_commands
|
||||||
"pay",
|
.clone()
|
||||||
&pubkey_string,
|
.get_matches_from(vec!["test", "pay", &pubkey_string, "50"]);
|
||||||
"50",
|
|
||||||
"lamports",
|
|
||||||
]);
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse_command(&test_pay).unwrap(),
|
parse_command(&test_pay).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
..PayCommand::default()
|
..PayCommand::default()
|
||||||
}),
|
}),
|
||||||
|
@ -2649,7 +2590,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--require-signature-from",
|
"--require-signature-from",
|
||||||
&witness0_string,
|
&witness0_string,
|
||||||
"--require-signature-from",
|
"--require-signature-from",
|
||||||
|
@ -2659,7 +2599,7 @@ mod tests {
|
||||||
parse_command(&test_pay_multiple_witnesses).unwrap(),
|
parse_command(&test_pay_multiple_witnesses).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
witnesses: Some(vec![witness0, witness1]),
|
witnesses: Some(vec![witness0, witness1]),
|
||||||
..PayCommand::default()
|
..PayCommand::default()
|
||||||
|
@ -2672,7 +2612,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--require-signature-from",
|
"--require-signature-from",
|
||||||
&witness0_string,
|
&witness0_string,
|
||||||
]);
|
]);
|
||||||
|
@ -2680,7 +2619,7 @@ mod tests {
|
||||||
parse_command(&test_pay_single_witness).unwrap(),
|
parse_command(&test_pay_single_witness).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
witnesses: Some(vec![witness0]),
|
witnesses: Some(vec![witness0]),
|
||||||
..PayCommand::default()
|
..PayCommand::default()
|
||||||
|
@ -2695,7 +2634,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--after",
|
"--after",
|
||||||
"2018-09-19T17:30:59",
|
"2018-09-19T17:30:59",
|
||||||
"--require-timestamp-from",
|
"--require-timestamp-from",
|
||||||
|
@ -2705,7 +2643,7 @@ mod tests {
|
||||||
parse_command(&test_pay_timestamp).unwrap(),
|
parse_command(&test_pay_timestamp).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
timestamp: Some(dt),
|
timestamp: Some(dt),
|
||||||
timestamp_pubkey: Some(witness0),
|
timestamp_pubkey: Some(witness0),
|
||||||
|
@ -2723,7 +2661,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
"--sign-only",
|
"--sign-only",
|
||||||
|
@ -2732,7 +2669,7 @@ mod tests {
|
||||||
parse_command(&test_pay).unwrap(),
|
parse_command(&test_pay).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
blockhash_query: BlockhashQuery::None(blockhash, FeeCalculator::default()),
|
blockhash_query: BlockhashQuery::None(blockhash, FeeCalculator::default()),
|
||||||
sign_only: true,
|
sign_only: true,
|
||||||
|
@ -2751,7 +2688,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
"--signer",
|
"--signer",
|
||||||
|
@ -2761,7 +2697,7 @@ mod tests {
|
||||||
parse_command(&test_pay).unwrap(),
|
parse_command(&test_pay).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
||||||
signers: Some(vec![(key1, sig1)]),
|
signers: Some(vec![(key1, sig1)]),
|
||||||
|
@ -2780,7 +2716,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
"--signer",
|
"--signer",
|
||||||
|
@ -2792,7 +2727,7 @@ mod tests {
|
||||||
parse_command(&test_pay).unwrap(),
|
parse_command(&test_pay).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
||||||
signers: Some(vec![(key1, sig1), (key2, sig2)]),
|
signers: Some(vec![(key1, sig1), (key2, sig2)]),
|
||||||
|
@ -2808,7 +2743,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
]);
|
]);
|
||||||
|
@ -2816,7 +2750,7 @@ mod tests {
|
||||||
parse_command(&test_pay).unwrap(),
|
parse_command(&test_pay).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
||||||
..PayCommand::default()
|
..PayCommand::default()
|
||||||
|
@ -2833,7 +2767,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
"--nonce",
|
"--nonce",
|
||||||
|
@ -2843,7 +2776,7 @@ mod tests {
|
||||||
parse_command(&test_pay).unwrap(),
|
parse_command(&test_pay).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
||||||
nonce_account: Some(pubkey),
|
nonce_account: Some(pubkey),
|
||||||
|
@ -2862,7 +2795,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
"--nonce",
|
"--nonce",
|
||||||
|
@ -2874,7 +2806,7 @@ mod tests {
|
||||||
parse_command(&test_pay).unwrap(),
|
parse_command(&test_pay).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
||||||
nonce_account: Some(pubkey),
|
nonce_account: Some(pubkey),
|
||||||
|
@ -2896,7 +2828,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
"--nonce",
|
"--nonce",
|
||||||
|
@ -2910,7 +2841,7 @@ mod tests {
|
||||||
parse_command(&test_pay).unwrap(),
|
parse_command(&test_pay).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
blockhash_query: BlockhashQuery::FeeCalculator(blockhash),
|
||||||
nonce_account: Some(pubkey),
|
nonce_account: Some(pubkey),
|
||||||
|
@ -2934,7 +2865,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
"--nonce",
|
"--nonce",
|
||||||
|
@ -2965,7 +2895,6 @@ mod tests {
|
||||||
"pay",
|
"pay",
|
||||||
&pubkey_string,
|
&pubkey_string,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--after",
|
"--after",
|
||||||
"2018-09-19T17:30:59",
|
"2018-09-19T17:30:59",
|
||||||
"--require-signature-from",
|
"--require-signature-from",
|
||||||
|
@ -2979,7 +2908,7 @@ mod tests {
|
||||||
parse_command(&test_pay_multiple_witnesses).unwrap(),
|
parse_command(&test_pay_multiple_witnesses).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Pay(PayCommand {
|
command: CliCommand::Pay(PayCommand {
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
to: pubkey,
|
to: pubkey,
|
||||||
timestamp: Some(dt),
|
timestamp: Some(dt),
|
||||||
timestamp_pubkey: Some(witness0),
|
timestamp_pubkey: Some(witness0),
|
||||||
|
@ -3284,7 +3213,6 @@ mod tests {
|
||||||
faucet_host: None,
|
faucet_host: None,
|
||||||
faucet_port: 1234,
|
faucet_port: 1234,
|
||||||
lamports: 50,
|
lamports: 50,
|
||||||
use_lamports_unit: true,
|
|
||||||
};
|
};
|
||||||
assert!(process_command(&config).is_ok());
|
assert!(process_command(&config).is_ok());
|
||||||
|
|
||||||
|
@ -3322,7 +3250,6 @@ mod tests {
|
||||||
faucet_host: None,
|
faucet_host: None,
|
||||||
faucet_port: 1234,
|
faucet_port: 1234,
|
||||||
lamports: 50,
|
lamports: 50,
|
||||||
use_lamports_unit: true,
|
|
||||||
};
|
};
|
||||||
assert!(process_command(&config).is_err());
|
assert!(process_command(&config).is_err());
|
||||||
|
|
||||||
|
@ -3431,35 +3358,13 @@ mod tests {
|
||||||
fn test_parse_transfer_subcommand() {
|
fn test_parse_transfer_subcommand() {
|
||||||
let test_commands = app("test", "desc", "version");
|
let test_commands = app("test", "desc", "version");
|
||||||
|
|
||||||
//Test Transfer Subcommand, lamports
|
//Test Transfer Subcommand, SOL
|
||||||
let from_keypair = keypair_from_seed(&[0u8; 32]).unwrap();
|
let from_keypair = keypair_from_seed(&[0u8; 32]).unwrap();
|
||||||
let from_pubkey = from_keypair.pubkey();
|
let from_pubkey = from_keypair.pubkey();
|
||||||
let from_string = from_pubkey.to_string();
|
let from_string = from_pubkey.to_string();
|
||||||
let to_keypair = keypair_from_seed(&[1u8; 32]).unwrap();
|
let to_keypair = keypair_from_seed(&[1u8; 32]).unwrap();
|
||||||
let to_pubkey = to_keypair.pubkey();
|
let to_pubkey = to_keypair.pubkey();
|
||||||
let to_string = to_pubkey.to_string();
|
let to_string = to_pubkey.to_string();
|
||||||
let test_transfer = test_commands
|
|
||||||
.clone()
|
|
||||||
.get_matches_from(vec!["test", "transfer", &to_string, "42", "lamports"]);
|
|
||||||
assert_eq!(
|
|
||||||
parse_command(&test_transfer).unwrap(),
|
|
||||||
CliCommandInfo {
|
|
||||||
command: CliCommand::Transfer {
|
|
||||||
lamports: 42,
|
|
||||||
to: to_pubkey,
|
|
||||||
from: None,
|
|
||||||
sign_only: false,
|
|
||||||
signers: None,
|
|
||||||
blockhash_query: BlockhashQuery::All,
|
|
||||||
nonce_account: None,
|
|
||||||
nonce_authority: None,
|
|
||||||
fee_payer: None,
|
|
||||||
},
|
|
||||||
require_keypair: true,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
//Test Transfer Subcommand, SOL
|
|
||||||
let test_transfer = test_commands
|
let test_transfer = test_commands
|
||||||
.clone()
|
.clone()
|
||||||
.get_matches_from(vec!["test", "transfer", &to_string, "42"]);
|
.get_matches_from(vec!["test", "transfer", &to_string, "42"]);
|
||||||
|
@ -3489,7 +3394,6 @@ mod tests {
|
||||||
"transfer",
|
"transfer",
|
||||||
&to_string,
|
&to_string,
|
||||||
"42",
|
"42",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
"--sign-only",
|
"--sign-only",
|
||||||
|
@ -3498,7 +3402,7 @@ mod tests {
|
||||||
parse_command(&test_transfer).unwrap(),
|
parse_command(&test_transfer).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Transfer {
|
command: CliCommand::Transfer {
|
||||||
lamports: 42,
|
lamports: 42_000_000_000,
|
||||||
to: to_pubkey,
|
to: to_pubkey,
|
||||||
from: None,
|
from: None,
|
||||||
sign_only: true,
|
sign_only: true,
|
||||||
|
@ -3520,7 +3424,6 @@ mod tests {
|
||||||
"transfer",
|
"transfer",
|
||||||
&to_string,
|
&to_string,
|
||||||
"42",
|
"42",
|
||||||
"lamports",
|
|
||||||
"--from",
|
"--from",
|
||||||
&from_string,
|
&from_string,
|
||||||
"--fee-payer",
|
"--fee-payer",
|
||||||
|
@ -3534,7 +3437,7 @@ mod tests {
|
||||||
parse_command(&test_transfer).unwrap(),
|
parse_command(&test_transfer).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Transfer {
|
command: CliCommand::Transfer {
|
||||||
lamports: 42,
|
lamports: 42_000_000_000,
|
||||||
to: to_pubkey,
|
to: to_pubkey,
|
||||||
from: Some(from_pubkey.into()),
|
from: Some(from_pubkey.into()),
|
||||||
sign_only: false,
|
sign_only: false,
|
||||||
|
@ -3559,7 +3462,6 @@ mod tests {
|
||||||
"transfer",
|
"transfer",
|
||||||
&to_string,
|
&to_string,
|
||||||
"42",
|
"42",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&blockhash_string,
|
&blockhash_string,
|
||||||
"--nonce",
|
"--nonce",
|
||||||
|
@ -3571,7 +3473,7 @@ mod tests {
|
||||||
parse_command(&test_transfer).unwrap(),
|
parse_command(&test_transfer).unwrap(),
|
||||||
CliCommandInfo {
|
CliCommandInfo {
|
||||||
command: CliCommand::Transfer {
|
command: CliCommand::Transfer {
|
||||||
lamports: 42,
|
lamports: 42_000_000_000,
|
||||||
to: to_pubkey,
|
to: to_pubkey,
|
||||||
from: None,
|
from: None,
|
||||||
sign_only: false,
|
sign_only: false,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::cli::{
|
use crate::cli::{
|
||||||
build_balance_message, check_account_for_fee, check_unique_pubkeys,
|
build_balance_message, check_account_for_fee, check_unique_pubkeys,
|
||||||
log_instruction_custom_error, required_lamports_from, CliCommand, CliCommandInfo, CliConfig,
|
log_instruction_custom_error, CliCommand, CliCommandInfo, CliConfig, CliError, ProcessResult,
|
||||||
CliError, ProcessResult, SigningAuthority,
|
SigningAuthority,
|
||||||
};
|
};
|
||||||
use crate::offline::BLOCKHASH_ARG;
|
use crate::offline::BLOCKHASH_ARG;
|
||||||
use clap::{App, Arg, ArgMatches, SubCommand};
|
use clap::{App, Arg, ArgMatches, SubCommand};
|
||||||
|
@ -121,15 +121,7 @@ impl NonceSubCommands for App<'_, '_> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
.validator(is_amount)
|
.validator(is_amount)
|
||||||
.help("The amount to load the nonce account with (default unit SOL)"),
|
.help("The amount to load the nonce account with, in SOL"),
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("unit")
|
|
||||||
.index(3)
|
|
||||||
.value_name("UNIT")
|
|
||||||
.takes_value(true)
|
|
||||||
.possible_values(&["SOL", "lamports"])
|
|
||||||
.help("Specify unit to use for request"),
|
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name(NONCE_AUTHORITY_ARG.name)
|
Arg::with_name(NONCE_AUTHORITY_ARG.name)
|
||||||
|
@ -216,15 +208,7 @@ impl NonceSubCommands for App<'_, '_> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
.validator(is_amount)
|
.validator(is_amount)
|
||||||
.help("The amount to withdraw from the nonce account (default unit SOL)"),
|
.help("The amount to withdraw from the nonce account, in SOL"),
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("unit")
|
|
||||||
.index(4)
|
|
||||||
.value_name("UNIT")
|
|
||||||
.takes_value(true)
|
|
||||||
.possible_values(&["SOL", "lamports"])
|
|
||||||
.help("Specify unit to use for request"),
|
|
||||||
)
|
)
|
||||||
.arg(nonce_authority_arg()),
|
.arg(nonce_authority_arg()),
|
||||||
)
|
)
|
||||||
|
@ -250,7 +234,7 @@ pub fn parse_authorize_nonce_account(matches: &ArgMatches<'_>) -> Result<CliComm
|
||||||
pub fn parse_nonce_create_account(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
|
pub fn parse_nonce_create_account(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
|
||||||
let nonce_account = keypair_of(matches, "nonce_account_keypair").unwrap();
|
let nonce_account = keypair_of(matches, "nonce_account_keypair").unwrap();
|
||||||
let seed = matches.value_of("seed").map(|s| s.to_string());
|
let seed = matches.value_of("seed").map(|s| s.to_string());
|
||||||
let lamports = required_lamports_from(matches, "amount", "unit")?;
|
let lamports = lamports_of_sol(matches, "amount").unwrap();
|
||||||
let nonce_authority = pubkey_of(matches, NONCE_AUTHORITY_ARG.name);
|
let nonce_authority = pubkey_of(matches, NONCE_AUTHORITY_ARG.name);
|
||||||
|
|
||||||
Ok(CliCommandInfo {
|
Ok(CliCommandInfo {
|
||||||
|
@ -305,7 +289,7 @@ pub fn parse_withdraw_from_nonce_account(
|
||||||
) -> Result<CliCommandInfo, CliError> {
|
) -> Result<CliCommandInfo, CliError> {
|
||||||
let nonce_account = pubkey_of(matches, "nonce_account_keypair").unwrap();
|
let nonce_account = pubkey_of(matches, "nonce_account_keypair").unwrap();
|
||||||
let destination_account_pubkey = pubkey_of(matches, "destination_account_pubkey").unwrap();
|
let destination_account_pubkey = pubkey_of(matches, "destination_account_pubkey").unwrap();
|
||||||
let lamports = required_lamports_from(matches, "amount", "unit")?;
|
let lamports = lamports_of_sol(matches, "amount").unwrap();
|
||||||
let nonce_authority =
|
let nonce_authority =
|
||||||
SigningAuthority::new_from_matches(&matches, NONCE_AUTHORITY_ARG.name, None)?;
|
SigningAuthority::new_from_matches(&matches, NONCE_AUTHORITY_ARG.name, None)?;
|
||||||
|
|
||||||
|
@ -689,7 +673,6 @@ mod tests {
|
||||||
"create-nonce-account",
|
"create-nonce-account",
|
||||||
&keypair_file,
|
&keypair_file,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
]);
|
]);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse_command(&test_create_nonce_account).unwrap(),
|
parse_command(&test_create_nonce_account).unwrap(),
|
||||||
|
@ -698,7 +681,7 @@ mod tests {
|
||||||
nonce_account: read_keypair_file(&keypair_file).unwrap().into(),
|
nonce_account: read_keypair_file(&keypair_file).unwrap().into(),
|
||||||
seed: None,
|
seed: None,
|
||||||
nonce_authority: None,
|
nonce_authority: None,
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
},
|
},
|
||||||
require_keypair: true
|
require_keypair: true
|
||||||
}
|
}
|
||||||
|
@ -710,7 +693,6 @@ mod tests {
|
||||||
"create-nonce-account",
|
"create-nonce-account",
|
||||||
&keypair_file,
|
&keypair_file,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--nonce-authority",
|
"--nonce-authority",
|
||||||
&authority_keypair_file,
|
&authority_keypair_file,
|
||||||
]);
|
]);
|
||||||
|
@ -723,7 +705,7 @@ mod tests {
|
||||||
nonce_authority: Some(
|
nonce_authority: Some(
|
||||||
read_keypair_file(&authority_keypair_file).unwrap().pubkey()
|
read_keypair_file(&authority_keypair_file).unwrap().pubkey()
|
||||||
),
|
),
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
},
|
},
|
||||||
require_keypair: true
|
require_keypair: true
|
||||||
}
|
}
|
||||||
|
@ -806,7 +788,6 @@ mod tests {
|
||||||
&keypair_file,
|
&keypair_file,
|
||||||
&nonce_account_string,
|
&nonce_account_string,
|
||||||
"42",
|
"42",
|
||||||
"lamports",
|
|
||||||
]);
|
]);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse_command(&test_withdraw_from_nonce_account).unwrap(),
|
parse_command(&test_withdraw_from_nonce_account).unwrap(),
|
||||||
|
@ -815,7 +796,7 @@ mod tests {
|
||||||
nonce_account: read_keypair_file(&keypair_file).unwrap().pubkey(),
|
nonce_account: read_keypair_file(&keypair_file).unwrap().pubkey(),
|
||||||
nonce_authority: None,
|
nonce_authority: None,
|
||||||
destination_account_pubkey: nonce_account_pubkey,
|
destination_account_pubkey: nonce_account_pubkey,
|
||||||
lamports: 42
|
lamports: 42_000_000_000
|
||||||
},
|
},
|
||||||
require_keypair: true
|
require_keypair: true
|
||||||
}
|
}
|
||||||
|
@ -827,7 +808,6 @@ mod tests {
|
||||||
&keypair_file,
|
&keypair_file,
|
||||||
&nonce_account_string,
|
&nonce_account_string,
|
||||||
"42",
|
"42",
|
||||||
"SOL",
|
|
||||||
]);
|
]);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse_command(&test_withdraw_from_nonce_account).unwrap(),
|
parse_command(&test_withdraw_from_nonce_account).unwrap(),
|
||||||
|
@ -849,7 +829,6 @@ mod tests {
|
||||||
&keypair_file,
|
&keypair_file,
|
||||||
&nonce_account_string,
|
&nonce_account_string,
|
||||||
"42",
|
"42",
|
||||||
"lamports",
|
|
||||||
"--nonce-authority",
|
"--nonce-authority",
|
||||||
&authority_keypair_file,
|
&authority_keypair_file,
|
||||||
]);
|
]);
|
||||||
|
@ -862,7 +841,7 @@ mod tests {
|
||||||
read_keypair_file(&authority_keypair_file).unwrap().into()
|
read_keypair_file(&authority_keypair_file).unwrap().into()
|
||||||
),
|
),
|
||||||
destination_account_pubkey: nonce_account_pubkey,
|
destination_account_pubkey: nonce_account_pubkey,
|
||||||
lamports: 42
|
lamports: 42_000_000_000
|
||||||
},
|
},
|
||||||
require_keypair: true
|
require_keypair: true
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{
|
cli::{
|
||||||
build_balance_message, check_account_for_fee, check_unique_pubkeys, fee_payer_arg,
|
build_balance_message, check_account_for_fee, check_unique_pubkeys, fee_payer_arg,
|
||||||
log_instruction_custom_error, nonce_authority_arg, replace_signatures,
|
log_instruction_custom_error, nonce_authority_arg, replace_signatures, return_signers,
|
||||||
required_lamports_from, return_signers, CliCommand, CliCommandInfo, CliConfig, CliError,
|
CliCommand, CliCommandInfo, CliConfig, CliError, ProcessResult, SigningAuthority,
|
||||||
ProcessResult, SigningAuthority, FEE_PAYER_ARG,
|
FEE_PAYER_ARG,
|
||||||
},
|
},
|
||||||
nonce::{check_nonce_account, nonce_arg, NONCE_ARG, NONCE_AUTHORITY_ARG},
|
nonce::{check_nonce_account, nonce_arg, NONCE_ARG, NONCE_AUTHORITY_ARG},
|
||||||
offline::*,
|
offline::*,
|
||||||
|
@ -86,15 +86,7 @@ impl StakeSubCommands for App<'_, '_> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.validator(is_amount)
|
.validator(is_amount)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The amount of send to the vote account (default unit SOL)")
|
.help("The amount of send to the vote account, in SOL")
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("unit")
|
|
||||||
.index(3)
|
|
||||||
.value_name("UNIT")
|
|
||||||
.takes_value(true)
|
|
||||||
.possible_values(&["SOL", "lamports"])
|
|
||||||
.help("Specify unit to use for request")
|
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("custodian")
|
Arg::with_name("custodian")
|
||||||
|
@ -287,15 +279,7 @@ impl StakeSubCommands for App<'_, '_> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.validator(is_amount)
|
.validator(is_amount)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The amount to move into the new stake account (default unit SOL)")
|
.help("The amount to move into the new stake account, in unit SOL")
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("unit")
|
|
||||||
.index(4)
|
|
||||||
.value_name("UNIT")
|
|
||||||
.takes_value(true)
|
|
||||||
.possible_values(&["SOL", "lamports"])
|
|
||||||
.help("Specify unit to use for request")
|
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("seed")
|
Arg::with_name("seed")
|
||||||
|
@ -338,15 +322,7 @@ impl StakeSubCommands for App<'_, '_> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.validator(is_amount)
|
.validator(is_amount)
|
||||||
.required(true)
|
.required(true)
|
||||||
.help("The amount to withdraw from the stake account (default unit SOL)")
|
.help("The amount to withdraw from the stake account, in SOL")
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("unit")
|
|
||||||
.index(4)
|
|
||||||
.value_name("UNIT")
|
|
||||||
.takes_value(true)
|
|
||||||
.possible_values(&["SOL", "lamports"])
|
|
||||||
.help("Specify unit to use for request")
|
|
||||||
)
|
)
|
||||||
.arg(withdraw_authority_arg())
|
.arg(withdraw_authority_arg())
|
||||||
.offline_args()
|
.offline_args()
|
||||||
|
@ -443,7 +419,7 @@ pub fn parse_stake_create_account(matches: &ArgMatches<'_>) -> Result<CliCommand
|
||||||
let custodian = pubkey_of(matches, "custodian").unwrap_or_default();
|
let custodian = pubkey_of(matches, "custodian").unwrap_or_default();
|
||||||
let staker = pubkey_of(matches, STAKE_AUTHORITY_ARG.name);
|
let staker = pubkey_of(matches, STAKE_AUTHORITY_ARG.name);
|
||||||
let withdrawer = pubkey_of(matches, WITHDRAW_AUTHORITY_ARG.name);
|
let withdrawer = pubkey_of(matches, WITHDRAW_AUTHORITY_ARG.name);
|
||||||
let lamports = required_lamports_from(matches, "amount", "unit")?;
|
let lamports = lamports_of_sol(matches, "amount").unwrap();
|
||||||
let sign_only = matches.is_present(SIGN_ONLY_ARG.name);
|
let sign_only = matches.is_present(SIGN_ONLY_ARG.name);
|
||||||
let signers = pubkeys_sigs_of(&matches, SIGNER_ARG.name);
|
let signers = pubkeys_sigs_of(&matches, SIGNER_ARG.name);
|
||||||
let blockhash_query = BlockhashQuery::new_from_matches(matches);
|
let blockhash_query = BlockhashQuery::new_from_matches(matches);
|
||||||
|
@ -557,7 +533,7 @@ pub fn parse_stake_authorize(
|
||||||
pub fn parse_split_stake(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
|
pub fn parse_split_stake(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
|
||||||
let stake_account_pubkey = pubkey_of(matches, "stake_account_pubkey").unwrap();
|
let stake_account_pubkey = pubkey_of(matches, "stake_account_pubkey").unwrap();
|
||||||
let split_stake_account = keypair_of(matches, "split_stake_account").unwrap();
|
let split_stake_account = keypair_of(matches, "split_stake_account").unwrap();
|
||||||
let lamports = required_lamports_from(matches, "amount", "unit")?;
|
let lamports = lamports_of_sol(matches, "amount").unwrap();
|
||||||
let seed = matches.value_of("seed").map(|s| s.to_string());
|
let seed = matches.value_of("seed").map(|s| s.to_string());
|
||||||
|
|
||||||
let sign_only = matches.is_present(SIGN_ONLY_ARG.name);
|
let sign_only = matches.is_present(SIGN_ONLY_ARG.name);
|
||||||
|
@ -622,7 +598,7 @@ pub fn parse_stake_deactivate_stake(matches: &ArgMatches<'_>) -> Result<CliComma
|
||||||
pub fn parse_stake_withdraw_stake(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
|
pub fn parse_stake_withdraw_stake(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
|
||||||
let stake_account_pubkey = pubkey_of(matches, "stake_account_pubkey").unwrap();
|
let stake_account_pubkey = pubkey_of(matches, "stake_account_pubkey").unwrap();
|
||||||
let destination_account_pubkey = pubkey_of(matches, "destination_account_pubkey").unwrap();
|
let destination_account_pubkey = pubkey_of(matches, "destination_account_pubkey").unwrap();
|
||||||
let lamports = required_lamports_from(matches, "amount", "unit")?;
|
let lamports = lamports_of_sol(matches, "amount").unwrap();
|
||||||
let sign_only = matches.is_present(SIGN_ONLY_ARG.name);
|
let sign_only = matches.is_present(SIGN_ONLY_ARG.name);
|
||||||
let signers = pubkeys_sigs_of(&matches, SIGNER_ARG.name);
|
let signers = pubkeys_sigs_of(&matches, SIGNER_ARG.name);
|
||||||
let blockhash_query = BlockhashQuery::new_from_matches(matches);
|
let blockhash_query = BlockhashQuery::new_from_matches(matches);
|
||||||
|
@ -1865,7 +1841,6 @@ mod tests {
|
||||||
&custodian_string,
|
&custodian_string,
|
||||||
"--lockup-epoch",
|
"--lockup-epoch",
|
||||||
"43",
|
"43",
|
||||||
"lamports",
|
|
||||||
]);
|
]);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse_command(&test_create_stake_account).unwrap(),
|
parse_command(&test_create_stake_account).unwrap(),
|
||||||
|
@ -1880,7 +1855,7 @@ mod tests {
|
||||||
unix_timestamp: 0,
|
unix_timestamp: 0,
|
||||||
custodian,
|
custodian,
|
||||||
},
|
},
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
sign_only: false,
|
sign_only: false,
|
||||||
signers: None,
|
signers: None,
|
||||||
blockhash_query: BlockhashQuery::All,
|
blockhash_query: BlockhashQuery::All,
|
||||||
|
@ -1904,7 +1879,6 @@ mod tests {
|
||||||
"create-stake-account",
|
"create-stake-account",
|
||||||
&keypair_file,
|
&keypair_file,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
@ -1916,7 +1890,7 @@ mod tests {
|
||||||
staker: None,
|
staker: None,
|
||||||
withdrawer: None,
|
withdrawer: None,
|
||||||
lockup: Lockup::default(),
|
lockup: Lockup::default(),
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
sign_only: false,
|
sign_only: false,
|
||||||
signers: None,
|
signers: None,
|
||||||
blockhash_query: BlockhashQuery::All,
|
blockhash_query: BlockhashQuery::All,
|
||||||
|
@ -1944,7 +1918,6 @@ mod tests {
|
||||||
"create-stake-account",
|
"create-stake-account",
|
||||||
&keypair_file,
|
&keypair_file,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
&nonce_hash_string,
|
&nonce_hash_string,
|
||||||
"--nonce",
|
"--nonce",
|
||||||
|
@ -1968,7 +1941,7 @@ mod tests {
|
||||||
staker: None,
|
staker: None,
|
||||||
withdrawer: None,
|
withdrawer: None,
|
||||||
lockup: Lockup::default(),
|
lockup: Lockup::default(),
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
sign_only: false,
|
sign_only: false,
|
||||||
signers: Some(vec![(offline_pubkey, offline_sig)]),
|
signers: Some(vec![(offline_pubkey, offline_sig)]),
|
||||||
blockhash_query: BlockhashQuery::FeeCalculator(nonce_hash),
|
blockhash_query: BlockhashQuery::FeeCalculator(nonce_hash),
|
||||||
|
@ -2270,7 +2243,6 @@ mod tests {
|
||||||
&stake_account_string,
|
&stake_account_string,
|
||||||
&stake_account_string,
|
&stake_account_string,
|
||||||
"42",
|
"42",
|
||||||
"lamports",
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
@ -2279,7 +2251,7 @@ mod tests {
|
||||||
command: CliCommand::WithdrawStake {
|
command: CliCommand::WithdrawStake {
|
||||||
stake_account_pubkey,
|
stake_account_pubkey,
|
||||||
destination_account_pubkey: stake_account_pubkey,
|
destination_account_pubkey: stake_account_pubkey,
|
||||||
lamports: 42,
|
lamports: 42_000_000_000,
|
||||||
withdraw_authority: None,
|
withdraw_authority: None,
|
||||||
sign_only: false,
|
sign_only: false,
|
||||||
signers: None,
|
signers: None,
|
||||||
|
@ -2299,7 +2271,6 @@ mod tests {
|
||||||
&stake_account_string,
|
&stake_account_string,
|
||||||
&stake_account_string,
|
&stake_account_string,
|
||||||
"42",
|
"42",
|
||||||
"lamports",
|
|
||||||
"--withdraw-authority",
|
"--withdraw-authority",
|
||||||
&stake_authority_keypair_file,
|
&stake_authority_keypair_file,
|
||||||
]);
|
]);
|
||||||
|
@ -2310,7 +2281,7 @@ mod tests {
|
||||||
command: CliCommand::WithdrawStake {
|
command: CliCommand::WithdrawStake {
|
||||||
stake_account_pubkey,
|
stake_account_pubkey,
|
||||||
destination_account_pubkey: stake_account_pubkey,
|
destination_account_pubkey: stake_account_pubkey,
|
||||||
lamports: 42,
|
lamports: 42_000_000_000,
|
||||||
withdraw_authority: Some(
|
withdraw_authority: Some(
|
||||||
read_keypair_file(&stake_authority_keypair_file)
|
read_keypair_file(&stake_authority_keypair_file)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
@ -2334,7 +2305,6 @@ mod tests {
|
||||||
&stake_account_string,
|
&stake_account_string,
|
||||||
&stake_account_string,
|
&stake_account_string,
|
||||||
"42",
|
"42",
|
||||||
"lamports",
|
|
||||||
"--withdraw-authority",
|
"--withdraw-authority",
|
||||||
&stake_authority_keypair_file,
|
&stake_authority_keypair_file,
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
|
@ -2355,7 +2325,7 @@ mod tests {
|
||||||
command: CliCommand::WithdrawStake {
|
command: CliCommand::WithdrawStake {
|
||||||
stake_account_pubkey,
|
stake_account_pubkey,
|
||||||
destination_account_pubkey: stake_account_pubkey,
|
destination_account_pubkey: stake_account_pubkey,
|
||||||
lamports: 42,
|
lamports: 42_000_000_000,
|
||||||
withdraw_authority: Some(
|
withdraw_authority: Some(
|
||||||
read_keypair_file(&stake_authority_keypair_file)
|
read_keypair_file(&stake_authority_keypair_file)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
@ -2608,7 +2578,6 @@ mod tests {
|
||||||
&keypair_file,
|
&keypair_file,
|
||||||
&split_stake_account_keypair_file,
|
&split_stake_account_keypair_file,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
]);
|
]);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse_command(&test_split_stake_account).unwrap(),
|
parse_command(&test_split_stake_account).unwrap(),
|
||||||
|
@ -2625,7 +2594,7 @@ mod tests {
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.into(),
|
.into(),
|
||||||
seed: None,
|
seed: None,
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
fee_payer: None,
|
fee_payer: None,
|
||||||
},
|
},
|
||||||
require_keypair: true
|
require_keypair: true
|
||||||
|
@ -2654,7 +2623,6 @@ mod tests {
|
||||||
&keypair_file,
|
&keypair_file,
|
||||||
&split_stake_account_keypair_file,
|
&split_stake_account_keypair_file,
|
||||||
"50",
|
"50",
|
||||||
"lamports",
|
|
||||||
"--stake-authority",
|
"--stake-authority",
|
||||||
&stake_auth_string,
|
&stake_auth_string,
|
||||||
"--blockhash",
|
"--blockhash",
|
||||||
|
@ -2688,7 +2656,7 @@ mod tests {
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.into(),
|
.into(),
|
||||||
seed: None,
|
seed: None,
|
||||||
lamports: 50,
|
lamports: 50_000_000_000,
|
||||||
fee_payer: Some(nonce_auth_pubkey.into()),
|
fee_payer: Some(nonce_auth_pubkey.into()),
|
||||||
},
|
},
|
||||||
require_keypair: false,
|
require_keypair: false,
|
||||||
|
|
|
@ -43,7 +43,6 @@ fn test_cli_deploy_program() {
|
||||||
faucet_host: None,
|
faucet_host: None,
|
||||||
faucet_port: faucet_addr.port(),
|
faucet_port: faucet_addr.port(),
|
||||||
lamports: minimum_balance_for_rent_exemption + 1, // min balance for rent exemption + leftover for tx processing
|
lamports: minimum_balance_for_rent_exemption + 1, // min balance for rent exemption + leftover for tx processing
|
||||||
use_lamports_unit: true,
|
|
||||||
};
|
};
|
||||||
process_command(&config).unwrap();
|
process_command(&config).unwrap();
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ fn test_cli_request_airdrop() {
|
||||||
faucet_host: None,
|
faucet_host: None,
|
||||||
faucet_port: faucet_addr.port(),
|
faucet_port: faucet_addr.port(),
|
||||||
lamports: 50,
|
lamports: 50,
|
||||||
use_lamports_unit: true,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let sig_response = process_command(&bob_config);
|
let sig_response = process_command(&bob_config);
|
||||||
|
|
|
@ -8,7 +8,7 @@ here=$(dirname "$0")
|
||||||
# shellcheck source=multinode-demo/common.sh
|
# shellcheck source=multinode-demo/common.sh
|
||||||
source "$here"/common.sh
|
source "$here"/common.sh
|
||||||
|
|
||||||
stake_lamports=1000000000 # default number of lamports to assign as stake (1 SOL)
|
stake_sol=1 # default number of SOL to assign as stake (1 SOL)
|
||||||
url=http://127.0.0.1:8899 # default RPC url
|
url=http://127.0.0.1:8899 # default RPC url
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
|
@ -18,7 +18,7 @@ usage() {
|
||||||
fi
|
fi
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
usage: $0 [OPTIONS] <lamports to stake ($stake_lamports)>
|
usage: $0 [OPTIONS] <SOL to stake ($stake_sol)>
|
||||||
|
|
||||||
Add stake to a validator
|
Add stake to a validator
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ if [[ ${#positional_args[@]} -gt 1 ]]; then
|
||||||
usage "$@"
|
usage "$@"
|
||||||
fi
|
fi
|
||||||
if [[ -n ${positional_args[0]} ]]; then
|
if [[ -n ${positional_args[0]} ]]; then
|
||||||
stake_lamports=${positional_args[0]}
|
stake_sol=${positional_args[0]}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
config_dir="$SOLANA_CONFIG_DIR/validator$label"
|
config_dir="$SOLANA_CONFIG_DIR/validator$label"
|
||||||
|
@ -93,7 +93,7 @@ if [[ -f $stake_keypair_path ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ((airdrops_enabled)); then
|
if ((airdrops_enabled)); then
|
||||||
$solana_cli "${common_args[@]}" airdrop "$stake_lamports" lamports
|
$solana_cli "${common_args[@]}" airdrop "$stake_sol"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$solana_keygen new --no-passphrase -so "$stake_keypair_path"
|
$solana_keygen new --no-passphrase -so "$stake_keypair_path"
|
||||||
|
@ -102,7 +102,7 @@ set -x
|
||||||
$solana_cli "${common_args[@]}" \
|
$solana_cli "${common_args[@]}" \
|
||||||
vote-account "$vote_keypair_path"
|
vote-account "$vote_keypair_path"
|
||||||
$solana_cli "${common_args[@]}" \
|
$solana_cli "${common_args[@]}" \
|
||||||
create-stake-account "$stake_keypair_path" "$stake_lamports" lamports
|
create-stake-account "$stake_keypair_path" "$stake_sol"
|
||||||
$solana_cli "${common_args[@]}" \
|
$solana_cli "${common_args[@]}" \
|
||||||
delegate-stake $maybe_force "$stake_keypair_path" "$vote_keypair_path"
|
delegate-stake $maybe_force "$stake_keypair_path" "$vote_keypair_path"
|
||||||
$solana_cli "${common_args[@]}" stakes "$stake_keypair_path"
|
$solana_cli "${common_args[@]}" stakes "$stake_keypair_path"
|
||||||
|
|
|
@ -8,7 +8,7 @@ source "$here"/common.sh
|
||||||
|
|
||||||
args=()
|
args=()
|
||||||
airdrops_enabled=1
|
airdrops_enabled=1
|
||||||
node_lamports=500000000000 # 500 SOL: number of lamports to airdrop the node for transaction fees and vote account rent exemption (ignored if airdrops_enabled=0)
|
node_sol=500 # 500 SOL: number of SOL to airdrop the node for transaction fees and vote account rent exemption (ignored if airdrops_enabled=0)
|
||||||
label=
|
label=
|
||||||
identity_keypair_path=
|
identity_keypair_path=
|
||||||
voting_keypair_path=
|
voting_keypair_path=
|
||||||
|
@ -33,7 +33,7 @@ OPTIONS:
|
||||||
--init-complete-file FILE - create this file, if it doesn't already exist, once node initialization is complete
|
--init-complete-file FILE - create this file, if it doesn't already exist, once node initialization is complete
|
||||||
--label LABEL - Append the given label to the configuration files, useful when running
|
--label LABEL - Append the given label to the configuration files, useful when running
|
||||||
multiple validators in the same workspace
|
multiple validators in the same workspace
|
||||||
--node-lamports LAMPORTS - Number of lamports this node has been funded from the genesis config (default: $node_lamports)
|
--node-sol SOL - Number of SOL this node has been funded from the genesis config (default: $node_sol)
|
||||||
--no-voting - start node without vote signer
|
--no-voting - start node without vote signer
|
||||||
--rpc-port port - custom RPC port for this node
|
--rpc-port port - custom RPC port for this node
|
||||||
--no-restart - do not restart the node if it exits
|
--no-restart - do not restart the node if it exits
|
||||||
|
@ -53,8 +53,8 @@ while [[ -n $1 ]]; do
|
||||||
elif [[ $1 = --no-restart ]]; then
|
elif [[ $1 = --no-restart ]]; then
|
||||||
no_restart=1
|
no_restart=1
|
||||||
shift
|
shift
|
||||||
elif [[ $1 = --node-lamports ]]; then
|
elif [[ $1 = --node-sol ]]; then
|
||||||
node_lamports="$2"
|
node_sol="$2"
|
||||||
shift 2
|
shift 2
|
||||||
elif [[ $1 = --no-airdrop ]]; then
|
elif [[ $1 = --no-airdrop ]]; then
|
||||||
airdrops_enabled=0
|
airdrops_enabled=0
|
||||||
|
@ -251,12 +251,12 @@ wallet() {
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_validator_accounts() {
|
setup_validator_accounts() {
|
||||||
declare node_lamports=$1
|
declare node_sol=$1
|
||||||
|
|
||||||
if ! wallet vote-account "$voting_keypair_path"; then
|
if ! wallet vote-account "$voting_keypair_path"; then
|
||||||
if ((airdrops_enabled)); then
|
if ((airdrops_enabled)); then
|
||||||
echo "Adding $node_lamports to validator identity account:"
|
echo "Adding $node_sol to validator identity account:"
|
||||||
wallet airdrop "$node_lamports" lamports || return $?
|
wallet airdrop "$node_sol" || return $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Creating validator vote account"
|
echo "Creating validator vote account"
|
||||||
|
@ -271,7 +271,7 @@ setup_validator_accounts() {
|
||||||
echo "Validator storage account configured"
|
echo "Validator storage account configured"
|
||||||
|
|
||||||
echo "Validator identity account balance:"
|
echo "Validator identity account balance:"
|
||||||
wallet balance --lamports || return $?
|
wallet balance || return $?
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -282,7 +282,7 @@ rpc_url=$($solana_gossip rpc-url --entrypoint "$gossip_entrypoint" --any)
|
||||||
[[ -r "$voting_keypair_path" ]] || $solana_keygen new --no-passphrase -so "$voting_keypair_path"
|
[[ -r "$voting_keypair_path" ]] || $solana_keygen new --no-passphrase -so "$voting_keypair_path"
|
||||||
[[ -r "$storage_keypair_path" ]] || $solana_keygen new --no-passphrase -so "$storage_keypair_path"
|
[[ -r "$storage_keypair_path" ]] || $solana_keygen new --no-passphrase -so "$storage_keypair_path"
|
||||||
|
|
||||||
setup_validator_accounts "$node_lamports"
|
setup_validator_accounts "$node_sol"
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
echo "$PS4$program ${args[*]}"
|
echo "$PS4$program ${args[*]}"
|
||||||
|
|
|
@ -75,7 +75,7 @@ set -x
|
||||||
balance=$(solana $maybeKeypair --url "$URL" balance --lamports)
|
balance=$(solana $maybeKeypair --url "$URL" balance --lamports)
|
||||||
if [[ $balance = "0 lamports" ]]; then
|
if [[ $balance = "0 lamports" ]]; then
|
||||||
# shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair
|
# shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair
|
||||||
solana $maybeKeypair --url "$URL" airdrop 42 lamports
|
solana $maybeKeypair --url "$URL" airdrop 0.000000042
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair
|
# shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair
|
||||||
|
|
Loading…
Reference in New Issue