From 36546b4c4c04d018d00c4782ec66aee42b3c152f Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Tue, 19 Feb 2019 09:36:39 -0700 Subject: [PATCH] Expose a Bank API for adding native programs Also use it to tighten up the code to add the builtin programs. --- runtime/src/bank.rs | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 9f54f0d188..a8623092f0 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -175,35 +175,22 @@ impl Bank { .genesis_last_id(&genesis_block.last_id()); } + pub fn add_native_program(&self, name: &str, program_id: &Pubkey) { + let account = native_loader::create_program_account(name); + self.accounts.store_slow(true, program_id, &account); + } + fn add_builtin_programs(&self) { - let system_program_account = native_loader::create_program_account("solana_system_program"); - self.accounts - .store_slow(true, &system_program::id(), &system_program_account); - - let vote_program_account = native_loader::create_program_account("solana_vote_program"); - self.accounts - .store_slow(true, &vote_program::id(), &vote_program_account); - - let storage_program_account = - native_loader::create_program_account("solana_storage_program"); - self.accounts - .store_slow(true, &storage_program::id(), &storage_program_account); + self.add_native_program("solana_system_program", &system_program::id()); + self.add_native_program("solana_vote_program", &vote_program::id()); + self.add_native_program("solana_storage_program", &storage_program::id()); + self.add_native_program("solana_bpf_loader", &bpf_loader::id()); + self.add_native_program("solana_budget_program", &budget_program::id()); + self.add_native_program("solana_erc20", &token_program::id()); let storage_system_account = Account::new(1, 16 * 1024, storage_program::system_id()); self.accounts .store_slow(true, &storage_program::system_id(), &storage_system_account); - - let bpf_loader_account = native_loader::create_program_account("solana_bpf_loader"); - self.accounts - .store_slow(true, &bpf_loader::id(), &bpf_loader_account); - - let budget_program_account = native_loader::create_program_account("solana_budget_program"); - self.accounts - .store_slow(true, &budget_program::id(), &budget_program_account); - - let erc20_account = native_loader::create_program_account("solana_erc20"); - self.accounts - .store_slow(true, &token_program::id(), &erc20_account); } /// Return the last entry ID registered.