// use sha2::{Sha256, Digest};
// use secp256k1::rand;
// use secp256k1::{Secp256k1, PublicKey, SecretKey};
// use shared::core::Address;
//
// #[derive(Debug)]
// pub struct Account {
//   address: Address,
//   balance: u64,
//   nonce: u64,
// }
//
// impl Account {
//   pub fn public_key_to_address(public_key: &PublicKey) -> Address {
//     let pk_ser = public_key.serialize();
//     let hash = Sha256::digest(&pk_ser);
//     hex::encode(&hash[..20])
//   }
//
//   pub fn nonce(&self) -> u64 {
//     self.nonce
//   }
//
//   pub fn balance(&self) -> u64 {
//     self.balance
//   }
//
//   pub fn address(&self) -> &Address {
//     &self.address
//   }
//
//   pub fn new() -> Self {
//     let secp = Secp256k1::new();
//     let (secret_key, public_key) = secp.generate_keypair(&mut rand::rng());
//     let addr = Self::public_key_to_address(&public_key);
//
//     println!("{:?}", secret_key);
//
//     Self {
//       address: addr,
//       balance: 0,
//       nonce: 0,
//     }
//   }
// }
//
// #[test]
// fn test_acc_new() {
//   Account::new();
// }
