Fix invalid Barrier transactions (#3139)
This commit is contained in:
parent
ca99ebaaf4
commit
ec034a5cb9
|
@ -7,6 +7,7 @@ use solana::thin_client::ThinClient;
|
||||||
use solana_drone::drone::request_airdrop_transaction;
|
use solana_drone::drone::request_airdrop_transaction;
|
||||||
use solana_metrics::influxdb;
|
use solana_metrics::influxdb;
|
||||||
use solana_sdk::hash::Hash;
|
use solana_sdk::hash::Hash;
|
||||||
|
use solana_sdk::pubkey::Pubkey;
|
||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
use solana_sdk::system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use solana_sdk::timing::timestamp;
|
use solana_sdk::timing::timestamp;
|
||||||
|
@ -103,7 +104,8 @@ pub fn sample_tx_count(
|
||||||
pub fn send_barrier_transaction(
|
pub fn send_barrier_transaction(
|
||||||
barrier_client: &mut ThinClient,
|
barrier_client: &mut ThinClient,
|
||||||
blockhash: &mut Hash,
|
blockhash: &mut Hash,
|
||||||
id: &Keypair,
|
source_keypair: &Keypair,
|
||||||
|
dest_id: &Pubkey,
|
||||||
) {
|
) {
|
||||||
let transfer_start = Instant::now();
|
let transfer_start = Instant::now();
|
||||||
|
|
||||||
|
@ -118,7 +120,7 @@ pub fn send_barrier_transaction(
|
||||||
|
|
||||||
*blockhash = barrier_client.get_recent_blockhash();
|
*blockhash = barrier_client.get_recent_blockhash();
|
||||||
let signature = barrier_client
|
let signature = barrier_client
|
||||||
.transfer(0, &id, id.pubkey(), blockhash)
|
.transfer(0, &source_keypair, *dest_id, blockhash)
|
||||||
.expect("Unable to send barrier transaction");
|
.expect("Unable to send barrier transaction");
|
||||||
|
|
||||||
let confirmatiom = barrier_client.poll_for_signature(&signature);
|
let confirmatiom = barrier_client.poll_for_signature(&signature);
|
||||||
|
@ -140,7 +142,7 @@ pub fn send_barrier_transaction(
|
||||||
// Sanity check that the client balance is still 1
|
// Sanity check that the client balance is still 1
|
||||||
let balance = barrier_client
|
let balance = barrier_client
|
||||||
.poll_balance_with_timeout(
|
.poll_balance_with_timeout(
|
||||||
&id.pubkey(),
|
&source_keypair.pubkey(),
|
||||||
&Duration::from_millis(100),
|
&Duration::from_millis(100),
|
||||||
&Duration::from_secs(10),
|
&Duration::from_secs(10),
|
||||||
)
|
)
|
||||||
|
|
|
@ -9,7 +9,7 @@ use solana::gen_keys::GenKeys;
|
||||||
use solana::service::Service;
|
use solana::service::Service;
|
||||||
use solana::thin_client::poll_gossip_for_leader;
|
use solana::thin_client::poll_gossip_for_leader;
|
||||||
use solana_metrics;
|
use solana_metrics;
|
||||||
use solana_sdk::signature::KeypairUtil;
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
|
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
|
@ -146,7 +146,8 @@ fn main() {
|
||||||
target /= MAX_SPENDS_PER_TX;
|
target /= MAX_SPENDS_PER_TX;
|
||||||
}
|
}
|
||||||
let gen_keypairs = rnd.gen_n_keypairs(total_keys as u64);
|
let gen_keypairs = rnd.gen_n_keypairs(total_keys as u64);
|
||||||
let barrier_id = rnd.gen_n_keypairs(1).pop().unwrap();
|
let barrier_source_keypair = Keypair::new();
|
||||||
|
let barrier_dest_id = Keypair::new().pubkey();
|
||||||
|
|
||||||
println!("Get tokens...");
|
println!("Get tokens...");
|
||||||
let num_tokens_per_account = 20;
|
let num_tokens_per_account = 20;
|
||||||
|
@ -166,7 +167,7 @@ fn main() {
|
||||||
}
|
}
|
||||||
let start = gen_keypairs.len() - (tx_count * 2) as usize;
|
let start = gen_keypairs.len() - (tx_count * 2) as usize;
|
||||||
let keypairs = &gen_keypairs[start..];
|
let keypairs = &gen_keypairs[start..];
|
||||||
airdrop_tokens(&mut barrier_client, &drone_addr, &barrier_id, 1);
|
airdrop_tokens(&mut barrier_client, &drone_addr, &barrier_source_keypair, 1);
|
||||||
|
|
||||||
println!("Get last ID...");
|
println!("Get last ID...");
|
||||||
let mut blockhash = client.get_recent_blockhash();
|
let mut blockhash = client.get_recent_blockhash();
|
||||||
|
@ -253,7 +254,12 @@ fn main() {
|
||||||
// It's not feasible (would take too much time) to confirm each of the `tx_count / 2`
|
// It's not feasible (would take too much time) to confirm each of the `tx_count / 2`
|
||||||
// transactions sent by `generate_txs()` so instead send and confirm a single transaction
|
// transactions sent by `generate_txs()` so instead send and confirm a single transaction
|
||||||
// to validate the network is still functional.
|
// to validate the network is still functional.
|
||||||
send_barrier_transaction(&mut barrier_client, &mut blockhash, &barrier_id);
|
send_barrier_transaction(
|
||||||
|
&mut barrier_client,
|
||||||
|
&mut blockhash,
|
||||||
|
&barrier_source_keypair,
|
||||||
|
&barrier_dest_id,
|
||||||
|
);
|
||||||
|
|
||||||
i += 1;
|
i += 1;
|
||||||
if should_switch_directions(num_tokens_per_account, i) {
|
if should_switch_directions(num_tokens_per_account, i) {
|
||||||
|
|
Loading…
Reference in New Issue