From 6dc7a78b1ff1ec2cc7dbd74f03e599057c339bb9 Mon Sep 17 00:00:00 2001 From: Vladimir Bugaev Date: Wed, 11 Oct 2023 18:42:45 +0700 Subject: [PATCH] neon core rpc (for testing) --- Dockerfile | 21 +- evm_loader/Cargo.lock | 2420 ++++++++--------- evm_loader/Cargo.toml | 13 +- evm_loader/api/Cargo.toml | 4 +- evm_loader/lib-interface/.gitignore | 1 + evm_loader/lib-interface/Cargo.lock | 474 ++++ evm_loader/lib-interface/Cargo.toml | 13 + evm_loader/lib-interface/src/lib.rs | 59 + evm_loader/lib-interface/src/types.rs | 12 + evm_loader/lib/Cargo.toml | 24 +- evm_loader/lib/src/abi/cancel_trx.rs | 23 + evm_loader/lib/src/abi/collect_treasury.rs | 12 + evm_loader/lib/src/abi/context.rs | 53 + .../lib/src/abi/create_ether_account.rs | 34 + evm_loader/lib/src/abi/deposit.rs | 31 + evm_loader/lib/src/abi/emulate.rs | 31 + .../lib/src/abi/get_ether_account_data.rs | 15 + evm_loader/lib/src/abi/get_neon_elf.rs | 15 + evm_loader/lib/src/abi/get_storage_at.rs | 21 + evm_loader/lib/src/abi/init_environment.rs | 23 + evm_loader/lib/src/abi/mod.rs | 195 ++ evm_loader/lib/src/abi/trace.rs | 28 + evm_loader/lib/src/errors.rs | 13 + evm_loader/lib/src/lib.rs | 37 + evm_loader/rpc-client/Cargo.toml | 19 + evm_loader/rpc-client/src/config.rs | 9 + evm_loader/rpc-client/src/error.rs | 9 + evm_loader/rpc-client/src/http.rs | 135 + evm_loader/rpc-client/src/lib.rs | 55 + evm_loader/rpc/.gitignore | 3 + evm_loader/rpc/Cargo.toml | 25 + evm_loader/rpc/build.rs | 3 + evm_loader/rpc/src/build_info.rs | 7 + evm_loader/rpc/src/context.rs | 6 + evm_loader/rpc/src/error.rs | 27 + evm_loader/rpc/src/handlers/cancel_trx.rs | 17 + .../rpc/src/handlers/collect_treasury.rs | 13 + .../rpc/src/handlers/create_ether_account.rs | 17 + evm_loader/rpc/src/handlers/deposit.rs | 17 + evm_loader/rpc/src/handlers/emulate.rs | 17 + .../src/handlers/get_ether_account_data.rs | 17 + evm_loader/rpc/src/handlers/get_neon_elf.rs | 17 + evm_loader/rpc/src/handlers/get_storage_at.rs | 17 + evm_loader/rpc/src/handlers/info.rs | 7 + .../rpc/src/handlers/init_environment.rs | 17 + evm_loader/rpc/src/handlers/mod.rs | 71 + evm_loader/rpc/src/handlers/trace.rs | 17 + evm_loader/rpc/src/main.rs | 76 + evm_loader/rpc/src/options.rs | 26 + evm_loader/rpc/src/rpc.rs | 47 + 50 files changed, 2916 insertions(+), 1347 deletions(-) create mode 100644 evm_loader/lib-interface/.gitignore create mode 100644 evm_loader/lib-interface/Cargo.lock create mode 100644 evm_loader/lib-interface/Cargo.toml create mode 100644 evm_loader/lib-interface/src/lib.rs create mode 100644 evm_loader/lib-interface/src/types.rs create mode 100644 evm_loader/lib/src/abi/cancel_trx.rs create mode 100644 evm_loader/lib/src/abi/collect_treasury.rs create mode 100644 evm_loader/lib/src/abi/context.rs create mode 100644 evm_loader/lib/src/abi/create_ether_account.rs create mode 100644 evm_loader/lib/src/abi/deposit.rs create mode 100644 evm_loader/lib/src/abi/emulate.rs create mode 100644 evm_loader/lib/src/abi/get_ether_account_data.rs create mode 100644 evm_loader/lib/src/abi/get_neon_elf.rs create mode 100644 evm_loader/lib/src/abi/get_storage_at.rs create mode 100644 evm_loader/lib/src/abi/init_environment.rs create mode 100644 evm_loader/lib/src/abi/mod.rs create mode 100644 evm_loader/lib/src/abi/trace.rs create mode 100644 evm_loader/rpc-client/Cargo.toml create mode 100644 evm_loader/rpc-client/src/config.rs create mode 100644 evm_loader/rpc-client/src/error.rs create mode 100644 evm_loader/rpc-client/src/http.rs create mode 100644 evm_loader/rpc-client/src/lib.rs create mode 100644 evm_loader/rpc/.gitignore create mode 100644 evm_loader/rpc/Cargo.toml create mode 100644 evm_loader/rpc/build.rs create mode 100644 evm_loader/rpc/src/build_info.rs create mode 100644 evm_loader/rpc/src/context.rs create mode 100644 evm_loader/rpc/src/error.rs create mode 100644 evm_loader/rpc/src/handlers/cancel_trx.rs create mode 100644 evm_loader/rpc/src/handlers/collect_treasury.rs create mode 100644 evm_loader/rpc/src/handlers/create_ether_account.rs create mode 100644 evm_loader/rpc/src/handlers/deposit.rs create mode 100644 evm_loader/rpc/src/handlers/emulate.rs create mode 100644 evm_loader/rpc/src/handlers/get_ether_account_data.rs create mode 100644 evm_loader/rpc/src/handlers/get_neon_elf.rs create mode 100644 evm_loader/rpc/src/handlers/get_storage_at.rs create mode 100644 evm_loader/rpc/src/handlers/info.rs create mode 100644 evm_loader/rpc/src/handlers/init_environment.rs create mode 100644 evm_loader/rpc/src/handlers/mod.rs create mode 100644 evm_loader/rpc/src/handlers/trace.rs create mode 100644 evm_loader/rpc/src/main.rs create mode 100644 evm_loader/rpc/src/options.rs create mode 100644 evm_loader/rpc/src/rpc.rs diff --git a/Dockerfile b/Dockerfile index 55744efaed..969b010e42 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,13 +18,13 @@ ENV NEON_REVISION=${REVISION} RUN cargo fmt --check && \ cargo clippy --release && \ cargo build --release && \ - cargo build-bpf --features devnet && cp target/deploy/evm_loader.so target/deploy/evm_loader-devnet.so && \ - cargo build-bpf --features testnet && cp target/deploy/evm_loader.so target/deploy/evm_loader-testnet.so && \ - cargo build-bpf --features govertest && cp target/deploy/evm_loader.so target/deploy/evm_loader-govertest.so && \ - cargo build-bpf --features govertest,emergency && cp target/deploy/evm_loader.so target/deploy/evm_loader-govertest-emergency.so && \ - cargo build-bpf --features mainnet && cp target/deploy/evm_loader.so target/deploy/evm_loader-mainnet.so && \ - cargo build-bpf --features mainnet,emergency && cp target/deploy/evm_loader.so target/deploy/evm_loader-mainnet-emergency.so && \ - cargo build-bpf --features ci --dump + cargo build-bpf --manifest-path program/Cargo.toml --features devnet && cp target/deploy/evm_loader.so target/deploy/evm_loader-devnet.so && \ + cargo build-bpf --manifest-path program/Cargo.toml --features testnet && cp target/deploy/evm_loader.so target/deploy/evm_loader-testnet.so && \ + cargo build-bpf --manifest-path program/Cargo.toml --features govertest && cp target/deploy/evm_loader.so target/deploy/evm_loader-govertest.so && \ + cargo build-bpf --manifest-path program/Cargo.toml --features govertest,emergency && cp target/deploy/evm_loader.so target/deploy/evm_loader-govertest-emergency.so && \ + cargo build-bpf --manifest-path program/Cargo.toml --features mainnet && cp target/deploy/evm_loader.so target/deploy/evm_loader-mainnet.so && \ + cargo build-bpf --manifest-path program/Cargo.toml --features mainnet,emergency && cp target/deploy/evm_loader.so target/deploy/evm_loader-mainnet-emergency.so && \ + cargo build-bpf --manifest-path program/Cargo.toml --features ci --dump # Build Solidity contracts FROM ethereum/solc:0.8.0 AS solc @@ -48,7 +48,8 @@ FROM ${SOLANA_IMAGE} AS solana FROM ubuntu:20.04 AS base WORKDIR /opt RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get -y install vim less openssl ca-certificates curl python3 python3-pip parallel && \ + apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive apt-get -y install vim less openssl libssl-dev ca-certificates curl python3 python3-pip parallel && \ rm -rf /var/lib/apt/lists/* COPY tests/requirements.txt /tmp/ @@ -77,6 +78,8 @@ COPY --from=evm-loader-builder /opt/neon-evm/evm_loader/target/deploy/evm_loader COPY --from=evm-loader-builder /opt/neon-evm/evm_loader/target/deploy/evm_loader-dump.txt /opt/ COPY --from=evm-loader-builder /opt/neon-evm/evm_loader/target/release/neon-cli /opt/ COPY --from=evm-loader-builder /opt/neon-evm/evm_loader/target/release/neon-api /opt/ +COPY --from=evm-loader-builder /opt/neon-evm/evm_loader/target/release/neon-rpc /opt/ +COPY --from=evm-loader-builder /opt/neon-evm/evm_loader/target/release/libneon_lib.so /opt/libs/current/ COPY --from=solana /usr/bin/spl-token /opt/spl-token COPY --from=contracts /opt/ /opt/solidity/ COPY --from=contracts /usr/bin/solc /usr/bin/solc @@ -95,4 +98,4 @@ COPY ci/operator-keypairs/id2.json /root/.config/solana/id2.json COPY ci/keys/ /opt/keys #ENV CONTRACTS_DIR=/opt/solidity/ -ENV PATH=/opt/solana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt +ENV PATH=/opt/solana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt \ No newline at end of file diff --git a/evm_loader/Cargo.lock b/evm_loader/Cargo.lock index 072bdc8f40..fe5c5d1786 100644 --- a/evm_loader/Cargo.lock +++ b/evm_loader/Cargo.lock @@ -12,6 +12,54 @@ dependencies = [ "regex", ] +[[package]] +name = "abi_stable" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d6512d3eb05ffe5004c59c206de7f99c34951504056ce23fc953842f12c445" +dependencies = [ + "abi_stable_derive", + "abi_stable_shared", + "const_panic", + "core_extensions", + "crossbeam-channel", + "generational-arena", + "libloading", + "lock_api", + "parking_lot", + "paste", + "repr_offset", + "rustc_version", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "abi_stable_derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7178468b407a4ee10e881bc7a328a65e739f0863615cca4429d43916b05e898" +dependencies = [ + "abi_stable_shared", + "as_derive_utils", + "core_extensions", + "proc-macro2 1.0.69", + "quote 1.0.33", + "rustc_version", + "syn 1.0.109", + "typed-arena", +] + +[[package]] +name = "abi_stable_shared" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b5df7688c123e63f4d4d649cba63f2967ba7f7861b1664fca3f77d3dad2b63" +dependencies = [ + "core_extensions", +] + [[package]] name = "actix-codec" version = "0.5.1" @@ -25,7 +73,7 @@ dependencies = [ "memchr", "pin-project-lite", "tokio", - "tokio-util 0.7.7", + "tokio-util", "tracing", ] @@ -39,9 +87,9 @@ dependencies = [ "actix-rt", "actix-service", "actix-utils", - "ahash 0.8.3", - "base64 0.21.4", - "bitflags 2.4.0", + "ahash 0.8.6", + "base64 0.21.5", + "bitflags 2.4.1", "brotli", "bytes", "bytestring", @@ -63,7 +111,7 @@ dependencies = [ "sha1", "smallvec", "tokio", - "tokio-util 0.7.7", + "tokio-util", "tracing", "zstd 0.12.4", ] @@ -74,8 +122,8 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ - "quote 1.0.32", - "syn 2.0.28", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -124,7 +172,7 @@ dependencies = [ "futures-core", "futures-util", "mio", - "socket2 0.5.4", + "socket2 0.5.5", "tokio", "tracing", ] @@ -165,7 +213,7 @@ dependencies = [ "actix-service", "actix-utils", "actix-web-codegen", - "ahash 0.8.3", + "ahash 0.8.6", "bytes", "bytestring", "cfg-if", @@ -185,8 +233,8 @@ dependencies = [ "serde_json", "serde_urlencoded", "smallvec", - "socket2 0.5.4", - "time 0.3.20", + "socket2 0.5.5", + "time", "url", ] @@ -197,9 +245,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5" dependencies = [ "actix-router", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", ] [[package]] @@ -246,42 +303,37 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.11", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", - "getrandom 0.2.9", + "getrandom 0.2.11", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] -[[package]] -name = "aliasable" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" - [[package]] name = "alloc-no-stdlib" version = "2.0.4" @@ -297,6 +349,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -317,9 +375,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.70" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "ark-bn254" @@ -362,7 +420,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "paste", "rustc_version", @@ -375,7 +433,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "syn 1.0.109", ] @@ -385,10 +443,10 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -414,7 +472,7 @@ dependencies = [ "ark-serialize-derive", "ark-std", "digest 0.10.7", - "num-bigint 0.4.3", + "num-bigint 0.4.4", ] [[package]] @@ -423,8 +481,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -452,9 +510,21 @@ checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "as_derive_utils" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "ff3c96645900a44cf11941c111bd08a6573b0e2f9f69bc9264b179d8fae753c4" +dependencies = [ + "core_extensions", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 1.0.109", +] [[package]] name = "ascii" @@ -475,7 +545,7 @@ dependencies = [ "num-traits", "rusticata-macros", "thiserror", - "time 0.3.20", + "time", ] [[package]] @@ -484,8 +554,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", "synstructure", ] @@ -496,8 +566,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -520,9 +590,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.2" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d495b6dc0184693324491a5ac05f559acc97bf937ab31d7a1c33dd0016be6d2b" +checksum = "bc2d0cfb2a7388d34f590e76686704c494ed7aaceed62ee1ba35cbf363abc2a5" dependencies = [ "brotli", "flate2", @@ -532,6 +602,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "async-ffi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ed5a937a789391ebc1c77d3a15b060e0d100e6d7c483a2af3f250d6b8dc2a23" +dependencies = [ + "abi_stable", +] + [[package]] name = "async-mutex" version = "1.4.0" @@ -547,9 +626,9 @@ version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -569,6 +648,21 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "base64" version = "0.12.3" @@ -583,9 +677,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.4" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "base64ct" @@ -593,6 +687,15 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "beef" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" +dependencies = [ + "serde", +] + [[package]] name = "bincode" version = "1.3.3" @@ -610,9 +713,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bitmaps" @@ -625,9 +728,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" dependencies = [ "arrayref", "arrayvec", @@ -691,7 +794,7 @@ dependencies = [ "borsh-derive-internal 0.9.3", "borsh-schema-derive-internal 0.9.3", "proc-macro-crate 0.1.5", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "syn 1.0.109", ] @@ -704,7 +807,7 @@ dependencies = [ "borsh-derive-internal 0.10.3", "borsh-schema-derive-internal 0.10.3", "proc-macro-crate 0.1.5", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "syn 1.0.109", ] @@ -714,8 +817,8 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -725,8 +828,8 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -736,8 +839,8 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -747,16 +850,16 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "brotli" -version = "3.3.4" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -765,9 +868,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.3.4" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -781,9 +884,9 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bstr" -version = "1.4.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" +checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" dependencies = [ "memchr", ] @@ -806,7 +909,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b314717755dd6a06fc11ad3f7909ba4c0ae2ab516f5cb0404fe924c71bfc7d0" dependencies = [ "anyhow", - "base64 0.21.4", + "base64 0.21.5", "bincode", "build-info-common", "cargo_metadata", @@ -839,25 +942,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffd5f241ddd417436c48d35da9869480891449ddd1ae3fd483bbcfbae741a422" dependencies = [ "anyhow", - "base64 0.21.4", + "base64 0.21.5", "bincode", "build-info-common", "chrono", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "proc-macro-error", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "serde_json", - "syn 2.0.28", + "syn 2.0.39", "xz2", ] [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bv" @@ -880,26 +983,26 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bytestring" @@ -910,27 +1013,6 @@ dependencies = [ "bytes", ] -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -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 = "camino" version = "1.1.6" @@ -952,9 +1034,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" dependencies = [ "serde", ] @@ -984,11 +1066,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -999,27 +1082,17 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.24" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ + "android-tzdata", "iana-time-zone", "js-sys", - "num-integer", "num-traits", "serde", - "time 0.1.45", "wasm-bindgen", - "winapi", -] - -[[package]] -name = "chrono-humanize" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" -dependencies = [ - "chrono", + "windows-targets 0.48.5", ] [[package]] @@ -1048,9 +1121,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", "bitflags 1.3.2", @@ -1073,9 +1146,9 @@ dependencies = [ [[package]] name = "clickhouse" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33816ee1fea4f60d97abfeb773b9b566ae85f8bfa891758d00a1fb1e5a606591" +checksum = "a0875e527e299fc5f4faba42870bf199a39ab0bb2dbba1b8aef0a2151451130f" dependencies = [ "bstr", "bytes", @@ -1099,8 +1172,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18af5425854858c507eec70f7deb4d5d8cec4216fcb086283a78872387281ea5" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "serde_derive_internals", "syn 1.0.109", ] @@ -1114,16 +1187,6 @@ dependencies = [ "cc", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - [[package]] name = "combine" version = "3.8.1" @@ -1139,9 +1202,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" dependencies = [ "crossbeam-utils", ] @@ -1187,24 +1250,30 @@ checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" [[package]] name = "const_format" -version = "0.2.30" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7309d9b4d3d2c0641e018d449232f2e28f1b22933c137f157d3dbc14228b8c0e" +checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f47bf7270cf70d370f8f98c1abb6d2d4cf60a6845d30e05bfb90c6568650" +checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "unicode-xid 0.2.4", ] +[[package]] +name = "const_panic" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b" + [[package]] name = "constant_time_eq" version = "0.3.0" @@ -1224,7 +1293,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" dependencies = [ "percent-encoding", - "time 0.3.20", + "time", "version_check", ] @@ -1244,11 +1313,26 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +[[package]] +name = "core_extensions" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c71dc07c9721607e7a16108336048ee978c3a8b129294534272e8bac96c0ee" +dependencies = [ + "core_extensions_proc_macros", +] + +[[package]] +name = "core_extensions_proc_macros" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f3b219d28b6e3b4ac87bc1fc522e0803ab22e055da177bff0068c4150c61a6" + [[package]] name = "cpufeatures" -version = "0.2.6" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -1298,22 +1382,22 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.8.0", + "memoffset 0.9.0", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -1377,50 +1461,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "cxx" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2 1.0.66", - "quote 1.0.32", - "scratch", - "syn 2.0.28", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" -dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", -] - [[package]] name = "darling" version = "0.20.3" @@ -1439,10 +1479,10 @@ checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "strsim 0.10.0", - "syn 2.0.28", + "syn 2.0.39", ] [[package]] @@ -1452,26 +1492,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", - "quote 1.0.32", - "syn 2.0.28", -] - -[[package]] -name = "dashmap" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" -dependencies = [ - "cfg-if", - "num_cpus", - "rayon", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "data-encoding" -version = "2.3.3" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "der" @@ -1491,11 +1520,21 @@ dependencies = [ "asn1-rs", "displaydoc", "nom", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "rusticata-macros", ] +[[package]] +name = "deranged" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "derivation-path" version = "0.2.0" @@ -1508,8 +1547,8 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -1520,8 +1559,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "rustc_version", "syn 1.0.109", ] @@ -1564,15 +1603,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "dir-diff" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2860407d7d7e2e004bb2128510ad9e8d669e76fa005ccf567977b5d71b8b4a0b" -dependencies = [ - "walkdir", -] - [[package]] name = "dirs-next" version = "2.0.0" @@ -1596,13 +1626,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -1666,26 +1696,14 @@ dependencies = [ "derivation-path", "ed25519-dalek", "hmac 0.12.1", - "sha2 0.10.6", -] - -[[package]] -name = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 1.0.109", + "sha2 0.10.8", ] [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encode_unicode" @@ -1695,9 +1713,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -1717,22 +1735,9 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", -] - -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint 0.4.3", - "num-traits", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -1755,31 +1760,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno" -version = "0.3.1" +name = "erased-serde" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", + "serde", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" dependencies = [ - "cc", "libc", + "windows-sys 0.48.0", ] [[package]] name = "ethnum" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8ff382b2fa527fb7fb06eeebfc5bbb3f17e3cc6b9d70b006c41daa8824adac" +checksum = "b90ca2580b73ab6a1f724b76ca11ab632df820fd6040c336200d2c1df7b3c82c" dependencies = [ "serde", ] @@ -1824,22 +1827,28 @@ version = "1.0.0" dependencies = [ "bs58", "itertools 0.11.0", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "serde", "syn 1.0.109", - "toml 0.8.0", + "toml 0.8.8", ] [[package]] -name = "fastrand" -version = "1.9.0" +name = "extensions" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +checksum = "258f70bd2b060d448403a66d420e81dcac3e5247a4928a887404a5e03715e2e0" dependencies = [ - "instant", + "fxhash", ] +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + [[package]] name = "feature-probe" version = "0.1.1" @@ -1855,23 +1864,11 @@ dependencies = [ "log", ] -[[package]] -name = "filetime" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", -] - [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -1900,9 +1897,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -1915,9 +1912,9 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ "futures-channel", "futures-core", @@ -1930,9 +1927,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", "futures-sink", @@ -1940,15 +1937,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -1957,38 +1954,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-channel", "futures-core", @@ -2002,6 +1999,24 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generational-arena" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877e94aff08e743b651baaea359664321055749b398adff8740a7399af7796e7" +dependencies = [ + "cfg-if", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -2038,9 +2053,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "js-sys", @@ -2049,6 +2064,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" + [[package]] name = "git2" version = "0.17.2" @@ -2092,9 +2113,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.18" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -2102,10 +2123,10 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.1.0", "slab", "tokio", - "tokio-util 0.7.7", + "tokio-util", "tracing", ] @@ -2124,7 +2145,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] @@ -2132,9 +2153,6 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.6", -] [[package]] name = "hashbrown" @@ -2142,14 +2160,14 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", ] [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" [[package]] name = "heck" @@ -2177,18 +2195,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -2249,9 +2258,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -2277,9 +2286,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -2304,7 +2313,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -2313,14 +2322,16 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http", "hyper", - "rustls 0.21.7", + "log", + "rustls 0.21.9", + "rustls-native-certs", "tokio", "tokio-rustls 0.24.1", ] @@ -2340,26 +2351,25 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.56" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] @@ -2370,9 +2380,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -2394,12 +2404,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "index_list" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9d968042a4902e08810946fc7cd5851eb75e80301342305af755ca06cb82ce" - [[package]] name = "indexmap" version = "1.9.3" @@ -2413,20 +2417,20 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.2", "serde", ] [[package]] name = "indicatif" -version = "0.17.6" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730" +checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" dependencies = [ "console", "instant", @@ -2444,22 +2448,11 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "io-lifetimes" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ipnet" -version = "2.7.2" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itertools" @@ -2481,24 +2474,24 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] @@ -2518,11 +2511,81 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jsonrpc-v2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759affe8550a30591c68f5e85d1784f24dc65217d2cca765949857f844fcecb0" +dependencies = [ + "actix-service", + "actix-web", + "async-trait", + "bytes", + "erased-serde", + "extensions", + "futures", + "serde", + "serde_json", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da2327ba8df2fdbd5e897e2b5ed25ce7f299d345b9736b6828814c3dbd1fd47b" +dependencies = [ + "anyhow", + "async-trait", + "beef", + "futures-util", + "hyper", + "jsonrpsee-types", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-http-client" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f80c17f62c7653ce767e3d7288b793dfec920f97067ceb189ebdd3570f2bc20" +dependencies = [ + "async-trait", + "hyper", + "hyper-rustls", + "jsonrpsee-core", + "jsonrpsee-types", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be0be325642e850ed0bdff426674d2e66b2b7117c9be23a7caef68a2902b7d9" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", + "tracing", +] + [[package]] name = "keccak" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ "cpufeatures", ] @@ -2541,9 +2604,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libgit2-sys" @@ -2557,6 +2620,27 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall", +] + [[package]] name = "libsecp256k1" version = "0.6.0" @@ -2617,15 +2701,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - [[package]] name = "linked_list_allocator" version = "0.10.5" @@ -2634,9 +2709,9 @@ checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286" [[package]] name = "linux-raw-sys" -version = "0.3.3" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b085a4f2cde5781fc4b1717f2e86c62f5cda49de7ba99a7c2eae02b61c9064c" +checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" [[package]] name = "local-channel" @@ -2657,9 +2732,9 @@ checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -2667,21 +2742,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "lru" -version = "0.7.8" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" -dependencies = [ - "hashbrown 0.12.3", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lz4" @@ -2729,16 +2792,16 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f1b8c13cb1f814b634a96b2c725449fe7ed464a7b8781de8688be5ffbd3f305" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memmap2" @@ -2758,15 +2821,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "memoffset" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.0" @@ -2811,35 +2865,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", -] - -[[package]] -name = "modular-bitfield" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" -dependencies = [ - "modular-bitfield-impl", - "static_assertions", -] - -[[package]] -name = "modular-bitfield-impl" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" -dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 1.0.109", + "windows-sys 0.48.0", ] [[package]] @@ -2876,8 +2909,8 @@ dependencies = [ "num-traits", "shank", "solana-program", - "spl-associated-token-account 1.1.3", - "spl-token 3.5.0", + "spl-associated-token-account 2.2.0", + "spl-token 4.0.0", "thiserror", ] @@ -2887,7 +2920,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12989bc45715b0ee91944855130131479f9c772e198a910c3eb0ea327d5bffc3" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "syn 1.0.109", ] @@ -2897,7 +2930,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5a739019e11d93661a64ef5fe108ab17c79b35961e944442ff6efdd460ad01a" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "syn 1.0.109", ] @@ -2980,9 +3013,11 @@ dependencies = [ name = "neon-lib" version = "0.1.0" dependencies = [ + "abi_stable", "anyhow", + "async-ffi", "async-trait", - "base64 0.21.4", + "base64 0.21.5", "bincode", "bs58", "build-info", @@ -2992,38 +3027,89 @@ dependencies = [ "evm-loader", "goblin 0.6.1", "hex", + "lazy_static", "log", + "neon-lib-interface", "rand 0.8.5", "scroll", "serde", "serde_json", - "serde_with 3.3.0", + "serde_with 3.4.0", "solana-clap-utils", "solana-cli", "solana-cli-config", "solana-client", - "solana-program-test", "solana-sdk", "solana-transaction-status", "spl-associated-token-account 1.1.3", "spl-token 3.5.0", + "strum", + "strum_macros", "thiserror", "tokio", "tracing", ] +[[package]] +name = "neon-lib-interface" +version = "0.1.0" +dependencies = [ + "abi_stable", + "async-ffi", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "neon-rpc" +version = "0.1.0" +dependencies = [ + "actix-web", + "build-info", + "build-info-build", + "clap 2.34.0", + "jsonrpc-v2", + "neon-lib", + "neon-lib-interface", + "semver", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-appender", + "tracing-subscriber", +] + +[[package]] +name = "neon-rpc-client" +version = "0.1.0" +dependencies = [ + "async-trait", + "build-info", + "jsonrpc-v2", + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-types", + "neon-lib", + "serde", + "serde_json", + "thiserror", + "tokio", +] + [[package]] name = "nix" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", "memoffset 0.7.1", "pin-utils", - "static_assertions", ] [[package]] @@ -3032,7 +3118,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "cfg-if", "libc", ] @@ -3084,9 +3170,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -3109,8 +3195,8 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -3120,9 +3206,9 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -3160,20 +3246,20 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.3", "libc", ] @@ -3211,8 +3297,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -3223,9 +3309,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -3234,10 +3320,10 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro-crate 2.0.0", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -3246,6 +3332,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + [[package]] name = "oid-registry" version = "0.6.1" @@ -3257,9 +3352,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" @@ -3269,11 +3364,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.50" +version = "0.10.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e30d8bc91859781f0a943411186324d580f2bbeb71b452fe91ae344806af3f1" +checksum = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "cfg-if", "foreign-types", "libc", @@ -3288,9 +3383,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -3301,9 +3396,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.85" +version = "0.9.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3d193fb1488ad46ffe3aaabc912cc931d02ee8518fe2959aea8ef52718b0c0" +checksum = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f" dependencies = [ "cc", "libc", @@ -3311,53 +3406,11 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror", -] - [[package]] name = "os_str_bytes" -version = "6.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" - -[[package]] -name = "ouroboros" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" -dependencies = [ - "aliasable", - "ouroboros_macro", -] - -[[package]] -name = "ouroboros_macro" -version = "0.15.6" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" -dependencies = [ - "Inflector", - "proc-macro-error", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 1.0.109", -] +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "overload" @@ -3377,22 +3430,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall", "smallvec", - "windows-sys 0.45.0", + "windows-targets 0.48.5", ] [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pbkdf2" @@ -3423,9 +3476,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "percentage" @@ -3451,16 +3504,16 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -3481,9 +3534,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "plain" @@ -3505,9 +3558,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.4.3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" +checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" @@ -3547,7 +3606,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit 0.19.8", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit 0.20.7", ] [[package]] @@ -3557,8 +3625,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", "version_check", ] @@ -3569,8 +3637,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "version_check", ] @@ -3585,9 +3653,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -3612,7 +3680,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.20.8", + "rustls 0.20.9", "thiserror", "tokio", "tracing", @@ -3627,9 +3695,9 @@ checksum = "94b0b33c13a79f669c85defaf4c275dc86a0c0372807d0ca3d78e0bb87274863" dependencies = [ "bytes", "rand 0.8.5", - "ring", + "ring 0.16.20", "rustc-hash", - "rustls 0.20.8", + "rustls 0.20.9", "rustls-native-certs", "slab", "thiserror", @@ -3646,7 +3714,7 @@ checksum = "641538578b21f5e5c8ea733b736895576d0fe329bb883b937db6f4d163dbaaf4" dependencies = [ "libc", "quinn-proto", - "socket2 0.4.9", + "socket2 0.4.10", "tracing", "windows-sys 0.42.0", ] @@ -3662,11 +3730,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", ] [[package]] @@ -3756,7 +3824,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.11", ] [[package]] @@ -3779,9 +3847,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -3789,14 +3857,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] @@ -3806,8 +3872,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" dependencies = [ "pem", - "ring", - "time 0.3.20", + "ring 0.16.20", + "time", "yasna", ] @@ -3822,43 +3888,34 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "getrandom 0.2.9", - "redox_syscall 0.2.16", + "getrandom 0.2.11", + "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.9.4" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.7", - "regex-syntax 0.7.5", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] @@ -3872,13 +3929,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.7" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.5", + "regex-syntax 0.8.2", ] [[package]] @@ -3889,18 +3946,27 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "repr_offset" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb1070755bd29dffc19d0971cab794e607839ba2ef4b69a9e6fbc8733c1b72ea" +dependencies = [ + "tstr", +] [[package]] name = "reqwest" -version = "0.11.20" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "async-compression", - "base64 0.21.4", + "base64 0.21.5", "bytes", "encoding_rs", "futures-core", @@ -3917,20 +3983,21 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.7", + "rustls 0.21.9", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-rustls 0.24.1", - "tokio-util 0.7.7", + "tokio-util", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.25.2", + "webpki-roots 0.25.3", "winreg", ] @@ -3943,12 +4010,26 @@ dependencies = [ "cc", "libc", "once_cell", - "spin", - "untrusted", + "spin 0.5.2", + "untrusted 0.7.1", "web-sys", "winapi", ] +[[package]] +name = "ring" +version = "0.17.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +dependencies = [ + "cc", + "getrandom 0.2.11", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.48.0", +] + [[package]] name = "ripemd" version = "0.1.3" @@ -3970,9 +4051,9 @@ dependencies = [ [[package]] name = "rmp" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44519172358fd6d58656c86ab8e7fbc9e1490c3e8f14d35ed78ca0dd07403c9f" +checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20" dependencies = [ "byteorder", "num-traits", @@ -3981,9 +4062,9 @@ dependencies = [ [[package]] name = "rmp-serde" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b13be192e0220b8afb7222aa5813cb62cc269ebb5cac346ca6487681d2913e" +checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a" dependencies = [ "byteorder", "rmp", @@ -3992,23 +4073,23 @@ dependencies = [ [[package]] name = "rpassword" -version = "7.2.0" +version = "7.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" dependencies = [ "libc", "rtoolbox", - "winapi", + "windows-sys 0.48.0", ] [[package]] name = "rtoolbox" -version = "0.0.1" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" dependencies = [ "libc", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -4049,13 +4130,12 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.13" +version = "0.38.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79bef90eb6d984c72722595b5b1348ab39275a5e5123faca6863bf07d75a4e0" +checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "errno", - "io-lifetimes", "libc", "linux-raw-sys", "windows-sys 0.48.0", @@ -4063,33 +4143,33 @@ dependencies = [ [[package]] name = "rustls" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ "log", - "ring", + "ring 0.16.20", "sct", "webpki", ] [[package]] name = "rustls" -version = "0.21.7" +version = "0.21.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" dependencies = [ "log", - "ring", + "ring 0.17.5", "rustls-webpki", "sct", ] [[package]] name = "rustls-native-certs" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -4099,64 +4179,49 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", ] [[package]] name = "rustls-webpki" -version = "0.101.4" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring", - "untrusted", + "ring 0.17.5", + "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "scratch" -version = "1.0.5" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scroll" @@ -4169,23 +4234,23 @@ dependencies = [ [[package]] name = "scroll_derive" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring", - "untrusted", + "ring 0.17.5", + "untrusted 0.9.0", ] [[package]] @@ -4195,16 +4260,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5e421024b5e5edfbaa8e60ecf90bda9dbffc602dbb230e6028763f85f0c68c" dependencies = [ "heck 0.3.3", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "security-framework" -version = "2.8.2" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -4215,9 +4280,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.8.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -4225,18 +4290,18 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.186" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f5db24220c009de9bd45e69fb2938f4b6d2df856aa9304ce377b3180f83b7c1" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -4252,13 +4317,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.186" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -4267,8 +4332,8 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -4278,7 +4343,7 @@ version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.1.0", "itoa", "ryu", "serde", @@ -4286,9 +4351,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" dependencies = [ "serde", ] @@ -4317,19 +4382,19 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" +checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.0.0", + "indexmap 2.1.0", "serde", "serde_json", - "serde_with_macros 3.3.0", - "time 0.3.20", + "serde_with_macros 3.4.0", + "time", ] [[package]] @@ -4339,30 +4404,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" dependencies = [ "darling", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "serde_with_macros" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" +checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" dependencies = [ "darling", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "serde_yaml" -version = "0.9.25" +version = "0.9.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.1.0", "itoa", "ryu", "serde", @@ -4406,9 +4471,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -4429,9 +4494,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c2bb1a323307527314a36bfb73f24febb08ce2b8a554bf4ffd6f51ad15198c" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ "digest 0.10.7", "keccak", @@ -4452,8 +4517,8 @@ version = "0.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63927d22a1e8b74bda98cc6e151fcdf178b7abb0dc6c4f81e0bbf5ffe2fc4ec8" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "shank_macro_impl", "syn 1.0.109", ] @@ -4465,17 +4530,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40ce03403df682f80f4dc1efafa87a4d0cb89b03726d0565e6364bdca5b9a441" dependencies = [ "anyhow", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "serde", "syn 1.0.109", ] [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -4513,24 +4578,24 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -4538,9 +4603,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", "windows-sys 0.48.0", @@ -4553,7 +4618,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83da6908b4865a9680c4fcb5e77d319467fdc5ab96a6ccc8361e7110ebcd206e" dependencies = [ "Inflector", - "base64 0.21.4", + "base64 0.21.5", "bincode", "bs58", "bv", @@ -4592,53 +4657,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "solana-banks-client" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f375ffcef8cd5ee12a2324a2e3887c99c54c50f3b9f2bb7a43b23ba13f77fd" -dependencies = [ - "borsh 0.10.3", - "futures", - "solana-banks-interface", - "solana-program", - "solana-sdk", - "tarpc", - "thiserror", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-banks-interface" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07ac3b05f89f26f7ff41541f82a53a3252f60f2313bd608da7b59c14fdbc3c2" -dependencies = [ - "serde", - "solana-sdk", - "tarpc", -] - -[[package]] -name = "solana-banks-server" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13027d9e0bedf46b921783b7b99ff4c6be6f202546b534ee1132c6e737fe2d78" -dependencies = [ - "bincode", - "crossbeam-channel", - "futures", - "solana-banks-interface", - "solana-client", - "solana-runtime", - "solana-sdk", - "solana-send-transaction-service", - "tarpc", - "tokio", - "tokio-serde", -] - [[package]] name = "solana-bpf-loader-program" version = "1.16.18" @@ -4658,23 +4676,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "solana-bucket-map" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0f77fbc9836e4f87ebf9b92cc5083172bd7eadf050a5255b3276be925f6347" -dependencies = [ - "bv", - "log", - "memmap2", - "modular-bitfield", - "num_enum 0.6.1", - "rand 0.7.3", - "solana-measure", - "solana-sdk", - "tempfile", -] - [[package]] name = "solana-clap-utils" version = "1.16.18" @@ -4767,7 +4768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88e1902f40e61a873317c3f296e56333bb52258ca717813990eac1ae8ba8670c" dependencies = [ "Inflector", - "base64 0.21.4", + "base64 0.21.5", "chrono", "clap 2.34.0", "console", @@ -4820,16 +4821,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "solana-compute-budget-program" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14bddd710a43491be07ac493703617290e8781a9bd92fc33fcc9a8e4345928dd" -dependencies = [ - "solana-program-runtime", - "solana-sdk", -] - [[package]] name = "solana-config-program" version = "1.16.18" @@ -4895,7 +4886,7 @@ version = "1.16.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a63aebf4beac713a1949216ae180355c044df9cc3db9a58ca153bb10bb5843b" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "blake3", "block-buffer 0.10.4", "bs58", @@ -4916,7 +4907,7 @@ dependencies = [ "serde_bytes", "serde_derive", "serde_json", - "sha2 0.10.6", + "sha2 0.10.8", "solana-frozen-abi-macro", "subtle", "thiserror", @@ -4928,24 +4919,10 @@ version = "1.16.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bced1b3c0421605312fd7eae7ceb6850d3b1d2e939da349c928e6d46a945c829" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "rustc_version", - "syn 2.0.28", -] - -[[package]] -name = "solana-loader-v4-program" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5af55ee96c942cf4f3d088621c7a265b1a0a3558fafd0f5851c8637b7e1170a9" -dependencies = [ - "log", - "rand 0.7.3", - "solana-measure", - "solana-program-runtime", - "solana-sdk", - "solana_rbpf", + "syn 2.0.39", ] [[package]] @@ -4990,14 +4967,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1dad26635fb41e948f56e1b896eab10e84cc62e00c59109a428a95c78fd6560" dependencies = [ "bincode", - "clap 3.2.23", + "clap 3.2.25", "crossbeam-channel", "log", - "nix 0.26.2", + "nix 0.26.4", "rand 0.7.3", "serde", "serde_derive", - "socket2 0.4.9", + "socket2 0.4.10", "solana-logger", "solana-sdk", "solana-version", @@ -5011,7 +4988,7 @@ version = "1.16.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b03a0782c2b62c476c3fafd4e002ad8d91a2e36ca952df8e965d81dbf1dc158d" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "bincode", "bv", "caps", @@ -5022,7 +4999,7 @@ dependencies = [ "lazy_static", "libc", "log", - "nix 0.26.2", + "nix 0.26.4", "rand 0.7.3", "rayon", "serde", @@ -5043,7 +5020,7 @@ dependencies = [ "ark-ff", "ark-serialize", "array-bytes", - "base64 0.21.4", + "base64 0.21.5", "bincode", "bitflags 1.3.2", "blake3", @@ -5056,7 +5033,7 @@ dependencies = [ "console_error_panic_hook", "console_log", "curve25519-dalek", - "getrandom 0.2.9", + "getrandom 0.2.11", "itertools 0.10.5", "js-sys", "lazy_static", @@ -5064,7 +5041,7 @@ dependencies = [ "libsecp256k1", "log", "memoffset 0.9.0", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-derive 0.3.3", "num-traits", "parking_lot", @@ -5076,8 +5053,8 @@ dependencies = [ "serde_bytes", "serde_derive", "serde_json", - "sha2 0.10.6", - "sha3 0.10.7", + "sha2 0.10.8", + "sha3 0.10.8", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-sdk-macro", @@ -5093,7 +5070,7 @@ version = "1.16.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb7d1b8df43a93c410456be7d41c0dca9e2c460530a075243a98f556391d2bf9" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", "bincode", "eager", "enum-iterator", @@ -5115,33 +5092,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "solana-program-test" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2971fc318678d5be14bf33356f0eff69f6d39fd75385d0f33db68d15cb1eb7c8" -dependencies = [ - "assert_matches", - "async-trait", - "base64 0.21.4", - "bincode", - "chrono-humanize", - "crossbeam-channel", - "log", - "serde", - "solana-banks-client", - "solana-banks-interface", - "solana-banks-server", - "solana-bpf-loader-program", - "solana-logger", - "solana-program-runtime", - "solana-runtime", - "solana-sdk", - "solana-vote-program", - "thiserror", - "tokio", -] - [[package]] name = "solana-pubsub-client" version = "1.16.18" @@ -5183,7 +5133,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rcgen", - "rustls 0.20.8", + "rustls 0.20.9", "solana-connection-cache", "solana-measure", "solana-metrics", @@ -5232,7 +5182,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1301ef82a9e87afb28bfccab1b3ebf8f10d6d2ee42c5b1d793ab989d70f83e27" dependencies = [ "async-trait", - "base64 0.21.4", + "base64 0.21.5", "bincode", "bs58", "indicatif", @@ -5257,7 +5207,7 @@ version = "1.16.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ffdfe666315851d1a5c3d426a688dccfd2af19b46667140ea59b9ddf3988038" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", "bs58", "jsonrpc-core", "reqwest", @@ -5280,79 +5230,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d45f9be345ea2d29eb2c43d4b9a4c5181513f0af3e366be8b5e478ef451177be" dependencies = [ "clap 2.34.0", - "solana-clap-utils", - "solana-rpc-client", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-runtime" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da45b4f58bb45ae1d92b5980ddf90bfabc52342eba4d0f5c1ecacab3a87fb2e" -dependencies = [ - "arrayref", - "bincode", - "blake3", - "bv", - "bytemuck", - "byteorder", - "bzip2", - "crossbeam-channel", - "dashmap", - "dir-diff", - "flate2", - "fnv", - "im", - "index_list", - "itertools 0.10.5", - "lazy_static", - "log", - "lru", - "lz4", - "memmap2", - "modular-bitfield", - "num-derive 0.3.3", - "num-traits", - "num_cpus", - "num_enum 0.6.1", - "once_cell", - "ouroboros", - "percentage", - "rand 0.7.3", - "rayon", - "regex", - "rustc_version", - "serde", - "serde_derive", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-bucket-map", - "solana-compute-budget-program", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-loader-v4-program", - "solana-measure", - "solana-metrics", - "solana-perf", - "solana-program-runtime", - "solana-rayon-threadlimit", + "solana-clap-utils", + "solana-rpc-client", "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", - "solana-zk-token-proof-program", - "solana-zk-token-sdk", - "static_assertions", - "strum", - "strum_macros", - "symlink", - "tar", - "tempfile", "thiserror", - "zstd 0.11.2+zstd.1.5.2", ] [[package]] @@ -5362,7 +5243,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "051b93dc7737a7fb530c1e74f135a652bb69f5554c8804b2ebf55d6fb6a30f26" dependencies = [ "assert_matches", - "base64 0.21.4", + "base64 0.21.5", "bincode", "bitflags 1.3.2", "borsh 0.10.3", @@ -5396,8 +5277,8 @@ dependencies = [ "serde_derive", "serde_json", "serde_with 2.3.3", - "sha2 0.10.6", - "sha3 0.10.7", + "sha2 0.10.8", + "sha3 0.10.8", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-logger", @@ -5415,41 +5296,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1fae2d1f62d655f88280a39711db401973d1bbe54fec9f795be80b9d76837ae" dependencies = [ "bs58", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "rustversion", - "syn 2.0.28", -] - -[[package]] -name = "solana-send-transaction-service" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e41bc95062870f354eb1e66b7eec5f00cea3d1769fc887b6631b35ddff70db7" -dependencies = [ - "crossbeam-channel", - "log", - "solana-client", - "solana-measure", - "solana-metrics", - "solana-runtime", - "solana-sdk", - "solana-tpu-client", -] - -[[package]] -name = "solana-stake-program" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b127ba7a3419335051e84ed6d46c1597a6eeaa741831e25e6f0588c72a6e3cc2" -dependencies = [ - "bincode", - "log", - "rustc_version", - "solana-config-program", - "solana-program-runtime", - "solana-sdk", - "solana-vote-program", + "syn 2.0.39", ] [[package]] @@ -5467,7 +5317,7 @@ dependencies = [ "itertools 0.10.5", "libc", "log", - "nix 0.26.2", + "nix 0.26.4", "pem", "percentage", "pkcs8", @@ -5476,7 +5326,7 @@ dependencies = [ "quinn-udp", "rand 0.7.3", "rcgen", - "rustls 0.20.8", + "rustls 0.20.9", "solana-metrics", "solana-perf", "solana-sdk", @@ -5485,20 +5335,6 @@ dependencies = [ "x509-parser", ] -[[package]] -name = "solana-system-program" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "599877167e03e4da09e2eff42efed7720615d1f2f5e8b9c52a057dc1d7067ee4" -dependencies = [ - "bincode", - "log", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - [[package]] name = "solana-thin-client" version = "1.16.18" @@ -5546,7 +5382,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdad82a1e22d7c3fc1e009eeec4e8841697f6cce1902b7a1d5b73baf2bcca2e5" dependencies = [ "Inflector", - "base64 0.21.4", + "base64 0.21.5", "bincode", "borsh 0.10.3", "bs58", @@ -5618,21 +5454,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "solana-zk-token-proof-program" -version = "1.16.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d3db5213b9dc063e95f94bc0b66748942786e48ed5e259bcf617897f1b86087" -dependencies = [ - "bytemuck", - "getrandom 0.1.16", - "num-derive 0.3.3", - "num-traits", - "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", -] - [[package]] name = "solana-zk-token-sdk" version = "1.16.18" @@ -5640,7 +5461,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad3cc2b931a39510b1c90dc876a93ae315b9712a8338296e4b60519d09e57be9" dependencies = [ "aes-gcm-siv", - "base64 0.21.4", + "base64 0.21.5", "bincode", "bytemuck", "byteorder", @@ -5687,6 +5508,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "spki" version = "0.5.4" @@ -5746,9 +5573,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fadbefec4f3c678215ca72bd71862697bb06b41fd77c0088902dd3203354387b" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "spl-discriminator-syn", - "syn 2.0.28", + "syn 2.0.39", ] [[package]] @@ -5757,10 +5584,10 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e5f2044ca42c8938d54d1255ce599c79a1ffd86b677dfab695caa20f9ffc3f2" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "sha2 0.10.6", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "sha2 0.10.8", + "syn 2.0.39", "thiserror", ] @@ -5814,10 +5641,10 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5269c8e868da17b6552ef35a51355a017bd8e0eae269c201fef830d35fa52c" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "sha2 0.10.6", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "sha2 0.10.8", + "syn 2.0.39", ] [[package]] @@ -5967,24 +5794,21 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strum" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros", -] +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" [[package]] name = "strum_macros" -version = "0.24.3" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "rustversion", - "syn 1.0.109", + "syn 2.0.39", ] [[package]] @@ -5993,12 +5817,6 @@ 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" @@ -6016,19 +5834,19 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.28" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "unicode-ident", ] @@ -6038,76 +5856,51 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", "unicode-xid 0.2.4", ] [[package]] -name = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tarpc" -version = "0.29.0" +name = "system-configuration" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ - "anyhow", - "fnv", - "futures", - "humantime", - "opentelemetry", - "pin-project", - "rand 0.8.5", - "serde", - "static_assertions", - "tarpc-plugins", - "thiserror", - "tokio", - "tokio-serde", - "tokio-util 0.6.10", - "tracing", - "tracing-opentelemetry", + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", ] [[package]] -name = "tarpc-plugins" -version = "0.12.0" +name = "system-configuration-sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 1.0.109", + "core-foundation-sys", + "libc", ] [[package]] name = "tempfile" -version = "3.5.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", + "redox_syscall", "rustix", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] @@ -6129,22 +5922,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -6165,22 +5958,13 @@ dependencies = [ [[package]] name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.20" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ + "deranged", "itoa", + "powerfmt", "serde", "time-core", "time-macros", @@ -6188,15 +5972,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -6237,11 +6021,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.27.0" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" dependencies = [ - "autocfg", + "backtrace", "bytes", "libc", "mio", @@ -6249,20 +6033,20 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.4.9", + "socket2 0.5.5", "tokio-macros", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -6281,7 +6065,7 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls 0.20.8", + "rustls 0.20.9", "tokio", "webpki", ] @@ -6292,31 +6076,15 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.7", + "rustls 0.21.9", "tokio", ] -[[package]] -name = "tokio-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe", - "futures-core", - "futures-sink", - "pin-project", - "serde", - "serde_json", -] - [[package]] name = "tokio-stream" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite", @@ -6331,7 +6099,7 @@ checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" dependencies = [ "futures-util", "log", - "rustls 0.20.8", + "rustls 0.20.9", "tokio", "tokio-rustls 0.23.4", "tungstenite", @@ -6341,24 +6109,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.7" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -6379,47 +6132,58 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.0" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c226a7bba6d859b63c92c4b4fe69c5b6b72d0cb897dbc8e6012298e6154cb56e" +checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.20.0", + "toml_edit 0.21.0", ] [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.8" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 1.9.3", + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.1.0", "toml_datetime", - "winnow 0.4.1", + "winnow", ] [[package]] name = "toml_edit" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ff63e60a958cefbb518ae1fd6566af80d9d4be430a33f3723dfc47d1d411d95" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.1.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.5.15", + "winnow", ] [[package]] @@ -6428,7 +6192,9 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ + "futures-core", "futures-util", + "pin-project", "pin-project-lite", "tokio", "tower-layer", @@ -6450,11 +6216,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -6463,31 +6228,32 @@ dependencies = [ [[package]] name = "tracing-appender" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "time 0.3.20", + "thiserror", + "time", "tracing-subscriber", ] [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -6495,33 +6261,20 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", - "tracing-core", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ "once_cell", - "opentelemetry", - "tracing", "tracing-core", - "tracing-subscriber", ] [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -6541,6 +6294,21 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +[[package]] +name = "tstr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cca3264971090dec0feef3b455a3c178f02762f7550cf4592991ac64b3be2d7e" +dependencies = [ + "tstr_proc_macros", +] + +[[package]] +name = "tstr_proc_macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78122066b0cb818b8afd08f7ed22f7fdbc3e90815035726f0840d0d26c0747a" + [[package]] name = "tungstenite" version = "0.17.3" @@ -6554,7 +6322,7 @@ dependencies = [ "httparse", "log", "rand 0.8.5", - "rustls 0.20.8", + "rustls 0.20.9", "sha-1", "thiserror", "url", @@ -6563,11 +6331,17 @@ dependencies = [ "webpki-roots 0.22.6", ] +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" @@ -6577,9 +6351,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -6598,9 +6372,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -6645,6 +6419,12 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "uriparse" version = "0.6.4" @@ -6657,9 +6437,9 @@ dependencies = [ [[package]] name = "url" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -6674,11 +6454,11 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "uuid" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.11", ] [[package]] @@ -6711,23 +6491,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -[[package]] -name = "walkdir" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" -dependencies = [ - "same-file", - "winapi-util", -] - [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -6737,12 +6506,6 @@ 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.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -6751,9 +6514,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -6761,24 +6524,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" dependencies = [ "cfg-if", "js-sys", @@ -6788,38 +6551,38 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" dependencies = [ "js-sys", "wasm-bindgen", @@ -6827,12 +6590,12 @@ dependencies = [ [[package]] name = "webpki" -version = "0.22.0" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring", - "untrusted", + "ring 0.17.5", + "untrusted 0.9.0", ] [[package]] @@ -6846,9 +6609,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "winapi" @@ -6868,9 +6631,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -6882,12 +6645,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -6920,7 +6683,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -6940,17 +6703,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -6961,9 +6724,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" @@ -6973,9 +6736,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" @@ -6985,9 +6748,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" @@ -6997,9 +6760,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" @@ -7009,9 +6772,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" @@ -7021,9 +6784,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" @@ -7033,24 +6796,15 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - -[[package]] -name = "winnow" -version = "0.4.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" -dependencies = [ - "memchr", -] +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.15" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" dependencies = [ "memchr", ] @@ -7080,16 +6834,7 @@ dependencies = [ "oid-registry", "rusticata-macros", "thiserror", - "time 0.3.20", -] - -[[package]] -name = "xattr" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" -dependencies = [ - "libc", + "time", ] [[package]] @@ -7113,7 +6858,27 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" dependencies = [ - "time 0.3.20", + "time", +] + +[[package]] +name = "zerocopy" +version = "0.7.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +dependencies = [ + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -7131,9 +6896,9 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -7176,11 +6941,10 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.8+zstd.1.5.5" +version = "2.0.9+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" dependencies = [ "cc", - "libc", "pkg-config", ] diff --git a/evm_loader/Cargo.toml b/evm_loader/Cargo.toml index 5081e7429c..b00b0b1b07 100644 --- a/evm_loader/Cargo.toml +++ b/evm_loader/Cargo.toml @@ -1,9 +1,12 @@ [workspace] resolver = "2" members = [ - 'api', - 'cli', - 'lib', - 'program', - 'program-macro' + 'api', + 'cli', + 'lib', + 'lib-interface', + 'rpc', + 'rpc-client', + 'program', + 'program-macro', ] diff --git a/evm_loader/api/Cargo.toml b/evm_loader/api/Cargo.toml index ad7557ec9d..52c1c8358c 100644 --- a/evm_loader/api/Cargo.toml +++ b/evm_loader/api/Cargo.toml @@ -7,7 +7,9 @@ edition = "2021" [dependencies] clap = "2.33.3" -evm-loader = { path = "../program", default-features = false, features = ["log"] } +evm-loader = { path = "../program", default-features = false, features = [ + "log", +] } solana-sdk = "=1.16.18" solana-client = "=1.16.18" serde = "1.0.186" diff --git a/evm_loader/lib-interface/.gitignore b/evm_loader/lib-interface/.gitignore new file mode 100644 index 0000000000..2f7896d1d1 --- /dev/null +++ b/evm_loader/lib-interface/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/evm_loader/lib-interface/Cargo.lock b/evm_loader/lib-interface/Cargo.lock new file mode 100644 index 0000000000..7c3935937d --- /dev/null +++ b/evm_loader/lib-interface/Cargo.lock @@ -0,0 +1,474 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "abi_stable" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f69d9465d88d24382d43fa68335a92fe9d3c53a918549c693403ed9a85eff50" +dependencies = [ + "abi_stable_derive", + "abi_stable_shared", + "const_panic", + "core_extensions", + "crossbeam-channel", + "generational-arena", + "libloading", + "lock_api", + "parking_lot", + "paste", + "repr_offset", + "rustc_version", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "abi_stable_derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aecd3efa5a5294f5c67913d45f985ccb382b3c93327581529610eeecdf4821a" +dependencies = [ + "abi_stable_shared", + "as_derive_utils", + "core_extensions", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", + "typed-arena", +] + +[[package]] +name = "abi_stable_shared" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b5df7688c123e63f4d4d649cba63f2967ba7f7861b1664fca3f77d3dad2b63" +dependencies = [ + "core_extensions", +] + +[[package]] +name = "as_derive_utils" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3c96645900a44cf11941c111bd08a6573b0e2f9f69bc9264b179d8fae753c4" +dependencies = [ + "core_extensions", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-ffi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ed5a937a789391ebc1c77d3a15b060e0d100e6d7c483a2af3f250d6b8dc2a23" +dependencies = [ + "abi_stable", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[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 = "const_panic" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b" + +[[package]] +name = "core_extensions" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c71dc07c9721607e7a16108336048ee978c3a8b129294534272e8bac96c0ee" +dependencies = [ + "core_extensions_proc_macros", +] + +[[package]] +name = "core_extensions_proc_macros" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f3b219d28b6e3b4ac87bc1fc522e0803ab22e055da177bff0068c4150c61a6" + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "generational-arena" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d3b771574f62d0548cee0ad9057857e9fc25d7a3335f140c84f6acd0bf601" +dependencies = [ + "cfg-if 0.1.10", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "libc" +version = "0.2.144" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "neon-interface" +version = "0.1.0" +dependencies = [ + "abi_stable", + "async-ffi", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "paste" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" + +[[package]] +name = "proc-macro2" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "repr_offset" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb1070755bd29dffc19d0971cab794e607839ba2ef4b69a9e6fbc8733c1b72ea" +dependencies = [ + "tstr", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "semver" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" + +[[package]] +name = "serde" +version = "1.0.163" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.163" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.16", +] + +[[package]] +name = "serde_json" +version = "1.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.16", +] + +[[package]] +name = "tstr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cca3264971090dec0feef3b455a3c178f02762f7550cf4592991ac64b3be2d7e" +dependencies = [ + "tstr_proc_macros", +] + +[[package]] +name = "tstr_proc_macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78122066b0cb818b8afd08f7ed22f7fdbc3e90815035726f0840d0d26c0747a" + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[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-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[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.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" diff --git a/evm_loader/lib-interface/Cargo.toml b/evm_loader/lib-interface/Cargo.toml new file mode 100644 index 0000000000..1a1283d88d --- /dev/null +++ b/evm_loader/lib-interface/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "neon-lib-interface" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +abi_stable = "0.11.1" +thiserror = "1" +async-ffi = { version = "0.4.1", features = ["abi_stable"] } +serde = "1.0.147" +serde_json = "1.0.85" diff --git a/evm_loader/lib-interface/src/lib.rs b/evm_loader/lib-interface/src/lib.rs new file mode 100644 index 0000000000..fab07f3f7f --- /dev/null +++ b/evm_loader/lib-interface/src/lib.rs @@ -0,0 +1,59 @@ +#![allow(non_camel_case_types)] + +pub mod types; + +use crate::types::RNeonEVMLibResult; +use std::{collections::HashMap, path::Path}; +use thiserror::Error; + +use abi_stable::{ + library::{LibraryError, RootModule}, + package_version_strings, + std_types::{RStr, RString}, + StableAbi, +}; + +#[repr(C)] +#[derive(StableAbi)] +#[sabi(kind(Prefix(prefix_ref = NeonEVMLib_Ref)))] +#[sabi(missing_field(panic))] +pub struct NeonEVMLib { + pub hash: extern "C" fn() -> RString, + pub get_version: extern "C" fn() -> RString, + pub get_build_info: extern "C" fn() -> RString, + + pub invoke: for<'a> extern "C" fn(RStr<'a>, RStr<'a>) -> RNeonEVMLibResult<'a>, +} + +impl RootModule for NeonEVMLib_Ref { + abi_stable::declare_root_module_statics! {NeonEVMLib_Ref} + + const BASE_NAME: &'static str = "neon-lib-interface"; + const NAME: &'static str = "neon-lib-interface"; + const VERSION_STRINGS: abi_stable::sabi_types::VersionStrings = package_version_strings!(); +} + +#[derive(Error, Debug)] +pub enum NeonEVMLibLoadError { + #[error("abi_stable library error")] + LibraryError(#[from] LibraryError), + #[error("IO error")] + IoError(#[from] std::io::Error), +} + +pub fn load_libraries

