├── .gitignore ├── .gitmodules ├── Cargo.lock ├── Cargo.toml ├── README.md └── src ├── auth ├── Cargo.toml └── src │ ├── lib.rs │ └── server.rs ├── block_engine ├── Cargo.toml └── src │ └── main.rs ├── jito_protos ├── Cargo.toml ├── build.rs └── src │ └── lib.rs ├── searcher ├── Cargo.toml └── src │ ├── lib.rs │ └── server.rs ├── searcher_client ├── Cargo.toml └── src │ └── main.rs └── validator ├── Cargo.toml └── src ├── lib.rs └── server.rs /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | .idea/ 3 | keypair.json 4 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/jito_protos/protos"] 2 | path = src/jito_protos/protos 3 | url = https://github.com/jito-labs/mev-protos.git 4 | -------------------------------------------------------------------------------- /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 = "adler" 17 | version = "1.0.2" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 20 | 21 | [[package]] 22 | name = "aead" 23 | version = "0.4.3" 24 | source = "registry+https://github.com/rust-lang/crates.io-index" 25 | checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" 26 | dependencies = [ 27 | "generic-array", 28 | ] 29 | 30 | [[package]] 31 | name = "aes" 32 | version = "0.7.5" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" 35 | dependencies = [ 36 | "cfg-if", 37 | "cipher 0.3.0", 38 | "cpufeatures", 39 | "opaque-debug", 40 | ] 41 | 42 | [[package]] 43 | name = "aes-gcm-siv" 44 | version = "0.10.3" 45 | source = "registry+https://github.com/rust-lang/crates.io-index" 46 | checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc" 47 | dependencies = [ 48 | "aead", 49 | "aes", 50 | "cipher 0.3.0", 51 | "ctr", 52 | "polyval", 53 | "subtle", 54 | "zeroize", 55 | ] 56 | 57 | [[package]] 58 | name = "ahash" 59 | version = "0.7.6" 60 | source = "registry+https://github.com/rust-lang/crates.io-index" 61 | checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" 62 | dependencies = [ 63 | "getrandom 0.2.8", 64 | "once_cell", 65 | "version_check", 66 | ] 67 | 68 | [[package]] 69 | name = "aho-corasick" 70 | version = "0.7.19" 71 | source = "registry+https://github.com/rust-lang/crates.io-index" 72 | checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" 73 | dependencies = [ 74 | "memchr", 75 | ] 76 | 77 | [[package]] 78 | name = "alloc-no-stdlib" 79 | version = "2.0.4" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 82 | 83 | [[package]] 84 | name = "alloc-stdlib" 85 | version = "0.2.2" 86 | source = "registry+https://github.com/rust-lang/crates.io-index" 87 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 88 | dependencies = [ 89 | "alloc-no-stdlib", 90 | ] 91 | 92 | [[package]] 93 | name = "android_system_properties" 94 | version = "0.1.5" 95 | source = "registry+https://github.com/rust-lang/crates.io-index" 96 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 97 | dependencies = [ 98 | "libc", 99 | ] 100 | 101 | [[package]] 102 | name = "ansi_term" 103 | version = "0.12.1" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" 106 | dependencies = [ 107 | "winapi", 108 | ] 109 | 110 | [[package]] 111 | name = "anyhow" 112 | version = "1.0.66" 113 | source = "registry+https://github.com/rust-lang/crates.io-index" 114 | checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" 115 | 116 | [[package]] 117 | name = "arrayref" 118 | version = "0.3.6" 119 | source = "registry+https://github.com/rust-lang/crates.io-index" 120 | checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" 121 | 122 | [[package]] 123 | name = "arrayvec" 124 | version = "0.7.2" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" 127 | 128 | [[package]] 129 | name = "asn1-rs" 130 | version = "0.5.1" 131 | source = "registry+https://github.com/rust-lang/crates.io-index" 132 | checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" 133 | dependencies = [ 134 | "asn1-rs-derive", 135 | "asn1-rs-impl", 136 | "displaydoc", 137 | "nom", 138 | "num-traits", 139 | "rusticata-macros", 140 | "thiserror", 141 | "time 0.3.17", 142 | ] 143 | 144 | [[package]] 145 | name = "asn1-rs-derive" 146 | version = "0.4.0" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" 149 | dependencies = [ 150 | "proc-macro2 1.0.47", 151 | "quote 1.0.21", 152 | "syn 1.0.103", 153 | "synstructure", 154 | ] 155 | 156 | [[package]] 157 | name = "asn1-rs-impl" 158 | version = "0.1.0" 159 | source = "registry+https://github.com/rust-lang/crates.io-index" 160 | checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" 161 | dependencies = [ 162 | "proc-macro2 1.0.47", 163 | "quote 1.0.21", 164 | "syn 1.0.103", 165 | ] 166 | 167 | [[package]] 168 | name = "assert_matches" 169 | version = "1.5.0" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" 172 | 173 | [[package]] 174 | name = "async-compression" 175 | version = "0.3.15" 176 | source = "registry+https://github.com/rust-lang/crates.io-index" 177 | checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" 178 | dependencies = [ 179 | "brotli", 180 | "flate2", 181 | "futures-core", 182 | "memchr", 183 | "pin-project-lite", 184 | "tokio", 185 | ] 186 | 187 | [[package]] 188 | name = "async-mutex" 189 | version = "1.4.0" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" 192 | dependencies = [ 193 | "event-listener", 194 | ] 195 | 196 | [[package]] 197 | name = "async-stream" 198 | version = "0.3.3" 199 | source = "registry+https://github.com/rust-lang/crates.io-index" 200 | checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" 201 | dependencies = [ 202 | "async-stream-impl", 203 | "futures-core", 204 | ] 205 | 206 | [[package]] 207 | name = "async-stream-impl" 208 | version = "0.3.3" 209 | source = "registry+https://github.com/rust-lang/crates.io-index" 210 | checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" 211 | dependencies = [ 212 | "proc-macro2 1.0.47", 213 | "quote 1.0.21", 214 | "syn 1.0.103", 215 | ] 216 | 217 | [[package]] 218 | name = "async-trait" 219 | version = "0.1.58" 220 | source = "registry+https://github.com/rust-lang/crates.io-index" 221 | checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c" 222 | dependencies = [ 223 | "proc-macro2 1.0.47", 224 | "quote 1.0.21", 225 | "syn 1.0.103", 226 | ] 227 | 228 | [[package]] 229 | name = "atty" 230 | version = "0.2.14" 231 | source = "registry+https://github.com/rust-lang/crates.io-index" 232 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 233 | dependencies = [ 234 | "hermit-abi", 235 | "libc", 236 | "winapi", 237 | ] 238 | 239 | [[package]] 240 | name = "autocfg" 241 | version = "1.1.0" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 244 | 245 | [[package]] 246 | name = "base64" 247 | version = "0.12.3" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 250 | 251 | [[package]] 252 | name = "base64" 253 | version = "0.13.1" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 256 | 257 | [[package]] 258 | name = "base64ct" 259 | version = "1.5.3" 260 | source = "registry+https://github.com/rust-lang/crates.io-index" 261 | checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" 262 | 263 | [[package]] 264 | name = "bincode" 265 | version = "1.3.3" 266 | source = "registry+https://github.com/rust-lang/crates.io-index" 267 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 268 | dependencies = [ 269 | "serde", 270 | ] 271 | 272 | [[package]] 273 | name = "bitflags" 274 | version = "1.3.2" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 277 | 278 | [[package]] 279 | name = "bitmaps" 280 | version = "2.1.0" 281 | source = "registry+https://github.com/rust-lang/crates.io-index" 282 | checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" 283 | dependencies = [ 284 | "typenum", 285 | ] 286 | 287 | [[package]] 288 | name = "blake3" 289 | version = "1.3.1" 290 | source = "registry+https://github.com/rust-lang/crates.io-index" 291 | checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" 292 | dependencies = [ 293 | "arrayref", 294 | "arrayvec", 295 | "cc", 296 | "cfg-if", 297 | "constant_time_eq", 298 | "digest 0.10.5", 299 | ] 300 | 301 | [[package]] 302 | name = "block-buffer" 303 | version = "0.9.0" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 306 | dependencies = [ 307 | "block-padding", 308 | "generic-array", 309 | ] 310 | 311 | [[package]] 312 | name = "block-buffer" 313 | version = "0.10.3" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" 316 | dependencies = [ 317 | "generic-array", 318 | ] 319 | 320 | [[package]] 321 | name = "block-padding" 322 | version = "0.2.1" 323 | source = "registry+https://github.com/rust-lang/crates.io-index" 324 | checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" 325 | 326 | [[package]] 327 | name = "borsh" 328 | version = "0.9.3" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" 331 | dependencies = [ 332 | "borsh-derive", 333 | "hashbrown 0.11.2", 334 | ] 335 | 336 | [[package]] 337 | name = "borsh-derive" 338 | version = "0.9.3" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" 341 | dependencies = [ 342 | "borsh-derive-internal", 343 | "borsh-schema-derive-internal", 344 | "proc-macro-crate 0.1.5", 345 | "proc-macro2 1.0.47", 346 | "syn 1.0.103", 347 | ] 348 | 349 | [[package]] 350 | name = "borsh-derive-internal" 351 | version = "0.9.3" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" 354 | dependencies = [ 355 | "proc-macro2 1.0.47", 356 | "quote 1.0.21", 357 | "syn 1.0.103", 358 | ] 359 | 360 | [[package]] 361 | name = "borsh-schema-derive-internal" 362 | version = "0.9.3" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" 365 | dependencies = [ 366 | "proc-macro2 1.0.47", 367 | "quote 1.0.21", 368 | "syn 1.0.103", 369 | ] 370 | 371 | [[package]] 372 | name = "brotli" 373 | version = "3.3.4" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" 376 | dependencies = [ 377 | "alloc-no-stdlib", 378 | "alloc-stdlib", 379 | "brotli-decompressor", 380 | ] 381 | 382 | [[package]] 383 | name = "brotli-decompressor" 384 | version = "2.3.2" 385 | source = "registry+https://github.com/rust-lang/crates.io-index" 386 | checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" 387 | dependencies = [ 388 | "alloc-no-stdlib", 389 | "alloc-stdlib", 390 | ] 391 | 392 | [[package]] 393 | name = "bs58" 394 | version = "0.4.0" 395 | source = "registry+https://github.com/rust-lang/crates.io-index" 396 | checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" 397 | 398 | [[package]] 399 | name = "bumpalo" 400 | version = "3.11.1" 401 | source = "registry+https://github.com/rust-lang/crates.io-index" 402 | checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" 403 | 404 | [[package]] 405 | name = "bv" 406 | version = "0.11.1" 407 | source = "registry+https://github.com/rust-lang/crates.io-index" 408 | checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" 409 | dependencies = [ 410 | "feature-probe", 411 | "serde", 412 | ] 413 | 414 | [[package]] 415 | name = "bytemuck" 416 | version = "1.12.3" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | checksum = "aaa3a8d9a1ca92e282c96a32d6511b695d7d994d1d102ba85d279f9b2756947f" 419 | dependencies = [ 420 | "bytemuck_derive", 421 | ] 422 | 423 | [[package]] 424 | name = "bytemuck_derive" 425 | version = "1.3.0" 426 | source = "registry+https://github.com/rust-lang/crates.io-index" 427 | checksum = "5fe233b960f12f8007e3db2d136e3cb1c291bfd7396e384ee76025fc1a3932b4" 428 | dependencies = [ 429 | "proc-macro2 1.0.47", 430 | "quote 1.0.21", 431 | "syn 1.0.103", 432 | ] 433 | 434 | [[package]] 435 | name = "byteorder" 436 | version = "1.4.3" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 439 | 440 | [[package]] 441 | name = "bytes" 442 | version = "1.2.1" 443 | source = "registry+https://github.com/rust-lang/crates.io-index" 444 | checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" 445 | 446 | [[package]] 447 | name = "caps" 448 | version = "0.5.5" 449 | source = "registry+https://github.com/rust-lang/crates.io-index" 450 | checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" 451 | dependencies = [ 452 | "libc", 453 | "thiserror", 454 | ] 455 | 456 | [[package]] 457 | name = "cc" 458 | version = "1.0.76" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f" 461 | dependencies = [ 462 | "jobserver", 463 | ] 464 | 465 | [[package]] 466 | name = "cfg-if" 467 | version = "1.0.0" 468 | source = "registry+https://github.com/rust-lang/crates.io-index" 469 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 470 | 471 | [[package]] 472 | name = "chrono" 473 | version = "0.4.23" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" 476 | dependencies = [ 477 | "iana-time-zone", 478 | "js-sys", 479 | "num-integer", 480 | "num-traits", 481 | "serde", 482 | "time 0.1.44", 483 | "wasm-bindgen", 484 | "winapi", 485 | ] 486 | 487 | [[package]] 488 | name = "cipher" 489 | version = "0.3.0" 490 | source = "registry+https://github.com/rust-lang/crates.io-index" 491 | checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" 492 | dependencies = [ 493 | "generic-array", 494 | ] 495 | 496 | [[package]] 497 | name = "cipher" 498 | version = "0.4.3" 499 | source = "registry+https://github.com/rust-lang/crates.io-index" 500 | checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e" 501 | dependencies = [ 502 | "crypto-common", 503 | "inout", 504 | ] 505 | 506 | [[package]] 507 | name = "clap" 508 | version = "2.34.0" 509 | source = "registry+https://github.com/rust-lang/crates.io-index" 510 | checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" 511 | dependencies = [ 512 | "ansi_term", 513 | "atty", 514 | "bitflags", 515 | "strsim 0.8.0", 516 | "textwrap 0.11.0", 517 | "unicode-width", 518 | "vec_map", 519 | ] 520 | 521 | [[package]] 522 | name = "clap" 523 | version = "3.2.23" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" 526 | dependencies = [ 527 | "atty", 528 | "bitflags", 529 | "clap_derive", 530 | "clap_lex", 531 | "indexmap", 532 | "once_cell", 533 | "strsim 0.10.0", 534 | "termcolor", 535 | "textwrap 0.16.0", 536 | ] 537 | 538 | [[package]] 539 | name = "clap_derive" 540 | version = "3.2.18" 541 | source = "registry+https://github.com/rust-lang/crates.io-index" 542 | checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" 543 | dependencies = [ 544 | "heck 0.4.0", 545 | "proc-macro-error", 546 | "proc-macro2 1.0.47", 547 | "quote 1.0.21", 548 | "syn 1.0.103", 549 | ] 550 | 551 | [[package]] 552 | name = "clap_lex" 553 | version = "0.2.4" 554 | source = "registry+https://github.com/rust-lang/crates.io-index" 555 | checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" 556 | dependencies = [ 557 | "os_str_bytes", 558 | ] 559 | 560 | [[package]] 561 | name = "codespan-reporting" 562 | version = "0.11.1" 563 | source = "registry+https://github.com/rust-lang/crates.io-index" 564 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 565 | dependencies = [ 566 | "termcolor", 567 | "unicode-width", 568 | ] 569 | 570 | [[package]] 571 | name = "console" 572 | version = "0.15.2" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c" 575 | dependencies = [ 576 | "encode_unicode", 577 | "lazy_static", 578 | "libc", 579 | "terminal_size", 580 | "unicode-width", 581 | "winapi", 582 | ] 583 | 584 | [[package]] 585 | name = "console_error_panic_hook" 586 | version = "0.1.7" 587 | source = "registry+https://github.com/rust-lang/crates.io-index" 588 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 589 | dependencies = [ 590 | "cfg-if", 591 | "wasm-bindgen", 592 | ] 593 | 594 | [[package]] 595 | name = "console_log" 596 | version = "0.2.0" 597 | source = "registry+https://github.com/rust-lang/crates.io-index" 598 | checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494" 599 | dependencies = [ 600 | "log", 601 | "web-sys", 602 | ] 603 | 604 | [[package]] 605 | name = "const-oid" 606 | version = "0.7.1" 607 | source = "registry+https://github.com/rust-lang/crates.io-index" 608 | checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" 609 | 610 | [[package]] 611 | name = "constant_time_eq" 612 | version = "0.1.5" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" 615 | 616 | [[package]] 617 | name = "core-foundation" 618 | version = "0.9.3" 619 | source = "registry+https://github.com/rust-lang/crates.io-index" 620 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 621 | dependencies = [ 622 | "core-foundation-sys", 623 | "libc", 624 | ] 625 | 626 | [[package]] 627 | name = "core-foundation-sys" 628 | version = "0.8.3" 629 | source = "registry+https://github.com/rust-lang/crates.io-index" 630 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 631 | 632 | [[package]] 633 | name = "cpufeatures" 634 | version = "0.2.5" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" 637 | dependencies = [ 638 | "libc", 639 | ] 640 | 641 | [[package]] 642 | name = "crc32fast" 643 | version = "1.3.2" 644 | source = "registry+https://github.com/rust-lang/crates.io-index" 645 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 646 | dependencies = [ 647 | "cfg-if", 648 | ] 649 | 650 | [[package]] 651 | name = "crossbeam-channel" 652 | version = "0.5.6" 653 | source = "registry+https://github.com/rust-lang/crates.io-index" 654 | checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" 655 | dependencies = [ 656 | "cfg-if", 657 | "crossbeam-utils", 658 | ] 659 | 660 | [[package]] 661 | name = "crossbeam-deque" 662 | version = "0.8.2" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" 665 | dependencies = [ 666 | "cfg-if", 667 | "crossbeam-epoch", 668 | "crossbeam-utils", 669 | ] 670 | 671 | [[package]] 672 | name = "crossbeam-epoch" 673 | version = "0.9.11" 674 | source = "registry+https://github.com/rust-lang/crates.io-index" 675 | checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" 676 | dependencies = [ 677 | "autocfg", 678 | "cfg-if", 679 | "crossbeam-utils", 680 | "memoffset", 681 | "scopeguard", 682 | ] 683 | 684 | [[package]] 685 | name = "crossbeam-utils" 686 | version = "0.8.12" 687 | source = "registry+https://github.com/rust-lang/crates.io-index" 688 | checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" 689 | dependencies = [ 690 | "cfg-if", 691 | ] 692 | 693 | [[package]] 694 | name = "crunchy" 695 | version = "0.2.2" 696 | source = "registry+https://github.com/rust-lang/crates.io-index" 697 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 698 | 699 | [[package]] 700 | name = "crypto-common" 701 | version = "0.1.6" 702 | source = "registry+https://github.com/rust-lang/crates.io-index" 703 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 704 | dependencies = [ 705 | "generic-array", 706 | "typenum", 707 | ] 708 | 709 | [[package]] 710 | name = "crypto-mac" 711 | version = "0.8.0" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" 714 | dependencies = [ 715 | "generic-array", 716 | "subtle", 717 | ] 718 | 719 | [[package]] 720 | name = "ctr" 721 | version = "0.8.0" 722 | source = "registry+https://github.com/rust-lang/crates.io-index" 723 | checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" 724 | dependencies = [ 725 | "cipher 0.3.0", 726 | ] 727 | 728 | [[package]] 729 | name = "curve25519-dalek" 730 | version = "3.2.1" 731 | source = "registry+https://github.com/rust-lang/crates.io-index" 732 | checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" 733 | dependencies = [ 734 | "byteorder", 735 | "digest 0.9.0", 736 | "rand_core 0.5.1", 737 | "serde", 738 | "subtle", 739 | "zeroize", 740 | ] 741 | 742 | [[package]] 743 | name = "cxx" 744 | version = "1.0.81" 745 | source = "registry+https://github.com/rust-lang/crates.io-index" 746 | checksum = "97abf9f0eca9e52b7f81b945524e76710e6cb2366aead23b7d4fbf72e281f888" 747 | dependencies = [ 748 | "cc", 749 | "cxxbridge-flags", 750 | "cxxbridge-macro", 751 | "link-cplusplus", 752 | ] 753 | 754 | [[package]] 755 | name = "cxx-build" 756 | version = "1.0.81" 757 | source = "registry+https://github.com/rust-lang/crates.io-index" 758 | checksum = "7cc32cc5fea1d894b77d269ddb9f192110069a8a9c1f1d441195fba90553dea3" 759 | dependencies = [ 760 | "cc", 761 | "codespan-reporting", 762 | "once_cell", 763 | "proc-macro2 1.0.47", 764 | "quote 1.0.21", 765 | "scratch", 766 | "syn 1.0.103", 767 | ] 768 | 769 | [[package]] 770 | name = "cxxbridge-flags" 771 | version = "1.0.81" 772 | source = "registry+https://github.com/rust-lang/crates.io-index" 773 | checksum = "8ca220e4794c934dc6b1207c3b42856ad4c302f2df1712e9f8d2eec5afaacf1f" 774 | 775 | [[package]] 776 | name = "cxxbridge-macro" 777 | version = "1.0.81" 778 | source = "registry+https://github.com/rust-lang/crates.io-index" 779 | checksum = "b846f081361125bfc8dc9d3940c84e1fd83ba54bbca7b17cd29483c828be0704" 780 | dependencies = [ 781 | "proc-macro2 1.0.47", 782 | "quote 1.0.21", 783 | "syn 1.0.103", 784 | ] 785 | 786 | [[package]] 787 | name = "data-encoding" 788 | version = "2.3.2" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" 791 | 792 | [[package]] 793 | name = "der" 794 | version = "0.5.1" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" 797 | dependencies = [ 798 | "const-oid", 799 | ] 800 | 801 | [[package]] 802 | name = "der-parser" 803 | version = "8.1.0" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" 806 | dependencies = [ 807 | "asn1-rs", 808 | "displaydoc", 809 | "nom", 810 | "num-bigint 0.4.3", 811 | "num-traits", 812 | "rusticata-macros", 813 | ] 814 | 815 | [[package]] 816 | name = "derivation-path" 817 | version = "0.2.0" 818 | source = "registry+https://github.com/rust-lang/crates.io-index" 819 | checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" 820 | 821 | [[package]] 822 | name = "dialoguer" 823 | version = "0.10.2" 824 | source = "registry+https://github.com/rust-lang/crates.io-index" 825 | checksum = "a92e7e37ecef6857fdc0c0c5d42fd5b0938e46590c2183cc92dd310a6d078eb1" 826 | dependencies = [ 827 | "console", 828 | "tempfile", 829 | "zeroize", 830 | ] 831 | 832 | [[package]] 833 | name = "digest" 834 | version = "0.9.0" 835 | source = "registry+https://github.com/rust-lang/crates.io-index" 836 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 837 | dependencies = [ 838 | "generic-array", 839 | ] 840 | 841 | [[package]] 842 | name = "digest" 843 | version = "0.10.5" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" 846 | dependencies = [ 847 | "block-buffer 0.10.3", 848 | "crypto-common", 849 | "subtle", 850 | ] 851 | 852 | [[package]] 853 | name = "dirs-next" 854 | version = "2.0.0" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" 857 | dependencies = [ 858 | "cfg-if", 859 | "dirs-sys-next", 860 | ] 861 | 862 | [[package]] 863 | name = "dirs-sys-next" 864 | version = "0.1.2" 865 | source = "registry+https://github.com/rust-lang/crates.io-index" 866 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 867 | dependencies = [ 868 | "libc", 869 | "redox_users", 870 | "winapi", 871 | ] 872 | 873 | [[package]] 874 | name = "displaydoc" 875 | version = "0.2.3" 876 | source = "registry+https://github.com/rust-lang/crates.io-index" 877 | checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" 878 | dependencies = [ 879 | "proc-macro2 1.0.47", 880 | "quote 1.0.21", 881 | "syn 1.0.103", 882 | ] 883 | 884 | [[package]] 885 | name = "dlopen" 886 | version = "0.1.8" 887 | source = "registry+https://github.com/rust-lang/crates.io-index" 888 | checksum = "71e80ad39f814a9abe68583cd50a2d45c8a67561c3361ab8da240587dda80937" 889 | dependencies = [ 890 | "dlopen_derive", 891 | "lazy_static", 892 | "libc", 893 | "winapi", 894 | ] 895 | 896 | [[package]] 897 | name = "dlopen_derive" 898 | version = "0.1.4" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "f236d9e1b1fbd81cea0f9cbdc8dcc7e8ebcd80e6659cd7cb2ad5f6c05946c581" 901 | dependencies = [ 902 | "libc", 903 | "quote 0.6.13", 904 | "syn 0.15.44", 905 | ] 906 | 907 | [[package]] 908 | name = "eager" 909 | version = "0.1.0" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" 912 | 913 | [[package]] 914 | name = "ed25519" 915 | version = "1.5.2" 916 | source = "registry+https://github.com/rust-lang/crates.io-index" 917 | checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" 918 | dependencies = [ 919 | "signature", 920 | ] 921 | 922 | [[package]] 923 | name = "ed25519-dalek" 924 | version = "1.0.1" 925 | source = "registry+https://github.com/rust-lang/crates.io-index" 926 | checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" 927 | dependencies = [ 928 | "curve25519-dalek", 929 | "ed25519", 930 | "rand 0.7.3", 931 | "serde", 932 | "sha2 0.9.9", 933 | "zeroize", 934 | ] 935 | 936 | [[package]] 937 | name = "ed25519-dalek-bip32" 938 | version = "0.2.0" 939 | source = "registry+https://github.com/rust-lang/crates.io-index" 940 | checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" 941 | dependencies = [ 942 | "derivation-path", 943 | "ed25519-dalek", 944 | "hmac 0.12.1", 945 | "sha2 0.10.6", 946 | ] 947 | 948 | [[package]] 949 | name = "either" 950 | version = "1.8.0" 951 | source = "registry+https://github.com/rust-lang/crates.io-index" 952 | checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" 953 | 954 | [[package]] 955 | name = "encode_unicode" 956 | version = "0.3.6" 957 | source = "registry+https://github.com/rust-lang/crates.io-index" 958 | checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" 959 | 960 | [[package]] 961 | name = "encoding_rs" 962 | version = "0.8.31" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" 965 | dependencies = [ 966 | "cfg-if", 967 | ] 968 | 969 | [[package]] 970 | name = "enum-iterator" 971 | version = "0.8.1" 972 | source = "registry+https://github.com/rust-lang/crates.io-index" 973 | checksum = "2953d1df47ac0eb70086ccabf0275aa8da8591a28bd358ee2b52bd9f9e3ff9e9" 974 | dependencies = [ 975 | "enum-iterator-derive", 976 | ] 977 | 978 | [[package]] 979 | name = "enum-iterator-derive" 980 | version = "0.8.1" 981 | source = "registry+https://github.com/rust-lang/crates.io-index" 982 | checksum = "8958699f9359f0b04e691a13850d48b7de329138023876d07cbd024c2c820598" 983 | dependencies = [ 984 | "proc-macro2 1.0.47", 985 | "quote 1.0.21", 986 | "syn 1.0.103", 987 | ] 988 | 989 | [[package]] 990 | name = "enum_dispatch" 991 | version = "0.3.8" 992 | source = "registry+https://github.com/rust-lang/crates.io-index" 993 | checksum = "0eb359f1476bf611266ac1f5355bc14aeca37b299d0ebccc038ee7058891c9cb" 994 | dependencies = [ 995 | "once_cell", 996 | "proc-macro2 1.0.47", 997 | "quote 1.0.21", 998 | "syn 1.0.103", 999 | ] 1000 | 1001 | [[package]] 1002 | name = "env_logger" 1003 | version = "0.9.3" 1004 | source = "registry+https://github.com/rust-lang/crates.io-index" 1005 | checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" 1006 | dependencies = [ 1007 | "atty", 1008 | "humantime", 1009 | "log", 1010 | "regex", 1011 | "termcolor", 1012 | ] 1013 | 1014 | [[package]] 1015 | name = "event-listener" 1016 | version = "2.5.3" 1017 | source = "registry+https://github.com/rust-lang/crates.io-index" 1018 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1019 | 1020 | [[package]] 1021 | name = "fastrand" 1022 | version = "1.8.0" 1023 | source = "registry+https://github.com/rust-lang/crates.io-index" 1024 | checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" 1025 | dependencies = [ 1026 | "instant", 1027 | ] 1028 | 1029 | [[package]] 1030 | name = "feature-probe" 1031 | version = "0.1.1" 1032 | source = "registry+https://github.com/rust-lang/crates.io-index" 1033 | checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" 1034 | 1035 | [[package]] 1036 | name = "fixedbitset" 1037 | version = "0.2.0" 1038 | source = "registry+https://github.com/rust-lang/crates.io-index" 1039 | checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" 1040 | 1041 | [[package]] 1042 | name = "flate2" 1043 | version = "1.0.24" 1044 | source = "registry+https://github.com/rust-lang/crates.io-index" 1045 | checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" 1046 | dependencies = [ 1047 | "crc32fast", 1048 | "miniz_oxide", 1049 | ] 1050 | 1051 | [[package]] 1052 | name = "fnv" 1053 | version = "1.0.7" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1056 | 1057 | [[package]] 1058 | name = "form_urlencoded" 1059 | version = "1.1.0" 1060 | source = "registry+https://github.com/rust-lang/crates.io-index" 1061 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 1062 | dependencies = [ 1063 | "percent-encoding", 1064 | ] 1065 | 1066 | [[package]] 1067 | name = "futures" 1068 | version = "0.3.25" 1069 | source = "registry+https://github.com/rust-lang/crates.io-index" 1070 | checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" 1071 | dependencies = [ 1072 | "futures-channel", 1073 | "futures-core", 1074 | "futures-executor", 1075 | "futures-io", 1076 | "futures-sink", 1077 | "futures-task", 1078 | "futures-util", 1079 | ] 1080 | 1081 | [[package]] 1082 | name = "futures-channel" 1083 | version = "0.3.25" 1084 | source = "registry+https://github.com/rust-lang/crates.io-index" 1085 | checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" 1086 | dependencies = [ 1087 | "futures-core", 1088 | "futures-sink", 1089 | ] 1090 | 1091 | [[package]] 1092 | name = "futures-core" 1093 | version = "0.3.25" 1094 | source = "registry+https://github.com/rust-lang/crates.io-index" 1095 | checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" 1096 | 1097 | [[package]] 1098 | name = "futures-executor" 1099 | version = "0.3.25" 1100 | source = "registry+https://github.com/rust-lang/crates.io-index" 1101 | checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" 1102 | dependencies = [ 1103 | "futures-core", 1104 | "futures-task", 1105 | "futures-util", 1106 | ] 1107 | 1108 | [[package]] 1109 | name = "futures-io" 1110 | version = "0.3.25" 1111 | source = "registry+https://github.com/rust-lang/crates.io-index" 1112 | checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" 1113 | 1114 | [[package]] 1115 | name = "futures-macro" 1116 | version = "0.3.25" 1117 | source = "registry+https://github.com/rust-lang/crates.io-index" 1118 | checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" 1119 | dependencies = [ 1120 | "proc-macro2 1.0.47", 1121 | "quote 1.0.21", 1122 | "syn 1.0.103", 1123 | ] 1124 | 1125 | [[package]] 1126 | name = "futures-sink" 1127 | version = "0.3.25" 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" 1129 | checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" 1130 | 1131 | [[package]] 1132 | name = "futures-task" 1133 | version = "0.3.25" 1134 | source = "registry+https://github.com/rust-lang/crates.io-index" 1135 | checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" 1136 | 1137 | [[package]] 1138 | name = "futures-util" 1139 | version = "0.3.25" 1140 | source = "registry+https://github.com/rust-lang/crates.io-index" 1141 | checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" 1142 | dependencies = [ 1143 | "futures-channel", 1144 | "futures-core", 1145 | "futures-io", 1146 | "futures-macro", 1147 | "futures-sink", 1148 | "futures-task", 1149 | "memchr", 1150 | "pin-project-lite", 1151 | "pin-utils", 1152 | "slab", 1153 | ] 1154 | 1155 | [[package]] 1156 | name = "fxhash" 1157 | version = "0.2.1" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 1160 | dependencies = [ 1161 | "byteorder", 1162 | ] 1163 | 1164 | [[package]] 1165 | name = "generic-array" 1166 | version = "0.14.6" 1167 | source = "registry+https://github.com/rust-lang/crates.io-index" 1168 | checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" 1169 | dependencies = [ 1170 | "serde", 1171 | "typenum", 1172 | "version_check", 1173 | ] 1174 | 1175 | [[package]] 1176 | name = "gethostname" 1177 | version = "0.2.3" 1178 | source = "registry+https://github.com/rust-lang/crates.io-index" 1179 | checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" 1180 | dependencies = [ 1181 | "libc", 1182 | "winapi", 1183 | ] 1184 | 1185 | [[package]] 1186 | name = "getrandom" 1187 | version = "0.1.16" 1188 | source = "registry+https://github.com/rust-lang/crates.io-index" 1189 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 1190 | dependencies = [ 1191 | "cfg-if", 1192 | "js-sys", 1193 | "libc", 1194 | "wasi 0.9.0+wasi-snapshot-preview1", 1195 | "wasm-bindgen", 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "getrandom" 1200 | version = "0.2.8" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" 1203 | dependencies = [ 1204 | "cfg-if", 1205 | "js-sys", 1206 | "libc", 1207 | "wasi 0.11.0+wasi-snapshot-preview1", 1208 | "wasm-bindgen", 1209 | ] 1210 | 1211 | [[package]] 1212 | name = "h2" 1213 | version = "0.3.15" 1214 | source = "registry+https://github.com/rust-lang/crates.io-index" 1215 | checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" 1216 | dependencies = [ 1217 | "bytes", 1218 | "fnv", 1219 | "futures-core", 1220 | "futures-sink", 1221 | "futures-util", 1222 | "http", 1223 | "indexmap", 1224 | "slab", 1225 | "tokio", 1226 | "tokio-util 0.7.4", 1227 | "tracing", 1228 | ] 1229 | 1230 | [[package]] 1231 | name = "hashbrown" 1232 | version = "0.11.2" 1233 | source = "registry+https://github.com/rust-lang/crates.io-index" 1234 | checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" 1235 | dependencies = [ 1236 | "ahash", 1237 | ] 1238 | 1239 | [[package]] 1240 | name = "hashbrown" 1241 | version = "0.12.3" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1244 | dependencies = [ 1245 | "ahash", 1246 | ] 1247 | 1248 | [[package]] 1249 | name = "heck" 1250 | version = "0.3.3" 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" 1252 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 1253 | dependencies = [ 1254 | "unicode-segmentation", 1255 | ] 1256 | 1257 | [[package]] 1258 | name = "heck" 1259 | version = "0.4.0" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" 1262 | 1263 | [[package]] 1264 | name = "hermit-abi" 1265 | version = "0.1.19" 1266 | source = "registry+https://github.com/rust-lang/crates.io-index" 1267 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 1268 | dependencies = [ 1269 | "libc", 1270 | ] 1271 | 1272 | [[package]] 1273 | name = "histogram" 1274 | version = "0.6.9" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" 1277 | 1278 | [[package]] 1279 | name = "hmac" 1280 | version = "0.8.1" 1281 | source = "registry+https://github.com/rust-lang/crates.io-index" 1282 | checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" 1283 | dependencies = [ 1284 | "crypto-mac", 1285 | "digest 0.9.0", 1286 | ] 1287 | 1288 | [[package]] 1289 | name = "hmac" 1290 | version = "0.12.1" 1291 | source = "registry+https://github.com/rust-lang/crates.io-index" 1292 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1293 | dependencies = [ 1294 | "digest 0.10.5", 1295 | ] 1296 | 1297 | [[package]] 1298 | name = "hmac-drbg" 1299 | version = "0.3.0" 1300 | source = "registry+https://github.com/rust-lang/crates.io-index" 1301 | checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" 1302 | dependencies = [ 1303 | "digest 0.9.0", 1304 | "generic-array", 1305 | "hmac 0.8.1", 1306 | ] 1307 | 1308 | [[package]] 1309 | name = "http" 1310 | version = "0.2.8" 1311 | source = "registry+https://github.com/rust-lang/crates.io-index" 1312 | checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" 1313 | dependencies = [ 1314 | "bytes", 1315 | "fnv", 1316 | "itoa", 1317 | ] 1318 | 1319 | [[package]] 1320 | name = "http-body" 1321 | version = "0.4.5" 1322 | source = "registry+https://github.com/rust-lang/crates.io-index" 1323 | checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" 1324 | dependencies = [ 1325 | "bytes", 1326 | "http", 1327 | "pin-project-lite", 1328 | ] 1329 | 1330 | [[package]] 1331 | name = "httparse" 1332 | version = "1.8.0" 1333 | source = "registry+https://github.com/rust-lang/crates.io-index" 1334 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 1335 | 1336 | [[package]] 1337 | name = "httpdate" 1338 | version = "1.0.2" 1339 | source = "registry+https://github.com/rust-lang/crates.io-index" 1340 | checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" 1341 | 1342 | [[package]] 1343 | name = "humantime" 1344 | version = "2.1.0" 1345 | source = "registry+https://github.com/rust-lang/crates.io-index" 1346 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 1347 | 1348 | [[package]] 1349 | name = "hyper" 1350 | version = "0.14.23" 1351 | source = "registry+https://github.com/rust-lang/crates.io-index" 1352 | checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" 1353 | dependencies = [ 1354 | "bytes", 1355 | "futures-channel", 1356 | "futures-core", 1357 | "futures-util", 1358 | "h2", 1359 | "http", 1360 | "http-body", 1361 | "httparse", 1362 | "httpdate", 1363 | "itoa", 1364 | "pin-project-lite", 1365 | "socket2", 1366 | "tokio", 1367 | "tower-service", 1368 | "tracing", 1369 | "want", 1370 | ] 1371 | 1372 | [[package]] 1373 | name = "hyper-rustls" 1374 | version = "0.23.1" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | checksum = "59df7c4e19c950e6e0e868dcc0a300b09a9b88e9ec55bd879ca819087a77355d" 1377 | dependencies = [ 1378 | "http", 1379 | "hyper", 1380 | "rustls", 1381 | "tokio", 1382 | "tokio-rustls", 1383 | ] 1384 | 1385 | [[package]] 1386 | name = "hyper-timeout" 1387 | version = "0.4.1" 1388 | source = "registry+https://github.com/rust-lang/crates.io-index" 1389 | checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" 1390 | dependencies = [ 1391 | "hyper", 1392 | "pin-project-lite", 1393 | "tokio", 1394 | "tokio-io-timeout", 1395 | ] 1396 | 1397 | [[package]] 1398 | name = "iana-time-zone" 1399 | version = "0.1.53" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" 1402 | dependencies = [ 1403 | "android_system_properties", 1404 | "core-foundation-sys", 1405 | "iana-time-zone-haiku", 1406 | "js-sys", 1407 | "wasm-bindgen", 1408 | "winapi", 1409 | ] 1410 | 1411 | [[package]] 1412 | name = "iana-time-zone-haiku" 1413 | version = "0.1.1" 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" 1415 | checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" 1416 | dependencies = [ 1417 | "cxx", 1418 | "cxx-build", 1419 | ] 1420 | 1421 | [[package]] 1422 | name = "idna" 1423 | version = "0.3.0" 1424 | source = "registry+https://github.com/rust-lang/crates.io-index" 1425 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 1426 | dependencies = [ 1427 | "unicode-bidi", 1428 | "unicode-normalization", 1429 | ] 1430 | 1431 | [[package]] 1432 | name = "im" 1433 | version = "15.1.0" 1434 | source = "registry+https://github.com/rust-lang/crates.io-index" 1435 | checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" 1436 | dependencies = [ 1437 | "bitmaps", 1438 | "rand_core 0.6.4", 1439 | "rand_xoshiro", 1440 | "rayon", 1441 | "serde", 1442 | "sized-chunks", 1443 | "typenum", 1444 | "version_check", 1445 | ] 1446 | 1447 | [[package]] 1448 | name = "indexmap" 1449 | version = "1.9.1" 1450 | source = "registry+https://github.com/rust-lang/crates.io-index" 1451 | checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" 1452 | dependencies = [ 1453 | "autocfg", 1454 | "hashbrown 0.12.3", 1455 | ] 1456 | 1457 | [[package]] 1458 | name = "indicatif" 1459 | version = "0.16.2" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | checksum = "2d207dc617c7a380ab07ff572a6e52fa202a2a8f355860ac9c38e23f8196be1b" 1462 | dependencies = [ 1463 | "console", 1464 | "lazy_static", 1465 | "number_prefix", 1466 | "regex", 1467 | ] 1468 | 1469 | [[package]] 1470 | name = "inout" 1471 | version = "0.1.3" 1472 | source = "registry+https://github.com/rust-lang/crates.io-index" 1473 | checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" 1474 | dependencies = [ 1475 | "generic-array", 1476 | ] 1477 | 1478 | [[package]] 1479 | name = "instant" 1480 | version = "0.1.12" 1481 | source = "registry+https://github.com/rust-lang/crates.io-index" 1482 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1483 | dependencies = [ 1484 | "cfg-if", 1485 | ] 1486 | 1487 | [[package]] 1488 | name = "ipnet" 1489 | version = "2.5.1" 1490 | source = "registry+https://github.com/rust-lang/crates.io-index" 1491 | checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745" 1492 | 1493 | [[package]] 1494 | name = "itertools" 1495 | version = "0.10.5" 1496 | source = "registry+https://github.com/rust-lang/crates.io-index" 1497 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 1498 | dependencies = [ 1499 | "either", 1500 | ] 1501 | 1502 | [[package]] 1503 | name = "itoa" 1504 | version = "1.0.4" 1505 | source = "registry+https://github.com/rust-lang/crates.io-index" 1506 | checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" 1507 | 1508 | [[package]] 1509 | name = "jito-auth" 1510 | version = "0.1.0" 1511 | dependencies = [ 1512 | "jito-protos", 1513 | "log", 1514 | "prost-types 0.8.0", 1515 | "solana-sdk", 1516 | "tokio", 1517 | "tokio-stream", 1518 | "tonic", 1519 | "uuid", 1520 | ] 1521 | 1522 | [[package]] 1523 | name = "jito-block-engine" 1524 | version = "0.1.0" 1525 | dependencies = [ 1526 | "clap 3.2.23", 1527 | "env_logger", 1528 | "jito-auth", 1529 | "jito-protos", 1530 | "jito-searcher", 1531 | "jito-validator", 1532 | "log", 1533 | "tokio", 1534 | "tonic", 1535 | ] 1536 | 1537 | [[package]] 1538 | name = "jito-protos" 1539 | version = "0.1.0" 1540 | dependencies = [ 1541 | "bincode", 1542 | "prost 0.8.0", 1543 | "prost-types 0.8.0", 1544 | "solana-sdk", 1545 | "tonic", 1546 | "tonic-build", 1547 | ] 1548 | 1549 | [[package]] 1550 | name = "jito-searcher" 1551 | version = "0.1.0" 1552 | dependencies = [ 1553 | "jito-protos", 1554 | "log", 1555 | "prost-types 0.11.2", 1556 | "solana-sdk", 1557 | "tokio", 1558 | "tokio-stream", 1559 | "tonic", 1560 | "uuid", 1561 | ] 1562 | 1563 | [[package]] 1564 | name = "jito-searcher-client" 1565 | version = "0.1.0" 1566 | dependencies = [ 1567 | "clap 3.2.23", 1568 | "env_logger", 1569 | "jito-protos", 1570 | "log", 1571 | "prost-types 0.8.0", 1572 | "solana-client", 1573 | "solana-sdk", 1574 | "tokio", 1575 | "tokio-stream", 1576 | "tonic", 1577 | "uuid", 1578 | ] 1579 | 1580 | [[package]] 1581 | name = "jito-validator" 1582 | version = "0.1.0" 1583 | dependencies = [ 1584 | "jito-protos", 1585 | "log", 1586 | "prost-types 0.11.2", 1587 | "solana-sdk", 1588 | "tokio", 1589 | "tokio-stream", 1590 | "tonic", 1591 | "uuid", 1592 | ] 1593 | 1594 | [[package]] 1595 | name = "jobserver" 1596 | version = "0.1.25" 1597 | source = "registry+https://github.com/rust-lang/crates.io-index" 1598 | checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" 1599 | dependencies = [ 1600 | "libc", 1601 | ] 1602 | 1603 | [[package]] 1604 | name = "js-sys" 1605 | version = "0.3.60" 1606 | source = "registry+https://github.com/rust-lang/crates.io-index" 1607 | checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" 1608 | dependencies = [ 1609 | "wasm-bindgen", 1610 | ] 1611 | 1612 | [[package]] 1613 | name = "jsonrpc-core" 1614 | version = "18.0.0" 1615 | source = "registry+https://github.com/rust-lang/crates.io-index" 1616 | checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" 1617 | dependencies = [ 1618 | "futures", 1619 | "futures-executor", 1620 | "futures-util", 1621 | "log", 1622 | "serde", 1623 | "serde_derive", 1624 | "serde_json", 1625 | ] 1626 | 1627 | [[package]] 1628 | name = "keccak" 1629 | version = "0.1.3" 1630 | source = "registry+https://github.com/rust-lang/crates.io-index" 1631 | checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" 1632 | dependencies = [ 1633 | "cpufeatures", 1634 | ] 1635 | 1636 | [[package]] 1637 | name = "lazy_static" 1638 | version = "1.4.0" 1639 | source = "registry+https://github.com/rust-lang/crates.io-index" 1640 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1641 | 1642 | [[package]] 1643 | name = "libc" 1644 | version = "0.2.137" 1645 | source = "registry+https://github.com/rust-lang/crates.io-index" 1646 | checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" 1647 | 1648 | [[package]] 1649 | name = "libloading" 1650 | version = "0.7.4" 1651 | source = "registry+https://github.com/rust-lang/crates.io-index" 1652 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1653 | dependencies = [ 1654 | "cfg-if", 1655 | "winapi", 1656 | ] 1657 | 1658 | [[package]] 1659 | name = "libsecp256k1" 1660 | version = "0.6.0" 1661 | source = "registry+https://github.com/rust-lang/crates.io-index" 1662 | checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" 1663 | dependencies = [ 1664 | "arrayref", 1665 | "base64 0.12.3", 1666 | "digest 0.9.0", 1667 | "hmac-drbg", 1668 | "libsecp256k1-core", 1669 | "libsecp256k1-gen-ecmult", 1670 | "libsecp256k1-gen-genmult", 1671 | "rand 0.7.3", 1672 | "serde", 1673 | "sha2 0.9.9", 1674 | "typenum", 1675 | ] 1676 | 1677 | [[package]] 1678 | name = "libsecp256k1-core" 1679 | version = "0.2.2" 1680 | source = "registry+https://github.com/rust-lang/crates.io-index" 1681 | checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" 1682 | dependencies = [ 1683 | "crunchy", 1684 | "digest 0.9.0", 1685 | "subtle", 1686 | ] 1687 | 1688 | [[package]] 1689 | name = "libsecp256k1-gen-ecmult" 1690 | version = "0.2.1" 1691 | source = "registry+https://github.com/rust-lang/crates.io-index" 1692 | checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" 1693 | dependencies = [ 1694 | "libsecp256k1-core", 1695 | ] 1696 | 1697 | [[package]] 1698 | name = "libsecp256k1-gen-genmult" 1699 | version = "0.2.1" 1700 | source = "registry+https://github.com/rust-lang/crates.io-index" 1701 | checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" 1702 | dependencies = [ 1703 | "libsecp256k1-core", 1704 | ] 1705 | 1706 | [[package]] 1707 | name = "link-cplusplus" 1708 | version = "1.0.7" 1709 | source = "registry+https://github.com/rust-lang/crates.io-index" 1710 | checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" 1711 | dependencies = [ 1712 | "cc", 1713 | ] 1714 | 1715 | [[package]] 1716 | name = "linked-hash-map" 1717 | version = "0.5.6" 1718 | source = "registry+https://github.com/rust-lang/crates.io-index" 1719 | checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" 1720 | 1721 | [[package]] 1722 | name = "lock_api" 1723 | version = "0.4.9" 1724 | source = "registry+https://github.com/rust-lang/crates.io-index" 1725 | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 1726 | dependencies = [ 1727 | "autocfg", 1728 | "scopeguard", 1729 | ] 1730 | 1731 | [[package]] 1732 | name = "log" 1733 | version = "0.4.17" 1734 | source = "registry+https://github.com/rust-lang/crates.io-index" 1735 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 1736 | dependencies = [ 1737 | "cfg-if", 1738 | ] 1739 | 1740 | [[package]] 1741 | name = "memchr" 1742 | version = "2.5.0" 1743 | source = "registry+https://github.com/rust-lang/crates.io-index" 1744 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 1745 | 1746 | [[package]] 1747 | name = "memmap2" 1748 | version = "0.5.8" 1749 | source = "registry+https://github.com/rust-lang/crates.io-index" 1750 | checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" 1751 | dependencies = [ 1752 | "libc", 1753 | ] 1754 | 1755 | [[package]] 1756 | name = "memoffset" 1757 | version = "0.6.5" 1758 | source = "registry+https://github.com/rust-lang/crates.io-index" 1759 | checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" 1760 | dependencies = [ 1761 | "autocfg", 1762 | ] 1763 | 1764 | [[package]] 1765 | name = "merlin" 1766 | version = "3.0.0" 1767 | source = "registry+https://github.com/rust-lang/crates.io-index" 1768 | checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" 1769 | dependencies = [ 1770 | "byteorder", 1771 | "keccak", 1772 | "rand_core 0.6.4", 1773 | "zeroize", 1774 | ] 1775 | 1776 | [[package]] 1777 | name = "mime" 1778 | version = "0.3.16" 1779 | source = "registry+https://github.com/rust-lang/crates.io-index" 1780 | checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 1781 | 1782 | [[package]] 1783 | name = "minimal-lexical" 1784 | version = "0.2.1" 1785 | source = "registry+https://github.com/rust-lang/crates.io-index" 1786 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1787 | 1788 | [[package]] 1789 | name = "miniz_oxide" 1790 | version = "0.5.4" 1791 | source = "registry+https://github.com/rust-lang/crates.io-index" 1792 | checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" 1793 | dependencies = [ 1794 | "adler", 1795 | ] 1796 | 1797 | [[package]] 1798 | name = "mio" 1799 | version = "0.8.5" 1800 | source = "registry+https://github.com/rust-lang/crates.io-index" 1801 | checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" 1802 | dependencies = [ 1803 | "libc", 1804 | "log", 1805 | "wasi 0.11.0+wasi-snapshot-preview1", 1806 | "windows-sys 0.42.0", 1807 | ] 1808 | 1809 | [[package]] 1810 | name = "multimap" 1811 | version = "0.8.3" 1812 | source = "registry+https://github.com/rust-lang/crates.io-index" 1813 | checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" 1814 | 1815 | [[package]] 1816 | name = "nix" 1817 | version = "0.24.2" 1818 | source = "registry+https://github.com/rust-lang/crates.io-index" 1819 | checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" 1820 | dependencies = [ 1821 | "bitflags", 1822 | "cfg-if", 1823 | "libc", 1824 | "memoffset", 1825 | ] 1826 | 1827 | [[package]] 1828 | name = "nom" 1829 | version = "7.1.1" 1830 | source = "registry+https://github.com/rust-lang/crates.io-index" 1831 | checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" 1832 | dependencies = [ 1833 | "memchr", 1834 | "minimal-lexical", 1835 | ] 1836 | 1837 | [[package]] 1838 | name = "num" 1839 | version = "0.2.1" 1840 | source = "registry+https://github.com/rust-lang/crates.io-index" 1841 | checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" 1842 | dependencies = [ 1843 | "num-bigint 0.2.6", 1844 | "num-complex", 1845 | "num-integer", 1846 | "num-iter", 1847 | "num-rational", 1848 | "num-traits", 1849 | ] 1850 | 1851 | [[package]] 1852 | name = "num-bigint" 1853 | version = "0.2.6" 1854 | source = "registry+https://github.com/rust-lang/crates.io-index" 1855 | checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" 1856 | dependencies = [ 1857 | "autocfg", 1858 | "num-integer", 1859 | "num-traits", 1860 | ] 1861 | 1862 | [[package]] 1863 | name = "num-bigint" 1864 | version = "0.4.3" 1865 | source = "registry+https://github.com/rust-lang/crates.io-index" 1866 | checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" 1867 | dependencies = [ 1868 | "autocfg", 1869 | "num-integer", 1870 | "num-traits", 1871 | ] 1872 | 1873 | [[package]] 1874 | name = "num-complex" 1875 | version = "0.2.4" 1876 | source = "registry+https://github.com/rust-lang/crates.io-index" 1877 | checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" 1878 | dependencies = [ 1879 | "autocfg", 1880 | "num-traits", 1881 | ] 1882 | 1883 | [[package]] 1884 | name = "num-derive" 1885 | version = "0.3.3" 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" 1887 | checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" 1888 | dependencies = [ 1889 | "proc-macro2 1.0.47", 1890 | "quote 1.0.21", 1891 | "syn 1.0.103", 1892 | ] 1893 | 1894 | [[package]] 1895 | name = "num-integer" 1896 | version = "0.1.45" 1897 | source = "registry+https://github.com/rust-lang/crates.io-index" 1898 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1899 | dependencies = [ 1900 | "autocfg", 1901 | "num-traits", 1902 | ] 1903 | 1904 | [[package]] 1905 | name = "num-iter" 1906 | version = "0.1.43" 1907 | source = "registry+https://github.com/rust-lang/crates.io-index" 1908 | checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" 1909 | dependencies = [ 1910 | "autocfg", 1911 | "num-integer", 1912 | "num-traits", 1913 | ] 1914 | 1915 | [[package]] 1916 | name = "num-rational" 1917 | version = "0.2.4" 1918 | source = "registry+https://github.com/rust-lang/crates.io-index" 1919 | checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" 1920 | dependencies = [ 1921 | "autocfg", 1922 | "num-bigint 0.2.6", 1923 | "num-integer", 1924 | "num-traits", 1925 | ] 1926 | 1927 | [[package]] 1928 | name = "num-traits" 1929 | version = "0.2.15" 1930 | source = "registry+https://github.com/rust-lang/crates.io-index" 1931 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 1932 | dependencies = [ 1933 | "autocfg", 1934 | ] 1935 | 1936 | [[package]] 1937 | name = "num_cpus" 1938 | version = "1.14.0" 1939 | source = "registry+https://github.com/rust-lang/crates.io-index" 1940 | checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" 1941 | dependencies = [ 1942 | "hermit-abi", 1943 | "libc", 1944 | ] 1945 | 1946 | [[package]] 1947 | name = "num_enum" 1948 | version = "0.5.7" 1949 | source = "registry+https://github.com/rust-lang/crates.io-index" 1950 | checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" 1951 | dependencies = [ 1952 | "num_enum_derive", 1953 | ] 1954 | 1955 | [[package]] 1956 | name = "num_enum_derive" 1957 | version = "0.5.7" 1958 | source = "registry+https://github.com/rust-lang/crates.io-index" 1959 | checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" 1960 | dependencies = [ 1961 | "proc-macro-crate 1.2.1", 1962 | "proc-macro2 1.0.47", 1963 | "quote 1.0.21", 1964 | "syn 1.0.103", 1965 | ] 1966 | 1967 | [[package]] 1968 | name = "number_prefix" 1969 | version = "0.4.0" 1970 | source = "registry+https://github.com/rust-lang/crates.io-index" 1971 | checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" 1972 | 1973 | [[package]] 1974 | name = "oid-registry" 1975 | version = "0.6.0" 1976 | source = "registry+https://github.com/rust-lang/crates.io-index" 1977 | checksum = "7d4bda43fd1b844cbc6e6e54b5444e2b1bc7838bce59ad205902cccbb26d6761" 1978 | dependencies = [ 1979 | "asn1-rs", 1980 | ] 1981 | 1982 | [[package]] 1983 | name = "once_cell" 1984 | version = "1.16.0" 1985 | source = "registry+https://github.com/rust-lang/crates.io-index" 1986 | checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" 1987 | 1988 | [[package]] 1989 | name = "opaque-debug" 1990 | version = "0.3.0" 1991 | source = "registry+https://github.com/rust-lang/crates.io-index" 1992 | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 1993 | 1994 | [[package]] 1995 | name = "openssl-probe" 1996 | version = "0.1.5" 1997 | source = "registry+https://github.com/rust-lang/crates.io-index" 1998 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 1999 | 2000 | [[package]] 2001 | name = "os_str_bytes" 2002 | version = "6.4.0" 2003 | source = "registry+https://github.com/rust-lang/crates.io-index" 2004 | checksum = "7b5bf27447411e9ee3ff51186bf7a08e16c341efdde93f4d823e8844429bed7e" 2005 | 2006 | [[package]] 2007 | name = "parking_lot" 2008 | version = "0.12.1" 2009 | source = "registry+https://github.com/rust-lang/crates.io-index" 2010 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 2011 | dependencies = [ 2012 | "lock_api", 2013 | "parking_lot_core", 2014 | ] 2015 | 2016 | [[package]] 2017 | name = "parking_lot_core" 2018 | version = "0.9.4" 2019 | source = "registry+https://github.com/rust-lang/crates.io-index" 2020 | checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" 2021 | dependencies = [ 2022 | "cfg-if", 2023 | "libc", 2024 | "redox_syscall", 2025 | "smallvec", 2026 | "windows-sys 0.42.0", 2027 | ] 2028 | 2029 | [[package]] 2030 | name = "pbkdf2" 2031 | version = "0.4.0" 2032 | source = "registry+https://github.com/rust-lang/crates.io-index" 2033 | checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" 2034 | dependencies = [ 2035 | "crypto-mac", 2036 | ] 2037 | 2038 | [[package]] 2039 | name = "pbkdf2" 2040 | version = "0.11.0" 2041 | source = "registry+https://github.com/rust-lang/crates.io-index" 2042 | checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" 2043 | dependencies = [ 2044 | "digest 0.10.5", 2045 | ] 2046 | 2047 | [[package]] 2048 | name = "pem" 2049 | version = "1.1.0" 2050 | source = "registry+https://github.com/rust-lang/crates.io-index" 2051 | checksum = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4" 2052 | dependencies = [ 2053 | "base64 0.13.1", 2054 | ] 2055 | 2056 | [[package]] 2057 | name = "percent-encoding" 2058 | version = "2.2.0" 2059 | source = "registry+https://github.com/rust-lang/crates.io-index" 2060 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 2061 | 2062 | [[package]] 2063 | name = "percentage" 2064 | version = "0.1.0" 2065 | source = "registry+https://github.com/rust-lang/crates.io-index" 2066 | checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" 2067 | dependencies = [ 2068 | "num", 2069 | ] 2070 | 2071 | [[package]] 2072 | name = "petgraph" 2073 | version = "0.5.1" 2074 | source = "registry+https://github.com/rust-lang/crates.io-index" 2075 | checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" 2076 | dependencies = [ 2077 | "fixedbitset", 2078 | "indexmap", 2079 | ] 2080 | 2081 | [[package]] 2082 | name = "pin-project" 2083 | version = "1.0.12" 2084 | source = "registry+https://github.com/rust-lang/crates.io-index" 2085 | checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" 2086 | dependencies = [ 2087 | "pin-project-internal", 2088 | ] 2089 | 2090 | [[package]] 2091 | name = "pin-project-internal" 2092 | version = "1.0.12" 2093 | source = "registry+https://github.com/rust-lang/crates.io-index" 2094 | checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" 2095 | dependencies = [ 2096 | "proc-macro2 1.0.47", 2097 | "quote 1.0.21", 2098 | "syn 1.0.103", 2099 | ] 2100 | 2101 | [[package]] 2102 | name = "pin-project-lite" 2103 | version = "0.2.9" 2104 | source = "registry+https://github.com/rust-lang/crates.io-index" 2105 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 2106 | 2107 | [[package]] 2108 | name = "pin-utils" 2109 | version = "0.1.0" 2110 | source = "registry+https://github.com/rust-lang/crates.io-index" 2111 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2112 | 2113 | [[package]] 2114 | name = "pkcs8" 2115 | version = "0.8.0" 2116 | source = "registry+https://github.com/rust-lang/crates.io-index" 2117 | checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" 2118 | dependencies = [ 2119 | "der", 2120 | "spki", 2121 | "zeroize", 2122 | ] 2123 | 2124 | [[package]] 2125 | name = "polyval" 2126 | version = "0.5.3" 2127 | source = "registry+https://github.com/rust-lang/crates.io-index" 2128 | checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" 2129 | dependencies = [ 2130 | "cfg-if", 2131 | "cpufeatures", 2132 | "opaque-debug", 2133 | "universal-hash", 2134 | ] 2135 | 2136 | [[package]] 2137 | name = "ppv-lite86" 2138 | version = "0.2.17" 2139 | source = "registry+https://github.com/rust-lang/crates.io-index" 2140 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2141 | 2142 | [[package]] 2143 | name = "proc-macro-crate" 2144 | version = "0.1.5" 2145 | source = "registry+https://github.com/rust-lang/crates.io-index" 2146 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 2147 | dependencies = [ 2148 | "toml", 2149 | ] 2150 | 2151 | [[package]] 2152 | name = "proc-macro-crate" 2153 | version = "1.2.1" 2154 | source = "registry+https://github.com/rust-lang/crates.io-index" 2155 | checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" 2156 | dependencies = [ 2157 | "once_cell", 2158 | "thiserror", 2159 | "toml", 2160 | ] 2161 | 2162 | [[package]] 2163 | name = "proc-macro-error" 2164 | version = "1.0.4" 2165 | source = "registry+https://github.com/rust-lang/crates.io-index" 2166 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2167 | dependencies = [ 2168 | "proc-macro-error-attr", 2169 | "proc-macro2 1.0.47", 2170 | "quote 1.0.21", 2171 | "syn 1.0.103", 2172 | "version_check", 2173 | ] 2174 | 2175 | [[package]] 2176 | name = "proc-macro-error-attr" 2177 | version = "1.0.4" 2178 | source = "registry+https://github.com/rust-lang/crates.io-index" 2179 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2180 | dependencies = [ 2181 | "proc-macro2 1.0.47", 2182 | "quote 1.0.21", 2183 | "version_check", 2184 | ] 2185 | 2186 | [[package]] 2187 | name = "proc-macro2" 2188 | version = "0.4.30" 2189 | source = "registry+https://github.com/rust-lang/crates.io-index" 2190 | checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" 2191 | dependencies = [ 2192 | "unicode-xid 0.1.0", 2193 | ] 2194 | 2195 | [[package]] 2196 | name = "proc-macro2" 2197 | version = "1.0.47" 2198 | source = "registry+https://github.com/rust-lang/crates.io-index" 2199 | checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" 2200 | dependencies = [ 2201 | "unicode-ident", 2202 | ] 2203 | 2204 | [[package]] 2205 | name = "prost" 2206 | version = "0.8.0" 2207 | source = "registry+https://github.com/rust-lang/crates.io-index" 2208 | checksum = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020" 2209 | dependencies = [ 2210 | "bytes", 2211 | "prost-derive 0.8.0", 2212 | ] 2213 | 2214 | [[package]] 2215 | name = "prost" 2216 | version = "0.11.2" 2217 | source = "registry+https://github.com/rust-lang/crates.io-index" 2218 | checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" 2219 | dependencies = [ 2220 | "bytes", 2221 | "prost-derive 0.11.2", 2222 | ] 2223 | 2224 | [[package]] 2225 | name = "prost-build" 2226 | version = "0.8.0" 2227 | source = "registry+https://github.com/rust-lang/crates.io-index" 2228 | checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" 2229 | dependencies = [ 2230 | "bytes", 2231 | "heck 0.3.3", 2232 | "itertools", 2233 | "log", 2234 | "multimap", 2235 | "petgraph", 2236 | "prost 0.8.0", 2237 | "prost-types 0.8.0", 2238 | "tempfile", 2239 | "which", 2240 | ] 2241 | 2242 | [[package]] 2243 | name = "prost-derive" 2244 | version = "0.8.0" 2245 | source = "registry+https://github.com/rust-lang/crates.io-index" 2246 | checksum = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba" 2247 | dependencies = [ 2248 | "anyhow", 2249 | "itertools", 2250 | "proc-macro2 1.0.47", 2251 | "quote 1.0.21", 2252 | "syn 1.0.103", 2253 | ] 2254 | 2255 | [[package]] 2256 | name = "prost-derive" 2257 | version = "0.11.2" 2258 | source = "registry+https://github.com/rust-lang/crates.io-index" 2259 | checksum = "164ae68b6587001ca506d3bf7f1000bfa248d0e1217b618108fba4ec1d0cc306" 2260 | dependencies = [ 2261 | "anyhow", 2262 | "itertools", 2263 | "proc-macro2 1.0.47", 2264 | "quote 1.0.21", 2265 | "syn 1.0.103", 2266 | ] 2267 | 2268 | [[package]] 2269 | name = "prost-types" 2270 | version = "0.8.0" 2271 | source = "registry+https://github.com/rust-lang/crates.io-index" 2272 | checksum = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b" 2273 | dependencies = [ 2274 | "bytes", 2275 | "prost 0.8.0", 2276 | ] 2277 | 2278 | [[package]] 2279 | name = "prost-types" 2280 | version = "0.11.2" 2281 | source = "registry+https://github.com/rust-lang/crates.io-index" 2282 | checksum = "747761bc3dc48f9a34553bf65605cf6cb6288ba219f3450b4275dbd81539551a" 2283 | dependencies = [ 2284 | "bytes", 2285 | "prost 0.11.2", 2286 | ] 2287 | 2288 | [[package]] 2289 | name = "qstring" 2290 | version = "0.7.2" 2291 | source = "registry+https://github.com/rust-lang/crates.io-index" 2292 | checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" 2293 | dependencies = [ 2294 | "percent-encoding", 2295 | ] 2296 | 2297 | [[package]] 2298 | name = "quinn" 2299 | version = "0.8.5" 2300 | source = "registry+https://github.com/rust-lang/crates.io-index" 2301 | checksum = "5b435e71d9bfa0d8889927231970c51fb89c58fa63bffcab117c9c7a41e5ef8f" 2302 | dependencies = [ 2303 | "bytes", 2304 | "futures-channel", 2305 | "futures-util", 2306 | "fxhash", 2307 | "quinn-proto", 2308 | "quinn-udp", 2309 | "rustls", 2310 | "thiserror", 2311 | "tokio", 2312 | "tracing", 2313 | "webpki", 2314 | ] 2315 | 2316 | [[package]] 2317 | name = "quinn-proto" 2318 | version = "0.8.4" 2319 | source = "registry+https://github.com/rust-lang/crates.io-index" 2320 | checksum = "3fce546b9688f767a57530652488420d419a8b1f44a478b451c3d1ab6d992a55" 2321 | dependencies = [ 2322 | "bytes", 2323 | "fxhash", 2324 | "rand 0.8.5", 2325 | "ring", 2326 | "rustls", 2327 | "rustls-native-certs", 2328 | "rustls-pemfile 0.2.1", 2329 | "slab", 2330 | "thiserror", 2331 | "tinyvec", 2332 | "tracing", 2333 | "webpki", 2334 | ] 2335 | 2336 | [[package]] 2337 | name = "quinn-udp" 2338 | version = "0.1.3" 2339 | source = "registry+https://github.com/rust-lang/crates.io-index" 2340 | checksum = "9f832d8958db3e84d2ec93b5eb2272b45aa23cf7f8fe6e79f578896f4e6c231b" 2341 | dependencies = [ 2342 | "futures-util", 2343 | "libc", 2344 | "quinn-proto", 2345 | "socket2", 2346 | "tokio", 2347 | "tracing", 2348 | ] 2349 | 2350 | [[package]] 2351 | name = "quote" 2352 | version = "0.6.13" 2353 | source = "registry+https://github.com/rust-lang/crates.io-index" 2354 | checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" 2355 | dependencies = [ 2356 | "proc-macro2 0.4.30", 2357 | ] 2358 | 2359 | [[package]] 2360 | name = "quote" 2361 | version = "1.0.21" 2362 | source = "registry+https://github.com/rust-lang/crates.io-index" 2363 | checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" 2364 | dependencies = [ 2365 | "proc-macro2 1.0.47", 2366 | ] 2367 | 2368 | [[package]] 2369 | name = "rand" 2370 | version = "0.7.3" 2371 | source = "registry+https://github.com/rust-lang/crates.io-index" 2372 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 2373 | dependencies = [ 2374 | "getrandom 0.1.16", 2375 | "libc", 2376 | "rand_chacha 0.2.2", 2377 | "rand_core 0.5.1", 2378 | "rand_hc", 2379 | ] 2380 | 2381 | [[package]] 2382 | name = "rand" 2383 | version = "0.8.5" 2384 | source = "registry+https://github.com/rust-lang/crates.io-index" 2385 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2386 | dependencies = [ 2387 | "libc", 2388 | "rand_chacha 0.3.1", 2389 | "rand_core 0.6.4", 2390 | ] 2391 | 2392 | [[package]] 2393 | name = "rand_chacha" 2394 | version = "0.2.2" 2395 | source = "registry+https://github.com/rust-lang/crates.io-index" 2396 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 2397 | dependencies = [ 2398 | "ppv-lite86", 2399 | "rand_core 0.5.1", 2400 | ] 2401 | 2402 | [[package]] 2403 | name = "rand_chacha" 2404 | version = "0.3.1" 2405 | source = "registry+https://github.com/rust-lang/crates.io-index" 2406 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2407 | dependencies = [ 2408 | "ppv-lite86", 2409 | "rand_core 0.6.4", 2410 | ] 2411 | 2412 | [[package]] 2413 | name = "rand_core" 2414 | version = "0.5.1" 2415 | source = "registry+https://github.com/rust-lang/crates.io-index" 2416 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 2417 | dependencies = [ 2418 | "getrandom 0.1.16", 2419 | ] 2420 | 2421 | [[package]] 2422 | name = "rand_core" 2423 | version = "0.6.4" 2424 | source = "registry+https://github.com/rust-lang/crates.io-index" 2425 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2426 | dependencies = [ 2427 | "getrandom 0.2.8", 2428 | ] 2429 | 2430 | [[package]] 2431 | name = "rand_hc" 2432 | version = "0.2.0" 2433 | source = "registry+https://github.com/rust-lang/crates.io-index" 2434 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2435 | dependencies = [ 2436 | "rand_core 0.5.1", 2437 | ] 2438 | 2439 | [[package]] 2440 | name = "rand_xoshiro" 2441 | version = "0.6.0" 2442 | source = "registry+https://github.com/rust-lang/crates.io-index" 2443 | checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" 2444 | dependencies = [ 2445 | "rand_core 0.6.4", 2446 | ] 2447 | 2448 | [[package]] 2449 | name = "rayon" 2450 | version = "1.5.3" 2451 | source = "registry+https://github.com/rust-lang/crates.io-index" 2452 | checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" 2453 | dependencies = [ 2454 | "autocfg", 2455 | "crossbeam-deque", 2456 | "either", 2457 | "rayon-core", 2458 | ] 2459 | 2460 | [[package]] 2461 | name = "rayon-core" 2462 | version = "1.9.3" 2463 | source = "registry+https://github.com/rust-lang/crates.io-index" 2464 | checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" 2465 | dependencies = [ 2466 | "crossbeam-channel", 2467 | "crossbeam-deque", 2468 | "crossbeam-utils", 2469 | "num_cpus", 2470 | ] 2471 | 2472 | [[package]] 2473 | name = "rcgen" 2474 | version = "0.9.3" 2475 | source = "registry+https://github.com/rust-lang/crates.io-index" 2476 | checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" 2477 | dependencies = [ 2478 | "pem", 2479 | "ring", 2480 | "time 0.3.17", 2481 | "yasna", 2482 | ] 2483 | 2484 | [[package]] 2485 | name = "redox_syscall" 2486 | version = "0.2.16" 2487 | source = "registry+https://github.com/rust-lang/crates.io-index" 2488 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 2489 | dependencies = [ 2490 | "bitflags", 2491 | ] 2492 | 2493 | [[package]] 2494 | name = "redox_users" 2495 | version = "0.4.3" 2496 | source = "registry+https://github.com/rust-lang/crates.io-index" 2497 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 2498 | dependencies = [ 2499 | "getrandom 0.2.8", 2500 | "redox_syscall", 2501 | "thiserror", 2502 | ] 2503 | 2504 | [[package]] 2505 | name = "regex" 2506 | version = "1.7.0" 2507 | source = "registry+https://github.com/rust-lang/crates.io-index" 2508 | checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" 2509 | dependencies = [ 2510 | "aho-corasick", 2511 | "memchr", 2512 | "regex-syntax", 2513 | ] 2514 | 2515 | [[package]] 2516 | name = "regex-syntax" 2517 | version = "0.6.28" 2518 | source = "registry+https://github.com/rust-lang/crates.io-index" 2519 | checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" 2520 | 2521 | [[package]] 2522 | name = "remove_dir_all" 2523 | version = "0.5.3" 2524 | source = "registry+https://github.com/rust-lang/crates.io-index" 2525 | checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" 2526 | dependencies = [ 2527 | "winapi", 2528 | ] 2529 | 2530 | [[package]] 2531 | name = "reqwest" 2532 | version = "0.11.12" 2533 | source = "registry+https://github.com/rust-lang/crates.io-index" 2534 | checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc" 2535 | dependencies = [ 2536 | "async-compression", 2537 | "base64 0.13.1", 2538 | "bytes", 2539 | "encoding_rs", 2540 | "futures-core", 2541 | "futures-util", 2542 | "h2", 2543 | "http", 2544 | "http-body", 2545 | "hyper", 2546 | "hyper-rustls", 2547 | "ipnet", 2548 | "js-sys", 2549 | "log", 2550 | "mime", 2551 | "once_cell", 2552 | "percent-encoding", 2553 | "pin-project-lite", 2554 | "rustls", 2555 | "rustls-pemfile 1.0.1", 2556 | "serde", 2557 | "serde_json", 2558 | "serde_urlencoded", 2559 | "tokio", 2560 | "tokio-rustls", 2561 | "tokio-util 0.7.4", 2562 | "tower-service", 2563 | "url", 2564 | "wasm-bindgen", 2565 | "wasm-bindgen-futures", 2566 | "web-sys", 2567 | "webpki-roots", 2568 | "winreg", 2569 | ] 2570 | 2571 | [[package]] 2572 | name = "ring" 2573 | version = "0.16.20" 2574 | source = "registry+https://github.com/rust-lang/crates.io-index" 2575 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 2576 | dependencies = [ 2577 | "cc", 2578 | "libc", 2579 | "once_cell", 2580 | "spin", 2581 | "untrusted", 2582 | "web-sys", 2583 | "winapi", 2584 | ] 2585 | 2586 | [[package]] 2587 | name = "rpassword" 2588 | version = "6.0.1" 2589 | source = "registry+https://github.com/rust-lang/crates.io-index" 2590 | checksum = "2bf099a1888612545b683d2661a1940089f6c2e5a8e38979b2159da876bfd956" 2591 | dependencies = [ 2592 | "libc", 2593 | "serde", 2594 | "serde_json", 2595 | "winapi", 2596 | ] 2597 | 2598 | [[package]] 2599 | name = "rustc-hash" 2600 | version = "1.1.0" 2601 | source = "registry+https://github.com/rust-lang/crates.io-index" 2602 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2603 | 2604 | [[package]] 2605 | name = "rustc_version" 2606 | version = "0.4.0" 2607 | source = "registry+https://github.com/rust-lang/crates.io-index" 2608 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 2609 | dependencies = [ 2610 | "semver", 2611 | ] 2612 | 2613 | [[package]] 2614 | name = "rusticata-macros" 2615 | version = "4.1.0" 2616 | source = "registry+https://github.com/rust-lang/crates.io-index" 2617 | checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" 2618 | dependencies = [ 2619 | "nom", 2620 | ] 2621 | 2622 | [[package]] 2623 | name = "rustls" 2624 | version = "0.20.7" 2625 | source = "registry+https://github.com/rust-lang/crates.io-index" 2626 | checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" 2627 | dependencies = [ 2628 | "log", 2629 | "ring", 2630 | "sct", 2631 | "webpki", 2632 | ] 2633 | 2634 | [[package]] 2635 | name = "rustls-native-certs" 2636 | version = "0.6.2" 2637 | source = "registry+https://github.com/rust-lang/crates.io-index" 2638 | checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" 2639 | dependencies = [ 2640 | "openssl-probe", 2641 | "rustls-pemfile 1.0.1", 2642 | "schannel", 2643 | "security-framework", 2644 | ] 2645 | 2646 | [[package]] 2647 | name = "rustls-pemfile" 2648 | version = "0.2.1" 2649 | source = "registry+https://github.com/rust-lang/crates.io-index" 2650 | checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" 2651 | dependencies = [ 2652 | "base64 0.13.1", 2653 | ] 2654 | 2655 | [[package]] 2656 | name = "rustls-pemfile" 2657 | version = "1.0.1" 2658 | source = "registry+https://github.com/rust-lang/crates.io-index" 2659 | checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" 2660 | dependencies = [ 2661 | "base64 0.13.1", 2662 | ] 2663 | 2664 | [[package]] 2665 | name = "rustversion" 2666 | version = "1.0.9" 2667 | source = "registry+https://github.com/rust-lang/crates.io-index" 2668 | checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" 2669 | 2670 | [[package]] 2671 | name = "ryu" 2672 | version = "1.0.11" 2673 | source = "registry+https://github.com/rust-lang/crates.io-index" 2674 | checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" 2675 | 2676 | [[package]] 2677 | name = "schannel" 2678 | version = "0.1.20" 2679 | source = "registry+https://github.com/rust-lang/crates.io-index" 2680 | checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" 2681 | dependencies = [ 2682 | "lazy_static", 2683 | "windows-sys 0.36.1", 2684 | ] 2685 | 2686 | [[package]] 2687 | name = "scopeguard" 2688 | version = "1.1.0" 2689 | source = "registry+https://github.com/rust-lang/crates.io-index" 2690 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 2691 | 2692 | [[package]] 2693 | name = "scratch" 2694 | version = "1.0.2" 2695 | source = "registry+https://github.com/rust-lang/crates.io-index" 2696 | checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" 2697 | 2698 | [[package]] 2699 | name = "sct" 2700 | version = "0.7.0" 2701 | source = "registry+https://github.com/rust-lang/crates.io-index" 2702 | checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" 2703 | dependencies = [ 2704 | "ring", 2705 | "untrusted", 2706 | ] 2707 | 2708 | [[package]] 2709 | name = "security-framework" 2710 | version = "2.7.0" 2711 | source = "registry+https://github.com/rust-lang/crates.io-index" 2712 | checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" 2713 | dependencies = [ 2714 | "bitflags", 2715 | "core-foundation", 2716 | "core-foundation-sys", 2717 | "libc", 2718 | "security-framework-sys", 2719 | ] 2720 | 2721 | [[package]] 2722 | name = "security-framework-sys" 2723 | version = "2.6.1" 2724 | source = "registry+https://github.com/rust-lang/crates.io-index" 2725 | checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" 2726 | dependencies = [ 2727 | "core-foundation-sys", 2728 | "libc", 2729 | ] 2730 | 2731 | [[package]] 2732 | name = "semver" 2733 | version = "1.0.14" 2734 | source = "registry+https://github.com/rust-lang/crates.io-index" 2735 | checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" 2736 | 2737 | [[package]] 2738 | name = "serde" 2739 | version = "1.0.147" 2740 | source = "registry+https://github.com/rust-lang/crates.io-index" 2741 | checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" 2742 | dependencies = [ 2743 | "serde_derive", 2744 | ] 2745 | 2746 | [[package]] 2747 | name = "serde_bytes" 2748 | version = "0.11.7" 2749 | source = "registry+https://github.com/rust-lang/crates.io-index" 2750 | checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" 2751 | dependencies = [ 2752 | "serde", 2753 | ] 2754 | 2755 | [[package]] 2756 | name = "serde_derive" 2757 | version = "1.0.147" 2758 | source = "registry+https://github.com/rust-lang/crates.io-index" 2759 | checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" 2760 | dependencies = [ 2761 | "proc-macro2 1.0.47", 2762 | "quote 1.0.21", 2763 | "syn 1.0.103", 2764 | ] 2765 | 2766 | [[package]] 2767 | name = "serde_json" 2768 | version = "1.0.87" 2769 | source = "registry+https://github.com/rust-lang/crates.io-index" 2770 | checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" 2771 | dependencies = [ 2772 | "itoa", 2773 | "ryu", 2774 | "serde", 2775 | ] 2776 | 2777 | [[package]] 2778 | name = "serde_urlencoded" 2779 | version = "0.7.1" 2780 | source = "registry+https://github.com/rust-lang/crates.io-index" 2781 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 2782 | dependencies = [ 2783 | "form_urlencoded", 2784 | "itoa", 2785 | "ryu", 2786 | "serde", 2787 | ] 2788 | 2789 | [[package]] 2790 | name = "serde_yaml" 2791 | version = "0.8.26" 2792 | source = "registry+https://github.com/rust-lang/crates.io-index" 2793 | checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" 2794 | dependencies = [ 2795 | "indexmap", 2796 | "ryu", 2797 | "serde", 2798 | "yaml-rust", 2799 | ] 2800 | 2801 | [[package]] 2802 | name = "sha-1" 2803 | version = "0.10.0" 2804 | source = "registry+https://github.com/rust-lang/crates.io-index" 2805 | checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" 2806 | dependencies = [ 2807 | "cfg-if", 2808 | "cpufeatures", 2809 | "digest 0.10.5", 2810 | ] 2811 | 2812 | [[package]] 2813 | name = "sha2" 2814 | version = "0.9.9" 2815 | source = "registry+https://github.com/rust-lang/crates.io-index" 2816 | checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" 2817 | dependencies = [ 2818 | "block-buffer 0.9.0", 2819 | "cfg-if", 2820 | "cpufeatures", 2821 | "digest 0.9.0", 2822 | "opaque-debug", 2823 | ] 2824 | 2825 | [[package]] 2826 | name = "sha2" 2827 | version = "0.10.6" 2828 | source = "registry+https://github.com/rust-lang/crates.io-index" 2829 | checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" 2830 | dependencies = [ 2831 | "cfg-if", 2832 | "cpufeatures", 2833 | "digest 0.10.5", 2834 | ] 2835 | 2836 | [[package]] 2837 | name = "sha3" 2838 | version = "0.9.1" 2839 | source = "registry+https://github.com/rust-lang/crates.io-index" 2840 | checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" 2841 | dependencies = [ 2842 | "block-buffer 0.9.0", 2843 | "digest 0.9.0", 2844 | "keccak", 2845 | "opaque-debug", 2846 | ] 2847 | 2848 | [[package]] 2849 | name = "sha3" 2850 | version = "0.10.6" 2851 | source = "registry+https://github.com/rust-lang/crates.io-index" 2852 | checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" 2853 | dependencies = [ 2854 | "digest 0.10.5", 2855 | "keccak", 2856 | ] 2857 | 2858 | [[package]] 2859 | name = "signal-hook-registry" 2860 | version = "1.4.0" 2861 | source = "registry+https://github.com/rust-lang/crates.io-index" 2862 | checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" 2863 | dependencies = [ 2864 | "libc", 2865 | ] 2866 | 2867 | [[package]] 2868 | name = "signature" 2869 | version = "1.6.4" 2870 | source = "registry+https://github.com/rust-lang/crates.io-index" 2871 | checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" 2872 | 2873 | [[package]] 2874 | name = "sized-chunks" 2875 | version = "0.6.5" 2876 | source = "registry+https://github.com/rust-lang/crates.io-index" 2877 | checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" 2878 | dependencies = [ 2879 | "bitmaps", 2880 | "typenum", 2881 | ] 2882 | 2883 | [[package]] 2884 | name = "slab" 2885 | version = "0.4.7" 2886 | source = "registry+https://github.com/rust-lang/crates.io-index" 2887 | checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" 2888 | dependencies = [ 2889 | "autocfg", 2890 | ] 2891 | 2892 | [[package]] 2893 | name = "smallvec" 2894 | version = "1.10.0" 2895 | source = "registry+https://github.com/rust-lang/crates.io-index" 2896 | checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 2897 | 2898 | [[package]] 2899 | name = "socket2" 2900 | version = "0.4.7" 2901 | source = "registry+https://github.com/rust-lang/crates.io-index" 2902 | checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" 2903 | dependencies = [ 2904 | "libc", 2905 | "winapi", 2906 | ] 2907 | 2908 | [[package]] 2909 | name = "solana-account-decoder" 2910 | version = "1.14.7" 2911 | source = "registry+https://github.com/rust-lang/crates.io-index" 2912 | checksum = "f301f42bfbb5fc3dae9068f485544d4260af768d34b773ae9bfc9faf09ea737a" 2913 | dependencies = [ 2914 | "Inflector", 2915 | "base64 0.13.1", 2916 | "bincode", 2917 | "bs58", 2918 | "bv", 2919 | "lazy_static", 2920 | "serde", 2921 | "serde_derive", 2922 | "serde_json", 2923 | "solana-address-lookup-table-program", 2924 | "solana-config-program", 2925 | "solana-sdk", 2926 | "solana-vote-program", 2927 | "spl-token", 2928 | "spl-token-2022", 2929 | "thiserror", 2930 | "zstd", 2931 | ] 2932 | 2933 | [[package]] 2934 | name = "solana-address-lookup-table-program" 2935 | version = "1.14.7" 2936 | source = "registry+https://github.com/rust-lang/crates.io-index" 2937 | checksum = "28a3d1316bdac7ec880e2e73be90ccaaf13d1f868cbc15904d3e8030f6c65169" 2938 | dependencies = [ 2939 | "bincode", 2940 | "bytemuck", 2941 | "log", 2942 | "num-derive", 2943 | "num-traits", 2944 | "rustc_version", 2945 | "serde", 2946 | "solana-frozen-abi", 2947 | "solana-frozen-abi-macro", 2948 | "solana-program", 2949 | "solana-program-runtime", 2950 | "solana-sdk", 2951 | "thiserror", 2952 | ] 2953 | 2954 | [[package]] 2955 | name = "solana-clap-utils" 2956 | version = "1.14.7" 2957 | source = "registry+https://github.com/rust-lang/crates.io-index" 2958 | checksum = "3dae89175548ab57598ec68051b99234cd4a92a92ea3dac90fa6c48c74a3af28" 2959 | dependencies = [ 2960 | "chrono", 2961 | "clap 2.34.0", 2962 | "rpassword", 2963 | "solana-perf", 2964 | "solana-remote-wallet", 2965 | "solana-sdk", 2966 | "thiserror", 2967 | "tiny-bip39", 2968 | "uriparse", 2969 | "url", 2970 | ] 2971 | 2972 | [[package]] 2973 | name = "solana-cli-config" 2974 | version = "1.14.7" 2975 | source = "registry+https://github.com/rust-lang/crates.io-index" 2976 | checksum = "4d75a1cd1e7f04b50a2df322721ba76dd1fafd94623ceb3eab64479bd21571a0" 2977 | dependencies = [ 2978 | "dirs-next", 2979 | "lazy_static", 2980 | "serde", 2981 | "serde_derive", 2982 | "serde_yaml", 2983 | "solana-clap-utils", 2984 | "solana-sdk", 2985 | "url", 2986 | ] 2987 | 2988 | [[package]] 2989 | name = "solana-client" 2990 | version = "1.14.7" 2991 | source = "registry+https://github.com/rust-lang/crates.io-index" 2992 | checksum = "f420729f477b91581874613f917f4bba9d8e96bf778b22f866f2913fa8f4546d" 2993 | dependencies = [ 2994 | "async-mutex", 2995 | "async-trait", 2996 | "base64 0.13.1", 2997 | "bincode", 2998 | "bs58", 2999 | "bytes", 3000 | "clap 2.34.0", 3001 | "crossbeam-channel", 3002 | "enum_dispatch", 3003 | "futures", 3004 | "futures-util", 3005 | "indexmap", 3006 | "indicatif", 3007 | "itertools", 3008 | "jsonrpc-core", 3009 | "lazy_static", 3010 | "log", 3011 | "quinn", 3012 | "quinn-proto", 3013 | "rand 0.7.3", 3014 | "rand_chacha 0.2.2", 3015 | "rayon", 3016 | "reqwest", 3017 | "rustls", 3018 | "semver", 3019 | "serde", 3020 | "serde_derive", 3021 | "serde_json", 3022 | "solana-account-decoder", 3023 | "solana-clap-utils", 3024 | "solana-faucet", 3025 | "solana-measure", 3026 | "solana-metrics", 3027 | "solana-net-utils", 3028 | "solana-sdk", 3029 | "solana-streamer", 3030 | "solana-transaction-status", 3031 | "solana-version", 3032 | "solana-vote-program", 3033 | "spl-token-2022", 3034 | "thiserror", 3035 | "tokio", 3036 | "tokio-stream", 3037 | "tokio-tungstenite", 3038 | "tungstenite", 3039 | "url", 3040 | ] 3041 | 3042 | [[package]] 3043 | name = "solana-config-program" 3044 | version = "1.14.7" 3045 | source = "registry+https://github.com/rust-lang/crates.io-index" 3046 | checksum = "2afc57e9a42e836bfc5363293969f464106db22a2fd653968708e0313429dba8" 3047 | dependencies = [ 3048 | "bincode", 3049 | "chrono", 3050 | "serde", 3051 | "serde_derive", 3052 | "solana-program-runtime", 3053 | "solana-sdk", 3054 | ] 3055 | 3056 | [[package]] 3057 | name = "solana-faucet" 3058 | version = "1.14.7" 3059 | source = "registry+https://github.com/rust-lang/crates.io-index" 3060 | checksum = "80f0fb1e5de36e1828a4885deb5e06f299d9983c23ab81fdc890f4d03db844ea" 3061 | dependencies = [ 3062 | "bincode", 3063 | "byteorder", 3064 | "clap 2.34.0", 3065 | "crossbeam-channel", 3066 | "log", 3067 | "serde", 3068 | "serde_derive", 3069 | "solana-clap-utils", 3070 | "solana-cli-config", 3071 | "solana-logger", 3072 | "solana-metrics", 3073 | "solana-sdk", 3074 | "solana-version", 3075 | "spl-memo", 3076 | "thiserror", 3077 | "tokio", 3078 | ] 3079 | 3080 | [[package]] 3081 | name = "solana-frozen-abi" 3082 | version = "1.14.7" 3083 | source = "registry+https://github.com/rust-lang/crates.io-index" 3084 | checksum = "0e9d5107e663df4a87c658ee764e9f0e4d15adf8bc1d1c9088b45ed8eaaf4958" 3085 | dependencies = [ 3086 | "ahash", 3087 | "blake3", 3088 | "block-buffer 0.9.0", 3089 | "bs58", 3090 | "bv", 3091 | "byteorder", 3092 | "cc", 3093 | "either", 3094 | "generic-array", 3095 | "getrandom 0.1.16", 3096 | "hashbrown 0.12.3", 3097 | "im", 3098 | "lazy_static", 3099 | "log", 3100 | "memmap2", 3101 | "once_cell", 3102 | "rand_core 0.6.4", 3103 | "rustc_version", 3104 | "serde", 3105 | "serde_bytes", 3106 | "serde_derive", 3107 | "serde_json", 3108 | "sha2 0.10.6", 3109 | "solana-frozen-abi-macro", 3110 | "subtle", 3111 | "thiserror", 3112 | ] 3113 | 3114 | [[package]] 3115 | name = "solana-frozen-abi-macro" 3116 | version = "1.14.7" 3117 | source = "registry+https://github.com/rust-lang/crates.io-index" 3118 | checksum = "7e4600fe5ae28cec848debc4ea3b41f34d9d8fd088aca209fbb1e8205489d08d" 3119 | dependencies = [ 3120 | "proc-macro2 1.0.47", 3121 | "quote 1.0.21", 3122 | "rustc_version", 3123 | "syn 1.0.103", 3124 | ] 3125 | 3126 | [[package]] 3127 | name = "solana-logger" 3128 | version = "1.14.7" 3129 | source = "registry+https://github.com/rust-lang/crates.io-index" 3130 | checksum = "0f78a1849908659ed28696b92f030b1048b8ddafadfad0e95e79dcd21fe31072" 3131 | dependencies = [ 3132 | "env_logger", 3133 | "lazy_static", 3134 | "log", 3135 | ] 3136 | 3137 | [[package]] 3138 | name = "solana-measure" 3139 | version = "1.14.7" 3140 | source = "registry+https://github.com/rust-lang/crates.io-index" 3141 | checksum = "7597f7bc74f86e77aad037369b5f5176dfb23fe01a58df350e4d19c12faf8f7f" 3142 | dependencies = [ 3143 | "log", 3144 | "solana-sdk", 3145 | ] 3146 | 3147 | [[package]] 3148 | name = "solana-metrics" 3149 | version = "1.14.7" 3150 | source = "registry+https://github.com/rust-lang/crates.io-index" 3151 | checksum = "a7d280910a33496a33222f3a15f0537d33c55aadf16616ed02cc4731a2bf465f" 3152 | dependencies = [ 3153 | "crossbeam-channel", 3154 | "gethostname", 3155 | "lazy_static", 3156 | "log", 3157 | "reqwest", 3158 | "solana-sdk", 3159 | ] 3160 | 3161 | [[package]] 3162 | name = "solana-net-utils" 3163 | version = "1.14.7" 3164 | source = "registry+https://github.com/rust-lang/crates.io-index" 3165 | checksum = "3bda47bc41e4e6f43de660786541325550f21383b44bf163a04ca4b214fec850" 3166 | dependencies = [ 3167 | "bincode", 3168 | "clap 3.2.23", 3169 | "crossbeam-channel", 3170 | "log", 3171 | "nix", 3172 | "rand 0.7.3", 3173 | "serde", 3174 | "serde_derive", 3175 | "socket2", 3176 | "solana-logger", 3177 | "solana-sdk", 3178 | "solana-version", 3179 | "tokio", 3180 | "url", 3181 | ] 3182 | 3183 | [[package]] 3184 | name = "solana-perf" 3185 | version = "1.14.7" 3186 | source = "registry+https://github.com/rust-lang/crates.io-index" 3187 | checksum = "fccf3d9e7f6f75727811a618ccd4016d11073023ae9e459ae35d46fb009bde1c" 3188 | dependencies = [ 3189 | "ahash", 3190 | "bincode", 3191 | "bv", 3192 | "caps", 3193 | "curve25519-dalek", 3194 | "dlopen", 3195 | "dlopen_derive", 3196 | "fnv", 3197 | "lazy_static", 3198 | "libc", 3199 | "log", 3200 | "nix", 3201 | "rand 0.7.3", 3202 | "rayon", 3203 | "serde", 3204 | "solana-metrics", 3205 | "solana-rayon-threadlimit", 3206 | "solana-sdk", 3207 | "solana-vote-program", 3208 | ] 3209 | 3210 | [[package]] 3211 | name = "solana-program" 3212 | version = "1.14.7" 3213 | source = "registry+https://github.com/rust-lang/crates.io-index" 3214 | checksum = "512475cccb7e13f96ba76ed091b2d79a8431a485c73be728cd2235f9adba5a4e" 3215 | dependencies = [ 3216 | "base64 0.13.1", 3217 | "bincode", 3218 | "bitflags", 3219 | "blake3", 3220 | "borsh", 3221 | "borsh-derive", 3222 | "bs58", 3223 | "bv", 3224 | "bytemuck", 3225 | "cc", 3226 | "console_error_panic_hook", 3227 | "console_log", 3228 | "curve25519-dalek", 3229 | "getrandom 0.2.8", 3230 | "itertools", 3231 | "js-sys", 3232 | "lazy_static", 3233 | "libc", 3234 | "libsecp256k1", 3235 | "log", 3236 | "memoffset", 3237 | "num-derive", 3238 | "num-traits", 3239 | "parking_lot", 3240 | "rand 0.7.3", 3241 | "rand_chacha 0.2.2", 3242 | "rustc_version", 3243 | "rustversion", 3244 | "serde", 3245 | "serde_bytes", 3246 | "serde_derive", 3247 | "serde_json", 3248 | "sha2 0.10.6", 3249 | "sha3 0.10.6", 3250 | "solana-frozen-abi", 3251 | "solana-frozen-abi-macro", 3252 | "solana-sdk-macro", 3253 | "thiserror", 3254 | "tiny-bip39", 3255 | "wasm-bindgen", 3256 | "zeroize", 3257 | ] 3258 | 3259 | [[package]] 3260 | name = "solana-program-runtime" 3261 | version = "1.14.7" 3262 | source = "registry+https://github.com/rust-lang/crates.io-index" 3263 | checksum = "0741578bbee3a0170a620a4185202d8a559ac4bbba4435fd3d56c8cf432e5ca4" 3264 | dependencies = [ 3265 | "base64 0.13.1", 3266 | "bincode", 3267 | "eager", 3268 | "enum-iterator", 3269 | "itertools", 3270 | "libc", 3271 | "libloading", 3272 | "log", 3273 | "num-derive", 3274 | "num-traits", 3275 | "rand 0.7.3", 3276 | "rustc_version", 3277 | "serde", 3278 | "solana-frozen-abi", 3279 | "solana-frozen-abi-macro", 3280 | "solana-measure", 3281 | "solana-metrics", 3282 | "solana-sdk", 3283 | "thiserror", 3284 | ] 3285 | 3286 | [[package]] 3287 | name = "solana-rayon-threadlimit" 3288 | version = "1.14.7" 3289 | source = "registry+https://github.com/rust-lang/crates.io-index" 3290 | checksum = "f5acea18b6b1270e8bbb5fb47b8fd943bd30d673bb12b74ae6b485a0ae87da50" 3291 | dependencies = [ 3292 | "lazy_static", 3293 | "num_cpus", 3294 | ] 3295 | 3296 | [[package]] 3297 | name = "solana-remote-wallet" 3298 | version = "1.14.7" 3299 | source = "registry+https://github.com/rust-lang/crates.io-index" 3300 | checksum = "cdabea51bcec2773d7a65a37f6e9e9f497ffd6f0b2e8bdc719a9e17c8f711f64" 3301 | dependencies = [ 3302 | "console", 3303 | "dialoguer", 3304 | "log", 3305 | "num-derive", 3306 | "num-traits", 3307 | "parking_lot", 3308 | "qstring", 3309 | "semver", 3310 | "solana-sdk", 3311 | "thiserror", 3312 | "uriparse", 3313 | ] 3314 | 3315 | [[package]] 3316 | name = "solana-sdk" 3317 | version = "1.14.7" 3318 | source = "registry+https://github.com/rust-lang/crates.io-index" 3319 | checksum = "0cb45fd782d3793c3821dd961b9c7a28b675e187f7f22cff06e694c7743904ce" 3320 | dependencies = [ 3321 | "assert_matches", 3322 | "base64 0.13.1", 3323 | "bincode", 3324 | "bitflags", 3325 | "borsh", 3326 | "bs58", 3327 | "bytemuck", 3328 | "byteorder", 3329 | "chrono", 3330 | "derivation-path", 3331 | "digest 0.10.5", 3332 | "ed25519-dalek", 3333 | "ed25519-dalek-bip32", 3334 | "generic-array", 3335 | "hmac 0.12.1", 3336 | "itertools", 3337 | "js-sys", 3338 | "lazy_static", 3339 | "libsecp256k1", 3340 | "log", 3341 | "memmap2", 3342 | "num-derive", 3343 | "num-traits", 3344 | "pbkdf2 0.11.0", 3345 | "qstring", 3346 | "rand 0.7.3", 3347 | "rand_chacha 0.2.2", 3348 | "rustc_version", 3349 | "rustversion", 3350 | "serde", 3351 | "serde_bytes", 3352 | "serde_derive", 3353 | "serde_json", 3354 | "sha2 0.10.6", 3355 | "sha3 0.10.6", 3356 | "solana-frozen-abi", 3357 | "solana-frozen-abi-macro", 3358 | "solana-logger", 3359 | "solana-program", 3360 | "solana-sdk-macro", 3361 | "thiserror", 3362 | "uriparse", 3363 | "wasm-bindgen", 3364 | ] 3365 | 3366 | [[package]] 3367 | name = "solana-sdk-macro" 3368 | version = "1.14.7" 3369 | source = "registry+https://github.com/rust-lang/crates.io-index" 3370 | checksum = "a08cc4804804ecb9eb07a16c7ff2d4a770fe0533298f36f867a5efc2e3284745" 3371 | dependencies = [ 3372 | "bs58", 3373 | "proc-macro2 1.0.47", 3374 | "quote 1.0.21", 3375 | "rustversion", 3376 | "syn 1.0.103", 3377 | ] 3378 | 3379 | [[package]] 3380 | name = "solana-streamer" 3381 | version = "1.14.7" 3382 | source = "registry+https://github.com/rust-lang/crates.io-index" 3383 | checksum = "73ced03c13b40fb283782ddc302d8bb7343e3c5f0ce07eb5412a641875b0d4f9" 3384 | dependencies = [ 3385 | "crossbeam-channel", 3386 | "futures-util", 3387 | "histogram", 3388 | "indexmap", 3389 | "itertools", 3390 | "libc", 3391 | "log", 3392 | "nix", 3393 | "pem", 3394 | "percentage", 3395 | "pkcs8", 3396 | "quinn", 3397 | "rand 0.7.3", 3398 | "rcgen", 3399 | "rustls", 3400 | "solana-metrics", 3401 | "solana-perf", 3402 | "solana-sdk", 3403 | "thiserror", 3404 | "tokio", 3405 | "x509-parser", 3406 | ] 3407 | 3408 | [[package]] 3409 | name = "solana-transaction-status" 3410 | version = "1.14.7" 3411 | source = "registry+https://github.com/rust-lang/crates.io-index" 3412 | checksum = "89bd8aad27d2f4f9eabcb8979ec360a2cc2237845dfe9f9c53bb2a9bfd377029" 3413 | dependencies = [ 3414 | "Inflector", 3415 | "base64 0.13.1", 3416 | "bincode", 3417 | "borsh", 3418 | "bs58", 3419 | "lazy_static", 3420 | "log", 3421 | "serde", 3422 | "serde_derive", 3423 | "serde_json", 3424 | "solana-account-decoder", 3425 | "solana-address-lookup-table-program", 3426 | "solana-measure", 3427 | "solana-metrics", 3428 | "solana-sdk", 3429 | "solana-vote-program", 3430 | "spl-associated-token-account", 3431 | "spl-memo", 3432 | "spl-token", 3433 | "spl-token-2022", 3434 | "thiserror", 3435 | ] 3436 | 3437 | [[package]] 3438 | name = "solana-version" 3439 | version = "1.14.7" 3440 | source = "registry+https://github.com/rust-lang/crates.io-index" 3441 | checksum = "7079bd2671de7c61165e25b2002c5b7178f216b221fe2ba3c8fd8b2af96f6a93" 3442 | dependencies = [ 3443 | "log", 3444 | "rustc_version", 3445 | "semver", 3446 | "serde", 3447 | "serde_derive", 3448 | "solana-frozen-abi", 3449 | "solana-frozen-abi-macro", 3450 | "solana-sdk", 3451 | ] 3452 | 3453 | [[package]] 3454 | name = "solana-vote-program" 3455 | version = "1.14.7" 3456 | source = "registry+https://github.com/rust-lang/crates.io-index" 3457 | checksum = "b83e383b6e1810ae9b3ececd1e9a620e19983e3959ed22866ece6fd6c39c0658" 3458 | dependencies = [ 3459 | "bincode", 3460 | "log", 3461 | "num-derive", 3462 | "num-traits", 3463 | "rustc_version", 3464 | "serde", 3465 | "serde_derive", 3466 | "solana-frozen-abi", 3467 | "solana-frozen-abi-macro", 3468 | "solana-metrics", 3469 | "solana-program-runtime", 3470 | "solana-sdk", 3471 | "thiserror", 3472 | ] 3473 | 3474 | [[package]] 3475 | name = "solana-zk-token-sdk" 3476 | version = "1.14.7" 3477 | source = "registry+https://github.com/rust-lang/crates.io-index" 3478 | checksum = "3d4f9818b158e7a49266b83e0c06e551ba429d2395a55de5803eb6e2daa1260c" 3479 | dependencies = [ 3480 | "aes-gcm-siv", 3481 | "arrayref", 3482 | "base64 0.13.1", 3483 | "bincode", 3484 | "bytemuck", 3485 | "byteorder", 3486 | "cipher 0.4.3", 3487 | "curve25519-dalek", 3488 | "getrandom 0.1.16", 3489 | "itertools", 3490 | "lazy_static", 3491 | "merlin", 3492 | "num-derive", 3493 | "num-traits", 3494 | "rand 0.7.3", 3495 | "serde", 3496 | "serde_json", 3497 | "sha3 0.9.1", 3498 | "solana-program", 3499 | "solana-sdk", 3500 | "subtle", 3501 | "thiserror", 3502 | "zeroize", 3503 | ] 3504 | 3505 | [[package]] 3506 | name = "spin" 3507 | version = "0.5.2" 3508 | source = "registry+https://github.com/rust-lang/crates.io-index" 3509 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 3510 | 3511 | [[package]] 3512 | name = "spki" 3513 | version = "0.5.4" 3514 | source = "registry+https://github.com/rust-lang/crates.io-index" 3515 | checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" 3516 | dependencies = [ 3517 | "base64ct", 3518 | "der", 3519 | ] 3520 | 3521 | [[package]] 3522 | name = "spl-associated-token-account" 3523 | version = "1.1.1" 3524 | source = "registry+https://github.com/rust-lang/crates.io-index" 3525 | checksum = "16a33ecc83137583902c3e13c02f34151c8b2f2b74120f9c2b3ff841953e083d" 3526 | dependencies = [ 3527 | "assert_matches", 3528 | "borsh", 3529 | "num-derive", 3530 | "num-traits", 3531 | "solana-program", 3532 | "spl-token", 3533 | "spl-token-2022", 3534 | "thiserror", 3535 | ] 3536 | 3537 | [[package]] 3538 | name = "spl-memo" 3539 | version = "3.0.1" 3540 | source = "registry+https://github.com/rust-lang/crates.io-index" 3541 | checksum = "bd0dc6f70db6bacea7ff25870b016a65ba1d1b6013536f08e4fd79a8f9005325" 3542 | dependencies = [ 3543 | "solana-program", 3544 | ] 3545 | 3546 | [[package]] 3547 | name = "spl-token" 3548 | version = "3.5.0" 3549 | source = "registry+https://github.com/rust-lang/crates.io-index" 3550 | checksum = "8e85e168a785e82564160dcb87b2a8e04cee9bfd1f4d488c729d53d6a4bd300d" 3551 | dependencies = [ 3552 | "arrayref", 3553 | "bytemuck", 3554 | "num-derive", 3555 | "num-traits", 3556 | "num_enum", 3557 | "solana-program", 3558 | "thiserror", 3559 | ] 3560 | 3561 | [[package]] 3562 | name = "spl-token-2022" 3563 | version = "0.4.2" 3564 | source = "registry+https://github.com/rust-lang/crates.io-index" 3565 | checksum = "f0a97cbf60b91b610c846ccf8eecca96d92a24a19ffbf9fe06cd0c84e76ec45e" 3566 | dependencies = [ 3567 | "arrayref", 3568 | "bytemuck", 3569 | "num-derive", 3570 | "num-traits", 3571 | "num_enum", 3572 | "solana-program", 3573 | "solana-zk-token-sdk", 3574 | "spl-memo", 3575 | "spl-token", 3576 | "thiserror", 3577 | ] 3578 | 3579 | [[package]] 3580 | name = "strsim" 3581 | version = "0.8.0" 3582 | source = "registry+https://github.com/rust-lang/crates.io-index" 3583 | checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 3584 | 3585 | [[package]] 3586 | name = "strsim" 3587 | version = "0.10.0" 3588 | source = "registry+https://github.com/rust-lang/crates.io-index" 3589 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 3590 | 3591 | [[package]] 3592 | name = "subtle" 3593 | version = "2.4.1" 3594 | source = "registry+https://github.com/rust-lang/crates.io-index" 3595 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 3596 | 3597 | [[package]] 3598 | name = "syn" 3599 | version = "0.15.44" 3600 | source = "registry+https://github.com/rust-lang/crates.io-index" 3601 | checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" 3602 | dependencies = [ 3603 | "proc-macro2 0.4.30", 3604 | "quote 0.6.13", 3605 | "unicode-xid 0.1.0", 3606 | ] 3607 | 3608 | [[package]] 3609 | name = "syn" 3610 | version = "1.0.103" 3611 | source = "registry+https://github.com/rust-lang/crates.io-index" 3612 | checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" 3613 | dependencies = [ 3614 | "proc-macro2 1.0.47", 3615 | "quote 1.0.21", 3616 | "unicode-ident", 3617 | ] 3618 | 3619 | [[package]] 3620 | name = "synstructure" 3621 | version = "0.12.6" 3622 | source = "registry+https://github.com/rust-lang/crates.io-index" 3623 | checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" 3624 | dependencies = [ 3625 | "proc-macro2 1.0.47", 3626 | "quote 1.0.21", 3627 | "syn 1.0.103", 3628 | "unicode-xid 0.2.4", 3629 | ] 3630 | 3631 | [[package]] 3632 | name = "tempfile" 3633 | version = "3.3.0" 3634 | source = "registry+https://github.com/rust-lang/crates.io-index" 3635 | checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" 3636 | dependencies = [ 3637 | "cfg-if", 3638 | "fastrand", 3639 | "libc", 3640 | "redox_syscall", 3641 | "remove_dir_all", 3642 | "winapi", 3643 | ] 3644 | 3645 | [[package]] 3646 | name = "termcolor" 3647 | version = "1.1.3" 3648 | source = "registry+https://github.com/rust-lang/crates.io-index" 3649 | checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" 3650 | dependencies = [ 3651 | "winapi-util", 3652 | ] 3653 | 3654 | [[package]] 3655 | name = "terminal_size" 3656 | version = "0.1.17" 3657 | source = "registry+https://github.com/rust-lang/crates.io-index" 3658 | checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" 3659 | dependencies = [ 3660 | "libc", 3661 | "winapi", 3662 | ] 3663 | 3664 | [[package]] 3665 | name = "textwrap" 3666 | version = "0.11.0" 3667 | source = "registry+https://github.com/rust-lang/crates.io-index" 3668 | checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 3669 | dependencies = [ 3670 | "unicode-width", 3671 | ] 3672 | 3673 | [[package]] 3674 | name = "textwrap" 3675 | version = "0.16.0" 3676 | source = "registry+https://github.com/rust-lang/crates.io-index" 3677 | checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" 3678 | 3679 | [[package]] 3680 | name = "thiserror" 3681 | version = "1.0.37" 3682 | source = "registry+https://github.com/rust-lang/crates.io-index" 3683 | checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" 3684 | dependencies = [ 3685 | "thiserror-impl", 3686 | ] 3687 | 3688 | [[package]] 3689 | name = "thiserror-impl" 3690 | version = "1.0.37" 3691 | source = "registry+https://github.com/rust-lang/crates.io-index" 3692 | checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" 3693 | dependencies = [ 3694 | "proc-macro2 1.0.47", 3695 | "quote 1.0.21", 3696 | "syn 1.0.103", 3697 | ] 3698 | 3699 | [[package]] 3700 | name = "time" 3701 | version = "0.1.44" 3702 | source = "registry+https://github.com/rust-lang/crates.io-index" 3703 | checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" 3704 | dependencies = [ 3705 | "libc", 3706 | "wasi 0.10.0+wasi-snapshot-preview1", 3707 | "winapi", 3708 | ] 3709 | 3710 | [[package]] 3711 | name = "time" 3712 | version = "0.3.17" 3713 | source = "registry+https://github.com/rust-lang/crates.io-index" 3714 | checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" 3715 | dependencies = [ 3716 | "itoa", 3717 | "serde", 3718 | "time-core", 3719 | "time-macros", 3720 | ] 3721 | 3722 | [[package]] 3723 | name = "time-core" 3724 | version = "0.1.0" 3725 | source = "registry+https://github.com/rust-lang/crates.io-index" 3726 | checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" 3727 | 3728 | [[package]] 3729 | name = "time-macros" 3730 | version = "0.2.6" 3731 | source = "registry+https://github.com/rust-lang/crates.io-index" 3732 | checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" 3733 | dependencies = [ 3734 | "time-core", 3735 | ] 3736 | 3737 | [[package]] 3738 | name = "tiny-bip39" 3739 | version = "0.8.2" 3740 | source = "registry+https://github.com/rust-lang/crates.io-index" 3741 | checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" 3742 | dependencies = [ 3743 | "anyhow", 3744 | "hmac 0.8.1", 3745 | "once_cell", 3746 | "pbkdf2 0.4.0", 3747 | "rand 0.7.3", 3748 | "rustc-hash", 3749 | "sha2 0.9.9", 3750 | "thiserror", 3751 | "unicode-normalization", 3752 | "wasm-bindgen", 3753 | "zeroize", 3754 | ] 3755 | 3756 | [[package]] 3757 | name = "tinyvec" 3758 | version = "1.6.0" 3759 | source = "registry+https://github.com/rust-lang/crates.io-index" 3760 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 3761 | dependencies = [ 3762 | "tinyvec_macros", 3763 | ] 3764 | 3765 | [[package]] 3766 | name = "tinyvec_macros" 3767 | version = "0.1.0" 3768 | source = "registry+https://github.com/rust-lang/crates.io-index" 3769 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 3770 | 3771 | [[package]] 3772 | name = "tokio" 3773 | version = "1.21.2" 3774 | source = "registry+https://github.com/rust-lang/crates.io-index" 3775 | checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" 3776 | dependencies = [ 3777 | "autocfg", 3778 | "bytes", 3779 | "libc", 3780 | "memchr", 3781 | "mio", 3782 | "num_cpus", 3783 | "parking_lot", 3784 | "pin-project-lite", 3785 | "signal-hook-registry", 3786 | "socket2", 3787 | "tokio-macros", 3788 | "winapi", 3789 | ] 3790 | 3791 | [[package]] 3792 | name = "tokio-io-timeout" 3793 | version = "1.2.0" 3794 | source = "registry+https://github.com/rust-lang/crates.io-index" 3795 | checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" 3796 | dependencies = [ 3797 | "pin-project-lite", 3798 | "tokio", 3799 | ] 3800 | 3801 | [[package]] 3802 | name = "tokio-macros" 3803 | version = "1.8.0" 3804 | source = "registry+https://github.com/rust-lang/crates.io-index" 3805 | checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" 3806 | dependencies = [ 3807 | "proc-macro2 1.0.47", 3808 | "quote 1.0.21", 3809 | "syn 1.0.103", 3810 | ] 3811 | 3812 | [[package]] 3813 | name = "tokio-rustls" 3814 | version = "0.23.4" 3815 | source = "registry+https://github.com/rust-lang/crates.io-index" 3816 | checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" 3817 | dependencies = [ 3818 | "rustls", 3819 | "tokio", 3820 | "webpki", 3821 | ] 3822 | 3823 | [[package]] 3824 | name = "tokio-stream" 3825 | version = "0.1.11" 3826 | source = "registry+https://github.com/rust-lang/crates.io-index" 3827 | checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" 3828 | dependencies = [ 3829 | "futures-core", 3830 | "pin-project-lite", 3831 | "tokio", 3832 | ] 3833 | 3834 | [[package]] 3835 | name = "tokio-tungstenite" 3836 | version = "0.17.2" 3837 | source = "registry+https://github.com/rust-lang/crates.io-index" 3838 | checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" 3839 | dependencies = [ 3840 | "futures-util", 3841 | "log", 3842 | "rustls", 3843 | "tokio", 3844 | "tokio-rustls", 3845 | "tungstenite", 3846 | "webpki", 3847 | "webpki-roots", 3848 | ] 3849 | 3850 | [[package]] 3851 | name = "tokio-util" 3852 | version = "0.6.10" 3853 | source = "registry+https://github.com/rust-lang/crates.io-index" 3854 | checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" 3855 | dependencies = [ 3856 | "bytes", 3857 | "futures-core", 3858 | "futures-sink", 3859 | "log", 3860 | "pin-project-lite", 3861 | "tokio", 3862 | ] 3863 | 3864 | [[package]] 3865 | name = "tokio-util" 3866 | version = "0.7.4" 3867 | source = "registry+https://github.com/rust-lang/crates.io-index" 3868 | checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" 3869 | dependencies = [ 3870 | "bytes", 3871 | "futures-core", 3872 | "futures-sink", 3873 | "pin-project-lite", 3874 | "tokio", 3875 | "tracing", 3876 | ] 3877 | 3878 | [[package]] 3879 | name = "toml" 3880 | version = "0.5.9" 3881 | source = "registry+https://github.com/rust-lang/crates.io-index" 3882 | checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" 3883 | dependencies = [ 3884 | "serde", 3885 | ] 3886 | 3887 | [[package]] 3888 | name = "tonic" 3889 | version = "0.5.2" 3890 | source = "registry+https://github.com/rust-lang/crates.io-index" 3891 | checksum = "796c5e1cd49905e65dd8e700d4cb1dffcbfdb4fc9d017de08c1a537afd83627c" 3892 | dependencies = [ 3893 | "async-stream", 3894 | "async-trait", 3895 | "base64 0.13.1", 3896 | "bytes", 3897 | "futures-core", 3898 | "futures-util", 3899 | "h2", 3900 | "http", 3901 | "http-body", 3902 | "hyper", 3903 | "hyper-timeout", 3904 | "percent-encoding", 3905 | "pin-project", 3906 | "prost 0.8.0", 3907 | "prost-derive 0.8.0", 3908 | "tokio", 3909 | "tokio-stream", 3910 | "tokio-util 0.6.10", 3911 | "tower", 3912 | "tower-layer", 3913 | "tower-service", 3914 | "tracing", 3915 | "tracing-futures", 3916 | ] 3917 | 3918 | [[package]] 3919 | name = "tonic-build" 3920 | version = "0.5.2" 3921 | source = "registry+https://github.com/rust-lang/crates.io-index" 3922 | checksum = "12b52d07035516c2b74337d2ac7746075e7dcae7643816c1b12c5ff8a7484c08" 3923 | dependencies = [ 3924 | "proc-macro2 1.0.47", 3925 | "prost-build", 3926 | "quote 1.0.21", 3927 | "syn 1.0.103", 3928 | ] 3929 | 3930 | [[package]] 3931 | name = "tower" 3932 | version = "0.4.13" 3933 | source = "registry+https://github.com/rust-lang/crates.io-index" 3934 | checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" 3935 | dependencies = [ 3936 | "futures-core", 3937 | "futures-util", 3938 | "indexmap", 3939 | "pin-project", 3940 | "pin-project-lite", 3941 | "rand 0.8.5", 3942 | "slab", 3943 | "tokio", 3944 | "tokio-util 0.7.4", 3945 | "tower-layer", 3946 | "tower-service", 3947 | "tracing", 3948 | ] 3949 | 3950 | [[package]] 3951 | name = "tower-layer" 3952 | version = "0.3.2" 3953 | source = "registry+https://github.com/rust-lang/crates.io-index" 3954 | checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" 3955 | 3956 | [[package]] 3957 | name = "tower-service" 3958 | version = "0.3.2" 3959 | source = "registry+https://github.com/rust-lang/crates.io-index" 3960 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 3961 | 3962 | [[package]] 3963 | name = "tracing" 3964 | version = "0.1.37" 3965 | source = "registry+https://github.com/rust-lang/crates.io-index" 3966 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 3967 | dependencies = [ 3968 | "cfg-if", 3969 | "log", 3970 | "pin-project-lite", 3971 | "tracing-attributes", 3972 | "tracing-core", 3973 | ] 3974 | 3975 | [[package]] 3976 | name = "tracing-attributes" 3977 | version = "0.1.23" 3978 | source = "registry+https://github.com/rust-lang/crates.io-index" 3979 | checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" 3980 | dependencies = [ 3981 | "proc-macro2 1.0.47", 3982 | "quote 1.0.21", 3983 | "syn 1.0.103", 3984 | ] 3985 | 3986 | [[package]] 3987 | name = "tracing-core" 3988 | version = "0.1.30" 3989 | source = "registry+https://github.com/rust-lang/crates.io-index" 3990 | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" 3991 | dependencies = [ 3992 | "once_cell", 3993 | ] 3994 | 3995 | [[package]] 3996 | name = "tracing-futures" 3997 | version = "0.2.5" 3998 | source = "registry+https://github.com/rust-lang/crates.io-index" 3999 | checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" 4000 | dependencies = [ 4001 | "pin-project", 4002 | "tracing", 4003 | ] 4004 | 4005 | [[package]] 4006 | name = "try-lock" 4007 | version = "0.2.3" 4008 | source = "registry+https://github.com/rust-lang/crates.io-index" 4009 | checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" 4010 | 4011 | [[package]] 4012 | name = "tungstenite" 4013 | version = "0.17.3" 4014 | source = "registry+https://github.com/rust-lang/crates.io-index" 4015 | checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" 4016 | dependencies = [ 4017 | "base64 0.13.1", 4018 | "byteorder", 4019 | "bytes", 4020 | "http", 4021 | "httparse", 4022 | "log", 4023 | "rand 0.8.5", 4024 | "rustls", 4025 | "sha-1", 4026 | "thiserror", 4027 | "url", 4028 | "utf-8", 4029 | "webpki", 4030 | "webpki-roots", 4031 | ] 4032 | 4033 | [[package]] 4034 | name = "typenum" 4035 | version = "1.15.0" 4036 | source = "registry+https://github.com/rust-lang/crates.io-index" 4037 | checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" 4038 | 4039 | [[package]] 4040 | name = "unicode-bidi" 4041 | version = "0.3.8" 4042 | source = "registry+https://github.com/rust-lang/crates.io-index" 4043 | checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" 4044 | 4045 | [[package]] 4046 | name = "unicode-ident" 4047 | version = "1.0.5" 4048 | source = "registry+https://github.com/rust-lang/crates.io-index" 4049 | checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" 4050 | 4051 | [[package]] 4052 | name = "unicode-normalization" 4053 | version = "0.1.22" 4054 | source = "registry+https://github.com/rust-lang/crates.io-index" 4055 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 4056 | dependencies = [ 4057 | "tinyvec", 4058 | ] 4059 | 4060 | [[package]] 4061 | name = "unicode-segmentation" 4062 | version = "1.10.0" 4063 | source = "registry+https://github.com/rust-lang/crates.io-index" 4064 | checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" 4065 | 4066 | [[package]] 4067 | name = "unicode-width" 4068 | version = "0.1.10" 4069 | source = "registry+https://github.com/rust-lang/crates.io-index" 4070 | checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" 4071 | 4072 | [[package]] 4073 | name = "unicode-xid" 4074 | version = "0.1.0" 4075 | source = "registry+https://github.com/rust-lang/crates.io-index" 4076 | checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 4077 | 4078 | [[package]] 4079 | name = "unicode-xid" 4080 | version = "0.2.4" 4081 | source = "registry+https://github.com/rust-lang/crates.io-index" 4082 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 4083 | 4084 | [[package]] 4085 | name = "universal-hash" 4086 | version = "0.4.1" 4087 | source = "registry+https://github.com/rust-lang/crates.io-index" 4088 | checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" 4089 | dependencies = [ 4090 | "generic-array", 4091 | "subtle", 4092 | ] 4093 | 4094 | [[package]] 4095 | name = "untrusted" 4096 | version = "0.7.1" 4097 | source = "registry+https://github.com/rust-lang/crates.io-index" 4098 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 4099 | 4100 | [[package]] 4101 | name = "uriparse" 4102 | version = "0.6.4" 4103 | source = "registry+https://github.com/rust-lang/crates.io-index" 4104 | checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" 4105 | dependencies = [ 4106 | "fnv", 4107 | "lazy_static", 4108 | ] 4109 | 4110 | [[package]] 4111 | name = "url" 4112 | version = "2.3.1" 4113 | source = "registry+https://github.com/rust-lang/crates.io-index" 4114 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 4115 | dependencies = [ 4116 | "form_urlencoded", 4117 | "idna", 4118 | "percent-encoding", 4119 | ] 4120 | 4121 | [[package]] 4122 | name = "utf-8" 4123 | version = "0.7.6" 4124 | source = "registry+https://github.com/rust-lang/crates.io-index" 4125 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 4126 | 4127 | [[package]] 4128 | name = "uuid" 4129 | version = "1.2.2" 4130 | source = "registry+https://github.com/rust-lang/crates.io-index" 4131 | checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" 4132 | dependencies = [ 4133 | "getrandom 0.2.8", 4134 | ] 4135 | 4136 | [[package]] 4137 | name = "vec_map" 4138 | version = "0.8.2" 4139 | source = "registry+https://github.com/rust-lang/crates.io-index" 4140 | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 4141 | 4142 | [[package]] 4143 | name = "version_check" 4144 | version = "0.9.4" 4145 | source = "registry+https://github.com/rust-lang/crates.io-index" 4146 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 4147 | 4148 | [[package]] 4149 | name = "want" 4150 | version = "0.3.0" 4151 | source = "registry+https://github.com/rust-lang/crates.io-index" 4152 | checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 4153 | dependencies = [ 4154 | "log", 4155 | "try-lock", 4156 | ] 4157 | 4158 | [[package]] 4159 | name = "wasi" 4160 | version = "0.9.0+wasi-snapshot-preview1" 4161 | source = "registry+https://github.com/rust-lang/crates.io-index" 4162 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 4163 | 4164 | [[package]] 4165 | name = "wasi" 4166 | version = "0.10.0+wasi-snapshot-preview1" 4167 | source = "registry+https://github.com/rust-lang/crates.io-index" 4168 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 4169 | 4170 | [[package]] 4171 | name = "wasi" 4172 | version = "0.11.0+wasi-snapshot-preview1" 4173 | source = "registry+https://github.com/rust-lang/crates.io-index" 4174 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 4175 | 4176 | [[package]] 4177 | name = "wasm-bindgen" 4178 | version = "0.2.83" 4179 | source = "registry+https://github.com/rust-lang/crates.io-index" 4180 | checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" 4181 | dependencies = [ 4182 | "cfg-if", 4183 | "wasm-bindgen-macro", 4184 | ] 4185 | 4186 | [[package]] 4187 | name = "wasm-bindgen-backend" 4188 | version = "0.2.83" 4189 | source = "registry+https://github.com/rust-lang/crates.io-index" 4190 | checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" 4191 | dependencies = [ 4192 | "bumpalo", 4193 | "log", 4194 | "once_cell", 4195 | "proc-macro2 1.0.47", 4196 | "quote 1.0.21", 4197 | "syn 1.0.103", 4198 | "wasm-bindgen-shared", 4199 | ] 4200 | 4201 | [[package]] 4202 | name = "wasm-bindgen-futures" 4203 | version = "0.4.33" 4204 | source = "registry+https://github.com/rust-lang/crates.io-index" 4205 | checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" 4206 | dependencies = [ 4207 | "cfg-if", 4208 | "js-sys", 4209 | "wasm-bindgen", 4210 | "web-sys", 4211 | ] 4212 | 4213 | [[package]] 4214 | name = "wasm-bindgen-macro" 4215 | version = "0.2.83" 4216 | source = "registry+https://github.com/rust-lang/crates.io-index" 4217 | checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" 4218 | dependencies = [ 4219 | "quote 1.0.21", 4220 | "wasm-bindgen-macro-support", 4221 | ] 4222 | 4223 | [[package]] 4224 | name = "wasm-bindgen-macro-support" 4225 | version = "0.2.83" 4226 | source = "registry+https://github.com/rust-lang/crates.io-index" 4227 | checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" 4228 | dependencies = [ 4229 | "proc-macro2 1.0.47", 4230 | "quote 1.0.21", 4231 | "syn 1.0.103", 4232 | "wasm-bindgen-backend", 4233 | "wasm-bindgen-shared", 4234 | ] 4235 | 4236 | [[package]] 4237 | name = "wasm-bindgen-shared" 4238 | version = "0.2.83" 4239 | source = "registry+https://github.com/rust-lang/crates.io-index" 4240 | checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" 4241 | 4242 | [[package]] 4243 | name = "web-sys" 4244 | version = "0.3.60" 4245 | source = "registry+https://github.com/rust-lang/crates.io-index" 4246 | checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" 4247 | dependencies = [ 4248 | "js-sys", 4249 | "wasm-bindgen", 4250 | ] 4251 | 4252 | [[package]] 4253 | name = "webpki" 4254 | version = "0.22.0" 4255 | source = "registry+https://github.com/rust-lang/crates.io-index" 4256 | checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" 4257 | dependencies = [ 4258 | "ring", 4259 | "untrusted", 4260 | ] 4261 | 4262 | [[package]] 4263 | name = "webpki-roots" 4264 | version = "0.22.5" 4265 | source = "registry+https://github.com/rust-lang/crates.io-index" 4266 | checksum = "368bfe657969fb01238bb756d351dcade285e0f6fcbd36dcb23359a5169975be" 4267 | dependencies = [ 4268 | "webpki", 4269 | ] 4270 | 4271 | [[package]] 4272 | name = "which" 4273 | version = "4.3.0" 4274 | source = "registry+https://github.com/rust-lang/crates.io-index" 4275 | checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" 4276 | dependencies = [ 4277 | "either", 4278 | "libc", 4279 | "once_cell", 4280 | ] 4281 | 4282 | [[package]] 4283 | name = "winapi" 4284 | version = "0.3.9" 4285 | source = "registry+https://github.com/rust-lang/crates.io-index" 4286 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 4287 | dependencies = [ 4288 | "winapi-i686-pc-windows-gnu", 4289 | "winapi-x86_64-pc-windows-gnu", 4290 | ] 4291 | 4292 | [[package]] 4293 | name = "winapi-i686-pc-windows-gnu" 4294 | version = "0.4.0" 4295 | source = "registry+https://github.com/rust-lang/crates.io-index" 4296 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 4297 | 4298 | [[package]] 4299 | name = "winapi-util" 4300 | version = "0.1.5" 4301 | source = "registry+https://github.com/rust-lang/crates.io-index" 4302 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 4303 | dependencies = [ 4304 | "winapi", 4305 | ] 4306 | 4307 | [[package]] 4308 | name = "winapi-x86_64-pc-windows-gnu" 4309 | version = "0.4.0" 4310 | source = "registry+https://github.com/rust-lang/crates.io-index" 4311 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 4312 | 4313 | [[package]] 4314 | name = "windows-sys" 4315 | version = "0.36.1" 4316 | source = "registry+https://github.com/rust-lang/crates.io-index" 4317 | checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" 4318 | dependencies = [ 4319 | "windows_aarch64_msvc 0.36.1", 4320 | "windows_i686_gnu 0.36.1", 4321 | "windows_i686_msvc 0.36.1", 4322 | "windows_x86_64_gnu 0.36.1", 4323 | "windows_x86_64_msvc 0.36.1", 4324 | ] 4325 | 4326 | [[package]] 4327 | name = "windows-sys" 4328 | version = "0.42.0" 4329 | source = "registry+https://github.com/rust-lang/crates.io-index" 4330 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 4331 | dependencies = [ 4332 | "windows_aarch64_gnullvm", 4333 | "windows_aarch64_msvc 0.42.0", 4334 | "windows_i686_gnu 0.42.0", 4335 | "windows_i686_msvc 0.42.0", 4336 | "windows_x86_64_gnu 0.42.0", 4337 | "windows_x86_64_gnullvm", 4338 | "windows_x86_64_msvc 0.42.0", 4339 | ] 4340 | 4341 | [[package]] 4342 | name = "windows_aarch64_gnullvm" 4343 | version = "0.42.0" 4344 | source = "registry+https://github.com/rust-lang/crates.io-index" 4345 | checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" 4346 | 4347 | [[package]] 4348 | name = "windows_aarch64_msvc" 4349 | version = "0.36.1" 4350 | source = "registry+https://github.com/rust-lang/crates.io-index" 4351 | checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" 4352 | 4353 | [[package]] 4354 | name = "windows_aarch64_msvc" 4355 | version = "0.42.0" 4356 | source = "registry+https://github.com/rust-lang/crates.io-index" 4357 | checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" 4358 | 4359 | [[package]] 4360 | name = "windows_i686_gnu" 4361 | version = "0.36.1" 4362 | source = "registry+https://github.com/rust-lang/crates.io-index" 4363 | checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" 4364 | 4365 | [[package]] 4366 | name = "windows_i686_gnu" 4367 | version = "0.42.0" 4368 | source = "registry+https://github.com/rust-lang/crates.io-index" 4369 | checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" 4370 | 4371 | [[package]] 4372 | name = "windows_i686_msvc" 4373 | version = "0.36.1" 4374 | source = "registry+https://github.com/rust-lang/crates.io-index" 4375 | checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" 4376 | 4377 | [[package]] 4378 | name = "windows_i686_msvc" 4379 | version = "0.42.0" 4380 | source = "registry+https://github.com/rust-lang/crates.io-index" 4381 | checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" 4382 | 4383 | [[package]] 4384 | name = "windows_x86_64_gnu" 4385 | version = "0.36.1" 4386 | source = "registry+https://github.com/rust-lang/crates.io-index" 4387 | checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" 4388 | 4389 | [[package]] 4390 | name = "windows_x86_64_gnu" 4391 | version = "0.42.0" 4392 | source = "registry+https://github.com/rust-lang/crates.io-index" 4393 | checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" 4394 | 4395 | [[package]] 4396 | name = "windows_x86_64_gnullvm" 4397 | version = "0.42.0" 4398 | source = "registry+https://github.com/rust-lang/crates.io-index" 4399 | checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" 4400 | 4401 | [[package]] 4402 | name = "windows_x86_64_msvc" 4403 | version = "0.36.1" 4404 | source = "registry+https://github.com/rust-lang/crates.io-index" 4405 | checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" 4406 | 4407 | [[package]] 4408 | name = "windows_x86_64_msvc" 4409 | version = "0.42.0" 4410 | source = "registry+https://github.com/rust-lang/crates.io-index" 4411 | checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" 4412 | 4413 | [[package]] 4414 | name = "winreg" 4415 | version = "0.10.1" 4416 | source = "registry+https://github.com/rust-lang/crates.io-index" 4417 | checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" 4418 | dependencies = [ 4419 | "winapi", 4420 | ] 4421 | 4422 | [[package]] 4423 | name = "x509-parser" 4424 | version = "0.14.0" 4425 | source = "registry+https://github.com/rust-lang/crates.io-index" 4426 | checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" 4427 | dependencies = [ 4428 | "asn1-rs", 4429 | "base64 0.13.1", 4430 | "data-encoding", 4431 | "der-parser", 4432 | "lazy_static", 4433 | "nom", 4434 | "oid-registry", 4435 | "rusticata-macros", 4436 | "thiserror", 4437 | "time 0.3.17", 4438 | ] 4439 | 4440 | [[package]] 4441 | name = "yaml-rust" 4442 | version = "0.4.5" 4443 | source = "registry+https://github.com/rust-lang/crates.io-index" 4444 | checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" 4445 | dependencies = [ 4446 | "linked-hash-map", 4447 | ] 4448 | 4449 | [[package]] 4450 | name = "yasna" 4451 | version = "0.5.0" 4452 | source = "registry+https://github.com/rust-lang/crates.io-index" 4453 | checksum = "346d34a236c9d3e5f3b9b74563f238f955bbd05fa0b8b4efa53c130c43982f4c" 4454 | dependencies = [ 4455 | "time 0.3.17", 4456 | ] 4457 | 4458 | [[package]] 4459 | name = "zeroize" 4460 | version = "1.3.0" 4461 | source = "registry+https://github.com/rust-lang/crates.io-index" 4462 | checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" 4463 | dependencies = [ 4464 | "zeroize_derive", 4465 | ] 4466 | 4467 | [[package]] 4468 | name = "zeroize_derive" 4469 | version = "1.3.2" 4470 | source = "registry+https://github.com/rust-lang/crates.io-index" 4471 | checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" 4472 | dependencies = [ 4473 | "proc-macro2 1.0.47", 4474 | "quote 1.0.21", 4475 | "syn 1.0.103", 4476 | "synstructure", 4477 | ] 4478 | 4479 | [[package]] 4480 | name = "zstd" 4481 | version = "0.11.2+zstd.1.5.2" 4482 | source = "registry+https://github.com/rust-lang/crates.io-index" 4483 | checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" 4484 | dependencies = [ 4485 | "zstd-safe", 4486 | ] 4487 | 4488 | [[package]] 4489 | name = "zstd-safe" 4490 | version = "5.0.2+zstd.1.5.2" 4491 | source = "registry+https://github.com/rust-lang/crates.io-index" 4492 | checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" 4493 | dependencies = [ 4494 | "libc", 4495 | "zstd-sys", 4496 | ] 4497 | 4498 | [[package]] 4499 | name = "zstd-sys" 4500 | version = "2.0.1+zstd.1.5.2" 4501 | source = "registry+https://github.com/rust-lang/crates.io-index" 4502 | checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" 4503 | dependencies = [ 4504 | "cc", 4505 | "libc", 4506 | ] 4507 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "src/*" 4 | ] 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Half Baked Block Engine 2 | 3 | ## About 4 | This is a half-baked block engine. It can be used for testing bundles running through jito-solana. 5 | 6 | ## Shortcomings 7 | - The bare minimum methods are implemented for a block engine to forward bundles to a jito-solana validator. 8 | - Bundles are forwarded to all connected leaders instead of the current leader. 9 | - Untested, unaudited, and definitely buggy. 10 | 11 | ## Running 12 | ### Startup the block engine: 13 | ```bash 14 | cargo b --release && RUST_LOG=info ./target/release/jito-block-engine 15 | ``` 16 | 17 | ### Startup the validator (jito-solana): 18 | Build the validator: `cargo b --release` 19 | 20 | In one terminal, run: `./start` 21 | 22 | In another termianl, run: `./bootstrap` 23 | 24 | ### Startup bundle blaster: 25 | ```bash 26 | solana-keygen new --no-bip39-passphrase --outfile keypair.json 27 | cargo b --release && RUST_LOG=info ./target/release/jito-searcher-client 28 | ``` 29 | -------------------------------------------------------------------------------- /src/auth/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "jito-auth" 3 | version = "0.1.0" 4 | edition = "2021" 5 | publish = false 6 | 7 | [dependencies] 8 | jito-protos = { path = "../jito_protos" } 9 | log = "0.4.17" 10 | prost-types = "0.8.0" 11 | solana-sdk = "1.14.5" 12 | tokio = "1.21.2" 13 | tokio-stream = "0.1.0" 14 | tonic = "0.5.2" 15 | uuid = { version = "1.2.2", features = ["v4"] } 16 | -------------------------------------------------------------------------------- /src/auth/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod server; 2 | -------------------------------------------------------------------------------- /src/auth/src/server.rs: -------------------------------------------------------------------------------- 1 | use jito_protos::auth::{ 2 | auth_service_server::AuthService, GenerateAuthChallengeRequest, GenerateAuthChallengeResponse, 3 | GenerateAuthTokensRequest, GenerateAuthTokensResponse, RefreshAccessTokenRequest, 4 | RefreshAccessTokenResponse, Token as PbToken, 5 | }; 6 | use log::*; 7 | use std::ops::Add; 8 | use std::time::{Duration, SystemTime, UNIX_EPOCH}; 9 | use tonic::{Request, Response, Status}; 10 | pub struct AuthServiceImpl {} 11 | 12 | impl AuthServiceImpl { 13 | pub fn new() -> Self { 14 | AuthServiceImpl {} 15 | } 16 | } 17 | 18 | #[tonic::async_trait] 19 | impl AuthService for AuthServiceImpl { 20 | async fn generate_auth_challenge( 21 | &self, 22 | _req: Request, 23 | ) -> Result, Status> { 24 | info!("generate_auth_challenge"); 25 | Ok(Response::new(GenerateAuthChallengeResponse { 26 | challenge: "generate_auth_challenge".into(), 27 | })) 28 | } 29 | 30 | async fn generate_auth_tokens( 31 | &self, 32 | _req: Request, 33 | ) -> Result, Status> { 34 | info!("generate_auth_tokens"); 35 | 36 | let expiration_time = SystemTime::now() 37 | .add(Duration::from_secs(24 * 60 * 60)) 38 | .duration_since(UNIX_EPOCH) 39 | .expect("expiration time calc"); 40 | 41 | Ok(Response::new(GenerateAuthTokensResponse { 42 | access_token: Some(PbToken { 43 | value: "access_token".into(), 44 | expires_at_utc: Some(prost_types::Timestamp { 45 | seconds: expiration_time.as_secs() as i64, 46 | nanos: 0, 47 | }), 48 | }), 49 | refresh_token: Some(PbToken { 50 | value: "refresh_token".into(), 51 | expires_at_utc: Some(prost_types::Timestamp { 52 | seconds: expiration_time.as_secs() as i64, 53 | nanos: 0, 54 | }), 55 | }), 56 | })) 57 | } 58 | 59 | async fn refresh_access_token( 60 | &self, 61 | _req: Request, 62 | ) -> Result, Status> { 63 | info!("refresh_access_token"); 64 | 65 | let expiration_time = SystemTime::now() 66 | .add(Duration::from_secs(30 * 60)) 67 | .duration_since(UNIX_EPOCH) 68 | .expect("expiration time calc"); 69 | Ok(Response::new(RefreshAccessTokenResponse { 70 | access_token: Some(PbToken { 71 | value: "access_token".into(), 72 | expires_at_utc: Some(prost_types::Timestamp { 73 | seconds: expiration_time.as_secs() as i64, 74 | nanos: 0, 75 | }), 76 | }), 77 | })) 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/block_engine/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "jito-block-engine" 3 | version = "0.1.0" 4 | edition = "2021" 5 | publish = false 6 | 7 | [dependencies] 8 | clap = { version = "3.1.12", features = ["derive", "env"] } 9 | env_logger = "0.9.3" 10 | jito-auth = { path = "../auth" } 11 | jito-protos = { path = "../jito_protos" } 12 | jito-searcher = { path = "../searcher" } 13 | jito-validator = { path = "../validator" } 14 | log = "0.4.17" 15 | tokio = { version = "1.21.2", features = ["rt-multi-thread", "macros", "sync", "time"] } 16 | tonic = "0.5.2" 17 | -------------------------------------------------------------------------------- /src/block_engine/src/main.rs: -------------------------------------------------------------------------------- 1 | use clap::Parser; 2 | use jito_auth::server::AuthServiceImpl; 3 | use jito_protos::auth::auth_service_server::AuthServiceServer; 4 | use jito_protos::block_engine::block_engine_validator_server::BlockEngineValidatorServer; 5 | use jito_protos::searcher::searcher_service_server::SearcherServiceServer; 6 | use jito_searcher::server::SearcherServiceImpl; 7 | use jito_validator::server::ValidatorServerImpl; 8 | use log::info; 9 | use std::net::SocketAddr; 10 | use tokio::runtime::Builder; 11 | use tokio::sync::mpsc::channel; 12 | use tonic::transport::Server; 13 | 14 | #[derive(Parser, Debug)] 15 | #[clap(author, version, about, long_about = None)] 16 | struct Args { 17 | /// Bind address for searcher service 18 | #[clap(long, env, default_value = "0.0.0.0:1234")] 19 | searcher_addr: SocketAddr, 20 | 21 | /// Bind address for validator service 22 | #[clap(long, env, default_value = "0.0.0.0:1003")] 23 | validator_addr: SocketAddr, 24 | 25 | /// Bind address for validator service 26 | #[clap(long, env, default_value = "0.0.0.0:1005")] 27 | auth_addr: SocketAddr, 28 | } 29 | 30 | fn main() { 31 | env_logger::init(); 32 | 33 | let args: Args = Args::parse(); 34 | 35 | let (_packet_sender, packet_receiver) = channel(100); 36 | let (bundle_sender, bundle_receiver) = channel(100); 37 | 38 | let runtime = Builder::new_multi_thread().enable_all().build().unwrap(); 39 | runtime.block_on(async move { 40 | // start searcher server 41 | tokio::spawn(async move { 42 | let searcher_service_impl = SearcherServiceImpl::new(bundle_sender); 43 | let searcher_svc = SearcherServiceServer::new(searcher_service_impl); 44 | info!("starting searcher server at {}", args.searcher_addr); 45 | Server::builder() 46 | .add_service(searcher_svc) 47 | .serve(args.searcher_addr) 48 | .await 49 | .expect("searcher server starts"); 50 | }); 51 | 52 | // start auth server 53 | tokio::spawn(async move { 54 | let auth_service_impl = AuthServiceImpl::new(); 55 | let auth_svc = AuthServiceServer::new(auth_service_impl); 56 | info!("starting auth server at {}", args.auth_addr); 57 | Server::builder() 58 | .add_service(auth_svc) 59 | .serve(args.auth_addr) 60 | .await 61 | .expect("auth server starts"); 62 | }); 63 | 64 | // start validator server and block 65 | let validator_impl = ValidatorServerImpl::new(bundle_receiver, packet_receiver); 66 | let validator_svc = BlockEngineValidatorServer::new(validator_impl); 67 | info!("starting validator server at {}", args.validator_addr); 68 | Server::builder() 69 | .add_service(validator_svc) 70 | .serve(args.validator_addr) 71 | .await 72 | .expect("validator server starts"); 73 | }); 74 | } 75 | -------------------------------------------------------------------------------- /src/jito_protos/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "jito-protos" 3 | version = "0.1.0" 4 | edition = "2021" 5 | publish = false 6 | 7 | [dependencies] 8 | bincode = "1.3.3" 9 | prost = "0.8.0" 10 | prost-types = "0.8.0" 11 | tonic = "0.5.2" 12 | solana-sdk = "1.14.7" 13 | 14 | [build-dependencies] 15 | tonic-build = "0.5.2" 16 | -------------------------------------------------------------------------------- /src/jito_protos/build.rs: -------------------------------------------------------------------------------- 1 | use tonic_build::configure; 2 | 3 | fn main() { 4 | configure() 5 | .compile( 6 | &[ 7 | "protos/auth.proto", 8 | "protos/block.proto", 9 | "protos/block_engine.proto", 10 | "protos/bundle.proto", 11 | "protos/packet.proto", 12 | "protos/relayer.proto", 13 | "protos/searcher.proto", 14 | "protos/shared.proto", 15 | ], 16 | &["protos"], 17 | ) 18 | .unwrap(); 19 | } 20 | -------------------------------------------------------------------------------- /src/jito_protos/src/lib.rs: -------------------------------------------------------------------------------- 1 | use bincode::serialize; 2 | use solana_sdk::transaction::VersionedTransaction; 3 | 4 | pub mod auth { 5 | tonic::include_proto!("auth"); 6 | } 7 | 8 | pub mod block { 9 | tonic::include_proto!("block"); 10 | } 11 | 12 | pub mod block_engine { 13 | tonic::include_proto!("block_engine"); 14 | } 15 | 16 | pub mod bundle { 17 | tonic::include_proto!("bundle"); 18 | } 19 | 20 | pub mod packet { 21 | tonic::include_proto!("packet"); 22 | } 23 | 24 | pub mod relayer { 25 | tonic::include_proto!("relayer"); 26 | } 27 | 28 | pub mod searcher { 29 | tonic::include_proto!("searcher"); 30 | } 31 | 32 | pub mod shared { 33 | tonic::include_proto!("shared"); 34 | } 35 | 36 | /// Converts a VersionedTransaction to a protobuf packet 37 | pub fn proto_packet_from_versioned_tx(tx: &VersionedTransaction) -> packet::Packet { 38 | let data = serialize(tx).expect("serializes"); 39 | let size = data.len() as u64; 40 | packet::Packet { 41 | data, 42 | meta: Some(packet::Meta { 43 | size, 44 | addr: "".to_string(), 45 | port: 0, 46 | flags: None, 47 | sender_stake: 0, 48 | }), 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/searcher/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "jito-searcher" 3 | version = "0.1.0" 4 | edition = "2021" 5 | publish = false 6 | 7 | [dependencies] 8 | jito-protos = { path = "../jito_protos" } 9 | log = "0.4.17" 10 | prost-types = "0.11.2" 11 | solana-sdk = "1.14.5" 12 | tokio = "1.21.2" 13 | tokio-stream = "0.1.0" 14 | tonic = "0.5.2" 15 | uuid = { version = "1.2.2", features = ["v4"] } 16 | -------------------------------------------------------------------------------- /src/searcher/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod server; 2 | -------------------------------------------------------------------------------- /src/searcher/src/server.rs: -------------------------------------------------------------------------------- 1 | use jito_protos::bundle::BundleUuid; 2 | use jito_protos::searcher::{ 3 | searcher_service_server::SearcherService, ConnectedLeadersRequest, ConnectedLeadersResponse, 4 | GetTipAccountsRequest, GetTipAccountsResponse, NextScheduledLeaderRequest, 5 | NextScheduledLeaderResponse, PendingTxNotification, PendingTxSubscriptionRequest, 6 | SendBundleRequest, SendBundleResponse, 7 | }; 8 | use log::info; 9 | use tokio::sync::mpsc::Sender; 10 | use tokio_stream::wrappers::ReceiverStream; 11 | use tonic::{Request, Response, Status}; 12 | use uuid::Uuid; 13 | 14 | pub struct SearcherServiceImpl { 15 | bundle_sender: Sender, 16 | } 17 | 18 | impl SearcherServiceImpl { 19 | pub const MAX_BUNDLE_LEN: usize = 5; 20 | 21 | #[allow(clippy::too_many_arguments)] 22 | pub fn new(bundle_sender: Sender) -> Self { 23 | SearcherServiceImpl { bundle_sender } 24 | } 25 | } 26 | 27 | #[tonic::async_trait] 28 | impl SearcherService for SearcherServiceImpl { 29 | type SubscribePendingTransactionsStream = ReceiverStream>; 30 | 31 | async fn subscribe_pending_transactions( 32 | &self, 33 | _request: Request, 34 | ) -> Result, Status> { 35 | unimplemented!() 36 | } 37 | 38 | async fn send_bundle( 39 | &self, 40 | request: Request, 41 | ) -> Result, Status> { 42 | let uuid = Uuid::new_v4().to_string(); 43 | let bundle_uuid = BundleUuid { 44 | bundle: request.into_inner().bundle, 45 | uuid: uuid.clone(), 46 | }; 47 | 48 | info!("received bundle_uuid: {:?}", bundle_uuid.uuid); 49 | 50 | if bundle_uuid.bundle.is_some() { 51 | self.bundle_sender 52 | .send(bundle_uuid) 53 | .await 54 | .map_err(|_| Status::internal("error forwarding bundle"))?; 55 | } 56 | 57 | Ok(Response::new(SendBundleResponse { uuid })) 58 | } 59 | 60 | async fn get_next_scheduled_leader( 61 | &self, 62 | _request: Request, 63 | ) -> Result, Status> { 64 | unimplemented!() 65 | } 66 | 67 | async fn get_connected_leaders( 68 | &self, 69 | _request: Request, 70 | ) -> Result, Status> { 71 | unimplemented!() 72 | } 73 | 74 | async fn get_tip_accounts( 75 | &self, 76 | _request: Request, 77 | ) -> Result, Status> { 78 | unimplemented!() 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/searcher_client/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "jito-searcher-client" 3 | version = "0.1.0" 4 | edition = "2021" 5 | publish = false 6 | 7 | [dependencies] 8 | clap = { version = "3.1.12", features = ["derive", "env"] } 9 | jito-protos = { path = "../jito_protos" } 10 | env_logger = "0.9.3" 11 | log = "0.4.17" 12 | prost-types = "0.8.0" 13 | solana-sdk = "1.14.5" 14 | solana-client = "1.14.7" 15 | tokio = "1.21.2" 16 | tokio-stream = "0.1.0" 17 | tonic = "0.5.2" 18 | uuid = { version = "1.2.2", features = ["v4"] } 19 | -------------------------------------------------------------------------------- /src/searcher_client/src/main.rs: -------------------------------------------------------------------------------- 1 | use clap::Parser; 2 | 3 | use std::{ 4 | process::exit, 5 | sync::Arc, 6 | time::{Duration, Instant, SystemTime}, 7 | }; 8 | 9 | use jito_protos::searcher::searcher_service_client::SearcherServiceClient; 10 | use jito_protos::{ 11 | bundle::Bundle, proto_packet_from_versioned_tx, searcher::SendBundleRequest, shared::Header, 12 | }; 13 | use log::{error, info}; 14 | use solana_client::nonblocking::rpc_client::RpcClient; 15 | use solana_sdk::{ 16 | commitment_config::{CommitmentConfig, CommitmentLevel}, 17 | pubkey::Pubkey, 18 | signature::{read_keypair_file, Signer}, 19 | system_transaction, 20 | transaction::VersionedTransaction, 21 | }; 22 | use tokio::runtime::Builder; 23 | use tokio::time::sleep; 24 | 25 | #[derive(Parser, Debug)] 26 | #[clap(author, version, about, long_about = None)] 27 | struct Args { 28 | /// RPC url to request airdrop from 29 | #[clap(short, long, env, default_value_t = String::from("http://localhost:8899"))] 30 | rpc_url: String, 31 | 32 | /// URL for searcher service 33 | #[clap(short, long, env, default_value_t = String::from("grpc://localhost:1234"))] 34 | searcher_service_url: String, 35 | 36 | /// Path to the keypair used to sign auth tokens. 37 | /// Ensure the associated pubkey is added to the auth store before running this script. 38 | #[clap(short, long, env, default_value_t = String::from("./keypair.json"))] 39 | keypair_path: String, 40 | } 41 | 42 | async fn request_and_confirm_airdrop(client: &RpcClient, pubkeys: &[Pubkey]) -> bool { 43 | let mut sigs = Vec::new(); 44 | 45 | info!("requesting airdrop pubkeys: {:?}", pubkeys); 46 | 47 | for pubkey in pubkeys { 48 | let signature = client 49 | .request_airdrop(pubkey, 100000000000) 50 | .await 51 | .expect("gets signature"); 52 | sigs.push(signature); 53 | } 54 | 55 | let now = Instant::now(); 56 | while now.elapsed() < Duration::from_secs(20) { 57 | let r = client 58 | .get_signature_statuses(&sigs) 59 | .await 60 | .expect("got statuses"); 61 | if r.value.iter().all(|s| s.is_some()) { 62 | info!("got airdrop pubkeys: {:?}", pubkeys); 63 | return true; 64 | } 65 | } 66 | false 67 | } 68 | 69 | fn main() { 70 | env_logger::init(); 71 | 72 | let args: Args = Args::parse(); 73 | 74 | let kp = Arc::new(read_keypair_file(args.keypair_path).expect("failed to read keypair file")); 75 | let rpc_client = RpcClient::new(args.rpc_url); 76 | 77 | let runtime = Builder::new_multi_thread().enable_all().build().unwrap(); 78 | runtime.block_on(async move { 79 | let mut searcher_client = SearcherServiceClient::connect(args.searcher_service_url) 80 | .await 81 | .expect("connect to searcher service"); 82 | if !request_and_confirm_airdrop(&rpc_client, &[kp.pubkey()]).await { 83 | error!("error requesting airdrop"); 84 | exit(1); 85 | } 86 | sleep(Duration::from_secs(5)).await; 87 | 88 | let mut last_blockhash_time = Instant::now(); 89 | let mut blockhash = rpc_client 90 | .get_latest_blockhash_with_commitment(CommitmentConfig { 91 | commitment: CommitmentLevel::Processed, 92 | }) 93 | .await 94 | .expect("latest blockhash") 95 | .0; 96 | let mut base = 0; 97 | 98 | info!("sending bundles..."); 99 | loop { 100 | if last_blockhash_time.elapsed() > Duration::from_secs(5) { 101 | blockhash = rpc_client 102 | .get_latest_blockhash_with_commitment(CommitmentConfig { 103 | commitment: CommitmentLevel::Processed, 104 | }) 105 | .await 106 | .expect("latest blockhash") 107 | .0; 108 | last_blockhash_time = Instant::now(); 109 | } 110 | let txs: Vec<_> = (0..5) 111 | .map(|amount| { 112 | VersionedTransaction::from(system_transaction::transfer( 113 | &kp, 114 | &kp.pubkey(), 115 | base + amount, 116 | blockhash, 117 | )) 118 | }) 119 | .collect(); 120 | base += txs.len() as u64; 121 | 122 | let result = searcher_client 123 | .send_bundle(SendBundleRequest { 124 | bundle: Some(Bundle { 125 | header: Some(Header { 126 | ts: Some(prost_types::Timestamp::from(SystemTime::now())), 127 | }), 128 | packets: txs.iter().map(proto_packet_from_versioned_tx).collect(), 129 | }), 130 | }) 131 | .await; 132 | info!("uuid: {:?}", result.unwrap().into_inner().uuid); 133 | sleep(Duration::from_millis(1)).await; 134 | } 135 | }); 136 | } 137 | -------------------------------------------------------------------------------- /src/validator/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "jito-validator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | publish = false 6 | 7 | [dependencies] 8 | jito-protos = { path = "../jito_protos" } 9 | log = "0.4.17" 10 | prost-types = "0.11.2" 11 | solana-sdk = "1.14.5" 12 | tokio = "1.21.2" 13 | tokio-stream = "0.1.0" 14 | tonic = "0.5.2" 15 | uuid = { version = "1.2.2", features = ["v4"] } 16 | -------------------------------------------------------------------------------- /src/validator/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod server; 2 | -------------------------------------------------------------------------------- /src/validator/src/server.rs: -------------------------------------------------------------------------------- 1 | use jito_protos::packet::PacketBatch; 2 | use jito_protos::{ 3 | block_engine::{ 4 | block_engine_validator_server::BlockEngineValidator, BlockBuilderFeeInfoRequest, 5 | BlockBuilderFeeInfoResponse, SubscribeBundlesRequest, SubscribeBundlesResponse, 6 | SubscribePacketsRequest, SubscribePacketsResponse, 7 | }, 8 | bundle::BundleUuid, 9 | }; 10 | use log::{info, warn}; 11 | use solana_sdk::pubkey::Pubkey; 12 | use std::collections::HashMap; 13 | use std::sync::{Arc, Mutex}; 14 | use std::thread; 15 | use std::thread::{Builder, JoinHandle}; 16 | use tokio::sync::mpsc::error::TrySendError; 17 | use tokio::sync::mpsc::{channel, Receiver, Sender}; 18 | use tokio_stream::wrappers::ReceiverStream; 19 | use tonic::{Request, Response, Status}; 20 | use uuid::Uuid; 21 | 22 | pub struct AuthInterceptor {} 23 | 24 | pub struct ValidatorServerImpl { 25 | forwarder_thread: JoinHandle<()>, 26 | packet_subscriptions: 27 | Arc>>>>, 28 | bundle_subscriptions: 29 | Arc>>>>, 30 | } 31 | 32 | impl ValidatorServerImpl { 33 | pub fn new( 34 | bundle_receiver: Receiver, 35 | packet_receiver: Receiver, 36 | ) -> Self { 37 | let packet_subscriptions = Arc::new(Mutex::new(HashMap::default())); 38 | let bundle_subscriptions = Arc::new(Mutex::new(HashMap::default())); 39 | let forwarder_thread = Self::start_forwarder_thread( 40 | bundle_receiver, 41 | packet_receiver, 42 | &packet_subscriptions, 43 | &bundle_subscriptions, 44 | ); 45 | Self { 46 | forwarder_thread, 47 | packet_subscriptions, 48 | bundle_subscriptions, 49 | } 50 | } 51 | 52 | pub fn join(self) -> thread::Result<()> { 53 | self.forwarder_thread.join() 54 | } 55 | 56 | fn start_forwarder_thread( 57 | mut bundle_receiver: Receiver, 58 | mut packet_receiver: Receiver, 59 | packet_subscriptions: &Arc< 60 | Mutex>>>, 61 | >, 62 | bundle_subscriptions: &Arc< 63 | Mutex>>>, 64 | >, 65 | ) -> JoinHandle<()> { 66 | let packet_subscriptions = packet_subscriptions.clone(); 67 | let bundle_subscriptions = bundle_subscriptions.clone(); 68 | Builder::new() 69 | .name("forwarder_thread".into()) 70 | .spawn(move || { 71 | let runtime = tokio::runtime::Builder::new_multi_thread() 72 | .enable_all() 73 | .build() 74 | .unwrap(); 75 | runtime.block_on(async move { 76 | loop { 77 | tokio::select! { 78 | maybe_packet_batch = packet_receiver.recv() => { 79 | if let Some(packet_batch) = maybe_packet_batch { 80 | let failed_sends = Self::forward_packets(packet_batch, &packet_subscriptions).await; 81 | for uuid in failed_sends { 82 | info!("removing packet_subscriptions uuid: {:?}", uuid); 83 | packet_subscriptions.lock().unwrap().remove(&uuid); 84 | } 85 | } else { 86 | warn!("packet_receiver disconnected, exiting"); 87 | break; 88 | } 89 | } 90 | maybe_bundle = bundle_receiver.recv() => { 91 | if let Some(bundle) = maybe_bundle { 92 | let failed_sends = Self::forward_bundle(bundle, &bundle_subscriptions).await; 93 | for uuid in failed_sends { 94 | info!("removing bundle_subscriptions uuid: {:?}", uuid); 95 | bundle_subscriptions.lock().unwrap().remove(&uuid); 96 | } 97 | } else { 98 | warn!("bundle_receiver disconnected, exiting"); 99 | break; 100 | } 101 | } 102 | } 103 | } 104 | }) 105 | }) 106 | .unwrap() 107 | } 108 | 109 | async fn forward_packets( 110 | packet_batch: PacketBatch, 111 | packet_subscriptions: &Arc< 112 | Mutex>>>, 113 | >, 114 | ) -> Vec { 115 | let mut failed_sends = Vec::new(); 116 | let subs = packet_subscriptions.lock().unwrap(); 117 | for (uuid, sender) in subs.iter() { 118 | match sender.try_send(Ok(SubscribePacketsResponse { 119 | header: None, 120 | batch: Some(packet_batch.clone()), 121 | })) { 122 | Ok(_) => {} 123 | Err(TrySendError::Closed(_)) => { 124 | failed_sends.push(*uuid); 125 | } 126 | Err(TrySendError::Full(_)) => { 127 | warn!("packet channel full uuid: {:?}", uuid); 128 | } 129 | } 130 | } 131 | failed_sends 132 | } 133 | 134 | async fn forward_bundle( 135 | bundle: BundleUuid, 136 | bundle_subscriptions: &Arc< 137 | Mutex>>>, 138 | >, 139 | ) -> Vec { 140 | let mut failed_sends = Vec::new(); 141 | let subs = bundle_subscriptions.lock().unwrap(); 142 | for (uuid, sender) in subs.iter() { 143 | match sender.try_send(Ok(SubscribeBundlesResponse { 144 | bundles: vec![bundle.clone()], 145 | })) { 146 | Ok(_) => { 147 | info!("bundle forwarded validator uuid: {:?}", uuid); 148 | } 149 | Err(TrySendError::Closed(_)) => { 150 | warn!("bundle channel closed validator uuid: {:?}", uuid); 151 | failed_sends.push(*uuid); 152 | } 153 | Err(TrySendError::Full(_)) => { 154 | warn!("bundle channel full validator uuid: {:?}", uuid); 155 | } 156 | } 157 | } 158 | failed_sends 159 | } 160 | } 161 | 162 | #[tonic::async_trait] 163 | impl BlockEngineValidator for ValidatorServerImpl { 164 | type SubscribePacketsStream = ReceiverStream>; 165 | 166 | async fn subscribe_packets( 167 | &self, 168 | _request: Request, 169 | ) -> Result, Status> { 170 | let (sender, receiver) = channel(1000); 171 | 172 | let uuid = Uuid::new_v4(); 173 | 174 | info!("adding packet_subscriptions uuid: {:?}", uuid); 175 | 176 | self.packet_subscriptions 177 | .lock() 178 | .unwrap() 179 | .insert(uuid, sender); 180 | 181 | Ok(Response::new(ReceiverStream::new(receiver))) 182 | } 183 | 184 | type SubscribeBundlesStream = ReceiverStream>; 185 | 186 | async fn subscribe_bundles( 187 | &self, 188 | _request: Request, 189 | ) -> Result, Status> { 190 | let (sender, receiver) = channel(1000); 191 | 192 | let uuid = Uuid::new_v4(); 193 | 194 | info!("adding bundle_subscriptions uuid: {:?}", uuid); 195 | 196 | self.bundle_subscriptions 197 | .lock() 198 | .unwrap() 199 | .insert(uuid, sender); 200 | 201 | Ok(Response::new(ReceiverStream::new(receiver))) 202 | } 203 | 204 | async fn get_block_builder_fee_info( 205 | &self, 206 | _request: Request, 207 | ) -> Result, Status> { 208 | let response = BlockBuilderFeeInfoResponse { 209 | pubkey: Pubkey::default().to_string(), 210 | commission: 5, 211 | }; 212 | 213 | info!("get_block_builder_fee_info response: {:?}", response); 214 | 215 | Ok(Response::new(BlockBuilderFeeInfoResponse { 216 | pubkey: Pubkey::default().to_string(), 217 | commission: 5, 218 | })) 219 | } 220 | } 221 | --------------------------------------------------------------------------------