diff --git a/Cargo.lock b/Cargo.lock index 043d46bdffa9..a530c6e83f3e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1227,7 +1227,7 @@ checksum = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" [[package]] name = "fork-tree" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", ] @@ -1235,7 +1235,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -1252,12 +1252,11 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "parity-scale-codec", "sc-cli", - "sc-client", "sc-client-db", "sc-executor", "sc-service", @@ -1271,7 +1270,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -1286,7 +1285,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "11.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "serde", @@ -1297,7 +1296,7 @@ dependencies = [ [[package]] name = "frame-support" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "bitmask", "frame-metadata", @@ -1321,7 +1320,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support-procedural-tools", "proc-macro2 1.0.10", @@ -1332,7 +1331,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -1344,7 +1343,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "proc-macro2 1.0.10", "quote 1.0.3", @@ -1354,7 +1353,7 @@ dependencies = [ [[package]] name = "frame-system" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "impl-trait-for-tuples", @@ -1370,7 +1369,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "sp-api", @@ -3260,7 +3259,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3278,7 +3277,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3295,7 +3294,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3316,7 +3315,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3331,7 +3330,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3347,7 +3346,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3362,7 +3361,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3376,7 +3375,7 @@ dependencies = [ [[package]] name = "pallet-finality-tracker" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3392,7 +3391,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3410,7 +3409,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "enumflags2", "frame-benchmarking", @@ -3426,7 +3425,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3446,7 +3445,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3462,7 +3461,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3476,7 +3475,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3490,7 +3489,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3505,7 +3504,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3524,7 +3523,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3537,7 +3536,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "enumflags2", "frame-support", @@ -3552,7 +3551,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3567,7 +3566,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3585,7 +3584,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3599,7 +3598,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3614,7 +3613,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3637,7 +3636,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "proc-macro-crate", "proc-macro2 1.0.10", @@ -3648,7 +3647,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3662,7 +3661,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3680,7 +3679,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "frame-system", @@ -3693,7 +3692,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -3711,7 +3710,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-support", "parity-scale-codec", @@ -3724,7 +3723,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3739,7 +3738,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-benchmarking", "frame-support", @@ -3755,7 +3754,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4091,7 +4090,6 @@ dependencies = [ "parking_lot 0.9.0", "polkadot-erasure-coding", "polkadot-primitives", - "sc-client", "sc-client-api", "sc-keystore", "sc-network", @@ -4112,7 +4110,6 @@ dependencies = [ "log 0.4.8", "polkadot-service", "sc-cli", - "sc-client", "sc-client-api", "sc-client-db", "sc-executor", @@ -4142,9 +4139,10 @@ dependencies = [ "polkadot-service", "polkadot-validation", "sc-cli", - "sc-client", "sc-client-api", + "sc-executor", "sc-network", + "sc-service", "sp-api", "sp-blockchain", "sp-consensus", @@ -4183,7 +4181,6 @@ dependencies = [ "polkadot-erasure-coding", "polkadot-primitives", "polkadot-validation", - "sc-client", "sc-network", "sc-network-gossip", "sp-api", @@ -4205,10 +4202,11 @@ dependencies = [ "polkadot-test-runtime-client", "rand 0.7.3", "sc-block-builder", - "sc-client", "sc-client-api", + "sc-consensus", "sc-network", "sc-network-test", + "sc-service", "sp-blockchain", "sp-consensus", "sp-core", @@ -4263,9 +4261,10 @@ dependencies = [ "pallet-transaction-payment-rpc", "parity-scale-codec", "polkadot-primitives", - "sc-client", + "sc-client-api", "sc-rpc", "sp-api", + "sp-blockchain", "sp-runtime", "sp-transaction-pool", "substrate-frame-rpc-system", @@ -4408,9 +4407,9 @@ dependencies = [ "sc-authority-discovery", "sc-block-builder", "sc-chain-spec", - "sc-client", "sc-client-api", "sc-client-db", + "sc-consensus", "sc-consensus-babe", "sc-executor", "sc-finality-grandpa", @@ -4514,8 +4513,9 @@ dependencies = [ "polkadot-runtime-common", "polkadot-test-runtime", "sc-block-builder", - "sc-client", "sc-client-api", + "sc-consensus", + "sc-service", "sp-api", "sp-blockchain", "sp-core", @@ -5280,7 +5280,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "bytes 0.5.4", "derive_more 0.99.5", @@ -5307,7 +5307,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -5323,7 +5323,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "impl-trait-for-tuples", "sc-chain-spec-derive", @@ -5339,7 +5339,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "proc-macro-crate", "proc-macro2 1.0.10", @@ -5350,7 +5350,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "ansi_term 0.12.1", "app_dirs", @@ -5389,47 +5389,10 @@ dependencies = [ "tokio 0.2.19", ] -[[package]] -name = "sc-client" -version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" -dependencies = [ - "derive_more 0.99.5", - "fnv", - "futures 0.3.4", - "hash-db", - "hex-literal", - "kvdb", - "log 0.4.8", - "parity-scale-codec", - "parking_lot 0.10.2", - "rand 0.7.3", - "sc-block-builder", - "sc-client-api", - "sc-executor", - "sc-telemetry", - "sp-api", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-database", - "sp-externalities", - "sp-inherents", - "sp-keyring", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-trie", - "sp-utils", - "sp-version", - "substrate-prometheus-endpoint", - "tracing", -] - [[package]] name = "sc-client-api" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "fnv", @@ -5447,6 +5410,7 @@ dependencies = [ "sp-blockchain", "sp-consensus", "sp-core", + "sp-database", "sp-externalities", "sp-inherents", "sp-keyring", @@ -5464,7 +5428,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "blake2-rfc", "hash-db", @@ -5477,7 +5441,6 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "parking_lot 0.10.2", - "sc-client", "sc-client-api", "sc-executor", "sc-state-db", @@ -5491,10 +5454,21 @@ dependencies = [ "substrate-prometheus-endpoint", ] +[[package]] +name = "sc-consensus" +version = "0.8.0-dev" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" +dependencies = [ + "sc-client-api", + "sp-blockchain", + "sp-consensus", + "sp-runtime", +] + [[package]] name = "sc-consensus-babe" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "fork-tree", @@ -5509,7 +5483,6 @@ dependencies = [ "parking_lot 0.10.2", "pdqselect", "rand 0.7.3", - "sc-client", "sc-client-api", "sc-consensus-epochs", "sc-consensus-slots", @@ -5536,7 +5509,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "fork-tree", "parity-scale-codec", @@ -5549,7 +5522,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "futures 0.3.4", "futures-timer 3.0.2", @@ -5570,7 +5543,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "log 0.4.8", "sc-client-api", @@ -5584,7 +5557,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "lazy_static", @@ -5612,7 +5585,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "log 0.4.8", @@ -5629,7 +5602,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -5644,7 +5617,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "cranelift-codegen", "cranelift-wasm", @@ -5665,7 +5638,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "assert_matches", "finality-grandpa", @@ -5678,8 +5651,8 @@ dependencies = [ "pin-project", "rand 0.7.3", "sc-block-builder", - "sc-client", "sc-client-api", + "sc-consensus", "sc-keystore", "sc-network", "sc-network-gossip", @@ -5701,7 +5674,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "ansi_term 0.12.1", "futures 0.3.4", @@ -5718,7 +5691,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "hex", @@ -5733,7 +5706,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "bitflags", "bytes 0.5.4", @@ -5760,7 +5733,6 @@ dependencies = [ "prost-build", "rand 0.7.3", "sc-block-builder", - "sc-client", "sc-client-api", "sc-peerset", "serde", @@ -5786,7 +5758,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "futures 0.3.4", "futures-timer 3.0.2", @@ -5802,7 +5774,7 @@ dependencies = [ [[package]] name = "sc-network-test" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "env_logger 0.7.1", "futures 0.3.4", @@ -5812,9 +5784,10 @@ dependencies = [ "parking_lot 0.10.2", "rand 0.7.3", "sc-block-builder", - "sc-client", "sc-client-api", + "sc-consensus", "sc-network", + "sc-service", "sp-blockchain", "sp-consensus", "sp-consensus-babe", @@ -5828,7 +5801,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "bytes 0.5.4", "fnv", @@ -5855,7 +5828,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "futures 0.3.4", "libp2p", @@ -5868,7 +5841,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "futures 0.3.4", "hash-db", @@ -5878,7 +5851,6 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.10.2", "sc-block-builder", - "sc-client", "sc-client-api", "sc-executor", "sc-keystore", @@ -5901,7 +5873,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "futures 0.3.4", @@ -5925,7 +5897,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "jsonrpc-core", "jsonrpc-http-server", @@ -5940,13 +5912,14 @@ dependencies = [ [[package]] name = "sc-service" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "exit-future", "futures 0.1.29", "futures 0.3.4", "futures-timer 3.0.2", + "hash-db", "lazy_static", "log 0.4.8", "netstat2", @@ -5956,8 +5929,9 @@ dependencies = [ "parking_lot 0.10.2", "pin-project", "procfs", + "rand 0.7.3", + "sc-block-builder", "sc-chain-spec", - "sc-client", "sc-client-api", "sc-client-db", "sc-executor", @@ -5974,14 +5948,19 @@ dependencies = [ "slog", "sp-api", "sp-application-crypto", + "sp-block-builder", "sp-blockchain", "sp-consensus", "sp-core", + "sp-externalities", "sp-io", "sp-runtime", "sp-session", + "sp-state-machine", "sp-transaction-pool", + "sp-trie", "sp-utils", + "sp-version", "substrate-prometheus-endpoint", "sysinfo", "tracing", @@ -5991,7 +5970,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -6005,7 +5984,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "bytes 0.5.4", "futures 0.3.4", @@ -6027,7 +6006,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "erased-serde", "log 0.4.8", @@ -6042,7 +6021,7 @@ dependencies = [ [[package]] name = "sc-transaction-graph" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "futures 0.3.4", @@ -6062,7 +6041,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "futures 0.3.4", @@ -6447,7 +6426,7 @@ dependencies = [ [[package]] name = "sp-allocator" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "log 0.4.8", @@ -6459,7 +6438,7 @@ dependencies = [ [[package]] name = "sp-api" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "hash-db", "parity-scale-codec", @@ -6474,7 +6453,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "blake2-rfc", "proc-macro-crate", @@ -6486,7 +6465,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "serde", @@ -6498,7 +6477,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "integer-sqrt", "num-traits 0.2.11", @@ -6512,7 +6491,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "sp-api", @@ -6524,7 +6503,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -6535,7 +6514,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "sp-api", @@ -6547,7 +6526,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "log 0.4.8", @@ -6563,7 +6542,7 @@ dependencies = [ [[package]] name = "sp-chain-spec" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "serde", "serde_json", @@ -6572,7 +6551,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "futures 0.3.4", @@ -6595,7 +6574,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "sp-api", @@ -6609,7 +6588,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "sp-api", @@ -6625,7 +6604,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -6637,7 +6616,7 @@ dependencies = [ [[package]] name = "sp-core" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "base58", "blake2-rfc", @@ -6678,7 +6657,7 @@ dependencies = [ [[package]] name = "sp-database" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "kvdb", "parking_lot 0.10.2", @@ -6687,7 +6666,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "proc-macro2 1.0.10", "quote 1.0.3", @@ -6697,7 +6676,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "environmental", "parity-scale-codec", @@ -6708,7 +6687,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "serde", @@ -6721,7 +6700,7 @@ dependencies = [ [[package]] name = "sp-finality-tracker" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -6731,7 +6710,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "parity-scale-codec", @@ -6743,7 +6722,7 @@ dependencies = [ [[package]] name = "sp-io" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "futures 0.3.4", "hash-db", @@ -6763,7 +6742,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "lazy_static", "sp-core", @@ -6774,7 +6753,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "sp-api", "sp-core", @@ -6784,7 +6763,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "backtrace", "log 0.4.8", @@ -6793,7 +6772,7 @@ dependencies = [ [[package]] name = "sp-phragmen" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "serde", @@ -6805,7 +6784,7 @@ dependencies = [ [[package]] name = "sp-phragmen-compact" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "proc-macro-crate", "proc-macro2 1.0.10", @@ -6816,7 +6795,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "serde", "sp-core", @@ -6825,7 +6804,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "hash256-std-hasher", "impl-trait-for-tuples", @@ -6846,7 +6825,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "primitive-types", @@ -6861,7 +6840,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "Inflector", "proc-macro-crate", @@ -6873,7 +6852,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "serde", "serde_json", @@ -6882,7 +6861,7 @@ dependencies = [ [[package]] name = "sp-session" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "sp-api", "sp-core", @@ -6893,7 +6872,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -6903,7 +6882,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "hash-db", "log 0.4.8", @@ -6922,12 +6901,12 @@ dependencies = [ [[package]] name = "sp-std" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" [[package]] name = "sp-storage" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "impl-serde 0.2.3", "ref-cast", @@ -6939,7 +6918,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -6953,7 +6932,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "tracing", ] @@ -6961,7 +6940,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "derive_more 0.99.5", "futures 0.3.4", @@ -6976,7 +6955,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "hash-db", "memory-db", @@ -6990,7 +6969,7 @@ dependencies = [ [[package]] name = "sp-utils" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "futures 0.3.4", "futures-core", @@ -7001,7 +6980,7 @@ dependencies = [ [[package]] name = "sp-version" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "impl-serde 0.2.3", "parity-scale-codec", @@ -7013,7 +6992,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7141,7 +7120,7 @@ dependencies = [ [[package]] name = "substrate-browser-utils" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "chrono", "clear_on_drop", @@ -7168,7 +7147,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "platforms", ] @@ -7176,7 +7155,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.4", @@ -7185,7 +7164,7 @@ dependencies = [ "jsonrpc-derive", "log 0.4.8", "parity-scale-codec", - "sc-client", + "sc-client-api", "serde", "sp-api", "sp-blockchain", @@ -7197,7 +7176,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.8.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "async-std", "derive_more 0.99.5", @@ -7211,15 +7190,16 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "futures 0.3.4", "hash-db", "parity-scale-codec", - "sc-client", "sc-client-api", "sc-client-db", + "sc-consensus", "sc-executor", + "sc-service", "sp-blockchain", "sp-consensus", "sp-core", @@ -7231,7 +7211,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "cfg-if", "frame-executive", @@ -7244,7 +7224,7 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "parity-util-mem", - "sc-client", + "sc-service", "serde", "sp-api", "sp-application-crypto", @@ -7270,15 +7250,17 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" version = "2.0.0-dev" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" dependencies = [ "futures 0.3.4", "parity-scale-codec", "sc-block-builder", - "sc-client", "sc-client-api", + "sc-consensus", + "sc-service", "sp-api", "sp-blockchain", + "sp-consensus", "sp-core", "sp-runtime", "substrate-test-client", @@ -7288,7 +7270,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder-runner" version = "1.0.5" -source = "git+https://github.com/paritytech/substrate#c13ad41634d0bd7cf07897c2aa062b917d520520" +source = "git+https://github.com/paritytech/substrate#fc6d55c9c9cfe50ec7d8d8671cd39b669cebc1ab" [[package]] name = "substrate-wasm-builder-runner" @@ -7514,7 +7496,6 @@ dependencies = [ "polkadot-collator", "polkadot-parachain", "polkadot-primitives", - "sc-client", "sc-client-api", "sp-core", "test-parachain-adder", diff --git a/availability-store/Cargo.toml b/availability-store/Cargo.toml index 2f075e11abef..556b4c6d0314 100644 --- a/availability-store/Cargo.toml +++ b/availability-store/Cargo.toml @@ -18,7 +18,6 @@ codec = { package = "parity-scale-codec", version = "1.3.0", features = ["derive sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } consensus_common = { package = "sp-consensus", git = "https://github.com/paritytech/substrate", branch = "master" } client = { package = "sc-client-api", git = "https://github.com/paritytech/substrate", branch = "master" } -sc-client = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 351348ee3003..d54d161458c2 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -20,7 +20,6 @@ structopt = "0.3.8" sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-client = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-db = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/cli/src/command.rs b/cli/src/command.rs index a63954fe3d55..5101a3c9aaab 100644 --- a/cli/src/command.rs +++ b/cli/src/command.rs @@ -15,9 +15,8 @@ // along with Polkadot. If not, see . use log::info; -use sp_runtime::traits::BlakeTwo256; -use service::{IdentifyVariant, Block, self, RuntimeApiCollection, TFullClient}; -use sp_api::ConstructRuntimeApi; +use service::{IdentifyVariant, self}; +use sc_executor::NativeExecutionDispatch; use sc_cli::{SubstrateCli, Result}; use crate::cli::{Cli, Subcommand}; @@ -82,23 +81,56 @@ pub fn run() -> Result<()> { info!(" KUSAMA FOUNDATION "); info!("----------------------------"); - run_node::< - service::kusama_runtime::RuntimeApi, - service::KusamaExecutor, - service::kusama_runtime::UncheckedExtrinsic, - >(runtime, authority_discovery_enabled, grandpa_pause) + runtime.run_node( + |config| { + service::kusama_new_light(config) + }, + |config| { + service::kusama_new_full( + config, + None, + None, + authority_discovery_enabled, + 6000, + grandpa_pause + ).map(|(s, _, _)| s) + }, + service::KusamaExecutor::native_version().runtime_version + ) } else if config.chain_spec.is_westend() { - run_node::< - service::westend_runtime::RuntimeApi, - service::WestendExecutor, - service::westend_runtime::UncheckedExtrinsic, - >(runtime, authority_discovery_enabled, grandpa_pause) + runtime.run_node( + |config| { + service::westend_new_light(config) + }, + |config| { + service::westend_new_full( + config, + None, + None, + authority_discovery_enabled, + 6000, + grandpa_pause + ).map(|(s, _, _)| s) + }, + service::WestendExecutor::native_version().runtime_version + ) } else { - run_node::< - service::polkadot_runtime::RuntimeApi, - service::PolkadotExecutor, - service::polkadot_runtime::UncheckedExtrinsic, - >(runtime, authority_discovery_enabled, grandpa_pause) + runtime.run_node( + |config| { + service::polkadot_new_light(config) + }, + |config| { + service::polkadot_new_full( + config, + None, + None, + authority_discovery_enabled, + 6000, + grandpa_pause + ).map(|(s, _, _)| s) + }, + service::PolkadotExecutor::native_version().runtime_version + ) } }, Some(Subcommand::Base(subcommand)) => { @@ -160,55 +192,3 @@ pub fn run() -> Result<()> { }, } } - -fn run_node( - runtime: sc_cli::Runner, - authority_discovery_enabled: bool, - grandpa_pause: Option<(u32, u32)>, -) -> sc_cli::Result<()> -where - R: ConstructRuntimeApi> - + Send + Sync + 'static, - >>::RuntimeApi: - RuntimeApiCollection, Block>>, - >>::RuntimeApi: - RuntimeApiCollection, Block>>, - E: service::Codec + Send + Sync + 'static, - D: service::NativeExecutionDispatch + 'static, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - <>>::RuntimeApi as sp_api::ApiExt>::StateBackend: - sp_api::StateBackend, - // Rust bug: https://github.com/rust-lang/rust/issues/43580 - R: ConstructRuntimeApi< - Block, - TLightClient - >, -{ - runtime.run_node( - |config| service::new_light::(config), - |config| service::new_full::( - config, - None, - None, - authority_discovery_enabled, - 6000, - grandpa_pause, - ).map(|(s, _)| s), - D::native_version().runtime_version, - ) -} - -// We can't simply use `service::TLightClient` due to a -// Rust bug: https://github.com/rust-lang/rust/issues/43580 -type TLightClient = sc_client::Client< - sc_client::light::backend::Backend, BlakeTwo256>, - sc_client::light::call_executor::GenesisCallExecutor< - sc_client::light::backend::Backend, BlakeTwo256>, - sc_client::LocalCallExecutor< - sc_client::light::backend::Backend, BlakeTwo256>, - sc_executor::NativeExecutor - > - >, - Block, - Runtime ->; diff --git a/collator/Cargo.toml b/collator/Cargo.toml index e382f5548767..ad38cc7f3210 100644 --- a/collator/Cargo.toml +++ b/collator/Cargo.toml @@ -7,7 +7,8 @@ edition = "2018" [dependencies] futures = "0.3.4" -sc-client = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/collator/src/lib.rs b/collator/src/lib.rs index d2fcf0b861a7..3e01e4cbb72c 100644 --- a/collator/src/lib.rs +++ b/collator/src/lib.rs @@ -52,9 +52,8 @@ use std::pin::Pin; use futures::{future, Future, Stream, FutureExt, TryFutureExt, StreamExt, task::Spawn}; use log::warn; -use sc_client::BlockchainEvents; +use sc_client_api::StateBackend; use sp_core::Pair; -use sp_runtime::traits::BlakeTwo256; use polkadot_primitives::{ BlockId, Hash, Block, parachain::{ @@ -72,7 +71,9 @@ pub use polkadot_validation::SignedStatement; pub use polkadot_primitives::parachain::CollatorId; pub use sc_network::PeerId; pub use service::RuntimeApiCollection; +use sc_service::ClientProvider; pub use sc_cli::SubstrateCli; +use sp_api::{ConstructRuntimeApi, ApiExt, HashFor}; const COLLATION_TIMEOUT: Duration = Duration::from_secs(30); @@ -114,34 +115,24 @@ impl fmt::Display for Error { } } -/// The Polkadot client type. -pub type PolkadotClient = sc_client::Client; - /// Something that can build a `ParachainContext`. pub trait BuildParachainContext { /// The parachain context produced by the `build` function. type ParachainContext: self::ParachainContext; /// Build the `ParachainContext`. - fn build( + fn build( self, - client: Arc>, + client: Arc, spawner: SP, network: impl Network + Clone + 'static, ) -> Result where - PolkadotClient: ProvideRuntimeApi, - as ProvideRuntimeApi>::Api: RuntimeApiCollection, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - < as ProvideRuntimeApi>::Api as sp_api::ApiExt>::StateBackend: - sp_api::StateBackend, + Client: ProvideRuntimeApi, + Client::Api: RuntimeApiCollection, + >::StateBackend: StateBackend>, Extrinsic: codec::Codec + Send + Sync + 'static, - E: sc_client::CallExecutor + Clone + Send + Sync + 'static, - SP: Spawn + Clone + Send + Sync + 'static, - R: Send + Sync + 'static, - B: sc_client_api::Backend + 'static, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - B::State: sp_api::StateBackend; + SP: Spawn + Clone + Send + Sync + 'static; } /// Parachain context needed for collation. @@ -209,38 +200,40 @@ pub async fn collate

( Ok(collation) } -fn build_collator_service( - service: (S, polkadot_service::FullNodeHandles), + +fn build_collator_service( + spawner: SP, + handles: polkadot_service::FullNodeHandles, + client: Arc, para_id: ParaId, key: Arc, build_parachain_context: P, -) -> Result +) -> Result + Send + 'static, polkadot_service::Error> where - S: AbstractService, - sc_client::Client: ProvideRuntimeApi, - as ProvideRuntimeApi>::Api: - RuntimeApiCollection< + C: ClientProvider< + service::Block, + service::TFullBackend, + service::TFullCallExecutor, + R + > + 'static, + R: ConstructRuntimeApi + Sync + Send, + >::RuntimeApi: + sp_api::ApiExt< + service::Block, + StateBackend = as service::Backend>::State, + > + + RuntimeApiCollection< Extrinsic, - Error = sp_blockchain::Error, - StateBackend = sc_client_api::StateBackendFor - >, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - S::Backend: service::Backend, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - >::State: - sp_api::StateBackend>, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - S::CallExecutor: service::CallExecutor, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - S::SelectChain: service::SelectChain, + StateBackend = as service::Backend>::State, + > + + Sync + Send, + E: sc_executor::NativeExecutionDispatch + 'static, P: BuildParachainContext, P::ParachainContext: Send + 'static, ::ProduceCandidate: Send, Extrinsic: service::Codec + Send + Sync + 'static, + SP: Spawn + Clone + Send + Sync + 'static, { - let (service, handles) = service; - let spawner = service.spawn_task_handle(); - let polkadot_network = handles.polkadot_network .ok_or_else(|| "Collator cannot run when Polkadot-specific networking has not been started")?; @@ -250,8 +243,6 @@ fn build_collator_service( handles.validation_service_handle .ok_or_else(|| "Collator cannot run when validation networking has not been started")?; - let client = service.client(); - let parachain_context = match build_parachain_context.build( client.clone(), spawner, @@ -334,9 +325,7 @@ fn build_collator_service( } }.boxed(); - service.spawn_essential_task("collation", work); - - Ok(service) + Ok(work) } /// Async function that will run the collator node with the given `RelayChainContext` and `ParachainContext` @@ -348,29 +337,55 @@ pub async fn start_collator

( config: Configuration, ) -> Result<(), polkadot_service::Error> where - P: BuildParachainContext, + P: 'static + BuildParachainContext, P::ParachainContext: Send + 'static, ::ProduceCandidate: Send, { let is_kusama = config.chain_spec.is_kusama(); match (is_kusama, &config.role) { - (_, Role::Light) => return Err( + (_, Role::Light) => Err( polkadot_service::Error::Other("light nodes are unsupported as collator".into()) ).into(), - (true, _) => + (true, _) => { + let (service, client, handlers) = service::kusama_new_full( + config, + Some((key.public(), para_id)), + None, + false, + 6000, + None + )?; + let spawn_handle = service.spawn_task_handle(); build_collator_service( - service::kusama_new_full(config, Some((key.public(), para_id)), None, false, 6000, None)?, + spawn_handle, + handlers, + client, para_id, key, - build_parachain_context, - )?.await, - (false, _) => + build_parachain_context + )?.await; + Ok(()) + }, + (false, _) => { + let (service, client, handles) = service::polkadot_new_full( + config, + Some((key.public(), para_id)), + None, + false, + 6000, + None + )?; + let spawn_handle = service.spawn_task_handle(); build_collator_service( - service::polkadot_new_full(config, Some((key.public(), para_id)), None, false, 6000, None)?, + spawn_handle, + handles, + client, para_id, key, build_parachain_context, - )?.await, + )?.await; + Ok(()) + } } } @@ -413,9 +428,9 @@ mod tests { impl BuildParachainContext for BuildDummyParachainContext { type ParachainContext = DummyParachainContext; - fn build( + fn build( self, - _: Arc>, + _: Arc, _: SP, _: impl Network + Clone + 'static, ) -> Result { diff --git a/network/Cargo.toml b/network/Cargo.toml index 01406bae8b0c..d60f941c4526 100644 --- a/network/Cargo.toml +++ b/network/Cargo.toml @@ -23,7 +23,6 @@ futures = "0.3.4" log = "0.4.8" exit-future = "0.2.0" futures-timer = "2.0" -sc-client = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } wasm-timer = "0.2.4" diff --git a/network/test/Cargo.toml b/network/test/Cargo.toml index c1a6fc9663d1..3761527a7a40 100644 --- a/network/test/Cargo.toml +++ b/network/test/Cargo.toml @@ -10,10 +10,11 @@ log = "0.4.8" parking_lot = "0.10.0" futures = "0.3.1" rand = "0.7.2" +sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-service = { git = "https://github.com/paritytech/substrate", features = ["test-helpers"], branch = "master" } sc-network-test = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-client = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/network/test/src/lib.rs b/network/test/src/lib.rs index 36bdda0ba4d6..bd824f1441b9 100644 --- a/network/test/src/lib.rs +++ b/network/test/src/lib.rs @@ -34,8 +34,8 @@ use sc_client_api::{ client::BlockBackend, backend::{TransactionFor, AuxStore, Backend, Finalizer}, }; +use sc_consensus::LongestChain; use sc_block_builder::{BlockBuilder, BlockBuilderProvider}; -use sc_client::LongestChain; use sp_consensus::block_validation::DefaultBlockAnnounceValidator; use sp_consensus::import_queue::{ BasicQueue, BoxJustificationImport, Verifier, BoxFinalityProofImport, @@ -53,14 +53,23 @@ use sp_runtime::generic::BlockId; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, NumberFor}; use sp_runtime::Justification; pub use sc_network_test::PassThroughVerifier; +use sc_service::client::Client; pub use polkadot_test_runtime_client::runtime::{Block, Extrinsic, Hash}; pub use polkadot_test_runtime_client::{TestClient, TestClientBuilder, TestClientBuilderExt}; -pub type PeersFullClient = - sc_client::Client; -pub type PeersLightClient = - sc_client::Client; +pub type PeersFullClient = Client< + polkadot_test_runtime_client::Backend, + polkadot_test_runtime_client::Executor, + Block, + polkadot_test_runtime_client::runtime::RuntimeApi +>; +pub type PeersLightClient = Client< + polkadot_test_runtime_client::LightBackend, + polkadot_test_runtime_client::LightExecutor, + Block, + polkadot_test_runtime_client::runtime::RuntimeApi +>; #[derive(Clone)] pub enum PeersClient { diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index 1d56b6924128..3363a908a943 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -10,7 +10,6 @@ parachain = { package = "polkadot-parachain", path = "../../.." } collator = { package = "polkadot-collator", path = "../../../../collator" } primitives = { package = "polkadot-primitives", path = "../../../../primitives" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -client = { package = "sc-client", git = "https://github.com/paritytech/substrate", branch = "master" } client-api = { package = "sc-client-api", git = "https://github.com/paritytech/substrate", branch = "master" } parking_lot = "0.10.0" codec = { package = "parity-scale-codec", version = "1.2.0" } diff --git a/parachain/test-parachains/adder/collator/src/main.rs b/parachain/test-parachains/adder/collator/src/main.rs index cc61dc2695e2..5ecf063dda85 100644 --- a/parachain/test-parachains/adder/collator/src/main.rs +++ b/parachain/test-parachains/adder/collator/src/main.rs @@ -101,9 +101,9 @@ impl ParachainContext for AdderContext { impl BuildParachainContext for AdderContext { type ParachainContext = Self; - fn build( + fn build( self, - _: Arc>, + _: Arc, _: SP, network: impl Network + Clone + 'static, ) -> Result { diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index ab0f302a48bb..9660ce3ec968 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -5,9 +5,10 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -client = { package = "sc-client", git = "https://github.com/paritytech/substrate", branch = "master" } jsonrpc-core = "14.0.3" polkadot-primitives = { path = "../primitives" } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/rpc/src/lib.rs b/rpc/src/lib.rs index 3b27b2543435..cc54917ffafe 100644 --- a/rpc/src/lib.rs +++ b/rpc/src/lib.rs @@ -23,6 +23,8 @@ use std::sync::Arc; use polkadot_primitives::{Block, AccountId, Nonce, Balance}; use sp_api::ProvideRuntimeApi; use txpool_api::TransactionPool; +use sp_blockchain::HeaderBackend; +use sc_client_api::light::{Fetcher, RemoteBlockchain}; /// A type representing all RPC extensions. pub type RpcExtension = jsonrpc_core::IoHandler; @@ -30,7 +32,7 @@ pub type RpcExtension = jsonrpc_core::IoHandler; /// Instantiate all RPC extensions. pub fn create_full(client: Arc, pool: Arc

) -> RpcExtension where C: ProvideRuntimeApi, - C: client::blockchain::HeaderBackend, + C: HeaderBackend, C: Send + Sync + 'static, C::Api: frame_rpc_system::AccountNonceApi, C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, @@ -53,18 +55,18 @@ pub fn create_full(client: Arc, pool: Arc

) -> RpcExtension where /// Instantiate all RPC extensions for light node. pub fn create_light( client: Arc, - remote_blockchain: Arc>, + remote_blockchain: Arc>, fetcher: Arc, pool: Arc

, ) -> RpcExtension where C: ProvideRuntimeApi, - C: client::blockchain::HeaderBackend, + C: HeaderBackend, C: Send + Sync + 'static, C::Api: frame_rpc_system::AccountNonceApi, C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, P: TransactionPool + Sync + Send + 'static, - F: client::light::fetcher::Fetcher + 'static, + F: Fetcher + 'static, UE: codec::Codec + Send + Sync + 'static, { use frame_rpc_system::{LightSystem, SystemApi}; diff --git a/runtime/test-runtime/client/Cargo.toml b/runtime/test-runtime/client/Cargo.toml index b540adfb9b49..ff94572b5f8e 100644 --- a/runtime/test-runtime/client/Cargo.toml +++ b/runtime/test-runtime/client/Cargo.toml @@ -7,6 +7,8 @@ license = "GPL-3.0" [dependencies] sc-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-service = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["test-helpers"], default-features = false } substrate-test-client = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } polkadot-test-runtime = { path = ".." } @@ -17,6 +19,5 @@ sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } codec = { package = "parity-scale-codec", version = "1.0.0" } sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-client = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } futures = "0.3.1" diff --git a/runtime/test-runtime/client/src/lib.rs b/runtime/test-runtime/client/src/lib.rs index 2d7797557e72..ad767f7ffde5 100644 --- a/runtime/test-runtime/client/src/lib.rs +++ b/runtime/test-runtime/client/src/lib.rs @@ -22,16 +22,19 @@ use std::sync::Arc; use std::collections::BTreeMap; pub use substrate_test_client::*; pub use polkadot_test_runtime as runtime; -pub use sc_client::LongestChain; use sp_core::{sr25519, ChangesTrieConfiguration, map, twox_128}; use sp_core::storage::{ChildInfo, Storage, StorageChild}; use polkadot_test_runtime::genesismap::GenesisConfig; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, Hash as HashT, HashFor}; -use sc_client::{ - light::fetcher::{ - RemoteCallRequest, RemoteBodyRequest, +use sc_consensus::LongestChain; +use sc_client_api::light::{RemoteCallRequest, RemoteBodyRequest}; +use sc_service::client::{ + light::{ + call_executor::GenesisCallExecutor, backend as light_backend, + new_light_blockchain, new_light_backend, }, + genesis, Client as SubstrateClient, LocalCallExecutor }; /// A prelude to import in tests. @@ -57,7 +60,7 @@ sc_executor::native_executor_instance! { pub type Backend = substrate_test_client::Backend; /// Test client executor. -pub type Executor = sc_client::LocalCallExecutor< +pub type Executor = LocalCallExecutor< Backend, NativeExecutor, >; @@ -66,10 +69,10 @@ pub type Executor = sc_client::LocalCallExecutor< pub type LightBackend = substrate_test_client::LightBackend; /// Test client light executor. -pub type LightExecutor = sc_client::light::call_executor::GenesisCallExecutor< +pub type LightExecutor = GenesisCallExecutor< LightBackend, - sc_client::LocalCallExecutor< - sc_client::light::backend::Backend< + LocalCallExecutor< + light_backend::Backend< sc_client_db::light::LightStorage, HashFor >, @@ -120,7 +123,7 @@ impl substrate_test_client::GenesisInit for GenesisParameters { let state_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( storage.top.clone().into_iter().chain(child_roots).collect() ); - let block: runtime::Block = sc_client::genesis::construct_genesis_block(state_root); + let block: runtime::Block = genesis::construct_genesis_block(state_root); storage.top.extend(additional_storage_with_genesis(&block)); storage @@ -136,9 +139,9 @@ pub type TestClientBuilder = substrate_test_client::TestClientBuilder< >; /// Test client type with `LocalExecutor` and generic Backend. -pub type Client = sc_client::Client< +pub type Client = SubstrateClient< B, - sc_client::LocalCallExecutor>, + LocalCallExecutor>, polkadot_test_runtime::Block, polkadot_test_runtime::RuntimeApi, >; @@ -212,21 +215,21 @@ pub trait TestClientBuilderExt: Sized { } /// Build the test client and longest chain selector. - fn build_with_longest_chain(self) -> (Client, sc_client::LongestChain); + fn build_with_longest_chain(self) -> (Client, LongestChain); /// Build the test client and the backend. fn build_with_backend(self) -> (Client, Arc); } impl TestClientBuilderExt for TestClientBuilder< - sc_client::LocalCallExecutor>, + LocalCallExecutor>, Backend > { fn genesis_init_mut(&mut self) -> &mut GenesisParameters { Self::genesis_init_mut(self) } - fn build_with_longest_chain(self) -> (Client, sc_client::LongestChain) { + fn build_with_longest_chain(self) -> (Client, LongestChain) { self.build_with_native_executor(None) } @@ -277,15 +280,25 @@ pub fn new() -> Client { /// Creates new light client instance used for tests. pub fn new_light() -> ( - sc_client::Client, + SubstrateClient< + LightBackend, + LightExecutor, + polkadot_test_runtime::Block, + polkadot_test_runtime::RuntimeApi + >, Arc, ) { let storage = sc_client_db::light::LightStorage::new_test(); - let blockchain = Arc::new(sc_client::light::blockchain::Blockchain::new(storage)); - let backend = Arc::new(LightBackend::new(blockchain.clone())); + let blockchain =new_light_blockchain(storage); + let backend = new_light_backend(blockchain.clone()); let executor = new_native_executor(); - let local_call_executor = sc_client::LocalCallExecutor::new(backend.clone(), executor, sp_core::tasks::executor(), Default::default(),); + let local_call_executor = LocalCallExecutor::new( + backend.clone(), + executor, + sp_core::tasks::executor(), + Default::default() + ); let call_executor = LightExecutor::new( backend.clone(), local_call_executor, diff --git a/service/Cargo.toml b/service/Cargo.toml index fbad3afd043f..7a0094b6ee93 100644 --- a/service/Cargo.toml +++ b/service/Cargo.toml @@ -25,11 +25,11 @@ sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sc-client = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-db = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } consensus_common = { package = "sp-consensus", git = "https://github.com/paritytech/substrate", branch = "master" } grandpa = { package = "sc-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "master" } @@ -37,6 +37,7 @@ grandpa_primitives = { package = "sp-finality-grandpa", git = "https://github.co inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master" } service = { package = "sc-service", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } telemetry = { package = "sc-telemetry", git = "https://github.com/paritytech/substrate", branch = "master" } +sc-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/service/src/chain_spec.rs b/service/src/chain_spec.rs index 8d8572e7e7e3..4daf3826c948 100644 --- a/service/src/chain_spec.rs +++ b/service/src/chain_spec.rs @@ -48,9 +48,9 @@ const DEFAULT_PROTOCOL_ID: &str = "dot"; #[serde(rename_all = "camelCase")] pub struct Extensions { /// Block numbers with known hashes. - pub fork_blocks: sc_client::ForkBlocks, + pub fork_blocks: sc_client_api::ForkBlocks, /// Known bad block hashes. - pub bad_blocks: sc_client::BadBlocks, + pub bad_blocks: sc_client_api::BadBlocks, } /// The `ChainSpec parametrised for polkadot runtime`. diff --git a/service/src/lib.rs b/service/src/lib.rs index f27f19e1c721..5a684fae6a67 100644 --- a/service/src/lib.rs +++ b/service/src/lib.rs @@ -19,7 +19,6 @@ pub mod chain_spec; mod grandpa_support; -use sc_client::LongestChain; use std::sync::Arc; use std::time::Duration; use polkadot_primitives::{parachain, Hash, BlockId, AccountId, Nonce, Balance}; @@ -27,21 +26,20 @@ use polkadot_primitives::{parachain, Hash, BlockId, AccountId, Nonce, Balance}; use polkadot_network::{legacy::gossip::Known, protocol as network_protocol}; use service::{error::Error as ServiceError, ServiceBuilder}; use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}; -use inherents::InherentDataProviders; use sc_executor::native_executor_instance; use log::info; pub use service::{ AbstractService, Role, PruningMode, TransactionPoolOptions, Error, RuntimeGenesis, TFullClient, TLightClient, TFullBackend, TLightBackend, TFullCallExecutor, TLightCallExecutor, - Configuration, ChainSpec, ServiceBuilderCommand, + Configuration, ChainSpec, ServiceBuilderCommand, ClientProvider, }; pub use service::config::{DatabaseConfig, PrometheusConfig}; pub use sc_executor::NativeExecutionDispatch; -pub use sc_client::{ExecutionStrategy, CallExecutor, Client}; -pub use sc_client_api::backend::Backend; +pub use sc_client_api::{Backend, ExecutionStrategy, CallExecutor}; +pub use sc_consensus::LongestChain; pub use sp_api::{Core as CoreApi, ConstructRuntimeApi, ProvideRuntimeApi, StateBackend}; pub use sp_runtime::traits::{HashFor, NumberFor}; -pub use consensus_common::SelectChain; +pub use consensus_common::{SelectChain, BlockImport, block_validation::Chain}; pub use polkadot_primitives::parachain::{CollatorId, ParachainHost}; pub use polkadot_primitives::Block; pub use sp_runtime::traits::{Block as BlockT, self as runtime_traits, BlakeTwo256}; @@ -76,7 +74,7 @@ native_executor_instance!( ); /// A set of APIs that polkadot-like runtimes must implement. -pub trait RuntimeApiCollection : +pub trait RuntimeApiCollection: sp_transaction_pool::runtime_api::TaggedTransactionQueue + sp_api::ApiExt + babe_primitives::BabeApi @@ -156,7 +154,7 @@ macro_rules! new_full_start { Block, $runtime, $executor >($config)? .with_select_chain(|_, backend| { - Ok(sc_client::LongestChain::new(backend.clone())) + Ok(sc_consensus::LongestChain::new(backend.clone())) })? .with_transaction_pool(|config, client, _fetcher, prometheus_registry| { let pool_api = sc_transaction_pool::FullChainApi::new(client.clone()); @@ -209,6 +207,352 @@ macro_rules! new_full_start { }} } +/// Builds a new service for a full client. +#[macro_export] +macro_rules! new_full { + ( + $config:expr, + $collating_for:expr, + $max_block_data_size:expr, + $authority_discovery_enabled:expr, + $slot_duration:expr, + $grandpa_pause:expr, + $runtime:ty, + $dispatch:ty + ) => {{ + use sc_network::Event; + use sc_client_api::ExecutorProvider; + use futures::stream::StreamExt; + + let is_collator = $collating_for.is_some(); + let role = $config.role.clone(); + let is_authority = role.is_authority() && !is_collator; + let force_authoring = $config.force_authoring; + let max_block_data_size = $max_block_data_size; + let db_path = match $config.database.path() { + Some(path) => std::path::PathBuf::from(path), + None => return Err("Starting a Polkadot service with a custom database isn't supported".to_string().into()), + }; + let disable_grandpa = $config.disable_grandpa; + let name = $config.network.node_name.clone(); + let authority_discovery_enabled = $authority_discovery_enabled; + let slot_duration = $slot_duration; + + let (builder, mut import_setup, inherent_data_providers) = new_full_start!($config, $runtime, $dispatch); + + let backend = builder.backend().clone(); + + let service = builder + .with_finality_proof_provider(|client, backend| { + let provider = client as Arc>; + Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _) + })? + .build()?; + + let (block_import, link_half, babe_link) = import_setup.take() + .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); + + let client = service.client(); + let known_oracle = client.clone(); + + let mut handles = FullNodeHandles::default(); + let select_chain = if let Some(select_chain) = service.select_chain() { + select_chain + } else { + info!("The node cannot start as an authority because it can't select chain."); + return Ok((service, client, handles)); + }; + let gossip_validator_select_chain = select_chain.clone(); + + let is_known = move |block_hash: &Hash| { + use consensus_common::BlockStatus; + + match known_oracle.block_status(&BlockId::hash(*block_hash)) { + Err(_) | Ok(BlockStatus::Unknown) | Ok(BlockStatus::Queued) => None, + Ok(BlockStatus::KnownBad) => Some(Known::Bad), + Ok(BlockStatus::InChainWithState) | Ok(BlockStatus::InChainPruned) => { + match gossip_validator_select_chain.leaves() { + Err(_) => None, + Ok(leaves) => if leaves.contains(block_hash) { + Some(Known::Leaf) + } else { + Some(Known::Old) + }, + } + } + } + }; + + let polkadot_network_service = network_protocol::start( + service.network(), + network_protocol::Config { + collating_for: $collating_for, + }, + (is_known, client.clone()), + client.clone(), + service.spawn_task_handle(), + ).map_err(|e| format!("Could not spawn network worker: {:?}", e))?; + + let authority_handles = if is_collator || role.is_authority() { + let availability_store = { + use std::path::PathBuf; + + let mut path = PathBuf::from(db_path); + path.push("availability"); + + #[cfg(not(target_os = "unknown"))] + { + av_store::Store::new( + ::av_store::Config { + cache_size: None, + path, + }, + polkadot_network_service.clone(), + )? + } + + #[cfg(target_os = "unknown")] + av_store::Store::new_in_memory(gossip) + }; + + polkadot_network_service.register_availability_store(availability_store.clone()); + + let (validation_service_handle, validation_service) = consensus::ServiceBuilder { + client: client.clone(), + network: polkadot_network_service.clone(), + collators: polkadot_network_service.clone(), + spawner: service.spawn_task_handle(), + availability_store: availability_store.clone(), + select_chain: select_chain.clone(), + keystore: service.keystore(), + max_block_data_size, + }.build(); + + service.spawn_essential_task("validation-service", Box::pin(validation_service)); + + handles.validation_service_handle = Some(validation_service_handle.clone()); + + Some((validation_service_handle, availability_store)) + } else { + None + }; + + if role.is_authority() { + let (validation_service_handle, availability_store) = authority_handles + .clone() + .expect("Authority handles are set for authority nodes; qed"); + + let proposer = consensus::ProposerFactory::new( + client.clone(), + service.transaction_pool(), + validation_service_handle, + slot_duration, + backend, + ); + + let select_chain = service.select_chain().ok_or(ServiceError::SelectChainRequired)?; + let can_author_with = + consensus_common::CanAuthorWithNativeVersion::new(client.executor().clone()); + + let block_import = availability_store.block_import( + block_import, + client.clone(), + service.spawn_task_handle(), + service.keystore(), + )?; + + let babe_config = babe::BabeParams { + keystore: service.keystore(), + client: client.clone(), + select_chain, + block_import, + env: proposer, + sync_oracle: service.network(), + inherent_data_providers: inherent_data_providers.clone(), + force_authoring, + babe_link, + can_author_with, + }; + + let babe = babe::start_babe(babe_config)?; + service.spawn_essential_task("babe", babe); + } + + if matches!(role, Role::Authority{..} | Role::Sentry{..}) { + if authority_discovery_enabled { + let (sentries, authority_discovery_role) = match role { + Role::Authority { ref sentry_nodes } => ( + sentry_nodes.clone(), + authority_discovery::Role::Authority ( + service.keystore(), + ), + ), + Role::Sentry {..} => ( + vec![], + authority_discovery::Role::Sentry, + ), + _ => unreachable!("Due to outer matches! constraint; qed."), + }; + + let network = service.network(); + let network_event_stream = network.event_stream("authority-discovery"); + let dht_event_stream = network_event_stream.filter_map(|e| async move { match e { + Event::Dht(e) => Some(e), + _ => None, + }}).boxed(); + let authority_discovery = authority_discovery::AuthorityDiscovery::new( + service.client(), + network, + sentries, + dht_event_stream, + authority_discovery_role, + service.prometheus_registry(), + ); + + service.spawn_task("authority-discovery", authority_discovery); + } + } + + // if the node isn't actively participating in consensus then it doesn't + // need a keystore, regardless of which protocol we use below. + let keystore = if is_authority { + Some(service.keystore()) + } else { + None + }; + + let config = grandpa::Config { + // FIXME substrate#1578 make this available through chainspec + gossip_duration: Duration::from_millis(1000), + justification_period: 512, + name: Some(name), + observer_enabled: false, + keystore, + is_authority: role.is_network_authority(), + }; + + let enable_grandpa = !disable_grandpa; + if enable_grandpa { + // start the full GRANDPA voter + // NOTE: unlike in substrate we are currently running the full + // GRANDPA voter protocol for all full nodes (regardless of whether + // they're validators or not). at this point the full voter should + // provide better guarantees of block and vote data availability than + // the observer. + + // add a custom voting rule to temporarily stop voting for new blocks + // after the given pause block is finalized and restarting after the + // given delay. + let voting_rule = match $grandpa_pause { + Some((block, delay)) => { + info!("GRANDPA scheduled voting pause set for block #{} with a duration of {} blocks.", + block, + delay, + ); + + grandpa::VotingRulesBuilder::default() + .add(grandpa_support::PauseAfterBlockFor(block, delay)) + .build() + }, + None => + grandpa::VotingRulesBuilder::default() + .build(), + }; + + let grandpa_config = grandpa::GrandpaParams { + config, + link: link_half, + network: service.network(), + inherent_data_providers: inherent_data_providers.clone(), + telemetry_on_connect: Some(service.telemetry_on_connect_stream()), + voting_rule, + prometheus_registry: service.prometheus_registry(), + }; + + service.spawn_essential_task( + "grandpa-voter", + grandpa::run_grandpa_voter(grandpa_config)? + ); + } else { + grandpa::setup_disabled_grandpa( + client.clone(), + &inherent_data_providers, + service.network(), + )?; + } + + handles.polkadot_network = Some(polkadot_network_service); + (service, client, handles) + }} +} + +/// Builds a new service for a light client. +#[macro_export] +macro_rules! new_light { + ($config:expr, $runtime:ty, $dispatch:ty) => {{ + crate::set_prometheus_registry(&mut $config)?; + let inherent_data_providers = inherents::InherentDataProviders::new(); + + ServiceBuilder::new_light::($config)? + .with_select_chain(|_, backend| { + Ok(sc_consensus::LongestChain::new(backend.clone())) + })? + .with_transaction_pool(|config, client, fetcher, prometheus_registry| { + let fetcher = fetcher + .ok_or_else(|| "Trying to start light transaction pool without active fetcher")?; + let pool_api = sc_transaction_pool::LightChainApi::new(client.clone(), fetcher.clone()); + let pool = sc_transaction_pool::BasicPool::with_revalidation_type( + config, Arc::new(pool_api), prometheus_registry, sc_transaction_pool::RevalidationType::Light, + ); + Ok(pool) + })? + .with_import_queue_and_fprb(|_config, client, backend, fetcher, _select_chain, _| { + let fetch_checker = fetcher + .map(|fetcher| fetcher.checker().clone()) + .ok_or_else(|| "Trying to start light import queue without active fetch checker")?; + let grandpa_block_import = grandpa::light_block_import( + client.clone(), backend, &(client.clone() as Arc<_>), Arc::new(fetch_checker) + )?; + + let finality_proof_import = grandpa_block_import.clone(); + let finality_proof_request_builder = + finality_proof_import.create_finality_proof_request_builder(); + + let (babe_block_import, babe_link) = babe::block_import( + babe::Config::get_or_compute(&*client)?, + grandpa_block_import, + client.clone(), + )?; + + // FIXME: pruning task isn't started since light client doesn't do `AuthoritySetup`. + let import_queue = babe::import_queue( + babe_link, + babe_block_import, + None, + Some(Box::new(finality_proof_import)), + client, + inherent_data_providers.clone(), + )?; + + Ok((import_queue, finality_proof_request_builder)) + })? + .with_finality_proof_provider(|client, backend| { + let provider = client as Arc>; + Ok(Arc::new(grandpa::FinalityProofProvider::new(backend, provider)) as _) + })? + .with_rpc_extensions(|builder| + -> Result { + let fetcher = builder.fetcher() + .ok_or_else(|| "Trying to start node RPC without active fetcher")?; + let remote_blockchain = builder.remote_backend() + .ok_or_else(|| "Trying to start node RPC without active remote blockchain")?; + + Ok(polkadot_rpc::create_light(builder.client().clone(), remote_blockchain, fetcher, builder.pool())) + })? + .build() + }} +} + /// Builds a new object suitable for chain operations. pub fn new_chain_ops(mut config: Configuration) -> Result, ServiceError> @@ -227,7 +571,7 @@ where /// Create a new Polkadot service for a full node. #[cfg(feature = "full-node")] pub fn polkadot_new_full( - config: Configuration, + mut config: Configuration, collating_for: Option<(CollatorId, parachain::Id)>, max_block_data_size: Option, authority_discovery_enabled: bool, @@ -235,61 +579,69 @@ pub fn polkadot_new_full( grandpa_pause: Option<(u32, u32)>, ) -> Result<( - impl AbstractService< - Block = Block, - RuntimeApi = polkadot_runtime::RuntimeApi, - Backend = TFullBackend, - SelectChain = LongestChain, Block>, - CallExecutor = TFullCallExecutor, - >, + impl AbstractService, + Arc, + TFullCallExecutor, + polkadot_runtime::RuntimeApi + >>, FullNodeHandles, ), ServiceError> { - new_full( + let (service, client, handles) = new_full!( config, collating_for, max_block_data_size, authority_discovery_enabled, slot_duration, grandpa_pause, - ) + polkadot_runtime::RuntimeApi, + PolkadotExecutor + ); + + Ok((service, client, handles)) } /// Create a new Kusama service for a full node. #[cfg(feature = "full-node")] pub fn kusama_new_full( - config: Configuration, + mut config: Configuration, collating_for: Option<(CollatorId, parachain::Id)>, max_block_data_size: Option, authority_discovery_enabled: bool, slot_duration: u64, grandpa_pause: Option<(u32, u32)>, -) - -> Result<( - impl AbstractService< - Block = Block, - RuntimeApi = kusama_runtime::RuntimeApi, - Backend = TFullBackend, - SelectChain = LongestChain, Block>, - CallExecutor = TFullCallExecutor, +) -> Result<( + impl AbstractService, + Arc, + TFullCallExecutor, + kusama_runtime::RuntimeApi + > >, - FullNodeHandles, + FullNodeHandles ), ServiceError> { - new_full( + let (service, client, handles) = new_full!( config, collating_for, max_block_data_size, authority_discovery_enabled, slot_duration, grandpa_pause, - ) + kusama_runtime::RuntimeApi, + KusamaExecutor + ); + + Ok((service, client, handles)) } /// Create a new Kusama service for a full node. #[cfg(feature = "full-node")] pub fn westend_new_full( - config: Configuration, + mut config: Configuration, collating_for: Option<(CollatorId, parachain::Id)>, max_block_data_size: Option, authority_discovery_enabled: bool, @@ -297,24 +649,28 @@ pub fn westend_new_full( grandpa_pause: Option<(u32, u32)>, ) -> Result<( - impl AbstractService< - Block = Block, - RuntimeApi = westend_runtime::RuntimeApi, - Backend = TFullBackend, - SelectChain = LongestChain, Block>, - CallExecutor = TFullCallExecutor, - >, + impl AbstractService, + Arc, + TFullCallExecutor, + westend_runtime::RuntimeApi + >>, FullNodeHandles, ), ServiceError> { - new_full( + let (service, client, handles) = new_full!( config, collating_for, max_block_data_size, authority_discovery_enabled, slot_duration, grandpa_pause, - ) + westend_runtime::RuntimeApi, + KusamaExecutor + ); + + Ok((service, client, handles)) } /// Handles to other sub-services that full nodes instantiate, which consumers @@ -328,305 +684,9 @@ pub struct FullNodeHandles { pub validation_service_handle: Option, } -/// Builds a new service for a full client. -#[cfg(feature = "full-node")] -pub fn new_full( - mut config: Configuration, - collating_for: Option<(CollatorId, parachain::Id)>, - max_block_data_size: Option, - authority_discovery_enabled: bool, - slot_duration: u64, - grandpa_pause: Option<(u32, u32)>, -) - -> Result<( - impl AbstractService< - Block = Block, - RuntimeApi = Runtime, - Backend = TFullBackend, - SelectChain = LongestChain, Block>, - CallExecutor = TFullCallExecutor, - >, - FullNodeHandles, - ), ServiceError> - where - Runtime: ConstructRuntimeApi> + Send + Sync + 'static, - Runtime::RuntimeApi: - RuntimeApiCollection, Block>>, - Dispatch: NativeExecutionDispatch + 'static, - Extrinsic: RuntimeExtrinsic, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - >::StateBackend: sp_api::StateBackend, -{ - use sc_network::Event; - use sc_client_api::ExecutorProvider; - use futures::stream::StreamExt; - - let is_collator = collating_for.is_some(); - let role = config.role.clone(); - let is_authority = role.is_authority() && !is_collator; - let force_authoring = config.force_authoring; - let max_block_data_size = max_block_data_size; - let db_path = match config.database.path() { - Some(path) => std::path::PathBuf::from(path), - None => return Err("Starting a Polkadot service with a custom database isn't supported".to_string().into()), - }; - let disable_grandpa = config.disable_grandpa; - let name = config.network.node_name.clone(); - let authority_discovery_enabled = authority_discovery_enabled; - let slot_duration = slot_duration; - - let (builder, mut import_setup, inherent_data_providers) = new_full_start!(config, Runtime, Dispatch); - - let backend = builder.backend().clone(); - - let service = builder - .with_finality_proof_provider(|client, backend| { - let provider = client as Arc>; - Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _) - })? - .build()?; - - let (block_import, link_half, babe_link) = import_setup.take() - .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); - - let client = service.client(); - let known_oracle = client.clone(); - - let mut handles = FullNodeHandles::default(); - let select_chain = if let Some(select_chain) = service.select_chain() { - select_chain - } else { - info!("The node cannot start as an authority because it can't select chain."); - return Ok((service, handles)); - }; - let gossip_validator_select_chain = select_chain.clone(); - - let is_known = move |block_hash: &Hash| { - use consensus_common::BlockStatus; - - match known_oracle.block_status(&BlockId::hash(*block_hash)) { - Err(_) | Ok(BlockStatus::Unknown) | Ok(BlockStatus::Queued) => None, - Ok(BlockStatus::KnownBad) => Some(Known::Bad), - Ok(BlockStatus::InChainWithState) | Ok(BlockStatus::InChainPruned) => { - match gossip_validator_select_chain.leaves() { - Err(_) => None, - Ok(leaves) => if leaves.contains(block_hash) { - Some(Known::Leaf) - } else { - Some(Known::Old) - }, - } - } - } - }; - - let polkadot_network_service = network_protocol::start( - service.network(), - network_protocol::Config { - collating_for, - }, - (is_known, client.clone()), - client.clone(), - service.spawn_task_handle(), - ).map_err(|e| format!("Could not spawn network worker: {:?}", e))?; - - let authority_handles = if is_collator || role.is_authority() { - let availability_store = { - use std::path::PathBuf; - - let mut path = PathBuf::from(db_path); - path.push("availability"); - - #[cfg(not(target_os = "unknown"))] - { - av_store::Store::new( - ::av_store::Config { - cache_size: None, - path, - }, - polkadot_network_service.clone(), - )? - } - - #[cfg(target_os = "unknown")] - av_store::Store::new_in_memory(gossip) - }; - - polkadot_network_service.register_availability_store(availability_store.clone()); - - let (validation_service_handle, validation_service) = consensus::ServiceBuilder { - client: client.clone(), - network: polkadot_network_service.clone(), - collators: polkadot_network_service.clone(), - spawner: service.spawn_task_handle(), - availability_store: availability_store.clone(), - select_chain: select_chain.clone(), - keystore: service.keystore(), - max_block_data_size, - }.build(); - - service.spawn_essential_task("validation-service", Box::pin(validation_service)); - - handles.validation_service_handle = Some(validation_service_handle.clone()); - - Some((validation_service_handle, availability_store)) - } else { - None - }; - - if role.is_authority() { - let (validation_service_handle, availability_store) = authority_handles - .clone() - .expect("Authority handles are set for authority nodes; qed"); - - let proposer = consensus::ProposerFactory::new( - client.clone(), - service.transaction_pool(), - validation_service_handle, - slot_duration, - backend, - ); - - let select_chain = service.select_chain().ok_or(ServiceError::SelectChainRequired)?; - let can_author_with = - consensus_common::CanAuthorWithNativeVersion::new(client.executor().clone()); - - let block_import = availability_store.block_import( - block_import, - client.clone(), - service.spawn_task_handle(), - service.keystore(), - )?; - - let babe_config = babe::BabeParams { - keystore: service.keystore(), - client, - select_chain, - block_import, - env: proposer, - sync_oracle: service.network(), - inherent_data_providers: inherent_data_providers.clone(), - force_authoring, - babe_link, - can_author_with, - }; - - let babe = babe::start_babe(babe_config)?; - service.spawn_essential_task("babe", babe); - } - - if matches!(role, Role::Authority{..} | Role::Sentry{..}) { - if authority_discovery_enabled { - let (sentries, authority_discovery_role) = match role { - Role::Authority { ref sentry_nodes } => ( - sentry_nodes.clone(), - authority_discovery::Role::Authority ( - service.keystore(), - ), - ), - Role::Sentry {..} => ( - vec![], - authority_discovery::Role::Sentry, - ), - _ => unreachable!("Due to outer matches! constraint; qed."), - }; - - let network = service.network(); - let network_event_stream = network.event_stream("authority-discovery"); - let dht_event_stream = network_event_stream.filter_map(|e| async move { match e { - Event::Dht(e) => Some(e), - _ => None, - }}).boxed(); - let authority_discovery = authority_discovery::AuthorityDiscovery::new( - service.client(), - network, - sentries, - dht_event_stream, - authority_discovery_role, - service.prometheus_registry(), - ); - - service.spawn_task("authority-discovery", authority_discovery); - } - } - - // if the node isn't actively participating in consensus then it doesn't - // need a keystore, regardless of which protocol we use below. - let keystore = if is_authority { - Some(service.keystore()) - } else { - None - }; - - let config = grandpa::Config { - // FIXME substrate#1578 make this available through chainspec - gossip_duration: Duration::from_millis(1000), - justification_period: 512, - name: Some(name), - observer_enabled: false, - keystore, - is_authority: role.is_network_authority(), - }; - - let enable_grandpa = !disable_grandpa; - if enable_grandpa { - // start the full GRANDPA voter - // NOTE: unlike in substrate we are currently running the full - // GRANDPA voter protocol for all full nodes (regardless of whether - // they're validators or not). at this point the full voter should - // provide better guarantees of block and vote data availability than - // the observer. - - // add a custom voting rule to temporarily stop voting for new blocks - // after the given pause block is finalized and restarting after the - // given delay. - let voting_rule = match grandpa_pause { - Some((block, delay)) => { - info!("GRANDPA scheduled voting pause set for block #{} with a duration of {} blocks.", - block, - delay, - ); - - grandpa::VotingRulesBuilder::default() - .add(grandpa_support::PauseAfterBlockFor(block, delay)) - .build() - }, - None => - grandpa::VotingRulesBuilder::default() - .build(), - }; - - let grandpa_config = grandpa::GrandpaParams { - config, - link: link_half, - network: service.network(), - inherent_data_providers: inherent_data_providers.clone(), - telemetry_on_connect: Some(service.telemetry_on_connect_stream()), - voting_rule, - prometheus_registry: service.prometheus_registry(), - }; - - service.spawn_essential_task( - "grandpa-voter", - grandpa::run_grandpa_voter(grandpa_config)? - ); - } else { - grandpa::setup_disabled_grandpa( - service.client(), - &inherent_data_providers, - service.network(), - )?; - } - - handles.polkadot_network = Some(polkadot_network_service); - Ok((service, handles)) -} - /// Create a new Polkadot service for a light client. -pub fn polkadot_new_light( - config: Configuration, -) - -> Result Result< + impl AbstractService< Block = Block, RuntimeApi = polkadot_runtime::RuntimeApi, Backend = TLightBackend, @@ -634,14 +694,12 @@ pub fn polkadot_new_light( CallExecutor = TLightCallExecutor, >, ServiceError> { - new_light(config) + new_light!(config, polkadot_runtime::RuntimeApi, PolkadotExecutor) } /// Create a new Kusama service for a light client. -pub fn kusama_new_light( - config: Configuration, -) - -> Result Result< + impl AbstractService< Block = Block, RuntimeApi = kusama_runtime::RuntimeApi, Backend = TLightBackend, @@ -649,125 +707,19 @@ pub fn kusama_new_light( CallExecutor = TLightCallExecutor, >, ServiceError> { - new_light(config) + new_light!(config, kusama_runtime::RuntimeApi, KusamaExecutor) } /// Create a new Westend service for a light client. -pub fn westend_new_light( - config: Configuration, -) - -> Result Result< + impl AbstractService< Block = Block, RuntimeApi = westend_runtime::RuntimeApi, Backend = TLightBackend, SelectChain = LongestChain, Block>, - CallExecutor = TLightCallExecutor, - >, ServiceError> -{ - new_light(config) -} - -// We can't use service::TLightClient due to -// Rust bug: https://github.com/rust-lang/rust/issues/43580 -type TLocalLightClient = Client< - sc_client::light::backend::Backend, BlakeTwo256>, - sc_client::light::call_executor::GenesisCallExecutor< - sc_client::light::backend::Backend, BlakeTwo256>, - sc_client::LocalCallExecutor< - sc_client::light::backend::Backend< - sc_client_db::light::LightStorage, - BlakeTwo256 - >, - sc_executor::NativeExecutor - > - >, - Block, - Runtime ->; - -/// Builds a new service for a light client. -pub fn new_light( - mut config: Configuration, -) - -> Result, - SelectChain = LongestChain, Block>, - CallExecutor = TLightCallExecutor, - >, ServiceError> -where - Runtime: Send + Sync + 'static, - Runtime::RuntimeApi: RuntimeApiCollection< - Extrinsic, - StateBackend = sc_client_api::StateBackendFor, Block> - >, - Dispatch: NativeExecutionDispatch + 'static, - Extrinsic: RuntimeExtrinsic, - Runtime: sp_api::ConstructRuntimeApi< - Block, - TLocalLightClient, + CallExecutor = TLightCallExecutor >, + ServiceError> { - set_prometheus_registry(&mut config)?; - - let inherent_data_providers = InherentDataProviders::new(); - - ServiceBuilder::new_light::(config)? - .with_select_chain(|_, backend| { - Ok(LongestChain::new(backend.clone())) - })? - .with_transaction_pool(|config, client, fetcher, prometheus_registry| { - let fetcher = fetcher - .ok_or_else(|| "Trying to start light transaction pool without active fetcher")?; - let pool_api = sc_transaction_pool::LightChainApi::new(client.clone(), fetcher.clone()); - let pool = sc_transaction_pool::BasicPool::with_revalidation_type( - config, Arc::new(pool_api), prometheus_registry, sc_transaction_pool::RevalidationType::Light, - ); - Ok(pool) - })? - .with_import_queue_and_fprb(|_config, client, backend, fetcher, _select_chain, _| { - let fetch_checker = fetcher - .map(|fetcher| fetcher.checker().clone()) - .ok_or_else(|| "Trying to start light import queue without active fetch checker")?; - let grandpa_block_import = grandpa::light_block_import( - client.clone(), backend, &(client.clone() as Arc<_>), Arc::new(fetch_checker) - )?; - - let finality_proof_import = grandpa_block_import.clone(); - let finality_proof_request_builder = - finality_proof_import.create_finality_proof_request_builder(); - - let (babe_block_import, babe_link) = babe::block_import( - babe::Config::get_or_compute(&*client)?, - grandpa_block_import, - client.clone(), - )?; - - // FIXME: pruning task isn't started since light client doesn't do `AuthoritySetup`. - let import_queue = babe::import_queue( - babe_link, - babe_block_import, - None, - Some(Box::new(finality_proof_import)), - client, - inherent_data_providers.clone(), - )?; - - Ok((import_queue, finality_proof_request_builder)) - })? - .with_finality_proof_provider(|client, backend| { - let provider = client as Arc>; - Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _) - })? - .with_rpc_extensions(|builder| - -> Result { - let fetcher = builder.fetcher() - .ok_or_else(|| "Trying to start node RPC without active fetcher")?; - let remote_blockchain = builder.remote_backend() - .ok_or_else(|| "Trying to start node RPC without active remote blockchain")?; - - Ok(polkadot_rpc::create_light(builder.client().clone(), remote_blockchain, fetcher, builder.pool())) - })? - .build() + new_light!(config, westend_runtime::RuntimeApi, KusamaExecutor) }