Struct sp_runtime::generic::UncheckedExtrinsic
source · pub struct UncheckedExtrinsic<Address, Call, Signature, Extra>where
Extra: SignedExtension,{
pub signature: Option<(Address, Signature, Extra)>,
pub function: Call,
}Expand description
An extrinsic right from the external world. This is unchecked and so can contain a signature.
An extrinsic is formally described as any external data that is originating from the outside of the runtime and fed into the runtime as a part of the block-body.
Inherents are special types of extrinsics that are placed into the block by the block-builder. they are unsigned because the assertion is that they are “inherently true” by virtue of getting past all validators.
Transaction are all other statements provided by external entities that the chain deems values and decided to include in the block. This value is typically in the form of fee payment, but it could in principle be any other interaction. Transactions are either signed, or unsigned. A sensible transaction pool should ensure that only transactions that are worthwhile are considered for block-building.
flowchart TD
E(Extrinsic) ---> I(Inherent);
E --> T(Transaction)
T --> ST("Signed (aka. Transaction)")
T --> UT(Unsigned)
This type is by no means enforced within substrate, but given its generic-ness, it is highly likely that for most use-cases it will suffice. Thus, the encoding of this type will dictate exactly what bytes should be sent to a runtime to transact with it.
This can be checked using Checkable, yielding a CheckedExtrinsic, which is the
counterpart of this type after its signature (and other non-negotiable validity checks) have
passed.
Fields§
§signature: Option<(Address, Signature, Extra)>The signature, address, number of extrinsics have come before from the same signer and an era describing the longevity of this transaction, if this is a signed extrinsic.
None if it is unsigned or an inherent.
function: CallThe function that should be called.
Implementations§
source§impl<Address, Call, Signature, Extra: SignedExtension> UncheckedExtrinsic<Address, Call, Signature, Extra>
impl<Address, Call, Signature, Extra: SignedExtension> UncheckedExtrinsic<Address, Call, Signature, Extra>
sourcepub fn new_signed(
function: Call,
signed: Address,
signature: Signature,
extra: Extra
) -> Self
pub fn new_signed( function: Call, signed: Address, signature: Signature, extra: Extra ) -> Self
New instance of a signed extrinsic aka “transaction”.
sourcepub fn new_unsigned(function: Call) -> Self
pub fn new_unsigned(function: Call) -> Self
New instance of an unsigned extrinsic aka “inherent”.
Trait Implementations§
source§impl<LookupSource, AccountId, Call, Signature, Extra, Lookup> Checkable<Lookup> for UncheckedExtrinsic<LookupSource, Call, Signature, Extra>where
LookupSource: Member + MaybeDisplay,
Call: Encode + Member,
Signature: Member + Verify,
<Signature as Verify>::Signer: IdentifyAccount<AccountId = AccountId>,
Extra: SignedExtension<AccountId = AccountId>,
AccountId: Member + MaybeDisplay,
Lookup: Lookup<Source = LookupSource, Target = AccountId>,
impl<LookupSource, AccountId, Call, Signature, Extra, Lookup> Checkable<Lookup> for UncheckedExtrinsic<LookupSource, Call, Signature, Extra>where LookupSource: Member + MaybeDisplay, Call: Encode + Member, Signature: Member + Verify, <Signature as Verify>::Signer: IdentifyAccount<AccountId = AccountId>, Extra: SignedExtension<AccountId = AccountId>, AccountId: Member + MaybeDisplay, Lookup: Lookup<Source = LookupSource, Target = AccountId>,
§type Checked = CheckedExtrinsic<AccountId, Call, Extra>
type Checked = CheckedExtrinsic<AccountId, Call, Extra>
check succeeds.source§impl<Address: Clone, Call: Clone, Signature: Clone, Extra> Clone for UncheckedExtrinsic<Address, Call, Signature, Extra>where
Extra: SignedExtension + Clone,
impl<Address: Clone, Call: Clone, Signature: Clone, Extra> Clone for UncheckedExtrinsic<Address, Call, Signature, Extra>where Extra: SignedExtension + Clone,
source§fn clone(&self) -> UncheckedExtrinsic<Address, Call, Signature, Extra>
fn clone(&self) -> UncheckedExtrinsic<Address, Call, Signature, Extra>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl<Address, Call, Signature, Extra> Debug for UncheckedExtrinsic<Address, Call, Signature, Extra>where
Address: Debug,
Call: Debug,
Extra: SignedExtension,
impl<Address, Call, Signature, Extra> Debug for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: Debug, Call: Debug, Extra: SignedExtension,
source§impl<Address, Call, Signature, Extra> Decode for UncheckedExtrinsic<Address, Call, Signature, Extra>where
Address: Decode,
Signature: Decode,
Call: Decode,
Extra: SignedExtension,
impl<Address, Call, Signature, Extra> Decode for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: Decode, Signature: Decode, Call: Decode, Extra: SignedExtension,
source§fn decode<I: Input>(input: &mut I) -> Result<Self, Error>
fn decode<I: Input>(input: &mut I) -> Result<Self, Error>
§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,
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where I: Input,
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
source§impl<'a, Address: Decode, Signature: Decode, Call: Decode, Extra: SignedExtension> Deserialize<'a> for UncheckedExtrinsic<Address, Call, Signature, Extra>
impl<'a, Address: Decode, Signature: Decode, Call: Decode, Extra: SignedExtension> Deserialize<'a> for UncheckedExtrinsic<Address, Call, Signature, Extra>
source§fn deserialize<D>(de: D) -> Result<Self, D::Error>where
D: Deserializer<'a>,
fn deserialize<D>(de: D) -> Result<Self, D::Error>where D: Deserializer<'a>,
source§impl<Address, Call, Signature, Extra> Encode for UncheckedExtrinsic<Address, Call, Signature, Extra>where
Address: Encode,
Signature: Encode,
Call: Encode,
Extra: SignedExtension,
impl<Address, Call, Signature, Extra> Encode for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: Encode, Signature: Encode, Call: Encode, Extra: SignedExtension,
§fn encode_to<T>(&self, dest: &mut T)where
T: Output + ?Sized,
fn encode_to<T>(&self, dest: &mut T)where T: Output + ?Sized,
§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,
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
source§impl<Address: TypeInfo, Call: TypeInfo, Signature: TypeInfo, Extra: SignedExtension + TypeInfo> Extrinsic for UncheckedExtrinsic<Address, Call, Signature, Extra>
impl<Address: TypeInfo, Call: TypeInfo, Signature: TypeInfo, Extra: SignedExtension + TypeInfo> Extrinsic for UncheckedExtrinsic<Address, Call, Signature, Extra>
§type SignaturePayload = (Address, Signature, Extra)
type SignaturePayload = (Address, Signature, Extra)
source§impl<Address, Call, Signature, Extra> ExtrinsicMetadata for UncheckedExtrinsic<Address, Call, Signature, Extra>where
Extra: SignedExtension,
impl<Address, Call, Signature, Extra> ExtrinsicMetadata for UncheckedExtrinsic<Address, Call, Signature, Extra>where Extra: SignedExtension,
source§impl<Address, Call, Signature, Extra> From<UncheckedExtrinsic<Address, Call, Signature, Extra>> for OpaqueExtrinsicwhere
Address: Encode,
Signature: Encode,
Call: Encode,
Extra: SignedExtension,
impl<Address, Call, Signature, Extra> From<UncheckedExtrinsic<Address, Call, Signature, Extra>> for OpaqueExtrinsicwhere Address: Encode, Signature: Encode, Call: Encode, Extra: SignedExtension,
source§fn from(extrinsic: UncheckedExtrinsic<Address, Call, Signature, Extra>) -> Self
fn from(extrinsic: UncheckedExtrinsic<Address, Call, Signature, Extra>) -> Self
source§impl<Address: PartialEq, Call: PartialEq, Signature: PartialEq, Extra> PartialEq<UncheckedExtrinsic<Address, Call, Signature, Extra>> for UncheckedExtrinsic<Address, Call, Signature, Extra>where
Extra: SignedExtension + PartialEq,
impl<Address: PartialEq, Call: PartialEq, Signature: PartialEq, Extra> PartialEq<UncheckedExtrinsic<Address, Call, Signature, Extra>> for UncheckedExtrinsic<Address, Call, Signature, Extra>where Extra: SignedExtension + PartialEq,
source§fn eq(
&self,
other: &UncheckedExtrinsic<Address, Call, Signature, Extra>
) -> bool
fn eq( &self, other: &UncheckedExtrinsic<Address, Call, Signature, Extra> ) -> bool
self and other values to be equal, and is used
by ==.source§impl<Address: Encode, Signature: Encode, Call: Encode, Extra: SignedExtension> Serialize for UncheckedExtrinsic<Address, Call, Signature, Extra>
impl<Address: Encode, Signature: Encode, Call: Encode, Extra: SignedExtension> Serialize for UncheckedExtrinsic<Address, Call, Signature, Extra>
source§impl<Address, Call, Signature, Extra> TypeInfo for UncheckedExtrinsic<Address, Call, Signature, Extra>where
Address: StaticTypeInfo,
Call: StaticTypeInfo,
Signature: StaticTypeInfo,
Extra: SignedExtension + StaticTypeInfo,
impl<Address, Call, Signature, Extra> TypeInfo for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: StaticTypeInfo, Call: StaticTypeInfo, Signature: StaticTypeInfo, Extra: SignedExtension + StaticTypeInfo,
Manual [TypeInfo] implementation because of custom encoding. The data is a valid encoded
Vec<u8>, but requires some logic to extract the signature and payload.
See UncheckedExtrinsic::encode and UncheckedExtrinsic::decode.
impl<Address, Call, Signature, Extra> EncodeLike<UncheckedExtrinsic<Address, Call, Signature, Extra>> for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: Encode, Signature: Encode, Call: Encode, Extra: SignedExtension,
impl<Address: Eq, Call: Eq, Signature: Eq, Extra> Eq for UncheckedExtrinsic<Address, Call, Signature, Extra>where Extra: SignedExtension + Eq,
impl<Address, Call, Signature, Extra> StructuralEq for UncheckedExtrinsic<Address, Call, Signature, Extra>where Extra: SignedExtension,
impl<Address, Call, Signature, Extra> StructuralPartialEq for UncheckedExtrinsic<Address, Call, Signature, Extra>where Extra: SignedExtension,
Auto Trait Implementations§
impl<Address, Call, Signature, Extra> RefUnwindSafe for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: RefUnwindSafe, Call: RefUnwindSafe, Extra: RefUnwindSafe, Signature: RefUnwindSafe,
impl<Address, Call, Signature, Extra> Send for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: Send, Call: Send, Signature: Send,
impl<Address, Call, Signature, Extra> Sync for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: Sync, Call: Sync, Signature: Sync,
impl<Address, Call, Signature, Extra> Unpin for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: Unpin, Call: Unpin, Extra: Unpin, Signature: Unpin,
impl<Address, Call, Signature, Extra> UnwindSafe for UncheckedExtrinsic<Address, Call, Signature, Extra>where Address: UnwindSafe, Call: UnwindSafe, Extra: UnwindSafe, Signature: 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
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§impl<T> Conv for T
impl<T> Conv for T
§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>
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 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,
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>
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere T: Codec,
§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> 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<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
§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.