count coinbase outputs also
This commit is contained in:
parent
b7014f4ea5
commit
584ec20e1f
|
@ -174,7 +174,11 @@ impl Verify for ChainVerifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
// verify transactions (except coinbase)
|
// verify transactions (except coinbase)
|
||||||
let mut block_sigops = 0;
|
let mut block_sigops = try!(
|
||||||
|
utils::transaction_sigops(&block.transactions()[0])
|
||||||
|
.map_err(|e| Error::Transaction(1, TransactionError::SignatureMallformed(format!("{}", e))))
|
||||||
|
);
|
||||||
|
|
||||||
for (idx, transaction) in block.transactions().iter().skip(1).enumerate() {
|
for (idx, transaction) in block.transactions().iter().skip(1).enumerate() {
|
||||||
|
|
||||||
block_sigops += try!(
|
block_sigops += try!(
|
||||||
|
|
|
@ -57,15 +57,17 @@ pub fn block_reward_satoshi(block_height: u32) -> u64 {
|
||||||
pub fn transaction_sigops(transaction: &chain::Transaction) -> Result<usize, script::Error> {
|
pub fn transaction_sigops(transaction: &chain::Transaction) -> Result<usize, script::Error> {
|
||||||
let mut result = 0usize;
|
let mut result = 0usize;
|
||||||
|
|
||||||
for input in transaction.inputs.iter() {
|
|
||||||
let input_script: Script = input.script_sig().to_vec().into();
|
|
||||||
result += try!(input_script.sigop_count());
|
|
||||||
}
|
|
||||||
|
|
||||||
for output in transaction.outputs.iter() {
|
for output in transaction.outputs.iter() {
|
||||||
let output_script: Script = output.script_pubkey.to_vec().into();
|
let output_script: Script = output.script_pubkey.to_vec().into();
|
||||||
// todo: not always allow malformed output?
|
// todo: not always allow malformed output?
|
||||||
result += output_script.sigop_count().unwrap_or(1);
|
result += output_script.sigop_count().unwrap_or(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if transaction.is_coinbase() { return Ok(result); }
|
||||||
|
|
||||||
|
for input in transaction.inputs.iter() {
|
||||||
|
let input_script: Script = input.script_sig().to_vec().into();
|
||||||
|
result += try!(input_script.sigop_count());
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(result)
|
Ok(result)
|
||||||
|
|
Loading…
Reference in New Issue