mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-05-27 10:04:48 -07:00
global: snapshot
This commit is contained in:
@@ -6,7 +6,6 @@ homepage.workspace = true
|
||||
repository.workspace = true
|
||||
edition.workspace = true
|
||||
version.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[features]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,7 @@ use brk_reader::Reader;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{BlkPosition, Height, TxIndex, Version};
|
||||
use vecdb::{
|
||||
AnyStoredVec, AnyVec, Database, Exit, GenericStoredVec, Importable, PAGE_SIZE, PcoVec,
|
||||
AnyStoredVec, AnyVec, Database, Exit, GenericStoredVec, ImportableVec, PAGE_SIZE, PcoVec,
|
||||
TypedVecIterator,
|
||||
};
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ use brk_types::{
|
||||
TxVersion, Version, WeekIndex, Weight, YearIndex,
|
||||
};
|
||||
use vecdb::{
|
||||
Database, EagerVec, Exit, GenericStoredVec, Importable, IterableCloneableVec, IterableVec,
|
||||
Database, EagerVec, Exit, GenericStoredVec, ImportableVec, IterableCloneableVec, IterableVec,
|
||||
LazyVecFrom1, LazyVecFrom2, PAGE_SIZE, PcoVec, TypedVecIterator, VecIndex, unlikely,
|
||||
};
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ use brk_indexer::Indexer;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{DateIndex, Height, OHLCCents, Version};
|
||||
use vecdb::{
|
||||
AnyStoredVec, AnyVec, BytesVec, Database, Exit, GenericStoredVec, Importable, IterableVec,
|
||||
AnyStoredVec, AnyVec, BytesVec, Database, Exit, GenericStoredVec, ImportableVec, IterableVec,
|
||||
PAGE_SIZE, TypedVecIterator, VecIndex,
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ use brk_error::{Error, Result};
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{CheckedSub, StoredU64, Version};
|
||||
use vecdb::{
|
||||
AnyStoredVec, AnyVec, Database, EagerVec, Exit, GenericStoredVec, Importable, IterableVec,
|
||||
AnyStoredVec, AnyVec, Database, EagerVec, Exit, GenericStoredVec, ImportableVec, IterableVec,
|
||||
PcoVec, VecIndex, VecValue,
|
||||
};
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ use brk_types::{
|
||||
DateIndex, DecadeIndex, MonthIndex, QuarterIndex, SemesterIndex, Version, WeekIndex, YearIndex,
|
||||
};
|
||||
use vecdb::{
|
||||
AnyExportableVec, Database, EagerVec, Exit, Importable, IterableCloneableVec, IterableVec,
|
||||
AnyExportableVec, Database, EagerVec, Exit, ImportableVec, IterableCloneableVec, IterableVec,
|
||||
PcoVec,
|
||||
};
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ use brk_types::{
|
||||
Version, WeekIndex, YearIndex,
|
||||
};
|
||||
use vecdb::{
|
||||
AnyExportableVec, Database, EagerVec, Exit, Importable, IterableCloneableVec, IterableVec,
|
||||
AnyExportableVec, Database, EagerVec, Exit, ImportableVec, IterableCloneableVec, IterableVec,
|
||||
PcoVec,
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ use brk_error::Result;
|
||||
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{DifficultyEpoch, Height, Version};
|
||||
use vecdb::{AnyExportableVec, Database, EagerVec, Exit, Importable, PcoVec};
|
||||
use vecdb::{AnyExportableVec, Database, EagerVec, Exit, ImportableVec, PcoVec};
|
||||
|
||||
use crate::{Indexes, indexes};
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ use brk_types::{
|
||||
};
|
||||
use vecdb::{
|
||||
AnyExportableVec, AnyVec, CollectableVec, Database, EagerVec, Exit, GenericStoredVec,
|
||||
Importable, IterableCloneableVec, PcoVec, TypedVecIterator, VecIndex,
|
||||
ImportableVec, IterableCloneableVec, PcoVec, TypedVecIterator, VecIndex,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Bitcoin, Dollars, Height, Sats, Version};
|
||||
use vecdb::{CollectableVec, Database, EagerVec, Exit, Importable, PcoVec};
|
||||
use vecdb::{CollectableVec, Database, EagerVec, Exit, ImportableVec, PcoVec};
|
||||
|
||||
use crate::{
|
||||
Indexes,
|
||||
|
||||
@@ -13,7 +13,7 @@ use brk_types::{
|
||||
YearIndex,
|
||||
};
|
||||
use vecdb::{
|
||||
Database, EagerVec, Exit, GenericStoredVec, Importable, IterableCloneableVec, LazyVecFrom1,
|
||||
Database, EagerVec, Exit, GenericStoredVec, ImportableVec, IterableCloneableVec, LazyVecFrom1,
|
||||
PAGE_SIZE, PcoVec, TypedVecIterator, unlikely,
|
||||
};
|
||||
|
||||
|
||||
@@ -229,6 +229,8 @@ impl Computer {
|
||||
)?;
|
||||
info!("Computed pools in {:?}", i.elapsed());
|
||||
|
||||
return Ok(());
|
||||
|
||||
info!("Computing stateful...");
|
||||
self.stateful.compute(
|
||||
indexer,
|
||||
|
||||
@@ -4,7 +4,7 @@ use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Date, DateIndex, Dollars, Height, Sats, StoredF32, StoredU16, Version};
|
||||
use vecdb::{
|
||||
Database, EagerVec, Exit, GenericStoredVec, Importable, PAGE_SIZE, PcoVec, TypedVecIterator,
|
||||
Database, EagerVec, Exit, GenericStoredVec, ImportableVec, PAGE_SIZE, PcoVec, TypedVecIterator,
|
||||
VecIndex,
|
||||
};
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ use brk_traversable::Traversable;
|
||||
use brk_types::{Address, AddressBytes, Height, OutputType, PoolId, Pools, TxOutIndex, pools};
|
||||
use rayon::prelude::*;
|
||||
use vecdb::{
|
||||
AnyStoredVec, AnyVec, BytesVec, Database, Exit, GenericStoredVec, Importable, IterableVec,
|
||||
AnyStoredVec, AnyVec, BytesVec, Database, Exit, GenericStoredVec, ImportableVec, IterableVec,
|
||||
PAGE_SIZE, TypedVecIterator, VecIndex, Version,
|
||||
};
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ use brk_types::{
|
||||
Cents, Close, DateIndex, DecadeIndex, DifficultyEpoch, Dollars, Height, High, Low, MonthIndex,
|
||||
OHLCDollars, OHLCSats, Open, QuarterIndex, Sats, SemesterIndex, Version, WeekIndex, YearIndex,
|
||||
};
|
||||
use vecdb::{BytesVec, Database, EagerVec, Exit, Importable, PAGE_SIZE, PcoVec};
|
||||
use vecdb::{BytesVec, Database, EagerVec, Exit, ImportableVec, PAGE_SIZE, PcoVec};
|
||||
|
||||
use crate::{fetched, grouped::Source};
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Bitcoin, DateIndex, Dollars, Height, StoredU64, Version};
|
||||
use vecdb::{
|
||||
AnyStoredVec, AnyVec, Database, EagerVec, Exit, GenericStoredVec, Importable, IterableVec,
|
||||
AnyStoredVec, AnyVec, Database, EagerVec, Exit, GenericStoredVec, ImportableVec, IterableVec,
|
||||
PcoVec, TypedVecIterator,
|
||||
};
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use brk_types::{
|
||||
Bitcoin, DateIndex, Dollars, Height, Sats, StoredF32, StoredF64, StoredU64, Version,
|
||||
};
|
||||
use vecdb::{
|
||||
AnyStoredVec, AnyVec, Database, EagerVec, Exit, GenericStoredVec, Importable,
|
||||
AnyStoredVec, AnyVec, Database, EagerVec, Exit, GenericStoredVec, ImportableVec,
|
||||
IterableCloneableVec, IterableVec, PcoVec, TypedVecIterator,
|
||||
};
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@ use rustc_hash::FxHashMap;
|
||||
use smallvec::SmallVec;
|
||||
use vecdb::{
|
||||
AnyStoredVec, AnyVec, BoxedVecIterator, BytesVec, CollectableVec, Database, EagerVec, Exit,
|
||||
GenericStoredVec, ImportOptions, Importable, IterableCloneableVec, IterableVec, LazyVecFrom1,
|
||||
PAGE_SIZE, PcoVec, Reader, Stamp, TypedVecIterator, VecIndex,
|
||||
GenericStoredVec, ImportOptions, ImportableVec, IterableCloneableVec, IterableVec,
|
||||
LazyVecFrom1, PAGE_SIZE, PcoVec, Reader, Stamp, TypedVecIterator, VecIndex,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
|
||||
@@ -64,18 +64,19 @@ impl Formattable for SupplyState {
|
||||
}
|
||||
|
||||
impl Bytes for SupplyState {
|
||||
fn to_bytes(&self) -> Vec<u8> {
|
||||
let mut bytes = Vec::new();
|
||||
bytes.extend_from_slice(&self.utxo_count.to_bytes());
|
||||
bytes.extend_from_slice(&self.value.to_bytes());
|
||||
bytes
|
||||
type Array = [u8; size_of::<Self>()];
|
||||
|
||||
fn to_bytes(&self) -> Self::Array {
|
||||
let mut arr = [0u8; size_of::<Self>()];
|
||||
arr[0..8].copy_from_slice(self.utxo_count.to_bytes().as_ref());
|
||||
arr[8..16].copy_from_slice(self.value.to_bytes().as_ref());
|
||||
arr
|
||||
}
|
||||
|
||||
fn from_bytes(bytes: &[u8]) -> vecdb::Result<Self> {
|
||||
let mut offset = 0;
|
||||
let utxo_count = u64::from_bytes(&bytes[offset..])?;
|
||||
offset += utxo_count.to_bytes().len();
|
||||
let value = Sats::from_bytes(&bytes[offset..])?;
|
||||
Ok(Self { utxo_count, value })
|
||||
Ok(Self {
|
||||
utxo_count: u64::from_bytes(&bytes[0..])?,
|
||||
value: Sats::from_bytes(&bytes[8..])?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -12,7 +12,7 @@ use brk_types::{
|
||||
};
|
||||
use rayon::prelude::*;
|
||||
use vecdb::{
|
||||
AnyStoredVec, BytesVec, Database, GenericStoredVec, Importable, PAGE_SIZE, PcoVec, Stamp,
|
||||
AnyStoredVec, BytesVec, Database, GenericStoredVec, ImportableVec, PAGE_SIZE, PcoVec, Stamp,
|
||||
};
|
||||
|
||||
use crate::Indexes;
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
version.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[features]
|
||||
|
||||
@@ -8,7 +8,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -8,7 +8,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[features]
|
||||
|
||||
@@ -35,7 +35,7 @@ where
|
||||
impl<I, T> Traversable for vecdb::ZeroCopyVec<I, T>
|
||||
where
|
||||
I: VecIndex,
|
||||
T: vecdb::ZeroCopyVecValue + Formattable,
|
||||
T: vecdb::ZeroCopyVecValue + Formattable + Serialize,
|
||||
{
|
||||
fn iter_any_exportable(&self) -> impl Iterator<Item = &dyn AnyExportableVec> {
|
||||
std::iter::once(self as &dyn AnyExportableVec)
|
||||
@@ -67,7 +67,7 @@ where
|
||||
impl<I, T> Traversable for vecdb::LZ4Vec<I, T>
|
||||
where
|
||||
I: VecIndex,
|
||||
T: vecdb::LZ4VecValue + Formattable,
|
||||
T: vecdb::LZ4VecValue + Formattable + Serialize,
|
||||
{
|
||||
fn iter_any_exportable(&self) -> impl Iterator<Item = &dyn AnyExportableVec> {
|
||||
std::iter::once(self as &dyn AnyExportableVec)
|
||||
@@ -83,7 +83,7 @@ where
|
||||
impl<I, T> Traversable for vecdb::ZstdVec<I, T>
|
||||
where
|
||||
I: VecIndex,
|
||||
T: vecdb::ZstdVecValue + Formattable,
|
||||
T: vecdb::ZstdVecValue + Formattable + Serialize,
|
||||
{
|
||||
fn iter_any_exportable(&self) -> impl Iterator<Item = &dyn AnyExportableVec> {
|
||||
std::iter::once(self as &dyn AnyExportableVec)
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[lib]
|
||||
|
||||
@@ -6,7 +6,6 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
homepage.workspace = true
|
||||
repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -55,25 +55,21 @@ impl Formattable for EmptyAddressData {
|
||||
}
|
||||
|
||||
impl Bytes for EmptyAddressData {
|
||||
fn to_bytes(&self) -> Vec<u8> {
|
||||
let mut bytes = Vec::new();
|
||||
bytes.extend_from_slice(&self.tx_count.to_bytes());
|
||||
bytes.extend_from_slice(&self.funded_txo_count.to_bytes());
|
||||
bytes.extend_from_slice(&self.transfered.to_bytes());
|
||||
bytes
|
||||
type Array = [u8; size_of::<Self>()];
|
||||
|
||||
fn to_bytes(&self) -> Self::Array {
|
||||
let mut arr = [0u8; size_of::<Self>()];
|
||||
arr[0..4].copy_from_slice(self.tx_count.to_bytes().as_ref());
|
||||
arr[4..8].copy_from_slice(self.funded_txo_count.to_bytes().as_ref());
|
||||
arr[8..16].copy_from_slice(self.transfered.to_bytes().as_ref());
|
||||
arr
|
||||
}
|
||||
|
||||
fn from_bytes(bytes: &[u8]) -> vecdb::Result<Self> {
|
||||
let mut offset = 0;
|
||||
let tx_count = u32::from_bytes(&bytes[offset..])?;
|
||||
offset += tx_count.to_bytes().len();
|
||||
let funded_txo_count = u32::from_bytes(&bytes[offset..])?;
|
||||
offset += funded_txo_count.to_bytes().len();
|
||||
let transfered = Sats::from_bytes(&bytes[offset..])?;
|
||||
Ok(Self {
|
||||
tx_count,
|
||||
funded_txo_count,
|
||||
transfered,
|
||||
tx_count: u32::from_bytes(&bytes[0..])?,
|
||||
funded_txo_count: u32::from_bytes(&bytes[4..])?,
|
||||
transfered: Sats::from_bytes(&bytes[8..])?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,41 +147,29 @@ impl Formattable for LoadedAddressData {
|
||||
}
|
||||
|
||||
impl Bytes for LoadedAddressData {
|
||||
fn to_bytes(&self) -> Vec<u8> {
|
||||
let mut bytes = Vec::new();
|
||||
bytes.extend_from_slice(&self.tx_count.to_bytes());
|
||||
bytes.extend_from_slice(&self.funded_txo_count.to_bytes());
|
||||
bytes.extend_from_slice(&self.spent_txo_count.to_bytes());
|
||||
bytes.extend_from_slice(&self.padding.to_bytes());
|
||||
bytes.extend_from_slice(&self.received.to_bytes());
|
||||
bytes.extend_from_slice(&self.sent.to_bytes());
|
||||
bytes.extend_from_slice(&self.realized_cap.to_bytes());
|
||||
bytes
|
||||
type Array = [u8; size_of::<Self>()];
|
||||
|
||||
fn to_bytes(&self) -> Self::Array {
|
||||
let mut arr = [0u8; size_of::<Self>()];
|
||||
arr[0..4].copy_from_slice(self.tx_count.to_bytes().as_ref());
|
||||
arr[4..8].copy_from_slice(self.funded_txo_count.to_bytes().as_ref());
|
||||
arr[8..12].copy_from_slice(self.spent_txo_count.to_bytes().as_ref());
|
||||
arr[12..16].copy_from_slice(self.padding.to_bytes().as_ref());
|
||||
arr[16..24].copy_from_slice(self.received.to_bytes().as_ref());
|
||||
arr[24..32].copy_from_slice(self.sent.to_bytes().as_ref());
|
||||
arr[32..40].copy_from_slice(self.realized_cap.to_bytes().as_ref());
|
||||
arr
|
||||
}
|
||||
|
||||
fn from_bytes(bytes: &[u8]) -> vecdb::Result<Self> {
|
||||
let mut offset = 0;
|
||||
let tx_count = u32::from_bytes(&bytes[offset..])?;
|
||||
offset += tx_count.to_bytes().len();
|
||||
let funded_txo_count = u32::from_bytes(&bytes[offset..])?;
|
||||
offset += funded_txo_count.to_bytes().len();
|
||||
let spent_txo_count = u32::from_bytes(&bytes[offset..])?;
|
||||
offset += spent_txo_count.to_bytes().len();
|
||||
let padding = u32::from_bytes(&bytes[offset..])?;
|
||||
offset += padding.to_bytes().len();
|
||||
let received = Sats::from_bytes(&bytes[offset..])?;
|
||||
offset += received.to_bytes().len();
|
||||
let sent = Sats::from_bytes(&bytes[offset..])?;
|
||||
offset += sent.to_bytes().len();
|
||||
let realized_cap = Dollars::from_bytes(&bytes[offset..])?;
|
||||
Ok(Self {
|
||||
tx_count,
|
||||
funded_txo_count,
|
||||
spent_txo_count,
|
||||
padding,
|
||||
received,
|
||||
sent,
|
||||
realized_cap,
|
||||
tx_count: u32::from_bytes(&bytes[0..])?,
|
||||
funded_txo_count: u32::from_bytes(&bytes[4..])?,
|
||||
spent_txo_count: u32::from_bytes(&bytes[8..])?,
|
||||
padding: u32::from_bytes(&bytes[12..])?,
|
||||
received: Sats::from_bytes(&bytes[16..])?,
|
||||
sent: Sats::from_bytes(&bytes[24..])?,
|
||||
realized_cap: Dollars::from_bytes(&bytes[32..])?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,29 +77,23 @@ impl Formattable for OHLCCents {
|
||||
}
|
||||
|
||||
impl Bytes for OHLCCents {
|
||||
fn to_bytes(&self) -> Vec<u8> {
|
||||
let mut bytes = Vec::new();
|
||||
bytes.extend_from_slice(&self.open.to_bytes());
|
||||
bytes.extend_from_slice(&self.high.to_bytes());
|
||||
bytes.extend_from_slice(&self.low.to_bytes());
|
||||
bytes.extend_from_slice(&self.close.to_bytes());
|
||||
bytes
|
||||
type Array = [u8; size_of::<Self>()];
|
||||
|
||||
fn to_bytes(&self) -> Self::Array {
|
||||
let mut arr = [0u8; size_of::<Self>()];
|
||||
arr[0..8].copy_from_slice(self.open.to_bytes().as_ref());
|
||||
arr[8..16].copy_from_slice(self.high.to_bytes().as_ref());
|
||||
arr[16..24].copy_from_slice(self.low.to_bytes().as_ref());
|
||||
arr[24..32].copy_from_slice(self.close.to_bytes().as_ref());
|
||||
arr
|
||||
}
|
||||
|
||||
fn from_bytes(bytes: &[u8]) -> vecdb::Result<Self> {
|
||||
let mut offset = 0;
|
||||
let open = Open::<Cents>::from_bytes(&bytes[offset..])?;
|
||||
offset += open.to_bytes().len();
|
||||
let high = High::<Cents>::from_bytes(&bytes[offset..])?;
|
||||
offset += high.to_bytes().len();
|
||||
let low = Low::<Cents>::from_bytes(&bytes[offset..])?;
|
||||
offset += low.to_bytes().len();
|
||||
let close = Close::<Cents>::from_bytes(&bytes[offset..])?;
|
||||
Ok(Self {
|
||||
open,
|
||||
high,
|
||||
low,
|
||||
close,
|
||||
open: Open::<Cents>::from_bytes(&bytes[0..])?,
|
||||
high: High::<Cents>::from_bytes(&bytes[8..])?,
|
||||
low: Low::<Cents>::from_bytes(&bytes[16..])?,
|
||||
close: Close::<Cents>::from_bytes(&bytes[24..])?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -195,29 +189,23 @@ impl Formattable for OHLCDollars {
|
||||
}
|
||||
|
||||
impl Bytes for OHLCDollars {
|
||||
fn to_bytes(&self) -> Vec<u8> {
|
||||
let mut bytes = Vec::new();
|
||||
bytes.extend_from_slice(&self.open.to_bytes());
|
||||
bytes.extend_from_slice(&self.high.to_bytes());
|
||||
bytes.extend_from_slice(&self.low.to_bytes());
|
||||
bytes.extend_from_slice(&self.close.to_bytes());
|
||||
bytes
|
||||
type Array = [u8; size_of::<Self>()];
|
||||
|
||||
fn to_bytes(&self) -> Self::Array {
|
||||
let mut arr = [0u8; size_of::<Self>()];
|
||||
arr[0..8].copy_from_slice(self.open.to_bytes().as_ref());
|
||||
arr[8..16].copy_from_slice(self.high.to_bytes().as_ref());
|
||||
arr[16..24].copy_from_slice(self.low.to_bytes().as_ref());
|
||||
arr[24..32].copy_from_slice(self.close.to_bytes().as_ref());
|
||||
arr
|
||||
}
|
||||
|
||||
fn from_bytes(bytes: &[u8]) -> vecdb::Result<Self> {
|
||||
let mut offset = 0;
|
||||
let open = Open::<Dollars>::from_bytes(&bytes[offset..])?;
|
||||
offset += open.to_bytes().len();
|
||||
let high = High::<Dollars>::from_bytes(&bytes[offset..])?;
|
||||
offset += high.to_bytes().len();
|
||||
let low = Low::<Dollars>::from_bytes(&bytes[offset..])?;
|
||||
offset += low.to_bytes().len();
|
||||
let close = Close::<Dollars>::from_bytes(&bytes[offset..])?;
|
||||
Ok(Self {
|
||||
open,
|
||||
high,
|
||||
low,
|
||||
close,
|
||||
open: Open::<Dollars>::from_bytes(&bytes[0..])?,
|
||||
high: High::<Dollars>::from_bytes(&bytes[8..])?,
|
||||
low: Low::<Dollars>::from_bytes(&bytes[16..])?,
|
||||
close: Close::<Dollars>::from_bytes(&bytes[24..])?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -294,29 +282,23 @@ impl Formattable for OHLCSats {
|
||||
}
|
||||
|
||||
impl Bytes for OHLCSats {
|
||||
fn to_bytes(&self) -> Vec<u8> {
|
||||
let mut bytes = Vec::new();
|
||||
bytes.extend_from_slice(&self.open.to_bytes());
|
||||
bytes.extend_from_slice(&self.high.to_bytes());
|
||||
bytes.extend_from_slice(&self.low.to_bytes());
|
||||
bytes.extend_from_slice(&self.close.to_bytes());
|
||||
bytes
|
||||
type Array = [u8; size_of::<Self>()];
|
||||
|
||||
fn to_bytes(&self) -> Self::Array {
|
||||
let mut arr = [0u8; size_of::<Self>()];
|
||||
arr[0..8].copy_from_slice(self.open.to_bytes().as_ref());
|
||||
arr[8..16].copy_from_slice(self.high.to_bytes().as_ref());
|
||||
arr[16..24].copy_from_slice(self.low.to_bytes().as_ref());
|
||||
arr[24..32].copy_from_slice(self.close.to_bytes().as_ref());
|
||||
arr
|
||||
}
|
||||
|
||||
fn from_bytes(bytes: &[u8]) -> vecdb::Result<Self> {
|
||||
let mut offset = 0;
|
||||
let open = Open::<Sats>::from_bytes(&bytes[offset..])?;
|
||||
offset += open.to_bytes().len();
|
||||
let high = High::<Sats>::from_bytes(&bytes[offset..])?;
|
||||
offset += high.to_bytes().len();
|
||||
let low = Low::<Sats>::from_bytes(&bytes[offset..])?;
|
||||
offset += low.to_bytes().len();
|
||||
let close = Close::<Sats>::from_bytes(&bytes[offset..])?;
|
||||
Ok(Self {
|
||||
open,
|
||||
high,
|
||||
low,
|
||||
close,
|
||||
open: Open::<Sats>::from_bytes(&bytes[0..])?,
|
||||
high: High::<Sats>::from_bytes(&bytes[8..])?,
|
||||
low: Low::<Sats>::from_bytes(&bytes[16..])?,
|
||||
close: Close::<Sats>::from_bytes(&bytes[24..])?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -902,14 +902,16 @@ impl Formattable for OutputType {
|
||||
}
|
||||
|
||||
impl Bytes for OutputType {
|
||||
type Array = [u8; size_of::<Self>()];
|
||||
|
||||
#[inline]
|
||||
fn to_bytes(&self) -> Vec<u8> {
|
||||
vec![*self as u8]
|
||||
fn to_bytes(&self) -> Self::Array {
|
||||
[*self as u8]
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn from_bytes(bytes: &[u8]) -> vecdb::Result<Self> {
|
||||
if bytes.len() != 1 {
|
||||
if bytes.is_empty() {
|
||||
return Err(vecdb::Error::WrongLength);
|
||||
}
|
||||
// SAFETY: OutputType is repr(u8) and we're transmuting from u8
|
||||
|
||||
@@ -291,17 +291,19 @@ impl Formattable for PoolId {
|
||||
}
|
||||
|
||||
impl Bytes for PoolId {
|
||||
type Array = [u8; size_of::<Self>()];
|
||||
|
||||
#[inline]
|
||||
fn to_bytes(&self) -> Vec<u8> {
|
||||
vec![*self as u8]
|
||||
fn to_bytes(&self) -> Self::Array {
|
||||
[*self as u8]
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn from_bytes(bytes: &[u8]) -> vecdb::Result<Self> {
|
||||
if bytes.len() != 1 {
|
||||
if bytes.is_empty() {
|
||||
return Err(vecdb::Error::WrongLength);
|
||||
}
|
||||
// SAFETY: OutputType is repr(u8) and we're transmuting from u8
|
||||
// SAFETY: PoolId is repr(u8) and we're transmuting from u8
|
||||
// All values 0-255 are valid (includes dummy variants)
|
||||
let s: Self = unsafe { std::mem::transmute(bytes[0]) };
|
||||
Ok(s)
|
||||
|
||||
Reference in New Issue
Block a user