Pass gbt mempool data directly without serialization
This commit is contained in:
@@ -1,45 +1,12 @@
|
||||
use bytes::buf::Buf;
|
||||
use std::io::Cursor;
|
||||
use napi_derive::napi;
|
||||
|
||||
#[derive(Debug)]
|
||||
#[napi(object)]
|
||||
pub struct ThreadTransaction {
|
||||
pub uid: u32,
|
||||
pub fee: u64,
|
||||
pub fee: f64,
|
||||
pub weight: u32,
|
||||
pub sigops: u32,
|
||||
pub fee_per_vsize: f64,
|
||||
pub effective_fee_per_vsize: f64,
|
||||
pub inputs: Vec<u32>,
|
||||
}
|
||||
|
||||
impl ThreadTransaction {
|
||||
pub fn batch_from_buffer(buffer: &[u8]) -> Vec<Self> {
|
||||
let mut transactions: Vec<Self> = Vec::new();
|
||||
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 {
|
||||
uid,
|
||||
fee,
|
||||
weight,
|
||||
sigops,
|
||||
fee_per_vsize,
|
||||
effective_fee_per_vsize,
|
||||
inputs,
|
||||
});
|
||||
}
|
||||
|
||||
transactions
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user