7个版本
0.2.1 | 2024年8月2日 |
---|---|
0.2.0 | 2024年7月16日 |
0.1.5 |
|
0.1.3 | 2024年6月25日 |
0.0.0-保留 | 2023年11月23日 |
#279 in 魔法豆
63,517 每月下载量
用于 49 个crate(13 个直接使用)
23KB
333 行
合金签名者
以太坊签名抽象。
您可以实现 Signer
特性,以扩展功能到其他签名者,如硬件安全模块、KMS 等。更多信息请参阅 其文档。
Alloy 中的签名者实现
示例
签名以太坊前缀消息(《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());
# Ok::<_, Box<dyn std::error::Error>>(())
签名交易
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)?;
# Ok::<_, Box<dyn std::error::Error>>(())
依赖关系
~16MB
~352K SLoC