Alexander Meißner
e9040d2766
Adds a missing check_number_of_instruction_accounts() in StakeInstruction::Authorize. ( #23672 )
2022-03-15 15:53:11 +01:00
Alexander Meißner
e60c9b97c9
Removes `KeyedAccount` from tests in stake instruction. (Part 1) ( #23473 )
...
* Migrates test_stake_delegate().
* Migrates test_stake_initialize().
* Migrates test_initialize_incorrect_account_sizes().
* Migrates test_authorize().
* Migrates test_authorize_lockup().
* Migrates test_authorize_override().
* Migrates test_authorize_with_seed().
* Migrates test_split().
* Migrates test_split_fake_stake_dest().
* Migrates test_deactivate().
* Migrates test_set_lockup().
* Migrates test_optional_lockup_for_stake_program().
* Migrates test_withdraw_stake().
* Migrates test_withdraw_stake_invalid_state().
* Migrates test_withdraw_stake_before_warmup().
* Migrates test_withdraw_lockup().
* Migrates test_withdraw_identical_authorities().
* Migrates test_withdraw_rent_exempt().
* Migrates test_authorize_delegated_stake().
* Migrates test_redelegate_consider_balance_changes().
2022-03-09 23:48:10 +01:00
Brooks Prumo
79a515e88e
Add tests for split() from Uninitialized account where dest=source ( #23442 )
2022-03-02 18:32:15 -06:00
Brooks Prumo
e87b941a51
Test stake split: destination delegation is at least the minimum ( #23456 )
2022-03-02 17:29:40 -06:00
Alexander Meißner
ee3fc39f1c
Refactor: Prepare stake_instruction.rs to remove `KeyedAccount`s ( #23375 )
...
* Adds instruction_account_indices to stake instruction.
* Uses instruction_account_indices in stake instruction.
* Replaces get_sysvar_with_account_check by get_sysvar_with_account_check2 in stake instruction.
* Adds check_number_of_instruction_accounts().
2022-02-28 16:24:40 +01:00
Alexander Meißner
569d531573
Code cleanup: In vote and stake processor ( #23353 )
...
* Enable benchmarks of vote processor.
* Inlines from_keyed_account() in stake instruction.
2022-02-25 21:05:05 +01:00
Brooks Prumo
fcaf01e243
Add test to check destination for stake splitting ( #23303 )
2022-02-23 22:47:57 -06:00
Brooks Prumo
ac70070e5b
Add MINIMUM_STAKE_DELEGATION constant ( #23259 )
...
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2022-02-22 09:21:23 -06:00
Alexander Meißner
c16cf9cf8a
Refactor: Use `SysvarCache` in all builtin programs ( #22864 )
...
* Replaces from_keyed_account() by SysvarCache in stake instruction.
* Replaces from_keyed_account() by SysvarCache in system instruction processor.
* Removes from_keyed_account().
Moves check_sysvar_keyed_account() into sysvar_cache.rs
* Removes tests which test for incorrectly serialized sysvars.
2022-02-03 13:03:50 +01:00
Ryo Onodera
545c97f903
Clean up before credits_auto_rewind ( #22839 )
...
* Clean up before credits_auto_rewind
* Use `=` intead of `|=` for mutable bool
2022-02-01 22:42:02 +09:00
Alexander Meißner
bc800a8d5a
Refactor: Unify `SysvarCache` ( #22843 )
...
* Unifies SysvarCache filling in the runtime and tests.
Removes new_mock_with_sysvars_and_features()
Removes mock_process_instruction_with_sysvars().
Replaces from_keyed_account() by SysvarCache in vote processor.
* Replaces from_keyed_account() by SysvarCache in BPF loader.
2022-01-31 17:53:50 +01:00
Brooks Prumo
3993cd765c
Remove rewrite_rent_exempt_reserve() ( #22741 )
2022-01-26 18:42:44 -05:00
Brooks Prumo
a7f2fff219
Remove active features stake program v3 and v4 ( #22612 )
...
Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
2022-01-21 19:27:53 -06:00
Alexander Meißner
b448472037
Refactor: Move `InstructionRecorder` into `TransactionContext` ( #22578 )
...
* Moves InstructionRecorder into TransactionContext.
* Adds assertions for number_of_instructions_at_transaction_level.
2022-01-19 22:40:09 +01:00
Justin Starry
2370e61431
Perf: Store deserialized sysvars in the sysvars cache ( #22455 )
...
* Perf: Store deserialized sysvars in sysvars cache
* add bench
2022-01-13 05:36:21 +00:00
Justin Starry
7171c95bdd
Refactor: move sysvar cache to new module
2022-01-12 12:35:28 -07:00
Alexander Meißner
73e6038986
Refactor: Remove `KeyedAccount` from program runtime ( #22226 )
...
* 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.
2022-01-03 23:30:56 +01:00
Alexander Meißner
a06646631c
Feature: TransactionContext, InstructionContext and BorrowedAccount ( #21706 )
...
* 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.
2021-12-27 18:49:32 +01:00
Alexander Meißner
66fa8f9667
Refactor: Removes `Rc` from `Refcell<AccountSharedData>` in the program-runtime ( #21927 )
...
* Removes Rc from Rc<RefCell<AccountSharedData>> in the program-runtime.
* Adjusts tests in bpf_loader, system_instruction_processor, config_processor, vote_instruction and stake_instruction
2021-12-17 14:01:12 +01:00
Alexander Meißner
1df88837c8
- Implicitly fixes invoke_context.return_data not being reset between instructions in process_message. ( #21671 )
...
- Lets InvokeContext::process_cross_program_instruction() handle the first invocation depth too.
- Marks InvokeContext::verify(), InvokeContext::verify_and_update() and InvokeContext::process_executable_chain() private.
- Renames InvokeContext::process_cross_program_instruction() to InvokeContext::process_instruction().
- Removes InvokeContext::new_mock_with_sysvars().
2021-12-07 23:00:04 +01:00
Justin Starry
1430b58a6d
Remove deprecated slow epoch boundary methods ( #21568 )
2021-12-03 17:59:10 +00:00
Michael Vines
b8837c04ec
Reformat imports to a consistent style for imports
...
rustfmt.toml configuration:
imports_granularity = "One"
group_imports = "One"
2021-12-03 09:19:13 -08:00
Alexander Meißner
a9d5ef2055
Cleanup: InvokeContext accessors ( #21574 )
...
* Removes blockhash accessors from InvokeContext.
* Removes lamports_per_signature accessors from InvokeContext.
* Removes return_data accessors from InvokeContext.
* Removes feature_set accessor from InvokeContext.
* Removes instruction_recorders and instruction_index accessors from InvokeContext.
* Moves get_sysvars() into InvokeContext.
* Removes compute_meter parameter from InvokeContext::new().
* Removes InvokeContext::new_mock_with_sysvars_and_features().
* Removes InvokeContext::update_timing().
2021-12-03 12:15:22 +01:00
Alexander Meißner
bfdb775ffc
Unifies ThisInvokeContext and dyn trait InvokeContext. ( #21563 )
2021-12-02 18:47:16 +01:00
Brooks Prumo
cb368e6554
Pass Epoch by value in StakeHistory::get() ( #21523 )
2021-12-01 08:57:29 -06:00
Ikko Ashimine
d12dfc1918
Refactor: Fix typo in stake_state.rs ( #21343 )
...
initalize -> initialize
2021-11-18 09:58:56 -07:00
Alexander Meißner
e540b1cf3c
Refactor: Move sdk::process_instruction in program-runtime-crate ( #21180 )
...
* Moves the Executor dyn Trait to instruction_processor.rs
* Moves the Logger dyn Trait as well as the ic_msg and ic_logger_msg macros to log_collector.rs,
and moves the stable_log to stable_log.rs
* Moves the ComputeMeter dyn Trait to invoke_context.rs
* Moves the InvokeContext dyn Trait and the ProcessInstructionWithContext type to invoke_context.rs
* Updates cargo files.
* Re-export InvokeContext in program-test
Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
2021-11-17 19:35:07 +01:00
Alexander Meißner
7200c5106e
Replaces MockInvokeContext by ThisInvokeContext in tests ( #20881 )
...
* Replaces MockInvokeContext by ThisInvokeContext in BpfLoader, SystemInstructionProcessor, CLIs, ConfigProcessor, StakeProcessor and VoteProcessor.
* Finally, removes MockInvokeContext, MockComputeMeter and MockLogger.
* Adjusts assert_instruction_count test.
* Moves ThisInvokeContext to the program-runtime crate.
2021-11-04 21:47:32 +01:00
Alexander Meißner
29ad081555
Stop caching sysvars, instead load them ahead of time. ( #21108 )
2021-11-04 09:48:34 +01:00
Alexander Meißner
97c2732d02
Refactor: Cleanup InvokeContext ( #20785 )
...
* Move blockhash and fee_calculator in ThisInvokeContext instead of using a reference.
* Moves tx_wide_compute_cap into InvokeContext::push().
* Adds ThisInvokeContext::new_mock() constructor.
* Adds missing loader account in uses of MockInvokeContext.
* Use keyed_account_at_index() when accessing keyed_accounts.
* Makes sysvar interface consistent between ThisInvokeContext and MockInvokeContext,
in order to add InvokeContext::get_sysvars().
* Adds InvokeContext::set_blockhash() and InvokeContext ::set_fee_calculator().
* Adds new_mock_with_features.
* Makes ancestors optional in ThisInvokeContext.
* Adds prepare_mock_invoke_context() and mock_process_instruction().
2021-10-21 20:57:42 +02:00
Alexander Meißner
f30f3bddbb
Refactor: Remove program_id from process_instruction() ( #20540 )
...
* Replaces usage of program_id parameter by invoke_context.get_caller()?.
* Removes "pubkey: &Pubkey" parameter from "process_instruction()".
2021-10-10 22:29:18 +02:00
Alexander Meißner
4e65487d2f
Refactor: process_instruction() ( #20448 )
...
* Adds first_instruction_account parameter to process_instruction().
* Removes InvokeContext::remove_first_keyed_account() from all BPF loaders.
* Removes InvokeContext::remove_first_keyed_account() from all builtin programs.
* Removes InvokeContext::remove_first_keyed_account() from all mock ups.
* Deprecates InvokeContext::remove_first_keyed_account().
* Documents index base of keyed_account_at_index().
* Adds dynamic offset to call sites of "keyed_account_at_index()".
2021-10-08 11:41:07 +02:00
Justin Starry
129716f3f0
Optimize stakes cache and rewards at epoch boundaries ( #20432 )
...
* Optimize stakes cache and rewards at epoch boundaries
* Fetch from accounts db
* Add cli flag for disabling epoch boundary optimization
2021-10-06 00:53:26 -04:00
Justin Starry
250a8503fe
Make rewards tracer async friendly ( #20452 )
2021-10-05 21:30:08 -04:00
Justin Starry
0ddb34a0b4
Add struct and convenience methods to track stake activation status ( #20392 )
...
* Add struct and convenience methods to track stake activation status
* fix nits
* rename
2021-10-04 18:59:11 -04:00
Jon Cinque
2c3bdedea3
stake: Advance `credits_observed` on activation epoch ( #19309 )
...
* stake: Advance `credits_observed` on activation epoch
* Add test for merging stakes just after activation
2021-09-03 23:20:56 +02:00
Jack May
5cf8d8795b
Feature cleanup ( #19528 )
2021-08-31 14:51:26 -07:00
Jon Cinque
73aa004c59
stake: Remove v2 program references ( #19308 )
...
* stake: Remove v2 program references
* Remove stake v2 feature, along with stake rewrite
2021-08-20 01:08:44 -04:00
Jon Cinque
2b33c0c165
stake: Allow stakes with unmatched credits observed to merge ( #18985 )
...
* stake: Allow stakes with unmatched credits observed to merge
* Address feedback
* Remove branch by doing a ceiling in one calc
2021-08-04 10:43:34 -04:00
Michael Vines
4098af3b5b
Record vote account commission with voting/staking rewards and surface in RPC
2021-07-12 15:09:44 -07:00
Tyera Eulberg
74e89a3e3e
Add Stake checked tests
2021-07-06 21:53:18 +00:00
Tyera Eulberg
544f62c92f
Fix set-lockup custodian index
2021-07-06 21:53:18 +00:00
Michael Vines
ee219ffa47
Add vote/stake checked instructions
2021-07-06 21:53:18 +00:00
Alexander Meißner
6514096a67
chore: cargo +nightly clippy --fix -Z unstable-options
2021-06-18 10:42:46 -07:00
Michael Vines
810fce1f3d
Fix build issues downstream due to stake state shuffle
2021-06-17 23:59:05 -07:00
Michael Vines
db37680f6f
Add extra authorized withdrawer test
2021-06-16 18:26:25 -07:00
Jon Cinque
1b1d34da59
Refactor stake program into solana_program ( #17906 )
...
* Move stake state / instructions into solana_program
* Update account-decoder
* Update cli and runtime
* Update all other parts
* Commit Cargo.lock changes in programs/bpf
* Update cli stake instruction import
* Allow integer arithmetic
* Update ABI digest
* Bump rust mem instruction count
* Remove useless structs
* Move stake::id() -> stake::program::id()
* Re-export from solana_sdk and mark deprecated
* Address feedback
* Run cargo fmt
2021-06-15 18:04:00 +02:00
Jon Cinque
8f5e773caf
system-program: Remove zero lamport check on transfers ( #17726 )
...
* system-program: Move lamports == 0 check on transfers
* Address feedback
* Update stake split to explicitly allocate + assign
* Update stake tests referring to split instruction
* Revert whitespace
* Update split instruction index in test
* Remove unnecessary `assign_with_seed` from `split_with_seed`
* Fix stake instruction parser
* Update test to allow splitting into account with lamports
2021-06-06 01:45:45 +02:00
Michael Vines
2896fc3987
Make `initialize` public ( #17605 )
2021-05-31 00:14:50 -07:00
Michael Vines
96cde36784
SetLockup now requires the authorized withdrawer when the lockup is not in force
2021-05-21 11:49:01 -07:00
Trent Nelson
019bccab51
stake: merge accounts with mismatched, but expired lockups
2021-05-21 10:50:27 -06:00
Trent Nelson
74ac6ab80f
stake: plumb `can_merge_expired_lockups` feature flag
2021-05-21 10:50:27 -06:00
jon-chuang
662c2aaeec
programs/stake: cancel deactivate ( #17344 )
...
fix: remove stray println
add error for inconsistent input.
fix: lamports don't need to match when redelegating to same vote account
Improve comments
bump
Apply suggestions from code review
Add assert in test
Use stake_program_v4
Co-Authored-By: Trent Nelson <trent.a.b.nelson@gmail.com>
Co-authored-by: Trent Nelson <trent.a.b.nelson@gmail.com>
2021-05-21 05:31:55 +00:00
Tyera Eulberg
91f2b6185e
Prevent withrawing Initialized stake account to zero stake ( #17366 )
2021-05-21 02:01:08 +00:00
Tao Zhu
0781fe1b4f
Upgrade Rust to 1.52.0 ( #17096 )
...
* 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
2021-05-19 09:31:47 -05:00
Jeff Washington (jwash)
541aa5ad85
tests: lamports -> lamports() ( #16982 )
2021-05-03 10:45:54 -05:00
Jeff Washington (jwash)
763c04adf3
lamports = -> .set_lamports() ( #16980 )
2021-04-30 21:17:05 +00:00
Jeff Washington (jwash)
5e74cede4e
lamports -> lamports() ( #16979 )
2021-04-30 21:03:08 +00:00
Jeff Washington (jwash)
6f88aeac56
tests: .lamports= -> .set_lamports() ( #16977 )
...
* .lamports= -> .set_lamports()
* another
* fix
* another
2021-04-30 18:44:15 +00:00
Jeff Washington (jwash)
0af84bb91e
lamports= -> .set_lamports() ( #16978 )
2021-04-30 18:20:54 +00:00
Jeff Washington (jwash)
c9c94a7ef2
checked_sub_lamports ( #16923 )
2021-04-29 12:38:21 -05:00
Jeff Washington (jwash)
ca7b36ad8f
lamports -> lamports() ( #16920 )
2021-04-29 10:44:46 -05:00
Jeff Washington (jwash)
a7070a5ca7
set_lamports() ( #16921 )
2021-04-28 21:30:06 +00:00
Jeff Washington (jwash)
4e7e675c07
lamports += -> checked_add_lamports ( #16791 )
2021-04-27 09:11:35 -05:00
Jeff Washington (jwash)
fb0b76c1f3
account.owner = X -> account.set_owner(X) ( #16754 )
2021-04-23 12:34:22 -05:00
Alexander Meißner
9dfcb921cf
Refactoring: Move KeyedAccounts to InvokeContext ( #15410 )
...
Collects all parametric occurrences and the construction of keyed_accounts and puts them into InvokeContext.
2021-04-19 18:48:48 +02:00
Michael Vines
a911ae00ba
clippy
2021-04-18 20:55:02 -07:00
Ryo Onodera
6d5c6c17c5
Simplify account.rent_epoch handling for sysvar rent ( #16049 )
...
* Add some code for special local testing
* Add comment to store_account_and_update_capitalization
* Simplify account.rent_epoch handling for sysvar rent
* Introduce *_for_test functions
* Add deprecation messages to existing api
2021-03-25 15:23:20 +09:00
Jeff Washington (jwash)
952c3bcbb7
AccountSharedData construction ( #15790 )
2021-03-11 18:09:04 -06:00
Jeff Washington (jwash)
52e54e1100
account.data -> data() ( #15778 )
2021-03-09 22:31:33 +00:00
Jeff Washington (jwash)
8a3135d17b
Account->AccountSharedData ( #15691 )
2021-03-09 15:06:07 -06:00
Jack May
b53cb8eb2d
Deprecate Instruction::new ( #15695 )
2021-03-04 05:46:48 +00:00
sakridge
8399851d11
check program owners ( #15495 )
...
* check program owners
* BankSlotDelta should change because InstructionError variant added
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2021-02-26 22:21:34 +00:00
Jon Cinque
ebd43938a7
docs: Update stake merging documentation ( #15489 )
...
* Update stake merging documentation
* Integrate review feedback
* Integrate review feedback in comment too
2021-02-25 17:24:39 +01:00
Trent Nelson
7f7370c306
Re-allow clippy::integer_arithmetic at crate-level
2021-02-17 13:55:08 -07:00
Jon Cinque
3ac7e09de6
docs: Remove references to "create_address_with_seed" ( #15339 )
2021-02-17 14:25:02 +01:00
Tyera Eulberg
51c27dcc1c
Clean & check stake ( #15363 )
...
* Add failing test
* Fix test
* Clean up redendant if case
* Demonstrate withdrawal boundaries
* Update test to fail on conditions that should be acceptable
* Fix test
* Add test for larger stake source
* Mirror changes for undelegated accounts
* Extra stake checks
* Split accounts must be the right size
Co-authored-by: Stephen Akridge <sakridge@gmail.com>
2021-02-17 03:42:46 +00:00
Tyera Eulberg
7e17a0d3bb
Move fn to sdk
2021-02-16 19:25:00 -08:00
Trent Nelson
ae82b5ebfd
stake: add lamports overflow test for withdraw
2021-02-15 11:09:51 -07:00
sakridge
08f94a2bd2
Stake program update ( #15307 )
2021-02-12 17:24:43 -08:00
Ryo Onodera
4e99aa5fa6
More failure codepath tracing ( #15246 )
2021-02-12 15:24:23 +09:00
Michael Vines
dc7041ba07
Require lockup authority to change withdraw authority on locked stake ( #14861 )
2021-02-05 22:40:07 -08:00
Michael Vines
ff22091a98
Add StakeInstruction::Merge logging
2021-01-26 11:52:39 -08:00
Michael Vines
119e2c75dd
cli now supports a custodian for stake authorize operations
2021-01-26 11:48:28 -08:00
Michael Vines
8359f4f5ff
Include Clock sysvar in AuthorizeWithSeed instruction
2021-01-25 19:38:10 -08:00
Michael Vines
2b50433099
Remove legacy_stake program
2021-01-25 19:34:40 -08:00
Trent Nelson
50710473a8
Deinitialize stake data upon zero balance
2020-12-22 19:37:26 -07:00
Trent Nelson
5b903318b2
vote: Add helper for creating current-versioned states
2020-12-22 19:37:26 -07:00
Tyera Eulberg
7042f11791
Feature-gate stake-program-v3 ( #14232 )
...
* Remove deprecated legacy stake program
* Add legacy stake program
* Strip out duplicative legacy code
* Feature-deploy stake-program-v3
* Add ownership check in stake processor
2020-12-22 11:20:38 -07:00
Michael Vines
7143aaa89b
Clippy
2020-12-14 08:03:29 -08:00
Ryo Onodera
e81c2c826c
Don't reset credits_observed due to stale voters ( #13836 )
...
* Don't reset credits_observed due to stale voters
* Add tests
* Fix comment
2020-11-30 22:47:34 +09:00
Ryo Onodera
6048342c57
Enhance ledger-tool for multi-epoch rewards ( #13837 )
...
* Support ledger-tool for multi-epoch rewards
* nits
* Ensure not to skip some records in csv
2020-11-27 04:20:47 +00:00
Ryo Onodera
42421e77a9
Add stake calculation tests with inflation/slashing ( #13605 )
...
* Add stake calculation tests with inflation/slashing
* Clean up the test
2020-11-25 12:49:35 +09:00
Tyera Eulberg
e3a92d6905
Prevent splitting when either source or split stake will equal zero ( #13775 )
2020-11-24 02:48:56 +00:00
Trent Nelson
488ce982f0
stake: Disallow stakes merging with themselves
2020-11-23 14:32:02 -07:00
Trent Nelson
6b9a019c0a
stake: Remove disused test helper function
2020-11-23 14:32:02 -07:00
Trent Nelson
8e73187990
stake: Allow compatible, fully-active stake accounts to be merged
2020-11-23 14:32:02 -07:00
Trent Nelson
bb2772d068
stake: Cosmetic - rename variable
2020-11-23 14:32:02 -07:00
Trent Nelson
dc7f89715a
stake: De-replicode mergable info extraction
2020-11-23 14:32:02 -07:00
Tyera Eulberg
38a3ed96bb
Fail stake init if account data is the wrong size ( #13767 )
2020-11-23 20:13:38 +00:00