Skip to content

Commit

Permalink
sdk: evict genesis config (#4076)
Browse files Browse the repository at this point in the history
* sdk: evict genesis_config

* Update sdk/src/lib.rs

Co-authored-by: Jon C <[email protected]>

* Update sdk/src/lib.rs

Co-authored-by: Jon C <[email protected]>

* Update sdk/genesis-config/Cargo.toml

Co-authored-by: Jon C <[email protected]>

* sdk: drop unused deps

* pubkey rand feature dev dep

* remove serde feature

* serde is back now

* Update sdk/genesis-config/Cargo.toml

Co-authored-by: Jon C <[email protected]>

* Update sdk/genesis-config/src/lib.rs

Co-authored-by: Jon C <[email protected]>

* Update sdk/genesis-config/Cargo.toml

Co-authored-by: Jon C <[email protected]>

* update lockfile

---------

Co-authored-by: Jon C <[email protected]>
  • Loading branch information
buffalojoec and joncinque authored Jan 16, 2025
1 parent b39a976 commit 11a84a4
Show file tree
Hide file tree
Showing 8 changed files with 206 additions and 38 deletions.
35 changes: 33 additions & 2 deletions Cargo.lock

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

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ members = [
"sdk/frozen-abi",
"sdk/frozen-abi/macro",
"sdk/gen-headers",
"sdk/genesis-config",
"sdk/hard-forks",
"sdk/hash",
"sdk/inflation",
Expand Down Expand Up @@ -499,6 +500,7 @@ solana-frozen-abi-macro = { path = "sdk/frozen-abi/macro", version = "=2.2.0" }
solana-tps-client = { path = "tps-client", version = "=2.2.0" }
solana-file-download = { path = "sdk/file-download", version = "=2.2.0" }
solana-genesis = { path = "genesis", version = "=2.2.0" }
solana-genesis-config = { path = "sdk/genesis-config", version = "=2.2.0" }
solana-genesis-utils = { path = "genesis-utils", version = "=2.2.0" }
agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.2.0" }
solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.2.0" }
Expand Down
32 changes: 30 additions & 2 deletions programs/sbf/Cargo.lock

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

9 changes: 5 additions & 4 deletions sdk/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ default = [
]
full = [
"byteorder",
"chrono",
"memmap2",
"rand",
"rand0-7",
"serde_json",
Expand All @@ -39,6 +37,7 @@ full = [
"dep:solana-cluster-type",
"dep:solana-ed25519-program",
"dep:solana-compute-budget-interface",
"dep:solana-genesis-config",
"dep:solana-hard-forks",
"dep:solana-keypair",
"dep:solana-offchain-message",
Expand Down Expand Up @@ -76,6 +75,7 @@ frozen-abi = [
"solana-fee-structure/frozen-abi",
"solana-account/frozen-abi",
"solana-cluster-type/frozen-abi",
"solana-genesis-config/frozen-abi",
"solana-hard-forks/frozen-abi",
"solana-inflation/frozen-abi",
"solana-poh-config/frozen-abi",
Expand All @@ -97,15 +97,13 @@ bs58 = { workspace = true }
bytemuck = { workspace = true }
bytemuck_derive = { workspace = true }
byteorder = { workspace = true, optional = true }
chrono = { workspace = true, features = ["alloc"], optional = true }
curve25519-dalek = { workspace = true, optional = true }
digest = { workspace = true, optional = true }
ed25519-dalek = { workspace = true, optional = true }
itertools = { workspace = true }
lazy_static = { workspace = true }
libsecp256k1 = { workspace = true, optional = true, features = ["hmac"] }
log = { workspace = true }
memmap2 = { workspace = true, optional = true }
num-derive = { workspace = true }
num-traits = { workspace = true }
qualifier_attr = { workspace = true, optional = true }
Expand Down Expand Up @@ -143,6 +141,9 @@ solana-frozen-abi = { workspace = true, optional = true, features = [
solana-frozen-abi-macro = { workspace = true, optional = true, features = [
"frozen-abi",
] }
solana-genesis-config = { workspace = true, features = [
"serde"
], optional = true }
solana-hard-forks = { workspace = true, features = [
"serde",
], optional = true }
Expand Down
64 changes: 64 additions & 0 deletions sdk/genesis-config/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
[package]
name = "solana-genesis-config"
description = "A Solana network's genesis config."
documentation = "https://docs.rs/solana-genesis-config"
version = { workspace = true }
authors = { workspace = true }
repository = { workspace = true }
homepage = { workspace = true }
license = { workspace = true }
edition = { workspace = true }

[dependencies]
bincode = { workspace = true }
chrono = { workspace = true, features = ["alloc"] }
memmap2 = { workspace = true }
serde = { workspace = true, optional = true }
serde_derive = { workspace = true, optional = true }
solana-account = { workspace = true }
solana-clock = { workspace = true }
solana-cluster-type = { workspace = true }
solana-epoch-schedule = { workspace = true }
solana-fee-calculator = { workspace = true }
solana-frozen-abi = { workspace = true, optional = true }
solana-frozen-abi-macro = { workspace = true, optional = true }
solana-hash = { workspace = true }
solana-inflation = { workspace = true }
solana-keypair = { workspace = true }
solana-logger = { workspace = true }
solana-native-token = { workspace = true }
solana-poh-config = { workspace = true }
solana-pubkey = { workspace = true }
solana-rent = { workspace = true }
solana-sdk-ids = { workspace = true }
solana-sha256-hasher = { workspace = true }
solana-shred-version = { workspace = true }
solana-signer = { workspace = true }
solana-time-utils = { workspace = true }

[dev-dependencies]
solana-genesis-config = { path = ".", features = ["serde"] }
solana-pubkey = { workspace = true, features = ["rand"] }

[features]
frozen-abi = ["dep:solana-frozen-abi", "dep:solana-frozen-abi-macro"]
serde = [
"dep:serde",
"dep:serde_derive",
"solana-account/serde",
"solana-clock/serde",
"solana-cluster-type/serde",
"solana-epoch-schedule/serde",
"solana-fee-calculator/serde",
"solana-inflation/serde",
"solana-poh-config/serde",
"solana-rent/serde",
]

[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
all-features = true
rustdoc-args = ["--cfg=docsrs"]

[lints]
workspace = true
66 changes: 39 additions & 27 deletions sdk/src/genesis_config.rs → sdk/genesis-config/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,38 +1,45 @@
//! The chain's genesis config.
#![cfg(feature = "full")]

#![cfg_attr(feature = "frozen-abi", feature(min_specialization))]
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#[deprecated(
since = "2.2.0",
note = "Use `solana_cluster_type::ClusterType` instead."
)]
pub use solana_cluster_type::ClusterType;
#[cfg(feature = "frozen-abi")]
use solana_frozen_abi_macro::{frozen_abi, AbiExample};
#[cfg(feature = "serde")]
use {
crate::{
clock::{UnixTimestamp, DEFAULT_TICKS_PER_SLOT},
epoch_schedule::EpochSchedule,
fee_calculator::FeeRateGovernor,
hash::{hash, Hash},
inflation::Inflation,
poh_config::PohConfig,
pubkey::Pubkey,
rent::Rent,
shred_version::compute_shred_version,
signature::{Keypair, Signer},
system_program,
timing::years_as_slots,
},
bincode::{deserialize, serialize},
chrono::{TimeZone, Utc},
memmap2::Mmap,
solana_account::{Account, AccountSharedData},
solana_hash::Hash,
solana_native_token::lamports_to_sol,
solana_sha256_hasher::hash,
solana_shred_version::compute_shred_version,
std::{
collections::BTreeMap,
fmt,
fs::{File, OpenOptions},
io::Write,
path::{Path, PathBuf},
},
};
use {
solana_account::{Account, AccountSharedData},
solana_clock::{UnixTimestamp, DEFAULT_TICKS_PER_SLOT},
solana_epoch_schedule::EpochSchedule,
solana_fee_calculator::FeeRateGovernor,
solana_inflation::Inflation,
solana_keypair::Keypair,
solana_poh_config::PohConfig,
solana_pubkey::Pubkey,
solana_rent::Rent,
solana_sdk_ids::system_program,
solana_signer::Signer,
solana_time_utils::years_as_slots,
std::{
collections::BTreeMap,
time::{SystemTime, UNIX_EPOCH},
},
};
Expand All @@ -49,7 +56,11 @@ pub const UNUSED_DEFAULT: u64 = 1024;
derive(AbiExample),
frozen_abi(digest = "D9VFRSj4fodCuKFC9omQY2zY2Uw8wo6SzJFLeMJaVigm")
)]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[cfg_attr(
feature = "serde",
derive(serde_derive::Deserialize, serde_derive::Serialize)
)]
#[derive(Clone, Debug, PartialEq)]
pub struct GenesisConfig {
/// when the network (bootstrap validator) was started relative to the UNIX Epoch
pub creation_time: UnixTimestamp,
Expand Down Expand Up @@ -132,15 +143,18 @@ impl GenesisConfig {
}
}

#[cfg(feature = "serde")]
pub fn hash(&self) -> Hash {
let serialized = serialize(&self).unwrap();
hash(&serialized)
}

#[cfg(feature = "serde")]
fn genesis_filename(ledger_path: &Path) -> PathBuf {
Path::new(ledger_path).join(DEFAULT_GENESIS_FILE)
}

#[cfg(feature = "serde")]
pub fn load(ledger_path: &Path) -> Result<Self, std::io::Error> {
let filename = Self::genesis_filename(ledger_path);
let file = OpenOptions::new()
Expand Down Expand Up @@ -170,6 +184,7 @@ impl GenesisConfig {
Ok(genesis_config)
}

#[cfg(feature = "serde")]
pub fn write(&self, ledger_path: &Path) -> Result<(), std::io::Error> {
let serialized = serialize(&self).map_err(|err| {
std::io::Error::new(
Expand Down Expand Up @@ -216,6 +231,7 @@ impl GenesisConfig {
}
}

#[cfg(feature = "serde")]
impl fmt::Display for GenesisConfig {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(
Expand Down Expand Up @@ -273,13 +289,9 @@ impl fmt::Display for GenesisConfig {
}
}

#[cfg(test)]
#[cfg(all(feature = "serde", test))]
mod tests {
use {
super::*,
crate::signature::{Keypair, Signer},
std::path::PathBuf,
};
use {super::*, solana_signer::Signer, std::path::PathBuf};

fn make_tmp_path(name: &str) -> PathBuf {
let out_dir = std::env::var("FARF_DIR").unwrap_or_else(|_| "farf".to_string());
Expand Down Expand Up @@ -310,10 +322,10 @@ mod tests {
AccountSharedData::new(10_000, 0, &Pubkey::default()),
);
config.add_account(
solana_sdk::pubkey::new_rand(),
solana_pubkey::new_rand(),
AccountSharedData::new(1, 0, &Pubkey::default()),
);
config.add_native_instruction_processor("hi".to_string(), solana_sdk::pubkey::new_rand());
config.add_native_instruction_processor("hi".to_string(), solana_pubkey::new_rand());

assert_eq!(config.accounts.len(), 2);
assert!(config
Expand Down
Loading

0 comments on commit 11a84a4

Please sign in to comment.