Signer

Struct Signer 

Source
pub struct Signer {
    pool: RwLock<HashMap<PublicKey, Box<dyn SignerTrait + Send + Sync + 'static>>>,
    nonce_cache: RwLock<HashMap<(AccountId, PublicKey), AtomicU64>>,
    current_public_key: AtomicUsize,
}
Expand description

A Signer is a wrapper around a single or multiple signer implementations of SignerTrait.

It provides an access key pooling and a nonce caching mechanism to improve transaction throughput.

Fields§

§pool: RwLock<HashMap<PublicKey, Box<dyn SignerTrait + Send + Sync + 'static>>>§nonce_cache: RwLock<HashMap<(AccountId, PublicKey), AtomicU64>>§current_public_key: AtomicUsize

Implementations§

Source§

impl Signer

Source

pub fn new<T: SignerTrait + Send + Sync + 'static>( signer: T, ) -> Result<Arc<Self>, SignerError>

Creates a new signer and instantiates nonce cache.

Source

pub async fn add_signer_to_pool<T: SignerTrait + Send + Sync + 'static>( &self, signer: T, ) -> Result<(), SignerError>

Adds a signer to the pool of signers. The Signer will rotate the provided implementation of SignerTrait on each call to get_public_key.

Source

pub async fn fetch_tx_nonce( &self, account_id: AccountId, public_key: PublicKey, network: &NetworkConfig, ) -> Result<(Nonce, CryptoHash, BlockHeight), SignerError>

Fetches the transaction nonce and block hash associated to the access key. Internally caches the nonce as to not need to query for it every time, and ending up having to run into contention with others.

Source

pub fn from_seed_phrase( seed_phrase: &str, password: Option<&str>, ) -> Result<SecretKeySigner, SecretError>

Creates a SecretKeySigner using seed phrase with default HD path.

Source

pub fn from_secret_key(secret_key: SecretKey) -> SecretKeySigner

Creates a SecretKeySigner using a secret key.

Source

pub fn from_seed_phrase_with_hd_path( seed_phrase: &str, hd_path: BIP32Path, password: Option<&str>, ) -> Result<SecretKeySigner, SecretError>

Creates a SecretKeySigner using seed phrase with a custom HD path.

Source

pub fn from_access_keyfile( path: PathBuf, ) -> Result<SecretKeySigner, AccessKeyFileError>

Creates a SecretKeySigner using a path to the access key file.

Source

pub fn from_ledger() -> LedgerSigner

Creates a LedgerSigner using default HD path.

Source

pub const fn from_ledger_with_hd_path(hd_path: BIP32Path) -> LedgerSigner

Creates a LedgerSigner using a custom HD path.

Source

pub fn from_keystore(pub_key: PublicKey) -> KeystoreSigner

Creates a KeystoreSigner with predefined public key.

Source

pub async fn from_keystore_with_search_for_keys( account_id: AccountId, network: &NetworkConfig, ) -> Result<KeystoreSigner, KeyStoreError>

Creates a KeystoreSigner. The provided function will query provided account for public keys and search in the system keychain for the corresponding secret keys.

Source

pub async fn get_public_key(&self) -> Result<PublicKey, SignerError>

Retrieves the public key from the pool of signers. The public key is rotated on each call.

Source

pub async fn sign_meta( &self, tr: PrepopulateTransaction, public_key: PublicKey, nonce: Nonce, block_hash: CryptoHash, max_block_height: BlockHeight, ) -> Result<SignedDelegateAction, MetaSignError>

Source

pub async fn sign( &self, tr: PrepopulateTransaction, public_key: PublicKey, nonce: Nonce, block_hash: CryptoHash, ) -> Result<SignedTransaction, SignerError>

Auto Trait Implementations§

§

impl !Freeze for Signer

§

impl !RefUnwindSafe for Signer

§

impl Send for Signer

§

impl Sync for Signer

§

impl Unpin for Signer

§

impl !UnwindSafe for Signer

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more