watcher/node/src/core/account.rs
2025-09-03 11:39:09 +02:00

48 lines
972 B
Rust

use secp256k1::{ rand, Message, Secp256k1 };
use sha2::{Digest, Sha256};
pub type Address = String;
#[derive(Debug, bincode::Decode, bincode::Encode)]
pub struct Account {
address: Address,
balance: u64,
nonce: u64,
login_method: LoginMethod,
}
#[derive(Debug, Clone, bincode::Decode, bincode::Encode)]
pub enum LoginMethod {
Password {
password_hash: String,
}
}
impl Account {
pub fn nonce(&self) -> u64 {
self.nonce
}
pub fn balance(&self) -> u64 {
self.balance
}
pub fn address(&self) -> &Address {
&self.address
}
pub fn new() {
let secp = Secp256k1::new();
let (secret_key, public_key) = secp.generate_keypair(&mut rand::rng());
let digest = Sha256::digest("Hello World");
let message = Message::from_digest(digest.into());
let sig = secp.sign_ecdsa(message, &secret_key);
let pk_hash = Sha256::digest(secret_key);
assert!(secp.verify_ecdsa(message, &sig, &public_key).is_ok());
}
}