2个不稳定版本
0.2.0 | 2024年7月24日 |
---|---|
0.1.0 | 2024年7月23日 |
#16 在 #验证签名
415 每月下载量
68KB
1.5K SLoC
基于ERC-6492的通用以太坊签名验证
此crate验证任何以太坊签名,包括
用法
此crate使用Alloy,并需要一个RPC提供商来验证所有签名类型。
use alloy::primitives::{address, bytes, eip191_hash_message};
use alloy::providers::{network::Ethereum, ReqwestProvider};
use eth_signature_verifier::verify_signature;
#[tokio::main]
async fn main() {
let address = address!("0xc0ffee254729296a45a3885639AC7E10F9d54979");
let message = "coffee";
let signature = bytes!("0x9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658");
let provider = ReqwestProvider::<Ethereum>::new_http("https://rpc.example.com");
let verification = verify_signature(signature, address, message, provider).await.unwrap();
if verification.is_valid() {
// signature valid
}
}
此crate还允许从签名中提取地址,如下所示
use eth_signature_verifier::extract_address;
#[tokio::main]
async fn main() {
let signature = bytes!("0x9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658")
let address = extract_address(signature).await.unwrap(); // works for EOA, ERC1271, ERC6492
dbg!(address);
}
在src/lib.rs
中查看测试用例以获取更多示例。
依赖项
~138MB
~2.5M SLoC