Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Commit

Permalink
Make default programs static (#9717)
Browse files Browse the repository at this point in the history
(cherry picked from commit efad193)

# Conflicts:
#	Cargo.lock
#	genesis-programs/Cargo.toml
#	programs/bpf/Cargo.lock
#	programs/librapay/Cargo.lock
#	programs/librapay/src/librapay_transaction.rs
#	runtime/Cargo.toml
#	runtime/src/genesis_utils.rs
#	runtime/src/message_processor.rs
  • Loading branch information
jackcmay authored and mergify-bot committed Apr 30, 2020
1 parent a8eb935 commit 1476344
Show file tree
Hide file tree
Showing 34 changed files with 631 additions and 146 deletions.
417 changes: 417 additions & 0 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion bench-exchange/tests/bench_exchange.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ fn test_exchange_bank_client() {
solana_logger::setup();
let (genesis_config, identity) = create_genesis_config(100_000_000_000_000);
let mut bank = Bank::new(&genesis_config);
bank.add_instruction_processor(id(), process_instruction);
bank.add_static_program("exchange_program", id(), process_instruction);
let clients = vec![BankClient::new(bank)];

let mut config = Config::default();
Expand Down
10 changes: 10 additions & 0 deletions genesis-programs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ edition = "2018"

[dependencies]
log = { version = "0.4.8" }
<<<<<<< HEAD
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.1.8" }
solana-budget-program = { path = "../programs/budget", version = "1.1.8" }
solana-config-program = { path = "../programs/config", version = "1.1.8" }
Expand All @@ -20,6 +21,15 @@ solana-stake-program = { path = "../programs/stake", version = "1.1.8" }
solana-storage-program = { path = "../programs/storage", version = "1.1.8" }
solana-vest-program = { path = "../programs/vest", version = "1.1.8" }
solana-vote-program = { path = "../programs/vote", version = "1.1.8" }
=======
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.2.0" }
solana-budget-program = { path = "../programs/budget", version = "1.2.0" }
solana-exchange-program = { path = "../programs/exchange", version = "1.2.0" }
solana-runtime = { path = "../runtime", version = "1.2.0" }
solana-sdk = { path = "../sdk", version = "1.2.0" }
solana-storage-program = { path = "../programs/storage", version = "1.2.0" }
solana-vest-program = { path = "../programs/vest", version = "1.2.0" }
>>>>>>> efad19318... Make default programs static (#9717)

[lib]
crate-type = ["lib"]
Expand Down
42 changes: 5 additions & 37 deletions genesis-programs/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,24 +1,18 @@
use solana_sdk::{
clock::Epoch, genesis_config::OperatingMode, inflation::Inflation,
move_loader::solana_move_loader_program, pubkey::Pubkey, system_program::solana_system_program,
move_loader::solana_move_loader_program, pubkey::Pubkey,
};

#[macro_use]
extern crate solana_bpf_loader_program;
#[macro_use]
extern crate solana_budget_program;
#[macro_use]
extern crate solana_config_program;
#[macro_use]
extern crate solana_exchange_program;
#[macro_use]
extern crate solana_stake_program;
#[macro_use]
extern crate solana_storage_program;
#[macro_use]
extern crate solana_vest_program;
#[macro_use]
extern crate solana_vote_program;

use log::*;
use solana_runtime::bank::{Bank, EnteredEpochCallback};
Expand Down Expand Up @@ -56,12 +50,8 @@ pub fn get_programs(operating_mode: OperatingMode, epoch: Epoch) -> Option<Vec<(
Some(vec![
// Enable all Stable programs
solana_bpf_loader_program!(),
solana_config_program!(),
solana_stake_program!(),
solana_storage_program!(),
solana_system_program(),
solana_vest_program!(),
solana_vote_program!(),
// Programs that are only available in Development mode
solana_budget_program!(),
solana_exchange_program!(),
Expand All @@ -72,14 +62,7 @@ pub fn get_programs(operating_mode: OperatingMode, epoch: Epoch) -> Option<Vec<(
}
}
OperatingMode::Stable => {
if epoch == 0 {
Some(vec![
solana_config_program!(),
solana_stake_program!(),
solana_system_program(),
solana_vote_program!(),
])
} else if epoch == std::u64::MAX - 1 {
if epoch == std::u64::MAX - 1 {
// The epoch of std::u64::MAX - 1 is a placeholder and is expected to be reduced in
// a future hard fork.
Some(vec![solana_bpf_loader_program!()])
Expand All @@ -93,13 +76,7 @@ pub fn get_programs(operating_mode: OperatingMode, epoch: Epoch) -> Option<Vec<(
}
OperatingMode::Preview => {
if epoch == 0 {
Some(vec![
solana_config_program!(),
solana_stake_program!(),
solana_system_program(),
solana_vote_program!(),
solana_bpf_loader_program!(),
])
Some(vec![solana_bpf_loader_program!()])
} else if epoch == std::u64::MAX {
// The epoch of std::u64::MAX is a placeholder and is expected to be reduced in a
// future hard fork.
Expand All @@ -124,7 +101,7 @@ pub fn get_entered_epoch_callback(operating_mode: OperatingMode) -> EnteredEpoch
if let Some(new_programs) = get_programs(operating_mode, bank.epoch()) {
for (name, program_id) in new_programs.iter() {
info!("Registering {} at {}", name, program_id);
bank.register_native_instruction_processor(name, program_id);
bank.add_native_program(name, program_id);
}
}
})
Expand Down Expand Up @@ -155,7 +132,7 @@ mod tests {
fn test_development_programs() {
assert_eq!(
get_programs(OperatingMode::Development, 0).unwrap().len(),
10
6
);
assert_eq!(get_programs(OperatingMode::Development, 1), None);
}
Expand All @@ -175,15 +152,6 @@ mod tests {

#[test]
fn test_softlaunch_programs() {
assert_eq!(
get_programs(OperatingMode::Stable, 0),
Some(vec![
solana_config_program!(),
solana_stake_program!(),
solana_system_program(),
solana_vote_program!(),
])
);
assert_eq!(get_programs(OperatingMode::Stable, 1), None);
assert!(get_programs(OperatingMode::Stable, std::u64::MAX - 1).is_some());
assert!(get_programs(OperatingMode::Stable, std::u64::MAX).is_some());
Expand Down
2 changes: 1 addition & 1 deletion genesis/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
);

let native_instruction_processors =
solana_genesis_programs::get_programs(operating_mode, 0).unwrap();
solana_genesis_programs::get_programs(operating_mode, 0).unwrap_or_else(|| vec![]);
let inflation = solana_genesis_programs::get_inflation(operating_mode, 0).unwrap();

let mut genesis_config = GenesisConfig {
Expand Down
2 changes: 1 addition & 1 deletion ledger/src/snapshot_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -621,8 +621,8 @@ where
stream.by_ref(),
&append_vecs_path,
)?;

bank.set_bank_rc(rc, bank::StatusCacheRc::default());
bank.finish_init();
Ok(bank)
},
)?;
Expand Down
4 changes: 1 addition & 3 deletions local-cluster/src/local_cluster.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,7 @@ impl LocalCluster {
OperatingMode::Stable | OperatingMode::Preview => {
genesis_config.native_instruction_processors =
solana_genesis_programs::get_programs(genesis_config.operating_mode, 0)
.unwrap()
.into_iter()
.collect()
.unwrap_or_else(|| vec![])
}
OperatingMode::Development => {
genesis_config
Expand Down
34 changes: 34 additions & 0 deletions programs/bpf/Cargo.lock

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

2 changes: 1 addition & 1 deletion programs/budget/src/budget_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ mod tests {
fn create_bank(lamports: u64) -> (Bank, Keypair) {
let (genesis_config, mint_keypair) = create_genesis_config(lamports);
let mut bank = Bank::new(&genesis_config);
bank.add_instruction_processor(id(), process_instruction);
bank.add_static_program("budget_program", id(), process_instruction);
(bank, mint_keypair)
}

Expand Down
2 changes: 1 addition & 1 deletion programs/config/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ solana-logger = { path = "../../logger", version = "1.1.8" }
solana-sdk = { path = "../../sdk", version = "1.1.8" }

[lib]
crate-type = ["lib", "cdylib"]
crate-type = ["lib"]
name = "solana_config_program"

[package.metadata.docs.rs]
Expand Down
7 changes: 1 addition & 6 deletions programs/config/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,11 @@ pub mod config_instruction;
pub mod config_processor;
pub mod date_instruction;

use crate::config_processor::process_instruction;
use bincode::{deserialize, serialize, serialized_size};
use serde_derive::{Deserialize, Serialize};
use solana_sdk::{account::Account, pubkey::Pubkey, short_vec};

solana_sdk::declare_program!(
"Config1111111111111111111111111111111111111",
solana_config_program,
process_instruction
);
solana_sdk::declare_id!("Config1111111111111111111111111111111111111");

pub trait ConfigState: serde::Serialize + Default {
/// Maximum space that the serialized representation will require
Expand Down
2 changes: 1 addition & 1 deletion programs/exchange/src/exchange_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -577,7 +577,7 @@ mod test {
fn create_bank(lamports: u64) -> (Bank, Keypair) {
let (genesis_config, mint_keypair) = create_genesis_config(lamports);
let mut bank = Bank::new(&genesis_config);
bank.add_instruction_processor(id(), process_instruction);
bank.add_static_program("excahnge_program", id(), process_instruction);
(bank, mint_keypair)
}

Expand Down
2 changes: 1 addition & 1 deletion programs/failure/tests/failure.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ fn test_program_native_failure() {
let (genesis_config, alice_keypair) = create_genesis_config(50);
let program_id = Pubkey::new_rand();
let bank = Bank::new(&genesis_config);
bank.register_native_instruction_processor("solana_failure_program", &program_id);
bank.add_native_program("solana_failure_program", &program_id);

// Call user program
let instruction = create_invoke_instruction(alice_keypair.pubkey(), program_id, &1u8);
Expand Down
14 changes: 14 additions & 0 deletions programs/librapay/Cargo.lock

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

5 changes: 5 additions & 0 deletions programs/librapay/src/librapay_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,16 @@ mod tests {
fn create_bank(lamports: u64) -> (Arc<Bank>, Keypair, Keypair, Pubkey, Pubkey) {
let (mut genesis_config, mint) = create_genesis_config(lamports);
genesis_config.rent.lamports_per_byte_year = 0;
<<<<<<< HEAD
let mut bank = Bank::new(&genesis_config);
bank.add_instruction_processor(
solana_sdk::move_loader::id(),
MoveProcessor::process_instruction,
);
=======
let bank = Bank::new(&genesis_config);
bank.add_native_program("solana_move_loader_program", &solana_sdk::move_loader::id());
>>>>>>> efad19318... Make default programs static (#9717)
let shared_bank = Arc::new(bank);
let bank_client = BankClient::new_shared(&shared_bank);
let genesis_pubkey = create_genesis(&mint, &bank_client, 1_000_000);
Expand Down
2 changes: 1 addition & 1 deletion programs/ownable/src/ownable_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ mod tests {
fn create_bank(lamports: u64) -> (Bank, Keypair) {
let (genesis_config, mint_keypair) = create_genesis_config(lamports);
let mut bank = Bank::new(&genesis_config);
bank.add_instruction_processor(crate::id(), process_instruction);
bank.add_static_program("ownable_program", crate::id(), process_instruction);
(bank, mint_keypair)
}

Expand Down
2 changes: 1 addition & 1 deletion programs/stake/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ solana-config-program = { path = "../config", version = "1.1.8" }
thiserror = "1.0"

[lib]
crate-type = ["lib", "cdylib"]
crate-type = ["lib"]
name = "solana_stake_program"

[package.metadata.docs.rs]
Expand Down
6 changes: 1 addition & 5 deletions programs/stake/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,7 @@ pub mod config;
pub mod stake_instruction;
pub mod stake_state;

solana_sdk::declare_program!(
"Stake11111111111111111111111111111111111111",
solana_stake_program,
stake_instruction::process_instruction
);
solana_sdk::declare_id!("Stake11111111111111111111111111111111111111");

pub fn add_genesis_accounts(genesis_config: &mut GenesisConfig) -> u64 {
config::add_genesis_account(genesis_config)
Expand Down
8 changes: 2 additions & 6 deletions programs/vest/src/vest_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,7 @@ mod tests {
fn create_bank(lamports: u64) -> (Bank, Keypair) {
let (genesis_config, mint_keypair) = create_genesis_config(lamports);
let mut bank = Bank::new(&genesis_config);
bank.add_instruction_processor(
solana_config_program::id(),
solana_config_program::config_processor::process_instruction,
);
bank.add_instruction_processor(id(), process_instruction);
bank.add_static_program("vest_program", id(), process_instruction);
(bank, mint_keypair)
}

Expand Down Expand Up @@ -472,7 +468,7 @@ mod tests {
)
.unwrap_err();

// Ensure bob can update which account he wants vested funds transfered to.
// Ensure bob can update which account he wants vested funds transferred to.
bank_client
.transfer(1, &alice_keypair, &bob_pubkey)
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion programs/vote/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ solana-sdk = { path = "../../sdk", version = "1.1.8" }
thiserror = "1.0"

[lib]
crate-type = ["lib", "cdylib"]
crate-type = ["lib"]
name = "solana_vote_program"

[package.metadata.docs.rs]
Expand Down
8 changes: 1 addition & 7 deletions programs/vote/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,4 @@ pub mod vote_transaction;
#[macro_use]
extern crate solana_metrics;

use crate::vote_instruction::process_instruction;

solana_sdk::declare_program!(
"Vote111111111111111111111111111111111111111",
solana_vote_program,
process_instruction
);
solana_sdk::declare_id!("Vote111111111111111111111111111111111111111");
Loading

0 comments on commit 1476344

Please sign in to comment.