├── .gitignore ├── Cargo.lock ├── Makefile ├── README.md ├── contracts ├── ERC20.sol └── IERC20.sol ├── docker-compose.yml ├── grafana ├── .DS_Store └── provisioning │ ├── dashboards │ ├── blocks.json │ ├── dashboard.yml │ ├── transactions.json │ └── up.json │ └── datasources │ └── prometheus_ds.yml ├── infrastructure └── terraform │ ├── explorer.yml │ ├── network.tf │ ├── output.tf │ ├── prometheus_grafana.yml │ ├── provider.tf │ ├── server.yml │ ├── ssh.tf │ ├── terraform.tfvars │ ├── variable.tf │ ├── volumes.tf │ └── web_servers.tf ├── prometheus └── prometheus.yml └── scripts ├── automate_transactions.py └── delete_containers.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .yarn 2 | .yarnrc 3 | block-explorer 4 | zksync-era 5 | infrastructure/terraform/terraform.tfvars 6 | .vscode/ 7 | infrastructure/terraform/.terraform.lock.hcl 8 | infrastructure/terraform/.terraform/ 9 | infrastructure/terraform/terraform.tfstate 10 | infrastructure/terraform/terraform.tfstate.backup 11 | target/ 12 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "Inflector" 7 | version = "0.11.4" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 10 | dependencies = [ 11 | "lazy_static", 12 | "regex", 13 | ] 14 | 15 | [[package]] 16 | name = "addr2line" 17 | version = "0.21.0" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 20 | dependencies = [ 21 | "gimli", 22 | ] 23 | 24 | [[package]] 25 | name = "adler" 26 | version = "1.0.2" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 29 | 30 | [[package]] 31 | name = "aes" 32 | version = "0.8.3" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" 35 | dependencies = [ 36 | "cfg-if", 37 | "cipher", 38 | "cpufeatures", 39 | ] 40 | 41 | [[package]] 42 | name = "aho-corasick" 43 | version = "1.1.2" 44 | source = "registry+https://github.com/rust-lang/crates.io-index" 45 | checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" 46 | dependencies = [ 47 | "memchr", 48 | ] 49 | 50 | [[package]] 51 | name = "anstream" 52 | version = "0.6.4" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" 55 | dependencies = [ 56 | "anstyle", 57 | "anstyle-parse", 58 | "anstyle-query", 59 | "anstyle-wincon", 60 | "colorchoice", 61 | "utf8parse", 62 | ] 63 | 64 | [[package]] 65 | name = "anstyle" 66 | version = "1.0.4" 67 | source = "registry+https://github.com/rust-lang/crates.io-index" 68 | checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" 69 | 70 | [[package]] 71 | name = "anstyle-parse" 72 | version = "0.2.2" 73 | source = "registry+https://github.com/rust-lang/crates.io-index" 74 | checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" 75 | dependencies = [ 76 | "utf8parse", 77 | ] 78 | 79 | [[package]] 80 | name = "anstyle-query" 81 | version = "1.0.0" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" 84 | dependencies = [ 85 | "windows-sys", 86 | ] 87 | 88 | [[package]] 89 | name = "anstyle-wincon" 90 | version = "3.0.1" 91 | source = "registry+https://github.com/rust-lang/crates.io-index" 92 | checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" 93 | dependencies = [ 94 | "anstyle", 95 | "windows-sys", 96 | ] 97 | 98 | [[package]] 99 | name = "arrayvec" 100 | version = "0.7.4" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" 103 | 104 | [[package]] 105 | name = "ascii-canvas" 106 | version = "3.0.0" 107 | source = "registry+https://github.com/rust-lang/crates.io-index" 108 | checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" 109 | dependencies = [ 110 | "term", 111 | ] 112 | 113 | [[package]] 114 | name = "async-trait" 115 | version = "0.1.74" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" 118 | dependencies = [ 119 | "proc-macro2", 120 | "quote", 121 | "syn 2.0.38", 122 | ] 123 | 124 | [[package]] 125 | name = "async_io_stream" 126 | version = "0.3.3" 127 | source = "registry+https://github.com/rust-lang/crates.io-index" 128 | checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" 129 | dependencies = [ 130 | "futures", 131 | "pharos", 132 | "rustc_version", 133 | ] 134 | 135 | [[package]] 136 | name = "auto_impl" 137 | version = "1.1.0" 138 | source = "registry+https://github.com/rust-lang/crates.io-index" 139 | checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" 140 | dependencies = [ 141 | "proc-macro-error", 142 | "proc-macro2", 143 | "quote", 144 | "syn 1.0.109", 145 | ] 146 | 147 | [[package]] 148 | name = "autocfg" 149 | version = "1.1.0" 150 | source = "registry+https://github.com/rust-lang/crates.io-index" 151 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 152 | 153 | [[package]] 154 | name = "backtrace" 155 | version = "0.3.69" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 158 | dependencies = [ 159 | "addr2line", 160 | "cc", 161 | "cfg-if", 162 | "libc", 163 | "miniz_oxide", 164 | "object", 165 | "rustc-demangle", 166 | ] 167 | 168 | [[package]] 169 | name = "base16ct" 170 | version = "0.2.0" 171 | source = "registry+https://github.com/rust-lang/crates.io-index" 172 | checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" 173 | 174 | [[package]] 175 | name = "base64" 176 | version = "0.13.1" 177 | source = "registry+https://github.com/rust-lang/crates.io-index" 178 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 179 | 180 | [[package]] 181 | name = "base64" 182 | version = "0.21.5" 183 | source = "registry+https://github.com/rust-lang/crates.io-index" 184 | checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" 185 | 186 | [[package]] 187 | name = "base64ct" 188 | version = "1.6.0" 189 | source = "registry+https://github.com/rust-lang/crates.io-index" 190 | checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" 191 | 192 | [[package]] 193 | name = "bech32" 194 | version = "0.9.1" 195 | source = "registry+https://github.com/rust-lang/crates.io-index" 196 | checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" 197 | 198 | [[package]] 199 | name = "bit-set" 200 | version = "0.5.3" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 203 | dependencies = [ 204 | "bit-vec", 205 | ] 206 | 207 | [[package]] 208 | name = "bit-vec" 209 | version = "0.6.3" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 212 | 213 | [[package]] 214 | name = "bitflags" 215 | version = "1.3.2" 216 | source = "registry+https://github.com/rust-lang/crates.io-index" 217 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 218 | 219 | [[package]] 220 | name = "bitflags" 221 | version = "2.4.1" 222 | source = "registry+https://github.com/rust-lang/crates.io-index" 223 | checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" 224 | 225 | [[package]] 226 | name = "bitvec" 227 | version = "1.0.1" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" 230 | dependencies = [ 231 | "funty", 232 | "radium", 233 | "tap", 234 | "wyz", 235 | ] 236 | 237 | [[package]] 238 | name = "block-buffer" 239 | version = "0.9.0" 240 | source = "registry+https://github.com/rust-lang/crates.io-index" 241 | checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 242 | dependencies = [ 243 | "generic-array", 244 | ] 245 | 246 | [[package]] 247 | name = "block-buffer" 248 | version = "0.10.4" 249 | source = "registry+https://github.com/rust-lang/crates.io-index" 250 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 251 | dependencies = [ 252 | "generic-array", 253 | ] 254 | 255 | [[package]] 256 | name = "bs58" 257 | version = "0.5.0" 258 | source = "registry+https://github.com/rust-lang/crates.io-index" 259 | checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" 260 | dependencies = [ 261 | "sha2 0.10.8", 262 | "tinyvec", 263 | ] 264 | 265 | [[package]] 266 | name = "bumpalo" 267 | version = "3.14.0" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" 270 | 271 | [[package]] 272 | name = "byte-slice-cast" 273 | version = "1.2.2" 274 | source = "registry+https://github.com/rust-lang/crates.io-index" 275 | checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" 276 | 277 | [[package]] 278 | name = "byteorder" 279 | version = "1.5.0" 280 | source = "registry+https://github.com/rust-lang/crates.io-index" 281 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 282 | 283 | [[package]] 284 | name = "bytes" 285 | version = "1.5.0" 286 | source = "registry+https://github.com/rust-lang/crates.io-index" 287 | checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 288 | dependencies = [ 289 | "serde", 290 | ] 291 | 292 | [[package]] 293 | name = "bzip2" 294 | version = "0.4.4" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" 297 | dependencies = [ 298 | "bzip2-sys", 299 | "libc", 300 | ] 301 | 302 | [[package]] 303 | name = "bzip2-sys" 304 | version = "0.1.11+1.0.8" 305 | source = "registry+https://github.com/rust-lang/crates.io-index" 306 | checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" 307 | dependencies = [ 308 | "cc", 309 | "libc", 310 | "pkg-config", 311 | ] 312 | 313 | [[package]] 314 | name = "camino" 315 | version = "1.1.6" 316 | source = "registry+https://github.com/rust-lang/crates.io-index" 317 | checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" 318 | dependencies = [ 319 | "serde", 320 | ] 321 | 322 | [[package]] 323 | name = "cargo-platform" 324 | version = "0.1.4" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" 327 | dependencies = [ 328 | "serde", 329 | ] 330 | 331 | [[package]] 332 | name = "cargo_metadata" 333 | version = "0.17.0" 334 | source = "registry+https://github.com/rust-lang/crates.io-index" 335 | checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" 336 | dependencies = [ 337 | "camino", 338 | "cargo-platform", 339 | "semver", 340 | "serde", 341 | "serde_json", 342 | "thiserror", 343 | ] 344 | 345 | [[package]] 346 | name = "cc" 347 | version = "1.0.83" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 350 | dependencies = [ 351 | "jobserver", 352 | "libc", 353 | ] 354 | 355 | [[package]] 356 | name = "cfg-if" 357 | version = "1.0.0" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 360 | 361 | [[package]] 362 | name = "chrono" 363 | version = "0.4.31" 364 | source = "registry+https://github.com/rust-lang/crates.io-index" 365 | checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" 366 | dependencies = [ 367 | "num-traits", 368 | ] 369 | 370 | [[package]] 371 | name = "cipher" 372 | version = "0.4.4" 373 | source = "registry+https://github.com/rust-lang/crates.io-index" 374 | checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 375 | dependencies = [ 376 | "crypto-common", 377 | "inout", 378 | ] 379 | 380 | [[package]] 381 | name = "clap" 382 | version = "4.4.7" 383 | source = "registry+https://github.com/rust-lang/crates.io-index" 384 | checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" 385 | dependencies = [ 386 | "clap_builder", 387 | "clap_derive", 388 | ] 389 | 390 | [[package]] 391 | name = "clap_builder" 392 | version = "4.4.7" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" 395 | dependencies = [ 396 | "anstream", 397 | "anstyle", 398 | "clap_lex", 399 | "strsim", 400 | ] 401 | 402 | [[package]] 403 | name = "clap_derive" 404 | version = "4.4.7" 405 | source = "registry+https://github.com/rust-lang/crates.io-index" 406 | checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" 407 | dependencies = [ 408 | "heck", 409 | "proc-macro2", 410 | "quote", 411 | "syn 2.0.38", 412 | ] 413 | 414 | [[package]] 415 | name = "clap_lex" 416 | version = "0.6.0" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" 419 | 420 | [[package]] 421 | name = "coins-bip32" 422 | version = "0.8.7" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" 425 | dependencies = [ 426 | "bs58", 427 | "coins-core", 428 | "digest 0.10.7", 429 | "hmac", 430 | "k256", 431 | "serde", 432 | "sha2 0.10.8", 433 | "thiserror", 434 | ] 435 | 436 | [[package]] 437 | name = "coins-bip39" 438 | version = "0.8.7" 439 | source = "registry+https://github.com/rust-lang/crates.io-index" 440 | checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" 441 | dependencies = [ 442 | "bitvec", 443 | "coins-bip32", 444 | "hmac", 445 | "once_cell", 446 | "pbkdf2 0.12.2", 447 | "rand", 448 | "sha2 0.10.8", 449 | "thiserror", 450 | ] 451 | 452 | [[package]] 453 | name = "coins-core" 454 | version = "0.8.7" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" 457 | dependencies = [ 458 | "base64 0.21.5", 459 | "bech32", 460 | "bs58", 461 | "digest 0.10.7", 462 | "generic-array", 463 | "hex", 464 | "ripemd", 465 | "serde", 466 | "serde_derive", 467 | "sha2 0.10.8", 468 | "sha3", 469 | "thiserror", 470 | ] 471 | 472 | [[package]] 473 | name = "colorchoice" 474 | version = "1.0.0" 475 | source = "registry+https://github.com/rust-lang/crates.io-index" 476 | checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" 477 | 478 | [[package]] 479 | name = "const-hex" 480 | version = "1.10.0" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "a5104de16b218eddf8e34ffe2f86f74bfa4e61e95a1b89732fccf6325efd0557" 483 | dependencies = [ 484 | "cfg-if", 485 | "cpufeatures", 486 | "hex", 487 | "proptest", 488 | "serde", 489 | ] 490 | 491 | [[package]] 492 | name = "const-oid" 493 | version = "0.9.5" 494 | source = "registry+https://github.com/rust-lang/crates.io-index" 495 | checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" 496 | 497 | [[package]] 498 | name = "constant_time_eq" 499 | version = "0.1.5" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" 502 | 503 | [[package]] 504 | name = "core-foundation" 505 | version = "0.9.3" 506 | source = "registry+https://github.com/rust-lang/crates.io-index" 507 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 508 | dependencies = [ 509 | "core-foundation-sys", 510 | "libc", 511 | ] 512 | 513 | [[package]] 514 | name = "core-foundation-sys" 515 | version = "0.8.4" 516 | source = "registry+https://github.com/rust-lang/crates.io-index" 517 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" 518 | 519 | [[package]] 520 | name = "cpufeatures" 521 | version = "0.2.11" 522 | source = "registry+https://github.com/rust-lang/crates.io-index" 523 | checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" 524 | dependencies = [ 525 | "libc", 526 | ] 527 | 528 | [[package]] 529 | name = "crc32fast" 530 | version = "1.3.2" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 533 | dependencies = [ 534 | "cfg-if", 535 | ] 536 | 537 | [[package]] 538 | name = "crossbeam-deque" 539 | version = "0.8.3" 540 | source = "registry+https://github.com/rust-lang/crates.io-index" 541 | checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" 542 | dependencies = [ 543 | "cfg-if", 544 | "crossbeam-epoch", 545 | "crossbeam-utils", 546 | ] 547 | 548 | [[package]] 549 | name = "crossbeam-epoch" 550 | version = "0.9.15" 551 | source = "registry+https://github.com/rust-lang/crates.io-index" 552 | checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" 553 | dependencies = [ 554 | "autocfg", 555 | "cfg-if", 556 | "crossbeam-utils", 557 | "memoffset", 558 | "scopeguard", 559 | ] 560 | 561 | [[package]] 562 | name = "crossbeam-utils" 563 | version = "0.8.16" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" 566 | dependencies = [ 567 | "cfg-if", 568 | ] 569 | 570 | [[package]] 571 | name = "crunchy" 572 | version = "0.2.2" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 575 | 576 | [[package]] 577 | name = "crypto-bigint" 578 | version = "0.5.3" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" 581 | dependencies = [ 582 | "generic-array", 583 | "rand_core", 584 | "subtle", 585 | "zeroize", 586 | ] 587 | 588 | [[package]] 589 | name = "crypto-common" 590 | version = "0.1.6" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 593 | dependencies = [ 594 | "generic-array", 595 | "typenum", 596 | ] 597 | 598 | [[package]] 599 | name = "ctr" 600 | version = "0.9.2" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" 603 | dependencies = [ 604 | "cipher", 605 | ] 606 | 607 | [[package]] 608 | name = "data-encoding" 609 | version = "2.4.0" 610 | source = "registry+https://github.com/rust-lang/crates.io-index" 611 | checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" 612 | 613 | [[package]] 614 | name = "der" 615 | version = "0.7.8" 616 | source = "registry+https://github.com/rust-lang/crates.io-index" 617 | checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" 618 | dependencies = [ 619 | "const-oid", 620 | "zeroize", 621 | ] 622 | 623 | [[package]] 624 | name = "deranged" 625 | version = "0.3.9" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" 628 | dependencies = [ 629 | "powerfmt", 630 | ] 631 | 632 | [[package]] 633 | name = "derive_more" 634 | version = "0.99.17" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 637 | dependencies = [ 638 | "proc-macro2", 639 | "quote", 640 | "syn 1.0.109", 641 | ] 642 | 643 | [[package]] 644 | name = "diff" 645 | version = "0.1.13" 646 | source = "registry+https://github.com/rust-lang/crates.io-index" 647 | checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" 648 | 649 | [[package]] 650 | name = "digest" 651 | version = "0.9.0" 652 | source = "registry+https://github.com/rust-lang/crates.io-index" 653 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 654 | dependencies = [ 655 | "generic-array", 656 | ] 657 | 658 | [[package]] 659 | name = "digest" 660 | version = "0.10.7" 661 | source = "registry+https://github.com/rust-lang/crates.io-index" 662 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 663 | dependencies = [ 664 | "block-buffer 0.10.4", 665 | "const-oid", 666 | "crypto-common", 667 | "subtle", 668 | ] 669 | 670 | [[package]] 671 | name = "dirs" 672 | version = "5.0.1" 673 | source = "registry+https://github.com/rust-lang/crates.io-index" 674 | checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" 675 | dependencies = [ 676 | "dirs-sys", 677 | ] 678 | 679 | [[package]] 680 | name = "dirs-next" 681 | version = "2.0.0" 682 | source = "registry+https://github.com/rust-lang/crates.io-index" 683 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" 684 | dependencies = [ 685 | "cfg-if", 686 | "dirs-sys-next", 687 | ] 688 | 689 | [[package]] 690 | name = "dirs-sys" 691 | version = "0.4.1" 692 | source = "registry+https://github.com/rust-lang/crates.io-index" 693 | checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" 694 | dependencies = [ 695 | "libc", 696 | "option-ext", 697 | "redox_users", 698 | "windows-sys", 699 | ] 700 | 701 | [[package]] 702 | name = "dirs-sys-next" 703 | version = "0.1.2" 704 | source = "registry+https://github.com/rust-lang/crates.io-index" 705 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 706 | dependencies = [ 707 | "libc", 708 | "redox_users", 709 | "winapi", 710 | ] 711 | 712 | [[package]] 713 | name = "dunce" 714 | version = "1.0.4" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" 717 | 718 | [[package]] 719 | name = "ecdsa" 720 | version = "0.16.8" 721 | source = "registry+https://github.com/rust-lang/crates.io-index" 722 | checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" 723 | dependencies = [ 724 | "der", 725 | "digest 0.10.7", 726 | "elliptic-curve", 727 | "rfc6979", 728 | "signature", 729 | "spki", 730 | ] 731 | 732 | [[package]] 733 | name = "either" 734 | version = "1.9.0" 735 | source = "registry+https://github.com/rust-lang/crates.io-index" 736 | checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" 737 | 738 | [[package]] 739 | name = "elliptic-curve" 740 | version = "0.13.6" 741 | source = "registry+https://github.com/rust-lang/crates.io-index" 742 | checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" 743 | dependencies = [ 744 | "base16ct", 745 | "crypto-bigint", 746 | "digest 0.10.7", 747 | "ff", 748 | "generic-array", 749 | "group", 750 | "pkcs8", 751 | "rand_core", 752 | "sec1", 753 | "subtle", 754 | "zeroize", 755 | ] 756 | 757 | [[package]] 758 | name = "ena" 759 | version = "0.14.2" 760 | source = "registry+https://github.com/rust-lang/crates.io-index" 761 | checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" 762 | dependencies = [ 763 | "log", 764 | ] 765 | 766 | [[package]] 767 | name = "encoding_rs" 768 | version = "0.8.33" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 771 | dependencies = [ 772 | "cfg-if", 773 | ] 774 | 775 | [[package]] 776 | name = "enr" 777 | version = "0.9.1" 778 | source = "registry+https://github.com/rust-lang/crates.io-index" 779 | checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" 780 | dependencies = [ 781 | "base64 0.21.5", 782 | "bytes", 783 | "hex", 784 | "k256", 785 | "log", 786 | "rand", 787 | "rlp", 788 | "serde", 789 | "sha3", 790 | "zeroize", 791 | ] 792 | 793 | [[package]] 794 | name = "env_logger" 795 | version = "0.10.0" 796 | source = "registry+https://github.com/rust-lang/crates.io-index" 797 | checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" 798 | dependencies = [ 799 | "humantime", 800 | "is-terminal", 801 | "log", 802 | "regex", 803 | "termcolor", 804 | ] 805 | 806 | [[package]] 807 | name = "equivalent" 808 | version = "1.0.1" 809 | source = "registry+https://github.com/rust-lang/crates.io-index" 810 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 811 | 812 | [[package]] 813 | name = "errno" 814 | version = "0.3.5" 815 | source = "registry+https://github.com/rust-lang/crates.io-index" 816 | checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" 817 | dependencies = [ 818 | "libc", 819 | "windows-sys", 820 | ] 821 | 822 | [[package]] 823 | name = "eth-keystore" 824 | version = "0.5.0" 825 | source = "registry+https://github.com/rust-lang/crates.io-index" 826 | checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" 827 | dependencies = [ 828 | "aes", 829 | "ctr", 830 | "digest 0.10.7", 831 | "hex", 832 | "hmac", 833 | "pbkdf2 0.11.0", 834 | "rand", 835 | "scrypt", 836 | "serde", 837 | "serde_json", 838 | "sha2 0.10.8", 839 | "sha3", 840 | "thiserror", 841 | "uuid", 842 | ] 843 | 844 | [[package]] 845 | name = "ethabi" 846 | version = "18.0.0" 847 | source = "registry+https://github.com/rust-lang/crates.io-index" 848 | checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" 849 | dependencies = [ 850 | "ethereum-types", 851 | "hex", 852 | "once_cell", 853 | "regex", 854 | "serde", 855 | "serde_json", 856 | "sha3", 857 | "thiserror", 858 | "uint", 859 | ] 860 | 861 | [[package]] 862 | name = "ethbloom" 863 | version = "0.13.0" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" 866 | dependencies = [ 867 | "crunchy", 868 | "fixed-hash", 869 | "impl-codec", 870 | "impl-rlp", 871 | "impl-serde", 872 | "scale-info", 873 | "tiny-keccak", 874 | ] 875 | 876 | [[package]] 877 | name = "ethereum-types" 878 | version = "0.14.1" 879 | source = "registry+https://github.com/rust-lang/crates.io-index" 880 | checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" 881 | dependencies = [ 882 | "ethbloom", 883 | "fixed-hash", 884 | "impl-codec", 885 | "impl-rlp", 886 | "impl-serde", 887 | "primitive-types", 888 | "scale-info", 889 | "uint", 890 | ] 891 | 892 | [[package]] 893 | name = "ethers" 894 | version = "2.0.10" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | checksum = "1ad13497f6e0a24292fc7b408e30d22fe9dc262da1f40d7b542c3a44e7fc0476" 897 | dependencies = [ 898 | "ethers-addressbook", 899 | "ethers-contract", 900 | "ethers-core", 901 | "ethers-etherscan", 902 | "ethers-middleware", 903 | "ethers-providers", 904 | "ethers-signers", 905 | "ethers-solc", 906 | ] 907 | 908 | [[package]] 909 | name = "ethers-addressbook" 910 | version = "2.0.10" 911 | source = "registry+https://github.com/rust-lang/crates.io-index" 912 | checksum = "c6e9e8acd0ed348403cc73a670c24daba3226c40b98dc1a41903766b3ab6240a" 913 | dependencies = [ 914 | "ethers-core", 915 | "once_cell", 916 | "serde", 917 | "serde_json", 918 | ] 919 | 920 | [[package]] 921 | name = "ethers-contract" 922 | version = "2.0.10" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "d79269278125006bb0552349c03593ffa9702112ca88bc7046cc669f148fb47c" 925 | dependencies = [ 926 | "const-hex", 927 | "ethers-contract-abigen", 928 | "ethers-contract-derive", 929 | "ethers-core", 930 | "ethers-providers", 931 | "futures-util", 932 | "once_cell", 933 | "pin-project", 934 | "serde", 935 | "serde_json", 936 | "thiserror", 937 | ] 938 | 939 | [[package]] 940 | name = "ethers-contract-abigen" 941 | version = "2.0.10" 942 | source = "registry+https://github.com/rust-lang/crates.io-index" 943 | checksum = "ce95a43c939b2e4e2f3191c5ad4a1f279780b8a39139c9905b43a7433531e2ab" 944 | dependencies = [ 945 | "Inflector", 946 | "const-hex", 947 | "dunce", 948 | "ethers-core", 949 | "ethers-etherscan", 950 | "eyre", 951 | "prettyplease", 952 | "proc-macro2", 953 | "quote", 954 | "regex", 955 | "reqwest", 956 | "serde", 957 | "serde_json", 958 | "syn 2.0.38", 959 | "toml", 960 | "walkdir", 961 | ] 962 | 963 | [[package]] 964 | name = "ethers-contract-derive" 965 | version = "2.0.10" 966 | source = "registry+https://github.com/rust-lang/crates.io-index" 967 | checksum = "8e9ce44906fc871b3ee8c69a695ca7ec7f70e50cb379c9b9cb5e532269e492f6" 968 | dependencies = [ 969 | "Inflector", 970 | "const-hex", 971 | "ethers-contract-abigen", 972 | "ethers-core", 973 | "proc-macro2", 974 | "quote", 975 | "serde_json", 976 | "syn 2.0.38", 977 | ] 978 | 979 | [[package]] 980 | name = "ethers-core" 981 | version = "2.0.10" 982 | source = "registry+https://github.com/rust-lang/crates.io-index" 983 | checksum = "c0a17f0708692024db9956b31d7a20163607d2745953f5ae8125ab368ba280ad" 984 | dependencies = [ 985 | "arrayvec", 986 | "bytes", 987 | "cargo_metadata", 988 | "chrono", 989 | "const-hex", 990 | "elliptic-curve", 991 | "ethabi", 992 | "generic-array", 993 | "k256", 994 | "num_enum", 995 | "once_cell", 996 | "open-fastrlp", 997 | "rand", 998 | "rlp", 999 | "serde", 1000 | "serde_json", 1001 | "strum", 1002 | "syn 2.0.38", 1003 | "tempfile", 1004 | "thiserror", 1005 | "tiny-keccak", 1006 | "unicode-xid", 1007 | ] 1008 | 1009 | [[package]] 1010 | name = "ethers-etherscan" 1011 | version = "2.0.10" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "0e53451ea4a8128fbce33966da71132cf9e1040dcfd2a2084fd7733ada7b2045" 1014 | dependencies = [ 1015 | "ethers-core", 1016 | "reqwest", 1017 | "semver", 1018 | "serde", 1019 | "serde_json", 1020 | "thiserror", 1021 | "tracing", 1022 | ] 1023 | 1024 | [[package]] 1025 | name = "ethers-middleware" 1026 | version = "2.0.10" 1027 | source = "registry+https://github.com/rust-lang/crates.io-index" 1028 | checksum = "473f1ccd0c793871bbc248729fa8df7e6d2981d6226e4343e3bbaa9281074d5d" 1029 | dependencies = [ 1030 | "async-trait", 1031 | "auto_impl", 1032 | "ethers-contract", 1033 | "ethers-core", 1034 | "ethers-etherscan", 1035 | "ethers-providers", 1036 | "ethers-signers", 1037 | "futures-channel", 1038 | "futures-locks", 1039 | "futures-util", 1040 | "instant", 1041 | "reqwest", 1042 | "serde", 1043 | "serde_json", 1044 | "thiserror", 1045 | "tokio", 1046 | "tracing", 1047 | "tracing-futures", 1048 | "url", 1049 | ] 1050 | 1051 | [[package]] 1052 | name = "ethers-providers" 1053 | version = "2.0.10" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "6838fa110e57d572336178b7c79e94ff88ef976306852d8cb87d9e5b1fc7c0b5" 1056 | dependencies = [ 1057 | "async-trait", 1058 | "auto_impl", 1059 | "base64 0.21.5", 1060 | "bytes", 1061 | "const-hex", 1062 | "enr", 1063 | "ethers-core", 1064 | "futures-core", 1065 | "futures-timer", 1066 | "futures-util", 1067 | "hashers", 1068 | "http", 1069 | "instant", 1070 | "jsonwebtoken", 1071 | "once_cell", 1072 | "pin-project", 1073 | "reqwest", 1074 | "serde", 1075 | "serde_json", 1076 | "thiserror", 1077 | "tokio", 1078 | "tokio-tungstenite", 1079 | "tracing", 1080 | "tracing-futures", 1081 | "url", 1082 | "wasm-bindgen", 1083 | "wasm-bindgen-futures", 1084 | "web-sys", 1085 | "ws_stream_wasm", 1086 | ] 1087 | 1088 | [[package]] 1089 | name = "ethers-signers" 1090 | version = "2.0.10" 1091 | source = "registry+https://github.com/rust-lang/crates.io-index" 1092 | checksum = "5ea44bec930f12292866166f9ddbea6aa76304850e4d8dcd66dc492b43d00ff1" 1093 | dependencies = [ 1094 | "async-trait", 1095 | "coins-bip32", 1096 | "coins-bip39", 1097 | "const-hex", 1098 | "elliptic-curve", 1099 | "eth-keystore", 1100 | "ethers-core", 1101 | "rand", 1102 | "sha2 0.10.8", 1103 | "thiserror", 1104 | "tracing", 1105 | ] 1106 | 1107 | [[package]] 1108 | name = "ethers-solc" 1109 | version = "2.0.10" 1110 | source = "registry+https://github.com/rust-lang/crates.io-index" 1111 | checksum = "de34e484e7ae3cab99fbfd013d6c5dc7f9013676a4e0e414d8b12e1213e8b3ba" 1112 | dependencies = [ 1113 | "cfg-if", 1114 | "const-hex", 1115 | "dirs", 1116 | "dunce", 1117 | "ethers-core", 1118 | "glob", 1119 | "home", 1120 | "md-5", 1121 | "num_cpus", 1122 | "once_cell", 1123 | "path-slash", 1124 | "rayon", 1125 | "regex", 1126 | "semver", 1127 | "serde", 1128 | "serde_json", 1129 | "solang-parser", 1130 | "svm-rs", 1131 | "thiserror", 1132 | "tiny-keccak", 1133 | "tokio", 1134 | "tracing", 1135 | "walkdir", 1136 | "yansi", 1137 | ] 1138 | 1139 | [[package]] 1140 | name = "eyre" 1141 | version = "0.6.8" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" 1144 | dependencies = [ 1145 | "indenter", 1146 | "once_cell", 1147 | ] 1148 | 1149 | [[package]] 1150 | name = "fastrand" 1151 | version = "2.0.1" 1152 | source = "registry+https://github.com/rust-lang/crates.io-index" 1153 | checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" 1154 | 1155 | [[package]] 1156 | name = "ff" 1157 | version = "0.13.0" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" 1160 | dependencies = [ 1161 | "rand_core", 1162 | "subtle", 1163 | ] 1164 | 1165 | [[package]] 1166 | name = "fixed-hash" 1167 | version = "0.8.0" 1168 | source = "registry+https://github.com/rust-lang/crates.io-index" 1169 | checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" 1170 | dependencies = [ 1171 | "byteorder", 1172 | "rand", 1173 | "rustc-hex", 1174 | "static_assertions", 1175 | ] 1176 | 1177 | [[package]] 1178 | name = "fixedbitset" 1179 | version = "0.4.2" 1180 | source = "registry+https://github.com/rust-lang/crates.io-index" 1181 | checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" 1182 | 1183 | [[package]] 1184 | name = "flate2" 1185 | version = "1.0.28" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" 1188 | dependencies = [ 1189 | "crc32fast", 1190 | "miniz_oxide", 1191 | ] 1192 | 1193 | [[package]] 1194 | name = "fnv" 1195 | version = "1.0.7" 1196 | source = "registry+https://github.com/rust-lang/crates.io-index" 1197 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1198 | 1199 | [[package]] 1200 | name = "form_urlencoded" 1201 | version = "1.2.0" 1202 | source = "registry+https://github.com/rust-lang/crates.io-index" 1203 | checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" 1204 | dependencies = [ 1205 | "percent-encoding", 1206 | ] 1207 | 1208 | [[package]] 1209 | name = "fs2" 1210 | version = "0.4.3" 1211 | source = "registry+https://github.com/rust-lang/crates.io-index" 1212 | checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" 1213 | dependencies = [ 1214 | "libc", 1215 | "winapi", 1216 | ] 1217 | 1218 | [[package]] 1219 | name = "funty" 1220 | version = "2.0.0" 1221 | source = "registry+https://github.com/rust-lang/crates.io-index" 1222 | checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" 1223 | 1224 | [[package]] 1225 | name = "futures" 1226 | version = "0.3.29" 1227 | source = "registry+https://github.com/rust-lang/crates.io-index" 1228 | checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" 1229 | dependencies = [ 1230 | "futures-channel", 1231 | "futures-core", 1232 | "futures-executor", 1233 | "futures-io", 1234 | "futures-sink", 1235 | "futures-task", 1236 | "futures-util", 1237 | ] 1238 | 1239 | [[package]] 1240 | name = "futures-channel" 1241 | version = "0.3.29" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" 1244 | dependencies = [ 1245 | "futures-core", 1246 | "futures-sink", 1247 | ] 1248 | 1249 | [[package]] 1250 | name = "futures-core" 1251 | version = "0.3.29" 1252 | source = "registry+https://github.com/rust-lang/crates.io-index" 1253 | checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" 1254 | 1255 | [[package]] 1256 | name = "futures-executor" 1257 | version = "0.3.29" 1258 | source = "registry+https://github.com/rust-lang/crates.io-index" 1259 | checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" 1260 | dependencies = [ 1261 | "futures-core", 1262 | "futures-task", 1263 | "futures-util", 1264 | ] 1265 | 1266 | [[package]] 1267 | name = "futures-io" 1268 | version = "0.3.29" 1269 | source = "registry+https://github.com/rust-lang/crates.io-index" 1270 | checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" 1271 | 1272 | [[package]] 1273 | name = "futures-locks" 1274 | version = "0.7.1" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" 1277 | dependencies = [ 1278 | "futures-channel", 1279 | "futures-task", 1280 | ] 1281 | 1282 | [[package]] 1283 | name = "futures-macro" 1284 | version = "0.3.29" 1285 | source = "registry+https://github.com/rust-lang/crates.io-index" 1286 | checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" 1287 | dependencies = [ 1288 | "proc-macro2", 1289 | "quote", 1290 | "syn 2.0.38", 1291 | ] 1292 | 1293 | [[package]] 1294 | name = "futures-sink" 1295 | version = "0.3.29" 1296 | source = "registry+https://github.com/rust-lang/crates.io-index" 1297 | checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" 1298 | 1299 | [[package]] 1300 | name = "futures-task" 1301 | version = "0.3.29" 1302 | source = "registry+https://github.com/rust-lang/crates.io-index" 1303 | checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" 1304 | 1305 | [[package]] 1306 | name = "futures-timer" 1307 | version = "3.0.2" 1308 | source = "registry+https://github.com/rust-lang/crates.io-index" 1309 | checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" 1310 | dependencies = [ 1311 | "gloo-timers", 1312 | "send_wrapper 0.4.0", 1313 | ] 1314 | 1315 | [[package]] 1316 | name = "futures-util" 1317 | version = "0.3.29" 1318 | source = "registry+https://github.com/rust-lang/crates.io-index" 1319 | checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" 1320 | dependencies = [ 1321 | "futures-channel", 1322 | "futures-core", 1323 | "futures-io", 1324 | "futures-macro", 1325 | "futures-sink", 1326 | "futures-task", 1327 | "memchr", 1328 | "pin-project-lite", 1329 | "pin-utils", 1330 | "slab", 1331 | ] 1332 | 1333 | [[package]] 1334 | name = "fxhash" 1335 | version = "0.2.1" 1336 | source = "registry+https://github.com/rust-lang/crates.io-index" 1337 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 1338 | dependencies = [ 1339 | "byteorder", 1340 | ] 1341 | 1342 | [[package]] 1343 | name = "generic-array" 1344 | version = "0.14.7" 1345 | source = "registry+https://github.com/rust-lang/crates.io-index" 1346 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1347 | dependencies = [ 1348 | "typenum", 1349 | "version_check", 1350 | "zeroize", 1351 | ] 1352 | 1353 | [[package]] 1354 | name = "getrandom" 1355 | version = "0.2.10" 1356 | source = "registry+https://github.com/rust-lang/crates.io-index" 1357 | checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" 1358 | dependencies = [ 1359 | "cfg-if", 1360 | "libc", 1361 | "wasi", 1362 | ] 1363 | 1364 | [[package]] 1365 | name = "gimli" 1366 | version = "0.28.0" 1367 | source = "registry+https://github.com/rust-lang/crates.io-index" 1368 | checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" 1369 | 1370 | [[package]] 1371 | name = "glob" 1372 | version = "0.3.1" 1373 | source = "registry+https://github.com/rust-lang/crates.io-index" 1374 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 1375 | 1376 | [[package]] 1377 | name = "gloo-timers" 1378 | version = "0.2.6" 1379 | source = "registry+https://github.com/rust-lang/crates.io-index" 1380 | checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" 1381 | dependencies = [ 1382 | "futures-channel", 1383 | "futures-core", 1384 | "js-sys", 1385 | "wasm-bindgen", 1386 | ] 1387 | 1388 | [[package]] 1389 | name = "group" 1390 | version = "0.13.0" 1391 | source = "registry+https://github.com/rust-lang/crates.io-index" 1392 | checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" 1393 | dependencies = [ 1394 | "ff", 1395 | "rand_core", 1396 | "subtle", 1397 | ] 1398 | 1399 | [[package]] 1400 | name = "h2" 1401 | version = "0.3.21" 1402 | source = "registry+https://github.com/rust-lang/crates.io-index" 1403 | checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" 1404 | dependencies = [ 1405 | "bytes", 1406 | "fnv", 1407 | "futures-core", 1408 | "futures-sink", 1409 | "futures-util", 1410 | "http", 1411 | "indexmap 1.9.3", 1412 | "slab", 1413 | "tokio", 1414 | "tokio-util", 1415 | "tracing", 1416 | ] 1417 | 1418 | [[package]] 1419 | name = "hashbrown" 1420 | version = "0.12.3" 1421 | source = "registry+https://github.com/rust-lang/crates.io-index" 1422 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1423 | 1424 | [[package]] 1425 | name = "hashbrown" 1426 | version = "0.14.2" 1427 | source = "registry+https://github.com/rust-lang/crates.io-index" 1428 | checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" 1429 | 1430 | [[package]] 1431 | name = "hashers" 1432 | version = "1.0.1" 1433 | source = "registry+https://github.com/rust-lang/crates.io-index" 1434 | checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" 1435 | dependencies = [ 1436 | "fxhash", 1437 | ] 1438 | 1439 | [[package]] 1440 | name = "heck" 1441 | version = "0.4.1" 1442 | source = "registry+https://github.com/rust-lang/crates.io-index" 1443 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1444 | 1445 | [[package]] 1446 | name = "hermit-abi" 1447 | version = "0.3.3" 1448 | source = "registry+https://github.com/rust-lang/crates.io-index" 1449 | checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" 1450 | 1451 | [[package]] 1452 | name = "hex" 1453 | version = "0.4.3" 1454 | source = "registry+https://github.com/rust-lang/crates.io-index" 1455 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1456 | 1457 | [[package]] 1458 | name = "hmac" 1459 | version = "0.12.1" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1462 | dependencies = [ 1463 | "digest 0.10.7", 1464 | ] 1465 | 1466 | [[package]] 1467 | name = "home" 1468 | version = "0.5.5" 1469 | source = "registry+https://github.com/rust-lang/crates.io-index" 1470 | checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" 1471 | dependencies = [ 1472 | "windows-sys", 1473 | ] 1474 | 1475 | [[package]] 1476 | name = "http" 1477 | version = "0.2.9" 1478 | source = "registry+https://github.com/rust-lang/crates.io-index" 1479 | checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" 1480 | dependencies = [ 1481 | "bytes", 1482 | "fnv", 1483 | "itoa", 1484 | ] 1485 | 1486 | [[package]] 1487 | name = "http-body" 1488 | version = "0.4.5" 1489 | source = "registry+https://github.com/rust-lang/crates.io-index" 1490 | checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" 1491 | dependencies = [ 1492 | "bytes", 1493 | "http", 1494 | "pin-project-lite", 1495 | ] 1496 | 1497 | [[package]] 1498 | name = "httparse" 1499 | version = "1.8.0" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 1502 | 1503 | [[package]] 1504 | name = "httpdate" 1505 | version = "1.0.3" 1506 | source = "registry+https://github.com/rust-lang/crates.io-index" 1507 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 1508 | 1509 | [[package]] 1510 | name = "humantime" 1511 | version = "2.1.0" 1512 | source = "registry+https://github.com/rust-lang/crates.io-index" 1513 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 1514 | 1515 | [[package]] 1516 | name = "hyper" 1517 | version = "0.14.27" 1518 | source = "registry+https://github.com/rust-lang/crates.io-index" 1519 | checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" 1520 | dependencies = [ 1521 | "bytes", 1522 | "futures-channel", 1523 | "futures-core", 1524 | "futures-util", 1525 | "h2", 1526 | "http", 1527 | "http-body", 1528 | "httparse", 1529 | "httpdate", 1530 | "itoa", 1531 | "pin-project-lite", 1532 | "socket2 0.4.10", 1533 | "tokio", 1534 | "tower-service", 1535 | "tracing", 1536 | "want", 1537 | ] 1538 | 1539 | [[package]] 1540 | name = "hyper-rustls" 1541 | version = "0.24.2" 1542 | source = "registry+https://github.com/rust-lang/crates.io-index" 1543 | checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 1544 | dependencies = [ 1545 | "futures-util", 1546 | "http", 1547 | "hyper", 1548 | "rustls", 1549 | "tokio", 1550 | "tokio-rustls", 1551 | ] 1552 | 1553 | [[package]] 1554 | name = "idna" 1555 | version = "0.4.0" 1556 | source = "registry+https://github.com/rust-lang/crates.io-index" 1557 | checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" 1558 | dependencies = [ 1559 | "unicode-bidi", 1560 | "unicode-normalization", 1561 | ] 1562 | 1563 | [[package]] 1564 | name = "impl-codec" 1565 | version = "0.6.0" 1566 | source = "registry+https://github.com/rust-lang/crates.io-index" 1567 | checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" 1568 | dependencies = [ 1569 | "parity-scale-codec", 1570 | ] 1571 | 1572 | [[package]] 1573 | name = "impl-rlp" 1574 | version = "0.3.0" 1575 | source = "registry+https://github.com/rust-lang/crates.io-index" 1576 | checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" 1577 | dependencies = [ 1578 | "rlp", 1579 | ] 1580 | 1581 | [[package]] 1582 | name = "impl-serde" 1583 | version = "0.4.0" 1584 | source = "registry+https://github.com/rust-lang/crates.io-index" 1585 | checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" 1586 | dependencies = [ 1587 | "serde", 1588 | ] 1589 | 1590 | [[package]] 1591 | name = "impl-trait-for-tuples" 1592 | version = "0.2.2" 1593 | source = "registry+https://github.com/rust-lang/crates.io-index" 1594 | checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" 1595 | dependencies = [ 1596 | "proc-macro2", 1597 | "quote", 1598 | "syn 1.0.109", 1599 | ] 1600 | 1601 | [[package]] 1602 | name = "indenter" 1603 | version = "0.3.3" 1604 | source = "registry+https://github.com/rust-lang/crates.io-index" 1605 | checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" 1606 | 1607 | [[package]] 1608 | name = "indexmap" 1609 | version = "1.9.3" 1610 | source = "registry+https://github.com/rust-lang/crates.io-index" 1611 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 1612 | dependencies = [ 1613 | "autocfg", 1614 | "hashbrown 0.12.3", 1615 | ] 1616 | 1617 | [[package]] 1618 | name = "indexmap" 1619 | version = "2.1.0" 1620 | source = "registry+https://github.com/rust-lang/crates.io-index" 1621 | checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" 1622 | dependencies = [ 1623 | "equivalent", 1624 | "hashbrown 0.14.2", 1625 | ] 1626 | 1627 | [[package]] 1628 | name = "inout" 1629 | version = "0.1.3" 1630 | source = "registry+https://github.com/rust-lang/crates.io-index" 1631 | checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" 1632 | dependencies = [ 1633 | "generic-array", 1634 | ] 1635 | 1636 | [[package]] 1637 | name = "instant" 1638 | version = "0.1.12" 1639 | source = "registry+https://github.com/rust-lang/crates.io-index" 1640 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1641 | dependencies = [ 1642 | "cfg-if", 1643 | ] 1644 | 1645 | [[package]] 1646 | name = "ipnet" 1647 | version = "2.9.0" 1648 | source = "registry+https://github.com/rust-lang/crates.io-index" 1649 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 1650 | 1651 | [[package]] 1652 | name = "is-terminal" 1653 | version = "0.4.9" 1654 | source = "registry+https://github.com/rust-lang/crates.io-index" 1655 | checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" 1656 | dependencies = [ 1657 | "hermit-abi", 1658 | "rustix", 1659 | "windows-sys", 1660 | ] 1661 | 1662 | [[package]] 1663 | name = "itertools" 1664 | version = "0.10.5" 1665 | source = "registry+https://github.com/rust-lang/crates.io-index" 1666 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 1667 | dependencies = [ 1668 | "either", 1669 | ] 1670 | 1671 | [[package]] 1672 | name = "itertools" 1673 | version = "0.11.0" 1674 | source = "registry+https://github.com/rust-lang/crates.io-index" 1675 | checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" 1676 | dependencies = [ 1677 | "either", 1678 | ] 1679 | 1680 | [[package]] 1681 | name = "itoa" 1682 | version = "1.0.9" 1683 | source = "registry+https://github.com/rust-lang/crates.io-index" 1684 | checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" 1685 | 1686 | [[package]] 1687 | name = "jobserver" 1688 | version = "0.1.27" 1689 | source = "registry+https://github.com/rust-lang/crates.io-index" 1690 | checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" 1691 | dependencies = [ 1692 | "libc", 1693 | ] 1694 | 1695 | [[package]] 1696 | name = "js-sys" 1697 | version = "0.3.65" 1698 | source = "registry+https://github.com/rust-lang/crates.io-index" 1699 | checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" 1700 | dependencies = [ 1701 | "wasm-bindgen", 1702 | ] 1703 | 1704 | [[package]] 1705 | name = "jsonwebtoken" 1706 | version = "8.3.0" 1707 | source = "registry+https://github.com/rust-lang/crates.io-index" 1708 | checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" 1709 | dependencies = [ 1710 | "base64 0.21.5", 1711 | "pem", 1712 | "ring 0.16.20", 1713 | "serde", 1714 | "serde_json", 1715 | "simple_asn1", 1716 | ] 1717 | 1718 | [[package]] 1719 | name = "k256" 1720 | version = "0.13.1" 1721 | source = "registry+https://github.com/rust-lang/crates.io-index" 1722 | checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" 1723 | dependencies = [ 1724 | "cfg-if", 1725 | "ecdsa", 1726 | "elliptic-curve", 1727 | "once_cell", 1728 | "sha2 0.10.8", 1729 | "signature", 1730 | ] 1731 | 1732 | [[package]] 1733 | name = "keccak" 1734 | version = "0.1.4" 1735 | source = "registry+https://github.com/rust-lang/crates.io-index" 1736 | checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" 1737 | dependencies = [ 1738 | "cpufeatures", 1739 | ] 1740 | 1741 | [[package]] 1742 | name = "lalrpop" 1743 | version = "0.20.0" 1744 | source = "registry+https://github.com/rust-lang/crates.io-index" 1745 | checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" 1746 | dependencies = [ 1747 | "ascii-canvas", 1748 | "bit-set", 1749 | "diff", 1750 | "ena", 1751 | "is-terminal", 1752 | "itertools 0.10.5", 1753 | "lalrpop-util", 1754 | "petgraph", 1755 | "regex", 1756 | "regex-syntax 0.7.5", 1757 | "string_cache", 1758 | "term", 1759 | "tiny-keccak", 1760 | "unicode-xid", 1761 | ] 1762 | 1763 | [[package]] 1764 | name = "lalrpop-util" 1765 | version = "0.20.0" 1766 | source = "registry+https://github.com/rust-lang/crates.io-index" 1767 | checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" 1768 | 1769 | [[package]] 1770 | name = "lazy_static" 1771 | version = "1.4.0" 1772 | source = "registry+https://github.com/rust-lang/crates.io-index" 1773 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1774 | 1775 | [[package]] 1776 | name = "libc" 1777 | version = "0.2.149" 1778 | source = "registry+https://github.com/rust-lang/crates.io-index" 1779 | checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" 1780 | 1781 | [[package]] 1782 | name = "libm" 1783 | version = "0.2.8" 1784 | source = "registry+https://github.com/rust-lang/crates.io-index" 1785 | checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" 1786 | 1787 | [[package]] 1788 | name = "linux-raw-sys" 1789 | version = "0.4.10" 1790 | source = "registry+https://github.com/rust-lang/crates.io-index" 1791 | checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" 1792 | 1793 | [[package]] 1794 | name = "lock_api" 1795 | version = "0.4.11" 1796 | source = "registry+https://github.com/rust-lang/crates.io-index" 1797 | checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" 1798 | dependencies = [ 1799 | "autocfg", 1800 | "scopeguard", 1801 | ] 1802 | 1803 | [[package]] 1804 | name = "log" 1805 | version = "0.4.20" 1806 | source = "registry+https://github.com/rust-lang/crates.io-index" 1807 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 1808 | 1809 | [[package]] 1810 | name = "md-5" 1811 | version = "0.10.6" 1812 | source = "registry+https://github.com/rust-lang/crates.io-index" 1813 | checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 1814 | dependencies = [ 1815 | "cfg-if", 1816 | "digest 0.10.7", 1817 | ] 1818 | 1819 | [[package]] 1820 | name = "memchr" 1821 | version = "2.6.4" 1822 | source = "registry+https://github.com/rust-lang/crates.io-index" 1823 | checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" 1824 | 1825 | [[package]] 1826 | name = "memoffset" 1827 | version = "0.9.0" 1828 | source = "registry+https://github.com/rust-lang/crates.io-index" 1829 | checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" 1830 | dependencies = [ 1831 | "autocfg", 1832 | ] 1833 | 1834 | [[package]] 1835 | name = "mime" 1836 | version = "0.3.17" 1837 | source = "registry+https://github.com/rust-lang/crates.io-index" 1838 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 1839 | 1840 | [[package]] 1841 | name = "miniz_oxide" 1842 | version = "0.7.1" 1843 | source = "registry+https://github.com/rust-lang/crates.io-index" 1844 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 1845 | dependencies = [ 1846 | "adler", 1847 | ] 1848 | 1849 | [[package]] 1850 | name = "mio" 1851 | version = "0.8.9" 1852 | source = "registry+https://github.com/rust-lang/crates.io-index" 1853 | checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" 1854 | dependencies = [ 1855 | "libc", 1856 | "wasi", 1857 | "windows-sys", 1858 | ] 1859 | 1860 | [[package]] 1861 | name = "new_debug_unreachable" 1862 | version = "1.0.4" 1863 | source = "registry+https://github.com/rust-lang/crates.io-index" 1864 | checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" 1865 | 1866 | [[package]] 1867 | name = "num-bigint" 1868 | version = "0.4.4" 1869 | source = "registry+https://github.com/rust-lang/crates.io-index" 1870 | checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" 1871 | dependencies = [ 1872 | "autocfg", 1873 | "num-integer", 1874 | "num-traits", 1875 | ] 1876 | 1877 | [[package]] 1878 | name = "num-integer" 1879 | version = "0.1.45" 1880 | source = "registry+https://github.com/rust-lang/crates.io-index" 1881 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1882 | dependencies = [ 1883 | "autocfg", 1884 | "num-traits", 1885 | ] 1886 | 1887 | [[package]] 1888 | name = "num-traits" 1889 | version = "0.2.17" 1890 | source = "registry+https://github.com/rust-lang/crates.io-index" 1891 | checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" 1892 | dependencies = [ 1893 | "autocfg", 1894 | "libm", 1895 | ] 1896 | 1897 | [[package]] 1898 | name = "num_cpus" 1899 | version = "1.16.0" 1900 | source = "registry+https://github.com/rust-lang/crates.io-index" 1901 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 1902 | dependencies = [ 1903 | "hermit-abi", 1904 | "libc", 1905 | ] 1906 | 1907 | [[package]] 1908 | name = "num_enum" 1909 | version = "0.7.1" 1910 | source = "registry+https://github.com/rust-lang/crates.io-index" 1911 | checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" 1912 | dependencies = [ 1913 | "num_enum_derive", 1914 | ] 1915 | 1916 | [[package]] 1917 | name = "num_enum_derive" 1918 | version = "0.7.1" 1919 | source = "registry+https://github.com/rust-lang/crates.io-index" 1920 | checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" 1921 | dependencies = [ 1922 | "proc-macro-crate 2.0.0", 1923 | "proc-macro2", 1924 | "quote", 1925 | "syn 2.0.38", 1926 | ] 1927 | 1928 | [[package]] 1929 | name = "object" 1930 | version = "0.32.1" 1931 | source = "registry+https://github.com/rust-lang/crates.io-index" 1932 | checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" 1933 | dependencies = [ 1934 | "memchr", 1935 | ] 1936 | 1937 | [[package]] 1938 | name = "once_cell" 1939 | version = "1.18.0" 1940 | source = "registry+https://github.com/rust-lang/crates.io-index" 1941 | checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" 1942 | 1943 | [[package]] 1944 | name = "opaque-debug" 1945 | version = "0.3.0" 1946 | source = "registry+https://github.com/rust-lang/crates.io-index" 1947 | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 1948 | 1949 | [[package]] 1950 | name = "open-fastrlp" 1951 | version = "0.1.4" 1952 | source = "registry+https://github.com/rust-lang/crates.io-index" 1953 | checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" 1954 | dependencies = [ 1955 | "arrayvec", 1956 | "auto_impl", 1957 | "bytes", 1958 | "ethereum-types", 1959 | "open-fastrlp-derive", 1960 | ] 1961 | 1962 | [[package]] 1963 | name = "open-fastrlp-derive" 1964 | version = "0.1.1" 1965 | source = "registry+https://github.com/rust-lang/crates.io-index" 1966 | checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" 1967 | dependencies = [ 1968 | "bytes", 1969 | "proc-macro2", 1970 | "quote", 1971 | "syn 1.0.109", 1972 | ] 1973 | 1974 | [[package]] 1975 | name = "option-ext" 1976 | version = "0.2.0" 1977 | source = "registry+https://github.com/rust-lang/crates.io-index" 1978 | checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" 1979 | 1980 | [[package]] 1981 | name = "parity-scale-codec" 1982 | version = "3.6.5" 1983 | source = "registry+https://github.com/rust-lang/crates.io-index" 1984 | checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" 1985 | dependencies = [ 1986 | "arrayvec", 1987 | "bitvec", 1988 | "byte-slice-cast", 1989 | "impl-trait-for-tuples", 1990 | "parity-scale-codec-derive", 1991 | "serde", 1992 | ] 1993 | 1994 | [[package]] 1995 | name = "parity-scale-codec-derive" 1996 | version = "3.6.5" 1997 | source = "registry+https://github.com/rust-lang/crates.io-index" 1998 | checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" 1999 | dependencies = [ 2000 | "proc-macro-crate 1.3.1", 2001 | "proc-macro2", 2002 | "quote", 2003 | "syn 1.0.109", 2004 | ] 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.9" 2019 | source = "registry+https://github.com/rust-lang/crates.io-index" 2020 | checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" 2021 | dependencies = [ 2022 | "cfg-if", 2023 | "libc", 2024 | "redox_syscall 0.4.1", 2025 | "smallvec", 2026 | "windows-targets", 2027 | ] 2028 | 2029 | [[package]] 2030 | name = "password-hash" 2031 | version = "0.4.2" 2032 | source = "registry+https://github.com/rust-lang/crates.io-index" 2033 | checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" 2034 | dependencies = [ 2035 | "base64ct", 2036 | "rand_core", 2037 | "subtle", 2038 | ] 2039 | 2040 | [[package]] 2041 | name = "path-slash" 2042 | version = "0.2.1" 2043 | source = "registry+https://github.com/rust-lang/crates.io-index" 2044 | checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" 2045 | 2046 | [[package]] 2047 | name = "pbkdf2" 2048 | version = "0.11.0" 2049 | source = "registry+https://github.com/rust-lang/crates.io-index" 2050 | checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" 2051 | dependencies = [ 2052 | "digest 0.10.7", 2053 | "hmac", 2054 | "password-hash", 2055 | "sha2 0.10.8", 2056 | ] 2057 | 2058 | [[package]] 2059 | name = "pbkdf2" 2060 | version = "0.12.2" 2061 | source = "registry+https://github.com/rust-lang/crates.io-index" 2062 | checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" 2063 | dependencies = [ 2064 | "digest 0.10.7", 2065 | "hmac", 2066 | ] 2067 | 2068 | [[package]] 2069 | name = "pem" 2070 | version = "1.1.1" 2071 | source = "registry+https://github.com/rust-lang/crates.io-index" 2072 | checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" 2073 | dependencies = [ 2074 | "base64 0.13.1", 2075 | ] 2076 | 2077 | [[package]] 2078 | name = "percent-encoding" 2079 | version = "2.3.0" 2080 | source = "registry+https://github.com/rust-lang/crates.io-index" 2081 | checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" 2082 | 2083 | [[package]] 2084 | name = "petgraph" 2085 | version = "0.6.4" 2086 | source = "registry+https://github.com/rust-lang/crates.io-index" 2087 | checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" 2088 | dependencies = [ 2089 | "fixedbitset", 2090 | "indexmap 2.1.0", 2091 | ] 2092 | 2093 | [[package]] 2094 | name = "pharos" 2095 | version = "0.5.3" 2096 | source = "registry+https://github.com/rust-lang/crates.io-index" 2097 | checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" 2098 | dependencies = [ 2099 | "futures", 2100 | "rustc_version", 2101 | ] 2102 | 2103 | [[package]] 2104 | name = "phf" 2105 | version = "0.11.2" 2106 | source = "registry+https://github.com/rust-lang/crates.io-index" 2107 | checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" 2108 | dependencies = [ 2109 | "phf_macros", 2110 | "phf_shared 0.11.2", 2111 | ] 2112 | 2113 | [[package]] 2114 | name = "phf_generator" 2115 | version = "0.11.2" 2116 | source = "registry+https://github.com/rust-lang/crates.io-index" 2117 | checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" 2118 | dependencies = [ 2119 | "phf_shared 0.11.2", 2120 | "rand", 2121 | ] 2122 | 2123 | [[package]] 2124 | name = "phf_macros" 2125 | version = "0.11.2" 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" 2127 | checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" 2128 | dependencies = [ 2129 | "phf_generator", 2130 | "phf_shared 0.11.2", 2131 | "proc-macro2", 2132 | "quote", 2133 | "syn 2.0.38", 2134 | ] 2135 | 2136 | [[package]] 2137 | name = "phf_shared" 2138 | version = "0.10.0" 2139 | source = "registry+https://github.com/rust-lang/crates.io-index" 2140 | checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 2141 | dependencies = [ 2142 | "siphasher", 2143 | ] 2144 | 2145 | [[package]] 2146 | name = "phf_shared" 2147 | version = "0.11.2" 2148 | source = "registry+https://github.com/rust-lang/crates.io-index" 2149 | checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" 2150 | dependencies = [ 2151 | "siphasher", 2152 | ] 2153 | 2154 | [[package]] 2155 | name = "pin-project" 2156 | version = "1.1.3" 2157 | source = "registry+https://github.com/rust-lang/crates.io-index" 2158 | checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" 2159 | dependencies = [ 2160 | "pin-project-internal", 2161 | ] 2162 | 2163 | [[package]] 2164 | name = "pin-project-internal" 2165 | version = "1.1.3" 2166 | source = "registry+https://github.com/rust-lang/crates.io-index" 2167 | checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" 2168 | dependencies = [ 2169 | "proc-macro2", 2170 | "quote", 2171 | "syn 2.0.38", 2172 | ] 2173 | 2174 | [[package]] 2175 | name = "pin-project-lite" 2176 | version = "0.2.13" 2177 | source = "registry+https://github.com/rust-lang/crates.io-index" 2178 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 2179 | 2180 | [[package]] 2181 | name = "pin-utils" 2182 | version = "0.1.0" 2183 | source = "registry+https://github.com/rust-lang/crates.io-index" 2184 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2185 | 2186 | [[package]] 2187 | name = "pkcs8" 2188 | version = "0.10.2" 2189 | source = "registry+https://github.com/rust-lang/crates.io-index" 2190 | checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 2191 | dependencies = [ 2192 | "der", 2193 | "spki", 2194 | ] 2195 | 2196 | [[package]] 2197 | name = "pkg-config" 2198 | version = "0.3.27" 2199 | source = "registry+https://github.com/rust-lang/crates.io-index" 2200 | checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" 2201 | 2202 | [[package]] 2203 | name = "powerfmt" 2204 | version = "0.2.0" 2205 | source = "registry+https://github.com/rust-lang/crates.io-index" 2206 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2207 | 2208 | [[package]] 2209 | name = "ppv-lite86" 2210 | version = "0.2.17" 2211 | source = "registry+https://github.com/rust-lang/crates.io-index" 2212 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2213 | 2214 | [[package]] 2215 | name = "precomputed-hash" 2216 | version = "0.1.1" 2217 | source = "registry+https://github.com/rust-lang/crates.io-index" 2218 | checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 2219 | 2220 | [[package]] 2221 | name = "prettyplease" 2222 | version = "0.2.15" 2223 | source = "registry+https://github.com/rust-lang/crates.io-index" 2224 | checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" 2225 | dependencies = [ 2226 | "proc-macro2", 2227 | "syn 2.0.38", 2228 | ] 2229 | 2230 | [[package]] 2231 | name = "primitive-types" 2232 | version = "0.12.2" 2233 | source = "registry+https://github.com/rust-lang/crates.io-index" 2234 | checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" 2235 | dependencies = [ 2236 | "fixed-hash", 2237 | "impl-codec", 2238 | "impl-rlp", 2239 | "impl-serde", 2240 | "scale-info", 2241 | "uint", 2242 | ] 2243 | 2244 | [[package]] 2245 | name = "proc-macro-crate" 2246 | version = "1.3.1" 2247 | source = "registry+https://github.com/rust-lang/crates.io-index" 2248 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 2249 | dependencies = [ 2250 | "once_cell", 2251 | "toml_edit 0.19.15", 2252 | ] 2253 | 2254 | [[package]] 2255 | name = "proc-macro-crate" 2256 | version = "2.0.0" 2257 | source = "registry+https://github.com/rust-lang/crates.io-index" 2258 | checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" 2259 | dependencies = [ 2260 | "toml_edit 0.20.7", 2261 | ] 2262 | 2263 | [[package]] 2264 | name = "proc-macro-error" 2265 | version = "1.0.4" 2266 | source = "registry+https://github.com/rust-lang/crates.io-index" 2267 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2268 | dependencies = [ 2269 | "proc-macro-error-attr", 2270 | "proc-macro2", 2271 | "quote", 2272 | "syn 1.0.109", 2273 | "version_check", 2274 | ] 2275 | 2276 | [[package]] 2277 | name = "proc-macro-error-attr" 2278 | version = "1.0.4" 2279 | source = "registry+https://github.com/rust-lang/crates.io-index" 2280 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2281 | dependencies = [ 2282 | "proc-macro2", 2283 | "quote", 2284 | "version_check", 2285 | ] 2286 | 2287 | [[package]] 2288 | name = "proc-macro2" 2289 | version = "1.0.69" 2290 | source = "registry+https://github.com/rust-lang/crates.io-index" 2291 | checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" 2292 | dependencies = [ 2293 | "unicode-ident", 2294 | ] 2295 | 2296 | [[package]] 2297 | name = "proptest" 2298 | version = "1.3.1" 2299 | source = "registry+https://github.com/rust-lang/crates.io-index" 2300 | checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" 2301 | dependencies = [ 2302 | "bitflags 2.4.1", 2303 | "lazy_static", 2304 | "num-traits", 2305 | "rand", 2306 | "rand_chacha", 2307 | "rand_xorshift", 2308 | "regex-syntax 0.7.5", 2309 | "unarray", 2310 | ] 2311 | 2312 | [[package]] 2313 | name = "quote" 2314 | version = "1.0.33" 2315 | source = "registry+https://github.com/rust-lang/crates.io-index" 2316 | checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 2317 | dependencies = [ 2318 | "proc-macro2", 2319 | ] 2320 | 2321 | [[package]] 2322 | name = "radium" 2323 | version = "0.7.0" 2324 | source = "registry+https://github.com/rust-lang/crates.io-index" 2325 | checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" 2326 | 2327 | [[package]] 2328 | name = "rand" 2329 | version = "0.8.5" 2330 | source = "registry+https://github.com/rust-lang/crates.io-index" 2331 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2332 | dependencies = [ 2333 | "libc", 2334 | "rand_chacha", 2335 | "rand_core", 2336 | ] 2337 | 2338 | [[package]] 2339 | name = "rand_chacha" 2340 | version = "0.3.1" 2341 | source = "registry+https://github.com/rust-lang/crates.io-index" 2342 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2343 | dependencies = [ 2344 | "ppv-lite86", 2345 | "rand_core", 2346 | ] 2347 | 2348 | [[package]] 2349 | name = "rand_core" 2350 | version = "0.6.4" 2351 | source = "registry+https://github.com/rust-lang/crates.io-index" 2352 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2353 | dependencies = [ 2354 | "getrandom", 2355 | ] 2356 | 2357 | [[package]] 2358 | name = "rand_xorshift" 2359 | version = "0.3.0" 2360 | source = "registry+https://github.com/rust-lang/crates.io-index" 2361 | checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" 2362 | dependencies = [ 2363 | "rand_core", 2364 | ] 2365 | 2366 | [[package]] 2367 | name = "rayon" 2368 | version = "1.8.0" 2369 | source = "registry+https://github.com/rust-lang/crates.io-index" 2370 | checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" 2371 | dependencies = [ 2372 | "either", 2373 | "rayon-core", 2374 | ] 2375 | 2376 | [[package]] 2377 | name = "rayon-core" 2378 | version = "1.12.0" 2379 | source = "registry+https://github.com/rust-lang/crates.io-index" 2380 | checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" 2381 | dependencies = [ 2382 | "crossbeam-deque", 2383 | "crossbeam-utils", 2384 | ] 2385 | 2386 | [[package]] 2387 | name = "redox_syscall" 2388 | version = "0.2.16" 2389 | source = "registry+https://github.com/rust-lang/crates.io-index" 2390 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 2391 | dependencies = [ 2392 | "bitflags 1.3.2", 2393 | ] 2394 | 2395 | [[package]] 2396 | name = "redox_syscall" 2397 | version = "0.4.1" 2398 | source = "registry+https://github.com/rust-lang/crates.io-index" 2399 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 2400 | dependencies = [ 2401 | "bitflags 1.3.2", 2402 | ] 2403 | 2404 | [[package]] 2405 | name = "redox_users" 2406 | version = "0.4.3" 2407 | source = "registry+https://github.com/rust-lang/crates.io-index" 2408 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 2409 | dependencies = [ 2410 | "getrandom", 2411 | "redox_syscall 0.2.16", 2412 | "thiserror", 2413 | ] 2414 | 2415 | [[package]] 2416 | name = "regex" 2417 | version = "1.10.2" 2418 | source = "registry+https://github.com/rust-lang/crates.io-index" 2419 | checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" 2420 | dependencies = [ 2421 | "aho-corasick", 2422 | "memchr", 2423 | "regex-automata", 2424 | "regex-syntax 0.8.2", 2425 | ] 2426 | 2427 | [[package]] 2428 | name = "regex-automata" 2429 | version = "0.4.3" 2430 | source = "registry+https://github.com/rust-lang/crates.io-index" 2431 | checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" 2432 | dependencies = [ 2433 | "aho-corasick", 2434 | "memchr", 2435 | "regex-syntax 0.8.2", 2436 | ] 2437 | 2438 | [[package]] 2439 | name = "regex-syntax" 2440 | version = "0.7.5" 2441 | source = "registry+https://github.com/rust-lang/crates.io-index" 2442 | checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" 2443 | 2444 | [[package]] 2445 | name = "regex-syntax" 2446 | version = "0.8.2" 2447 | source = "registry+https://github.com/rust-lang/crates.io-index" 2448 | checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" 2449 | 2450 | [[package]] 2451 | name = "reqwest" 2452 | version = "0.11.22" 2453 | source = "registry+https://github.com/rust-lang/crates.io-index" 2454 | checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" 2455 | dependencies = [ 2456 | "base64 0.21.5", 2457 | "bytes", 2458 | "encoding_rs", 2459 | "futures-core", 2460 | "futures-util", 2461 | "h2", 2462 | "http", 2463 | "http-body", 2464 | "hyper", 2465 | "hyper-rustls", 2466 | "ipnet", 2467 | "js-sys", 2468 | "log", 2469 | "mime", 2470 | "once_cell", 2471 | "percent-encoding", 2472 | "pin-project-lite", 2473 | "rustls", 2474 | "rustls-pemfile", 2475 | "serde", 2476 | "serde_json", 2477 | "serde_urlencoded", 2478 | "system-configuration", 2479 | "tokio", 2480 | "tokio-rustls", 2481 | "tower-service", 2482 | "url", 2483 | "wasm-bindgen", 2484 | "wasm-bindgen-futures", 2485 | "web-sys", 2486 | "webpki-roots", 2487 | "winreg", 2488 | ] 2489 | 2490 | [[package]] 2491 | name = "rfc6979" 2492 | version = "0.4.0" 2493 | source = "registry+https://github.com/rust-lang/crates.io-index" 2494 | checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" 2495 | dependencies = [ 2496 | "hmac", 2497 | "subtle", 2498 | ] 2499 | 2500 | [[package]] 2501 | name = "ring" 2502 | version = "0.16.20" 2503 | source = "registry+https://github.com/rust-lang/crates.io-index" 2504 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 2505 | dependencies = [ 2506 | "cc", 2507 | "libc", 2508 | "once_cell", 2509 | "spin 0.5.2", 2510 | "untrusted 0.7.1", 2511 | "web-sys", 2512 | "winapi", 2513 | ] 2514 | 2515 | [[package]] 2516 | name = "ring" 2517 | version = "0.17.5" 2518 | source = "registry+https://github.com/rust-lang/crates.io-index" 2519 | checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" 2520 | dependencies = [ 2521 | "cc", 2522 | "getrandom", 2523 | "libc", 2524 | "spin 0.9.8", 2525 | "untrusted 0.9.0", 2526 | "windows-sys", 2527 | ] 2528 | 2529 | [[package]] 2530 | name = "ripemd" 2531 | version = "0.1.3" 2532 | source = "registry+https://github.com/rust-lang/crates.io-index" 2533 | checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" 2534 | dependencies = [ 2535 | "digest 0.10.7", 2536 | ] 2537 | 2538 | [[package]] 2539 | name = "rlp" 2540 | version = "0.5.2" 2541 | source = "registry+https://github.com/rust-lang/crates.io-index" 2542 | checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" 2543 | dependencies = [ 2544 | "bytes", 2545 | "rlp-derive", 2546 | "rustc-hex", 2547 | ] 2548 | 2549 | [[package]] 2550 | name = "rlp-derive" 2551 | version = "0.1.0" 2552 | source = "registry+https://github.com/rust-lang/crates.io-index" 2553 | checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" 2554 | dependencies = [ 2555 | "proc-macro2", 2556 | "quote", 2557 | "syn 1.0.109", 2558 | ] 2559 | 2560 | [[package]] 2561 | name = "rustc-demangle" 2562 | version = "0.1.23" 2563 | source = "registry+https://github.com/rust-lang/crates.io-index" 2564 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 2565 | 2566 | [[package]] 2567 | name = "rustc-hex" 2568 | version = "2.1.0" 2569 | source = "registry+https://github.com/rust-lang/crates.io-index" 2570 | checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" 2571 | 2572 | [[package]] 2573 | name = "rustc_version" 2574 | version = "0.4.0" 2575 | source = "registry+https://github.com/rust-lang/crates.io-index" 2576 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 2577 | dependencies = [ 2578 | "semver", 2579 | ] 2580 | 2581 | [[package]] 2582 | name = "rustix" 2583 | version = "0.38.21" 2584 | source = "registry+https://github.com/rust-lang/crates.io-index" 2585 | checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" 2586 | dependencies = [ 2587 | "bitflags 2.4.1", 2588 | "errno", 2589 | "libc", 2590 | "linux-raw-sys", 2591 | "windows-sys", 2592 | ] 2593 | 2594 | [[package]] 2595 | name = "rustls" 2596 | version = "0.21.8" 2597 | source = "registry+https://github.com/rust-lang/crates.io-index" 2598 | checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" 2599 | dependencies = [ 2600 | "log", 2601 | "ring 0.17.5", 2602 | "rustls-webpki", 2603 | "sct", 2604 | ] 2605 | 2606 | [[package]] 2607 | name = "rustls-pemfile" 2608 | version = "1.0.3" 2609 | source = "registry+https://github.com/rust-lang/crates.io-index" 2610 | checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" 2611 | dependencies = [ 2612 | "base64 0.21.5", 2613 | ] 2614 | 2615 | [[package]] 2616 | name = "rustls-webpki" 2617 | version = "0.101.7" 2618 | source = "registry+https://github.com/rust-lang/crates.io-index" 2619 | checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 2620 | dependencies = [ 2621 | "ring 0.17.5", 2622 | "untrusted 0.9.0", 2623 | ] 2624 | 2625 | [[package]] 2626 | name = "rustversion" 2627 | version = "1.0.14" 2628 | source = "registry+https://github.com/rust-lang/crates.io-index" 2629 | checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" 2630 | 2631 | [[package]] 2632 | name = "ryu" 2633 | version = "1.0.15" 2634 | source = "registry+https://github.com/rust-lang/crates.io-index" 2635 | checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" 2636 | 2637 | [[package]] 2638 | name = "salsa20" 2639 | version = "0.10.2" 2640 | source = "registry+https://github.com/rust-lang/crates.io-index" 2641 | checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" 2642 | dependencies = [ 2643 | "cipher", 2644 | ] 2645 | 2646 | [[package]] 2647 | name = "same-file" 2648 | version = "1.0.6" 2649 | source = "registry+https://github.com/rust-lang/crates.io-index" 2650 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2651 | dependencies = [ 2652 | "winapi-util", 2653 | ] 2654 | 2655 | [[package]] 2656 | name = "scale-info" 2657 | version = "2.10.0" 2658 | source = "registry+https://github.com/rust-lang/crates.io-index" 2659 | checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" 2660 | dependencies = [ 2661 | "cfg-if", 2662 | "derive_more", 2663 | "parity-scale-codec", 2664 | "scale-info-derive", 2665 | ] 2666 | 2667 | [[package]] 2668 | name = "scale-info-derive" 2669 | version = "2.10.0" 2670 | source = "registry+https://github.com/rust-lang/crates.io-index" 2671 | checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" 2672 | dependencies = [ 2673 | "proc-macro-crate 1.3.1", 2674 | "proc-macro2", 2675 | "quote", 2676 | "syn 1.0.109", 2677 | ] 2678 | 2679 | [[package]] 2680 | name = "scopeguard" 2681 | version = "1.2.0" 2682 | source = "registry+https://github.com/rust-lang/crates.io-index" 2683 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2684 | 2685 | [[package]] 2686 | name = "scrypt" 2687 | version = "0.10.0" 2688 | source = "registry+https://github.com/rust-lang/crates.io-index" 2689 | checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" 2690 | dependencies = [ 2691 | "hmac", 2692 | "pbkdf2 0.11.0", 2693 | "salsa20", 2694 | "sha2 0.10.8", 2695 | ] 2696 | 2697 | [[package]] 2698 | name = "sct" 2699 | version = "0.7.1" 2700 | source = "registry+https://github.com/rust-lang/crates.io-index" 2701 | checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 2702 | dependencies = [ 2703 | "ring 0.17.5", 2704 | "untrusted 0.9.0", 2705 | ] 2706 | 2707 | [[package]] 2708 | name = "sec1" 2709 | version = "0.7.3" 2710 | source = "registry+https://github.com/rust-lang/crates.io-index" 2711 | checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" 2712 | dependencies = [ 2713 | "base16ct", 2714 | "der", 2715 | "generic-array", 2716 | "pkcs8", 2717 | "subtle", 2718 | "zeroize", 2719 | ] 2720 | 2721 | [[package]] 2722 | name = "semver" 2723 | version = "1.0.20" 2724 | source = "registry+https://github.com/rust-lang/crates.io-index" 2725 | checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" 2726 | dependencies = [ 2727 | "serde", 2728 | ] 2729 | 2730 | [[package]] 2731 | name = "send_wrapper" 2732 | version = "0.4.0" 2733 | source = "registry+https://github.com/rust-lang/crates.io-index" 2734 | checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" 2735 | 2736 | [[package]] 2737 | name = "send_wrapper" 2738 | version = "0.6.0" 2739 | source = "registry+https://github.com/rust-lang/crates.io-index" 2740 | checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 2741 | 2742 | [[package]] 2743 | name = "serde" 2744 | version = "1.0.190" 2745 | source = "registry+https://github.com/rust-lang/crates.io-index" 2746 | checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" 2747 | dependencies = [ 2748 | "serde_derive", 2749 | ] 2750 | 2751 | [[package]] 2752 | name = "serde_derive" 2753 | version = "1.0.190" 2754 | source = "registry+https://github.com/rust-lang/crates.io-index" 2755 | checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" 2756 | dependencies = [ 2757 | "proc-macro2", 2758 | "quote", 2759 | "syn 2.0.38", 2760 | ] 2761 | 2762 | [[package]] 2763 | name = "serde_json" 2764 | version = "1.0.108" 2765 | source = "registry+https://github.com/rust-lang/crates.io-index" 2766 | checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" 2767 | dependencies = [ 2768 | "itoa", 2769 | "ryu", 2770 | "serde", 2771 | ] 2772 | 2773 | [[package]] 2774 | name = "serde_spanned" 2775 | version = "0.6.4" 2776 | source = "registry+https://github.com/rust-lang/crates.io-index" 2777 | checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" 2778 | dependencies = [ 2779 | "serde", 2780 | ] 2781 | 2782 | [[package]] 2783 | name = "serde_urlencoded" 2784 | version = "0.7.1" 2785 | source = "registry+https://github.com/rust-lang/crates.io-index" 2786 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 2787 | dependencies = [ 2788 | "form_urlencoded", 2789 | "itoa", 2790 | "ryu", 2791 | "serde", 2792 | ] 2793 | 2794 | [[package]] 2795 | name = "sha1" 2796 | version = "0.10.6" 2797 | source = "registry+https://github.com/rust-lang/crates.io-index" 2798 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 2799 | dependencies = [ 2800 | "cfg-if", 2801 | "cpufeatures", 2802 | "digest 0.10.7", 2803 | ] 2804 | 2805 | [[package]] 2806 | name = "sha2" 2807 | version = "0.9.9" 2808 | source = "registry+https://github.com/rust-lang/crates.io-index" 2809 | checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" 2810 | dependencies = [ 2811 | "block-buffer 0.9.0", 2812 | "cfg-if", 2813 | "cpufeatures", 2814 | "digest 0.9.0", 2815 | "opaque-debug", 2816 | ] 2817 | 2818 | [[package]] 2819 | name = "sha2" 2820 | version = "0.10.8" 2821 | source = "registry+https://github.com/rust-lang/crates.io-index" 2822 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 2823 | dependencies = [ 2824 | "cfg-if", 2825 | "cpufeatures", 2826 | "digest 0.10.7", 2827 | ] 2828 | 2829 | [[package]] 2830 | name = "sha3" 2831 | version = "0.10.8" 2832 | source = "registry+https://github.com/rust-lang/crates.io-index" 2833 | checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" 2834 | dependencies = [ 2835 | "digest 0.10.7", 2836 | "keccak", 2837 | ] 2838 | 2839 | [[package]] 2840 | name = "signal-hook-registry" 2841 | version = "1.4.1" 2842 | source = "registry+https://github.com/rust-lang/crates.io-index" 2843 | checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 2844 | dependencies = [ 2845 | "libc", 2846 | ] 2847 | 2848 | [[package]] 2849 | name = "signature" 2850 | version = "2.1.0" 2851 | source = "registry+https://github.com/rust-lang/crates.io-index" 2852 | checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" 2853 | dependencies = [ 2854 | "digest 0.10.7", 2855 | "rand_core", 2856 | ] 2857 | 2858 | [[package]] 2859 | name = "simple_asn1" 2860 | version = "0.6.2" 2861 | source = "registry+https://github.com/rust-lang/crates.io-index" 2862 | checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" 2863 | dependencies = [ 2864 | "num-bigint", 2865 | "num-traits", 2866 | "thiserror", 2867 | "time", 2868 | ] 2869 | 2870 | [[package]] 2871 | name = "siphasher" 2872 | version = "0.3.11" 2873 | source = "registry+https://github.com/rust-lang/crates.io-index" 2874 | checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 2875 | 2876 | [[package]] 2877 | name = "slab" 2878 | version = "0.4.9" 2879 | source = "registry+https://github.com/rust-lang/crates.io-index" 2880 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 2881 | dependencies = [ 2882 | "autocfg", 2883 | ] 2884 | 2885 | [[package]] 2886 | name = "smallvec" 2887 | version = "1.11.1" 2888 | source = "registry+https://github.com/rust-lang/crates.io-index" 2889 | checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" 2890 | 2891 | [[package]] 2892 | name = "socket2" 2893 | version = "0.4.10" 2894 | source = "registry+https://github.com/rust-lang/crates.io-index" 2895 | checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" 2896 | dependencies = [ 2897 | "libc", 2898 | "winapi", 2899 | ] 2900 | 2901 | [[package]] 2902 | name = "socket2" 2903 | version = "0.5.5" 2904 | source = "registry+https://github.com/rust-lang/crates.io-index" 2905 | checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" 2906 | dependencies = [ 2907 | "libc", 2908 | "windows-sys", 2909 | ] 2910 | 2911 | [[package]] 2912 | name = "solang-parser" 2913 | version = "0.3.2" 2914 | source = "registry+https://github.com/rust-lang/crates.io-index" 2915 | checksum = "7cb9fa2fa2fa6837be8a2495486ff92e3ffe68a99b6eeba288e139efdd842457" 2916 | dependencies = [ 2917 | "itertools 0.11.0", 2918 | "lalrpop", 2919 | "lalrpop-util", 2920 | "phf", 2921 | "thiserror", 2922 | "unicode-xid", 2923 | ] 2924 | 2925 | [[package]] 2926 | name = "spin" 2927 | version = "0.5.2" 2928 | source = "registry+https://github.com/rust-lang/crates.io-index" 2929 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 2930 | 2931 | [[package]] 2932 | name = "spin" 2933 | version = "0.9.8" 2934 | source = "registry+https://github.com/rust-lang/crates.io-index" 2935 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 2936 | 2937 | [[package]] 2938 | name = "spki" 2939 | version = "0.7.2" 2940 | source = "registry+https://github.com/rust-lang/crates.io-index" 2941 | checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" 2942 | dependencies = [ 2943 | "base64ct", 2944 | "der", 2945 | ] 2946 | 2947 | [[package]] 2948 | name = "static_assertions" 2949 | version = "1.1.0" 2950 | source = "registry+https://github.com/rust-lang/crates.io-index" 2951 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 2952 | 2953 | [[package]] 2954 | name = "string_cache" 2955 | version = "0.8.7" 2956 | source = "registry+https://github.com/rust-lang/crates.io-index" 2957 | checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" 2958 | dependencies = [ 2959 | "new_debug_unreachable", 2960 | "once_cell", 2961 | "parking_lot", 2962 | "phf_shared 0.10.0", 2963 | "precomputed-hash", 2964 | ] 2965 | 2966 | [[package]] 2967 | name = "strsim" 2968 | version = "0.10.0" 2969 | source = "registry+https://github.com/rust-lang/crates.io-index" 2970 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 2971 | 2972 | [[package]] 2973 | name = "strum" 2974 | version = "0.25.0" 2975 | source = "registry+https://github.com/rust-lang/crates.io-index" 2976 | checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" 2977 | dependencies = [ 2978 | "strum_macros", 2979 | ] 2980 | 2981 | [[package]] 2982 | name = "strum_macros" 2983 | version = "0.25.3" 2984 | source = "registry+https://github.com/rust-lang/crates.io-index" 2985 | checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" 2986 | dependencies = [ 2987 | "heck", 2988 | "proc-macro2", 2989 | "quote", 2990 | "rustversion", 2991 | "syn 2.0.38", 2992 | ] 2993 | 2994 | [[package]] 2995 | name = "subtle" 2996 | version = "2.5.0" 2997 | source = "registry+https://github.com/rust-lang/crates.io-index" 2998 | checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" 2999 | 3000 | [[package]] 3001 | name = "svm-rs" 3002 | version = "0.3.2" 3003 | source = "registry+https://github.com/rust-lang/crates.io-index" 3004 | checksum = "d0cc95be7cc2c384a2f57cac56548d2178650905ebe5725bc8970ccc25529060" 3005 | dependencies = [ 3006 | "dirs", 3007 | "fs2", 3008 | "hex", 3009 | "once_cell", 3010 | "reqwest", 3011 | "semver", 3012 | "serde", 3013 | "serde_json", 3014 | "sha2 0.10.8", 3015 | "thiserror", 3016 | "url", 3017 | "zip", 3018 | ] 3019 | 3020 | [[package]] 3021 | name = "syn" 3022 | version = "1.0.109" 3023 | source = "registry+https://github.com/rust-lang/crates.io-index" 3024 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 3025 | dependencies = [ 3026 | "proc-macro2", 3027 | "quote", 3028 | "unicode-ident", 3029 | ] 3030 | 3031 | [[package]] 3032 | name = "syn" 3033 | version = "2.0.38" 3034 | source = "registry+https://github.com/rust-lang/crates.io-index" 3035 | checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" 3036 | dependencies = [ 3037 | "proc-macro2", 3038 | "quote", 3039 | "unicode-ident", 3040 | ] 3041 | 3042 | [[package]] 3043 | name = "system-configuration" 3044 | version = "0.5.1" 3045 | source = "registry+https://github.com/rust-lang/crates.io-index" 3046 | checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 3047 | dependencies = [ 3048 | "bitflags 1.3.2", 3049 | "core-foundation", 3050 | "system-configuration-sys", 3051 | ] 3052 | 3053 | [[package]] 3054 | name = "system-configuration-sys" 3055 | version = "0.5.0" 3056 | source = "registry+https://github.com/rust-lang/crates.io-index" 3057 | checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 3058 | dependencies = [ 3059 | "core-foundation-sys", 3060 | "libc", 3061 | ] 3062 | 3063 | [[package]] 3064 | name = "tap" 3065 | version = "1.0.1" 3066 | source = "registry+https://github.com/rust-lang/crates.io-index" 3067 | checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" 3068 | 3069 | [[package]] 3070 | name = "tempfile" 3071 | version = "3.8.1" 3072 | source = "registry+https://github.com/rust-lang/crates.io-index" 3073 | checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" 3074 | dependencies = [ 3075 | "cfg-if", 3076 | "fastrand", 3077 | "redox_syscall 0.4.1", 3078 | "rustix", 3079 | "windows-sys", 3080 | ] 3081 | 3082 | [[package]] 3083 | name = "term" 3084 | version = "0.7.0" 3085 | source = "registry+https://github.com/rust-lang/crates.io-index" 3086 | checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" 3087 | dependencies = [ 3088 | "dirs-next", 3089 | "rustversion", 3090 | "winapi", 3091 | ] 3092 | 3093 | [[package]] 3094 | name = "termcolor" 3095 | version = "1.3.0" 3096 | source = "registry+https://github.com/rust-lang/crates.io-index" 3097 | checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" 3098 | dependencies = [ 3099 | "winapi-util", 3100 | ] 3101 | 3102 | [[package]] 3103 | name = "thiserror" 3104 | version = "1.0.50" 3105 | source = "registry+https://github.com/rust-lang/crates.io-index" 3106 | checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" 3107 | dependencies = [ 3108 | "thiserror-impl", 3109 | ] 3110 | 3111 | [[package]] 3112 | name = "thiserror-impl" 3113 | version = "1.0.50" 3114 | source = "registry+https://github.com/rust-lang/crates.io-index" 3115 | checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" 3116 | dependencies = [ 3117 | "proc-macro2", 3118 | "quote", 3119 | "syn 2.0.38", 3120 | ] 3121 | 3122 | [[package]] 3123 | name = "time" 3124 | version = "0.3.30" 3125 | source = "registry+https://github.com/rust-lang/crates.io-index" 3126 | checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" 3127 | dependencies = [ 3128 | "deranged", 3129 | "itoa", 3130 | "powerfmt", 3131 | "serde", 3132 | "time-core", 3133 | "time-macros", 3134 | ] 3135 | 3136 | [[package]] 3137 | name = "time-core" 3138 | version = "0.1.2" 3139 | source = "registry+https://github.com/rust-lang/crates.io-index" 3140 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 3141 | 3142 | [[package]] 3143 | name = "time-macros" 3144 | version = "0.2.15" 3145 | source = "registry+https://github.com/rust-lang/crates.io-index" 3146 | checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" 3147 | dependencies = [ 3148 | "time-core", 3149 | ] 3150 | 3151 | [[package]] 3152 | name = "tiny-keccak" 3153 | version = "2.0.2" 3154 | source = "registry+https://github.com/rust-lang/crates.io-index" 3155 | checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" 3156 | dependencies = [ 3157 | "crunchy", 3158 | ] 3159 | 3160 | [[package]] 3161 | name = "tinyvec" 3162 | version = "1.6.0" 3163 | source = "registry+https://github.com/rust-lang/crates.io-index" 3164 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 3165 | dependencies = [ 3166 | "tinyvec_macros", 3167 | ] 3168 | 3169 | [[package]] 3170 | name = "tinyvec_macros" 3171 | version = "0.1.1" 3172 | source = "registry+https://github.com/rust-lang/crates.io-index" 3173 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 3174 | 3175 | [[package]] 3176 | name = "tokio" 3177 | version = "1.33.0" 3178 | source = "registry+https://github.com/rust-lang/crates.io-index" 3179 | checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" 3180 | dependencies = [ 3181 | "backtrace", 3182 | "bytes", 3183 | "libc", 3184 | "mio", 3185 | "num_cpus", 3186 | "pin-project-lite", 3187 | "signal-hook-registry", 3188 | "socket2 0.5.5", 3189 | "tokio-macros", 3190 | "windows-sys", 3191 | ] 3192 | 3193 | [[package]] 3194 | name = "tokio-macros" 3195 | version = "2.1.0" 3196 | source = "registry+https://github.com/rust-lang/crates.io-index" 3197 | checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" 3198 | dependencies = [ 3199 | "proc-macro2", 3200 | "quote", 3201 | "syn 2.0.38", 3202 | ] 3203 | 3204 | [[package]] 3205 | name = "tokio-rustls" 3206 | version = "0.24.1" 3207 | source = "registry+https://github.com/rust-lang/crates.io-index" 3208 | checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 3209 | dependencies = [ 3210 | "rustls", 3211 | "tokio", 3212 | ] 3213 | 3214 | [[package]] 3215 | name = "tokio-tungstenite" 3216 | version = "0.20.1" 3217 | source = "registry+https://github.com/rust-lang/crates.io-index" 3218 | checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" 3219 | dependencies = [ 3220 | "futures-util", 3221 | "log", 3222 | "rustls", 3223 | "tokio", 3224 | "tokio-rustls", 3225 | "tungstenite", 3226 | "webpki-roots", 3227 | ] 3228 | 3229 | [[package]] 3230 | name = "tokio-util" 3231 | version = "0.7.10" 3232 | source = "registry+https://github.com/rust-lang/crates.io-index" 3233 | checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" 3234 | dependencies = [ 3235 | "bytes", 3236 | "futures-core", 3237 | "futures-sink", 3238 | "pin-project-lite", 3239 | "tokio", 3240 | "tracing", 3241 | ] 3242 | 3243 | [[package]] 3244 | name = "toml" 3245 | version = "0.7.8" 3246 | source = "registry+https://github.com/rust-lang/crates.io-index" 3247 | checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" 3248 | dependencies = [ 3249 | "serde", 3250 | "serde_spanned", 3251 | "toml_datetime", 3252 | "toml_edit 0.19.15", 3253 | ] 3254 | 3255 | [[package]] 3256 | name = "toml_datetime" 3257 | version = "0.6.5" 3258 | source = "registry+https://github.com/rust-lang/crates.io-index" 3259 | checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" 3260 | dependencies = [ 3261 | "serde", 3262 | ] 3263 | 3264 | [[package]] 3265 | name = "toml_edit" 3266 | version = "0.19.15" 3267 | source = "registry+https://github.com/rust-lang/crates.io-index" 3268 | checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" 3269 | dependencies = [ 3270 | "indexmap 2.1.0", 3271 | "serde", 3272 | "serde_spanned", 3273 | "toml_datetime", 3274 | "winnow", 3275 | ] 3276 | 3277 | [[package]] 3278 | name = "toml_edit" 3279 | version = "0.20.7" 3280 | source = "registry+https://github.com/rust-lang/crates.io-index" 3281 | checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" 3282 | dependencies = [ 3283 | "indexmap 2.1.0", 3284 | "toml_datetime", 3285 | "winnow", 3286 | ] 3287 | 3288 | [[package]] 3289 | name = "tower-service" 3290 | version = "0.3.2" 3291 | source = "registry+https://github.com/rust-lang/crates.io-index" 3292 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 3293 | 3294 | [[package]] 3295 | name = "tracing" 3296 | version = "0.1.40" 3297 | source = "registry+https://github.com/rust-lang/crates.io-index" 3298 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 3299 | dependencies = [ 3300 | "pin-project-lite", 3301 | "tracing-attributes", 3302 | "tracing-core", 3303 | ] 3304 | 3305 | [[package]] 3306 | name = "tracing-attributes" 3307 | version = "0.1.27" 3308 | source = "registry+https://github.com/rust-lang/crates.io-index" 3309 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 3310 | dependencies = [ 3311 | "proc-macro2", 3312 | "quote", 3313 | "syn 2.0.38", 3314 | ] 3315 | 3316 | [[package]] 3317 | name = "tracing-core" 3318 | version = "0.1.32" 3319 | source = "registry+https://github.com/rust-lang/crates.io-index" 3320 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 3321 | dependencies = [ 3322 | "once_cell", 3323 | ] 3324 | 3325 | [[package]] 3326 | name = "tracing-futures" 3327 | version = "0.2.5" 3328 | source = "registry+https://github.com/rust-lang/crates.io-index" 3329 | checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" 3330 | dependencies = [ 3331 | "pin-project", 3332 | "tracing", 3333 | ] 3334 | 3335 | [[package]] 3336 | name = "try-lock" 3337 | version = "0.2.4" 3338 | source = "registry+https://github.com/rust-lang/crates.io-index" 3339 | checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" 3340 | 3341 | [[package]] 3342 | name = "tungstenite" 3343 | version = "0.20.1" 3344 | source = "registry+https://github.com/rust-lang/crates.io-index" 3345 | checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" 3346 | dependencies = [ 3347 | "byteorder", 3348 | "bytes", 3349 | "data-encoding", 3350 | "http", 3351 | "httparse", 3352 | "log", 3353 | "rand", 3354 | "rustls", 3355 | "sha1", 3356 | "thiserror", 3357 | "url", 3358 | "utf-8", 3359 | ] 3360 | 3361 | [[package]] 3362 | name = "typenum" 3363 | version = "1.17.0" 3364 | source = "registry+https://github.com/rust-lang/crates.io-index" 3365 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 3366 | 3367 | [[package]] 3368 | name = "uint" 3369 | version = "0.9.5" 3370 | source = "registry+https://github.com/rust-lang/crates.io-index" 3371 | checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" 3372 | dependencies = [ 3373 | "byteorder", 3374 | "crunchy", 3375 | "hex", 3376 | "static_assertions", 3377 | ] 3378 | 3379 | [[package]] 3380 | name = "unarray" 3381 | version = "0.1.4" 3382 | source = "registry+https://github.com/rust-lang/crates.io-index" 3383 | checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" 3384 | 3385 | [[package]] 3386 | name = "unicode-bidi" 3387 | version = "0.3.13" 3388 | source = "registry+https://github.com/rust-lang/crates.io-index" 3389 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 3390 | 3391 | [[package]] 3392 | name = "unicode-ident" 3393 | version = "1.0.12" 3394 | source = "registry+https://github.com/rust-lang/crates.io-index" 3395 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 3396 | 3397 | [[package]] 3398 | name = "unicode-normalization" 3399 | version = "0.1.22" 3400 | source = "registry+https://github.com/rust-lang/crates.io-index" 3401 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 3402 | dependencies = [ 3403 | "tinyvec", 3404 | ] 3405 | 3406 | [[package]] 3407 | name = "unicode-xid" 3408 | version = "0.2.4" 3409 | source = "registry+https://github.com/rust-lang/crates.io-index" 3410 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 3411 | 3412 | [[package]] 3413 | name = "untrusted" 3414 | version = "0.7.1" 3415 | source = "registry+https://github.com/rust-lang/crates.io-index" 3416 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 3417 | 3418 | [[package]] 3419 | name = "untrusted" 3420 | version = "0.9.0" 3421 | source = "registry+https://github.com/rust-lang/crates.io-index" 3422 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 3423 | 3424 | [[package]] 3425 | name = "url" 3426 | version = "2.4.1" 3427 | source = "registry+https://github.com/rust-lang/crates.io-index" 3428 | checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" 3429 | dependencies = [ 3430 | "form_urlencoded", 3431 | "idna", 3432 | "percent-encoding", 3433 | ] 3434 | 3435 | [[package]] 3436 | name = "utf-8" 3437 | version = "0.7.6" 3438 | source = "registry+https://github.com/rust-lang/crates.io-index" 3439 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 3440 | 3441 | [[package]] 3442 | name = "utf8parse" 3443 | version = "0.2.1" 3444 | source = "registry+https://github.com/rust-lang/crates.io-index" 3445 | checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" 3446 | 3447 | [[package]] 3448 | name = "uuid" 3449 | version = "0.8.2" 3450 | source = "registry+https://github.com/rust-lang/crates.io-index" 3451 | checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" 3452 | dependencies = [ 3453 | "getrandom", 3454 | "serde", 3455 | ] 3456 | 3457 | [[package]] 3458 | name = "version_check" 3459 | version = "0.9.4" 3460 | source = "registry+https://github.com/rust-lang/crates.io-index" 3461 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 3462 | 3463 | [[package]] 3464 | name = "walkdir" 3465 | version = "2.4.0" 3466 | source = "registry+https://github.com/rust-lang/crates.io-index" 3467 | checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" 3468 | dependencies = [ 3469 | "same-file", 3470 | "winapi-util", 3471 | ] 3472 | 3473 | [[package]] 3474 | name = "want" 3475 | version = "0.3.1" 3476 | source = "registry+https://github.com/rust-lang/crates.io-index" 3477 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 3478 | dependencies = [ 3479 | "try-lock", 3480 | ] 3481 | 3482 | [[package]] 3483 | name = "wasi" 3484 | version = "0.11.0+wasi-snapshot-preview1" 3485 | source = "registry+https://github.com/rust-lang/crates.io-index" 3486 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3487 | 3488 | [[package]] 3489 | name = "wasm-bindgen" 3490 | version = "0.2.88" 3491 | source = "registry+https://github.com/rust-lang/crates.io-index" 3492 | checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" 3493 | dependencies = [ 3494 | "cfg-if", 3495 | "wasm-bindgen-macro", 3496 | ] 3497 | 3498 | [[package]] 3499 | name = "wasm-bindgen-backend" 3500 | version = "0.2.88" 3501 | source = "registry+https://github.com/rust-lang/crates.io-index" 3502 | checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" 3503 | dependencies = [ 3504 | "bumpalo", 3505 | "log", 3506 | "once_cell", 3507 | "proc-macro2", 3508 | "quote", 3509 | "syn 2.0.38", 3510 | "wasm-bindgen-shared", 3511 | ] 3512 | 3513 | [[package]] 3514 | name = "wasm-bindgen-futures" 3515 | version = "0.4.38" 3516 | source = "registry+https://github.com/rust-lang/crates.io-index" 3517 | checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" 3518 | dependencies = [ 3519 | "cfg-if", 3520 | "js-sys", 3521 | "wasm-bindgen", 3522 | "web-sys", 3523 | ] 3524 | 3525 | [[package]] 3526 | name = "wasm-bindgen-macro" 3527 | version = "0.2.88" 3528 | source = "registry+https://github.com/rust-lang/crates.io-index" 3529 | checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" 3530 | dependencies = [ 3531 | "quote", 3532 | "wasm-bindgen-macro-support", 3533 | ] 3534 | 3535 | [[package]] 3536 | name = "wasm-bindgen-macro-support" 3537 | version = "0.2.88" 3538 | source = "registry+https://github.com/rust-lang/crates.io-index" 3539 | checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" 3540 | dependencies = [ 3541 | "proc-macro2", 3542 | "quote", 3543 | "syn 2.0.38", 3544 | "wasm-bindgen-backend", 3545 | "wasm-bindgen-shared", 3546 | ] 3547 | 3548 | [[package]] 3549 | name = "wasm-bindgen-shared" 3550 | version = "0.2.88" 3551 | source = "registry+https://github.com/rust-lang/crates.io-index" 3552 | checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" 3553 | 3554 | [[package]] 3555 | name = "web-sys" 3556 | version = "0.3.65" 3557 | source = "registry+https://github.com/rust-lang/crates.io-index" 3558 | checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" 3559 | dependencies = [ 3560 | "js-sys", 3561 | "wasm-bindgen", 3562 | ] 3563 | 3564 | [[package]] 3565 | name = "webpki-roots" 3566 | version = "0.25.2" 3567 | source = "registry+https://github.com/rust-lang/crates.io-index" 3568 | checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" 3569 | 3570 | [[package]] 3571 | name = "winapi" 3572 | version = "0.3.9" 3573 | source = "registry+https://github.com/rust-lang/crates.io-index" 3574 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3575 | dependencies = [ 3576 | "winapi-i686-pc-windows-gnu", 3577 | "winapi-x86_64-pc-windows-gnu", 3578 | ] 3579 | 3580 | [[package]] 3581 | name = "winapi-i686-pc-windows-gnu" 3582 | version = "0.4.0" 3583 | source = "registry+https://github.com/rust-lang/crates.io-index" 3584 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3585 | 3586 | [[package]] 3587 | name = "winapi-util" 3588 | version = "0.1.6" 3589 | source = "registry+https://github.com/rust-lang/crates.io-index" 3590 | checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" 3591 | dependencies = [ 3592 | "winapi", 3593 | ] 3594 | 3595 | [[package]] 3596 | name = "winapi-x86_64-pc-windows-gnu" 3597 | version = "0.4.0" 3598 | source = "registry+https://github.com/rust-lang/crates.io-index" 3599 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3600 | 3601 | [[package]] 3602 | name = "windows-sys" 3603 | version = "0.48.0" 3604 | source = "registry+https://github.com/rust-lang/crates.io-index" 3605 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 3606 | dependencies = [ 3607 | "windows-targets", 3608 | ] 3609 | 3610 | [[package]] 3611 | name = "windows-targets" 3612 | version = "0.48.5" 3613 | source = "registry+https://github.com/rust-lang/crates.io-index" 3614 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 3615 | dependencies = [ 3616 | "windows_aarch64_gnullvm", 3617 | "windows_aarch64_msvc", 3618 | "windows_i686_gnu", 3619 | "windows_i686_msvc", 3620 | "windows_x86_64_gnu", 3621 | "windows_x86_64_gnullvm", 3622 | "windows_x86_64_msvc", 3623 | ] 3624 | 3625 | [[package]] 3626 | name = "windows_aarch64_gnullvm" 3627 | version = "0.48.5" 3628 | source = "registry+https://github.com/rust-lang/crates.io-index" 3629 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 3630 | 3631 | [[package]] 3632 | name = "windows_aarch64_msvc" 3633 | version = "0.48.5" 3634 | source = "registry+https://github.com/rust-lang/crates.io-index" 3635 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 3636 | 3637 | [[package]] 3638 | name = "windows_i686_gnu" 3639 | version = "0.48.5" 3640 | source = "registry+https://github.com/rust-lang/crates.io-index" 3641 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 3642 | 3643 | [[package]] 3644 | name = "windows_i686_msvc" 3645 | version = "0.48.5" 3646 | source = "registry+https://github.com/rust-lang/crates.io-index" 3647 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 3648 | 3649 | [[package]] 3650 | name = "windows_x86_64_gnu" 3651 | version = "0.48.5" 3652 | source = "registry+https://github.com/rust-lang/crates.io-index" 3653 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 3654 | 3655 | [[package]] 3656 | name = "windows_x86_64_gnullvm" 3657 | version = "0.48.5" 3658 | source = "registry+https://github.com/rust-lang/crates.io-index" 3659 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3660 | 3661 | [[package]] 3662 | name = "windows_x86_64_msvc" 3663 | version = "0.48.5" 3664 | source = "registry+https://github.com/rust-lang/crates.io-index" 3665 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3666 | 3667 | [[package]] 3668 | name = "winnow" 3669 | version = "0.5.18" 3670 | source = "registry+https://github.com/rust-lang/crates.io-index" 3671 | checksum = "176b6138793677221d420fd2f0aeeced263f197688b36484660da767bca2fa32" 3672 | dependencies = [ 3673 | "memchr", 3674 | ] 3675 | 3676 | [[package]] 3677 | name = "winreg" 3678 | version = "0.50.0" 3679 | source = "registry+https://github.com/rust-lang/crates.io-index" 3680 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 3681 | dependencies = [ 3682 | "cfg-if", 3683 | "windows-sys", 3684 | ] 3685 | 3686 | [[package]] 3687 | name = "ws_stream_wasm" 3688 | version = "0.7.4" 3689 | source = "registry+https://github.com/rust-lang/crates.io-index" 3690 | checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" 3691 | dependencies = [ 3692 | "async_io_stream", 3693 | "futures", 3694 | "js-sys", 3695 | "log", 3696 | "pharos", 3697 | "rustc_version", 3698 | "send_wrapper 0.6.0", 3699 | "thiserror", 3700 | "wasm-bindgen", 3701 | "wasm-bindgen-futures", 3702 | "web-sys", 3703 | ] 3704 | 3705 | [[package]] 3706 | name = "wyz" 3707 | version = "0.5.1" 3708 | source = "registry+https://github.com/rust-lang/crates.io-index" 3709 | checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" 3710 | dependencies = [ 3711 | "tap", 3712 | ] 3713 | 3714 | [[package]] 3715 | name = "yansi" 3716 | version = "0.5.1" 3717 | source = "registry+https://github.com/rust-lang/crates.io-index" 3718 | checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" 3719 | 3720 | [[package]] 3721 | name = "zeroize" 3722 | version = "1.6.0" 3723 | source = "registry+https://github.com/rust-lang/crates.io-index" 3724 | checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" 3725 | 3726 | [[package]] 3727 | name = "zip" 3728 | version = "0.6.6" 3729 | source = "registry+https://github.com/rust-lang/crates.io-index" 3730 | checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" 3731 | dependencies = [ 3732 | "aes", 3733 | "byteorder", 3734 | "bzip2", 3735 | "constant_time_eq", 3736 | "crc32fast", 3737 | "crossbeam-utils", 3738 | "flate2", 3739 | "hmac", 3740 | "pbkdf2 0.11.0", 3741 | "sha1", 3742 | "time", 3743 | "zstd", 3744 | ] 3745 | 3746 | [[package]] 3747 | name = "zksync-web3-rs" 3748 | version = "0.1.1" 3749 | source = "registry+https://github.com/rust-lang/crates.io-index" 3750 | checksum = "15bc9b106393359ac013c2527db318ced4ca838d26ef03488233af557ebe5da8" 3751 | dependencies = [ 3752 | "async-trait", 3753 | "clap", 3754 | "env_logger", 3755 | "ethers", 3756 | "ethers-contract", 3757 | "hex", 3758 | "lazy_static", 3759 | "log", 3760 | "serde", 3761 | "serde_json", 3762 | "sha2 0.9.9", 3763 | "thiserror", 3764 | "tokio", 3765 | ] 3766 | 3767 | [[package]] 3768 | name = "zksync_full_stack" 3769 | version = "0.1.0" 3770 | dependencies = [ 3771 | "ethers", 3772 | "tokio", 3773 | "zksync-web3-rs", 3774 | ] 3775 | 3776 | [[package]] 3777 | name = "zstd" 3778 | version = "0.11.2+zstd.1.5.2" 3779 | source = "registry+https://github.com/rust-lang/crates.io-index" 3780 | checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" 3781 | dependencies = [ 3782 | "zstd-safe", 3783 | ] 3784 | 3785 | [[package]] 3786 | name = "zstd-safe" 3787 | version = "5.0.2+zstd.1.5.2" 3788 | source = "registry+https://github.com/rust-lang/crates.io-index" 3789 | checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" 3790 | dependencies = [ 3791 | "libc", 3792 | "zstd-sys", 3793 | ] 3794 | 3795 | [[package]] 3796 | name = "zstd-sys" 3797 | version = "2.0.9+zstd.1.5.5" 3798 | source = "registry+https://github.com/rust-lang/crates.io-index" 3799 | checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" 3800 | dependencies = [ 3801 | "cc", 3802 | "pkg-config", 3803 | ] 3804 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | OS := $(shell uname -s) 2 | VALIDIUM ?= false 3 | export ZKSYNC_HOME=$(shell pwd)/zksync-era 4 | export PATH:=$(ZKSYNC_HOME)/bin:$(PATH) 5 | 6 | deps: 7 | @if [ "$(OS)" = "Darwin" ]; then \ 8 | brew install axel openssl postgresql tmux node@18; \ 9 | brew link node@18 --overwrite; \ 10 | curl -L https://github.com/matter-labs/zksolc-bin/releases/download/v1.3.16/zksolc-macosx-arm64-v1.3.16 --output zksolc; \ 11 | chmod a+x zksolc; \ 12 | curl -L https://github.com/ethereum/solidity/releases/download/v0.8.19/solc-macos --output solc; \ 13 | chmod a+x solc; \ 14 | mkdir -p $(HOME)/Library/Application\ Support/eth-compilers; \ 15 | mv solc $(HOME)/Library/Application\ Support/eth-compilers; \ 16 | mv zksolc $(HOME)/Library/Application\ Support/eth-compilers; \ 17 | else \ 18 | curl -s https://raw.githubusercontent.com/nodesource/distributions/master/scripts/nsolid_setup_deb.sh | sudo sh -s "18"; \ 19 | sudo apt update; \ 20 | sudo apt install -y axel libssl-dev nsolid postgresql tmux git build-essential pkg-config cmake clang lldb lld; \ 21 | curl -fsSL https://get.docker.com | sh; \ 22 | curl -SL https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose; \ 23 | curl -L https://github.com/matter-labs/zksolc-bin/releases/download/v1.3.16/zksolc-linux-amd64-musl-v1.3.16 --output zksolc; \ 24 | curl -L https://github.com/ethereum/solidity/releases/download/v0.8.19/solc-static-linux --output solc; \ 25 | chmod a+x solc; \ 26 | chmod a+x /usr/local/bin/docker-compose; \ 27 | chmod a+x zksolc; \ 28 | mkdir -p $(HOME)/.config/eth-compilers; \ 29 | mv solc $(HOME)/.config/eth-compilers; \ 30 | mv zksolc $(HOME)/.config/eth-compilers; \ 31 | npm i -g npm@9; \ 32 | npm install --global yarn; \ 33 | fi 34 | @if [ ! -n "$(shell which cargo)" ]; then \ 35 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y; \ 36 | fi 37 | . $(HOME)/.cargo/env; \ 38 | cargo install sqlx-cli --version 0.5.13; 39 | @if [ "$(OS)" = "Linux" ]; then \ 40 | sudo service postgresql stop; \ 41 | fi 42 | git clone -b boojum-integration https://github.com/matter-labs/zksync-era; \ 43 | git clone https://github.com/matter-labs/block-explorer; \ 44 | cd ${ZKSYNC_HOME}; \ 45 | git remote add lambdaclass https://github.com/lambdaclass/zksync-era; \ 46 | git fetch lambdaclass; 47 | @if [ "$(VALIDIUM)" = "true" ]; then \ 48 | git checkout lambdaclass/validium; \ 49 | fi 50 | yarn policies set-version 1.22.19; \ 51 | . $(HOME)/.cargo/env; \ 52 | zk; 53 | @if [ "$(VALIDIUM)" = "true" ]; then \ 54 | zk init --validium; \ 55 | else \ 56 | zk init; \ 57 | fi 58 | git checkout lambdaclass/fix_witness_generator_for_boojum prover/setup.sh prover/witness_generator/src/main.rs; \ 59 | rustup install nightly-2023-07-21; \ 60 | 61 | terra-init: 62 | terraform -chdir=infrastructure/terraform init 63 | 64 | terra-plan: 65 | terraform -chdir=infrastructure/terraform plan 66 | 67 | terra-apply: 68 | terraform -chdir=infrastructure/terraform apply 69 | 70 | terra-destroy: 71 | terraform -chdir=infrastructure/terraform destroy 72 | 73 | run: 74 | . $(HOME)/.cargo/env; \ 75 | tmux kill-session -t zksync-server; \ 76 | tmux new -d -s zksync-server; \ 77 | tmux send-keys -t zksync-server "cd ${ZKSYNC_HOME} && export ZKSYNC_HOME=${ZKSYNC_HOME}" Enter; \ 78 | tmux send-keys -t zksync-server "./bin/zk up" Enter; \ 79 | tmux send-keys -t zksync-server "./bin/zk server --components=api,eth,tree,state_keeper,housekeeper,proof_data_handler" Enter 80 | @if [ "$(PROVER)" = "cpu" ]; then \ 81 | cd ${ZKSYNC_HOME}/prover; \ 82 | ./setup.sh; \ 83 | tmux kill-session -t zksync-witness-generator; \ 84 | tmux new -d -s zksync-witness-generator; \ 85 | tmux send-keys -t zksync-witness-generator "cd ${ZKSYNC_HOME}/prover && export ZKSYNC_HOME=${ZKSYNC_HOME}" Enter; \ 86 | tmux send-keys -t zksync-witness-generator "API_PROMETHEUS_LISTENER_PORT=3116 ../bin/zk f cargo run --release --bin zksync_witness_generator -- --all_rounds" Enter; \ 87 | tmux kill-session -t zksync-prover; \ 88 | tmux new -d -s zksync-prover; \ 89 | tmux send-keys -t zksync-prover "cd ${ZKSYNC_HOME}/prover && export ZKSYNC_HOME=${ZKSYNC_HOME}" Enter; \ 90 | tmux send-keys -t zksync-prover "../bin/zk f cargo run --release --bin zksync_prover_fri" Enter; \ 91 | tmux kill-session -t zksync-proof-compressor; \ 92 | tmux new -d -s zksync-proof-compressor; \ 93 | tmux send-keys -t zksync-proof-compressor "cd ${ZKSYNC_HOME}/prover && export ZKSYNC_HOME=${ZKSYNC_HOME}" Enter; \ 94 | tmux send-keys -t zksync-proof-compressor "../bin/zk f cargo run --release --bin zksync_proof_fri_compressor" Enter; \ 95 | tmux kill-session -t zksync-prover-gateway; \ 96 | tmux new -d -s zksync-prover-gateway; \ 97 | tmux send-keys -t zksync-prover-gateway "cd ${ZKSYNC_HOME}/prover && export ZKSYNC_HOME=${ZKSYNC_HOME}" Enter; \ 98 | tmux send-keys -t zksync-prover-gateway "../bin/zk f cargo run --release --bin zksync_prover_fri_gateway" Enter; \ 99 | fi 100 | tmux kill-session -t zksync-explorer; \ 101 | tmux new -d -s zksync-explorer; \ 102 | tmux send-keys -t zksync-explorer "cd ${ZKSYNC_HOME}/../block-explorer && export ZKSYNC_HOME=${ZKSYNC_HOME}" Enter; \ 103 | tmux send-keys -t zksync-explorer "npm install" Enter; \ 104 | tmux send-keys -t zksync-explorer "echo dev | npm run hyperchain:configure" Enter; \ 105 | tmux send-keys -t zksync-explorer "npm run db:create" Enter; \ 106 | tmux send-keys -t zksync-explorer "npm run dev" Enter; \ 107 | tmux a -t zksync-server; \ 108 | docker-compose up -d; \ 109 | 110 | prover_status: 111 | ZKSYNC_HOME=$(shell pwd)/zksync-era && zk status prover 112 | 113 | down: 114 | -tmux kill-server || exit 0 115 | 116 | clean: 117 | rm -rf zksync-era 118 | rm -rf block-explorer 119 | tmux kill-server || (echo "No tmux sessions"; exit 0) 120 | ./scripts/delete_containers.sh 121 | 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # zkSync stack 2 | 3 | ```mermaid 4 | flowchart LR 5 | A["Operator"] --> |Produces block| F[Prover Gateway] 6 | F --> |Inserts into DB| B["Postgress DB"] 7 | B --> |Retrieves proven block \nafter compression| F 8 | B --> C["Witness"] 9 | C --- C1["Basic Circuits"] 10 | C --- C2["Leaf Aggregation"] 11 | C --- C3["Node Aggregation"] 12 | C --- C4["Scheduler"] 13 | C --> B 14 | B --> D["Prover"] 15 | D --> |Proven Block| B 16 | B --> E["Compressor"] 17 | E --> |Compressed block| B 18 | ``` 19 | 20 | The `zkSync` stack covers a set of tools designed to facilitate the interaction with the complete development cycle on the zkSync Layer-2 blockchain. 21 | 22 | The stack consists of: 23 | - [Dockerized L1 node and a zkSync L2 node](https://github.com/matter-labs/zksync-era) 24 | - [Block explorer](https://github.com/matter-labs/block-explorer#%EF%B8%8F-setting-up-env-variables) 25 | - A Prometheus + Grafana setup for observability. 26 | - [Prover with CPU and GPU support](https://github.com/matter-labs/zksync-era/tree/main/prover) 27 | 28 | ## Starting the stack 29 | 30 | **Please note that Docker and Docker-Compose are required to run the following commands.** 31 | 32 | To get started, we need to install all the essential dependencies. You can achieve this by running the following command: 33 | 34 | ```bash 35 | make deps 36 | ``` 37 | 38 | This command not only installs the necessary dependencies for running all the tools in the stack but also downloads the binaries for the `zksolc` and `solc` compilers. These compilers are crucial for executing some of the examples provided in the subsequent sections. 39 | 40 | Once all the dependencies are successfully installed, you can initiate the entire stack with a single command: 41 | 42 | ```bash 43 | make run 44 | ``` 45 | 46 | This will launch all the components of the ZKSync full stack except the prover, allowing you to dive into the development environment quickly. 47 | 48 | To run it with the CPU prover as well, run 49 | 50 | ```bash 51 | make run PROVER=cpu 52 | ``` 53 | 54 | instead. See the requirements section below to check if you meet the requirements to run in prover mode. 55 | 56 | ## Requirements 57 | 58 | ### CPU Prover Setup 59 | 60 | - A CPU with at least 8 physical cores. 61 | - 50 GB of RAM. 62 | - 400 GB of free disk space. 63 | 64 | ### GPU Prover Setup 65 | 66 | - A CPU with at least 8 physical cores. 67 | - 16 GB of RAM. 68 | - 30 GB of free disk space. 69 | - An Nvidia L4/T4 GPU with 16GB of RAM 70 | 71 | The non-prover should run on any decent modern machine. 72 | 73 | ## Local Nodes 74 | 75 | The mentioned command facilitates the creation of essential Docker containers for your development environment. This includes setting up a `PostgreSQL` database and the L1 local Geth node. Moreover, it compiles and deploys all the necessary contracts for the L2 local node to function. Please note that this process may take a moment to complete. 76 | 77 | In this context, it's essential to mention that many of the tools used will take control of the terminal. Therefore, we've installed `tmux` in the previous step to manage different commands and sessions for each tool. For the L2 node, the session is named `zksync-server`. To view the logs and observe the server in action, you can use the following command: `tmux a -t zksync-server`. 78 | 79 | The L1 Geth node runs at `http://localhost:8545`, while the L2 node is available at `http://localhost:3050`. 80 | 81 | ## Block Explorer 82 | 83 | The development environment includes a block explorer to inspect transactions and proofs within the nodes. This explorer runs within a `tmux` session named `zksync-explorer`. You can view it by executing the following command: `tmux a -t zksync-explorer`. To access the explorer in your web browser, navigate to `http://localhost:3010`. 84 | 85 | Additionally, you can access the API at `http:localhost/3020` and the worker at `http://localhost:3001`. 86 | 87 | ## Grafana and Observability 88 | 89 | Other Docker containers are running Grafana and Prometheus, tools for monitoring and creating dashboards. To access a helpful dashboard that provides information about every transaction executed by the node, open your web browser and visit `http://localhost:3000`. Once in that page, click on the hamburger menu on the top left of the screen, on the menu that will slide on, head on over to "Dashboards" to see the available dashboards. You can also use the python script `automate_transactions.py` to generate data. 90 | 91 | ## Prover 92 | 93 | When the stack is initiated in prover mode, various binaries execute, each containing one of the tools involved in the process of block proof generation. Here's a list of all the binaries and different components being executed, along with their corresponding `tmux` session since all these components take control of the terminal: 94 | 95 | - **Prover**: The main prover. The `tmux` session for this part is `zksync-prover`. 96 | - **Prover gateway**: Acts as a communication layer between the server running the state keeper and the proving subsystem. The `tmux` session for this part is `zksync-prover-gateway`. 97 | - **Witness generator**: Responsible for creating prover jobs. The `tmux` session for this part is `zksync-witness-generator`. 98 | - **Proof compressor**: The final step that compresses/wraps the FRI proof into a SNARK. The `tmux` session for this part is `zksync-block-compressor`. 99 | 100 | ## Deployment and Contract Interaction 101 | 102 | To begin testing the local nodes and interacting with them, this repository offers a basic `ERC20` contract for your use. 103 | 104 | To deploy the contract and call its functions, start by cloning the [zksync-era-cli](https://github.com/lambdaclass/zksync_era_cli) tool repository. This tool provides a range of useful commands, but for this example, you'll primarily use `deploy`, `call` and `send` commands. 105 | 106 | In all the following examples, we'll rely on a specific private key: `0x27593fea79697e947890ecbecce7901b0008345e5d7259710d0dd5e500d040be`. This key belongs to one of the rich wallets deployed in the local node for testing purposes. The address derived from this private key is `0xde03a0b5963f75f1c8485b355ff6d30f3093bde7`, we use it as argument for the constructor to initialize with a certain number of tokens. 107 | 108 | Once the node is up and running, use the following command to deploy our `ERC20` contract, a standard token: 109 | 110 | ```bash 111 | zksync-era-cli --l2-port 3050 deploy \ 112 | --project-root contracts/ \ 113 | --contract contracts/ERC20.sol \ 114 | --contract-name ERC20 \ 115 | --constructor-args 0xde03a0b5963f75f1c8485b355ff6d30f3093bde7 \ 116 | --private-key 0x27593fea79697e947890ecbecce7901b0008345e5d7259710d0dd5e500d040be \ 117 | --chain-id 270 118 | ``` 119 | 120 | If the deployment is successful, you'll receive the transaction receipt and an output similar to this: 121 | 122 | ``` 123 | INFO: `0x...` 124 | ``` 125 | 126 | This address represents where the contract is now deployed. After deploying the contract, you can interact with it in various ways. For instance, you can retrieve the name of the deployed token by calling the following function: 127 | 128 | ```bash 129 | zksync-era-cli --l2-port 3050 call \ 130 | --contract
\ 131 | --function "name()" \ 132 | --output-types string \ 133 | --chain-id 270 134 | ``` 135 | 136 | Where the `address` corresponds to the address of the deployed `ERC20` contract. 137 | The output will look like this: 138 | 139 | ``` 140 | INFO: String(`lambdacoin`) 141 | ``` 142 | 143 | This is the initial name of your token. Additionally, you can examine the initial balance of the address you passed as an argument for deployment using the `constructor-args` flag. To check the initial balance, execute the following command: 144 | 145 | ```bash 146 | zksync-era-cli --l2-port 3050 call \ 147 | --contract
\ 148 | --function "balanceOf(address)" \ 149 | --args "0xde03a0b5963f75f1c8485b355ff6d30f3093bde7" \ 150 | --output-types uint256 \ 151 | --chain-id 270 152 | ``` 153 | 154 | The output will look like this: 155 | 156 | ``` 157 | INFO: UINT256(1000000) 158 | ``` 159 | 160 | This indicates the initial balavnce of the specified address: 1,000,000 tokens. 161 | 162 | There's another function to transfer some of the tokens to another address, in order to do that we will send a transaction calling that function. 163 | 164 | ```bash 165 | zksync-era-cli --l2-port 3050 send \ 166 | --contract
\ 167 | --function "transfer(address, uint256)" \ 168 | --args 200 \ 169 | --output-types bool \ 170 | --private-key 0x27593fea79697e947890ecbecce7901b0008345e5d7259710d0dd5e500d040be \ 171 | --chain-id 270 172 | ``` 173 | 174 | Where the `to_address` would be the receiver address. 175 | The output should look like the following: 176 | 177 | ``` 178 | INFO: `0x...` 179 | ``` 180 | 181 | Representing the hash of the executed transaction. 182 | 183 | ## Validium Mode 184 | 185 | Disclaimer: this feature is still in early development, expect bugs and missing features. 186 | 187 | The stack can be run in `Validium mode`. In this mode, data availability is pushed to the L2, which means state diffs are not stored on the L1 anymore. To run the stack in validium mode, pass the `VALIDIUM` flag as `true` to the `deps` target, like so: 188 | 189 | ```bash 190 | make deps VALIDIUM=true 191 | ``` 192 | 193 | You can find more info on validium mode [here](https://github.com/matter-labs/zksync-era/pull/459). 194 | -------------------------------------------------------------------------------- /contracts/ERC20.sol: -------------------------------------------------------------------------------- 1 | //SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.19; 3 | import {IERC20} from "./IERC20.sol"; 4 | 5 | contract ERC20 is IERC20 { 6 | mapping(address account => uint256) private balances; 7 | 8 | mapping(address spender => mapping(address account => uint256)) private allowances; 9 | 10 | uint256 private total_supply; 11 | 12 | string private _name = "lambdacoin"; 13 | string private _symbol = "LBDC"; 14 | 15 | constructor(address rich_account) { 16 | balances[rich_account] = 1000000; 17 | } 18 | 19 | function name() public view virtual returns (string memory) { 20 | return _name; 21 | } 22 | 23 | function symbol() public view virtual returns (string memory) { 24 | return _symbol; 25 | } 26 | 27 | function totalSupply() public view virtual returns (uint256) { 28 | return total_supply; 29 | } 30 | 31 | function balanceOf(address _owner) public view returns (uint256 balance) { 32 | return balances[_owner]; 33 | } 34 | 35 | function transfer(address _to, uint256 _value) public returns (bool success) { 36 | address from = msg.sender; 37 | require(balances[from] >= _value); 38 | balances[from] -= _value; 39 | balances[_to] += _value; 40 | success = true; 41 | emit Transfer(from, _to, _value); 42 | } 43 | 44 | function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { 45 | address spender = msg.sender; 46 | require(allowances[spender][_from] >= _value); 47 | require(balances[_from] >= _value); 48 | allowances[spender][_from] -= _value; 49 | balances[_from] -= _value; 50 | balances[_to] += _value; 51 | success = true; 52 | emit Transfer(_from, _to, _value); 53 | } 54 | 55 | function approve(address _spender, uint256 _value) public returns (bool success) { 56 | allowances[_spender][msg.sender] = _value; 57 | success = true; 58 | } 59 | 60 | function allowance(address _owner, address _spender) public view returns (uint256 remaining) { 61 | return allowances[_spender][_owner]; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /contracts/IERC20.sol: -------------------------------------------------------------------------------- 1 | //SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.19; 3 | 4 | interface IERC20 { 5 | event Transfer(address indexed from, address indexed to, uint256 value); 6 | 7 | event Approval(address indexed owner, address indexed spender, uint256 value); 8 | 9 | function totalSupply() external view returns (uint256); 10 | 11 | function balanceOf(address account) external view returns (uint256); 12 | 13 | function transfer(address to, uint256 value) external returns (bool); 14 | 15 | function allowance(address owner, address spender) external view returns (uint256); 16 | 17 | function approve(address spender, uint256 value) external returns (bool); 18 | 19 | function transferFrom(address from, address to, uint256 value) external returns (bool); 20 | } 21 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '0.1' 2 | name: 'zksync-stack' 3 | 4 | services: 5 | prometheus: 6 | image: prom/prometheus 7 | container_name: prometheus 8 | hostname: prometheus 9 | ports: 10 | - "9090:9090" 11 | volumes: 12 | - ./prometheus:/etc/prometheus 13 | - prometheus-data:/prometheus 14 | command: --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml 15 | networks: 16 | open: 17 | aliases: 18 | - prometheus 19 | 20 | grafana: 21 | image: grafana/grafana 22 | container_name: grafana 23 | ports: 24 | - "3000:3000" 25 | volumes: 26 | - ./grafana/provisioning:/etc/grafana/provisioning 27 | - grafana-data:/var/lib/grafana 28 | networks: 29 | open: 30 | aliases: 31 | - grafana 32 | 33 | networks: 34 | open: 35 | driver: bridge 36 | 37 | volumes: 38 | prometheus-data: 39 | grafana-data: 40 | -------------------------------------------------------------------------------- /grafana/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lambdaclass/zksync_local_stack/4c9d22381869fa7b8a972a9ad89f24f9e50e6b13/grafana/.DS_Store -------------------------------------------------------------------------------- /grafana/provisioning/dashboards/blocks.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [ 4 | { 5 | "builtIn": 1, 6 | "datasource": { 7 | "type": "grafana", 8 | "uid": "-- Grafana --" 9 | }, 10 | "enable": true, 11 | "hide": true, 12 | "iconColor": "rgba(0, 211, 255, 1)", 13 | "name": "Annotations & Alerts", 14 | "type": "dashboard" 15 | } 16 | ] 17 | }, 18 | "editable": true, 19 | "fiscalYearStartMonth": 0, 20 | "graphTooltip": 0, 21 | "id": 2, 22 | "links": [], 23 | "liveNow": false, 24 | "panels": [ 25 | { 26 | "datasource": { 27 | "type": "prometheus", 28 | "uid": "PBFA97CFB590B2093" 29 | }, 30 | "fieldConfig": { 31 | "defaults": { 32 | "color": { 33 | "mode": "palette-classic" 34 | }, 35 | "custom": { 36 | "axisBorderShow": false, 37 | "axisCenteredZero": false, 38 | "axisColorMode": "text", 39 | "axisLabel": "", 40 | "axisPlacement": "auto", 41 | "barAlignment": 0, 42 | "drawStyle": "line", 43 | "fillOpacity": 0, 44 | "gradientMode": "none", 45 | "hideFrom": { 46 | "legend": false, 47 | "tooltip": false, 48 | "viz": false 49 | }, 50 | "insertNulls": false, 51 | "lineInterpolation": "linear", 52 | "lineWidth": 1, 53 | "pointSize": 5, 54 | "scaleDistribution": { 55 | "type": "linear" 56 | }, 57 | "showPoints": "auto", 58 | "spanNulls": false, 59 | "stacking": { 60 | "group": "A", 61 | "mode": "none" 62 | }, 63 | "thresholdsStyle": { 64 | "mode": "off" 65 | } 66 | }, 67 | "mappings": [], 68 | "thresholds": { 69 | "mode": "absolute", 70 | "steps": [ 71 | { 72 | "color": "green", 73 | "value": null 74 | }, 75 | { 76 | "color": "red", 77 | "value": 80 78 | } 79 | ] 80 | } 81 | }, 82 | "overrides": [] 83 | }, 84 | "gridPos": { 85 | "h": 16, 86 | "w": 20, 87 | "x": 0, 88 | "y": 0 89 | }, 90 | "id": 1, 91 | "options": { 92 | "legend": { 93 | "calcs": [], 94 | "displayMode": "list", 95 | "placement": "bottom", 96 | "showLegend": true 97 | }, 98 | "tooltip": { 99 | "mode": "single", 100 | "sort": "none" 101 | } 102 | }, 103 | "targets": [ 104 | { 105 | "datasource": { 106 | "type": "prometheus", 107 | "uid": "PBFA97CFB590B2093" 108 | }, 109 | "disableTextWrap": false, 110 | "editorMode": "builder", 111 | "expr": "server_block_number", 112 | "fullMetaSearch": false, 113 | "includeNullMetadata": true, 114 | "instant": false, 115 | "legendFormat": "__auto", 116 | "range": true, 117 | "refId": "A", 118 | "useBackend": false 119 | } 120 | ], 121 | "title": "Panel Title", 122 | "type": "timeseries" 123 | } 124 | ], 125 | "refresh": "", 126 | "schemaVersion": 38, 127 | "tags": [], 128 | "templating": { 129 | "list": [] 130 | }, 131 | "time": { 132 | "from": "now-6h", 133 | "to": "now" 134 | }, 135 | "timepicker": {}, 136 | "timezone": "", 137 | "title": "block_number", 138 | "uid": "dcdc7504-a5eb-42d5-baab-d762a6a454b6", 139 | "version": 1, 140 | "weekStart": "" 141 | } 142 | -------------------------------------------------------------------------------- /grafana/provisioning/dashboards/dashboard.yml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | 3 | providers: 4 | - name: 'Folder' 5 | allowUiUpdates: true 6 | options: 7 | path: /etc/grafana/provisioning/dashboards 8 | -------------------------------------------------------------------------------- /grafana/provisioning/dashboards/transactions.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [ 4 | { 5 | "builtIn": 1, 6 | "datasource": { 7 | "type": "grafana", 8 | "uid": "-- Grafana --" 9 | }, 10 | "enable": true, 11 | "hide": true, 12 | "iconColor": "rgba(0, 211, 255, 1)", 13 | "name": "Annotations & Alerts", 14 | "type": "dashboard" 15 | } 16 | ] 17 | }, 18 | "editable": true, 19 | "fiscalYearStartMonth": 0, 20 | "graphTooltip": 0, 21 | "id": 3, 22 | "links": [], 23 | "liveNow": false, 24 | "panels": [ 25 | { 26 | "datasource": { 27 | "type": "prometheus", 28 | "uid": "PBFA97CFB590B2093" 29 | }, 30 | "fieldConfig": { 31 | "defaults": { 32 | "color": { 33 | "mode": "palette-classic" 34 | }, 35 | "custom": { 36 | "axisBorderShow": false, 37 | "axisCenteredZero": false, 38 | "axisColorMode": "text", 39 | "axisLabel": "", 40 | "axisPlacement": "auto", 41 | "barAlignment": 0, 42 | "drawStyle": "line", 43 | "fillOpacity": 0, 44 | "gradientMode": "none", 45 | "hideFrom": { 46 | "legend": false, 47 | "tooltip": false, 48 | "viz": false 49 | }, 50 | "insertNulls": false, 51 | "lineInterpolation": "linear", 52 | "lineWidth": 1, 53 | "pointSize": 5, 54 | "scaleDistribution": { 55 | "type": "linear" 56 | }, 57 | "showPoints": "auto", 58 | "spanNulls": false, 59 | "stacking": { 60 | "group": "A", 61 | "mode": "none" 62 | }, 63 | "thresholdsStyle": { 64 | "mode": "off" 65 | } 66 | }, 67 | "mappings": [], 68 | "thresholds": { 69 | "mode": "absolute", 70 | "steps": [ 71 | { 72 | "color": "green", 73 | "value": null 74 | }, 75 | { 76 | "color": "red", 77 | "value": 80 78 | } 79 | ] 80 | } 81 | }, 82 | "overrides": [] 83 | }, 84 | "gridPos": { 85 | "h": 8, 86 | "w": 12, 87 | "x": 0, 88 | "y": 0 89 | }, 90 | "id": 1, 91 | "options": { 92 | "legend": { 93 | "calcs": [], 94 | "displayMode": "list", 95 | "placement": "bottom", 96 | "showLegend": true 97 | }, 98 | "tooltip": { 99 | "mode": "single", 100 | "sort": "none" 101 | } 102 | }, 103 | "targets": [ 104 | { 105 | "datasource": { 106 | "type": "prometheus", 107 | "uid": "PBFA97CFB590B2093" 108 | }, 109 | "disableTextWrap": false, 110 | "editorMode": "builder", 111 | "expr": "server_eth_sender_transaction_resent", 112 | "fullMetaSearch": false, 113 | "includeNullMetadata": true, 114 | "instant": false, 115 | "legendFormat": "__auto", 116 | "range": true, 117 | "refId": "A", 118 | "useBackend": false 119 | } 120 | ], 121 | "title": "Panel Title", 122 | "type": "timeseries" 123 | } 124 | ], 125 | "refresh": "", 126 | "schemaVersion": 38, 127 | "tags": [], 128 | "templating": { 129 | "list": [] 130 | }, 131 | "time": { 132 | "from": "now-6h", 133 | "to": "now" 134 | }, 135 | "timepicker": {}, 136 | "timezone": "", 137 | "title": "transactions", 138 | "uid": "fc9fa922-c369-46cc-a77d-824ecb7c5c34", 139 | "version": 1, 140 | "weekStart": "" 141 | } 142 | -------------------------------------------------------------------------------- /grafana/provisioning/dashboards/up.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [ 4 | { 5 | "builtIn": 1, 6 | "datasource": { 7 | "type": "grafana", 8 | "uid": "-- Grafana --" 9 | }, 10 | "enable": true, 11 | "hide": true, 12 | "iconColor": "rgba(0, 211, 255, 1)", 13 | "name": "Annotations & Alerts", 14 | "type": "dashboard" 15 | } 16 | ] 17 | }, 18 | "editable": true, 19 | "fiscalYearStartMonth": 0, 20 | "graphTooltip": 0, 21 | "id": 1, 22 | "links": [], 23 | "liveNow": false, 24 | "panels": [ 25 | { 26 | "datasource": { 27 | "type": "prometheus", 28 | "uid": "PBFA97CFB590B2093" 29 | }, 30 | "fieldConfig": { 31 | "defaults": { 32 | "color": { 33 | "mode": "palette-classic" 34 | }, 35 | "custom": { 36 | "axisBorderShow": false, 37 | "axisCenteredZero": false, 38 | "axisColorMode": "text", 39 | "axisLabel": "", 40 | "axisPlacement": "auto", 41 | "barAlignment": 0, 42 | "drawStyle": "line", 43 | "fillOpacity": 0, 44 | "gradientMode": "none", 45 | "hideFrom": { 46 | "legend": false, 47 | "tooltip": false, 48 | "viz": false 49 | }, 50 | "insertNulls": false, 51 | "lineInterpolation": "linear", 52 | "lineWidth": 1, 53 | "pointSize": 5, 54 | "scaleDistribution": { 55 | "type": "linear" 56 | }, 57 | "showPoints": "auto", 58 | "spanNulls": false, 59 | "stacking": { 60 | "group": "A", 61 | "mode": "none" 62 | }, 63 | "thresholdsStyle": { 64 | "mode": "off" 65 | } 66 | }, 67 | "mappings": [], 68 | "thresholds": { 69 | "mode": "absolute", 70 | "steps": [ 71 | { 72 | "color": "green", 73 | "value": null 74 | }, 75 | { 76 | "color": "red", 77 | "value": 80 78 | } 79 | ] 80 | } 81 | }, 82 | "overrides": [] 83 | }, 84 | "gridPos": { 85 | "h": 8, 86 | "w": 12, 87 | "x": 0, 88 | "y": 0 89 | }, 90 | "id": 1, 91 | "options": { 92 | "legend": { 93 | "calcs": [], 94 | "displayMode": "list", 95 | "placement": "bottom", 96 | "showLegend": true 97 | }, 98 | "tooltip": { 99 | "mode": "single", 100 | "sort": "none" 101 | } 102 | }, 103 | "targets": [ 104 | { 105 | "datasource": { 106 | "type": "prometheus", 107 | "uid": "PBFA97CFB590B2093" 108 | }, 109 | "disableTextWrap": false, 110 | "editorMode": "builder", 111 | "expr": "up", 112 | "fullMetaSearch": false, 113 | "includeNullMetadata": true, 114 | "instant": false, 115 | "legendFormat": "__auto", 116 | "range": true, 117 | "refId": "A", 118 | "useBackend": false 119 | } 120 | ], 121 | "title": "Panel Title", 122 | "type": "timeseries" 123 | } 124 | ], 125 | "refresh": "", 126 | "schemaVersion": 38, 127 | "tags": [], 128 | "templating": { 129 | "list": [] 130 | }, 131 | "time": { 132 | "from": "now-6h", 133 | "to": "now" 134 | }, 135 | "timepicker": {}, 136 | "timezone": "", 137 | "title": "up_dashboard", 138 | "uid": "ac4bc215-b7ce-4a70-88b7-570da200b5b2", 139 | "version": 1, 140 | "weekStart": "" 141 | } 142 | -------------------------------------------------------------------------------- /grafana/provisioning/datasources/prometheus_ds.yml: -------------------------------------------------------------------------------- 1 | datasources: 2 | - name: Prometheus 3 | access: proxy 4 | type: prometheus 5 | url: http://prometheus:9090 6 | isDefault: true 7 | -------------------------------------------------------------------------------- /infrastructure/terraform/explorer.yml: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: root 4 | groups: users, admin 5 | sudo: ALL=(ALL) NOPASSWD:ALL 6 | shell: /bin/bash 7 | ssh_authorized_keys: 8 | package_upgrade: true 9 | packages: 10 | - ca-certificates 11 | - curl 12 | - gnupg 13 | - vim 14 | - git 15 | - zip 16 | - unzip 17 | - openssl 18 | - libssl-dev 19 | - build-essential 20 | - libclang-dev 21 | runcmd: 22 | - apt-get install pkg-config cmake clang lldb lld -y 23 | - wget -P /root/ https://nodejs.org/dist/v18.18.0/node-v18.18.0-linux-x64.tar.xz 24 | - tar -xf /root/node-v18.18.0-linux-x64.tar.xz --directory=/usr/local/ --strip-components=1 25 | - rm /root/node-v18.18.0-linux-x64.tar.xz 26 | - npm install --global yarn 27 | - sudo apt install postgresql -y 28 | - sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'postgres';" 29 | - git clone https://github.com/matter-labs/block-explorer.git /root/block-explorer 30 | - cd /root/block-explorer && npm install && awk '{sub("BLOCKCHAIN_RPC_URL=http://localhost:3050", "BLOCKCHAIN_RPC_URL=http://10.0.1.3:3050")}1' packages/worker/.env.example > packages/worker/.env && awk '{sub("CONTRACT_VERIFICATION_API_URL=http://127.0.0.1:3070", "CONTRACT_VERIFICATION_API_URL=http://10.0.1.3:3070")}1' packages/api/.env.example > packages/api/.env && npm run db:create && npm run dev 31 | -------------------------------------------------------------------------------- /infrastructure/terraform/network.tf: -------------------------------------------------------------------------------- 1 | resource "hcloud_network" "hc_private" { 2 | name = "hc_private" 3 | ip_range = var.ip_range 4 | } 5 | 6 | resource "hcloud_server_network" "explorer_network" { 7 | server_id = hcloud_server.explorer.id 8 | subnet_id = hcloud_network_subnet.hc_private_subnet.id 9 | ip = "10.0.1.2" 10 | } 11 | 12 | resource "hcloud_server_network" "server_network" { 13 | server_id = hcloud_server.server.id 14 | subnet_id = hcloud_network_subnet.hc_private_subnet.id 15 | ip = "10.0.1.3" 16 | } 17 | 18 | 19 | resource "hcloud_server_network" "prometheus_grafana" { 20 | server_id = hcloud_server.prometheus_grafana.id 21 | subnet_id = hcloud_network_subnet.hc_private_subnet.id 22 | ip = "10.0.1.4" 23 | } 24 | 25 | resource "hcloud_network_subnet" "hc_private_subnet" { 26 | network_id = hcloud_network.hc_private.id 27 | type = "cloud" 28 | network_zone = "eu-central" 29 | ip_range = var.ip_range 30 | } 31 | -------------------------------------------------------------------------------- /infrastructure/terraform/output.tf: -------------------------------------------------------------------------------- 1 | output "server_ips" { 2 | value = hcloud_server.server.ipv4_address 3 | } 4 | 5 | output "explorer_ips" { 6 | value = hcloud_server.explorer.ipv4_address 7 | } 8 | 9 | output "prometheus_grafana" { 10 | value = hcloud_server.prometheus_grafana.ipv4_address 11 | } 12 | -------------------------------------------------------------------------------- /infrastructure/terraform/prometheus_grafana.yml: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: root 4 | groups: users, admin 5 | sudo: ALL=(ALL) NOPASSWD:ALL 6 | shell: /bin/bash 7 | ssh_authorized_keys: 8 | package_upgrade: true 9 | packages: 10 | - ca-certificates 11 | - curl 12 | - gnupg 13 | - vim 14 | - git 15 | - zip 16 | - unzip 17 | - openssl 18 | - libssl-dev 19 | - build-essential 20 | - libclang-dev 21 | write_files: 22 | - path: /etc/prometheus.yml 23 | content: | 24 | global: 25 | scrape_interval: 1s 26 | 27 | scrape_configs: 28 | - job_name: "telemetry_metrics_prometheus" 29 | metrics_path: "/metrics" 30 | static_configs: 31 | - targets: ["10.0.1.3:3312"] 32 | runcmd: 33 | - apt-get install pkg-config cmake clang lldb lld -y 34 | - apt-get install -y adduser libfontconfig1 musl 35 | - wget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.2.1_amd64.deb 36 | - dpkg -i grafana-enterprise_10.2.1_amd64.deb 37 | - /bin/systemctl start grafana-server 38 | - wget https://github.com/prometheus/prometheus/releases/download/v2.47.2/prometheus-2.47.2.linux-amd64.tar.gz 39 | - tar -xvf prometheus-2.47.2.linux-amd64.tar.gz 40 | - cd prometheus-2.47.2.linux-amd64/ && rm prometheus.yml && mv /etc/prometheus.yml . && ./prometheus --config.file=prometheus.yml 41 | -------------------------------------------------------------------------------- /infrastructure/terraform/provider.tf: -------------------------------------------------------------------------------- 1 | # hetzner cloud provider 2 | provider "hcloud" { 3 | token = "${var.hcloud_token}" 4 | } 5 | 6 | terraform { 7 | required_providers { 8 | hcloud = { 9 | source = "hetznercloud/hcloud" 10 | } 11 | } 12 | required_version = ">= 0.13" 13 | } 14 | -------------------------------------------------------------------------------- /infrastructure/terraform/server.yml: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | users: 3 | - name: root 4 | groups: users, admin 5 | sudo: ALL=(ALL) NOPASSWD:ALL 6 | shell: /bin/bash 7 | ssh_authorized_keys: 8 | 9 | package_update: true 10 | package_upgrade: true 11 | packages: 12 | - ca-certificates 13 | - curl 14 | - gnupg 15 | - vim 16 | - git 17 | - zip 18 | - unzip 19 | - openssl 20 | - libssl-dev 21 | - build-essential 22 | - libclang-dev 23 | runcmd: 24 | - apt-get install pkg-config cmake clang lldb lld -y 25 | - wget -P /root/ https://nodejs.org/dist/v18.18.0/node-v18.18.0-linux-x64.tar.xz 26 | - tar -xf /root/node-v18.18.0-linux-x64.tar.xz --directory=/usr/local/ --strip-components=1 27 | - rm /root/node-v18.18.0-linux-x64.tar.xz 28 | - npm install --global yarn 29 | - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y 30 | - echo ". /root/.cargo/env" >> /root/.bashrc 31 | - install -m 0755 -d /etc/apt/keyrings 32 | - curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg 33 | - chmod a+r /etc/apt/keyrings/docker.gpg 34 | - echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null 35 | - apt-get update -y 36 | - apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 37 | - apt-get install -y docker-compose 38 | - apt-get install axel 39 | - /root/.cargo/bin/cargo install cargo-nextest 40 | - apt-get install postgresql -y 41 | - /root/.cargo/bin/cargo install sqlx-cli --version 0.5.13 42 | - service postgresql stop 43 | - git clone https://github.com/matter-labs/zksync-era.git /root/zksync-era 44 | - mv /root/.cargo/bin/cargo /usr/bin && export ZKSYNC_HOME=/root/zksync-era && export PATH=$ZKSYNC_HOME/bin:$PATH && cd /root/zksync-era && zk && zk init && zk server 45 | -------------------------------------------------------------------------------- /infrastructure/terraform/ssh.tf: -------------------------------------------------------------------------------- 1 | resource "hcloud_ssh_key" "default" { 2 | name = "hetzner_key" 3 | public_key = file("~/.ssh/tf_hetzner.pub") 4 | } 5 | -------------------------------------------------------------------------------- /infrastructure/terraform/terraform.tfvars: -------------------------------------------------------------------------------- 1 | hcloud_token = "" 2 | -------------------------------------------------------------------------------- /infrastructure/terraform/variable.tf: -------------------------------------------------------------------------------- 1 | variable "hcloud_token" { 2 | 3 | } 4 | 5 | variable "location" { 6 | default = "nbg1" 7 | } 8 | 9 | variable "http_protocol" { 10 | default = "http" 11 | } 12 | 13 | variable "http_port" { 14 | default = "80" 15 | } 16 | 17 | variable "server_type" { 18 | default = "cpx31" 19 | } 20 | 21 | variable "os_type" { 22 | default = "debian-12" 23 | } 24 | 25 | variable "disk_size" { 26 | default = "60" 27 | } 28 | 29 | variable "ip_range" { 30 | default = "10.0.1.0/24" 31 | } 32 | -------------------------------------------------------------------------------- /infrastructure/terraform/volumes.tf: -------------------------------------------------------------------------------- 1 | resource "hcloud_volume" "server_volume" { 2 | name = "zk-server-volume" 3 | size = var.disk_size 4 | location = var.location 5 | format = "xfs" 6 | } 7 | 8 | resource "hcloud_volume" "explorer_volume" { 9 | name = "zk-explorer-volume" 10 | size = var.disk_size 11 | location = var.location 12 | format = "xfs" 13 | } 14 | 15 | resource "hcloud_volume" "prometheus_grafana" { 16 | name = "zk-prometheus-grafana-volume" 17 | size = var.disk_size 18 | location = var.location 19 | format = "xfs" 20 | } 21 | 22 | resource "hcloud_volume_attachment" "server_vol_attachment" { 23 | volume_id = hcloud_volume.server_volume.id 24 | server_id = hcloud_server.server.id 25 | automount = true 26 | } 27 | 28 | resource "hcloud_volume_attachment" "explorer_vol_attachment" { 29 | volume_id = hcloud_volume.explorer_volume.id 30 | server_id = hcloud_server.explorer.id 31 | automount = true 32 | } 33 | -------------------------------------------------------------------------------- /infrastructure/terraform/web_servers.tf: -------------------------------------------------------------------------------- 1 | resource "hcloud_server" "server" { 2 | name = "zksync-server" 3 | image = var.os_type 4 | server_type = var.server_type 5 | location = var.location 6 | ssh_keys = [hcloud_ssh_key.default.id] 7 | labels = { 8 | type = "web" 9 | } 10 | user_data = file("server.yml") 11 | } 12 | 13 | resource "hcloud_server" "explorer" { 14 | name = "zksync-explorer" 15 | image = var.os_type 16 | server_type = var.server_type 17 | location = var.location 18 | ssh_keys = [hcloud_ssh_key.default.id] 19 | labels = { 20 | type = "web" 21 | } 22 | user_data = file("explorer.yml") 23 | } 24 | 25 | resource "hcloud_server" "prometheus_grafana" { 26 | name = "zksync-prometheus" 27 | image = var.os_type 28 | server_type = var.server_type 29 | location = var.location 30 | ssh_keys = [hcloud_ssh_key.default.id] 31 | labels = { 32 | type = "web" 33 | } 34 | user_data = file("prometheus_grafana.yml") 35 | } 36 | -------------------------------------------------------------------------------- /prometheus/prometheus.yml: -------------------------------------------------------------------------------- 1 | global: 2 | scrape_interval: 1s 3 | 4 | scrape_configs: 5 | - job_name: "telemetry_metrics_prometheus" 6 | metrics_path: "/metrics" 7 | static_configs: 8 | - targets: ["host.docker.internal:3312"] 9 | -------------------------------------------------------------------------------- /scripts/automate_transactions.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import random 3 | from time import sleep 4 | 5 | # Deploy ERC20 contract: 6 | # Run this command in root directory, and copy the output addres into erc20_address 7 | # zksync-era-cli --l2-port 3050 deploy --project-root contracts/ --contract contracts/ERC20.sol --contract-name ERC20 --constructor-args 0xde03a0B5963f75f1C8485B355fF6D30f3093BDE7 --private-key 0x27593fea79697e947890ecbecce7901b0008345e5d7259710d0dd5e500d040be --chain-id 270 8 | 9 | erc20_address = "0x755f0f59c65de6a9afd5267dc7c0546a0c05a23b" 10 | arc20_private_key = "0x27593fea79697e947890ecbecce7901b0008345e5d7259710d0dd5e500d040be" 11 | 12 | rich_wallets = [{"address": "0x27593fea79697e947890ecbecce7901b0008345e5d7259710d0dd5e500d040be"}] 13 | 14 | random_wallets = [{"address": "0xaEcaE5bAcBbE8be2854711243df66c3520751bE0", 15 | "private_key": "3b5612631e37c5fbf7d7e6ce78827b02ec273b066010a0208daa8d898d571e82"}, 16 | {"address": "0xb51473Db0e8e001fA0Ccbd5B80CEc36BEF3d4306", 17 | "private_key": "2fbad8907af7a46dacbbe642f368edba3581e492277d5319f5ace26d7d978466"}, 18 | {"address": "0xcB7946b862dd03dDe7a578BA2B610D03f6EEaE7C", 19 | "private_key": "54144e4c98058d93b85e9a0d3e5530a7078e92856cd3746a19ee1f2d5b0bc3c5"}, 20 | {"address": "0xd49F634edCdF6465EDcE4183AB1663D062B96f4e", 21 | "private_key": "9a3ee9566125508eb58f1da91d630c8c7b672f2e15c4321c71f7d073a51f3acc"}, 22 | {"address": "0xe6f7833Ed0549Dda68E271367285E70eB43e53dB", 23 | "private_key": "ad630e498af2b1590d7a6f7e20d64c7da69bd52324b503d4498ca66459710b10"}, 24 | ] 25 | 26 | def main(): 27 | for _ in range(100): 28 | try: 29 | subprocess.run(["zksync-era-cli", 30 | "--l2-port", "3050", "transfer", 31 | "--amount", str(random.randrange(1,200)), 32 | "--from", rich_wallets[0]['address'], 33 | "--to", random_wallets[random.randrange(0,4)]['address'], 34 | "--chain-id", "270"]) 35 | subprocess.run(["zksync-era-cli", 36 | "--l2-port", "3050", "send", 37 | "--contract", erc20_address, 38 | "--function", "transfer(address, uint256)", 39 | "--args", random_wallets[random.randrange(0,4)]['address'], str(random.randrange(1,200)), 40 | "--output-types", "bool", 41 | "--private-key", arc20_private_key, 42 | "--chain-id", "270"]) 43 | except subprocess.CalledProcessError as e: 44 | print(f'Command {e.cmd} failed with error {e.returncode}') 45 | 46 | 47 | if __name__ == "__main__": 48 | main() 49 | -------------------------------------------------------------------------------- /scripts/delete_containers.sh: -------------------------------------------------------------------------------- 1 | if [ "$(docker ps -a | grep -c "grafana")" -gt 0 ]; then 2 | docker stop grafana && docker rm grafana 3 | fi 4 | if [ "$(docker ps -a | grep -c "postgres-1")" -gt 0 ]; then 5 | docker stop zksync-era-postgres-1 && docker rm zksync-era-postgres-1 6 | fi 7 | if [ "$(docker ps -a | grep -c "prometheus")" -gt 0 ]; then 8 | docker stop prometheus && docker rm prometheus 9 | fi 10 | if [ "$(docker ps -a | grep -c "geth-1")" -gt 0 ]; then 11 | docker stop zksync-era-geth-1 && docker rm zksync-era-geth-1 12 | fi 13 | 14 | --------------------------------------------------------------------------------