diff --git a/crates/brk_computer/src/stores.rs b/crates/brk_computer/src/stores.rs index 1508a02de..c7127d1b8 100644 --- a/crates/brk_computer/src/stores.rs +++ b/crates/brk_computer/src/stores.rs @@ -1,6 +1,10 @@ use std::path::Path; -use brk_core::{P2AAddressIndex, P2MSOutputIndex, Version}; +use brk_core::{ + OutputIndex, P2AAddressIndex, P2MSOutputIndex, P2PK33AddressIndex, P2PK65AddressIndex, + P2PKHAddressIndex, P2SHAddressIndex, P2TRAddressIndex, P2WPKHAddressIndex, P2WSHAddressIndex, + Version, +}; use brk_store::Store; use fjall::TransactionalKeyspace; use jiff::Unit; @@ -9,24 +13,50 @@ const _VERSION: Version = Version::ZERO; #[derive(Clone)] pub struct Stores { - // pub p2aaddressindex_to_utxos_received: Store, - // pub p2aaddressindex_to_utxos_sent: Store, - // pub p2msoutputindex_to_utxos_received: Store, - // pub p2msoutputindex_to_utxos_sent: Store, - // pub p2pk33addressindex_to_utxos_received: Store, - // pub p2pk33addressindex_to_utxos_sent: Store, - // pub p2pk65addressindex_to_utxos_received: Store, - // pub p2pk65addressindex_to_utxos_sent: Store, - // pub p2pkhaddressindex_to_utxos_received: Store, - // pub p2pkhaddressindex_to_utxos_sent: Store, - // pub p2shaddressindex_to_utxos_received: Store, - // pub p2shaddressindex_to_utxos_sent: Store, - // pub p2traddressindex_to_utxos_received: Store, - // pub p2traddressindex_to_utxos_sent: Store, - // pub p2wpkhaddressindex_to_utxos_received: Store, - // pub p2wpkhaddressindex_to_utxos_sent: Store, - // pub p2wshaddressindex_to_utxos_received: Store, - // pub p2wshaddressindex_to_utxos_sent: Store, + pub p2aaddressindex_to_addressdata: Store<(P2AAddressIndex, OutputIndex), Unit>, + pub p2aaddressindex_to_emptyaddressdata: Store<(P2AAddressIndex, OutputIndex), Unit>, + pub p2aaddressindex_to_utxos_received: Store<(P2AAddressIndex, OutputIndex), Unit>, + pub p2aaddressindex_to_utxos_sent: Store, + + pub p2msoutputindex_to_addressdata: Store, + pub p2msoutputindex_to_emptyaddressdata: Store, + pub p2msoutputindex_to_utxos_received: Store, + pub p2msoutputindex_to_utxos_sent: Store, + + pub p2pk33addressindex_to_addressdata: Store, + pub p2pk33addressindex_to_emptyaddressdata: Store, + pub p2pk33addressindex_to_utxos_received: Store, + pub p2pk33addressindex_to_utxos_sent: Store, + + pub p2pk65addressindex_to_addressdata: Store, + pub p2pk65addressindex_to_emptyaddressdata: Store, + pub p2pk65addressindex_to_utxos_received: Store, + pub p2pk65addressindex_to_utxos_sent: Store, + + pub p2pkhaddressindex_to_addressdata: Store, + pub p2pkhaddressindex_to_emptyaddressdata: Store, + pub p2pkhaddressindex_to_utxos_received: Store, + pub p2pkhaddressindex_to_utxos_sent: Store, + + pub p2shaddressindex_to_addressdata: Store, + pub p2shaddressindex_to_emptyaddressdata: Store, + pub p2shaddressindex_to_utxos_received: Store, + pub p2shaddressindex_to_utxos_sent: Store, + + pub p2traddressindex_to_addressdata: Store, + pub p2traddressindex_to_emptyaddressdata: Store, + pub p2traddressindex_to_utxos_received: Store, + pub p2traddressindex_to_utxos_sent: Store, + + pub p2wpkhaddressindex_to_addressdata: Store, + pub p2wpkhaddressindex_to_emptyaddressdata: Store, + pub p2wpkhaddressindex_to_utxos_received: Store, + pub p2wpkhaddressindex_to_utxos_sent: Store, + + pub p2wshaddressindex_to_addressdata: Store, + pub p2wshaddressindex_to_emptyaddressdata: Store, + pub p2wshaddressindex_to_utxos_received: Store, + pub p2wshaddressindex_to_utxos_sent: Store, } impl Stores { @@ -44,9 +74,16 @@ impl Stores { // version + VERSION + Version::ZERO, // )?; - Ok(Self { - // address_to_utxos_received, - // address_to_utxos_spent, - }) + todo!(); + // Ok(Self { + // p2aaddressindex_to_utxos_received: Store::import( + // keyspace, + // path, + // name, + // version, + // bloom_filter_bits, + // ), // address_to_utxos_received, + // // address_to_utxos_spent, + // }) } } diff --git a/crates/brk_core/src/structs/addressdata.rs b/crates/brk_core/src/structs/addressdata.rs new file mode 100644 index 000000000..fdd07901d --- /dev/null +++ b/crates/brk_core/src/structs/addressdata.rs @@ -0,0 +1,15 @@ +use crate::{Dollars, Sats}; + +#[derive(Debug, Default)] +pub struct AddressData { + pub sent: Sats, + pub received: Sats, + pub realized_cap: Dollars, + pub outputs_len: u32, +} + +impl AddressData { + pub fn amount(&self) -> Sats { + (u64::from(self.received) - u64::from(self.sent)).into() + } +} diff --git a/crates/brk_core/src/structs/emptyaddressdata.rs b/crates/brk_core/src/structs/emptyaddressdata.rs new file mode 100644 index 000000000..b8926056e --- /dev/null +++ b/crates/brk_core/src/structs/emptyaddressdata.rs @@ -0,0 +1,8 @@ +use crate::Sats; + +#[derive(Debug, Default)] +pub struct EmptyAddressData { + pub transfered: Sats, +} + +impl EmptyAddressData {} diff --git a/crates/brk_core/src/structs/mod.rs b/crates/brk_core/src/structs/mod.rs index 32142545b..e1d5faa2b 100644 --- a/crates/brk_core/src/structs/mod.rs +++ b/crates/brk_core/src/structs/mod.rs @@ -1,5 +1,6 @@ mod addressbytes; mod addressbyteshash; +mod addressdata; mod bitcoin; mod blockhash; mod blockhashprefix; @@ -9,6 +10,7 @@ mod dateindex; mod decadeindex; mod difficultyepoch; mod dollars; +mod emptyaddressdata; mod emptyoutputindex; mod feerate; mod halvingepoch; @@ -54,6 +56,7 @@ mod yearindex; pub use addressbytes::*; pub use addressbyteshash::*; +pub use addressdata::*; pub use bitcoin::*; pub use blockhash::*; pub use blockhashprefix::*; @@ -63,6 +66,7 @@ pub use dateindex::*; pub use decadeindex::*; pub use difficultyepoch::*; pub use dollars::*; +pub use emptyaddressdata::*; pub use emptyoutputindex::*; pub use feerate::*; pub use halvingepoch::*; diff --git a/crates/brk_mcp/README.md b/crates/brk_mcp/README.md index d90f54b4c..78344bd6f 100644 --- a/crates/brk_mcp/README.md +++ b/crates/brk_mcp/README.md @@ -2,13 +2,18 @@ A Model Context Protocol (MCP) which gives LLMs access to all available tools in BRK +## URLs + +- https://eu1.bitcoinresearchkit.org/mcp +- https://eu2.bitcoinresearchkit.org/mcp + ## Usage -To connect to the MCP you only need the correct URL ([https://bitcoinresearchkit.org/mcp](https://bitcoinresearchkit.org/mcp)) no token or auth is needed. +To connect to the MCP you only need the correct URL, no token or auth is needed. This implementation has only been tested with Claude and the [MCP inspector](https://modelcontextprotocol.io/docs/tools/inspector). -Please be aware thtat the technology is very rapidly evolving, thus having issues if probably expected. +Please be aware that the technology is evolving very rapidly, thus having issues is probably expected. If you, you can join the discord see if there is a solution. ### Claude