From bf6f114b9564a70ab2d278daeed0eb7e5ed7477b Mon Sep 17 00:00:00 2001 From: Chris Rutherford Date: Wed, 7 Aug 2024 14:41:22 -0400 Subject: [PATCH 1/5] updated dependencies, and started survey of modules to determine the needed breakdown --- Cargo.lock | 47 +++++++++++++-------------------------- Cargo.toml | 6 ++--- src/bin/electrs.rs | 13 +++++++---- src/daemon.rs | 5 ++++- src/electrum/discovery.rs | 44 ++++++++++++++++++++++-------------- src/new_index/mempool.rs | 7 +++++- 6 files changed, 64 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba517f5e4..2459d49a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -188,17 +188,16 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.65.1" +version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "cexpr", "clang-sys", + "itertools", "lazy_static", "lazycell", - "peeking_take_while", - "prettyplease", "proc-macro2", "quote", "regex", @@ -673,7 +672,7 @@ dependencies = [ "stderrlog", "sysconf", "tempfile", - "time 0.3.34", + "time 0.3.36", "tiny_http", "tokio", "ureq 2.9.6", @@ -1191,9 +1190,9 @@ dependencies = [ [[package]] name = "librocksdb-sys" -version = "0.11.0+8.1.1" +version = "0.16.0+8.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e" +checksum = "ce3d60bc059831dc1c83903fb45c103f75db65c5a7bf22272764d9cc683e348c" dependencies = [ "bindgen", "bzip2-sys", @@ -1411,12 +1410,6 @@ dependencies = [ "sha2", ] -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "percent-encoding" version = "2.3.1" @@ -1473,16 +1466,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "prettyplease" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" -dependencies = [ - "proc-macro2", - "syn 2.0.48", -] - [[package]] name = "proc-macro-hack" version = "0.5.20+deprecated" @@ -1724,9 +1707,9 @@ dependencies = [ [[package]] name = "rocksdb" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6f170a4041d50a0ce04b0d2e14916d6ca863ea2e422689a5b694395d299ffe" +checksum = "6bd13e55d6d7b8cd0ea569161127567cd587676c99f4472f779a0279aa60a7a7" dependencies = [ "libc", "librocksdb-sys", @@ -2300,9 +2283,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.34" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -2310,7 +2293,7 @@ dependencies = [ "powerfmt", "serde", "time-core", - "time-macros 0.2.17", + "time-macros 0.2.18", ] [[package]] @@ -2331,9 +2314,9 @@ dependencies = [ [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -2886,7 +2869,7 @@ dependencies = [ "hmac", "pbkdf2", "sha1 0.10.6", - "time 0.3.34", + "time 0.3.36", "zstd", ] diff --git a/Cargo.toml b/Cargo.toml index 72c569a86..5c981346a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ num_cpus = "1.12.0" page_size = "0.6.0" prometheus = "0.13" rayon = "1.5.0" -rocksdb = "0.21" +rocksdb = "0.22" rust-crypto = "0.2" serde = "1.0.118" serde_derive = "1.0.118" @@ -45,7 +45,7 @@ serde_json = "1.0.60" signal-hook = "0.3" stderrlog = "0.6" sysconf = ">=0.3.4" -time = { version = "0.3", features = ["formatting"] } +time = { version = "0.3.36", features = ["formatting"] } tiny_http = "0.12.0" url = "2.2.0" hyper = "0.14" @@ -76,4 +76,4 @@ rev = "d3792352992a539afffbe11501d1aff9fd5b919d" # add-peer branch # not yet published on crates.io [patch.crates-io.electrumd] git = "https://github.com/shesek/electrumd" -rev = "996fe2a8e563bc1bde6bbc2e0c2a2f4421abcdbc" +rev = "996fe2a8e563bc1bde6bbc2e0c2a2f4421abcdbc" \ No newline at end of file diff --git a/src/bin/electrs.rs b/src/bin/electrs.rs index fb25e68a8..9f3a318f3 100644 --- a/src/bin/electrs.rs +++ b/src/bin/electrs.rs @@ -85,9 +85,12 @@ fn run_server(config: Arc) -> Result<()> { match Mempool::update(&mempool, &daemon) { Ok(_) => break, Err(e) => { - warn!("Error performing initial mempool update, trying again in 5 seconds: {}", e.display_chain()); + warn!( + "Error performing initial mempool update, trying again in 5 seconds: {}", + e.display_chain() + ); signal.wait(Duration::from_secs(5), false)?; - }, + } } } @@ -117,7 +120,6 @@ fn run_server(config: Arc) -> Result<()> { )); loop { - main_loop_count.inc(); if let Err(err) = signal.wait(Duration::from_secs(5), true) { @@ -137,7 +139,10 @@ fn run_server(config: Arc) -> Result<()> { // Update mempool if let Err(e) = Mempool::update(&mempool, &daemon) { // Log the error if the result is an Err - warn!("Error updating mempool, skipping mempool update: {}", e.display_chain()); + warn!( + "Error updating mempool, skipping mempool update: {}", + e.display_chain() + ); } // Update subscribed clients diff --git a/src/daemon.rs b/src/daemon.rs index 457bf4230..a90caa3db 100644 --- a/src/daemon.rs +++ b/src/daemon.rs @@ -553,7 +553,10 @@ impl Daemon { // Missing estimates are logged but do not cause a failure, whatever is available is returned #[allow(clippy::float_cmp)] pub fn estimatesmartfee_batch(&self, conf_targets: &[u16]) -> Result> { - let params_list: Vec = conf_targets.iter().map(|t| json!([t, "ECONOMICAL"])).collect(); + let params_list: Vec = conf_targets + .iter() + .map(|t| json!([t, "ECONOMICAL"])) + .collect(); Ok(self .requests("estimatesmartfee", ¶ms_list)? diff --git a/src/electrum/discovery.rs b/src/electrum/discovery.rs index cf70221f6..f5bb85588 100644 --- a/src/electrum/discovery.rs +++ b/src/electrum/discovery.rs @@ -547,23 +547,33 @@ mod tests { false, None, )); - discovery.add_default_server( - "electrum.blockstream.info".into(), - vec![Service::Tcp(60001)], - ).unwrap(); - discovery.add_default_server("testnet.hsmiths.com".into(), vec![Service::Ssl(53012)]).unwrap(); - discovery.add_default_server( - "tn.not.fyi".into(), - vec![Service::Tcp(55001), Service::Ssl(55002)], - ).unwrap(); - discovery.add_default_server( - "electrum.blockstream.info".into(), - vec![Service::Tcp(60001), Service::Ssl(60002)], - ).unwrap(); - discovery.add_default_server( - "explorerzydxu5ecjrkwceayqybizmpjjznk5izmitf2modhcusuqlid.onion".into(), - vec![Service::Tcp(143)], - ).unwrap(); + discovery + .add_default_server( + "electrum.blockstream.info".into(), + vec![Service::Tcp(60001)], + ) + .unwrap(); + discovery + .add_default_server("testnet.hsmiths.com".into(), vec![Service::Ssl(53012)]) + .unwrap(); + discovery + .add_default_server( + "tn.not.fyi".into(), + vec![Service::Tcp(55001), Service::Ssl(55002)], + ) + .unwrap(); + discovery + .add_default_server( + "electrum.blockstream.info".into(), + vec![Service::Tcp(60001), Service::Ssl(60002)], + ) + .unwrap(); + discovery + .add_default_server( + "explorerzydxu5ecjrkwceayqybizmpjjznk5izmitf2modhcusuqlid.onion".into(), + vec![Service::Tcp(143)], + ) + .unwrap(); debug!("{:#?}", discovery); diff --git a/src/new_index/mempool.rs b/src/new_index/mempool.rs index 179829fd2..c29cad466 100644 --- a/src/new_index/mempool.rs +++ b/src/new_index/mempool.rs @@ -492,7 +492,12 @@ impl Mempool { } pub fn update(mempool: &Arc>, daemon: &Daemon) -> Result<()> { - let _timer = mempool.read().unwrap().latency.with_label_values(&["update"]).start_timer(); + let _timer = mempool + .read() + .unwrap() + .latency + .with_label_values(&["update"]) + .start_timer(); // 1. Determine which transactions are no longer in the daemon's mempool and which ones have newly entered it let old_txids = mempool.read().unwrap().old_txids(); From fa8d95c875bb1d9105b8752f43167b3f547b2944 Mon Sep 17 00:00:00 2001 From: Chris Rutherford Date: Thu, 8 Aug 2024 16:58:48 -0400 Subject: [PATCH 2/5] updated some dependencies in cargo-lock.toml. refactored discovery add_default_servers function to implement a macro to handle the addition of multiple servers at the time via declarative macro. --- Cargo.lock | 737 ++++++++++++++-------- src/electrum/discovery/default_servers.rs | 525 +++------------ 2 files changed, 561 insertions(+), 701 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2459d49a1..8d3d30d77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", @@ -30,9 +30,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -63,9 +63,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "arraydeque" @@ -75,9 +75,15 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "ascii" @@ -98,15 +104,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -123,6 +129,16 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" +[[package]] +name = "base58ck" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8d66485a3a2ea485c1913c4572ce0256067a5377ac8c75c4960e1cda98605f" +dependencies = [ + "bitcoin-internals 0.3.0", + "bitcoin_hashes 0.14.0", +] + [[package]] name = "base64" version = "0.10.1" @@ -140,15 +156,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64-compat" @@ -177,6 +187,12 @@ version = "0.10.0-beta" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98f7eed2b2781a6f0b5c903471d48e15f56fb4e1165df8a9a2337fd1a59d45ea" +[[package]] +name = "bech32" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" + [[package]] name = "bincode" version = "1.3.3" @@ -192,7 +208,7 @@ version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "cexpr", "clang-sys", "itertools", @@ -203,7 +219,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -225,14 +241,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c85783c2fe40083ea54a33aa2f0ba58831d90fcd190f5bdc47e74e84d2a96ae" dependencies = [ "bech32 0.10.0-beta", - "bitcoin-internals", + "bitcoin-internals 0.2.0", "bitcoin_hashes 0.13.0", - "hex-conservative", + "hex-conservative 0.1.2", "hex_lit", "secp256k1 0.28.2", "serde", ] +[[package]] +name = "bitcoin" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea507acc1cd80fc084ace38544bbcf7ced7c2aa65b653b102de0ce718df668f6" +dependencies = [ + "base58ck", + "bech32 0.11.0", + "bitcoin-internals 0.3.0", + "bitcoin-io", + "bitcoin-units", + "bitcoin_hashes 0.14.0", + "hex-conservative 0.2.1", + "hex_lit", + "secp256k1 0.29.0", + "serde", +] + [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -242,12 +276,37 @@ dependencies = [ "serde", ] +[[package]] +name = "bitcoin-internals" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30bdbe14aa07b06e6cfeffc529a1f099e5fbe249524f8125358604df99a4bed2" +dependencies = [ + "serde", +] + +[[package]] +name = "bitcoin-io" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "340e09e8399c7bd8912f495af6aa58bea0c9214773417ffaa8f6460f93aaee56" + [[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 0.3.0", + "serde", +] + [[package]] name = "bitcoin_hashes" version = "0.10.0" @@ -272,8 +331,19 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ - "bitcoin-internals", - "hex-conservative", + "bitcoin-internals 0.2.0", + "hex-conservative 0.1.2", + "serde", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.1", "serde", ] @@ -283,13 +353,26 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eb70725a621848c83b3809913d5314c0d20ca84877d99dd909504b564edab00" dependencies = [ - "bitcoincore-rpc-json", + "bitcoincore-rpc-json 0.18.0", "jsonrpc 0.14.1", "log", "serde", "serde_json", ] +[[package]] +name = "bitcoincore-rpc" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedd23ae0fd321affb4bbbc36126c6f49a32818dc6b979395d24da8c9d4e80ee" +dependencies = [ + "bitcoincore-rpc-json 0.19.0", + "jsonrpc 0.18.0", + "log", + "serde", + "serde_json", +] + [[package]] name = "bitcoincore-rpc-json" version = "0.18.0" @@ -301,14 +384,25 @@ dependencies = [ "serde_json", ] +[[package]] +name = "bitcoincore-rpc-json" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8909583c5fab98508e80ef73e5592a651c954993dc6b7739963257d19f0e71a" +dependencies = [ + "bitcoin 0.32.2", + "serde", + "serde_json", +] + [[package]] name = "bitcoind" -version = "0.34.1" +version = "0.34.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50548a349632abb9a2007d431a302bf0401a786c91f809ff31765fba87e2397" +checksum = "a1362bbf7e78ec7542017dcfc49e0ac5444280a6bea7566cfc591fca6863fc1a" dependencies = [ "anyhow", - "bitcoincore-rpc", + "bitcoincore-rpc 0.18.0", "log", "tempfile", "which", @@ -316,13 +410,13 @@ dependencies = [ [[package]] name = "bitcoind" -version = "0.35.1" +version = "0.35.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09db6b30b527263d2e3a8768a2c9299763858cb84d01a9d63d174b9f515e1a32" +checksum = "66a9283039913262d1481c460fec9954cfa3de77da7a2d9f690a4eea3be33682" dependencies = [ "anyhow", - "bitcoin_hashes 0.13.0", - "bitcoincore-rpc", + "bitcoin_hashes 0.14.0", + "bitcoincore-rpc 0.19.0", "flate2", "log", "minreq", @@ -340,9 +434,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -355,9 +449,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byteorder" @@ -367,9 +461,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "bzip2" @@ -394,10 +488,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.85" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b918671670962b48bc23753aef0c51d072dca6f52f01f800854ada6ddb7f7d3" +checksum = "504bdec147f2cc13c8b57ed9401fd8a147cc66b67ad5cb241394244f2c947549" dependencies = [ + "jobserver", "libc", ] @@ -418,16 +513,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -448,9 +543,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -474,9 +569,9 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" +checksum = "373e9fafaa20882876db20562275ff58d50e0caa2590077fe7ce7bef90211d0d" [[package]] name = "constant_time_eq" @@ -528,18 +623,18 @@ dependencies = [ [[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", ] [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -565,9 +660,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 = "crypto-common" @@ -628,9 +723,9 @@ checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "either" -version = "1.10.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "electrs" @@ -638,10 +733,10 @@ version = "0.4.1" dependencies = [ "arraydeque", "arrayref", - "base64 0.22.0", + "base64 0.22.1", "bincode", "bitcoin 0.31.2", - "bitcoind 0.35.1", + "bitcoind 0.35.2", "clap", "crossbeam-channel", "dirs", @@ -651,7 +746,7 @@ dependencies = [ "elementsd", "error-chain", "glob", - "hex-conservative", + "hex-conservative 0.1.2", "hyper", "hyperlocal", "itertools", @@ -675,7 +770,7 @@ dependencies = [ "time 0.3.36", "tiny_http", "tokio", - "ureq 2.9.6", + "ureq 2.10.0", "url", ] @@ -727,7 +822,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17022ca1a790518f66c46c40ab729cc275f8a009babad583972a946a851cadf" dependencies = [ "bitcoin_hashes 0.12.0", - "bitcoind 0.34.1", + "bitcoind 0.34.2", "flate2", "minreq", "tar", @@ -746,9 +841,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -776,9 +871,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "filetime" @@ -788,15 +883,15 @@ checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.4.1", "windows-sys 0.52.0", ] [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", @@ -846,7 +941,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -887,9 +982,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -898,9 +993,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "glob" @@ -919,9 +1014,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.5" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -931,9 +1026,18 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-conservative" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ed443af458ccb6d81c1e7e661545f94d3176752fb1df2f543b902a1e0f51e2" +checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] [[package]] name = "hex_lit" @@ -961,9 +1065,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -983,9 +1087,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -995,9 +1099,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -1088,7 +1192,7 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.5", + "hermit-abi 0.3.9", "libc", "windows-sys 0.52.0", ] @@ -1104,15 +1208,24 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1139,6 +1252,18 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jsonrpc" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3662a38d341d77efecb73caf01420cfa5aa63c0253fd7bc05289ef9f6616e1bf" +dependencies = [ + "base64 0.13.1", + "minreq", + "serde", + "serde_json", +] + [[package]] name = "kernel32-sys" version = "0.2.2" @@ -1151,9 +1276,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 = "lazycell" @@ -1163,29 +1288,28 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" -version = "0.8.1" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-targets 0.52.6", ] [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "libc", - "redox_syscall", ] [[package]] @@ -1206,9 +1330,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.15" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" dependencies = [ "cc", "pkg-config", @@ -1217,15 +1341,15 @@ dependencies = [ [[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 = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1233,15 +1357,15 @@ 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 = "lz4-sys" -version = "1.9.4" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" dependencies = [ "cc", "libc", @@ -1255,9 +1379,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "minimal-lexical" @@ -1267,35 +1391,38 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] [[package]] name = "minreq" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3371dfc7b772c540da1380123674a8e20583aca99907087d990ca58cf44203" +checksum = "763d142cdff44aaadd9268bebddb156ef6c65a0e13486bb81673cf2d8739f9b0" dependencies = [ "log", "once_cell", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-webpki", + "serde", + "serde_json", "webpki-roots 0.25.4", ] [[package]] name = "mio" -version = "0.8.10" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1316,9 +1443,9 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1329,15 +1456,15 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.5", + "hermit-abi 0.3.9", "libc", ] [[package]] name = "object" -version = "0.32.2" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" dependencies = [ "memchr", ] @@ -1366,9 +1493,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -1376,15 +1503,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -1418,29 +1545,29 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -1450,9 +1577,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "powerfmt" @@ -1462,9 +1589,12 @@ 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 = "proc-macro-hack" @@ -1474,18 +1604,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "prometheus" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" dependencies = [ "cfg-if", "fnv", @@ -1523,9 +1653,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1636,11 +1766,20 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", @@ -1649,9 +1788,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -1661,9 +1800,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -1672,9 +1811,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "ring" @@ -1693,16 +1832,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", + "cfg-if", "getrandom", "libc", "spin 0.9.8", "untrusted 0.9.0", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1730,9 +1870,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -1757,12 +1897,12 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.2", - "errno 0.3.8", + "bitflags 2.6.0", + "errno 0.3.9", "libc", "linux-raw-sys", "windows-sys 0.52.0", @@ -1796,12 +1936,12 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.7", + "ring 0.17.8", "rustls-webpki", "sct 0.7.1", ] @@ -1812,15 +1952,15 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.7", + "ring 0.17.8", "untrusted 0.9.0", ] [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scopeguard" @@ -1844,7 +1984,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.7", + "ring 0.17.8", "untrusted 0.9.0", ] @@ -1870,6 +2010,18 @@ dependencies = [ "serde", ] +[[package]] +name = "secp256k1" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0cc0f1cf93f4969faf3ea1c7d8a9faed25918d96affa959720823dfe86d4f3" +dependencies = [ + "bitcoin_hashes 0.14.0", + "rand 0.8.5", + "secp256k1-sys 0.10.0", + "serde", +] + [[package]] name = "secp256k1-sys" version = "0.4.2" @@ -1888,6 +2040,15 @@ dependencies = [ "cc", ] +[[package]] +name = "secp256k1-sys" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1433bd67156263443f14d603720b082dd3121779323fce20cba2aa07b874bc1b" +dependencies = [ + "cc", +] + [[package]] name = "secp256k1-zkp" version = "0.10.1" @@ -1928,31 +2089,32 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.115" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1979,9 +2141,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] name = "sha2" @@ -2012,9 +2174,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -2030,15 +2192,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -2146,9 +2308,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[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" @@ -2163,9 +2325,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -2186,9 +2348,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" dependencies = [ "filetime", "libc", @@ -2197,14 +2359,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2227,29 +2390,29 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -2349,9 +2512,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", ] @@ -2364,29 +2527,28 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "libc", "mio", - "num_cpus", "pin-project-lite", "socket2", "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", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -2440,18 +2602,18 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "untrusted" @@ -2486,11 +2648,11 @@ dependencies = [ [[package]] name = "ureq" -version = "2.9.6" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" +checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "log", "once_cell", "serde", @@ -2500,9 +2662,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna 0.5.0", @@ -2523,9 +2685,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[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 = "want" @@ -2550,9 +2712,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2560,24 +2722,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2585,28 +2747,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -2688,11 +2850,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi 0.3.9", + "windows-sys 0.59.0", ] [[package]] @@ -2707,7 +2869,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -2725,7 +2887,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "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]] @@ -2745,17 +2916,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -2766,9 +2938,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -2778,9 +2950,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -2790,9 +2962,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -2802,9 +2980,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -2814,9 +2992,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -2826,9 +3004,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -2838,9 +3016,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "xattr" @@ -2853,6 +3031,27 @@ dependencies = [ "rustix", ] +[[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.72", +] + [[package]] name = "zip" version = "0.6.6" @@ -2894,9 +3093,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", diff --git a/src/electrum/discovery/default_servers.rs b/src/electrum/discovery/default_servers.rs index 95754ecef..21159edbf 100644 --- a/src/electrum/discovery/default_servers.rs +++ b/src/electrum/discovery/default_servers.rs @@ -1,445 +1,106 @@ use crate::chain::Network; use crate::electrum::discovery::{DiscoveryManager, Service}; +macro_rules! add_servers { + ($discovery:expr, $(($server:expr, $servives:expr)),* $(,)?) => { + $( + $discovery.add_default_server($server.into(), $servives).ok(); + )* + }; +} + pub fn add_default_servers(discovery: &DiscoveryManager, network: Network) { match network { #[cfg(not(feature = "liquid"))] Network::Bitcoin => { - discovery - .add_default_server( - "3smoooajg7qqac2y.onion".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "81-7-10-251.blue.kundencontroller.de".into(), - vec![Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "E-X.not.fyi".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "VPS.hsmiths.com".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "b.ooze.cc".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "bauerjda5hnedjam.onion".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "bauerjhejlv6di7s.onion".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "bitcoin.corgi.party".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "bitcoin3nqy3db7c.onion".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "bitcoins.sk".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "btc.cihar.com".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "btc.xskyx.net".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "currentlane.lovebitco.in".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "daedalus.bauerj.eu".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum.jochen-hoenicke.de".into(), - vec![Service::Tcp(50003), Service::Ssl(50005)], - ) - .ok(); - discovery - .add_default_server( - "dragon085.startdedicated.de".into(), - vec![Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "e-1.claudioboxx.com".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "e.keff.org".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum-server.ninja".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum-unlimited.criptolayer.net".into(), - vec![Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum.eff.ro".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum.festivaldelhumor.org".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum.hsmiths.com".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum.leblancnet.us".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server("electrum.mindspot.org".into(), vec![Service::Ssl(50002)]) - .ok(); - discovery - .add_default_server( - "electrum.qtornado.com".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server("electrum.taborsky.cz".into(), vec![Service::Ssl(50002)]) - .ok(); - discovery - .add_default_server( - "electrum.villocq.com".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum2.eff.ro".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum2.villocq.com".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrumx.bot.nu".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrumx.ddns.net".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server("electrumx.ftp.sh".into(), vec![Service::Ssl(50002)]) - .ok(); - discovery - .add_default_server( - "electrumx.ml".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrumx.soon.it".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server("electrumxhqdsmlu.onion".into(), vec![Service::Tcp(50001)]) - .ok(); - discovery - .add_default_server( - "elx01.knas.systems".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "enode.duckdns.org".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "fedaykin.goip.de".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "fn.48.org".into(), - vec![Service::Tcp(50003), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "helicarrier.bauerj.eu".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "hsmiths4fyqlw5xw.onion".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "hsmiths5mjk6uijs.onion".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "icarus.tetradrachm.net".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "electrum.emzy.de".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "ndnd.selfhost.eu".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server("ndndword5lpb7eex.onion".into(), vec![Service::Tcp(50001)]) - .ok(); - discovery - .add_default_server( - "orannis.com".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "ozahtqwp25chjdjd.onion".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "qtornadoklbgdyww.onion".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server("rbx.curalle.ovh".into(), vec![Service::Ssl(50002)]) - .ok(); - discovery - .add_default_server("s7clinmo4cazmhul.onion".into(), vec![Service::Tcp(50001)]) - .ok(); - discovery - .add_default_server( - "tardis.bauerj.eu".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server("technetium.network".into(), vec![Service::Ssl(50002)]) - .ok(); - discovery - .add_default_server( - "tomscryptos.com".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "ulrichard.ch".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "vmd27610.contaboserver.net".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "vmd30612.contaboserver.net".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "wsw6tua3xl24gsmi264zaep6seppjyrkyucpsmuxnjzyt3f3j6swshad.onion".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "xray587.startdedicated.de".into(), - vec![Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "yuio.top".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "bitcoin.dragon.zone".into(), - vec![Service::Tcp(50003), Service::Ssl(50004)], - ) - .ok(); - discovery - .add_default_server( - "ecdsa.net".into(), - vec![Service::Tcp(50001), Service::Ssl(110)], - ) - .ok(); - discovery - .add_default_server("btc.usebsv.com".into(), vec![Service::Ssl(50006)]) - .ok(); - discovery - .add_default_server( - "e2.keff.org".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server("electrum.hodlister.co".into(), vec![Service::Ssl(50002)]) - .ok(); - discovery - .add_default_server("electrum3.hodlister.co".into(), vec![Service::Ssl(50002)]) - .ok(); - discovery - .add_default_server("electrum5.hodlister.co".into(), vec![Service::Ssl(50002)]) - .ok(); - discovery - .add_default_server( - "electrumx.electricnewyear.net".into(), - vec![Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "fortress.qtornado.com".into(), - vec![Service::Tcp(50001), Service::Ssl(443)], - ) - .ok(); - discovery - .add_default_server( - "green-gold.westeurope.cloudapp.azure.com".into(), - vec![Service::Tcp(56001), Service::Ssl(56002)], - ) - .ok(); - discovery - .add_default_server( - "electrumx.erbium.eu".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); + add_servers!( + discovery, + // ("server.domain", vec![Service::Service1, Service::Service2 ...]) + ("3smoooajg7qqac2y.onion", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("81-7-10-251.blue.kundencontroller.de", vec![Service::Ssl(50002)]), + ("E-X.not.fyi", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("VPS.hsmiths.com", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("b.ooze.cc", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("bauerjda5hnedjam.onion", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("bauerjhejlv6di7s.onion", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("bitcoin.corgi.party", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("bitcoin3nqy3db7c.onion", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("bitcoins.sk", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("btc.cihar.com", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("btc.xskyx.net", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("currentlane.lovebitco.in", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("daedalus.bauerj.eu", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum.jochen-hoenicke.de", vec![Service::Tcp(50003), Service::Ssl(50005)]), + ("dragon085.startdedicated.de", vec![Service::Ssl(50002)]), + ("e-1.claudioboxx.com", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("e.keff.org", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum-server.ninja", vec!([Service::Tcp(50001), Service::Ssl(5002)])), + ("electrum-unlimited.criptolayer.net", vec![Service::Ssl(50002)]), + ("electrum.eff.ro", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum.festivaldelhumor.org", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum.hsmiths.com", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum.leblancnet.us", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum.mindspot.org", vec![Service::Ssl(50002)]), + ("electrum.qtornado.com", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum.taborsky.cz", vec![Service::Ssl(50002)]), + ("electrum.villocq.com", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum2.eff.ro", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum2.villocq.com", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrumx.bot.nu", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrumx.ddns.net", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrumx.ftp.sh", vec![Service::Ssl(50002)]), + ("electrumx.ml", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrumx.soon.it", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrumxhqdsmlu.onion", vec![Service::Tcp(50001)]), + ("elx01.knas.systems", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("enode.duckdns.org", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("fedaykin.goip.de", vec![Service::Tcp(50001), Service:Ssl(50002)]), + ("fn.48.org", vec![Service::Tcp(50003), Service::Ssl(50002)]), + ("helicarrier.bauerj.eu", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("hsmiths4fyqlw5xw.onion", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("hsmiths5mjk6uijs.onion", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("icarus.tetradrachm.net", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum.emzy.de", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("ndnd.selfhost.eu", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("ndndword5lpb7eex.onion", vec![Service::Tcp(50001)]), + ("orannis.com", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("ozahtqwp25chjdjd.onion", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("qtornadoklbgdyww.onion", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("rbx.curalle.ovh", vec![Service::Ssl(50002)]), + ("s7clinmo4cazmhul.onion", vec![Service::Tcp(50001)]), + ("tardis.bauerj.eu", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("technetium.network", vec![Service::Ssl(50002)]), + ("tomscryptos.com", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("ulrichard.ch", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("vmd27610.contaboserver.net", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("vmd30612.contaboserver.net", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("wsw6tua3xl24gsmi264zaep6seppjyrkyucpsmuxnjzyt3f3j6swshad.onion", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("xray587.startdedicated.de", vec![Service::Ssl(50002)]), + ("yuio.top", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("bitcoin.dragon.zone", vec![Service::Tcp(50003), Service::Ssl(50004)]), + ("ecdsa.net", vec![Service::Tcp(50001), Service::Ssl(110)]), + ("btc.usebsv.com", vec![Service::Ssl(50006)]), + ("e2.keff.org", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("electrum.hodlister.co", vec![Service::Ssl(50002)]), + ("electrum3.hodlister.co", vec![Service::Ssl(50002)]), + ("electrum5.hodlister.co", vec![Service::Ssl(50002)]), + ("electrumx.electricnewyear.net", vec![Service::Ssl(50002)]), + ("fortress.qtornado.com", vec![Service::Tcp(50001), Service::Ssl(443)]), + ("green-gold.westeurope.cloudapp.azure.com", vec![Service::Tcp(56001), Service::Ssl(56002)]), + ("electrumx.erbium.eu", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ); } #[cfg(not(feature = "liquid"))] Network::Testnet => { - discovery - .add_default_server( - "hsmithsxurybd7uh.onion".into(), - vec![Service::Tcp(53011), Service::Ssl(53012)], - ) - .ok(); - discovery - .add_default_server( - "testnet.hsmiths.com".into(), - vec![Service::Tcp(53011), Service::Ssl(53012)], - ) - .ok(); - discovery - .add_default_server( - "testnet.qtornado.com".into(), - vec![Service::Tcp(51001), Service::Ssl(51002)], - ) - .ok(); - discovery - .add_default_server( - "testnet1.bauerj.eu".into(), - vec![Service::Tcp(50001), Service::Ssl(50002)], - ) - .ok(); - discovery - .add_default_server( - "tn.not.fyi".into(), - vec![Service::Tcp(55001), Service::Ssl(55002)], - ) - .ok(); - discovery - .add_default_server( - "bitcoin.cluelessperson.com".into(), - vec![Service::Tcp(51001), Service::Ssl(51002)], - ) - .ok(); + add_servers!( + discovery, + ("hsmithsxurybd7uh.onion", vec![Service::Tcp(53011), Service::Ssl(53012)]), + ("testnet.hsmiths.com", vec![Service::Tcp(53011), Service::Ssl(53012)]), + ("testnet.qtornado.com", vec![Service::Tcp(51001), Service::Ssl(51002)]), + ("testnet1.bauerj.eu", vec![Service::Tcp(50001), Service::Ssl(50002)]), + ("tn.not.fyi", vec![Service::Tcp(55001), Service::Ssl(55002)]), + ("bitcoin.cluelessperson.com", vec![Service::Tcp(51001), Service::Ssl(51002)]), + ); } _ => (), From 76d7e13d3c26a4ab9798c671e7db2736b468db54 Mon Sep 17 00:00:00 2001 From: Chris Rutherford Date: Tue, 20 Aug 2024 15:13:22 -0400 Subject: [PATCH 3/5] added electrs-rest yaml file for openapi --- doc/electrs-rest-3.1.0.yml | 603 +++++++++++++++++++++++++++++++++++++ 1 file changed, 603 insertions(+) create mode 100644 doc/electrs-rest-3.1.0.yml diff --git a/doc/electrs-rest-3.1.0.yml b/doc/electrs-rest-3.1.0.yml new file mode 100644 index 000000000..9350478e2 --- /dev/null +++ b/doc/electrs-rest-3.1.0.yml @@ -0,0 +1,603 @@ +openapi: "3.1.0" +info: + title: Electrs Rest API + version: 1.0.0 + description: | + A Rust Implementation of the Electrum Server. + ## Api Docs are Currently under construction ⚒️⚒️⚒️ +servers: + - description: "Blockstream Public" + url: "https://blockstream.info/api/" +paths: + /blocks/tip/hash: + get: + summary: Get the hash of the tip block + responses: + '200': + description: The hash of the tip block + content: + text/plain: + schema: + type: string + /blocks/tip/height: + get: + summary: Get the height of the tip block + responses: + '200': + description: The height of the tip block + content: + text/plain: + schema: + type: string + /blocks/{start_height}: + get: + summary: Get blocks starting from a specific height + parameters: + - name: start_height + in: path + required: true + schema: + type: integer + responses: + '200': + description: List of blocks + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Block' + /block-height/{height}: + get: + summary: Get block header by height + parameters: + - name: height + in: path + required: true + schema: + type: integer + responses: + '200': + description: Block header + content: + application/json: + schema: + type: string + /block/{hash}: + get: + summary: Get block by hash + parameters: + - name: hash + in: path + required: true + schema: + type: string + responses: + '200': + description: Block data + content: + application/json: + schema: + $ref: '#/components/schemas/Block' + /block/{hash}/status: + get: + summary: Get block status by hash + parameters: + - name: hash + in: path + required: true + schema: + type: string + responses: + '200': + description: Block status + content: + application/json: + schema: + type: object + /block/{hash}/txids: + get: + summary: Get transaction IDs in a block by hash + parameters: + - name: hash + in: path + required: true + schema: + type: string + responses: + '200': + description: Transaction IDs + content: + application/json: + schema: + type: array + items: + type: string + /block/{hash}/header: + get: + summary: Get block header by hash + parameters: + - name: hash + in: path + required: true + schema: + type: string + responses: + '200': + description: Block header + content: + text/plain: + schema: + type: string + /block/{hash}/raw: + get: + summary: Get raw block data by hash + parameters: + - name: hash + in: path + required: true + schema: + type: string + responses: + '200': + description: Raw block data + content: + application/octet-stream: + schema: + type: string + /block/{hash}/txid/{index}: + get: + summary: Get transaction ID by index in a block + parameters: + - name: hash + in: path + required: true + schema: + type: string + - name: index + in: path + required: true + schema: + type: integer + responses: + '200': + description: Transaction ID + content: + text/plain: + schema: + type: string + /block/{hash}/txs: + get: + summary: Get transactions in a block starting from an index + parameters: + - name: hash + in: path + required: true + schema: + type: string + - name: start_index + in: query + required: false + schema: + type: integer + responses: + '200': + description: Transactions for a given block + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Transaction' + /address/{script_str}: + get: + summary: Get address stats + parameters: + - name: script_str + in: path + required: true + schema: + type: string + responses: + '200': + description: Address Chain and Mempool stats + content: + application/json: + schema: + $ref: '#/components/schemas/Address' + /address/{script_str}/txs: + get: + summary: Get transactions for an address + parameters: + - name: script_str + in: path + required: true + schema: + type: string + responses: + '200': + description: Transactions + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Transaction' + /address/{script_str}/utxo: + get: + summary: Get UTXOs for an address + parameters: + - name: script_str + in: path + required: true + schema: + type: string + responses: + '200': + description: UTXOs + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Utxo' + /tx/{hash}: + get: + summary: Get transaction by hash + parameters: + - name: hash + in: path + required: true + schema: + type: string + responses: + '200': + description: Transaction data + content: + application/json: + schema: + $ref: '#/components/schemas/Transaction' + /tx/{hash}/status: + get: + summary: Get transaction status by hash + parameters: + - name: hash + in: path + required: true + schema: + type: string + responses: + '200': + description: Transaction status + content: + application/json: + schema: + $ref: '#/components/schemas/TxStatus' + /tx/{hash}/merkle-proof: + get: + summary: Get transaction merkle proof by hash + parameters: + - name: hash + in: path + required: true + schema: + $ref: '#/components/schemas/MerkleProof' + responses: + '200': + description: Merkle proof + content: + application/json: + schema: + type: object + /tx/{hash}/outspend/{index}: + get: + summary: Get outspend information for a transaction output + parameters: + - name: hash + in: path + required: true + schema: + type: string + - name: index + in: path + required: true + schema: + type: integer + responses: + '200': + description: Outspend information + content: + application/json: + schema: + $ref: '#/components/schemas/Outspend' + /tx/{hash}/outspends: + get: + summary: Get outspend information for all outputs of a transaction + parameters: + - name: hash + in: path + required: true + schema: + type: string + responses: + '200': + description: Outspend information + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Outspend' + /broadcast: + get: + summary: Broadcast a transaction + parameters: + - name: tx + in: query + required: true + schema: + type: string + responses: + '200': + description: Transaction ID + content: + text/plain: + schema: + type: string + /tx: + post: + summary: Broadcast a transaction + requestBody: + content: + text/plain: + schema: + type: string + responses: + '200': + description: Transaction ID + content: + text/plain: + schema: + type: string + /mempool: + get: + summary: Get mempool backlog stats + responses: + '200': + description: Mempool backlog stats + content: + application/json: + schema: + $ref: '#/components/schemas/MempoolBacklogStats' + /mempool/txids: + get: + summary: Get mempool transaction IDs + responses: + '200': + description: Mempool transaction IDs + content: + application/json: + schema: + type: array + items: + type: string + /mempool/recent: + get: + summary: Get recent mempool transactions + responses: + '200': + description: Recent mempool transactions + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MempoolTx' + /fee-estimates: + get: + summary: Get fee estimates + responses: + '200': + description: Fee estimates + content: + application/json: + schema: + type: object + additionalProperties: + type: string +components: + schemas: + Block: + type: object + properties: + name: + type: string + height: + type: integer + version: + type: integer + timestamp: + type: integer + tx_count: + type: integer + size: + type: integer + weight: + type: integer + merkle_root: + type: string + previousblockhash: + type: string + mediantime: + type: integer + nonce: + type: integer + bits: + type: integer + difficulty: + type: number + BlockStatus: + type: object + properties: + in_best_chain: + type: boolean + height: + type: integer + next_best: + type: string + Transaction: + type: object + properties: + txid: + type: string + version: + type: number + locktime: + type: number + vin: + type: array + items: + $ref: '#/components/schemas/TxVin' + vout: + type: array + items: + $ref: '#/components/schemas/TxVout' + weight: + type: integer + size: + type: integer + status: + $ref: '#/components/schemas/TxStatus' + TxStatus: + type: object + properties: + confirmed: + type: boolean + block_height: + type: integer + block_hash: + type: integer + block_time: + type: integer + TxVin: + type: object + properties: + txid: + type: string + vout: + type: integer + prevout: + type: string + scriptsig: + type: string + scriptsig_asm: + type: string + witness: + type: array + items: + type: string + is_coinbase: + type: boolean + sequence: + type: integer + TxVout: + type: object + properties: + scriptpubkey: + type: string + scriptpubkey_asm: + type: string + scriptpubkey_type: + type: string + scriptpubkey_address: + type: string + value: + type: integer + Address: + type: object + properties: + address: + type: string + chain_stats: + $ref: '#/components/schemas/ChainStats' + mempool_stats: + $ref: '#/components/schemas/MempoolStats' + ChainStats: + type: object + properties: + funded_txo_count: + type: integer + funded_txo_sum: + type: integer + spent_txo_count: + type: integer + spent_txo_sum: + type: integer + tx_count: + type: integer + MempoolStats: + type: object + properties: + funded_txo_count: + type: integer + funded_txo_sum: + type: integer + spent_txo_count: + type: integer + spent_txo_sum: + type: integer + tx_count: + type: integer + Utxo: + type: object + properties: + txid: + type: string + vout: + type: integer + status: + $ref: '#/components/schemas/TxStatus' + value: + type: integer + MerkleProof: + type: object + properties: + block_height: + type: integer + merkle: + type: array + items: + type: string + pos: + type: integer + Outspend: + type: object + properties: + spent: + type: boolean + MempoolBacklogStats: + type: object + properties: + count: + type: integer + vsize: + type: integer + total_fee: + type: integer + fee_histogram: + type: array + items: + type: array + items: + type: number + MempoolTx: + type: object + properties: + txid: + type: string + fee: + type: integer + vsize: + type: integer + value: + type: integer \ No newline at end of file From 5672e834bda6ae241e76affe1e3df7c6ce157518 Mon Sep 17 00:00:00 2001 From: Chris Rutherford Date: Tue, 20 Aug 2024 15:19:01 -0400 Subject: [PATCH 4/5] updated to match electrs version in yaml file name. --- doc/{electrs-rest-3.1.0.yml => electrs-rest-1.0.0.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/{electrs-rest-3.1.0.yml => electrs-rest-1.0.0.yml} (100%) diff --git a/doc/electrs-rest-3.1.0.yml b/doc/electrs-rest-1.0.0.yml similarity index 100% rename from doc/electrs-rest-3.1.0.yml rename to doc/electrs-rest-1.0.0.yml From b9e7211b38c358c5fc728d347b30a3eb185e7499 Mon Sep 17 00:00:00 2001 From: Chris Rutherford Date: Mon, 21 Oct 2024 11:18:58 -0400 Subject: [PATCH 5/5] Delete doc/electrs-rest-1.0.0.yml --- doc/electrs-rest-1.0.0.yml | 603 ------------------------------------- 1 file changed, 603 deletions(-) delete mode 100644 doc/electrs-rest-1.0.0.yml diff --git a/doc/electrs-rest-1.0.0.yml b/doc/electrs-rest-1.0.0.yml deleted file mode 100644 index 9350478e2..000000000 --- a/doc/electrs-rest-1.0.0.yml +++ /dev/null @@ -1,603 +0,0 @@ -openapi: "3.1.0" -info: - title: Electrs Rest API - version: 1.0.0 - description: | - A Rust Implementation of the Electrum Server. - ## Api Docs are Currently under construction ⚒️⚒️⚒️ -servers: - - description: "Blockstream Public" - url: "https://blockstream.info/api/" -paths: - /blocks/tip/hash: - get: - summary: Get the hash of the tip block - responses: - '200': - description: The hash of the tip block - content: - text/plain: - schema: - type: string - /blocks/tip/height: - get: - summary: Get the height of the tip block - responses: - '200': - description: The height of the tip block - content: - text/plain: - schema: - type: string - /blocks/{start_height}: - get: - summary: Get blocks starting from a specific height - parameters: - - name: start_height - in: path - required: true - schema: - type: integer - responses: - '200': - description: List of blocks - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Block' - /block-height/{height}: - get: - summary: Get block header by height - parameters: - - name: height - in: path - required: true - schema: - type: integer - responses: - '200': - description: Block header - content: - application/json: - schema: - type: string - /block/{hash}: - get: - summary: Get block by hash - parameters: - - name: hash - in: path - required: true - schema: - type: string - responses: - '200': - description: Block data - content: - application/json: - schema: - $ref: '#/components/schemas/Block' - /block/{hash}/status: - get: - summary: Get block status by hash - parameters: - - name: hash - in: path - required: true - schema: - type: string - responses: - '200': - description: Block status - content: - application/json: - schema: - type: object - /block/{hash}/txids: - get: - summary: Get transaction IDs in a block by hash - parameters: - - name: hash - in: path - required: true - schema: - type: string - responses: - '200': - description: Transaction IDs - content: - application/json: - schema: - type: array - items: - type: string - /block/{hash}/header: - get: - summary: Get block header by hash - parameters: - - name: hash - in: path - required: true - schema: - type: string - responses: - '200': - description: Block header - content: - text/plain: - schema: - type: string - /block/{hash}/raw: - get: - summary: Get raw block data by hash - parameters: - - name: hash - in: path - required: true - schema: - type: string - responses: - '200': - description: Raw block data - content: - application/octet-stream: - schema: - type: string - /block/{hash}/txid/{index}: - get: - summary: Get transaction ID by index in a block - parameters: - - name: hash - in: path - required: true - schema: - type: string - - name: index - in: path - required: true - schema: - type: integer - responses: - '200': - description: Transaction ID - content: - text/plain: - schema: - type: string - /block/{hash}/txs: - get: - summary: Get transactions in a block starting from an index - parameters: - - name: hash - in: path - required: true - schema: - type: string - - name: start_index - in: query - required: false - schema: - type: integer - responses: - '200': - description: Transactions for a given block - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Transaction' - /address/{script_str}: - get: - summary: Get address stats - parameters: - - name: script_str - in: path - required: true - schema: - type: string - responses: - '200': - description: Address Chain and Mempool stats - content: - application/json: - schema: - $ref: '#/components/schemas/Address' - /address/{script_str}/txs: - get: - summary: Get transactions for an address - parameters: - - name: script_str - in: path - required: true - schema: - type: string - responses: - '200': - description: Transactions - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Transaction' - /address/{script_str}/utxo: - get: - summary: Get UTXOs for an address - parameters: - - name: script_str - in: path - required: true - schema: - type: string - responses: - '200': - description: UTXOs - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Utxo' - /tx/{hash}: - get: - summary: Get transaction by hash - parameters: - - name: hash - in: path - required: true - schema: - type: string - responses: - '200': - description: Transaction data - content: - application/json: - schema: - $ref: '#/components/schemas/Transaction' - /tx/{hash}/status: - get: - summary: Get transaction status by hash - parameters: - - name: hash - in: path - required: true - schema: - type: string - responses: - '200': - description: Transaction status - content: - application/json: - schema: - $ref: '#/components/schemas/TxStatus' - /tx/{hash}/merkle-proof: - get: - summary: Get transaction merkle proof by hash - parameters: - - name: hash - in: path - required: true - schema: - $ref: '#/components/schemas/MerkleProof' - responses: - '200': - description: Merkle proof - content: - application/json: - schema: - type: object - /tx/{hash}/outspend/{index}: - get: - summary: Get outspend information for a transaction output - parameters: - - name: hash - in: path - required: true - schema: - type: string - - name: index - in: path - required: true - schema: - type: integer - responses: - '200': - description: Outspend information - content: - application/json: - schema: - $ref: '#/components/schemas/Outspend' - /tx/{hash}/outspends: - get: - summary: Get outspend information for all outputs of a transaction - parameters: - - name: hash - in: path - required: true - schema: - type: string - responses: - '200': - description: Outspend information - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Outspend' - /broadcast: - get: - summary: Broadcast a transaction - parameters: - - name: tx - in: query - required: true - schema: - type: string - responses: - '200': - description: Transaction ID - content: - text/plain: - schema: - type: string - /tx: - post: - summary: Broadcast a transaction - requestBody: - content: - text/plain: - schema: - type: string - responses: - '200': - description: Transaction ID - content: - text/plain: - schema: - type: string - /mempool: - get: - summary: Get mempool backlog stats - responses: - '200': - description: Mempool backlog stats - content: - application/json: - schema: - $ref: '#/components/schemas/MempoolBacklogStats' - /mempool/txids: - get: - summary: Get mempool transaction IDs - responses: - '200': - description: Mempool transaction IDs - content: - application/json: - schema: - type: array - items: - type: string - /mempool/recent: - get: - summary: Get recent mempool transactions - responses: - '200': - description: Recent mempool transactions - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/MempoolTx' - /fee-estimates: - get: - summary: Get fee estimates - responses: - '200': - description: Fee estimates - content: - application/json: - schema: - type: object - additionalProperties: - type: string -components: - schemas: - Block: - type: object - properties: - name: - type: string - height: - type: integer - version: - type: integer - timestamp: - type: integer - tx_count: - type: integer - size: - type: integer - weight: - type: integer - merkle_root: - type: string - previousblockhash: - type: string - mediantime: - type: integer - nonce: - type: integer - bits: - type: integer - difficulty: - type: number - BlockStatus: - type: object - properties: - in_best_chain: - type: boolean - height: - type: integer - next_best: - type: string - Transaction: - type: object - properties: - txid: - type: string - version: - type: number - locktime: - type: number - vin: - type: array - items: - $ref: '#/components/schemas/TxVin' - vout: - type: array - items: - $ref: '#/components/schemas/TxVout' - weight: - type: integer - size: - type: integer - status: - $ref: '#/components/schemas/TxStatus' - TxStatus: - type: object - properties: - confirmed: - type: boolean - block_height: - type: integer - block_hash: - type: integer - block_time: - type: integer - TxVin: - type: object - properties: - txid: - type: string - vout: - type: integer - prevout: - type: string - scriptsig: - type: string - scriptsig_asm: - type: string - witness: - type: array - items: - type: string - is_coinbase: - type: boolean - sequence: - type: integer - TxVout: - type: object - properties: - scriptpubkey: - type: string - scriptpubkey_asm: - type: string - scriptpubkey_type: - type: string - scriptpubkey_address: - type: string - value: - type: integer - Address: - type: object - properties: - address: - type: string - chain_stats: - $ref: '#/components/schemas/ChainStats' - mempool_stats: - $ref: '#/components/schemas/MempoolStats' - ChainStats: - type: object - properties: - funded_txo_count: - type: integer - funded_txo_sum: - type: integer - spent_txo_count: - type: integer - spent_txo_sum: - type: integer - tx_count: - type: integer - MempoolStats: - type: object - properties: - funded_txo_count: - type: integer - funded_txo_sum: - type: integer - spent_txo_count: - type: integer - spent_txo_sum: - type: integer - tx_count: - type: integer - Utxo: - type: object - properties: - txid: - type: string - vout: - type: integer - status: - $ref: '#/components/schemas/TxStatus' - value: - type: integer - MerkleProof: - type: object - properties: - block_height: - type: integer - merkle: - type: array - items: - type: string - pos: - type: integer - Outspend: - type: object - properties: - spent: - type: boolean - MempoolBacklogStats: - type: object - properties: - count: - type: integer - vsize: - type: integer - total_fee: - type: integer - fee_histogram: - type: array - items: - type: array - items: - type: number - MempoolTx: - type: object - properties: - txid: - type: string - fee: - type: integer - vsize: - type: integer - value: - type: integer \ No newline at end of file