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: AtomicUsizeImplementations§
Source§impl Signer
impl Signer
Sourcepub fn new<T: SignerTrait + Send + Sync + 'static>(
signer: T,
) -> Result<Arc<Self>, SignerError>
pub fn new<T: SignerTrait + Send + Sync + 'static>( signer: T, ) -> Result<Arc<Self>, SignerError>
Creates a new signer and instantiates nonce cache.
Sourcepub async fn add_signer_to_pool<T: SignerTrait + Send + Sync + 'static>(
&self,
signer: T,
) -> Result<(), SignerError>
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.
Sourcepub async fn fetch_tx_nonce(
&self,
account_id: AccountId,
public_key: PublicKey,
network: &NetworkConfig,
) -> Result<(Nonce, CryptoHash, BlockHeight), SignerError>
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.
Sourcepub fn from_seed_phrase(
seed_phrase: &str,
password: Option<&str>,
) -> Result<SecretKeySigner, SecretError>
pub fn from_seed_phrase( seed_phrase: &str, password: Option<&str>, ) -> Result<SecretKeySigner, SecretError>
Creates a SecretKeySigner using seed phrase with default HD path.
Sourcepub fn from_secret_key(secret_key: SecretKey) -> SecretKeySigner
pub fn from_secret_key(secret_key: SecretKey) -> SecretKeySigner
Creates a SecretKeySigner using a secret key.
Sourcepub fn from_seed_phrase_with_hd_path(
seed_phrase: &str,
hd_path: BIP32Path,
password: Option<&str>,
) -> Result<SecretKeySigner, SecretError>
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.
Sourcepub fn from_access_keyfile(
path: PathBuf,
) -> Result<SecretKeySigner, AccessKeyFileError>
pub fn from_access_keyfile( path: PathBuf, ) -> Result<SecretKeySigner, AccessKeyFileError>
Creates a SecretKeySigner using a path to the access key file.
Sourcepub fn from_ledger() -> LedgerSigner
pub fn from_ledger() -> LedgerSigner
Creates a LedgerSigner using default HD path.
Sourcepub const fn from_ledger_with_hd_path(hd_path: BIP32Path) -> LedgerSigner
pub const fn from_ledger_with_hd_path(hd_path: BIP32Path) -> LedgerSigner
Creates a LedgerSigner using a custom HD path.
Sourcepub fn from_keystore(pub_key: PublicKey) -> KeystoreSigner
pub fn from_keystore(pub_key: PublicKey) -> KeystoreSigner
Creates a KeystoreSigner with predefined public key.
Sourcepub async fn from_keystore_with_search_for_keys(
account_id: AccountId,
network: &NetworkConfig,
) -> Result<KeystoreSigner, KeyStoreError>
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.
Sourcepub async fn get_public_key(&self) -> Result<PublicKey, SignerError>
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.