Struct bp_messages::InboundLaneData
source · pub struct InboundLaneData<RelayerId> {
pub relayers: VecDeque<UnrewardedRelayer<RelayerId>>,
pub last_confirmed_nonce: MessageNonce,
}
Expand description
Inbound lane data.
Fields§
§relayers: VecDeque<UnrewardedRelayer<RelayerId>>
Identifiers of relayers and messages that they have delivered to this lane (ordered by message nonce).
This serves as a helper storage item, to allow the source chain to easily pay rewards to the relayers who successfully delivered messages to the target chain (inbound lane).
It is guaranteed to have at most N entries, where N is configured at the module level. If there are N entries in this vec, then:
- all incoming messages are rejected if they’re missing corresponding
proof-of(outbound-lane.state)
; 2) all incoming messages are rejected ifproof-of(outbound-lane.state).last_delivered_nonce
is equal toself.last_confirmed_nonce
. Given what is said above, all nonces in this queue are in range:(self.last_confirmed_nonce; self.last_delivered_nonce()]
.
When a relayer sends a single message, both of MessageNonces are the same. When relayer sends messages in a batch, the first arg is the lowest nonce, second arg the highest nonce. Multiple dispatches from the same relayer are allowed.
last_confirmed_nonce: MessageNonce
Nonce of the last message that a) has been delivered to the target (this) chain and b) the delivery has been confirmed on the source chain
that the target chain knows of.
This value is updated indirectly when an OutboundLane
state of the source
chain is received alongside with new messages delivery.
Implementations§
source§impl<RelayerId> InboundLaneData<RelayerId>
impl<RelayerId> InboundLaneData<RelayerId>
sourcepub fn encoded_size_hint(relayers_entries: usize) -> Option<usize>where
RelayerId: MaxEncodedLen,
pub fn encoded_size_hint(relayers_entries: usize) -> Option<usize>where RelayerId: MaxEncodedLen,
Returns approximate size of the struct, given a number of entries in the relayers
set and
size of each entry.
Returns None
if size overflows usize
limits.
sourcepub fn encoded_size_hint_u32(relayers_entries: usize) -> u32where
RelayerId: MaxEncodedLen,
pub fn encoded_size_hint_u32(relayers_entries: usize) -> u32where RelayerId: MaxEncodedLen,
Returns the approximate size of the struct as u32, given a number of entries in the
relayers
set and the size of each entry.
Returns u32::MAX
if size overflows u32
limits.
sourcepub fn last_delivered_nonce(&self) -> MessageNonce
pub fn last_delivered_nonce(&self) -> MessageNonce
Nonce of the last message that has been delivered to this (target) chain.
sourcepub fn total_unrewarded_messages(&self) -> MessageNonce
pub fn total_unrewarded_messages(&self) -> MessageNonce
Returns the total number of messages in the relayers
vector,
saturating in case of underflow or overflow.
Trait Implementations§
source§impl<RelayerId: Clone> Clone for InboundLaneData<RelayerId>
impl<RelayerId: Clone> Clone for InboundLaneData<RelayerId>
source§fn clone(&self) -> InboundLaneData<RelayerId>
fn clone(&self) -> InboundLaneData<RelayerId>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<RelayerId> Debug for InboundLaneData<RelayerId>where
RelayerId: Debug,
impl<RelayerId> Debug for InboundLaneData<RelayerId>where RelayerId: Debug,
source§impl<RelayerId> Decode for InboundLaneData<RelayerId>where
VecDeque<UnrewardedRelayer<RelayerId>>: Decode,
impl<RelayerId> Decode for InboundLaneData<RelayerId>where VecDeque<UnrewardedRelayer<RelayerId>>: 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>
source§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,
source§impl<RelayerId> Default for InboundLaneData<RelayerId>
impl<RelayerId> Default for InboundLaneData<RelayerId>
source§impl<RelayerId> Encode for InboundLaneData<RelayerId>where
VecDeque<UnrewardedRelayer<RelayerId>>: Encode,
impl<RelayerId> Encode for InboundLaneData<RelayerId>where VecDeque<UnrewardedRelayer<RelayerId>>: Encode,
source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
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 )
source§fn using_encoded<R, F>(&self, f: F) -> Rwhere
F: FnOnce(&[u8]) -> R,
fn using_encoded<R, F>(&self, f: F) -> Rwhere F: FnOnce(&[u8]) -> R,
source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
source§impl<RelayerId> From<&InboundLaneData<RelayerId>> for UnrewardedRelayersState
impl<RelayerId> From<&InboundLaneData<RelayerId>> for UnrewardedRelayersState
source§fn from(lane: &InboundLaneData<RelayerId>) -> UnrewardedRelayersState
fn from(lane: &InboundLaneData<RelayerId>) -> UnrewardedRelayersState
source§impl<RelayerId: PartialEq> PartialEq for InboundLaneData<RelayerId>
impl<RelayerId: PartialEq> PartialEq for InboundLaneData<RelayerId>
source§fn eq(&self, other: &InboundLaneData<RelayerId>) -> bool
fn eq(&self, other: &InboundLaneData<RelayerId>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<RelayerId> TypeInfo for InboundLaneData<RelayerId>where
VecDeque<UnrewardedRelayer<RelayerId>>: TypeInfo + 'static,
RelayerId: TypeInfo + 'static,
impl<RelayerId> TypeInfo for InboundLaneData<RelayerId>where VecDeque<UnrewardedRelayer<RelayerId>>: TypeInfo + 'static, RelayerId: TypeInfo + 'static,
impl<RelayerId> EncodeLike for InboundLaneData<RelayerId>where VecDeque<UnrewardedRelayer<RelayerId>>: Encode,
impl<RelayerId: Eq> Eq for InboundLaneData<RelayerId>
impl<RelayerId> StructuralEq for InboundLaneData<RelayerId>
impl<RelayerId> StructuralPartialEq for InboundLaneData<RelayerId>
Auto Trait Implementations§
impl<RelayerId> RefUnwindSafe for InboundLaneData<RelayerId>where RelayerId: RefUnwindSafe,
impl<RelayerId> Send for InboundLaneData<RelayerId>where RelayerId: Send,
impl<RelayerId> Sync for InboundLaneData<RelayerId>where RelayerId: Sync,
impl<RelayerId> Unpin for InboundLaneData<RelayerId>where RelayerId: Unpin,
impl<RelayerId> UnwindSafe for InboundLaneData<RelayerId>where RelayerId: 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
§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>,
§impl<T> Conv for T
impl<T> Conv for T
source§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere T: Decode,
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§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, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§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) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
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) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§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>,
T
. Read more§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
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)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.