Synchronize and cleanup instruction processor lists (#5356)
This commit is contained in:
parent
1d6bafbc77
commit
d09afdbefe
|
@ -3060,27 +3060,22 @@ dependencies = [
|
||||||
"solana-budget-program 0.18.0-pre0",
|
"solana-budget-program 0.18.0-pre0",
|
||||||
"solana-chacha-sys 0.18.0-pre0",
|
"solana-chacha-sys 0.18.0-pre0",
|
||||||
"solana-client 0.18.0-pre0",
|
"solana-client 0.18.0-pre0",
|
||||||
"solana-config-program 0.18.0-pre0",
|
|
||||||
"solana-drone 0.18.0-pre0",
|
"solana-drone 0.18.0-pre0",
|
||||||
"solana-ed25519-dalek 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana-ed25519-dalek 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-exchange-program 0.18.0-pre0",
|
"solana-genesis-programs 0.18.0-pre0",
|
||||||
"solana-kvstore 0.18.0-pre0",
|
"solana-kvstore 0.18.0-pre0",
|
||||||
"solana-librapay-api 0.18.0-pre0",
|
"solana-librapay-api 0.18.0-pre0",
|
||||||
"solana-logger 0.18.0-pre0",
|
"solana-logger 0.18.0-pre0",
|
||||||
"solana-measure 0.18.0-pre0",
|
"solana-measure 0.18.0-pre0",
|
||||||
"solana-merkle-tree 0.18.0-pre0",
|
"solana-merkle-tree 0.18.0-pre0",
|
||||||
"solana-metrics 0.18.0-pre0",
|
"solana-metrics 0.18.0-pre0",
|
||||||
"solana-move-loader-api 0.18.0-pre0",
|
|
||||||
"solana-move-loader-program 0.18.0-pre0",
|
|
||||||
"solana-netutil 0.18.0-pre0",
|
"solana-netutil 0.18.0-pre0",
|
||||||
"solana-runtime 0.18.0-pre0",
|
"solana-runtime 0.18.0-pre0",
|
||||||
"solana-sdk 0.18.0-pre0",
|
"solana-sdk 0.18.0-pre0",
|
||||||
"solana-stake-api 0.18.0-pre0",
|
"solana-stake-api 0.18.0-pre0",
|
||||||
"solana-stake-program 0.18.0-pre0",
|
|
||||||
"solana-storage-api 0.18.0-pre0",
|
"solana-storage-api 0.18.0-pre0",
|
||||||
"solana-storage-program 0.18.0-pre0",
|
"solana-storage-program 0.18.0-pre0",
|
||||||
"solana-vote-api 0.18.0-pre0",
|
"solana-vote-api 0.18.0-pre0",
|
||||||
"solana-vote-program 0.18.0-pre0",
|
|
||||||
"solana-vote-signer 0.18.0-pre0",
|
"solana-vote-signer 0.18.0-pre0",
|
||||||
"sys-info 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"sys-info 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -3345,6 +3340,18 @@ dependencies = [
|
||||||
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.18.0-pre0",
|
"solana 0.18.0-pre0",
|
||||||
|
"solana-genesis-programs 0.18.0-pre0",
|
||||||
|
"solana-sdk 0.18.0-pre0",
|
||||||
|
"solana-stake-api 0.18.0-pre0",
|
||||||
|
"solana-storage-api 0.18.0-pre0",
|
||||||
|
"solana-vote-api 0.18.0-pre0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "solana-genesis-programs"
|
||||||
|
version = "0.18.0-pre0"
|
||||||
|
dependencies = [
|
||||||
|
"hashbrown 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-bpf-loader-api 0.18.0-pre0",
|
"solana-bpf-loader-api 0.18.0-pre0",
|
||||||
"solana-bpf-loader-program 0.18.0-pre0",
|
"solana-bpf-loader-program 0.18.0-pre0",
|
||||||
"solana-budget-api 0.18.0-pre0",
|
"solana-budget-api 0.18.0-pre0",
|
||||||
|
@ -3353,6 +3360,8 @@ dependencies = [
|
||||||
"solana-config-program 0.18.0-pre0",
|
"solana-config-program 0.18.0-pre0",
|
||||||
"solana-exchange-api 0.18.0-pre0",
|
"solana-exchange-api 0.18.0-pre0",
|
||||||
"solana-exchange-program 0.18.0-pre0",
|
"solana-exchange-program 0.18.0-pre0",
|
||||||
|
"solana-move-loader-api 0.18.0-pre0",
|
||||||
|
"solana-move-loader-program 0.18.0-pre0",
|
||||||
"solana-sdk 0.18.0-pre0",
|
"solana-sdk 0.18.0-pre0",
|
||||||
"solana-stake-api 0.18.0-pre0",
|
"solana-stake-api 0.18.0-pre0",
|
||||||
"solana-stake-program 0.18.0-pre0",
|
"solana-stake-program 0.18.0-pre0",
|
||||||
|
@ -3598,7 +3607,6 @@ dependencies = [
|
||||||
"solana-logger 0.18.0-pre0",
|
"solana-logger 0.18.0-pre0",
|
||||||
"solana-measure 0.18.0-pre0",
|
"solana-measure 0.18.0-pre0",
|
||||||
"solana-metrics 0.18.0-pre0",
|
"solana-metrics 0.18.0-pre0",
|
||||||
"solana-noop-program 0.18.0-pre0",
|
|
||||||
"solana-sdk 0.18.0-pre0",
|
"solana-sdk 0.18.0-pre0",
|
||||||
"solana-stake-api 0.18.0-pre0",
|
"solana-stake-api 0.18.0-pre0",
|
||||||
"solana-stake-program 0.18.0-pre0",
|
"solana-stake-program 0.18.0-pre0",
|
||||||
|
|
|
@ -10,6 +10,7 @@ members = [
|
||||||
"drone",
|
"drone",
|
||||||
"validator",
|
"validator",
|
||||||
"genesis",
|
"genesis",
|
||||||
|
"genesis_programs",
|
||||||
"gossip",
|
"gossip",
|
||||||
"install",
|
"install",
|
||||||
"keygen",
|
"keygen",
|
||||||
|
|
|
@ -50,10 +50,9 @@ solana-budget-api = { path = "../programs/budget_api", version = "0.18.0-pre0" }
|
||||||
solana-budget-program = { path = "../programs/budget_program", version = "0.18.0-pre0" }
|
solana-budget-program = { path = "../programs/budget_program", version = "0.18.0-pre0" }
|
||||||
solana-chacha-sys = { path = "../chacha-sys", version = "0.18.0-pre0" }
|
solana-chacha-sys = { path = "../chacha-sys", version = "0.18.0-pre0" }
|
||||||
solana-client = { path = "../client", version = "0.18.0-pre0" }
|
solana-client = { path = "../client", version = "0.18.0-pre0" }
|
||||||
solana-config-program = { path = "../programs/config_program", version = "0.18.0-pre0" }
|
|
||||||
solana-drone = { path = "../drone", version = "0.18.0-pre0" }
|
solana-drone = { path = "../drone", version = "0.18.0-pre0" }
|
||||||
solana-ed25519-dalek = "0.2.0"
|
solana-ed25519-dalek = "0.2.0"
|
||||||
solana-exchange-program = { path = "../programs/exchange_program", version = "0.18.0-pre0" }
|
solana-genesis-programs = { path = "../genesis_programs", version = "0.18.0-pre0" }
|
||||||
solana-kvstore = { path = "../kvstore", version = "0.18.0-pre0", optional = true }
|
solana-kvstore = { path = "../kvstore", version = "0.18.0-pre0", optional = true }
|
||||||
solana-logger = { path = "../logger", version = "0.18.0-pre0" }
|
solana-logger = { path = "../logger", version = "0.18.0-pre0" }
|
||||||
solana-merkle-tree = { path = "../merkle-tree", version = "0.18.0-pre0" }
|
solana-merkle-tree = { path = "../merkle-tree", version = "0.18.0-pre0" }
|
||||||
|
@ -63,14 +62,10 @@ solana-netutil = { path = "../netutil", version = "0.18.0-pre0" }
|
||||||
solana-runtime = { path = "../runtime", version = "0.18.0-pre0" }
|
solana-runtime = { path = "../runtime", version = "0.18.0-pre0" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.18.0-pre0" }
|
solana-sdk = { path = "../sdk", version = "0.18.0-pre0" }
|
||||||
solana-stake-api = { path = "../programs/stake_api", version = "0.18.0-pre0" }
|
solana-stake-api = { path = "../programs/stake_api", version = "0.18.0-pre0" }
|
||||||
solana-stake-program = { path = "../programs/stake_program", version = "0.18.0-pre0" }
|
|
||||||
solana-storage-api = { path = "../programs/storage_api", version = "0.18.0-pre0" }
|
solana-storage-api = { path = "../programs/storage_api", version = "0.18.0-pre0" }
|
||||||
solana-storage-program = { path = "../programs/storage_program", version = "0.18.0-pre0" }
|
solana-storage-program = { path = "../programs/storage_program", version = "0.18.0-pre0" }
|
||||||
solana-vote-api = { path = "../programs/vote_api", version = "0.18.0-pre0" }
|
solana-vote-api = { path = "../programs/vote_api", version = "0.18.0-pre0" }
|
||||||
solana-vote-program = { path = "../programs/vote_program", version = "0.18.0-pre0" }
|
|
||||||
solana-vote-signer = { path = "../vote-signer", version = "0.18.0-pre0" }
|
solana-vote-signer = { path = "../vote-signer", version = "0.18.0-pre0" }
|
||||||
solana-move-loader-program = { path = "../programs/move_loader_program", version = "0.18.0-pre0" }
|
|
||||||
solana-move-loader-api = { path = "../programs/move_loader_api", version = "0.18.0-pre0" }
|
|
||||||
solana-librapay-api = { path = "../programs/librapay_api", version = "0.18.0-pre0" }
|
solana-librapay-api = { path = "../programs/librapay_api", version = "0.18.0-pre0" }
|
||||||
sys-info = "0.5.7"
|
sys-info = "0.5.7"
|
||||||
tokio = "0.1"
|
tokio = "0.1"
|
||||||
|
|
|
@ -76,7 +76,6 @@ pub mod window_service;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate solana_budget_program;
|
extern crate solana_budget_program;
|
||||||
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_storage_program;
|
extern crate solana_storage_program;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -101,6 +100,3 @@ extern crate solana_metrics;
|
||||||
extern crate matches;
|
extern crate matches;
|
||||||
|
|
||||||
extern crate crossbeam_channel;
|
extern crate crossbeam_channel;
|
||||||
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_move_loader_program;
|
|
||||||
|
|
|
@ -30,8 +30,6 @@ use std::io::{Error, ErrorKind, Result};
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use solana_move_loader_api;
|
|
||||||
|
|
||||||
pub struct ValidatorInfo {
|
pub struct ValidatorInfo {
|
||||||
pub keypair: Arc<Keypair>,
|
pub keypair: Arc<Keypair>,
|
||||||
pub voting_keypair: Arc<Keypair>,
|
pub voting_keypair: Arc<Keypair>,
|
||||||
|
@ -159,17 +157,15 @@ impl LocalCluster {
|
||||||
.native_instruction_processors
|
.native_instruction_processors
|
||||||
.extend_from_slice(&config.native_instruction_processors);
|
.extend_from_slice(&config.native_instruction_processors);
|
||||||
|
|
||||||
|
genesis_block
|
||||||
|
.native_instruction_processors
|
||||||
|
.extend_from_slice(&solana_genesis_programs::get());
|
||||||
|
|
||||||
let storage_keypair = Keypair::new();
|
let storage_keypair = Keypair::new();
|
||||||
genesis_block.accounts.push((
|
genesis_block.accounts.push((
|
||||||
storage_keypair.pubkey(),
|
storage_keypair.pubkey(),
|
||||||
storage_contract::create_validator_storage_account(leader_pubkey, 1),
|
storage_contract::create_validator_storage_account(leader_pubkey, 1),
|
||||||
));
|
));
|
||||||
genesis_block
|
|
||||||
.native_instruction_processors
|
|
||||||
.push(solana_storage_program!());
|
|
||||||
genesis_block
|
|
||||||
.native_instruction_processors
|
|
||||||
.push(solana_move_loader_program!());
|
|
||||||
|
|
||||||
let (leader_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
|
let (leader_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
|
||||||
let leader_contact_info = leader_node.info.clone();
|
let leader_contact_info = leader_node.info.clone();
|
||||||
|
|
|
@ -16,23 +16,11 @@ serde_derive = "1.0.98"
|
||||||
serde_json = "1.0.40"
|
serde_json = "1.0.40"
|
||||||
serde_yaml = "0.8.9"
|
serde_yaml = "0.8.9"
|
||||||
solana = { path = "../core", version = "0.18.0-pre0" }
|
solana = { path = "../core", version = "0.18.0-pre0" }
|
||||||
solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.18.0-pre0" }
|
solana-genesis-programs = { path = "../genesis_programs", version = "0.18.0-pre0" }
|
||||||
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.18.0-pre0" }
|
|
||||||
solana-budget-api = { path = "../programs/budget_api", version = "0.18.0-pre0" }
|
|
||||||
solana-budget-program = { path = "../programs/budget_program", version = "0.18.0-pre0" }
|
|
||||||
solana-config-api = { path = "../programs/config_api", version = "0.18.0-pre0" }
|
|
||||||
solana-config-program = { path = "../programs/config_program", version = "0.18.0-pre0" }
|
|
||||||
solana-exchange-api = { path = "../programs/exchange_api", version = "0.18.0-pre0" }
|
|
||||||
solana-exchange-program = { path = "../programs/exchange_program", version = "0.18.0-pre0" }
|
|
||||||
solana-sdk = { path = "../sdk", version = "0.18.0-pre0" }
|
solana-sdk = { path = "../sdk", version = "0.18.0-pre0" }
|
||||||
solana-stake-api = { path = "../programs/stake_api", version = "0.18.0-pre0" }
|
solana-stake-api = { path = "../programs/stake_api", version = "0.18.0-pre0" }
|
||||||
solana-stake-program = { path = "../programs/stake_program", version = "0.18.0-pre0" }
|
|
||||||
solana-storage-api = { path = "../programs/storage_api", version = "0.18.0-pre0" }
|
solana-storage-api = { path = "../programs/storage_api", version = "0.18.0-pre0" }
|
||||||
solana-storage-program = { path = "../programs/storage_program", version = "0.18.0-pre0" }
|
|
||||||
solana-token-api = { path = "../programs/token_api", version = "0.18.0-pre0" }
|
|
||||||
solana-token-program = { path = "../programs/token_program", version = "0.18.0-pre0" }
|
|
||||||
solana-vote-api = { path = "../programs/vote_api", version = "0.18.0-pre0" }
|
solana-vote-api = { path = "../programs/vote_api", version = "0.18.0-pre0" }
|
||||||
solana-vote-program = { path = "../programs/vote_program", version = "0.18.0-pre0" }
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
hashbrown = "0.3.0"
|
hashbrown = "0.3.0"
|
||||||
|
|
|
@ -1,20 +1,4 @@
|
||||||
//! A command-line executable for generating the chain's genesis block.
|
//! A command-line executable for generating the chain's genesis block.
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_bpf_loader_program;
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_vote_program;
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_stake_program;
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_budget_program;
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_token_program;
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_config_program;
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_exchange_program;
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_storage_program;
|
|
||||||
|
|
||||||
use clap::{crate_description, crate_name, crate_version, value_t_or_exit, App, Arg};
|
use clap::{crate_description, crate_name, crate_version, value_t_or_exit, App, Arg};
|
||||||
use solana::blocktree::create_new_ledger;
|
use solana::blocktree::create_new_ledger;
|
||||||
|
@ -299,16 +283,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
])
|
])
|
||||||
.native_instruction_processors(&[
|
.native_instruction_processors(&solana_genesis_programs::get())
|
||||||
solana_bpf_loader_program!(),
|
|
||||||
solana_vote_program!(),
|
|
||||||
solana_stake_program!(),
|
|
||||||
solana_budget_program!(),
|
|
||||||
solana_token_program!(),
|
|
||||||
solana_config_program!(),
|
|
||||||
solana_exchange_program!(),
|
|
||||||
solana_storage_program!(),
|
|
||||||
])
|
|
||||||
.ticks_per_slot(value_t_or_exit!(matches, "ticks_per_slot", u64))
|
.ticks_per_slot(value_t_or_exit!(matches, "ticks_per_slot", u64))
|
||||||
.slots_per_epoch(value_t_or_exit!(matches, "slots_per_epoch", u64));
|
.slots_per_epoch(value_t_or_exit!(matches, "slots_per_epoch", u64));
|
||||||
|
|
||||||
|
@ -367,7 +342,6 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use hashbrown::HashSet;
|
|
||||||
use solana_sdk::genesis_block::Builder;
|
use solana_sdk::genesis_block::Builder;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
use solana_sdk::pubkey::Pubkey;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
@ -375,24 +349,6 @@ mod tests {
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_program_id_uniqueness() {
|
|
||||||
let mut unique = HashSet::new();
|
|
||||||
let ids = vec![
|
|
||||||
solana_sdk::system_program::id(),
|
|
||||||
solana_sdk::native_loader::id(),
|
|
||||||
solana_sdk::bpf_loader::id(),
|
|
||||||
solana_budget_api::id(),
|
|
||||||
solana_storage_api::id(),
|
|
||||||
solana_token_api::id(),
|
|
||||||
solana_vote_api::id(),
|
|
||||||
solana_stake_api::id(),
|
|
||||||
solana_config_api::id(),
|
|
||||||
solana_exchange_api::id(),
|
|
||||||
];
|
|
||||||
assert!(ids.into_iter().all(move |id| unique.insert(id)));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_append_primordial_accounts_to_genesis() {
|
fn test_append_primordial_accounts_to_genesis() {
|
||||||
// Test invalid file returns error
|
// Test invalid file returns error
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
/target/
|
||||||
|
/farf/
|
|
@ -0,0 +1,35 @@
|
||||||
|
[package]
|
||||||
|
name = "solana-genesis-programs"
|
||||||
|
version = "0.18.0-pre0"
|
||||||
|
description = "Solana genesis programs"
|
||||||
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
|
repository = "https://github.com/solana-labs/solana"
|
||||||
|
license = "Apache-2.0"
|
||||||
|
homepage = "https://solana.com/"
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
hashbrown = "0.2.0"
|
||||||
|
solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.18.0-pre0" }
|
||||||
|
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.18.0-pre0" }
|
||||||
|
solana-budget-api= { path = "../programs/budget_api", version = "0.18.0-pre0" }
|
||||||
|
solana-budget-program = { path = "../programs/budget_program", version = "0.18.0-pre0" }
|
||||||
|
solana-config-api = { path = "../programs/config_api", version = "0.18.0-pre0" }
|
||||||
|
solana-config-program = { path = "../programs/config_program", version = "0.18.0-pre0" }
|
||||||
|
solana-exchange-api = { path = "../programs/exchange_api", version = "0.18.0-pre0" }
|
||||||
|
solana-exchange-program = { path = "../programs/exchange_program", version = "0.18.0-pre0" }
|
||||||
|
solana-move-loader-program = { path = "../programs/move_loader_program", version = "0.18.0-pre0" }
|
||||||
|
solana-move-loader-api = { path = "../programs/move_loader_api", version = "0.18.0-pre0" }
|
||||||
|
solana-sdk = { path = "../sdk", version = "0.18.0-pre0" }
|
||||||
|
solana-stake-api = { path = "../programs/stake_api", version = "0.18.0-pre0" }
|
||||||
|
solana-stake-program = { path = "../programs/stake_program", version = "0.18.0-pre0" }
|
||||||
|
solana-storage-api = { path = "../programs/storage_api", version = "0.18.0-pre0" }
|
||||||
|
solana-storage-program = { path = "../programs/storage_program", version = "0.18.0-pre0" }
|
||||||
|
solana-token-api = { path = "../programs/token_api", version = "0.18.0-pre0" }
|
||||||
|
solana-token-program = { path = "../programs/token_program", version = "0.18.0-pre0" }
|
||||||
|
solana-vote-api = { path = "../programs/vote_api", version = "0.18.0-pre0" }
|
||||||
|
solana-vote-program = { path = "../programs/vote_program", version = "0.18.0-pre0" }
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
crate-type = ["lib"]
|
||||||
|
name = "solana_genesis_programs"
|
|
@ -0,0 +1,58 @@
|
||||||
|
use solana_sdk::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_move_loader_program;
|
||||||
|
#[macro_use]
|
||||||
|
extern crate solana_stake_program;
|
||||||
|
#[macro_use]
|
||||||
|
extern crate solana_storage_program;
|
||||||
|
#[macro_use]
|
||||||
|
extern crate solana_token_program;
|
||||||
|
#[macro_use]
|
||||||
|
extern crate solana_vote_program;
|
||||||
|
|
||||||
|
pub fn get() -> Vec<(String, Pubkey)> {
|
||||||
|
vec![
|
||||||
|
solana_bpf_loader_program!(),
|
||||||
|
solana_budget_program!(),
|
||||||
|
solana_config_program!(),
|
||||||
|
solana_exchange_program!(),
|
||||||
|
solana_move_loader_program!(),
|
||||||
|
solana_stake_program!(),
|
||||||
|
solana_storage_program!(),
|
||||||
|
solana_token_program!(),
|
||||||
|
solana_vote_program!(),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use hashbrown::HashSet;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_id_uniqueness() {
|
||||||
|
let mut unique = HashSet::new();
|
||||||
|
let ids = vec![
|
||||||
|
solana_budget_api::id(),
|
||||||
|
solana_config_api::id(),
|
||||||
|
solana_exchange_api::id(),
|
||||||
|
solana_move_loader_api::id(),
|
||||||
|
solana_sdk::bpf_loader::id(),
|
||||||
|
solana_sdk::native_loader::id(),
|
||||||
|
solana_sdk::system_program::id(),
|
||||||
|
solana_stake_api::id(),
|
||||||
|
solana_storage_api::id(),
|
||||||
|
solana_token_api::id(),
|
||||||
|
solana_vote_api::id(),
|
||||||
|
];
|
||||||
|
assert!(ids.into_iter().all(move |id| unique.insert(id)));
|
||||||
|
}
|
||||||
|
}
|
|
@ -30,7 +30,6 @@ solana-measure = { path = "../measure", version = "0.18.0-pre0" }
|
||||||
solana-metrics = { path = "../metrics", version = "0.18.0-pre0" }
|
solana-metrics = { path = "../metrics", version = "0.18.0-pre0" }
|
||||||
solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.18.0-pre0" }
|
solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.18.0-pre0" }
|
||||||
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.18.0-pre0" }
|
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.18.0-pre0" }
|
||||||
solana-noop-program = { path = "../programs/noop_program", version = "0.18.0-pre0" }
|
|
||||||
solana-sdk = { path = "../sdk", version = "0.18.0-pre0" }
|
solana-sdk = { path = "../sdk", version = "0.18.0-pre0" }
|
||||||
solana-stake-api = { path = "../programs/stake_api", version = "0.18.0-pre0" }
|
solana-stake-api = { path = "../programs/stake_api", version = "0.18.0-pre0" }
|
||||||
solana-stake-program = { path = "../programs/stake_program", version = "0.18.0-pre0" }
|
solana-stake-program = { path = "../programs/stake_program", version = "0.18.0-pre0" }
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
//use solana_programs::get_default_native_instruction_processors;
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
account::Account,
|
account::Account,
|
||||||
fee_calculator::FeeCalculator,
|
fee_calculator::FeeCalculator,
|
||||||
|
@ -66,6 +67,7 @@ pub fn create_genesis_block_with_leader(
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
])
|
])
|
||||||
|
// Bare minimum
|
||||||
.native_instruction_processors(&[
|
.native_instruction_processors(&[
|
||||||
solana_bpf_loader_program!(),
|
solana_bpf_loader_program!(),
|
||||||
solana_vote_program!(),
|
solana_vote_program!(),
|
||||||
|
|
|
@ -157,7 +157,7 @@ impl Default for MessageProcessor {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MessageProcessor {
|
impl MessageProcessor {
|
||||||
/// Add a static entrypoint to intercept intructions before the dynamic loader.
|
/// Add a static entrypoint to intercept instructions before the dynamic loader.
|
||||||
pub fn add_instruction_processor(
|
pub fn add_instruction_processor(
|
||||||
&mut self,
|
&mut self,
|
||||||
program_id: Pubkey,
|
program_id: Pubkey,
|
||||||
|
|
Loading…
Reference in New Issue