diff --git a/programs/native/bpf_loader/src/lib.rs b/programs/native/bpf_loader/src/lib.rs index 1e49a83106..6d6c592c69 100644 --- a/programs/native/bpf_loader/src/lib.rs +++ b/programs/native/bpf_loader/src/lib.rs @@ -14,8 +14,9 @@ use bincode::deserialize; use byteorder::{ByteOrder, LittleEndian, WriteBytesExt}; use libc::c_char; use solana_rbpf::EbpfVmRaw; -use solana_sdk::account::KeyedAccount; +use solana_sdk::account::{Account, KeyedAccount}; use solana_sdk::loader_instruction::LoaderInstruction; +use solana_sdk::native_loader; use solana_sdk::pubkey::Pubkey; use std::ffi::CStr; use std::io::prelude::*; @@ -23,6 +24,26 @@ use std::io::{Error, ErrorKind}; use std::mem; use std::sync::{Once, ONCE_INIT}; +const BPF_LOADER_NAME: &str = "solana_bpf_loader"; +const BPF_LOADER_PROGRAM_ID: [u8; 32] = [ + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, +]; + +pub fn id() -> Pubkey { + Pubkey::new(&BPF_LOADER_PROGRAM_ID) +} + +pub fn account() -> Account { + Account { + tokens: 1, + owner: id(), + userdata: BPF_LOADER_NAME.as_bytes().to_vec(), + executable: true, + loader: native_loader::id(), + } +} + // TODO use rbpf's disassemble #[allow(dead_code)] fn dump_program(key: &Pubkey, prog: &[u8]) { diff --git a/src/bank.rs b/src/bank.rs index 020f6b9b6e..e30224c773 100644 --- a/src/bank.rs +++ b/src/bank.rs @@ -5,7 +5,6 @@ use bincode::deserialize; use bincode::serialize; -use bpf_loader; use budget_program; use counter::Counter; use entry::Entry; @@ -402,7 +401,7 @@ impl Bank { let mut accounts = self.accounts.write().unwrap(); // Preload Bpf Loader account - accounts.store(&bpf_loader::id(), &bpf_loader::account()); + accounts.store(&solana_bpf_loader::id(), &solana_bpf_loader::account()); // Preload Erc20 token program accounts.store(&solana_erc20::id(), &solana_erc20::account()); @@ -2139,7 +2138,7 @@ mod tests { assert_eq!(system_program::id(), system); assert_eq!(native_loader::id(), native); - assert_eq!(bpf_loader::id(), bpf); + assert_eq!(solana_bpf_loader::id(), bpf); assert_eq!(budget_program::id(), budget); assert_eq!(storage_program::id(), storage); assert_eq!(solana_erc20::id(), token); @@ -2152,7 +2151,7 @@ mod tests { let ids = vec![ system_program::id(), native_loader::id(), - bpf_loader::id(), + solana_bpf_loader::id(), budget_program::id(), storage_program::id(), solana_erc20::id(), diff --git a/src/bpf_loader.rs b/src/bpf_loader.rs deleted file mode 100644 index 180149f3ae..0000000000 --- a/src/bpf_loader.rs +++ /dev/null @@ -1,24 +0,0 @@ -//! BPF loader -use solana_sdk::account::Account; -use solana_sdk::native_loader; -use solana_sdk::pubkey::Pubkey; - -const BPF_LOADER_NAME: &str = "solana_bpf_loader"; -const BPF_LOADER_PROGRAM_ID: [u8; 32] = [ - 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -]; - -pub fn id() -> Pubkey { - Pubkey::new(&BPF_LOADER_PROGRAM_ID) -} - -pub fn account() -> Account { - Account { - tokens: 1, - owner: id(), - userdata: BPF_LOADER_NAME.as_bytes().to_vec(), - executable: true, - loader: native_loader::id(), - } -} diff --git a/src/lib.rs b/src/lib.rs index 0c7f8876ea..913fa5bf7a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,7 +13,6 @@ pub mod bank; pub mod banking_stage; pub mod blob_fetch_stage; pub mod bloom; -pub mod bpf_loader; pub mod broadcast_stage; pub mod budget_expr; pub mod budget_instruction; @@ -126,6 +125,7 @@ extern crate solana_jsonrpc_core as jsonrpc_core; extern crate solana_jsonrpc_http_server as jsonrpc_http_server; #[macro_use] extern crate solana_jsonrpc_macros as jsonrpc_macros; +extern crate solana_bpf_loader; extern crate solana_erc20; extern crate solana_jsonrpc_pubsub as jsonrpc_pubsub; extern crate solana_jsonrpc_ws_server as jsonrpc_ws_server; diff --git a/src/wallet.rs b/src/wallet.rs index 01fbe456e0..5ecc4c93d1 100644 --- a/src/wallet.rs +++ b/src/wallet.rs @@ -1,5 +1,4 @@ use bincode::serialize; -use bpf_loader; use bs58; use budget_program; use budget_transaction::BudgetTransaction; @@ -13,6 +12,7 @@ use ring::signature::Ed25519KeyPair; use rpc::RpcSignatureStatus; use rpc_request::{get_rpc_request_str, RpcClient, RpcRequest}; use serde_json; +use solana_bpf_loader; use solana_drone::drone::{request_airdrop_transaction, DRONE_PORT}; use solana_sdk::hash::Hash; use solana_sdk::pubkey::Pubkey; @@ -431,7 +431,7 @@ pub fn process_command(config: &WalletConfig) -> Result Result Result Self { let mint = Mint::new(50); let bank = Bank::new(&mint); - let loader = bpf_loader::id(); + let loader = solana_bpf_loader::id(); Loader { mint, bank, loader } }