Upgrade to substrate rc4 release (#131)

* Upgrade to substrate rc4 release

* Fix up test-node/service

* Fix up client node config

* Fix up remaining compilation errors

* Fmt

* Remove fixme

* Fix test

* Release v0.10.0
This commit is contained in:
Andrew Jones
2020-06-29 09:32:07 +01:00
committed by GitHub
parent 4ee7fb11ad
commit d3e9e3f757
12 changed files with 91 additions and 88 deletions
+5
View File
@@ -1,3 +1,8 @@
# Version 0.10.0 (2020-06-19)
* Upgrade to substrate rc4 release [#131](https://github.com/paritytech/substrate-subxt/pull/131)
* Support unsigned extrinsics. [#130](https://github.com/paritytech/substrate-subxt/pull/130)
# Version 0.9.0 (2020-06-25) # Version 0.9.0 (2020-06-25)
* Events sub [#126](https://github.com/paritytech/substrate-subxt/pull/126) * Events sub [#126](https://github.com/paritytech/substrate-subxt/pull/126)
+13 -13
View File
@@ -3,7 +3,7 @@ members = [".", "client", "proc-macro", "test-node"]
[package] [package]
name = "substrate-subxt" name = "substrate-subxt"
version = "0.9.0" version = "0.10.0"
authors = ["Parity Technologies <admin@parity.io>"] authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018" edition = "2018"
@@ -30,16 +30,16 @@ serde_json = "1.0.55"
url = "2.1.1" url = "2.1.1"
codec = { package = "parity-scale-codec", version = "1.3", default-features = false, features = ["derive", "full"] } codec = { package = "parity-scale-codec", version = "1.3", default-features = false, features = ["derive", "full"] }
frame-metadata = { version = "11.0.0-rc3", package = "frame-metadata" } frame-metadata = { version = "11.0.0-rc4", package = "frame-metadata" }
frame-support = { version = "2.0.0-rc3", package = "frame-support" } frame-support = { version = "2.0.0-rc4", package = "frame-support" }
sp-runtime = { version = "2.0.0-rc3", package = "sp-runtime" } sp-runtime = { version = "2.0.0-rc4", package = "sp-runtime" }
sp-version = { version = "2.0.0-rc3", package = "sp-version" } sp-version = { version = "2.0.0-rc4", package = "sp-version" }
pallet-indices = { version = "2.0.0-rc3", package = "pallet-indices" } pallet-indices = { version = "2.0.0-rc4", package = "pallet-indices" }
hex = "0.4.2" hex = "0.4.2"
sp-rpc = { version = "2.0.0-rc3", package = "sp-rpc" } sp-rpc = { version = "2.0.0-rc4", package = "sp-rpc" }
sp-core = { version = "2.0.0-rc3", package = "sp-core" } sp-core = { version = "2.0.0-rc4", package = "sp-core" }
sc-rpc-api = { version = "0.8.0-rc3", package = "sc-rpc-api" } sc-rpc-api = { version = "0.8.0-rc4", package = "sc-rpc-api" }
sp-transaction-pool = { version = "2.0.0-rc3", package = "sp-transaction-pool" } sp-transaction-pool = { version = "2.0.0-rc4", package = "sp-transaction-pool" }
substrate-subxt-client = { version = "0.1.0", path = "client", optional = true } substrate-subxt-client = { version = "0.1.0", path = "client", optional = true }
substrate-subxt-proc-macro = { version = "0.9.0", path = "proc-macro" } substrate-subxt-proc-macro = { version = "0.9.0", path = "proc-macro" }
@@ -47,9 +47,9 @@ substrate-subxt-proc-macro = { version = "0.9.0", path = "proc-macro" }
async-std = { version = "=1.5.0", features = ["attributes"] } async-std = { version = "=1.5.0", features = ["attributes"] }
env_logger = "0.7.1" env_logger = "0.7.1"
wabt = "0.9.2" wabt = "0.9.2"
frame-system = { version = "2.0.0-rc3", package = "frame-system" } frame-system = { version = "2.0.0-rc4", package = "frame-system" }
pallet-balances = { version = "2.0.0-rc3", package = "pallet-balances" } pallet-balances = { version = "2.0.0-rc4", package = "pallet-balances" }
sp-keyring = { version = "2.0.0-rc3", package = "sp-keyring" } sp-keyring = { version = "2.0.0-rc4", package = "sp-keyring" }
substrate-subxt-client = { version = "0.1.0", path = "client" } substrate-subxt-client = { version = "0.1.0", path = "client" }
tempdir = "0.3.7" tempdir = "0.3.7"
test-node = { path = "test-node" } test-node = { path = "test-node" }
+3 -3
View File
@@ -17,10 +17,10 @@ futures = { version = "0.3.5", features = ["compat"] }
futures01 = { package = "futures", version = "0.1.29" } futures01 = { package = "futures", version = "0.1.29" }
jsonrpsee = "0.1.0" jsonrpsee = "0.1.0"
log = "0.4.8" log = "0.4.8"
sc-network = { version = "0.8.0-rc3", default-features = false } sc-network = { version = "0.8.0-rc4", default-features = false }
sc-service = { version = "0.8.0-rc3", default-features = false } sc-service = { version = "0.8.0-rc4", default-features = false }
serde_json = "1.0.55" serde_json = "1.0.55"
sp-keyring = "2.0.0-rc3" sp-keyring = "2.0.0-rc4"
thiserror = "1.0.20" thiserror = "1.0.20"
[dev-dependencies] [dev-dependencies]
+7 -2
View File
@@ -208,12 +208,13 @@ fn start_subxt_client<C: ChainSpec + 'static, S: AbstractService>(
impl_version: config.impl_version, impl_version: config.impl_version,
chain_spec: Box::new(config.chain_spec), chain_spec: Box::new(config.chain_spec),
role: config.role.into(), role: config.role.into(),
task_executor: std::sync::Arc::new(move |fut, ty| { task_executor: (move |fut, ty| {
match ty { match ty {
TaskType::Async => task::spawn(fut), TaskType::Async => task::spawn(fut),
TaskType::Blocking => task::spawn_blocking(|| task::block_on(fut)), TaskType::Blocking => task::spawn_blocking(|| task::block_on(fut)),
}; };
}), })
.into(),
database: config.db, database: config.db,
keystore: KeystoreConfig::InMemory, keystore: KeystoreConfig::InMemory,
max_runtime_instances: 8, max_runtime_instances: 8,
@@ -231,6 +232,7 @@ fn start_subxt_client<C: ChainSpec + 'static, S: AbstractService>(
pruning: Default::default(), pruning: Default::default(),
rpc_cors: Default::default(), rpc_cors: Default::default(),
rpc_http: Default::default(), rpc_http: Default::default(),
rpc_ipc: Default::default(),
rpc_ws: Default::default(), rpc_ws: Default::default(),
rpc_ws_max_connections: Default::default(), rpc_ws_max_connections: Default::default(),
rpc_methods: Default::default(), rpc_methods: Default::default(),
@@ -240,6 +242,8 @@ fn start_subxt_client<C: ChainSpec + 'static, S: AbstractService>(
tracing_targets: Default::default(), tracing_targets: Default::default(),
transaction_pool: Default::default(), transaction_pool: Default::default(),
wasm_method: Default::default(), wasm_method: Default::default(),
base_path: Default::default(),
informant_output_format: Default::default(),
}; };
log::info!("{}", service_config.impl_name); log::info!("{}", service_config.impl_name);
@@ -329,6 +333,7 @@ mod tests {
test_node::chain_spec::ChainSpec::from_json_bytes(bytes).unwrap(); test_node::chain_spec::ChainSpec::from_json_bytes(bytes).unwrap();
let tmp = TempDir::new("subxt-").expect("failed to create tempdir"); let tmp = TempDir::new("subxt-").expect("failed to create tempdir");
let config = SubxtClientConfig { let config = SubxtClientConfig {
// base_path:
impl_name: "substrate-subxt-light-client", impl_name: "substrate-subxt-light-client",
impl_version: "0.0.1", impl_version: "0.0.1",
author: "David Craven", author: "David Craven",
+1 -1
View File
@@ -28,7 +28,7 @@ async-std = { version = "=1.5.0", features = ["attributes"] }
codec = { package = "parity-scale-codec", version = "1.3.0", features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.3.0", features = ["derive"] }
env_logger = "0.7.1" env_logger = "0.7.1"
pretty_assertions = "0.6.1" pretty_assertions = "0.6.1"
sp-keyring = "2.0.0-rc3" sp-keyring = "2.0.0-rc4"
substrate-subxt = { path = ".." } substrate-subxt = { path = ".." }
trybuild = "1.0.30" trybuild = "1.0.30"
+2 -1
View File
@@ -30,6 +30,7 @@ use serde::de::DeserializeOwned;
use sp_runtime::{ use sp_runtime::{
traits::{ traits::{
AtLeast32Bit, AtLeast32Bit,
AtLeast32BitUnsigned,
Bounded, Bounded,
CheckEqual, CheckEqual,
Extrinsic, Extrinsic,
@@ -67,7 +68,7 @@ pub trait System {
+ MaybeSerializeDeserialize + MaybeSerializeDeserialize
+ Debug + Debug
+ MaybeDisplay + MaybeDisplay
+ AtLeast32Bit + AtLeast32BitUnsigned
+ Default + Default
+ Bounded + Bounded
+ Copy + Copy
+2 -2
View File
@@ -244,7 +244,7 @@ impl<T: Runtime> Client<T> {
/// Get a block hash. By default returns the latest block hash /// Get a block hash. By default returns the latest block hash
pub async fn block_hash( pub async fn block_hash(
&self, &self,
block_number: Option<BlockNumber<T>>, block_number: Option<BlockNumber>,
) -> Result<Option<T::Hash>, Error> { ) -> Result<Option<T::Hash>, Error> {
let hash = self.rpc.block_hash(block_number).await?; let hash = self.rpc.block_hash(block_number).await?;
Ok(hash) Ok(hash)
@@ -578,7 +578,7 @@ mod tests {
// create raw payload with AccoundId and sign it // create raw payload with AccoundId and sign it
let raw_payload = client let raw_payload = client
.create_unsigned( .create_payload(
balances::TransferCall { balances::TransferCall {
to: &dest, to: &dest,
amount: 10_000, amount: 10_000,
+6 -17
View File
@@ -37,7 +37,6 @@ use jsonrpsee::{
}, },
Client, Client,
}; };
use num_traits::bounds::Bounded;
use sc_rpc_api::state::ReadProof; use sc_rpc_api::state::ReadProof;
use serde::Serialize; use serde::Serialize;
use sp_core::{ use sp_core::{
@@ -83,23 +82,15 @@ pub type ChainBlock<T> =
/// Wrapper for NumberOrHex to allow custom From impls /// Wrapper for NumberOrHex to allow custom From impls
#[derive(Serialize)] #[derive(Serialize)]
#[serde(bound = "<T as System>::BlockNumber: Serialize")] pub struct BlockNumber(NumberOrHex);
pub struct BlockNumber<T: System>(NumberOrHex<<T as System>::BlockNumber>);
impl<T> From<NumberOrHex<<T as System>::BlockNumber>> for BlockNumber<T> impl From<NumberOrHex> for BlockNumber {
where fn from(x: NumberOrHex) -> Self {
T: System,
{
fn from(x: NumberOrHex<<T as System>::BlockNumber>) -> Self {
BlockNumber(x) BlockNumber(x)
} }
} }
impl<T> From<u32> for BlockNumber<T> impl From<u32> for BlockNumber {
where
T: System,
<T as System>::BlockNumber: From<u32>,
{
fn from(x: u32) -> Self { fn from(x: u32) -> Self {
NumberOrHex::Number(x.into()).into() NumberOrHex::Number(x.into()).into()
} }
@@ -160,9 +151,7 @@ impl<T: Runtime> Rpc<T> {
/// Fetch the genesis hash /// Fetch the genesis hash
pub async fn genesis_hash(&self) -> Result<T::Hash, Error> { pub async fn genesis_hash(&self) -> Result<T::Hash, Error> {
let block_zero = Some(ListOrValue::Value(NumberOrHex::Number( let block_zero = Some(ListOrValue::Value(NumberOrHex::Number(0)));
T::BlockNumber::min_value(),
)));
let params = Params::Array(vec![to_json_value(block_zero)?]); let params = Params::Array(vec![to_json_value(block_zero)?]);
let list_or_value: ListOrValue<Option<T::Hash>> = let list_or_value: ListOrValue<Option<T::Hash>> =
self.client.request("chain_getBlockHash", params).await?; self.client.request("chain_getBlockHash", params).await?;
@@ -198,7 +187,7 @@ impl<T: Runtime> Rpc<T> {
/// Get a block hash, returns hash of latest block by default /// Get a block hash, returns hash of latest block by default
pub async fn block_hash( pub async fn block_hash(
&self, &self,
block_number: Option<BlockNumber<T>>, block_number: Option<BlockNumber>,
) -> Result<Option<T::Hash>, Error> { ) -> Result<Option<T::Hash>, Error> {
let block_number = block_number.map(ListOrValue::Value); let block_number = block_number.map(ListOrValue::Value);
let params = Params::Array(vec![to_json_value(block_number)?]); let params = Params::Array(vec![to_json_value(block_number)?]);
+20 -20
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "test-node" name = "test-node"
version = "2.0.0-rc3" version = "2.0.0-rc4"
authors = ["Anonymous"] authors = ["Anonymous"]
description = "Substrate Node template" description = "Substrate Node template"
edition = "2018" edition = "2018"
@@ -18,25 +18,25 @@ log = "0.4.8"
structopt = "0.3.15" structopt = "0.3.15"
parking_lot = "0.11.0" parking_lot = "0.11.0"
sc-cli = { version = "0.8.0-rc3", features = ["wasmtime"] } sc-cli = { version = "0.8.0-rc4", features = ["wasmtime"] }
sp-core = "2.0.0-rc3" sp-core = "2.0.0-rc4"
sc-executor = { version = "0.8.0-rc3", features = ["wasmtime"] } sc-executor = { version = "0.8.0-rc4", features = ["wasmtime"] }
sc-service = { version = "0.8.0-rc3", features = ["wasmtime"] } sc-service = { version = "0.8.0-rc4", features = ["wasmtime"] }
sp-inherents = "2.0.0-rc3" sp-inherents = "2.0.0-rc4"
sc-transaction-pool = "2.0.0-rc3" sc-transaction-pool = "2.0.0-rc4"
sp-transaction-pool = "2.0.0-rc3" sp-transaction-pool = "2.0.0-rc4"
sc-network = "0.8.0-rc3" sc-network = "0.8.0-rc4"
sc-consensus-aura = "0.8.0-rc3" sc-consensus-aura = "0.8.0-rc4"
sp-consensus-aura = "0.8.0-rc3" sp-consensus-aura = "0.8.0-rc4"
sp-consensus = "0.8.0-rc3" sp-consensus = "0.8.0-rc4"
sc-consensus = "0.8.0-rc3" sc-consensus = "0.8.0-rc4"
sc-finality-grandpa = "0.8.0-rc3" sc-finality-grandpa = "0.8.0-rc4"
sp-finality-grandpa = "2.0.0-rc3" sp-finality-grandpa = "2.0.0-rc4"
sc-client-api = "2.0.0-rc3" sc-client-api = "2.0.0-rc4"
sp-runtime = "2.0.0-rc3" sp-runtime = "2.0.0-rc4"
sc-basic-authorship = "0.8.0-rc3" sc-basic-authorship = "0.8.0-rc4"
test-node-runtime = { version = "2.0.0-rc3", path = "runtime" } test-node-runtime = { version = "2.0.0-rc4", path = "runtime" }
[build-dependencies] [build-dependencies]
substrate-build-script-utils = "2.0.0-rc3" substrate-build-script-utils = "2.0.0-rc4"
+23 -23
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "test-node-runtime" name = "test-node-runtime"
version = "2.0.0-rc3" version = "2.0.0-rc4"
authors = ["Anonymous"] authors = ["Anonymous"]
edition = "2018" edition = "2018"
license = "Unlicense" license = "Unlicense"
@@ -13,29 +13,29 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies] [dependencies]
codec = { package = "parity-scale-codec", version = "1.3.1", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.3.1", default-features = false, features = ["derive"] }
aura = { version = "2.0.0-rc3", default-features = false, package = "pallet-aura" } aura = { version = "2.0.0-rc4", default-features = false, package = "pallet-aura" }
balances = { version = "2.0.0-rc3", default-features = false, package = "pallet-balances" } balances = { version = "2.0.0-rc4", default-features = false, package = "pallet-balances" }
frame-support = { version = "2.0.0-rc3", default-features = false } frame-support = { version = "2.0.0-rc4", default-features = false }
grandpa = { version = "2.0.0-rc3", default-features = false, package = "pallet-grandpa" } grandpa = { version = "2.0.0-rc4", default-features = false, package = "pallet-grandpa" }
randomness-collective-flip = { version = "2.0.0-rc3", default-features = false, package = "pallet-randomness-collective-flip" } randomness-collective-flip = { version = "2.0.0-rc4", default-features = false, package = "pallet-randomness-collective-flip" }
sudo = { version = "2.0.0-rc3", default-features = false, package = "pallet-sudo" } sudo = { version = "2.0.0-rc4", default-features = false, package = "pallet-sudo" }
system = { version = "2.0.0-rc3", default-features = false, package = "frame-system" } system = { version = "2.0.0-rc4", default-features = false, package = "frame-system" }
timestamp = { version = "2.0.0-rc3", default-features = false, package = "pallet-timestamp" } timestamp = { version = "2.0.0-rc4", default-features = false, package = "pallet-timestamp" }
transaction-payment = { version = "2.0.0-rc3", default-features = false, package = "pallet-transaction-payment" } transaction-payment = { version = "2.0.0-rc4", default-features = false, package = "pallet-transaction-payment" }
frame-executive = { version = "2.0.0-rc3", default-features = false } frame-executive = { version = "2.0.0-rc4", default-features = false }
serde = { version = "1.0.114", optional = true, features = ["derive"] } serde = { version = "1.0.114", optional = true, features = ["derive"] }
sp-api = { version = "2.0.0-rc3", default-features = false } sp-api = { version = "2.0.0-rc4", default-features = false }
sp-block-builder = { default-features = false, version = "2.0.0-rc3" } sp-block-builder = { default-features = false, version = "2.0.0-rc4" }
sp-consensus-aura = { version = "0.8.0-rc3", default-features = false } sp-consensus-aura = { version = "0.8.0-rc4", default-features = false }
sp-core = { version = "2.0.0-rc3", default-features = false } sp-core = { version = "2.0.0-rc4", default-features = false }
sp-inherents = { default-features = false, version = "2.0.0-rc3" } sp-inherents = { default-features = false, version = "2.0.0-rc4" }
sp-io = { version = "2.0.0-rc3", default-features = false } sp-io = { version = "2.0.0-rc4", default-features = false }
sp-offchain = { version = "2.0.0-rc3", default-features = false } sp-offchain = { version = "2.0.0-rc4", default-features = false }
sp-runtime = { version = "2.0.0-rc3", default-features = false } sp-runtime = { version = "2.0.0-rc4", default-features = false }
sp-session = { version = "2.0.0-rc3", default-features = false } sp-session = { version = "2.0.0-rc4", default-features = false }
sp-std = { version = "2.0.0-rc3", default-features = false } sp-std = { version = "2.0.0-rc4", default-features = false }
sp-transaction-pool = { version = "2.0.0-rc3", default-features = false } sp-transaction-pool = { version = "2.0.0-rc4", default-features = false }
sp-version = { version = "2.0.0-rc3", default-features = false } sp-version = { version = "2.0.0-rc4", default-features = false }
[build-dependencies] [build-dependencies]
wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner" } wasm-builder-runner = { version = "1.0.5", package = "substrate-wasm-builder-runner" }
+2
View File
@@ -181,6 +181,8 @@ parameter_types! {
} }
impl system::Trait for Runtime { impl system::Trait for Runtime {
/// The basic call filter to use in dispatchable.
type BaseCallFilter = ();
/// The identifier used to distinguish between accounts. /// The identifier used to distinguish between accounts.
type AccountId = AccountId; type AccountId = AccountId;
/// The aggregated dispatch type that is available for extrinsics. /// The aggregated dispatch type that is available for extrinsics.
+7 -6
View File
@@ -145,7 +145,7 @@ pub fn new_full(config: Configuration) -> Result<impl AbstractService, ServiceEr
let provider = client as Arc<dyn StorageAndProofProvider<_, _>>; let provider = client as Arc<dyn StorageAndProofProvider<_, _>>;
Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _) Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _)
})? })?
.build()?; .build_full()?;
if role.is_authority() { if role.is_authority() {
let proposer = sc_basic_authorship::ProposerFactory::new( let proposer = sc_basic_authorship::ProposerFactory::new(
@@ -177,19 +177,20 @@ pub fn new_full(config: Configuration) -> Result<impl AbstractService, ServiceEr
// the AURA authoring task is considered essential, i.e. if it // the AURA authoring task is considered essential, i.e. if it
// fails we take down the service with it. // fails we take down the service with it.
service.spawn_essential_task("aura", aura); service
.spawn_essential_task_handle()
.spawn_blocking("aura", aura);
} }
// if the node isn't actively participating in consensus then it doesn't // if the node isn't actively participating in consensus then it doesn't
// need a keystore, regardless of which protocol we use below. // need a keystore, regardless of which protocol we use below.
let keystore = if role.is_authority() { let keystore = if role.is_authority() {
Some(service.keystore()) Some(service.keystore() as sp_core::traits::BareCryptoStorePtr)
} else { } else {
None None
}; };
let grandpa_config = sc_finality_grandpa::Config { let grandpa_config = sc_finality_grandpa::Config {
// #1578 make this available through chainspec
gossip_duration: Duration::from_millis(333), gossip_duration: Duration::from_millis(333),
justification_period: 512, justification_period: 512,
name: Some(name), name: Some(name),
@@ -219,7 +220,7 @@ pub fn new_full(config: Configuration) -> Result<impl AbstractService, ServiceEr
// the GRANDPA voter task is considered infallible, i.e. // the GRANDPA voter task is considered infallible, i.e.
// if it fails we take down the service with it. // if it fails we take down the service with it.
service.spawn_essential_task( service.spawn_essential_task_handle().spawn_blocking(
"grandpa-voter", "grandpa-voter",
sc_finality_grandpa::run_grandpa_voter(grandpa_config)?, sc_finality_grandpa::run_grandpa_voter(grandpa_config)?,
); );
@@ -299,5 +300,5 @@ pub fn new_light(config: Configuration) -> Result<impl AbstractService, ServiceE
let provider = client as Arc<dyn StorageAndProofProvider<_, _>>; let provider = client as Arc<dyn StorageAndProofProvider<_, _>>;
Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _) Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _)
})? })?
.build() .build_light()
} }