Limit number of uncles that can be provided. (#4298)

* Limit number of uncles that can be provided.

* Check length of uncles vector on inherent.

* Set fatal error to true for too many uncles.

* Take max uncles in create_inherent.
This commit is contained in:
Marcio Diaz
2019-12-09 20:10:41 +01:00
committed by GitHub
parent f1b8ee4e6e
commit d4c19c0652
4 changed files with 38 additions and 8 deletions
@@ -7,6 +7,7 @@ edition = "2018"
[dependencies]
sp-inherents = { package = "sp-inherents", path = "../inherents", default-features = false }
sr-primitives = { package = "sp-runtime", path = "../sr-primitives", default-features = false }
rstd = { package = "sp-std", path = "../sr-std", default-features = false }
codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"] }
+17 -1
View File
@@ -21,11 +21,27 @@
use rstd::{result::Result, prelude::*};
use codec::{Encode, Decode};
use sp_inherents::{Error, InherentIdentifier, InherentData};
use sp_inherents::{Error, InherentIdentifier, InherentData, IsFatalError};
use sr_primitives::RuntimeString;
/// The identifier for the `uncles` inherent.
pub const INHERENT_IDENTIFIER: InherentIdentifier = *b"uncles00";
/// Errors that can occur while checking the authorship inherent.
#[derive(Encode, sr_primitives::RuntimeDebug)]
#[cfg_attr(feature = "std", derive(Decode))]
pub enum InherentError {
Uncles(RuntimeString),
}
impl IsFatalError for InherentError {
fn is_fatal_error(&self) -> bool {
match self {
InherentError::Uncles(_) => true,
}
}
}
/// Auxiliary trait to extract uncles inherent data.
pub trait UnclesInherentData<H: Decode> {
/// Get uncles.