├── .github └── workflows │ └── build.yml ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── README.md ├── rust-toolchain.toml └── src ├── args.rs ├── balance.rs ├── benchmark.rs ├── busses.rs ├── claim.rs ├── close.rs ├── config.rs ├── cu_limits.rs ├── initialize.rs ├── main.rs ├── mine.rs ├── open.rs ├── rewards.rs ├── send_and_confirm.rs ├── stake.rs ├── upgrade.rs └── utils.rs /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | push: 5 | branches: ["master"] 6 | workflow_dispatch: 7 | 8 | env: 9 | CARGO_TERM_COLOR: always 10 | BINARY_NAME: ore 11 | 12 | concurrency: 13 | group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} 14 | cancel-in-progress: false 15 | 16 | jobs: 17 | version: 18 | runs-on: ubuntu-latest 19 | outputs: 20 | version: ${{ steps.version.outputs.version }} 21 | steps: 22 | - name: Checkout repository 23 | uses: actions/checkout@v4 24 | - id: version 25 | run: echo version="$(cargo metadata --no-deps --quiet --color never | jq -r '.packages[].version')-$(git describe --always --dirty=_modified)" >> "$GITHUB_OUTPUT" 26 | build: 27 | name: Build 28 | needs: version 29 | runs-on: ${{ matrix.os }} 30 | strategy: 31 | matrix: 32 | include: 33 | - os: macos-latest 34 | target: x86_64-apple-darwin 35 | - os: macos-latest 36 | target: aarch64-apple-darwin 37 | - os: ubuntu-latest 38 | target: x86_64-unknown-linux-gnu 39 | - os: ubuntu-latest 40 | target: x86_64-unknown-linux-musl 41 | - os: ubuntu-latest 42 | target: aarch64-unknown-linux-gnu 43 | # it requires unofficial prebuilt toolchain, disable it for security, consider it later 44 | # - os: ubuntu-latest 45 | # target: aarch64-unknown-linux-musl 46 | - os: windows-latest 47 | target: x86_64-pc-windows-msvc 48 | # https://github.com/briansmith/ring/issues/1167 49 | # it's an issue of the upstream's upstream 50 | # - os: windows-latest 51 | # target: aarch64-pc-windows-msvc 52 | - os: ubuntu-latest 53 | target: x86_64-pc-windows-gnu 54 | steps: 55 | - name: Checkout repository 56 | uses: actions/checkout@v4 57 | - name: Setup Rust 58 | run: rustup target add ${{ matrix.target }} 59 | # https://github.com/mozilla/grcov/blob/cc77ce34164fc3ea80ac579d1c15f36c9734133c/.github/workflows/release.yml#L34 60 | - name: Install additional toolchains 61 | if: ${{ matrix.os == 'ubuntu-latest' }} 62 | run: | 63 | set -x 64 | case "${{ matrix.target }}" in 65 | x86_64-unknown-linux-gnu) 66 | ;; 67 | x86_64-unknown-linux-musl) 68 | sudo apt-get update 69 | sudo apt-get install -y musl-tools 70 | ;; 71 | aarch64-unknown-linux-gnu) 72 | sudo apt-get update 73 | sudo apt-get install -y gcc-aarch64-linux-gnu 74 | 75 | mkdir -p .cargo 76 | echo '[target.aarch64-unknown-linux-gnu]' >> .cargo/config 77 | echo 'linker = "aarch64-linux-gnu-gcc"' >> .cargo/config 78 | ;; 79 | x86_64-pc-windows-gnu) 80 | sudo apt-get update 81 | sudo apt-get install -y gcc-mingw-w64-x86-64-win32 82 | ;; 83 | esac 84 | - name: Configure cache 85 | uses: actions/cache@v4 86 | with: 87 | path: | 88 | ~/.cargo/bin/ 89 | ~/.cargo/registry/index/ 90 | ~/.cargo/registry/cache/ 91 | ~/.cargo/git/db/ 92 | target/ 93 | key: release-${{ runner.os }}-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} 94 | - name: Lint 95 | run: cargo fmt --check 96 | - name: Build 97 | # run: cargo build --release --locked --target ${{ matrix.target }} 98 | run: cargo build --release --target ${{ matrix.target }} 99 | - name: Strip binary 100 | if: ${{ matrix.os != 'windows-latest' }} 101 | run: | 102 | set -x 103 | strip="strip" 104 | file_extension="" 105 | case "${{ matrix.target }}" in 106 | x86_64-unknown-linux-gnu) 107 | ;; 108 | x86_64-unknown-linux-musl) 109 | ;; 110 | aarch64-unknown-linux-gnu) 111 | strip=aarch64-linux-gnu-strip 112 | ;; 113 | aarch64-unknown-linux-musl) 114 | strip=aarch64-linux-musl-strip 115 | ;; 116 | x86_64-pc-windows-gnu) 117 | strip=x86_64-w64-mingw32-strip 118 | file_extension=".exe" 119 | ;; 120 | esac 121 | 122 | ${strip} target/${{ matrix.target }}/release/${{ env.BINARY_NAME }}${file_extension} 123 | - name: Package (unix) 124 | if: ${{ matrix.os != 'windows-latest' }} 125 | run: | 126 | set -x 127 | file_extension="" 128 | case "${{ matrix.target }}" in 129 | x86_64-pc-windows-gnu) 130 | file_extension=".exe" 131 | ;; 132 | esac 133 | rm -rf target/dist 134 | mkdir target/dist 135 | cd target/${{ matrix.target }}/release 136 | cp ${{ env.BINARY_NAME }}${file_extension} ../../dist/${{ env.BINARY_NAME }}-${{ needs.version.outputs.version }}-${{ matrix.target }}${file_extension} 137 | - name: Package (windows) 138 | if: ${{ matrix.os == 'windows-latest' }} 139 | run: | 140 | if (Test-Path target/dist) { rm -Recurse -Force target/dist } 141 | mkdir target/dist 142 | cd target/${{ matrix.target }}/release 143 | cp "${{ env.BINARY_NAME }}.exe" "../../dist/${{ env.BINARY_NAME }}-${{ needs.version.outputs.version }}-${{ matrix.target }}.exe" 144 | - name: Upload archive 145 | uses: actions/upload-artifact@v4 146 | with: 147 | name: ${{ env.BINARY_NAME }}-${{ needs.version.outputs.version }}-${{ matrix.target }} 148 | path: target/dist/* 149 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /logs 2 | /pools 3 | /stats 4 | /wallets 5 | /target 6 | output.log 7 | ore_env.priv.sh 8 | ore 9 | currentPriceOf*.txt 10 | cv_debug.log 11 | node_modules 12 | dashboard/build 13 | dashboard/public/dashboarddata 14 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "Inflector" 7 | version = "0.11.4" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 10 | dependencies = [ 11 | "lazy_static", 12 | "regex", 13 | ] 14 | 15 | [[package]] 16 | name = "addr2line" 17 | version = "0.22.0" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" 20 | dependencies = [ 21 | "gimli", 22 | ] 23 | 24 | [[package]] 25 | name = "adler" 26 | version = "1.0.2" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 29 | 30 | [[package]] 31 | name = "aead" 32 | version = "0.4.3" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" 35 | dependencies = [ 36 | "generic-array", 37 | ] 38 | 39 | [[package]] 40 | name = "aes" 41 | version = "0.7.5" 42 | source = "registry+https://github.com/rust-lang/crates.io-index" 43 | checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" 44 | dependencies = [ 45 | "cfg-if", 46 | "cipher", 47 | "cpufeatures", 48 | "opaque-debug", 49 | ] 50 | 51 | [[package]] 52 | name = "aes-gcm-siv" 53 | version = "0.10.3" 54 | source = "registry+https://github.com/rust-lang/crates.io-index" 55 | checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc" 56 | dependencies = [ 57 | "aead", 58 | "aes", 59 | "cipher", 60 | "ctr", 61 | "polyval", 62 | "subtle", 63 | "zeroize", 64 | ] 65 | 66 | [[package]] 67 | name = "ahash" 68 | version = "0.7.8" 69 | source = "registry+https://github.com/rust-lang/crates.io-index" 70 | checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" 71 | dependencies = [ 72 | "getrandom 0.2.15", 73 | "once_cell", 74 | "version_check", 75 | ] 76 | 77 | [[package]] 78 | name = "ahash" 79 | version = "0.8.11" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 82 | dependencies = [ 83 | "cfg-if", 84 | "getrandom 0.2.15", 85 | "once_cell", 86 | "version_check", 87 | "zerocopy", 88 | ] 89 | 90 | [[package]] 91 | name = "aho-corasick" 92 | version = "1.1.3" 93 | source = "registry+https://github.com/rust-lang/crates.io-index" 94 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 95 | dependencies = [ 96 | "memchr", 97 | ] 98 | 99 | [[package]] 100 | name = "alloc-no-stdlib" 101 | version = "2.0.4" 102 | source = "registry+https://github.com/rust-lang/crates.io-index" 103 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 104 | 105 | [[package]] 106 | name = "alloc-stdlib" 107 | version = "0.2.2" 108 | source = "registry+https://github.com/rust-lang/crates.io-index" 109 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 110 | dependencies = [ 111 | "alloc-no-stdlib", 112 | ] 113 | 114 | [[package]] 115 | name = "allocator-api2" 116 | version = "0.2.18" 117 | source = "registry+https://github.com/rust-lang/crates.io-index" 118 | checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" 119 | 120 | [[package]] 121 | name = "android-tzdata" 122 | version = "0.1.1" 123 | source = "registry+https://github.com/rust-lang/crates.io-index" 124 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 125 | 126 | [[package]] 127 | name = "android_system_properties" 128 | version = "0.1.5" 129 | source = "registry+https://github.com/rust-lang/crates.io-index" 130 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 131 | dependencies = [ 132 | "libc", 133 | ] 134 | 135 | [[package]] 136 | name = "ansi_term" 137 | version = "0.12.1" 138 | source = "registry+https://github.com/rust-lang/crates.io-index" 139 | checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" 140 | dependencies = [ 141 | "winapi", 142 | ] 143 | 144 | [[package]] 145 | name = "anstream" 146 | version = "0.6.14" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" 149 | dependencies = [ 150 | "anstyle", 151 | "anstyle-parse", 152 | "anstyle-query", 153 | "anstyle-wincon", 154 | "colorchoice", 155 | "is_terminal_polyfill", 156 | "utf8parse", 157 | ] 158 | 159 | [[package]] 160 | name = "anstyle" 161 | version = "1.0.7" 162 | source = "registry+https://github.com/rust-lang/crates.io-index" 163 | checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" 164 | 165 | [[package]] 166 | name = "anstyle-parse" 167 | version = "0.2.4" 168 | source = "registry+https://github.com/rust-lang/crates.io-index" 169 | checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" 170 | dependencies = [ 171 | "utf8parse", 172 | ] 173 | 174 | [[package]] 175 | name = "anstyle-query" 176 | version = "1.1.0" 177 | source = "registry+https://github.com/rust-lang/crates.io-index" 178 | checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" 179 | dependencies = [ 180 | "windows-sys 0.52.0", 181 | ] 182 | 183 | [[package]] 184 | name = "anstyle-wincon" 185 | version = "3.0.3" 186 | source = "registry+https://github.com/rust-lang/crates.io-index" 187 | checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" 188 | dependencies = [ 189 | "anstyle", 190 | "windows-sys 0.52.0", 191 | ] 192 | 193 | [[package]] 194 | name = "anyhow" 195 | version = "1.0.86" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" 198 | 199 | [[package]] 200 | name = "ark-bn254" 201 | version = "0.4.0" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" 204 | dependencies = [ 205 | "ark-ec", 206 | "ark-ff", 207 | "ark-std", 208 | ] 209 | 210 | [[package]] 211 | name = "ark-ec" 212 | version = "0.4.2" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" 215 | dependencies = [ 216 | "ark-ff", 217 | "ark-poly", 218 | "ark-serialize", 219 | "ark-std", 220 | "derivative", 221 | "hashbrown 0.13.2", 222 | "itertools", 223 | "num-traits", 224 | "zeroize", 225 | ] 226 | 227 | [[package]] 228 | name = "ark-ff" 229 | version = "0.4.2" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" 232 | dependencies = [ 233 | "ark-ff-asm", 234 | "ark-ff-macros", 235 | "ark-serialize", 236 | "ark-std", 237 | "derivative", 238 | "digest 0.10.7", 239 | "itertools", 240 | "num-bigint 0.4.6", 241 | "num-traits", 242 | "paste", 243 | "rustc_version", 244 | "zeroize", 245 | ] 246 | 247 | [[package]] 248 | name = "ark-ff-asm" 249 | version = "0.4.2" 250 | source = "registry+https://github.com/rust-lang/crates.io-index" 251 | checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" 252 | dependencies = [ 253 | "quote", 254 | "syn 1.0.109", 255 | ] 256 | 257 | [[package]] 258 | name = "ark-ff-macros" 259 | version = "0.4.2" 260 | source = "registry+https://github.com/rust-lang/crates.io-index" 261 | checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" 262 | dependencies = [ 263 | "num-bigint 0.4.6", 264 | "num-traits", 265 | "proc-macro2", 266 | "quote", 267 | "syn 1.0.109", 268 | ] 269 | 270 | [[package]] 271 | name = "ark-poly" 272 | version = "0.4.2" 273 | source = "registry+https://github.com/rust-lang/crates.io-index" 274 | checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" 275 | dependencies = [ 276 | "ark-ff", 277 | "ark-serialize", 278 | "ark-std", 279 | "derivative", 280 | "hashbrown 0.13.2", 281 | ] 282 | 283 | [[package]] 284 | name = "ark-serialize" 285 | version = "0.4.2" 286 | source = "registry+https://github.com/rust-lang/crates.io-index" 287 | checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" 288 | dependencies = [ 289 | "ark-serialize-derive", 290 | "ark-std", 291 | "digest 0.10.7", 292 | "num-bigint 0.4.6", 293 | ] 294 | 295 | [[package]] 296 | name = "ark-serialize-derive" 297 | version = "0.4.2" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" 300 | dependencies = [ 301 | "proc-macro2", 302 | "quote", 303 | "syn 1.0.109", 304 | ] 305 | 306 | [[package]] 307 | name = "ark-std" 308 | version = "0.4.0" 309 | source = "registry+https://github.com/rust-lang/crates.io-index" 310 | checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" 311 | dependencies = [ 312 | "num-traits", 313 | "rand 0.8.5", 314 | ] 315 | 316 | [[package]] 317 | name = "array-const-fn-init" 318 | version = "0.1.1" 319 | source = "registry+https://github.com/rust-lang/crates.io-index" 320 | checksum = "8bcb85e548c05d407fa6faff46b750ba287714ef32afc0f5e15b4641ffd6affb" 321 | 322 | [[package]] 323 | name = "arrayref" 324 | version = "0.3.7" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" 327 | 328 | [[package]] 329 | name = "arrayvec" 330 | version = "0.7.4" 331 | source = "registry+https://github.com/rust-lang/crates.io-index" 332 | checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" 333 | 334 | [[package]] 335 | name = "ascii" 336 | version = "0.9.3" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" 339 | 340 | [[package]] 341 | name = "asn1-rs" 342 | version = "0.5.2" 343 | source = "registry+https://github.com/rust-lang/crates.io-index" 344 | checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" 345 | dependencies = [ 346 | "asn1-rs-derive", 347 | "asn1-rs-impl", 348 | "displaydoc", 349 | "nom", 350 | "num-traits", 351 | "rusticata-macros", 352 | "thiserror", 353 | "time", 354 | ] 355 | 356 | [[package]] 357 | name = "asn1-rs-derive" 358 | version = "0.4.0" 359 | source = "registry+https://github.com/rust-lang/crates.io-index" 360 | checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" 361 | dependencies = [ 362 | "proc-macro2", 363 | "quote", 364 | "syn 1.0.109", 365 | "synstructure", 366 | ] 367 | 368 | [[package]] 369 | name = "asn1-rs-impl" 370 | version = "0.1.0" 371 | source = "registry+https://github.com/rust-lang/crates.io-index" 372 | checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" 373 | dependencies = [ 374 | "proc-macro2", 375 | "quote", 376 | "syn 1.0.109", 377 | ] 378 | 379 | [[package]] 380 | name = "assert_matches" 381 | version = "1.5.0" 382 | source = "registry+https://github.com/rust-lang/crates.io-index" 383 | checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" 384 | 385 | [[package]] 386 | name = "async-channel" 387 | version = "1.9.0" 388 | source = "registry+https://github.com/rust-lang/crates.io-index" 389 | checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" 390 | dependencies = [ 391 | "concurrent-queue", 392 | "event-listener", 393 | "futures-core", 394 | ] 395 | 396 | [[package]] 397 | name = "async-compression" 398 | version = "0.4.11" 399 | source = "registry+https://github.com/rust-lang/crates.io-index" 400 | checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" 401 | dependencies = [ 402 | "brotli", 403 | "flate2", 404 | "futures-core", 405 | "memchr", 406 | "pin-project-lite", 407 | "tokio", 408 | ] 409 | 410 | [[package]] 411 | name = "async-mutex" 412 | version = "1.4.0" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" 415 | dependencies = [ 416 | "event-listener", 417 | ] 418 | 419 | [[package]] 420 | name = "async-trait" 421 | version = "0.1.81" 422 | source = "registry+https://github.com/rust-lang/crates.io-index" 423 | checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" 424 | dependencies = [ 425 | "proc-macro2", 426 | "quote", 427 | "syn 2.0.70", 428 | ] 429 | 430 | [[package]] 431 | name = "atty" 432 | version = "0.2.14" 433 | source = "registry+https://github.com/rust-lang/crates.io-index" 434 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 435 | dependencies = [ 436 | "hermit-abi 0.1.19", 437 | "libc", 438 | "winapi", 439 | ] 440 | 441 | [[package]] 442 | name = "autocfg" 443 | version = "1.3.0" 444 | source = "registry+https://github.com/rust-lang/crates.io-index" 445 | checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" 446 | 447 | [[package]] 448 | name = "backtrace" 449 | version = "0.3.73" 450 | source = "registry+https://github.com/rust-lang/crates.io-index" 451 | checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" 452 | dependencies = [ 453 | "addr2line", 454 | "cc", 455 | "cfg-if", 456 | "libc", 457 | "miniz_oxide", 458 | "object", 459 | "rustc-demangle", 460 | ] 461 | 462 | [[package]] 463 | name = "base64" 464 | version = "0.12.3" 465 | source = "registry+https://github.com/rust-lang/crates.io-index" 466 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 467 | 468 | [[package]] 469 | name = "base64" 470 | version = "0.13.1" 471 | source = "registry+https://github.com/rust-lang/crates.io-index" 472 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 473 | 474 | [[package]] 475 | name = "base64" 476 | version = "0.21.7" 477 | source = "registry+https://github.com/rust-lang/crates.io-index" 478 | checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 479 | 480 | [[package]] 481 | name = "base64ct" 482 | version = "1.6.0" 483 | source = "registry+https://github.com/rust-lang/crates.io-index" 484 | checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" 485 | 486 | [[package]] 487 | name = "bincode" 488 | version = "1.3.3" 489 | source = "registry+https://github.com/rust-lang/crates.io-index" 490 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 491 | dependencies = [ 492 | "serde", 493 | ] 494 | 495 | [[package]] 496 | name = "bitflags" 497 | version = "1.3.2" 498 | source = "registry+https://github.com/rust-lang/crates.io-index" 499 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 500 | 501 | [[package]] 502 | name = "bitflags" 503 | version = "2.6.0" 504 | source = "registry+https://github.com/rust-lang/crates.io-index" 505 | checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" 506 | dependencies = [ 507 | "serde", 508 | ] 509 | 510 | [[package]] 511 | name = "bitmaps" 512 | version = "2.1.0" 513 | source = "registry+https://github.com/rust-lang/crates.io-index" 514 | checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" 515 | dependencies = [ 516 | "typenum", 517 | ] 518 | 519 | [[package]] 520 | name = "blake2" 521 | version = "0.10.6" 522 | source = "registry+https://github.com/rust-lang/crates.io-index" 523 | checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" 524 | dependencies = [ 525 | "digest 0.10.7", 526 | ] 527 | 528 | [[package]] 529 | name = "blake3" 530 | version = "1.5.1" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" 533 | dependencies = [ 534 | "arrayref", 535 | "arrayvec", 536 | "cc", 537 | "cfg-if", 538 | "constant_time_eq", 539 | "digest 0.10.7", 540 | ] 541 | 542 | [[package]] 543 | name = "block-buffer" 544 | version = "0.9.0" 545 | source = "registry+https://github.com/rust-lang/crates.io-index" 546 | checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 547 | dependencies = [ 548 | "block-padding", 549 | "generic-array", 550 | ] 551 | 552 | [[package]] 553 | name = "block-buffer" 554 | version = "0.10.4" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 557 | dependencies = [ 558 | "generic-array", 559 | ] 560 | 561 | [[package]] 562 | name = "block-padding" 563 | version = "0.2.1" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" 566 | 567 | [[package]] 568 | name = "borsh" 569 | version = "0.9.3" 570 | source = "registry+https://github.com/rust-lang/crates.io-index" 571 | checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" 572 | dependencies = [ 573 | "borsh-derive 0.9.3", 574 | "hashbrown 0.11.2", 575 | ] 576 | 577 | [[package]] 578 | name = "borsh" 579 | version = "0.10.3" 580 | source = "registry+https://github.com/rust-lang/crates.io-index" 581 | checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" 582 | dependencies = [ 583 | "borsh-derive 0.10.3", 584 | "hashbrown 0.13.2", 585 | ] 586 | 587 | [[package]] 588 | name = "borsh" 589 | version = "1.5.1" 590 | source = "registry+https://github.com/rust-lang/crates.io-index" 591 | checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" 592 | dependencies = [ 593 | "borsh-derive 1.5.1", 594 | "cfg_aliases", 595 | ] 596 | 597 | [[package]] 598 | name = "borsh-derive" 599 | version = "0.9.3" 600 | source = "registry+https://github.com/rust-lang/crates.io-index" 601 | checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" 602 | dependencies = [ 603 | "borsh-derive-internal 0.9.3", 604 | "borsh-schema-derive-internal 0.9.3", 605 | "proc-macro-crate 0.1.5", 606 | "proc-macro2", 607 | "syn 1.0.109", 608 | ] 609 | 610 | [[package]] 611 | name = "borsh-derive" 612 | version = "0.10.3" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" 615 | dependencies = [ 616 | "borsh-derive-internal 0.10.3", 617 | "borsh-schema-derive-internal 0.10.3", 618 | "proc-macro-crate 0.1.5", 619 | "proc-macro2", 620 | "syn 1.0.109", 621 | ] 622 | 623 | [[package]] 624 | name = "borsh-derive" 625 | version = "1.5.1" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" 628 | dependencies = [ 629 | "once_cell", 630 | "proc-macro-crate 3.1.0", 631 | "proc-macro2", 632 | "quote", 633 | "syn 2.0.70", 634 | "syn_derive", 635 | ] 636 | 637 | [[package]] 638 | name = "borsh-derive-internal" 639 | version = "0.9.3" 640 | source = "registry+https://github.com/rust-lang/crates.io-index" 641 | checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" 642 | dependencies = [ 643 | "proc-macro2", 644 | "quote", 645 | "syn 1.0.109", 646 | ] 647 | 648 | [[package]] 649 | name = "borsh-derive-internal" 650 | version = "0.10.3" 651 | source = "registry+https://github.com/rust-lang/crates.io-index" 652 | checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" 653 | dependencies = [ 654 | "proc-macro2", 655 | "quote", 656 | "syn 1.0.109", 657 | ] 658 | 659 | [[package]] 660 | name = "borsh-schema-derive-internal" 661 | version = "0.9.3" 662 | source = "registry+https://github.com/rust-lang/crates.io-index" 663 | checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" 664 | dependencies = [ 665 | "proc-macro2", 666 | "quote", 667 | "syn 1.0.109", 668 | ] 669 | 670 | [[package]] 671 | name = "borsh-schema-derive-internal" 672 | version = "0.10.3" 673 | source = "registry+https://github.com/rust-lang/crates.io-index" 674 | checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" 675 | dependencies = [ 676 | "proc-macro2", 677 | "quote", 678 | "syn 1.0.109", 679 | ] 680 | 681 | [[package]] 682 | name = "brotli" 683 | version = "6.0.0" 684 | source = "registry+https://github.com/rust-lang/crates.io-index" 685 | checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" 686 | dependencies = [ 687 | "alloc-no-stdlib", 688 | "alloc-stdlib", 689 | "brotli-decompressor", 690 | ] 691 | 692 | [[package]] 693 | name = "brotli-decompressor" 694 | version = "4.0.1" 695 | source = "registry+https://github.com/rust-lang/crates.io-index" 696 | checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" 697 | dependencies = [ 698 | "alloc-no-stdlib", 699 | "alloc-stdlib", 700 | ] 701 | 702 | [[package]] 703 | name = "bs58" 704 | version = "0.4.0" 705 | source = "registry+https://github.com/rust-lang/crates.io-index" 706 | checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" 707 | 708 | [[package]] 709 | name = "bs58" 710 | version = "0.5.1" 711 | source = "registry+https://github.com/rust-lang/crates.io-index" 712 | checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" 713 | dependencies = [ 714 | "tinyvec", 715 | ] 716 | 717 | [[package]] 718 | name = "bumpalo" 719 | version = "3.16.0" 720 | source = "registry+https://github.com/rust-lang/crates.io-index" 721 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 722 | 723 | [[package]] 724 | name = "bv" 725 | version = "0.11.1" 726 | source = "registry+https://github.com/rust-lang/crates.io-index" 727 | checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" 728 | dependencies = [ 729 | "feature-probe", 730 | "serde", 731 | ] 732 | 733 | [[package]] 734 | name = "bytemuck" 735 | version = "1.16.1" 736 | source = "registry+https://github.com/rust-lang/crates.io-index" 737 | checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" 738 | dependencies = [ 739 | "bytemuck_derive", 740 | ] 741 | 742 | [[package]] 743 | name = "bytemuck_derive" 744 | version = "1.7.0" 745 | source = "registry+https://github.com/rust-lang/crates.io-index" 746 | checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" 747 | dependencies = [ 748 | "proc-macro2", 749 | "quote", 750 | "syn 2.0.70", 751 | ] 752 | 753 | [[package]] 754 | name = "byteorder" 755 | version = "1.5.0" 756 | source = "registry+https://github.com/rust-lang/crates.io-index" 757 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 758 | 759 | [[package]] 760 | name = "bytes" 761 | version = "1.6.0" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" 764 | 765 | [[package]] 766 | name = "cached" 767 | version = "0.46.1" 768 | source = "registry+https://github.com/rust-lang/crates.io-index" 769 | checksum = "c7c8c50262271cdf5abc979a5f76515c234e764fa025d1ba4862c0f0bcda0e95" 770 | dependencies = [ 771 | "ahash 0.8.11", 772 | "cached_proc_macro", 773 | "cached_proc_macro_types", 774 | "hashbrown 0.14.5", 775 | "instant", 776 | "once_cell", 777 | "thiserror", 778 | ] 779 | 780 | [[package]] 781 | name = "cached_proc_macro" 782 | version = "0.18.1" 783 | source = "registry+https://github.com/rust-lang/crates.io-index" 784 | checksum = "c878c71c2821aa2058722038a59a67583a4240524687c6028571c9b395ded61f" 785 | dependencies = [ 786 | "darling 0.14.4", 787 | "proc-macro2", 788 | "quote", 789 | "syn 1.0.109", 790 | ] 791 | 792 | [[package]] 793 | name = "cached_proc_macro_types" 794 | version = "0.1.1" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" 797 | 798 | [[package]] 799 | name = "caps" 800 | version = "0.5.5" 801 | source = "registry+https://github.com/rust-lang/crates.io-index" 802 | checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" 803 | dependencies = [ 804 | "libc", 805 | "thiserror", 806 | ] 807 | 808 | [[package]] 809 | name = "cc" 810 | version = "1.0.99" 811 | source = "registry+https://github.com/rust-lang/crates.io-index" 812 | checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" 813 | dependencies = [ 814 | "jobserver", 815 | "libc", 816 | "once_cell", 817 | ] 818 | 819 | [[package]] 820 | name = "cfg-if" 821 | version = "1.0.0" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 824 | 825 | [[package]] 826 | name = "cfg_aliases" 827 | version = "0.2.1" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 830 | 831 | [[package]] 832 | name = "chrono" 833 | version = "0.4.38" 834 | source = "registry+https://github.com/rust-lang/crates.io-index" 835 | checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" 836 | dependencies = [ 837 | "android-tzdata", 838 | "iana-time-zone", 839 | "js-sys", 840 | "num-traits", 841 | "serde", 842 | "wasm-bindgen", 843 | "windows-targets 0.52.6", 844 | ] 845 | 846 | [[package]] 847 | name = "cipher" 848 | version = "0.3.0" 849 | source = "registry+https://github.com/rust-lang/crates.io-index" 850 | checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" 851 | dependencies = [ 852 | "generic-array", 853 | ] 854 | 855 | [[package]] 856 | name = "clap" 857 | version = "2.34.0" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" 860 | dependencies = [ 861 | "ansi_term", 862 | "atty", 863 | "bitflags 1.3.2", 864 | "strsim 0.8.0", 865 | "textwrap 0.11.0", 866 | "unicode-width", 867 | "vec_map", 868 | ] 869 | 870 | [[package]] 871 | name = "clap" 872 | version = "3.2.25" 873 | source = "registry+https://github.com/rust-lang/crates.io-index" 874 | checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" 875 | dependencies = [ 876 | "atty", 877 | "bitflags 1.3.2", 878 | "clap_lex 0.2.4", 879 | "indexmap 1.9.3", 880 | "once_cell", 881 | "strsim 0.10.0", 882 | "termcolor", 883 | "textwrap 0.16.1", 884 | ] 885 | 886 | [[package]] 887 | name = "clap" 888 | version = "4.5.9" 889 | source = "registry+https://github.com/rust-lang/crates.io-index" 890 | checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" 891 | dependencies = [ 892 | "clap_builder", 893 | "clap_derive", 894 | ] 895 | 896 | [[package]] 897 | name = "clap_builder" 898 | version = "4.5.9" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" 901 | dependencies = [ 902 | "anstream", 903 | "anstyle", 904 | "clap_lex 0.7.1", 905 | "strsim 0.11.1", 906 | ] 907 | 908 | [[package]] 909 | name = "clap_derive" 910 | version = "4.5.8" 911 | source = "registry+https://github.com/rust-lang/crates.io-index" 912 | checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" 913 | dependencies = [ 914 | "heck", 915 | "proc-macro2", 916 | "quote", 917 | "syn 2.0.70", 918 | ] 919 | 920 | [[package]] 921 | name = "clap_lex" 922 | version = "0.2.4" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" 925 | dependencies = [ 926 | "os_str_bytes", 927 | ] 928 | 929 | [[package]] 930 | name = "clap_lex" 931 | version = "0.7.1" 932 | source = "registry+https://github.com/rust-lang/crates.io-index" 933 | checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" 934 | 935 | [[package]] 936 | name = "colorchoice" 937 | version = "1.0.1" 938 | source = "registry+https://github.com/rust-lang/crates.io-index" 939 | checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" 940 | 941 | [[package]] 942 | name = "colored" 943 | version = "2.1.0" 944 | source = "registry+https://github.com/rust-lang/crates.io-index" 945 | checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" 946 | dependencies = [ 947 | "lazy_static", 948 | "windows-sys 0.48.0", 949 | ] 950 | 951 | [[package]] 952 | name = "combine" 953 | version = "3.8.1" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" 956 | dependencies = [ 957 | "ascii", 958 | "byteorder", 959 | "either", 960 | "memchr", 961 | "unreachable", 962 | ] 963 | 964 | [[package]] 965 | name = "concurrent-queue" 966 | version = "2.5.0" 967 | source = "registry+https://github.com/rust-lang/crates.io-index" 968 | checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 969 | dependencies = [ 970 | "crossbeam-utils", 971 | ] 972 | 973 | [[package]] 974 | name = "console" 975 | version = "0.15.8" 976 | source = "registry+https://github.com/rust-lang/crates.io-index" 977 | checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" 978 | dependencies = [ 979 | "encode_unicode", 980 | "lazy_static", 981 | "libc", 982 | "unicode-width", 983 | "windows-sys 0.52.0", 984 | ] 985 | 986 | [[package]] 987 | name = "console_error_panic_hook" 988 | version = "0.1.7" 989 | source = "registry+https://github.com/rust-lang/crates.io-index" 990 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 991 | dependencies = [ 992 | "cfg-if", 993 | "wasm-bindgen", 994 | ] 995 | 996 | [[package]] 997 | name = "console_log" 998 | version = "0.2.2" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" 1001 | dependencies = [ 1002 | "log", 1003 | "web-sys", 1004 | ] 1005 | 1006 | [[package]] 1007 | name = "const-crypto" 1008 | version = "0.1.0" 1009 | source = "registry+https://github.com/rust-lang/crates.io-index" 1010 | checksum = "19c63acd992239f1877a7d6387038ca886a2029e41f3d91087fd454f9995f22c" 1011 | dependencies = [ 1012 | "keccak-const", 1013 | "sha2-const-stable", 1014 | ] 1015 | 1016 | [[package]] 1017 | name = "const-oid" 1018 | version = "0.7.1" 1019 | source = "registry+https://github.com/rust-lang/crates.io-index" 1020 | checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" 1021 | 1022 | [[package]] 1023 | name = "constant_time_eq" 1024 | version = "0.3.0" 1025 | source = "registry+https://github.com/rust-lang/crates.io-index" 1026 | checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" 1027 | 1028 | [[package]] 1029 | name = "core-foundation" 1030 | version = "0.9.4" 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" 1032 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 1033 | dependencies = [ 1034 | "core-foundation-sys", 1035 | "libc", 1036 | ] 1037 | 1038 | [[package]] 1039 | name = "core-foundation-sys" 1040 | version = "0.8.6" 1041 | source = "registry+https://github.com/rust-lang/crates.io-index" 1042 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 1043 | 1044 | [[package]] 1045 | name = "cpufeatures" 1046 | version = "0.2.12" 1047 | source = "registry+https://github.com/rust-lang/crates.io-index" 1048 | checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" 1049 | dependencies = [ 1050 | "libc", 1051 | ] 1052 | 1053 | [[package]] 1054 | name = "crc32fast" 1055 | version = "1.4.2" 1056 | source = "registry+https://github.com/rust-lang/crates.io-index" 1057 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 1058 | dependencies = [ 1059 | "cfg-if", 1060 | ] 1061 | 1062 | [[package]] 1063 | name = "crossbeam-channel" 1064 | version = "0.5.13" 1065 | source = "registry+https://github.com/rust-lang/crates.io-index" 1066 | checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" 1067 | dependencies = [ 1068 | "crossbeam-utils", 1069 | ] 1070 | 1071 | [[package]] 1072 | name = "crossbeam-deque" 1073 | version = "0.8.5" 1074 | source = "registry+https://github.com/rust-lang/crates.io-index" 1075 | checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" 1076 | dependencies = [ 1077 | "crossbeam-epoch", 1078 | "crossbeam-utils", 1079 | ] 1080 | 1081 | [[package]] 1082 | name = "crossbeam-epoch" 1083 | version = "0.9.18" 1084 | source = "registry+https://github.com/rust-lang/crates.io-index" 1085 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 1086 | dependencies = [ 1087 | "crossbeam-utils", 1088 | ] 1089 | 1090 | [[package]] 1091 | name = "crossbeam-utils" 1092 | version = "0.8.20" 1093 | source = "registry+https://github.com/rust-lang/crates.io-index" 1094 | checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" 1095 | 1096 | [[package]] 1097 | name = "crunchy" 1098 | version = "0.2.2" 1099 | source = "registry+https://github.com/rust-lang/crates.io-index" 1100 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 1101 | 1102 | [[package]] 1103 | name = "crypto-common" 1104 | version = "0.1.6" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 1107 | dependencies = [ 1108 | "generic-array", 1109 | "typenum", 1110 | ] 1111 | 1112 | [[package]] 1113 | name = "crypto-mac" 1114 | version = "0.8.0" 1115 | source = "registry+https://github.com/rust-lang/crates.io-index" 1116 | checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" 1117 | dependencies = [ 1118 | "generic-array", 1119 | "subtle", 1120 | ] 1121 | 1122 | [[package]] 1123 | name = "ctr" 1124 | version = "0.8.0" 1125 | source = "registry+https://github.com/rust-lang/crates.io-index" 1126 | checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" 1127 | dependencies = [ 1128 | "cipher", 1129 | ] 1130 | 1131 | [[package]] 1132 | name = "curve25519-dalek" 1133 | version = "3.2.1" 1134 | source = "registry+https://github.com/rust-lang/crates.io-index" 1135 | checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" 1136 | dependencies = [ 1137 | "byteorder", 1138 | "digest 0.9.0", 1139 | "rand_core 0.5.1", 1140 | "serde", 1141 | "subtle", 1142 | "zeroize", 1143 | ] 1144 | 1145 | [[package]] 1146 | name = "darling" 1147 | version = "0.14.4" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" 1150 | dependencies = [ 1151 | "darling_core 0.14.4", 1152 | "darling_macro 0.14.4", 1153 | ] 1154 | 1155 | [[package]] 1156 | name = "darling" 1157 | version = "0.20.10" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" 1160 | dependencies = [ 1161 | "darling_core 0.20.10", 1162 | "darling_macro 0.20.10", 1163 | ] 1164 | 1165 | [[package]] 1166 | name = "darling_core" 1167 | version = "0.14.4" 1168 | source = "registry+https://github.com/rust-lang/crates.io-index" 1169 | checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" 1170 | dependencies = [ 1171 | "fnv", 1172 | "ident_case", 1173 | "proc-macro2", 1174 | "quote", 1175 | "strsim 0.10.0", 1176 | "syn 1.0.109", 1177 | ] 1178 | 1179 | [[package]] 1180 | name = "darling_core" 1181 | version = "0.20.10" 1182 | source = "registry+https://github.com/rust-lang/crates.io-index" 1183 | checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" 1184 | dependencies = [ 1185 | "fnv", 1186 | "ident_case", 1187 | "proc-macro2", 1188 | "quote", 1189 | "strsim 0.11.1", 1190 | "syn 2.0.70", 1191 | ] 1192 | 1193 | [[package]] 1194 | name = "darling_macro" 1195 | version = "0.14.4" 1196 | source = "registry+https://github.com/rust-lang/crates.io-index" 1197 | checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" 1198 | dependencies = [ 1199 | "darling_core 0.14.4", 1200 | "quote", 1201 | "syn 1.0.109", 1202 | ] 1203 | 1204 | [[package]] 1205 | name = "darling_macro" 1206 | version = "0.20.10" 1207 | source = "registry+https://github.com/rust-lang/crates.io-index" 1208 | checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" 1209 | dependencies = [ 1210 | "darling_core 0.20.10", 1211 | "quote", 1212 | "syn 2.0.70", 1213 | ] 1214 | 1215 | [[package]] 1216 | name = "dashmap" 1217 | version = "5.5.3" 1218 | source = "registry+https://github.com/rust-lang/crates.io-index" 1219 | checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" 1220 | dependencies = [ 1221 | "cfg-if", 1222 | "hashbrown 0.14.5", 1223 | "lock_api", 1224 | "once_cell", 1225 | "parking_lot_core", 1226 | ] 1227 | 1228 | [[package]] 1229 | name = "data-encoding" 1230 | version = "2.6.0" 1231 | source = "registry+https://github.com/rust-lang/crates.io-index" 1232 | checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" 1233 | 1234 | [[package]] 1235 | name = "der" 1236 | version = "0.5.1" 1237 | source = "registry+https://github.com/rust-lang/crates.io-index" 1238 | checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" 1239 | dependencies = [ 1240 | "const-oid", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "der-parser" 1245 | version = "8.2.0" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" 1248 | dependencies = [ 1249 | "asn1-rs", 1250 | "displaydoc", 1251 | "nom", 1252 | "num-bigint 0.4.6", 1253 | "num-traits", 1254 | "rusticata-macros", 1255 | ] 1256 | 1257 | [[package]] 1258 | name = "deranged" 1259 | version = "0.3.11" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" 1262 | dependencies = [ 1263 | "powerfmt", 1264 | ] 1265 | 1266 | [[package]] 1267 | name = "derivation-path" 1268 | version = "0.2.0" 1269 | source = "registry+https://github.com/rust-lang/crates.io-index" 1270 | checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" 1271 | 1272 | [[package]] 1273 | name = "derivative" 1274 | version = "2.2.0" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 1277 | dependencies = [ 1278 | "proc-macro2", 1279 | "quote", 1280 | "syn 1.0.109", 1281 | ] 1282 | 1283 | [[package]] 1284 | name = "dialoguer" 1285 | version = "0.10.4" 1286 | source = "registry+https://github.com/rust-lang/crates.io-index" 1287 | checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" 1288 | dependencies = [ 1289 | "console", 1290 | "shell-words", 1291 | "tempfile", 1292 | "zeroize", 1293 | ] 1294 | 1295 | [[package]] 1296 | name = "digest" 1297 | version = "0.9.0" 1298 | source = "registry+https://github.com/rust-lang/crates.io-index" 1299 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 1300 | dependencies = [ 1301 | "generic-array", 1302 | ] 1303 | 1304 | [[package]] 1305 | name = "digest" 1306 | version = "0.10.7" 1307 | source = "registry+https://github.com/rust-lang/crates.io-index" 1308 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1309 | dependencies = [ 1310 | "block-buffer 0.10.4", 1311 | "crypto-common", 1312 | "subtle", 1313 | ] 1314 | 1315 | [[package]] 1316 | name = "dirs-next" 1317 | version = "2.0.0" 1318 | source = "registry+https://github.com/rust-lang/crates.io-index" 1319 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" 1320 | dependencies = [ 1321 | "cfg-if", 1322 | "dirs-sys-next", 1323 | ] 1324 | 1325 | [[package]] 1326 | name = "dirs-sys-next" 1327 | version = "0.1.2" 1328 | source = "registry+https://github.com/rust-lang/crates.io-index" 1329 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 1330 | dependencies = [ 1331 | "libc", 1332 | "redox_users", 1333 | "winapi", 1334 | ] 1335 | 1336 | [[package]] 1337 | name = "displaydoc" 1338 | version = "0.2.5" 1339 | source = "registry+https://github.com/rust-lang/crates.io-index" 1340 | checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 1341 | dependencies = [ 1342 | "proc-macro2", 1343 | "quote", 1344 | "syn 2.0.70", 1345 | ] 1346 | 1347 | [[package]] 1348 | name = "dlopen2" 1349 | version = "0.5.0" 1350 | source = "registry+https://github.com/rust-lang/crates.io-index" 1351 | checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa" 1352 | dependencies = [ 1353 | "dlopen2_derive", 1354 | "libc", 1355 | "once_cell", 1356 | "winapi", 1357 | ] 1358 | 1359 | [[package]] 1360 | name = "dlopen2_derive" 1361 | version = "0.3.0" 1362 | source = "registry+https://github.com/rust-lang/crates.io-index" 1363 | checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" 1364 | dependencies = [ 1365 | "proc-macro2", 1366 | "quote", 1367 | "syn 2.0.70", 1368 | ] 1369 | 1370 | [[package]] 1371 | name = "drillx" 1372 | version = "2.0.0-beta.1" 1373 | source = "registry+https://github.com/rust-lang/crates.io-index" 1374 | checksum = "3bc503e6662deb892b18b41e6d23d2604d7a7804c00d4b84e1d58ecf22daa61c" 1375 | dependencies = [ 1376 | "blake3", 1377 | "equix", 1378 | "serde", 1379 | "solana-program", 1380 | "strum", 1381 | ] 1382 | 1383 | [[package]] 1384 | name = "dynasm" 1385 | version = "2.0.0" 1386 | source = "registry+https://github.com/rust-lang/crates.io-index" 1387 | checksum = "33dc03612f42465a8ed7f5e354bc2b79ba54cedefa81d5bd3a064f1835adaba8" 1388 | dependencies = [ 1389 | "bitflags 1.3.2", 1390 | "byteorder", 1391 | "lazy_static", 1392 | "proc-macro-error", 1393 | "proc-macro2", 1394 | "quote", 1395 | "syn 1.0.109", 1396 | ] 1397 | 1398 | [[package]] 1399 | name = "dynasmrt" 1400 | version = "2.0.0" 1401 | source = "registry+https://github.com/rust-lang/crates.io-index" 1402 | checksum = "f7dccc31a678058996aef614f6bd418ced384da70f284e83e2b7bf29b27b6a28" 1403 | dependencies = [ 1404 | "byteorder", 1405 | "dynasm", 1406 | "fnv", 1407 | "memmap2", 1408 | ] 1409 | 1410 | [[package]] 1411 | name = "eager" 1412 | version = "0.1.0" 1413 | source = "registry+https://github.com/rust-lang/crates.io-index" 1414 | checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" 1415 | 1416 | [[package]] 1417 | name = "ed25519" 1418 | version = "1.5.3" 1419 | source = "registry+https://github.com/rust-lang/crates.io-index" 1420 | checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" 1421 | dependencies = [ 1422 | "signature", 1423 | ] 1424 | 1425 | [[package]] 1426 | name = "ed25519-dalek" 1427 | version = "1.0.1" 1428 | source = "registry+https://github.com/rust-lang/crates.io-index" 1429 | checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" 1430 | dependencies = [ 1431 | "curve25519-dalek", 1432 | "ed25519", 1433 | "rand 0.7.3", 1434 | "serde", 1435 | "sha2 0.9.9", 1436 | "zeroize", 1437 | ] 1438 | 1439 | [[package]] 1440 | name = "ed25519-dalek-bip32" 1441 | version = "0.2.0" 1442 | source = "registry+https://github.com/rust-lang/crates.io-index" 1443 | checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" 1444 | dependencies = [ 1445 | "derivation-path", 1446 | "ed25519-dalek", 1447 | "hmac 0.12.1", 1448 | "sha2 0.10.8", 1449 | ] 1450 | 1451 | [[package]] 1452 | name = "either" 1453 | version = "1.13.0" 1454 | source = "registry+https://github.com/rust-lang/crates.io-index" 1455 | checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" 1456 | 1457 | [[package]] 1458 | name = "encode_unicode" 1459 | version = "0.3.6" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" 1462 | 1463 | [[package]] 1464 | name = "encoding_rs" 1465 | version = "0.8.34" 1466 | source = "registry+https://github.com/rust-lang/crates.io-index" 1467 | checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" 1468 | dependencies = [ 1469 | "cfg-if", 1470 | ] 1471 | 1472 | [[package]] 1473 | name = "enum-iterator" 1474 | version = "1.5.0" 1475 | source = "registry+https://github.com/rust-lang/crates.io-index" 1476 | checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" 1477 | dependencies = [ 1478 | "enum-iterator-derive", 1479 | ] 1480 | 1481 | [[package]] 1482 | name = "enum-iterator-derive" 1483 | version = "1.4.0" 1484 | source = "registry+https://github.com/rust-lang/crates.io-index" 1485 | checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" 1486 | dependencies = [ 1487 | "proc-macro2", 1488 | "quote", 1489 | "syn 2.0.70", 1490 | ] 1491 | 1492 | [[package]] 1493 | name = "env_logger" 1494 | version = "0.9.3" 1495 | source = "registry+https://github.com/rust-lang/crates.io-index" 1496 | checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" 1497 | dependencies = [ 1498 | "atty", 1499 | "humantime", 1500 | "log", 1501 | "regex", 1502 | "termcolor", 1503 | ] 1504 | 1505 | [[package]] 1506 | name = "equivalent" 1507 | version = "1.0.1" 1508 | source = "registry+https://github.com/rust-lang/crates.io-index" 1509 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 1510 | 1511 | [[package]] 1512 | name = "equix" 1513 | version = "0.1.5" 1514 | source = "registry+https://github.com/rust-lang/crates.io-index" 1515 | checksum = "ced5aa2974d730a3bbe65dcb62ad8fbb0ae44d4aeed1093808a855d922b931ee" 1516 | dependencies = [ 1517 | "arrayvec", 1518 | "hashx", 1519 | "num-traits", 1520 | "thiserror", 1521 | "visibility", 1522 | ] 1523 | 1524 | [[package]] 1525 | name = "errno" 1526 | version = "0.3.9" 1527 | source = "registry+https://github.com/rust-lang/crates.io-index" 1528 | checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" 1529 | dependencies = [ 1530 | "libc", 1531 | "windows-sys 0.52.0", 1532 | ] 1533 | 1534 | [[package]] 1535 | name = "event-listener" 1536 | version = "2.5.3" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1539 | 1540 | [[package]] 1541 | name = "fastrand" 1542 | version = "2.1.0" 1543 | source = "registry+https://github.com/rust-lang/crates.io-index" 1544 | checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" 1545 | 1546 | [[package]] 1547 | name = "feature-probe" 1548 | version = "0.1.1" 1549 | source = "registry+https://github.com/rust-lang/crates.io-index" 1550 | checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" 1551 | 1552 | [[package]] 1553 | name = "fixed-capacity-vec" 1554 | version = "1.0.1" 1555 | source = "registry+https://github.com/rust-lang/crates.io-index" 1556 | checksum = "6b31a14f5ee08ed1a40e1252b35af18bed062e3f39b69aab34decde36bc43e40" 1557 | 1558 | [[package]] 1559 | name = "flate2" 1560 | version = "1.0.30" 1561 | source = "registry+https://github.com/rust-lang/crates.io-index" 1562 | checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" 1563 | dependencies = [ 1564 | "crc32fast", 1565 | "miniz_oxide", 1566 | ] 1567 | 1568 | [[package]] 1569 | name = "fnv" 1570 | version = "1.0.7" 1571 | source = "registry+https://github.com/rust-lang/crates.io-index" 1572 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1573 | 1574 | [[package]] 1575 | name = "form_urlencoded" 1576 | version = "1.2.1" 1577 | source = "registry+https://github.com/rust-lang/crates.io-index" 1578 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 1579 | dependencies = [ 1580 | "percent-encoding", 1581 | ] 1582 | 1583 | [[package]] 1584 | name = "futures" 1585 | version = "0.3.30" 1586 | source = "registry+https://github.com/rust-lang/crates.io-index" 1587 | checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" 1588 | dependencies = [ 1589 | "futures-channel", 1590 | "futures-core", 1591 | "futures-executor", 1592 | "futures-io", 1593 | "futures-sink", 1594 | "futures-task", 1595 | "futures-util", 1596 | ] 1597 | 1598 | [[package]] 1599 | name = "futures-channel" 1600 | version = "0.3.30" 1601 | source = "registry+https://github.com/rust-lang/crates.io-index" 1602 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 1603 | dependencies = [ 1604 | "futures-core", 1605 | "futures-sink", 1606 | ] 1607 | 1608 | [[package]] 1609 | name = "futures-core" 1610 | version = "0.3.30" 1611 | source = "registry+https://github.com/rust-lang/crates.io-index" 1612 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 1613 | 1614 | [[package]] 1615 | name = "futures-executor" 1616 | version = "0.3.30" 1617 | source = "registry+https://github.com/rust-lang/crates.io-index" 1618 | checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" 1619 | dependencies = [ 1620 | "futures-core", 1621 | "futures-task", 1622 | "futures-util", 1623 | ] 1624 | 1625 | [[package]] 1626 | name = "futures-io" 1627 | version = "0.3.30" 1628 | source = "registry+https://github.com/rust-lang/crates.io-index" 1629 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 1630 | 1631 | [[package]] 1632 | name = "futures-macro" 1633 | version = "0.3.30" 1634 | source = "registry+https://github.com/rust-lang/crates.io-index" 1635 | checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 1636 | dependencies = [ 1637 | "proc-macro2", 1638 | "quote", 1639 | "syn 2.0.70", 1640 | ] 1641 | 1642 | [[package]] 1643 | name = "futures-sink" 1644 | version = "0.3.30" 1645 | source = "registry+https://github.com/rust-lang/crates.io-index" 1646 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 1647 | 1648 | [[package]] 1649 | name = "futures-task" 1650 | version = "0.3.30" 1651 | source = "registry+https://github.com/rust-lang/crates.io-index" 1652 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 1653 | 1654 | [[package]] 1655 | name = "futures-util" 1656 | version = "0.3.30" 1657 | source = "registry+https://github.com/rust-lang/crates.io-index" 1658 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 1659 | dependencies = [ 1660 | "futures-channel", 1661 | "futures-core", 1662 | "futures-io", 1663 | "futures-macro", 1664 | "futures-sink", 1665 | "futures-task", 1666 | "memchr", 1667 | "pin-project-lite", 1668 | "pin-utils", 1669 | "slab", 1670 | ] 1671 | 1672 | [[package]] 1673 | name = "generic-array" 1674 | version = "0.14.7" 1675 | source = "registry+https://github.com/rust-lang/crates.io-index" 1676 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1677 | dependencies = [ 1678 | "serde", 1679 | "typenum", 1680 | "version_check", 1681 | ] 1682 | 1683 | [[package]] 1684 | name = "gethostname" 1685 | version = "0.2.3" 1686 | source = "registry+https://github.com/rust-lang/crates.io-index" 1687 | checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" 1688 | dependencies = [ 1689 | "libc", 1690 | "winapi", 1691 | ] 1692 | 1693 | [[package]] 1694 | name = "getrandom" 1695 | version = "0.1.16" 1696 | source = "registry+https://github.com/rust-lang/crates.io-index" 1697 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 1698 | dependencies = [ 1699 | "cfg-if", 1700 | "js-sys", 1701 | "libc", 1702 | "wasi 0.9.0+wasi-snapshot-preview1", 1703 | "wasm-bindgen", 1704 | ] 1705 | 1706 | [[package]] 1707 | name = "getrandom" 1708 | version = "0.2.15" 1709 | source = "registry+https://github.com/rust-lang/crates.io-index" 1710 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 1711 | dependencies = [ 1712 | "cfg-if", 1713 | "js-sys", 1714 | "libc", 1715 | "wasi 0.11.0+wasi-snapshot-preview1", 1716 | "wasm-bindgen", 1717 | ] 1718 | 1719 | [[package]] 1720 | name = "gimli" 1721 | version = "0.29.0" 1722 | source = "registry+https://github.com/rust-lang/crates.io-index" 1723 | checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" 1724 | 1725 | [[package]] 1726 | name = "goblin" 1727 | version = "0.5.4" 1728 | source = "registry+https://github.com/rust-lang/crates.io-index" 1729 | checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" 1730 | dependencies = [ 1731 | "log", 1732 | "plain", 1733 | "scroll", 1734 | ] 1735 | 1736 | [[package]] 1737 | name = "h2" 1738 | version = "0.3.26" 1739 | source = "registry+https://github.com/rust-lang/crates.io-index" 1740 | checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" 1741 | dependencies = [ 1742 | "bytes", 1743 | "fnv", 1744 | "futures-core", 1745 | "futures-sink", 1746 | "futures-util", 1747 | "http", 1748 | "indexmap 2.2.6", 1749 | "slab", 1750 | "tokio", 1751 | "tokio-util", 1752 | "tracing", 1753 | ] 1754 | 1755 | [[package]] 1756 | name = "hash32" 1757 | version = "0.2.1" 1758 | source = "registry+https://github.com/rust-lang/crates.io-index" 1759 | checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 1760 | dependencies = [ 1761 | "byteorder", 1762 | ] 1763 | 1764 | [[package]] 1765 | name = "hashbrown" 1766 | version = "0.11.2" 1767 | source = "registry+https://github.com/rust-lang/crates.io-index" 1768 | checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" 1769 | dependencies = [ 1770 | "ahash 0.7.8", 1771 | ] 1772 | 1773 | [[package]] 1774 | name = "hashbrown" 1775 | version = "0.12.3" 1776 | source = "registry+https://github.com/rust-lang/crates.io-index" 1777 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1778 | 1779 | [[package]] 1780 | name = "hashbrown" 1781 | version = "0.13.2" 1782 | source = "registry+https://github.com/rust-lang/crates.io-index" 1783 | checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" 1784 | dependencies = [ 1785 | "ahash 0.8.11", 1786 | ] 1787 | 1788 | [[package]] 1789 | name = "hashbrown" 1790 | version = "0.14.5" 1791 | source = "registry+https://github.com/rust-lang/crates.io-index" 1792 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1793 | dependencies = [ 1794 | "ahash 0.8.11", 1795 | "allocator-api2", 1796 | ] 1797 | 1798 | [[package]] 1799 | name = "hashx" 1800 | version = "0.1.5" 1801 | source = "registry+https://github.com/rust-lang/crates.io-index" 1802 | checksum = "44a3b158f726cbff305571b9882f9638ce8cf146dde935a5bd43e115d8d6b6a0" 1803 | dependencies = [ 1804 | "arrayvec", 1805 | "blake2", 1806 | "dynasmrt", 1807 | "fixed-capacity-vec", 1808 | "hex", 1809 | "rand_core 0.6.4", 1810 | "thiserror", 1811 | ] 1812 | 1813 | [[package]] 1814 | name = "heck" 1815 | version = "0.5.0" 1816 | source = "registry+https://github.com/rust-lang/crates.io-index" 1817 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1818 | 1819 | [[package]] 1820 | name = "hermit-abi" 1821 | version = "0.1.19" 1822 | source = "registry+https://github.com/rust-lang/crates.io-index" 1823 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 1824 | dependencies = [ 1825 | "libc", 1826 | ] 1827 | 1828 | [[package]] 1829 | name = "hermit-abi" 1830 | version = "0.3.9" 1831 | source = "registry+https://github.com/rust-lang/crates.io-index" 1832 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 1833 | 1834 | [[package]] 1835 | name = "hex" 1836 | version = "0.4.3" 1837 | source = "registry+https://github.com/rust-lang/crates.io-index" 1838 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1839 | 1840 | [[package]] 1841 | name = "histogram" 1842 | version = "0.6.9" 1843 | source = "registry+https://github.com/rust-lang/crates.io-index" 1844 | checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" 1845 | 1846 | [[package]] 1847 | name = "hmac" 1848 | version = "0.8.1" 1849 | source = "registry+https://github.com/rust-lang/crates.io-index" 1850 | checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" 1851 | dependencies = [ 1852 | "crypto-mac", 1853 | "digest 0.9.0", 1854 | ] 1855 | 1856 | [[package]] 1857 | name = "hmac" 1858 | version = "0.12.1" 1859 | source = "registry+https://github.com/rust-lang/crates.io-index" 1860 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1861 | dependencies = [ 1862 | "digest 0.10.7", 1863 | ] 1864 | 1865 | [[package]] 1866 | name = "hmac-drbg" 1867 | version = "0.3.0" 1868 | source = "registry+https://github.com/rust-lang/crates.io-index" 1869 | checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" 1870 | dependencies = [ 1871 | "digest 0.9.0", 1872 | "generic-array", 1873 | "hmac 0.8.1", 1874 | ] 1875 | 1876 | [[package]] 1877 | name = "http" 1878 | version = "0.2.12" 1879 | source = "registry+https://github.com/rust-lang/crates.io-index" 1880 | checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 1881 | dependencies = [ 1882 | "bytes", 1883 | "fnv", 1884 | "itoa", 1885 | ] 1886 | 1887 | [[package]] 1888 | name = "http-body" 1889 | version = "0.4.6" 1890 | source = "registry+https://github.com/rust-lang/crates.io-index" 1891 | checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 1892 | dependencies = [ 1893 | "bytes", 1894 | "http", 1895 | "pin-project-lite", 1896 | ] 1897 | 1898 | [[package]] 1899 | name = "httparse" 1900 | version = "1.9.4" 1901 | source = "registry+https://github.com/rust-lang/crates.io-index" 1902 | checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" 1903 | 1904 | [[package]] 1905 | name = "httpdate" 1906 | version = "1.0.3" 1907 | source = "registry+https://github.com/rust-lang/crates.io-index" 1908 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 1909 | 1910 | [[package]] 1911 | name = "humantime" 1912 | version = "2.1.0" 1913 | source = "registry+https://github.com/rust-lang/crates.io-index" 1914 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 1915 | 1916 | [[package]] 1917 | name = "hyper" 1918 | version = "0.14.30" 1919 | source = "registry+https://github.com/rust-lang/crates.io-index" 1920 | checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" 1921 | dependencies = [ 1922 | "bytes", 1923 | "futures-channel", 1924 | "futures-core", 1925 | "futures-util", 1926 | "h2", 1927 | "http", 1928 | "http-body", 1929 | "httparse", 1930 | "httpdate", 1931 | "itoa", 1932 | "pin-project-lite", 1933 | "socket2", 1934 | "tokio", 1935 | "tower-service", 1936 | "tracing", 1937 | "want", 1938 | ] 1939 | 1940 | [[package]] 1941 | name = "hyper-rustls" 1942 | version = "0.24.2" 1943 | source = "registry+https://github.com/rust-lang/crates.io-index" 1944 | checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 1945 | dependencies = [ 1946 | "futures-util", 1947 | "http", 1948 | "hyper", 1949 | "rustls", 1950 | "tokio", 1951 | "tokio-rustls", 1952 | ] 1953 | 1954 | [[package]] 1955 | name = "iana-time-zone" 1956 | version = "0.1.60" 1957 | source = "registry+https://github.com/rust-lang/crates.io-index" 1958 | checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" 1959 | dependencies = [ 1960 | "android_system_properties", 1961 | "core-foundation-sys", 1962 | "iana-time-zone-haiku", 1963 | "js-sys", 1964 | "wasm-bindgen", 1965 | "windows-core", 1966 | ] 1967 | 1968 | [[package]] 1969 | name = "iana-time-zone-haiku" 1970 | version = "0.1.2" 1971 | source = "registry+https://github.com/rust-lang/crates.io-index" 1972 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1973 | dependencies = [ 1974 | "cc", 1975 | ] 1976 | 1977 | [[package]] 1978 | name = "ident_case" 1979 | version = "1.0.1" 1980 | source = "registry+https://github.com/rust-lang/crates.io-index" 1981 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1982 | 1983 | [[package]] 1984 | name = "idna" 1985 | version = "0.5.0" 1986 | source = "registry+https://github.com/rust-lang/crates.io-index" 1987 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 1988 | dependencies = [ 1989 | "unicode-bidi", 1990 | "unicode-normalization", 1991 | ] 1992 | 1993 | [[package]] 1994 | name = "im" 1995 | version = "15.1.0" 1996 | source = "registry+https://github.com/rust-lang/crates.io-index" 1997 | checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" 1998 | dependencies = [ 1999 | "bitmaps", 2000 | "rand_core 0.6.4", 2001 | "rand_xoshiro", 2002 | "rayon", 2003 | "serde", 2004 | "sized-chunks", 2005 | "typenum", 2006 | "version_check", 2007 | ] 2008 | 2009 | [[package]] 2010 | name = "indexmap" 2011 | version = "1.9.3" 2012 | source = "registry+https://github.com/rust-lang/crates.io-index" 2013 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 2014 | dependencies = [ 2015 | "autocfg", 2016 | "hashbrown 0.12.3", 2017 | ] 2018 | 2019 | [[package]] 2020 | name = "indexmap" 2021 | version = "2.2.6" 2022 | source = "registry+https://github.com/rust-lang/crates.io-index" 2023 | checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" 2024 | dependencies = [ 2025 | "equivalent", 2026 | "hashbrown 0.14.5", 2027 | ] 2028 | 2029 | [[package]] 2030 | name = "indicatif" 2031 | version = "0.17.8" 2032 | source = "registry+https://github.com/rust-lang/crates.io-index" 2033 | checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" 2034 | dependencies = [ 2035 | "console", 2036 | "instant", 2037 | "number_prefix", 2038 | "portable-atomic", 2039 | "unicode-width", 2040 | ] 2041 | 2042 | [[package]] 2043 | name = "instant" 2044 | version = "0.1.13" 2045 | source = "registry+https://github.com/rust-lang/crates.io-index" 2046 | checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 2047 | dependencies = [ 2048 | "cfg-if", 2049 | ] 2050 | 2051 | [[package]] 2052 | name = "ipnet" 2053 | version = "2.9.0" 2054 | source = "registry+https://github.com/rust-lang/crates.io-index" 2055 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 2056 | 2057 | [[package]] 2058 | name = "is_terminal_polyfill" 2059 | version = "1.70.0" 2060 | source = "registry+https://github.com/rust-lang/crates.io-index" 2061 | checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" 2062 | 2063 | [[package]] 2064 | name = "itertools" 2065 | version = "0.10.5" 2066 | source = "registry+https://github.com/rust-lang/crates.io-index" 2067 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 2068 | dependencies = [ 2069 | "either", 2070 | ] 2071 | 2072 | [[package]] 2073 | name = "itoa" 2074 | version = "1.0.11" 2075 | source = "registry+https://github.com/rust-lang/crates.io-index" 2076 | checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" 2077 | 2078 | [[package]] 2079 | name = "jobserver" 2080 | version = "0.1.31" 2081 | source = "registry+https://github.com/rust-lang/crates.io-index" 2082 | checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" 2083 | dependencies = [ 2084 | "libc", 2085 | ] 2086 | 2087 | [[package]] 2088 | name = "js-sys" 2089 | version = "0.3.69" 2090 | source = "registry+https://github.com/rust-lang/crates.io-index" 2091 | checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" 2092 | dependencies = [ 2093 | "wasm-bindgen", 2094 | ] 2095 | 2096 | [[package]] 2097 | name = "jsonrpc-core" 2098 | version = "18.0.0" 2099 | source = "registry+https://github.com/rust-lang/crates.io-index" 2100 | checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" 2101 | dependencies = [ 2102 | "futures", 2103 | "futures-executor", 2104 | "futures-util", 2105 | "log", 2106 | "serde", 2107 | "serde_derive", 2108 | "serde_json", 2109 | ] 2110 | 2111 | [[package]] 2112 | name = "keccak" 2113 | version = "0.1.5" 2114 | source = "registry+https://github.com/rust-lang/crates.io-index" 2115 | checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" 2116 | dependencies = [ 2117 | "cpufeatures", 2118 | ] 2119 | 2120 | [[package]] 2121 | name = "keccak-const" 2122 | version = "0.2.0" 2123 | source = "registry+https://github.com/rust-lang/crates.io-index" 2124 | checksum = "57d8d8ce877200136358e0bbff3a77965875db3af755a11e1fa6b1b3e2df13ea" 2125 | 2126 | [[package]] 2127 | name = "lazy_static" 2128 | version = "1.5.0" 2129 | source = "registry+https://github.com/rust-lang/crates.io-index" 2130 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 2131 | 2132 | [[package]] 2133 | name = "libc" 2134 | version = "0.2.155" 2135 | source = "registry+https://github.com/rust-lang/crates.io-index" 2136 | checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" 2137 | 2138 | [[package]] 2139 | name = "libredox" 2140 | version = "0.1.3" 2141 | source = "registry+https://github.com/rust-lang/crates.io-index" 2142 | checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" 2143 | dependencies = [ 2144 | "bitflags 2.6.0", 2145 | "libc", 2146 | ] 2147 | 2148 | [[package]] 2149 | name = "libsecp256k1" 2150 | version = "0.6.0" 2151 | source = "registry+https://github.com/rust-lang/crates.io-index" 2152 | checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" 2153 | dependencies = [ 2154 | "arrayref", 2155 | "base64 0.12.3", 2156 | "digest 0.9.0", 2157 | "hmac-drbg", 2158 | "libsecp256k1-core", 2159 | "libsecp256k1-gen-ecmult", 2160 | "libsecp256k1-gen-genmult", 2161 | "rand 0.7.3", 2162 | "serde", 2163 | "sha2 0.9.9", 2164 | "typenum", 2165 | ] 2166 | 2167 | [[package]] 2168 | name = "libsecp256k1-core" 2169 | version = "0.2.2" 2170 | source = "registry+https://github.com/rust-lang/crates.io-index" 2171 | checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" 2172 | dependencies = [ 2173 | "crunchy", 2174 | "digest 0.9.0", 2175 | "subtle", 2176 | ] 2177 | 2178 | [[package]] 2179 | name = "libsecp256k1-gen-ecmult" 2180 | version = "0.2.1" 2181 | source = "registry+https://github.com/rust-lang/crates.io-index" 2182 | checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" 2183 | dependencies = [ 2184 | "libsecp256k1-core", 2185 | ] 2186 | 2187 | [[package]] 2188 | name = "libsecp256k1-gen-genmult" 2189 | version = "0.2.1" 2190 | source = "registry+https://github.com/rust-lang/crates.io-index" 2191 | checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" 2192 | dependencies = [ 2193 | "libsecp256k1-core", 2194 | ] 2195 | 2196 | [[package]] 2197 | name = "light-poseidon" 2198 | version = "0.2.0" 2199 | source = "registry+https://github.com/rust-lang/crates.io-index" 2200 | checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" 2201 | dependencies = [ 2202 | "ark-bn254", 2203 | "ark-ff", 2204 | "num-bigint 0.4.6", 2205 | "thiserror", 2206 | ] 2207 | 2208 | [[package]] 2209 | name = "linux-raw-sys" 2210 | version = "0.4.14" 2211 | source = "registry+https://github.com/rust-lang/crates.io-index" 2212 | checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" 2213 | 2214 | [[package]] 2215 | name = "lock_api" 2216 | version = "0.4.12" 2217 | source = "registry+https://github.com/rust-lang/crates.io-index" 2218 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 2219 | dependencies = [ 2220 | "autocfg", 2221 | "scopeguard", 2222 | ] 2223 | 2224 | [[package]] 2225 | name = "log" 2226 | version = "0.4.22" 2227 | source = "registry+https://github.com/rust-lang/crates.io-index" 2228 | checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" 2229 | 2230 | [[package]] 2231 | name = "memchr" 2232 | version = "2.7.4" 2233 | source = "registry+https://github.com/rust-lang/crates.io-index" 2234 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 2235 | 2236 | [[package]] 2237 | name = "memmap2" 2238 | version = "0.5.10" 2239 | source = "registry+https://github.com/rust-lang/crates.io-index" 2240 | checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" 2241 | dependencies = [ 2242 | "libc", 2243 | ] 2244 | 2245 | [[package]] 2246 | name = "memoffset" 2247 | version = "0.7.1" 2248 | source = "registry+https://github.com/rust-lang/crates.io-index" 2249 | checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" 2250 | dependencies = [ 2251 | "autocfg", 2252 | ] 2253 | 2254 | [[package]] 2255 | name = "memoffset" 2256 | version = "0.9.1" 2257 | source = "registry+https://github.com/rust-lang/crates.io-index" 2258 | checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 2259 | dependencies = [ 2260 | "autocfg", 2261 | ] 2262 | 2263 | [[package]] 2264 | name = "merlin" 2265 | version = "3.0.0" 2266 | source = "registry+https://github.com/rust-lang/crates.io-index" 2267 | checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" 2268 | dependencies = [ 2269 | "byteorder", 2270 | "keccak", 2271 | "rand_core 0.6.4", 2272 | "zeroize", 2273 | ] 2274 | 2275 | [[package]] 2276 | name = "mime" 2277 | version = "0.3.17" 2278 | source = "registry+https://github.com/rust-lang/crates.io-index" 2279 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2280 | 2281 | [[package]] 2282 | name = "minimal-lexical" 2283 | version = "0.2.1" 2284 | source = "registry+https://github.com/rust-lang/crates.io-index" 2285 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2286 | 2287 | [[package]] 2288 | name = "miniz_oxide" 2289 | version = "0.7.4" 2290 | source = "registry+https://github.com/rust-lang/crates.io-index" 2291 | checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" 2292 | dependencies = [ 2293 | "adler", 2294 | ] 2295 | 2296 | [[package]] 2297 | name = "mio" 2298 | version = "0.8.11" 2299 | source = "registry+https://github.com/rust-lang/crates.io-index" 2300 | checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" 2301 | dependencies = [ 2302 | "libc", 2303 | "wasi 0.11.0+wasi-snapshot-preview1", 2304 | "windows-sys 0.48.0", 2305 | ] 2306 | 2307 | [[package]] 2308 | name = "mpl-token-metadata" 2309 | version = "4.1.2" 2310 | source = "registry+https://github.com/rust-lang/crates.io-index" 2311 | checksum = "caf0f61b553e424a6234af1268456972ee66c2222e1da89079242251fa7479e5" 2312 | dependencies = [ 2313 | "borsh 0.10.3", 2314 | "num-derive 0.3.3", 2315 | "num-traits", 2316 | "solana-program", 2317 | "thiserror", 2318 | ] 2319 | 2320 | [[package]] 2321 | name = "nix" 2322 | version = "0.26.4" 2323 | source = "registry+https://github.com/rust-lang/crates.io-index" 2324 | checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" 2325 | dependencies = [ 2326 | "bitflags 1.3.2", 2327 | "cfg-if", 2328 | "libc", 2329 | "memoffset 0.7.1", 2330 | "pin-utils", 2331 | ] 2332 | 2333 | [[package]] 2334 | name = "nom" 2335 | version = "7.1.3" 2336 | source = "registry+https://github.com/rust-lang/crates.io-index" 2337 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2338 | dependencies = [ 2339 | "memchr", 2340 | "minimal-lexical", 2341 | ] 2342 | 2343 | [[package]] 2344 | name = "num" 2345 | version = "0.2.1" 2346 | source = "registry+https://github.com/rust-lang/crates.io-index" 2347 | checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" 2348 | dependencies = [ 2349 | "num-bigint 0.2.6", 2350 | "num-complex", 2351 | "num-integer", 2352 | "num-iter", 2353 | "num-rational", 2354 | "num-traits", 2355 | ] 2356 | 2357 | [[package]] 2358 | name = "num-bigint" 2359 | version = "0.2.6" 2360 | source = "registry+https://github.com/rust-lang/crates.io-index" 2361 | checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" 2362 | dependencies = [ 2363 | "autocfg", 2364 | "num-integer", 2365 | "num-traits", 2366 | ] 2367 | 2368 | [[package]] 2369 | name = "num-bigint" 2370 | version = "0.4.6" 2371 | source = "registry+https://github.com/rust-lang/crates.io-index" 2372 | checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 2373 | dependencies = [ 2374 | "num-integer", 2375 | "num-traits", 2376 | ] 2377 | 2378 | [[package]] 2379 | name = "num-complex" 2380 | version = "0.2.4" 2381 | source = "registry+https://github.com/rust-lang/crates.io-index" 2382 | checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" 2383 | dependencies = [ 2384 | "autocfg", 2385 | "num-traits", 2386 | ] 2387 | 2388 | [[package]] 2389 | name = "num-conv" 2390 | version = "0.1.0" 2391 | source = "registry+https://github.com/rust-lang/crates.io-index" 2392 | checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2393 | 2394 | [[package]] 2395 | name = "num-derive" 2396 | version = "0.3.3" 2397 | source = "registry+https://github.com/rust-lang/crates.io-index" 2398 | checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" 2399 | dependencies = [ 2400 | "proc-macro2", 2401 | "quote", 2402 | "syn 1.0.109", 2403 | ] 2404 | 2405 | [[package]] 2406 | name = "num-derive" 2407 | version = "0.4.2" 2408 | source = "registry+https://github.com/rust-lang/crates.io-index" 2409 | checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 2410 | dependencies = [ 2411 | "proc-macro2", 2412 | "quote", 2413 | "syn 2.0.70", 2414 | ] 2415 | 2416 | [[package]] 2417 | name = "num-integer" 2418 | version = "0.1.46" 2419 | source = "registry+https://github.com/rust-lang/crates.io-index" 2420 | checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2421 | dependencies = [ 2422 | "num-traits", 2423 | ] 2424 | 2425 | [[package]] 2426 | name = "num-iter" 2427 | version = "0.1.45" 2428 | source = "registry+https://github.com/rust-lang/crates.io-index" 2429 | checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 2430 | dependencies = [ 2431 | "autocfg", 2432 | "num-integer", 2433 | "num-traits", 2434 | ] 2435 | 2436 | [[package]] 2437 | name = "num-rational" 2438 | version = "0.2.4" 2439 | source = "registry+https://github.com/rust-lang/crates.io-index" 2440 | checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" 2441 | dependencies = [ 2442 | "autocfg", 2443 | "num-bigint 0.2.6", 2444 | "num-integer", 2445 | "num-traits", 2446 | ] 2447 | 2448 | [[package]] 2449 | name = "num-traits" 2450 | version = "0.2.19" 2451 | source = "registry+https://github.com/rust-lang/crates.io-index" 2452 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2453 | dependencies = [ 2454 | "autocfg", 2455 | ] 2456 | 2457 | [[package]] 2458 | name = "num_cpus" 2459 | version = "1.16.0" 2460 | source = "registry+https://github.com/rust-lang/crates.io-index" 2461 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 2462 | dependencies = [ 2463 | "hermit-abi 0.3.9", 2464 | "libc", 2465 | ] 2466 | 2467 | [[package]] 2468 | name = "num_enum" 2469 | version = "0.6.1" 2470 | source = "registry+https://github.com/rust-lang/crates.io-index" 2471 | checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" 2472 | dependencies = [ 2473 | "num_enum_derive 0.6.1", 2474 | ] 2475 | 2476 | [[package]] 2477 | name = "num_enum" 2478 | version = "0.7.2" 2479 | source = "registry+https://github.com/rust-lang/crates.io-index" 2480 | checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" 2481 | dependencies = [ 2482 | "num_enum_derive 0.7.2", 2483 | ] 2484 | 2485 | [[package]] 2486 | name = "num_enum_derive" 2487 | version = "0.6.1" 2488 | source = "registry+https://github.com/rust-lang/crates.io-index" 2489 | checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" 2490 | dependencies = [ 2491 | "proc-macro-crate 1.3.1", 2492 | "proc-macro2", 2493 | "quote", 2494 | "syn 2.0.70", 2495 | ] 2496 | 2497 | [[package]] 2498 | name = "num_enum_derive" 2499 | version = "0.7.2" 2500 | source = "registry+https://github.com/rust-lang/crates.io-index" 2501 | checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" 2502 | dependencies = [ 2503 | "proc-macro-crate 3.1.0", 2504 | "proc-macro2", 2505 | "quote", 2506 | "syn 2.0.70", 2507 | ] 2508 | 2509 | [[package]] 2510 | name = "number_prefix" 2511 | version = "0.4.0" 2512 | source = "registry+https://github.com/rust-lang/crates.io-index" 2513 | checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" 2514 | 2515 | [[package]] 2516 | name = "object" 2517 | version = "0.36.1" 2518 | source = "registry+https://github.com/rust-lang/crates.io-index" 2519 | checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" 2520 | dependencies = [ 2521 | "memchr", 2522 | ] 2523 | 2524 | [[package]] 2525 | name = "oid-registry" 2526 | version = "0.6.1" 2527 | source = "registry+https://github.com/rust-lang/crates.io-index" 2528 | checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" 2529 | dependencies = [ 2530 | "asn1-rs", 2531 | ] 2532 | 2533 | [[package]] 2534 | name = "once_cell" 2535 | version = "1.19.0" 2536 | source = "registry+https://github.com/rust-lang/crates.io-index" 2537 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 2538 | 2539 | [[package]] 2540 | name = "opaque-debug" 2541 | version = "0.3.1" 2542 | source = "registry+https://github.com/rust-lang/crates.io-index" 2543 | checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" 2544 | 2545 | [[package]] 2546 | name = "openssl-probe" 2547 | version = "0.1.5" 2548 | source = "registry+https://github.com/rust-lang/crates.io-index" 2549 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 2550 | 2551 | [[package]] 2552 | name = "ore-api" 2553 | version = "2.0.0-beta.3" 2554 | source = "registry+https://github.com/rust-lang/crates.io-index" 2555 | checksum = "8bad98916e2ec619ac66509b1ec08c3a1b2f404fe46c9775bdd41f6cbe6c9f43" 2556 | dependencies = [ 2557 | "array-const-fn-init", 2558 | "bytemuck", 2559 | "const-crypto", 2560 | "drillx", 2561 | "mpl-token-metadata", 2562 | "num_enum 0.7.2", 2563 | "ore-utils", 2564 | "shank", 2565 | "solana-program", 2566 | "spl-associated-token-account", 2567 | "spl-token", 2568 | "static_assertions", 2569 | "thiserror", 2570 | ] 2571 | 2572 | [[package]] 2573 | name = "ore-cli" 2574 | version = "1.0.0-alpha.3" 2575 | dependencies = [ 2576 | "bincode", 2577 | "bs58 0.5.1", 2578 | "bytemuck", 2579 | "cached", 2580 | "chrono", 2581 | "clap 4.5.9", 2582 | "colored", 2583 | "drillx", 2584 | "futures", 2585 | "num_cpus", 2586 | "ore-api", 2587 | "ore-utils", 2588 | "rand 0.8.5", 2589 | "solana-cli-config", 2590 | "solana-client", 2591 | "solana-program", 2592 | "solana-rpc-client", 2593 | "solana-sdk", 2594 | "solana-transaction-status", 2595 | "spl-associated-token-account", 2596 | "spl-token", 2597 | "tokio", 2598 | ] 2599 | 2600 | [[package]] 2601 | name = "ore-utils" 2602 | version = "2.0.0-beta.2" 2603 | source = "registry+https://github.com/rust-lang/crates.io-index" 2604 | checksum = "a57b6b200cb0a57758d440d3d0bbff3adfd1dfae377fb01bb68da66a767e7dd2" 2605 | dependencies = [ 2606 | "bytemuck", 2607 | "solana-program", 2608 | "spl-associated-token-account", 2609 | "spl-token", 2610 | ] 2611 | 2612 | [[package]] 2613 | name = "os_str_bytes" 2614 | version = "6.6.1" 2615 | source = "registry+https://github.com/rust-lang/crates.io-index" 2616 | checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" 2617 | 2618 | [[package]] 2619 | name = "parking_lot" 2620 | version = "0.12.3" 2621 | source = "registry+https://github.com/rust-lang/crates.io-index" 2622 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 2623 | dependencies = [ 2624 | "lock_api", 2625 | "parking_lot_core", 2626 | ] 2627 | 2628 | [[package]] 2629 | name = "parking_lot_core" 2630 | version = "0.9.10" 2631 | source = "registry+https://github.com/rust-lang/crates.io-index" 2632 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 2633 | dependencies = [ 2634 | "cfg-if", 2635 | "libc", 2636 | "redox_syscall", 2637 | "smallvec", 2638 | "windows-targets 0.52.6", 2639 | ] 2640 | 2641 | [[package]] 2642 | name = "paste" 2643 | version = "1.0.15" 2644 | source = "registry+https://github.com/rust-lang/crates.io-index" 2645 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 2646 | 2647 | [[package]] 2648 | name = "pbkdf2" 2649 | version = "0.4.0" 2650 | source = "registry+https://github.com/rust-lang/crates.io-index" 2651 | checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" 2652 | dependencies = [ 2653 | "crypto-mac", 2654 | ] 2655 | 2656 | [[package]] 2657 | name = "pbkdf2" 2658 | version = "0.11.0" 2659 | source = "registry+https://github.com/rust-lang/crates.io-index" 2660 | checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" 2661 | dependencies = [ 2662 | "digest 0.10.7", 2663 | ] 2664 | 2665 | [[package]] 2666 | name = "pem" 2667 | version = "1.1.1" 2668 | source = "registry+https://github.com/rust-lang/crates.io-index" 2669 | checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" 2670 | dependencies = [ 2671 | "base64 0.13.1", 2672 | ] 2673 | 2674 | [[package]] 2675 | name = "percent-encoding" 2676 | version = "2.3.1" 2677 | source = "registry+https://github.com/rust-lang/crates.io-index" 2678 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2679 | 2680 | [[package]] 2681 | name = "percentage" 2682 | version = "0.1.0" 2683 | source = "registry+https://github.com/rust-lang/crates.io-index" 2684 | checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" 2685 | dependencies = [ 2686 | "num", 2687 | ] 2688 | 2689 | [[package]] 2690 | name = "pin-project-lite" 2691 | version = "0.2.14" 2692 | source = "registry+https://github.com/rust-lang/crates.io-index" 2693 | checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 2694 | 2695 | [[package]] 2696 | name = "pin-utils" 2697 | version = "0.1.0" 2698 | source = "registry+https://github.com/rust-lang/crates.io-index" 2699 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2700 | 2701 | [[package]] 2702 | name = "pkcs8" 2703 | version = "0.8.0" 2704 | source = "registry+https://github.com/rust-lang/crates.io-index" 2705 | checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" 2706 | dependencies = [ 2707 | "der", 2708 | "spki", 2709 | "zeroize", 2710 | ] 2711 | 2712 | [[package]] 2713 | name = "pkg-config" 2714 | version = "0.3.30" 2715 | source = "registry+https://github.com/rust-lang/crates.io-index" 2716 | checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 2717 | 2718 | [[package]] 2719 | name = "plain" 2720 | version = "0.2.3" 2721 | source = "registry+https://github.com/rust-lang/crates.io-index" 2722 | checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" 2723 | 2724 | [[package]] 2725 | name = "polyval" 2726 | version = "0.5.3" 2727 | source = "registry+https://github.com/rust-lang/crates.io-index" 2728 | checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" 2729 | dependencies = [ 2730 | "cfg-if", 2731 | "cpufeatures", 2732 | "opaque-debug", 2733 | "universal-hash", 2734 | ] 2735 | 2736 | [[package]] 2737 | name = "portable-atomic" 2738 | version = "1.6.0" 2739 | source = "registry+https://github.com/rust-lang/crates.io-index" 2740 | checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" 2741 | 2742 | [[package]] 2743 | name = "powerfmt" 2744 | version = "0.2.0" 2745 | source = "registry+https://github.com/rust-lang/crates.io-index" 2746 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2747 | 2748 | [[package]] 2749 | name = "ppv-lite86" 2750 | version = "0.2.17" 2751 | source = "registry+https://github.com/rust-lang/crates.io-index" 2752 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2753 | 2754 | [[package]] 2755 | name = "proc-macro-crate" 2756 | version = "0.1.5" 2757 | source = "registry+https://github.com/rust-lang/crates.io-index" 2758 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 2759 | dependencies = [ 2760 | "toml", 2761 | ] 2762 | 2763 | [[package]] 2764 | name = "proc-macro-crate" 2765 | version = "1.3.1" 2766 | source = "registry+https://github.com/rust-lang/crates.io-index" 2767 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 2768 | dependencies = [ 2769 | "once_cell", 2770 | "toml_edit 0.19.15", 2771 | ] 2772 | 2773 | [[package]] 2774 | name = "proc-macro-crate" 2775 | version = "3.1.0" 2776 | source = "registry+https://github.com/rust-lang/crates.io-index" 2777 | checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" 2778 | dependencies = [ 2779 | "toml_edit 0.21.1", 2780 | ] 2781 | 2782 | [[package]] 2783 | name = "proc-macro-error" 2784 | version = "1.0.4" 2785 | source = "registry+https://github.com/rust-lang/crates.io-index" 2786 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2787 | dependencies = [ 2788 | "proc-macro-error-attr", 2789 | "proc-macro2", 2790 | "quote", 2791 | "syn 1.0.109", 2792 | "version_check", 2793 | ] 2794 | 2795 | [[package]] 2796 | name = "proc-macro-error-attr" 2797 | version = "1.0.4" 2798 | source = "registry+https://github.com/rust-lang/crates.io-index" 2799 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2800 | dependencies = [ 2801 | "proc-macro2", 2802 | "quote", 2803 | "version_check", 2804 | ] 2805 | 2806 | [[package]] 2807 | name = "proc-macro2" 2808 | version = "1.0.86" 2809 | source = "registry+https://github.com/rust-lang/crates.io-index" 2810 | checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" 2811 | dependencies = [ 2812 | "unicode-ident", 2813 | ] 2814 | 2815 | [[package]] 2816 | name = "qstring" 2817 | version = "0.7.2" 2818 | source = "registry+https://github.com/rust-lang/crates.io-index" 2819 | checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" 2820 | dependencies = [ 2821 | "percent-encoding", 2822 | ] 2823 | 2824 | [[package]] 2825 | name = "qualifier_attr" 2826 | version = "0.2.2" 2827 | source = "registry+https://github.com/rust-lang/crates.io-index" 2828 | checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" 2829 | dependencies = [ 2830 | "proc-macro2", 2831 | "quote", 2832 | "syn 2.0.70", 2833 | ] 2834 | 2835 | [[package]] 2836 | name = "quinn" 2837 | version = "0.10.2" 2838 | source = "registry+https://github.com/rust-lang/crates.io-index" 2839 | checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" 2840 | dependencies = [ 2841 | "bytes", 2842 | "pin-project-lite", 2843 | "quinn-proto", 2844 | "quinn-udp", 2845 | "rustc-hash", 2846 | "rustls", 2847 | "thiserror", 2848 | "tokio", 2849 | "tracing", 2850 | ] 2851 | 2852 | [[package]] 2853 | name = "quinn-proto" 2854 | version = "0.10.6" 2855 | source = "registry+https://github.com/rust-lang/crates.io-index" 2856 | checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" 2857 | dependencies = [ 2858 | "bytes", 2859 | "rand 0.8.5", 2860 | "ring 0.16.20", 2861 | "rustc-hash", 2862 | "rustls", 2863 | "rustls-native-certs", 2864 | "slab", 2865 | "thiserror", 2866 | "tinyvec", 2867 | "tracing", 2868 | ] 2869 | 2870 | [[package]] 2871 | name = "quinn-udp" 2872 | version = "0.4.1" 2873 | source = "registry+https://github.com/rust-lang/crates.io-index" 2874 | checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" 2875 | dependencies = [ 2876 | "bytes", 2877 | "libc", 2878 | "socket2", 2879 | "tracing", 2880 | "windows-sys 0.48.0", 2881 | ] 2882 | 2883 | [[package]] 2884 | name = "quote" 2885 | version = "1.0.36" 2886 | source = "registry+https://github.com/rust-lang/crates.io-index" 2887 | checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" 2888 | dependencies = [ 2889 | "proc-macro2", 2890 | ] 2891 | 2892 | [[package]] 2893 | name = "rand" 2894 | version = "0.7.3" 2895 | source = "registry+https://github.com/rust-lang/crates.io-index" 2896 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 2897 | dependencies = [ 2898 | "getrandom 0.1.16", 2899 | "libc", 2900 | "rand_chacha 0.2.2", 2901 | "rand_core 0.5.1", 2902 | "rand_hc", 2903 | ] 2904 | 2905 | [[package]] 2906 | name = "rand" 2907 | version = "0.8.5" 2908 | source = "registry+https://github.com/rust-lang/crates.io-index" 2909 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2910 | dependencies = [ 2911 | "libc", 2912 | "rand_chacha 0.3.1", 2913 | "rand_core 0.6.4", 2914 | ] 2915 | 2916 | [[package]] 2917 | name = "rand_chacha" 2918 | version = "0.2.2" 2919 | source = "registry+https://github.com/rust-lang/crates.io-index" 2920 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 2921 | dependencies = [ 2922 | "ppv-lite86", 2923 | "rand_core 0.5.1", 2924 | ] 2925 | 2926 | [[package]] 2927 | name = "rand_chacha" 2928 | version = "0.3.1" 2929 | source = "registry+https://github.com/rust-lang/crates.io-index" 2930 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2931 | dependencies = [ 2932 | "ppv-lite86", 2933 | "rand_core 0.6.4", 2934 | ] 2935 | 2936 | [[package]] 2937 | name = "rand_core" 2938 | version = "0.5.1" 2939 | source = "registry+https://github.com/rust-lang/crates.io-index" 2940 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 2941 | dependencies = [ 2942 | "getrandom 0.1.16", 2943 | ] 2944 | 2945 | [[package]] 2946 | name = "rand_core" 2947 | version = "0.6.4" 2948 | source = "registry+https://github.com/rust-lang/crates.io-index" 2949 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2950 | dependencies = [ 2951 | "getrandom 0.2.15", 2952 | ] 2953 | 2954 | [[package]] 2955 | name = "rand_hc" 2956 | version = "0.2.0" 2957 | source = "registry+https://github.com/rust-lang/crates.io-index" 2958 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2959 | dependencies = [ 2960 | "rand_core 0.5.1", 2961 | ] 2962 | 2963 | [[package]] 2964 | name = "rand_xoshiro" 2965 | version = "0.6.0" 2966 | source = "registry+https://github.com/rust-lang/crates.io-index" 2967 | checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" 2968 | dependencies = [ 2969 | "rand_core 0.6.4", 2970 | ] 2971 | 2972 | [[package]] 2973 | name = "rayon" 2974 | version = "1.10.0" 2975 | source = "registry+https://github.com/rust-lang/crates.io-index" 2976 | checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" 2977 | dependencies = [ 2978 | "either", 2979 | "rayon-core", 2980 | ] 2981 | 2982 | [[package]] 2983 | name = "rayon-core" 2984 | version = "1.12.1" 2985 | source = "registry+https://github.com/rust-lang/crates.io-index" 2986 | checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" 2987 | dependencies = [ 2988 | "crossbeam-deque", 2989 | "crossbeam-utils", 2990 | ] 2991 | 2992 | [[package]] 2993 | name = "rcgen" 2994 | version = "0.10.0" 2995 | source = "registry+https://github.com/rust-lang/crates.io-index" 2996 | checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" 2997 | dependencies = [ 2998 | "pem", 2999 | "ring 0.16.20", 3000 | "time", 3001 | "yasna", 3002 | ] 3003 | 3004 | [[package]] 3005 | name = "redox_syscall" 3006 | version = "0.5.2" 3007 | source = "registry+https://github.com/rust-lang/crates.io-index" 3008 | checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" 3009 | dependencies = [ 3010 | "bitflags 2.6.0", 3011 | ] 3012 | 3013 | [[package]] 3014 | name = "redox_users" 3015 | version = "0.4.5" 3016 | source = "registry+https://github.com/rust-lang/crates.io-index" 3017 | checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" 3018 | dependencies = [ 3019 | "getrandom 0.2.15", 3020 | "libredox", 3021 | "thiserror", 3022 | ] 3023 | 3024 | [[package]] 3025 | name = "regex" 3026 | version = "1.10.5" 3027 | source = "registry+https://github.com/rust-lang/crates.io-index" 3028 | checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" 3029 | dependencies = [ 3030 | "aho-corasick", 3031 | "memchr", 3032 | "regex-automata", 3033 | "regex-syntax", 3034 | ] 3035 | 3036 | [[package]] 3037 | name = "regex-automata" 3038 | version = "0.4.7" 3039 | source = "registry+https://github.com/rust-lang/crates.io-index" 3040 | checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" 3041 | dependencies = [ 3042 | "aho-corasick", 3043 | "memchr", 3044 | "regex-syntax", 3045 | ] 3046 | 3047 | [[package]] 3048 | name = "regex-syntax" 3049 | version = "0.8.4" 3050 | source = "registry+https://github.com/rust-lang/crates.io-index" 3051 | checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" 3052 | 3053 | [[package]] 3054 | name = "reqwest" 3055 | version = "0.11.27" 3056 | source = "registry+https://github.com/rust-lang/crates.io-index" 3057 | checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" 3058 | dependencies = [ 3059 | "async-compression", 3060 | "base64 0.21.7", 3061 | "bytes", 3062 | "encoding_rs", 3063 | "futures-core", 3064 | "futures-util", 3065 | "h2", 3066 | "http", 3067 | "http-body", 3068 | "hyper", 3069 | "hyper-rustls", 3070 | "ipnet", 3071 | "js-sys", 3072 | "log", 3073 | "mime", 3074 | "once_cell", 3075 | "percent-encoding", 3076 | "pin-project-lite", 3077 | "rustls", 3078 | "rustls-pemfile", 3079 | "serde", 3080 | "serde_json", 3081 | "serde_urlencoded", 3082 | "sync_wrapper", 3083 | "system-configuration", 3084 | "tokio", 3085 | "tokio-rustls", 3086 | "tokio-util", 3087 | "tower-service", 3088 | "url", 3089 | "wasm-bindgen", 3090 | "wasm-bindgen-futures", 3091 | "web-sys", 3092 | "webpki-roots 0.25.4", 3093 | "winreg", 3094 | ] 3095 | 3096 | [[package]] 3097 | name = "ring" 3098 | version = "0.16.20" 3099 | source = "registry+https://github.com/rust-lang/crates.io-index" 3100 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 3101 | dependencies = [ 3102 | "cc", 3103 | "libc", 3104 | "once_cell", 3105 | "spin 0.5.2", 3106 | "untrusted 0.7.1", 3107 | "web-sys", 3108 | "winapi", 3109 | ] 3110 | 3111 | [[package]] 3112 | name = "ring" 3113 | version = "0.17.8" 3114 | source = "registry+https://github.com/rust-lang/crates.io-index" 3115 | checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" 3116 | dependencies = [ 3117 | "cc", 3118 | "cfg-if", 3119 | "getrandom 0.2.15", 3120 | "libc", 3121 | "spin 0.9.8", 3122 | "untrusted 0.9.0", 3123 | "windows-sys 0.52.0", 3124 | ] 3125 | 3126 | [[package]] 3127 | name = "rpassword" 3128 | version = "7.3.1" 3129 | source = "registry+https://github.com/rust-lang/crates.io-index" 3130 | checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" 3131 | dependencies = [ 3132 | "libc", 3133 | "rtoolbox", 3134 | "windows-sys 0.48.0", 3135 | ] 3136 | 3137 | [[package]] 3138 | name = "rtoolbox" 3139 | version = "0.0.2" 3140 | source = "registry+https://github.com/rust-lang/crates.io-index" 3141 | checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" 3142 | dependencies = [ 3143 | "libc", 3144 | "windows-sys 0.48.0", 3145 | ] 3146 | 3147 | [[package]] 3148 | name = "rustc-demangle" 3149 | version = "0.1.24" 3150 | source = "registry+https://github.com/rust-lang/crates.io-index" 3151 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 3152 | 3153 | [[package]] 3154 | name = "rustc-hash" 3155 | version = "1.1.0" 3156 | source = "registry+https://github.com/rust-lang/crates.io-index" 3157 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 3158 | 3159 | [[package]] 3160 | name = "rustc_version" 3161 | version = "0.4.0" 3162 | source = "registry+https://github.com/rust-lang/crates.io-index" 3163 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 3164 | dependencies = [ 3165 | "semver", 3166 | ] 3167 | 3168 | [[package]] 3169 | name = "rusticata-macros" 3170 | version = "4.1.0" 3171 | source = "registry+https://github.com/rust-lang/crates.io-index" 3172 | checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" 3173 | dependencies = [ 3174 | "nom", 3175 | ] 3176 | 3177 | [[package]] 3178 | name = "rustix" 3179 | version = "0.38.34" 3180 | source = "registry+https://github.com/rust-lang/crates.io-index" 3181 | checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" 3182 | dependencies = [ 3183 | "bitflags 2.6.0", 3184 | "errno", 3185 | "libc", 3186 | "linux-raw-sys", 3187 | "windows-sys 0.52.0", 3188 | ] 3189 | 3190 | [[package]] 3191 | name = "rustls" 3192 | version = "0.21.12" 3193 | source = "registry+https://github.com/rust-lang/crates.io-index" 3194 | checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 3195 | dependencies = [ 3196 | "log", 3197 | "ring 0.17.8", 3198 | "rustls-webpki", 3199 | "sct", 3200 | ] 3201 | 3202 | [[package]] 3203 | name = "rustls-native-certs" 3204 | version = "0.6.3" 3205 | source = "registry+https://github.com/rust-lang/crates.io-index" 3206 | checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" 3207 | dependencies = [ 3208 | "openssl-probe", 3209 | "rustls-pemfile", 3210 | "schannel", 3211 | "security-framework", 3212 | ] 3213 | 3214 | [[package]] 3215 | name = "rustls-pemfile" 3216 | version = "1.0.4" 3217 | source = "registry+https://github.com/rust-lang/crates.io-index" 3218 | checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 3219 | dependencies = [ 3220 | "base64 0.21.7", 3221 | ] 3222 | 3223 | [[package]] 3224 | name = "rustls-webpki" 3225 | version = "0.101.7" 3226 | source = "registry+https://github.com/rust-lang/crates.io-index" 3227 | checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 3228 | dependencies = [ 3229 | "ring 0.17.8", 3230 | "untrusted 0.9.0", 3231 | ] 3232 | 3233 | [[package]] 3234 | name = "rustversion" 3235 | version = "1.0.17" 3236 | source = "registry+https://github.com/rust-lang/crates.io-index" 3237 | checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" 3238 | 3239 | [[package]] 3240 | name = "ryu" 3241 | version = "1.0.18" 3242 | source = "registry+https://github.com/rust-lang/crates.io-index" 3243 | checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" 3244 | 3245 | [[package]] 3246 | name = "schannel" 3247 | version = "0.1.23" 3248 | source = "registry+https://github.com/rust-lang/crates.io-index" 3249 | checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" 3250 | dependencies = [ 3251 | "windows-sys 0.52.0", 3252 | ] 3253 | 3254 | [[package]] 3255 | name = "scopeguard" 3256 | version = "1.2.0" 3257 | source = "registry+https://github.com/rust-lang/crates.io-index" 3258 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3259 | 3260 | [[package]] 3261 | name = "scroll" 3262 | version = "0.11.0" 3263 | source = "registry+https://github.com/rust-lang/crates.io-index" 3264 | checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" 3265 | dependencies = [ 3266 | "scroll_derive", 3267 | ] 3268 | 3269 | [[package]] 3270 | name = "scroll_derive" 3271 | version = "0.11.1" 3272 | source = "registry+https://github.com/rust-lang/crates.io-index" 3273 | checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" 3274 | dependencies = [ 3275 | "proc-macro2", 3276 | "quote", 3277 | "syn 2.0.70", 3278 | ] 3279 | 3280 | [[package]] 3281 | name = "sct" 3282 | version = "0.7.1" 3283 | source = "registry+https://github.com/rust-lang/crates.io-index" 3284 | checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 3285 | dependencies = [ 3286 | "ring 0.17.8", 3287 | "untrusted 0.9.0", 3288 | ] 3289 | 3290 | [[package]] 3291 | name = "security-framework" 3292 | version = "2.11.0" 3293 | source = "registry+https://github.com/rust-lang/crates.io-index" 3294 | checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" 3295 | dependencies = [ 3296 | "bitflags 2.6.0", 3297 | "core-foundation", 3298 | "core-foundation-sys", 3299 | "libc", 3300 | "security-framework-sys", 3301 | ] 3302 | 3303 | [[package]] 3304 | name = "security-framework-sys" 3305 | version = "2.11.0" 3306 | source = "registry+https://github.com/rust-lang/crates.io-index" 3307 | checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" 3308 | dependencies = [ 3309 | "core-foundation-sys", 3310 | "libc", 3311 | ] 3312 | 3313 | [[package]] 3314 | name = "semver" 3315 | version = "1.0.23" 3316 | source = "registry+https://github.com/rust-lang/crates.io-index" 3317 | checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" 3318 | 3319 | [[package]] 3320 | name = "serde" 3321 | version = "1.0.204" 3322 | source = "registry+https://github.com/rust-lang/crates.io-index" 3323 | checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" 3324 | dependencies = [ 3325 | "serde_derive", 3326 | ] 3327 | 3328 | [[package]] 3329 | name = "serde_bytes" 3330 | version = "0.11.15" 3331 | source = "registry+https://github.com/rust-lang/crates.io-index" 3332 | checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" 3333 | dependencies = [ 3334 | "serde", 3335 | ] 3336 | 3337 | [[package]] 3338 | name = "serde_derive" 3339 | version = "1.0.204" 3340 | source = "registry+https://github.com/rust-lang/crates.io-index" 3341 | checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" 3342 | dependencies = [ 3343 | "proc-macro2", 3344 | "quote", 3345 | "syn 2.0.70", 3346 | ] 3347 | 3348 | [[package]] 3349 | name = "serde_json" 3350 | version = "1.0.120" 3351 | source = "registry+https://github.com/rust-lang/crates.io-index" 3352 | checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" 3353 | dependencies = [ 3354 | "itoa", 3355 | "ryu", 3356 | "serde", 3357 | ] 3358 | 3359 | [[package]] 3360 | name = "serde_urlencoded" 3361 | version = "0.7.1" 3362 | source = "registry+https://github.com/rust-lang/crates.io-index" 3363 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 3364 | dependencies = [ 3365 | "form_urlencoded", 3366 | "itoa", 3367 | "ryu", 3368 | "serde", 3369 | ] 3370 | 3371 | [[package]] 3372 | name = "serde_with" 3373 | version = "2.3.3" 3374 | source = "registry+https://github.com/rust-lang/crates.io-index" 3375 | checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" 3376 | dependencies = [ 3377 | "serde", 3378 | "serde_with_macros", 3379 | ] 3380 | 3381 | [[package]] 3382 | name = "serde_with_macros" 3383 | version = "2.3.3" 3384 | source = "registry+https://github.com/rust-lang/crates.io-index" 3385 | checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" 3386 | dependencies = [ 3387 | "darling 0.20.10", 3388 | "proc-macro2", 3389 | "quote", 3390 | "syn 2.0.70", 3391 | ] 3392 | 3393 | [[package]] 3394 | name = "serde_yaml" 3395 | version = "0.9.34+deprecated" 3396 | source = "registry+https://github.com/rust-lang/crates.io-index" 3397 | checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" 3398 | dependencies = [ 3399 | "indexmap 2.2.6", 3400 | "itoa", 3401 | "ryu", 3402 | "serde", 3403 | "unsafe-libyaml", 3404 | ] 3405 | 3406 | [[package]] 3407 | name = "sha1" 3408 | version = "0.10.6" 3409 | source = "registry+https://github.com/rust-lang/crates.io-index" 3410 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 3411 | dependencies = [ 3412 | "cfg-if", 3413 | "cpufeatures", 3414 | "digest 0.10.7", 3415 | ] 3416 | 3417 | [[package]] 3418 | name = "sha2" 3419 | version = "0.9.9" 3420 | source = "registry+https://github.com/rust-lang/crates.io-index" 3421 | checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" 3422 | dependencies = [ 3423 | "block-buffer 0.9.0", 3424 | "cfg-if", 3425 | "cpufeatures", 3426 | "digest 0.9.0", 3427 | "opaque-debug", 3428 | ] 3429 | 3430 | [[package]] 3431 | name = "sha2" 3432 | version = "0.10.8" 3433 | source = "registry+https://github.com/rust-lang/crates.io-index" 3434 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 3435 | dependencies = [ 3436 | "cfg-if", 3437 | "cpufeatures", 3438 | "digest 0.10.7", 3439 | ] 3440 | 3441 | [[package]] 3442 | name = "sha2-const-stable" 3443 | version = "0.1.0" 3444 | source = "registry+https://github.com/rust-lang/crates.io-index" 3445 | checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" 3446 | 3447 | [[package]] 3448 | name = "sha3" 3449 | version = "0.9.1" 3450 | source = "registry+https://github.com/rust-lang/crates.io-index" 3451 | checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" 3452 | dependencies = [ 3453 | "block-buffer 0.9.0", 3454 | "digest 0.9.0", 3455 | "keccak", 3456 | "opaque-debug", 3457 | ] 3458 | 3459 | [[package]] 3460 | name = "sha3" 3461 | version = "0.10.8" 3462 | source = "registry+https://github.com/rust-lang/crates.io-index" 3463 | checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" 3464 | dependencies = [ 3465 | "digest 0.10.7", 3466 | "keccak", 3467 | ] 3468 | 3469 | [[package]] 3470 | name = "shank" 3471 | version = "0.3.0" 3472 | source = "registry+https://github.com/rust-lang/crates.io-index" 3473 | checksum = "57c9395612d493b69a522725eef78a095f199d43eeb847f4a4b77ec0cacab535" 3474 | dependencies = [ 3475 | "shank_macro", 3476 | ] 3477 | 3478 | [[package]] 3479 | name = "shank_macro" 3480 | version = "0.3.0" 3481 | source = "registry+https://github.com/rust-lang/crates.io-index" 3482 | checksum = "8abef069c02e15f62233679b1e71f3152fac10f90b3ff89ebbad6a25b7497754" 3483 | dependencies = [ 3484 | "proc-macro2", 3485 | "quote", 3486 | "shank_macro_impl", 3487 | "shank_render", 3488 | "syn 1.0.109", 3489 | ] 3490 | 3491 | [[package]] 3492 | name = "shank_macro_impl" 3493 | version = "0.3.0" 3494 | source = "registry+https://github.com/rust-lang/crates.io-index" 3495 | checksum = "64d3d92bfcc6e08f882f2264d774d1a2f46dc36122adc1b76416ba6405a29a9c" 3496 | dependencies = [ 3497 | "anyhow", 3498 | "proc-macro2", 3499 | "quote", 3500 | "serde", 3501 | "syn 1.0.109", 3502 | ] 3503 | 3504 | [[package]] 3505 | name = "shank_render" 3506 | version = "0.3.0" 3507 | source = "registry+https://github.com/rust-lang/crates.io-index" 3508 | checksum = "5a2ea9c6dd95ea311b3b81e63cf4e9c808ed04b098819e6d2c4b1a467d587203" 3509 | dependencies = [ 3510 | "proc-macro2", 3511 | "quote", 3512 | "shank_macro_impl", 3513 | ] 3514 | 3515 | [[package]] 3516 | name = "shell-words" 3517 | version = "1.1.0" 3518 | source = "registry+https://github.com/rust-lang/crates.io-index" 3519 | checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" 3520 | 3521 | [[package]] 3522 | name = "signal-hook-registry" 3523 | version = "1.4.2" 3524 | source = "registry+https://github.com/rust-lang/crates.io-index" 3525 | checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 3526 | dependencies = [ 3527 | "libc", 3528 | ] 3529 | 3530 | [[package]] 3531 | name = "signature" 3532 | version = "1.6.4" 3533 | source = "registry+https://github.com/rust-lang/crates.io-index" 3534 | checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" 3535 | 3536 | [[package]] 3537 | name = "siphasher" 3538 | version = "0.3.11" 3539 | source = "registry+https://github.com/rust-lang/crates.io-index" 3540 | checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 3541 | 3542 | [[package]] 3543 | name = "sized-chunks" 3544 | version = "0.6.5" 3545 | source = "registry+https://github.com/rust-lang/crates.io-index" 3546 | checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" 3547 | dependencies = [ 3548 | "bitmaps", 3549 | "typenum", 3550 | ] 3551 | 3552 | [[package]] 3553 | name = "slab" 3554 | version = "0.4.9" 3555 | source = "registry+https://github.com/rust-lang/crates.io-index" 3556 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 3557 | dependencies = [ 3558 | "autocfg", 3559 | ] 3560 | 3561 | [[package]] 3562 | name = "smallvec" 3563 | version = "1.13.2" 3564 | source = "registry+https://github.com/rust-lang/crates.io-index" 3565 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 3566 | 3567 | [[package]] 3568 | name = "socket2" 3569 | version = "0.5.7" 3570 | source = "registry+https://github.com/rust-lang/crates.io-index" 3571 | checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" 3572 | dependencies = [ 3573 | "libc", 3574 | "windows-sys 0.52.0", 3575 | ] 3576 | 3577 | [[package]] 3578 | name = "solana-account-decoder" 3579 | version = "1.18.17" 3580 | source = "registry+https://github.com/rust-lang/crates.io-index" 3581 | checksum = "4973213a11c2e1b924b36e0c6688682b5aa4623f8d4eeaa1204c32cee524e6d6" 3582 | dependencies = [ 3583 | "Inflector", 3584 | "base64 0.21.7", 3585 | "bincode", 3586 | "bs58 0.4.0", 3587 | "bv", 3588 | "lazy_static", 3589 | "serde", 3590 | "serde_derive", 3591 | "serde_json", 3592 | "solana-config-program", 3593 | "solana-sdk", 3594 | "spl-token", 3595 | "spl-token-2022", 3596 | "spl-token-group-interface", 3597 | "spl-token-metadata-interface", 3598 | "thiserror", 3599 | "zstd", 3600 | ] 3601 | 3602 | [[package]] 3603 | name = "solana-clap-utils" 3604 | version = "1.18.17" 3605 | source = "registry+https://github.com/rust-lang/crates.io-index" 3606 | checksum = "909f4553d0b31bb5b97533a6b64cc321a4eace9112d6efbabcf4408ea1b3f1db" 3607 | dependencies = [ 3608 | "chrono", 3609 | "clap 2.34.0", 3610 | "rpassword", 3611 | "solana-remote-wallet", 3612 | "solana-sdk", 3613 | "thiserror", 3614 | "tiny-bip39", 3615 | "uriparse", 3616 | "url", 3617 | ] 3618 | 3619 | [[package]] 3620 | name = "solana-cli-config" 3621 | version = "1.18.17" 3622 | source = "registry+https://github.com/rust-lang/crates.io-index" 3623 | checksum = "2242c4a0776cdaec1358d0ffc61b32131985a7b2210c491fa465d28c313eb880" 3624 | dependencies = [ 3625 | "dirs-next", 3626 | "lazy_static", 3627 | "serde", 3628 | "serde_derive", 3629 | "serde_yaml", 3630 | "solana-clap-utils", 3631 | "solana-sdk", 3632 | "url", 3633 | ] 3634 | 3635 | [[package]] 3636 | name = "solana-client" 3637 | version = "1.18.17" 3638 | source = "registry+https://github.com/rust-lang/crates.io-index" 3639 | checksum = "c5cc431df6cc1dd964134fa4ec7df765d3af3fae9c2148f96a3c4fb500290633" 3640 | dependencies = [ 3641 | "async-trait", 3642 | "bincode", 3643 | "dashmap", 3644 | "futures", 3645 | "futures-util", 3646 | "indexmap 2.2.6", 3647 | "indicatif", 3648 | "log", 3649 | "quinn", 3650 | "rayon", 3651 | "solana-connection-cache", 3652 | "solana-measure", 3653 | "solana-metrics", 3654 | "solana-pubsub-client", 3655 | "solana-quic-client", 3656 | "solana-rpc-client", 3657 | "solana-rpc-client-api", 3658 | "solana-rpc-client-nonce-utils", 3659 | "solana-sdk", 3660 | "solana-streamer", 3661 | "solana-thin-client", 3662 | "solana-tpu-client", 3663 | "solana-udp-client", 3664 | "thiserror", 3665 | "tokio", 3666 | ] 3667 | 3668 | [[package]] 3669 | name = "solana-config-program" 3670 | version = "1.18.17" 3671 | source = "registry+https://github.com/rust-lang/crates.io-index" 3672 | checksum = "e38b040d3a42e8f7d80c4a86bb0d49d7aed663b56b0fe0ae135d2d145fb7ae3a" 3673 | dependencies = [ 3674 | "bincode", 3675 | "chrono", 3676 | "serde", 3677 | "serde_derive", 3678 | "solana-program-runtime", 3679 | "solana-sdk", 3680 | ] 3681 | 3682 | [[package]] 3683 | name = "solana-connection-cache" 3684 | version = "1.18.17" 3685 | source = "registry+https://github.com/rust-lang/crates.io-index" 3686 | checksum = "ae02622c63943485f0af3d0896626eaf6478e734f0b6bc61c7cc5320963c6e75" 3687 | dependencies = [ 3688 | "async-trait", 3689 | "bincode", 3690 | "crossbeam-channel", 3691 | "futures-util", 3692 | "indexmap 2.2.6", 3693 | "log", 3694 | "rand 0.8.5", 3695 | "rayon", 3696 | "rcgen", 3697 | "solana-measure", 3698 | "solana-metrics", 3699 | "solana-sdk", 3700 | "thiserror", 3701 | "tokio", 3702 | ] 3703 | 3704 | [[package]] 3705 | name = "solana-frozen-abi" 3706 | version = "1.18.17" 3707 | source = "registry+https://github.com/rust-lang/crates.io-index" 3708 | checksum = "4867f66e9527fa44451c861c1dc6d9b2a7c7a668d7c6a297cdefbe39f4395b33" 3709 | dependencies = [ 3710 | "block-buffer 0.10.4", 3711 | "bs58 0.4.0", 3712 | "bv", 3713 | "either", 3714 | "generic-array", 3715 | "im", 3716 | "lazy_static", 3717 | "log", 3718 | "memmap2", 3719 | "rustc_version", 3720 | "serde", 3721 | "serde_bytes", 3722 | "serde_derive", 3723 | "sha2 0.10.8", 3724 | "solana-frozen-abi-macro", 3725 | "subtle", 3726 | "thiserror", 3727 | ] 3728 | 3729 | [[package]] 3730 | name = "solana-frozen-abi-macro" 3731 | version = "1.18.17" 3732 | source = "registry+https://github.com/rust-lang/crates.io-index" 3733 | checksum = "168f24d97347b85f05192df58d6be3e3047a4aadc4001bc1b9e711a5ec878eea" 3734 | dependencies = [ 3735 | "proc-macro2", 3736 | "quote", 3737 | "rustc_version", 3738 | "syn 2.0.70", 3739 | ] 3740 | 3741 | [[package]] 3742 | name = "solana-logger" 3743 | version = "1.18.17" 3744 | source = "registry+https://github.com/rust-lang/crates.io-index" 3745 | checksum = "a0511082fc62f2d086520fff5aa1917c389d8c840930c08ad255ae05952c08a2" 3746 | dependencies = [ 3747 | "env_logger", 3748 | "lazy_static", 3749 | "log", 3750 | ] 3751 | 3752 | [[package]] 3753 | name = "solana-measure" 3754 | version = "1.18.17" 3755 | source = "registry+https://github.com/rust-lang/crates.io-index" 3756 | checksum = "be55a3df105431d25f86f2a7da0cbbde5f54c1f0782ca59367ea4a8037bc6797" 3757 | dependencies = [ 3758 | "log", 3759 | "solana-sdk", 3760 | ] 3761 | 3762 | [[package]] 3763 | name = "solana-metrics" 3764 | version = "1.18.17" 3765 | source = "registry+https://github.com/rust-lang/crates.io-index" 3766 | checksum = "ddec097ed7572804389195128dbd57958b427829153c6cd8ec3343c86fe3cd22" 3767 | dependencies = [ 3768 | "crossbeam-channel", 3769 | "gethostname", 3770 | "lazy_static", 3771 | "log", 3772 | "reqwest", 3773 | "solana-sdk", 3774 | "thiserror", 3775 | ] 3776 | 3777 | [[package]] 3778 | name = "solana-net-utils" 3779 | version = "1.18.17" 3780 | source = "registry+https://github.com/rust-lang/crates.io-index" 3781 | checksum = "258fa7c29fb7605b8d2ed89aa0d43c640d14f4147ad1f5b3fdad19a1ac145ca5" 3782 | dependencies = [ 3783 | "bincode", 3784 | "clap 3.2.25", 3785 | "crossbeam-channel", 3786 | "log", 3787 | "nix", 3788 | "rand 0.8.5", 3789 | "serde", 3790 | "serde_derive", 3791 | "socket2", 3792 | "solana-logger", 3793 | "solana-sdk", 3794 | "solana-version", 3795 | "tokio", 3796 | "url", 3797 | ] 3798 | 3799 | [[package]] 3800 | name = "solana-perf" 3801 | version = "1.18.17" 3802 | source = "registry+https://github.com/rust-lang/crates.io-index" 3803 | checksum = "ca422edcf16a6e64003ca118575ea641f7b750f14a0ad28c71dd84f33dcb912a" 3804 | dependencies = [ 3805 | "ahash 0.8.11", 3806 | "bincode", 3807 | "bv", 3808 | "caps", 3809 | "curve25519-dalek", 3810 | "dlopen2", 3811 | "fnv", 3812 | "lazy_static", 3813 | "libc", 3814 | "log", 3815 | "nix", 3816 | "rand 0.8.5", 3817 | "rayon", 3818 | "rustc_version", 3819 | "serde", 3820 | "solana-frozen-abi", 3821 | "solana-frozen-abi-macro", 3822 | "solana-metrics", 3823 | "solana-rayon-threadlimit", 3824 | "solana-sdk", 3825 | "solana-vote-program", 3826 | ] 3827 | 3828 | [[package]] 3829 | name = "solana-program" 3830 | version = "1.18.17" 3831 | source = "registry+https://github.com/rust-lang/crates.io-index" 3832 | checksum = "2bc5a636dc75e5c25651e34f7a36afc9ae60d38166687c5b0375abb580ac81a2" 3833 | dependencies = [ 3834 | "ark-bn254", 3835 | "ark-ec", 3836 | "ark-ff", 3837 | "ark-serialize", 3838 | "base64 0.21.7", 3839 | "bincode", 3840 | "bitflags 2.6.0", 3841 | "blake3", 3842 | "borsh 0.10.3", 3843 | "borsh 0.9.3", 3844 | "borsh 1.5.1", 3845 | "bs58 0.4.0", 3846 | "bv", 3847 | "bytemuck", 3848 | "cc", 3849 | "console_error_panic_hook", 3850 | "console_log", 3851 | "curve25519-dalek", 3852 | "getrandom 0.2.15", 3853 | "itertools", 3854 | "js-sys", 3855 | "lazy_static", 3856 | "libc", 3857 | "libsecp256k1", 3858 | "light-poseidon", 3859 | "log", 3860 | "memoffset 0.9.1", 3861 | "num-bigint 0.4.6", 3862 | "num-derive 0.4.2", 3863 | "num-traits", 3864 | "parking_lot", 3865 | "rand 0.8.5", 3866 | "rustc_version", 3867 | "rustversion", 3868 | "serde", 3869 | "serde_bytes", 3870 | "serde_derive", 3871 | "serde_json", 3872 | "sha2 0.10.8", 3873 | "sha3 0.10.8", 3874 | "solana-frozen-abi", 3875 | "solana-frozen-abi-macro", 3876 | "solana-sdk-macro", 3877 | "thiserror", 3878 | "tiny-bip39", 3879 | "wasm-bindgen", 3880 | "zeroize", 3881 | ] 3882 | 3883 | [[package]] 3884 | name = "solana-program-runtime" 3885 | version = "1.18.17" 3886 | source = "registry+https://github.com/rust-lang/crates.io-index" 3887 | checksum = "bf373c3da0387f47fee4c5ed2465a9628b9db026a62211a692a9285aa9251544" 3888 | dependencies = [ 3889 | "base64 0.21.7", 3890 | "bincode", 3891 | "eager", 3892 | "enum-iterator", 3893 | "itertools", 3894 | "libc", 3895 | "log", 3896 | "num-derive 0.4.2", 3897 | "num-traits", 3898 | "percentage", 3899 | "rand 0.8.5", 3900 | "rustc_version", 3901 | "serde", 3902 | "solana-frozen-abi", 3903 | "solana-frozen-abi-macro", 3904 | "solana-measure", 3905 | "solana-metrics", 3906 | "solana-sdk", 3907 | "solana_rbpf", 3908 | "thiserror", 3909 | ] 3910 | 3911 | [[package]] 3912 | name = "solana-pubsub-client" 3913 | version = "1.18.17" 3914 | source = "registry+https://github.com/rust-lang/crates.io-index" 3915 | checksum = "97b9abc76168d19927561db6a3685b98752bd0961b4ce4f8b7f85ee12238c017" 3916 | dependencies = [ 3917 | "crossbeam-channel", 3918 | "futures-util", 3919 | "log", 3920 | "reqwest", 3921 | "semver", 3922 | "serde", 3923 | "serde_derive", 3924 | "serde_json", 3925 | "solana-account-decoder", 3926 | "solana-rpc-client-api", 3927 | "solana-sdk", 3928 | "thiserror", 3929 | "tokio", 3930 | "tokio-stream", 3931 | "tokio-tungstenite", 3932 | "tungstenite", 3933 | "url", 3934 | ] 3935 | 3936 | [[package]] 3937 | name = "solana-quic-client" 3938 | version = "1.18.17" 3939 | source = "registry+https://github.com/rust-lang/crates.io-index" 3940 | checksum = "7952c5306a0be5f5276448cd20246b31265bfa884f29a077a24303c6a16aeb34" 3941 | dependencies = [ 3942 | "async-mutex", 3943 | "async-trait", 3944 | "futures", 3945 | "itertools", 3946 | "lazy_static", 3947 | "log", 3948 | "quinn", 3949 | "quinn-proto", 3950 | "rcgen", 3951 | "rustls", 3952 | "solana-connection-cache", 3953 | "solana-measure", 3954 | "solana-metrics", 3955 | "solana-net-utils", 3956 | "solana-rpc-client-api", 3957 | "solana-sdk", 3958 | "solana-streamer", 3959 | "thiserror", 3960 | "tokio", 3961 | ] 3962 | 3963 | [[package]] 3964 | name = "solana-rayon-threadlimit" 3965 | version = "1.18.17" 3966 | source = "registry+https://github.com/rust-lang/crates.io-index" 3967 | checksum = "a4fa0cc66f8e73d769bca2ede3012ba2ef8ab67963e832808665369f2cf81743" 3968 | dependencies = [ 3969 | "lazy_static", 3970 | "num_cpus", 3971 | ] 3972 | 3973 | [[package]] 3974 | name = "solana-remote-wallet" 3975 | version = "1.18.17" 3976 | source = "registry+https://github.com/rust-lang/crates.io-index" 3977 | checksum = "289803796d4ff7b4699504d3ab9e9d9c5205ea3892b2ebe397b377494dbd75d4" 3978 | dependencies = [ 3979 | "console", 3980 | "dialoguer", 3981 | "log", 3982 | "num-derive 0.4.2", 3983 | "num-traits", 3984 | "parking_lot", 3985 | "qstring", 3986 | "semver", 3987 | "solana-sdk", 3988 | "thiserror", 3989 | "uriparse", 3990 | ] 3991 | 3992 | [[package]] 3993 | name = "solana-rpc-client" 3994 | version = "1.18.17" 3995 | source = "registry+https://github.com/rust-lang/crates.io-index" 3996 | checksum = "6cb55a08018776a62ecff52139fbcdab1a7baa4e8f077202be58156e8dde4d5f" 3997 | dependencies = [ 3998 | "async-trait", 3999 | "base64 0.21.7", 4000 | "bincode", 4001 | "bs58 0.4.0", 4002 | "indicatif", 4003 | "log", 4004 | "reqwest", 4005 | "semver", 4006 | "serde", 4007 | "serde_derive", 4008 | "serde_json", 4009 | "solana-account-decoder", 4010 | "solana-rpc-client-api", 4011 | "solana-sdk", 4012 | "solana-transaction-status", 4013 | "solana-version", 4014 | "solana-vote-program", 4015 | "tokio", 4016 | ] 4017 | 4018 | [[package]] 4019 | name = "solana-rpc-client-api" 4020 | version = "1.18.17" 4021 | source = "registry+https://github.com/rust-lang/crates.io-index" 4022 | checksum = "72a8403038f4d6ab65bc7e7afb3afe8d9824c592232553c5cef55cf3de36025d" 4023 | dependencies = [ 4024 | "base64 0.21.7", 4025 | "bs58 0.4.0", 4026 | "jsonrpc-core", 4027 | "reqwest", 4028 | "semver", 4029 | "serde", 4030 | "serde_derive", 4031 | "serde_json", 4032 | "solana-account-decoder", 4033 | "solana-sdk", 4034 | "solana-transaction-status", 4035 | "solana-version", 4036 | "spl-token-2022", 4037 | "thiserror", 4038 | ] 4039 | 4040 | [[package]] 4041 | name = "solana-rpc-client-nonce-utils" 4042 | version = "1.18.17" 4043 | source = "registry+https://github.com/rust-lang/crates.io-index" 4044 | checksum = "4caca735caf76d51c074c3bacbfe38094bf7f92cfbe7b5b13f3bc4946e64f889" 4045 | dependencies = [ 4046 | "clap 2.34.0", 4047 | "solana-clap-utils", 4048 | "solana-rpc-client", 4049 | "solana-sdk", 4050 | "thiserror", 4051 | ] 4052 | 4053 | [[package]] 4054 | name = "solana-sdk" 4055 | version = "1.18.17" 4056 | source = "registry+https://github.com/rust-lang/crates.io-index" 4057 | checksum = "df43d3a1e1637397ab43cbc216a5a8f977ec8a3cc3f3ae8c3851c83a3255dbcf" 4058 | dependencies = [ 4059 | "assert_matches", 4060 | "base64 0.21.7", 4061 | "bincode", 4062 | "bitflags 2.6.0", 4063 | "borsh 1.5.1", 4064 | "bs58 0.4.0", 4065 | "bytemuck", 4066 | "byteorder", 4067 | "chrono", 4068 | "derivation-path", 4069 | "digest 0.10.7", 4070 | "ed25519-dalek", 4071 | "ed25519-dalek-bip32", 4072 | "generic-array", 4073 | "hmac 0.12.1", 4074 | "itertools", 4075 | "js-sys", 4076 | "lazy_static", 4077 | "libsecp256k1", 4078 | "log", 4079 | "memmap2", 4080 | "num-derive 0.4.2", 4081 | "num-traits", 4082 | "num_enum 0.7.2", 4083 | "pbkdf2 0.11.0", 4084 | "qstring", 4085 | "qualifier_attr", 4086 | "rand 0.7.3", 4087 | "rand 0.8.5", 4088 | "rustc_version", 4089 | "rustversion", 4090 | "serde", 4091 | "serde_bytes", 4092 | "serde_derive", 4093 | "serde_json", 4094 | "serde_with", 4095 | "sha2 0.10.8", 4096 | "sha3 0.10.8", 4097 | "siphasher", 4098 | "solana-frozen-abi", 4099 | "solana-frozen-abi-macro", 4100 | "solana-logger", 4101 | "solana-program", 4102 | "solana-sdk-macro", 4103 | "thiserror", 4104 | "uriparse", 4105 | "wasm-bindgen", 4106 | ] 4107 | 4108 | [[package]] 4109 | name = "solana-sdk-macro" 4110 | version = "1.18.17" 4111 | source = "registry+https://github.com/rust-lang/crates.io-index" 4112 | checksum = "86c76414183a325038ff020b22c07d1e9d2da0703ddc0244acfed37ee2921d96" 4113 | dependencies = [ 4114 | "bs58 0.4.0", 4115 | "proc-macro2", 4116 | "quote", 4117 | "rustversion", 4118 | "syn 2.0.70", 4119 | ] 4120 | 4121 | [[package]] 4122 | name = "solana-security-txt" 4123 | version = "1.1.1" 4124 | source = "registry+https://github.com/rust-lang/crates.io-index" 4125 | checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" 4126 | 4127 | [[package]] 4128 | name = "solana-streamer" 4129 | version = "1.18.17" 4130 | source = "registry+https://github.com/rust-lang/crates.io-index" 4131 | checksum = "fad1bdb955ec6d23a1dbf87e403ff3e610d68616275693125a893d7ed4b2d323" 4132 | dependencies = [ 4133 | "async-channel", 4134 | "bytes", 4135 | "crossbeam-channel", 4136 | "futures-util", 4137 | "histogram", 4138 | "indexmap 2.2.6", 4139 | "itertools", 4140 | "libc", 4141 | "log", 4142 | "nix", 4143 | "pem", 4144 | "percentage", 4145 | "pkcs8", 4146 | "quinn", 4147 | "quinn-proto", 4148 | "rand 0.8.5", 4149 | "rcgen", 4150 | "rustls", 4151 | "smallvec", 4152 | "solana-metrics", 4153 | "solana-perf", 4154 | "solana-sdk", 4155 | "thiserror", 4156 | "tokio", 4157 | "x509-parser", 4158 | ] 4159 | 4160 | [[package]] 4161 | name = "solana-thin-client" 4162 | version = "1.18.17" 4163 | source = "registry+https://github.com/rust-lang/crates.io-index" 4164 | checksum = "bc301310ba0755c449a8800136f67f8ad14419b366404629894cd10021495360" 4165 | dependencies = [ 4166 | "bincode", 4167 | "log", 4168 | "rayon", 4169 | "solana-connection-cache", 4170 | "solana-rpc-client", 4171 | "solana-rpc-client-api", 4172 | "solana-sdk", 4173 | ] 4174 | 4175 | [[package]] 4176 | name = "solana-tpu-client" 4177 | version = "1.18.17" 4178 | source = "registry+https://github.com/rust-lang/crates.io-index" 4179 | checksum = "fb887bd5078ff015e103e9ee54a6713380590efa8ff1804b3a653f07188928c6" 4180 | dependencies = [ 4181 | "async-trait", 4182 | "bincode", 4183 | "futures-util", 4184 | "indexmap 2.2.6", 4185 | "indicatif", 4186 | "log", 4187 | "rayon", 4188 | "solana-connection-cache", 4189 | "solana-measure", 4190 | "solana-metrics", 4191 | "solana-pubsub-client", 4192 | "solana-rpc-client", 4193 | "solana-rpc-client-api", 4194 | "solana-sdk", 4195 | "thiserror", 4196 | "tokio", 4197 | ] 4198 | 4199 | [[package]] 4200 | name = "solana-transaction-status" 4201 | version = "1.18.17" 4202 | source = "registry+https://github.com/rust-lang/crates.io-index" 4203 | checksum = "4a0cdfdf63192fb60de094fae8e81159e4e3e9aac9659fe3f9ef0e707023fb32" 4204 | dependencies = [ 4205 | "Inflector", 4206 | "base64 0.21.7", 4207 | "bincode", 4208 | "borsh 0.10.3", 4209 | "bs58 0.4.0", 4210 | "lazy_static", 4211 | "log", 4212 | "serde", 4213 | "serde_derive", 4214 | "serde_json", 4215 | "solana-account-decoder", 4216 | "solana-sdk", 4217 | "spl-associated-token-account", 4218 | "spl-memo", 4219 | "spl-token", 4220 | "spl-token-2022", 4221 | "thiserror", 4222 | ] 4223 | 4224 | [[package]] 4225 | name = "solana-udp-client" 4226 | version = "1.18.17" 4227 | source = "registry+https://github.com/rust-lang/crates.io-index" 4228 | checksum = "3ea0d6d8d66e36371577f51c4d1d6192a66f1fa4efe7161a36d94677640dcadb" 4229 | dependencies = [ 4230 | "async-trait", 4231 | "solana-connection-cache", 4232 | "solana-net-utils", 4233 | "solana-sdk", 4234 | "solana-streamer", 4235 | "thiserror", 4236 | "tokio", 4237 | ] 4238 | 4239 | [[package]] 4240 | name = "solana-version" 4241 | version = "1.18.17" 4242 | source = "registry+https://github.com/rust-lang/crates.io-index" 4243 | checksum = "6f4c2f531c22ce806b211118be8928a791425f97de4592371fb57b246ed33e34" 4244 | dependencies = [ 4245 | "log", 4246 | "rustc_version", 4247 | "semver", 4248 | "serde", 4249 | "serde_derive", 4250 | "solana-frozen-abi", 4251 | "solana-frozen-abi-macro", 4252 | "solana-sdk", 4253 | ] 4254 | 4255 | [[package]] 4256 | name = "solana-vote-program" 4257 | version = "1.18.17" 4258 | source = "registry+https://github.com/rust-lang/crates.io-index" 4259 | checksum = "6d8a6486017e71a3714a8e1a635e17209135cc20535ba9808ccf106d80ff6e8b" 4260 | dependencies = [ 4261 | "bincode", 4262 | "log", 4263 | "num-derive 0.4.2", 4264 | "num-traits", 4265 | "rustc_version", 4266 | "serde", 4267 | "serde_derive", 4268 | "solana-frozen-abi", 4269 | "solana-frozen-abi-macro", 4270 | "solana-metrics", 4271 | "solana-program", 4272 | "solana-program-runtime", 4273 | "solana-sdk", 4274 | "thiserror", 4275 | ] 4276 | 4277 | [[package]] 4278 | name = "solana-zk-token-sdk" 4279 | version = "1.18.17" 4280 | source = "registry+https://github.com/rust-lang/crates.io-index" 4281 | checksum = "513407f88394e437b4ff5aad892bc5bf51a655ae2401e6e63549734d3695c46f" 4282 | dependencies = [ 4283 | "aes-gcm-siv", 4284 | "base64 0.21.7", 4285 | "bincode", 4286 | "bytemuck", 4287 | "byteorder", 4288 | "curve25519-dalek", 4289 | "getrandom 0.1.16", 4290 | "itertools", 4291 | "lazy_static", 4292 | "merlin", 4293 | "num-derive 0.4.2", 4294 | "num-traits", 4295 | "rand 0.7.3", 4296 | "serde", 4297 | "serde_json", 4298 | "sha3 0.9.1", 4299 | "solana-program", 4300 | "solana-sdk", 4301 | "subtle", 4302 | "thiserror", 4303 | "zeroize", 4304 | ] 4305 | 4306 | [[package]] 4307 | name = "solana_rbpf" 4308 | version = "0.8.0" 4309 | source = "registry+https://github.com/rust-lang/crates.io-index" 4310 | checksum = "3d457cc2ba742c120492a64b7fa60e22c575e891f6b55039f4d736568fb112a3" 4311 | dependencies = [ 4312 | "byteorder", 4313 | "combine", 4314 | "goblin", 4315 | "hash32", 4316 | "libc", 4317 | "log", 4318 | "rand 0.8.5", 4319 | "rustc-demangle", 4320 | "scroll", 4321 | "thiserror", 4322 | "winapi", 4323 | ] 4324 | 4325 | [[package]] 4326 | name = "spin" 4327 | version = "0.5.2" 4328 | source = "registry+https://github.com/rust-lang/crates.io-index" 4329 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 4330 | 4331 | [[package]] 4332 | name = "spin" 4333 | version = "0.9.8" 4334 | source = "registry+https://github.com/rust-lang/crates.io-index" 4335 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 4336 | 4337 | [[package]] 4338 | name = "spki" 4339 | version = "0.5.4" 4340 | source = "registry+https://github.com/rust-lang/crates.io-index" 4341 | checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" 4342 | dependencies = [ 4343 | "base64ct", 4344 | "der", 4345 | ] 4346 | 4347 | [[package]] 4348 | name = "spl-associated-token-account" 4349 | version = "2.3.0" 4350 | source = "registry+https://github.com/rust-lang/crates.io-index" 4351 | checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f" 4352 | dependencies = [ 4353 | "assert_matches", 4354 | "borsh 0.10.3", 4355 | "num-derive 0.4.2", 4356 | "num-traits", 4357 | "solana-program", 4358 | "spl-token", 4359 | "spl-token-2022", 4360 | "thiserror", 4361 | ] 4362 | 4363 | [[package]] 4364 | name = "spl-discriminator" 4365 | version = "0.1.0" 4366 | source = "registry+https://github.com/rust-lang/crates.io-index" 4367 | checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" 4368 | dependencies = [ 4369 | "bytemuck", 4370 | "solana-program", 4371 | "spl-discriminator-derive", 4372 | ] 4373 | 4374 | [[package]] 4375 | name = "spl-discriminator-derive" 4376 | version = "0.1.2" 4377 | source = "registry+https://github.com/rust-lang/crates.io-index" 4378 | checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" 4379 | dependencies = [ 4380 | "quote", 4381 | "spl-discriminator-syn", 4382 | "syn 2.0.70", 4383 | ] 4384 | 4385 | [[package]] 4386 | name = "spl-discriminator-syn" 4387 | version = "0.1.2" 4388 | source = "registry+https://github.com/rust-lang/crates.io-index" 4389 | checksum = "18fea7be851bd98d10721782ea958097c03a0c2a07d8d4997041d0ece6319a63" 4390 | dependencies = [ 4391 | "proc-macro2", 4392 | "quote", 4393 | "sha2 0.10.8", 4394 | "syn 2.0.70", 4395 | "thiserror", 4396 | ] 4397 | 4398 | [[package]] 4399 | name = "spl-memo" 4400 | version = "4.0.0" 4401 | source = "registry+https://github.com/rust-lang/crates.io-index" 4402 | checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" 4403 | dependencies = [ 4404 | "solana-program", 4405 | ] 4406 | 4407 | [[package]] 4408 | name = "spl-pod" 4409 | version = "0.1.0" 4410 | source = "registry+https://github.com/rust-lang/crates.io-index" 4411 | checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" 4412 | dependencies = [ 4413 | "borsh 0.10.3", 4414 | "bytemuck", 4415 | "solana-program", 4416 | "solana-zk-token-sdk", 4417 | "spl-program-error", 4418 | ] 4419 | 4420 | [[package]] 4421 | name = "spl-program-error" 4422 | version = "0.3.0" 4423 | source = "registry+https://github.com/rust-lang/crates.io-index" 4424 | checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" 4425 | dependencies = [ 4426 | "num-derive 0.4.2", 4427 | "num-traits", 4428 | "solana-program", 4429 | "spl-program-error-derive", 4430 | "thiserror", 4431 | ] 4432 | 4433 | [[package]] 4434 | name = "spl-program-error-derive" 4435 | version = "0.3.2" 4436 | source = "registry+https://github.com/rust-lang/crates.io-index" 4437 | checksum = "1845dfe71fd68f70382232742e758557afe973ae19e6c06807b2c30f5d5cb474" 4438 | dependencies = [ 4439 | "proc-macro2", 4440 | "quote", 4441 | "sha2 0.10.8", 4442 | "syn 2.0.70", 4443 | ] 4444 | 4445 | [[package]] 4446 | name = "spl-tlv-account-resolution" 4447 | version = "0.5.1" 4448 | source = "registry+https://github.com/rust-lang/crates.io-index" 4449 | checksum = "615d381f48ddd2bb3c57c7f7fb207591a2a05054639b18a62e785117dd7a8683" 4450 | dependencies = [ 4451 | "bytemuck", 4452 | "solana-program", 4453 | "spl-discriminator", 4454 | "spl-pod", 4455 | "spl-program-error", 4456 | "spl-type-length-value", 4457 | ] 4458 | 4459 | [[package]] 4460 | name = "spl-token" 4461 | version = "4.0.0" 4462 | source = "registry+https://github.com/rust-lang/crates.io-index" 4463 | checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" 4464 | dependencies = [ 4465 | "arrayref", 4466 | "bytemuck", 4467 | "num-derive 0.3.3", 4468 | "num-traits", 4469 | "num_enum 0.6.1", 4470 | "solana-program", 4471 | "thiserror", 4472 | ] 4473 | 4474 | [[package]] 4475 | name = "spl-token-2022" 4476 | version = "1.0.0" 4477 | source = "registry+https://github.com/rust-lang/crates.io-index" 4478 | checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" 4479 | dependencies = [ 4480 | "arrayref", 4481 | "bytemuck", 4482 | "num-derive 0.4.2", 4483 | "num-traits", 4484 | "num_enum 0.7.2", 4485 | "solana-program", 4486 | "solana-security-txt", 4487 | "solana-zk-token-sdk", 4488 | "spl-memo", 4489 | "spl-pod", 4490 | "spl-token", 4491 | "spl-token-group-interface", 4492 | "spl-token-metadata-interface", 4493 | "spl-transfer-hook-interface", 4494 | "spl-type-length-value", 4495 | "thiserror", 4496 | ] 4497 | 4498 | [[package]] 4499 | name = "spl-token-group-interface" 4500 | version = "0.1.0" 4501 | source = "registry+https://github.com/rust-lang/crates.io-index" 4502 | checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" 4503 | dependencies = [ 4504 | "bytemuck", 4505 | "solana-program", 4506 | "spl-discriminator", 4507 | "spl-pod", 4508 | "spl-program-error", 4509 | ] 4510 | 4511 | [[package]] 4512 | name = "spl-token-metadata-interface" 4513 | version = "0.2.0" 4514 | source = "registry+https://github.com/rust-lang/crates.io-index" 4515 | checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" 4516 | dependencies = [ 4517 | "borsh 0.10.3", 4518 | "solana-program", 4519 | "spl-discriminator", 4520 | "spl-pod", 4521 | "spl-program-error", 4522 | "spl-type-length-value", 4523 | ] 4524 | 4525 | [[package]] 4526 | name = "spl-transfer-hook-interface" 4527 | version = "0.4.1" 4528 | source = "registry+https://github.com/rust-lang/crates.io-index" 4529 | checksum = "7aabdb7c471566f6ddcee724beb8618449ea24b399e58d464d6b5bc7db550259" 4530 | dependencies = [ 4531 | "arrayref", 4532 | "bytemuck", 4533 | "solana-program", 4534 | "spl-discriminator", 4535 | "spl-pod", 4536 | "spl-program-error", 4537 | "spl-tlv-account-resolution", 4538 | "spl-type-length-value", 4539 | ] 4540 | 4541 | [[package]] 4542 | name = "spl-type-length-value" 4543 | version = "0.3.0" 4544 | source = "registry+https://github.com/rust-lang/crates.io-index" 4545 | checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" 4546 | dependencies = [ 4547 | "bytemuck", 4548 | "solana-program", 4549 | "spl-discriminator", 4550 | "spl-pod", 4551 | "spl-program-error", 4552 | ] 4553 | 4554 | [[package]] 4555 | name = "static_assertions" 4556 | version = "1.1.0" 4557 | source = "registry+https://github.com/rust-lang/crates.io-index" 4558 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 4559 | 4560 | [[package]] 4561 | name = "strsim" 4562 | version = "0.8.0" 4563 | source = "registry+https://github.com/rust-lang/crates.io-index" 4564 | checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 4565 | 4566 | [[package]] 4567 | name = "strsim" 4568 | version = "0.10.0" 4569 | source = "registry+https://github.com/rust-lang/crates.io-index" 4570 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 4571 | 4572 | [[package]] 4573 | name = "strsim" 4574 | version = "0.11.1" 4575 | source = "registry+https://github.com/rust-lang/crates.io-index" 4576 | checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 4577 | 4578 | [[package]] 4579 | name = "strum" 4580 | version = "0.26.3" 4581 | source = "registry+https://github.com/rust-lang/crates.io-index" 4582 | checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" 4583 | dependencies = [ 4584 | "strum_macros", 4585 | ] 4586 | 4587 | [[package]] 4588 | name = "strum_macros" 4589 | version = "0.26.4" 4590 | source = "registry+https://github.com/rust-lang/crates.io-index" 4591 | checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" 4592 | dependencies = [ 4593 | "heck", 4594 | "proc-macro2", 4595 | "quote", 4596 | "rustversion", 4597 | "syn 2.0.70", 4598 | ] 4599 | 4600 | [[package]] 4601 | name = "subtle" 4602 | version = "2.4.1" 4603 | source = "registry+https://github.com/rust-lang/crates.io-index" 4604 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 4605 | 4606 | [[package]] 4607 | name = "syn" 4608 | version = "1.0.109" 4609 | source = "registry+https://github.com/rust-lang/crates.io-index" 4610 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 4611 | dependencies = [ 4612 | "proc-macro2", 4613 | "quote", 4614 | "unicode-ident", 4615 | ] 4616 | 4617 | [[package]] 4618 | name = "syn" 4619 | version = "2.0.70" 4620 | source = "registry+https://github.com/rust-lang/crates.io-index" 4621 | checksum = "2f0209b68b3613b093e0ec905354eccaedcfe83b8cb37cbdeae64026c3064c16" 4622 | dependencies = [ 4623 | "proc-macro2", 4624 | "quote", 4625 | "unicode-ident", 4626 | ] 4627 | 4628 | [[package]] 4629 | name = "syn_derive" 4630 | version = "0.1.8" 4631 | source = "registry+https://github.com/rust-lang/crates.io-index" 4632 | checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" 4633 | dependencies = [ 4634 | "proc-macro-error", 4635 | "proc-macro2", 4636 | "quote", 4637 | "syn 2.0.70", 4638 | ] 4639 | 4640 | [[package]] 4641 | name = "sync_wrapper" 4642 | version = "0.1.2" 4643 | source = "registry+https://github.com/rust-lang/crates.io-index" 4644 | checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 4645 | 4646 | [[package]] 4647 | name = "synstructure" 4648 | version = "0.12.6" 4649 | source = "registry+https://github.com/rust-lang/crates.io-index" 4650 | checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" 4651 | dependencies = [ 4652 | "proc-macro2", 4653 | "quote", 4654 | "syn 1.0.109", 4655 | "unicode-xid", 4656 | ] 4657 | 4658 | [[package]] 4659 | name = "system-configuration" 4660 | version = "0.5.1" 4661 | source = "registry+https://github.com/rust-lang/crates.io-index" 4662 | checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 4663 | dependencies = [ 4664 | "bitflags 1.3.2", 4665 | "core-foundation", 4666 | "system-configuration-sys", 4667 | ] 4668 | 4669 | [[package]] 4670 | name = "system-configuration-sys" 4671 | version = "0.5.0" 4672 | source = "registry+https://github.com/rust-lang/crates.io-index" 4673 | checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 4674 | dependencies = [ 4675 | "core-foundation-sys", 4676 | "libc", 4677 | ] 4678 | 4679 | [[package]] 4680 | name = "tempfile" 4681 | version = "3.10.1" 4682 | source = "registry+https://github.com/rust-lang/crates.io-index" 4683 | checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" 4684 | dependencies = [ 4685 | "cfg-if", 4686 | "fastrand", 4687 | "rustix", 4688 | "windows-sys 0.52.0", 4689 | ] 4690 | 4691 | [[package]] 4692 | name = "termcolor" 4693 | version = "1.4.1" 4694 | source = "registry+https://github.com/rust-lang/crates.io-index" 4695 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 4696 | dependencies = [ 4697 | "winapi-util", 4698 | ] 4699 | 4700 | [[package]] 4701 | name = "textwrap" 4702 | version = "0.11.0" 4703 | source = "registry+https://github.com/rust-lang/crates.io-index" 4704 | checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 4705 | dependencies = [ 4706 | "unicode-width", 4707 | ] 4708 | 4709 | [[package]] 4710 | name = "textwrap" 4711 | version = "0.16.1" 4712 | source = "registry+https://github.com/rust-lang/crates.io-index" 4713 | checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" 4714 | 4715 | [[package]] 4716 | name = "thiserror" 4717 | version = "1.0.61" 4718 | source = "registry+https://github.com/rust-lang/crates.io-index" 4719 | checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" 4720 | dependencies = [ 4721 | "thiserror-impl", 4722 | ] 4723 | 4724 | [[package]] 4725 | name = "thiserror-impl" 4726 | version = "1.0.61" 4727 | source = "registry+https://github.com/rust-lang/crates.io-index" 4728 | checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" 4729 | dependencies = [ 4730 | "proc-macro2", 4731 | "quote", 4732 | "syn 2.0.70", 4733 | ] 4734 | 4735 | [[package]] 4736 | name = "time" 4737 | version = "0.3.36" 4738 | source = "registry+https://github.com/rust-lang/crates.io-index" 4739 | checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" 4740 | dependencies = [ 4741 | "deranged", 4742 | "itoa", 4743 | "num-conv", 4744 | "powerfmt", 4745 | "serde", 4746 | "time-core", 4747 | "time-macros", 4748 | ] 4749 | 4750 | [[package]] 4751 | name = "time-core" 4752 | version = "0.1.2" 4753 | source = "registry+https://github.com/rust-lang/crates.io-index" 4754 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 4755 | 4756 | [[package]] 4757 | name = "time-macros" 4758 | version = "0.2.18" 4759 | source = "registry+https://github.com/rust-lang/crates.io-index" 4760 | checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" 4761 | dependencies = [ 4762 | "num-conv", 4763 | "time-core", 4764 | ] 4765 | 4766 | [[package]] 4767 | name = "tiny-bip39" 4768 | version = "0.8.2" 4769 | source = "registry+https://github.com/rust-lang/crates.io-index" 4770 | checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" 4771 | dependencies = [ 4772 | "anyhow", 4773 | "hmac 0.8.1", 4774 | "once_cell", 4775 | "pbkdf2 0.4.0", 4776 | "rand 0.7.3", 4777 | "rustc-hash", 4778 | "sha2 0.9.9", 4779 | "thiserror", 4780 | "unicode-normalization", 4781 | "wasm-bindgen", 4782 | "zeroize", 4783 | ] 4784 | 4785 | [[package]] 4786 | name = "tinyvec" 4787 | version = "1.8.0" 4788 | source = "registry+https://github.com/rust-lang/crates.io-index" 4789 | checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" 4790 | dependencies = [ 4791 | "tinyvec_macros", 4792 | ] 4793 | 4794 | [[package]] 4795 | name = "tinyvec_macros" 4796 | version = "0.1.1" 4797 | source = "registry+https://github.com/rust-lang/crates.io-index" 4798 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 4799 | 4800 | [[package]] 4801 | name = "tokio" 4802 | version = "1.38.0" 4803 | source = "registry+https://github.com/rust-lang/crates.io-index" 4804 | checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" 4805 | dependencies = [ 4806 | "backtrace", 4807 | "bytes", 4808 | "libc", 4809 | "mio", 4810 | "num_cpus", 4811 | "parking_lot", 4812 | "pin-project-lite", 4813 | "signal-hook-registry", 4814 | "socket2", 4815 | "tokio-macros", 4816 | "windows-sys 0.48.0", 4817 | ] 4818 | 4819 | [[package]] 4820 | name = "tokio-macros" 4821 | version = "2.3.0" 4822 | source = "registry+https://github.com/rust-lang/crates.io-index" 4823 | checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" 4824 | dependencies = [ 4825 | "proc-macro2", 4826 | "quote", 4827 | "syn 2.0.70", 4828 | ] 4829 | 4830 | [[package]] 4831 | name = "tokio-rustls" 4832 | version = "0.24.1" 4833 | source = "registry+https://github.com/rust-lang/crates.io-index" 4834 | checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 4835 | dependencies = [ 4836 | "rustls", 4837 | "tokio", 4838 | ] 4839 | 4840 | [[package]] 4841 | name = "tokio-stream" 4842 | version = "0.1.15" 4843 | source = "registry+https://github.com/rust-lang/crates.io-index" 4844 | checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" 4845 | dependencies = [ 4846 | "futures-core", 4847 | "pin-project-lite", 4848 | "tokio", 4849 | ] 4850 | 4851 | [[package]] 4852 | name = "tokio-tungstenite" 4853 | version = "0.20.1" 4854 | source = "registry+https://github.com/rust-lang/crates.io-index" 4855 | checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" 4856 | dependencies = [ 4857 | "futures-util", 4858 | "log", 4859 | "rustls", 4860 | "tokio", 4861 | "tokio-rustls", 4862 | "tungstenite", 4863 | "webpki-roots 0.25.4", 4864 | ] 4865 | 4866 | [[package]] 4867 | name = "tokio-util" 4868 | version = "0.7.11" 4869 | source = "registry+https://github.com/rust-lang/crates.io-index" 4870 | checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" 4871 | dependencies = [ 4872 | "bytes", 4873 | "futures-core", 4874 | "futures-sink", 4875 | "pin-project-lite", 4876 | "tokio", 4877 | ] 4878 | 4879 | [[package]] 4880 | name = "toml" 4881 | version = "0.5.11" 4882 | source = "registry+https://github.com/rust-lang/crates.io-index" 4883 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 4884 | dependencies = [ 4885 | "serde", 4886 | ] 4887 | 4888 | [[package]] 4889 | name = "toml_datetime" 4890 | version = "0.6.6" 4891 | source = "registry+https://github.com/rust-lang/crates.io-index" 4892 | checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" 4893 | 4894 | [[package]] 4895 | name = "toml_edit" 4896 | version = "0.19.15" 4897 | source = "registry+https://github.com/rust-lang/crates.io-index" 4898 | checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" 4899 | dependencies = [ 4900 | "indexmap 2.2.6", 4901 | "toml_datetime", 4902 | "winnow", 4903 | ] 4904 | 4905 | [[package]] 4906 | name = "toml_edit" 4907 | version = "0.21.1" 4908 | source = "registry+https://github.com/rust-lang/crates.io-index" 4909 | checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" 4910 | dependencies = [ 4911 | "indexmap 2.2.6", 4912 | "toml_datetime", 4913 | "winnow", 4914 | ] 4915 | 4916 | [[package]] 4917 | name = "tower-service" 4918 | version = "0.3.2" 4919 | source = "registry+https://github.com/rust-lang/crates.io-index" 4920 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 4921 | 4922 | [[package]] 4923 | name = "tracing" 4924 | version = "0.1.40" 4925 | source = "registry+https://github.com/rust-lang/crates.io-index" 4926 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 4927 | dependencies = [ 4928 | "log", 4929 | "pin-project-lite", 4930 | "tracing-attributes", 4931 | "tracing-core", 4932 | ] 4933 | 4934 | [[package]] 4935 | name = "tracing-attributes" 4936 | version = "0.1.27" 4937 | source = "registry+https://github.com/rust-lang/crates.io-index" 4938 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 4939 | dependencies = [ 4940 | "proc-macro2", 4941 | "quote", 4942 | "syn 2.0.70", 4943 | ] 4944 | 4945 | [[package]] 4946 | name = "tracing-core" 4947 | version = "0.1.32" 4948 | source = "registry+https://github.com/rust-lang/crates.io-index" 4949 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 4950 | dependencies = [ 4951 | "once_cell", 4952 | ] 4953 | 4954 | [[package]] 4955 | name = "try-lock" 4956 | version = "0.2.5" 4957 | source = "registry+https://github.com/rust-lang/crates.io-index" 4958 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 4959 | 4960 | [[package]] 4961 | name = "tungstenite" 4962 | version = "0.20.1" 4963 | source = "registry+https://github.com/rust-lang/crates.io-index" 4964 | checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" 4965 | dependencies = [ 4966 | "byteorder", 4967 | "bytes", 4968 | "data-encoding", 4969 | "http", 4970 | "httparse", 4971 | "log", 4972 | "rand 0.8.5", 4973 | "rustls", 4974 | "sha1", 4975 | "thiserror", 4976 | "url", 4977 | "utf-8", 4978 | "webpki-roots 0.24.0", 4979 | ] 4980 | 4981 | [[package]] 4982 | name = "typenum" 4983 | version = "1.17.0" 4984 | source = "registry+https://github.com/rust-lang/crates.io-index" 4985 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 4986 | 4987 | [[package]] 4988 | name = "unicode-bidi" 4989 | version = "0.3.15" 4990 | source = "registry+https://github.com/rust-lang/crates.io-index" 4991 | checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" 4992 | 4993 | [[package]] 4994 | name = "unicode-ident" 4995 | version = "1.0.12" 4996 | source = "registry+https://github.com/rust-lang/crates.io-index" 4997 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 4998 | 4999 | [[package]] 5000 | name = "unicode-normalization" 5001 | version = "0.1.23" 5002 | source = "registry+https://github.com/rust-lang/crates.io-index" 5003 | checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" 5004 | dependencies = [ 5005 | "tinyvec", 5006 | ] 5007 | 5008 | [[package]] 5009 | name = "unicode-width" 5010 | version = "0.1.13" 5011 | source = "registry+https://github.com/rust-lang/crates.io-index" 5012 | checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" 5013 | 5014 | [[package]] 5015 | name = "unicode-xid" 5016 | version = "0.2.4" 5017 | source = "registry+https://github.com/rust-lang/crates.io-index" 5018 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 5019 | 5020 | [[package]] 5021 | name = "universal-hash" 5022 | version = "0.4.1" 5023 | source = "registry+https://github.com/rust-lang/crates.io-index" 5024 | checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" 5025 | dependencies = [ 5026 | "generic-array", 5027 | "subtle", 5028 | ] 5029 | 5030 | [[package]] 5031 | name = "unreachable" 5032 | version = "1.0.0" 5033 | source = "registry+https://github.com/rust-lang/crates.io-index" 5034 | checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 5035 | dependencies = [ 5036 | "void", 5037 | ] 5038 | 5039 | [[package]] 5040 | name = "unsafe-libyaml" 5041 | version = "0.2.11" 5042 | source = "registry+https://github.com/rust-lang/crates.io-index" 5043 | checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" 5044 | 5045 | [[package]] 5046 | name = "untrusted" 5047 | version = "0.7.1" 5048 | source = "registry+https://github.com/rust-lang/crates.io-index" 5049 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 5050 | 5051 | [[package]] 5052 | name = "untrusted" 5053 | version = "0.9.0" 5054 | source = "registry+https://github.com/rust-lang/crates.io-index" 5055 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 5056 | 5057 | [[package]] 5058 | name = "uriparse" 5059 | version = "0.6.4" 5060 | source = "registry+https://github.com/rust-lang/crates.io-index" 5061 | checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" 5062 | dependencies = [ 5063 | "fnv", 5064 | "lazy_static", 5065 | ] 5066 | 5067 | [[package]] 5068 | name = "url" 5069 | version = "2.5.2" 5070 | source = "registry+https://github.com/rust-lang/crates.io-index" 5071 | checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" 5072 | dependencies = [ 5073 | "form_urlencoded", 5074 | "idna", 5075 | "percent-encoding", 5076 | ] 5077 | 5078 | [[package]] 5079 | name = "utf-8" 5080 | version = "0.7.6" 5081 | source = "registry+https://github.com/rust-lang/crates.io-index" 5082 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 5083 | 5084 | [[package]] 5085 | name = "utf8parse" 5086 | version = "0.2.2" 5087 | source = "registry+https://github.com/rust-lang/crates.io-index" 5088 | checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 5089 | 5090 | [[package]] 5091 | name = "vec_map" 5092 | version = "0.8.2" 5093 | source = "registry+https://github.com/rust-lang/crates.io-index" 5094 | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 5095 | 5096 | [[package]] 5097 | name = "version_check" 5098 | version = "0.9.4" 5099 | source = "registry+https://github.com/rust-lang/crates.io-index" 5100 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 5101 | 5102 | [[package]] 5103 | name = "visibility" 5104 | version = "0.1.0" 5105 | source = "registry+https://github.com/rust-lang/crates.io-index" 5106 | checksum = "b3fd98999db9227cf28e59d83e1f120f42bc233d4b152e8fab9bc87d5bb1e0f8" 5107 | dependencies = [ 5108 | "proc-macro2", 5109 | "quote", 5110 | "syn 2.0.70", 5111 | ] 5112 | 5113 | [[package]] 5114 | name = "void" 5115 | version = "1.0.2" 5116 | source = "registry+https://github.com/rust-lang/crates.io-index" 5117 | checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 5118 | 5119 | [[package]] 5120 | name = "want" 5121 | version = "0.3.1" 5122 | source = "registry+https://github.com/rust-lang/crates.io-index" 5123 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 5124 | dependencies = [ 5125 | "try-lock", 5126 | ] 5127 | 5128 | [[package]] 5129 | name = "wasi" 5130 | version = "0.9.0+wasi-snapshot-preview1" 5131 | source = "registry+https://github.com/rust-lang/crates.io-index" 5132 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 5133 | 5134 | [[package]] 5135 | name = "wasi" 5136 | version = "0.11.0+wasi-snapshot-preview1" 5137 | source = "registry+https://github.com/rust-lang/crates.io-index" 5138 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 5139 | 5140 | [[package]] 5141 | name = "wasm-bindgen" 5142 | version = "0.2.92" 5143 | source = "registry+https://github.com/rust-lang/crates.io-index" 5144 | checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" 5145 | dependencies = [ 5146 | "cfg-if", 5147 | "wasm-bindgen-macro", 5148 | ] 5149 | 5150 | [[package]] 5151 | name = "wasm-bindgen-backend" 5152 | version = "0.2.92" 5153 | source = "registry+https://github.com/rust-lang/crates.io-index" 5154 | checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" 5155 | dependencies = [ 5156 | "bumpalo", 5157 | "log", 5158 | "once_cell", 5159 | "proc-macro2", 5160 | "quote", 5161 | "syn 2.0.70", 5162 | "wasm-bindgen-shared", 5163 | ] 5164 | 5165 | [[package]] 5166 | name = "wasm-bindgen-futures" 5167 | version = "0.4.42" 5168 | source = "registry+https://github.com/rust-lang/crates.io-index" 5169 | checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" 5170 | dependencies = [ 5171 | "cfg-if", 5172 | "js-sys", 5173 | "wasm-bindgen", 5174 | "web-sys", 5175 | ] 5176 | 5177 | [[package]] 5178 | name = "wasm-bindgen-macro" 5179 | version = "0.2.92" 5180 | source = "registry+https://github.com/rust-lang/crates.io-index" 5181 | checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" 5182 | dependencies = [ 5183 | "quote", 5184 | "wasm-bindgen-macro-support", 5185 | ] 5186 | 5187 | [[package]] 5188 | name = "wasm-bindgen-macro-support" 5189 | version = "0.2.92" 5190 | source = "registry+https://github.com/rust-lang/crates.io-index" 5191 | checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" 5192 | dependencies = [ 5193 | "proc-macro2", 5194 | "quote", 5195 | "syn 2.0.70", 5196 | "wasm-bindgen-backend", 5197 | "wasm-bindgen-shared", 5198 | ] 5199 | 5200 | [[package]] 5201 | name = "wasm-bindgen-shared" 5202 | version = "0.2.92" 5203 | source = "registry+https://github.com/rust-lang/crates.io-index" 5204 | checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" 5205 | 5206 | [[package]] 5207 | name = "web-sys" 5208 | version = "0.3.69" 5209 | source = "registry+https://github.com/rust-lang/crates.io-index" 5210 | checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" 5211 | dependencies = [ 5212 | "js-sys", 5213 | "wasm-bindgen", 5214 | ] 5215 | 5216 | [[package]] 5217 | name = "webpki-roots" 5218 | version = "0.24.0" 5219 | source = "registry+https://github.com/rust-lang/crates.io-index" 5220 | checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" 5221 | dependencies = [ 5222 | "rustls-webpki", 5223 | ] 5224 | 5225 | [[package]] 5226 | name = "webpki-roots" 5227 | version = "0.25.4" 5228 | source = "registry+https://github.com/rust-lang/crates.io-index" 5229 | checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" 5230 | 5231 | [[package]] 5232 | name = "winapi" 5233 | version = "0.3.9" 5234 | source = "registry+https://github.com/rust-lang/crates.io-index" 5235 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 5236 | dependencies = [ 5237 | "winapi-i686-pc-windows-gnu", 5238 | "winapi-x86_64-pc-windows-gnu", 5239 | ] 5240 | 5241 | [[package]] 5242 | name = "winapi-i686-pc-windows-gnu" 5243 | version = "0.4.0" 5244 | source = "registry+https://github.com/rust-lang/crates.io-index" 5245 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 5246 | 5247 | [[package]] 5248 | name = "winapi-util" 5249 | version = "0.1.8" 5250 | source = "registry+https://github.com/rust-lang/crates.io-index" 5251 | checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" 5252 | dependencies = [ 5253 | "windows-sys 0.52.0", 5254 | ] 5255 | 5256 | [[package]] 5257 | name = "winapi-x86_64-pc-windows-gnu" 5258 | version = "0.4.0" 5259 | source = "registry+https://github.com/rust-lang/crates.io-index" 5260 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 5261 | 5262 | [[package]] 5263 | name = "windows-core" 5264 | version = "0.52.0" 5265 | source = "registry+https://github.com/rust-lang/crates.io-index" 5266 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 5267 | dependencies = [ 5268 | "windows-targets 0.52.6", 5269 | ] 5270 | 5271 | [[package]] 5272 | name = "windows-sys" 5273 | version = "0.48.0" 5274 | source = "registry+https://github.com/rust-lang/crates.io-index" 5275 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 5276 | dependencies = [ 5277 | "windows-targets 0.48.5", 5278 | ] 5279 | 5280 | [[package]] 5281 | name = "windows-sys" 5282 | version = "0.52.0" 5283 | source = "registry+https://github.com/rust-lang/crates.io-index" 5284 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 5285 | dependencies = [ 5286 | "windows-targets 0.52.6", 5287 | ] 5288 | 5289 | [[package]] 5290 | name = "windows-targets" 5291 | version = "0.48.5" 5292 | source = "registry+https://github.com/rust-lang/crates.io-index" 5293 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 5294 | dependencies = [ 5295 | "windows_aarch64_gnullvm 0.48.5", 5296 | "windows_aarch64_msvc 0.48.5", 5297 | "windows_i686_gnu 0.48.5", 5298 | "windows_i686_msvc 0.48.5", 5299 | "windows_x86_64_gnu 0.48.5", 5300 | "windows_x86_64_gnullvm 0.48.5", 5301 | "windows_x86_64_msvc 0.48.5", 5302 | ] 5303 | 5304 | [[package]] 5305 | name = "windows-targets" 5306 | version = "0.52.6" 5307 | source = "registry+https://github.com/rust-lang/crates.io-index" 5308 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 5309 | dependencies = [ 5310 | "windows_aarch64_gnullvm 0.52.6", 5311 | "windows_aarch64_msvc 0.52.6", 5312 | "windows_i686_gnu 0.52.6", 5313 | "windows_i686_gnullvm", 5314 | "windows_i686_msvc 0.52.6", 5315 | "windows_x86_64_gnu 0.52.6", 5316 | "windows_x86_64_gnullvm 0.52.6", 5317 | "windows_x86_64_msvc 0.52.6", 5318 | ] 5319 | 5320 | [[package]] 5321 | name = "windows_aarch64_gnullvm" 5322 | version = "0.48.5" 5323 | source = "registry+https://github.com/rust-lang/crates.io-index" 5324 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 5325 | 5326 | [[package]] 5327 | name = "windows_aarch64_gnullvm" 5328 | version = "0.52.6" 5329 | source = "registry+https://github.com/rust-lang/crates.io-index" 5330 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 5331 | 5332 | [[package]] 5333 | name = "windows_aarch64_msvc" 5334 | version = "0.48.5" 5335 | source = "registry+https://github.com/rust-lang/crates.io-index" 5336 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 5337 | 5338 | [[package]] 5339 | name = "windows_aarch64_msvc" 5340 | version = "0.52.6" 5341 | source = "registry+https://github.com/rust-lang/crates.io-index" 5342 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 5343 | 5344 | [[package]] 5345 | name = "windows_i686_gnu" 5346 | version = "0.48.5" 5347 | source = "registry+https://github.com/rust-lang/crates.io-index" 5348 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 5349 | 5350 | [[package]] 5351 | name = "windows_i686_gnu" 5352 | version = "0.52.6" 5353 | source = "registry+https://github.com/rust-lang/crates.io-index" 5354 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 5355 | 5356 | [[package]] 5357 | name = "windows_i686_gnullvm" 5358 | version = "0.52.6" 5359 | source = "registry+https://github.com/rust-lang/crates.io-index" 5360 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 5361 | 5362 | [[package]] 5363 | name = "windows_i686_msvc" 5364 | version = "0.48.5" 5365 | source = "registry+https://github.com/rust-lang/crates.io-index" 5366 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 5367 | 5368 | [[package]] 5369 | name = "windows_i686_msvc" 5370 | version = "0.52.6" 5371 | source = "registry+https://github.com/rust-lang/crates.io-index" 5372 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 5373 | 5374 | [[package]] 5375 | name = "windows_x86_64_gnu" 5376 | version = "0.48.5" 5377 | source = "registry+https://github.com/rust-lang/crates.io-index" 5378 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 5379 | 5380 | [[package]] 5381 | name = "windows_x86_64_gnu" 5382 | version = "0.52.6" 5383 | source = "registry+https://github.com/rust-lang/crates.io-index" 5384 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 5385 | 5386 | [[package]] 5387 | name = "windows_x86_64_gnullvm" 5388 | version = "0.48.5" 5389 | source = "registry+https://github.com/rust-lang/crates.io-index" 5390 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 5391 | 5392 | [[package]] 5393 | name = "windows_x86_64_gnullvm" 5394 | version = "0.52.6" 5395 | source = "registry+https://github.com/rust-lang/crates.io-index" 5396 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 5397 | 5398 | [[package]] 5399 | name = "windows_x86_64_msvc" 5400 | version = "0.48.5" 5401 | source = "registry+https://github.com/rust-lang/crates.io-index" 5402 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 5403 | 5404 | [[package]] 5405 | name = "windows_x86_64_msvc" 5406 | version = "0.52.6" 5407 | source = "registry+https://github.com/rust-lang/crates.io-index" 5408 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 5409 | 5410 | [[package]] 5411 | name = "winnow" 5412 | version = "0.5.40" 5413 | source = "registry+https://github.com/rust-lang/crates.io-index" 5414 | checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 5415 | dependencies = [ 5416 | "memchr", 5417 | ] 5418 | 5419 | [[package]] 5420 | name = "winreg" 5421 | version = "0.50.0" 5422 | source = "registry+https://github.com/rust-lang/crates.io-index" 5423 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 5424 | dependencies = [ 5425 | "cfg-if", 5426 | "windows-sys 0.48.0", 5427 | ] 5428 | 5429 | [[package]] 5430 | name = "x509-parser" 5431 | version = "0.14.0" 5432 | source = "registry+https://github.com/rust-lang/crates.io-index" 5433 | checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" 5434 | dependencies = [ 5435 | "asn1-rs", 5436 | "base64 0.13.1", 5437 | "data-encoding", 5438 | "der-parser", 5439 | "lazy_static", 5440 | "nom", 5441 | "oid-registry", 5442 | "rusticata-macros", 5443 | "thiserror", 5444 | "time", 5445 | ] 5446 | 5447 | [[package]] 5448 | name = "yasna" 5449 | version = "0.5.2" 5450 | source = "registry+https://github.com/rust-lang/crates.io-index" 5451 | checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" 5452 | dependencies = [ 5453 | "time", 5454 | ] 5455 | 5456 | [[package]] 5457 | name = "zerocopy" 5458 | version = "0.7.35" 5459 | source = "registry+https://github.com/rust-lang/crates.io-index" 5460 | checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" 5461 | dependencies = [ 5462 | "zerocopy-derive", 5463 | ] 5464 | 5465 | [[package]] 5466 | name = "zerocopy-derive" 5467 | version = "0.7.35" 5468 | source = "registry+https://github.com/rust-lang/crates.io-index" 5469 | checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" 5470 | dependencies = [ 5471 | "proc-macro2", 5472 | "quote", 5473 | "syn 2.0.70", 5474 | ] 5475 | 5476 | [[package]] 5477 | name = "zeroize" 5478 | version = "1.3.0" 5479 | source = "registry+https://github.com/rust-lang/crates.io-index" 5480 | checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" 5481 | dependencies = [ 5482 | "zeroize_derive", 5483 | ] 5484 | 5485 | [[package]] 5486 | name = "zeroize_derive" 5487 | version = "1.4.2" 5488 | source = "registry+https://github.com/rust-lang/crates.io-index" 5489 | checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" 5490 | dependencies = [ 5491 | "proc-macro2", 5492 | "quote", 5493 | "syn 2.0.70", 5494 | ] 5495 | 5496 | [[package]] 5497 | name = "zstd" 5498 | version = "0.11.2+zstd.1.5.2" 5499 | source = "registry+https://github.com/rust-lang/crates.io-index" 5500 | checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" 5501 | dependencies = [ 5502 | "zstd-safe", 5503 | ] 5504 | 5505 | [[package]] 5506 | name = "zstd-safe" 5507 | version = "5.0.2+zstd.1.5.2" 5508 | source = "registry+https://github.com/rust-lang/crates.io-index" 5509 | checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" 5510 | dependencies = [ 5511 | "libc", 5512 | "zstd-sys", 5513 | ] 5514 | 5515 | [[package]] 5516 | name = "zstd-sys" 5517 | version = "2.0.12+zstd.1.5.6" 5518 | source = "registry+https://github.com/rust-lang/crates.io-index" 5519 | checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" 5520 | dependencies = [ 5521 | "cc", 5522 | "pkg-config", 5523 | ] 5524 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ore-cli" 3 | version = "1.0.0-alpha.3" 4 | description = "A command line interface for the ORE cryptocurrency mining." 5 | license = "Apache-2.0" 6 | edition = "2021" 7 | 8 | [[bin]] 9 | name = "ore" 10 | path = "src/main.rs" 11 | 12 | [features] 13 | default = [] 14 | admin = [] 15 | 16 | [dependencies] 17 | bincode = "1.3.3" 18 | bs58 = "0.5.1" 19 | bytemuck = "1.15.0" 20 | cached = "0.46.1" 21 | chrono = "0.4.38" 22 | clap = { version = "4.4.12", features = ["derive"] } 23 | colored = "2.0" 24 | drillx = "2.0.0-beta.1" 25 | futures = "0.3.30" 26 | num_cpus = "1.16.0" 27 | ore-api = "2.0.0-beta.3" 28 | ore-utils = "2.0.0-beta.2" 29 | rand = "0.8.4" 30 | solana-cli-config = "^1.18" 31 | solana-client = "^1.18" 32 | solana-program = "^1.18" 33 | solana-rpc-client = "^1.18" 34 | solana-sdk = "^1.18" 35 | solana-transaction-status = "^1.18" 36 | spl-token = { version = "^4", features = ["no-entrypoint"] } 37 | spl-associated-token-account = { version = "^2.3", features = [ 38 | "no-entrypoint", 39 | ] } 40 | tokio = "1.35.1" 41 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ''' *** See the extended_stats branch for my readme / branch *** ''' 2 | 3 | # ORE CLI 4 | 5 | A command line interface for ORE cryptocurrency mining. 6 | -------------------------------------------------------------------------------- /rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "1.76.0" 3 | components = [ "rustfmt", "rust-analyzer" ] 4 | profile = "minimal" 5 | 6 | -------------------------------------------------------------------------------- /src/args.rs: -------------------------------------------------------------------------------- 1 | use clap::{arg, Parser}; 2 | 3 | #[derive(Parser, Debug)] 4 | pub struct BalanceArgs { 5 | #[arg( 6 | long, 7 | value_name = "ADDRESS", 8 | help = "The address of the account to fetch the balance of" 9 | )] 10 | pub address: Option, 11 | } 12 | 13 | #[derive(Parser, Debug)] 14 | pub struct BenchmarkArgs { 15 | #[arg( 16 | long, 17 | short, 18 | value_name = "THREAD_COUNT", 19 | help = "The number of threads to use during the benchmark", 20 | default_value = "1" 21 | )] 22 | pub threads: u64, 23 | } 24 | 25 | #[derive(Parser, Debug)] 26 | pub struct BussesArgs {} 27 | 28 | #[derive(Parser, Debug)] 29 | pub struct ClaimArgs { 30 | #[arg( 31 | long, 32 | value_name = "AMOUNT", 33 | help = "The amount of rewards to claim. Defaults to max." 34 | )] 35 | pub amount: Option, 36 | 37 | #[arg( 38 | long, 39 | value_name = "WALLET_ADDRESS", 40 | help = "Wallet to receive claimed tokens." 41 | )] 42 | pub to: Option, 43 | } 44 | 45 | #[derive(Parser, Debug)] 46 | pub struct CloseArgs {} 47 | 48 | #[derive(Parser, Debug)] 49 | pub struct ConfigArgs {} 50 | 51 | #[cfg(feature = "admin")] 52 | #[derive(Parser, Debug)] 53 | pub struct PauseArgs {} 54 | 55 | #[cfg(feature = "admin")] 56 | #[derive(Parser, Debug)] 57 | pub struct InitializeArgs {} 58 | 59 | #[derive(Parser, Debug)] 60 | pub struct MineArgs { 61 | // #[cfg(not(feature = "gpu"))] 62 | #[arg( 63 | long, 64 | short, 65 | value_name = "THREAD_COUNT", 66 | help = "The number of CPU threads to allocate to mining", 67 | default_value = "1" 68 | )] 69 | pub threads: u64, 70 | 71 | #[arg( 72 | long, 73 | short, 74 | value_name = "SECONDS", 75 | help = "The number seconds before the deadline to stop mining and start submitting", 76 | default_value = "5" 77 | )] 78 | pub buffer_time: u64, 79 | } 80 | 81 | #[derive(Parser, Debug)] 82 | pub struct RewardsArgs {} 83 | 84 | #[derive(Parser, Debug)] 85 | pub struct StakeArgs { 86 | #[arg( 87 | long, 88 | value_name = "AMOUNT", 89 | help = "The amount of Ore to stake. Defaults to max." 90 | )] 91 | pub amount: Option, 92 | 93 | #[arg( 94 | long, 95 | value_name = "TOKEN_ACCOUNT_ADDRESS", 96 | help = "Token account to send Ore from." 97 | )] 98 | pub sender: Option, 99 | } 100 | 101 | #[cfg(feature = "admin")] 102 | #[derive(Parser, Debug)] 103 | pub struct UpdateAdminArgs { 104 | pub new_admin: String, 105 | } 106 | 107 | #[derive(Parser, Debug)] 108 | pub struct UpgradeArgs { 109 | #[arg( 110 | long, 111 | value_name = "AMOUNT", 112 | help = "The amount of Ore to upgrade from v1 to v2. Defaults to max." 113 | )] 114 | pub amount: Option, 115 | } 116 | -------------------------------------------------------------------------------- /src/balance.rs: -------------------------------------------------------------------------------- 1 | use std::str::FromStr; 2 | 3 | use solana_program::pubkey::Pubkey; 4 | use solana_sdk::signature::Signer; 5 | 6 | use crate::{ 7 | args::BalanceArgs, 8 | utils::{amount_u64_to_string, get_proof_with_authority}, 9 | Miner, 10 | }; 11 | 12 | impl Miner { 13 | pub async fn balance(&self, args: BalanceArgs) { 14 | let signer = self.signer(); 15 | let address = if let Some(address) = args.address { 16 | if let Ok(address) = Pubkey::from_str(&address) { 17 | address 18 | } else { 19 | println!("Invalid address: {:?}", address); 20 | return; 21 | } 22 | } else { 23 | signer.pubkey() 24 | }; 25 | let proof = get_proof_with_authority(&self.rpc_client, address).await; 26 | let token_account_address = spl_associated_token_account::get_associated_token_address( 27 | &address, 28 | &ore_api::consts::MINT_ADDRESS, 29 | ); 30 | let token_balance = if let Ok(Some(token_account)) = self 31 | .rpc_client 32 | .get_token_account(&token_account_address) 33 | .await 34 | { 35 | token_account.token_amount.ui_amount_string 36 | } else { 37 | "0".to_string() 38 | }; 39 | println!( 40 | "Balance: {} ORE\nStake: {} ORE", 41 | token_balance, 42 | amount_u64_to_string(proof.balance) 43 | ) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/benchmark.rs: -------------------------------------------------------------------------------- 1 | use std::{sync::Arc, time::Instant}; 2 | 3 | use solana_rpc_client::spinner; 4 | 5 | use crate::{args::BenchmarkArgs, Miner}; 6 | 7 | const TEST_DURATION: i64 = 30; 8 | 9 | impl Miner { 10 | pub async fn benchmark(&self, args: BenchmarkArgs) { 11 | // Check num threads 12 | self.check_num_cores(args.threads); 13 | 14 | // Dispatch job to each thread 15 | let challenge = [0; 32]; 16 | let progress_bar = Arc::new(spinner::new_progress_bar()); 17 | progress_bar.set_message(format!( 18 | "Benchmarking. This will take {} sec...", 19 | TEST_DURATION 20 | )); 21 | let handles: Vec<_> = (0..args.threads) 22 | .map(|i| { 23 | std::thread::spawn({ 24 | move || { 25 | let timer = Instant::now(); 26 | let first_nonce = u64::MAX.saturating_div(args.threads).saturating_mul(i); 27 | let mut nonce = first_nonce; 28 | loop { 29 | // Create hash 30 | let _hx = drillx::hash(&challenge, &nonce.to_le_bytes()); 31 | 32 | // Increment nonce 33 | nonce += 1; 34 | 35 | // Exit if time has elapsed 36 | if (timer.elapsed().as_secs() as i64).ge(&TEST_DURATION) { 37 | break; 38 | } 39 | } 40 | 41 | // Return hash count 42 | nonce - first_nonce 43 | } 44 | }) 45 | }) 46 | .collect(); 47 | 48 | // Join handles and return best nonce 49 | let mut total_nonces = 0; 50 | for h in handles { 51 | if let Ok(count) = h.join() { 52 | total_nonces += count; 53 | } 54 | } 55 | 56 | // Update log 57 | progress_bar.finish_with_message(format!( 58 | "Hashpower: {} H/sec", 59 | total_nonces.saturating_div(TEST_DURATION as u64), 60 | )); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/busses.rs: -------------------------------------------------------------------------------- 1 | use ore_api::{ 2 | consts::{BUS_ADDRESSES, TOKEN_DECIMALS}, 3 | state::Bus, 4 | }; 5 | use ore_utils::AccountDeserialize; 6 | 7 | use crate::Miner; 8 | 9 | impl Miner { 10 | pub async fn busses(&self) { 11 | let client = self.rpc_client.clone(); 12 | for address in BUS_ADDRESSES.iter() { 13 | let data = client.get_account_data(address).await.unwrap(); 14 | match Bus::try_from_bytes(&data) { 15 | Ok(bus) => { 16 | let rewards = (bus.rewards as f64) / 10f64.powf(TOKEN_DECIMALS as f64); 17 | println!("Bus {}: {:} ORE", bus.id, rewards); 18 | } 19 | Err(_) => {} 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/claim.rs: -------------------------------------------------------------------------------- 1 | use std::str::FromStr; 2 | 3 | use colored::*; 4 | use ore_api::consts::MINT_ADDRESS; 5 | use solana_program::pubkey::Pubkey; 6 | use solana_sdk::signature::Signer; 7 | use spl_token::amount_to_ui_amount; 8 | 9 | use crate::{ 10 | args::ClaimArgs, 11 | cu_limits::CU_LIMIT_CLAIM, 12 | send_and_confirm::ComputeBudget, 13 | utils::{amount_f64_to_u64, ask_confirm, get_proof_with_authority}, 14 | Miner, 15 | }; 16 | 17 | impl Miner { 18 | pub async fn claim(&self, args: ClaimArgs) { 19 | let signer = self.signer(); 20 | let pubkey = signer.pubkey(); 21 | let proof = get_proof_with_authority(&self.rpc_client, pubkey).await; 22 | let mut ixs = vec![]; 23 | let beneficiary = match args.to { 24 | Some(to) => { 25 | // Create beneficiary token account, if needed 26 | let wallet = Pubkey::from_str(&to).expect("Failed to parse wallet address"); 27 | let benefiary_tokens = spl_associated_token_account::get_associated_token_address( 28 | &wallet, 29 | &MINT_ADDRESS, 30 | ); 31 | if self 32 | .rpc_client 33 | .get_token_account(&benefiary_tokens) 34 | .await 35 | .is_err() 36 | { 37 | ixs.push( 38 | spl_associated_token_account::instruction::create_associated_token_account( 39 | &signer.pubkey(), 40 | &wallet, 41 | &ore_api::consts::MINT_ADDRESS, 42 | &spl_token::id(), 43 | ), 44 | ); 45 | } 46 | benefiary_tokens 47 | } 48 | None => self.initialize_ata().await, 49 | }; 50 | 51 | // Parse amount to claim 52 | let amount = if let Some(amount) = args.amount { 53 | amount_f64_to_u64(amount) 54 | } else { 55 | proof.balance 56 | }; 57 | 58 | // Confirm user wants to claim 59 | if !ask_confirm( 60 | format!( 61 | "\nYou are about to claim {}.\n\nAre you sure you want to continue? [Y/n]", 62 | format!( 63 | "{} ORE", 64 | amount_to_ui_amount(amount, ore_api::consts::TOKEN_DECIMALS) 65 | ) 66 | .bold(), 67 | ) 68 | .as_str(), 69 | ) { 70 | return; 71 | } 72 | 73 | // Send and confirm 74 | ixs.push(ore_api::instruction::claim(pubkey, beneficiary, amount)); 75 | self.send_and_confirm(&ixs, ComputeBudget::Fixed(CU_LIMIT_CLAIM), false) 76 | .await 77 | .ok(); 78 | } 79 | 80 | async fn initialize_ata(&self) -> Pubkey { 81 | // Initialize client. 82 | let signer = self.signer(); 83 | let client = self.rpc_client.clone(); 84 | 85 | // Build instructions. 86 | let token_account_pubkey = spl_associated_token_account::get_associated_token_address( 87 | &signer.pubkey(), 88 | &ore_api::consts::MINT_ADDRESS, 89 | ); 90 | 91 | // Check if ata already exists 92 | if let Ok(Some(_ata)) = client.get_token_account(&token_account_pubkey).await { 93 | return token_account_pubkey; 94 | } 95 | // Sign and send transaction. 96 | let ix = spl_associated_token_account::instruction::create_associated_token_account( 97 | &signer.pubkey(), 98 | &signer.pubkey(), 99 | &ore_api::consts::MINT_ADDRESS, 100 | &spl_token::id(), 101 | ); 102 | self.send_and_confirm(&[ix], ComputeBudget::Dynamic, false) 103 | .await 104 | .ok(); 105 | 106 | // Return token account address 107 | token_account_pubkey 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/close.rs: -------------------------------------------------------------------------------- 1 | use colored::*; 2 | use solana_sdk::signature::Signer; 3 | use spl_token::amount_to_ui_amount; 4 | 5 | use crate::{ 6 | args::ClaimArgs, 7 | send_and_confirm::ComputeBudget, 8 | utils::{ask_confirm, get_proof}, 9 | Miner, 10 | }; 11 | 12 | impl Miner { 13 | pub async fn close(&self) { 14 | // Confirm proof exists 15 | let signer = self.signer(); 16 | let proof = get_proof(&self.rpc_client, signer.pubkey()).await; 17 | 18 | // Confirm the user wants to close. 19 | if !ask_confirm( 20 | format!("{} You have {} ORE staked in this account.\nAre you sure you want to {}close this account? [Y/n]", 21 | "WARNING".yellow(), 22 | amount_to_ui_amount(proof.balance, ore_api::consts::TOKEN_DECIMALS), 23 | if proof.balance.gt(&0) { "claim your stake and "} else { "" } 24 | ).as_str() 25 | ) { 26 | return; 27 | } 28 | 29 | // Claim stake 30 | if proof.balance.gt(&0) { 31 | self.claim(ClaimArgs { 32 | amount: None, 33 | to: None, 34 | }) 35 | .await; 36 | } 37 | 38 | // Submit close transaction 39 | let ix = ore_api::instruction::close(signer.pubkey()); 40 | self.send_and_confirm(&[ix], ComputeBudget::Dynamic, false) 41 | .await 42 | .ok(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/config.rs: -------------------------------------------------------------------------------- 1 | use colored::Colorize; 2 | 3 | use crate::{ 4 | utils::{amount_u64_to_string, get_config}, 5 | Miner, 6 | }; 7 | 8 | impl Miner { 9 | pub async fn config(&self) { 10 | let config = get_config(&self.rpc_client).await; 11 | println!("{}: {}", "Last reset".bold(), config.last_reset_at); 12 | println!("{}: {}", "Top staker".bold(), config.top_staker); 13 | println!( 14 | "{}: {} ORE", 15 | "Top stake".bold(), 16 | amount_u64_to_string(config.max_stake) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/cu_limits.rs: -------------------------------------------------------------------------------- 1 | pub const CU_LIMIT_UPGRADE: u32 = 20_000; 2 | pub const CU_LIMIT_CLAIM: u32 = 32_000; 3 | pub const _CU_LIMIT_RESET: u32 = 12_200; 4 | pub const _CU_LIMIT_MINE: u32 = 3200; 5 | -------------------------------------------------------------------------------- /src/initialize.rs: -------------------------------------------------------------------------------- 1 | use ore_api::consts::TREASURY_ADDRESS; 2 | use solana_sdk::{signature::Signer, transaction::Transaction}; 3 | 4 | use crate::Miner; 5 | 6 | impl Miner { 7 | pub async fn initialize(&self) { 8 | // Return early if program is already initialized 9 | if self.rpc_client.get_account(&TREASURY_ADDRESS).await.is_ok() { 10 | return; 11 | } 12 | 13 | // Submit initialize tx 14 | let blockhash = self.rpc_client.get_latest_blockhash().await.unwrap(); 15 | let ix = ore_api::instruction::initialize(self.signer().pubkey()); 16 | let tx = Transaction::new_signed_with_payer( 17 | &[ix], 18 | Some(&self.signer().pubkey()), 19 | &[&self.signer()], 20 | blockhash, 21 | ); 22 | let res = self.rpc_client.send_and_confirm_transaction(&tx).await; 23 | println!("{:?}", res); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | mod args; 2 | mod balance; 3 | mod benchmark; 4 | mod busses; 5 | mod claim; 6 | mod close; 7 | mod config; 8 | mod cu_limits; 9 | #[cfg(feature = "admin")] 10 | mod initialize; 11 | mod mine; 12 | mod open; 13 | mod rewards; 14 | mod send_and_confirm; 15 | mod stake; 16 | mod upgrade; 17 | mod utils; 18 | 19 | use std::sync::Arc; 20 | 21 | use args::*; 22 | use clap::{command, Parser, Subcommand}; 23 | use solana_client::nonblocking::rpc_client::RpcClient; 24 | use solana_sdk::{ 25 | commitment_config::CommitmentConfig, 26 | signature::{read_keypair_file, Keypair}, 27 | }; 28 | 29 | struct Miner { 30 | pub keypair_filepath: Option, 31 | pub priority_fee: u64, 32 | pub rpc_client: Arc, 33 | } 34 | 35 | #[derive(Subcommand, Debug)] 36 | enum Commands { 37 | #[command(about = "Fetch an account balance")] 38 | Balance(BalanceArgs), 39 | 40 | #[command(about = "Benchmark your hashpower")] 41 | Benchmark(BenchmarkArgs), 42 | 43 | #[command(about = "Fetch the bus account balances")] 44 | Busses(BussesArgs), 45 | 46 | #[command(about = "Claim your mining rewards")] 47 | Claim(ClaimArgs), 48 | 49 | #[command(about = "Close your account to recover rent")] 50 | Close(CloseArgs), 51 | 52 | #[command(about = "Fetch the program config")] 53 | Config(ConfigArgs), 54 | 55 | #[command(about = "Start mining")] 56 | Mine(MineArgs), 57 | 58 | #[command(about = "Fetch the current reward rate for each difficulty level")] 59 | Rewards(RewardsArgs), 60 | 61 | #[command(about = "Stake to earn a rewards multiplier")] 62 | Stake(StakeArgs), 63 | 64 | #[command(about = "Upgrade your ORE tokens from v1 to v2")] 65 | Upgrade(UpgradeArgs), 66 | 67 | #[cfg(feature = "admin")] 68 | #[command(about = "Initialize the program")] 69 | Initialize(InitializeArgs), 70 | } 71 | 72 | #[derive(Parser, Debug)] 73 | #[command(about, version)] 74 | struct Args { 75 | #[arg( 76 | long, 77 | value_name = "NETWORK_URL", 78 | help = "Network address of your RPC provider", 79 | global = true 80 | )] 81 | rpc: Option, 82 | 83 | #[clap( 84 | global = true, 85 | short = 'C', 86 | long = "config", 87 | id = "PATH", 88 | help = "Filepath to config file." 89 | )] 90 | config_file: Option, 91 | 92 | #[arg( 93 | long, 94 | value_name = "KEYPAIR_FILEPATH", 95 | help = "Filepath to keypair to use", 96 | global = true 97 | )] 98 | keypair: Option, 99 | 100 | #[arg( 101 | long, 102 | value_name = "MICROLAMPORTS", 103 | help = "Number of microlamports to pay as priority fee per transaction", 104 | default_value = "0", 105 | global = true 106 | )] 107 | priority_fee: u64, 108 | 109 | #[command(subcommand)] 110 | command: Commands, 111 | } 112 | 113 | #[tokio::main] 114 | async fn main() { 115 | let args = Args::parse(); 116 | 117 | // Load the config file from custom path, the default path, or use default config values 118 | let cli_config = if let Some(config_file) = &args.config_file { 119 | solana_cli_config::Config::load(config_file).unwrap_or_else(|_| { 120 | eprintln!("error: Could not find config file `{}`", config_file); 121 | std::process::exit(1); 122 | }) 123 | } else if let Some(config_file) = &*solana_cli_config::CONFIG_FILE { 124 | solana_cli_config::Config::load(config_file).unwrap_or_default() 125 | } else { 126 | solana_cli_config::Config::default() 127 | }; 128 | 129 | // Initialize miner. 130 | let cluster = args.rpc.unwrap_or(cli_config.json_rpc_url); 131 | let default_keypair = args.keypair.unwrap_or(cli_config.keypair_path); 132 | let rpc_client = RpcClient::new_with_commitment(cluster, CommitmentConfig::confirmed()); 133 | 134 | let miner = Arc::new(Miner::new( 135 | Arc::new(rpc_client), 136 | args.priority_fee, 137 | Some(default_keypair), 138 | )); 139 | 140 | // Execute user command. 141 | match args.command { 142 | Commands::Balance(args) => { 143 | miner.balance(args).await; 144 | } 145 | Commands::Benchmark(args) => { 146 | miner.benchmark(args).await; 147 | } 148 | Commands::Busses(_) => { 149 | miner.busses().await; 150 | } 151 | Commands::Claim(args) => { 152 | miner.claim(args).await; 153 | } 154 | Commands::Close(_) => { 155 | miner.close().await; 156 | } 157 | Commands::Config(_) => { 158 | miner.config().await; 159 | } 160 | Commands::Mine(args) => { 161 | miner.mine(args).await; 162 | } 163 | Commands::Rewards(_) => { 164 | miner.rewards().await; 165 | } 166 | Commands::Stake(args) => { 167 | miner.stake(args).await; 168 | } 169 | Commands::Upgrade(args) => { 170 | miner.upgrade(args).await; 171 | } 172 | #[cfg(feature = "admin")] 173 | Commands::Initialize(_) => { 174 | miner.initialize().await; 175 | } 176 | } 177 | } 178 | 179 | impl Miner { 180 | pub fn new( 181 | rpc_client: Arc, 182 | priority_fee: u64, 183 | keypair_filepath: Option, 184 | ) -> Self { 185 | Self { 186 | rpc_client, 187 | keypair_filepath, 188 | priority_fee, 189 | } 190 | } 191 | 192 | pub fn signer(&self) -> Keypair { 193 | match self.keypair_filepath.clone() { 194 | Some(filepath) => read_keypair_file(filepath.clone()) 195 | .expect(format!("No keypair found at {}", filepath).as_str()), 196 | None => panic!("No keypair provided"), 197 | } 198 | } 199 | } 200 | -------------------------------------------------------------------------------- /src/mine.rs: -------------------------------------------------------------------------------- 1 | use std::{sync::Arc, time::Instant}; 2 | 3 | use colored::*; 4 | use drillx::{ 5 | equix::{self}, 6 | Hash, Solution, 7 | }; 8 | use ore_api::{ 9 | consts::{BUS_ADDRESSES, BUS_COUNT, EPOCH_DURATION}, 10 | state::{Config, Proof}, 11 | }; 12 | use rand::Rng; 13 | use solana_program::pubkey::Pubkey; 14 | use solana_rpc_client::spinner; 15 | use solana_sdk::signer::Signer; 16 | 17 | use crate::{ 18 | args::MineArgs, 19 | send_and_confirm::ComputeBudget, 20 | utils::{amount_u64_to_string, get_clock, get_config, get_proof_with_authority}, 21 | Miner, 22 | }; 23 | 24 | impl Miner { 25 | pub async fn mine(&self, args: MineArgs) { 26 | // Register, if needed. 27 | let signer = self.signer(); 28 | self.open().await; 29 | 30 | // Check num threads 31 | self.check_num_cores(args.threads); 32 | 33 | // Start mining loop 34 | loop { 35 | // Fetch proof 36 | let proof = get_proof_with_authority(&self.rpc_client, signer.pubkey()).await; 37 | println!( 38 | "\nStake balance: {} ORE", 39 | amount_u64_to_string(proof.balance) 40 | ); 41 | 42 | // Calc cutoff time 43 | let cutoff_time = self.get_cutoff(proof, args.buffer_time).await; 44 | 45 | // Run drillx 46 | let solution = Self::find_hash_par(proof, cutoff_time, args.threads).await; 47 | 48 | // Submit most difficult hash 49 | let config = get_config(&self.rpc_client).await; 50 | let mut compute_budget = 500_000; 51 | let mut ixs = vec![]; 52 | if self.should_reset(config).await { 53 | compute_budget += 100_000; 54 | ixs.push(ore_api::instruction::reset(signer.pubkey())); 55 | } 56 | if self.should_crown(config, proof).await { 57 | compute_budget += 250_000; 58 | ixs.push(ore_api::instruction::crown( 59 | signer.pubkey(), 60 | config.top_staker, 61 | )) 62 | } 63 | ixs.push(ore_api::instruction::mine( 64 | signer.pubkey(), 65 | signer.pubkey(), 66 | find_bus(), 67 | solution, 68 | )); 69 | self.send_and_confirm(&ixs, ComputeBudget::Fixed(compute_budget), false) 70 | .await 71 | .ok(); 72 | } 73 | } 74 | 75 | async fn find_hash_par(proof: Proof, cutoff_time: u64, threads: u64) -> Solution { 76 | // Dispatch job to each thread 77 | let progress_bar = Arc::new(spinner::new_progress_bar()); 78 | progress_bar.set_message("Mining..."); 79 | let handles: Vec<_> = (0..threads) 80 | .map(|i| { 81 | std::thread::spawn({ 82 | let proof = proof.clone(); 83 | let progress_bar = progress_bar.clone(); 84 | let mut memory = equix::SolverMemory::new(); 85 | move || { 86 | let timer = Instant::now(); 87 | let mut nonce = u64::MAX.saturating_div(threads).saturating_mul(i); 88 | let mut best_nonce = nonce; 89 | let mut best_difficulty = 0; 90 | let mut best_hash = Hash::default(); 91 | loop { 92 | // Create hash 93 | if let Ok(hx) = drillx::hash_with_memory( 94 | &mut memory, 95 | &proof.challenge, 96 | &nonce.to_le_bytes(), 97 | ) { 98 | let difficulty = hx.difficulty(); 99 | if difficulty.gt(&best_difficulty) { 100 | best_nonce = nonce; 101 | best_difficulty = difficulty; 102 | best_hash = hx; 103 | } 104 | } 105 | 106 | // Exit if time has elapsed 107 | if nonce % 100 == 0 { 108 | if timer.elapsed().as_secs().ge(&cutoff_time) { 109 | if best_difficulty.gt(&ore_api::consts::MIN_DIFFICULTY) { 110 | // Mine until min difficulty has been met 111 | break; 112 | } 113 | } else if i == 0 { 114 | progress_bar.set_message(format!( 115 | "Mining... ({} sec remaining)", 116 | cutoff_time.saturating_sub(timer.elapsed().as_secs()), 117 | )); 118 | } 119 | } 120 | 121 | // Increment nonce 122 | nonce += 1; 123 | } 124 | 125 | // Return the best nonce 126 | (best_nonce, best_difficulty, best_hash) 127 | } 128 | }) 129 | }) 130 | .collect(); 131 | 132 | // Join handles and return best nonce 133 | let mut best_nonce = 0; 134 | let mut best_difficulty = 0; 135 | let mut best_hash = Hash::default(); 136 | for h in handles { 137 | if let Ok((nonce, difficulty, hash)) = h.join() { 138 | if difficulty > best_difficulty { 139 | best_difficulty = difficulty; 140 | best_nonce = nonce; 141 | best_hash = hash; 142 | } 143 | } 144 | } 145 | 146 | // Update log 147 | progress_bar.finish_with_message(format!( 148 | "Best hash: {} (difficulty: {})", 149 | bs58::encode(best_hash.h).into_string(), 150 | best_difficulty 151 | )); 152 | 153 | Solution::new(best_hash.d, best_nonce.to_le_bytes()) 154 | } 155 | 156 | pub fn check_num_cores(&self, threads: u64) { 157 | // Check num threads 158 | let num_cores = num_cpus::get() as u64; 159 | if threads.gt(&num_cores) { 160 | println!( 161 | "{} Number of threads ({}) exceeds available cores ({})", 162 | "WARNING".bold().yellow(), 163 | threads, 164 | num_cores 165 | ); 166 | } 167 | } 168 | 169 | async fn should_crown(&self, config: Config, proof: Proof) -> bool { 170 | proof.balance.gt(&config.max_stake) 171 | } 172 | 173 | async fn should_reset(&self, config: Config) -> bool { 174 | let clock = get_clock(&self.rpc_client).await; 175 | config 176 | .last_reset_at 177 | .saturating_add(EPOCH_DURATION) 178 | .saturating_sub(5) // Buffer 179 | .le(&clock.unix_timestamp) 180 | } 181 | 182 | async fn get_cutoff(&self, proof: Proof, buffer_time: u64) -> u64 { 183 | let clock = get_clock(&self.rpc_client).await; 184 | proof 185 | .last_hash_at 186 | .saturating_add(60) 187 | .saturating_sub(buffer_time as i64) 188 | .saturating_sub(clock.unix_timestamp) 189 | .max(0) as u64 190 | } 191 | } 192 | 193 | // TODO Pick a better strategy (avoid draining bus) 194 | fn find_bus() -> Pubkey { 195 | let i = rand::thread_rng().gen_range(0..BUS_COUNT); 196 | BUS_ADDRESSES[i] 197 | } 198 | -------------------------------------------------------------------------------- /src/open.rs: -------------------------------------------------------------------------------- 1 | use solana_sdk::signature::Signer; 2 | 3 | use crate::{send_and_confirm::ComputeBudget, utils::proof_pubkey, Miner}; 4 | 5 | impl Miner { 6 | pub async fn open(&self) { 7 | // Return early if miner is already registered 8 | let signer = self.signer(); 9 | let proof_address = proof_pubkey(signer.pubkey()); 10 | if self.rpc_client.get_account(&proof_address).await.is_ok() { 11 | return; 12 | } 13 | 14 | // Sign and send transaction. 15 | println!("Generating challenge..."); 16 | let ix = ore_api::instruction::open(signer.pubkey(), signer.pubkey(), signer.pubkey()); 17 | self.send_and_confirm(&[ix], ComputeBudget::Dynamic, false) 18 | .await 19 | .ok(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/rewards.rs: -------------------------------------------------------------------------------- 1 | use crate::{ 2 | utils::{amount_u64_to_string, get_config}, 3 | Miner, 4 | }; 5 | 6 | impl Miner { 7 | pub async fn rewards(&self) { 8 | let config = get_config(&self.rpc_client).await; 9 | let base_reward_rate = config.base_reward_rate; 10 | let base_difficulty = ore_api::consts::MIN_DIFFICULTY; 11 | 12 | let mut s = format!( 13 | "{}: {} ORE", 14 | base_difficulty, 15 | amount_u64_to_string(base_reward_rate) 16 | ) 17 | .to_string(); 18 | for i in 1..32 { 19 | let reward_rate = base_reward_rate.saturating_mul(2u64.saturating_pow(i)); 20 | s = format!( 21 | "{}\n{}: {} ORE", 22 | s, 23 | base_difficulty + i, 24 | amount_u64_to_string(reward_rate) 25 | ); 26 | } 27 | println!("{}", s); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/send_and_confirm.rs: -------------------------------------------------------------------------------- 1 | use std::time::Duration; 2 | 3 | use colored::*; 4 | use solana_client::{ 5 | client_error::{ClientError, ClientErrorKind, Result as ClientResult}, 6 | rpc_config::RpcSendTransactionConfig, 7 | }; 8 | use solana_program::{ 9 | instruction::Instruction, 10 | native_token::{lamports_to_sol, sol_to_lamports}, 11 | }; 12 | use solana_rpc_client::spinner; 13 | use solana_sdk::{ 14 | commitment_config::CommitmentLevel, 15 | compute_budget::ComputeBudgetInstruction, 16 | signature::{Signature, Signer}, 17 | transaction::Transaction, 18 | }; 19 | use solana_transaction_status::{TransactionConfirmationStatus, UiTransactionEncoding}; 20 | 21 | use crate::Miner; 22 | 23 | const MIN_SOL_BALANCE: f64 = 0.005; 24 | 25 | const RPC_RETRIES: usize = 0; 26 | const _SIMULATION_RETRIES: usize = 4; 27 | const GATEWAY_RETRIES: usize = 150; 28 | const CONFIRM_RETRIES: usize = 1; 29 | 30 | const CONFIRM_DELAY: u64 = 0; 31 | const GATEWAY_DELAY: u64 = 300; 32 | 33 | pub enum ComputeBudget { 34 | Dynamic, 35 | Fixed(u32), 36 | } 37 | 38 | impl Miner { 39 | pub async fn send_and_confirm( 40 | &self, 41 | ixs: &[Instruction], 42 | compute_budget: ComputeBudget, 43 | skip_confirm: bool, 44 | ) -> ClientResult { 45 | let progress_bar = spinner::new_progress_bar(); 46 | let signer = self.signer(); 47 | let client = self.rpc_client.clone(); 48 | 49 | // Return error, if balance is zero 50 | if let Ok(balance) = client.get_balance(&signer.pubkey()).await { 51 | if balance <= sol_to_lamports(MIN_SOL_BALANCE) { 52 | panic!( 53 | "{} Insufficient balance: {} SOL\nPlease top up with at least {} SOL", 54 | "ERROR".bold().red(), 55 | lamports_to_sol(balance), 56 | MIN_SOL_BALANCE 57 | ); 58 | } 59 | } 60 | 61 | // Set compute units 62 | let mut final_ixs = vec![]; 63 | match compute_budget { 64 | ComputeBudget::Dynamic => { 65 | // TODO simulate 66 | final_ixs.push(ComputeBudgetInstruction::set_compute_unit_limit(1_400_000)) 67 | } 68 | ComputeBudget::Fixed(cus) => { 69 | final_ixs.push(ComputeBudgetInstruction::set_compute_unit_limit(cus)) 70 | } 71 | } 72 | final_ixs.push(ComputeBudgetInstruction::set_compute_unit_price( 73 | self.priority_fee, 74 | )); 75 | final_ixs.extend_from_slice(ixs); 76 | 77 | // Build tx 78 | let send_cfg = RpcSendTransactionConfig { 79 | skip_preflight: true, 80 | preflight_commitment: Some(CommitmentLevel::Confirmed), 81 | encoding: Some(UiTransactionEncoding::Base64), 82 | max_retries: Some(RPC_RETRIES), 83 | min_context_slot: None, 84 | }; 85 | let mut tx = Transaction::new_with_payer(&final_ixs, Some(&signer.pubkey())); 86 | 87 | // Sign tx 88 | let (hash, _slot) = client 89 | .get_latest_blockhash_with_commitment(self.rpc_client.commitment()) 90 | .await 91 | .unwrap(); 92 | tx.sign(&[&signer], hash); 93 | 94 | // Submit tx 95 | let mut attempts = 0; 96 | loop { 97 | progress_bar.set_message(format!("Submitting transaction... (attempt {})", attempts)); 98 | match client.send_transaction_with_config(&tx, send_cfg).await { 99 | Ok(sig) => { 100 | // Skip confirmation 101 | if skip_confirm { 102 | progress_bar.finish_with_message(format!("Sent: {}", sig)); 103 | return Ok(sig); 104 | } 105 | 106 | // Confirm the tx landed 107 | for _ in 0..CONFIRM_RETRIES { 108 | std::thread::sleep(Duration::from_millis(CONFIRM_DELAY)); 109 | match client.get_signature_statuses(&[sig]).await { 110 | Ok(signature_statuses) => { 111 | for status in signature_statuses.value { 112 | if let Some(status) = status { 113 | if let Some(err) = status.err { 114 | progress_bar.finish_with_message(format!( 115 | "{}: {}", 116 | "ERROR".bold().red(), 117 | err 118 | )); 119 | return Err(ClientError { 120 | request: None, 121 | kind: ClientErrorKind::Custom(err.to_string()), 122 | }); 123 | } 124 | if let Some(confirmation) = status.confirmation_status { 125 | match confirmation { 126 | TransactionConfirmationStatus::Processed => {} 127 | TransactionConfirmationStatus::Confirmed 128 | | TransactionConfirmationStatus::Finalized => { 129 | progress_bar.finish_with_message(format!( 130 | "{} {}", 131 | "OK".bold().green(), 132 | sig 133 | )); 134 | return Ok(sig); 135 | } 136 | } 137 | } 138 | } 139 | } 140 | } 141 | 142 | // Handle confirmation errors 143 | Err(err) => { 144 | progress_bar.set_message(format!( 145 | "{}: {}", 146 | "ERROR".bold().red(), 147 | err.kind().to_string() 148 | )); 149 | } 150 | } 151 | } 152 | } 153 | 154 | // Handle submit errors 155 | Err(err) => { 156 | progress_bar.set_message(format!( 157 | "{}: {}", 158 | "ERROR".bold().red(), 159 | err.kind().to_string() 160 | )); 161 | } 162 | } 163 | 164 | // Retry 165 | std::thread::sleep(Duration::from_millis(GATEWAY_DELAY)); 166 | attempts += 1; 167 | if attempts > GATEWAY_RETRIES { 168 | progress_bar.finish_with_message(format!("{}: Max retries", "ERROR".bold().red())); 169 | return Err(ClientError { 170 | request: None, 171 | kind: ClientErrorKind::Custom("Max retries".into()), 172 | }); 173 | } 174 | } 175 | } 176 | 177 | // TODO 178 | fn _simulate(&self) { 179 | 180 | // Simulate tx 181 | // let mut sim_attempts = 0; 182 | // 'simulate: loop { 183 | // let sim_res = client 184 | // .simulate_transaction_with_config( 185 | // &tx, 186 | // RpcSimulateTransactionConfig { 187 | // sig_verify: false, 188 | // replace_recent_blockhash: true, 189 | // commitment: Some(self.rpc_client.commitment()), 190 | // encoding: Some(UiTransactionEncoding::Base64), 191 | // accounts: None, 192 | // min_context_slot: Some(slot), 193 | // inner_instructions: false, 194 | // }, 195 | // ) 196 | // .await; 197 | // match sim_res { 198 | // Ok(sim_res) => { 199 | // if let Some(err) = sim_res.value.err { 200 | // println!("Simulaton error: {:?}", err); 201 | // sim_attempts += 1; 202 | // } else if let Some(units_consumed) = sim_res.value.units_consumed { 203 | // if dynamic_cus { 204 | // println!("Dynamic CUs: {:?}", units_consumed); 205 | // let cu_budget_ix = ComputeBudgetInstruction::set_compute_unit_limit( 206 | // units_consumed as u32 + 1000, 207 | // ); 208 | // let cu_price_ix = 209 | // ComputeBudgetInstruction::set_compute_unit_price(self.priority_fee); 210 | // let mut final_ixs = vec![]; 211 | // final_ixs.extend_from_slice(&[cu_budget_ix, cu_price_ix]); 212 | // final_ixs.extend_from_slice(ixs); 213 | // tx = Transaction::new_with_payer(&final_ixs, Some(&signer.pubkey())); 214 | // } 215 | // break 'simulate; 216 | // } 217 | // } 218 | // Err(err) => { 219 | // println!("Simulaton error: {:?}", err); 220 | // sim_attempts += 1; 221 | // } 222 | // } 223 | 224 | // // Abort if sim fails 225 | // if sim_attempts.gt(&SIMULATION_RETRIES) { 226 | // return Err(ClientError { 227 | // request: None, 228 | // kind: ClientErrorKind::Custom("Simulation failed".into()), 229 | // }); 230 | // } 231 | // } 232 | } 233 | } 234 | -------------------------------------------------------------------------------- /src/stake.rs: -------------------------------------------------------------------------------- 1 | use std::str::FromStr; 2 | 3 | use solana_program::pubkey::Pubkey; 4 | use solana_sdk::signature::Signer; 5 | 6 | use crate::{ 7 | args::StakeArgs, cu_limits::CU_LIMIT_CLAIM, send_and_confirm::ComputeBudget, 8 | utils::amount_f64_to_u64, Miner, 9 | }; 10 | 11 | impl Miner { 12 | pub async fn stake(&self, args: StakeArgs) { 13 | // Get signer 14 | let signer = self.signer(); 15 | let sender = match args.sender { 16 | Some(sender) => Pubkey::from_str(&sender).expect("Failed to parse sender address"), 17 | None => spl_associated_token_account::get_associated_token_address( 18 | &signer.pubkey(), 19 | &ore_api::consts::MINT_ADDRESS, 20 | ), 21 | }; 22 | 23 | // Get token account 24 | let Ok(Some(token_account)) = self.rpc_client.get_token_account(&sender).await else { 25 | println!("Failed to fetch token account"); 26 | return; 27 | }; 28 | 29 | // Parse amount 30 | let amount: u64 = if let Some(amount) = args.amount { 31 | amount_f64_to_u64(amount) 32 | } else { 33 | u64::from_str(token_account.token_amount.amount.as_str()) 34 | .expect("Failed to parse token balance") 35 | }; 36 | 37 | // Send tx 38 | let ix = ore_api::instruction::stake(signer.pubkey(), sender, amount); 39 | self.send_and_confirm(&[ix], ComputeBudget::Fixed(CU_LIMIT_CLAIM), false) 40 | .await 41 | .ok(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/upgrade.rs: -------------------------------------------------------------------------------- 1 | use colored::*; 2 | use solana_sdk::{pubkey::Pubkey, signer::Signer}; 3 | use spl_token::amount_to_ui_amount; 4 | 5 | use crate::{ 6 | cu_limits::CU_LIMIT_UPGRADE, 7 | send_and_confirm::ComputeBudget, 8 | utils::{amount_f64_to_u64_v1, ask_confirm}, 9 | Miner, UpgradeArgs, 10 | }; 11 | 12 | impl Miner { 13 | pub async fn upgrade(&self, args: UpgradeArgs) { 14 | let signer = &self.signer(); 15 | let beneficiary = self.get_or_initialize_ata().await; 16 | let (sender, sender_balance) = self.get_ata_v1().await; 17 | 18 | let amount_f64 = match args.amount { 19 | Some(f64) => f64, 20 | None => { 21 | println!( 22 | "Defaulting to max amount of v1 Ore token in wallet: {}", 23 | sender_balance 24 | ); 25 | sender_balance 26 | } 27 | }; 28 | let amount = amount_f64_to_u64_v1(amount_f64); 29 | let amount_ui = amount_to_ui_amount(amount, ore_api::consts::TOKEN_DECIMALS_V1); 30 | 31 | if !ask_confirm( 32 | format!( 33 | "\n You are about to upgrade {}. \n\nAre you sure you want to continue? [Y/n]", 34 | format!("{} ORE", amount_ui).bold(), 35 | ) 36 | .as_str(), 37 | ) { 38 | return; 39 | } 40 | 41 | let ix = ore_api::instruction::upgrade(signer.pubkey(), beneficiary, sender, amount); 42 | match self 43 | .send_and_confirm(&[ix], ComputeBudget::Fixed(CU_LIMIT_UPGRADE), false) 44 | .await 45 | { 46 | Ok(_sig) => {} 47 | Err(err) => { 48 | println!("error: {}", err); 49 | } 50 | } 51 | } 52 | 53 | // asserts that token account exists and gets balance 54 | async fn get_ata_v1(&self) -> (Pubkey, f64) { 55 | // Initialize client. 56 | let signer = self.signer(); 57 | let client = self.rpc_client.clone(); 58 | 59 | // Derive assoicated token address (for v1 account) 60 | let token_account_pubkey_v1 = spl_associated_token_account::get_associated_token_address( 61 | &signer.pubkey(), 62 | &ore_api::consts::MINT_V1_ADDRESS, 63 | ); 64 | 65 | // Get token account balance 66 | let balance = match client.get_token_account(&token_account_pubkey_v1).await { 67 | Ok(None) => { 68 | panic!("v1 token account doesn't exist") 69 | } 70 | Ok(Some(token_account)) => match token_account.token_amount.ui_amount { 71 | Some(ui_amount) => ui_amount, 72 | None => { 73 | panic!( 74 | "Error parsing token account UI amount: {}", 75 | token_account.token_amount.amount 76 | ) 77 | } 78 | }, 79 | Err(err) => { 80 | panic!("Error fetching token account: {}", err) 81 | } 82 | }; 83 | 84 | // Return v1 token account address 85 | (token_account_pubkey_v1, balance) 86 | } 87 | 88 | async fn get_or_initialize_ata(&self) -> Pubkey { 89 | // Initialize client 90 | let signer = self.signer(); 91 | let client = self.rpc_client.clone(); 92 | 93 | // Derive assoicated token address (ata) 94 | let token_account_pubkey = spl_associated_token_account::get_associated_token_address( 95 | &signer.pubkey(), 96 | &ore_api::consts::MINT_ADDRESS, 97 | ); 98 | 99 | // Check if ata already exists or init 100 | if let Err(_err) = client.get_token_account(&token_account_pubkey).await { 101 | println!("Initializing v2 token account..."); 102 | let ix = spl_associated_token_account::instruction::create_associated_token_account( 103 | &signer.pubkey(), 104 | &signer.pubkey(), 105 | &ore_api::consts::MINT_ADDRESS, 106 | &spl_token::id(), 107 | ); 108 | self.send_and_confirm(&[ix], ComputeBudget::Dynamic, false) 109 | .await 110 | .ok(); 111 | } 112 | 113 | // Return token account address 114 | token_account_pubkey 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /src/utils.rs: -------------------------------------------------------------------------------- 1 | use std::io::Read; 2 | 3 | use cached::proc_macro::cached; 4 | use ore_api::{ 5 | consts::{ 6 | CONFIG_ADDRESS, MINT_ADDRESS, PROOF, TOKEN_DECIMALS, TOKEN_DECIMALS_V1, TREASURY_ADDRESS, 7 | }, 8 | state::{Config, Proof, Treasury}, 9 | }; 10 | use ore_utils::AccountDeserialize; 11 | use solana_client::nonblocking::rpc_client::RpcClient; 12 | use solana_program::{pubkey::Pubkey, sysvar}; 13 | use solana_sdk::clock::Clock; 14 | use spl_associated_token_account::get_associated_token_address; 15 | 16 | pub async fn _get_treasury(client: &RpcClient) -> Treasury { 17 | let data = client 18 | .get_account_data(&TREASURY_ADDRESS) 19 | .await 20 | .expect("Failed to get treasury account"); 21 | *Treasury::try_from_bytes(&data).expect("Failed to parse treasury account") 22 | } 23 | 24 | pub async fn get_config(client: &RpcClient) -> Config { 25 | let data = client 26 | .get_account_data(&CONFIG_ADDRESS) 27 | .await 28 | .expect("Failed to get config account"); 29 | *Config::try_from_bytes(&data).expect("Failed to parse config account") 30 | } 31 | 32 | pub async fn get_proof_with_authority(client: &RpcClient, authority: Pubkey) -> Proof { 33 | let proof_address = proof_pubkey(authority); 34 | get_proof(client, proof_address).await 35 | } 36 | 37 | pub async fn get_proof(client: &RpcClient, address: Pubkey) -> Proof { 38 | let data = client 39 | .get_account_data(&address) 40 | .await 41 | .expect("Failed to get miner account"); 42 | *Proof::try_from_bytes(&data).expect("Failed to parse miner account") 43 | } 44 | 45 | pub async fn get_clock(client: &RpcClient) -> Clock { 46 | let data = client 47 | .get_account_data(&sysvar::clock::ID) 48 | .await 49 | .expect("Failed to get miner account"); 50 | bincode::deserialize::(&data).expect("Failed to deserialize clock") 51 | } 52 | 53 | pub fn amount_u64_to_string(amount: u64) -> String { 54 | amount_u64_to_f64(amount).to_string() 55 | } 56 | 57 | pub fn amount_u64_to_f64(amount: u64) -> f64 { 58 | (amount as f64) / 10f64.powf(TOKEN_DECIMALS as f64) 59 | } 60 | 61 | pub fn amount_f64_to_u64(amount: f64) -> u64 { 62 | (amount * 10f64.powf(TOKEN_DECIMALS as f64)) as u64 63 | } 64 | 65 | pub fn amount_f64_to_u64_v1(amount: f64) -> u64 { 66 | (amount * 10f64.powf(TOKEN_DECIMALS_V1 as f64)) as u64 67 | } 68 | 69 | pub fn ask_confirm(question: &str) -> bool { 70 | println!("{}", question); 71 | loop { 72 | let mut input = [0]; 73 | let _ = std::io::stdin().read(&mut input); 74 | match input[0] as char { 75 | 'y' | 'Y' => return true, 76 | 'n' | 'N' => return false, 77 | _ => println!("y/n only please."), 78 | } 79 | } 80 | } 81 | 82 | #[cached] 83 | pub fn proof_pubkey(authority: Pubkey) -> Pubkey { 84 | Pubkey::find_program_address(&[PROOF, authority.as_ref()], &ore_api::ID).0 85 | } 86 | 87 | #[cached] 88 | pub fn treasury_tokens_pubkey() -> Pubkey { 89 | get_associated_token_address(&TREASURY_ADDRESS, &MINT_ADDRESS) 90 | } 91 | --------------------------------------------------------------------------------