Commit Graph

4492 Commits

Author SHA1 Message Date
HaoranYi 258c920cf9
fix buffer size for updateable program buffer rent exempt fee calculation (#34781)
fix buffer size for updateable program buffer rent exempt fee
calculation

Co-authored-by: HaoranYi <haoran.yi@solana.com>
2024-01-16 09:04:56 -06:00
Tao Zhu 51eaa2b9cc
cleanup feature code after activation (#34695)
cleanup feature checking code
2024-01-12 14:28:50 -06:00
Andrew Fitzgerald be5337a839
earlier fee payer validation (#34666) 2024-01-12 08:22:39 -08:00
Tyera 4385ed11b1
Populate partitioned-rewards PDA during calculation (#34624)
* Add epoch_rewards_partition_data module

* Rename variable

* Pass hasher's parent_blockhash up to begin_partitioned_rewards

* Populate epoch rewards partition data account in begin_partitioned_rewards

* Fix method name
2024-01-11 23:15:55 -07:00
Tyera 8e2943604b
Use parent blockhash to seed EpochRewardsHasher (#34744)
* Use parent blockhash to seed rewards-partition hasher

* Make blockhash word more consistent
2024-01-11 11:21:11 -07:00
Brooks e9a6bb35e2
Removes remaining unused accounts data len bits (#34732) 2024-01-10 18:16:56 -05:00
HaoranYi 61e42cb390
Fix program buffer account rent-exempt lamport calculation (#34722)
fix program buffer size in minimul for rent exempt calculation

Co-authored-by: HaoranYi <haoran.yi@solana.com>
2024-01-10 11:32:51 -06:00
Tao Zhu 88f8d11da2
program-test consumes some units as native (#34714)
program-test consumes some units as native;
harden a unit test wrt if builtin consumes units;
2024-01-10 09:05:30 -06:00
Justin Starry 5f74fc4f16
Update genesis processing to have a fallback collector id for tests (#34135)
* Update genesis processing to have a fallback collector id for tests

* DCOU-ify the collector id for tests parameter (#1902)

* wrap test_collector_id in DCOU

* rename param to collector_id_for_tests

* fix program test

* fix dcou

---------

Co-authored-by: Brooks <brooks@prumo.org>
2024-01-10 08:34:41 +08:00
Brooks 642a7e0acb
Moves where the TransactionExecutionDetails::accounts_data_len_delta is interpreted (#34692) 2024-01-09 17:39:42 -05:00
Brooks 38494e5956
Removes unused Bank::accounts_data_size_limit() (#34700) 2024-01-09 12:46:57 -05:00
Brooks d3690ddfc3
Removes unnecessary feature activation when testing accounts data size (#34701) 2024-01-08 19:21:02 -05:00
Brooks 40e410341a
Removes cap-accounts-data-len bits when constructing a new Bank (#34688) 2024-01-08 17:24:27 -05:00
HaoranYi 5a3a10e847
Deprecate account meta executable read/update in bpf loaders (#34194)
* use PROGRAM_OWNER + program data for account executable

mock account data with executable_meta in precompiled program and update
test_bank_hash_consistency test

pr: return const slice and add comments

pr: use ReadableAccount

use const to get rid of magic number

add featuregate disable_bpf_loader_instructions to disable bpf loader management instructions, and deprecate_executable_meta_update_in_bpf_loader to deprecate executable flag update in bpf loader

deprecate usage of executable in Account

fix a test

fix sbp bench

fix sbf program tests

add feature gate to account and borrowed account apis

fix tests

more test fixes

* restore bpf_loader v2 tests

---------

Co-authored-by: HaoranYi <haoran.yi@solana.com>
2024-01-03 15:11:48 -06:00
Brooks de976be596
clippy: runtime lints (#34630)
```
warning: in a `match` scrutinee, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let`
   --> runtime/src/accounts/mod.rs:483:82
    |
483 |       let min_balance = match get_system_account_kind(payer_account).ok_or_else(|| {
    |  __________________________________________________________________________________^
484 | |         error_counters.invalid_account_for_fee += 1;
485 | |         TransactionError::InvalidAccountForFee
486 | |     })? {
    | |_____^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions
    = note: `#[warn(clippy::blocks_in_conditions)]` on by default

warning: this `let...else` may be rewritten with the `?` operator
    --> runtime/src/bank.rs:3093:21
     |
3093 | /                     let Some(vote_account) = get_vote_account(&vote_pubkey) else {
3094 | |                         return None;
3095 | |                     };
     | |______________________^ help: replace it with: `let vote_account = get_vote_account(&vote_pubkey)?;`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark
     = note: `#[warn(clippy::question_mark)]` on by default

warning: this `let...else` may be rewritten with the `?` operator
    --> runtime/src/bank.rs:4778:17
     |
4778 | /                 let Some((_, account)) = accounts.get(i) else {
4779 | |                     return None;
4780 | |                 };
     | |__________________^ help: replace it with: `let (_, account) = accounts.get(i)?;`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark

    Checking solana-bench-streamer v1.18.0 (/Users/brooks/src/solana/bench-streamer)
warning: `solana-runtime` (lib) generated 3 warnings
```
2024-01-03 14:16:25 +00:00
Brooks 58170cf9bf
clippy: Fixes blocks in conditions (#34600) 2023-12-28 12:17:23 -05:00
steviez 1f7c714acf
Allow bank hash file to contain details for multiple slots (#34516)
The initial implementation only allowed for outputting details for one
bank/slot. There are several usecases that could take advantage of the
file being able to contain details for multiple banks.

So, this PR adjusts the structure to contain details about multiple
banks. Note that using a basic diff will not work for comparing the old
format to this new format. Instead, a basic transform with jq will be
necessary to do so.
2023-12-27 12:37:11 -05:00
Brooks 6b76ec1de0
Uses Bank::new_for_tests() instead of new_for_tests_with_config() (#34587) 2023-12-26 12:54:14 -05:00
Justin Starry 88af74d1d0
refactor: optional `stake_history` arg is never `None` (#34556)
refactor: optional stake_history arg is never none
2023-12-22 10:44:28 +08:00
GoodDaisy 03386cc7b9
Fix typos (#34459)
* Fix typos

* Fix typos

* fix typo
2023-12-21 13:06:00 -07:00
HaoranYi 531d69fd10
pass feature_set to BorrowedAccount (#34542)
Co-authored-by: HaoranYi <haoran.yi@solana.com>
2023-12-21 20:03:17 +01:00
Brooks 3af306e072
Moves Bank tests-only ctors to DCOU (#34534) 2023-12-21 10:54:36 -05:00
Alexander Meißner 14446e55bf
Reword comment in `load_transaction_accounts()` (#34561)
Rewords the comment of simplify_writable_program_account_check in load_transaction_accounts().
2023-12-21 12:48:16 +01:00
Brooks d3cde6c6fd
Moves Bank benches-only ctors in DCOU (#34545) 2023-12-20 16:22:38 -05:00
Tao Zhu c722976a6f
clean up no longer needed feature_set in test (#34530) 2023-12-19 16:43:35 -06:00
Tao Zhu 4a8582eab4
cleanup feature code after activated everywhere (#34509) 2023-12-19 13:59:26 -06:00
Ryo Onodera d2b5afc410
Finish unified scheduler plumbing with min impl (#34300)
* Finalize unified scheduler plumbing with min impl

* Fix comment

* Rename leftover type name...

* Make logging text less ambiguous

* Make PhantomData simplyer without already used S

* Make TaskHandler stateless again

* Introduce HandlerContext to simplify TaskHandler

* Add comment for coexistence of Pool::{new,new_dyn}

* Fix grammar

* Remove confusing const for upcoming changes

* Demote InstalledScheduler::context() into dcou

* Delay drop of context up to return_to_pool()-ing

* Revert "Demote InstalledScheduler::context() into dcou"

This reverts commit 049a126c905df0ba8ad975c5cb1007ae90a21050.

* Revert "Delay drop of context up to return_to_pool()-ing"

This reverts commit 60b1bd2511a714690b0b2331e49bc3d0c72e3475.

* Make context handling really type-safe

* Update comment

* Fix grammar...

* Refine type aliases for boxed traits

* Swap the tuple order for readability & semantics

* Simplify PooledScheduler::result_with_timings type

* Restore .in_sequence()

* Use where for aesthetics

* Simplify if...

* Fix typo...

* Polish ::schedule_execution() a bit

* Fix rebase conflicts..

* Make test more readable

* Fix test failures after rebase...
2023-12-19 09:50:41 +09:00
Pankaj Garg 6f0133bd43
Improve cache eviction policy for LoadedPrograms (#34391)
* Use 2's random selection to evict program cache

* implement decaying of usage counter

* replace RwLock with AtomicU64

* address review comments

* remove -> swap_remove
2023-12-18 14:51:36 -08:00
Alexander Meißner 22bfcd92e0
Feature - Cooperative Program Loading (#34407)
* Disables verification-less reloading.

* Refactors LoadedPrograms::extract() to use a mutable parameter instead of returning the list of missing entries.

* Refactors LoadedPrograms::extract() to use a mutable parameter instead of returning a LoadedProgramsForTxBatch.

* Adds explicit SecondLevel structure to LoadedPrograms.

* Adds cooperative_loading_task.

* Implements cooperative loading in the bank.

* Fixes fork graph in tests.

* Adds LoadingTaskWaiter.

* Environment mismatch needs to just skip the entry.
2023-12-18 16:24:50 +01:00
Brooks 4181ea4677
Removes unnecessary AccountsDb::new_with_config_for_benches() (#34484) 2023-12-18 06:52:41 -05:00
Brooks cbe8a02029
Removes unnecessary AccountsDb::new_with_config_for_tests() (#34485) 2023-12-18 00:46:46 -05:00
Joe C 171c58c5c0
RPC: Add inner instructions to simulate transaction response (#34313)
* rpc: add optional `innerInstructions: bool` arg to `simulateTransaction`

* bank: enable cpi recording in simulate

* sdk: move `InnerInstructions` into SDK from accounts DB

* bank: return inner instructions from simulate tx

* rpc: return inner instructions from simulate tx

* rpc: simulate tx: add `jsonParsed` support for inner instructions

* accounts db: add deprecated attribute to re-exported inner instructions

* rpc: de-dupe inner instruction mapping

* update deprecated comment

Co-authored-by: Tyera <teulberg@gmail.com>

---------

Co-authored-by: Tyera <teulberg@gmail.com>
2023-12-16 12:49:22 +00:00
Tao Zhu 86c88d7ff6
Remove feature set from compute budget processor (#34472)
remove feature_set from compute_budget_processor
2023-12-15 15:01:02 -06:00
Tao Zhu f214a8220f
cleanup feature code after mainnet-beta activation (#34208)
* cleanup feature code after mainnet-beta activation
* rebase then cleanup references to activated feature
2023-12-15 13:14:51 -06:00
Brooks 45eaa4c1a6
Removes unnecessary Accounts constructors (#34471) 2023-12-14 22:50:15 -05:00
Brooks e79c09bdc4
Refactors Accounts constructors (#34466) 2023-12-14 16:36:47 -05:00
Tyera b0c54d3d61
Clean up prevent_rent_paying_rent_recipients feature (#34418)
Clean up Fab5 feature
2023-12-14 13:12:57 -07:00
Yihau Chen 5b1aa63184
remove unused imports (#34467) 2023-12-15 02:12:03 +08:00
Brooks d1cfd26abb
Refactors AccountsDb constructors (#34456) 2023-12-14 12:34:15 -05:00
Tao Zhu 69706be3d5
cleanup feature code after activated everywhere (#34359) 2023-12-14 11:26:33 -06:00
steviez ae6a4c0995
Only allow BankForks creation with single bank (#34449)
BankForks has two constructors; one that takes a single Bank (the root)
and one that can take an arbitrary number of Banks plus the root slot.
However, the constructor that accepts multiple banks is unnecessary; it
isn't used in production and is only used in several tests.

So, remove the multi-bank constructor and update unit tests.
2023-12-14 10:53:11 -06:00
Pankaj Garg 47dab26857
Set root slot/epoch in cache constructor (#34447) 2023-12-14 11:49:36 +01:00
steviez fe7970ce46
Remove redundant code from Bank::wrap_with_bank_forks_for_tests() (#34448)
The same initialization occurs when the Bank is inserted into a new
BankForks, so no need to duplicate the logic in this test function
2023-12-13 19:43:02 -06:00
Jon Cinque d36b211120
bank: Add errored compute units during simulation (#34450) 2023-12-14 01:35:55 +01:00
Brooks 0b6d939e21
Removes epoch_accounts_hash featurization (#34417) 2023-12-13 15:30:39 -05:00
Tao Zhu 2dfcdce630
cleanup feature code after mainnet-beta activation of DdLwVYuvDz26JohmgSbA7mjpJFgX5zP2dkp8qsF2C33V (#34089)
cleanup feature code after mainnet-beta activation
2023-12-13 13:07:51 -06:00
Tao Zhu 39f2866a10
cleanup feature code after mainnet-beta activation (#34289)
* cleanup feature code after mainnet-beta activation
* add comment for reserved enum
2023-12-12 18:06:49 -06:00
Brooks 79d0a47d78
Sets EpochAccountsHash to Valid in accounts bench (#34420)
Sets EAH to Valid in accounts bench
2023-12-12 20:48:15 +00:00
Lucas Steuernagel 4b762320cb
Remove WorkingSlot (#34342)
* Remove WorkingSlot
2023-12-11 16:02:53 -03:00
Brooks 61fa130175
Removes glob import of SnapshotKind (#34333) 2023-12-06 13:46:10 -05:00