use cmpb::common::{EndorsementEntry, Payload, TxRequest};
use uuid::Uuid;
use crate::crypto::Signer;
pub const DEFAULT_SEQUENCE: u64 = 0;
pub fn get_normal_tx_id() -> String {
let mut u1 = Uuid::new_v4().to_string();
u1.push_str(&Uuid::new_v4().to_string());
let tx_id = u1.replace("-", "");
return tx_id;
}
pub fn get_tx_id() -> String {
let now = std::time::SystemTime::now()
.duration_since(std::time::SystemTime::UNIX_EPOCH)
.expect("Time went backwards");
let secs = now.as_secs();
let uuid = Uuid::new_v4();
let mut data: [u8; 32] = [0; 32];
data[0..8].copy_from_slice(&secs.to_be_bytes());
data[8] = 202;
data[16..32].copy_from_slice(uuid.as_bytes());
hex::encode(&data)
}
pub fn generate_tx_request_by_signer<S: Signer>(
payload: Payload,
endorsements: Vec<EndorsementEntry>,
signer: S,
) -> Result<TxRequest, String> {
let data = match signer.sign(&payload) {
Err(e) => return Err(e),
Ok(data) => data,
};
let sender = EndorsementEntry {
signer: Some(signer.new_member()),
signature: data,
};
Ok(TxRequest {
payload: Some(payload),
sender: Some(sender),
endorsers: endorsements,
payer: None,
})
}
pub fn get_timestamp() -> u64 {
let now = std::time::SystemTime::now()
.duration_since(std::time::SystemTime::UNIX_EPOCH)
.expect("Time went backwards");
now.as_secs()
}