Fix invalid Barrier transactions (#3139)

This commit is contained in:
Sagar Dhawan 2019-03-05 15:16:36 -08:00 committed by GitHub
parent ca99ebaaf4
commit ec034a5cb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 7 deletions

View File

@ -7,6 +7,7 @@ use solana::thin_client::ThinClient;
use solana_drone::drone::request_airdrop_transaction;
use solana_metrics::influxdb;
use solana_sdk::hash::Hash;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::system_transaction::SystemTransaction;
use solana_sdk::timing::timestamp;
@ -103,7 +104,8 @@ pub fn sample_tx_count(
pub fn send_barrier_transaction(
barrier_client: &mut ThinClient,
blockhash: &mut Hash,
id: &Keypair,
source_keypair: &Keypair,
dest_id: &Pubkey,
) {
let transfer_start = Instant::now();
@ -118,7 +120,7 @@ pub fn send_barrier_transaction(
*blockhash = barrier_client.get_recent_blockhash();
let signature = barrier_client
.transfer(0, &id, id.pubkey(), blockhash)
.transfer(0, &source_keypair, *dest_id, blockhash)
.expect("Unable to send barrier transaction");
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
let balance = barrier_client
.poll_balance_with_timeout(
&id.pubkey(),
&source_keypair.pubkey(),
&Duration::from_millis(100),
&Duration::from_secs(10),
)

View File

@ -9,7 +9,7 @@ use solana::gen_keys::GenKeys;
use solana::service::Service;
use solana::thin_client::poll_gossip_for_leader;
use solana_metrics;
use solana_sdk::signature::KeypairUtil;
use solana_sdk::signature::{Keypair, KeypairUtil};
use std::collections::VecDeque;
use std::process::exit;
@ -146,7 +146,8 @@ fn main() {
target /= MAX_SPENDS_PER_TX;
}
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...");
let num_tokens_per_account = 20;
@ -166,7 +167,7 @@ fn main() {
}
let start = gen_keypairs.len() - (tx_count * 2) as usize;
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...");
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`
// transactions sent by `generate_txs()` so instead send and confirm a single transaction
// 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;
if should_switch_directions(num_tokens_per_account, i) {