pub enum Denunciation {
Endorsement(EndorsementDenunciation),
BlockHeader(BlockHeaderDenunciation),
}Expand description
A denunciation enum
Variants§
Endorsement(EndorsementDenunciation)
BlockHeader(BlockHeaderDenunciation)
Implementations§
Source§impl Denunciation
impl Denunciation
Sourcepub fn is_for_endorsement(&self) -> bool
pub fn is_for_endorsement(&self) -> bool
Check if it is a Denunciation of several endorsements
Sourcepub fn is_for_block_header(&self) -> bool
pub fn is_for_block_header(&self) -> bool
Check if it is a Denunciation of several block headers
Sourcepub fn is_also_for_endorsement(
&self,
s_endorsement: &SecureShareEndorsement,
sig_chain_id: Option<u64>,
) -> Result<bool, DenunciationError>
pub fn is_also_for_endorsement( &self, s_endorsement: &SecureShareEndorsement, sig_chain_id: Option<u64>, ) -> Result<bool, DenunciationError>
Check if it is a Denunciation for this endorsement
sig_chain_id selects the signed-hash layout used to reconstruct the
signature hash (see EndorsementDenunciation::compute_hash_for_sig_verif).
Sourcepub fn is_also_for_block_header(
&self,
s_block_header: &SecuredHeader,
sig_chain_id: Option<u64>,
) -> Result<bool, DenunciationError>
pub fn is_also_for_block_header( &self, s_block_header: &SecuredHeader, sig_chain_id: Option<u64>, ) -> Result<bool, DenunciationError>
Check if it is a Denunciation for this block header
sig_chain_id selects the signed-hash layout used to reconstruct the
signature hash (see BlockHeaderDenunciation::compute_hash_for_sig_verif).
Sourcepub fn is_valid(&self) -> bool
pub fn is_valid(&self) -> bool
Check if Denunciation is valid using the legacy (chain-agnostic) signed-hash
layout. Kept for backward compatibility with tests / pre-activation data.
Production code should use Self::is_valid_with_chain with the
sig_chain_id derived from the denounced slot’s network-agreed active
version.
Sourcepub fn is_valid_with_chain(&self, sig_chain_id: Option<u64>) -> bool
pub fn is_valid_with_chain(&self, sig_chain_id: Option<u64>) -> bool
Check if Denunciation is valid, reconstructing signatures with the
chain-scoped signed-hash layout selected by sig_chain_id (None = legacy,
Some(chain_id) = chain-scoped).
This is the chain-aware variant that prevents cross-chain replay of
endorsements / block headers as denunciations (F90 / PDF #11): when
sig_chain_id is Some(local_chain_id), a denunciation combining two
messages signed on different chains no longer verifies, because the second
message’s signature was produced over a hash folding in a different chain id.
Sourcepub fn get_index(&self) -> Option<&u32>
pub fn get_index(&self) -> Option<&u32>
Get field: index (return None for a block header denunciation)
Sourcepub fn get_public_key(&self) -> &PublicKey
pub fn get_public_key(&self) -> &PublicKey
Get Denunciation public key ref
Sourcepub fn is_expired(
denunciation_slot_period: &u64,
slot_period: &u64,
denunciation_expire_periods: &u64,
) -> bool
pub fn is_expired( denunciation_slot_period: &u64, slot_period: &u64, denunciation_expire_periods: &u64, ) -> bool
Check if denunciation has expired given a slot period Note that slot_period can be:
- A final slot period (for example in order to cleanup denunciation pool caches)
- A block slot period (in execution (execute_denunciation(…)))
Trait Implementations§
Source§impl Clone for Denunciation
impl Clone for Denunciation
Source§fn clone(&self) -> Denunciation
fn clone(&self) -> Denunciation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Denunciation
impl Debug for Denunciation
Source§impl<'de> Deserialize<'de> for Denunciation
impl<'de> Deserialize<'de> for Denunciation
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 Deserializer<Denunciation> for DenunciationDeserializer
impl Deserializer<Denunciation> for DenunciationDeserializer
Source§fn deserialize<'a, E: ParseError<&'a [u8]> + ContextError<&'a [u8]>>(
&self,
buffer: &'a [u8],
) -> IResult<&'a [u8], Denunciation, E>
fn deserialize<'a, E: ParseError<&'a [u8]> + ContextError<&'a [u8]>>( &self, buffer: &'a [u8], ) -> IResult<&'a [u8], Denunciation, E>
Source§impl From<&Denunciation> for DenunciationIndex
Create a DenunciationIndex from a Denunciation
impl From<&Denunciation> for DenunciationIndex
Create a DenunciationIndex from a Denunciation
Source§fn from(value: &Denunciation) -> Self
fn from(value: &Denunciation) -> Self
Source§impl From<&Denunciation> for DenunciationTypeId
impl From<&Denunciation> for DenunciationTypeId
Source§fn from(value: &Denunciation) -> Self
fn from(value: &Denunciation) -> Self
Source§impl From<Denunciation> for Denunciation
impl From<Denunciation> for Denunciation
Source§fn from(value: Denunciation) -> Self
fn from(value: Denunciation) -> Self
Source§impl PartialEq for Denunciation
impl PartialEq for Denunciation
Source§impl Serialize for Denunciation
impl Serialize for Denunciation
Source§impl Serializer<Denunciation> for DenunciationSerializer
impl Serializer<Denunciation> for DenunciationSerializer
Source§impl TryFrom<(&DenunciationPrecursor, &DenunciationPrecursor)> for Denunciation
Create a new Denunciation from 2 DenunciationPrecursor (legacy, chain-agnostic
signed-hash layout). Kept for backward compatibility. Production code should use
the chain-aware tuple variant.
impl TryFrom<(&DenunciationPrecursor, &DenunciationPrecursor)> for Denunciation
Create a new Denunciation from 2 DenunciationPrecursor (legacy, chain-agnostic signed-hash layout). Kept for backward compatibility. Production code should use the chain-aware tuple variant.
Source§type Error = DenunciationError
type Error = DenunciationError
Source§fn try_from(
(de_p_1, de_p_2): (&DenunciationPrecursor, &DenunciationPrecursor),
) -> Result<Self, Self::Error>
fn try_from( (de_p_1, de_p_2): (&DenunciationPrecursor, &DenunciationPrecursor), ) -> Result<Self, Self::Error>
Source§impl TryFrom<(&DenunciationPrecursor, &DenunciationPrecursor, Option<u64>)> for Denunciation
Create a new Denunciation from 2 DenunciationPrecursor using the chain-scoped
signed-hash layout selected by sig_chain_id (None = legacy, Some(chain_id)
= chain-scoped).
impl TryFrom<(&DenunciationPrecursor, &DenunciationPrecursor, Option<u64>)> for Denunciation
Create a new Denunciation from 2 DenunciationPrecursor using the chain-scoped
signed-hash layout selected by sig_chain_id (None = legacy, Some(chain_id)
= chain-scoped).
Source§type Error = DenunciationError
type Error = DenunciationError
Source§fn try_from(
(de_p_1, de_p_2, sig_chain_id): (&DenunciationPrecursor, &DenunciationPrecursor, Option<u64>),
) -> Result<Self, Self::Error>
fn try_from( (de_p_1, de_p_2, sig_chain_id): (&DenunciationPrecursor, &DenunciationPrecursor, Option<u64>), ) -> Result<Self, Self::Error>
Source§type Error = DenunciationError
type Error = DenunciationError
Source§fn try_from(
(s_bh1, s_bh2): (&SecuredHeader, &SecuredHeader),
) -> Result<Self, Self::Error>
fn try_from( (s_bh1, s_bh2): (&SecuredHeader, &SecuredHeader), ) -> Result<Self, Self::Error>
Source§type Error = DenunciationError
type Error = DenunciationError
Source§fn try_from(
(s_bh1, s_bh2, sig_chain_id): (&SecuredHeader, &SecuredHeader, Option<u64>),
) -> Result<Self, Self::Error>
fn try_from( (s_bh1, s_bh2, sig_chain_id): (&SecuredHeader, &SecuredHeader, Option<u64>), ) -> Result<Self, Self::Error>
Source§type Error = DenunciationError
type Error = DenunciationError
Source§fn try_from(
(s_e1, s_e2): (&SecureShareEndorsement, &SecureShareEndorsement),
) -> Result<Self, Self::Error>
fn try_from( (s_e1, s_e2): (&SecureShareEndorsement, &SecureShareEndorsement), ) -> Result<Self, Self::Error>
Source§type Error = DenunciationError
type Error = DenunciationError
Source§fn try_from(
(s_e1, s_e2, sig_chain_id): (&SecureShareEndorsement, &SecureShareEndorsement, Option<u64>),
) -> Result<Self, Self::Error>
fn try_from( (s_e1, s_e2, sig_chain_id): (&SecureShareEndorsement, &SecureShareEndorsement, Option<u64>), ) -> Result<Self, Self::Error>
impl StructuralPartialEq for Denunciation
Auto Trait Implementations§
impl Freeze for Denunciation
impl RefUnwindSafe for Denunciation
impl Send for Denunciation
impl Sync for Denunciation
impl Unpin for Denunciation
impl UnwindSafe for Denunciation
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,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.