solana_stake_program/
config.rs

1//! config for staking
2//!  carries variables that the stake program cares about
3#[deprecated(
4    since = "1.8.0",
5    note = "Please use `solana_stake_interface::config` instead"
6)]
7pub use solana_stake_interface::config::*;
8use {
9    bincode::deserialize,
10    solana_account::{AccountSharedData, ReadableAccount, WritableAccount},
11    solana_config_program::{create_config_account, get_config_data},
12    solana_genesis_config::GenesisConfig,
13    solana_transaction_context::BorrowedAccount,
14};
15
16#[allow(deprecated)]
17pub fn from(account: &BorrowedAccount) -> Option<Config> {
18    get_config_data(account.get_data())
19        .ok()
20        .and_then(|data| deserialize(data).ok())
21}
22
23#[allow(deprecated)]
24pub fn create_account(lamports: u64, config: &Config) -> AccountSharedData {
25    create_config_account(vec![], config, lamports)
26}
27
28#[allow(deprecated)]
29pub fn add_genesis_account(genesis_config: &mut GenesisConfig) -> u64 {
30    let mut account = create_config_account(vec![], &Config::default(), 0);
31    let lamports = genesis_config.rent.minimum_balance(account.data().len());
32
33    account.set_lamports(lamports.max(1));
34
35    genesis_config.add_account(solana_sdk_ids::config::id(), account);
36
37    lamports
38}