diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index 1a741362e5..73c13fc74e 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -16,11 +16,11 @@ use crate::service::Service; use crate::sigverify_stage::VerifiedPackets; use bincode::deserialize; use solana_metrics::counter::Counter; -use solana_runtime::bank::{self, Bank}; +use solana_runtime::bank::Bank; use solana_runtime::locked_accounts_results::LockedAccountsResults; use solana_sdk::pubkey::Pubkey; use solana_sdk::timing::{self, duration_as_us, MAX_RECENT_BLOCKHASHES}; -use solana_sdk::transaction::{Transaction, TransactionError}; +use solana_sdk::transaction::{self, Transaction, TransactionError}; use std::net::UdpSocket; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::mpsc::{Receiver, RecvTimeoutError}; @@ -220,7 +220,7 @@ impl BankingStage { fn record_transactions( bank_slot: u64, txs: &[Transaction], - results: &[bank::Result<()>], + results: &[transaction::Result<()>], poh: &Arc>, ) -> Result<()> { let processed_transactions: Vec<_> = results diff --git a/core/src/blocktree_processor.rs b/core/src/blocktree_processor.rs index 80641489be..8d4543928d 100644 --- a/core/src/blocktree_processor.rs +++ b/core/src/blocktree_processor.rs @@ -4,11 +4,12 @@ use crate::entry::{Entry, EntrySlice}; use crate::leader_schedule_utils; use rayon::prelude::*; use solana_metrics::counter::Counter; -use solana_runtime::bank::{Bank, Result}; +use solana_runtime::bank::Bank; use solana_runtime::locked_accounts_results::LockedAccountsResults; use solana_sdk::genesis_block::GenesisBlock; use solana_sdk::timing::duration_as_ms; use solana_sdk::timing::MAX_RECENT_BLOCKHASHES; +use solana_sdk::transaction::Result; use std::result; use std::sync::Arc; use std::time::Instant; diff --git a/core/src/rpc.rs b/core/src/rpc.rs index ca1bed17c4..eff8736547 100644 --- a/core/src/rpc.rs +++ b/core/src/rpc.rs @@ -10,11 +10,11 @@ use jsonrpc_core::{Error, Metadata, Result}; use jsonrpc_derive::rpc; use solana_client::rpc_signature_status::RpcSignatureStatus; use solana_drone::drone::request_airdrop_transaction; -use solana_runtime::bank; +use solana_runtime::bank::Bank; use solana_sdk::account::Account; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::Signature; -use solana_sdk::transaction::{Transaction, TransactionError}; +use solana_sdk::transaction::{self, Transaction, TransactionError}; use std::mem; use std::net::{SocketAddr, UdpSocket}; use std::sync::atomic::{AtomicBool, Ordering}; @@ -46,7 +46,7 @@ pub struct JsonRpcRequestProcessor { } impl JsonRpcRequestProcessor { - fn bank(&self) -> Arc { + fn bank(&self) -> Arc { self.bank_forks.read().unwrap().working_bank() } @@ -79,7 +79,7 @@ impl JsonRpcRequestProcessor { bs58::encode(id).into_string() } - pub fn get_signature_status(&self, signature: Signature) -> Option> { + pub fn get_signature_status(&self, signature: Signature) -> Option> { self.get_signature_confirmation_status(signature) .map(|x| x.1) } @@ -92,7 +92,7 @@ impl JsonRpcRequestProcessor { pub fn get_signature_confirmation_status( &self, signature: Signature, - ) -> Option<(usize, bank::Result<()>)> { + ) -> Option<(usize, transaction::Result<()>)> { self.bank().get_signature_confirmation_status(&signature) } @@ -731,7 +731,7 @@ mod tests { fn new_bank_forks() -> (Arc>, Keypair) { let (genesis_block, alice) = GenesisBlock::new(10_000); - let bank = bank::Bank::new(&genesis_block); + let bank = Bank::new(&genesis_block); ( Arc::new(RwLock::new(BankForks::new(bank.slot(), bank))), alice, diff --git a/core/src/rpc_pubsub.rs b/core/src/rpc_pubsub.rs index 84ba7a9c40..73a3939a01 100644 --- a/core/src/rpc_pubsub.rs +++ b/core/src/rpc_pubsub.rs @@ -228,12 +228,12 @@ mod tests { use jsonrpc_pubsub::{PubSubHandler, Session}; use solana_budget_api; use solana_budget_api::budget_instruction; - use solana_runtime::bank::{self, Bank}; + use solana_runtime::bank::Bank; use solana_sdk::genesis_block::GenesisBlock; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::system_transaction; - use solana_sdk::transaction::Transaction; + use solana_sdk::transaction::{self, Transaction}; use std::thread::sleep; use std::time::Duration; use tokio::prelude::{Async, Stream}; @@ -242,7 +242,7 @@ mod tests { bank: &Arc, tx: &Transaction, subscriptions: &RpcSubscriptions, - ) -> bank::Result> { + ) -> transaction::Result> { bank.process_transaction(tx)?; subscriptions.notify_subscribers(&bank); diff --git a/core/src/rpc_subscriptions.rs b/core/src/rpc_subscriptions.rs index b680c345ea..80d7d3aeab 100644 --- a/core/src/rpc_subscriptions.rs +++ b/core/src/rpc_subscriptions.rs @@ -6,11 +6,11 @@ use jsonrpc_core::futures::Future; use jsonrpc_pubsub::typed::Sink; use jsonrpc_pubsub::SubscriptionId; use solana_client::rpc_signature_status::RpcSignatureStatus; -use solana_runtime::bank::{self, Bank}; +use solana_runtime::bank::Bank; use solana_sdk::account::Account; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::Signature; -use solana_sdk::transaction::TransactionError; +use solana_sdk::transaction::{self, TransactionError}; use std::collections::HashMap; use std::sync::RwLock; @@ -96,7 +96,7 @@ impl RpcSubscriptions { } } - pub fn check_signature(&self, signature: &Signature, bank_error: &bank::Result<()>) { + pub fn check_signature(&self, signature: &Signature, bank_error: &transaction::Result<()>) { let status = match bank_error { Ok(_) => RpcSignatureStatus::Confirmed, Err(TransactionError::AccountInUse) => RpcSignatureStatus::AccountInUse, diff --git a/programs/vote_api/src/vote_processor.rs b/programs/vote_api/src/vote_processor.rs index a72aa3e33e..45c7769884 100644 --- a/programs/vote_api/src/vote_processor.rs +++ b/programs/vote_api/src/vote_processor.rs @@ -47,7 +47,7 @@ mod tests { use crate::id; use crate::vote_instruction::{self, Vote}; use crate::vote_state::VoteState; - use solana_runtime::bank::{Bank, Result}; + use solana_runtime::bank::Bank; use solana_runtime::bank_client::BankClient; use solana_sdk::genesis_block::GenesisBlock; use solana_sdk::instruction::InstructionError; @@ -56,7 +56,7 @@ mod tests { use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::sync_client::SyncClient; use solana_sdk::system_instruction; - use solana_sdk::transaction::TransactionError; + use solana_sdk::transaction::{Result, TransactionError}; fn create_bank(lamports: u64) -> (Bank, Keypair) { let (genesis_block, mint_keypair) = GenesisBlock::new(lamports); diff --git a/runtime/src/accounts.rs b/runtime/src/accounts.rs index 0820a0dec7..a71becb6af 100644 --- a/runtime/src/accounts.rs +++ b/runtime/src/accounts.rs @@ -1,5 +1,4 @@ use crate::append_vec::AppendVec; -use crate::bank::Result; use crate::message_processor::has_duplicates; use bincode::serialize; use hashbrown::{HashMap, HashSet}; @@ -12,6 +11,7 @@ use solana_sdk::hash::{hash, Hash}; use solana_sdk::native_loader; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::{Keypair, KeypairUtil}; +use solana_sdk::transaction::Result; use solana_sdk::transaction::{Transaction, TransactionError}; use solana_vote_api; use std::collections::BTreeMap; diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 45c5ad1d70..35483bea0c 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -22,10 +22,9 @@ use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::{Keypair, Signature}; use solana_sdk::system_transaction; use solana_sdk::timing::{duration_as_ms, duration_as_us, MAX_RECENT_BLOCKHASHES}; -use solana_sdk::transaction::{Transaction, TransactionError}; +use solana_sdk::transaction::{Result, Transaction, TransactionError}; use solana_vote_api::vote_instruction::Vote; use solana_vote_api::vote_state::{Lockout, VoteState}; -use std::result; use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; use std::sync::{Arc, RwLock}; use std::time::Instant; @@ -106,8 +105,6 @@ impl EpochSchedule { } } -pub type Result = result::Result; - type BankStatusCache = StatusCache>; /// Manager for the state of all accounts and programs after processing its entries. diff --git a/runtime/src/bank_client.rs b/runtime/src/bank_client.rs index c2452eec31..bd4fd694ad 100644 --- a/runtime/src/bank_client.rs +++ b/runtime/src/bank_client.rs @@ -7,7 +7,7 @@ use solana_sdk::signature::Signature; use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::sync_client::SyncClient; use solana_sdk::system_instruction; -use solana_sdk::transaction::Transaction; +use solana_sdk::transaction::{self, Transaction}; use solana_sdk::transport::Result; use std::io; @@ -79,6 +79,13 @@ impl<'a> SyncClient for BankClient<'a> { fn get_balance(&self, pubkey: &Pubkey) -> Result { Ok(self.bank.get_balance(pubkey)) } + + fn get_signature_status( + &self, + signature: &Signature, + ) -> Result>> { + Ok(self.bank.get_signature_status(signature)) + } } impl<'a> BankClient<'a> { diff --git a/runtime/src/locked_accounts_results.rs b/runtime/src/locked_accounts_results.rs index 98d8845698..e0e8b2bbce 100644 --- a/runtime/src/locked_accounts_results.rs +++ b/runtime/src/locked_accounts_results.rs @@ -1,5 +1,5 @@ -use crate::bank::{Bank, Result}; -use solana_sdk::transaction::Transaction; +use crate::bank::Bank; +use solana_sdk::transaction::{Result, Transaction}; // Represents the results of trying to lock a set of accounts pub struct LockedAccountsResults<'a, 'b> { diff --git a/sdk/src/sync_client.rs b/sdk/src/sync_client.rs index bb42791269..adb2a6226c 100644 --- a/sdk/src/sync_client.rs +++ b/sdk/src/sync_client.rs @@ -6,6 +6,7 @@ use crate::instruction::Instruction; use crate::message::Message; use crate::pubkey::Pubkey; use crate::signature::{Keypair, Signature}; +use crate::transaction; use crate::transport::Result; pub trait SyncClient { @@ -26,4 +27,10 @@ pub trait SyncClient { /// Get account balance or 0 if not found. fn get_balance(&self, pubkey: &Pubkey) -> Result; + + /// Get signature status. + fn get_signature_status( + &self, + signature: &Signature, + ) -> Result>>; } diff --git a/sdk/src/transaction.rs b/sdk/src/transaction.rs index a65f517ed3..5b0e249db2 100644 --- a/sdk/src/transaction.rs +++ b/sdk/src/transaction.rs @@ -7,6 +7,7 @@ use crate::pubkey::Pubkey; use crate::short_vec; use crate::signature::{KeypairUtil, Signature}; use bincode::serialize; +use std::result; /// Reasons a transaction might be rejected. #[derive(Debug, PartialEq, Eq, Clone)] @@ -46,6 +47,8 @@ pub enum TransactionError { InvalidAccountIndex, } +pub type Result = result::Result; + /// An atomic transaction #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub struct Transaction {