use bft_crdt_derive::add_crdt_fields; use bft_json_crdt::{ json_crdt::{CrdtNode, IntoCrdtNode}, list_crdt::ListCrdt, }; use serde::{Deserialize, Serialize}; #[add_crdt_fields] #[derive(Clone, CrdtNode, Serialize, Deserialize)] pub struct TransactionList { pub list: ListCrdt, } impl TransactionList { pub fn view_sha(&self) -> String { sha256::digest(serde_json::to_string(&self.list.view()).unwrap().as_bytes()).to_string() } } /// A fake Transaction struct we can use as a simulated payload #[add_crdt_fields] #[derive(Clone, CrdtNode, Serialize, Deserialize, PartialEq)] pub struct Transaction { from: String, to: String, amount: f64, }