correct ready transaction condition
This commit is contained in:
		
							parent
							
								
									484b93abdc
								
							
						
					
					
						commit
						197695414e
					
				| @ -236,6 +236,11 @@ impl HeaderChain { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	/// Get the best block's header.
 | ||||||
|  | 	pub fn best_header(&self) -> encoded::Header { | ||||||
|  | 		self.get_header(BlockId::Latest).expect("Header for best block always stored; qed") | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	/// Get the nth CHT root, if it's been computed.
 | 	/// Get the nth CHT root, if it's been computed.
 | ||||||
| 	///
 | 	///
 | ||||||
| 	/// CHT root 0 is from block `1..2048`.
 | 	/// CHT root 0 is from block `1..2048`.
 | ||||||
|  | |||||||
| @ -21,7 +21,6 @@ use ethcore::block_status::BlockStatus; | |||||||
| use ethcore::client::ClientReport; | use ethcore::client::ClientReport; | ||||||
| use ethcore::ids::BlockId; | use ethcore::ids::BlockId; | ||||||
| use ethcore::header::Header; | use ethcore::header::Header; | ||||||
| use ethcore::views::HeaderView; |  | ||||||
| use ethcore::verification::queue::{self, HeaderQueue}; | use ethcore::verification::queue::{self, HeaderQueue}; | ||||||
| use ethcore::transaction::{PendingTransaction, Condition as TransactionCondition}; | use ethcore::transaction::{PendingTransaction, Condition as TransactionCondition}; | ||||||
| use ethcore::blockchain_info::BlockChainInfo; | use ethcore::blockchain_info::BlockChainInfo; | ||||||
| @ -35,7 +34,6 @@ use util::{Bytes, Mutex, RwLock}; | |||||||
| 
 | 
 | ||||||
| use provider::Provider; | use provider::Provider; | ||||||
| use request; | use request; | ||||||
| use time; |  | ||||||
| 
 | 
 | ||||||
| use self::header_chain::HeaderChain; | use self::header_chain::HeaderChain; | ||||||
| 
 | 
 | ||||||
| @ -109,12 +107,12 @@ impl Client { | |||||||
| 
 | 
 | ||||||
| 	/// Fetch a vector of all pending transactions.
 | 	/// Fetch a vector of all pending transactions.
 | ||||||
| 	pub fn ready_transactions(&self) -> Vec<PendingTransaction> { | 	pub fn ready_transactions(&self) -> Vec<PendingTransaction> { | ||||||
| 		let best_num = self.chain.best_block().number; | 		let best = self.chain.best_header(); | ||||||
| 		self.tx_pool.lock() | 		self.tx_pool.lock() | ||||||
| 			.values() | 			.values() | ||||||
| 			.filter(|t| match t.condition { | 			.filter(|t| match t.condition { | ||||||
| 				Some(TransactionCondition::Number(ref x)) => x <= &best_num, | 				Some(TransactionCondition::Number(x)) => x <= best.number(), | ||||||
| 				Some(TransactionCondition::Timestamp(ref x)) => *x <= time::get_time().sec as u64, | 				Some(TransactionCondition::Timestamp(x)) => x <= best.timestamp(), | ||||||
| 				None => true, | 				None => true, | ||||||
| 			}) | 			}) | ||||||
| 			.cloned() | 			.cloned() | ||||||
| @ -131,17 +129,19 @@ impl Client { | |||||||
| 
 | 
 | ||||||
| 	/// Get the chain info.
 | 	/// Get the chain info.
 | ||||||
| 	pub fn chain_info(&self) -> BlockChainInfo { | 	pub fn chain_info(&self) -> BlockChainInfo { | ||||||
| 		let best_block = self.chain.best_block(); | 		let best_hdr = self.chain.best_header(); | ||||||
|  | 		let best_td = self.chain.best_block().total_difficulty; | ||||||
|  | 
 | ||||||
| 		let first_block = self.chain.first_block(); | 		let first_block = self.chain.first_block(); | ||||||
| 		let genesis_hash = self.chain.genesis_hash(); | 		let genesis_hash = self.chain.genesis_hash(); | ||||||
| 
 | 
 | ||||||
| 		BlockChainInfo { | 		BlockChainInfo { | ||||||
| 			total_difficulty: best_block.total_difficulty, | 			total_difficulty: best_td, | ||||||
| 			pending_total_difficulty: best_block.total_difficulty + self.queue.total_difficulty(), | 			pending_total_difficulty: best_td + self.queue.total_difficulty(), | ||||||
| 			genesis_hash: genesis_hash, | 			genesis_hash: genesis_hash, | ||||||
| 			best_block_hash: best_block.hash, | 			best_block_hash: best_hdr.hash(), | ||||||
| 			best_block_number: best_block.number, | 			best_block_number: best_hdr.number(), | ||||||
| 			best_block_timestamp: HeaderView::new(&self.chain.get_header(BlockId::Latest).expect("Latest hash is always in the chain")).timestamp(), | 			best_block_timestamp: best_hdr.timestamp(), | ||||||
| 			ancient_block_hash: if first_block.is_some() { Some(genesis_hash) } else { None }, | 			ancient_block_hash: if first_block.is_some() { Some(genesis_hash) } else { None }, | ||||||
| 			ancient_block_number: if first_block.is_some() { Some(0) } else { None }, | 			ancient_block_number: if first_block.is_some() { Some(0) } else { None }, | ||||||
| 			first_block_hash: first_block.as_ref().map(|first| first.hash), | 			first_block_hash: first_block.as_ref().map(|first| first.hash), | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user