From 976dd8585303cea23b4fe7f9cbd52256f3cdc368 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 13 Sep 2022 23:31:03 +0300 Subject: [PATCH 01/10] rpc/chain_spec: Add traits for `chainSpec` API Signed-off-by: Alexandru Vasile --- Cargo.lock | 11 ++++++ Cargo.toml | 1 + client/rpc-spec/Cargo.toml | 23 ++++++++++++ client/rpc-spec/README.md | 5 +++ client/rpc-spec/src/chain_spec/api.rs | 53 +++++++++++++++++++++++++++ client/rpc-spec/src/chain_spec/mod.rs | 33 +++++++++++++++++ client/rpc-spec/src/lib.rs | 26 +++++++++++++ 7 files changed, 152 insertions(+) create mode 100644 client/rpc-spec/Cargo.toml create mode 100644 client/rpc-spec/README.md create mode 100644 client/rpc-spec/src/chain_spec/api.rs create mode 100644 client/rpc-spec/src/chain_spec/mod.rs create mode 100644 client/rpc-spec/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 34d2296e019ce..fa5b4991d7674 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8756,6 +8756,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "sc-rpc-spec" +version = "0.10.0-dev" +dependencies = [ + "hex", + "jsonrpsee", + "sc-chain-spec", + "serde_json", + "tokio", +] + [[package]] name = "sc-runtime-test" version = "2.0.0" diff --git a/Cargo.toml b/Cargo.toml index 4dbf65dc7e1fe..d26636dc82f08 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,6 +55,7 @@ members = [ "client/rpc", "client/rpc-api", "client/rpc-servers", + "client/rpc-spec", "client/service", "client/service/test", "client/state-db", diff --git a/client/rpc-spec/Cargo.toml b/client/rpc-spec/Cargo.toml new file mode 100644 index 0000000000000..e408437d06103 --- /dev/null +++ b/client/rpc-spec/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "sc-rpc-spec" +version = "0.10.0-dev" +authors = ["Parity Technologies "] +edition = "2021" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" +homepage = "https://substrate.io" +repository = "https://github.com/paritytech/substrate/" +description = "Substrate RPC interfaces." +readme = "README.md" + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] + +[dependencies] +jsonrpsee = { version = "0.15.1", features = ["server", "macros"] } +# Internal chain structures for "chain_spec". +sc-chain-spec = { version = "4.0.0-dev", path = "../chain-spec" } +hex = "0.4" + +[dev-dependencies] +serde_json = "1.0" +tokio = { version = "1.17.0", features = ["macros"] } diff --git a/client/rpc-spec/README.md b/client/rpc-spec/README.md new file mode 100644 index 0000000000000..e860e0c2334da --- /dev/null +++ b/client/rpc-spec/README.md @@ -0,0 +1,5 @@ +Substrate RPC interfaces. + +A collection of RPC methods and subscriptions supported by all substrate clients. + +License: GPL-3.0-or-later WITH Classpath-exception-2.0 \ No newline at end of file diff --git a/client/rpc-spec/src/chain_spec/api.rs b/client/rpc-spec/src/chain_spec/api.rs new file mode 100644 index 0000000000000..3679f6a6ad16c --- /dev/null +++ b/client/rpc-spec/src/chain_spec/api.rs @@ -0,0 +1,53 @@ +// This file is part of Substrate. + +// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +//! API trait of the chain spec. + +use jsonrpsee::{core::RpcResult, proc_macros::rpc}; +use sc_chain_spec::Properties; + +#[rpc(client, server)] +pub trait ChainSpecApi { + /// Get the chain name, as present in the chain specification. + /// + /// # Unstable + /// + /// This method is unstable and subject to change in the future. + #[method(name = "chainSpec_unstable_chainName")] + fn chain_spec_unstable_chain_name(&self) -> RpcResult; + + /// Get the chain's genesis hash. + /// + /// # Unstable + /// + /// This method is unstable and subject to change in the future. + #[method(name = "chainSpec_unstable_genesisHash")] + fn chain_spec_unstable_genesis_hash(&self) -> RpcResult; + + /// Get the properties of the chain, as present in the chain specification. + /// + /// # Note + /// + /// The json whitespaces are not guaranteed to persist. + /// + /// # Unstable + /// + /// This method is unstable and subject to change in the future. + #[method(name = "chainSpec_unstable_properties")] + fn chain_spec_unstable_properties(&self) -> RpcResult; +} diff --git a/client/rpc-spec/src/chain_spec/mod.rs b/client/rpc-spec/src/chain_spec/mod.rs new file mode 100644 index 0000000000000..43e27e52e77f8 --- /dev/null +++ b/client/rpc-spec/src/chain_spec/mod.rs @@ -0,0 +1,33 @@ +// This file is part of Substrate. + +// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +//! Substrate chain specification API. +//! +//! The *chain spec* (short for *chain specification*) allows inspecting the content of +//! the specification of the chain that a JSON-RPC server is targeting. +//! +//! The values returned by the API are guaranteed to never change during the lifetime of the +//! JSON-RPC server. +//! +//! # Note +//! +//! Methods are prefixed by `chainSpec`. + +pub mod api; + +pub use api::ChainSpecApiServer; diff --git a/client/rpc-spec/src/lib.rs b/client/rpc-spec/src/lib.rs new file mode 100644 index 0000000000000..b73e5c94e936f --- /dev/null +++ b/client/rpc-spec/src/lib.rs @@ -0,0 +1,26 @@ +// This file is part of Substrate. + +// Copyright (C) 2019-2022 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +//! JSON-RPC interface exposed by blockchain nodes in the Substrate ecosystem. +//! +//! Specification [document](https://paritytech.github.io/json-rpc-interface-spec/). + +#![warn(missing_docs)] +#![deny(unused_crate_dependencies)] + +pub mod chain_spec; From 4fb98e97877906369e8b1ccca07afcce5b266359 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 13 Sep 2022 23:34:22 +0300 Subject: [PATCH 02/10] rpc/chain_spec: Implement `chainSpec` RPC methods Signed-off-by: Alexandru Vasile --- client/rpc-spec/src/chain_spec/chain_spec.rs | 68 ++++++++++++++++++++ client/rpc-spec/src/chain_spec/mod.rs | 2 + 2 files changed, 70 insertions(+) create mode 100644 client/rpc-spec/src/chain_spec/chain_spec.rs diff --git a/client/rpc-spec/src/chain_spec/chain_spec.rs b/client/rpc-spec/src/chain_spec/chain_spec.rs new file mode 100644 index 0000000000000..4ec796c4a72f0 --- /dev/null +++ b/client/rpc-spec/src/chain_spec/chain_spec.rs @@ -0,0 +1,68 @@ +// This file is part of Substrate. + +// Copyright (C) 2020-2022 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +//! API implementation for the specification of a chain. + +use crate::chain_spec::api::ChainSpecApiServer; +use jsonrpsee::core::RpcResult; +use sc_chain_spec::Properties; + +/// An API for chain spec RPC calls. +pub struct ChainSpec { + /// The name of the chain. + name: String, + /// The hexadecimal encoded hash of the genesis block. + /// + /// # Note + /// + /// This can be empty, or prefixed with "0x". + genesis_hash: String, + /// Chain properties. + properties: Properties, +} + +impl ChainSpec { + /// Creates a new [`ChainSpec`]. + pub fn new>( + name: String, + genesis_hash: Hash, + properties: Properties, + ) -> Self { + let genesis_hash = if genesis_hash.as_ref().is_empty() { + "".into() + } else { + format!("0x{}", hex::encode(genesis_hash)) + }; + + Self { name, properties, genesis_hash } + } +} + +impl ChainSpecApiServer for ChainSpec { + fn chain_spec_unstable_chain_name(&self) -> RpcResult { + Ok(self.name.clone()) + } + + fn chain_spec_unstable_genesis_hash(&self) -> RpcResult { + Ok(self.genesis_hash.clone()) + } + + fn chain_spec_unstable_properties(&self) -> RpcResult { + Ok(self.properties.clone()) + } +} diff --git a/client/rpc-spec/src/chain_spec/mod.rs b/client/rpc-spec/src/chain_spec/mod.rs index 43e27e52e77f8..af11c8ca4af16 100644 --- a/client/rpc-spec/src/chain_spec/mod.rs +++ b/client/rpc-spec/src/chain_spec/mod.rs @@ -29,5 +29,7 @@ //! Methods are prefixed by `chainSpec`. pub mod api; +pub mod chain_spec; pub use api::ChainSpecApiServer; +pub use chain_spec::ChainSpec; From 5096fca335c22c52ecd04c729286a042114e4564 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 13 Sep 2022 23:35:50 +0300 Subject: [PATCH 03/10] rpc/chain_spec: Add tests Signed-off-by: Alexandru Vasile --- client/rpc-spec/src/chain_spec/mod.rs | 3 ++ client/rpc-spec/src/chain_spec/tests.rs | 61 +++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 client/rpc-spec/src/chain_spec/tests.rs diff --git a/client/rpc-spec/src/chain_spec/mod.rs b/client/rpc-spec/src/chain_spec/mod.rs index af11c8ca4af16..0cb9e177e1756 100644 --- a/client/rpc-spec/src/chain_spec/mod.rs +++ b/client/rpc-spec/src/chain_spec/mod.rs @@ -28,6 +28,9 @@ //! //! Methods are prefixed by `chainSpec`. +#[cfg(test)] +mod tests; + pub mod api; pub mod chain_spec; diff --git a/client/rpc-spec/src/chain_spec/tests.rs b/client/rpc-spec/src/chain_spec/tests.rs new file mode 100644 index 0000000000000..faba40d6e3ca0 --- /dev/null +++ b/client/rpc-spec/src/chain_spec/tests.rs @@ -0,0 +1,61 @@ +// This file is part of Substrate. + +// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use super::*; +use jsonrpsee::{types::EmptyParams, RpcModule}; +use sc_chain_spec::Properties; + +const CHAIN_NAME: &'static str = "TEST_CHAIN_NAME"; +const CHAIN_GENESIS: [u8; 32] = [0; 32]; +const CHAIN_PROPERTIES: &'static str = r#"{"three": "123", "one": 1, "two": 12}"#; + +fn api() -> RpcModule { + ChainSpec::new( + CHAIN_NAME.to_string(), + CHAIN_GENESIS, + serde_json::from_str(CHAIN_PROPERTIES).unwrap(), + ) + .into_rpc() +} + +#[tokio::test] +async fn chain_spec_chain_name_works() { + let name = api() + .call::<_, String>("chainSpec_unstable_chainName", EmptyParams::new()) + .await + .unwrap(); + assert_eq!(name, CHAIN_NAME); +} + +#[tokio::test] +async fn chain_spec_genesis_hash_works() { + let genesis = api() + .call::<_, String>("chainSpec_unstable_genesisHash", EmptyParams::new()) + .await + .unwrap(); + assert_eq!(genesis, format!("0x{}", hex::encode(CHAIN_GENESIS))); +} + +#[tokio::test] +async fn chain_spec_properties_works() { + let properties = api() + .call::<_, Properties>("chainSpec_unstable_properties", EmptyParams::new()) + .await + .unwrap(); + assert_eq!(properties, serde_json::from_str(CHAIN_PROPERTIES).unwrap()); +} From cca0c819b4901d24abda49bc3f898064235e69cc Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 13 Sep 2022 23:44:02 +0300 Subject: [PATCH 04/10] bin/node: Enable `chainSpec` API Signed-off-by: Alexandru Vasile --- Cargo.lock | 1 + bin/node/rpc/Cargo.toml | 1 + bin/node/rpc/src/lib.rs | 6 ++++++ 3 files changed, 8 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index fa5b4991d7674..6e25ff9d514f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4830,6 +4830,7 @@ dependencies = [ "sc-finality-grandpa-rpc", "sc-rpc", "sc-rpc-api", + "sc-rpc-spec", "sc-sync-state-rpc", "sc-transaction-pool-api", "sp-api", diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml index 851eb2cfc5104..8bdd19e713bc9 100644 --- a/bin/node/rpc/Cargo.toml +++ b/bin/node/rpc/Cargo.toml @@ -26,6 +26,7 @@ sc-finality-grandpa = { version = "0.10.0-dev", path = "../../../client/finality sc-finality-grandpa-rpc = { version = "0.10.0-dev", path = "../../../client/finality-grandpa/rpc" } sc-rpc = { version = "4.0.0-dev", path = "../../../client/rpc" } sc-rpc-api = { version = "0.10.0-dev", path = "../../../client/rpc-api" } +sc-rpc-spec = { version = "0.10.0-dev", path = "../../../client/rpc-spec" } sc-sync-state-rpc = { version = "0.10.0-dev", path = "../../../client/sync-state-rpc" } sc-transaction-pool-api = { version = "4.0.0-dev", path = "../../../client/transaction-pool/api" } sp-api = { version = "4.0.0-dev", path = "../../../primitives/api" } diff --git a/bin/node/rpc/src/lib.rs b/bin/node/rpc/src/lib.rs index 1c8b9cce1a744..be330b591c746 100644 --- a/bin/node/rpc/src/lib.rs +++ b/bin/node/rpc/src/lib.rs @@ -124,6 +124,7 @@ where use sc_consensus_babe_rpc::{Babe, BabeApiServer}; use sc_finality_grandpa_rpc::{Grandpa, GrandpaApiServer}; use sc_rpc::dev::{Dev, DevApiServer}; + use sc_rpc_spec::chain_spec::{ChainSpec, ChainSpecApiServer}; use sc_sync_state_rpc::{SyncState, SyncStateApiServer}; use substrate_frame_rpc_system::{System, SystemApiServer}; use substrate_state_trie_migration_rpc::{StateMigration, StateMigrationApiServer}; @@ -140,6 +141,11 @@ where finality_provider, } = grandpa; + let chain_name = chain_spec.name().to_string(); + let genesis_hash = client.block_hash(0).ok().flatten().expect("Genesis block exists; qed"); + let properties = chain_spec.properties(); + io.merge(ChainSpec::new(chain_name, genesis_hash, properties).into_rpc())?; + io.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; // Making synchronous calls in light client freezes the browser currently, // more context: https://github.com/paritytech/substrate/pull/3480 From f7fa6499f70d05111e140183c868ed97bae667f6 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 14 Sep 2022 13:48:18 +0300 Subject: [PATCH 05/10] rpc/chain_spec: Assume `genesis_hash` as non-empty Signed-off-by: Alexandru Vasile --- client/rpc-spec/src/chain_spec/chain_spec.rs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/client/rpc-spec/src/chain_spec/chain_spec.rs b/client/rpc-spec/src/chain_spec/chain_spec.rs index 4ec796c4a72f0..11d5911192457 100644 --- a/client/rpc-spec/src/chain_spec/chain_spec.rs +++ b/client/rpc-spec/src/chain_spec/chain_spec.rs @@ -27,10 +27,6 @@ pub struct ChainSpec { /// The name of the chain. name: String, /// The hexadecimal encoded hash of the genesis block. - /// - /// # Note - /// - /// This can be empty, or prefixed with "0x". genesis_hash: String, /// Chain properties. properties: Properties, @@ -43,11 +39,7 @@ impl ChainSpec { genesis_hash: Hash, properties: Properties, ) -> Self { - let genesis_hash = if genesis_hash.as_ref().is_empty() { - "".into() - } else { - format!("0x{}", hex::encode(genesis_hash)) - }; + let genesis_hash = format!("0x{}", hex::encode(genesis_hash)); Self { name, properties, genesis_hash } } From e9031c7d1ddc8170a27447ca3e8f7b160da260ea Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Wed, 14 Sep 2022 18:58:24 +0300 Subject: [PATCH 06/10] Update client/rpc-spec/Cargo.toml Co-authored-by: Niklas Adolfsson --- client/rpc-spec/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/rpc-spec/Cargo.toml b/client/rpc-spec/Cargo.toml index e408437d06103..987f20b7c6d6f 100644 --- a/client/rpc-spec/Cargo.toml +++ b/client/rpc-spec/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" license = "GPL-3.0-or-later WITH Classpath-exception-2.0" homepage = "https://substrate.io" repository = "https://github.com/paritytech/substrate/" -description = "Substrate RPC interfaces." +description = "Substrate RPC interface v2." readme = "README.md" [package.metadata.docs.rs] From eb120ad9b4fdd2cd42e6cbba3c31b201aaebf9e2 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Wed, 14 Sep 2022 18:58:31 +0300 Subject: [PATCH 07/10] Update client/rpc-spec/src/lib.rs Co-authored-by: Niklas Adolfsson --- client/rpc-spec/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/rpc-spec/src/lib.rs b/client/rpc-spec/src/lib.rs index b73e5c94e936f..e47cf0d636686 100644 --- a/client/rpc-spec/src/lib.rs +++ b/client/rpc-spec/src/lib.rs @@ -16,7 +16,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -//! JSON-RPC interface exposed by blockchain nodes in the Substrate ecosystem. +//! Substrate JSON-RPC interface v2. //! //! Specification [document](https://paritytech.github.io/json-rpc-interface-spec/). From 780815a3467f7f642adba7cea31c72bda92f4ba8 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 14 Sep 2022 19:03:07 +0300 Subject: [PATCH 08/10] client/rpc_spec: Rename crate to `rpc_spec_v2` Signed-off-by: Alexandru Vasile --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- bin/node/rpc/Cargo.toml | 2 +- bin/node/rpc/src/lib.rs | 2 +- client/{rpc-spec => rpc-spec-v2}/Cargo.toml | 2 +- client/{rpc-spec => rpc-spec-v2}/README.md | 0 client/{rpc-spec => rpc-spec-v2}/src/chain_spec/api.rs | 0 client/{rpc-spec => rpc-spec-v2}/src/chain_spec/chain_spec.rs | 0 client/{rpc-spec => rpc-spec-v2}/src/chain_spec/mod.rs | 0 client/{rpc-spec => rpc-spec-v2}/src/chain_spec/tests.rs | 0 client/{rpc-spec => rpc-spec-v2}/src/lib.rs | 0 11 files changed, 6 insertions(+), 6 deletions(-) rename client/{rpc-spec => rpc-spec-v2}/Cargo.toml (96%) rename client/{rpc-spec => rpc-spec-v2}/README.md (100%) rename client/{rpc-spec => rpc-spec-v2}/src/chain_spec/api.rs (100%) rename client/{rpc-spec => rpc-spec-v2}/src/chain_spec/chain_spec.rs (100%) rename client/{rpc-spec => rpc-spec-v2}/src/chain_spec/mod.rs (100%) rename client/{rpc-spec => rpc-spec-v2}/src/chain_spec/tests.rs (100%) rename client/{rpc-spec => rpc-spec-v2}/src/lib.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 6e25ff9d514f1..3ed09f3ff7911 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4830,7 +4830,7 @@ dependencies = [ "sc-finality-grandpa-rpc", "sc-rpc", "sc-rpc-api", - "sc-rpc-spec", + "sc-rpc-spec-v2", "sc-sync-state-rpc", "sc-transaction-pool-api", "sp-api", @@ -8758,7 +8758,7 @@ dependencies = [ ] [[package]] -name = "sc-rpc-spec" +name = "sc-rpc-spec-v2" version = "0.10.0-dev" dependencies = [ "hex", diff --git a/Cargo.toml b/Cargo.toml index d26636dc82f08..48a31940fd3bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ members = [ "client/rpc", "client/rpc-api", "client/rpc-servers", - "client/rpc-spec", + "client/rpc-spec-v2", "client/service", "client/service/test", "client/state-db", diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml index 8bdd19e713bc9..0b69ae27010fa 100644 --- a/bin/node/rpc/Cargo.toml +++ b/bin/node/rpc/Cargo.toml @@ -26,7 +26,7 @@ sc-finality-grandpa = { version = "0.10.0-dev", path = "../../../client/finality sc-finality-grandpa-rpc = { version = "0.10.0-dev", path = "../../../client/finality-grandpa/rpc" } sc-rpc = { version = "4.0.0-dev", path = "../../../client/rpc" } sc-rpc-api = { version = "0.10.0-dev", path = "../../../client/rpc-api" } -sc-rpc-spec = { version = "0.10.0-dev", path = "../../../client/rpc-spec" } +sc-rpc-spec-v2 = { version = "0.10.0-dev", path = "../../../client/rpc-spec-v2" } sc-sync-state-rpc = { version = "0.10.0-dev", path = "../../../client/sync-state-rpc" } sc-transaction-pool-api = { version = "4.0.0-dev", path = "../../../client/transaction-pool/api" } sp-api = { version = "4.0.0-dev", path = "../../../primitives/api" } diff --git a/bin/node/rpc/src/lib.rs b/bin/node/rpc/src/lib.rs index be330b591c746..0e6b04087fa63 100644 --- a/bin/node/rpc/src/lib.rs +++ b/bin/node/rpc/src/lib.rs @@ -124,7 +124,7 @@ where use sc_consensus_babe_rpc::{Babe, BabeApiServer}; use sc_finality_grandpa_rpc::{Grandpa, GrandpaApiServer}; use sc_rpc::dev::{Dev, DevApiServer}; - use sc_rpc_spec::chain_spec::{ChainSpec, ChainSpecApiServer}; + use sc_rpc_spec_v2::chain_spec::{ChainSpec, ChainSpecApiServer}; use sc_sync_state_rpc::{SyncState, SyncStateApiServer}; use substrate_frame_rpc_system::{System, SystemApiServer}; use substrate_state_trie_migration_rpc::{StateMigration, StateMigrationApiServer}; diff --git a/client/rpc-spec/Cargo.toml b/client/rpc-spec-v2/Cargo.toml similarity index 96% rename from client/rpc-spec/Cargo.toml rename to client/rpc-spec-v2/Cargo.toml index 987f20b7c6d6f..12dec7464e6d0 100644 --- a/client/rpc-spec/Cargo.toml +++ b/client/rpc-spec-v2/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "sc-rpc-spec" +name = "sc-rpc-spec-v2" version = "0.10.0-dev" authors = ["Parity Technologies "] edition = "2021" diff --git a/client/rpc-spec/README.md b/client/rpc-spec-v2/README.md similarity index 100% rename from client/rpc-spec/README.md rename to client/rpc-spec-v2/README.md diff --git a/client/rpc-spec/src/chain_spec/api.rs b/client/rpc-spec-v2/src/chain_spec/api.rs similarity index 100% rename from client/rpc-spec/src/chain_spec/api.rs rename to client/rpc-spec-v2/src/chain_spec/api.rs diff --git a/client/rpc-spec/src/chain_spec/chain_spec.rs b/client/rpc-spec-v2/src/chain_spec/chain_spec.rs similarity index 100% rename from client/rpc-spec/src/chain_spec/chain_spec.rs rename to client/rpc-spec-v2/src/chain_spec/chain_spec.rs diff --git a/client/rpc-spec/src/chain_spec/mod.rs b/client/rpc-spec-v2/src/chain_spec/mod.rs similarity index 100% rename from client/rpc-spec/src/chain_spec/mod.rs rename to client/rpc-spec-v2/src/chain_spec/mod.rs diff --git a/client/rpc-spec/src/chain_spec/tests.rs b/client/rpc-spec-v2/src/chain_spec/tests.rs similarity index 100% rename from client/rpc-spec/src/chain_spec/tests.rs rename to client/rpc-spec-v2/src/chain_spec/tests.rs diff --git a/client/rpc-spec/src/lib.rs b/client/rpc-spec-v2/src/lib.rs similarity index 100% rename from client/rpc-spec/src/lib.rs rename to client/rpc-spec-v2/src/lib.rs From 3aac01cc72b042f56a5694d58c18542ae6048306 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 15 Sep 2022 17:28:29 +0300 Subject: [PATCH 09/10] rpc-servers: Remove the `version` field from `rpc_methods` Signed-off-by: Alexandru Vasile --- client/rpc-servers/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/client/rpc-servers/src/lib.rs b/client/rpc-servers/src/lib.rs index 68b4aa6767348..0e2aca0dcc829 100644 --- a/client/rpc-servers/src/lib.rs +++ b/client/rpc-servers/src/lib.rs @@ -203,7 +203,6 @@ fn build_rpc_api(mut rpc_api: RpcModule) -> RpcModu rpc_api .register_method("rpc_methods", move |_, _| { Ok(serde_json::json!({ - "version": 1, "methods": available_methods, })) }) From f71602d34da14113445d3307183653ee5946d94a Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 16 Sep 2022 16:04:32 +0300 Subject: [PATCH 10/10] rpc/chain_spec: Fix copyright years Signed-off-by: Alexandru Vasile --- client/rpc-spec-v2/src/chain_spec/api.rs | 2 +- client/rpc-spec-v2/src/chain_spec/chain_spec.rs | 2 +- client/rpc-spec-v2/src/chain_spec/mod.rs | 2 +- client/rpc-spec-v2/src/chain_spec/tests.rs | 2 +- client/rpc-spec-v2/src/lib.rs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/rpc-spec-v2/src/chain_spec/api.rs b/client/rpc-spec-v2/src/chain_spec/api.rs index 3679f6a6ad16c..dfe2d76de6501 100644 --- a/client/rpc-spec-v2/src/chain_spec/api.rs +++ b/client/rpc-spec-v2/src/chain_spec/api.rs @@ -1,6 +1,6 @@ // This file is part of Substrate. -// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd. +// Copyright (C) 2022 Parity Technologies (UK) Ltd. // SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This program is free software: you can redistribute it and/or modify diff --git a/client/rpc-spec-v2/src/chain_spec/chain_spec.rs b/client/rpc-spec-v2/src/chain_spec/chain_spec.rs index 11d5911192457..90d05f1d9d41d 100644 --- a/client/rpc-spec-v2/src/chain_spec/chain_spec.rs +++ b/client/rpc-spec-v2/src/chain_spec/chain_spec.rs @@ -1,6 +1,6 @@ // This file is part of Substrate. -// Copyright (C) 2020-2022 Parity Technologies (UK) Ltd. +// Copyright (C) 2022 Parity Technologies (UK) Ltd. // SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This program is free software: you can redistribute it and/or modify diff --git a/client/rpc-spec-v2/src/chain_spec/mod.rs b/client/rpc-spec-v2/src/chain_spec/mod.rs index 0cb9e177e1756..cd4fcf246f603 100644 --- a/client/rpc-spec-v2/src/chain_spec/mod.rs +++ b/client/rpc-spec-v2/src/chain_spec/mod.rs @@ -1,6 +1,6 @@ // This file is part of Substrate. -// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd. +// Copyright (C) 2022 Parity Technologies (UK) Ltd. // SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This program is free software: you can redistribute it and/or modify diff --git a/client/rpc-spec-v2/src/chain_spec/tests.rs b/client/rpc-spec-v2/src/chain_spec/tests.rs index faba40d6e3ca0..6c078b2974e98 100644 --- a/client/rpc-spec-v2/src/chain_spec/tests.rs +++ b/client/rpc-spec-v2/src/chain_spec/tests.rs @@ -1,6 +1,6 @@ // This file is part of Substrate. -// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd. +// Copyright (C) 2022 Parity Technologies (UK) Ltd. // SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This program is free software: you can redistribute it and/or modify diff --git a/client/rpc-spec-v2/src/lib.rs b/client/rpc-spec-v2/src/lib.rs index e47cf0d636686..297fda13172d6 100644 --- a/client/rpc-spec-v2/src/lib.rs +++ b/client/rpc-spec-v2/src/lib.rs @@ -1,6 +1,6 @@ // This file is part of Substrate. -// Copyright (C) 2019-2022 Parity Technologies (UK) Ltd. +// Copyright (C) 2022 Parity Technologies (UK) Ltd. // SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This program is free software: you can redistribute it and/or modify