From 1a15a68cba805e7a0fbabd478d2f8e61d919ef1b Mon Sep 17 00:00:00 2001 From: Eval EXEC Date: Fri, 13 Sep 2024 17:09:53 +0800 Subject: [PATCH 1/2] `FeeRateCollector::statistics` should skip first cellbase value Signed-off-by: Eval EXEC --- rpc/src/util/fee_rate.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rpc/src/util/fee_rate.rs b/rpc/src/util/fee_rate.rs index ceeb6ab730..2cea14ba15 100644 --- a/rpc/src/util/fee_rate.rs +++ b/rpc/src/util/fee_rate.rs @@ -83,15 +83,19 @@ where target = std::cmp::min(self.provider.max_target(), target); let mut fee_rates = self.provider.collect(target, |mut fee_rates, block_ext| { - if !block_ext.txs_fees.is_empty() + if block_ext.txs_fees.len() > 1 && block_ext.cycles.is_some() && block_ext.txs_sizes.is_some() { + // block_ext.txs_fees, cycles, txs_sizes length is same for (fee, cycles, size) in itertools::izip!( block_ext.txs_fees, block_ext.cycles.expect("checked"), block_ext.txs_sizes.expect("checked") - ) { + ) + // skip cellbase (first element in the Vec) + .skip(1) + { let weight = get_transaction_weight(size as usize, cycles); if weight > 0 { fee_rates.push(FeeRate::calculate(fee, weight).as_u64()); From 92680dc7c3ef727837f34b7f334bb5df9267a9e4 Mon Sep 17 00:00:00 2001 From: Eval EXEC Date: Sat, 14 Sep 2024 12:45:07 +0800 Subject: [PATCH 2/2] Fix ckb-rpc test_fee_rate_statics unit test, first element in txs_fees is belong to cellbase Signed-off-by: Eval EXEC --- rpc/src/tests/fee_rate.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/rpc/src/tests/fee_rate.rs b/rpc/src/tests/fee_rate.rs index 44f37b4771..e4d41ebbef 100644 --- a/rpc/src/tests/fee_rate.rs +++ b/rpc/src/tests/fee_rate.rs @@ -53,9 +53,16 @@ fn test_fee_rate_statics() { total_difficulty: 0u64.into(), total_uncles_count: 0, verified: None, - txs_fees: vec![Capacity::shannons(i * i * 100)], - cycles: Some(vec![i * 100]), - txs_sizes: Some(vec![i * 100]), + + // first element in txs_fees is belong to cellbase + txs_fees: vec![ + Capacity::shannons(i * 1234), + Capacity::shannons(i * i * 100), + ], + // first element in cycles is belong to cellbase + cycles: Some(vec![0, i * 100]), + // first element in txs_sizes is belong to cellbase + txs_sizes: Some(vec![i * 5678, i * 100]), }; provider.append(i, ext); }