mirror of
https://github.com/mimblewimble/grin.git
synced 2025-02-01 17:01:09 +03:00
cleanup verify_coinbase on block (#1326)
This commit is contained in:
parent
f0bdb2c8fa
commit
328d832bd6
1 changed files with 16 additions and 15 deletions
|
@ -776,12 +776,9 @@ impl Block {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Validate the coinbase outputs generated by miners. Entails 2 main
|
/// Validate the coinbase outputs generated by miners.
|
||||||
/// checks:
|
/// Check the sum of coinbase-marked outputs match
|
||||||
///
|
/// the sum of coinbase-marked kernels accounting for fees.
|
||||||
/// * That the sum of all coinbase-marked outputs equal the supply.
|
|
||||||
/// * That the sum of blinding factors for all coinbase-marked outputs match
|
|
||||||
/// the coinbase-marked kernels.
|
|
||||||
pub fn verify_coinbase(&self) -> Result<(), Error> {
|
pub fn verify_coinbase(&self) -> Result<(), Error> {
|
||||||
let cb_outs = self.outputs
|
let cb_outs = self.outputs
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -793,23 +790,27 @@ impl Block {
|
||||||
.filter(|kernel| kernel.features.contains(KernelFeatures::COINBASE_KERNEL))
|
.filter(|kernel| kernel.features.contains(KernelFeatures::COINBASE_KERNEL))
|
||||||
.collect::<Vec<&TxKernel>>();
|
.collect::<Vec<&TxKernel>>();
|
||||||
|
|
||||||
let over_commit;
|
|
||||||
let out_adjust_sum;
|
|
||||||
let kerns_sum;
|
|
||||||
{
|
{
|
||||||
let secp = static_secp_instance();
|
let secp = static_secp_instance();
|
||||||
let secp = secp.lock().unwrap();
|
let secp = secp.lock().unwrap();
|
||||||
over_commit = secp.commit_value(reward(self.total_fees()))?;
|
let over_commit = secp.commit_value(reward(self.total_fees()))?;
|
||||||
out_adjust_sum = secp.commit_sum(
|
|
||||||
|
let out_adjust_sum = secp.commit_sum(
|
||||||
cb_outs.iter().map(|x| x.commitment()).collect(),
|
cb_outs.iter().map(|x| x.commitment()).collect(),
|
||||||
vec![over_commit],
|
vec![over_commit],
|
||||||
)?;
|
)?;
|
||||||
kerns_sum = secp.commit_sum(cb_kerns.iter().map(|x| x.excess).collect(), vec![])?;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
let kerns_sum = secp.commit_sum(
|
||||||
|
cb_kerns.iter().map(|x| x.excess).collect(),
|
||||||
|
vec![],
|
||||||
|
)?;
|
||||||
|
|
||||||
|
// Verify the kernel sum equals the output sum accounting for block fees.
|
||||||
if kerns_sum != out_adjust_sum {
|
if kerns_sum != out_adjust_sum {
|
||||||
return Err(Error::CoinbaseSumMismatch);
|
return Err(Error::CoinbaseSumMismatch);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue