bomputer: init

This commit is contained in:
nym21
2025-01-31 11:43:14 +01:00
parent 8c610f8a83
commit ad34d9d402
67 changed files with 498 additions and 249 deletions

View File

@@ -1,10 +1,9 @@
use derive_deref::{Deref, DerefMut};
// use snkrj::{direct_repr, Storable, UnsizedStorable};
use fjall::Slice;
use unsafe_slice_serde::UnsafeSliceSerde;
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Deref, DerefMut, Default)]
pub struct Addressindex(u32);
// direct_repr!(Addressindex);
impl Addressindex {
pub const BYTES: usize = size_of::<Self>();
@@ -50,13 +49,13 @@ impl From<Addressindex> for usize {
}
}
impl TryFrom<fjall::Slice> for Addressindex {
impl TryFrom<Slice> for Addressindex {
type Error = unsafe_slice_serde::Error;
fn try_from(value: fjall::Slice) -> Result<Self, Self::Error> {
fn try_from(value: Slice) -> Result<Self, Self::Error> {
Ok(*Self::unsafe_try_from_slice(&value)?)
}
}
impl From<Addressindex> for fjall::Slice {
impl From<Addressindex> for Slice {
fn from(value: Addressindex) -> Self {
Self::new(value.unsafe_as_slice())
}

View File

@@ -1,9 +1,7 @@
use derive_deref::{Deref, DerefMut};
// use snkrj::{direct_repr, Storable, UnsizedStorable};
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Deref, DerefMut, Default)]
pub struct Addresstypeindex(u32);
// direct_repr!(Addresstypeindex);
impl Addresstypeindex {
pub fn decremented(self) -> Self {

View File

@@ -5,13 +5,11 @@ use std::{
use biter::bitcoin;
use derive_deref::{Deref, DerefMut};
// use snkrj::{direct_repr, Storable, UnsizedStorable};
use super::Height;
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Deref, DerefMut, Default)]
pub struct Amount(bitcoin::Amount);
// direct_repr!(Amount);
impl Amount {
pub const ZERO: Self = Self(bitcoin::Amount::ZERO);

View File

@@ -2,14 +2,13 @@ use std::hash::Hasher;
use biter::bitcoin::{BlockHash, Txid};
use derive_deref::Deref;
// use snkrj::{direct_repr, Storable, UnsizedStorable};
use fjall::Slice;
use unsafe_slice_serde::UnsafeSliceSerde;
use super::{Addressbytes, Addresstype, SliceExtended};
#[derive(Debug, Deref, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct AddressHash([u8; 8]);
// direct_repr!(AddressHash);
impl From<(&Addressbytes, Addresstype)> for AddressHash {
fn from((addressbytes, addresstype): (&Addressbytes, Addresstype)) -> Self {
let mut hasher = rapidhash::RapidHasher::default();
@@ -24,18 +23,18 @@ impl From<[u8; 8]> for AddressHash {
Self(value)
}
}
impl TryFrom<fjall::Slice> for AddressHash {
impl TryFrom<Slice> for AddressHash {
type Error = color_eyre::Report;
fn try_from(value: fjall::Slice) -> Result<Self, Self::Error> {
fn try_from(value: Slice) -> Result<Self, Self::Error> {
Ok(*Self::unsafe_try_from_slice(&value)?)
}
}
impl From<&AddressHash> for fjall::Slice {
impl From<&AddressHash> for Slice {
fn from(value: &AddressHash) -> Self {
Self::new(value.unsafe_as_slice())
}
}
impl From<AddressHash> for fjall::Slice {
impl From<AddressHash> for Slice {
fn from(value: AddressHash) -> Self {
Self::from(&value)
}
@@ -43,25 +42,24 @@ impl From<AddressHash> for fjall::Slice {
#[derive(Debug, Deref, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct BlockHashPrefix([u8; 8]);
// direct_repr!(BlockHashPrefix);
impl TryFrom<&BlockHash> for BlockHashPrefix {
type Error = color_eyre::Report;
fn try_from(value: &BlockHash) -> Result<Self, Self::Error> {
Ok(Self((&value[..]).read_8x_u8()?))
}
}
impl TryFrom<fjall::Slice> for BlockHashPrefix {
impl TryFrom<Slice> for BlockHashPrefix {
type Error = color_eyre::Report;
fn try_from(value: fjall::Slice) -> Result<Self, Self::Error> {
fn try_from(value: Slice) -> Result<Self, Self::Error> {
Ok(*Self::unsafe_try_from_slice(&value)?)
}
}
impl From<&BlockHashPrefix> for fjall::Slice {
impl From<&BlockHashPrefix> for Slice {
fn from(value: &BlockHashPrefix) -> Self {
Self::new(value.unsafe_as_slice())
}
}
impl From<BlockHashPrefix> for fjall::Slice {
impl From<BlockHashPrefix> for Slice {
fn from(value: BlockHashPrefix) -> Self {
Self::from(&value)
}
@@ -69,25 +67,24 @@ impl From<BlockHashPrefix> for fjall::Slice {
#[derive(Debug, Deref, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct TxidPrefix([u8; 8]);
// direct_repr!(TxidPrefix);
impl TryFrom<&Txid> for TxidPrefix {
type Error = color_eyre::Report;
fn try_from(value: &Txid) -> Result<Self, Self::Error> {
Ok(Self((&value[..]).read_8x_u8()?))
}
}
impl TryFrom<fjall::Slice> for TxidPrefix {
impl TryFrom<Slice> for TxidPrefix {
type Error = color_eyre::Report;
fn try_from(value: fjall::Slice) -> Result<Self, Self::Error> {
fn try_from(value: Slice) -> Result<Self, Self::Error> {
Ok(*Self::unsafe_try_from_slice(&value)?)
}
}
impl From<&TxidPrefix> for fjall::Slice {
impl From<&TxidPrefix> for Slice {
fn from(value: &TxidPrefix) -> Self {
Self::new(value.unsafe_as_slice())
}
}
impl From<TxidPrefix> for fjall::Slice {
impl From<TxidPrefix> for Slice {
fn from(value: TxidPrefix) -> Self {
Self::from(&value)
}

View File

@@ -6,12 +6,11 @@ use std::{
use biter::rpc::{self, RpcApi};
use derive_deref::{Deref, DerefMut};
// use snkrj::{direct_repr, Storable, UnsizedStorable};
use fjall::Slice;
use unsafe_slice_serde::UnsafeSliceSerde;
#[derive(Debug, Clone, Copy, Deref, DerefMut, PartialEq, Eq, PartialOrd, Ord, Default)]
pub struct Height(u32);
// direct_repr!(Height);
impl Height {
pub fn write(&self, path: &Path) -> Result<(), io::Error> {
@@ -120,13 +119,13 @@ impl TryFrom<&rpc::Client> for Height {
}
}
impl TryFrom<fjall::Slice> for Height {
impl TryFrom<Slice> for Height {
type Error = unsafe_slice_serde::Error;
fn try_from(value: fjall::Slice) -> Result<Self, Self::Error> {
fn try_from(value: Slice) -> Result<Self, Self::Error> {
Ok(*Self::unsafe_try_from_slice(&value)?)
}
}
impl From<Height> for fjall::Slice {
impl From<Height> for Slice {
fn from(value: Height) -> Self {
Self::new(value.unsafe_as_slice())
}

View File

@@ -1,6 +1,6 @@
use derive_deref::Deref;
#[derive(Debug, Deref, Clone)]
#[derive(Debug, Deref, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Timestamp(jiff::Timestamp);
impl TryFrom<u32> for Timestamp {

View File

@@ -1,12 +1,11 @@
use std::ops::{Add, AddAssign};
use derive_deref::{Deref, DerefMut};
// use snkrj::{direct_repr, Storable, UnsizedStorable};
use fjall::Slice;
use unsafe_slice_serde::UnsafeSliceSerde;
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Deref, DerefMut, Default)]
pub struct Txindex(u32);
// direct_repr!(Txindex);
impl Txindex {
pub fn incremented(self) -> Self {
@@ -59,13 +58,13 @@ impl From<Txindex> for usize {
}
}
impl TryFrom<fjall::Slice> for Txindex {
impl TryFrom<Slice> for Txindex {
type Error = unsafe_slice_serde::Error;
fn try_from(value: fjall::Slice) -> Result<Self, Self::Error> {
fn try_from(value: Slice) -> Result<Self, Self::Error> {
Ok(*Self::unsafe_try_from_slice(&value)?)
}
}
impl From<Txindex> for fjall::Slice {
impl From<Txindex> for Slice {
fn from(value: Txindex) -> Self {
Self::new(value.unsafe_as_slice())
}

View File

@@ -1,13 +1,11 @@
use std::ops::{Add, AddAssign};
use derive_deref::{Deref, DerefMut};
// use snkrj::{direct_repr, Storable, UnsizedStorable};
use super::Vout;
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Deref, DerefMut, Default)]
pub struct Txinindex(u64);
// direct_repr!(Txinindex);
impl Txinindex {
pub fn incremented(self) -> Self {

View File

@@ -1,13 +1,11 @@
use std::ops::{Add, AddAssign};
use derive_deref::{Deref, DerefMut};
// use snkrj::{direct_repr, Storable, UnsizedStorable};
use super::Vout;
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Deref, DerefMut, Default)]
pub struct Txoutindex(u64);
// direct_repr!(Txoutindex);
impl Txoutindex {
pub const COINBASE: Self = Self(u64::MAX);

View File

@@ -1,5 +1,6 @@
use std::{fs, io, path::Path};
use fjall::Slice;
use unsafe_slice_serde::UnsafeSliceSerde;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
@@ -24,13 +25,13 @@ impl TryFrom<&Path> for Version {
}
}
impl TryFrom<fjall::Slice> for Version {
impl TryFrom<Slice> for Version {
type Error = color_eyre::Report;
fn try_from(value: fjall::Slice) -> Result<Self, Self::Error> {
fn try_from(value: Slice) -> Result<Self, Self::Error> {
Ok(*Self::unsafe_try_from_slice(&value)?)
}
}
impl From<Version> for fjall::Slice {
impl From<Version> for Slice {
fn from(value: Version) -> Self {
Self::new(value.unsafe_as_slice())
}