Compare commits

..

12 Commits

Author SHA1 Message Date
dynco-nym 7cea5546fa WIP 2025-03-24 11:11:45 +01:00
dynco-nym e0ff823211 db::scraper -> db::node_description 2025-03-20 14:58:27 +01:00
dynco-nym c2221c7afe Create scrapers module 2025-03-20 14:53:46 +01:00
dynco-nym 3f6a10370d Rename scraper modules 2025-03-20 14:46:08 +01:00
dependabot[bot] 19ffe217f1 build(deps): bump http from 1.2.0 to 1.3.1 (#5626) 2025-03-17 18:47:40 +01:00
dependabot[bot] 079bfa52e7 build(deps): bump the patch-updates group with 8 updates (#5624)
Bumps the patch-updates group with 8 updates:

| Package | From | To |
| --- | --- | --- |
| [async-trait](https://github.com/dtolnay/async-trait) | `0.1.87` | `0.1.88` |
| [clap](https://github.com/clap-rs/clap) | `4.5.31` | `4.5.32` |
| [env_logger](https://github.com/rust-cli/env_logger) | `0.11.6` | `0.11.7` |
| [http-body-util](https://github.com/hyperium/http-body) | `0.1.2` | `0.1.3` |
| [quote](https://github.com/dtolnay/quote) | `1.0.39` | `1.0.40` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.44.0` | `1.44.1` |
| [tokio-util](https://github.com/tokio-rs/tokio) | `0.7.13` | `0.7.14` |
| [indexed_db_futures](https://github.com/Alorel/rust-indexed-db) | `0.6.0` | `0.6.1` |


Updates `async-trait` from 0.1.87 to 0.1.88
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.87...0.1.88)

Updates `clap` from 4.5.31 to 4.5.32
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.31...clap_complete-v4.5.32)

Updates `env_logger` from 0.11.6 to 0.11.7
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.11.6...v0.11.7)

Updates `http-body-util` from 0.1.2 to 0.1.3
- [Release notes](https://github.com/hyperium/http-body/releases)
- [Commits](https://github.com/hyperium/http-body/compare/http-body-util-v0.1.2...http-body-util-v0.1.3)

Updates `quote` from 1.0.39 to 1.0.40
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.39...1.0.40)

Updates `tokio` from 1.44.0 to 1.44.1
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.44.0...tokio-1.44.1)

Updates `tokio-util` from 0.7.13 to 0.7.14
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.13...tokio-util-0.7.14)

Updates `indexed_db_futures` from 0.6.0 to 0.6.1
- [Release notes](https://github.com/Alorel/rust-indexed-db/releases)
- [Commits](https://github.com/Alorel/rust-indexed-db/compare/v0.6.0...v0.6.1)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: env_logger
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: http-body-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: quote
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: indexed_db_futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 16:30:29 +01:00
dependabot[bot] be9a2c26e7 build(deps): bump once_cell from 1.20.3 to 1.21.1 (#5629)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.20.3 to 1.21.1.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.3...v1.21.1)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 16:29:02 +01:00
mfahampshire d6f3eb6411 Max/new explorer url (#5522)
* new api link for explorer v2

* remove footer add explorer to navbar

* include image

* @ fix menu icons

* + explorer link in footer

---------

Co-authored-by: RadekSabacky <radek@nymtech.net>
2025-03-17 14:15:10 +00:00
dependabot[bot] 144f3bed9c build(deps): bump celes from 2.5.0 to 2.6.0 (#5627)
Bumps [celes](https://github.com/mikelodder7/celes) from 2.5.0 to 2.6.0.
- [Commits](https://github.com/mikelodder7/celes/commits)

---
updated-dependencies:
- dependency-name: celes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 13:46:33 +01:00
dependabot[bot] c1174e64d4 build(deps): bump humantime from 2.1.0 to 2.2.0 (#5625) 2025-03-17 12:59:56 +01:00
dependabot[bot] 312ecbe4dc build(deps): bump tempfile from 3.18.0 to 3.19.0 (#5631) 2025-03-17 12:53:24 +01:00
dependabot[bot] d2afa587e4 build(deps): bump uuid from 1.15.1 to 1.16.0 (#5628) 2025-03-17 12:52:17 +01:00
32 changed files with 374 additions and 130 deletions
Generated
+115 -67
View File
@@ -344,9 +344,9 @@ dependencies = [
[[package]]
name = "async-trait"
version = "0.1.87"
version = "0.1.88"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97"
checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
dependencies = [
"proc-macro2",
"quote",
@@ -421,7 +421,7 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
name = "autodoc"
version = "0.1.0"
dependencies = [
"env_logger 0.11.6",
"env_logger 0.11.7",
"log",
]
@@ -464,7 +464,7 @@ dependencies = [
"axum-macros",
"bytes",
"futures-util",
"http 1.2.0",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"hyper 1.6.0",
@@ -525,7 +525,7 @@ dependencies = [
"async-trait",
"bytes",
"futures-util",
"http 1.2.0",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"mime",
@@ -549,7 +549,7 @@ dependencies = [
"fastrand 2.3.0",
"futures-util",
"headers",
"http 1.2.0",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"mime",
@@ -585,7 +585,7 @@ dependencies = [
"bytes",
"bytesize",
"cookie",
"http 1.2.0",
"http 1.3.1",
"http-body-util",
"hyper 1.6.0",
"hyper-util",
@@ -986,10 +986,11 @@ dependencies = [
[[package]]
name = "celes"
version = "2.5.0"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54441489dce7026efc8f01d1aa996c23fa39dd615a953d0e934433a42f61dd30"
checksum = "bc3ba3c5408fae183329e0d1ac8f8eed3cb7b647590fd93e6d6288f6b09db0be"
dependencies = [
"phf",
"serde",
]
@@ -1094,9 +1095,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.5.31"
version = "4.5.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767"
checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83"
dependencies = [
"clap_builder",
"clap_derive",
@@ -1104,9 +1105,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.31"
version = "4.5.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863"
checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8"
dependencies = [
"anstream",
"anstyle",
@@ -1135,9 +1136,9 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "4.5.28"
version = "4.5.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed"
checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
dependencies = [
"heck 0.5.0",
"proc-macro2",
@@ -1223,7 +1224,7 @@ dependencies = [
"crossbeam-utils",
"futures",
"hdrhistogram",
"humantime 2.1.0",
"humantime 2.2.0",
"prost-types 0.11.9",
"serde",
"serde_json",
@@ -2028,18 +2029,18 @@ dependencies = [
[[package]]
name = "derive_more"
version = "1.0.0"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"
checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"
dependencies = [
"derive_more-impl",
]
[[package]]
name = "derive_more-impl"
version = "1.0.0"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
dependencies = [
"proc-macro2",
"quote",
@@ -2348,14 +2349,14 @@ dependencies = [
[[package]]
name = "env_logger"
version = "0.11.6"
version = "0.11.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0"
checksum = "c3716d7a920fb4fac5d84e9d4bce8ceb321e9414b4409da61b07b75c1e3d0697"
dependencies = [
"anstream",
"anstyle",
"env_filter",
"humantime 2.1.0",
"jiff",
"log",
]
@@ -2906,7 +2907,7 @@ dependencies = [
"futures-core",
"futures-sink",
"gloo-utils 0.2.0",
"http 1.2.0",
"http 1.3.1",
"js-sys",
"pin-project",
"serde",
@@ -3076,7 +3077,7 @@ dependencies = [
"base64 0.21.7",
"bytes",
"headers-core",
"http 1.2.0",
"http 1.3.1",
"httpdate",
"mime",
"sha1",
@@ -3088,7 +3089,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4"
dependencies = [
"http 1.2.0",
"http 1.3.1",
]
[[package]]
@@ -3286,9 +3287,9 @@ dependencies = [
[[package]]
name = "http"
version = "1.2.0"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
dependencies = [
"bytes",
"fnv",
@@ -3313,18 +3314,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
"http 1.2.0",
"http 1.3.1",
]
[[package]]
name = "http-body-util"
version = "0.1.2"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
dependencies = [
"bytes",
"futures-util",
"http 1.2.0",
"futures-core",
"http 1.3.1",
"http-body 1.0.1",
"pin-project-lite",
]
@@ -3374,9 +3375,9 @@ dependencies = [
[[package]]
name = "humantime"
version = "2.1.0"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f"
[[package]]
name = "humantime-serde"
@@ -3384,7 +3385,7 @@ version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c"
dependencies = [
"humantime 2.1.0",
"humantime 2.2.0",
"serde",
]
@@ -3421,7 +3422,7 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
"http 1.2.0",
"http 1.3.1",
"http-body 1.0.1",
"httparse",
"httpdate",
@@ -3453,7 +3454,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c"
dependencies = [
"futures-util",
"http 1.2.0",
"http 1.3.1",
"hyper 1.6.0",
"hyper-util",
"rustls 0.22.4",
@@ -3484,7 +3485,7 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
"http 1.2.0",
"http 1.3.1",
"http-body 1.0.1",
"hyper 1.6.0",
"pin-project-lite",
@@ -3711,9 +3712,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
[[package]]
name = "indexed_db_futures"
version = "0.6.0"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d56078e9bfed55e1d3c0cebad5be921d32f062be8f1e4bf3750b487bc6e7d13e"
checksum = "94eebf0199c01a1560770d964efb1fb09183a3afc0b1c1397fac1bfdbfa7d6cf"
dependencies = [
"accessory",
"cfg-if",
@@ -3724,7 +3725,7 @@ dependencies = [
"js-sys",
"sealed",
"smallvec",
"thiserror 1.0.69",
"thiserror 2.0.12",
"tokio",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -3981,6 +3982,30 @@ version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
[[package]]
name = "jiff"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d699bc6dfc879fb1bf9bdff0d4c56f0884fc6f0d0eb0fba397a6d00cd9a6b85e"
dependencies = [
"jiff-static",
"log",
"portable-atomic",
"portable-atomic-util",
"serde",
]
[[package]]
name = "jiff-static"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d16e75759ee0aa64c57a56acbf43916987b20c77373cb7e808979e02b93c9f9"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.98",
]
[[package]]
name = "jobserver"
version = "0.1.32"
@@ -4514,7 +4539,7 @@ dependencies = [
"bytes",
"encoding_rs",
"futures-util",
"http 1.2.0",
"http 1.3.1",
"httparse",
"memchr",
"mime",
@@ -5412,7 +5437,7 @@ dependencies = [
"colored",
"dotenvy",
"futures",
"humantime 2.1.0",
"humantime 2.2.0",
"nym-bin-common",
"nym-compact-ecash",
"nym-config",
@@ -5884,7 +5909,7 @@ dependencies = [
"bytes",
"encoding_rs",
"hickory-resolver",
"http 1.2.0",
"http 1.3.1",
"mime",
"nym-bin-common",
"once_cell",
@@ -6303,7 +6328,7 @@ version = "0.1.0"
dependencies = [
"async-trait",
"celes",
"humantime 2.1.0",
"humantime 2.2.0",
"humantime-serde",
"nym-bin-common",
"nym-crypto",
@@ -6386,6 +6411,7 @@ dependencies = [
"utoipa",
"utoipa-swagger-ui",
"utoipauto",
"validator-status-check",
]
[[package]]
@@ -6520,7 +6546,7 @@ dependencies = [
"dotenvy",
"futures",
"hex",
"http 1.2.0",
"http 1.3.1",
"httpcodec",
"log",
"nym-bandwidth-controller",
@@ -7051,7 +7077,7 @@ dependencies = [
"clap",
"cosmwasm-std",
"futures",
"humantime 2.1.0",
"humantime 2.2.0",
"humantime-serde",
"nym-bin-common",
"nym-coconut-bandwidth-contract-common",
@@ -7090,7 +7116,7 @@ version = "0.1.0"
dependencies = [
"bytes",
"futures",
"humantime 2.1.0",
"humantime 2.2.0",
"nym-crypto",
"nym-task",
"nym-validator-client",
@@ -7215,7 +7241,7 @@ dependencies = [
"flate2",
"futures",
"hex",
"humantime 2.1.0",
"humantime 2.2.0",
"humantime-serde",
"nix 0.27.1",
"nym-async-file-watcher",
@@ -7274,7 +7300,7 @@ dependencies = [
"cosmrs 0.21.1",
"eyre",
"futures",
"humantime 2.1.0",
"humantime 2.2.0",
"serde",
"sha2 0.10.8",
"sqlx",
@@ -7312,9 +7338,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.20.3"
version = "1.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc"
[[package]]
name = "oorandom"
@@ -7655,6 +7681,7 @@ version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
dependencies = [
"phf_macros",
"phf_shared",
]
@@ -7678,6 +7705,19 @@ dependencies = [
"rand 0.8.5",
]
[[package]]
name = "phf_macros"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
dependencies = [
"phf_generator",
"phf_shared",
"proc-macro2",
"quote",
"syn 2.0.98",
]
[[package]]
name = "phf_shared"
version = "0.11.3"
@@ -7825,6 +7865,15 @@ version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6"
[[package]]
name = "portable-atomic-util"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
dependencies = [
"portable-atomic",
]
[[package]]
name = "postgres-protocol"
version = "0.6.8"
@@ -8086,9 +8135,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
[[package]]
name = "quote"
version = "1.0.39"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
@@ -8350,7 +8399,7 @@ dependencies = [
"bytes",
"futures-core",
"futures-util",
"http 1.2.0",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"hyper 1.6.0",
@@ -9973,11 +10022,10 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.18.0"
version = "3.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567"
checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600"
dependencies = [
"cfg-if",
"fastrand 2.3.0",
"getrandom 0.3.1",
"once_cell",
@@ -10338,9 +10386,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
version = "1.44.0"
version = "1.44.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9975ea0f48b5aa3972bf2d888c238182458437cc2a19374b81b25cdf1023fb3a"
checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a"
dependencies = [
"backtrace",
"bytes",
@@ -10489,9 +10537,9 @@ dependencies = [
[[package]]
name = "tokio-util"
version = "0.7.13"
version = "0.7.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078"
checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034"
dependencies = [
"bytes",
"futures-core",
@@ -10621,7 +10669,7 @@ dependencies = [
"bytes",
"futures-core",
"futures-util",
"http 1.2.0",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"http-range-header",
@@ -10887,7 +10935,7 @@ dependencies = [
"byteorder",
"bytes",
"data-encoding",
"http 1.2.0",
"http 1.3.1",
"httparse",
"log",
"rand 0.8.5",
@@ -11257,9 +11305,9 @@ dependencies = [
[[package]]
name = "uuid"
version = "1.15.1"
version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587"
checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
dependencies = [
"getrandom 0.3.1",
"serde",
+11 -10
View File
@@ -137,7 +137,8 @@ members = [
"tools/internal/testnet-manager",
"tools/internal/testnet-manager",
"tools/internal/testnet-manager/dkg-bypass-contract",
"tools/internal/testnet-manager/dkg-bypass-contract", "tools/internal/validator-status-check",
"tools/internal/testnet-manager/dkg-bypass-contract",
"tools/internal/validator-status-check",
"tools/nym-cli",
"tools/nym-id-cli",
"tools/nym-nr-query",
@@ -194,7 +195,7 @@ ammonia = "4"
anyhow = "1.0.97"
arc-swap = "1.7.1"
argon2 = "0.5.0"
async-trait = "0.1.87"
async-trait = "0.1.88"
axum = "0.7.5"
axum-client-ip = "0.6.1"
axum-extra = "0.9.4"
@@ -211,13 +212,13 @@ bs58 = "0.5.1"
bytecodec = "0.4.15"
bytes = "1.10.1"
cargo_metadata = "0.18.1"
celes = "2.5.0"
celes = "2.6.0"
cfg-if = "1.0.0"
chacha20 = "0.9.0"
chacha20poly1305 = "0.10.1"
chrono = "0.4.40"
cipher = "0.4.3"
clap = "4.5.31"
clap = "4.5.32"
clap_complete = "4.5"
clap_complete_fig = "4.5"
colored = "2.2"
@@ -242,7 +243,7 @@ dotenvy = "0.15.6"
ecdsa = "0.16"
ed25519-dalek = "2.1"
encoding_rs = "0.8.35"
env_logger = "0.11.6"
env_logger = "0.11.7"
envy = "0.4"
etherparse = "0.13.0"
eyre = "0.6.9"
@@ -264,7 +265,7 @@ http = "1"
http-body-util = "0.1"
httpcodec = "0.2.3"
human-repr = "1.1.0"
humantime = "2.1.0"
humantime = "2.2.0"
humantime-serde = "1.1.1"
hyper = "1.6.0"
hyper-util = "0.1"
@@ -285,7 +286,7 @@ moka = { version = "0.12", features = ["future"] }
nix = "0.27.1"
notify = "5.1.0"
okapi = "0.7.0"
once_cell = "1.20.3"
once_cell = "1.21.1"
opentelemetry = "0.19.0"
opentelemetry-jaeger = "0.18.0"
parking_lot = "0.12.3"
@@ -331,7 +332,7 @@ syn = "1"
sysinfo = "0.33.0"
tap = "1.0.1"
tar = "0.4.44"
tempfile = "3.18"
tempfile = "3.19"
thiserror = "2.0"
time = "0.3.39"
tokio = "1.44"
@@ -340,7 +341,7 @@ tokio-stream = "0.1.17"
tokio-test = "0.4.4"
tokio-tun = "0.11.5"
tokio-tungstenite = { version = "0.20.1" }
tokio-util = "0.7.13"
tokio-util = "0.7.14"
toml = "0.8.20"
tower = "0.5.2"
tower-http = "0.5.2"
@@ -403,7 +404,7 @@ prost = { version = "0.13", default-features = false }
gloo-utils = "0.2.0"
gloo-net = "0.6.0"
indexed_db_futures = "0.6.0"
indexed_db_futures = "0.6.1"
js-sys = "0.3.76"
serde-wasm-bindgen = "0.6.5"
tsify = "0.4.5"
@@ -0,0 +1,23 @@
import Image from "next/image";
import Link from "next/link";
import explorerLogo from "../public/images/smiley.png";
export const Explorer = () => {
return (
<Link
href={"https://nym.com/explorer"}
target="_blank"
rel="noopener noreferrer"
>
<Image
src={explorerLogo}
style = {{
marginRight: "0.6rem"
}}
alt={"Network Explorer"}
width={24}
height={24}
/>
</Link>
);
};
+1 -1
View File
@@ -5,7 +5,7 @@ const links = [
["Matrix", "https://matrix.to/#/#dev:nymtech.chat"],
["GitHub", "https://nymtech.net/go/github/nym"],
["Nym Wallet", "https://nymtech.net/download/wallet"],
["Nym Explorer", "https://explorer.nymtech.net/"],
["Nym Explorer", "https://nym.com/explorer/"],
["Nym Blog", "https://nymtech.medium.com/"],
["Twitter", "https://nymtech.net/go/x"],
["Telegram", "https://nymtech.net/go/telegram"],
@@ -6,10 +6,6 @@ import { useTheme } from "@mui/material/styles";
import Image from "next/image";
import Link from "next/link";
// import networkDocs from "../public/images/landing/network-docs.png";
// import developerDocs from "../public/images/landing/developer-docs.png";
// import sdkDocs from "../public/images/landing/sdk-docs.png";
// import operatorGuide from "../public/images/landing/operator-guide.png";
import networkDocs from "../public/images/landing/Vector1.png";
import developerDocs from "../public/images/landing/Vector2.png";
import sdkDocs from "../public/images/landing/Vector3.png";
@@ -41,13 +37,6 @@ export const LandingPage = () => {
href: "/developers",
icon: sdkDocs,
},
// {
// text: "SDKs",
// description: "Rust and Typescript SDK docs",
// href: "/developers/rust",
// icon: sdkDocs,
// },
{
text: "APIs",
description: "Interactive API specs for Nym infrastructure",
@@ -1,7 +1,7 @@
import { Box } from "@mui/material";
import Image from "next/image";
import Link from "next/link";
import matrixLogo from "../public/images/matrix-logo.png";
export const Matrix = () => {
return (
<Link
@@ -9,7 +9,14 @@ export const Matrix = () => {
target="_blank"
rel="noopener noreferrer"
>
<Image src={matrixLogo} alt={"Matrix Logo"} width={20} height={24} />
<Image src={matrixLogo}
style = {{
marginRight: "0.6rem"
}}
alt={"Matrix Logo"}
width={20}
height={24}
/>
</Link>
);
};
@@ -1,7 +1,7 @@
# Explorer API
The Explorer API is the backend for the [Mixnet Explorer](https://explorer.nymtech.net/).
The Explorer API is the backend for the [Mixnet Explorer](https://nym.com/explorer).
**This will soon be deprecated in favour of the [Node Status API](ns-api.mdx).**
@@ -30,7 +30,7 @@ The `--id` in the example above is a local identifier so that you can name your
The `--use-reply-surbs` field denotes whether you wish to send [SURBs](../../network/concepts/anonymous-replies) along with your request. It defaults to `false`, we are explicitly setting it as `true`. It defaults to `false` for compatibility with versions of the pre-smoosh `nym-network-requester` binary which will soon be deprecated.
The `--provider` field needs to be filled with the Nym address of an Exit Gateway that can make network requests on your behalf. You can select one from the [mixnet explorer](https://explorer.nymtech.net/network-components/gateways) by copying its `Client ID` and using this as the value of the `--provider` flag. Alternatively, you could use [Harbourmaster](https://harbourmaster.nymtech.net/).
The `--provider` field needs to be filled with the Nym address of an Exit Gateway that can make network requests on your behalf. You can select one from the [mixnet explorer](https://nym.com/explorer) by copying its `Client ID` and using this as the value of the `--provider` flag. Alternatively, you could use [Harbourmaster](https://harbourmaster.nymtech.net/).
## Choosing a Gateway
By default - as in the example above - your client will choose a random gateway to connect to.
@@ -42,6 +42,6 @@ However, there are several options for choosing a gateway, if you do not want on
* send few ping messages to all of them, and measure response times.
* create a weighted distribution to randomly choose one, favouring ones with lower latency.
You can select one from the [mixnet explorer](https://explorer.nymtech.net/network-components/gateways) by copying its `Client ID` and using this as the value of the `--provider` flag. Alternatively, you could use [Harbourmaster](https://harbourmaster.nymtech.net/).
You can select one from the [mixnet explorer](https://nym.com/explorer) by copying its `Client ID` and using this as the value of the `--provider` flag. Alternatively, you could use [Harbourmaster](https://harbourmaster.nymtech.net/).
> Note this doesn't mean that your client will pick the closest gateway to you, but it will be far more likely to connect to gateway with a 20ms ping rather than 200ms
@@ -31,7 +31,7 @@ Initialising a new client instance can be done with the following command:
The `--id` in the example above is a local identifier so that you can name your clients; it is **never** transmitted over the network.
There is an optional `--gateway` flag that you can use if you want to use a specific gateway. The supplied argument is the `Identity Key` of the gateway you wish to use, which can be found on the [mixnet explorer](https://explorer.nymtech.net/network-components/gateways). Alternatively, you could use [Harbourmaster](https://harbourmaster.nymtech.net/)
There is an optional `--gateway` flag that you can use if you want to use a specific gateway. The supplied argument is the `Identity Key` of the gateway you wish to use, which can be found on the [mixnet explorer](https://nym.com/explorer). Alternatively, you could use [Harbourmaster](https://harbourmaster.nymtech.net/)
Not passing this argument will randomly select a gateway for your client.
@@ -19,4 +19,4 @@ To illustrate this: `DpB3cHAchJiNBQi5FrZx2csXb1mrHkpYh9Wzf8Rjsuko.ANNWrvHqMYuert
- `DpB3cHAchJiNBQi5FrZx2csXb1mrHkpYh9Wzf8Rjsuko`: is the client's identity key;
- `ANNWrvHqMYuertHGHUrZdBntQhpzfbWekB39qez9U2Vx`: is the client's Diffie Hellman key;
- `2BuMSfMW3zpeAjKXyKLhmY4QW1DXurrtSPEJ6CjX3SEh`: is the gateway's identity, which is what you'll need to check the state of the gateway in the [Nym Explorer](https://explorer.nymtech.net/network-components/gateways).
- `2BuMSfMW3zpeAjKXyKLhmY4QW1DXurrtSPEJ6CjX3SEh`: is the gateway's identity, which is what you'll need to check the state of the gateway in the [Nym Explorer](https://nym.com/explorer).
@@ -10,7 +10,7 @@ Yes, there are..
**Built by Nym**
* [Nym Explorer](https://explorer.nymtech.net/)
* [Nym Explorer](https://nym.com/explorer)
* [Sandbox testnet](https://sandbox-explorer.nymtech.net/)
* [Nym Harbourmaster](https://harbourmaster.nymtech.net)
@@ -259,7 +259,7 @@ That can be done only on an IP+destination port basis, however. Common P2P ports
<p>
You also have the option of blocking this IP address and others on the Nym network if you so desire.
The Nym project provides a <a href="https://explorer.nymtech.net/network-components/gateways">
The Nym project provides a <a href="https://nym.com/explorer">
web service</a> to fetch a list of all IP addresses of Nym Gateway Exit nodes that allow exiting to a
specified IP:port combination. Please be considerate when using these options.</p>
@@ -3,7 +3,7 @@
Nym Node operators running Gateway functionality are already familiar with the monitoring tool [Harbourmaster.nymtech.net](https://harbourmaster.nymtech.net). Under the hood of Nym Harbourmaster runs iterations of `nym-gateway-probe` doing various checks and displaying the results on the interface. Operators don't have to rely on the probe ran by Nym and wait for the data to refresh. With `nym-gateway-probe` everyone can check any Gateway's networking status from their own computer at any time. In one command the client queries data from:
- [`nym-api`](https://validator.nymtech.net/api/v1/gateways)
- [`explorer-api`](https://explorer.nymtech.net/api/v1/gateways)
- [`explorer-api`](https://mainnet-node-status-api.nymtech.cc/swagger/#/Gateways)
- [`harbour-master`](https://harbourmaster.nymtech.net/)
@@ -88,4 +88,3 @@ For any `nym-node --mode exit-gateway` the aim is to have this outcome:
**If your Gateway is blacklisted, the probe will not work.**
If you don't provide a `--gateway` flag it will pick a random one to test.
@@ -360,7 +360,7 @@ $1 \ NYM = 1 \_ 000 \_ 000 \ uNYM$
The Reward Estimation API endpoint allows Mix Node operators to estimate the rewards they could earn for running a Nym Mix Node with a specific `MIX_ID`.
> The `<MIX_ID>` can be found in the "Mix ID" column of the [Network Explorer](https://explorer.nymtech.net/network-components/mixnodes/active).
> The `<MIX_ID>` can be found in the "Mix ID" column of the [Network Explorer](https://nym.com/explorer).
The endpoint is a particularly common for Mix Node operators as it can provide an estimate of potential earnings based on factors such as the amount of traffic routed through the Mix Node, the quality of the Mix Node's performance, and the overall demand for Mix Nodes in the network. This information can be useful for Mix Node operators in deciding whether or not to run a Mix Node and in optimizing its operations for maximum profitability.
@@ -73,7 +73,7 @@ The directory structure for each node will be roughly as follows:
```
<Callout>
If you `cat` the `public_sphinx.pem` key, the output will be different from the public key you will see on Nym [dashboard](https://explorer.nymtech.net/). The reason for this is that `.pem` files are encoded in **base64**, however on the web they are in **base58**. Don't be confused if your keys look different. They are the same keys, just with different encoding.
If you `cat` the `public_sphinx.pem` key, the output will be different from the public key you will see on Nym [dashboard](https://nym.com/explorer). The reason for this is that `.pem` files are encoded in **base64**, however on the web they are in **base58**. Don't be confused if your keys look different. They are the same keys, just with different encoding.
</Callout>
### Accidentally killing your node process on exiting session
@@ -101,7 +101,7 @@ You don't have to do any additional configuration for your node to implement thi
### How can I tell my node is up and running and mixing traffic?
First of all check the 'Mixnodes' section of either of the Nym Network Explorers:
* [Mainnet](https://explorer.nymtech.net/)
* [Mainnet](https://nym.com/explorer)
* [Sandbox testnet](https://sandbox-explorer.nymtech.net/)
You can also check [Nym Harbourmaster](https://harbourmaster.nymtech.net) which now also includes mixnode mode.
Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

+12 -5
View File
@@ -1,7 +1,8 @@
import React from "react";
import { DocsThemeConfig, useConfig } from "nextra-theme-docs";
import { Footer } from "./components/footer";
// import { Footer } from "./components/footer";
import { Matrix } from "./components/matrix-link";
import { Explorer } from "./components/explorer-link";
import { useRouter } from "next/router";
const config: DocsThemeConfig = {
@@ -66,9 +67,9 @@ const config: DocsThemeConfig = {
},
docsRepositoryBase:
"https://github.com/nymtech/nym/tree/develop/documentation/docs/",
footer: {
text: Footer,
},
// footer: {
// text: Footer,
// },
darkMode: true,
nextThemes: {
defaultTheme: "dark",
@@ -77,8 +78,14 @@ const config: DocsThemeConfig = {
defaultMenuCollapseLevel: 1,
autoCollapse: true,
},
navbar: {
extraContent: <Matrix />,
extraContent: (
<>
<Explorer />
<Matrix />
</>
),
},
toc: {
float: false,
@@ -36,6 +36,7 @@ nym-statistics-common = { path = "../../common/statistics" }
nym-validator-client = { path = "../../common/client-libs/validator-client" }
nym-task = { path = "../../common/task" }
nym-node-requests = { path = "../../nym-node/nym-node-requests", features = ["openapi"] }
validator-status-check = { path = "../../tools/internal/validator-status-check" }
rand = { workspace = true }
rand_chacha = { workspace = true }
regex = { workspace = true }
@@ -2,9 +2,9 @@ mod gateways;
mod gateways_stats;
mod misc;
mod mixnodes;
pub(crate) mod node_description;
mod nym_nodes;
mod packet_stats;
pub(crate) mod scraper;
mod summary;
pub(crate) mod testruns;
@@ -14,6 +14,7 @@ pub(crate) use gateways::{
pub(crate) use gateways_stats::{delete_old_records, get_sessions_stats, insert_session_records};
pub(crate) use misc::insert_summaries;
pub(crate) use mixnodes::{get_all_mixnodes, get_bonded_mix_ids, get_daily_stats, update_mixnodes};
pub(crate) use node_description::{get_nodes_for_scraping, insert_scraped_node_description};
pub(crate) use nym_nodes::{
get_active_nym_nodes, get_all_nym_nodes, get_described_node_bond_info, get_node_descriptions,
update_nym_nodes,
@@ -21,5 +22,4 @@ pub(crate) use nym_nodes::{
pub(crate) use packet_stats::{
get_raw_node_stats, insert_daily_node_stats, insert_node_packet_stats,
};
pub(crate) use scraper::{get_nodes_for_scraping, insert_scraped_node_description};
pub(crate) use summary::{get_summary, get_summary_history};
@@ -3,7 +3,7 @@ use crate::{
models::{ScrapeNodeKind, ScraperNodeInfo},
queries, DbPool,
},
mixnet_scraper::helpers::NodeDescriptionResponse,
scrapers::node_info::helpers::NodeDescriptionResponse,
};
use anyhow::Result;
use chrono::Utc;
@@ -6,9 +6,8 @@ mod cli;
mod db;
mod http;
mod logging;
mod mixnet_scraper;
mod monitor;
mod node_scraper;
mod scrapers;
mod testruns;
mod utils;
@@ -32,14 +31,19 @@ async fn main() -> anyhow::Result<()> {
let db_pool = storage.pool_owned();
// Start the node scraper
let scraper = mixnet_scraper::Scraper::new(storage.pool_owned());
let scraper = scrapers::node_info::Scraper::new(storage.pool_owned());
tokio::spawn(async move {
scraper.start().await;
});
// Start the monitor
let args_clone = args.clone();
let db_pool = storage.pool_owned();
tokio::spawn(async move {
scrapers::nym_api_versions::spawn(db_pool).await;
tracing::info!("Started nym_api scraper task");
});
let args_clone = args.clone();
let db_pool = storage.pool_owned();
tokio::spawn(async move {
monitor::spawn_in_background(
db_pool,
@@ -57,7 +61,8 @@ async fn main() -> anyhow::Result<()> {
let db_pool_scraper = storage.pool_owned();
tokio::spawn(async move {
node_scraper::spawn_in_background(db_pool_scraper, args_clone.nym_api_client_timeout).await;
scrapers::sessions::spawn_in_background(db_pool_scraper, args_clone.nym_api_client_timeout)
.await;
tracing::info!("Started metrics scraper task");
});
@@ -0,0 +1,3 @@
pub(crate) mod node_info;
pub(crate) mod sessions;
pub(crate) mod nym_api_versions;
@@ -0,0 +1,151 @@
use crate::db::DbPool;
use nym_network_defaults::NymNetworkDetails;
use nym_validator_client::nyxd::NyxdClient;
use reqwest::Url;
use serde::Deserialize;
use sqlx::SqlitePool;
use std::time::Duration;
use tracing::{debug, error, instrument};
use validator_status_check::{helpers::get_known_dealers, models::SignerStatus};
// TODO dz configurable?
const SCRAPE_INTERVAL: Duration = Duration::from_secs(60 * 60);
const COSMOS_REST_API: &str = "https://api.nymtech.net/cosmwasm/wasm/v1/contract/n19604yflqggs9mk2z26mqygq43q2kr3n932egxx630svywd5mpxjsztfpvx/smart/eyJnZXRfY3VycmVudF9kZWFsZXJzIjogeyJsaW1pdCI6IDMwfX0=";
const BUILD_INFORMATION_API: &str = "/v1/api-status/build-information";
pub struct Scraper {
pool: SqlitePool,
http_client: reqwest::Client,
}
#[instrument(level = "debug", name = "nym_api_versions", skip_all)]
pub(crate) async fn spawn(pool: DbPool) {
tracing::info!("Starting Nym API scraper");
let pool_cloned = pool.clone();
let scraper = Scraper::new(pool_cloned);
tokio::spawn(async move {
loop {
if let Err(e) = scraper.run().await {
error!(name: "nym_api_scraper", "Failed: {}", e);
}
debug!(name: "nym_api_scraper", "Sleeping for {}s", SCRAPE_INTERVAL.as_secs());
tokio::time::sleep(SCRAPE_INTERVAL).await;
}
});
}
impl Scraper {
pub fn new(pool: SqlitePool) -> Self {
Self {
pool,
http_client: reqwest::Client::new(),
}
}
async fn run(&self) -> anyhow::Result<()> {
let dealers = get_known_dealers().await?;
let mut signer_statuses = Vec::new();
for dealer in dealers {
let mut status = SignerStatus::new(dealer.announce_address);
status.try_update_api_version().await;
status.try_update_rpc_status().await;
signer_statuses.push(status);
}
Ok(())
}
async fn get_build_info_from_all_signers(
&self,
) -> anyhow::Result<Vec<cosmos_response::Status>> {
let signer_address_list = {
let response: cosmos_response::Response = self
.http_client
.get(COSMOS_REST_API)
.send()
.await
.and_then(|res| res.error_for_status())?
.json()
.await?;
response
.data
.dealers
.into_iter()
.map(|dealer| dealer.announce_address)
.collect::<Vec<_>>()
};
let mut build_info = Vec::new();
for signer_address in signer_address_list {
let target_url = format!("{}/{}", signer_address, BUILD_INFORMATION_API);
let signer_status = match self
.http_client
.get(target_url)
.send()
.await
.and_then(|res| res.error_for_status())
{
Ok(response) => match response.json::<BuildInformation>().await {
Ok(build_info) => cosmos_response::Status::Ok(build_info),
Err(err) => cosmos_response::Status::Unreachable(err.to_string()),
},
Err(err) => cosmos_response::Status::Unreachable(err.to_string()),
};
build_info.push(signer_status);
}
Ok(build_info)
}
}
// async fn get_build_info(client: &reqwest::Client, dealer_address: &str) -> anyhow::Result<String>
#[allow(dead_code)]
mod cosmos_response {
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct Response {
pub data: Data,
}
#[derive(Debug, Deserialize)]
pub struct Data {
pub dealers: Vec<Dealer>,
pub per_page: u64,
pub start_next_after: String,
}
#[derive(Debug, Deserialize)]
pub struct Dealer {
pub address: String,
pub bte_public_key_with_proof: String,
pub ed25519_identity: String,
pub announce_address: String,
pub assigned_index: u64,
}
#[derive(Debug, Deserialize)]
pub enum Status {
Ok(super::BuildInformation),
Unreachable(String),
}
}
#[allow(dead_code)]
#[derive(Debug, Deserialize)]
struct BuildInformation {
binary_name: String,
build_timestamp: String,
build_version: String,
commit_sha: String,
commit_timestamp: String,
commit_branch: String,
rustc_version: String,
rustc_channel: String,
cargo_profile: String,
cargo_triple: String,
}
@@ -20,7 +20,7 @@ const FAILURE_RETRY_DELAY: Duration = Duration::from_secs(60);
const REFRESH_INTERVAL: Duration = Duration::from_secs(60 * 60 * 6);
const STALE_DURATION: Duration = Duration::from_secs(86400 * 365); //one year
#[instrument(level = "info", name = "metrics_scraper", skip_all)]
#[instrument(level = "debug", name = "metrics_scraper", skip_all)]
pub(crate) async fn spawn_in_background(db_pool: DbPool, nym_api_client_timeout: Duration) {
let network_defaults = nym_network_defaults::NymNetworkDetails::new_from_env();
@@ -28,3 +28,11 @@ nym-network-defaults = { path = "../../../common/network-defaults" }
[lints]
workspace = true
[[bin]]
name = "validator_status_check"
path = "src/main.rs"
[lib]
name = "validator_status_check"
path = "src/lib.rs"
@@ -10,7 +10,7 @@ use nym_validator_client::nyxd::Config;
use nym_validator_client::QueryHttpRpcNyxdClient;
use tracing::info;
async fn get_query_client() -> anyhow::Result<QueryHttpRpcNyxdClient> {
pub async fn get_query_client() -> anyhow::Result<QueryHttpRpcNyxdClient> {
let network = NymNetworkDetails::new_from_env();
let Some(endpoint_info) = network.endpoints.first() else {
@@ -24,12 +24,12 @@ async fn get_query_client() -> anyhow::Result<QueryHttpRpcNyxdClient> {
)?)
}
pub(crate) async fn get_known_dealers() -> anyhow::Result<Vec<DealerDetails>> {
pub async fn get_known_dealers() -> anyhow::Result<Vec<DealerDetails>> {
let client = get_query_client().await?;
Ok(client.get_all_current_dealers().await?)
}
pub(crate) async fn get_signer_status(raw_api_endpoint: &str) -> SignerStatus {
pub async fn get_signer_status(raw_api_endpoint: &str) -> SignerStatus {
info!("attempting to get signer status of {raw_api_endpoint}...");
let mut status = SignerStatus::new(raw_api_endpoint.to_string());
@@ -0,0 +1,2 @@
pub mod helpers;
pub mod models;
@@ -8,8 +8,8 @@ use nym_network_defaults::setup_env;
use tracing::trace;
mod commands;
mod helpers;
mod models;
use validator_status_check::{helpers, models};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
@@ -10,7 +10,7 @@ use time::{Duration, OffsetDateTime};
use tracing::error;
#[derive(Serialize, Deserialize)]
pub(crate) struct SignerStatus {
pub struct SignerStatus {
api_endpoint: String,
api_version: ApiVersion,
rpc_status: RpcStatus,
@@ -30,7 +30,7 @@ impl Display for SignerStatus {
}
impl SignerStatus {
pub(crate) fn new(api_endpoint: String) -> Self {
pub fn new(api_endpoint: String) -> Self {
SignerStatus {
api_endpoint,
api_version: Default::default(),
@@ -40,11 +40,11 @@ impl SignerStatus {
}
}
pub(crate) fn api_up(&self) -> bool {
pub fn api_up(&self) -> bool {
matches!(self.api_version, ApiVersion::Available { .. })
}
pub(crate) fn rpc_up(&self) -> bool {
pub fn rpc_up(&self) -> bool {
matches!(self.rpc_status, RpcStatus::Up)
}
@@ -60,7 +60,7 @@ impl SignerStatus {
Some(NymApiClient::new(api_endpoint))
}
pub(crate) async fn try_update_api_version(&mut self) {
pub async fn try_update_api_version(&mut self) {
let Some(client) = self.build_api_client() else {
return;
};
@@ -79,7 +79,7 @@ impl SignerStatus {
}
}
pub(crate) async fn try_update_rpc_status(&mut self) {
pub async fn try_update_rpc_status(&mut self) {
let Some(client) = self.build_api_client() else {
return;
};
@@ -109,7 +109,7 @@ impl SignerStatus {
}
}
pub(crate) fn to_table_row(&self) -> Vec<String> {
pub fn to_table_row(&self) -> Vec<String> {
vec![
self.api_endpoint.to_string(),
self.api_version.as_cell(),