solana/runtime/src/bank_client.rs

37 lines
1.2 KiB
Rust
Raw Normal View History

2019-03-14 19:42:01 -07:00
use crate::bank::Bank;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::system_instruction::SystemInstruction;
use solana_sdk::transaction::{Script, Transaction, TransactionError};
2019-03-14 19:42:01 -07:00
pub struct BankClient<'a> {
bank: &'a Bank,
keypair: Keypair,
}
impl<'a> BankClient<'a> {
pub fn new(bank: &'a Bank, keypair: Keypair) -> Self {
Self { bank, keypair }
}
pub fn pubkey(&self) -> Pubkey {
self.keypair.pubkey()
}
pub fn process_transaction(&self, mut tx: Transaction) -> Result<(), TransactionError> {
2019-03-14 19:42:01 -07:00
tx.sign(&[&self.keypair], self.bank.last_blockhash());
2019-03-16 16:37:18 -07:00
self.bank.process_transaction(&tx)
}
/// Create and process a transaction.
pub fn process_script(&self, script: Script) -> Result<(), TransactionError> {
self.process_transaction(Transaction::new(script))
}
/// Transfer lamports to pubkey
pub fn transfer(&self, lamports: u64, pubkey: &Pubkey) -> Result<(), TransactionError> {
let move_instruction = SystemInstruction::new_move(&self.pubkey(), pubkey, lamports);
self.process_script(vec![move_instruction])
2019-03-14 19:42:01 -07:00
}
}