More error detail

This commit is contained in:
Artem Vorotnikov
2022-05-07 22:03:53 +03:00
parent 780f9c1752
commit 2f2cdd44f7
3 changed files with 26 additions and 8 deletions

View File

@@ -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)?;

View File

@@ -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)
}
}

View File

@@ -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)