pub struct ProtocolValidationContext {
pub block_height: u64,
pub network_params: NetworkParameters,
pub validation_rules: ProtocolValidationRules,
pub feature_registry: FeatureRegistry,
pub median_time_past: u64,
pub network_time: u64,
pub context_data: HashMap<String, String>,
}Expand description
Protocol-specific validation context
Fields§
§block_height: u64Current block height
network_params: NetworkParametersCurrent network parameters
validation_rules: ProtocolValidationRulesProtocol validation rules
feature_registry: FeatureRegistryFeature activation registry for this protocol version.
Used by is_feature_enabled to derive activation status from
block_height / network_time rather than static booleans.
median_time_past: u64Median time-past used for time-based validation (BIP113)
This is populated by the node using recent headers and is threaded down to consensus for timestamp validation.
network_time: u64Current adjusted network time (Unix timestamp)
This is populated by the node from its time source and used by consensus to enforce future timestamp limits.
context_data: HashMap<String, String>Additional context data
Implementations§
Source§impl ProtocolValidationContext
impl ProtocolValidationContext
Sourcepub fn new(
version: ProtocolVersion,
block_height: u64,
) -> Result<Self, ProtocolError>
pub fn new( version: ProtocolVersion, block_height: u64, ) -> Result<Self, ProtocolError>
Create validation context for a protocol version
Sourcepub fn is_feature_enabled(&self, feature: &str) -> bool
pub fn is_feature_enabled(&self, feature: &str) -> bool
Check if a feature is enabled at the current block height and network time.
Queries the FeatureRegistry so activation reflects the actual deployment
height/timestamp rather than static booleans that ignore block_height.
Sourcepub fn get_max_size(&self, component: &str) -> u32
pub fn get_max_size(&self, component: &str) -> u32
Get maximum allowed size for a component
Trait Implementations§
Source§impl Clone for ProtocolValidationContext
impl Clone for ProtocolValidationContext
Source§fn clone(&self) -> ProtocolValidationContext
fn clone(&self) -> ProtocolValidationContext
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ProtocolValidationContext
impl Debug for ProtocolValidationContext
Source§impl<'de> Deserialize<'de> for ProtocolValidationContext
impl<'de> Deserialize<'de> for ProtocolValidationContext
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for ProtocolValidationContext
impl PartialEq for ProtocolValidationContext
Source§fn eq(&self, other: &ProtocolValidationContext) -> bool
fn eq(&self, other: &ProtocolValidationContext) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for ProtocolValidationContext
Auto Trait Implementations§
impl Freeze for ProtocolValidationContext
impl RefUnwindSafe for ProtocolValidationContext
impl Send for ProtocolValidationContext
impl Sync for ProtocolValidationContext
impl Unpin for ProtocolValidationContext
impl UnsafeUnpin for ProtocolValidationContext
impl UnwindSafe for ProtocolValidationContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more