Removed verification from this branch
This commit is contained in:
parent
28a658015d
commit
0eb69c7f1c
@ -1,109 +0,0 @@
|
||||
use util::uint::*;
|
||||
use util::hash::*;
|
||||
use util::rlp::*;
|
||||
use util::sha3::Hashable;
|
||||
use util::triehash::ordered_trie_root;
|
||||
use header::Header;
|
||||
use client::BlockNumber;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum TransactionVerificationError {
|
||||
OutOfGasBase,
|
||||
OutOfGasIntrinsic,
|
||||
NotEnoughCash,
|
||||
GasPriceTooLow,
|
||||
BlockGasLimitReached,
|
||||
FeeTooSmall,
|
||||
TooMuchGasUsed {
|
||||
used: U256,
|
||||
limit: U256
|
||||
},
|
||||
ExtraDataTooBig,
|
||||
InvalidSignature,
|
||||
InvalidTransactionFormat,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum BlockVerificationError {
|
||||
TooMuchGasUsed {
|
||||
used: U256,
|
||||
limit: U256,
|
||||
},
|
||||
InvalidBlockFormat,
|
||||
InvalidUnclesHash {
|
||||
expected: H256,
|
||||
got: H256,
|
||||
},
|
||||
TooManyUncles,
|
||||
UncleTooOld,
|
||||
UncleIsBrother,
|
||||
UncleInChain,
|
||||
UncleParentNotInChain,
|
||||
InvalidStateRoot,
|
||||
InvalidGasUsed,
|
||||
InvalidTransactionsRoot {
|
||||
expected: H256,
|
||||
got: H256,
|
||||
},
|
||||
InvalidDifficulty,
|
||||
InvalidGasLimit,
|
||||
InvalidReceiptsStateRoot,
|
||||
InvalidTimestamp,
|
||||
InvalidLogBloom,
|
||||
InvalidNonce,
|
||||
InvalidBlockHeaderItemCount,
|
||||
InvalidBlockNonce,
|
||||
InvalidParentHash,
|
||||
InvalidUncleParentHash,
|
||||
InvalidNumber,
|
||||
BlockNotFound,
|
||||
UnknownParent,
|
||||
}
|
||||
|
||||
|
||||
pub fn verify_header(header: &Header) -> Result<(), BlockVerificationError> {
|
||||
if header.number > From::from(BlockNumber::max_value()) {
|
||||
return Err(BlockVerificationError::InvalidNumber)
|
||||
}
|
||||
if header.gas_used > header.gas_limit {
|
||||
return Err(BlockVerificationError::TooMuchGasUsed {
|
||||
used: header.gas_used,
|
||||
limit: header.gas_limit,
|
||||
});
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn verify_parent(header: &Header, parent: &Header) -> Result<(), BlockVerificationError> {
|
||||
if !header.parent_hash.is_zero() && parent.hash() != header.parent_hash {
|
||||
return Err(BlockVerificationError::InvalidParentHash)
|
||||
}
|
||||
if header.timestamp <= parent.timestamp {
|
||||
return Err(BlockVerificationError::InvalidTimestamp)
|
||||
}
|
||||
if header.number <= parent.number {
|
||||
return Err(BlockVerificationError::InvalidNumber)
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn verify_block_integrity(block: &[u8], transactions_root: &H256, uncles_hash: &H256) -> Result<(), BlockVerificationError> {
|
||||
let block = Rlp::new(block);
|
||||
let tx = block.at(1);
|
||||
let expected_root = ordered_trie_root(tx.iter().map(|r| r.as_raw().to_vec()).collect()); //TODO: get rid of vectors here
|
||||
if &expected_root != transactions_root {
|
||||
return Err(BlockVerificationError::InvalidTransactionsRoot {
|
||||
expected: expected_root.clone(),
|
||||
got: transactions_root.clone(),
|
||||
});
|
||||
}
|
||||
let expected_uncles = block.at(2).as_raw().sha3();
|
||||
if &expected_uncles != uncles_hash {
|
||||
return Err(BlockVerificationError::InvalidUnclesHash {
|
||||
expected: expected_uncles.clone(),
|
||||
got: uncles_hash.clone(),
|
||||
});
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user