( + directory: P, +) -> Result, NeonEVMLibLoadError> +where + P: AsRef, +{ + let paths = std::fs::read_dir(directory)?; + let mut result = HashMap::new(); + for path in paths { + let lib = NeonEVMLib_Ref::load_from_file(&path?.path())?; + let hash = lib.hash()(); + + result.insert(hash.into_string(), lib); + } + Ok(result) +} diff --git a/evm_loader/lib-interface/src/types.rs b/evm_loader/lib-interface/src/types.rs new file mode 100644 index 0000000000..c6f8f22fee --- /dev/null +++ b/evm_loader/lib-interface/src/types.rs @@ -0,0 +1,12 @@ +use abi_stable::std_types::{RResult, RString}; +use async_ffi::LocalBorrowingFfiFuture; +use serde::{Deserialize, Serialize}; + +pub type RNeonEVMLibResult<'a> = LocalBorrowingFfiFuture<'a, RResult>; + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub struct NeonEVMLibError { + pub code: u32, + pub message: String, + pub data: Option, +} diff --git a/evm_loader/lib/Cargo.toml b/evm_loader/lib/Cargo.toml index 5de90dcd3b..96d637b02a 100644 --- a/evm_loader/lib/Cargo.toml +++ b/evm_loader/lib/Cargo.toml @@ -9,16 +9,23 @@ edition = "2021" thiserror = "1.0" anyhow = "1.0" bincode = "1.3.1" -evm-loader = { path = "../program", default-features = false, features = ["log", "async-trait", "serde_json"] } +evm-loader = { path = "../program", default-features = false, features = [ + "log", + "async-trait", + "serde_json", +] } solana-sdk = "=1.16.18" solana-client = "=1.16.18" solana-clap-utils = "=1.16.18" solana-cli-config = "=1.16.18" solana-cli = "=1.16.18" solana-transaction-status = "=1.16.18" -solana-program-test = "=1.16.18" -spl-token = { version = "~3.5", default-features = false, features = ["no-entrypoint"] } -spl-associated-token-account = { version = "~1.1", default-features = false, features = ["no-entrypoint"] } +spl-token = { version = "~3.5", default-features = false, features = [ + "no-entrypoint", +] } +spl-associated-token-account = { version = "~1.1", default-features = false, features = [ + "no-entrypoint", +] } bs58 = "0.4.0" base64 = "0.21" hex = { version = "0.4", features = ["serde"] } @@ -35,6 +42,15 @@ clickhouse = "0.11.5" tracing = "0.1" async-trait = "0.1.73" build-info = "0.0.31" +neon-lib-interface = { path = "../lib-interface" } +abi_stable = "0.11.2" +async-ffi = { version = "0.4.1", features = ["abi_stable"] } +lazy_static = "1.4.0" +strum = "0.25.0" +strum_macros = "0.25.3" [build-dependencies] build-info-build = "0.0.31" + +[lib] +crate-type = ["cdylib", "lib"] diff --git a/evm_loader/lib/src/abi/cancel_trx.rs b/evm_loader/lib/src/abi/cancel_trx.rs new file mode 100644 index 0000000000..cd6f30513b --- /dev/null +++ b/evm_loader/lib/src/abi/cancel_trx.rs @@ -0,0 +1,23 @@ +use super::params_to_neon_error; +use crate::commands::cancel_trx::{self, CancelTrxReturn}; +use crate::{types::request_models::CancelTrxRequest, NeonResult}; +use crate::{Config, Context}; + +pub async fn execute( + context: &Context<'_>, + config: &Config, + params: &str, +) -> NeonResult { + let signer = context.signer()?; + + let params: CancelTrxRequest = + serde_json::from_str(params).map_err(|_| params_to_neon_error(params))?; + + cancel_trx::execute( + context.rpc_client, + signer.as_ref(), + config.evm_loader, + ¶ms.storage_account, + ) + .await +} diff --git a/evm_loader/lib/src/abi/collect_treasury.rs b/evm_loader/lib/src/abi/collect_treasury.rs new file mode 100644 index 0000000000..cf631d667b --- /dev/null +++ b/evm_loader/lib/src/abi/collect_treasury.rs @@ -0,0 +1,12 @@ +use crate::{ + commands::collect_treasury::{self, CollectTreasuryReturn}, + Config, Context, NeonResult, +}; + +pub async fn execute( + context: &Context<'_>, + config: &Config, + _params: &str, +) -> NeonResult { + collect_treasury::execute(config, context).await +} diff --git a/evm_loader/lib/src/abi/context.rs b/evm_loader/lib/src/abi/context.rs new file mode 100644 index 0000000000..15647fa0b7 --- /dev/null +++ b/evm_loader/lib/src/abi/context.rs @@ -0,0 +1,53 @@ +use solana_client::nonblocking::rpc_client::RpcClient; + +use crate::{ + rpc::{self, CallDbClient}, + types::TracerDb, + Config, NeonError, +}; +use std::sync::Arc; + +pub struct AbiContext { + pub tracer_db: TracerDb, + pub rpc_client: Arc, + pub config: Config, +} + +impl AbiContext { + pub fn new(config: Config) -> Result { + let db_config = config + .db_config + .as_ref() + .ok_or(NeonError::LoadingDBConfigError)?; + Ok(Self { + tracer_db: TracerDb::new(db_config), + rpc_client: Arc::new(RpcClient::new_with_commitment( + config.json_rpc_url.clone(), + config.commitment, + )), + config, + }) + } +} + +pub async fn build_rpc_client( + context: &AbiContext, + slot: Option, + tx_index_in_block: Option, +) -> Result, NeonError> { + if let Some(slot) = slot { + return build_call_db_client(context, slot, tx_index_in_block).await; + } + + Ok(context.rpc_client.clone()) +} + +pub async fn build_call_db_client( + context: &AbiContext, + slot: u64, + tx_index_in_block: Option, +) -> Result, NeonError> { + Ok(Arc::new( + CallDbClient::new(context.tracer_db.clone(), slot, tx_index_in_block).await?, + )) +} diff --git a/evm_loader/lib/src/abi/create_ether_account.rs b/evm_loader/lib/src/abi/create_ether_account.rs new file mode 100644 index 0000000000..664ef7b0b3 --- /dev/null +++ b/evm_loader/lib/src/abi/create_ether_account.rs @@ -0,0 +1,34 @@ +use solana_client::nonblocking::rpc_client::RpcClient; + +use super::params_to_neon_error; +use crate::commands::create_ether_account::CreateEtherAccountReturn; +use crate::{ + commands::create_ether_account::{self}, + context::Context, + types::request_models::CreateEtherAccountRequest, + Config, NeonResult, +}; + +pub async fn execute( + context: &Context<'_>, + config: &Config, + params: &str, +) -> NeonResult { + let signer = context.signer()?; + let rpc_client = context + .rpc_client + .as_any() + .downcast_ref::() + .unwrap(); + + let params: CreateEtherAccountRequest = + serde_json::from_str(params).map_err(|_| params_to_neon_error(params))?; + + create_ether_account::execute( + rpc_client, + config.evm_loader, + signer.as_ref(), + ¶ms.ether, + ) + .await +} diff --git a/evm_loader/lib/src/abi/deposit.rs b/evm_loader/lib/src/abi/deposit.rs new file mode 100644 index 0000000000..eb9c2c0fe3 --- /dev/null +++ b/evm_loader/lib/src/abi/deposit.rs @@ -0,0 +1,31 @@ +use solana_client::nonblocking::rpc_client::RpcClient; + +use super::params_to_neon_error; +use crate::commands::deposit::{self, DepositReturn}; +use crate::{types::request_models::DepositRequest, NeonResult}; +use crate::{Config, Context}; + +pub async fn execute( + context: &Context<'_>, + config: &Config, + params: &str, +) -> NeonResult { + let signer = context.signer()?; + let rpc_client = context + .rpc_client + .as_any() + .downcast_ref::() + .unwrap(); + + let params: DepositRequest = + serde_json::from_str(params).map_err(|_| params_to_neon_error(params))?; + + deposit::execute( + rpc_client, + config.evm_loader, + signer.as_ref(), + params.amount, + ¶ms.ether, + ) + .await +} diff --git a/evm_loader/lib/src/abi/emulate.rs b/evm_loader/lib/src/abi/emulate.rs new file mode 100644 index 0000000000..f0259154a8 --- /dev/null +++ b/evm_loader/lib/src/abi/emulate.rs @@ -0,0 +1,31 @@ +use super::{params_to_neon_error, parse_emulation_params}; +use crate::commands::emulate::{self, EmulationResultWithAccounts}; +use crate::{types::request_models::EmulateRequestModel, NeonResult}; +use crate::{Config, Context}; + +pub async fn execute( + context: &Context<'_>, + config: &Config, + params: &str, +) -> NeonResult { + let params: EmulateRequestModel = + serde_json::from_str(params).map_err(|_| params_to_neon_error(params))?; + + let (token, chain, steps, accounts, solana_accounts) = + parse_emulation_params(config, context, ¶ms.emulation_params).await; + + emulate::execute( + context.rpc_client, + config.evm_loader, + params.tx_params.into(), + token, + chain, + steps, + config.commitment, + &accounts, + &solana_accounts, + &None, + None, + ) + .await +} diff --git a/evm_loader/lib/src/abi/get_ether_account_data.rs b/evm_loader/lib/src/abi/get_ether_account_data.rs new file mode 100644 index 0000000000..671421d6dc --- /dev/null +++ b/evm_loader/lib/src/abi/get_ether_account_data.rs @@ -0,0 +1,15 @@ +use super::params_to_neon_error; +use crate::commands::get_ether_account_data::{self, GetEtherAccountDataReturn}; +use crate::{types::request_models::GetEtherRequest, NeonResult}; +use crate::{Config, Context}; + +pub async fn execute( + context: &Context<'_>, + config: &Config, + params: &str, +) -> NeonResult { + let params: GetEtherRequest = + serde_json::from_str(params).map_err(|_| params_to_neon_error(params))?; + + get_ether_account_data::execute(context.rpc_client, &config.evm_loader, ¶ms.ether).await +} diff --git a/evm_loader/lib/src/abi/get_neon_elf.rs b/evm_loader/lib/src/abi/get_neon_elf.rs new file mode 100644 index 0000000000..3144be8fb1 --- /dev/null +++ b/evm_loader/lib/src/abi/get_neon_elf.rs @@ -0,0 +1,15 @@ +use super::params_to_neon_error; +use crate::commands::get_neon_elf::{self, GetNeonElfReturn}; +use crate::{types::request_models::GetNeonElfRequest, NeonResult}; +use crate::{Config, Context}; + +pub async fn execute( + context: &Context<'_>, + config: &Config, + params: &str, +) -> NeonResult { + let params: GetNeonElfRequest = + serde_json::from_str(params).map_err(|_| params_to_neon_error(params))?; + + get_neon_elf::execute(config, context, params.program_location.as_deref()).await +} diff --git a/evm_loader/lib/src/abi/get_storage_at.rs b/evm_loader/lib/src/abi/get_storage_at.rs new file mode 100644 index 0000000000..fef01aec13 --- /dev/null +++ b/evm_loader/lib/src/abi/get_storage_at.rs @@ -0,0 +1,21 @@ +use super::params_to_neon_error; +use crate::commands::get_storage_at::{self, GetStorageAtReturn}; +use crate::{types::request_models::GetStorageAtRequest, NeonResult}; +use crate::{Config, Context}; + +pub async fn execute( + context: &Context<'_>, + config: &Config, + params: &str, +) -> NeonResult { + let params: GetStorageAtRequest = + serde_json::from_str(params).map_err(|_| params_to_neon_error(params))?; + + get_storage_at::execute( + context.rpc_client, + &config.evm_loader, + params.contract_id, + ¶ms.index, + ) + .await +} diff --git a/evm_loader/lib/src/abi/init_environment.rs b/evm_loader/lib/src/abi/init_environment.rs new file mode 100644 index 0000000000..09734d667c --- /dev/null +++ b/evm_loader/lib/src/abi/init_environment.rs @@ -0,0 +1,23 @@ +use super::params_to_neon_error; +use crate::commands::init_environment::{self, InitEnvironmentReturn}; +use crate::{types::request_models::InitEnvironmentRequest, NeonResult}; +use crate::{Config, Context}; + +pub async fn execute( + context: &Context<'_>, + config: &Config, + params: &str, +) -> NeonResult { + let params: InitEnvironmentRequest = + serde_json::from_str(params).map_err(|_| params_to_neon_error(params))?; + + init_environment::execute( + config, + context, + params.send_trx, + params.force, + params.keys_dir.as_deref(), + params.file.as_deref(), + ) + .await +} diff --git a/evm_loader/lib/src/abi/mod.rs b/evm_loader/lib/src/abi/mod.rs new file mode 100644 index 0000000000..48ce9953aa --- /dev/null +++ b/evm_loader/lib/src/abi/mod.rs @@ -0,0 +1,195 @@ +mod cancel_trx; +mod collect_treasury; +mod context; +mod create_ether_account; +mod deposit; +mod emulate; +mod get_ether_account_data; +mod get_neon_elf; +mod get_storage_at; +mod init_environment; +mod trace; + +use self::context::AbiContext; +use crate::{ + commands::get_neon_elf::CachedElfParams, + config::{self}, + types::request_models::{EmulationParamsRequestModel, RequestWithSlot}, + Config, Context, LibMethods, NeonError, +}; +use abi_stable::{ + prefix_type::WithMetadata, + sabi_extern_fn, + std_types::{RStr, RString}, +}; +use async_ffi::FutureExt; +use evm_loader::types::Address; +use lazy_static::lazy_static; +use neon_lib_interface::{ + types::{NeonEVMLibError, RNeonEVMLibResult}, + NeonEVMLib, +}; +use serde_json::json; +use solana_sdk::pubkey::Pubkey; +use std::str::FromStr; + +lazy_static! { + static ref RT: tokio::runtime::Runtime = tokio::runtime::Runtime::new().unwrap(); +} + +pub const _MODULE_WM_: &WithMetadata = &WithMetadata::new(NeonEVMLib { + hash, + get_version, + get_build_info, + invoke, +}); + +#[sabi_extern_fn] +fn hash() -> RString { + env!("NEON_REVISION").into() +} + +#[sabi_extern_fn] +fn get_version() -> RString { + env!("CARGO_PKG_VERSION").into() +} + +#[sabi_extern_fn] +fn get_build_info() -> RString { + json!(crate::build_info::get_build_info()) + .to_string() + .into() +} + +#[sabi_extern_fn] +fn invoke<'a>(method: RStr<'a>, params: RStr<'a>) -> RNeonEVMLibResult<'a> { + async move { + RT.block_on(dispatch(method.as_str(), params.as_str())) + .map(RString::from) + .map_err(neon_error_to_rstring) + .into() + } + .into_local_ffi() +} + +async fn build_context() -> Result { + let api_options = config::load_api_config_from_enviroment(); + let config = config::create_from_api_config(&api_options)?; + + context::AbiContext::new(config) +} + +async fn dispatch(method_str: &str, params_str: &str) -> Result { + let method: LibMethods = method_str.parse()?; + let abi_context = build_context().await?; + let RequestWithSlot { + slot, + tx_index_in_block, + } = serde_json::from_str(params_str).map_err(|_| params_to_neon_error(params_str))?; + let rpc_client = context::build_rpc_client(&abi_context, slot, tx_index_in_block).await?; + let config = &abi_context.config; + let context = crate::Context::new(rpc_client.as_ref(), config); + + match method { + LibMethods::CreateEtherAccount => { + create_ether_account::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()) + } + LibMethods::CancelTrx => cancel_trx::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()), + LibMethods::CollectTreasury => collect_treasury::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()), + LibMethods::Deposit => deposit::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()), + LibMethods::Emulate => emulate::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()), + LibMethods::GetEtherAccountData => { + get_ether_account_data::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()) + } + LibMethods::GetNeonElf => get_neon_elf::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()), + LibMethods::GetStorageAt => get_storage_at::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()), + LibMethods::Trace => trace::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()), + LibMethods::InitEnvironment => init_environment::execute(&context, config, params_str) + .await + .map(|v| serde_json::to_string(&v).unwrap()), + // _ => Err(NeonError::IncorrectLibMethod), + } +} + +fn params_to_neon_error(params: &str) -> NeonError { + NeonError::EnvironmentError( + crate::commands::init_environment::EnvironmentError::InvalidProgramParameter(params.into()), + ) +} + +fn neon_error_to_neon_lib_error(error: NeonError) -> NeonEVMLibError { + assert!(error.error_code() >= 0); + NeonEVMLibError { + code: error.error_code() as u32, + message: error.to_string(), + data: None, + } +} + +fn neon_error_to_rstring(error: NeonError) -> RString { + RString::from(serde_json::to_string(&neon_error_to_neon_lib_error(error)).unwrap()) +} + +pub(crate) async fn parse_emulation_params( + config: &Config, + context: &Context<'_>, + params: &EmulationParamsRequestModel, +) -> (Pubkey, u64, u64, Vec

, Vec) { + // Read ELF params only if token_mint or chain_id is not set. + let mut token: Option = params.token_mint.map(Into::into); + let mut chain = params.chain_id; + if token.is_none() || chain.is_none() { + let cached_elf_params = CachedElfParams::new(config, context).await; + token = token.or_else(|| { + Some( + Pubkey::from_str( + cached_elf_params + .get("NEON_TOKEN_MINT") + .expect("NEON_TOKEN_MINT load error"), + ) + .expect("NEON_TOKEN_MINT Pubkey ctor error "), + ) + }); + chain = chain.or_else(|| { + Some( + u64::from_str( + cached_elf_params + .get("NEON_CHAIN_ID") + .expect("NEON_CHAIN_ID load error"), + ) + .expect("NEON_CHAIN_ID u64 ctor error"), + ) + }); + } + let token = token.expect("token_mint get error"); + let chain = chain.expect("chain_id get error"); + let max_steps = params.max_steps_to_execute; + + let accounts = params.cached_accounts.clone().unwrap_or_default(); + + let solana_accounts = params + .solana_accounts + .clone() + .map(|vec| vec.into_iter().map(Into::into).collect()) + .unwrap_or_default(); + + (token, chain, max_steps, accounts, solana_accounts) +} diff --git a/evm_loader/lib/src/abi/trace.rs b/evm_loader/lib/src/abi/trace.rs new file mode 100644 index 0000000000..a243849b5b --- /dev/null +++ b/evm_loader/lib/src/abi/trace.rs @@ -0,0 +1,28 @@ +use serde_json::Value; + +use super::{params_to_neon_error, parse_emulation_params}; +use crate::commands::trace::{self}; +use crate::{types::request_models::TraceRequestModel, NeonResult}; +use crate::{Config, Context}; + +pub async fn execute(context: &Context<'_>, config: &Config, params: &str) -> NeonResult { + let params: TraceRequestModel = + serde_json::from_str(params).map_err(|_| params_to_neon_error(params))?; + + let (token, chain, steps, accounts, solana_accounts) = + parse_emulation_params(config, context, ¶ms.emulate_request.emulation_params).await; + + trace::trace_transaction( + context.rpc_client, + config.evm_loader, + params.emulate_request.tx_params.into(), + token, + chain, + steps, + config.commitment, + &accounts, + &solana_accounts, + params.trace_call_config.unwrap_or_default(), + ) + .await +} diff --git a/evm_loader/lib/src/errors.rs b/evm_loader/lib/src/errors.rs index 3d21114c19..fa7cce87d9 100644 --- a/evm_loader/lib/src/errors.rs +++ b/evm_loader/lib/src/errors.rs @@ -6,6 +6,7 @@ use std::net::AddrParseError; use std::string::FromUtf8Error; use log::error; +use neon_lib_interface::NeonEVMLibLoadError; use solana_cli::cli::CliError as SolanaCliError; use solana_client::client_error::ClientError as SolanaClientError; use solana_client::tpu_client::TpuSenderError as SolanaTpuSenderError; @@ -45,6 +46,8 @@ pub enum NeonError { /// EVM Loader Error #[error("EVM Error. {0}")] EvmError(#[from] evm_loader::error::Error), + #[error("Can't load db config")] + LoadingDBConfigError, /// Need specify evm_loader #[error("EVM loader must be specified.")] EvmLoaderNotSpecified, @@ -112,6 +115,12 @@ pub enum NeonError { FromUtf8Error(#[from] FromUtf8Error), #[error("TryFromSlice Error. {0}")] TryFromSliceError(#[from] TryFromSliceError), + #[error("library interface error")] + NeonEVMLibLoadError(#[from] NeonEVMLibLoadError), + #[error("Incorrect lib method")] + IncorrectLibMethod, + #[error("strum parse error {0:?}")] + StrumParseError(#[from] strum::ParseError), } impl NeonError { @@ -153,6 +162,10 @@ impl NeonError { NeonError::BincodeError(_) => 257, NeonError::FromUtf8Error(_) => 258, NeonError::TryFromSliceError(_) => 259, + NeonError::NeonEVMLibLoadError(_) => 260, + NeonError::LoadingDBConfigError => 261, + NeonError::IncorrectLibMethod => 262, + NeonError::StrumParseError(_) => 263, } } } diff --git a/evm_loader/lib/src/lib.rs b/evm_loader/lib/src/lib.rs index 7475b056c4..a7466f24cc 100644 --- a/evm_loader/lib/src/lib.rs +++ b/evm_loader/lib/src/lib.rs @@ -1,3 +1,4 @@ +mod abi; pub mod account_storage; pub mod build_info; pub mod build_info_common; @@ -9,8 +10,44 @@ pub mod rpc; pub mod syscall_stubs; pub mod types; +use abi::_MODULE_WM_; +use abi_stable::export_root_module; pub use config::Config; pub use context::Context; pub use errors::NeonError; +use neon_lib_interface::NeonEVMLib_Ref; pub type NeonResult = Result; + +const MODULE: NeonEVMLib_Ref = NeonEVMLib_Ref(_MODULE_WM_.static_as_prefix()); + +#[export_root_module] +pub fn get_root_module() -> NeonEVMLib_Ref { + MODULE +} + +use strum_macros::{AsRefStr, Display, EnumString, IntoStaticStr}; + +#[derive(Debug, Clone, Copy, PartialEq, Display, EnumString, IntoStaticStr, AsRefStr)] +pub enum LibMethods { + #[strum(serialize = "emulate")] + Emulate, + #[strum(serialize = "get_ether_account_data")] + GetEtherAccountData, + #[strum(serialize = "get_storage_at")] + GetStorageAt, + #[strum(serialize = "trace")] + Trace, + #[strum(serialize = "cancel_trx")] + CancelTrx, + #[strum(serialize = "collect_treasury")] + CollectTreasury, + #[strum(serialize = "create_ether_account")] + CreateEtherAccount, + #[strum(serialize = "deposit")] + Deposit, + #[strum(serialize = "get_neon_elf")] + GetNeonElf, + #[strum(serialize = "init_environment")] + InitEnvironment, +} diff --git a/evm_loader/rpc-client/Cargo.toml b/evm_loader/rpc-client/Cargo.toml new file mode 100644 index 0000000000..826081a554 --- /dev/null +++ b/evm_loader/rpc-client/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "neon-rpc-client" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde = "1.0.189" +serde_json = "1.0.107" +jsonrpc-v2 = "0.13.0" +neon-lib = { path = "../lib" } +thiserror = "1.0.49" +async-trait = "0.1.74" +jsonrpsee-core = "0.20.2" +jsonrpsee-http-client = "0.20.2" +jsonrpsee-types = "0.20.2" +tokio = { version = "1", features = ["full"] } +build-info = { version = "0.0.31", features = ["serde"] } diff --git a/evm_loader/rpc-client/src/config.rs b/evm_loader/rpc-client/src/config.rs new file mode 100644 index 0000000000..41a62c1fe4 --- /dev/null +++ b/evm_loader/rpc-client/src/config.rs @@ -0,0 +1,9 @@ +pub struct NeonRpcClientConfig { + pub url: String, +} + +impl NeonRpcClientConfig { + pub fn new(url: impl Into) -> NeonRpcClientConfig { + NeonRpcClientConfig { url: url.into() } + } +} diff --git a/evm_loader/rpc-client/src/error.rs b/evm_loader/rpc-client/src/error.rs new file mode 100644 index 0000000000..2f6564fe32 --- /dev/null +++ b/evm_loader/rpc-client/src/error.rs @@ -0,0 +1,9 @@ +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum NeonRpcClientError { + #[error("Jsonrpc error. {0:?}")] + JsonrpseeError(#[from] jsonrpsee_core::Error), + #[error("serde json error. {0:?}")] + SerdeJsonError(#[from] serde_json::Error), +} diff --git a/evm_loader/rpc-client/src/http.rs b/evm_loader/rpc-client/src/http.rs new file mode 100644 index 0000000000..cc220774ab --- /dev/null +++ b/evm_loader/rpc-client/src/http.rs @@ -0,0 +1,135 @@ +use async_trait::async_trait; +use jsonrpsee_core::{client::ClientT, rpc_params}; +use jsonrpsee_http_client::{HttpClient, HttpClientBuilder}; +use neon_lib::LibMethods; +use neon_lib::{ + commands::{ + cancel_trx::CancelTrxReturn, collect_treasury::CollectTreasuryReturn, + create_ether_account::CreateEtherAccountReturn, deposit::DepositReturn, + emulate::EmulationResultWithAccounts, get_ether_account_data::GetEtherAccountDataReturn, + get_neon_elf::GetNeonElfReturn, get_storage_at::GetStorageAtReturn, + init_environment::InitEnvironmentReturn, + }, + types::request_models::{ + CancelTrxRequest, CreateEtherAccountRequest, DepositRequest, EmulateRequestModel, + GetEtherRequest, GetNeonElfRequest, GetStorageAtRequest, InitEnvironmentRequest, + TraceRequestModel, + }, +}; +use serde::de::DeserializeOwned; +use serde::Serialize; + +use crate::{config::NeonRpcClientConfig, NeonRpcClient, NeonRpcClientResult}; + +pub struct NeonRpcHttpClient { + client: HttpClient, +} + +impl NeonRpcHttpClient { + pub async fn new(config: NeonRpcClientConfig) -> NeonRpcClientResult { + Ok(NeonRpcHttpClient { + client: HttpClientBuilder::default().build(config.url)?, + }) + } +} + +pub struct NeonRpcHttpClientBuilder {} + +impl NeonRpcHttpClientBuilder { + pub fn new() -> NeonRpcHttpClientBuilder { + NeonRpcHttpClientBuilder {} + } + + pub async fn build(&self, url: impl Into) -> NeonRpcClientResult { + let config = NeonRpcClientConfig::new(url); + NeonRpcHttpClient::new(config).await + } +} + +impl Default for NeonRpcHttpClientBuilder { + fn default() -> Self { + Self::new() + } +} + +#[async_trait(?Send)] +impl NeonRpcClient for NeonRpcHttpClient { + async fn cancel_trx(&self, params: CancelTrxRequest) -> NeonRpcClientResult { + self.request(LibMethods::CancelTrx, params).await + } + + async fn collect_treasury(&self) -> NeonRpcClientResult { + self.request_without_params(LibMethods::CollectTreasury) + .await + } + + async fn create_ether_account( + &self, + params: CreateEtherAccountRequest, + ) -> NeonRpcClientResult { + self.request(LibMethods::CreateEtherAccount, params).await + } + + async fn deposit(&self, params: DepositRequest) -> NeonRpcClientResult { + self.request(LibMethods::Deposit, params).await + } + + async fn emulate( + &self, + params: EmulateRequestModel, + ) -> NeonRpcClientResult { + self.request(LibMethods::Emulate, params).await + } + + async fn get_ether_account_data( + &self, + params: GetEtherRequest, + ) -> NeonRpcClientResult { + self.request(LibMethods::GetEtherAccountData, params).await + } + + async fn get_neon_elf( + &self, + params: GetNeonElfRequest, + ) -> NeonRpcClientResult { + self.request(LibMethods::GetNeonElf, params).await + } + + async fn get_storage_at( + &self, + params: GetStorageAtRequest, + ) -> NeonRpcClientResult { + self.request(LibMethods::GetStorageAt, params).await + } + + async fn init_environment( + &self, + params: InitEnvironmentRequest, + ) -> NeonRpcClientResult { + self.request(LibMethods::InitEnvironment, params).await + } + + async fn trace(&self, params: TraceRequestModel) -> NeonRpcClientResult { + self.request(LibMethods::Trace, params).await + } +} + +impl NeonRpcHttpClient { + async fn request(&self, method: LibMethods, params: P) -> NeonRpcClientResult + where + P: Serialize, + R: DeserializeOwned, + { + Ok(self + .client + .request(method.into(), rpc_params![params]) + .await?) + } + + async fn request_without_params(&self, method: LibMethods) -> NeonRpcClientResult + where + R: jsonrpsee_core::DeserializeOwned, + { + Ok(self.client.request(method.into(), rpc_params![]).await?) + } +} diff --git a/evm_loader/rpc-client/src/lib.rs b/evm_loader/rpc-client/src/lib.rs new file mode 100644 index 0000000000..e761c491cf --- /dev/null +++ b/evm_loader/rpc-client/src/lib.rs @@ -0,0 +1,55 @@ +mod config; +mod error; +pub mod http; + +pub use error::NeonRpcClientError; + +use async_trait::async_trait; +use neon_lib::{ + commands::{ + cancel_trx::CancelTrxReturn, collect_treasury::CollectTreasuryReturn, + create_ether_account::CreateEtherAccountReturn, deposit::DepositReturn, + emulate::EmulationResultWithAccounts, get_ether_account_data::GetEtherAccountDataReturn, + get_neon_elf::GetNeonElfReturn, get_storage_at::GetStorageAtReturn, + init_environment::InitEnvironmentReturn, + }, + types::request_models::{ + CancelTrxRequest, CreateEtherAccountRequest, DepositRequest, EmulateRequestModel, + GetEtherRequest, GetNeonElfRequest, GetStorageAtRequest, InitEnvironmentRequest, + TraceRequestModel, + }, +}; + +type NeonRpcClientResult = Result; + +#[async_trait(?Send)] +pub trait NeonRpcClient { + async fn cancel_trx(&self, params: CancelTrxRequest) -> NeonRpcClientResult; + async fn collect_treasury(&self) -> NeonRpcClientResult; + async fn create_ether_account( + &self, + params: CreateEtherAccountRequest, + ) -> NeonRpcClientResult; + async fn deposit(&self, params: DepositRequest) -> NeonRpcClientResult; + async fn emulate( + &self, + params: EmulateRequestModel, + ) -> NeonRpcClientResult; + async fn get_ether_account_data( + &self, + params: GetEtherRequest, + ) -> NeonRpcClientResult; + async fn get_neon_elf( + &self, + params: GetNeonElfRequest, + ) -> NeonRpcClientResult; + async fn get_storage_at( + &self, + params: GetStorageAtRequest, + ) -> NeonRpcClientResult; + async fn init_environment( + &self, + params: InitEnvironmentRequest, + ) -> NeonRpcClientResult; + async fn trace(&self, params: TraceRequestModel) -> NeonRpcClientResult; +} diff --git a/evm_loader/rpc/.gitignore b/evm_loader/rpc/.gitignore new file mode 100644 index 0000000000..e824517975 --- /dev/null +++ b/evm_loader/rpc/.gitignore @@ -0,0 +1,3 @@ +libs +d +keys \ No newline at end of file diff --git a/evm_loader/rpc/Cargo.toml b/evm_loader/rpc/Cargo.toml new file mode 100644 index 0000000000..ea03ce5dc6 --- /dev/null +++ b/evm_loader/rpc/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "neon-rpc" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +actix-web = "4.3.1" +clap = "2.33.3" +jsonrpc-v2 = "0.13.0" +neon-lib-interface = { path = "../lib-interface" } +neon-lib = { path = "../lib" } +semver = "1.0.18" +serde = "1.0.188" +serde_json = "1.0.107" +tokio = { version = "1", features = ["full"] } +build-info = { version = "0.0.31", features = ["serde"] } +thiserror = "1.0" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +tracing-appender = "0.2.2" + +[build-dependencies] +build-info-build = "0.0.31" diff --git a/evm_loader/rpc/build.rs b/evm_loader/rpc/build.rs new file mode 100644 index 0000000000..d36778f606 --- /dev/null +++ b/evm_loader/rpc/build.rs @@ -0,0 +1,3 @@ +fn main() { + build_info_build::build_script(); +} diff --git a/evm_loader/rpc/src/build_info.rs b/evm_loader/rpc/src/build_info.rs new file mode 100644 index 0000000000..85f42da0df --- /dev/null +++ b/evm_loader/rpc/src/build_info.rs @@ -0,0 +1,7 @@ +use neon_lib::build_info_common::SlimBuildInfo; + +build_info::build_info!(fn build_info); + +pub fn get_build_info() -> SlimBuildInfo { + build_info().into() +} diff --git a/evm_loader/rpc/src/context.rs b/evm_loader/rpc/src/context.rs new file mode 100644 index 0000000000..614b629a54 --- /dev/null +++ b/evm_loader/rpc/src/context.rs @@ -0,0 +1,6 @@ +use neon_lib_interface::NeonEVMLib_Ref; +use std::collections::HashMap; + +pub struct Context { + pub libraries: HashMap, +} diff --git a/evm_loader/rpc/src/error.rs b/evm_loader/rpc/src/error.rs new file mode 100644 index 0000000000..bc7f2818f2 --- /dev/null +++ b/evm_loader/rpc/src/error.rs @@ -0,0 +1,27 @@ +use neon_lib::errors::NeonError; +use neon_lib_interface::NeonEVMLibLoadError; +use std::net::AddrParseError; + +use thiserror::Error; + +#[allow(clippy::enum_variant_names)] +#[derive(Debug, Error)] +pub enum NeonRPCError { + /// Std IO Error + #[error("Std I/O error. {0:?}")] + StdIoError(#[from] std::io::Error), + #[error("Addr parse error. {0:?}")] + AddrParseError(#[from] AddrParseError), + #[error("Neon error. {0:?}")] + NeonError(#[from] NeonError), + #[error("Neon lib error. {0:?}")] + NeonEVMLibLoadError(#[from] NeonEVMLibLoadError), + #[error("Neon RPC: Incorrect parameters.")] + IncorrectParameters(), +} + +impl From for jsonrpc_v2::Error { + fn from(value: NeonRPCError) -> Self { + jsonrpc_v2::Error::internal(value) + } +} diff --git a/evm_loader/rpc/src/handlers/cancel_trx.rs b/evm_loader/rpc/src/handlers/cancel_trx.rs new file mode 100644 index 0000000000..8a24720d06 --- /dev/null +++ b/evm_loader/rpc/src/handlers/cancel_trx.rs @@ -0,0 +1,17 @@ +use super::invoke; +use crate::{context::Context, error::NeonRPCError}; +use jsonrpc_v2::{Data, Params}; +use neon_lib::{types::request_models::CancelTrxRequest, LibMethods}; + +pub async fn handle( + ctx: Data, + Params(params): Params>, +) -> Result { + let param = params.first().ok_or(NeonRPCError::IncorrectParameters())?; + invoke( + LibMethods::CancelTrx, + ctx, + serde_json::value::to_value(param).unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/handlers/collect_treasury.rs b/evm_loader/rpc/src/handlers/collect_treasury.rs new file mode 100644 index 0000000000..967e41fc93 --- /dev/null +++ b/evm_loader/rpc/src/handlers/collect_treasury.rs @@ -0,0 +1,13 @@ +use super::invoke; +use crate::context::Context; +use jsonrpc_v2::Data; +use neon_lib::LibMethods; + +pub async fn handle(ctx: Data) -> Result { + invoke( + LibMethods::CollectTreasury, + ctx, + serde_json::value::to_value("null").unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/handlers/create_ether_account.rs b/evm_loader/rpc/src/handlers/create_ether_account.rs new file mode 100644 index 0000000000..3641baacd3 --- /dev/null +++ b/evm_loader/rpc/src/handlers/create_ether_account.rs @@ -0,0 +1,17 @@ +use super::invoke; +use crate::{context::Context, error::NeonRPCError}; +use jsonrpc_v2::{Data, Params}; +use neon_lib::{types::request_models::CreateEtherAccountRequest, LibMethods}; + +pub async fn handle( + ctx: Data, + Params(params): Params>, +) -> Result { + let param = params.first().ok_or(NeonRPCError::IncorrectParameters())?; + invoke( + LibMethods::CreateEtherAccount, + ctx, + serde_json::value::to_value(param).unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/handlers/deposit.rs b/evm_loader/rpc/src/handlers/deposit.rs new file mode 100644 index 0000000000..8f728eaf96 --- /dev/null +++ b/evm_loader/rpc/src/handlers/deposit.rs @@ -0,0 +1,17 @@ +use super::invoke; +use crate::{context::Context, error::NeonRPCError}; +use jsonrpc_v2::{Data, Params}; +use neon_lib::{types::request_models::DepositRequest, LibMethods}; + +pub async fn handle( + ctx: Data, + Params(params): Params>, +) -> Result { + let param = params.first().ok_or(NeonRPCError::IncorrectParameters())?; + invoke( + LibMethods::Deposit, + ctx, + serde_json::value::to_value(param).unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/handlers/emulate.rs b/evm_loader/rpc/src/handlers/emulate.rs new file mode 100644 index 0000000000..08636a281e --- /dev/null +++ b/evm_loader/rpc/src/handlers/emulate.rs @@ -0,0 +1,17 @@ +use super::invoke; +use crate::{context::Context, error::NeonRPCError}; +use jsonrpc_v2::{Data, Params}; +use neon_lib::{types::request_models::EmulateRequestModel, LibMethods}; + +pub async fn handle( + ctx: Data, + Params(params): Params>, +) -> Result { + let param = params.first().ok_or(NeonRPCError::IncorrectParameters())?; + invoke( + LibMethods::Emulate, + ctx, + serde_json::value::to_value(param).unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/handlers/get_ether_account_data.rs b/evm_loader/rpc/src/handlers/get_ether_account_data.rs new file mode 100644 index 0000000000..fedc9fc92c --- /dev/null +++ b/evm_loader/rpc/src/handlers/get_ether_account_data.rs @@ -0,0 +1,17 @@ +use super::invoke; +use crate::{context::Context, error::NeonRPCError}; +use jsonrpc_v2::{Data, Params}; +use neon_lib::{types::request_models::GetEtherRequest, LibMethods}; + +pub async fn handle( + ctx: Data, + Params(params): Params>, +) -> Result { + let param = params.first().ok_or(NeonRPCError::IncorrectParameters())?; + invoke( + LibMethods::GetEtherAccountData, + ctx, + serde_json::value::to_value(param).unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/handlers/get_neon_elf.rs b/evm_loader/rpc/src/handlers/get_neon_elf.rs new file mode 100644 index 0000000000..9c5d6b5e15 --- /dev/null +++ b/evm_loader/rpc/src/handlers/get_neon_elf.rs @@ -0,0 +1,17 @@ +use super::invoke; +use crate::{context::Context, error::NeonRPCError}; +use jsonrpc_v2::{Data, Params}; +use neon_lib::{types::request_models::GetNeonElfRequest, LibMethods}; + +pub async fn handle( + ctx: Data, + Params(params): Params>, +) -> Result { + let param = params.first().ok_or(NeonRPCError::IncorrectParameters())?; + invoke( + LibMethods::GetNeonElf, + ctx, + serde_json::value::to_value(param).unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/handlers/get_storage_at.rs b/evm_loader/rpc/src/handlers/get_storage_at.rs new file mode 100644 index 0000000000..1a79c6cbff --- /dev/null +++ b/evm_loader/rpc/src/handlers/get_storage_at.rs @@ -0,0 +1,17 @@ +use super::invoke; +use crate::{context::Context, error::NeonRPCError}; +use jsonrpc_v2::{Data, Params}; +use neon_lib::{types::request_models::GetStorageAtRequest, LibMethods}; + +pub async fn handle( + ctx: Data, + Params(params): Params>, +) -> Result { + let param = params.first().ok_or(NeonRPCError::IncorrectParameters())?; + invoke( + LibMethods::GetStorageAt, + ctx, + serde_json::value::to_value(param).unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/handlers/info.rs b/evm_loader/rpc/src/handlers/info.rs new file mode 100644 index 0000000000..afc36bb762 --- /dev/null +++ b/evm_loader/rpc/src/handlers/info.rs @@ -0,0 +1,7 @@ +use serde_json::json; + +use crate::build_info::get_build_info; + +pub async fn handle() -> Result { + Ok(json!(get_build_info())) +} diff --git a/evm_loader/rpc/src/handlers/init_environment.rs b/evm_loader/rpc/src/handlers/init_environment.rs new file mode 100644 index 0000000000..f41d49d035 --- /dev/null +++ b/evm_loader/rpc/src/handlers/init_environment.rs @@ -0,0 +1,17 @@ +use super::invoke; +use crate::{context::Context, error::NeonRPCError}; +use jsonrpc_v2::{Data, Params}; +use neon_lib::{types::request_models::InitEnvironmentRequest, LibMethods}; + +pub async fn handle( + ctx: Data, + Params(params): Params>, +) -> Result { + let param = params.first().ok_or(NeonRPCError::IncorrectParameters())?; + invoke( + LibMethods::InitEnvironment, + ctx, + serde_json::value::to_value(param).unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/handlers/mod.rs b/evm_loader/rpc/src/handlers/mod.rs new file mode 100644 index 0000000000..1d657e1264 --- /dev/null +++ b/evm_loader/rpc/src/handlers/mod.rs @@ -0,0 +1,71 @@ +pub mod cancel_trx; +pub mod collect_treasury; +pub mod create_ether_account; +pub mod deposit; +pub mod emulate; +pub mod get_ether_account_data; +pub mod get_neon_elf; +pub mod get_storage_at; +pub mod info; +pub mod init_environment; +pub mod trace; + +use crate::context::Context; +use jsonrpc_v2::Data; +use neon_lib::LibMethods; +use serde_json::Value; + +pub async fn invoke( + method: LibMethods, + context: Data, + params: serde_json::Value, +) -> Result { + // just for testing + let hash = context + .libraries + .keys() + .last() + .ok_or(jsonrpc_v2::Error::internal("library collection is empty"))?; + + let library = context + .libraries + .get(hash) + .ok_or(jsonrpc_v2::Error::internal(format!( + "Library not found for hash {hash}" + )))?; + + tracing::debug!("ver {:?}", library.hash()()); + + let method_str: &str = method.into(); + + let result: Result<_, _> = library.invoke()( + method_str.into(), + serde_json::to_string(¶ms).unwrap().as_str().into(), + ) + .await + .map(|x| serde_json::from_str::(&x).unwrap()) + .map_err(String::from) + .into(); + + result.map_err(|s: String| { + let val: Value = serde_json::from_str(s.as_str()).unwrap(); + let code = val + .get("code") + .and_then(|value| value.as_i64()) + .unwrap_or(0); + let message = val + .get("message") + .and_then(|value| value.as_str()) + .unwrap_or(""); + let data = val + .get("data") + .and_then(|value| value.as_str()) + .unwrap_or("null"); + + jsonrpc_v2::Error::Full { + code, + message: message.to_string(), + data: Some(Box::new(data.to_string())), + } + }) +} diff --git a/evm_loader/rpc/src/handlers/trace.rs b/evm_loader/rpc/src/handlers/trace.rs new file mode 100644 index 0000000000..372223c538 --- /dev/null +++ b/evm_loader/rpc/src/handlers/trace.rs @@ -0,0 +1,17 @@ +use super::invoke; +use crate::{context::Context, error::NeonRPCError}; +use jsonrpc_v2::{Data, Params}; +use neon_lib::{types::request_models::TraceRequestModel, LibMethods}; + +pub async fn handle( + ctx: Data, + Params(params): Params>, +) -> Result { + let param = params.first().ok_or(NeonRPCError::IncorrectParameters())?; + invoke( + LibMethods::Trace, + ctx, + serde_json::value::to_value(param).unwrap(), + ) + .await +} diff --git a/evm_loader/rpc/src/main.rs b/evm_loader/rpc/src/main.rs new file mode 100644 index 0000000000..40cd98080f --- /dev/null +++ b/evm_loader/rpc/src/main.rs @@ -0,0 +1,76 @@ +// use std::{collections::HashMap, error::Error}; +mod build_info; +mod context; +mod error; +mod handlers; +mod options; +mod rpc; + +use crate::build_info::get_build_info; +use context::Context; +use error::NeonRPCError; +use neon_lib::config; +use std::{env, net::SocketAddr, str::FromStr}; +use tracing::info; +use tracing_appender::non_blocking::NonBlockingBuilder; + +type NeonRPCResult = Result; + +#[actix_web::main] +async fn main() -> NeonRPCResult<()> { + let matches = options::parse(); + + // initialize tracing + let (non_blocking, _guard) = NonBlockingBuilder::default() + .lossy(false) + .finish(std::io::stdout()); + + tracing_subscriber::fmt().with_writer(non_blocking).init(); + + let lib_dir = matches.value_of("LIB-DIR").unwrap(); + let libraries = neon_lib_interface::load_libraries(lib_dir)?; + + info!("BUILD INFO: {}", get_build_info()); + info!( + "LIBRARY DIR: {}, count: {}", + lib_dir, + libraries.keys().len(), + ); + + if libraries.keys().len() > 0 { + info!("=== LIBRARY VERSIONS: ================================================================="); + for library_ver in libraries.keys() { + info!("Lib version: {}", library_ver); + } + info!("=== END LIBRARY VERSIONS =============================================================="); + } + + // check configs + let api_config = config::load_api_config_from_enviroment(); + let _ = config::create_from_api_config(&api_config)?; + + let ctx = Context { libraries }; + let rpc = rpc::build_rpc(ctx)?; + + let listener_addr = matches + .value_of("host") + .map(std::borrow::ToOwned::to_owned) + .or_else(|| Some(env::var("NEON_API_LISTENER_ADDR").unwrap_or("0.0.0.0:3100".to_owned()))) + .unwrap(); + + let addr = SocketAddr::from_str(listener_addr.as_str())?; + + actix_web::HttpServer::new(move || { + let rpc = rpc.clone(); + actix_web::App::new().service( + actix_web::web::service("/") + .guard(actix_web::guard::Post()) + .finish(rpc.into_web_service()), + ) + }) + .bind(addr)? + .run() + .await?; + + Ok(()) +} diff --git a/evm_loader/rpc/src/options.rs b/evm_loader/rpc/src/options.rs new file mode 100644 index 0000000000..c7d953ce4a --- /dev/null +++ b/evm_loader/rpc/src/options.rs @@ -0,0 +1,26 @@ +use clap::ArgMatches; + +pub fn parse<'a>() -> ArgMatches<'a> { + clap::App::new("Neon Core RPC") + .version(env!("CARGO_PKG_VERSION")) + .author("Neon Labs") + .about("Runs a Neon Core RPC server") + .arg( + clap::Arg::with_name("LIB-DIR") + .env("NEON_LIB_DIR") + .alias("dir") + .help("Directory with neon libraries to load") + .required(true) + .index(1), + ) + .arg( + clap::Arg::with_name("HOST") + .alias("host") + .env("NEON_API_LISTENER_ADDR") + .default_value("0.0.0.0:3100") + .help("RPC host to connect to") + .required(false) + .index(2), + ) + .get_matches() +} diff --git a/evm_loader/rpc/src/rpc.rs b/evm_loader/rpc/src/rpc.rs new file mode 100644 index 0000000000..45ce4f66b5 --- /dev/null +++ b/evm_loader/rpc/src/rpc.rs @@ -0,0 +1,47 @@ +use crate::error::NeonRPCError; +use crate::handlers::{ + cancel_trx, collect_treasury, create_ether_account, deposit, get_neon_elf, get_storage_at, + info, init_environment, +}; +use crate::{ + context::Context, + handlers::{emulate, get_ether_account_data, trace}, +}; + +use jsonrpc_v2::{Data, MapRouter, Server}; +use neon_lib::LibMethods; +use std::sync::Arc; + +pub fn build_rpc(ctx: Context) -> Result>, NeonRPCError> { + let mut rpc_builder = Server::new().with_data(Data::new(ctx)); + + rpc_builder = rpc_builder.with_method("build_info", info::handle); + + rpc_builder = rpc_builder.with_method( + LibMethods::GetEtherAccountData.to_string(), + get_ether_account_data::handle, + ); + rpc_builder = + rpc_builder.with_method(LibMethods::GetStorageAt.to_string(), get_storage_at::handle); + rpc_builder = rpc_builder.with_method(LibMethods::Trace.to_string(), trace::handle); + rpc_builder = rpc_builder.with_method(LibMethods::Emulate.to_string(), emulate::handle); + rpc_builder = rpc_builder.with_method(LibMethods::CancelTrx.to_string(), cancel_trx::handle); + rpc_builder = rpc_builder.with_method( + LibMethods::CollectTreasury.to_string(), + collect_treasury::handle, + ); + rpc_builder = rpc_builder.with_method( + LibMethods::CreateEtherAccount.to_string(), + create_ether_account::handle, + ); + rpc_builder = rpc_builder.with_method(LibMethods::Deposit.to_string(), deposit::handle); + rpc_builder = rpc_builder.with_method(LibMethods::GetNeonElf.to_string(), get_neon_elf::handle); + rpc_builder = rpc_builder.with_method( + LibMethods::InitEnvironment.to_string(), + init_environment::handle, + ); + + let rpc = rpc_builder.finish(); + + Ok(rpc) +}