Struct frame::prelude::frame_system::offchain::Signer
pub struct Signer<T, C, X = ForAny>where
T: SigningTypes,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,{ /* private fields */ }Expand description
Provides an implementation for signing transaction payloads.
Keys used for signing are defined when instantiating the signer object. Signing can be done using:
- All supported keys in the keystore
- Any of the supported keys in the keystore
- An intersection of in-keystore keys and the list of provided keys
The signer is then able to:
- Submit a unsigned transaction with a signed payload
- Submit a signed transaction
Implementations§
§impl<T, C, X> Signer<T, C, X>where
T: SigningTypes,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
impl<T, C, X> Signer<T, C, X>where T: SigningTypes, C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
pub fn all_accounts() -> Signer<T, C, ForAll>
pub fn all_accounts() -> Signer<T, C, ForAll>
Use all available keys for signing.
pub fn any_account() -> Signer<T, C, ForAny>
pub fn any_account() -> Signer<T, C, ForAny>
Use any of the available keys for signing.
pub fn with_filter(
self,
accounts: Vec<<T as SigningTypes>::Public, Global>
) -> Signer<T, C, X>
pub fn with_filter( self, accounts: Vec<<T as SigningTypes>::Public, Global> ) -> Signer<T, C, X>
Use provided accounts for signing.
Note that not all keys will be necessarily used. The provided vector of accounts will be intersected with the supported keys in the keystore and the resulting list will be used for signing.
pub fn accounts_from_keys<'a>(
&'a self
) -> Box<dyn Iterator<Item = Account<T>> + 'a, Global>
pub fn accounts_from_keys<'a>( &'a self ) -> Box<dyn Iterator<Item = Account<T>> + 'a, Global>
Return a vector of the intersection between
all available accounts and the provided accounts
in with_filter. If no accounts are provided,
use all accounts by default.
pub fn keystore_accounts() -> impl Iterator<Item = Account<T>>
pub fn keystore_accounts() -> impl Iterator<Item = Account<T>>
Return all available accounts in keystore.
Trait Implementations§
§impl<T, C, X> Debug for Signer<T, C, X>where
T: SigningTypes + Debug,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature> + Debug,
X: Debug,
impl<T, C, X> Debug for Signer<T, C, X>where T: SigningTypes + Debug, C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature> + Debug, X: Debug,
§impl<T, C, X> Default for Signer<T, C, X>where
T: SigningTypes,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
impl<T, C, X> Default for Signer<T, C, X>where T: SigningTypes, C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
§impl<T, C, LocalCall> SendSignedTransaction<T, C, LocalCall> for Signer<T, C, ForAll>where
T: SigningTypes + CreateSignedTransaction<LocalCall>,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
impl<T, C, LocalCall> SendSignedTransaction<T, C, LocalCall> for Signer<T, C, ForAll>where T: SigningTypes + CreateSignedTransaction<LocalCall>, C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
§fn send_signed_transaction(
&self,
f: impl Fn(&Account<T>) -> LocalCall
) -> <Signer<T, C, ForAll> as SendSignedTransaction<T, C, LocalCall>>::Result
fn send_signed_transaction( &self, f: impl Fn(&Account<T>) -> LocalCall ) -> <Signer<T, C, ForAll> as SendSignedTransaction<T, C, LocalCall>>::Result
Submit a signed transaction to the local pool. Read more
§impl<T, C, LocalCall> SendSignedTransaction<T, C, LocalCall> for Signer<T, C, ForAny>where
T: CreateSignedTransaction<LocalCall> + SigningTypes,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
impl<T, C, LocalCall> SendSignedTransaction<T, C, LocalCall> for Signer<T, C, ForAny>where T: CreateSignedTransaction<LocalCall> + SigningTypes, C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
§fn send_signed_transaction(
&self,
f: impl Fn(&Account<T>) -> LocalCall
) -> <Signer<T, C, ForAny> as SendSignedTransaction<T, C, LocalCall>>::Result
fn send_signed_transaction( &self, f: impl Fn(&Account<T>) -> LocalCall ) -> <Signer<T, C, ForAny> as SendSignedTransaction<T, C, LocalCall>>::Result
Submit a signed transaction to the local pool. Read more
§impl<T, C, LocalCall> SendUnsignedTransaction<T, LocalCall> for Signer<T, C, ForAll>where
T: SigningTypes + SendTransactionTypes<LocalCall>,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
impl<T, C, LocalCall> SendUnsignedTransaction<T, LocalCall> for Signer<T, C, ForAll>where T: SigningTypes + SendTransactionTypes<LocalCall>, C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
§fn send_unsigned_transaction<TPayload, F>(
&self,
f: F,
f2: impl Fn(TPayload, <T as SigningTypes>::Signature) -> LocalCall
) -> <Signer<T, C, ForAll> as SendUnsignedTransaction<T, LocalCall>>::Resultwhere
F: Fn(&Account<T>) -> TPayload,
TPayload: SignedPayload<T>,
fn send_unsigned_transaction<TPayload, F>( &self, f: F, f2: impl Fn(TPayload, <T as SigningTypes>::Signature) -> LocalCall ) -> <Signer<T, C, ForAll> as SendUnsignedTransaction<T, LocalCall>>::Resultwhere F: Fn(&Account<T>) -> TPayload, TPayload: SignedPayload<T>,
Send an unsigned transaction with a signed payload. Read more
§impl<T, C, LocalCall> SendUnsignedTransaction<T, LocalCall> for Signer<T, C, ForAny>where
T: SigningTypes + SendTransactionTypes<LocalCall>,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
impl<T, C, LocalCall> SendUnsignedTransaction<T, LocalCall> for Signer<T, C, ForAny>where T: SigningTypes + SendTransactionTypes<LocalCall>, C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
§fn send_unsigned_transaction<TPayload, F>(
&self,
f: F,
f2: impl Fn(TPayload, <T as SigningTypes>::Signature) -> LocalCall
) -> <Signer<T, C, ForAny> as SendUnsignedTransaction<T, LocalCall>>::Resultwhere
F: Fn(&Account<T>) -> TPayload,
TPayload: SignedPayload<T>,
fn send_unsigned_transaction<TPayload, F>( &self, f: F, f2: impl Fn(TPayload, <T as SigningTypes>::Signature) -> LocalCall ) -> <Signer<T, C, ForAny> as SendUnsignedTransaction<T, LocalCall>>::Resultwhere F: Fn(&Account<T>) -> TPayload, TPayload: SignedPayload<T>,
Send an unsigned transaction with a signed payload. Read more
§impl<T, C> SignMessage<T> for Signer<T, C, ForAll>where
T: SigningTypes,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
impl<T, C> SignMessage<T> for Signer<T, C, ForAll>where T: SigningTypes, C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
§type SignatureData = Vec<(Account<T>, <T as SigningTypes>::Signature), Global>
type SignatureData = Vec<(Account<T>, <T as SigningTypes>::Signature), Global>
A signature data. Read more
§fn sign_message(
&self,
message: &[u8]
) -> <Signer<T, C, ForAll> as SignMessage<T>>::SignatureData
fn sign_message( &self, message: &[u8] ) -> <Signer<T, C, ForAll> as SignMessage<T>>::SignatureData
Sign a message. Read more
§fn sign<TPayload, F>(
&self,
f: F
) -> <Signer<T, C, ForAll> as SignMessage<T>>::SignatureDatawhere
F: Fn(&Account<T>) -> TPayload,
TPayload: SignedPayload<T>,
fn sign<TPayload, F>( &self, f: F ) -> <Signer<T, C, ForAll> as SignMessage<T>>::SignatureDatawhere F: Fn(&Account<T>) -> TPayload, TPayload: SignedPayload<T>,
Construct and sign given payload. Read more
§impl<T, C> SignMessage<T> for Signer<T, C, ForAny>where
T: SigningTypes,
C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
impl<T, C> SignMessage<T> for Signer<T, C, ForAny>where T: SigningTypes, C: AppCrypto<<T as SigningTypes>::Public, <T as SigningTypes>::Signature>,
§type SignatureData = Option<(Account<T>, <T as SigningTypes>::Signature)>
type SignatureData = Option<(Account<T>, <T as SigningTypes>::Signature)>
A signature data. Read more
§fn sign_message(
&self,
message: &[u8]
) -> <Signer<T, C, ForAny> as SignMessage<T>>::SignatureData
fn sign_message( &self, message: &[u8] ) -> <Signer<T, C, ForAny> as SignMessage<T>>::SignatureData
Sign a message. Read more
§fn sign<TPayload, F>(
&self,
f: F
) -> <Signer<T, C, ForAny> as SignMessage<T>>::SignatureDatawhere
F: Fn(&Account<T>) -> TPayload,
TPayload: SignedPayload<T>,
fn sign<TPayload, F>( &self, f: F ) -> <Signer<T, C, ForAny> as SignMessage<T>>::SignatureDatawhere F: Fn(&Account<T>) -> TPayload, TPayload: SignedPayload<T>,
Construct and sign given payload. Read more
Auto Trait Implementations§
impl<T, C, X> RefUnwindSafe for Signer<T, C, X>where C: RefUnwindSafe, X: RefUnwindSafe, <T as SigningTypes>::Public: RefUnwindSafe,
impl<T, C, X> Send for Signer<T, C, X>where C: Send, X: Send, <T as SigningTypes>::Public: Send,
impl<T, C, X> Sync for Signer<T, C, X>where C: Sync, X: Sync, <T as SigningTypes>::Public: Sync,
impl<T, C, X> Unpin for Signer<T, C, X>where C: Unpin, X: Unpin, <T as SigningTypes>::Public: Unpin,
impl<T, C, X> UnwindSafe for Signer<T, C, X>where C: UnwindSafe, X: UnwindSafe, <T as SigningTypes>::Public: 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
Mutably borrows from an owned value. Read more
§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
§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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Formats each item in a sequence. Read more
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> 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,
Pipes by value. This is generally the method you want to use. Read more
§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,
Borrows
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,
Mutably borrows
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,
Borrows
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,
Mutably borrows
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>,
Consume self to return an equivalent value of
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,
Immutable access to the
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,
Mutable access to the
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,
Immutable access to the
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,
Mutable access to the
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,
Immutable access to the
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,
Mutable access to the
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
Calls
.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
Calls
.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,
Calls
.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,
Calls
.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,
Calls
.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,
Calls
.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
The counterpart to
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
Consume self to return an equivalent value of
T.