mirror of
https://github.com/akula-bft/akula.git
synced 2026-04-19 03:00:13 -04:00
More error detail
This commit is contained in:
@@ -213,14 +213,22 @@ impl ConsensusEngineBase {
|
||||
return Err(ValidationError::DuplicateOmmer.into());
|
||||
}
|
||||
|
||||
let parent = state
|
||||
.read_parent_header(&block.header)?
|
||||
.ok_or(ValidationError::UnknownParent)?;
|
||||
let parent =
|
||||
state
|
||||
.read_parent_header(&block.header)?
|
||||
.ok_or(ValidationError::UnknownParent {
|
||||
number: block.header.number,
|
||||
parent_hash: block.header.parent_hash,
|
||||
})?;
|
||||
|
||||
for ommer in &block.ommers {
|
||||
let ommer_parent = state
|
||||
.read_parent_header(ommer)?
|
||||
.ok_or(ValidationError::UnknownParent)?;
|
||||
let ommer_parent =
|
||||
state
|
||||
.read_parent_header(ommer)?
|
||||
.ok_or(ValidationError::OmmerUnknownParent {
|
||||
number: ommer.number,
|
||||
parent_hash: ommer.parent_hash,
|
||||
})?;
|
||||
|
||||
self.validate_block_header(ommer, &ommer_parent, false)
|
||||
.context(ValidationError::InvalidOmmerHeader)?;
|
||||
|
||||
@@ -265,7 +265,10 @@ impl<'state> Blockchain<'state> {
|
||||
let parent = self
|
||||
.state
|
||||
.read_header(BlockNumber(header.number.0 - 1), header.parent_hash)?
|
||||
.ok_or(ValidationError::UnknownParent)?;
|
||||
.ok_or(ValidationError::UnknownParent {
|
||||
number: header.number,
|
||||
parent_hash: header.parent_hash,
|
||||
})?;
|
||||
self.canonical_ancestor(&parent.into(), header.parent_hash)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,10 @@ pub enum ValidationError {
|
||||
}, // wrong Hb
|
||||
|
||||
// See [YP] Section 4.3.4 "Block Header Validity", Eq (50)
|
||||
UnknownParent, // P(H) = ∅ ∨ Hi ≠ P(H)Hi + 1
|
||||
UnknownParent {
|
||||
number: BlockNumber,
|
||||
parent_hash: H256,
|
||||
}, // P(H) = ∅ ∨ Hi ≠ P(H)Hi + 1
|
||||
WrongDifficulty, // Hd ≠ D(H)
|
||||
GasAboveLimit {
|
||||
used: u64,
|
||||
@@ -133,6 +136,10 @@ pub enum ValidationError {
|
||||
MaxPriorityFeeGreaterThanMax, // max_priority_fee_per_gas > max_fee_per_gas (EIP-1559)
|
||||
|
||||
// See [YP] Section 11.1 "Ommer Validation", Eq (157)
|
||||
OmmerUnknownParent {
|
||||
number: BlockNumber,
|
||||
parent_hash: H256,
|
||||
}, // P(H) = ∅ ∨ Hi ≠ P(H)Hi + 1
|
||||
TooManyOmmers, // ‖BU‖ > 2
|
||||
InvalidOmmerHeader, // ¬V(U)
|
||||
NotAnOmmer, // ¬k(U, P(BH)H, 6)
|
||||
|
||||
Reference in New Issue
Block a user