make runtime depend on bpf_loader (#4601)

* make runtime depend on bpf_loader

* remove vote redundancy, move bpf_loader to genesis, export program\! from bpf_loader crate

* move bpf_loader specification into genesis

* bpf tests to use genesis with bpf

* need to avoid depending on programs, except for macros
This commit is contained in:
Rob Walker
2019-06-11 10:27:22 -07:00
committed by GitHub
parent e4d8ea11ac
commit e56430c9fb
14 changed files with 69 additions and 48 deletions

View File

@ -73,6 +73,9 @@ pub mod window_service;
#[macro_use]
extern crate solana_budget_program;
#[macro_use]
extern crate solana_storage_program;
#[cfg(test)]
#[macro_use]
extern crate hex_literal;

View File

@ -20,8 +20,8 @@ use solana_sdk::timing::DEFAULT_SLOTS_PER_EPOCH;
use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT;
use solana_sdk::transaction::Transaction;
use solana_stake_api::stake_instruction;
use solana_storage_api::storage_contract;
use solana_storage_api::storage_instruction;
use solana_storage_program::genesis_block_util::GenesisBlockUtil;
use solana_vote_api::vote_instruction;
use solana_vote_api::vote_state::VoteState;
use std::collections::HashMap;
@ -130,8 +130,6 @@ impl LocalCluster {
&leader_pubkey,
config.node_stakes[0],
);
let storage_keypair = Keypair::new();
genesis_block.add_storage_program(&leader_pubkey, &storage_keypair.pubkey());
genesis_block.ticks_per_slot = config.ticks_per_slot;
genesis_block.slots_per_epoch = config.slots_per_epoch;
genesis_block.stakers_slot_offset = config.stakers_slot_offset;
@ -140,6 +138,15 @@ impl LocalCluster {
.native_instruction_processors
.extend_from_slice(&config.native_instruction_processors);
let storage_keypair = Keypair::new();
genesis_block.accounts.push((
storage_keypair.pubkey(),
storage_contract::create_validator_storage_account(leader_pubkey, 1),
));
genesis_block
.native_instruction_processors
.push(solana_storage_program!());
let (genesis_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
let leader_ledger_path = tmp_copy_blocktree!(&genesis_ledger_path);
let leader_contact_info = leader_node.info.clone();