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:
@ -2,8 +2,8 @@
|
||||
mod bpf {
|
||||
use solana_runtime::bank::Bank;
|
||||
use solana_runtime::bank_client::BankClient;
|
||||
use solana_runtime::genesis_utils::{create_genesis_block, GenesisBlockInfo};
|
||||
use solana_runtime::loader_utils::load_program;
|
||||
use solana_sdk::genesis_block::create_genesis_block;
|
||||
use solana_sdk::native_loader;
|
||||
use std::env;
|
||||
use std::fs::File;
|
||||
@ -41,7 +41,11 @@ mod bpf {
|
||||
let mut elf = Vec::new();
|
||||
file.read_to_end(&mut elf).unwrap();
|
||||
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(50);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(50);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let bank_client = BankClient::new(bank);
|
||||
|
||||
@ -72,7 +76,11 @@ mod bpf {
|
||||
let mut elf = Vec::new();
|
||||
file.read_to_end(&mut elf).unwrap();
|
||||
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(50);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(50);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let bank_client = BankClient::new(bank);
|
||||
|
||||
@ -119,7 +127,11 @@ mod bpf {
|
||||
let mut elf = Vec::new();
|
||||
file.read_to_end(&mut elf).unwrap();
|
||||
|
||||
let (genesis_block, mint_keypair) = create_genesis_block(50);
|
||||
let GenesisBlockInfo {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_block(50);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let bank_client = BankClient::new(bank);
|
||||
|
||||
|
@ -3,6 +3,16 @@ pub mod allocator_bump;
|
||||
pub mod allocator_system;
|
||||
pub mod bpf_verifier;
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! solana_bpf_loader {
|
||||
() => {
|
||||
(
|
||||
"solana_bpf_loader".to_string(),
|
||||
solana_sdk::bpf_loader::id(),
|
||||
)
|
||||
};
|
||||
}
|
||||
|
||||
use alloc::Alloc;
|
||||
use byteorder::{ByteOrder, LittleEndian, WriteBytesExt};
|
||||
use libc::c_char;
|
||||
|
@ -1,23 +0,0 @@
|
||||
use crate::solana_storage_program;
|
||||
use solana_sdk::genesis_block::GenesisBlock;
|
||||
use solana_sdk::pubkey::Pubkey;
|
||||
use solana_storage_api::storage_contract;
|
||||
|
||||
pub trait GenesisBlockUtil {
|
||||
fn add_storage_program(&mut self, validator_pubkey: &Pubkey, validator_storage_pubkey: &Pubkey);
|
||||
}
|
||||
|
||||
impl GenesisBlockUtil for GenesisBlock {
|
||||
fn add_storage_program(
|
||||
&mut self,
|
||||
validator_pubkey: &Pubkey,
|
||||
validator_storage_pubkey: &Pubkey,
|
||||
) {
|
||||
self.accounts.push((
|
||||
*validator_storage_pubkey,
|
||||
storage_contract::create_validator_storage_account(*validator_pubkey, 1),
|
||||
));
|
||||
self.native_instruction_processors
|
||||
.push(solana_storage_program!());
|
||||
}
|
||||
}
|
@ -1,5 +1,3 @@
|
||||
pub mod genesis_block_util;
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! solana_storage_program {
|
||||
() => {
|
||||
|
Reference in New Issue
Block a user