move overflow into separate error type
This commit is contained in:
parent
a9c897ec7b
commit
4fdf56ccf4
|
@ -127,8 +127,16 @@ impl<'a> BlockRule for BlockCoinbaseClaim<'a> {
|
||||||
|
|
||||||
let claim = self.block.transactions[0].raw.total_spends();
|
let claim = self.block.transactions[0].raw.total_spends();
|
||||||
let (fees, overflow) = available.overflowing_sub(spends);
|
let (fees, overflow) = available.overflowing_sub(spends);
|
||||||
let (reward, overflow2) = fees.overflowing_add(block_reward_satoshi(self.height));
|
if overflow {
|
||||||
if overflow || overflow2 || claim > reward {
|
return Err(Error::TransactionFeesOverflow);
|
||||||
|
}
|
||||||
|
|
||||||
|
let (reward, overflow) = fees.overflowing_add(block_reward_satoshi(self.height));
|
||||||
|
if overflow {
|
||||||
|
return Err(Error::TransactionFeeAndRewardOverflow);
|
||||||
|
}
|
||||||
|
|
||||||
|
if claim > reward {
|
||||||
Err(Error::CoinbaseOverspend { expected_max: reward, actual: claim })
|
Err(Error::CoinbaseOverspend { expected_max: reward, actual: claim })
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -36,6 +36,10 @@ pub enum Error {
|
||||||
NonFinalBlock,
|
NonFinalBlock,
|
||||||
/// Old version block.
|
/// Old version block.
|
||||||
OldVersionBlock,
|
OldVersionBlock,
|
||||||
|
/// Sum of the transaction fees in block + coinbase reward exceeds u64::max
|
||||||
|
TransactionFeeAndRewardOverflow,
|
||||||
|
/// Sum of the transaction fees in block exceeds u64::max
|
||||||
|
TransactionFeesOverflow,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
|
|
Loading…
Reference in New Issue