mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-06-26 14:14:30 -07:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 50bfdb0d68 | |||
| a6cb09ff1c |
Generated
+16
-16
@@ -443,7 +443,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"brk_bundler",
|
||||
"brk_cli",
|
||||
@@ -464,7 +464,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_bundler"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"brk_rolldown",
|
||||
"log",
|
||||
@@ -475,7 +475,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_cli"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"bitcoincore-rpc",
|
||||
"brk_computer",
|
||||
@@ -498,7 +498,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_computer"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"bitcoin",
|
||||
"bitcoincore-rpc",
|
||||
@@ -519,7 +519,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_core"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"bitcoin",
|
||||
@@ -540,7 +540,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_exit"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"brk_logger",
|
||||
"ctrlc",
|
||||
@@ -549,7 +549,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_fetcher"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"brk_core",
|
||||
"brk_logger",
|
||||
@@ -561,7 +561,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_indexer"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"bitcoin",
|
||||
"bitcoincore-rpc",
|
||||
@@ -579,7 +579,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_interface"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"brk_computer",
|
||||
"brk_core",
|
||||
@@ -597,7 +597,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_logger"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"color-eyre",
|
||||
"env_logger",
|
||||
@@ -607,7 +607,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_mcp"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"axum",
|
||||
"brk_interface",
|
||||
@@ -618,7 +618,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_parser"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"bitcoin",
|
||||
"bitcoincore-rpc",
|
||||
@@ -980,7 +980,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_server"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"axum",
|
||||
"bitcoincore-rpc",
|
||||
@@ -1010,7 +1010,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_state"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"brk_core",
|
||||
@@ -1022,7 +1022,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_store"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"brk_core",
|
||||
"byteview",
|
||||
@@ -1043,7 +1043,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "brk_vec"
|
||||
version = "0.0.69"
|
||||
version = "0.0.70"
|
||||
dependencies = [
|
||||
"arc-swap",
|
||||
"brk_core",
|
||||
|
||||
+16
-16
@@ -4,7 +4,7 @@ members = ["crates/*"]
|
||||
package.description = "The Bitcoin Research Kit is a suite of tools designed to extract, compute and display data stored on a Bitcoin Core node"
|
||||
package.license = "MIT"
|
||||
package.edition = "2024"
|
||||
package.version = "0.0.69"
|
||||
package.version = "0.0.70"
|
||||
package.homepage = "https://bitcoinresearchkit.org"
|
||||
package.repository = "https://github.com/bitcoinresearchkit/brk"
|
||||
|
||||
@@ -22,22 +22,22 @@ axum = "0.8.4"
|
||||
bincode = { version = "2.0.1", features = ["serde"] }
|
||||
bitcoin = { version = "0.32.6", features = ["serde"] }
|
||||
bitcoincore-rpc = "0.19.0"
|
||||
brk_bundler = { version = "0.0.69", path = "crates/brk_bundler" }
|
||||
brk_cli = { version = "0.0.69", path = "crates/brk_cli" }
|
||||
brk_computer = { version = "0.0.69", path = "crates/brk_computer" }
|
||||
brk_core = { version = "0.0.69", path = "crates/brk_core" }
|
||||
brk_exit = { version = "0.0.69", path = "crates/brk_exit" }
|
||||
brk_fetcher = { version = "0.0.69", path = "crates/brk_fetcher" }
|
||||
brk_indexer = { version = "0.0.69", path = "crates/brk_indexer" }
|
||||
brk_interface = { version = "0.0.69", path = "crates/brk_interface" }
|
||||
brk_logger = { version = "0.0.69", path = "crates/brk_logger" }
|
||||
brk_mcp = { version = "0.0.69", path = "crates/brk_mcp" }
|
||||
brk_parser = { version = "0.0.69", path = "crates/brk_parser" }
|
||||
brk_bundler = { version = "0.0.70", path = "crates/brk_bundler" }
|
||||
brk_cli = { version = "0.0.70", path = "crates/brk_cli" }
|
||||
brk_computer = { version = "0.0.70", path = "crates/brk_computer" }
|
||||
brk_core = { version = "0.0.70", path = "crates/brk_core" }
|
||||
brk_exit = { version = "0.0.70", path = "crates/brk_exit" }
|
||||
brk_fetcher = { version = "0.0.70", path = "crates/brk_fetcher" }
|
||||
brk_indexer = { version = "0.0.70", path = "crates/brk_indexer" }
|
||||
brk_interface = { version = "0.0.70", path = "crates/brk_interface" }
|
||||
brk_logger = { version = "0.0.70", path = "crates/brk_logger" }
|
||||
brk_mcp = { version = "0.0.70", path = "crates/brk_mcp" }
|
||||
brk_parser = { version = "0.0.70", path = "crates/brk_parser" }
|
||||
brk_rmcp = { version = "0.1.7", features = ["transport-streamable-http-server", "transport-worker"]}
|
||||
brk_server = { version = "0.0.69", path = "crates/brk_server" }
|
||||
brk_state = { version = "0.0.69", path = "crates/brk_state" }
|
||||
brk_store = { version = "0.0.69", path = "crates/brk_store" }
|
||||
brk_vec = { version = "0.0.69", path = "crates/brk_vec" }
|
||||
brk_server = { version = "0.0.70", path = "crates/brk_server" }
|
||||
brk_state = { version = "0.0.70", path = "crates/brk_state" }
|
||||
brk_store = { version = "0.0.70", path = "crates/brk_store" }
|
||||
brk_vec = { version = "0.0.70", path = "crates/brk_vec" }
|
||||
byteview = "=0.6.1"
|
||||
clap = { version = "4.5.40", features = ["string"] }
|
||||
clap_derive = "4.5.40"
|
||||
|
||||
@@ -42,7 +42,7 @@ The toolkit can be used in various ways to accommodate as many needs as possible
|
||||
It has a wide range of functionalities including charts, tables and simulations which you can visit for free and without the need for an account. \
|
||||
Also available at: [kibo.money](https://kibo.money) // [satonomics.xyz](https://satonomics.xyz)
|
||||
- **[API](https://github.com/bitcoinresearchkit/brk/tree/main/crates/brk_server#brk-server)** \
|
||||
Researchers and developers are free to use BRK's public API with  dataset variants at their disposal. \
|
||||
Researchers and developers are free to use BRK's public API with  dataset variants at their disposal. \
|
||||
Just like the website, it's entirely free, with no authentication or rate-limiting.
|
||||
- **[AI](https://github.com/bitcoinresearchkit/brk/blob/main/crates/brk_mcp/README.md#brk-mcp)** \
|
||||
LLMs have to possibility to connect to BRK's backend through a [MCP](https://modelcontextprotocol.io/introduction). \
|
||||
|
||||
@@ -88,7 +88,7 @@ pub struct Config {
|
||||
#[arg(long, value_name = "SECONDS")]
|
||||
delay: Option<u64>,
|
||||
|
||||
/// Activate the Model Context Protocol (MCP) endpoint to give LLMs access to BRK (experimental), default: false, saved
|
||||
/// Activate the Model Context Protocol (MCP) endpoint to give LLMs access to BRK (experimental), default: true, saved
|
||||
#[serde(default, deserialize_with = "default_on_error")]
|
||||
#[arg(long, value_name = "BOOL")]
|
||||
mcp: Option<bool>,
|
||||
@@ -367,7 +367,7 @@ impl Config {
|
||||
}
|
||||
|
||||
pub fn mcp(&self) -> bool {
|
||||
self.mcp.is_some_and(|b| b)
|
||||
self.mcp.is_none_or(|b| b)
|
||||
}
|
||||
|
||||
pub fn watch(&self) -> bool {
|
||||
|
||||
@@ -11,7 +11,7 @@ use color_eyre::eyre::{ContextCompat, eyre};
|
||||
use log::info;
|
||||
use serde_json::Value;
|
||||
|
||||
use crate::{Close, Date, Dollars, Fetcher, High, Low, Open, fetchers::retry};
|
||||
use crate::{Close, Date, Dollars, Fetcher, High, Low, Open, retry};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Binance {
|
||||
@@ -5,9 +5,10 @@ use color_eyre::eyre::{ContextCompat, eyre};
|
||||
use log::info;
|
||||
use serde_json::Value;
|
||||
|
||||
use crate::{Close, Dollars, High, Low, Open, fetchers::retry};
|
||||
use crate::{Close, Dollars, High, Low, Open, retry};
|
||||
|
||||
#[derive(Default, Clone)]
|
||||
#[allow(clippy::upper_case_acronyms)]
|
||||
pub struct BRK {
|
||||
height_to_ohlc: BTreeMap<Height, Vec<OHLCCents>>,
|
||||
dateindex_to_ohlc: BTreeMap<DateIndex, Vec<OHLCCents>>,
|
||||
@@ -47,7 +48,7 @@ impl BRK {
|
||||
retry(
|
||||
|_| {
|
||||
let url = format!(
|
||||
"{API_URL}/query?index=height&values=ohlc&from={}&to={}",
|
||||
"{API_URL}/height-to-ohlc?from={}&to={}",
|
||||
height,
|
||||
height + CHUNK_SIZE
|
||||
);
|
||||
@@ -96,7 +97,7 @@ impl BRK {
|
||||
retry(
|
||||
|_| {
|
||||
let url = format!(
|
||||
"{API_URL}/query?index=dateindex&values=ohlc&from={}&to={}",
|
||||
"{API_URL}/dateindex-to-ohlc?from={}&to={}",
|
||||
dateindex,
|
||||
dateindex + CHUNK_SIZE
|
||||
);
|
||||
@@ -1,9 +0,0 @@
|
||||
mod binance;
|
||||
mod brk;
|
||||
mod kraken;
|
||||
mod retry;
|
||||
|
||||
pub use binance::*;
|
||||
pub use brk::*;
|
||||
pub use kraken::*;
|
||||
use retry::*;
|
||||
@@ -5,7 +5,7 @@ use color_eyre::eyre::ContextCompat;
|
||||
use log::info;
|
||||
use serde_json::Value;
|
||||
|
||||
use crate::{Fetcher, fetchers::retry};
|
||||
use crate::{Fetcher, retry};
|
||||
|
||||
#[derive(Default, Clone)]
|
||||
pub struct Kraken {
|
||||
@@ -7,12 +7,18 @@ use std::{collections::BTreeMap, path::Path, thread::sleep, time::Duration};
|
||||
|
||||
use brk_core::{Close, Date, Dollars, Height, High, Low, OHLCCents, Open, Timestamp};
|
||||
use color_eyre::eyre::Error;
|
||||
|
||||
mod fetchers;
|
||||
|
||||
pub use fetchers::*;
|
||||
use log::info;
|
||||
|
||||
mod binance;
|
||||
mod brk;
|
||||
mod kraken;
|
||||
mod retry;
|
||||
|
||||
pub use binance::*;
|
||||
pub use brk::*;
|
||||
pub use kraken::*;
|
||||
use retry::*;
|
||||
|
||||
const TRIES: usize = 12 * 60;
|
||||
|
||||
#[derive(Clone)]
|
||||
|
||||
@@ -142,7 +142,7 @@ The response's format will depend on the given parameters, it will be:
|
||||
}
|
||||
|
||||
#[tool(description = "
|
||||
Get the running version of the Bitcoin Research Kit
|
||||
Get the running version of the Bitcoin Research Kit.
|
||||
")]
|
||||
async fn get_version(&self) -> Result<CallToolResult, McpError> {
|
||||
info!("mcp: get_version");
|
||||
|
||||
@@ -24,7 +24,6 @@ pub struct RawVec<I, T> {
|
||||
header: Header,
|
||||
parent: PathBuf,
|
||||
name: String,
|
||||
// file: Option<File>,
|
||||
// Consider Arc<ArcSwap<Option<Mmap>>> for dataraces when reorg ?
|
||||
mmap: Arc<ArcSwap<Mmap>>,
|
||||
pushed: Vec<T>,
|
||||
@@ -63,9 +62,7 @@ where
|
||||
(mmap, header)
|
||||
} else {
|
||||
let mmap = Self::new_mmap(&file)?;
|
||||
// dbg!(&mmap[..]);
|
||||
let header = Header::import_and_verify(&mmap, version, Format::Raw)?;
|
||||
// dbg!((&header, name, I::to_string()));
|
||||
(mmap, header)
|
||||
}
|
||||
}
|
||||
@@ -86,7 +83,6 @@ where
|
||||
Ok(Self {
|
||||
mmap,
|
||||
header,
|
||||
// file: Some(file),
|
||||
name: name.to_string(),
|
||||
parent: parent.to_owned(),
|
||||
pushed: vec![],
|
||||
|
||||
Reference in New Issue
Block a user