global: snapshot

This commit is contained in:
nym21
2025-11-25 17:21:07 +01:00
parent c644781d18
commit dc86514329
87 changed files with 335 additions and 1436 deletions

View File

@@ -6,8 +6,7 @@ use brk_reader::Reader;
use brk_traversable::Traversable;
use brk_types::{BlkPosition, Height, TxIndex, Version};
use vecdb::{
AnyStoredVec, AnyVec, CompressedVec, Database, Exit, GenericStoredVec, PAGE_SIZE,
TypedVecIterator,
AnyStoredVec, AnyVec, Database, Exit, GenericStoredVec, PAGE_SIZE, PcoVec, TypedVecIterator,
};
use super::Indexes;
@@ -16,8 +15,8 @@ use super::Indexes;
pub struct Vecs {
db: Database,
pub height_to_position: CompressedVec<Height, BlkPosition>,
pub txindex_to_position: CompressedVec<TxIndex, BlkPosition>,
pub height_to_position: PcoVec<Height, BlkPosition>,
pub txindex_to_position: PcoVec<TxIndex, BlkPosition>,
}
impl Vecs {
@@ -28,16 +27,8 @@ impl Vecs {
let version = parent_version + Version::ZERO;
let this = Self {
height_to_position: CompressedVec::forced_import(
&db,
"position",
version + Version::TWO,
)?,
txindex_to_position: CompressedVec::forced_import(
&db,
"position",
version + Version::TWO,
)?,
height_to_position: PcoVec::forced_import(&db, "position", version + Version::TWO)?,
txindex_to_position: PcoVec::forced_import(&db, "position", version + Version::TWO)?,
db,
};

View File

@@ -1,10 +1,10 @@
use std::ops::{Add, AddAssign, Div};
use vecdb::{Formattable, Pco};
use vecdb::{Formattable, PcoVecValue};
pub trait ComputedVecValue
where
Self: Pco
Self: PcoVecValue
+ From<usize>
+ Div<usize, Output = Self>
+ Add<Output = Self>
@@ -14,7 +14,7 @@ where
{
}
impl<T> ComputedVecValue for T where
T: Pco
T: PcoVecValue
+ From<usize>
+ Div<usize, Output = Self>
+ Add<Output = Self>

View File

@@ -1,6 +1,6 @@
use std::collections::BTreeMap;
use vecdb::{CompressedVec, Pco, RawVec, VecIndex, VecValue};
use vecdb::{BytesVec, BytesVecValue, PcoVec, PcoVecValue, VecIndex};
#[derive(Debug)]
pub struct RangeMap<I, T>(BTreeMap<I, T>);
@@ -20,13 +20,13 @@ where
}
}
impl<I, T> From<&RawVec<I, T>> for RangeMap<T, I>
impl<I, T> From<&BytesVec<I, T>> for RangeMap<T, I>
where
I: VecIndex,
T: VecIndex + VecValue,
T: VecIndex + BytesVecValue,
{
#[inline]
fn from(vec: &RawVec<I, T>) -> Self {
fn from(vec: &BytesVec<I, T>) -> Self {
Self(
vec.into_iter()
.enumerate()
@@ -36,13 +36,13 @@ where
}
}
impl<I, T> From<&CompressedVec<I, T>> for RangeMap<T, I>
impl<I, T> From<&PcoVec<I, T>> for RangeMap<T, I>
where
I: VecIndex,
T: VecIndex + Pco,
T: VecIndex + PcoVecValue,
{
#[inline]
fn from(vec: &CompressedVec<I, T>) -> Self {
fn from(vec: &PcoVec<I, T>) -> Self {
Self(
vec.into_iter()
.enumerate()

View File

@@ -9,7 +9,7 @@ use brk_types::{Dollars, Height, Sats};
use derive_deref::{Deref, DerefMut};
use pco::standalone::{simple_decompress, simpler_compress};
use serde::{Deserialize, Serialize};
use zerocopy::{FromBytes, IntoBytes};
use vecdb::Bytes;
use crate::states::SupplyState;
@@ -143,8 +143,8 @@ impl State {
let compressed_values = simpler_compress(&values, COMPRESSION_LEVEL)?;
let mut buffer = Vec::new();
buffer.extend(keys.len().as_bytes());
buffer.extend(compressed_keys.len().as_bytes());
buffer.extend(keys.len().to_bytes());
buffer.extend(compressed_keys.len().to_bytes());
buffer.extend(compressed_keys);
buffer.extend(compressed_values);
@@ -152,8 +152,8 @@ impl State {
}
fn deserialize(data: &[u8]) -> vecdb::Result<Self> {
let entry_count = usize::read_from_bytes(&data[0..8])?;
let keys_len = usize::read_from_bytes(&data[8..16])?;
let entry_count = usize::from_bytes(&data[0..8])?;
let keys_len = usize::from_bytes(&data[8..16])?;
let keys: Vec<f64> = simple_decompress(&data[16..16 + keys_len])?;
let values: Vec<u64> = simple_decompress(&data[16 + keys_len..])?;

View File

@@ -3,9 +3,8 @@ use std::ops::{Add, AddAssign, SubAssign};
use brk_types::{CheckedSub, LoadedAddressData, Sats};
use serde::Serialize;
use vecdb::Formattable;
use zerocopy::{FromBytes, Immutable, IntoBytes, KnownLayout};
#[derive(Debug, Default, Clone, FromBytes, Immutable, IntoBytes, KnownLayout, Serialize)]
#[derive(Debug, Default, Clone, Serialize)]
pub struct SupplyState {
pub utxo_count: u64,
pub value: Sats,