Expand description
§alloy-signer
Ethereum signer abstraction.
You can implement the Signer
trait to extend functionality to other signers
such as Hardware Security Modules, KMS etc. See its documentation for more.
Signer implementations in Alloy:
§Examples
Sign an Ethereum prefixed message (EIP-712):
ⓘ
use alloy_signer::{Signer, SignerSync};
use alloy_signer_local::PrivateKeySigner;
// Instantiate a signer.
let signer = PrivateKeySigner::random();
// Sign a message.
let message = "Some data";
let signature = signer.sign_message_sync(message.as_bytes())?;
// Recover the signer from the message.
let recovered = signature.recover_address_from_msg(message)?;
assert_eq!(recovered, signer.address());
Sign a transaction:
ⓘ
use alloy_consensus::TxLegacy;
use alloy_primitives::{U256, address, bytes};
use alloy_signer::{Signer, SignerSync};
use alloy_signer_local::PrivateKeySigner;
use alloy_network::TxSignerSync;
// Instantiate a signer.
let signer = "dcf2cbdd171a21c480aa7f53d77f31bb102282b3ff099c78e3118b37348c72f7"
.parse::<PrivateKeySigner>()?;
// Create a transaction.
let mut tx = TxLegacy {
to: address!("d8dA6BF26964aF9D7eEd9e03E53415D37aA96045").into(),
value: U256::from(1_000_000_000),
gas_limit: 2_000_000,
nonce: 0,
gas_price: 21_000_000_000,
input: bytes!(),
chain_id: Some(1),
};
// Sign it.
let signature = signer.sign_transaction_sync(&mut tx)?;
Re-exports§
pub use k256;
Modules§
- utils
- Utility functions for working with Ethereum signatures.
Macros§
- sign_
transaction_ with_ chain_ id - Utility to get and set the chain ID on a transaction and the resulting signature within a
signer’s
sign_transaction
.
Structs§
- Signature
- An Ethereum ECDSA signature.
Enums§
- Either
- The enum
Either
with variantsLeft
andRight
is a general purpose sum type with two cases. - Error
- Generic error type for
Signer
implementations. - Unsupported
Signer Operation - An unsupported signer operation.
Traits§
- Signer
- Asynchronous Ethereum signer.
- Signer
Sync - Synchronous Ethereum signer.