From ca66c5b472c62c40716cb6aade527f7378e94ff7 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Wed, 17 Apr 2024 13:22:52 -0400 Subject: [PATCH 01/20] Show rune unlock height --- crates/ordinals/src/rune.rs | 69 +++++++++++++++++++++++++++++++++---- 1 file changed, 62 insertions(+), 7 deletions(-) diff --git a/crates/ordinals/src/rune.rs b/crates/ordinals/src/rune.rs index 90e26865cf..63ec6e69a5 100644 --- a/crates/ordinals/src/rune.rs +++ b/crates/ordinals/src/rune.rs @@ -7,7 +7,7 @@ pub struct Rune(pub u128); impl Rune { const RESERVED: u128 = 6402364363415443603228541259936211926; - + const INTERVAL: u32 = SUBSIDY_HALVING_INTERVAL / 12; const STEPS: &'static [u128] = &[ 0, 26, @@ -57,8 +57,6 @@ impl Rune { pub fn minimum_at_height(chain: Network, height: Height) -> Self { let offset = height.0.saturating_add(1); - const INTERVAL: u32 = SUBSIDY_HALVING_INTERVAL / 12; - let start = Self::first_rune_height(chain); let end = start + SUBSIDY_HALVING_INTERVAL; @@ -68,20 +66,53 @@ impl Rune { } if offset >= end { - return Rune(0); + return Rune(Self::STEPS[0]); } let progress = offset.saturating_sub(start); - let length = 12u32.saturating_sub(progress / INTERVAL); + let length = 12u32.saturating_sub(progress / Self::INTERVAL); let end = Self::STEPS[usize::try_from(length - 1).unwrap()]; let start = Self::STEPS[usize::try_from(length).unwrap()]; - let remainder = u128::from(progress % INTERVAL); + let remainder = u128::from(progress % Self::INTERVAL); + + Rune(start - ((start - end) * remainder / u128::from(Self::INTERVAL))) + } + + pub fn unlock_height(&self, chain: Network) -> Option { + if self.is_reserved() { + return None; + } + + let mut min = 0; + let mut max = 26; + let mut step: usize = 12; + + for (i, val) in Self::STEPS.windows(2).enumerate() { + if self.n() == 0 { + break; + } + + step = step.saturating_sub(i); + + if self.n() <= val[1] && self.n() > val[0] { + min = val[0]; + max = val[1]; + break; + } + } + + let step_height = + Self::first_rune_height(chain) + (u32::try_from(step).unwrap() * Self::INTERVAL); + + let step_progress = (max - self.n()) as f64 / (max - min) as f64; - Rune(start - ((start - end) * remainder / u128::from(INTERVAL))) + let height = step_height + (step_progress * Self::INTERVAL as f64) as u32; + + Some(height) } pub fn is_reserved(self) -> bool { @@ -420,4 +451,28 @@ mod tests { case(65536, &[0, 0, 1]); case(u128::MAX, &[255; 16]); } + + #[test] + fn unlock_height() { + #[track_caller] + fn case(rune: &str, height: u32) { + assert_eq!( + rune + .parse::() + .unwrap() + .unlock_height(Network::Bitcoin), + Some(height) + ); + } + const START: u32 = SUBSIDY_HALVING_INTERVAL * 4; + // const END: u32 = START + SUBSIDY_HALVING_INTERVAL; + const INTERVAL: u32 = SUBSIDY_HALVING_INTERVAL / 12; + + case("ZZYZXBRKWXVA", START); + case("ZZZZZZZZZZZZ", START); + case("AAAAAAAAAAAAA", START); + case("ZZXZUDIVTVQA", START + 1); + + case("ZZXZUDIVTVQA", START + INTERVAL * 00 + 1); + } } From ff3753bcaea93c01cf145bf9f710736d9d9b9b83 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Tue, 7 May 2024 23:09:14 +0200 Subject: [PATCH 02/20] Intermediate progress --- crates/ordinals/src/rune.rs | 4 +- src/subcommand/server.rs | 76 ++++++++++++++++++++++--------------- src/templates.rs | 2 + 3 files changed, 51 insertions(+), 31 deletions(-) diff --git a/crates/ordinals/src/rune.rs b/crates/ordinals/src/rune.rs index 63ec6e69a5..96d34f1b98 100644 --- a/crates/ordinals/src/rune.rs +++ b/crates/ordinals/src/rune.rs @@ -453,6 +453,9 @@ mod tests { } #[test] + #[allow(clippy::identity_op)] + #[allow(clippy::erasing_op)] + #[allow(clippy::zero_prefixed_literal)] fn unlock_height() { #[track_caller] fn case(rune: &str, height: u32) { @@ -472,7 +475,6 @@ mod tests { case("ZZZZZZZZZZZZ", START); case("AAAAAAAAAAAAA", START); case("ZZXZUDIVTVQA", START + 1); - case("ZZXZUDIVTVQA", START + INTERVAL * 00 + 1); } } diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index 954264a79b..2e6536dd19 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -10,7 +10,8 @@ use { InscriptionHtml, InscriptionsBlockHtml, InscriptionsHtml, OutputHtml, PageContent, PageHtml, ParentsHtml, PreviewAudioHtml, PreviewCodeHtml, PreviewFontHtml, PreviewImageHtml, PreviewMarkdownHtml, PreviewModelHtml, PreviewPdfHtml, PreviewTextHtml, PreviewUnknownHtml, - PreviewVideoHtml, RangeHtml, RareTxt, RuneHtml, RunesHtml, SatHtml, TransactionHtml, + PreviewVideoHtml, RangeHtml, RareTxt, RuneHtml, RuneNotFoundHtml, RunesHtml, SatHtml, + TransactionHtml, }, axum::{ body, @@ -674,32 +675,55 @@ impl Server { .ok_or_not_found(|| format!("rune number {number}"))?, }; - let (id, entry, parent) = index - .rune(rune)? - .ok_or_not_found(|| format!("rune {rune}"))?; + if let Some((id, entry, parent)) = index.rune(rune)? { + let block_height = index.block_height()?.unwrap_or(Height(0)); - let block_height = index.block_height()?.unwrap_or(Height(0)); + let mintable = entry.mintable((block_height.n() + 1).into()).is_ok(); - let mintable = entry.mintable((block_height.n() + 1).into()).is_ok(); - - Ok(if accept_json { - Json(api::Rune { - entry, - id, - mintable, - parent, + Ok(if accept_json { + Json(api::Rune { + entry, + id, + mintable, + parent, + }) + .into_response() + } else { + RuneHtml { + entry, + id, + mintable, + parent, + } + .page(server_config) + .into_response() }) - .into_response() } else { - RuneHtml { - entry, - id, - mintable, - parent, + let unlock_height = rune.unlock_height(server_config.chain.network()); + let etchable; + let reserved; + + if let Some(height) = unlock_height { + etchable = index.block_count()? >= height; + reserved = false; + } else { + etchable = false; + reserved = true; } - .page(server_config) - .into_response() - }) + + let response = RuneNotFoundHtml { + etchable, + reserved, + rune, + unlock_height, + }; + + Ok(if accept_json { + Json(response).into_response() + } else { + response.page(server_config).into_response() + }) + } }) } @@ -2558,8 +2582,6 @@ mod tests { let rune = Rune(RUNE); - server.assert_response_regex(format!("/rune/{rune}"), StatusCode::NOT_FOUND, ".*"); - server.etch( Runestone { edicts: vec![Edict { @@ -2808,8 +2830,6 @@ mod tests { let rune = Rune(RUNE); - server.assert_response_regex(format!("/rune/{rune}"), StatusCode::NOT_FOUND, ".*"); - let (txid, id) = server.etch( Runestone { edicts: vec![Edict { @@ -2972,8 +2992,6 @@ mod tests { let rune = Rune(RUNE); - server.assert_response_regex(format!("/rune/{rune}"), StatusCode::NOT_FOUND, ".*"); - let (txid, id) = server.etch( Runestone { edicts: vec![Edict { @@ -3137,8 +3155,6 @@ mod tests { let rune = Rune(RUNE); - server.assert_response_regex(format!("/rune/{rune}"), StatusCode::NOT_FOUND, ".*"); - let (txid, id) = server.etch( Runestone { edicts: vec![Edict { diff --git a/src/templates.rs b/src/templates.rs index 57f0db5030..6166ea6c57 100644 --- a/src/templates.rs +++ b/src/templates.rs @@ -21,6 +21,7 @@ pub(crate) use { }, range::RangeHtml, rare::RareTxt, + rune_not_found::RuneNotFoundHtml, sat::SatHtml, }; @@ -47,6 +48,7 @@ mod preview; mod range; mod rare; pub mod rune; +pub mod rune_not_found; pub mod runes; pub mod sat; pub mod status; From cd2de0dd89ca2b787379cb0650f5715d805fe9bc Mon Sep 17 00:00:00 2001 From: raphjaph Date: Tue, 7 May 2024 23:09:23 +0200 Subject: [PATCH 03/20] Amend --- src/templates/rune_not_found.rs | 40 +++++++++++++++++++++++++++++++++ templates/rune-not-found.html | 12 ++++++++++ 2 files changed, 52 insertions(+) create mode 100644 src/templates/rune_not_found.rs create mode 100644 templates/rune-not-found.html diff --git a/src/templates/rune_not_found.rs b/src/templates/rune_not_found.rs new file mode 100644 index 0000000000..e6476d2053 --- /dev/null +++ b/src/templates/rune_not_found.rs @@ -0,0 +1,40 @@ +use super::*; + +#[derive(Boilerplate, Debug, PartialEq, Serialize, Deserialize)] +pub struct RuneNotFoundHtml { + pub etchable: bool, + pub reserved: bool, + pub rune: Rune, + pub unlock_height: Option, +} + +impl PageContent for RuneNotFoundHtml { + fn title(&self) -> String { + format!("Rune {}", self.rune) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn display() { + assert_regex_match!( + RuneNotFoundHtml { + etchable: true, + reserved: false, + rune: Rune(u128::MAX), + unlock_height: Some(111), + }, + "

BCGDENLQRQWDSLRUGSNLBTMFIJAV

+
+
unlock height
+
111
+
etchable
+
true
+
+" + ); + } +} diff --git a/templates/rune-not-found.html b/templates/rune-not-found.html new file mode 100644 index 0000000000..f2019ada06 --- /dev/null +++ b/templates/rune-not-found.html @@ -0,0 +1,12 @@ +

{{ self.rune }}

+
+%% if self.reserved { +
reserved
+
{{ self.reserved }}
+%% } else { +
unlock height
+
{{ self.unlock_height.unwrap() }}
+
etchable
+
{{ self.etchable }}
+%% } +
From 10cf5ac234f488b225069312a3adf2b16f45e748 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Wed, 8 May 2024 00:40:36 +0200 Subject: [PATCH 04/20] Amend --- src/subcommand/server.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index 2e6536dd19..04ce1b2ae5 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -711,17 +711,17 @@ impl Server { reserved = true; } - let response = RuneNotFoundHtml { - etchable, - reserved, - rune, - unlock_height, - }; - Ok(if accept_json { - Json(response).into_response() + StatusCode::NOT_FOUND.into_response() } else { - response.page(server_config).into_response() + RuneNotFoundHtml { + etchable, + reserved, + rune, + unlock_height, + } + .page(server_config) + .into_response() }) } }) From d786ecf72024ca55be4114e83a1b15ab4e00fb3e Mon Sep 17 00:00:00 2001 From: raphjaph Date: Wed, 8 May 2024 01:00:01 +0200 Subject: [PATCH 05/20] Amend --- src/subcommand/server.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index 04ce1b2ae5..85c3f964ba 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -2750,6 +2750,33 @@ mod tests { ); } + #[test] + fn runes_not_etched_show_unlock_height() { + let server = TestServer::builder() + .chain(Chain::Regtest) + .index_runes() + .build(); + + server.mine_blocks(1); + + server.assert_response_regex("/rune/0", StatusCode::NOT_FOUND, ".*"); + + server.mine_blocks(1); + + server.assert_response_regex( + format!("/rune/{}", Rune(RUNE)), + StatusCode::OK, + ".*Rune AAAAAAAAAAAAA.* +
+
unlock height
+
0
+
etchable
+
true
+
.* +", + ); + } + #[test] fn runes_are_displayed_on_runes_page() { let server = TestServer::builder() From 7e58a8cb4a75a64a2ef3620355adac3f89d80348 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Wed, 8 May 2024 01:03:58 +0200 Subject: [PATCH 06/20] Add test --- crates/ordinals/src/rune.rs | 2 +- src/subcommand/server.rs | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/crates/ordinals/src/rune.rs b/crates/ordinals/src/rune.rs index 96d34f1b98..711998e758 100644 --- a/crates/ordinals/src/rune.rs +++ b/crates/ordinals/src/rune.rs @@ -6,7 +6,7 @@ use super::*; pub struct Rune(pub u128); impl Rune { - const RESERVED: u128 = 6402364363415443603228541259936211926; + pub const RESERVED: u128 = 6402364363415443603228541259936211926; const INTERVAL: u32 = SUBSIDY_HALVING_INTERVAL / 12; const STEPS: &'static [u128] = &[ 0, diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index 85c3f964ba..6d6df91bdf 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -2751,7 +2751,7 @@ mod tests { } #[test] - fn runes_not_etched_show_unlock_height() { + fn rune_not_etched_shows_unlock_height() { let server = TestServer::builder() .chain(Chain::Regtest) .index_runes() @@ -2777,6 +2777,31 @@ mod tests { ); } + #[test] + fn reserved_rune_not_etched_shows_reserved_status() { + let server = TestServer::builder() + .chain(Chain::Regtest) + .index_runes() + .build(); + + server.mine_blocks(1); + + server.assert_response_regex("/rune/0", StatusCode::NOT_FOUND, ".*"); + + server.mine_blocks(1); + + server.assert_response_regex( + format!("/rune/{}", Rune(Rune::RESERVED)), + StatusCode::OK, + ".*Rune AAAAAAAAAAAAAAAAAAAAAAAAAAA.* +
+
reserved
+
true
+
.* +", + ); + } + #[test] fn runes_are_displayed_on_runes_page() { let server = TestServer::builder() From 11cc5403b2a792a2ac756290794cec035065f557 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Sat, 29 Jun 2024 18:26:17 +0200 Subject: [PATCH 07/20] Add more tests --- crates/ordinals/src/rune.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/crates/ordinals/src/rune.rs b/crates/ordinals/src/rune.rs index 711998e758..b6f9a7b090 100644 --- a/crates/ordinals/src/rune.rs +++ b/crates/ordinals/src/rune.rs @@ -89,7 +89,7 @@ impl Rune { let mut min = 0; let mut max = 26; - let mut step: usize = 12; + let mut step: usize = 11; // 0,1,2,3,4,5,6,7,8,9,10,11 (12 steps) for (i, val) in Self::STEPS.windows(2).enumerate() { if self.n() == 0 { @@ -468,13 +468,24 @@ mod tests { ); } const START: u32 = SUBSIDY_HALVING_INTERVAL * 4; - // const END: u32 = START + SUBSIDY_HALVING_INTERVAL; + const END: u32 = START + SUBSIDY_HALVING_INTERVAL; const INTERVAL: u32 = SUBSIDY_HALVING_INTERVAL / 12; case("ZZYZXBRKWXVA", START); case("ZZZZZZZZZZZZ", START); case("AAAAAAAAAAAAA", START); case("ZZXZUDIVTVQA", START + 1); - case("ZZXZUDIVTVQA", START + INTERVAL * 00 + 1); + + case("A", END - 0 * INTERVAL - 0 * (INTERVAL / 26)); + case("B", END - 0 * INTERVAL - 1 * (INTERVAL / 26) - 1); + case("C", END - 0 * INTERVAL - 2 * (INTERVAL / 26) - 1); + case("D", END - 0 * INTERVAL - 3 * (INTERVAL / 26) - 1); + + case("AA", END - 1 * INTERVAL - 0 * (INTERVAL / 26)); + case("BA", END - 1 * INTERVAL - 1 * (INTERVAL / 26) - 1); + case("CA", END - 1 * INTERVAL - 2 * (INTERVAL / 26) - 1); + case("DA", END - 1 * INTERVAL - 3 * (INTERVAL / 26) - 1); + + case("AAA", END - 2 * INTERVAL - 0 * (INTERVAL / 26)); } } From 47b6f31f8beed76221b997a68c856ef2e7bb9333 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Wed, 20 Nov 2024 16:22:59 -0800 Subject: [PATCH 08/20] Amend --- Cargo.lock | 1232 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 714 insertions(+), 518 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4192f50851..0fd08f6cf0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aho-corasick" @@ -64,9 +64,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -79,36 +79,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -153,7 +153,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 1.0.60", + "thiserror 1.0.69", "time", ] @@ -166,7 +166,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -182,24 +182,23 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 5.3.0", - "event-listener-strategy 0.5.2", + "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "async-compression" -version = "0.4.9" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9eabd7a98fe442131a17c316bd9349c43695e49e730c3c8e12cfb5f4da2693" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ - "brotli 5.0.0", + "brotli", "flate2", "futures-core", "memchr", @@ -226,7 +225,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock 2.8.0", + "async-lock", "autocfg", "cfg-if 1.0.0", "concurrent-queue", @@ -249,17 +248,6 @@ dependencies = [ "event-listener 2.5.3", ] -[[package]] -name = "async-lock" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" -dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", - "pin-project-lite", -] - [[package]] name = "async-net" version = "1.8.0" @@ -279,9 +267,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", @@ -306,7 +294,7 @@ dependencies = [ "log", "rustls 0.22.4", "rustls-pki-types", - "thiserror 1.0.60", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -329,15 +317,15 @@ dependencies = [ "rand", "ring 0.16.20", "strum", - "thiserror 1.0.60", + "thiserror 1.0.69", "utf-8", ] [[package]] name = "atom_syndication" -version = "0.12.2" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571832dcff775e26562e8e6930cd483de5587301d40d3a3b85d532b6383e15a7" +checksum = "3ee79fb83c725eae67b55218870813d2fc39fd85e4f1583848ef9f4f823cfe7c" dependencies = [ "chrono", "derive_builder", @@ -370,9 +358,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" @@ -387,7 +375,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.31", "itoa", "matchit", "memchr", @@ -434,7 +422,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.31", "pin-project-lite", "rustls 0.21.12", "rustls-pemfile 1.0.4", @@ -445,17 +433,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -464,7 +452,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c8d66485a3a2ea485c1913c4572ce0256067a5377ac8c75c4960e1cda98605f" dependencies = [ - "bitcoin-internals", + "bitcoin-internals 0.3.0", "bitcoin_hashes 0.14.0", ] @@ -507,11 +495,11 @@ dependencies = [ [[package]] name = "bip39" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" dependencies = [ - "bitcoin_hashes 0.11.0", + "bitcoin_hashes 0.13.0", "serde", "unicode-normalization", ] @@ -524,16 +512,22 @@ checksum = "0032b0e8ead7074cda7fc4f034409607e3f03a6f71d66ade8a307f79b4d99e73" dependencies = [ "base58ck", "bech32", - "bitcoin-internals", + "bitcoin-internals 0.3.0", "bitcoin-io", "bitcoin-units", "bitcoin_hashes 0.14.0", - "hex-conservative", + "hex-conservative 0.2.1", "hex_lit", "secp256k1", "serde", ] +[[package]] +name = "bitcoin-internals" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" + [[package]] name = "bitcoin-internals" version = "0.3.0" @@ -549,35 +543,24 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" -[[package]] -name = "bitcoin-private" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" - [[package]] name = "bitcoin-units" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5285c8bcaa25876d07f37e3d30c303f2609179716e11d688f51e8f1fe70063e2" dependencies = [ - "bitcoin-internals", + "bitcoin-internals 0.3.0", "serde", ] [[package]] name = "bitcoin_hashes" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" - -[[package]] -name = "bitcoin_hashes" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501" +checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ - "bitcoin-private", + "bitcoin-internals 0.2.0", + "hex-conservative 0.1.2", ] [[package]] @@ -587,7 +570,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" dependencies = [ "bitcoin-io", - "hex-conservative", + "hex-conservative 0.2.1", "serde", ] @@ -623,9 +606,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -638,25 +621,24 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock 3.3.0", "async-task", "futures-io", - "futures-lite 2.3.0", + "futures-lite 2.5.0", "piper", ] [[package]] name = "boilerplate" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1906889b1f805a715eac02b2dea416e25c5cfa00f099530fa9d137a3cff93113" +checksum = "ff9f82b3395618a18fdb7b586fe5cfac0c07af07d0aab300ff3dd64e4f3ec949" dependencies = [ - "darling 0.20.8", + "darling", "mime", "new_mime_guess", "proc-macro2", @@ -664,17 +646,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "brotli" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19483b140a7ac7174d34b5a581b406c64f84da5409d3e09cf4fff604f9270e67" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - [[package]] name = "brotli" version = "7.0.0" @@ -688,9 +659,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6221fe77a248b9117d431ad93761222e1cf8ff282d9d1d5d9f53d6299a1cf76" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -698,9 +669,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", "serde", @@ -732,9 +703,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.97" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -748,12 +722,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "cfg_aliases" version = "0.2.1" @@ -804,9 +772,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -814,21 +782,21 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.1", + "strsim", ] [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -838,15 +806,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" @@ -876,7 +844,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] @@ -892,24 +860,24 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "0ca741a962e1b0bff6d724a1a0958b686406e853bb14061f218562e1896f95e6" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if 1.0.0", ] @@ -971,9 +939,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -993,80 +961,45 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.4" +version = "3.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" dependencies = [ - "nix 0.28.0", - "windows-sys 0.52.0", + "nix", + "windows-sys 0.59.0", ] [[package]] name = "darling" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" -dependencies = [ - "darling_core 0.14.4", - "darling_macro 0.14.4", -] - -[[package]] -name = "darling" -version = "0.20.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" -dependencies = [ - "darling_core 0.20.8", - "darling_macro 0.20.8", -] - -[[package]] -name = "darling_core" -version = "0.14.4" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.10.0", - "syn 1.0.109", + "darling_core", + "darling_macro", ] [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", + "strsim", "syn 2.0.87", ] [[package]] name = "darling_macro" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" -dependencies = [ - "darling_core 0.14.4", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "darling_macro" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "darling_core 0.20.8", + "darling_core", "quote", "syn 2.0.87", ] @@ -1103,33 +1036,33 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.12.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.12.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling 0.14.4", + "darling", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.87", ] [[package]] name = "derive_builder_macro" -version = "0.12.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 1.0.109", + "syn 2.0.87", ] [[package]] @@ -1171,9 +1104,9 @@ dependencies = [ [[package]] name = "diligent-date-parser" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6cf7fe294274a222363f84bcb63cdea762979a0443b4cf1f4f8fd17c86b1182" +checksum = "c8ede7d79366f419921e2e2f67889c12125726692a313bffb474bd5f37a581e9" dependencies = [ "chrono", ] @@ -1201,9 +1134,9 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", @@ -1212,9 +1145,9 @@ dependencies = [ [[package]] name = "either" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encode_unicode" @@ -1224,18 +1157,18 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if 1.0.0", ] [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ "log", "regex", @@ -1243,9 +1176,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ "anstream", "anstyle", @@ -1278,43 +1211,22 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", "pin-project-lite", ] -[[package]] -name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - [[package]] name = "event-listener-strategy" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.0", + "event-listener 5.3.1", "pin-project-lite", ] @@ -1335,15 +1247,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -1381,9 +1293,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1396,9 +1308,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1406,15 +1318,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1423,9 +1335,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -1444,9 +1356,9 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "futures-core", "pin-project-lite", @@ -1454,9 +1366,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -1476,21 +1388,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1536,15 +1448,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", @@ -1561,7 +1473,7 @@ checksum = "9902a044653b26b99f7e3693a42f171312d9be8b26b5697bd1e43ad1f8a35e10" dependencies = [ "gloo-utils", "js-sys", - "thiserror 1.0.60", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -1590,10 +1502,10 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.6.0", "slab", "tokio", - "tokio-util 0.7.11", + "tokio-util 0.7.12", "tracing", ] @@ -1609,10 +1521,10 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.6.0", "slab", "tokio", - "tokio-util 0.7.11", + "tokio-util 0.7.12", "tracing", ] @@ -1634,9 +1546,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -1656,12 +1568,24 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hex-conservative" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" + [[package]] name = "hex-conservative" version = "0.2.1" @@ -1747,9 +1671,9 @@ checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1765,9 +1689,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -1817,7 +1741,7 @@ dependencies = [ "http 1.1.0", "hyper 1.5.1", "hyper-util", - "rustls 0.23.7", + "rustls 0.23.17", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -1831,7 +1755,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.28", + "hyper 0.14.31", "native-tls", "tokio", "tokio-native-tls", @@ -1874,9 +1798,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1895,6 +1819,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec 1.13.2", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1903,12 +1945,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec 1.13.2", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1924,33 +1977,33 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.1", "serde", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.0", + "web-time", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if 1.0.0", ] @@ -1961,33 +2014,33 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -2000,15 +2053,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2059,7 +2112,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ "futures", - "hyper 0.14.28", + "hyper 0.14.31", "jsonrpc-core", "jsonrpc-server-utils", "log", @@ -2097,9 +2150,9 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" @@ -2113,7 +2166,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -2125,9 +2178,15 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" [[package]] name = "lock_api" @@ -2141,9 +2200,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matchit" @@ -2159,9 +2218,9 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" @@ -2171,9 +2230,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -2197,11 +2256,11 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -2217,13 +2276,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2254,16 +2314,15 @@ dependencies = [ "num-rational", "serde", "serde_json", - "thiserror 1.0.60", + "thiserror 1.0.69", ] [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -2294,35 +2353,23 @@ checksum = "c96aba5aa877601bb3f6dd6a63a969e1f82e60646e81e71b14496995e9853c91" [[package]] name = "new_mime_guess" -version = "4.0.1" +version = "4.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2d684d1b59e0dc07b37e2203ef576987473288f530082512aff850585c61b1f" +checksum = "02a2dfb3559d53e90b709376af1c379462f7fb3085a0177deb73e6ea0d99eff4" dependencies = [ "mime", "unicase", ] -[[package]] -name = "nix" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" -dependencies = [ - "bitflags 2.5.0", - "cfg-if 1.0.0", - "cfg_aliases 0.1.1", - "libc", -] - [[package]] name = "nix" version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if 1.0.0", - "cfg_aliases 0.2.1", + "cfg_aliases", "libc", ] @@ -2353,9 +2400,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -2397,16 +2444,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "number_prefix" version = "0.4.0" @@ -2415,9 +2452,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.32.2" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] @@ -2433,23 +2470,23 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if 1.0.0", "foreign-types", "libc", @@ -2477,9 +2514,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -2507,7 +2544,7 @@ dependencies = [ "bitcoin", "bitcoincore-rpc", "boilerplate", - "brotli 7.0.0", + "brotli", "chrono", "ciborium", "clap", @@ -2522,7 +2559,7 @@ dependencies = [ "html-escaper", "http 0.2.12", "humantime", - "hyper 0.14.28", + "hyper 0.14.31", "indicatif", "lazy_static", "log", @@ -2531,7 +2568,7 @@ dependencies = [ "miniscript", "mockcore", "mp4", - "nix 0.29.0", + "nix", "ordinals", "pretty_assertions", "redb", @@ -2553,7 +2590,7 @@ dependencies = [ "tempfile", "tokio", "tokio-stream", - "tokio-util 0.7.11", + "tokio-util 0.7.12", "tower-http", "unindent", "urlencoding", @@ -2598,9 +2635,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -2644,18 +2681,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", @@ -2664,9 +2701,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -2676,26 +2713,26 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.1.0", + "fastrand 2.2.0", "futures-io", ] [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plotters" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -2706,15 +2743,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] @@ -2737,9 +2774,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -2749,15 +2786,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "pretty_assertions" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ "diff", "yansi", @@ -2783,9 +2823,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.30.0" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +checksum = "f22f29bdff3987b4d8632ef95fd6424ec7e4e0a57e2f4fc63e489e75357f6a03" dependencies = [ "encoding_rs", "memchr", @@ -2793,9 +2833,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2882,13 +2922,13 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror 1.0.60", + "thiserror 1.0.69", ] [[package]] @@ -2913,9 +2953,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -2925,9 +2965,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -2936,9 +2976,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" @@ -2955,7 +2995,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.31", "hyper-tls 0.5.0", "ipnet", "js-sys", @@ -2973,7 +3013,7 @@ dependencies = [ "system-configuration 0.5.1", "tokio", "tokio-native-tls", - "tokio-util 0.7.11", + "tokio-util 0.7.12", "tower-service", "url", "wasm-bindgen", @@ -3058,9 +3098,9 @@ dependencies = [ [[package]] name = "rss" -version = "2.0.7" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b2c77eb4450d7d5f98df52c381cd6c4e19b75dad9209a9530b85a44510219a" +checksum = "554a62b3dd5450fcbb0435b3db809f9dd3c6e9f5726172408f7ad3b57ed59057" dependencies = [ "atom_syndication", "derive_builder", @@ -3070,9 +3110,9 @@ dependencies = [ [[package]] name = "rust-embed" -version = "8.3.0" +version = "8.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb78f46d0066053d16d4ca7b898e9343bc3530f71c61d5ad84cd404ada068745" +checksum = "fa66af4a4fdd5e7ebc276f115e895611a34739a9c1c01028383d612d550953c0" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -3081,9 +3121,9 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.3.0" +version = "8.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91ac2a3c6c0520a3fb3dd89321177c3c692937c4eb21893378219da10c44fc8" +checksum = "6125dbc8867951125eec87294137f4e9c2c96566e61bf72c45095a7c77761478" dependencies = [ "proc-macro2", "quote", @@ -3094,9 +3134,9 @@ dependencies = [ [[package]] name = "rust-embed-utils" -version = "8.3.0" +version = "8.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f69089032567ffff4eada41c573fc43ff466c7db7c5688b2e7969584345581" +checksum = "2e5347777e9aacb56039b0e1f28785929a8a3b709e87482e7442c72e7c12529d" dependencies = [ "sha2", "walkdir", @@ -3133,14 +3173,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.13", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] @@ -3165,20 +3205,20 @@ dependencies = [ "log", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.3", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] [[package]] name = "rustls" -version = "0.23.7" +version = "0.23.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebbbdb961df0ad3f2652da8f3fdc4b36122f568f968f45ad3316f26c025c677b" +checksum = "7f1a745511c54ba6d4465e8d5dfbd81b45791756de28d4981af70d6dca128f1e" dependencies = [ "once_cell", "rustls-pki-types", - "rustls-webpki 0.102.3", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] @@ -3205,9 +3245,9 @@ dependencies = [ "ring 0.16.20", "serde", "serde_json", - "thiserror 1.0.60", + "thiserror 1.0.69", "tokio", - "tokio-util 0.7.11", + "tokio-util 0.7.12", "webpki-roots", "x509-parser", ] @@ -3248,9 +3288,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.3" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring 0.17.8", "rustls-pki-types", @@ -3259,9 +3299,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3280,11 +3320,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3309,7 +3349,7 @@ version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ - "bitcoin_hashes 0.12.0", + "bitcoin_hashes 0.14.0", "rand", "secp256k1-sys", "serde", @@ -3326,11 +3366,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -3339,9 +3379,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", @@ -3349,9 +3389,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.201" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] @@ -3369,9 +3409,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.201" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", @@ -3384,7 +3424,7 @@ version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.6.0", "itoa", "memchr", "ryu", @@ -3415,15 +3455,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.8.1" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.6.0", "serde", "serde_derive", "serde_json", @@ -3433,11 +3473,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.8.1" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ - "darling 0.20.8", + "darling", "proc-macro2", "quote", "syn 2.0.87", @@ -3449,7 +3489,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.6.0", "itoa", "ryu", "serde", @@ -3477,6 +3517,12 @@ dependencies = [ "keccak", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "slab" version = "0.4.9" @@ -3555,10 +3601,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] -name = "strsim" -version = "0.10.0" +name = "stable_deref_trait" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" @@ -3590,9 +3636,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -3643,6 +3689,17 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "sysinfo" version = "0.32.0" @@ -3674,7 +3731,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "system-configuration-sys 0.6.0", ] @@ -3701,23 +3758,24 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if 1.0.0", - "fastrand 2.1.0", - "rustix 0.38.34", - "windows-sys 0.52.0", + "fastrand 2.2.0", + "once_cell", + "rustix 0.38.41", + "windows-sys 0.59.0", ] [[package]] name = "thiserror" -version = "1.0.60" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.60", + "thiserror-impl 1.0.69", ] [[package]] @@ -3731,9 +3789,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.60" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -3782,6 +3840,16 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinytemplate" version = "1.2.1" @@ -3794,9 +3862,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3809,26 +3877,25 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "pin-project-lite", "socket2 0.5.7", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", @@ -3861,16 +3928,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.7", + "rustls 0.23.17", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -3893,9 +3960,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -3938,7 +4005,7 @@ checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ "async-compression", "base64 0.21.7", - "bitflags 2.5.0", + "bitflags 2.6.0", "bytes", "futures-core", "futures-util", @@ -3948,22 +4015,22 @@ dependencies = [ "mime", "pin-project-lite", "tokio", - "tokio-util 0.7.11", + "tokio-util 0.7.12", "tower-layer", "tower-service", ] [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -3999,24 +4066,15 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.15" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" @@ -4029,15 +4087,21 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unindent" @@ -4072,9 +4136,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.0" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -4093,11 +4157,23 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vcpkg" @@ -4107,15 +4183,15 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "walkdir" @@ -4144,19 +4220,20 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if 1.0.0", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", @@ -4169,9 +4246,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -4181,9 +4258,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4191,9 +4268,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", @@ -4204,15 +4281,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -4242,11 +4329,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4365,6 +4452,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -4496,6 +4592,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "x509-parser" version = "0.13.2" @@ -4510,15 +4618,15 @@ dependencies = [ "nom", "oid-registry", "rusticata-macros", - "thiserror 1.0.60", + "thiserror 1.0.69", "time", ] [[package]] name = "yansi" -version = "0.5.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yasna" @@ -4529,8 +4637,96 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] From 5714ed78396ef6ef4000457e79257c1f885db174 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Wed, 20 Nov 2024 22:33:25 -0800 Subject: [PATCH 09/20] stash --- crates/ordinals/src/rune.rs | 59 +++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/crates/ordinals/src/rune.rs b/crates/ordinals/src/rune.rs index b6f9a7b090..a254640992 100644 --- a/crates/ordinals/src/rune.rs +++ b/crates/ordinals/src/rune.rs @@ -87,6 +87,65 @@ impl Rune { return None; } + let mut left = 0; + let mut right = 12; + for (index, step) in Self::STEPS.iter().enumerate() { + if step > &self.0 { + right = index; + break; + } + + left = index; + + if step == &self.0 { + right = index; + break; + } + } + + if left == right { + // let remaining_steps = 12 - left; + return Some(Self::first_rune_height(chain) + Self::INTERVAL); + } + + let first_rune = Self::STEPS[left]; + let last_rune = Self::STEPS[right]; + let rune_count = last_rune - first_rune; + + let start_block = Self::first_rune_height(chain) + Self::INTERVAL * (12 - right as u32); + // let endingBlock = Self::first_rune_height(chain) + Self::INTERVAL * (12 - left as u32); + + let unlocked_runes_count = last_rune - self.0; + + // let remainingLockedRuneCount = self.0 - firstRune; + // let blockProgress = (unlockedRuneCount * Self::INTERVAL - 1n) / runeCount; + let block_progress = (unlocked_runes_count * Self::INTERVAL as u128 - 1) / rune_count; + + let block_height = start_block as u128 + block_progress; + + assert!( + Self::minimum_at_height(chain, Height(block_height as u32)) > *self, + "estimated block too low" + ); + + assert!( + Self::minimum_at_height(chain, Height(block_height as u32 - 1)) <= *self, + "estimated block too high" + ); + + // let step_height = + // Self::first_rune_height(chain) + (u32::try_from(step).unwrap() * Self::INTERVAL); + + // let step_progress = (max - self.n()) as f64 / (max - min) as f64; + + // let height = step_height + (step_progress * Self::INTERVAL as f64) as u32; + + // Some(height) + + Some(block_height as u32) + } + + pub fn unlock_height_bar(&self, chain: Network) -> Option { let mut min = 0; let mut max = 26; let mut step: usize = 11; // 0,1,2,3,4,5,6,7,8,9,10,11 (12 steps) From 4564d8f8f8a6a55fcbc74cee491d57fb1898d3d9 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Thu, 21 Nov 2024 13:45:17 -0800 Subject: [PATCH 10/20] I can't figure it out --- crates/ordinals/src/rune.rs | 148 ++++++++++++++++++++++-------------- 1 file changed, 92 insertions(+), 56 deletions(-) diff --git a/crates/ordinals/src/rune.rs b/crates/ordinals/src/rune.rs index a254640992..f292f8e794 100644 --- a/crates/ordinals/src/rune.rs +++ b/crates/ordinals/src/rune.rs @@ -21,7 +21,8 @@ impl Rune { 5646683826134, 146813779479510, 3817158266467286, - 99246114928149462, + 99246114928149462, //AAAAAAAAAA + // 2580398988131886038, 67090373691429037014, 1744349715977154962390, @@ -35,6 +36,7 @@ impl Rune { 364267430781488598271992561443798, 9470953200318703555071806597538774, 246244783208286292431866971536008150, + // reserved 6402364363415443603228541259936211926, 166461473448801533683942072758341510102, ]; @@ -87,82 +89,53 @@ impl Rune { return None; } - let mut left = 0; - let mut right = 12; - for (index, step) in Self::STEPS.iter().enumerate() { - if step > &self.0 { - right = index; + let mut min = 0; + let mut max = 26; + let mut step: usize = 12; // 0,1,2,3,4,5,6,7,8,9,10,11 (12 steps) + + for (i, val) in Self::STEPS.windows(2).enumerate() { + if self.n() == 0 { break; } - left = index; + step = step.saturating_sub(i); - if step == &self.0 { - right = index; + if self.n() <= val[1] && self.n() > val[0] { + min = val[0]; + max = val[1]; break; } } - if left == right { - // let remaining_steps = 12 - left; - return Some(Self::first_rune_height(chain) + Self::INTERVAL); - } - - let first_rune = Self::STEPS[left]; - let last_rune = Self::STEPS[right]; + let first_rune = min; + let last_rune = max; let rune_count = last_rune - first_rune; - let start_block = Self::first_rune_height(chain) + Self::INTERVAL * (12 - right as u32); - // let endingBlock = Self::first_rune_height(chain) + Self::INTERVAL * (12 - left as u32); - - let unlocked_runes_count = last_rune - self.0; - - // let remainingLockedRuneCount = self.0 - firstRune; - // let blockProgress = (unlockedRuneCount * Self::INTERVAL - 1n) / runeCount; - let block_progress = (unlocked_runes_count * Self::INTERVAL as u128 - 1) / rune_count; + let start_block = + Self::first_rune_height(chain) + Self::INTERVAL * u32::try_from(step).unwrap(); + let end_block = + Self::first_rune_height(chain) + Self::INTERVAL * u32::try_from(step + 1).unwrap(); - let block_height = start_block as u128 + block_progress; + dbg!(self.n()); + dbg!(step); + dbg!(start_block); + dbg!(end_block); assert!( - Self::minimum_at_height(chain, Height(block_height as u32)) > *self, + *self < dbg!(Self::minimum_at_height(chain, Height(start_block))), "estimated block too low" ); assert!( - Self::minimum_at_height(chain, Height(block_height as u32 - 1)) <= *self, + *self >= dbg!(Self::minimum_at_height(chain, Height(end_block))), "estimated block too high" ); - // let step_height = - // Self::first_rune_height(chain) + (u32::try_from(step).unwrap() * Self::INTERVAL); - - // let step_progress = (max - self.n()) as f64 / (max - min) as f64; - - // let height = step_height + (step_progress * Self::INTERVAL as f64) as u32; - - // Some(height) - - Some(block_height as u32) - } + // let unlocked_runes_count = last_rune - self.0; - pub fn unlock_height_bar(&self, chain: Network) -> Option { - let mut min = 0; - let mut max = 26; - let mut step: usize = 11; // 0,1,2,3,4,5,6,7,8,9,10,11 (12 steps) - - for (i, val) in Self::STEPS.windows(2).enumerate() { - if self.n() == 0 { - break; - } - - step = step.saturating_sub(i); - - if self.n() <= val[1] && self.n() > val[0] { - min = val[0]; - max = val[1]; - break; - } - } + // let remainingLockedRuneCount = self.0 - firstRune; + // let blockProgress = (unlockedRuneCount * Self::INTERVAL - 1n) / runeCount; + // let block_progress = (unlocked_runes_count * Self::INTERVAL as u128 - 1) / rune_count; let step_height = Self::first_rune_height(chain) + (u32::try_from(step).unwrap() * Self::INTERVAL); @@ -174,6 +147,69 @@ impl Rune { Some(height) } + // pub fn unlock_height_foo(&self, chain: Network) -> Option { + // if self.is_reserved() { + // return None; + // } + // + // let mut left = 0; + // let mut right = 12; + // for (index, step) in Self::STEPS.iter().enumerate() { + // if step > &self.0 { + // right = index; + // break; + // } + // + // left = index; + // + // if step == &self.0 { + // right = index; + // break; + // } + // } + // + // if left == right { + // let remaining_steps = 12 - dbg!(left); + // return Some(Self::first_rune_height(chain) + Self::INTERVAL * remaining_steps as u32); + // } + // + // let first_rune = Self::STEPS[left]; + // let last_rune = Self::STEPS[right]; + // let rune_count = last_rune - first_rune; + // + // let start_block = Self::first_rune_height(chain) + Self::INTERVAL * (12 - right as u32); + // // let endingBlock = Self::first_rune_height(chain) + Self::INTERVAL * (12 - left as u32); + // + // let unlocked_runes_count = last_rune - self.0; + // + // // let remainingLockedRuneCount = self.0 - firstRune; + // // let blockProgress = (unlockedRuneCount * Self::INTERVAL - 1n) / runeCount; + // let block_progress = (unlocked_runes_count * Self::INTERVAL as u128 - 1) / rune_count; + // + // let block_height = start_block as u128 + block_progress; + // + // assert!( + // *self <= Self::minimum_at_height(chain, Height(block_height as u32)), + // "estimated block too low" + // ); + // + // assert!( + // *self > Self::minimum_at_height(chain, Height(block_height as u32 - 1)), + // "estimated block too high" + // ); + // + // // let step_height = + // // Self::first_rune_height(chain) + (u32::try_from(step).unwrap() * Self::INTERVAL); + // + // // let step_progress = (max - self.n()) as f64 / (max - min) as f64; + // + // // let height = step_height + (step_progress * Self::INTERVAL as f64) as u32; + // + // // Some(height) + // + // Some(block_height as u32) + // } + pub fn is_reserved(self) -> bool { self.0 >= Self::RESERVED } From 7e1d0fcd42106b2a968cd3440ca70c075ea226ac Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 14:13:27 -0800 Subject: [PATCH 11/20] Amend --- crates/ordinals/src/rune.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/ordinals/src/rune.rs b/crates/ordinals/src/rune.rs index 69ea0cf296..c95a215b96 100644 --- a/crates/ordinals/src/rune.rs +++ b/crates/ordinals/src/rune.rs @@ -6,7 +6,7 @@ use super::*; pub struct Rune(pub u128); impl Rune { - pub const RESERVED: u128 = 6402364363415443603228541259936211926; + const RESERVED: u128 = 6402364363415443603228541259936211926; const UNLOCKED: usize = 12; @@ -70,7 +70,7 @@ impl Rune { } if offset >= end { - return Rune(Self::STEPS[0]); + return Rune(0); } let progress = offset.saturating_sub(start); From e656e286d352bc94521afe2de85edb24a83f701f Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 14:31:02 -0800 Subject: [PATCH 12/20] Amend --- crates/ordinals/src/rune.rs | 2 +- src/subcommand/server.rs | 29 +++++++++++------------------ src/templates/rune_not_found.rs | 6 ++---- templates/rune-not-found.html | 13 ++++++------- 4 files changed, 20 insertions(+), 30 deletions(-) diff --git a/crates/ordinals/src/rune.rs b/crates/ordinals/src/rune.rs index c95a215b96..ab052c045a 100644 --- a/crates/ordinals/src/rune.rs +++ b/crates/ordinals/src/rune.rs @@ -6,7 +6,7 @@ use super::*; pub struct Rune(pub u128); impl Rune { - const RESERVED: u128 = 6402364363415443603228541259936211926; + pub const RESERVED: u128 = 6402364363415443603228541259936211926; const UNLOCKED: usize = 12; diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index 82dbe24a3a..5d72af2557 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -832,28 +832,21 @@ impl Server { }) } else { let unlock_height = rune.unlock_height(server_config.chain.network()); - let etchable; - let reserved; - - if let Some(height) = unlock_height { - etchable = Height(index.block_count()?) >= height; - reserved = false; - } else { - etchable = false; - reserved = true; - } + let reserved = unlock_height.is_none(); Ok(if accept_json { StatusCode::NOT_FOUND.into_response() } else { - RuneNotFoundHtml { - etchable, - reserved, - rune, - unlock_height: unlock_height.map(|h| h.n()), - } - .page(server_config) - .into_response() + ( + StatusCode::NOT_FOUND, + RuneNotFoundHtml { + reserved, + rune, + unlock_height: unlock_height.map(|height| height.n()), + } + .page(server_config), + ) + .into_response() }) } }) diff --git a/src/templates/rune_not_found.rs b/src/templates/rune_not_found.rs index e6476d2053..75801a5215 100644 --- a/src/templates/rune_not_found.rs +++ b/src/templates/rune_not_found.rs @@ -2,7 +2,6 @@ use super::*; #[derive(Boilerplate, Debug, PartialEq, Serialize, Deserialize)] pub struct RuneNotFoundHtml { - pub etchable: bool, pub reserved: bool, pub rune: Rune, pub unlock_height: Option, @@ -22,7 +21,6 @@ mod tests { fn display() { assert_regex_match!( RuneNotFoundHtml { - etchable: true, reserved: false, rune: Rune(u128::MAX), unlock_height: Some(111), @@ -31,8 +29,8 @@ mod tests {
unlock height
111
-
etchable
-
true
+
reserved
+
false
" ); diff --git a/templates/rune-not-found.html b/templates/rune-not-found.html index f2019ada06..037445e3b4 100644 --- a/templates/rune-not-found.html +++ b/templates/rune-not-found.html @@ -1,12 +1,11 @@

{{ self.rune }}

-%% if self.reserved { -
reserved
-
{{ self.reserved }}
-%% } else {
unlock height
-
{{ self.unlock_height.unwrap() }}
-
etchable
-
{{ self.etchable }}
+%% if let Some(unlock_height) = self.unlock_height { +
{{ unlock_height }}
+%% } else { +
none
%% } +
reserved
+
{{ self.reserved }}
From a28de550a71601a1e5c49694be0e3c6b7671f2c5 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 14:32:04 -0800 Subject: [PATCH 13/20] Amend --- src/subcommand/server.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index 5d72af2557..dbad6126d1 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -2974,6 +2974,8 @@ mod tests { let rune = Rune(RUNE); + server.assert_response_regex(format!("/rune/{rune}"), StatusCode::NOT_FOUND, ".*"); + server.etch( Runestone { edicts: vec![Edict { From a233c6e82a06c16f02b8915689af5eb25c3d1c6d Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 14:36:02 -0800 Subject: [PATCH 14/20] Fix old tests --- src/subcommand/server.rs | 6 ++++++ src/templates/rune_not_found.rs | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index dbad6126d1..405cfa0ca1 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -3370,6 +3370,8 @@ mod tests { let rune = Rune(RUNE); + server.assert_response_regex(format!("/rune/{rune}"), StatusCode::NOT_FOUND, ".*"); + let (txid, id) = server.etch( Runestone { edicts: vec![Edict { @@ -3497,6 +3499,8 @@ mod tests { let rune = Rune(RUNE); + server.assert_response_regex(format!("/rune/{rune}"), StatusCode::NOT_FOUND, ".*"); + let (txid, id) = server.etch( Runestone { edicts: vec![Edict { @@ -3660,6 +3664,8 @@ mod tests { let rune = Rune(RUNE); + server.assert_response_regex(format!("/rune/{rune}"), StatusCode::NOT_FOUND, ".*"); + let (txid, id) = server.etch( Runestone { edicts: vec![Edict { diff --git a/src/templates/rune_not_found.rs b/src/templates/rune_not_found.rs index 75801a5215..d75b08f49e 100644 --- a/src/templates/rune_not_found.rs +++ b/src/templates/rune_not_found.rs @@ -32,6 +32,25 @@ mod tests {
reserved
false
+" + ); + } + + #[test] + fn display_reserved() { + assert_regex_match!( + RuneNotFoundHtml { + reserved: true, + rune: Rune(Rune::RESERVED), + unlock_height: None, + }, + "

AAAAAAAAAAAAAAAAAAAAAAAAAAA

+
+
unlock height
+
none
+
reserved
+
true
+
" ); } From ec8c84041a6ee779d837cdaefdd9f102a13d12f7 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 14:39:22 -0800 Subject: [PATCH 15/20] Tweak tests --- src/subcommand/server.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index 405cfa0ca1..92874661f4 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -3240,13 +3240,13 @@ mod tests { server.assert_response_regex( format!("/rune/{}", Rune(RUNE)), - StatusCode::OK, + StatusCode::NOT_FOUND, ".*Rune AAAAAAAAAAAAA.*
unlock height
0
-
etchable
-
true
+
reserved
+
false
.* ", ); @@ -3267,9 +3267,11 @@ mod tests { server.assert_response_regex( format!("/rune/{}", Rune(Rune::RESERVED)), - StatusCode::OK, + StatusCode::NOT_FOUND, ".*Rune AAAAAAAAAAAAAAAAAAAAAAAAAAA.*
+
unlock height
+
none
reserved
true
.* From 0541d774f2338bdaf139c5df5d7917b417d56577 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 15:06:54 -0800 Subject: [PATCH 16/20] Address review comments --- src/subcommand/server.rs | 58 +++++++++++++++------------------ src/templates/rune_not_found.rs | 9 ++--- templates/rune-not-found.html | 9 +++-- 3 files changed, 36 insertions(+), 40 deletions(-) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index 92874661f4..bc3507f839 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -807,48 +807,44 @@ impl Server { .ok_or_not_found(|| format!("rune number {number}"))?, }; - if let Some((id, entry, parent)) = index.rune(rune)? { - let block_height = index.block_height()?.unwrap_or(Height(0)); - - let mintable = entry.mintable((block_height.n() + 1).into()).is_ok(); - - Ok(if accept_json { - Json(api::Rune { - entry, - id, - mintable, - parent, - }) - .into_response() - } else { - RuneHtml { - entry, - id, - mintable, - parent, - } - .page(server_config) - .into_response() - }) - } else { - let unlock_height = rune.unlock_height(server_config.chain.network()); - let reserved = unlock_height.is_none(); - - Ok(if accept_json { + let Some((id, entry, parent)) = index.rune(rune)? else { + return Ok(if accept_json { StatusCode::NOT_FOUND.into_response() } else { ( StatusCode::NOT_FOUND, RuneNotFoundHtml { - reserved, rune, - unlock_height: unlock_height.map(|height| height.n()), + unlock_height: rune.unlock_height(server_config.chain.network()), } .page(server_config), ) .into_response() + }); + }; + + let block_height = index.block_height()?.unwrap_or(Height(0)); + + let mintable = entry.mintable((block_height.n() + 1).into()).is_ok(); + + Ok(if accept_json { + Json(api::Rune { + entry, + id, + mintable, + parent, }) - } + .into_response() + } else { + RuneHtml { + entry, + id, + mintable, + parent, + } + .page(server_config) + .into_response() + }) }) } diff --git a/src/templates/rune_not_found.rs b/src/templates/rune_not_found.rs index d75b08f49e..e050fa5c80 100644 --- a/src/templates/rune_not_found.rs +++ b/src/templates/rune_not_found.rs @@ -1,10 +1,9 @@ use super::*; -#[derive(Boilerplate, Debug, PartialEq, Serialize, Deserialize)] +#[derive(Boilerplate, Debug, PartialEq, Serialize)] pub struct RuneNotFoundHtml { - pub reserved: bool, pub rune: Rune, - pub unlock_height: Option, + pub unlock_height: Option, } impl PageContent for RuneNotFoundHtml { @@ -21,9 +20,8 @@ mod tests { fn display() { assert_regex_match!( RuneNotFoundHtml { - reserved: false, rune: Rune(u128::MAX), - unlock_height: Some(111), + unlock_height: Some(Height(111)), }, "

BCGDENLQRQWDSLRUGSNLBTMFIJAV

@@ -40,7 +38,6 @@ mod tests { fn display_reserved() { assert_regex_match!( RuneNotFoundHtml { - reserved: true, rune: Rune(Rune::RESERVED), unlock_height: None, }, diff --git a/templates/rune-not-found.html b/templates/rune-not-found.html index 037445e3b4..ede0843104 100644 --- a/templates/rune-not-found.html +++ b/templates/rune-not-found.html @@ -1,11 +1,14 @@

{{ self.rune }}

-
unlock height
%% if let Some(unlock_height) = self.unlock_height { +
unlock height
{{ unlock_height }}
+
reserved
+
false
%% } else { +
unlock height
none
-%% }
reserved
-
{{ self.reserved }}
+
true
+%% }
From b41816a67436bfd2187b2f97450412ba78be1a8c Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 15:08:52 -0800 Subject: [PATCH 17/20] Amend --- src/subcommand/server.rs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index bc3507f839..f936971b7a 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -3230,10 +3230,6 @@ mod tests { server.mine_blocks(1); - server.assert_response_regex("/rune/0", StatusCode::NOT_FOUND, ".*"); - - server.mine_blocks(1); - server.assert_response_regex( format!("/rune/{}", Rune(RUNE)), StatusCode::NOT_FOUND, @@ -3257,10 +3253,6 @@ mod tests { server.mine_blocks(1); - server.assert_response_regex("/rune/0", StatusCode::NOT_FOUND, ".*"); - - server.mine_blocks(1); - server.assert_response_regex( format!("/rune/{}", Rune(Rune::RESERVED)), StatusCode::NOT_FOUND, From 3ed6f13e64fde654e68c0c00acab162ff022563d Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 15:10:03 -0800 Subject: [PATCH 18/20] Amend --- src/subcommand/server.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index f936971b7a..bc1511b2df 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -3231,7 +3231,7 @@ mod tests { server.mine_blocks(1); server.assert_response_regex( - format!("/rune/{}", Rune(RUNE)), + "/rune/A", StatusCode::NOT_FOUND, ".*Rune AAAAAAAAAAAAA.*
From 92b496d169a5a122bbdb53eac627b23ee6a4ea72 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 15:10:44 -0800 Subject: [PATCH 19/20] Amend --- src/subcommand/server.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index bc1511b2df..9cebef0a5a 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -3233,10 +3233,10 @@ mod tests { server.assert_response_regex( "/rune/A", StatusCode::NOT_FOUND, - ".*Rune AAAAAAAAAAAAA.* + ".*Rune A.*
unlock height
-
0
+
209999
reserved
false
.* From e750395986911a9d3d85dde6557f79bec2790706 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Fri, 22 Nov 2024 15:17:04 -0800 Subject: [PATCH 20/20] Amend --- src/subcommand/server.rs | 45 +++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs index 9cebef0a5a..38e501f4ed 100644 --- a/src/subcommand/server.rs +++ b/src/subcommand/server.rs @@ -2602,14 +2602,19 @@ mod tests { #[track_caller] fn assert_html(&self, path: impl AsRef, content: impl PageContent) { + self.assert_html_status(path, StatusCode::OK, content); + } + + #[track_caller] + fn assert_html_status( + &self, + path: impl AsRef, + status: StatusCode, + content: impl PageContent, + ) { let response = self.get(path); - assert_eq!( - response.status(), - StatusCode::OK, - "{}", - response.text().unwrap() - ); + assert_eq!(response.status(), status, "{}", response.text().unwrap()); let expected_response = PageHtml::new( content, @@ -3230,17 +3235,13 @@ mod tests { server.mine_blocks(1); - server.assert_response_regex( + server.assert_html_status( "/rune/A", StatusCode::NOT_FOUND, - ".*Rune A.* -
-
unlock height
-
209999
-
reserved
-
false
-
.* -", + RuneNotFoundHtml { + rune: Rune(0), + unlock_height: Some(Height(209999)), + }, ); } @@ -3253,17 +3254,13 @@ mod tests { server.mine_blocks(1); - server.assert_response_regex( + server.assert_html_status( format!("/rune/{}", Rune(Rune::RESERVED)), StatusCode::NOT_FOUND, - ".*Rune AAAAAAAAAAAAAAAAAAAAAAAAAAA.* -
-
unlock height
-
none
-
reserved
-
true
-
.* -", + RuneNotFoundHtml { + rune: Rune(Rune::RESERVED), + unlock_height: None, + }, ); }