pub struct FraudProof<Number, Hash, DomainHeader: HeaderT, MmrHash> {
pub domain_id: DomainId,
pub bad_receipt_hash: HeaderHashFor<DomainHeader>,
pub maybe_mmr_proof: Option<ConsensusChainMmrLeafProof<Number, Hash, MmrHash>>,
pub maybe_domain_runtime_code_proof: Option<DomainRuntimeCodeAt<Number, Hash, MmrHash>>,
pub proof: FraudProofVariant<Number, Hash, MmrHash, DomainHeader>,
}
Fields§
§domain_id: DomainId
§bad_receipt_hash: HeaderHashFor<DomainHeader>
Hash of the bad receipt this fraud proof targeted
maybe_mmr_proof: Option<ConsensusChainMmrLeafProof<Number, Hash, MmrHash>>
The MMR proof for the consensus state root that used to verify the storage proof
It is set None
if the specific fraud proof variant doesn’t contains storage proof
maybe_domain_runtime_code_proof: Option<DomainRuntimeCodeAt<Number, Hash, MmrHash>>
The domain runtime code storage proof
It is set None
if the specific fraud proof variant doesn’t required domain runtime code
or the required domain runtime code is available from the current runtime state.
proof: FraudProofVariant<Number, Hash, MmrHash, DomainHeader>
The specific fraud proof variant
Implementations§
source§impl<Number, Hash, MmrHash, DomainHeader: HeaderT> FraudProof<Number, Hash, DomainHeader, MmrHash>
impl<Number, Hash, MmrHash, DomainHeader: HeaderT> FraudProof<Number, Hash, DomainHeader, MmrHash>
pub fn domain_id(&self) -> DomainId
pub fn targeted_bad_receipt_hash(&self) -> HeaderHashFor<DomainHeader>
pub fn is_unexpected_domain_runtime_code_proof(&self) -> bool
pub fn is_unexpected_mmr_proof(&self) -> bool
pub fn dummy_fraud_proof( domain_id: DomainId, bad_receipt_hash: HeaderHashFor<DomainHeader>, ) -> FraudProof<Number, Hash, DomainHeader, MmrHash>
source§impl<Number, Hash, MmrHash, DomainHeader: HeaderT> FraudProof<Number, Hash, DomainHeader, MmrHash>where
Number: Encode,
Hash: Encode,
MmrHash: Encode,
impl<Number, Hash, MmrHash, DomainHeader: HeaderT> FraudProof<Number, Hash, DomainHeader, MmrHash>where
Number: Encode,
Hash: Encode,
MmrHash: Encode,
Trait Implementations§
source§impl<Number: Clone, Hash: Clone, DomainHeader: Clone + HeaderT, MmrHash: Clone> Clone for FraudProof<Number, Hash, DomainHeader, MmrHash>
impl<Number: Clone, Hash: Clone, DomainHeader: Clone + HeaderT, MmrHash: Clone> Clone for FraudProof<Number, Hash, DomainHeader, MmrHash>
source§fn clone(&self) -> FraudProof<Number, Hash, DomainHeader, MmrHash>
fn clone(&self) -> FraudProof<Number, Hash, DomainHeader, MmrHash>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<Number, Hash, MmrHash, DomainHeader: HeaderT> Debug for FraudProof<Number, Hash, DomainHeader, MmrHash>
impl<Number, Hash, MmrHash, DomainHeader: HeaderT> Debug for FraudProof<Number, Hash, DomainHeader, MmrHash>
source§impl<Number, Hash, DomainHeader: HeaderT, MmrHash> Decode for FraudProof<Number, Hash, DomainHeader, MmrHash>where
HeaderHashFor<DomainHeader>: Decode,
Option<ConsensusChainMmrLeafProof<Number, Hash, MmrHash>>: Decode,
Option<DomainRuntimeCodeAt<Number, Hash, MmrHash>>: Decode,
FraudProofVariant<Number, Hash, MmrHash, DomainHeader>: Decode,
impl<Number, Hash, DomainHeader: HeaderT, MmrHash> Decode for FraudProof<Number, Hash, DomainHeader, MmrHash>where
HeaderHashFor<DomainHeader>: Decode,
Option<ConsensusChainMmrLeafProof<Number, Hash, MmrHash>>: Decode,
Option<DomainRuntimeCodeAt<Number, Hash, MmrHash>>: Decode,
FraudProofVariant<Number, Hash, MmrHash, DomainHeader>: Decode,
source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy,
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy, ) -> Result<Self, Error>
Attempt to deserialise the value from input.
§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
Attempt to skip the encoded value from input. Read more
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
Returns the fixed encoded size of the type. Read more
source§impl<Number, Hash, DomainHeader: HeaderT, MmrHash> Encode for FraudProof<Number, Hash, DomainHeader, MmrHash>where
HeaderHashFor<DomainHeader>: Encode,
Option<ConsensusChainMmrLeafProof<Number, Hash, MmrHash>>: Encode,
Option<DomainRuntimeCodeAt<Number, Hash, MmrHash>>: Encode,
FraudProofVariant<Number, Hash, MmrHash, DomainHeader>: Encode,
impl<Number, Hash, DomainHeader: HeaderT, MmrHash> Encode for FraudProof<Number, Hash, DomainHeader, MmrHash>where
HeaderHashFor<DomainHeader>: Encode,
Option<ConsensusChainMmrLeafProof<Number, Hash, MmrHash>>: Encode,
Option<DomainRuntimeCodeAt<Number, Hash, MmrHash>>: Encode,
FraudProofVariant<Number, Hash, MmrHash, DomainHeader>: Encode,
source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
If possible give a hint of expected size of the encoding. Read more
source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy, )
Convert self to a slice and append it to the destination.
§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
Convert self to a slice and then invoke the given closure with it.
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
source§impl<Number: PartialEq, Hash: PartialEq, DomainHeader: PartialEq + HeaderT, MmrHash: PartialEq> PartialEq for FraudProof<Number, Hash, DomainHeader, MmrHash>
impl<Number: PartialEq, Hash: PartialEq, DomainHeader: PartialEq + HeaderT, MmrHash: PartialEq> PartialEq for FraudProof<Number, Hash, DomainHeader, MmrHash>
source§fn eq(&self, other: &FraudProof<Number, Hash, DomainHeader, MmrHash>) -> bool
fn eq(&self, other: &FraudProof<Number, Hash, DomainHeader, MmrHash>) -> bool
Tests for
self
and other
values to be equal, and is used by ==
.source§impl<Number, Hash, DomainHeader, MmrHash> TypeInfo for FraudProof<Number, Hash, DomainHeader, MmrHash>where
HeaderHashFor<DomainHeader>: TypeInfo + 'static,
Option<ConsensusChainMmrLeafProof<Number, Hash, MmrHash>>: TypeInfo + 'static,
Option<DomainRuntimeCodeAt<Number, Hash, MmrHash>>: TypeInfo + 'static,
FraudProofVariant<Number, Hash, MmrHash, DomainHeader>: TypeInfo + 'static,
Number: TypeInfo + 'static,
Hash: TypeInfo + 'static,
DomainHeader: HeaderT + TypeInfo + 'static,
MmrHash: TypeInfo + 'static,
impl<Number, Hash, DomainHeader, MmrHash> TypeInfo for FraudProof<Number, Hash, DomainHeader, MmrHash>where
HeaderHashFor<DomainHeader>: TypeInfo + 'static,
Option<ConsensusChainMmrLeafProof<Number, Hash, MmrHash>>: TypeInfo + 'static,
Option<DomainRuntimeCodeAt<Number, Hash, MmrHash>>: TypeInfo + 'static,
FraudProofVariant<Number, Hash, MmrHash, DomainHeader>: TypeInfo + 'static,
Number: TypeInfo + 'static,
Hash: TypeInfo + 'static,
DomainHeader: HeaderT + TypeInfo + 'static,
MmrHash: TypeInfo + 'static,
impl<Number, Hash, DomainHeader: HeaderT, MmrHash> EncodeLike for FraudProof<Number, Hash, DomainHeader, MmrHash>where
HeaderHashFor<DomainHeader>: Encode,
Option<ConsensusChainMmrLeafProof<Number, Hash, MmrHash>>: Encode,
Option<DomainRuntimeCodeAt<Number, Hash, MmrHash>>: Encode,
FraudProofVariant<Number, Hash, MmrHash, DomainHeader>: Encode,
impl<Number: Eq, Hash: Eq, DomainHeader: Eq + HeaderT, MmrHash: Eq> Eq for FraudProof<Number, Hash, DomainHeader, MmrHash>
impl<Number, Hash, DomainHeader: HeaderT, MmrHash> StructuralPartialEq for FraudProof<Number, Hash, DomainHeader, MmrHash>
Auto Trait Implementations§
impl<Number, Hash, DomainHeader, MmrHash> Freeze for FraudProof<Number, Hash, DomainHeader, MmrHash>
impl<Number, Hash, DomainHeader, MmrHash> RefUnwindSafe for FraudProof<Number, Hash, DomainHeader, MmrHash>where
<DomainHeader as Header>::Hash: RefUnwindSafe,
Number: RefUnwindSafe,
Hash: RefUnwindSafe,
MmrHash: RefUnwindSafe,
<DomainHeader as Header>::Number: RefUnwindSafe,
impl<Number, Hash, DomainHeader, MmrHash> Send for FraudProof<Number, Hash, DomainHeader, MmrHash>
impl<Number, Hash, DomainHeader, MmrHash> Sync for FraudProof<Number, Hash, DomainHeader, MmrHash>
impl<Number, Hash, DomainHeader, MmrHash> Unpin for FraudProof<Number, Hash, DomainHeader, MmrHash>
impl<Number, Hash, DomainHeader, MmrHash> UnwindSafe for FraudProof<Number, Hash, DomainHeader, MmrHash>where
<DomainHeader as Header>::Hash: UnwindSafe,
Number: UnwindSafe,
Hash: UnwindSafe,
MmrHash: UnwindSafe,
<DomainHeader as Header>::Number: UnwindSafe,
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
Mutably borrows from an owned value. Read more
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere
T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Decode
Self
and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.§impl<T> FullLeaf for T
impl<T> FullLeaf for T
§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere
T: Codec,
§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> 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>
Converts
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>
Converts
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§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere
T: Codec,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read more§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.