global: MASSIVE snapshot

This commit is contained in:
nym21
2026-02-23 17:22:12 +01:00
parent be0d749f9c
commit 3b7aa8242a
703 changed files with 29130 additions and 30779 deletions

View File

@@ -6,7 +6,7 @@ use super::Vecs;
use crate::{indexes, ComputeIndexes};
impl Vecs {
pub fn compute(
pub(crate) fn compute(
&mut self,
indexer: &Indexer,
indexes: &indexes::Vecs,

View File

@@ -6,7 +6,7 @@ use super::Vecs;
use crate::{ComputeIndexes, indexes};
impl Vecs {
pub fn compute(
pub(crate) fn compute(
&mut self,
indexer: &Indexer,
indexes: &indexes::Vecs,

View File

@@ -6,7 +6,7 @@ use super::Vecs;
use crate::{indexes, internal::TxDerivedFull};
impl Vecs {
pub fn forced_import(db: &Database, version: Version, indexes: &indexes::Vecs) -> Result<Self> {
pub(crate) fn forced_import(db: &Database, version: Version, indexes: &indexes::Vecs) -> Result<Self> {
Ok(Self(TxDerivedFull::forced_import(
db,
"input_count",

View File

@@ -1,8 +1,9 @@
use brk_traversable::Traversable;
use brk_types::StoredU64;
use derive_more::{Deref, DerefMut};
use vecdb::{Rw, StorageMode};
use crate::internal::TxDerivedFull;
#[derive(Clone, Deref, DerefMut, Traversable)]
pub struct Vecs(pub TxDerivedFull<StoredU64>);
#[derive(Deref, DerefMut, Traversable)]
pub struct Vecs<M: StorageMode = Rw>(pub TxDerivedFull<StoredU64, M>);

View File

@@ -9,7 +9,7 @@ use super::{CountVecs, SpentVecs, Vecs};
use crate::indexes;
impl Vecs {
pub fn forced_import(
pub(crate) fn forced_import(
parent_path: &Path,
parent_version: Version,
indexes: &indexes::Vecs,

View File

@@ -5,18 +5,18 @@ mod compute;
mod import;
use brk_traversable::Traversable;
use vecdb::Database;
use vecdb::{Database, Rw, StorageMode};
pub use count::Vecs as CountVecs;
pub use spent::Vecs as SpentVecs;
pub const DB_NAME: &str = "inputs";
#[derive(Clone, Traversable)]
pub struct Vecs {
#[derive(Traversable)]
pub struct Vecs<M: StorageMode = Rw> {
#[traversable(skip)]
pub(crate) db: Database,
pub spent: SpentVecs,
pub count: CountVecs,
pub spent: SpentVecs<M>,
pub count: CountVecs<M>,
}

View File

@@ -2,7 +2,7 @@ use brk_error::Result;
use brk_indexer::Indexer;
use brk_types::{Sats, TxInIndex, TxIndex, TxOutIndex, Vout};
use tracing::info;
use vecdb::{AnyStoredVec, AnyVec, Database, Exit, GenericStoredVec, TypedVecIterator, VecIndex};
use vecdb::{AnyStoredVec, AnyVec, Database, Exit, WritableVec, ReadableVec, VecIndex};
use super::Vecs;
use crate::ComputeIndexes;
@@ -10,7 +10,7 @@ use crate::ComputeIndexes;
const BATCH_SIZE: usize = 2 * 1024 * 1024 * 1024 / size_of::<Entry>();
impl Vecs {
pub fn compute(
pub(crate) fn compute(
&mut self,
db: &Database,
indexer: &Indexer,
@@ -39,19 +39,20 @@ impl Vecs {
return Ok(());
}
let mut outpoint_iter = indexer.vecs.inputs.outpoint.iter()?;
let mut first_txoutindex_iter = indexer.vecs.transactions.first_txoutindex.iter()?;
let mut value_iter = indexer.vecs.outputs.value.iter()?;
let mut entries: Vec<Entry> = Vec::with_capacity(BATCH_SIZE);
let first_txoutindex_reader = indexer.vecs.transactions.first_txoutindex.reader();
let value_reader = indexer.vecs.outputs.value.reader();
let actual_total = target - min;
let mut entries: Vec<Entry> = Vec::with_capacity(actual_total.min(BATCH_SIZE));
let mut batch_start = min;
while batch_start < target {
let batch_end = (batch_start + BATCH_SIZE).min(target);
let outpoints = indexer.vecs.inputs.outpoint.collect_range_at(batch_start, batch_end);
entries.clear();
for i in batch_start..batch_end {
let txinindex = TxInIndex::from(i);
let outpoint = outpoint_iter.get_unwrap(txinindex);
for (j, outpoint) in outpoints.into_iter().enumerate() {
let txinindex = TxInIndex::from(batch_start + j);
entries.push(Entry {
txinindex,
txindex: outpoint.txindex(),
@@ -67,7 +68,7 @@ impl Vecs {
if entry.txindex.is_coinbase() {
break;
}
entry.txoutindex = first_txoutindex_iter.get_unwrap(entry.txindex) + entry.vout;
entry.txoutindex = first_txoutindex_reader.get(entry.txindex.to_usize()) + entry.vout;
}
entries.sort_unstable_by_key(|e| e.txoutindex);
@@ -75,7 +76,7 @@ impl Vecs {
if entry.txoutindex.is_coinbase() {
break;
}
entry.value = value_iter.get_unwrap(entry.txoutindex);
entry.value = value_reader.get(entry.txoutindex.to_usize());
}
entries.sort_unstable_by_key(|e| e.txinindex);

View File

@@ -5,7 +5,7 @@ use vecdb::{Database, ImportableVec, PcoVec};
use super::Vecs;
impl Vecs {
pub fn forced_import(db: &Database, version: Version) -> Result<Self> {
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
Ok(Self {
txoutindex: PcoVec::forced_import(db, "txoutindex", version)?,
value: PcoVec::forced_import(db, "value", version)?,

View File

@@ -1,9 +1,9 @@
use brk_traversable::Traversable;
use brk_types::{Sats, TxInIndex, TxOutIndex};
use vecdb::PcoVec;
use vecdb::{PcoVec, Rw, StorageMode};
#[derive(Clone, Traversable)]
pub struct Vecs {
pub txoutindex: PcoVec<TxInIndex, TxOutIndex>,
pub value: PcoVec<TxInIndex, Sats>,
#[derive(Traversable)]
pub struct Vecs<M: StorageMode = Rw> {
pub txoutindex: M::Stored<PcoVec<TxInIndex, TxOutIndex>>,
pub value: M::Stored<PcoVec<TxInIndex, Sats>>,
}