revme/cmd/statetest/
utils.rs

1use k256::ecdsa::SigningKey;
2use revm::primitives::Address;
3
4/// Recover the address from a private key ([SigningKey]).
5pub fn recover_address(private_key: &[u8]) -> Option<Address> {
6    let key = SigningKey::from_slice(private_key).ok()?;
7    let public_key = key.verifying_key().to_encoded_point(false);
8    Some(Address::from_raw_public_key(&public_key.as_bytes()[1..]))
9}
10
11#[cfg(test)]
12mod tests {
13    use super::*;
14    use revm::primitives::{address, hex};
15
16    #[test]
17    fn sanity_test() {
18        assert_eq!(
19            Some(address!("a94f5374fce5edbc8e2a8697c15331677e6ebf0b")),
20            recover_address(&hex!(
21                "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8"
22            ))
23        )
24    }
25}