diff --git a/Cargo.lock b/Cargo.lock index 2ddbc69b8f..d0be2e61be 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -75,9 +75,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.43" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf" +checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" [[package]] name = "arc-swap" @@ -749,11 +749,41 @@ dependencies = [ "atty", "bitflags", "strsim 0.8.0", - "textwrap", + "textwrap 0.11.0", "unicode-width", "vec_map", ] +[[package]] +name = "clap" +version = "3.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71c47df61d9e16dc010b55dba1952a57d8c215dbb533fd13cdd13369aac73b1c" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "indexmap", + "lazy_static 1.4.0", + "os_str_bytes", + "strsim 0.10.0", + "termcolor", + "textwrap 0.15.0", +] + +[[package]] +name = "clap_derive" +version = "3.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3aab4734e083b809aaf5794e14e756d1c798d2c69c7f7de7a09a2f5214993c1" +dependencies = [ + "heck 0.4.0", + "proc-macro-error", + "proc-macro2 1.0.28", + "quote 1.0.9", + "syn 1.0.74", +] + [[package]] name = "cloudabi" version = "0.0.3" @@ -891,7 +921,7 @@ checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10" dependencies = [ "atty", "cast", - "clap", + "clap 2.33.3", "criterion-plot", "csv", "itertools 0.10.1", @@ -1088,7 +1118,7 @@ checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" dependencies = [ "bstr", "csv-core", - "itoa", + "itoa 0.4.7", "ryu", "serde", ] @@ -1337,6 +1367,12 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + [[package]] name = "dtoa" version = "0.4.8" @@ -1459,7 +1495,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" dependencies = [ - "log 0.4.14", + "log 0.4.16", "regex", ] @@ -1471,7 +1507,20 @@ checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" dependencies = [ "atty", "humantime", - "log 0.4.14", + "log 0.4.16", + "regex", + "termcolor", +] + +[[package]] +name = "env_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime", + "log 0.4.16", "regex", "termcolor", ] @@ -1637,7 +1686,7 @@ dependencies = [ "evm-core", "evm-gasometer", "evm-runtime", - "log 0.4.14", + "log 0.4.16", "parity-scale-codec", "primitive-types", "rlp", @@ -1645,6 +1694,29 @@ dependencies = [ "sha3 0.8.2", ] +[[package]] +name = "evm-block-recovery" +version = "0.1.0" +dependencies = [ + "anyhow", + "bincode", + "chrono", + "clap 3.1.8", + "dotenv", + "env_logger 0.9.0", + "evm-rpc", + "evm-state", + "log 0.4.16", + "serde", + "serde_json", + "solana-client", + "solana-evm-loader-program", + "solana-sdk", + "solana-storage-bigtable", + "solana-transaction-status", + "tokio 1.9.0", +] + [[package]] name = "evm-bridge" version = "0.1.0" @@ -1661,7 +1733,7 @@ dependencies = [ "jsonrpc-http-server", "jsonrpc-pubsub", "jsonrpc-ws-server", - "log 0.4.14", + "log 0.4.16", "once_cell", "paw", "primitive-types", @@ -1763,7 +1835,7 @@ dependencies = [ "itertools 0.10.1", "keccak-hash", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "once_cell", "paste 1.0.5", "primitive-types", @@ -2139,7 +2211,7 @@ dependencies = [ "aho-corasick", "bstr", "fnv", - "log 0.4.14", + "log 0.4.16", "regex", ] @@ -2151,7 +2223,7 @@ checksum = "d94101e84ede813c04773b0a43396c01b5a3a9376537dbce1125858ae090ae60" dependencies = [ "arc-swap 1.3.0", "futures 0.3.16", - "log 0.4.14", + "log 0.4.16", "reqwest", "serde", "serde_derive", @@ -2168,7 +2240,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "669cdc3826f69a51d3f8fc3f86de81c2378110254f678b8407977736122057a4" dependencies = [ - "log 0.4.14", + "log 0.4.16", "plain", "scroll", ] @@ -2249,6 +2321,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -2346,7 +2424,7 @@ checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" dependencies = [ "bytes 1.0.1", "fnv", - "itoa", + "itoa 0.4.7", ] [[package]] @@ -2412,7 +2490,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa", + "itoa 0.4.7", "pin-project-lite", "socket2 0.4.1", "tokio 1.9.0", @@ -2429,7 +2507,7 @@ checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" dependencies = [ "futures-util", "hyper 0.14.11", - "log 0.4.14", + "log 0.4.16", "rustls", "tokio 1.9.0", "tokio-rustls", @@ -2608,6 +2686,12 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" + [[package]] name = "jemalloc-ctl" version = "0.3.3" @@ -2669,7 +2753,7 @@ dependencies = [ "jsonrpc-core", "jsonrpc-pubsub", "jsonrpc-server-utils", - "log 0.4.14", + "log 0.4.16", "parity-tokio-ipc", "serde", "serde_json", @@ -2687,7 +2771,7 @@ dependencies = [ "futures 0.3.16", "futures-executor", "futures-util", - "log 0.4.14", + "log 0.4.16", "serde", "serde_derive", "serde_json", @@ -2725,7 +2809,7 @@ dependencies = [ "hyper 0.14.11", "jsonrpc-core", "jsonrpc-server-utils", - "log 0.4.14", + "log 0.4.16", "net2", "parking_lot 0.11.1", "unicase 2.6.0", @@ -2740,7 +2824,7 @@ dependencies = [ "futures 0.3.16", "jsonrpc-core", "jsonrpc-server-utils", - "log 0.4.14", + "log 0.4.16", "parity-tokio-ipc", "parking_lot 0.11.1", "tower-service", @@ -2755,7 +2839,7 @@ dependencies = [ "futures 0.3.16", "jsonrpc-core", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "parking_lot 0.11.1", "rand 0.7.3", "serde", @@ -2772,7 +2856,7 @@ dependencies = [ "globset", "jsonrpc-core", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "tokio 1.9.0", "tokio-stream", "tokio-util 0.6.7", @@ -2788,7 +2872,7 @@ dependencies = [ "futures 0.3.16", "jsonrpc-core", "jsonrpc-server-utils", - "log 0.4.14", + "log 0.4.16", "parity-ws", "parking_lot 0.11.1", "slab", @@ -3034,14 +3118,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.14", + "log 0.4.16", ] [[package]] name = "log" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" dependencies = [ "cfg-if 1.0.0", ] @@ -3137,7 +3221,7 @@ dependencies = [ "iovec", "kernel32-sys", "libc", - "log 0.4.14", + "log 0.4.16", "miow 0.2.2", "net2", "slab", @@ -3151,7 +3235,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16" dependencies = [ "libc", - "log 0.4.14", + "log 0.4.16", "miow 0.3.7", "ntapi", "winapi 0.3.9", @@ -3164,7 +3248,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" dependencies = [ "lazycell", - "log 0.4.14", + "log 0.4.16", "mio 0.6.23", "slab", ] @@ -3209,7 +3293,7 @@ checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" dependencies = [ "lazy_static 1.4.0", "libc", - "log 0.4.14", + "log 0.4.16", "openssl", "openssl-probe", "openssl-sys", @@ -3434,6 +3518,15 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "os_str_bytes" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" +dependencies = [ + "memchr", +] + [[package]] name = "ouroboros" version = "0.5.1" @@ -3489,7 +3582,7 @@ checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" dependencies = [ "futures 0.3.16", "libc", - "log 0.4.14", + "log 0.4.16", "rand 0.7.3", "tokio 1.9.0", "winapi 0.3.9", @@ -3504,7 +3597,7 @@ dependencies = [ "byteorder", "bytes 0.4.12", "httparse", - "log 0.4.14", + "log 0.4.16", "mio 0.6.23", "mio-extras", "rand 0.7.3", @@ -3954,7 +4047,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" dependencies = [ "env_logger 0.7.1", - "log 0.4.14", + "log 0.4.16", "rand 0.7.3", "rand_core 0.5.1", ] @@ -3966,7 +4059,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6" dependencies = [ "env_logger 0.8.4", - "log 0.4.14", + "log 0.4.16", "rand 0.8.4", ] @@ -4343,7 +4436,7 @@ dependencies = [ "ipnet", "js-sys", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "mime 0.3.16", "native-tls", "percent-encoding 2.1.0", @@ -4493,7 +4586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" dependencies = [ "base64 0.13.0", - "log 0.4.14", + "log 0.4.16", "ring", "sct", "webpki", @@ -4709,11 +4802,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.66" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" dependencies = [ - "itoa", + "itoa 1.0.1", "ryu", "serde", ] @@ -4725,7 +4818,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" dependencies = [ "form_urlencoded", - "itoa", + "itoa 0.4.7", "ryu", "serde", ] @@ -4913,7 +5006,7 @@ dependencies = [ "atty", "chrono", "colored", - "log 0.4.14", + "log 0.4.16", "winapi 0.3.9", ] @@ -4945,7 +5038,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4370044f8b20f944e05c35d77edd3518e6f21fc4de77e593919f287c6a3f428a" dependencies = [ "base64 0.13.0", - "log 0.4.14", + "log 0.4.16", "openssl", "serde", "serde_derive", @@ -5024,9 +5117,9 @@ dependencies = [ name = "solana-accounts-bench" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "crossbeam-channel 0.4.4", - "log 0.4.14", + "log 0.4.16", "rand 0.7.3", "rayon", "solana-logger 1.6.14", @@ -5040,8 +5133,8 @@ dependencies = [ name = "solana-accounts-cluster-bench" version = "1.6.14" dependencies = [ - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "rand 0.7.3", "rayon", "solana-account-decoder", @@ -5064,9 +5157,9 @@ dependencies = [ name = "solana-banking-bench" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "crossbeam-channel 0.4.4", - "log 0.4.14", + "log 0.4.16", "rand 0.7.3", "rayon", "solana-clap-utils", @@ -5117,7 +5210,7 @@ version = "1.6.14" dependencies = [ "bincode", "futures 0.3.16", - "log 0.4.14", + "log 0.4.16", "mio 0.7.13", "solana-banks-interface", "solana-metrics", @@ -5133,9 +5226,9 @@ dependencies = [ name = "solana-bench-exchange" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "itertools 0.9.0", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "rand 0.7.3", @@ -5161,7 +5254,7 @@ dependencies = [ name = "solana-bench-streamer" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "solana-clap-utils", "solana-logger 1.6.14", "solana-net-utils", @@ -5174,8 +5267,8 @@ name = "solana-bench-tps" version = "1.6.14" dependencies = [ "bincode", - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "rayon", "serde_json", "serde_yaml", @@ -5200,8 +5293,8 @@ name = "solana-bench-tps-evm" version = "1.0.0" dependencies = [ "bincode", - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "rand_isaac", "rayon", "serde_json", @@ -5231,7 +5324,7 @@ version = "1.6.14" dependencies = [ "bincode", "byteorder", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "rand 0.7.3", @@ -5251,7 +5344,7 @@ version = "1.6.14" dependencies = [ "bincode", "chrono", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "serde", @@ -5267,7 +5360,7 @@ version = "1.6.14" dependencies = [ "bzip2", "cargo_metadata", - "clap", + "clap 2.33.3", "solana-download-utils", "solana-sdk", "tar", @@ -5278,7 +5371,7 @@ name = "solana-cargo-test-bpf" version = "1.6.14" dependencies = [ "cargo_metadata", - "clap", + "clap 2.33.3", ] [[package]] @@ -5286,7 +5379,7 @@ name = "solana-clap-utils" version = "1.6.14" dependencies = [ "chrono", - "clap", + "clap 2.33.3", "rpassword", "solana-remote-wallet", "solana-sdk", @@ -5306,7 +5399,7 @@ dependencies = [ "bincode", "bs58", "chrono", - "clap", + "clap 2.33.3", "console 0.11.3", "criterion-stats", "ctrlc", @@ -5316,7 +5409,7 @@ dependencies = [ "hex", "humantime", "indicatif", - "log 0.4.14", + "log 0.4.16", "num-traits", "pretty-hex", "reqwest", @@ -5392,14 +5485,14 @@ dependencies = [ "base64 0.13.0", "bincode", "bs58", - "clap", + "clap 2.33.3", "derivative", "evm-rpc", "evm-state", "indicatif", "jsonrpc-core", "jsonrpc-http-server", - "log 0.4.14", + "log 0.4.16", "net2", "rayon", "reqwest", @@ -5430,7 +5523,7 @@ version = "1.6.14" dependencies = [ "bincode", "chrono", - "log 0.4.14", + "log 0.4.16", "rand_core 0.6.3", "serde", "serde_derive", @@ -5468,7 +5561,7 @@ dependencies = [ "jsonrpc-pubsub", "jsonrpc-ws-server", "libc", - "log 0.4.14", + "log 0.4.16", "lru", "matches", "miow 0.2.2", @@ -5559,8 +5652,8 @@ name = "solana-dos" version = "1.6.14" dependencies = [ "bincode", - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "rand 0.7.3", "rayon", "solana-clap-utils", @@ -5581,7 +5674,7 @@ dependencies = [ "bzip2", "console 0.11.3", "indicatif", - "log 0.4.14", + "log 0.4.16", "reqwest", "solana-runtime", "solana-sdk", @@ -5600,7 +5693,7 @@ dependencies = [ "evm-state", "hex", "hex-literal", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "once_cell", @@ -5622,7 +5715,7 @@ name = "solana-exchange-program" version = "1.6.14" dependencies = [ "bincode", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "serde", @@ -5648,8 +5741,8 @@ version = "1.6.14" dependencies = [ "bincode", "byteorder", - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "serde", "serde_derive", "solana-clap-utils", @@ -5670,7 +5763,7 @@ dependencies = [ "bs58", "bv", "generic-array 0.14.4", - "log 0.4.14", + "log 0.4.16", "memmap2", "rustc_version 0.2.3", "serde", @@ -5690,7 +5783,7 @@ dependencies = [ "bs58", "bv", "generic-array 0.14.4", - "log 0.4.14", + "log 0.4.16", "memmap2", "rustc_version 0.2.3", "serde", @@ -5730,10 +5823,10 @@ version = "1.6.14" dependencies = [ "base64 0.12.3", "chrono", - "clap", + "clap 2.33.3", "evm-rpc", "evm-state", - "log 0.4.14", + "log 0.4.16", "once_cell", "serde", "serde_json", @@ -5759,7 +5852,7 @@ name = "solana-keygen" version = "1.6.14" dependencies = [ "bs58", - "clap", + "clap 2.33.3", "dirs-next", "num_cpus", "solana-clap-utils", @@ -5790,7 +5883,7 @@ dependencies = [ "itertools 0.9.0", "lazy_static 1.4.0", "libc", - "log 0.4.14", + "log 0.4.16", "matches", "num_cpus", "prost", @@ -5836,7 +5929,7 @@ dependencies = [ "assert_cmd", "bs58", "bytecount", - "clap", + "clap 2.33.3", "csv", "evm-rpc", "evm-state", @@ -5844,7 +5937,7 @@ dependencies = [ "futures-util", "histogram", "itertools 0.9.0", - "log 0.4.14", + "log 0.4.16", "quickcheck 1.0.3", "quickcheck_macros 1.0.0", "rayon", @@ -5880,7 +5973,7 @@ dependencies = [ "fs_extra", "gag", "itertools 0.9.0", - "log 0.4.14", + "log 0.4.16", "rand 0.7.3", "rayon", "serial_test", @@ -5906,7 +5999,7 @@ name = "solana-log-analyzer" version = "1.6.14" dependencies = [ "byte-unit", - "clap", + "clap 2.33.3", "serde", "serde_json", "solana-clap-utils", @@ -5920,7 +6013,7 @@ version = "1.6.14" dependencies = [ "env_logger 0.8.4", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", ] [[package]] @@ -5931,7 +6024,7 @@ checksum = "46823a4af30167a864e38258c2ae803cebac0b19bde9575dc1bdd0e3453c8ccd" dependencies = [ "env_logger 0.8.4", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", ] [[package]] @@ -5940,7 +6033,7 @@ version = "1.6.14" dependencies = [ "jemalloc-ctl", "jemallocator", - "log 0.4.14", + "log 0.4.16", "solana-metrics", "solana-sdk", ] @@ -5949,8 +6042,8 @@ dependencies = [ name = "solana-merkle-root-bench" version = "1.6.14" dependencies = [ - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "solana-logger 1.6.14", "solana-measure", "solana-runtime", @@ -5975,7 +6068,7 @@ dependencies = [ "env_logger 0.8.4", "gethostname", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "rand 0.7.3", "reqwest", "serial_test", @@ -5986,7 +6079,7 @@ dependencies = [ name = "solana-net-shaper" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "rand 0.7.3", "serde", "serde_json", @@ -5999,8 +6092,8 @@ name = "solana-net-utils" version = "1.6.14" dependencies = [ "bincode", - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "nix 0.23.1", "rand 0.7.3", "serde", @@ -6017,7 +6110,7 @@ dependencies = [ name = "solana-noop-program" version = "1.6.14" dependencies = [ - "log 0.4.14", + "log 0.4.16", "solana-logger 1.6.14", "solana-sdk", ] @@ -6026,7 +6119,7 @@ dependencies = [ name = "solana-notifier" version = "1.6.14" dependencies = [ - "log 0.4.14", + "log 0.4.16", "reqwest", "serde_json", ] @@ -6052,7 +6145,7 @@ dependencies = [ "dlopen", "dlopen_derive", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "matches", "rand 0.7.3", "rayon", @@ -6069,8 +6162,8 @@ dependencies = [ name = "solana-poh-bench" version = "1.6.14" dependencies = [ - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "rand 0.7.3", "rayon", "solana-clap-utils", @@ -6097,7 +6190,7 @@ dependencies = [ "hex", "itertools 0.9.0", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "rand 0.7.3", @@ -6133,7 +6226,7 @@ dependencies = [ "itertools 0.9.0", "lazy_static 1.4.0", "libsecp256k1 0.5.0", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "rand 0.7.3", @@ -6161,7 +6254,7 @@ dependencies = [ "bincode", "chrono", "chrono-humanize", - "log 0.4.14", + "log 0.4.16", "mio 0.7.13", "serde", "serde_derive", @@ -6182,8 +6275,8 @@ name = "solana-ramp-tps" version = "1.6.14" dependencies = [ "bzip2", - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "reqwest", "serde", "serde_json", @@ -6215,7 +6308,7 @@ dependencies = [ "console 0.11.3", "dialoguer", "hidapi", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "parking_lot 0.10.2", @@ -6249,7 +6342,7 @@ dependencies = [ "lazy_static 1.4.0", "libc", "libloading 0.6.7", - "log 0.4.14", + "log 0.4.16", "memmap2", "num-derive", "num-traits", @@ -6315,7 +6408,7 @@ dependencies = [ "keccak-hasher", "lazy_static 1.4.0", "libsecp256k1 0.7.0", - "log 0.4.14", + "log 0.4.16", "memmap2", "num-derive", "num-traits", @@ -6389,7 +6482,7 @@ name = "solana-sleep-program" version = "1.5.14" dependencies = [ "byteorder", - "log 0.4.14", + "log 0.4.16", "solana-logger 1.6.14", "solana-sdk", ] @@ -6398,7 +6491,7 @@ dependencies = [ name = "solana-stake-accounts" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "solana-clap-utils", "solana-cli-config", "solana-client", @@ -6412,9 +6505,9 @@ dependencies = [ name = "solana-stake-monitor" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "console 0.11.3", - "log 0.4.14", + "log 0.4.16", "serde", "serde_yaml", "serial_test", @@ -6436,8 +6529,8 @@ dependencies = [ name = "solana-stake-o-matic" version = "1.6.14" dependencies = [ - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "reqwest", "semver 0.9.0", "serde", @@ -6461,7 +6554,7 @@ name = "solana-stake-program" version = "1.6.14" dependencies = [ "bincode", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "rustc_version 0.2.3", @@ -6491,7 +6584,7 @@ dependencies = [ "flate2", "futures 0.3.16", "goauth", - "log 0.4.14", + "log 0.4.16", "prost", "prost-types", "rand_core 0.6.3", @@ -6526,8 +6619,8 @@ dependencies = [ name = "solana-store-tool" version = "1.6.14" dependencies = [ - "clap", - "log 0.4.14", + "clap 2.33.3", + "log 0.4.16", "solana-logger 1.6.14", "solana-measure", "solana-runtime", @@ -6540,7 +6633,7 @@ name = "solana-streamer" version = "1.6.14" dependencies = [ "libc", - "log 0.4.14", + "log 0.4.16", "nix 0.23.1", "solana-logger 1.6.14", "solana-measure", @@ -6554,9 +6647,9 @@ dependencies = [ name = "solana-sys-tuner" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "libc", - "log 0.4.14", + "log 0.4.16", "nix 0.23.1", "solana-clap-utils", "solana-logger 1.6.14", @@ -6572,7 +6665,7 @@ version = "1.6.14" dependencies = [ "bincode", "chrono", - "clap", + "clap 2.33.3", "console 0.11.3", "csv", "ctrlc", @@ -6638,7 +6731,7 @@ dependencies = [ name = "solana-version" version = "0.5.1" dependencies = [ - "log 0.4.14", + "log 0.4.16", "rustc_version 0.2.3", "serde", "serde_derive", @@ -6669,7 +6762,7 @@ name = "solana-vote-program" version = "1.6.14" dependencies = [ "bincode", - "log 0.4.14", + "log 0.4.16", "num-derive", "num-traits", "rustc_version 0.2.3", @@ -6687,9 +6780,9 @@ dependencies = [ name = "solana-watchtower" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "humantime", - "log 0.4.14", + "log 0.4.16", "solana-clap-utils", "solana-cli-config", "solana-cli-output", @@ -6712,7 +6805,7 @@ dependencies = [ "goblin", "hash32", "libc", - "log 0.4.14", + "log 0.4.16", "rand 0.7.3", "scroll", "thiserror", @@ -6846,7 +6939,7 @@ version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69b041cdcb67226aca307e6e7be44c8806423d83e018bd662360a93dabce4d71" dependencies = [ - "clap", + "clap 2.33.3", "lazy_static 1.4.0", "paw", "structopt-derive", @@ -6858,7 +6951,7 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7813934aecf5f51a54775e00068c237de98489463968231a51746bbbc03f9c10" dependencies = [ - "heck", + "heck 0.3.3", "proc-macro-error", "proc-macro2 1.0.28", "quote 1.0.9", @@ -6972,7 +7065,7 @@ dependencies = [ "fnv", "futures 0.3.16", "humantime", - "log 0.4.14", + "log 0.4.16", "pin-project", "rand 0.7.3", "serde", @@ -7045,6 +7138,12 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "textwrap" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" + [[package]] name = "thiserror" version = "1.0.26" @@ -7282,7 +7381,7 @@ checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" dependencies = [ "bytes 0.4.12", "futures 0.1.31", - "log 0.4.14", + "log 0.4.16", ] [[package]] @@ -7325,7 +7424,7 @@ dependencies = [ "crossbeam-utils 0.7.2", "futures 0.1.31", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "mio 0.6.23", "num_cpus", "parking_lot 0.9.0", @@ -7408,7 +7507,7 @@ dependencies = [ "crossbeam-utils 0.7.2", "futures 0.1.31", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "num_cpus", "slab", "tokio-executor", @@ -7445,7 +7544,7 @@ checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" dependencies = [ "bytes 0.4.12", "futures 0.1.31", - "log 0.4.14", + "log 0.4.16", "mio 0.6.23", "tokio-codec", "tokio-io", @@ -7462,7 +7561,7 @@ dependencies = [ "futures 0.1.31", "iovec", "libc", - "log 0.4.14", + "log 0.4.16", "mio 0.6.23", "mio-uds", "tokio-codec", @@ -7479,7 +7578,7 @@ dependencies = [ "bytes 1.0.1", "futures-core", "futures-sink", - "log 0.4.14", + "log 0.4.16", "pin-project-lite", "tokio 1.9.0", ] @@ -7493,7 +7592,7 @@ dependencies = [ "bytes 1.0.1", "futures-core", "futures-sink", - "log 0.4.14", + "log 0.4.16", "pin-project-lite", "tokio 1.9.0", ] @@ -7577,7 +7676,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a1e75297b57b61495169dd40dd86e0ab52bfc7cdba570f59be5683709c9d480" dependencies = [ - "log 0.4.14", + "log 0.4.16", ] [[package]] @@ -7587,7 +7686,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" dependencies = [ "cfg-if 1.0.0", - "log 0.4.14", + "log 0.4.16", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -7652,7 +7751,7 @@ dependencies = [ "anyhow", "dashmap", "derivative", - "log 0.4.14", + "log 0.4.16", "primitive-types", "rlp", "rocksdb", @@ -7688,7 +7787,7 @@ dependencies = [ "http", "httparse", "input_buffer", - "log 0.4.14", + "log 0.4.16", "native-tls", "rand 0.7.3", "sha-1", @@ -7701,7 +7800,7 @@ name = "txpool" version = "1.0.0-alpha" source = "git+https://github.com/velas/transaction-pool?tag=v1.0.0-alpha#2f532dd0c1f7db02bea86e5d492d0eb428fcfe00" dependencies = [ - "log 0.4.14", + "log 0.4.16", "smallvec 0.6.14", "trace-time", ] @@ -7860,7 +7959,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4227e95324a443c9fcb06e03d4d85e91aabe9a5a02aa818688b6918b6af486" dependencies = [ "libc", - "log 0.4.14", + "log 0.4.16", ] [[package]] @@ -7902,7 +8001,7 @@ dependencies = [ name = "velas-gossip" version = "1.6.14" dependencies = [ - "clap", + "clap 2.33.3", "solana-clap-utils", "solana-core", "solana-logger 1.6.14", @@ -7919,7 +8018,7 @@ dependencies = [ "bincode", "bzip2", "chrono", - "clap", + "clap 2.33.3", "console 0.11.3", "ctrlc", "dirs-next", @@ -7962,7 +8061,7 @@ dependencies = [ "base64 0.12.3", "bincode", "chrono", - "clap", + "clap 2.33.3", "console 0.11.3", "core_affinity", "evm-state", @@ -7974,7 +8073,7 @@ dependencies = [ "jsonrpc-ipc-server", "jsonrpc-server-utils", "libc", - "log 0.4.14", + "log 0.4.16", "num_cpus", "rand 0.7.3", "serde", @@ -8042,7 +8141,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" dependencies = [ - "log 0.4.14", + "log 0.4.16", "try-lock", ] @@ -8078,7 +8177,7 @@ checksum = "580aa3a91a63d23aac5b6b267e2d13cb4f363e31dce6c352fca4752ae12e479f" dependencies = [ "bumpalo", "lazy_static 1.4.0", - "log 0.4.14", + "log 0.4.16", "proc-macro2 1.0.28", "quote 1.0.9", "syn 1.0.74", diff --git a/Cargo.toml b/Cargo.toml index f60026c0ee..e8b7184093 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,6 +40,7 @@ members = [ "metrics", "net-shaper", "notifier", + "evm-utils/evm-block-recovery", "evm-utils/evm-bridge", "evm-utils/programs/evm_loader", "evm-utils/evm-state", diff --git a/client/src/rpc_request.rs b/client/src/rpc_request.rs index f2c60fe19c..0cd47ab959 100644 --- a/client/src/rpc_request.rs +++ b/client/src/rpc_request.rs @@ -105,6 +105,9 @@ pub enum RpcRequest { GetVelasAccountsByOperationalKey, GetVelasAccountsByOwnerKey, GetVelasRelyingPartiesByOwnerKey, + + /// Debug + DebugRecoverBlockHeader, } #[allow(deprecated)] @@ -193,6 +196,7 @@ impl fmt::Display for RpcRequest { RpcRequest::GetVelasAccountsByOperationalKey => "getVelasAccountsByOperationalKey", RpcRequest::GetVelasAccountsByOwnerKey => "getVelasAccountsByOwnerKey", RpcRequest::GetVelasRelyingPartiesByOwnerKey => "getVelasRelyingPartiesByOwnerKey", + RpcRequest::DebugRecoverBlockHeader => "debug_recoverBlockHeader", }; write!(f, "{}", method) diff --git a/core/src/evm_rpc_impl/mod.rs b/core/src/evm_rpc_impl/mod.rs index 8eb31ff2aa..ad06e77faf 100644 --- a/core/src/evm_rpc_impl/mod.rs +++ b/core/src/evm_rpc_impl/mod.rs @@ -1,8 +1,10 @@ use std::str::FromStr; use sha3::{Digest, Keccak256}; +use solana_sdk::account::AccountSharedData; use solana_sdk::commitment_config::CommitmentConfig; use solana_sdk::keyed_account::KeyedAccount; +use solana_sdk::pubkey::Pubkey; use crate::rpc::JsonRpcRequestProcessor; use evm_rpc::error::EvmStateError; @@ -15,12 +17,15 @@ use evm_rpc::{ RPCTopicFilter, RPCTransaction, }; use evm_state::{ - AccountProvider, AccountState, Address, Gas, LogFilter, TransactionAction, H160, H256, U256, + AccountProvider, AccountState, Address, Block, BlockHeader, Committed, ExecutionResult, Gas, LogFilter, + Transaction, TransactionAction, TransactionInReceipt, TransactionReceipt, TransactionSignature, + UnsignedTransactionWithCaller, H160, H256, U256, }; use jsonrpc_core::BoxFuture; use snafu::ensure; use snafu::ResultExt; use solana_runtime::bank::Bank; +use std::convert::TryInto; use std::{cell::RefCell, future::ready, sync::Arc}; const GAS_PRICE: u64 = 3; @@ -570,6 +575,69 @@ impl BasicERPC for BasicErpcImpl { }) } + fn recover_block_header( + &self, + meta: JsonRpcRequestProcessor, + txs: Vec<(RPCTransaction, Vec)>, + last_hashes: Vec, + block_header: BlockHeader, + state_root: H256, + ) -> Result<(Block, Vec>), Error> { + let mut evm_state = meta + .evm_state_archive() + .ok_or(Error::ArchiveNotSupported)? + .new_incomming_for_root(state_root) + .ok_or(Error::StateNotFoundForBlock { + block: BlockId::Num(Hex(block_header.block_number)), + })?; + evm_state.state.block_number = block_header.block_number; + evm_state.state.timestamp = block_header.timestamp; + evm_state.state.last_block_hash = block_header.parent_hash; + + let evm_config = evm_state::EvmConfig { + chain_id: meta.bank(None).evm_chain_id, + estimate: false, + ..Default::default() + }; + + let last_hashes = last_hashes + .try_into() + .map_err(|_| Error::InvalidParams {})?; + let mut executor = evm_state::Executor::with_config( + evm_state, + evm_state::ChainContext::new(last_hashes), + evm_config, + ); + + let mut warn = vec![]; + debug!("running evm executor = {:?}", executor); + for (tx, meta_keys) in txs { + let meta_keys = meta_keys + .iter() + .map(|s| solana_sdk::pubkey::Pubkey::from_str(s)) + .collect::, _>>() + .map_err(|_| Error::InvalidParams {})?; + match simulate_transaction(&mut executor, tx.clone(), meta_keys) { + Ok(_result) => (), + Err(err) => { + log::warn!("Tx {:?} simulation failed: {:?}", &tx.hash, &tx); + log::warn!("RPC Error: {:?}", &err); + warn.push(tx.hash.unwrap_or_default()); + }, + }; + } + + let Committed { block: header, committed_transactions: transactions } = executor + .evm_backend + .commit_block( + block_header.native_chain_slot, + block_header.native_chain_hash, + ) + .state; + + Ok((Block { header, transactions }, warn)) + } + fn estimate_gas( &self, meta: Self::Metadata, @@ -733,6 +801,159 @@ fn call_many( Ok(result) } +fn simulate_transaction( + executor: &mut evm_state::Executor, + tx: RPCTransaction, + meta_keys: Vec, +) -> Result { + use solana_evm_loader_program::precompiles::*; + let caller = tx.from.map(|a| a.0).unwrap_or_default(); + + let value = tx.value.map(|a| a.0).unwrap_or_else(|| 0.into()); + let input = tx.input.map(|a| a.0).unwrap_or_else(Vec::new); + let gas_limit = tx.gas.map(|a| a.0).unwrap_or_else(|| u64::MAX.into()); + let gas_price = tx.gas_price.map(|a| a.0).unwrap_or_else(|| u64::MAX.into()); + + let nonce = tx + .nonce + .map(|a| a.0) + .unwrap_or_else(|| executor.nonce(caller)); + let tx_chain_id = executor.chain_id(); + let tx_hash = tx.hash.map(|a| a.0).unwrap_or_else(H256::random); + + let evm_state_balance = u64::MAX - 1; + + let (user_accounts, action) = if let Some(address) = tx.to { + let address = address.0; + debug!( + "Trying to execute tx = {:?}", + (caller, address, value, &input, gas_limit) + ); + + let mut meta_keys: Vec<_> = meta_keys + .into_iter() + .map(|pk| { + let user_account = RefCell::new(AccountSharedData::new( + u64::MAX, + 0, + &solana_sdk::system_program::id(), + )); + (user_account, pk) + }) + .collect(); + + // Shortcut for swap tokens to native, will add solana account to transaction. + if address == *ETH_TO_VLX_ADDR { + debug!("Found transferToNative transaction"); + match ETH_TO_VLX_CODE.parse_abi(&input) { + Ok(pk) => { + info!("Adding account to meta = {}", pk); + + let user_account = RefCell::new(AccountSharedData::new( + u64::MAX, + 0, + &solana_sdk::system_program::id(), + )); + meta_keys.push((user_account, pk)) + } + Err(e) => { + error!("Error in parsing abi = {}", e); + } + } + } + + (meta_keys, TransactionAction::Call(address)) + } else { + (vec![], TransactionAction::Create) + }; + + // system transfers always set s = 0x1 + let mut is_native_swap = false; + if Some(Hex(U256::from(0x1))) == tx.s { + // check if it native swap, then predeposit, amount, to pass transaction + if caller == *ETH_TO_VLX_ADDR { + is_native_swap = true; + let amount = value + gas_limit * gas_price; + executor.deposit(caller, amount) + } + } + + let user_accounts: Vec<_> = user_accounts + .iter() + .map(|(user_account, pk)| KeyedAccount::new(pk, false, user_account)) + .collect(); + + let mut result = executor + .transaction_execute_raw( + caller, + nonce, + gas_price, + gas_limit, + action, + input.clone(), + value, + Some(tx_chain_id), + tx_hash, + solana_evm_loader_program::precompiles::simulation_entrypoint( + executor.support_precompile(), + evm_state_balance, + &user_accounts, + ), + ) + .with_context(|| EvmStateError)?; + + let mut bytes: [u8; 32] = [0; 32]; + tx.r.ok_or(Error::InvalidParams {})? + .0 + .to_big_endian(&mut bytes); + let r = H256::from_slice(&bytes); + tx.s.ok_or(Error::InvalidParams {})? + .0 + .to_big_endian(&mut bytes); + let s = H256::from_slice(&bytes); + let transaction = Transaction { + nonce, + gas_price, + gas_limit, + action, + value, + signature: TransactionSignature { + v: *tx.v.ok_or(Error::InvalidParams {})?, + r, + s, + }, + input, + }; + + let tx_hashes = executor.evm_backend.get_executed_transactions(); + assert!(!tx_hashes.contains(&tx_hash)); + + let transaction = if is_native_swap { + result.used_gas = 0; + TransactionInReceipt::Unsigned(UnsignedTransactionWithCaller { + unsigned_tx: transaction.into(), + caller: *ETH_TO_VLX_ADDR, + chain_id: tx_chain_id, + signed_compatible: true, + }) + } else { + TransactionInReceipt::Signed(transaction) + }; + let receipt = TransactionReceipt::new( + transaction, + result.used_gas, + executor.evm_backend.block_number(), + tx_hashes.len() as u64 + 1, + result.tx_logs.clone(), + (result.exit_reason.clone(), result.exit_data.clone()), + ); + executor + .evm_backend + .push_transaction_receipt(tx_hash, receipt); + + Ok(result) +} + fn call_inner( executor: &mut evm_state::Executor, tx: RPCTransaction, diff --git a/evm-utils/evm-block-recovery/.gitignore b/evm-utils/evm-block-recovery/.gitignore new file mode 100644 index 0000000000..d918126ce6 --- /dev/null +++ b/evm-utils/evm-block-recovery/.gitignore @@ -0,0 +1,2 @@ +/target/ +.env diff --git a/evm-utils/evm-block-recovery/Cargo.lock b/evm-utils/evm-block-recovery/Cargo.lock new file mode 100644 index 0000000000..77ef7ddc1e --- /dev/null +++ b/evm-utils/evm-block-recovery/Cargo.lock @@ -0,0 +1,5398 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" + +[[package]] +name = "arc-swap" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dabe5a181f83789739c194cbe5a897dde195078fac08568d09221fd6137a7ba8" + +[[package]] +name = "arc-swap" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d78ce20460b82d3fa150275ed9d55e21064fc7951177baacf86a145c4a4b1f" + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-stream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "171374e7e3b2504e0e5236e3b59260560f9fe94bfe9ac39ba5e4e929c5590625" +dependencies = [ + "async-stream-impl", + "futures-core", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "async-trait" +version = "0.1.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "auto_enums" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe0dfe45d75158751e195799f47ea02e81f570aa24bc5ef999cdd9e888c4b5c3" +dependencies = [ + "auto_enums_core", + "auto_enums_derive", +] + +[[package]] +name = "auto_enums_core" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da47c46001293a2c4b744d731958be22cff408a2ab76e2279328f9713b1267b4" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "auto_enums_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41aed1da83ecdc799503b7cb94da1b45a34d72b49caf40a61d9cf5b88ec07cfd" +dependencies = [ + "autocfg 1.1.0", + "derive_utils", + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "autocfg" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backoff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fe17f59a06fe8b87a6fc8bf53bb70b3aba76d7685f432487a68cd5552853625" +dependencies = [ + "futures-core", + "getrandom 0.2.5", + "instant", + "pin-project", + "rand 0.8.5", + "tokio 1.17.0", +] + +[[package]] +name = "backtrace" +version = "0.3.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ed203b9ba68b242c62b3fb7480f589dd49829be1edb3fe8fc8b4ffda2dcb8d" +dependencies = [ + "addr2line", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", +] + +[[package]] +name = "base-x" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" + +[[package]] +name = "base64" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +dependencies = [ + "byteorder", + "safemem", +] + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.59.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2 1.0.36", + "quote 1.0.15", + "regex", + "rustc-hash", + "shlex", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" +dependencies = [ + "either", + "radium", +] + +[[package]] +name = "blake3" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if 0.1.10", + "constant_time_eq", + "crypto-mac 0.8.0", + "digest 0.9.0", +] + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding 0.1.5", + "byte-tools", + "byteorder", + "generic-array 0.12.4", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "block-padding 0.2.1", + "generic-array 0.14.5", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", +] + +[[package]] +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "borsh" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a7111f797cc721407885a323fb071636aee57f750b1a4ddc27397eba168a74" +dependencies = [ + "borsh-derive", + "hashbrown 0.9.1", +] + +[[package]] +name = "borsh-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "307f3740906bac2c118a8122fe22681232b244f1369273e45f1156b45c43d2dd" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2 1.0.36", + "syn 1.0.86", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2104c73179359431cc98e016998f2f23bc7a05bc53e79741bcba705f30047bc" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae29eb8418fcd46f723f8691a2ac06857d31179d33d2f2d91eb13967de97c728" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "bs58" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" + +[[package]] +name = "bstr" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +dependencies = [ + "memchr", +] + +[[package]] +name = "bumpalo" +version = "3.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "byte-slice-cast" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +dependencies = [ + "byteorder", + "either", + "iovec", +] + +[[package]] +name = "bytes" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + +[[package]] +name = "bytes" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0dcbc35f504eb6fc275a6d20e4ebcda18cf50d40ba6fabff8c711fa16cb3b16" + +[[package]] +name = "bytes" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" + +[[package]] +name = "bzip2" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "cc" +version = "1.0.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e450b8da92aa6f274e7c6437692f9f2ce6d701fb73bacfcf87897b3f89a4c20e" +dependencies = [ + "jobserver", + "num_cpus", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "libc", + "num-integer", + "num-traits", + "serde", + "time 0.1.43", + "winapi 0.3.9", +] + +[[package]] +name = "clang-sys" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cc00842eed744b858222c4c9faf7243aafc6d33f92f96935263ef4d8a41ce21" +dependencies = [ + "glob", + "libc", + "libloading 0.7.3", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +dependencies = [ + "bitflags", +] + +[[package]] +name = "colored" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4ffc801dacf156c5854b9df4f425a626539c3a6ef7893cc0c5084a23f0b6c59" +dependencies = [ + "atty", + "lazy_static", + "winapi 0.3.9", +] + +[[package]] +name = "const_fn" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cpufeatures" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +dependencies = [ + "crossbeam-utils 0.7.2", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils 0.8.7", +] + +[[package]] +name = "crossbeam-deque" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" +dependencies = [ + "crossbeam-epoch 0.8.2", + "crossbeam-utils 0.7.2", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch 0.9.7", + "crossbeam-utils 0.8.7", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "lazy_static", + "maybe-uninit", + "memoffset 0.5.6", + "scopeguard", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils 0.8.7", + "lazy_static", + "memoffset 0.6.5", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" +dependencies = [ + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 0.1.10", + "lazy_static", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" +dependencies = [ + "cfg-if 1.0.0", + "lazy_static", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-mac" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +dependencies = [ + "generic-array 0.12.4", + "subtle 1.0.0", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array 0.14.5", + "subtle 2.4.1", +] + +[[package]] +name = "crypto-mac" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58bcd97a54c7ca5ce2f6eb16f6bede5b0ab5f0055fedc17d2f0b4466e21671ca" +dependencies = [ + "generic-array 0.14.5", + "subtle 2.4.1", +] + +[[package]] +name = "crypto-mac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" +dependencies = [ + "generic-array 0.14.5", + "subtle 2.4.1", +] + +[[package]] +name = "curve25519-dalek" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" +dependencies = [ + "byteorder", + "digest 0.8.1", + "rand_core 0.5.1", + "subtle 2.4.1", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle 2.4.1", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2 1.0.36", + "quote 1.0.15", + "strsim", + "syn 1.0.86", +] + +[[package]] +name = "darling_macro" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b" +dependencies = [ + "darling_core", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "dashmap" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" +dependencies = [ + "cfg-if 1.0.0", + "num_cpus", + "rayon", +] + +[[package]] +name = "derivation-path" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193388a8c8c75a490b604ff61775e236541b8975e98e5ca1f6ea97d122b7e2db" +dependencies = [ + "failure", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2 1.0.36", + "quote 1.0.15", + "rustc_version 0.4.0", + "syn 1.0.86", +] + +[[package]] +name = "derive_utils" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532b4c15dccee12c7044f1fcad956e98410860b22231e44a3b827464797ca7bf" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "dir-diff" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2860407d7d7e2e004bb2128510ad9e8d669e76fa005ccf567977b5d71b8b4a0b" +dependencies = [ + "walkdir", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "ed25519" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed12bbf7b5312f8da1c2722bc06d8c6b12c2d86a7fb35a194c7f3e6fc2bbe39" +dependencies = [ + "serde", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.1", + "ed25519", + "rand 0.7.3", + "serde", + "serde_bytes", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057f328f31294b5ab432e6c39642f54afd1531677d6d4ba2905932844cc242f3" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "failure", + "hmac 0.9.0", + "sha2 0.9.9", +] + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "encoding_rs" +version = "0.8.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "enum-iterator" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c79a6321a1197d7730510c7e3f6cb80432dfefecb32426de8cea0aa19b4bb8d7" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e94aa31f7c0dc764f57896dc615ddd76fc13b0d5dca7eb6cc5e018a5a09ec06" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "env_logger" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +dependencies = [ + "atty", + "humantime", + "log 0.4.14", + "regex", + "termcolor", +] + +[[package]] +name = "env_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime", + "log 0.4.14", + "regex", + "termcolor", +] + +[[package]] +name = "ethabi" +version = "13.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d4e679d6864bc26210feb5cf044e245741cd9d7701b35c00440a6e84d61399" +dependencies = [ + "anyhow", + "ethereum-types", + "hex", + "serde", + "serde_json", + "sha3 0.9.1", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22a621dcebea74f2a6f2002d0a885c81ccf6cbdf86760183316a7722b5707ca4" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethbloom" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb684ac8fa8f6c5759f788862bb22ec6fe3cb392f6bfd08e3c64b603661e3f8" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8603f637f22e3ab9aff8466b37850cd7ea2ae52034b07e41fdc82f1f68dfa2c" +dependencies = [ + "ethereum-types", + "hash-db", + "hash256-std-hasher", + "parity-scale-codec", + "rlp", + "rlp-derive", + "serde", + "sha3 0.9.1", + "triehash", +] + +[[package]] +name = "ethereum-types" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05dc5f0df4915fa6dff7f975a8366ecfaaa8959c74235469495153e7bb1b280e" +dependencies = [ + "ethbloom 0.10.0", + "fixed-hash", + "impl-rlp", + "impl-serde", + "primitive-types", + "uint", +] + +[[package]] +name = "evm" +version = "0.23.0" +source = "git+https://github.com/velas/evm?branch=add-traces#6c553073c2cb9433f290385a4bfa89c41bec5559" +dependencies = [ + "ethereum", + "evm-core", + "evm-gasometer", + "evm-runtime", + "log 0.4.14", + "parity-scale-codec", + "primitive-types", + "rlp", + "serde", + "sha3 0.8.2", +] + +[[package]] +name = "evm-block-recovery" +version = "0.1.0" +dependencies = [ + "dotenv", + "env_logger 0.9.0", + "evm-state", + "log 0.4.14", + "solana-storage-bigtable", + "tokio 1.17.0", +] + +[[package]] +name = "evm-core" +version = "0.23.0" +source = "git+https://github.com/velas/evm?branch=add-traces#6c553073c2cb9433f290385a4bfa89c41bec5559" +dependencies = [ + "parity-scale-codec", + "primitive-types", + "serde", +] + +[[package]] +name = "evm-gasometer" +version = "0.23.0" +source = "git+https://github.com/velas/evm?branch=add-traces#6c553073c2cb9433f290385a4bfa89c41bec5559" +dependencies = [ + "evm-core", + "evm-runtime", + "primitive-types", +] + +[[package]] +name = "evm-rpc" +version = "0.1.0" +dependencies = [ + "anyhow", + "derive_more", + "ethabi", + "ethbloom 0.11.1", + "evm-state", + "hex", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "jsonrpc-http-server", + "jsonrpc-pubsub", + "primitive-types", + "rlp", + "rustc-hex", + "secp256k1", + "serde", + "serde_json", + "snafu", + "uint", +] + +[[package]] +name = "evm-runtime" +version = "0.23.0" +source = "git+https://github.com/velas/evm?branch=add-traces#6c553073c2cb9433f290385a4bfa89c41bec5559" +dependencies = [ + "evm-core", + "primitive-types", + "sha3 0.8.2", +] + +[[package]] +name = "evm-state" +version = "0.1.0" +dependencies = [ + "anyhow", + "auto_enums", + "bincode", + "bytes 0.6.0", + "dashmap", + "derivative", + "derive_more", + "ethbloom 0.11.1", + "evm", + "fixed-hash", + "hex", + "impl-rlp", + "itertools 0.10.3", + "keccak-hash", + "lazy_static", + "log 0.4.14", + "primitive-types", + "rand 0.6.1", + "rand 0.8.5", + "rayon", + "rlp", + "rocksdb", + "secp256k1", + "serde", + "sha3 0.9.1", + "simple_logger", + "snafu", + "tempfile", + "thiserror", + "triedb", +] + +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +dependencies = [ + "backtrace", + "failure_derive", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", + "synstructure", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "fastrand" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +dependencies = [ + "instant", +] + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "filetime" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.11", + "winapi 0.3.9", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "flate2" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +dependencies = [ + "cfg-if 1.0.0", + "crc32fast", + "libc", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding 2.1.0", +] + +[[package]] +name = "fs_extra" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + +[[package]] +name = "futures" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" + +[[package]] +name = "futures-executor" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" + +[[package]] +name = "futures-macro" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "futures-sink" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" + +[[package]] +name = "futures-task" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" + +[[package]] +name = "futures-util" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +dependencies = [ + "futures 0.1.31", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite 0.2.8", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +dependencies = [ + "serde", + "typenum", + "version_check 0.9.4", +] + +[[package]] +name = "gethostname" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4addc164932852d066774c405dbbdb7914742d2b39e39e1a7ca949c856d054d1" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.10.2+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "globset" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log 0.4.14", + "regex", +] + +[[package]] +name = "goauth" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d94101e84ede813c04773b0a43396c01b5a3a9376537dbce1125858ae090ae60" +dependencies = [ + "arc-swap 1.5.0", + "futures 0.3.21", + "log 0.4.14", + "reqwest", + "serde", + "serde_derive", + "serde_json", + "simpl", + "smpl_jwt", + "time 0.2.27", + "tokio 1.17.0", +] + +[[package]] +name = "h2" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" +dependencies = [ + "bytes 0.5.6", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio 0.2.25", + "tokio-util 0.3.1", + "tracing", + "tracing-futures", +] + +[[package]] +name = "h2" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f1f717ddc7b2ba36df7e871fd88db79326551d3d6f1fc406fbfd28b582ff8e" +dependencies = [ + "bytes 1.1.0", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio 1.17.0", + "tokio-util 0.6.9", + "tracing", +] + +[[package]] +name = "hash-db" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" + +[[package]] +name = "hash256-std-hasher" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +dependencies = [ + "crypto-mac 0.7.0", + "digest 0.8.1", +] + +[[package]] +name = "hmac" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deae6d9dbb35ec2c502d62b8f7b1c000a0822c3b0794ba36b3149c0a1c840dff" +dependencies = [ + "crypto-mac 0.9.1", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac 0.10.1", + "digest 0.9.0", +] + +[[package]] +name = "hmac-drbg" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" +dependencies = [ + "digest 0.8.1", + "generic-array 0.12.4", + "hmac 0.7.1", +] + +[[package]] +name = "http" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +dependencies = [ + "bytes 1.1.0", + "fnv", + "itoa 1.0.1", +] + +[[package]] +name = "http-body" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +dependencies = [ + "bytes 0.5.6", + "http", +] + +[[package]] +name = "http-body" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" +dependencies = [ + "bytes 1.1.0", + "http", + "pin-project-lite 0.2.8", +] + +[[package]] +name = "httparse" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" + +[[package]] +name = "httpdate" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.10.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" +dependencies = [ + "base64 0.9.3", + "httparse", + "language-tags", + "log 0.3.9", + "mime 0.2.6", + "num_cpus", + "time 0.1.43", + "traitobject", + "typeable", + "unicase 1.4.2", + "url 1.7.2", +] + +[[package]] +name = "hyper" +version = "0.13.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" +dependencies = [ + "bytes 0.5.6", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.2.7", + "http", + "http-body 0.3.1", + "httparse", + "httpdate 0.3.2", + "itoa 0.4.8", + "pin-project", + "socket2 0.3.19", + "tokio 0.2.25", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "0.14.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043f0e083e9901b6cc658a77d1eb86f4fc650bbb977a4337dd63192826aa85dd" +dependencies = [ + "bytes 1.1.0", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.11", + "http", + "http-body 0.4.4", + "httparse", + "httpdate 1.0.2", + "itoa 1.0.1", + "pin-project-lite 0.2.8", + "socket2 0.4.4", + "tokio 1.17.0", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" +dependencies = [ + "futures-util", + "hyper 0.14.17", + "log 0.4.14", + "rustls", + "tokio 1.17.0", + "tokio-rustls", + "webpki", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes 1.1.0", + "hyper 0.14.17", + "native-tls", + "tokio 1.17.0", + "tokio-native-tls", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +dependencies = [ + "serde", +] + +[[package]] +name = "indexmap" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" +dependencies = [ + "autocfg 1.1.0", + "hashbrown 0.11.2", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "ipnet" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e70ee094dc02fd9c13fdad4940090f22dbd6ac7c9e7094a46cf0232a50bc7c" + +[[package]] +name = "itertools" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" + +[[package]] +name = "jemalloc-ctl" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c502a5ff9dd2924f1ed32ba96e3b65735d837b4bfd978d3161b1702e66aca4b7" +dependencies = [ + "jemalloc-sys", + "libc", + "paste", +] + +[[package]] +name = "jemalloc-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" +dependencies = [ + "cc", + "fs_extra", + "libc", +] + +[[package]] +name = "jemallocator" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" +dependencies = [ + "jemalloc-sys", + "libc", +] + +[[package]] +name = "jobserver" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc-client-transports" +version = "17.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2f81014e2706fde057e9dcb1036cf6bbf9418d972c597be5c7158c984656722" +dependencies = [ + "derive_more", + "futures 0.3.21", + "jsonrpc-core", + "jsonrpc-pubsub", + "log 0.4.14", + "serde", + "serde_json", + "tokio 0.2.25", + "url 1.7.2", + "websocket", +] + +[[package]] +name = "jsonrpc-core" +version = "17.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4467ab6dfa369b69e52bd0692e480c4d117410538526a57a304a0f2250fd95e" +dependencies = [ + "futures 0.3.21", + "futures-executor", + "futures-util", + "log 0.4.14", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "jsonrpc-core-client" +version = "17.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c366c092d6bccc6e7ab44dd635a0f22ab2f201215339915fb7ff9508404f431" +dependencies = [ + "futures 0.3.21", + "jsonrpc-client-transports", +] + +[[package]] +name = "jsonrpc-derive" +version = "17.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34f6326966ebac440db89eba788f5a0e5ac2614b4b4bfbdc049a971e71040f32" +dependencies = [ + "proc-macro-crate 0.1.5", + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "jsonrpc-http-server" +version = "17.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "522a047cac0958097ee71d047dd71cb84979fd2fa21c7a68fbe12736bef870a2" +dependencies = [ + "futures 0.3.21", + "hyper 0.13.10", + "jsonrpc-core", + "jsonrpc-server-utils", + "log 0.4.14", + "net2", + "parking_lot 0.11.2", + "unicase 2.6.0", +] + +[[package]] +name = "jsonrpc-pubsub" +version = "17.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14739e5523a40739882cc34a44ab2dd9356bce5ce102513f5984a9efbe342f3d" +dependencies = [ + "futures 0.3.21", + "jsonrpc-core", + "lazy_static", + "log 0.4.14", + "parking_lot 0.11.2", + "rand 0.7.3", + "serde", +] + +[[package]] +name = "jsonrpc-server-utils" +version = "17.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bce68fa279a2822b3619369cd024f8a4f8e5ce485468834f8679a3c7919aae2d" +dependencies = [ + "bytes 0.5.6", + "futures 0.3.21", + "globset", + "jsonrpc-core", + "lazy_static", + "log 0.4.14", + "tokio 0.2.25", + "tokio-util 0.3.1", + "unicase 2.6.0", +] + +[[package]] +name = "keccak" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" + +[[package]] +name = "keccak-hash" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3208a3f8f6fad9a5c626276812ebdd54d3b5f79cb59e34c2fdcdf03837900072" +dependencies = [ + "primitive-types", + "tiny-keccak", +] + +[[package]] +name = "keccak-hasher" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711adba9940a039f4374fc5724c0a5eaca84a2d558cce62256bfe26f0dbef05e" +dependencies = [ + "hash-db", + "hash256-std-hasher", + "tiny-keccak", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "language-tags" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" + +[[package]] +name = "libloading" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + +[[package]] +name = "librocksdb-sys" +version = "6.20.3" +source = "git+https://github.com/velas/rust-rocksdb?branch=transaction#d9ce7cd3bab79c7659c797c96944ae181e1bb825" +dependencies = [ + "bindgen", + "cc", + "glob", + "libc", +] + +[[package]] +name = "libsecp256k1" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" +dependencies = [ + "arrayref", + "crunchy", + "digest 0.8.1", + "hmac-drbg", + "rand 0.7.3", + "sha2 0.8.2", + "subtle 2.4.1", + "typenum", +] + +[[package]] +name = "lock_api" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "lock_api" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +dependencies = [ + "log 0.4.14", +] + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + +[[package]] +name = "memchr" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" + +[[package]] +name = "memmap2" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "mime" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" +dependencies = [ + "log 0.3.9", +] + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg 1.1.0", +] + +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log 0.4.14", + "miow 0.2.2", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2" +dependencies = [ + "libc", + "log 0.4.14", + "miow 0.3.7", + "ntapi", + "winapi 0.3.9", +] + +[[package]] +name = "mio-uds" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" +dependencies = [ + "iovec", + "libc", + "mio 0.6.23", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "native-tls" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" +dependencies = [ + "lazy_static", + "libc", + "log 0.4.14", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "net2" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "nom" +version = "7.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109" +dependencies = [ + "memchr", + "minimal-lexical", + "version_check 0.9.4", +] + +[[package]] +name = "ntapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg 1.1.0", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate 1.1.3", + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "num_threads" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ba99ba6393e2c3734791401b66902d981cb03bf190af674ca69949b6d5fb15" +dependencies = [ + "libc", +] + +[[package]] +name = "object" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" + +[[package]] +name = "once_cell" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-sys", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" +dependencies = [ + "autocfg 1.1.0", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "ouroboros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc04551635026d3ac7bc646698ea1836a85ed2a26b7094fe1d15d8b14854c4a2" +dependencies = [ + "ouroboros_macro", + "stable_deref_trait", +] + +[[package]] +name = "ouroboros_macro" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cec33dfceabec83cd0e95a5ce9d20e76ab3a5cbfef59659b8c927f69b93ed8ae" +dependencies = [ + "Inflector", + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "parity-scale-codec" +version = "1.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b26b16c7687c3075982af47719e481815df30bc544f7a6690763a25ca16e9d" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41512944b1faff334a5f1b9447611bf4ef40638ccb6328173dacefb338e878c" +dependencies = [ + "proc-macro-crate 0.1.5", + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "parking_lot" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +dependencies = [ + "lock_api 0.3.4", + "parking_lot_core 0.6.2", + "rustc_version 0.2.3", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api 0.4.6", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +dependencies = [ + "lock_api 0.4.6", + "parking_lot_core 0.9.1", +] + +[[package]] +name = "parking_lot_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +dependencies = [ + "cfg-if 0.1.10", + "cloudabi", + "libc", + "redox_syscall 0.1.57", + "rustc_version 0.2.3", + "smallvec 0.6.14", + "winapi 0.3.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall 0.2.11", + "smallvec 1.8.0", + "winapi 0.3.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.11", + "smallvec 1.8.0", + "windows-sys", +] + +[[package]] +name = "paste" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" +dependencies = [ + "paste-impl", + "proc-macro-hack", +] + +[[package]] +name = "paste-impl" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" +dependencies = [ + "proc-macro-hack", +] + +[[package]] +name = "pbkdf2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3b8c0d71734018084da0c0354193a5edfb81b20d2d57a92c5b154aefc554a4a" +dependencies = [ + "crypto-mac 0.10.1", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pin-project" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" + +[[package]] +name = "pin-project-lite" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "primitive-types" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3824ae2c5e27160113b9e029a10ec9e3f0237bad8029f69c7724393c9fdefd8" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +dependencies = [ + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid 0.1.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +dependencies = [ + "unicode-xid 0.2.2", +] + +[[package]] +name = "prost" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2" +dependencies = [ + "bytes 1.1.0", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4" +dependencies = [ + "anyhow", + "itertools 0.9.0", + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "prost-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb" +dependencies = [ + "bytes 1.1.0", + "prost", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding 2.1.0", +] + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + +[[package]] +name = "quote" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +dependencies = [ + "proc-macro2 1.0.36", +] + +[[package]] +name = "radium" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" + +[[package]] +name = "rand" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae9d223d52ae411a33cf7e54ec6034ec165df296ccd23533d671a28252b6f66a" +dependencies = [ + "cloudabi", + "fuchsia-zircon", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.3.1", + "rand_hc 0.1.0", + "rand_isaac", + "rand_pcg", + "rand_xorshift", + "rustc_version 0.2.3", + "winapi 0.3.9", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc 0.2.0", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.3", +] + +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.3.1", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.3", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom 0.2.5", +] + +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.4.2", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rayon" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +dependencies = [ + "autocfg 1.1.0", + "crossbeam-deque 0.8.1", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +dependencies = [ + "crossbeam-channel 0.5.2", + "crossbeam-deque 0.8.1", + "crossbeam-utils 0.8.7", + "lazy_static", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "reqwest" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d2927ca2f685faf0fc620ac4834690d29e7abb153add10f5812eef20b5e280" +dependencies = [ + "base64 0.13.0", + "bytes 1.1.0", + "encoding_rs", + "futures-core", + "futures-util", + "http", + "http-body 0.4.4", + "hyper 0.14.17", + "hyper-rustls", + "hyper-tls", + "ipnet", + "js-sys", + "lazy_static", + "log 0.4.14", + "mime 0.3.16", + "native-tls", + "percent-encoding 2.1.0", + "pin-project-lite 0.2.8", + "rustls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio 1.17.0", + "tokio-native-tls", + "tokio-rustls", + "url 2.2.2", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba5a8ec64ee89a76c98c549af81ff14813df09c3e6dc4766c3856da48597a0c" +dependencies = [ + "cc", + "lazy_static", + "libc", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "ripemd160" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "rlp" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "999508abb0ae792aabed2460c45b89106d97fe4adac593bdaef433c2605847b5" +dependencies = [ + "bytes 1.1.0", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "rocksdb" +version = "0.17.0" +source = "git+https://github.com/velas/rust-rocksdb?branch=transaction#d9ce7cd3bab79c7659c797c96944ae181e1bb825" +dependencies = [ + "libc", + "librocksdb-sys", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.6", +] + +[[package]] +name = "rustls" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +dependencies = [ + "base64 0.13.0", + "log 0.4.14", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustversion" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" + +[[package]] +name = "ryu" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +dependencies = [ + "lazy_static", + "winapi 0.3.9", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "sct" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "secp256k1" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6179428c22c73ac0fbb7b5579a56353ce78ba29759b3b8575183336ea74cdfb" +dependencies = [ + "rand 0.6.1", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11553d210db090930f4432bea123b31f70bbf693ace14504ea2a35e796c28dd2" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "serde_json" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +dependencies = [ + "itoa 1.0.1", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.1", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1e6ec4d8950e5b1e894eac0d360742f3b1407a6078a604a731c4b3f49cefbc" +dependencies = [ + "rustversion", + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12e47be9471c72889ebafb5e14d5ff930d89ae7a67bbdb5f8abb564f845a927e" +dependencies = [ + "darling", + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + +[[package]] +name = "sha2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "fake-simd", + "opaque-debug 0.2.3", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "sha3" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" +dependencies = [ + "block-buffer 0.7.3", + "byte-tools", + "digest 0.8.1", + "keccak", + "opaque-debug 0.2.3", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug 0.3.0", +] + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4" + +[[package]] +name = "simpl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a30f10c911c0355f80f1c2faa8096efc4a58cdf8590b954d5b395efa071c711" + +[[package]] +name = "simple_logger" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45b60258a35dc3cb8a16890b8fd6723349bfa458d7960e25e633f1b1c19d7b5e" +dependencies = [ + "atty", + "colored", + "log 0.4.14", + "time 0.3.7", + "winapi 0.3.9", +] + +[[package]] +name = "slab" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" + +[[package]] +name = "smallvec" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +dependencies = [ + "maybe-uninit", +] + +[[package]] +name = "smallvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" + +[[package]] +name = "smpl_jwt" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4370044f8b20f944e05c35d77edd3518e6f21fc4de77e593919f287c6a3f428a" +dependencies = [ + "base64 0.13.0", + "log 0.4.14", + "openssl", + "serde", + "serde_derive", + "serde_json", + "simpl", + "time 0.2.27", +] + +[[package]] +name = "snafu" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab12d3c261b2308b0d80c26fffb58d17eba81a4be97890101f416b478c79ca7" +dependencies = [ + "doc-comment", + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1508efa03c362e23817f96cde18abed596a25219a8b2c66e8db33c03543d315b" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "socket2" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "solana-account-decoder" +version = "1.6.14" +dependencies = [ + "Inflector", + "base64 0.12.3", + "bincode", + "bs58", + "bv", + "lazy_static", + "serde", + "serde_derive", + "serde_json", + "solana-config-program", + "solana-sdk", + "solana-stake-program", + "solana-vote-program", + "spl-token", + "thiserror", + "velas-account-program", + "velas-relying-party-program", + "zstd", +] + +[[package]] +name = "solana-config-program" +version = "1.6.14" +dependencies = [ + "bincode", + "chrono", + "log 0.4.14", + "rand_core 0.6.3", + "serde", + "serde_derive", + "solana-sdk", +] + +[[package]] +name = "solana-crate-features" +version = "1.6.14" +dependencies = [ + "backtrace", + "bytes 0.4.12", + "cc", + "curve25519-dalek 2.1.3", + "ed25519-dalek", + "either", + "lazy_static", + "libc", + "rand_chacha 0.2.2", + "regex-syntax", + "reqwest", + "serde", + "syn 0.15.44", + "syn 1.0.86", + "tokio 0.1.22", + "winapi 0.3.9", +] + +[[package]] +name = "solana-evm-loader-program" +version = "0.1.0" +dependencies = [ + "assert_matches", + "bincode", + "crc32fast", + "ethabi", + "evm-state", + "hex", + "log 0.4.14", + "num-derive", + "num-traits", + "once_cell", + "primitive-types", + "ripemd160", + "serde", + "sha2 0.9.9", + "sha3 0.9.1", + "simple_logger", + "snafu", + "solana-logger 1.6.14", + "solana-sdk", +] + +[[package]] +name = "solana-frozen-abi" +version = "1.6.14" +dependencies = [ + "bs58", + "bv", + "generic-array 0.14.5", + "log 0.4.14", + "memmap2", + "rustc_version 0.2.3", + "serde", + "serde_derive", + "sha2 0.9.9", + "solana-frozen-abi-macro 1.6.14", + "solana-logger 1.6.14", + "thiserror", +] + +[[package]] +name = "solana-frozen-abi" +version = "1.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b48f5671e34cdc524f784fe6a04ee45394b13051d02ed078f816ef190f1d5e9d" +dependencies = [ + "bs58", + "bv", + "generic-array 0.14.5", + "log 0.4.14", + "memmap2", + "rustc_version 0.2.3", + "serde", + "serde_derive", + "sha2 0.9.9", + "solana-frozen-abi-macro 1.6.14 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-logger 1.6.14 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror", +] + +[[package]] +name = "solana-frozen-abi-macro" +version = "1.6.14" +dependencies = [ + "lazy_static", + "proc-macro2 1.0.36", + "quote 1.0.15", + "rustc_version 0.2.3", + "syn 1.0.86", +] + +[[package]] +name = "solana-frozen-abi-macro" +version = "1.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bca8790ad48f0af264c4f80b4f10ffa6efb967947b400ca7180817ef257e0b0" +dependencies = [ + "lazy_static", + "proc-macro2 1.0.36", + "quote 1.0.15", + "rustc_version 0.2.3", + "syn 1.0.86", +] + +[[package]] +name = "solana-logger" +version = "1.6.14" +dependencies = [ + "env_logger 0.8.4", + "lazy_static", + "log 0.4.14", +] + +[[package]] +name = "solana-logger" +version = "1.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cad1b8c686c5acc6d61bc5bb24eb70b61bdc8f8dad06252e8c7c557429f5a5b" +dependencies = [ + "env_logger 0.8.4", + "lazy_static", + "log 0.4.14", +] + +[[package]] +name = "solana-measure" +version = "1.6.14" +dependencies = [ + "jemalloc-ctl", + "jemallocator", + "log 0.4.14", + "solana-metrics", + "solana-sdk", +] + +[[package]] +name = "solana-metrics" +version = "1.6.14" +dependencies = [ + "env_logger 0.8.4", + "gethostname", + "lazy_static", + "log 0.4.14", + "reqwest", + "solana-sdk", +] + +[[package]] +name = "solana-program" +version = "1.6.14" +dependencies = [ + "bincode", + "blake3", + "borsh", + "borsh-derive", + "bs58", + "bv", + "curve25519-dalek 2.1.3", + "hex", + "itertools 0.9.0", + "lazy_static", + "log 0.4.14", + "num-derive", + "num-traits", + "rand 0.7.3", + "rustc_version 0.2.3", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.9.9", + "sha3 0.9.1", + "solana-frozen-abi 1.6.14", + "solana-frozen-abi-macro 1.6.14", + "solana-logger 1.6.14", + "solana-sdk-macro 1.6.14", + "thiserror", +] + +[[package]] +name = "solana-program" +version = "1.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "822b37c974f8d3ddbf01945c238a6685ebc244cdaa6586f41e3e95932de0f0c6" +dependencies = [ + "bincode", + "blake3", + "borsh", + "borsh-derive", + "bs58", + "bv", + "curve25519-dalek 2.1.3", + "hex", + "itertools 0.9.0", + "lazy_static", + "log 0.4.14", + "num-derive", + "num-traits", + "rand 0.7.3", + "rustc_version 0.2.3", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.9.9", + "sha3 0.9.1", + "solana-frozen-abi 1.6.14 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-frozen-abi-macro 1.6.14 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-logger 1.6.14 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-sdk-macro 1.6.14 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror", +] + +[[package]] +name = "solana-rayon-threadlimit" +version = "1.6.14" +dependencies = [ + "lazy_static", + "num_cpus", +] + +[[package]] +name = "solana-runtime" +version = "1.6.14" +dependencies = [ + "anyhow", + "arrayref", + "bincode", + "blake3", + "bv", + "byteorder", + "bzip2", + "crossbeam-channel 0.4.4", + "dashmap", + "dir-diff", + "evm-rpc", + "evm-state", + "flate2", + "fnv", + "itertools 0.9.0", + "lazy_static", + "libc", + "libloading 0.6.7", + "log 0.4.14", + "memmap2", + "num-derive", + "num-traits", + "num_cpus", + "ouroboros", + "rand 0.7.3", + "rayon", + "regex", + "rustc_version 0.2.3", + "serde", + "serde_derive", + "solana-config-program", + "solana-evm-loader-program", + "solana-frozen-abi 1.6.14", + "solana-frozen-abi-macro 1.6.14", + "solana-logger 1.6.14", + "solana-measure", + "solana-metrics", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-secp256k1-program", + "solana-stake-program", + "solana-vote-program", + "symlink", + "tar", + "tempfile", + "thiserror", + "velas-account-program", + "velas-relying-party-program", + "zstd", +] + +[[package]] +name = "solana-sdk" +version = "1.6.14" +dependencies = [ + "assert_matches", + "bincode", + "bs58", + "bv", + "byteorder", + "chrono", + "derivation-path", + "digest 0.9.0", + "ed25519-dalek", + "ed25519-dalek-bip32", + "evm-rpc", + "evm-state", + "generic-array 0.14.5", + "hex", + "hmac 0.10.1", + "itertools 0.9.0", + "keccak-hasher", + "lazy_static", + "libsecp256k1", + "log 0.4.14", + "memmap2", + "num-derive", + "num-traits", + "once_cell", + "pbkdf2", + "qstring", + "rand 0.7.3", + "rand_chacha 0.2.2", + "rand_core 0.6.3", + "rlp", + "rustc_version 0.2.3", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "sha2 0.9.9", + "sha3 0.9.1", + "solana-crate-features", + "solana-frozen-abi 1.6.14", + "solana-frozen-abi-macro 1.6.14", + "solana-logger 1.6.14", + "solana-program 1.6.14", + "solana-sdk-macro 1.6.14", + "tempfile", + "thiserror", + "triehash", + "uriparse", +] + +[[package]] +name = "solana-sdk-macro" +version = "1.6.14" +dependencies = [ + "bs58", + "proc-macro2 1.0.36", + "quote 1.0.15", + "rustversion", + "syn 1.0.86", +] + +[[package]] +name = "solana-sdk-macro" +version = "1.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5455ed20179e36c0fd270e928d4531390db99403824bd02c19d270a0a6b5da46" +dependencies = [ + "bs58", + "proc-macro2 1.0.36", + "quote 1.0.15", + "rustversion", + "syn 1.0.86", +] + +[[package]] +name = "solana-secp256k1-program" +version = "1.6.14" +dependencies = [ + "bincode", + "digest 0.9.0", + "libsecp256k1", + "rand 0.7.3", + "sha3 0.9.1", + "solana-logger 1.6.14", + "solana-sdk", +] + +[[package]] +name = "solana-stake-program" +version = "1.6.14" +dependencies = [ + "bincode", + "log 0.4.14", + "num-derive", + "num-traits", + "rustc_version 0.2.3", + "serde", + "serde_derive", + "solana-config-program", + "solana-frozen-abi 1.6.14", + "solana-frozen-abi-macro 1.6.14", + "solana-metrics", + "solana-sdk", + "solana-vote-program", + "thiserror", +] + +[[package]] +name = "solana-storage-bigtable" +version = "1.6.14" +dependencies = [ + "arc-swap 0.4.8", + "backoff", + "bincode", + "bzip2", + "enum-iterator", + "evm-rpc", + "evm-state", + "flate2", + "futures 0.3.21", + "goauth", + "log 0.4.14", + "prost", + "prost-types", + "rand_core 0.6.3", + "serde", + "serde_derive", + "smpl_jwt", + "solana-sdk", + "solana-storage-proto", + "solana-transaction-status", + "thiserror", + "tonic", + "zstd", +] + +[[package]] +name = "solana-storage-proto" +version = "1.6.14" +dependencies = [ + "bincode", + "bs58", + "evm-state", + "prost", + "rlp", + "serde", + "serde_derive", + "solana-account-decoder", + "solana-sdk", + "solana-transaction-status", +] + +[[package]] +name = "solana-transaction-status" +version = "1.6.14" +dependencies = [ + "Inflector", + "base64 0.12.3", + "bincode", + "bs58", + "evm-rpc", + "evm-state", + "lazy_static", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-evm-loader-program", + "solana-runtime", + "solana-sdk", + "solana-stake-program", + "solana-vote-program", + "spl-associated-token-account", + "spl-memo", + "spl-token", + "thiserror", +] + +[[package]] +name = "solana-vote-program" +version = "1.6.14" +dependencies = [ + "bincode", + "log 0.4.14", + "num-derive", + "num-traits", + "rustc_version 0.2.3", + "serde", + "serde_derive", + "solana-frozen-abi 1.6.14", + "solana-frozen-abi-macro 1.6.14", + "solana-logger 1.6.14", + "solana-metrics", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spl-associated-token-account" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4adc47eebe5d2b662cbaaba1843719c28a67e5ec5d0460bc3ca60900a51f74e2" +dependencies = [ + "solana-program 1.6.14 (registry+https://github.com/rust-lang/crates.io-index)", + "spl-token", +] + +[[package]] +name = "spl-memo" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0dc6f70db6bacea7ff25870b016a65ba1d1b6013536f08e4fd79a8f9005325" +dependencies = [ + "solana-program 1.6.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "spl-token" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbfa8fd791aeb4d7ad5fedb7872478de9f4e8b4fcb02dfd9e7f2f9ae3f3ddd73" +dependencies = [ + "arrayref", + "num-derive", + "num-traits", + "num_enum", + "solana-program 1.6.14 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check 0.9.4", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version 0.2.3", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "serde", + "serde_derive", + "syn 1.0.86", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2 1.0.36", + "quote 1.0.15", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn 1.0.86", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "subtle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "symlink" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", +] + +[[package]] +name = "syn" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "unicode-xid 0.2.2", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", + "unicode-xid 0.2.2", +] + +[[package]] +name = "tar" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "libc", + "redox_syscall 0.2.11", + "remove_dir_all", + "winapi 0.3.9", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "time" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros 0.1.1", + "version_check 0.9.4", + "winapi 0.3.9", +] + +[[package]] +name = "time" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d" +dependencies = [ + "itoa 1.0.1", + "libc", + "num_threads", + "time-macros 0.2.3", +] + +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25eb0ca3468fc0acc11828786797f6ef9aa1555e4a211a60d64cc8e4d1be47d6" + +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2 1.0.36", + "quote 1.0.15", + "standback", + "syn 1.0.86", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "mio 0.6.23", + "num_cpus", + "tokio-codec", + "tokio-current-thread", + "tokio-executor", + "tokio-fs", + "tokio-io", + "tokio-reactor", + "tokio-sync", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "tokio-udp", + "tokio-uds", +] + +[[package]] +name = "tokio" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" +dependencies = [ + "bytes 0.5.6", + "fnv", + "futures-core", + "iovec", + "lazy_static", + "memchr", + "mio 0.6.23", + "num_cpus", + "pin-project-lite 0.1.12", + "slab", +] + +[[package]] +name = "tokio" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +dependencies = [ + "bytes 1.1.0", + "libc", + "memchr", + "mio 0.8.0", + "num_cpus", + "once_cell", + "parking_lot 0.12.0", + "pin-project-lite 0.2.8", + "signal-hook-registry", + "socket2 0.4.4", + "tokio-macros", + "winapi 0.3.9", +] + +[[package]] +name = "tokio-codec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "tokio-io", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" +dependencies = [ + "futures 0.1.31", + "tokio-executor", +] + +[[package]] +name = "tokio-executor" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" +dependencies = [ + "crossbeam-utils 0.7.2", + "futures 0.1.31", +] + +[[package]] +name = "tokio-fs" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" +dependencies = [ + "futures 0.1.31", + "tokio-io", + "tokio-threadpool", +] + +[[package]] +name = "tokio-io" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "log 0.4.14", +] + +[[package]] +name = "tokio-macros" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +dependencies = [ + "native-tls", + "tokio 1.17.0", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" +dependencies = [ + "crossbeam-utils 0.7.2", + "futures 0.1.31", + "lazy_static", + "log 0.4.14", + "mio 0.6.23", + "num_cpus", + "parking_lot 0.9.0", + "slab", + "tokio-executor", + "tokio-io", + "tokio-sync", +] + +[[package]] +name = "tokio-rustls" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +dependencies = [ + "rustls", + "tokio 1.17.0", + "webpki", +] + +[[package]] +name = "tokio-stream" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" +dependencies = [ + "futures-core", + "pin-project-lite 0.2.8", + "tokio 1.17.0", +] + +[[package]] +name = "tokio-sync" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" +dependencies = [ + "fnv", + "futures 0.1.31", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "iovec", + "mio 0.6.23", + "tokio-io", + "tokio-reactor", +] + +[[package]] +name = "tokio-threadpool" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" +dependencies = [ + "crossbeam-deque 0.7.4", + "crossbeam-queue", + "crossbeam-utils 0.7.2", + "futures 0.1.31", + "lazy_static", + "log 0.4.14", + "num_cpus", + "slab", + "tokio-executor", +] + +[[package]] +name = "tokio-timer" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" +dependencies = [ + "crossbeam-utils 0.7.2", + "futures 0.1.31", + "slab", + "tokio-executor", +] + +[[package]] +name = "tokio-tls" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" +dependencies = [ + "futures 0.1.31", + "native-tls", + "tokio-io", +] + +[[package]] +name = "tokio-udp" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "log 0.4.14", + "mio 0.6.23", + "tokio-codec", + "tokio-io", + "tokio-reactor", +] + +[[package]] +name = "tokio-uds" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "iovec", + "libc", + "log 0.4.14", + "mio 0.6.23", + "mio-uds", + "tokio-codec", + "tokio-io", + "tokio-reactor", +] + +[[package]] +name = "tokio-util" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +dependencies = [ + "bytes 0.5.6", + "futures-core", + "futures-sink", + "log 0.4.14", + "pin-project-lite 0.1.12", + "tokio 0.2.25", +] + +[[package]] +name = "tokio-util" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" +dependencies = [ + "bytes 1.1.0", + "futures-core", + "futures-sink", + "log 0.4.14", + "pin-project-lite 0.2.8", + "tokio 1.17.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64910e1b9c1901aaf5375561e35b9c057d95ff41a44ede043a03e09279eabaf1" +dependencies = [ + "bytes 1.1.0", + "futures-core", + "futures-sink", + "log 0.4.14", + "pin-project-lite 0.2.8", + "tokio 1.17.0", +] + +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + +[[package]] +name = "tonic" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ac42cd97ac6bd2339af5bcabf105540e21e45636ec6fa6aae5e85d44db31be0" +dependencies = [ + "async-stream", + "async-trait", + "base64 0.13.0", + "bytes 1.1.0", + "futures-core", + "futures-util", + "h2 0.3.11", + "http", + "http-body 0.4.4", + "hyper 0.14.17", + "percent-encoding 2.1.0", + "pin-project", + "prost", + "prost-derive", + "tokio 1.17.0", + "tokio-rustls", + "tokio-stream", + "tokio-util 0.6.9", + "tower", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tower" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a89fd63ad6adf737582df5db40d286574513c69a11dac5214dc3b5603d6713e" +dependencies = [ + "futures-core", + "futures-util", + "indexmap", + "pin-project", + "pin-project-lite 0.2.8", + "rand 0.8.5", + "slab", + "tokio 1.17.0", + "tokio-util 0.7.0", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" + +[[package]] +name = "tower-service" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" + +[[package]] +name = "tracing" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f" +dependencies = [ + "cfg-if 1.0.0", + "log 0.4.14", + "pin-project-lite 0.2.8", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8276d9a4a3a558d7b7ad5303ad50b53d58264641b82914b7ada36bd762e7a716" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "tracing-core" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03cfcb51380632a72d3111cb8d3447a8d908e577d31beeac006f836383d29a23" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "traitobject" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" + +[[package]] +name = "triedb" +version = "0.5.0" +source = "git+https://github.com/velas/triedb?branch=feat/gc-simple#9675443fe9b593b9dcf3e677c08ac0ce0d2f13c3" +dependencies = [ + "anyhow", + "dashmap", + "derivative", + "log 0.4.14", + "primitive-types", + "rlp", + "rocksdb", + "sha3 0.9.1", + "thiserror", +] + +[[package]] +name = "triehash" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5c" +dependencies = [ + "hash-db", + "rlp", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "typeable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "uint" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicase" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" +dependencies = [ + "version_check 0.1.5", +] + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check 0.9.4", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" + +[[package]] +name = "unicode-normalization" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "uriparse" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e515b1ada404168e145ac55afba3c42f04cf972201a8552d42e2abb17c1b7221" +dependencies = [ + "fnv", + "lazy_static", +] + +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna 0.2.3", + "matches", + "percent-encoding 2.1.0", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "velas-account-program" +version = "0.0.1" +dependencies = [ + "borsh", + "borsh-derive", + "serde", + "solana-sdk", +] + +[[package]] +name = "velas-relying-party-program" +version = "0.0.1" +dependencies = [ + "borsh", + "borsh-derive", + "serde", + "serde_with", + "solana-program 1.6.14", +] + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi 0.3.9", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log 0.4.14", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + +[[package]] +name = "wasm-bindgen" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +dependencies = [ + "bumpalo", + "lazy_static", + "log 0.4.14", + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +dependencies = [ + "quote 1.0.15", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" + +[[package]] +name = "web-sys" +version = "0.3.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f50e1972865d6b1adb54167d1c8ed48606004c2c9d0ea5f1eeb34d95e863ef" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" +dependencies = [ + "webpki", +] + +[[package]] +name = "websocket" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413b37840b9e27b340ce91b319ede10731de8c72f5bc4cb0206ec1ca4ce581d0" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "hyper 0.10.16", + "native-tls", + "rand 0.6.1", + "tokio-codec", + "tokio-io", + "tokio-reactor", + "tokio-tcp", + "tokio-tls", + "unicase 1.4.2", + "url 1.7.2", + "websocket-base", +] + +[[package]] +name = "websocket-base" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e3810f0d00c4dccb54c30a4eee815e703232819dec7b007db115791c42aa374" +dependencies = [ + "base64 0.10.1", + "bitflags", + "byteorder", + "bytes 0.4.12", + "futures 0.1.31", + "native-tls", + "rand 0.6.1", + "sha1", + "tokio-codec", + "tokio-io", + "tokio-tcp", + "tokio-tls", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" + +[[package]] +name = "windows_i686_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" + +[[package]] +name = "windows_i686_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" + +[[package]] +name = "winreg" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "xattr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +dependencies = [ + "libc", +] + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", + "synstructure", +] + +[[package]] +name = "zstd" +version = "0.5.4+zstd.1.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69996ebdb1ba8b1517f61387a883857818a66c8a295f487b1ffd8fd9d2c82910" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "2.0.6+zstd.1.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98aa931fb69ecee256d44589d19754e61851ae4769bf963b385119b1cc37a49e" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "1.4.18+zstd.1.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6e8778706838f43f771d80d37787cb2fe06dafe89dd3aebaf6721b9eaec81" +dependencies = [ + "cc", + "glob", + "itertools 0.9.0", + "libc", +] diff --git a/evm-utils/evm-block-recovery/Cargo.toml b/evm-utils/evm-block-recovery/Cargo.toml new file mode 100644 index 0000000000..73583f010a --- /dev/null +++ b/evm-utils/evm-block-recovery/Cargo.toml @@ -0,0 +1,25 @@ +[package] +authors = ["Maksim Vykhota ", "Velas"] +name = "evm-block-recovery" +version = "0.1.0" +edition = "2021" +readme = "README.MD" + +[dependencies] +anyhow = "1.0.56" +bincode = "1.3.3" +chrono = { version = "0.4.19", features = ["serde"] } +clap = { version = "3.1.6", features = ["derive"] } +dotenv = "0.15.0" +env_logger = "0.9.0" +evm-rpc = { path = "../evm-rpc" } +evm-state = { path = "../evm-state" } +log = "0.4.16" +serde = { version = "1", features = ["derive"] } +serde_json = "1.0.79" +solana-client = { path = "../../client" } +solana-evm-loader-program = { path = "../programs/evm_loader" } +solana-sdk = { path = "../../sdk", version = "=1.6.14" } +solana-storage-bigtable = { path = "../../storage-bigtable", version = "=1.6.14" } +solana-transaction-status = { path = "../../transaction-status", version = "=1.6.14" } +tokio = { version = "1", features = ["full"] } diff --git a/evm-utils/evm-block-recovery/README.MD b/evm-utils/evm-block-recovery/README.MD new file mode 100644 index 0000000000..0ab0c2c041 --- /dev/null +++ b/evm-utils/evm-block-recovery/README.MD @@ -0,0 +1,16 @@ +## Quickstart +Provide environment variable with google security token: +```sh +echo "GOOGLE_APPLICATION_CREDENTIALS=\"/path/to/token.json\"\n" > .env +``` + +Set log level to info: +``` +echo "RUST_LOG=\"info\"\n" > .env +`` + +### Example +Restoring single block #1234 +``` +cargo run restore-chain -f 1234 -l 1234 --rpc-address http://1.2.3.4:8899 --output-dir /tmp +``` \ No newline at end of file diff --git a/evm-utils/evm-block-recovery/src/extensions.rs b/evm-utils/evm-block-recovery/src/extensions.rs new file mode 100644 index 0000000000..e12f06b751 --- /dev/null +++ b/evm-utils/evm-block-recovery/src/extensions.rs @@ -0,0 +1,108 @@ +use solana_evm_loader_program::instructions::EvmInstruction; +use solana_sdk::{evm_loader::ID as STATIC_PROGRAM_ID, instruction::CompiledInstruction}; +use solana_transaction_status::{ConfirmedBlock, TransactionWithStatusMeta}; + +#[derive(Debug)] +pub struct ParsedInstructions { + pub instructions: Vec, + pub only_trivial_instructions: bool, +} + +impl ParsedInstructions { + pub fn from_native_block(native: ConfirmedBlock) -> Self { + let mut instructions = vec![]; + let mut only_trivial_instructions = true; + + for TransactionWithStatusMeta { transaction, .. } in native.transactions { + for CompiledInstruction { + data, + program_id_index, + .. + } in transaction.message.instructions + { + if transaction.message.account_keys[program_id_index as usize] == STATIC_PROGRAM_ID + { + let instruction: EvmInstruction = bincode::deserialize(&data).unwrap(); + if !matches!(instruction, EvmInstruction::EvmTransaction { .. }) { + only_trivial_instructions = false; + } + instructions.push(instruction); + } + } + } + + Self { + instructions, + only_trivial_instructions, + } + } + + pub fn instr_evm_transaction(&self) -> usize { + self.instructions + .iter() + .filter(|i| matches!(i, EvmInstruction::EvmTransaction { .. })) + .count() + } + + pub fn instr_evm_swap_to_native(&self) -> usize { + self.instructions + .iter() + .filter(|i| matches!(i, EvmInstruction::SwapNativeToEther { .. })) + .count() + } + + pub fn instr_evm_free_ownership(&self) -> usize { + self.instructions + .iter() + .filter(|i| matches!(i, EvmInstruction::FreeOwnership {})) + .count() + } + + pub fn instr_evm_big_transaction(&self) -> usize { + self.instructions + .iter() + .filter(|i| matches!(i, EvmInstruction::EvmBigTransaction(_))) + .count() + } + + pub fn instr_evm_authorized_transaction(&self) -> usize { + self.instructions + .iter() + .filter(|i| matches!(i, EvmInstruction::EvmAuthorizedTransaction { .. })) + .count() + } +} + +pub trait NativeBlockExt { + fn parse_instructions(&self) -> ParsedInstructions; +} + +impl NativeBlockExt for ConfirmedBlock { + fn parse_instructions(&self) -> ParsedInstructions { + let mut only_trivial_instructions = true; + let mut instructions = vec![]; + + for TransactionWithStatusMeta { transaction, .. } in &self.transactions { + for CompiledInstruction { + data, + program_id_index, + .. + } in &transaction.message.instructions + { + if transaction.message.account_keys[*program_id_index as usize] == STATIC_PROGRAM_ID + { + let instruction: EvmInstruction = bincode::deserialize(data).unwrap(); + if !matches!(instruction, EvmInstruction::EvmTransaction { .. }) { + only_trivial_instructions = false; + } + instructions.push(instruction); + } + } + } + + ParsedInstructions { + instructions, + only_trivial_instructions, + } + } +} diff --git a/evm-utils/evm-block-recovery/src/main.rs b/evm-utils/evm-block-recovery/src/main.rs new file mode 100644 index 0000000000..f13cf849d6 --- /dev/null +++ b/evm-utils/evm-block-recovery/src/main.rs @@ -0,0 +1,113 @@ +pub mod extensions; +pub mod routines; +pub mod timestamp; + +use clap::{Parser, Subcommand}; +use routines::find::BlockRange; +use solana_storage_bigtable::LedgerStorage; + +#[derive(Parser)] +#[clap(author, version, long_about = None)] +#[clap(name = "EVM Block Recovery")] +#[clap(about = "Tool used for restoring EVM blocks.")] +struct Cli { + #[clap(subcommand)] + command: Commands, +} + +#[derive(Subcommand)] +enum Commands { + /// Finds missing ranges of EVM blocks + Find { + /// Starting EVM Block number + #[clap(long, value_name = "NUM")] + start: u64, + + /// Limit of blocks to search + #[clap(long, value_name = "NUM")] + limit: usize, + }, + + /// Restores EVM subchain + RestoreChain { + /// First missing EVM Block + #[clap(short = 'f', long = "first-block", value_name = "NUM")] + first: u64, + + /// Last missing EVM Block + #[clap(short = 'l', long = "last-block", value_name = "NUM")] + last: u64, + + /// RPC address of node used for requesting restored EVM Header + #[clap(long, value_name = "URL")] + rpc_address: String, + + /// Write restored blocks to Ledger Storage + #[clap(short, long)] + modify_ledger: bool, + + /// Continue restoring after tx simulation failures + #[clap(short = 'r', long)] + force_resume: bool, + + /// Load block from JSON instead + #[clap(long)] + load_json: bool, + + /// Path to json file, to load EVM Blocks from (if load_json set). + /// Or path to json file/folder where to save recovered blocks. + #[clap(short, long, value_name = "JSON_PATH")] + json_path: Option, + + }, + + /// Checks contents of Native Block + CheckNative { + /// Native Block number + #[clap(short = 'b', long = "native-block", value_name = "NUM")] + block: u64, + }, + CheckEvm { + #[clap(short = 'b', long = "evm-block", value_name = "NUM")] + block: u64, + }, +} + +#[tokio::main] +async fn main() -> anyhow::Result<()> { + dotenv::dotenv().expect("`.env` file expected"); + env_logger::init(); + + let ledger = LedgerStorage::new(false, None) + .await + .expect("Failed to connect to storage"); + + let cli = Cli::parse(); + match cli.command { + Commands::Find { start, limit } => routines::find(&ledger, start, limit).await?, + Commands::RestoreChain { + first, + last, + rpc_address, + modify_ledger, + force_resume, + json_path, + load_json, + } => { + routines::restore_chain( + &ledger, + BlockRange::new(first, last), + rpc_address, + modify_ledger, + force_resume, + json_path, + load_json, + ) + .await? + } + Commands::CheckNative { block } => routines::check_native(&ledger, block).await?, + Commands::CheckEvm { block } => routines::check_evm(&ledger, block).await.unwrap(), + } + + Ok(()) +} diff --git a/evm-utils/evm-block-recovery/src/routines.rs b/evm-utils/evm-block-recovery/src/routines.rs new file mode 100644 index 0000000000..2af657d9a2 --- /dev/null +++ b/evm-utils/evm-block-recovery/src/routines.rs @@ -0,0 +1,9 @@ +pub(crate) mod check_evm; +pub(crate) mod check_native; +pub(crate) mod find; +pub(crate) mod restore_chain; + +pub use check_evm::check_evm; +pub use check_native::check_native; +pub use find::find; +pub use restore_chain::restore_chain; diff --git a/evm-utils/evm-block-recovery/src/routines/check_evm.rs b/evm-utils/evm-block-recovery/src/routines/check_evm.rs new file mode 100644 index 0000000000..e1fac8a80f --- /dev/null +++ b/evm-utils/evm-block-recovery/src/routines/check_evm.rs @@ -0,0 +1,15 @@ +use anyhow::*; +use evm_state::BlockNum; +use solana_storage_bigtable::LedgerStorage; + +pub async fn check_evm(ledger: &LedgerStorage, block: BlockNum) -> Result<()> { + let evm_block = ledger.get_evm_confirmed_full_block(block).await.unwrap(); + + log::info!( + "EVM Block {block}, timestamp {} with hash {}:\n{:?}", + evm_block.header.timestamp, + evm_block.header.hash(), + &evm_block + ); + Ok(()) +} diff --git a/evm-utils/evm-block-recovery/src/routines/check_native.rs b/evm-utils/evm-block-recovery/src/routines/check_native.rs new file mode 100644 index 0000000000..2900cac23e --- /dev/null +++ b/evm-utils/evm-block-recovery/src/routines/check_native.rs @@ -0,0 +1,28 @@ +use anyhow::*; +use solana_sdk::clock::Slot; +use solana_storage_bigtable::LedgerStorage; + +use crate::extensions::NativeBlockExt; + +pub async fn check_native(ledger: &LedgerStorage, block: Slot) -> Result<()> { + let native_block = ledger + .get_confirmed_block(block) + .await + .context(format!("Unable to get Native block {block}"))?; + let txs = native_block.parse_instructions(); + + log::info!( + "Native block {block} timstamp {} contains instructions:", + native_block.block_time.unwrap() + ); + log::info!("EvmTransaction: {}", txs.instr_evm_transaction()); + log::info!("SwapNativeToEther: {}", txs.instr_evm_swap_to_native()); + log::info!("FreeOwnership: {}", txs.instr_evm_free_ownership()); + log::info!("EvmBigTransaction: {}", txs.instr_evm_big_transaction()); + log::info!( + "EvmAuthorizedTransaction: {}", + txs.instr_evm_authorized_transaction() + ); + + Ok(()) +} diff --git a/evm-utils/evm-block-recovery/src/routines/find.rs b/evm-utils/evm-block-recovery/src/routines/find.rs new file mode 100644 index 0000000000..bd901fcb5e --- /dev/null +++ b/evm-utils/evm-block-recovery/src/routines/find.rs @@ -0,0 +1,92 @@ +use anyhow::*; +use evm_state::BlockNum; +use solana_storage_bigtable::LedgerStorage; + +#[derive(Debug, PartialEq, Eq)] +pub struct BlockRange { + pub first: u64, + pub last: u64, +} + +impl BlockRange { + pub fn new(first: u64, last: u64) -> Self { + if first > last { + panic!("The last block ID should be greater or equal to the first block ID") + } + Self { first, last } + } + + pub fn count(&self) -> u64 { + self.last - self.first + 1 + } +} + +pub async fn find(ledger: &LedgerStorage, start_block: BlockNum, limit: usize) -> Result<()> { + let blocks = ledger + .get_evm_confirmed_full_blocks_nums(start_block, limit) + .await + .context(format!( + "Unable to get EVM confirmed block's IDs starting with block {} limiteb by {}", + start_block, limit + ))?; + + let missing_blocks = find_evm_uncommitted_blocks(blocks); + + if missing_blocks.is_empty() { + log::info!("Missing blocks starting from block {start_block} with a limit of {limit} are not found"); + } + + Ok(()) +} + +fn find_evm_uncommitted_blocks(blocks: Vec) -> Vec { + let mut result = Vec::new(); + for i in 0..blocks.len() - 1 { + let previous = blocks[i]; + let current = blocks[i + 1]; + + if current - previous != 1 { + let first = previous + 1; + let last = current - 1; + let missing_range = BlockRange::new(first, last); + if missing_range.count() == 1 { + log::info!("Found missing block: {}", first); + } else { + log::info!("Found missing block range: [{}, {}]", first, last); + } + result.push(missing_range); + } + } + + result +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_find_missing_blocks() { + let confirmed_blocks = vec![1, 2, 3, 8, 9, 10]; + assert_eq!( + find_evm_uncommitted_blocks(confirmed_blocks), + vec![BlockRange { first: 4, last: 7 }] + ) + } + + #[test] + fn test_find_missing_blocks_multirange() { + let confirmed_blocks = vec![1, 2, 5, 6, 10, 11, 13]; + assert_eq!( + find_evm_uncommitted_blocks(confirmed_blocks), + vec![ + BlockRange { first: 3, last: 4 }, + BlockRange { first: 7, last: 9 }, + BlockRange { + first: 12, + last: 12 + } + ] + ); + } +} diff --git a/evm-utils/evm-block-recovery/src/routines/restore_chain.rs b/evm-utils/evm-block-recovery/src/routines/restore_chain.rs new file mode 100644 index 0000000000..be7e0c8842 --- /dev/null +++ b/evm-utils/evm-block-recovery/src/routines/restore_chain.rs @@ -0,0 +1,226 @@ +use std::{path::PathBuf, str::FromStr, time::SystemTime}; + +use anyhow::*; +use evm_rpc::{Hex, RPCTransaction}; +use evm_state::{Block, BlockHeader, TransactionInReceipt, H256}; +use serde_json::json; +use solana_client::{rpc_client::RpcClient, rpc_request::RpcRequest}; +use solana_evm_loader_program::instructions::EvmInstruction; +use solana_sdk::pubkey::Pubkey; +use solana_storage_bigtable::LedgerStorage; + +use crate::extensions::NativeBlockExt; + +use super::find::BlockRange; + +pub async fn restore_chain( + ledger: &LedgerStorage, + evm_missing: BlockRange, + rpc_address: String, + modify_ledger: bool, + force_resume: bool, + json_path: Option, + load_json: bool, +) -> Result<()> { + let rpc_client = RpcClient::new(rpc_address); + let json_path = json_path.map(|json_path|{ + let json_file_path = PathBuf::from(json_path); + // Assume all errors as File not exist + let metadata = std::fs::metadata(&json_file_path).ok(); + (json_file_path, metadata) + }); + + let tail = ledger + .get_evm_confirmed_block_header(evm_missing.last + 1) + .await + .context(format!( + "Unable to get EVM block header {}", + evm_missing.last + 1 + ))?; + let restored_blocks = if load_json { + let (json_file_path, metadata) = json_path.clone().ok_or(format_err!("in load-json mode json file is mandatory"))?; + + log::info!("Recovering blocks from file {:?}", json_file_path); + + ensure!(!matches!(&metadata, Some(m) if m.is_dir() ), "Json path already exist, cannot overwrite it."); + let json_file = std::fs::File::open(&json_file_path).context(format!( + "Unable to open json {:?}", + json_file_path + ))?; + serde_json::from_reader(json_file).context(format!( + "Unable to read file as valid json {:?}", + json_file_path + ))? + + } else { + + let mut header_template = ledger + .get_evm_confirmed_block_header(evm_missing.first - 1) + .await + .context(format!( + "Unable to get EVM block header {}", + evm_missing.first - 1 + ))?; + + let mut native_blocks = vec![]; + + for slot in header_template.native_chain_slot + 1..tail.native_chain_slot { + let native_block = ledger + .get_confirmed_block(slot) + .await + .context(format!("Unable to get Native Block {}", slot))?; + native_blocks.push(native_block); + } + + let timestamps = crate::timestamp::load_timestamps().unwrap(); + let mut restored_blocks = vec![]; + + for nb in native_blocks.into_iter() { + let parsed_instructions = nb.parse_instructions(); + if !parsed_instructions.only_trivial_instructions { + return Err(anyhow!( + "Native block {} contains non-trivial instructions", + nb.block_height.unwrap() + )); + } + header_template.parent_hash = header_template.hash(); + header_template.native_chain_slot += 1; + header_template.native_chain_hash = + H256(Pubkey::from_str(&nb.blockhash).unwrap().to_bytes()); + header_template.block_number += 1; + header_template.timestamp = *timestamps.get(&header_template.block_number).unwrap(); + + let txs: Vec<(RPCTransaction, Vec)> = parsed_instructions + .instructions + .iter() + .map(|v| match v { + EvmInstruction::EvmTransaction { evm_tx } => ( + RPCTransaction::from_transaction(TransactionInReceipt::Signed(evm_tx.clone())) + .unwrap(), + Vec::::new(), + ), + _ => unreachable!(), + }) + .collect(); + + let last_hashes: Vec = vec![H256::zero(); 256]; + let state_root = header_template.state_root; + let (restored_block, warns) = + request_restored_block(&rpc_client, txs, last_hashes, header_template, state_root) + .await + .unwrap(); + + header_template = restored_block.header.clone(); + + match (warns, force_resume) { + (warns, _) if warns.len() == 0 => { + log::info!( + "EVM Block {} (slot {}) restored with no warnings", + &restored_block.header.block_number, + header_template.native_chain_slot + ); + restored_blocks.push(restored_block); + } + (warns, false) => { + log::error!( + "Unable to restore EVM block {} (slot {})", + &restored_block.header.block_number, + header_template.native_chain_slot + ); + log::error!("Failed transactions {:?}", &warns); + return Err(anyhow!("Block restore failed: try `--force-resume` mode")); + } + (warns, true) => { + log::warn!( + "EVM Block {} (slot {}) restored with warnings", + &restored_block.header.block_number, + header_template.native_chain_slot + ); + log::warn!("Failed transactions: {:?}", &warns); + restored_blocks.push(restored_block); + } + } + } + restored_blocks + }; + + log::info!("{} blocks restored.", restored_blocks.len()); + log::debug!("{:?}", &restored_blocks); + + if tail.parent_hash != restored_blocks.iter().last().unwrap().header.hash() { + log::error!("❌❌❌ Hashes do not match! ❌❌❌"); + return Ok(()); + } + + log::info!("✅✅✅ Hashes match! ✅✅✅"); + + if !load_json { + if let Some((json_path, metadata)) = json_path { + + let output_file = if let Some(metadata) = metadata { + if metadata.is_file() { + bail!("File {:?}, already exist, cannot overwrite", json_path) + } + let unixtime = SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH) + .unwrap() + .as_secs(); + + + json_path.join(format!( + "restored-blocks-{}-{}-{}.json", + evm_missing.first, evm_missing.last, unixtime + )) + } else { + json_path + }; + + std::fs::write( + output_file, + serde_json::to_string(&restored_blocks).unwrap(), + ) + .unwrap(); + } + } + + if modify_ledger { + for block in restored_blocks { + write_block(&ledger, block).await?; + } + } + + Ok(()) +} + +async fn request_restored_block( + rpc_client: &RpcClient, + txs: Vec<(RPCTransaction, Vec)>, + last_hashes: Vec, + block_header: BlockHeader, + state_root: H256, +) -> Result<(Block, Vec>)> { + let params = json!([txs, last_hashes, block_header, state_root]); + + let result: (Block, Vec>) = rpc_client + .send(RpcRequest::DebugRecoverBlockHeader, params) + .unwrap(); + + Ok(result) +} + +async fn write_block(ledger: &LedgerStorage, full_block: Block) -> Result<()> { + log::info!( + "Writing block {} with hash {} to the Ledger...", + full_block.header.block_number, + full_block.header.hash() + ); + + let block_num = full_block.header.block_number; + + ledger + .upload_evm_block(block_num, full_block) + .await + .context(format!("Unable to write block {block_num} to bigtable"))?; + + Ok(()) +} diff --git a/evm-utils/evm-block-recovery/src/timestamp.rs b/evm-utils/evm-block-recovery/src/timestamp.rs new file mode 100644 index 0000000000..f6da414b67 --- /dev/null +++ b/evm-utils/evm-block-recovery/src/timestamp.rs @@ -0,0 +1,25 @@ +use std::collections::HashMap; + +use anyhow::*; +use chrono::{DateTime, Utc}; +use evm_state::BlockNum; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize)] +struct BlockDto { + number: u64, + timestamp: DateTime, +} + +/// FIXME: Source timestamp file exported with Time Zone error +const FIVE_HRS: u64 = 18000; + +pub fn load_timestamps() -> Result> { + let timestamps = std::fs::read_to_string("./timestamps/blocks.json").unwrap(); + + Ok(serde_json::from_str::>(×tamps) + .unwrap() + .into_iter() + .map(|block| (block.number, block.timestamp.timestamp() as u64 - FIVE_HRS)) + .collect()) +} diff --git a/evm-utils/evm-block-recovery/timestamps/blocks.json b/evm-utils/evm-block-recovery/timestamps/blocks.json new file mode 100644 index 0000000000..0992de17b2 --- /dev/null +++ b/evm-utils/evm-block-recovery/timestamps/blocks.json @@ -0,0 +1,170 @@ +[ + { + "number" : 15662812, + "timestamp" : "2022-01-22T00:19:13.000Z" + }, + { + "number" : 15662813, + "timestamp" : "2022-01-22T00:19:14.000Z" + }, + { + "number" : 15662814, + "timestamp" : "2022-01-22T00:19:14.000Z" + }, + { + "number" : 15662815, + "timestamp" : "2022-01-22T00:19:15.000Z" + }, + { + "number" : 15662816, + "timestamp" : "2022-01-22T00:19:15.000Z" + }, + { + "number" : 15662817, + "timestamp" : "2022-01-22T00:19:15.000Z" + }, + { + "number" : 15662818, + "timestamp" : "2022-01-22T00:19:16.000Z" + }, + { + "number" : 15662819, + "timestamp" : "2022-01-22T00:19:16.000Z" + }, + { + "number" : 15662820, + "timestamp" : "2022-01-22T00:19:17.000Z" + }, + { + "number" : 15662821, + "timestamp" : "2022-01-22T00:19:18.000Z" + }, + { + "number" : 15662822, + "timestamp" : "2022-01-22T00:19:18.000Z" + }, + { + "number" : 15662823, + "timestamp" : "2022-01-22T00:19:18.000Z" + }, + { + "number" : 15662824, + "timestamp" : "2022-01-22T00:19:18.000Z" + }, + { + "number" : 15662825, + "timestamp" : "2022-01-22T00:19:19.000Z" + }, + { + "number" : 15662826, + "timestamp" : "2022-01-22T00:19:19.000Z" + }, + { + "number" : 15662827, + "timestamp" : "2022-01-22T00:19:20.000Z" + }, + { + "number" : 15662828, + "timestamp" : "2022-01-22T00:19:20.000Z" + }, + { + "number" : 15662829, + "timestamp" : "2022-01-22T00:19:20.000Z" + }, + { + "number" : 15662830, + "timestamp" : "2022-01-22T00:19:21.000Z" + }, + { + "number" : 15662831, + "timestamp" : "2022-01-22T00:19:21.000Z" + }, + { + "number" : 15662832, + "timestamp" : "2022-01-22T00:19:22.000Z" + }, + { + "number" : 15662833, + "timestamp" : "2022-01-22T00:19:22.000Z" + }, + { + "number" : 15662834, + "timestamp" : "2022-01-22T00:19:23.000Z" + }, + { + "number" : 15662835, + "timestamp" : "2022-01-22T00:19:23.000Z" + }, + { + "number" : 15880822, + "timestamp" : "2022-01-23T02:33:18.000Z" + }, + { + "number" : 15880823, + "timestamp" : "2022-01-23T02:33:24.000Z" + }, + { + "number" : 15880824, + "timestamp" : "2022-01-23T02:33:25.000Z" + }, + { + "number" : 15880825, + "timestamp" : "2022-01-23T02:33:25.000Z" + }, + { + "number" : 15880826, + "timestamp" : "2022-01-23T02:33:25.000Z" + }, + { + "number" : 15880827, + "timestamp" : "2022-01-23T02:33:26.000Z" + }, + { + "number" : 15880828, + "timestamp" : "2022-01-23T02:33:26.000Z" + }, + { + "number" : 15880829, + "timestamp" : "2022-01-23T02:33:26.000Z" + }, + { + "number" : 15880830, + "timestamp" : "2022-01-23T02:33:27.000Z" + }, + { + "number" : 15880831, + "timestamp" : "2022-01-23T02:33:27.000Z" + }, + { + "number" : 15880832, + "timestamp" : "2022-01-23T02:33:28.000Z" + }, + { + "number" : 15880833, + "timestamp" : "2022-01-23T02:33:28.000Z" + }, + { + "number" : 15880834, + "timestamp" : "2022-01-23T02:33:28.000Z" + }, + { + "number" : 15880835, + "timestamp" : "2022-01-23T02:33:29.000Z" + }, + { + "number" : 15880836, + "timestamp" : "2022-01-23T02:33:29.000Z" + }, + { + "number" : 17206783, + "timestamp" : "2022-01-29T20:00:36.000Z" + }, + { + "number" : 17206784, + "timestamp" : "2022-01-29T20:00:36.000Z" + }, + { + "number" : 17206785, + "timestamp" : "2022-01-29T20:00:36.000Z" + } +] diff --git a/evm-utils/evm-bridge/src/main.rs b/evm-utils/evm-bridge/src/main.rs index 7f30e89714..e8e44204d5 100644 --- a/evm-utils/evm-bridge/src/main.rs +++ b/evm-utils/evm-bridge/src/main.rs @@ -707,6 +707,24 @@ impl BasicERPC for BasicErpcProxy { ))) } + fn recover_block_header( + &self, + meta: Self::Metadata, + txs: Vec<(RPCTransaction, Vec)>, + last_hashes: Vec, + block_header: BlockHeader, + state_root: H256, + ) -> EvmResult { + proxy_evm_rpc!( + meta.rpc_client, + DebugRecoverBlockHeader, + txs, + last_hashes, + block_header, + state_root + ) + } + fn estimate_gas( &self, meta: Self::Metadata, diff --git a/evm-utils/evm-rpc/src/error.rs b/evm-utils/evm-rpc/src/error.rs index 68da7b95b8..a9f60def53 100644 --- a/evm-utils/evm-rpc/src/error.rs +++ b/evm-utils/evm-rpc/src/error.rs @@ -103,6 +103,8 @@ pub enum Error { GasPriceTooLow { need: U256 }, #[snafu(display("Transaction was removed from mempool"))] TransactionRemoved {}, + #[snafu(display("Invalid rpc params"))] + InvalidParams {}, // InvalidParams {}, // UnsupportedTrieQuery, // NotFound, @@ -195,6 +197,7 @@ impl From for JRpcError { } Error::ProxyRpcError { source } => source.clone(), Error::WrongChainId { .. } => Self::invalid_params(err.to_string()), + Error::InvalidParams {} => Self::invalid_params(err.to_string()), Error::EvmStateError { source } => { internal_error_with_details(EVM_STATE_RPC_ERROR, &err, &source) } diff --git a/evm-utils/evm-rpc/src/lib.rs b/evm-utils/evm-rpc/src/lib.rs index d63e2a4370..5deff103ea 100644 --- a/evm-utils/evm-rpc/src/lib.rs +++ b/evm-utils/evm-rpc/src/lib.rs @@ -12,7 +12,8 @@ use snafu::ResultExt; mod serialize; use self::error::EvmStateError; use evm_state::{ - Address, ExitSucceed, Gas, LogFilterTopicEntry, LogWithLocation, TransactionInReceipt, + Address, Block, BlockHeader, ExitSucceed, Gas, LogFilterTopicEntry, LogWithLocation, + TransactionInReceipt, }; pub mod error; @@ -716,6 +717,16 @@ pub mod basic { meta_info: Option, ) -> BoxFuture, Error>>; + #[rpc(meta, name = "debug_recoverBlockHeader")] + fn recover_block_header( + &self, + meta: Self::Metadata, + txs: Vec<(RPCTransaction, Vec)>, + last_hashes: Vec, + block_header: BlockHeader, + state_root: H256, + ) -> Result<(Block, Vec>), Error>; + #[rpc(meta, name = "eth_estimateGas")] fn estimate_gas( &self, diff --git a/evm-utils/evm-state/src/state.rs b/evm-utils/evm-state/src/state.rs index 292d75c8bc..ec6fc3b459 100644 --- a/evm-utils/evm-state/src/state.rs +++ b/evm-utils/evm-state/src/state.rs @@ -54,7 +54,7 @@ pub struct Incomming { pub timestamp: u64, pub used_gas: u64, pub(crate) state_root: H256, - pub(crate) last_block_hash: H256, + pub last_block_hash: H256, /// Maybe::Nothing indicates removed account pub(crate) state_updates: ChangedState, diff --git a/storage-bigtable/src/lib.rs b/storage-bigtable/src/lib.rs index 234d4b5c21..a777cb4be8 100644 --- a/storage-bigtable/src/lib.rs +++ b/storage-bigtable/src/lib.rs @@ -660,11 +660,7 @@ impl LedgerStorage { Ok(key_to_slot(&blocks[0])) } - /// Fetch the next slots after the provided slot that contains a block - /// - /// start_slot: slot to start the search from (inclusive) - /// limit: stop after this many slots have been found; if limit==0, all records in the table - /// after start_slot will be read + pub async fn get_evm_confirmed_blocks( &self, start_block: evm_state::BlockNum, @@ -682,6 +678,24 @@ impl LedgerStorage { Ok(blocks.into_iter().filter_map(|s| key_to_slot(&s)).collect()) } + + pub async fn get_evm_confirmed_full_blocks_nums( + &self, + start_block: evm_state::BlockNum, + limit: usize, + ) -> Result> { + let mut bigtable = self.connection.client(); + let blocks = bigtable + .get_row_keys( + "evm-full-blocks", + Some(slot_to_key(start_block)), + None, + limit as i64, + ) + .await?; + Ok(blocks.into_iter().filter_map(|s| key_to_slot(&s)).collect()) + } + pub async fn get_evm_block_by_hash( &self, block_hash: evm_state::H256, @@ -701,7 +715,7 @@ impl LedgerStorage { let mut bigtable = self.connection.client(); let block_cell_data = bigtable .get_protobuf_or_bincode_cell::( - "evm-block", + "evm-blocks", slot_to_key(block_num), ) .await