From c103c2d948f773e867447069f57ab6e413cbfd4f Mon Sep 17 00:00:00 2001 From: Alfredo Garcia Date: Mon, 20 Jan 2025 18:33:47 -0300 Subject: [PATCH] fix(rpc): Use `jsonrpsee` in `zebra-node-services` (#9151) * replace jsonrpc-core with jsonrpsee-types in zebra-node-services * remove non needed feature from dependency * remove jsonrpc-core as a dev dependency in zebra-node-services * add jsonrpsee-types as a dev dependency --- Cargo.lock | 17 +---------------- zebra-node-services/Cargo.toml | 6 +++--- zebra-node-services/src/rpc_client.rs | 13 +++++++------ zebra-rpc/Cargo.toml | 4 +--- 4 files changed, 12 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 53b5a13ba46..8d2a7518d32 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2149,21 +2149,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "jsonrpc-core" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" -dependencies = [ - "futures", - "futures-executor", - "futures-util", - "log", - "serde", - "serde_derive", - "serde_json", -] - [[package]] name = "jsonrpsee" version = "0.24.7" @@ -5895,7 +5880,7 @@ name = "zebra-node-services" version = "1.0.0-beta.44" dependencies = [ "color-eyre", - "jsonrpc-core", + "jsonrpsee-types", "reqwest", "serde", "serde_json", diff --git a/zebra-node-services/Cargo.toml b/zebra-node-services/Cargo.toml index 6aa11ad45e9..42d51c117b3 100644 --- a/zebra-node-services/Cargo.toml +++ b/zebra-node-services/Cargo.toml @@ -28,7 +28,7 @@ getblocktemplate-rpcs = [ rpc-client = [ "color-eyre", - "jsonrpc-core", + "jsonrpsee-types", "reqwest", "serde", "serde_json", @@ -43,7 +43,7 @@ zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.44" } # Tool and test feature rpc-client color-eyre = { version = "0.6.3", optional = true } -jsonrpc-core = { version = "18.0.0", optional = true } +jsonrpsee-types = { version = "0.24.7", optional = true } # Security: avoid default dependency on openssl reqwest = { version = "0.12.9", default-features = false, features = ["rustls-tls"], optional = true } serde = { version = "1.0.215", optional = true } @@ -53,7 +53,7 @@ tokio = { version = "1.42.0", features = ["time", "sync"] } [dev-dependencies] color-eyre = "0.6.3" -jsonrpc-core = "18.0.0" reqwest = { version = "0.12.9", default-features = false, features = ["rustls-tls"] } serde = "1.0.215" serde_json = "1.0.133" +jsonrpsee-types = "0.24.7" diff --git a/zebra-node-services/src/rpc_client.rs b/zebra-node-services/src/rpc_client.rs index 7f5ffbf192e..f61381b2d21 100644 --- a/zebra-node-services/src/rpc_client.rs +++ b/zebra-node-services/src/rpc_client.rs @@ -108,12 +108,13 @@ impl RpcRequestClient { fn json_result_from_response_text( response_text: &str, ) -> std::result::Result { - use jsonrpc_core::Output; - - let output: Output = serde_json::from_str(response_text)?; - match output { - Output::Success(success) => Ok(serde_json::from_value(success.result)?), - Output::Failure(failure) => Err(failure.error.into()), + let output: jsonrpsee_types::Response = + serde_json::from_str(response_text)?; + match output.payload { + jsonrpsee_types::ResponsePayload::Success(success) => { + Ok(serde_json::from_value(success.into_owned())?) + } + jsonrpsee_types::ResponsePayload::Error(failure) => Err(failure.to_string().into()), } } } diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index 270d7a63ecf..0fb6d4176af 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -64,9 +64,7 @@ jsonrpsee-types = "0.24.7" jsonrpsee-proc-macros = "0.24.7" hyper = "1.5.0" http-body-util = "0.1.2" - -# zebra-rpc needs the preserve_order feature in serde_json, which is a dependency of jsonrpc-core -serde_json = { version = "1.0.133", features = ["preserve_order"] } +serde_json = "1.0.133" indexmap = { version = "2.7.0", features = ["serde"] } # RPC endpoint basic auth