mempool/backend/rust-gbt/src/thread_transaction.rs

45 lines
1.2 KiB
Rust
Raw Normal View History

2023-06-23 16:42:58 -04:00
use bytes::buf::Buf;
2023-06-23 20:41:39 -04:00
use std::io::Cursor;
2023-06-23 16:42:58 -04:00
pub struct ThreadTransaction {
2023-06-23 20:41:39 -04:00
pub uid: u32,
pub fee: u64,
pub weight: u32,
pub sigops: u32,
pub fee_per_vsize: f64,
pub effective_fee_per_vsize: f64,
pub inputs: Vec<u32>,
2023-06-23 16:42:58 -04:00
}
impl ThreadTransaction {
pub fn batch_from_buffer(buffer: &[u8]) -> Vec<Self> {
let mut transactions: Vec<Self> = Vec::new();
2023-06-23 20:41:39 -04:00
let mut cursor = Cursor::new(buffer);
let size = cursor.get_u32();
for _ in 0..size {
let uid = cursor.get_u32();
let fee = cursor.get_f64().round() as u64;
let weight = cursor.get_u32();
let sigops = cursor.get_u32();
let fee_per_vsize = cursor.get_f64();
let effective_fee_per_vsize = cursor.get_f64();
let input_count = cursor.get_u32();
let mut inputs: Vec<u32> = Vec::new();
for _ in 0..input_count {
inputs.push(cursor.get_u32());
}
transactions.push(Self {
2023-06-23 20:41:39 -04:00
uid,
fee,
weight,
sigops,
fee_per_vsize,
effective_fee_per_vsize,
inputs,
2023-06-23 21:51:03 -07:00
});
2023-06-23 20:41:39 -04:00
}
2023-06-23 16:42:58 -04:00
2023-06-23 20:41:39 -04:00
transactions
}
}