Rust GBT proof of concept
This commit is contained in:
45
backend/rust-gbt/src/thread_transaction.rs
Normal file
45
backend/rust-gbt/src/thread_transaction.rs
Normal file
@@ -0,0 +1,45 @@
|
||||
// use neon::{types::{JsObject, JsNumber, JsArray, JsValue, JsBoolean, JsArrayBuffer, buffer::TypedArray}, prelude::{Object, FunctionContext, Handle}};
|
||||
extern crate bytes;
|
||||
use std::io::Cursor;
|
||||
use bytes::buf::Buf;
|
||||
pub struct ThreadTransaction {
|
||||
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>,
|
||||
}
|
||||
|
||||
impl ThreadTransaction {
|
||||
pub fn batch_from_buffer(buffer: &[u8]) -> Vec<ThreadTransaction> {
|
||||
let mut transactions: Vec<ThreadTransaction> = 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() 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(ThreadTransaction {
|
||||
uid,
|
||||
fee,
|
||||
weight,
|
||||
sigops,
|
||||
fee_per_vsize,
|
||||
effective_fee_per_vsize,
|
||||
inputs,
|
||||
})
|
||||
}
|
||||
|
||||
return transactions;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user