Enum pallet_multisig::pallet::Call
source · pub enum Call<T: Config> {
as_multi_threshold_1 {
other_signatories: Vec<T::AccountId>,
call: Box<<T as Config>::RuntimeCall>,
},
as_multi {
threshold: u16,
other_signatories: Vec<T::AccountId>,
maybe_timepoint: Option<Timepoint<T::BlockNumber>>,
call: Box<<T as Config>::RuntimeCall>,
max_weight: Weight,
},
approve_as_multi {
threshold: u16,
other_signatories: Vec<T::AccountId>,
maybe_timepoint: Option<Timepoint<T::BlockNumber>>,
call_hash: [u8; 32],
max_weight: Weight,
},
cancel_as_multi {
threshold: u16,
other_signatories: Vec<T::AccountId>,
timepoint: Timepoint<T::BlockNumber>,
call_hash: [u8; 32],
},
// some variants omitted
}
Expand description
Contains one variant per dispatchable that can be called by an extrinsic.
Variants§
as_multi_threshold_1
Immediately dispatch a multi-signature call using a single approval from the caller.
The dispatch origin for this call must be Signed.
other_signatories
: The accounts (other than the sender) who are part of the multi-signature, but do not participate in the approval process.call
: The call to be executed.
Result is equivalent to the dispatched result.
Complexity
O(Z + C) where Z is the length of the call and C its execution weight.
as_multi
Register approval for a dispatch to be made from a deterministic composite account if
approved by a total of threshold - 1
of other_signatories
.
If there are enough, then dispatch the call.
Payment: DepositBase
will be reserved if this is the first approval, plus
threshold
times DepositFactor
. It is returned once this dispatch happens or
is cancelled.
The dispatch origin for this call must be Signed.
threshold
: The total number of approvals for this dispatch before it is executed.other_signatories
: The accounts (other than the sender) who can approve this dispatch. May not be empty.maybe_timepoint
: If this is the first approval, then this must beNone
. If it is not the first approval, then it must beSome
, with the timepoint (block number and transaction index) of the first approval transaction.call
: The call to be executed.
NOTE: Unless this is the final approval, you will generally want to use
approve_as_multi
instead, since it only requires a hash of the call.
Result is equivalent to the dispatched result if threshold
is exactly 1
. Otherwise
on success, result is Ok
and the result from the interior call, if it was executed,
may be found in the deposited MultisigExecuted
event.
Complexity
O(S + Z + Call)
.- Up to one balance-reserve or unreserve operation.
- One passthrough operation, one insert, both
O(S)
whereS
is the number of signatories.S
is capped byMaxSignatories
, with weight being proportional. - One call encode & hash, both of complexity
O(Z)
whereZ
is tx-len. - One encode & hash, both of complexity
O(S)
. - Up to one binary search and insert (
O(logS + S)
). - I/O: 1 read
O(S)
, up to 1 mutateO(S)
. Up to one remove. - One event.
- The weight of the
call
. - Storage: inserts one item, value size bounded by
MaxSignatories
, with a deposit taken for its lifetime ofDepositBase + threshold * DepositFactor
.
approve_as_multi
Fields
maybe_timepoint: Option<Timepoint<T::BlockNumber>>
Register approval for a dispatch to be made from a deterministic composite account if
approved by a total of threshold - 1
of other_signatories
.
Payment: DepositBase
will be reserved if this is the first approval, plus
threshold
times DepositFactor
. It is returned once this dispatch happens or
is cancelled.
The dispatch origin for this call must be Signed.
threshold
: The total number of approvals for this dispatch before it is executed.other_signatories
: The accounts (other than the sender) who can approve this dispatch. May not be empty.maybe_timepoint
: If this is the first approval, then this must beNone
. If it is not the first approval, then it must beSome
, with the timepoint (block number and transaction index) of the first approval transaction.call_hash
: The hash of the call to be executed.
NOTE: If this is the final approval, you will want to use as_multi
instead.
Complexity
O(S)
.- Up to one balance-reserve or unreserve operation.
- One passthrough operation, one insert, both
O(S)
whereS
is the number of signatories.S
is capped byMaxSignatories
, with weight being proportional. - One encode & hash, both of complexity
O(S)
. - Up to one binary search and insert (
O(logS + S)
). - I/O: 1 read
O(S)
, up to 1 mutateO(S)
. Up to one remove. - One event.
- Storage: inserts one item, value size bounded by
MaxSignatories
, with a deposit taken for its lifetime ofDepositBase + threshold * DepositFactor
.
cancel_as_multi
Fields
timepoint: Timepoint<T::BlockNumber>
Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously for this operation will be unreserved on success.
The dispatch origin for this call must be Signed.
threshold
: The total number of approvals for this dispatch before it is executed.other_signatories
: The accounts (other than the sender) who can approve this dispatch. May not be empty.timepoint
: The timepoint (block number and transaction index) of the first approval transaction for this dispatch.call_hash
: The hash of the call to be executed.
Complexity
O(S)
.- Up to one balance-reserve or unreserve operation.
- One passthrough operation, one insert, both
O(S)
whereS
is the number of signatories.S
is capped byMaxSignatories
, with weight being proportional. - One encode & hash, both of complexity
O(S)
. - One event.
- I/O: 1 read
O(S)
, one remove. - Storage: removes one item.
Implementations§
source§impl<T: Config> Call<T>
impl<T: Config> Call<T>
sourcepub fn new_call_variant_as_multi_threshold_1(
other_signatories: Vec<T::AccountId>,
call: Box<<T as Config>::RuntimeCall>
) -> Self
pub fn new_call_variant_as_multi_threshold_1(
other_signatories: Vec<T::AccountId>,
call: Box<<T as Config>::RuntimeCall>
) -> Self
Create a call with the variant as_multi_threshold_1
.
sourcepub fn new_call_variant_as_multi(
threshold: u16,
other_signatories: Vec<T::AccountId>,
maybe_timepoint: Option<Timepoint<T::BlockNumber>>,
call: Box<<T as Config>::RuntimeCall>,
max_weight: Weight
) -> Self
pub fn new_call_variant_as_multi(
threshold: u16,
other_signatories: Vec<T::AccountId>,
maybe_timepoint: Option<Timepoint<T::BlockNumber>>,
call: Box<<T as Config>::RuntimeCall>,
max_weight: Weight
) -> Self
Create a call with the variant as_multi
.
sourcepub fn new_call_variant_approve_as_multi(
threshold: u16,
other_signatories: Vec<T::AccountId>,
maybe_timepoint: Option<Timepoint<T::BlockNumber>>,
call_hash: [u8; 32],
max_weight: Weight
) -> Self
pub fn new_call_variant_approve_as_multi(
threshold: u16,
other_signatories: Vec<T::AccountId>,
maybe_timepoint: Option<Timepoint<T::BlockNumber>>,
call_hash: [u8; 32],
max_weight: Weight
) -> Self
Create a call with the variant approve_as_multi
.
sourcepub fn new_call_variant_cancel_as_multi(
threshold: u16,
other_signatories: Vec<T::AccountId>,
timepoint: Timepoint<T::BlockNumber>,
call_hash: [u8; 32]
) -> Self
pub fn new_call_variant_cancel_as_multi(
threshold: u16,
other_signatories: Vec<T::AccountId>,
timepoint: Timepoint<T::BlockNumber>,
call_hash: [u8; 32]
) -> Self
Create a call with the variant cancel_as_multi
.
Trait Implementations§
source§impl<T: Config> Decode for Call<T>
impl<T: Config> Decode for Call<T>
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<T: Config> Encode for Call<T>
impl<T: Config> Encode for Call<T>
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<T: Config> GetCallName for Call<T>
impl<T: Config> GetCallName for Call<T>
source§fn get_call_name(&self) -> &'static str
fn get_call_name(&self) -> &'static str
source§fn get_call_names() -> &'static [&'static str]
fn get_call_names() -> &'static [&'static str]
source§impl<T: Config> GetDispatchInfo for Call<T>
impl<T: Config> GetDispatchInfo for Call<T>
source§fn get_dispatch_info(&self) -> DispatchInfo
fn get_dispatch_info(&self) -> DispatchInfo
DispatchInfo
, containing relevant information of this dispatch. Read moresource§impl<T: Config> GetDispatchInfo for Call<T>
impl<T: Config> GetDispatchInfo for Call<T>
source§fn get_dispatch_info(&self) -> DispatchInfo
fn get_dispatch_info(&self) -> DispatchInfo
frame_support::dispatch
source§impl<T> TypeInfo for Call<T>where
PhantomData<(T,)>: TypeInfo + 'static,
Vec<T::AccountId>: TypeInfo + 'static,
Box<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Option<Timepoint<T::BlockNumber>>: TypeInfo + 'static,
Timepoint<T::BlockNumber>: TypeInfo + 'static,
T: Config + 'static,
impl<T> TypeInfo for Call<T>where
PhantomData<(T,)>: TypeInfo + 'static,
Vec<T::AccountId>: TypeInfo + 'static,
Box<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Option<Timepoint<T::BlockNumber>>: TypeInfo + 'static,
Timepoint<T::BlockNumber>: TypeInfo + 'static,
T: Config + 'static,
source§impl<T: Config> UnfilteredDispatchable for Call<T>
impl<T: Config> UnfilteredDispatchable for Call<T>
§type RuntimeOrigin = <T as Config>::RuntimeOrigin
type RuntimeOrigin = <T as Config>::RuntimeOrigin
frame_system::Config::RuntimeOrigin
).source§fn dispatch_bypass_filter(
self,
origin: Self::RuntimeOrigin
) -> DispatchResultWithPostInfo
fn dispatch_bypass_filter(
self,
origin: Self::RuntimeOrigin
) -> DispatchResultWithPostInfo
impl<T: Config> EncodeLike<Call<T>> for Call<T>
impl<T: Config> Eq for Call<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for Call<T>where
T: RefUnwindSafe,
<T as Config>::AccountId: RefUnwindSafe,
<T as Config>::BlockNumber: RefUnwindSafe,
<T as Config>::RuntimeCall: RefUnwindSafe,
impl<T> Send for Call<T>where
T: Send,
<T as Config>::RuntimeCall: Send,
impl<T> Sync for Call<T>where
T: Sync,
<T as Config>::RuntimeCall: Sync,
impl<T> Unpin for Call<T>where
T: Unpin,
<T as Config>::AccountId: Unpin,
<T as Config>::BlockNumber: Unpin,
impl<T> UnwindSafe for Call<T>where
T: UnwindSafe,
<T as Config>::AccountId: UnwindSafe,
<T as Config>::BlockNumber: UnwindSafe,
<T as Config>::RuntimeCall: UnwindSafe,
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§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
. Read moresource§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
. Read moresource§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. Read moresource§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. Read moresource§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.source§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere
T: Codec,
fn blake2_128(&self) -> [u8; 16]
fn blake2_256(&self) -> [u8; 32]
fn blake2_128_concat(&self) -> Vec<u8, Global> ⓘ
fn twox_128(&self) -> [u8; 16]
fn twox_256(&self) -> [u8; 32]
fn twox_64_concat(&self) -> Vec<u8, Global> ⓘ
fn identity(&self) -> Vec<u8, Global> ⓘ
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, 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>,
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moresource§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
.source§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.