mirror of
https://github.com/logos-blockchain/lssa.git
synced 2026-01-02 21:33:09 +00:00
remove serde for nssa::address
This commit is contained in:
parent
02ad6129d6
commit
1ca3d68d7e
@ -27,7 +27,7 @@ pub struct Account {
|
||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||
pub struct AccountForSerialization {
|
||||
pub key_holder: AddressKeyHolder,
|
||||
pub address: Address,
|
||||
pub address: String,
|
||||
pub balance: u64,
|
||||
pub utxos: HashMap<String, UTXO>,
|
||||
}
|
||||
@ -36,8 +36,8 @@ impl From<Account> for AccountForSerialization {
|
||||
fn from(value: Account) -> Self {
|
||||
AccountForSerialization {
|
||||
key_holder: value.key_holder,
|
||||
address: value.address,
|
||||
balance: value.balance,
|
||||
address: value.address.to_string(),
|
||||
utxos: value
|
||||
.utxos
|
||||
.into_iter()
|
||||
@ -49,9 +49,12 @@ impl From<Account> for AccountForSerialization {
|
||||
|
||||
impl From<AccountForSerialization> for Account {
|
||||
fn from(value: AccountForSerialization) -> Self {
|
||||
let public_key =
|
||||
nssa::PublicKey::new_from_private_key(value.key_holder.get_pub_account_signing_key());
|
||||
let address = nssa::Address::from(&public_key);
|
||||
Account {
|
||||
key_holder: value.key_holder,
|
||||
address: value.address,
|
||||
address,
|
||||
balance: value.balance,
|
||||
utxos: value
|
||||
.utxos
|
||||
@ -82,34 +85,6 @@ impl<'de> Deserialize<'de> for Account {
|
||||
}
|
||||
}
|
||||
|
||||
///A strucure, which represents all the visible(public) information
|
||||
///
|
||||
/// known to each node about account `address`
|
||||
///
|
||||
/// Main usage is to encode data for other account
|
||||
#[derive(Serialize, Clone)]
|
||||
pub struct AccountPublicMask {
|
||||
pub nullifier_public_key: AffinePoint,
|
||||
pub viewing_public_key: AffinePoint,
|
||||
pub address: Address,
|
||||
pub balance: u64,
|
||||
}
|
||||
|
||||
impl AccountPublicMask {
|
||||
pub fn encrypt_data(
|
||||
ephemeral_key_holder: &EphemeralKeyHolder,
|
||||
viewing_public_key_receiver: AffinePoint,
|
||||
data: &[u8],
|
||||
) -> (CipherText, Nonce) {
|
||||
//Using of parent Account fuction
|
||||
Account::encrypt_data(ephemeral_key_holder, viewing_public_key_receiver, data)
|
||||
}
|
||||
|
||||
pub fn make_tag(&self) -> Tag {
|
||||
self.address.value()[0]
|
||||
}
|
||||
}
|
||||
|
||||
impl Account {
|
||||
pub fn new() -> Self {
|
||||
let key_holder = AddressKeyHolder::new_os_random();
|
||||
@ -201,16 +176,6 @@ impl Account {
|
||||
pub fn make_tag(&self) -> Tag {
|
||||
self.address.value()[0]
|
||||
}
|
||||
|
||||
///Produce account public mask
|
||||
pub fn make_account_public_mask(&self) -> AccountPublicMask {
|
||||
AccountPublicMask {
|
||||
nullifier_public_key: self.key_holder.nullifer_public_key,
|
||||
viewing_public_key: self.key_holder.viewing_public_key,
|
||||
address: self.address,
|
||||
balance: self.balance,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for Account {
|
||||
@ -253,25 +218,4 @@ mod tests {
|
||||
|
||||
assert_eq!(account.balance, 500);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_add_asset() {
|
||||
let mut account = Account::new();
|
||||
let asset = "dummy_asset";
|
||||
let amount = 1000u128;
|
||||
|
||||
let result = account.add_asset(asset, amount, false);
|
||||
|
||||
assert!(result.is_ok());
|
||||
assert_eq!(account.utxos.len(), 1);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn accounts_accounts_mask_tag_consistency() {
|
||||
let account = Account::new();
|
||||
|
||||
let account_mask = account.make_account_public_mask();
|
||||
|
||||
assert_eq!(account.make_tag(), account_mask.make_tag());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
use std::{fmt::Display, str::FromStr};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::signature::PublicKey;
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
|
||||
@ -59,28 +57,6 @@ impl Display for Address {
|
||||
}
|
||||
}
|
||||
|
||||
impl Serialize for Address {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: serde::Serializer,
|
||||
{
|
||||
let hex_string = self.to_string();
|
||||
|
||||
hex_string.serialize(serializer)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> Deserialize<'de> for Address {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let hex_string = String::deserialize(deserializer)?;
|
||||
|
||||
Address::from_str(&hex_string).map_err(serde::de::Error::custom)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{Address, address::AddressError};
|
||||
|
||||
@ -547,6 +547,4 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user