Trait alloy_signer::signer::Signer

source ·
pub trait Signer<Sig = Signature> {
    // Required methods
    fn sign_hash<'life0, 'life1, 'async_trait>(
        &'life0 self,
        hash: &'life1 B256,
    ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn address(&self) -> Address;
    fn chain_id(&self) -> Option<ChainId>;
    fn set_chain_id(&mut self, chain_id: Option<ChainId>);

    // Provided methods
    fn sign_message<'life0, 'life1, 'async_trait>(
        &'life0 self,
        message: &'life1 [u8],
    ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
    fn sign_typed_data<'life0, 'life1, 'life2, 'async_trait, T>(
        &'life0 self,
        payload: &'life1 T,
        domain: &'life2 Eip712Domain,
    ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
       where Self: Sized + Sync + 'async_trait,
             T: 'async_trait + SolStruct + Send + Sync,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait { ... }
    fn sign_dynamic_typed_data<'life0, 'life1, 'async_trait>(
        &'life0 self,
        payload: &'life1 TypedData,
    ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
    fn with_chain_id(self, chain_id: Option<ChainId>) -> Self
       where Self: Sized { ... }
}
Expand description

Asynchronous Ethereum signer.

All provided implementations rely on sign_hash. A signer may not always be able to implement this method, in which case it should return UnsupportedOperation, and implement all the signing methods directly.

Synchronous signers should implement both this trait and SignerSync.

Required Methods§

source

fn sign_hash<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 B256, ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Signs the given hash.

source

fn address(&self) -> Address

Returns the signer’s Ethereum Address.

source

fn chain_id(&self) -> Option<ChainId>

Returns the signer’s chain ID.

source

fn set_chain_id(&mut self, chain_id: Option<ChainId>)

Sets the signer’s chain ID.

Provided Methods§

source

fn sign_message<'life0, 'life1, 'async_trait>( &'life0 self, message: &'life1 [u8], ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Signs the hash of the provided message after prefixing it, as specified in EIP-191.

source

fn sign_typed_data<'life0, 'life1, 'life2, 'async_trait, T>( &'life0 self, payload: &'life1 T, domain: &'life2 Eip712Domain, ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: Sized + Sync + 'async_trait, T: 'async_trait + SolStruct + Send + Sync, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Available on crate feature eip712 only.

Encodes and signs the typed data according to EIP-712.

source

fn sign_dynamic_typed_data<'life0, 'life1, 'async_trait>( &'life0 self, payload: &'life1 TypedData, ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Available on crate feature eip712 only.

Encodes and signs the typed data according to [EIP-712] for Signers that are not dynamically sized.

source

fn with_chain_id(self, chain_id: Option<ChainId>) -> Self
where Self: Sized,

Sets the signer’s chain ID and returns self.

Implementations on Foreign Types§

source§

impl<'a, Sig, U: 'a + Signer<Sig> + ?Sized + Sync> Signer<Sig> for &'a mut U

source§

fn sign_hash<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 B256, ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

fn sign_message<'life0, 'life1, 'async_trait>( &'life0 self, message: &'life1 [u8], ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

fn sign_dynamic_typed_data<'life0, 'life1, 'async_trait>( &'life0 self, payload: &'life1 TypedData, ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Available on crate feature eip712 only.
source§

fn address(&self) -> Address

source§

fn chain_id(&self) -> Option<ChainId>

source§

fn set_chain_id(&mut self, chain_id: Option<ChainId>)

source§

impl<Sig, U: Signer<Sig> + ?Sized + Sync> Signer<Sig> for Box<U>

source§

fn sign_hash<'life0, 'life1, 'async_trait>( &'life0 self, hash: &'life1 B256, ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

fn sign_message<'life0, 'life1, 'async_trait>( &'life0 self, message: &'life1 [u8], ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

fn sign_dynamic_typed_data<'life0, 'life1, 'async_trait>( &'life0 self, payload: &'life1 TypedData, ) -> Pin<Box<dyn Future<Output = Result<Sig>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Available on crate feature eip712 only.
source§

fn address(&self) -> Address

source§

fn chain_id(&self) -> Option<ChainId>

source§

fn set_chain_id(&mut self, chain_id: Option<ChainId>)

Implementors§