Struct pallet_sudo::CheckOnlySudoAccount
source · Expand description
Ensure that signed transactions are only valid if they are signed by sudo account.
In the initial phase of a chain without any tokens you can not prevent accounts from sending transactions. These transactions would enter the transaction pool as the succeed the validation, but would fail on applying them as they are not allowed/disabled/whatever. This would be some huge dos vector to any kind of chain. This extension solves the dos vector by preventing any kind of transaction entering the pool as long as it is not signed by the sudo account.
Implementations§
Trait Implementations§
source§impl<T: Clone + Config + Send + Sync> Clone for CheckOnlySudoAccount<T>
impl<T: Clone + Config + Send + Sync> Clone for CheckOnlySudoAccount<T>
source§fn clone(&self) -> CheckOnlySudoAccount<T>
fn clone(&self) -> CheckOnlySudoAccount<T>
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<T: Config + Send + Sync> Decode for CheckOnlySudoAccount<T>where
PhantomData<T>: Decode,
impl<T: Config + Send + Sync> Decode for CheckOnlySudoAccount<T>where
PhantomData<T>: 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.
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,
Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
source§impl<T: Config + Send + Sync> Encode for CheckOnlySudoAccount<T>where
PhantomData<T>: Encode,
impl<T: Config + Send + Sync> Encode for CheckOnlySudoAccount<T>where
PhantomData<T>: 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.
source§fn using_encoded<R, F: FnOnce(&[u8]) -> R>(&self, f: F) -> R
fn using_encoded<R, F: FnOnce(&[u8]) -> R>(&self, f: F) -> R
Convert self to a slice and then invoke the given closure with it.
source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
source§impl<T: PartialEq + Config + Send + Sync> PartialEq<CheckOnlySudoAccount<T>> for CheckOnlySudoAccount<T>
impl<T: PartialEq + Config + Send + Sync> PartialEq<CheckOnlySudoAccount<T>> for CheckOnlySudoAccount<T>
source§fn eq(&self, other: &CheckOnlySudoAccount<T>) -> bool
fn eq(&self, other: &CheckOnlySudoAccount<T>) -> bool
source§impl<T: Config + Send + Sync> SignedExtension for CheckOnlySudoAccount<T>where
<T as Config>::RuntimeCall: Dispatchable<Info = DispatchInfo>,
impl<T: Config + Send + Sync> SignedExtension for CheckOnlySudoAccount<T>where
<T as Config>::RuntimeCall: Dispatchable<Info = DispatchInfo>,
source§const IDENTIFIER: &'static str = "CheckOnlySudoAccount"
const IDENTIFIER: &'static str = "CheckOnlySudoAccount"
Unique identifier of this signed extension. Read more
§type Call = <T as Config>::RuntimeCall
type Call = <T as Config>::RuntimeCall
The type which encodes the call to be dispatched.
§type AdditionalSigned = ()
type AdditionalSigned = ()
Any additional data that will go into the signed payload. This may be created dynamically
from the transaction using the
additional_signed
function. Read more§type Pre = ()
type Pre = ()
The type that encodes information that can be passed from pre_dispatch to post-dispatch.
source§fn additional_signed(
&self
) -> Result<Self::AdditionalSigned, TransactionValidityError>
fn additional_signed(
&self
) -> Result<Self::AdditionalSigned, TransactionValidityError>
Construct any additional data that should be in the signed payload of the transaction. Can
also perform any pre-signature-verification checks and return an error if needed. Read more
source§fn validate(
&self,
who: &Self::AccountId,
_call: &Self::Call,
info: &DispatchInfoOf<Self::Call>,
_len: usize
) -> TransactionValidity
fn validate(
&self,
who: &Self::AccountId,
_call: &Self::Call,
info: &DispatchInfoOf<Self::Call>,
_len: usize
) -> TransactionValidity
Validate a signed transaction for the transaction queue. Read more
source§fn pre_dispatch(
self,
who: &Self::AccountId,
call: &Self::Call,
info: &DispatchInfoOf<Self::Call>,
len: usize
) -> Result<Self::Pre, TransactionValidityError>
fn pre_dispatch(
self,
who: &Self::AccountId,
call: &Self::Call,
info: &DispatchInfoOf<Self::Call>,
len: usize
) -> Result<Self::Pre, TransactionValidityError>
Do any pre-flight stuff for a signed transaction. Read more
source§fn validate_unsigned(
_call: &Self::Call,
_info: &<Self::Call as Dispatchable>::Info,
_len: usize
) -> Result<ValidTransaction, TransactionValidityError>
fn validate_unsigned(
_call: &Self::Call,
_info: &<Self::Call as Dispatchable>::Info,
_len: usize
) -> Result<ValidTransaction, TransactionValidityError>
Validate an unsigned transaction for the transaction queue. Read more
source§fn pre_dispatch_unsigned(
call: &Self::Call,
info: &<Self::Call as Dispatchable>::Info,
len: usize
) -> Result<(), TransactionValidityError>
fn pre_dispatch_unsigned(
call: &Self::Call,
info: &<Self::Call as Dispatchable>::Info,
len: usize
) -> Result<(), TransactionValidityError>
Do any pre-flight stuff for a unsigned transaction. Read more
source§fn post_dispatch(
_pre: Option<Self::Pre>,
_info: &<Self::Call as Dispatchable>::Info,
_post_info: &<Self::Call as Dispatchable>::PostInfo,
_len: usize,
_result: &Result<(), DispatchError>
) -> Result<(), TransactionValidityError>
fn post_dispatch(
_pre: Option<Self::Pre>,
_info: &<Self::Call as Dispatchable>::Info,
_post_info: &<Self::Call as Dispatchable>::PostInfo,
_len: usize,
_result: &Result<(), DispatchError>
) -> Result<(), TransactionValidityError>
Do any post-flight stuff for an extrinsic. Read more
source§impl<T> TypeInfo for CheckOnlySudoAccount<T>where
PhantomData<T>: TypeInfo + 'static,
T: Config + Send + Sync + 'static,
impl<T> TypeInfo for CheckOnlySudoAccount<T>where
PhantomData<T>: TypeInfo + 'static,
T: Config + Send + Sync + 'static,
impl<T: Config + Send + Sync> EncodeLike<CheckOnlySudoAccount<T>> for CheckOnlySudoAccount<T>where
PhantomData<T>: Encode,
impl<T: Eq + Config + Send + Sync> Eq for CheckOnlySudoAccount<T>
impl<T: Config + Send + Sync> StructuralEq for CheckOnlySudoAccount<T>
impl<T: Config + Send + Sync> StructuralPartialEq for CheckOnlySudoAccount<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for CheckOnlySudoAccount<T>where
T: RefUnwindSafe,
impl<T> Send for CheckOnlySudoAccount<T>
impl<T> Sync for CheckOnlySudoAccount<T>
impl<T> Unpin for CheckOnlySudoAccount<T>where
T: Unpin,
impl<T> UnwindSafe for CheckOnlySudoAccount<T>where
T: 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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&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
Compare self to
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>,
Consume self to return an equivalent value of
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
The counterpart to
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
Consume self to return an equivalent value of
T
.