2024-12-20 11:02:12 +02:00
|
|
|
use risc0_zkvm::{
|
|
|
|
|
guest::env,
|
|
|
|
|
};
|
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
|
|
|
|
|
|
type AccountAddr = [u8; 32];
|
|
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
|
|
|
pub struct UTXOPayload {
|
|
|
|
|
pub owner: AccountAddr,
|
|
|
|
|
pub asset: Vec<u8>,
|
|
|
|
|
// TODO: change to u256
|
|
|
|
|
pub amount: u128,
|
|
|
|
|
pub privacy_flag: bool,
|
2025-05-16 21:55:25 -03:00
|
|
|
pub randomness: [u8; 32],
|
2024-12-20 11:02:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
|
let utxo_spent: UTXOPayload = env::read();
|
2025-05-16 21:55:25 -03:00
|
|
|
let owners_parts: Vec<(u128, AccountAddr, [u8; 32])> = env::read();
|
2024-12-20 11:02:12 +02:00
|
|
|
|
2025-05-16 21:55:25 -03:00
|
|
|
let res: Vec<(UTXOPayload, AccountAddr)> = owners_parts.into_iter().map(|(amount, addr, randomness)| (
|
2024-12-20 11:02:12 +02:00
|
|
|
UTXOPayload {
|
|
|
|
|
owner: addr.clone(),
|
|
|
|
|
asset: vec![],
|
|
|
|
|
amount,
|
|
|
|
|
privacy_flag: true,
|
2025-05-16 21:55:25 -03:00
|
|
|
randomness,
|
2024-12-20 11:02:12 +02:00
|
|
|
},
|
|
|
|
|
addr
|
|
|
|
|
)).collect();
|
|
|
|
|
|
|
|
|
|
env::commit(&(res));
|
|
|
|
|
}
|