Move system_transaction out of src/
This commit is contained in:
@ -7,9 +7,9 @@ extern crate test;
|
|||||||
|
|
||||||
use solana::bank::*;
|
use solana::bank::*;
|
||||||
use solana::mint::Mint;
|
use solana::mint::Mint;
|
||||||
use solana::system_transaction::SystemTransaction;
|
|
||||||
use solana_sdk::hash::hash;
|
use solana_sdk::hash::hash;
|
||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use test::Bencher;
|
use test::Bencher;
|
||||||
|
|
||||||
|
@ -13,10 +13,10 @@ use solana::banking_stage::{BankingStage, NUM_THREADS};
|
|||||||
use solana::entry::Entry;
|
use solana::entry::Entry;
|
||||||
use solana::mint::Mint;
|
use solana::mint::Mint;
|
||||||
use solana::packet::to_packets_chunked;
|
use solana::packet::to_packets_chunked;
|
||||||
use solana::system_transaction::SystemTransaction;
|
|
||||||
use solana_sdk::hash::hash;
|
use solana_sdk::hash::hash;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
use solana_sdk::pubkey::Pubkey;
|
||||||
use solana_sdk::signature::{KeypairUtil, Signature};
|
use solana_sdk::signature::{KeypairUtil, Signature};
|
||||||
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use std::iter;
|
use std::iter;
|
||||||
use std::sync::mpsc::{channel, Receiver};
|
use std::sync::mpsc::{channel, Receiver};
|
||||||
|
@ -5,9 +5,9 @@ extern crate test;
|
|||||||
|
|
||||||
use solana::entry::reconstruct_entries_from_blobs;
|
use solana::entry::reconstruct_entries_from_blobs;
|
||||||
use solana::ledger::{next_entries, Block};
|
use solana::ledger::{next_entries, Block};
|
||||||
use solana::system_transaction::SystemTransaction;
|
|
||||||
use solana_sdk::hash::{hash, Hash};
|
use solana_sdk::hash::{hash, Hash};
|
||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use test::Bencher;
|
use test::Bencher;
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ extern crate test;
|
|||||||
|
|
||||||
use solana::packet::to_packets;
|
use solana::packet::to_packets;
|
||||||
use solana::sigverify;
|
use solana::sigverify;
|
||||||
use solana::system_transaction::test_tx;
|
use solana::test_tx::test_tx;
|
||||||
use test::Bencher;
|
use test::Bencher;
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
|
@ -16,6 +16,7 @@ pub mod signature;
|
|||||||
pub mod storage_program;
|
pub mod storage_program;
|
||||||
pub mod system_instruction;
|
pub mod system_instruction;
|
||||||
pub mod system_program;
|
pub mod system_program;
|
||||||
|
pub mod system_transaction;
|
||||||
pub mod timing;
|
pub mod timing;
|
||||||
pub mod token_program;
|
pub mod token_program;
|
||||||
pub mod transaction;
|
pub mod transaction;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
//! The `system_transaction` module provides functionality for creating system transactions.
|
//! The `system_transaction` module provides functionality for creating system transactions.
|
||||||
|
|
||||||
use solana_sdk::hash::Hash;
|
use hash::Hash;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
use pubkey::Pubkey;
|
||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use signature::Keypair;
|
||||||
use solana_sdk::system_instruction::SystemInstruction;
|
use system_instruction::SystemInstruction;
|
||||||
use solana_sdk::system_program;
|
use system_program;
|
||||||
use solana_sdk::transaction::{Instruction, Transaction};
|
use transaction::{Instruction, Transaction};
|
||||||
|
|
||||||
pub trait SystemTransaction {
|
pub trait SystemTransaction {
|
||||||
fn system_create(
|
fn system_create(
|
||||||
@ -133,82 +133,11 @@ impl SystemTransaction for Transaction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn test_tx() -> Transaction {
|
|
||||||
let keypair1 = Keypair::new();
|
|
||||||
let pubkey1 = keypair1.pubkey();
|
|
||||||
let zero = Hash::default();
|
|
||||||
Transaction::system_new(&keypair1, pubkey1, 42, zero)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
pub fn memfind<A: Eq>(a: &[A], b: &[A]) -> Option<usize> {
|
|
||||||
assert!(a.len() >= b.len());
|
|
||||||
let end = a.len() - b.len() + 1;
|
|
||||||
for i in 0..end {
|
|
||||||
if a[i..i + b.len()] == b[..] {
|
|
||||||
return Some(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use bincode::{deserialize, serialize};
|
use signature::KeypairUtil;
|
||||||
use packet::PACKET_DATA_SIZE;
|
|
||||||
use sigverify;
|
|
||||||
use solana_sdk::transaction::SIG_OFFSET;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_layout() {
|
|
||||||
let tx = test_tx();
|
|
||||||
let tx_bytes = serialize(&tx).unwrap();
|
|
||||||
let sign_data = tx.get_sign_data();
|
|
||||||
let packet = sigverify::make_packet_from_transaction(tx.clone());
|
|
||||||
|
|
||||||
let (sig_len, sig_start, msg_start_offset, pubkey_offset) =
|
|
||||||
sigverify::get_packet_offsets(&packet, 0);
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
memfind(&tx_bytes, &tx.signatures[0].as_ref()),
|
|
||||||
Some(SIG_OFFSET)
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
memfind(&tx_bytes, &tx.account_keys[0].as_ref()),
|
|
||||||
Some(pubkey_offset as usize)
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
memfind(&tx_bytes, &sign_data),
|
|
||||||
Some(msg_start_offset as usize)
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
memfind(&tx_bytes, &tx.signatures[0].as_ref()),
|
|
||||||
Some(sig_start as usize)
|
|
||||||
);
|
|
||||||
assert_eq!(sig_len, 1);
|
|
||||||
assert!(tx.verify_signature());
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_userdata_layout() {
|
|
||||||
let mut tx0 = test_tx();
|
|
||||||
tx0.instructions[0].userdata = vec![1, 2, 3];
|
|
||||||
let sign_data0a = tx0.get_sign_data();
|
|
||||||
let tx_bytes = serialize(&tx0).unwrap();
|
|
||||||
assert!(tx_bytes.len() < PACKET_DATA_SIZE);
|
|
||||||
assert_eq!(
|
|
||||||
memfind(&tx_bytes, &tx0.signatures[0].as_ref()),
|
|
||||||
Some(SIG_OFFSET)
|
|
||||||
);
|
|
||||||
let tx1 = deserialize(&tx_bytes).unwrap();
|
|
||||||
assert_eq!(tx0, tx1);
|
|
||||||
assert_eq!(tx1.instructions[0].userdata, vec![1, 2, 3]);
|
|
||||||
|
|
||||||
tx0.instructions[0].userdata = vec![1, 2, 4];
|
|
||||||
let sign_data0b = tx0.get_sign_data();
|
|
||||||
assert_ne!(sign_data0a, sign_data0b);
|
|
||||||
}
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_move_many() {
|
fn test_move_many() {
|
||||||
let from = Keypair::new();
|
let from = Keypair::new();
|
@ -41,7 +41,7 @@ use std::result;
|
|||||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||||
use std::sync::{Arc, Mutex, RwLock};
|
use std::sync::{Arc, Mutex, RwLock};
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use tokio::prelude::Future;
|
use tokio::prelude::Future;
|
||||||
|
|
||||||
/// The number of most recent `last_id` values that the bank will track the signatures
|
/// The number of most recent `last_id` values that the bank will track the signatures
|
||||||
@ -1433,7 +1433,7 @@ mod tests {
|
|||||||
use solana_sdk::signature::KeypairUtil;
|
use solana_sdk::signature::KeypairUtil;
|
||||||
use solana_sdk::transaction::Instruction;
|
use solana_sdk::transaction::Instruction;
|
||||||
use std;
|
use std;
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use tokio::prelude::{Async, Stream};
|
use tokio::prelude::{Async, Stream};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -258,7 +258,7 @@ mod tests {
|
|||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_banking_stage_shutdown1() {
|
fn test_banking_stage_shutdown1() {
|
||||||
|
@ -16,13 +16,13 @@ use solana::logger;
|
|||||||
use solana::ncp::Ncp;
|
use solana::ncp::Ncp;
|
||||||
use solana::service::Service;
|
use solana::service::Service;
|
||||||
use solana::signature::GenKeys;
|
use solana::signature::GenKeys;
|
||||||
use solana::system_transaction::SystemTransaction;
|
|
||||||
use solana::thin_client::{poll_gossip_for_leader, ThinClient};
|
use solana::thin_client::{poll_gossip_for_leader, ThinClient};
|
||||||
use solana::window::default_window;
|
use solana::window::default_window;
|
||||||
use solana_drone::drone::{request_airdrop_transaction, DRONE_PORT};
|
use solana_drone::drone::{request_airdrop_transaction, DRONE_PORT};
|
||||||
use solana_metrics::influxdb;
|
use solana_metrics::influxdb;
|
||||||
use solana_sdk::hash::Hash;
|
use solana_sdk::hash::Hash;
|
||||||
use solana_sdk::signature::{read_keypair, Keypair, KeypairUtil};
|
use solana_sdk::signature::{read_keypair, Keypair, KeypairUtil};
|
||||||
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use solana_sdk::timing::timestamp;
|
use solana_sdk::timing::timestamp;
|
||||||
use solana_sdk::timing::{duration_as_ms, duration_as_s};
|
use solana_sdk::timing::{duration_as_ms, duration_as_s};
|
||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
|
@ -233,7 +233,7 @@ mod test {
|
|||||||
use contact_info::ContactInfo;
|
use contact_info::ContactInfo;
|
||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
use solana_sdk::timing::timestamp;
|
use solana_sdk::timing::timestamp;
|
||||||
use system_transaction::test_tx;
|
use test_tx::test_tx;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_labels() {
|
fn test_labels() {
|
||||||
|
@ -278,7 +278,7 @@ mod tests {
|
|||||||
use solana_sdk::hash::hash;
|
use solana_sdk::hash::hash;
|
||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_entry_verify() {
|
fn test_entry_verify() {
|
||||||
|
@ -15,7 +15,7 @@ use solana_sdk::vote_program::{self, Vote, VoteProgram};
|
|||||||
use solana_sdk::vote_transaction::VoteTransaction;
|
use solana_sdk::vote_transaction::VoteTransaction;
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::io::Cursor;
|
use std::io::Cursor;
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
|
|
||||||
pub const DEFAULT_BOOTSTRAP_HEIGHT: u64 = 1000;
|
pub const DEFAULT_BOOTSTRAP_HEIGHT: u64 = 1000;
|
||||||
pub const DEFAULT_LEADER_ROTATION_INTERVAL: u64 = 100;
|
pub const DEFAULT_LEADER_ROTATION_INTERVAL: u64 = 100;
|
||||||
|
@ -66,7 +66,7 @@ pub mod sigverify_stage;
|
|||||||
pub mod storage_stage;
|
pub mod storage_stage;
|
||||||
pub mod store_ledger_stage;
|
pub mod store_ledger_stage;
|
||||||
pub mod streamer;
|
pub mod streamer;
|
||||||
pub mod system_transaction;
|
pub mod test_tx;
|
||||||
pub mod thin_client;
|
pub mod thin_client;
|
||||||
pub mod tpu;
|
pub mod tpu;
|
||||||
pub mod tpu_forwarder;
|
pub mod tpu_forwarder;
|
||||||
|
@ -6,7 +6,7 @@ use solana_sdk::hash::{hash, Hash};
|
|||||||
use solana_sdk::pubkey::Pubkey;
|
use solana_sdk::pubkey::Pubkey;
|
||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use untrusted::Input;
|
use untrusted::Input;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
|
@ -473,7 +473,7 @@ mod tests {
|
|||||||
use std::io;
|
use std::io;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use std::net::UdpSocket;
|
use std::net::UdpSocket;
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
pub fn packet_send_recv() {
|
pub fn packet_send_recv() {
|
||||||
|
@ -122,7 +122,7 @@ mod tests {
|
|||||||
use solana_sdk::hash::hash;
|
use solana_sdk::hash::hash;
|
||||||
use std::sync::mpsc::channel;
|
use std::sync::mpsc::channel;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use system_transaction::test_tx;
|
use test_tx::test_tx;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_poh() {
|
fn test_poh() {
|
||||||
|
@ -378,7 +378,7 @@ mod tests {
|
|||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use std::fs::remove_dir_all;
|
use std::fs::remove_dir_all;
|
||||||
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
|
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
|
|
||||||
fn start_rpc_handler_with_tx(pubkey: Pubkey) -> (MetaIoHandler<Meta>, Meta, Hash, Keypair) {
|
fn start_rpc_handler_with_tx(pubkey: Pubkey) -> (MetaIoHandler<Meta>, Meta, Hash, Keypair) {
|
||||||
let alice = Mint::new(10_000);
|
let alice = Mint::new(10_000);
|
||||||
|
@ -253,7 +253,7 @@ mod tests {
|
|||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use std::net::{IpAddr, Ipv4Addr};
|
use std::net::{IpAddr, Ipv4Addr};
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use tokio::prelude::{Async, Stream};
|
use tokio::prelude::{Async, Stream};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -322,7 +322,7 @@ pub fn make_packet_from_transaction(tx: Transaction) -> Packet {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use bincode::serialize;
|
use bincode::{deserialize, serialize};
|
||||||
use packet::{Packet, SharedPackets};
|
use packet::{Packet, SharedPackets};
|
||||||
use sigverify;
|
use sigverify;
|
||||||
use solana_sdk::budget_program;
|
use solana_sdk::budget_program;
|
||||||
@ -330,8 +330,19 @@ mod tests {
|
|||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
use solana_sdk::system_instruction::SystemInstruction;
|
use solana_sdk::system_instruction::SystemInstruction;
|
||||||
use solana_sdk::system_program;
|
use solana_sdk::system_program;
|
||||||
use solana_sdk::transaction::{Instruction, Transaction};
|
use solana_sdk::transaction::{Instruction, Transaction, SIG_OFFSET};
|
||||||
use system_transaction::{memfind, test_tx};
|
use test_tx::test_tx;
|
||||||
|
|
||||||
|
pub fn memfind<A: Eq>(a: &[A], b: &[A]) -> Option<usize> {
|
||||||
|
assert!(a.len() >= b.len());
|
||||||
|
let end = a.len() - b.len() + 1;
|
||||||
|
for i in 0..end {
|
||||||
|
if a[i..i + b.len()] == b[..] {
|
||||||
|
return Some(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_layout() {
|
fn test_layout() {
|
||||||
@ -342,6 +353,57 @@ mod tests {
|
|||||||
assert_matches!(memfind(&packet, &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), None);
|
assert_matches!(memfind(&packet, &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), None);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_system_transaction_layout() {
|
||||||
|
let tx = test_tx();
|
||||||
|
let tx_bytes = serialize(&tx).unwrap();
|
||||||
|
let sign_data = tx.get_sign_data();
|
||||||
|
let packet = sigverify::make_packet_from_transaction(tx.clone());
|
||||||
|
|
||||||
|
let (sig_len, sig_start, msg_start_offset, pubkey_offset) =
|
||||||
|
sigverify::get_packet_offsets(&packet, 0);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
memfind(&tx_bytes, &tx.signatures[0].as_ref()),
|
||||||
|
Some(SIG_OFFSET)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
memfind(&tx_bytes, &tx.account_keys[0].as_ref()),
|
||||||
|
Some(pubkey_offset as usize)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
memfind(&tx_bytes, &sign_data),
|
||||||
|
Some(msg_start_offset as usize)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
memfind(&tx_bytes, &tx.signatures[0].as_ref()),
|
||||||
|
Some(sig_start as usize)
|
||||||
|
);
|
||||||
|
assert_eq!(sig_len, 1);
|
||||||
|
assert!(tx.verify_signature());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_system_transaction_userdata_layout() {
|
||||||
|
use packet::PACKET_DATA_SIZE;
|
||||||
|
let mut tx0 = test_tx();
|
||||||
|
tx0.instructions[0].userdata = vec![1, 2, 3];
|
||||||
|
let sign_data0a = tx0.get_sign_data();
|
||||||
|
let tx_bytes = serialize(&tx0).unwrap();
|
||||||
|
assert!(tx_bytes.len() < PACKET_DATA_SIZE);
|
||||||
|
assert_eq!(
|
||||||
|
memfind(&tx_bytes, &tx0.signatures[0].as_ref()),
|
||||||
|
Some(SIG_OFFSET)
|
||||||
|
);
|
||||||
|
let tx1 = deserialize(&tx_bytes).unwrap();
|
||||||
|
assert_eq!(tx0, tx1);
|
||||||
|
assert_eq!(tx1.instructions[0].userdata, vec![1, 2, 3]);
|
||||||
|
|
||||||
|
tx0.instructions[0].userdata = vec![1, 2, 4];
|
||||||
|
let sign_data0b = tx0.get_sign_data();
|
||||||
|
assert_ne!(sign_data0a, sign_data0b);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_get_packet_offsets() {
|
fn test_get_packet_offsets() {
|
||||||
let tx = test_tx();
|
let tx = test_tx();
|
||||||
|
11
src/test_tx.rs
Normal file
11
src/test_tx.rs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
use solana_sdk::hash::Hash;
|
||||||
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
|
use solana_sdk::system_transaction::*;
|
||||||
|
use solana_sdk::transaction::Transaction;
|
||||||
|
|
||||||
|
pub fn test_tx() -> Transaction {
|
||||||
|
let keypair1 = Keypair::new();
|
||||||
|
let pubkey1 = keypair1.pubkey();
|
||||||
|
let zero = Hash::default();
|
||||||
|
Transaction::system_new(&keypair1, pubkey1, 42, zero)
|
||||||
|
}
|
@ -30,7 +30,7 @@ use std::sync::{Arc, RwLock};
|
|||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
|
|
||||||
/// An object for querying and sending transactions to the network.
|
/// An object for querying and sending transactions to the network.
|
||||||
pub struct ThinClient {
|
pub struct ThinClient {
|
||||||
|
@ -187,7 +187,7 @@ pub mod tests {
|
|||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use streamer;
|
use streamer;
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use tvu::Tvu;
|
use tvu::Tvu;
|
||||||
use window::{self, SharedWindow};
|
use window::{self, SharedWindow};
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ use std::str::FromStr;
|
|||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use std::{error, fmt, mem};
|
use std::{error, fmt, mem};
|
||||||
use system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use thin_client::poll_gossip_for_leader;
|
use thin_client::poll_gossip_for_leader;
|
||||||
|
|
||||||
const PLATFORM_SECTION_C: &str = ".text.entrypoint";
|
const PLATFORM_SECTION_C: &str = ".text.entrypoint";
|
||||||
|
@ -24,12 +24,12 @@ use solana::packet::SharedBlob;
|
|||||||
use solana::poh_service::NUM_TICKS_PER_SECOND;
|
use solana::poh_service::NUM_TICKS_PER_SECOND;
|
||||||
use solana::result;
|
use solana::result;
|
||||||
use solana::service::Service;
|
use solana::service::Service;
|
||||||
use solana::system_transaction::SystemTransaction;
|
|
||||||
use solana::thin_client::{retry_get_balance, ThinClient};
|
use solana::thin_client::{retry_get_balance, ThinClient};
|
||||||
use solana::window::default_window;
|
use solana::window::default_window;
|
||||||
use solana_sdk::hash::Hash;
|
use solana_sdk::hash::Hash;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
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::timing::{duration_as_ms, duration_as_s};
|
use solana_sdk::timing::{duration_as_ms, duration_as_s};
|
||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use std::collections::{HashSet, VecDeque};
|
use std::collections::{HashSet, VecDeque};
|
||||||
|
@ -8,12 +8,12 @@ use solana::bank::Bank;
|
|||||||
use solana::logger;
|
use solana::logger;
|
||||||
use solana::mint::Mint;
|
use solana::mint::Mint;
|
||||||
use solana::native_loader;
|
use solana::native_loader;
|
||||||
use solana::system_transaction::SystemTransaction;
|
|
||||||
#[cfg(feature = "bpf_c")]
|
#[cfg(feature = "bpf_c")]
|
||||||
use solana_sdk::bpf_loader;
|
use solana_sdk::bpf_loader;
|
||||||
use solana_sdk::loader_transaction::LoaderTransaction;
|
use solana_sdk::loader_transaction::LoaderTransaction;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
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::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
#[cfg(feature = "bpf_c")]
|
#[cfg(feature = "bpf_c")]
|
||||||
use std::env;
|
use std::env;
|
||||||
|
Reference in New Issue
Block a user