Struct dock_runtime::common::MultiSignedAction
source · pub struct MultiSignedAction<T, A, S, SI>where
T: Types,
A: Action,
S: Signature,{
pub action: A,
pub signatures: SI,
/* private fields */
}
Expand description
An action signed by multiple signers with their corresponding nonces.
Fields§
§action: A
§signatures: SI
Implementations§
source§impl<T, A, S, SI> MultiSignedAction<T, A, S, SI>where
T: Types,
A: Action,
S: Signature,
SI: FusedIterator<Item = SignatureWithNonce<<T as Types>::BlockNumber, S>>,
impl<T, A, S, SI> MultiSignedAction<T, A, S, SI>where T: Types, A: Action, S: Signature, SI: FusedIterator<Item = SignatureWithNonce<<T as Types>::BlockNumber, S>>,
pub fn new<ISI>(action: A, signatures: ISI) -> MultiSignedAction<T, A, S, SI>where ISI: IntoIterator<IntoIter = SI>,
source§impl<T, A, S, SI> MultiSignedAction<T, A, S, SI>where
T: Config,
A: Action,
<A as Action>::Target: StorageRef<T>,
WithNonce<T, A>: ActionWithNonce<T> + ToStateChange<T>,
<WithNonce<T, A> as Action>::Target: StorageRef<T>,
S: Signature + AuthorizeSignedAction<T, WithNonce<T, A>>,
<S as Signature>::Signer: AuthorizeTarget<T, <WithNonce<T, A> as Action>::Target, <S as Signature>::Key> + Ord + Deref,
<<S as Signature>::Signer as Deref>::Target: AuthorizeTarget<T, <WithNonce<T, A> as Action>::Target, <S as Signature>::Key>,
SI: FusedIterator<Item = SignatureWithNonce<<T as Config>::BlockNumber, S>>,
impl<T, A, S, SI> MultiSignedAction<T, A, S, SI>where T: Config, A: Action, <A as Action>::Target: StorageRef<T>, WithNonce<T, A>: ActionWithNonce<T> + ToStateChange<T>, <WithNonce<T, A> as Action>::Target: StorageRef<T>, S: Signature + AuthorizeSignedAction<T, WithNonce<T, A>>, <S as Signature>::Signer: AuthorizeTarget<T, <WithNonce<T, A> as Action>::Target, <S as Signature>::Key> + Ord + Deref, <<S as Signature>::Signer as Deref>::Target: AuthorizeTarget<T, <WithNonce<T, A> as Action>::Target, <S as Signature>::Key>, SI: FusedIterator<Item = SignatureWithNonce<<T as Config>::BlockNumber, S>>,
sourcepub fn execute<F, R, E, V, RS>(
self,
f: F,
get_required_signers: RS
) -> Result<R, IntermediateError<T>>where
F: FnOnce(A, &mut <<A as Action>::Target as Associated<T>>::Value, BTreeSet<<S as Signature>::Signer, Global>) -> Result<R, E>,
RS: FnOnce(&<<A as Action>::Target as Associated<T>>::Value) -> Option<InclusionRule<<S as Signature>::Signer>>,
E: Into<IntermediateError<T>>,
<<S as Signature>::Signer as Deref>::Target: StorageRef<T, Value = WithNonce<T, V>> + Clone,
pub fn execute<F, R, E, V, RS>( self, f: F, get_required_signers: RS ) -> Result<R, IntermediateError<T>>where F: FnOnce(A, &mut <<A as Action>::Target as Associated<T>>::Value, BTreeSet<<S as Signature>::Signer, Global>) -> Result<R, E>, RS: FnOnce(&<<A as Action>::Target as Associated<T>>::Value) -> Option<InclusionRule<<S as Signature>::Signer>>, E: Into<IntermediateError<T>>, <<S as Signature>::Signer as Deref>::Target: StorageRef<T, Value = WithNonce<T, V>> + Clone,
Verifies signature and nonce for all required signers, then executes given action providing a mutable reference to the value associated with the target along with the set of actors that provided signatures. In case of a successful result, commits all storage changes and increases nonces for all signers.
sourcepub fn execute_view<F, R, E, V, RS>(
self,
f: F,
get_required_signers: RS
) -> Result<R, IntermediateError<T>>where
F: FnOnce(A, <<A as Action>::Target as Associated<T>>::Value, BTreeSet<<S as Signature>::Signer, Global>) -> Result<R, E>,
RS: FnOnce(&<<A as Action>::Target as Associated<T>>::Value) -> Option<InclusionRule<<S as Signature>::Signer>>,
E: Into<IntermediateError<T>>,
<<S as Signature>::Signer as Deref>::Target: StorageRef<T, Value = WithNonce<T, V>> + Clone,
pub fn execute_view<F, R, E, V, RS>( self, f: F, get_required_signers: RS ) -> Result<R, IntermediateError<T>>where F: FnOnce(A, <<A as Action>::Target as Associated<T>>::Value, BTreeSet<<S as Signature>::Signer, Global>) -> Result<R, E>, RS: FnOnce(&<<A as Action>::Target as Associated<T>>::Value) -> Option<InclusionRule<<S as Signature>::Signer>>, E: Into<IntermediateError<T>>, <<S as Signature>::Signer as Deref>::Target: StorageRef<T, Value = WithNonce<T, V>> + Clone,
Verifies signature and nonce for all required signers, then executes given action providing a value associated with the target along with the set of actors that provided signatures. In case of a successful result, commits all storage changes and increases nonces for all signers
sourcepub fn execute_removable<F, R, E, V, RS>(
self,
f: F,
get_required_signers: RS
) -> Result<R, IntermediateError<T>>where
F: FnOnce(A, &mut Option<<<A as Action>::Target as Associated<T>>::Value>, BTreeSet<<S as Signature>::Signer, Global>) -> Result<R, E>,
RS: FnOnce(Option<&<<A as Action>::Target as Associated<T>>::Value>) -> Option<InclusionRule<<S as Signature>::Signer>>,
E: Into<IntermediateError<T>>,
<<S as Signature>::Signer as Deref>::Target: StorageRef<T, Value = WithNonce<T, V>> + Clone,
pub fn execute_removable<F, R, E, V, RS>( self, f: F, get_required_signers: RS ) -> Result<R, IntermediateError<T>>where F: FnOnce(A, &mut Option<<<A as Action>::Target as Associated<T>>::Value>, BTreeSet<<S as Signature>::Signer, Global>) -> Result<R, E>, RS: FnOnce(Option<&<<A as Action>::Target as Associated<T>>::Value>) -> Option<InclusionRule<<S as Signature>::Signer>>, E: Into<IntermediateError<T>>, <<S as Signature>::Signer as Deref>::Target: StorageRef<T, Value = WithNonce<T, V>> + Clone,
Verifies signature and nonce for all required signers, then executes given action providing a mutable reference to the option containing value associated with the target along with the set of actors that provided signatures. In case of a successful result, commits all storage changes and increases nonces for all signers.
Auto Trait Implementations§
impl<T, A, S, SI> RefUnwindSafe for MultiSignedAction<T, A, S, SI>where A: RefUnwindSafe, S: RefUnwindSafe, SI: RefUnwindSafe, T: RefUnwindSafe,
impl<T, A, S, SI> Send for MultiSignedAction<T, A, S, SI>where A: Send, S: Send, SI: Send, T: Send,
impl<T, A, S, SI> Sync for MultiSignedAction<T, A, S, SI>where A: Sync, S: Sync, SI: Sync, T: Sync,
impl<T, A, S, SI> Unpin for MultiSignedAction<T, A, S, SI>where A: Unpin, S: Unpin, SI: Unpin, T: Unpin,
impl<T, A, S, SI> UnwindSafe for MultiSignedAction<T, A, S, SI>where A: UnwindSafe, S: UnwindSafe, SI: UnwindSafe, T: UnwindSafe,
Blanket Implementations§
source§impl<T> CanUpdate<()> for T
impl<T> CanUpdate<()> for T
source§fn can_remove(&self, _entity: &()) -> bool
fn can_remove(&self, _entity: &()) -> bool
§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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§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>
§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§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>,
T
. Read more§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
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
.