modilfy utxo struct

This commit is contained in:
Rostyslav Tyshko 2024-12-02 00:55:11 +01:00
parent eb8c128106
commit 4f94dd2595
3 changed files with 16 additions and 2 deletions

View File

@ -83,10 +83,12 @@ impl Account {
self.balance = new_balance; self.balance = new_balance;
} }
pub fn add_asset<Asset: Serialize>(&mut self, asset: Asset) -> Result<()> { pub fn add_asset<Asset: Serialize>(&mut self, asset: Asset, amount: u128, privacy_flag: bool) -> Result<()> {
let payload_with_asset = UTXOPayload { let payload_with_asset = UTXOPayload {
owner: self.address, owner: self.address,
asset: serde_json::to_vec(&asset)?, asset: serde_json::to_vec(&asset)?,
amount,
privacy_flag,
}; };
let asset_utxo = UTXO::create_utxo_from_payload(payload_with_asset); let asset_utxo = UTXO::create_utxo_from_payload(payload_with_asset);

View File

@ -6,19 +6,25 @@ use storage::{merkle_tree_public::TreeHashType, nullifier::UTXONullifier, Accoun
///Raw asset data ///Raw asset data
pub type Asset = Vec<u8>; pub type Asset = Vec<u8>;
#[derive(Debug, PartialEq, Eq, Clone)] #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
///Container for raw utxo payload ///Container for raw utxo payload
pub struct UTXO { pub struct UTXO {
pub hash: TreeHashType, pub hash: TreeHashType,
pub owner: AccountId, pub owner: AccountId,
pub nullifier: Option<UTXONullifier>, pub nullifier: Option<UTXONullifier>,
pub asset: Asset, pub asset: Asset,
// TODO: change to u256
pub amount: u128,
pub privacy_flag: bool,
} }
#[derive(Debug, Clone, Serialize)] #[derive(Debug, Clone, Serialize)]
pub struct UTXOPayload { pub struct UTXOPayload {
pub owner: AccountId, pub owner: AccountId,
pub asset: Asset, pub asset: Asset,
// TODO: change to u256
pub amount: u128,
pub privacy_flag: bool,
} }
impl UTXO { impl UTXO {
@ -36,6 +42,8 @@ impl UTXO {
owner: payload_with_asset.owner, owner: payload_with_asset.owner,
nullifier: None, nullifier: None,
asset: payload_with_asset.asset, asset: payload_with_asset.asset,
amount: payload_with_asset.amount,
privacy_flag: payload_with_asset.privacy_flag,
} }
} }
@ -85,6 +93,8 @@ mod tests {
name: "Test".to_string(), name: "Test".to_string(),
}) })
.unwrap(), .unwrap(),
amount: 10,
privacy_flag: false,
} }
} }

View File

@ -83,6 +83,8 @@ mod tests {
UTXOPayload { UTXOPayload {
owner: AccountId::default(), owner: AccountId::default(),
asset: vec![1, 2, 3], asset: vec![1, 2, 3],
amount: 10,
privacy_flag: false,
} }
} }