* Relax authority signer check for lookup table creation
* cli: support creating lookup tables without authority signer
* add another create lookup table ix function
* improve help message
Update subcommand text to warn deploy deprecated
Update the about text for `solana deploy` to warn this is only for non-upgradeable deploys. Fixes#27228
* add compute-unit-price trait to insert compute_budget instruction to set priorization fee
* add clap arg for compute-unit-price
* add compute-unit-price arg to commands that send transactions
* add and update tests
* Adjusts test cases for stricter requirements.
* Removes account reset in deserialization test.
* Removes verify related test cases.
* Replicates account modification verification logic of PreAccount in BorrowedAccount.
* Adds TransactionContext::account_touched_flags.
* Adds account modification verification to the BPF ABIv0 and ABIv1 deserialization, CPI syscall and program-test.
* Replicates the total sum of all lamports verification of PreAccounts in InstructionContext
* Check that the callers instruction balance is maintained during a call / push.
* Replicates PreAccount statistics in TransactionContext.
* Disable verify() and verify_and_update() if the feature enable_early_verification_of_account_modifications is enabled.
* Moves Option<Rent> of enable_early_verification_of_account_modifications into TransactionContext::new().
* Relaxes AccountDataMeter related test cases.
* Don't touch the account if nothing changes.
* Adds two tests to trigger InstructionError::UnbalancedInstruction.
Co-authored-by: Justin Starry <justin@solana.com>
* Minor refactoring of client RpcProgramAccountsConfig handling
* Enable explicit base58/base64 encoding of Memcmp filters, including client backward compatibility with nodes on old software
* Deprecate Memcmp::Encoding
* Remove deprecation warnings in rpc
* Remove deprecation warnings in cli
* Update docs
* Make variants self-documenting
* Add a new argument to stake cli to filter stakes by withdrawer
* some fix on compilation errors
* fixing rust format
* defining withdrawer in cli arguments
* changes after review.
* minor changes after review
https://github.com/solana-labs/solana/pull/25788
permanently disables durable transactions with legacy nonce versions
which are within chain blockhash domain.
This commit adds a new system instruction for a one-time idempotent
upgrade of legacy nonce accounts in order to bump them out of chain
blockhash domain.
https://github.com/solana-labs/solana/pull/25744
separated durable nonce and blockhash domains, which will stop double
execution going forward. However it is possible that a durable
transaction has *already* been executed once as a normal transaction and
it is now a valid durable transaction. #25744 cannot stop such
transactions to be re-executed until the nonce accounts are advanced.
This commit adds a new nonce version indicating that the nonce is moved
out of the blockhash domain, and permanently disables durable
transactions for legacy nonces which are in the blockhash domain.
* client: Remove static connection cache, plumb it instead
* Add TpuClient::new_with_connection_cache to not break downstream
* Refactor get_connection and RwLock into ConnectionCache
* Fix merge conflicts from new async TpuClient
* Remove `ConnectionCache::set_use_quic`
* Move DEFAULT_TPU_USE_QUIC to client, use ConnectionCache::default()
AdvanceNonceAccount instruction updates nonce to blockhash. This makes it
possible that a durable transaction is executed twice both as a normal
transaction and a nonce transaction if it uses blockhash (as opposed to nonce)
for its recent_blockhash field.
The commit prevents this double execution by separating nonce and blockhash
domains; when advancing nonce account, blockhash is hashed with a fixed string.
As a result a blockhash cannot be a valid nonce value; and if transaction was
once executed as a normal transaction it cannot be re-executed as a durable
transaction again and vice-versa.
* - get prioritization fee from compute_budget instruction;
- update compute_budget::process_instruction function to take instruction iter to support sanitized versioned message;
- updated runtime.md
* update transaction fee calculation for prioritization fee rate as lamports per 10K CUs
* review changes
* fix test
* fix a bpf test
* fix bpf test
* patch feedback
* fix clippy
* fix bpf test
* feedback
* rename prioritization fee rate to compute unit price
* feedback
Co-authored-by: Justin Starry <justin@solana.com>
* cli: Display feature activation epoch instead of slot
* cli: Always display feature statuses for specific queries
* cli: Add epoch column and show epoch for pending features
* cli: Remove epoch column and clarify statuses
* skip serializing bookkeeping fields
* Add activation slot to feature status table
* Fix `process_set_validator_info`
Add space for keys in calculation for rent exempt in
`process_set_validator_info`.
The space required for allocating the `(ConfigKeys, ValidatorInfo)`
tuple only considered space for `ValidatorInfo`.
But `config_instruction::create_account` also requires space for `n`
keys.
* Remove one clone call from closure
* Makes error handling in BorrowedAccount optional.
Adds BorrowedAccount ::get_rent_epoch().
Exposes InstructionContext::get_index_in_transaction().
Turns accounts and account_keys into pinned boxed slices.
* Introduces "unsafe" to InvokeContext::push().
* Turns &TransactionContext into &mut TransactionContext in InvokeContext.
* Push and pop InstructionContext in InvokeContext.
Makes test_process_cross_program and test_native_invoke symmetric.
Removes the borrow check from test_invoke_context_verify.
* Removes keyed_accounts from prepare_instruction()
* Removes usage of invoke_stack.
* Removes keyed_accounts from program-test.
* Removes caller_write_privileges.
* Removes keyed_accounts from BPF parameter (de-)serialization.
* Adds TransactionContext, InstructionContext and BorrowedAccount.
* Redirects the usage of accounts in InvokeContext through TransactionContext.
Also use the types declared in transaction_context.rs everywhere.
* Adjusts all affected tests.
This commit introduces the ability to dump the complete content of an
account to a JSON file (compact or not depending on the provided format
option).
Example:
```sh
solana account -u m \
--output json-compact \
--output-file SRM_token.json \
SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt
```
Note: Behavior remains untouched if format option `--output` is not
provided (only account data gets written to file).
- Adds feature reject_section_virtual_address_file_offset_mismatch.
- Adds feature start_verify_shift32_imm.
- Enables enable_symbol_and_section_labels only in the rbpf-cli.
* Adjust CLI rent command description and help to clarify account overhead already included
* Adjust rent sub command about message
* Adjust CLI message
* Adjust CLI rent command description and help to clarify account overhead already included
* Adjust rent sub command about message
We have too many ways of sending transactions, and too many
reimplementations of the same logic all over the place.
The program deploy logic and stake-o-matic currently make the
most use of the TPU client, so this merges their implementations into
one place to be reused by both. Yay for consolidation!
The parameter is now a required third argument. This is because authorized
withdrawer should never be the same as vote account keypair or validator
identity keypair for security reasons.
Added a --allow-unsafe-authorized-withdrawer to override this restriction if
necessary.
* Add deprecated tag to Bank::get_blockhash_last_valid_slot
* Update SendTransactionService to use last_valid_block_height
* Update solana-tokens to use last_valid_block_height
* Remove dangling file
* Update solana program to use last_valid_block_height
* Update Banks crates to use last_valid_block_height
* Auto-generate shell completions for solana-cli (issue #8879 and #14005)
Implement `completion` SubCommand for solana-cli, which outputs
completion script to stdout and exits the process. The script generation
handled completely by clap.
In order to implement the generation, one minor design change was
necessary regarding the creation of clap `App`.
Previously: One part of App initialization was in the `app` function,
and some other arguments and subcommands were added later directly in
the `main` function.
Now: The whole construction of App was moved to `get_clap_app` function.
P.S. I wasn't sure if constructing App separately had visual importance,
so both constructing parts are still separate in `base_clap_app` and
`final_clap_app` functions. But they sure could be in one single
function.
* Dereplicode match expr, fix clippy warning.
* Move clap App construction into separate module
Also join two parts of the construction into a single function
* Fix tests
* Apply rustfmt lints
* Refactor VoteAuthorize to use SignerIndex and support vote-authorize-*-checked
* Add checked bool const and use in command parsing
* Add create-stake-account-checked handling
* Add stake-set-lockup-checked handling
* Remove unnecessary mut
* Add stake-authorized-checked handling
* Moves syscall_registry into the rbpf Executable constructor.
* Adds the reject_unresolved_syscalls flag which is only set when deploying programs via the CLI.
* Upgrade Rust to 1.52.0
update nightly_version to newly pushed docker image
fix clippy lint errors
1.52 comes with grcov 0.8.0, include this version to script
* upgrade to Rust 1.52.1
* disabling Serum from downstream projects until it is upgraded to Rust 1.52.1