Don't fail badly when no transactions in last 100 blocks. (#2856)
This commit is contained in:
parent
5ae87a64b1
commit
a6fd922ffb
@ -194,16 +194,21 @@ pub trait BlockChainClient : Sync + Send {
|
|||||||
fn gas_price_statistics(&self, sample_size: usize, distribution_size: usize) -> Result<Vec<U256>, ()> {
|
fn gas_price_statistics(&self, sample_size: usize, distribution_size: usize) -> Result<Vec<U256>, ()> {
|
||||||
let mut h = self.chain_info().best_block_hash;
|
let mut h = self.chain_info().best_block_hash;
|
||||||
let mut corpus = Vec::new();
|
let mut corpus = Vec::new();
|
||||||
|
while corpus.is_empty() {
|
||||||
for _ in 0..sample_size {
|
for _ in 0..sample_size {
|
||||||
let block_bytes = self.block(BlockID::Hash(h)).expect("h is either the best_block_hash or an ancestor; qed");
|
let block_bytes = self.block(BlockID::Hash(h)).expect("h is either the best_block_hash or an ancestor; qed");
|
||||||
let block = BlockView::new(&block_bytes);
|
let block = BlockView::new(&block_bytes);
|
||||||
let header = block.header_view();
|
let header = block.header_view();
|
||||||
if header.number() == 0 {
|
if header.number() == 0 {
|
||||||
|
if corpus.is_empty() {
|
||||||
|
corpus.push(20_000_000_000u64.into()); // we have literally no information - it' as good a number as any.
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
block.transaction_views().iter().foreach(|t| corpus.push(t.gas_price()));
|
block.transaction_views().iter().foreach(|t| corpus.push(t.gas_price()));
|
||||||
h = header.parent_hash().clone();
|
h = header.parent_hash().clone();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
corpus.sort();
|
corpus.sort();
|
||||||
let n = corpus.len();
|
let n = corpus.len();
|
||||||
if n > 0 {
|
if n > 0 {
|
||||||
|
Loading…
Reference in New Issue
Block a user