Plumb libra accounts to genesis (#5333)
* Plumb move_loader to genesis * Remove core dependency on genesis-programs
This commit is contained in:
parent
9278201198
commit
c2fc0f2418
|
@ -3062,9 +3062,7 @@ dependencies = [
|
||||||
"solana-client 0.18.0-pre0",
|
"solana-client 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-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-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",
|
||||||
|
@ -3146,6 +3144,8 @@ 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-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",
|
||||||
|
|
|
@ -26,6 +26,8 @@ solana-measure = { path = "../measure", version = "0.18.0-pre0" }
|
||||||
solana-netutil = { path = "../netutil", version = "0.18.0-pre0" }
|
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-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" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
cuda = ["solana/cuda"]
|
cuda = ["solana/cuda"]
|
||||||
|
|
|
@ -6,6 +6,7 @@ use rayon::prelude::*;
|
||||||
use solana::gen_keys::GenKeys;
|
use solana::gen_keys::GenKeys;
|
||||||
use solana_client::perf_utils::{sample_txs, SampleStats};
|
use solana_client::perf_utils::{sample_txs, SampleStats};
|
||||||
use solana_drone::drone::request_airdrop_transaction;
|
use solana_drone::drone::request_airdrop_transaction;
|
||||||
|
use solana_librapay_api::{create_genesis, upload_mint_program, upload_payment_program};
|
||||||
use solana_measure::measure::Measure;
|
use solana_measure::measure::Measure;
|
||||||
use solana_metrics::datapoint_info;
|
use solana_metrics::datapoint_info;
|
||||||
use solana_sdk::client::Client;
|
use solana_sdk::client::Client;
|
||||||
|
@ -65,12 +66,14 @@ impl Default for Config {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type LibraKeys = (Keypair, Pubkey, Pubkey, Vec<Keypair>);
|
||||||
|
|
||||||
pub fn do_bench_tps<T>(
|
pub fn do_bench_tps<T>(
|
||||||
clients: Vec<T>,
|
clients: Vec<T>,
|
||||||
config: Config,
|
config: Config,
|
||||||
gen_keypairs: Vec<Keypair>,
|
gen_keypairs: Vec<Keypair>,
|
||||||
keypair0_balance: u64,
|
keypair0_balance: u64,
|
||||||
libra_args: Option<(&Pubkey, &Pubkey, Vec<Keypair>)>,
|
libra_args: Option<LibraKeys>,
|
||||||
) -> u64
|
) -> u64
|
||||||
where
|
where
|
||||||
T: 'static + Client + Send + Sync,
|
T: 'static + Client + Send + Sync,
|
||||||
|
@ -276,7 +279,7 @@ fn generate_move_txs(
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_solana_txs(
|
fn generate_system_txs(
|
||||||
source: &[Keypair],
|
source: &[Keypair],
|
||||||
dest: &[Keypair],
|
dest: &[Keypair],
|
||||||
reclaim: bool,
|
reclaim: bool,
|
||||||
|
@ -306,24 +309,30 @@ fn generate_txs(
|
||||||
dest: &[Keypair],
|
dest: &[Keypair],
|
||||||
threads: usize,
|
threads: usize,
|
||||||
reclaim: bool,
|
reclaim: bool,
|
||||||
libra_args: &Option<(&Pubkey, &Pubkey, Vec<Keypair>)>,
|
libra_args: &Option<LibraKeys>,
|
||||||
) {
|
) {
|
||||||
let tx_count = source.len();
|
let tx_count = source.len();
|
||||||
println!("Signing transactions... {} (reclaim={})", tx_count, reclaim);
|
println!("Signing transactions... {} (reclaim={})", tx_count, reclaim);
|
||||||
let signing_start = Instant::now();
|
let signing_start = Instant::now();
|
||||||
|
|
||||||
let transactions = if let Some((libra_pay_program_id, libra_mint_id, libra_keys)) = libra_args {
|
let transactions = if let Some((
|
||||||
|
libra_genesis_keypair,
|
||||||
|
libra_pay_program_id,
|
||||||
|
_libra_mint_program_id,
|
||||||
|
libra_keys,
|
||||||
|
)) = libra_args
|
||||||
|
{
|
||||||
generate_move_txs(
|
generate_move_txs(
|
||||||
source,
|
source,
|
||||||
dest,
|
dest,
|
||||||
reclaim,
|
reclaim,
|
||||||
&libra_keys,
|
&libra_keys,
|
||||||
libra_pay_program_id,
|
libra_pay_program_id,
|
||||||
libra_mint_id,
|
&libra_genesis_keypair.pubkey(),
|
||||||
blockhash,
|
blockhash,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
generate_solana_txs(source, dest, reclaim, blockhash)
|
generate_system_txs(source, dest, reclaim, blockhash)
|
||||||
};
|
};
|
||||||
|
|
||||||
let duration = signing_start.elapsed();
|
let duration = signing_start.elapsed();
|
||||||
|
@ -719,7 +728,13 @@ fn fund_move_keys<T: Client>(
|
||||||
let create_len = 8;
|
let create_len = 8;
|
||||||
let mut funding_time = Measure::start("funding_time");
|
let mut funding_time = Measure::start("funding_time");
|
||||||
for (i, keys) in keypairs.chunks(create_len).enumerate() {
|
for (i, keys) in keypairs.chunks(create_len).enumerate() {
|
||||||
|
if client.get_balance(&keys[0].pubkey()).unwrap_or(0) > 0 {
|
||||||
|
// already created these accounts.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
let mut tx_send = Measure::start("poll");
|
let mut tx_send = Measure::start("poll");
|
||||||
|
|
||||||
let pubkeys: Vec<_> = keys.iter().map(|k| k.pubkey()).collect();
|
let pubkeys: Vec<_> = keys.iter().map(|k| k.pubkey()).collect();
|
||||||
let tx = librapay_transaction::create_accounts(funding_key, &pubkeys, 1, blockhash);
|
let tx = librapay_transaction::create_accounts(funding_key, &pubkeys, 1, blockhash);
|
||||||
let ser_size = bincode::serialized_size(&tx).unwrap();
|
let ser_size = bincode::serialized_size(&tx).unwrap();
|
||||||
|
@ -761,6 +776,17 @@ fn fund_move_keys<T: Client>(
|
||||||
let sig = client
|
let sig = client
|
||||||
.async_send_transaction(tx.clone())
|
.async_send_transaction(tx.clone())
|
||||||
.expect("create_account in generate_and_fund_keypairs");
|
.expect("create_account in generate_and_fund_keypairs");
|
||||||
|
|
||||||
|
let mut poll_time = Measure::start("poll_start");
|
||||||
|
let poll_status = client.poll_for_signature(&sig);
|
||||||
|
poll_time.stop();
|
||||||
|
info!(
|
||||||
|
"i: {} poll: {:?} time: {}ms",
|
||||||
|
i,
|
||||||
|
poll_status,
|
||||||
|
poll_time.as_ms()
|
||||||
|
);
|
||||||
|
|
||||||
sigs.push((sig, key));
|
sigs.push((sig, key));
|
||||||
|
|
||||||
if i % 50 == 0 {
|
if i % 50 == 0 {
|
||||||
|
@ -785,7 +811,7 @@ fn fund_move_keys<T: Client>(
|
||||||
times = 0;
|
times = 0;
|
||||||
loop {
|
loop {
|
||||||
let balance = librapay_transaction::get_libra_balance(client, &key.pubkey()).unwrap();
|
let balance = librapay_transaction::get_libra_balance(client, &key.pubkey()).unwrap();
|
||||||
if amount != balance {
|
if balance < amount {
|
||||||
info!("i: {} balance: {} times: {}", i, balance, times);
|
info!("i: {} balance: {} times: {}", i, balance, times);
|
||||||
times += 1;
|
times += 1;
|
||||||
sleep(Duration::from_secs(1));
|
sleep(Duration::from_secs(1));
|
||||||
|
@ -806,8 +832,8 @@ pub fn generate_and_fund_keypairs<T: Client>(
|
||||||
funding_key: &Keypair,
|
funding_key: &Keypair,
|
||||||
tx_count: usize,
|
tx_count: usize,
|
||||||
lamports_per_account: u64,
|
lamports_per_account: u64,
|
||||||
libra_keys: Option<(&Pubkey, &Pubkey, &Arc<Keypair>)>,
|
use_move: bool,
|
||||||
) -> Result<(Vec<Keypair>, Option<Vec<Keypair>>, u64)> {
|
) -> Result<(Vec<Keypair>, Option<LibraKeys>, u64)> {
|
||||||
info!("Creating {} keypairs...", tx_count * 2);
|
info!("Creating {} keypairs...", tx_count * 2);
|
||||||
let (mut keypairs, extra) = generate_keypairs(funding_key, tx_count as u64 * 2);
|
let (mut keypairs, extra) = generate_keypairs(funding_key, tx_count as u64 * 2);
|
||||||
info!("Get lamports...");
|
info!("Get lamports...");
|
||||||
|
@ -826,14 +852,24 @@ pub fn generate_and_fund_keypairs<T: Client>(
|
||||||
lamports_per_account - last_keypair_balance + fee_calculator.max_lamports_per_signature;
|
lamports_per_account - last_keypair_balance + fee_calculator.max_lamports_per_signature;
|
||||||
let extra_fees = extra * fee_calculator.max_lamports_per_signature;
|
let extra_fees = extra * fee_calculator.max_lamports_per_signature;
|
||||||
let mut total = account_desired_balance * (1 + keypairs.len() as u64) + extra_fees;
|
let mut total = account_desired_balance * (1 + keypairs.len() as u64) + extra_fees;
|
||||||
if libra_keys.is_some() {
|
if use_move {
|
||||||
total *= 2;
|
total *= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
println!("Previous key balance: {} max_fee: {} lamports_per_account: {} extra: {} desired_balance: {} total: {}",
|
||||||
|
last_keypair_balance, fee_calculator.max_lamports_per_signature, lamports_per_account, extra,
|
||||||
|
account_desired_balance, total
|
||||||
|
);
|
||||||
|
|
||||||
if client.get_balance(&funding_key.pubkey()).unwrap_or(0) < total {
|
if client.get_balance(&funding_key.pubkey()).unwrap_or(0) < total {
|
||||||
airdrop_lamports(client, &drone_addr.unwrap(), funding_key, total)?;
|
airdrop_lamports(client, &drone_addr.unwrap(), funding_key, total)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some((libra_pay_program_id, libra_mint_program_id, libra_mint_key)) = libra_keys {
|
if use_move {
|
||||||
|
let libra_genesis_keypair = create_genesis(&funding_key, client, 1_000_000);
|
||||||
|
let libra_mint_program_id = upload_mint_program(&funding_key, client);
|
||||||
|
let libra_pay_program_id = upload_payment_program(&funding_key, client);
|
||||||
|
|
||||||
// Generate another set of keypairs for move accounts.
|
// Generate another set of keypairs for move accounts.
|
||||||
// Still fund the solana ones which will be used for fees.
|
// Still fund the solana ones which will be used for fees.
|
||||||
let seed = [0u8; 32];
|
let seed = [0u8; 32];
|
||||||
|
@ -844,11 +880,16 @@ pub fn generate_and_fund_keypairs<T: Client>(
|
||||||
funding_key,
|
funding_key,
|
||||||
&move_keypairs,
|
&move_keypairs,
|
||||||
total / 2,
|
total / 2,
|
||||||
|
&libra_pay_program_id,
|
||||||
|
&libra_mint_program_id,
|
||||||
|
&libra_genesis_keypair,
|
||||||
|
);
|
||||||
|
move_keypairs_ret = Some((
|
||||||
|
libra_genesis_keypair,
|
||||||
libra_pay_program_id,
|
libra_pay_program_id,
|
||||||
libra_mint_program_id,
|
libra_mint_program_id,
|
||||||
libra_mint_key,
|
move_keypairs,
|
||||||
);
|
));
|
||||||
move_keypairs_ret = Some(move_keypairs);
|
|
||||||
|
|
||||||
// Give solana keys half and move keys half the lamports.
|
// Give solana keys half and move keys half the lamports.
|
||||||
total /= 2;
|
total /= 2;
|
||||||
|
@ -872,13 +913,13 @@ pub fn generate_and_fund_keypairs<T: Client>(
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use solana::cluster_info::FULLNODE_PORT_RANGE;
|
use solana::cluster_info::FULLNODE_PORT_RANGE;
|
||||||
use solana::local_cluster::{ClusterConfig, LocalCluster};
|
use solana::local_cluster::{ClusterConfig, LocalCluster};
|
||||||
use solana::validator::ValidatorConfig;
|
use solana::validator::ValidatorConfig;
|
||||||
use solana_client::thin_client::create_client;
|
use solana_client::thin_client::create_client;
|
||||||
use solana_drone::drone::run_local_drone;
|
use solana_drone::drone::run_local_drone;
|
||||||
use solana_librapay_api::{create_genesis, upload_mint_program, upload_payment_program};
|
|
||||||
use solana_runtime::bank::Bank;
|
use solana_runtime::bank::Bank;
|
||||||
use solana_runtime::bank_client::BankClient;
|
use solana_runtime::bank_client::BankClient;
|
||||||
use solana_sdk::client::SyncClient;
|
use solana_sdk::client::SyncClient;
|
||||||
|
@ -908,6 +949,7 @@ mod tests {
|
||||||
node_stakes: vec![999_990; NUM_NODES],
|
node_stakes: vec![999_990; NUM_NODES],
|
||||||
cluster_lamports: 200_000_000,
|
cluster_lamports: 200_000_000,
|
||||||
validator_configs: vec![ValidatorConfig::default(); NUM_NODES],
|
validator_configs: vec![ValidatorConfig::default(); NUM_NODES],
|
||||||
|
native_instruction_processors: vec![solana_move_loader_program!()],
|
||||||
..ClusterConfig::default()
|
..ClusterConfig::default()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -923,57 +965,23 @@ mod tests {
|
||||||
FULLNODE_PORT_RANGE,
|
FULLNODE_PORT_RANGE,
|
||||||
);
|
);
|
||||||
|
|
||||||
let (libra_genesis_keypair, libra_mint_id, libra_pay_program_id) = if config.use_move {
|
|
||||||
let libra_genesis_keypair = create_genesis(&drone_keypair, &client, 1_000_000);
|
|
||||||
let libra_mint_id = upload_mint_program(&drone_keypair, &client);
|
|
||||||
let libra_pay_program_id = upload_payment_program(&drone_keypair, &client);
|
|
||||||
(
|
|
||||||
Arc::new(libra_genesis_keypair),
|
|
||||||
libra_mint_id,
|
|
||||||
libra_pay_program_id,
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
(
|
|
||||||
Arc::new(Keypair::new()),
|
|
||||||
Pubkey::default(),
|
|
||||||
Pubkey::default(),
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
let (addr_sender, addr_receiver) = channel();
|
let (addr_sender, addr_receiver) = channel();
|
||||||
run_local_drone(drone_keypair, addr_sender, None);
|
run_local_drone(drone_keypair, addr_sender, None);
|
||||||
let drone_addr = addr_receiver.recv_timeout(Duration::from_secs(2)).unwrap();
|
let drone_addr = addr_receiver.recv_timeout(Duration::from_secs(2)).unwrap();
|
||||||
|
|
||||||
let lamports_per_account = 100;
|
let lamports_per_account = 100;
|
||||||
|
|
||||||
let libra_keys = if config.use_move {
|
|
||||||
Some((
|
|
||||||
&libra_pay_program_id,
|
|
||||||
&libra_mint_id,
|
|
||||||
&libra_genesis_keypair,
|
|
||||||
))
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
};
|
|
||||||
|
|
||||||
let (keypairs, move_keypairs, _keypair_balance) = generate_and_fund_keypairs(
|
let (keypairs, move_keypairs, _keypair_balance) = generate_and_fund_keypairs(
|
||||||
&client,
|
&client,
|
||||||
Some(drone_addr),
|
Some(drone_addr),
|
||||||
&config.id,
|
&config.id,
|
||||||
config.tx_count,
|
config.tx_count,
|
||||||
lamports_per_account,
|
lamports_per_account,
|
||||||
libra_keys,
|
config.use_move,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let libra_mint_pubkey = libra_genesis_keypair.pubkey();
|
let total = do_bench_tps(vec![client], config, keypairs, 0, move_keypairs);
|
||||||
let move_args = if let Some(keypairs) = move_keypairs {
|
|
||||||
Some((&libra_pay_program_id, &libra_mint_pubkey, keypairs))
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
};
|
|
||||||
|
|
||||||
let total = do_bench_tps(vec![client], config, keypairs, 0, move_args);
|
|
||||||
assert!(total > 100);
|
assert!(total > 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1008,7 +1016,7 @@ mod tests {
|
||||||
config.duration = Duration::from_secs(5);
|
config.duration = Duration::from_secs(5);
|
||||||
|
|
||||||
let (keypairs, _move_keypairs, _keypair_balance) =
|
let (keypairs, _move_keypairs, _keypair_balance) =
|
||||||
generate_and_fund_keypairs(&clients[0], None, &config.id, config.tx_count, 20, None)
|
generate_and_fund_keypairs(&clients[0], None, &config.id, config.tx_count, 20, false)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
do_bench_tps(clients, config, keypairs, 0, None);
|
do_bench_tps(clients, config, keypairs, 0, None);
|
||||||
|
@ -1023,7 +1031,7 @@ mod tests {
|
||||||
let lamports = 20;
|
let lamports = 20;
|
||||||
|
|
||||||
let (keypairs, _move_keypairs, _keypair_balance) =
|
let (keypairs, _move_keypairs, _keypair_balance) =
|
||||||
generate_and_fund_keypairs(&client, None, &id, tx_count, lamports, None).unwrap();
|
generate_and_fund_keypairs(&client, None, &id, tx_count, lamports, false).unwrap();
|
||||||
|
|
||||||
for kp in &keypairs {
|
for kp in &keypairs {
|
||||||
assert_eq!(client.get_balance(&kp.pubkey()).unwrap(), lamports);
|
assert_eq!(client.get_balance(&kp.pubkey()).unwrap(), lamports);
|
||||||
|
@ -1041,7 +1049,7 @@ mod tests {
|
||||||
let lamports = 20;
|
let lamports = 20;
|
||||||
|
|
||||||
let (keypairs, _move_keypairs, _keypair_balance) =
|
let (keypairs, _move_keypairs, _keypair_balance) =
|
||||||
generate_and_fund_keypairs(&client, None, &id, tx_count, lamports, None).unwrap();
|
generate_and_fund_keypairs(&client, None, &id, tx_count, lamports, false).unwrap();
|
||||||
|
|
||||||
let max_fee = client
|
let max_fee = client
|
||||||
.get_recent_blockhash()
|
.get_recent_blockhash()
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
#[cfg(test)]
|
||||||
|
#[macro_use]
|
||||||
|
extern crate solana_move_loader_program;
|
||||||
|
|
||||||
mod bench;
|
mod bench;
|
||||||
mod cli;
|
mod cli;
|
||||||
|
|
||||||
|
@ -79,7 +83,7 @@ fn main() {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
let (keypairs, _move_keypairs, keypair_balance) = if read_from_client_file {
|
let (keypairs, move_keypairs, keypair_balance) = if read_from_client_file && !use_move {
|
||||||
let path = Path::new(&client_ids_and_stake_file);
|
let path = Path::new(&client_ids_and_stake_file);
|
||||||
let file = File::open(path).unwrap();
|
let file = File::open(path).unwrap();
|
||||||
|
|
||||||
|
@ -104,7 +108,7 @@ fn main() {
|
||||||
&id,
|
&id,
|
||||||
tx_count,
|
tx_count,
|
||||||
NUM_LAMPORTS_PER_ACCOUNT,
|
NUM_LAMPORTS_PER_ACCOUNT,
|
||||||
None,
|
use_move,
|
||||||
)
|
)
|
||||||
.unwrap_or_else(|e| {
|
.unwrap_or_else(|e| {
|
||||||
eprintln!("Error could not fund keys: {:?}", e);
|
eprintln!("Error could not fund keys: {:?}", e);
|
||||||
|
@ -122,5 +126,11 @@ fn main() {
|
||||||
use_move,
|
use_move,
|
||||||
};
|
};
|
||||||
|
|
||||||
do_bench_tps(vec![client], config, keypairs, keypair_balance, None);
|
do_bench_tps(
|
||||||
|
vec![client],
|
||||||
|
config,
|
||||||
|
keypairs,
|
||||||
|
keypair_balance,
|
||||||
|
move_keypairs,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,6 @@ 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-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-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" }
|
||||||
|
@ -66,7 +65,6 @@ 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-signer = { path = "../vote-signer", version = "0.18.0-pre0" }
|
solana-vote-signer = { path = "../vote-signer", 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"
|
||||||
tokio-codec = "0.1"
|
tokio-codec = "0.1"
|
||||||
|
|
|
@ -76,6 +76,7 @@ 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)]
|
||||||
|
|
|
@ -156,10 +156,9 @@ impl LocalCluster {
|
||||||
genesis_block
|
genesis_block
|
||||||
.native_instruction_processors
|
.native_instruction_processors
|
||||||
.extend_from_slice(&config.native_instruction_processors);
|
.extend_from_slice(&config.native_instruction_processors);
|
||||||
|
|
||||||
genesis_block
|
genesis_block
|
||||||
.native_instruction_processors
|
.native_instruction_processors
|
||||||
.extend_from_slice(&solana_genesis_programs::get());
|
.push(solana_storage_program!());
|
||||||
|
|
||||||
let storage_keypair = Keypair::new();
|
let storage_keypair = Keypair::new();
|
||||||
genesis_block.accounts.push((
|
genesis_block.accounts.push((
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
//use solana_programs::get_default_native_instruction_processors;
|
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
account::Account,
|
account::Account,
|
||||||
fee_calculator::FeeCalculator,
|
fee_calculator::FeeCalculator,
|
||||||
|
@ -67,7 +66,7 @@ pub fn create_genesis_block_with_leader(
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
])
|
])
|
||||||
// Bare minimum
|
// Bare minimum program set
|
||||||
.native_instruction_processors(&[
|
.native_instruction_processors(&[
|
||||||
solana_bpf_loader_program!(),
|
solana_bpf_loader_program!(),
|
||||||
solana_vote_program!(),
|
solana_vote_program!(),
|
||||||
|
|
Loading…
Reference in New Issue