Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 21 additions & 2 deletions account-decoder/src/parse_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,29 @@ pub struct UiConfig<T> {
#[cfg(test)]
mod test {
use {
super::*, crate::validator_info::ValidatorInfo, serde_json::json,
solana_account::ReadableAccount, solana_config_program::create_config_account,
super::*,
crate::validator_info::ValidatorInfo,
bincode::serialize,
serde_json::json,
solana_account::{Account, AccountSharedData, ReadableAccount},
solana_config_program::ConfigKeys,
};

fn create_config_account<T: serde::Serialize>(
keys: Vec<(Pubkey, bool)>,
config_data: &T,
lamports: u64,
) -> AccountSharedData {
let mut data = serialize(&ConfigKeys { keys }).unwrap();
data.extend_from_slice(&serialize(config_data).unwrap());
AccountSharedData::from(Account {
lamports,
data,
owner: solana_sdk_ids::config::id(),
..Account::default()
})
}

#[test]
fn test_parse_config() {
let stake_config = StakeConfig {
Expand Down
1 change: 0 additions & 1 deletion builtins-default-costs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ log = { workspace = true }
solana-address-lookup-table-program = { workspace = true }
solana-bpf-loader-program = { workspace = true }
solana-compute-budget-program = { workspace = true }
solana-config-program = { workspace = true }
solana-frozen-abi = { workspace = true, optional = true, features = [
"frozen-abi",
] }
Expand Down
29 changes: 3 additions & 26 deletions builtins-default-costs/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ use {
solana_pubkey::Pubkey,
solana_sdk_ids::{
address_lookup_table, bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable,
compute_budget, config, ed25519_program, loader_v4, secp256k1_program, stake,
system_program, vote,
compute_budget, ed25519_program, loader_v4, secp256k1_program, stake, system_program, vote,
},
};

Expand Down Expand Up @@ -102,7 +101,7 @@ lazy_static! {
/// correctly furnishing `core_bpf_migration_feature`.
///
#[allow(dead_code)]
const TOTAL_COUNT_BUILTINS: usize = 12;
const TOTAL_COUNT_BUILTINS: usize = 11;
#[cfg(test)]
static_assertions::const_assert_eq!(
MIGRATING_BUILTINS_COSTS.len() + NON_MIGRATING_BUILTINS_COSTS.len(),
Expand All @@ -118,21 +117,13 @@ pub const MIGRATING_BUILTINS_COSTS: &[(Pubkey, BuiltinCost)] = &[
position: 0,
}),
),
(
config::id(),
BuiltinCost::Migrating(MigratingBuiltinCost {
native_cost: solana_config_program::config_processor::DEFAULT_COMPUTE_UNITS,
core_bpf_migration_feature: feature_set::migrate_config_program_to_core_bpf::id(),
position: 1,
}),
),
(
address_lookup_table::id(),
BuiltinCost::Migrating(MigratingBuiltinCost {
native_cost: solana_address_lookup_table_program::processor::DEFAULT_COMPUTE_UNITS,
core_bpf_migration_feature:
feature_set::migrate_address_lookup_table_program_to_core_bpf::id(),
position: 2,
position: 1,
}),
),
];
Expand Down Expand Up @@ -340,20 +331,6 @@ mod test {
get_migration_feature_id(feature_index),
&feature_set::migrate_stake_program_to_core_bpf::id()
);
let feature_index = get_builtin_migration_feature_index(&config::id());
assert!(matches!(
feature_index,
BuiltinMigrationFeatureIndex::BuiltinWithMigrationFeature(_)
));
let BuiltinMigrationFeatureIndex::BuiltinWithMigrationFeature(feature_index) =
feature_index
else {
panic!("expect migrating builtin")
};
assert_eq!(
get_migration_feature_id(feature_index),
&feature_set::migrate_config_program_to_core_bpf::id()
);
let feature_index = get_builtin_migration_feature_index(&address_lookup_table::id());
assert!(matches!(
feature_index,
Expand Down
1 change: 0 additions & 1 deletion builtins/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ agave-feature-set = { workspace = true }
solana-address-lookup-table-program = { workspace = true }
solana-bpf-loader-program = { workspace = true }
solana-compute-budget-program = { workspace = true }
solana-config-program = { workspace = true }
solana-loader-v4-program = { workspace = true }
solana-program-runtime = { workspace = true }
solana-pubkey = { workspace = true }
Expand Down
32 changes: 7 additions & 25 deletions builtins/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,19 +77,6 @@ pub static BUILTINS: &[BuiltinPrototype] = &[
program_id: solana_stake_program::id(),
entrypoint: solana_stake_program::stake_instruction::Entrypoint::vm,
},
BuiltinPrototype {
core_bpf_migration_config: Some(CoreBpfMigrationConfig {
source_buffer_address: buffer_accounts::config_program::id(),
upgrade_authority_address: None,
feature_id: agave_feature_set::migrate_config_program_to_core_bpf::id(),
migration_target: CoreBpfMigrationTargetType::Builtin,
datapoint_name: "migrate_builtin_to_core_bpf_config_program",
}),
name: "config_program",
enable_feature_id: None,
program_id: solana_config_program::id(),
entrypoint: solana_config_program::config_processor::Entrypoint::vm,
},
testable_prototype!(BuiltinPrototype {
core_bpf_migration_config: None,
name: solana_bpf_loader_deprecated_program,
Expand Down Expand Up @@ -161,9 +148,6 @@ mod buffer_accounts {
pub mod address_lookup_table_program {
solana_pubkey::declare_id!("AhXWrD9BBUYcKjtpA3zuiiZG4ysbo6C6wjHo1QhERk6A");
}
pub mod config_program {
solana_pubkey::declare_id!("BuafH9fBv62u6XjzrzS4ZjAE8963ejqF5rt1f8Uga4Q3");
}
pub mod stake_program {
solana_pubkey::declare_id!("8t3vv6v99tQA6Gp7fVdsBH66hQMaswH5qsJVqJqo8xvG");
}
Expand Down Expand Up @@ -368,36 +352,34 @@ mod tests {
);
// Stake has a live migration config, so it has no test-only configs
// to test here.
// Config has a live migration config, so it has no test-only configs
// to test here.
assert_eq!(
&super::BUILTINS[4].core_bpf_migration_config,
&super::BUILTINS[3].core_bpf_migration_config,
&Some(super::test_only::solana_bpf_loader_deprecated_program::CONFIG)
);
assert_eq!(
&super::BUILTINS[5].core_bpf_migration_config,
&super::BUILTINS[4].core_bpf_migration_config,
&Some(super::test_only::solana_bpf_loader_program::CONFIG)
);
assert_eq!(
&super::BUILTINS[6].core_bpf_migration_config,
&super::BUILTINS[5].core_bpf_migration_config,
&Some(super::test_only::solana_bpf_loader_upgradeable_program::CONFIG)
);
assert_eq!(
&super::BUILTINS[7].core_bpf_migration_config,
&super::BUILTINS[6].core_bpf_migration_config,
&Some(super::test_only::compute_budget_program::CONFIG)
);
// Address Lookup Table has a live migration config, so it has no
// test-only configs to test here.
assert_eq!(
&super::BUILTINS[9].core_bpf_migration_config,
&super::BUILTINS[8].core_bpf_migration_config,
&Some(super::test_only::zk_token_proof_program::CONFIG)
);
assert_eq!(
&super::BUILTINS[10].core_bpf_migration_config,
&super::BUILTINS[9].core_bpf_migration_config,
&Some(super::test_only::loader_v4::CONFIG)
);
assert_eq!(
&super::BUILTINS[11].core_bpf_migration_config,
&super::BUILTINS[10].core_bpf_migration_config,
&Some(super::test_only::zk_elgamal_proof_program::CONFIG)
);
}
Expand Down
2 changes: 1 addition & 1 deletion cli/src/validator_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ pub fn process_set_validator_info(
(config.signers[0].pubkey(), true),
];
let data_len = ValidatorInfo::max_space()
.checked_add(ConfigKeys::serialized_size(keys.clone()))
.checked_add(serialized_size(&ConfigKeys { keys: keys.clone() }).unwrap())
.expect("ValidatorInfo and two keys fit into a u64");
let lamports = rpc_client.get_minimum_balance_for_rent_exemption(data_len as usize)?;

Expand Down
1 change: 0 additions & 1 deletion local-cluster/tests/local_cluster.rs
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,6 @@ fn test_mainnet_beta_cluster_type() {

// Programs that are available at epoch 0
for program_id in [
&solana_config_program::id(),
&solana_sdk::system_program::id(),
&solana_sdk::stake::program::id(),
&solana_vote_program::id(),
Expand Down
3 changes: 2 additions & 1 deletion programs/config/src/config_instruction.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use {
crate::{id, ConfigKeys, ConfigState},
bincode::serialized_size,
solana_instruction::{AccountMeta, Instruction},
solana_pubkey::Pubkey,
solana_system_interface::instruction as system_instruction,
Expand All @@ -18,7 +19,7 @@ pub fn create_account<T: ConfigState>(
lamports: u64,
keys: Vec<(Pubkey, bool)>,
) -> Vec<Instruction> {
let space = T::max_space() + ConfigKeys::serialized_size(keys);
let space = T::max_space() + serialized_size(&ConfigKeys { keys }).unwrap();
vec![
system_instruction::create_account(
from_account_pubkey,
Expand Down
2 changes: 0 additions & 2 deletions programs/sbf/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 20 additions & 3 deletions programs/stake/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,30 @@
)]
pub use solana_stake_interface::config::*;
use {
bincode::deserialize,
solana_account::{AccountSharedData, ReadableAccount, WritableAccount},
solana_config_program::{create_config_account, get_config_data},
bincode::{deserialize, serialize},
solana_account::{Account, AccountSharedData, ReadableAccount, WritableAccount},
solana_config_program::{get_config_data, ConfigKeys},
solana_genesis_config::GenesisConfig,
solana_pubkey::Pubkey,
solana_transaction_context::BorrowedAccount,
};

#[allow(deprecated)]
fn create_config_account(
keys: Vec<(Pubkey, bool)>,
config_data: &Config,
lamports: u64,
) -> AccountSharedData {
let mut data = serialize(&ConfigKeys { keys }).unwrap();
data.extend_from_slice(&serialize(config_data).unwrap());
AccountSharedData::from(Account {
lamports,
data,
owner: solana_sdk_ids::config::id(),
..Account::default()
})
}

#[allow(deprecated)]
pub fn from(account: &BorrowedAccount) -> Option<Config> {
get_config_data(account.get_data())
Expand Down
7 changes: 3 additions & 4 deletions runtime/src/bank/builtin_programs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,9 @@ mod tests_core_bpf_migration {
#[test_case(TestPrototype::Builtin(&BUILTINS[0]); "system")]
#[test_case(TestPrototype::Builtin(&BUILTINS[1]); "vote")]
#[test_case(TestPrototype::Builtin(&BUILTINS[2]); "stake")]
#[test_case(TestPrototype::Builtin(&BUILTINS[3]); "config")]
#[test_case(TestPrototype::Builtin(&BUILTINS[4]); "bpf_loader_deprecated")]
#[test_case(TestPrototype::Builtin(&BUILTINS[5]); "bpf_loader")]
#[test_case(TestPrototype::Builtin(&BUILTINS[8]); "address_lookup_table")]
#[test_case(TestPrototype::Builtin(&BUILTINS[3]); "bpf_loader_deprecated")]
#[test_case(TestPrototype::Builtin(&BUILTINS[4]); "bpf_loader")]
#[test_case(TestPrototype::Builtin(&BUILTINS[7]); "address_lookup_table")]
fn test_core_bpf_migration(prototype: TestPrototype) {
let (mut genesis_config, mint_keypair) =
create_genesis_config(1_000_000 * LAMPORTS_PER_SOL);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ mod tests {
#[test_case(solana_sdk::bpf_loader_deprecated::id(), None)]
#[test_case(solana_sdk::bpf_loader_upgradeable::id(), None)]
#[test_case(solana_sdk::compute_budget::id(), None)]
#[test_case(solana_config_program::id(), None)]
#[test_case(solana_stake_program::id(), None)]
#[test_case(solana_system_program::id(), None)]
#[test_case(solana_vote_program::id(), None)]
Expand Down
10 changes: 5 additions & 5 deletions runtime/src/bank/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6516,26 +6516,26 @@ fn test_bank_hash_consistency() {
if bank.slot == 0 {
assert_eq!(
bank.hash().to_string(),
"Hn2FoJuoFWXVFVnwcQ6peuT24mUPmhDtXHXVjKD7M4yP",
"5nHFM2YArJdULMoAEtn2cXSaqk4v1UXs9upTvoc2FMn7",
);
}

if bank.slot == 32 {
assert_eq!(
bank.hash().to_string(),
"Hdrk5wqzRZbofSgZMC3ztfNimrFu6DeYp751JWvtabo"
"FPr64zXMcEE45qWRYy7hpvNRpzZD2ckqHes13uyiU1to"
);
}
if bank.slot == 64 {
assert_eq!(
bank.hash().to_string(),
"4EcAFkTxymwwPGeCgadhkrkg2hqfAPzuQZoN2NFqPzyg"
"HENrhATjg2gghYyV34CLPnMUq2VuTKwUjGXWwAz96Vzs"
);
}
if bank.slot == 128 {
assert_eq!(
bank.hash().to_string(),
"4BK3VANr5mhyRyrwbUHYb2kmM5m76PBGkhmKMrQ2aq7L"
"GjpfTe9dmB1HbrnC4BMaETPAqPUtXvXNG5ccnHSeMPnH"
);
break;
}
Expand Down Expand Up @@ -6754,7 +6754,7 @@ fn test_shrink_candidate_slots_cached() {
// No more slots should be shrunk
assert_eq!(bank2.shrink_candidate_slots(), 0);
// alive_counts represents the count of alive accounts in the three slots 0,1,2
assert_eq!(alive_counts, vec![15, 1, 6]);
assert_eq!(alive_counts, vec![14, 1, 6]);
}

#[test]
Expand Down
2 changes: 1 addition & 1 deletion runtime/src/genesis_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ pub fn bootstrap_validator_stake_lamports() -> u64 {

// Number of lamports automatically used for genesis accounts
pub const fn genesis_sysvar_and_builtin_program_lamports() -> u64 {
const NUM_BUILTIN_PROGRAMS: u64 = 9;
const NUM_BUILTIN_PROGRAMS: u64 = 8;
const NUM_PRECOMPILES: u64 = 2;
const STAKE_HISTORY_MIN_BALANCE: u64 = 114_979_200;
const CLOCK_SYSVAR_MIN_BALANCE: u64 = 1_169_280;
Expand Down
2 changes: 0 additions & 2 deletions svm/examples/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.