git.delta.rocks / unique-network / refs/commits / 55625a7f9472

difftreelog

Stable build: 2.0.0-alpha.6, no smart contracts and last changes removed

Greg Zaitsev2020-07-08parent: #e133193.patch.diff
in: master

13 files changed

modified.dockerignorediffbeforeafterboth
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,2 +1,6 @@
+.git/
+.github/
+doc/
 target/
-chain-data/
\ No newline at end of file
+chain-data/
+smart_contract/
\ No newline at end of file
modifiedCargo.lockdiffbeforeafterboth
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -906,16 +906,16 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4f2fc91a6a976ce87b105722d8d9cdc44d4cb03ad24493d34cbfb64bbaacb7ee"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "linregress",
  "parity-scale-codec",
  "paste",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-io",
+ "sp-runtime",
+ "sp-runtime-interface",
+ "sp-std",
 ]
 
 [[package]]
@@ -924,23 +924,12 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2941cd59682f596645d54b0e84c02e98f9be53a346841c720ead60cdbadb3463"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "parity-scale-codec",
  "serde",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "frame-metadata"
-version = "11.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "parity-scale-codec",
- "serde",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -951,32 +940,8 @@
 dependencies = [
  "parity-scale-codec",
  "serde",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "frame-support"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "bitmask",
- "frame-metadata 11.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "frame-support-procedural 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "impl-trait-for-tuples",
- "log",
- "once_cell",
- "parity-scale-codec",
- "paste",
- "serde",
- "sp-arithmetic 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-inherents 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-io 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-runtime 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-state-machine 0.8.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "tracing",
+ "sp-core",
+ "sp-std",
 ]
 
 [[package]]
@@ -986,33 +951,22 @@
 checksum = "a4058dce75ae1d45b469a8cbbe0c9dc3083e5546936b60e4647e73584e0f7ba7"
 dependencies = [
  "bitmask",
- "frame-metadata 11.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-support-procedural 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-metadata",
+ "frame-support-procedural",
  "impl-trait-for-tuples",
  "log",
  "once_cell",
  "parity-scale-codec",
  "paste",
  "serde",
- "sp-arithmetic 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-arithmetic",
+ "sp-core",
+ "sp-inherents",
+ "sp-io",
+ "sp-runtime",
+ "sp-state-machine",
+ "sp-std",
  "tracing",
-]
-
-[[package]]
-name = "frame-support-procedural"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "frame-support-procedural-tools 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "proc-macro2",
- "quote 1.0.3",
- "syn 1.0.17",
 ]
 
 [[package]]
@@ -1021,19 +975,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eefa7eb42406f732f87f8331aaaa787a65abe0f5f681a59fac1737ba4e81d89e"
 dependencies = [
- "frame-support-procedural-tools 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "proc-macro2",
- "quote 1.0.3",
- "syn 1.0.17",
-]
-
-[[package]]
-name = "frame-support-procedural-tools"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "frame-support-procedural-tools-derive 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "proc-macro-crate",
+ "frame-support-procedural-tools",
  "proc-macro2",
  "quote 1.0.3",
  "syn 1.0.17",
@@ -1045,18 +987,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0d0fce760be3b164dd44ba5826f6a504c485020f6813604d4c73b42b50797d71"
 dependencies = [
- "frame-support-procedural-tools-derive 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support-procedural-tools-derive",
  "proc-macro-crate",
- "proc-macro2",
- "quote 1.0.3",
- "syn 1.0.17",
-]
-
-[[package]]
-name = "frame-support-procedural-tools-derive"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
  "proc-macro2",
  "quote 1.0.3",
  "syn 1.0.17",
@@ -1076,34 +1008,18 @@
 [[package]]
 name = "frame-system"
 version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "frame-support 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "impl-trait-for-tuples",
- "parity-scale-codec",
- "serde",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-io 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-runtime 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-version 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
-]
-
-[[package]]
-name = "frame-system"
-version = "2.0.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f9c97e7168ca4cd7b2358ca30da4c5aba4a2b9b5eef45df67ca85b3dd59069a5"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
  "impl-trait-for-tuples",
  "parity-scale-codec",
  "serde",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
+ "sp-version",
 ]
 
 [[package]]
@@ -2614,10 +2530,10 @@
  "sc-transaction-pool",
  "sp-consensus",
  "sp-consensus-aura",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
  "sp-finality-grandpa",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-inherents",
+ "sp-runtime",
  "sp-transaction-pool",
  "structopt",
  "substrate-build-script-utils",
@@ -2628,13 +2544,10 @@
 version = "2.0.0-alpha.6"
 dependencies = [
  "frame-executive",
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "pallet-aura",
  "pallet-balances",
- "pallet-contracts",
- "pallet-contracts-primitives",
- "pallet-contracts-rpc-runtime-api",
  "pallet-grandpa",
  "pallet-nft",
  "pallet-randomness-collective-flip",
@@ -2643,18 +2556,18 @@
  "pallet-transaction-payment",
  "parity-scale-codec",
  "serde",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
  "sp-block-builder",
  "sp-consensus-aura",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-inherents",
+ "sp-io",
  "sp-offchain",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
  "sp-session",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-std",
  "sp-transaction-pool",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-version",
  "substrate-wasm-builder-runner",
 ]
 
@@ -2820,19 +2733,19 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9757d44df3ff0372ea313703736e69ba361b158a58b7c9677b54be11a777da81"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "pallet-session",
  "pallet-timestamp",
  "parity-scale-codec",
  "serde",
- "sp-application-crypto 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-application-crypto",
  "sp-consensus-aura",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-inherents",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
  "sp-timestamp",
 ]
 
@@ -2843,55 +2756,13 @@
 checksum = "b9ef08001886d3747220630337f7afbb8f1d7cbfacaa3a8a13317e1cb3e8e366"
 dependencies = [
  "frame-benchmarking",
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "parity-scale-codec",
- "serde",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "pallet-contracts"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "frame-support 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "frame-system 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "pallet-contracts-primitives",
+ "frame-support",
+ "frame-system",
  "parity-scale-codec",
- "parity-wasm",
- "pwasm-utils",
  "serde",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-io 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-runtime 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-sandbox",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "wasmi-validation",
-]
-
-[[package]]
-name = "pallet-contracts-primitives"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "parity-scale-codec",
- "sp-runtime 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
-]
-
-[[package]]
-name = "pallet-contracts-rpc-runtime-api"
-version = "0.8.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "pallet-contracts-primitives",
- "parity-scale-codec",
- "sp-api 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-runtime 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -2900,15 +2771,15 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09d89d58fe723cc05bdfc5f237a51e275bf58dcafb493ad68211c27ecd8f1afd"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "impl-trait-for-tuples",
  "parity-scale-codec",
  "serde",
  "sp-finality-tracker",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-inherents",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -2917,30 +2788,30 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6ed9f0fe5149552a1f1f26f4ed8999d692e0e209c54314c4f28a9bd8a1a1161d"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "pallet-finality-tracker",
  "pallet-session",
  "parity-scale-codec",
  "serde",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
  "sp-finality-grandpa",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
  "sp-staking",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-std",
 ]
 
 [[package]]
 name = "pallet-nft"
 version = "2.0.0-alpha.6"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "parity-scale-codec",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -2949,12 +2820,12 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1139a9bf489b947a677574ee8ade27c7b710ce25a07f1630b80c20af8f682f91"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "parity-scale-codec",
  "safe-mix",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -2963,17 +2834,17 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4fdeb41738a79d3247b2a7fd9ce8ae5a7d9e92ca2de198e006f891240c8dcacc"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "impl-trait-for-tuples",
  "pallet-timestamp",
  "parity-scale-codec",
  "serde",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-io",
+ "sp-runtime",
  "sp-staking",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-trie 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-std",
+ "sp-trie",
 ]
 
 [[package]]
@@ -2982,13 +2853,13 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "70b15e01796c9d2791cbd9ae2d7c9b59c8eccc3682afbb1189f6ebe7b07f4d71"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "parity-scale-codec",
  "serde",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -2998,14 +2869,14 @@
 checksum = "4d9de9af5f5ed3377a6108eed436791bfe18bc3e4e2e416854d0074d31b1be00"
 dependencies = [
  "frame-benchmarking",
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "impl-trait-for-tuples",
  "parity-scale-codec",
  "serde",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-inherents",
+ "sp-runtime",
+ "sp-std",
  "sp-timestamp",
 ]
 
@@ -3015,12 +2886,12 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "54768f5959e0bef53218b91f289d6807c0786d93fb90a3c7e39ab7ff9f018f23"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "frame-system 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
+ "frame-system",
  "pallet-transaction-payment-rpc-runtime-api",
  "parity-scale-codec",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -3029,12 +2900,12 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7323ef565470b51bb79fc65d3c3a1bff0ecb317485acc66a64406309c25f1b77"
 dependencies = [
- "frame-support 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "frame-support",
  "parity-scale-codec",
  "serde",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -3468,17 +3339,6 @@
 version = "2.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e86d370532557ae7573551a1ec8235a0f8d6cb276c7c9e6aa490b511c447485"
-
-[[package]]
-name = "pwasm-utils"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192"
-dependencies = [
- "byteorder",
- "log",
- "parity-wasm",
-]
 
 [[package]]
 name = "quick-error"
@@ -3914,12 +3774,12 @@
  "sc-block-builder",
  "sc-client-api",
  "sc-telemetry",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
  "sp-blockchain",
  "sp-consensus",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-inherents",
+ "sp-runtime",
  "sp-transaction-pool",
  "tokio-executor 0.2.0-alpha.6",
 ]
@@ -3932,13 +3792,13 @@
 dependencies = [
  "parity-scale-codec",
  "sc-client-api",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
  "sp-block-builder",
  "sp-blockchain",
  "sp-consensus",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-runtime",
+ "sp-state-machine",
 ]
 
 [[package]]
@@ -3954,8 +3814,8 @@
  "serde",
  "serde_json",
  "sp-chain-spec",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-runtime",
 ]
 
 [[package]]
@@ -4000,13 +3860,13 @@
  "sc-tracing",
  "serde_json",
  "sp-blockchain",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
  "sp-keyring",
- "sp-panic-handler 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-panic-handler",
+ "sp-runtime",
+ "sp-state-machine",
  "sp-utils",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-version",
  "structopt",
  "substrate-prometheus-endpoint",
  "time",
@@ -4032,19 +3892,19 @@
  "sc-client-api",
  "sc-executor",
  "sc-telemetry",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
  "sp-blockchain",
  "sp-consensus",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-externalities 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-externalities",
+ "sp-inherents",
  "sp-keyring",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-trie 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
+ "sp-state-machine",
+ "sp-std",
+ "sp-trie",
  "sp-utils",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-version",
  "substrate-prometheus-endpoint",
  "tracing",
 ]
@@ -4067,21 +3927,21 @@
  "parking_lot 0.10.2",
  "sc-executor",
  "sc-telemetry",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
  "sp-blockchain",
  "sp-consensus",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-externalities 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-externalities",
+ "sp-inherents",
  "sp-keyring",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-storage 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
+ "sp-state-machine",
+ "sp-std",
+ "sp-storage",
  "sp-transaction-pool",
- "sp-trie 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-trie",
  "sp-utils",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-version",
 ]
 
 [[package]]
@@ -4105,10 +3965,10 @@
  "sc-state-db",
  "sp-blockchain",
  "sp-consensus",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-trie 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-runtime",
+ "sp-state-machine",
+ "sp-trie",
  "substrate-prometheus-endpoint",
 ]
 
@@ -4130,18 +3990,18 @@
  "sc-consensus-slots",
  "sc-keystore",
  "sc-telemetry",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-application-crypto 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-application-crypto",
  "sp-block-builder",
  "sp-blockchain",
  "sp-consensus",
  "sp-consensus-aura",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-inherents",
+ "sp-io",
+ "sp-runtime",
  "sp-timestamp",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-version",
 ]
 
 [[package]]
@@ -4157,13 +4017,13 @@
  "parking_lot 0.10.2",
  "sc-client-api",
  "sc-telemetry",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
  "sp-blockchain",
  "sp-consensus",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-inherents",
+ "sp-runtime",
+ "sp-state-machine",
 ]
 
 [[package]]
@@ -4181,15 +4041,15 @@
  "parking_lot 0.10.2",
  "sc-executor-common",
  "sc-executor-wasmi",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-externalities 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-panic-handler 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-externalities",
+ "sp-io",
+ "sp-panic-handler",
+ "sp-runtime-interface",
  "sp-serializer",
- "sp-trie 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-wasm-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-trie",
+ "sp-version",
+ "sp-wasm-interface",
  "wasmi",
 ]
 
@@ -4204,10 +4064,10 @@
  "parity-scale-codec",
  "parity-wasm",
  "sp-allocator",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-runtime-interface",
  "sp-serializer",
- "sp-wasm-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-wasm-interface",
  "wasmi",
 ]
 
@@ -4221,9 +4081,9 @@
  "parity-scale-codec",
  "sc-executor-common",
  "sp-allocator",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-wasm-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-runtime-interface",
+ "sp-wasm-interface",
  "wasmi",
 ]
 
@@ -4251,15 +4111,15 @@
  "sc-network-gossip",
  "sc-telemetry",
  "serde_json",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-arithmetic 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-arithmetic",
  "sp-blockchain",
  "sp-consensus",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
  "sp-finality-grandpa",
  "sp-finality-tracker",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-inherents",
+ "sp-runtime",
  "sp-utils",
  "substrate-prometheus-endpoint",
 ]
@@ -4278,7 +4138,7 @@
  "sc-network",
  "sc-service",
  "sp-blockchain",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
  "wasm-timer",
 ]
 
@@ -4293,8 +4153,8 @@
  "parking_lot 0.10.2",
  "rand 0.7.3",
  "serde_json",
- "sp-application-crypto 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-application-crypto",
+ "sp-core",
  "subtle 2.2.2",
 ]
 
@@ -4336,12 +4196,12 @@
  "slog",
  "slog_derive",
  "smallvec 0.6.13",
- "sp-arithmetic 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-arithmetic",
  "sp-blockchain",
  "sp-consensus",
  "sp-consensus-babe",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-runtime",
  "sp-utils",
  "substrate-prometheus-endpoint",
  "thiserror",
@@ -4363,7 +4223,7 @@
  "log",
  "lru",
  "sc-network",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
  "sp-utils",
  "wasm-timer",
 ]
@@ -4388,10 +4248,10 @@
  "sc-client-api",
  "sc-keystore",
  "sc-network",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-core",
  "sp-offchain",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
  "sp-utils",
  "threadpool",
 ]
@@ -4430,18 +4290,18 @@
  "sc-keystore",
  "sc-rpc-api",
  "serde_json",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
  "sp-blockchain",
  "sp-chain-spec",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
  "sp-offchain",
  "sp-rpc",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
  "sp-session",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-state-machine",
  "sp-transaction-pool",
  "sp-utils",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-version",
 ]
 
 [[package]]
@@ -4462,11 +4322,11 @@
  "serde",
  "serde_json",
  "sp-chain-spec",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
  "sp-rpc",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
  "sp-transaction-pool",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-version",
 ]
 
 [[package]]
@@ -4482,7 +4342,7 @@
  "log",
  "serde",
  "serde_json",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
 ]
 
 [[package]]
@@ -4521,13 +4381,13 @@
  "serde",
  "serde_json",
  "slog",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-application-crypto 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-application-crypto",
  "sp-blockchain",
  "sp-consensus",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
  "sp-session",
  "sp-transaction-pool",
  "sp-utils",
@@ -4549,7 +4409,7 @@
  "parity-util-mem-derive",
  "parking_lot 0.10.2",
  "sc-client-api",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
 ]
 
 [[package]]
@@ -4605,8 +4465,8 @@
  "parking_lot 0.10.2",
  "serde",
  "sp-blockchain",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-runtime",
  "sp-transaction-pool",
  "sp-utils",
  "wasm-timer",
@@ -4628,10 +4488,10 @@
  "parking_lot 0.10.2",
  "sc-client-api",
  "sc-transaction-graph",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
  "sp-blockchain",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-runtime",
  "sp-transaction-pool",
  "sp-utils",
  "wasm-timer",
@@ -4936,24 +4796,9 @@
 dependencies = [
  "derive_more",
  "log",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-wasm-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-api"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "hash-db",
- "parity-scale-codec",
- "sp-api-proc-macro 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-runtime 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-state-machine 0.8.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-version 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
+ "sp-core",
+ "sp-std",
+ "sp-wasm-interface",
 ]
 
 [[package]]
@@ -4964,24 +4809,12 @@
 dependencies = [
  "hash-db",
  "parity-scale-codec",
- "sp-api-proc-macro 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-api-proc-macro"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "blake2-rfc",
- "proc-macro-crate",
- "proc-macro2",
- "quote 1.0.3",
- "syn 1.0.17",
+ "sp-api-proc-macro",
+ "sp-core",
+ "sp-runtime",
+ "sp-state-machine",
+ "sp-std",
+ "sp-version",
 ]
 
 [[package]]
@@ -4995,18 +4828,6 @@
  "proc-macro2",
  "quote 1.0.3",
  "syn 1.0.17",
-]
-
-[[package]]
-name = "sp-application-crypto"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "parity-scale-codec",
- "serde",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-io 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
 ]
 
 [[package]]
@@ -5017,23 +4838,9 @@
 dependencies = [
  "parity-scale-codec",
  "serde",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-arithmetic"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "integer-sqrt",
- "num-traits 0.2.11",
- "parity-scale-codec",
- "primitive-types",
- "serde",
- "sp-debug-derive 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
+ "sp-core",
+ "sp-io",
+ "sp-std",
 ]
 
 [[package]]
@@ -5047,8 +4854,8 @@
  "parity-scale-codec",
  "primitive-types",
  "serde",
- "sp-debug-derive 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-debug-derive",
+ "sp-std",
 ]
 
 [[package]]
@@ -5058,10 +4865,10 @@
 checksum = "70049c389c66c4c9207149e2579ce6d752788dee8c596fbda76059f2ddde968f"
 dependencies = [
  "parity-scale-codec",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-inherents",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -5077,8 +4884,8 @@
  "parking_lot 0.10.2",
  "sp-block-builder",
  "sp-consensus",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-runtime",
+ "sp-state-machine",
 ]
 
 [[package]]
@@ -5106,13 +4913,13 @@
  "parity-scale-codec",
  "parking_lot 0.10.2",
  "serde",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-inherents",
+ "sp-runtime",
+ "sp-state-machine",
+ "sp-std",
  "sp-utils",
- "sp-version 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-version",
 ]
 
 [[package]]
@@ -5122,11 +4929,11 @@
 checksum = "0a5ffbc4aca29fe7a0f0c419445e34758210dba6418eeb101d60c1e15b27797a"
 dependencies = [
  "parity-scale-codec",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-application-crypto 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-application-crypto",
+ "sp-inherents",
+ "sp-runtime",
+ "sp-std",
  "sp-timestamp",
 ]
 
@@ -5137,13 +4944,13 @@
 checksum = "ac6108fbecddd95ce8151f09e8ecb0941b3eddcfeefb4c996f27a8a8b4827abd"
 dependencies = [
  "parity-scale-codec",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-application-crypto 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-application-crypto",
  "sp-consensus",
  "sp-consensus-vrf",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-inherents",
+ "sp-runtime",
+ "sp-std",
  "sp-timestamp",
 ]
 
@@ -5152,52 +4959,12 @@
 version = "0.8.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6ba3eef8ab960eb88307f1c4eda1c36dfd95dc933bd6a277d2e26a503a6e5a71"
-dependencies = [
- "parity-scale-codec",
- "schnorrkel",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-core"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
 dependencies = [
- "base58",
- "blake2-rfc",
- "byteorder",
- "ed25519-dalek",
- "futures 0.3.4",
- "hash-db",
- "hash256-std-hasher",
- "hex",
- "impl-serde 0.3.0",
- "lazy_static",
- "libsecp256k1",
- "log",
- "num-traits 0.2.11",
  "parity-scale-codec",
- "parity-util-mem",
- "parking_lot 0.10.2",
- "primitive-types",
- "rand 0.7.3",
- "regex",
  "schnorrkel",
- "serde",
- "sha2",
- "sp-debug-derive 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-externalities 0.8.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-runtime-interface 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-storage 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "substrate-bip39",
- "tiny-bip39",
- "tiny-keccak",
- "twox-hash",
- "wasmi",
- "zeroize",
+ "sp-core",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -5228,11 +4995,11 @@
  "schnorrkel",
  "serde",
  "sha2",
- "sp-debug-derive 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-externalities 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-storage 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-debug-derive",
+ "sp-externalities",
+ "sp-runtime-interface",
+ "sp-std",
+ "sp-storage",
  "substrate-bip39",
  "tiny-bip39",
  "tiny-keccak",
@@ -5244,16 +5011,6 @@
 [[package]]
 name = "sp-debug-derive"
 version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "proc-macro2",
- "quote 1.0.3",
- "syn 1.0.17",
-]
-
-[[package]]
-name = "sp-debug-derive"
-version = "2.0.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "df968a922a9d3b3f65d37e91e30904876efce88d017d4448c4babc990a738134"
 dependencies = [
@@ -5265,22 +5022,12 @@
 [[package]]
 name = "sp-externalities"
 version = "0.8.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "environmental",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-storage 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
-]
-
-[[package]]
-name = "sp-externalities"
-version = "0.8.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b06b8ac80a03205205426ae9ef3200133a8ffab4f4f0eeecd3b858034f9e5b02"
 dependencies = [
  "environmental",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-storage 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-std",
+ "sp-storage",
 ]
 
 [[package]]
@@ -5291,10 +5038,10 @@
 dependencies = [
  "parity-scale-codec",
  "serde",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-application-crypto 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-application-crypto",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -5304,20 +5051,8 @@
 checksum = "a5f718fb1e75fd137b01b539a200cf5e3cd1e0f1d21dc55a03341d7e25c81624"
 dependencies = [
  "parity-scale-codec",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-inherents"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "derive_more",
- "parity-scale-codec",
- "parking_lot 0.10.2",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
+ "sp-inherents",
+ "sp-std",
 ]
 
 [[package]]
@@ -5329,26 +5064,8 @@
  "derive_more",
  "parity-scale-codec",
  "parking_lot 0.10.2",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-io"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "hash-db",
- "libsecp256k1",
- "log",
- "parity-scale-codec",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-externalities 0.8.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-runtime-interface 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-state-machine 0.8.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-trie 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-wasm-interface 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
+ "sp-core",
+ "sp-std",
 ]
 
 [[package]]
@@ -5361,13 +5078,13 @@
  "libsecp256k1",
  "log",
  "parity-scale-codec",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-externalities 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-state-machine 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-trie 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-wasm-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-externalities",
+ "sp-runtime-interface",
+ "sp-state-machine",
+ "sp-std",
+ "sp-trie",
+ "sp-wasm-interface",
 ]
 
 [[package]]
@@ -5377,8 +5094,8 @@
 checksum = "9f71e65eb13d8a4d320d3785558ac8fc12f8b2bdbfc5268c0e8a5a143d68686e"
 dependencies = [
  "lazy_static",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-runtime",
  "strum",
 ]
 
@@ -5388,17 +5105,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6dfc02ea51f7abe7e8999658a8a41693426f14e66cff6cc5af989888289ad0fc"
 dependencies = [
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-panic-handler"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "backtrace",
- "log",
+ "sp-api",
+ "sp-runtime",
 ]
 
 [[package]]
@@ -5418,28 +5126,7 @@
 checksum = "9d29a58ef51317f96eec408b40c604ccfe8c7c3b9ecc2636e2a9c84a79fae53a"
 dependencies = [
  "serde",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-runtime"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "hash256-std-hasher",
- "impl-trait-for-tuples",
- "log",
- "parity-scale-codec",
- "parity-util-mem",
- "paste",
- "rand 0.7.3",
- "serde",
- "sp-application-crypto 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-arithmetic 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-inherents 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-io 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
+ "sp-core",
 ]
 
 [[package]]
@@ -5456,26 +5143,12 @@
  "paste",
  "rand 0.7.3",
  "serde",
- "sp-application-crypto 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-arithmetic 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-io 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-runtime-interface"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "parity-scale-codec",
- "primitive-types",
- "sp-externalities 0.8.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-runtime-interface-proc-macro 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-wasm-interface 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "static_assertions",
+ "sp-application-crypto",
+ "sp-arithmetic",
+ "sp-core",
+ "sp-inherents",
+ "sp-io",
+ "sp-std",
 ]
 
 [[package]]
@@ -5486,28 +5159,16 @@
 dependencies = [
  "parity-scale-codec",
  "primitive-types",
- "sp-externalities 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime-interface-proc-macro 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-wasm-interface 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-externalities",
+ "sp-runtime-interface-proc-macro",
+ "sp-std",
+ "sp-wasm-interface",
  "static_assertions",
 ]
 
 [[package]]
 name = "sp-runtime-interface-proc-macro"
 version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "Inflector",
- "proc-macro-crate",
- "proc-macro2",
- "quote 1.0.3",
- "syn 1.0.17",
-]
-
-[[package]]
-name = "sp-runtime-interface-proc-macro"
-version = "2.0.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "609529717f6c9cdd5bb6329c4ca9ddb1d36f698bd1f5dd2bdf0e94c064d7cc5b"
 dependencies = [
@@ -5516,19 +5177,6 @@
  "proc-macro2",
  "quote 1.0.3",
  "syn 1.0.17",
-]
-
-[[package]]
-name = "sp-sandbox"
-version = "0.8.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "parity-scale-codec",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-io 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-wasm-interface 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "wasmi",
 ]
 
 [[package]]
@@ -5547,10 +5195,10 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6fca3ff8ddd14c5928536483d4b393bb795d55dcb5b576b1dceb3f5829216c76"
 dependencies = [
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-core",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -5560,27 +5208,8 @@
 checksum = "61d7105e78848b8a8f6af3539a0cf7d9627b78a8776f61f43769da6406937ea9"
 dependencies = [
  "parity-scale-codec",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-state-machine"
-version = "0.8.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "hash-db",
- "log",
- "num-traits 0.2.11",
- "parity-scale-codec",
- "parking_lot 0.10.2",
- "rand 0.7.3",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-externalities 0.8.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-panic-handler 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-trie 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "trie-db",
- "trie-root",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -5595,10 +5224,10 @@
  "parity-scale-codec",
  "parking_lot 0.10.2",
  "rand 0.7.3",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-externalities 0.8.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-panic-handler 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-trie 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-externalities",
+ "sp-panic-handler",
+ "sp-trie",
  "trie-db",
  "trie-root",
 ]
@@ -5606,24 +5235,8 @@
 [[package]]
 name = "sp-std"
 version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-
-[[package]]
-name = "sp-std"
-version = "2.0.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eca806523d5df8082c89da042e31292f0c8f6e6ad9c3cfc312edfffde6a08490"
-
-[[package]]
-name = "sp-storage"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "impl-serde 0.2.3",
- "serde",
- "sp-debug-derive 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
-]
 
 [[package]]
 name = "sp-storage"
@@ -5633,8 +5246,8 @@
 dependencies = [
  "impl-serde 0.2.3",
  "serde",
- "sp-debug-derive 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-debug-derive",
+ "sp-std",
 ]
 
 [[package]]
@@ -5645,10 +5258,10 @@
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-inherents 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-inherents",
+ "sp-runtime",
+ "sp-std",
  "wasm-timer",
 ]
 
@@ -5663,36 +5276,22 @@
  "log",
  "parity-scale-codec",
  "serde",
- "sp-api 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-api",
+ "sp-runtime",
  "sp-utils",
 ]
 
 [[package]]
 name = "sp-trie"
 version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "hash-db",
- "memory-db",
- "parity-scale-codec",
- "sp-core 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "trie-db",
- "trie-root",
-]
-
-[[package]]
-name = "sp-trie"
-version = "2.0.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4194817027eb92525e9279ec651160d709340d74b707f7648654c8eb2a626be3"
 dependencies = [
  "hash-db",
  "memory-db",
  "parity-scale-codec",
- "sp-core 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-core",
+ "sp-std",
  "trie-db",
  "trie-root",
 ]
@@ -5707,18 +5306,6 @@
  "futures-core",
  "lazy_static",
  "prometheus",
-]
-
-[[package]]
-name = "sp-version"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "impl-serde 0.2.3",
- "parity-scale-codec",
- "serde",
- "sp-runtime 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
 ]
 
 [[package]]
@@ -5730,19 +5317,8 @@
  "impl-serde 0.2.3",
  "parity-scale-codec",
  "serde",
- "sp-runtime 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "sp-wasm-interface"
-version = "2.0.0-alpha.6"
-source = "git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6#67f354f57e738fa575775f7fa0fb903e8972182b"
-dependencies = [
- "impl-trait-for-tuples",
- "parity-scale-codec",
- "sp-std 2.0.0-alpha.6 (git+https://github.com/paritytech/substrate.git?tag=v2.0.0-alpha.6)",
- "wasmi",
+ "sp-runtime",
+ "sp-std",
 ]
 
 [[package]]
@@ -5753,7 +5329,7 @@
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
- "sp-std 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sp-std",
  "wasmi",
 ]
 
modifiedDockerfilediffbeforeafterboth
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@
 FROM phusion/baseimage:0.10.2 as builder
 LABEL maintainer="gz@usetech.com"
 
-ENV WASM_TOOLCHAIN=nightly
+ENV WASM_TOOLCHAIN=nightly-2020-05-01
 
 ARG PROFILE=release
 
@@ -19,9 +19,10 @@
 
 RUN curl https://sh.rustup.rs -sSf | sh -s -- -y && \
 	export PATH="$PATH:$HOME/.cargo/bin" && \
+	rustup toolchain uninstall $(rustup toolchain list) && \
+	rustup default 1.44.0 && \
 	rustup toolchain install $WASM_TOOLCHAIN && \
 	rustup target add wasm32-unknown-unknown --toolchain $WASM_TOOLCHAIN && \
-	rustup default stable && \
     rustup target list --installed && \
     rustup show && \
 	cargo build "--$PROFILE" 
modifiedREADME.mddiffbeforeafterboth
--- a/README.md
+++ b/README.md
@@ -8,31 +8,39 @@
 
 ## Building
 
-Install Rust:
+Building NFT chain requires special versions of Rust and toolchain. We don't use the most recent versions of everything so that we can keep the builds stable.
+
+1. Install Rust:
 
 ```bash
 curl https://sh.rustup.rs -sSf | sh
-rustup default nightly
 sudo apt-get install libssl-dev pkg-config libclang-dev clang
+```
+
+2. Remove all installed toolchains with `rustup toolchain list` and `rustup toolchain uninstall <toolchain>`.
+
+3. Install Rust Toolchain 1.44.0:
 
+```bash
+rustup install 1.44.0
 ```
 
-Install required tools:
-
+4. Make it default (actual toochain version may be different, so do a `rustup toolchain list` first)
 ```bash
-./scripts/init.sh
+rustup toolchain list
+rustup default 1.44.0-x86_64-unknown-linux-gnu
 ```
 
-Build the WebAssembly binary:
+5. Install nightly toolchain and add wasm target for it:
 
 ```bash
-./scripts/build.sh
+rustup toolchain install nightly-2020-05-01
+rustup target add wasm32-unknown-unknown --toolchain nightly-2020-05-01-x86_64-unknown-linux-gnu
 ```
-
-Build all native code:
 
+6. Build:
 ```bash
-cargo build --release
+cargo build
 ```
 
 ## Run
modifiednode/Cargo.tomldiffbeforeafterboth
--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -1,7 +1,7 @@
 [package]
 authors = ['Anonymous']
 build = 'build.rs'
-description = 'Substrate Node template'
+description = 'Substrate Node nft'
 edition = '2018'
 homepage = 'https://substrate.dev'
 license = 'Unlicense'
@@ -71,7 +71,6 @@
 
 [dependencies.sp-transaction-pool]
 version = '2.0.0-alpha.6'
-
 [build-dependencies.substrate-build-script-utils]
 version = '2.0.0-alpha.6'
 
modifiednode/src/chain_spec.rsdiffbeforeafterboth
--- a/node/src/chain_spec.rs
+++ b/node/src/chain_spec.rs
@@ -8,8 +8,6 @@
 use sp_runtime::traits::{Verify, IdentifyAccount};
 use sc_service::ChainType;
 
-use nft_runtime::{ContractsConfig, ContractsSchedule};
-
 // Note this is the URL for the telemetry server
 //const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/";
 
@@ -113,12 +111,6 @@
 		balances: Some(BalancesConfig {
 			balances: endowed_accounts.iter().cloned().map(|k|(k, 1 << 60)).collect(),
 		}),
-		contracts: Some(ContractsConfig {
-            current_schedule: ContractsSchedule {
-              //      enable_println,
-                    ..Default::default()
-            },
-        }),
 		aura: Some(AuraConfig {
 			authorities: initial_authorities.iter().map(|x| (x.0.clone())).collect(),
 		}),
modifiednode/src/service.rsdiffbeforeafterboth
--- a/node/src/service.rs
+++ b/node/src/service.rs
@@ -30,7 +30,7 @@
 		let inherent_data_providers = sp_inherents::InherentDataProviders::new();
 
 		let builder = sc_service::ServiceBuilder::new_full::<
-		nft_runtime::opaque::Block, nft_runtime::RuntimeApi, crate::service::Executor
+			nft_runtime::opaque::Block, nft_runtime::RuntimeApi, crate::service::Executor
 		>($config)?
 			.with_select_chain(|_config, backend| {
 				Ok(sc_client::LongestChain::new(backend.clone()))
modifiedpallets/nft/Cargo.tomldiffbeforeafterboth
--- a/pallets/nft/Cargo.toml
+++ b/pallets/nft/Cargo.toml
@@ -1,11 +1,11 @@
 [package]
-authors = ['https://usetech.com/blockchain']
-description = 'NFT pallet'
+authors = ['Anonymous']
+description = 'FRAME pallet nft'
 edition = '2018'
-homepage = 'https://usetech.com/blockchain'
+homepage = 'https://substrate.dev'
 license = 'Unlicense'
 name = 'pallet-nft'
-repository = 'https://github.com/usetech-llc/nft_parachain/'
+repository = 'https://github.com/paritytech/substrate/'
 version = '2.0.0-alpha.6'
 
 [package.metadata.docs.rs]
@@ -32,7 +32,6 @@
 [dependencies.frame-system]
 default-features = false
 version = '2.0.0-alpha.6'
-
 [dev-dependencies.sp-core]
 default-features = false
 version = '2.0.0-alpha.6'
@@ -41,6 +40,8 @@
 default-features = false
 version = '2.0.0-alpha.6'
 
+
+
 [features]
 default = ['std']
 std = [
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -1,5 +1,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 
+use codec::{Decode, Encode};
 /// A FRAME pallet template with necessary imports
 
 /// Feel free to remove or edit this file as needed.
@@ -8,10 +9,7 @@
 
 /// For more guidance on Substrate FRAME, see the example pallet
 /// https://github.com/paritytech/substrate/blob/master/frame/example/src/lib.rs
-
-use codec::{Decode, Encode};
-
-use frame_support::{decl_module, decl_storage, decl_event, decl_error, dispatch::DispatchResult, ensure};
+use frame_support::{decl_event, decl_module, decl_storage, dispatch::DispatchResult, ensure};
 use frame_system::{self as system, ensure_signed};
 use sp_runtime::sp_std::prelude::Vec;
 
@@ -26,9 +24,6 @@
 pub struct CollectionType<AccountId> {
     pub owner: AccountId,
     pub next_item_id: u64,
-    pub name: Vec<u16>, // 64 include null escape char
-    pub description: Vec<u16>, // 256 include null escape char
-    pub token_prefix: Vec<u8>, // 16 include null escape char
     pub custom_data_size: u32,
 }
 
@@ -49,32 +44,35 @@
 
 /// The pallet's configuration trait.
 pub trait Trait: system::Trait {
-	// Add other types and constants required to configure this pallet.
+    // Add other types and constants required to configure this pallet.
 
-	/// The overarching event type.
-	type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
+    /// The overarching event type.
+    type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
 }
 
 // This pallet's storage items.
 decl_storage! {
-	// It is important to update your storage name so that your pallet's
-	// storage items are isolated from other pallets.
+    // It is important to update your storage name so that your pallet's
+    // storage items are isolated from other pallets.
     trait Store for Module<T: Trait> as Nft {
 
         /// Next available collection ID
         pub NextCollectionID get(fn next_collection_id): u64;
-        pub Collection get(fn collection): map hasher(identity) u64 => CollectionType<T::AccountId>;
-        pub AdminList get(fn admin_list_collection): map hasher(identity) u64 => Vec<T::AccountId>;
 
+        pub Collection get(collection): map hasher(identity) u64 => CollectionType<T::AccountId>;
+        //pub Collection get(collection): map hasher(identity) u64 => CollectionType<T::AccountId>;
+
+        pub AdminList get(admin_list_collection): map hasher(identity) u64 => Vec<T::AccountId>;
+
         /// Balance owner per collection map
-        pub Balance get(fn balance_count): map hasher(blake2_128_concat) (u64, T::AccountId) => u64;
-        pub ApprovedList get(fn approved): map hasher(blake2_128_concat) (u64, u64) => Vec<T::AccountId>;
+        pub Balance get(balance_count): map hasher(blake2_128_concat) (u64, T::AccountId) => u64;
+        pub ApprovedList get(approved): map hasher(blake2_128_concat) (u64, u64) => Vec<T::AccountId>;
 
-        pub ItemList get(fn item_id): map hasher(blake2_128_concat) (u64, u64) => NftItemType<T::AccountId>;
-        pub ItemListIndex get(fn item_index): map hasher(blake2_128_concat) u64 => u64;
+        pub ItemList get(item_id): map hasher(blake2_128_concat) (u64, u64) => NftItemType<T::AccountId>;
+        // pub ItemList get(item_id): map hasher(blake2_128_concat) (u64, u64) => NftItemType<T::AccountId>;
 
-        pub AddressTokens get(fn address_tokens): map hasher(blake2_128_concat) (u64, T::AccountId) => Vec<u64>;
-
+        pub ItemListIndex get(item_index): map hasher(blake2_128_concat) u64 => u64;
+        // pub ItemListIndex get(item_index): map hasher(blake2_128_concat) u64 => u64;
     }
 }
 
@@ -84,21 +82,9 @@
     where
         AccountId = <T as system::Trait>::AccountId,
     {
-        Created(u64, AccountId),
-        ItemCreated(u64),
-        ItemDestroyed(u64, u64),
+        Created(u32, AccountId),
     }
 );
-
-// The pallet's errors
-decl_error! {
-	pub enum Error for Module<T: Trait> {
-		/// Value was None
-		NoneValue,
-		/// Value reached maximum and cannot be incremented further
-		StorageOverflow,
-	}
-}
 
 // The pallet's dispatchable functions.
 decl_module! {
@@ -109,6 +95,10 @@
         // this is needed only if you are using events in your pallet
         fn deposit_event() = default;
 
+        // Initializing events
+        // this is needed only if you are using events in your module
+        // fn deposit_event<T>() = default;
+
         // Create collection of NFT with given parameters
         //
         // @param customDataSz size of custom data in each collection item
@@ -118,43 +108,19 @@
         //
         // @param customDataSz size of custom data in each collection item
         // returns collection ID
-        // TODO: later versions use "#[weight = 0]"
         #[weight = frame_support::weights::SimpleDispatchInfo::default()]
-        pub fn create_collection(   origin, 
-                                    collection_name: Vec<u16>, 
-                                    collection_description: Vec<u16>, 
-                                    token_prefix: Vec<u8>, 
-                                    custom_data_sz: u32) -> DispatchResult {
-
+        pub fn create_collection(origin, custom_data_sz: u32) -> DispatchResult {
             // Anyone can create a collection
             let who = ensure_signed(origin)?;
-
-            // check params 
-            let mut name = collection_name.to_vec();
-            name.push(0);
-            ensure!(name.len() <= 64, "Collection name can not be longer than 63 char");
-
-            let mut description = collection_description.to_vec();
-            description.push(0);
-            ensure!(name.len() <= 256, "Collection description can not be longer than 255 char");
-
-            let mut prefix = token_prefix.to_vec();
-            prefix.push(0);
-            ensure!(prefix.len() <= 16, "Token prefix can not be longer than 15 char");
 
             // Generate next collection ID
-            let next_id = NextCollectionID::get()
-                .checked_add(1)
-                .expect("collection id error");
+            let next_id = NextCollectionID::get();
 
             NextCollectionID::put(next_id);
 
             // Create new collection
             let new_collection = CollectionType {
-                owner: who.clone(),
-                name: name,
-                description: description,
-                token_prefix: prefix,
+                owner: who,
                 next_item_id: next_id,
                 custom_data_size: custom_data_sz,
             };
@@ -162,9 +128,6 @@
             // Add new collection to map
             <Collection<T>>::insert(next_id, new_collection);
 
-            // call event
-            Self::deposit_event(RawEvent::Created(next_id, who.clone()));
-
             Ok(())
         }
 
@@ -283,20 +246,11 @@
                 owner: sender,
                 data: properties,
             };
-
 
-            let current_index = <ItemListIndex>::get(collection_id)
-                .checked_add(1)
-                .expect("Item list index id error");
-
-            Self::add_token_index(collection_id, current_index, new_item.owner.clone())?;
-
+            let current_index = <ItemListIndex>::get(collection_id);
             <ItemListIndex>::insert(collection_id, current_index);
             <ItemList<T>>::insert((collection_id, current_index), new_item);
 
-            // call event
-            Self::deposit_event(RawEvent::ItemCreated(collection_id));
-
             Ok(())
         }
 
@@ -324,16 +278,11 @@
                 }
             }
             <ItemList<T>>::remove((collection_id, item_id));
-
-            Self::remove_token_index(collection_id, item_id, item.owner.clone())?;
 
             // update balance
             let new_balance = <Balance<T>>::get((collection_id, item.owner.clone())) - 1;
             <Balance<T>>::insert((collection_id, item.owner.clone()), new_balance);
 
-            // call event
-            Self::deposit_event(RawEvent::ItemDestroyed(collection_id, item_id));
-
             Ok(())
         }
 
@@ -370,13 +319,9 @@
             <Balance<T>>::insert((collection_id, new_owner.clone()), balance_new_owner);
 
             // change owner
-            let old_owner = item.owner.clone();
-            item.owner = new_owner.clone();
+            item.owner = new_owner;
             <ItemList<T>>::insert((collection_id, item_id), item);
 
-            // update index collection
-            Self::move_token_index(collection_id, item_id, old_owner, new_owner.clone())?;
-
             // reset approved list
             let itm: Vec<T::AccountId> = Vec::new();
             <ApprovedList<T>>::insert((collection_id, item_id), itm);
@@ -454,56 +399,5 @@
 
             Ok(())
         }
-    }
-}
-
-impl<T: Trait> Module<T> {
-    fn add_token_index(collection_id: u64, item_index: u64, owner: T::AccountId) -> DispatchResult {
-        
-        let list_exists = <AddressTokens<T>>::contains_key((collection_id, owner.clone()));
-        if list_exists {
-
-            let mut list = <AddressTokens<T>>::get((collection_id, owner.clone()));
-            let item_contains = list.contains(&item_index.clone());
-
-            if !item_contains {
-                list.push(item_index.clone());
-            }
-
-            <AddressTokens<T>>::insert((collection_id, owner.clone()), list);
-
-        } else {
-
-            let mut itm = Vec::new();
-            itm.push(item_index.clone());
-            <AddressTokens<T>>::insert((collection_id, owner), itm);
-        }
-
-        Ok(())
-    }
-
-    fn remove_token_index(collection_id: u64, item_index: u64, owner: T::AccountId) -> DispatchResult {
-        
-        let list_exists = <AddressTokens<T>>::contains_key((collection_id, owner.clone()));
-        if list_exists {
-
-            let mut list = <AddressTokens<T>>::get((collection_id, owner.clone()));
-            let item_contains = list.contains(&item_index.clone());
-
-            if item_contains {
-                list.retain(|&item| item != item_index);
-                <AddressTokens<T>>::insert((collection_id, owner), list);
-            }
-        }
-
-        Ok(())
-    }
-
-    fn move_token_index(collection_id: u64, item_index: u64, old_owner: T::AccountId, new_owner: T::AccountId) -> DispatchResult {
-        
-        Self::remove_token_index(collection_id, item_index, old_owner)?;
-        Self::add_token_index(collection_id, item_index, new_owner)?;
-        
-        Ok(())
     }
 }
modifiedpallets/nft/src/mock.rsdiffbeforeafterboth
--- a/pallets/nft/src/mock.rs
+++ b/pallets/nft/src/mock.rs
@@ -1,12 +1,7 @@
 // Creating mock runtime here
 
 use crate::{Module, Trait};
-use frame_support::{
-    impl_outer_origin, parameter_types, 
-    weights::{ 
-        Weight,
-        constants::{ BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND },
-    }};
+use frame_support::{impl_outer_origin, parameter_types, weights::Weight};
 use frame_system as system;
 use sp_core::H256;
 use sp_runtime::{
@@ -16,8 +11,7 @@
 };
 
 impl_outer_origin! {
-	pub enum Origin for Test {
-	}
+    pub enum Origin for Test {}
 }
 
 // For testing the pallet, we construct most of a mock runtime. This means
@@ -26,50 +20,42 @@
 #[derive(Clone, Eq, PartialEq)]
 pub struct Test;
 parameter_types! {
-	pub const BlockHashCount: u64 = 250;
-	pub const MaximumBlockWeight: Weight = 1024;
-	pub const MaximumBlockLength: u32 = 2 * 1024;
-	pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75);
-    pub const MaximumExtrinsicWeight: Weight = 10 * WEIGHT_PER_SECOND;
+    pub const BlockHashCount: u64 = 250;
+    pub const MaximumBlockWeight: Weight = 1024;
+    pub const MaximumBlockLength: u32 = 2 * 1024;
+    pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75);
 }
-
 impl system::Trait for Test {
-	type Origin = Origin;
-	type Call = ();
-	type Index = u64;
-	type BlockNumber = u64;
-    type BaseCallFilter = ();
-    type DbWeight = RocksDbWeight;
-    type BlockExecutionWeight = BlockExecutionWeight;
-	type Hash = H256;
-	type Hashing = BlakeTwo256;
-	type AccountId = u64;
-	type Lookup = IdentityLookup<Self::AccountId>;
-	type Header = Header;
-	type Event = ();
-	type BlockHashCount = BlockHashCount;
-    type ExtrinsicBaseWeight = ExtrinsicBaseWeight;
-	type MaximumBlockWeight = MaximumBlockWeight;
-	type MaximumBlockLength = MaximumBlockLength;
-	type AvailableBlockRatio = AvailableBlockRatio;
-	type Version = ();
-	type ModuleToIndex = ();
-	type AccountData = ();
-	type OnNewAccount = ();
-	type OnKilledAccount = ();
+    type Origin = Origin;
+    type Call = ();
+    type Index = u64;
+    type BlockNumber = u64;
+    type Hash = H256;
+    type Hashing = BlakeTwo256;
+    type AccountId = u64;
+    type Lookup = IdentityLookup<Self::AccountId>;
+    type Header = Header;
+    type Event = ();
+    type BlockHashCount = BlockHashCount;
+    type MaximumBlockWeight = MaximumBlockWeight;
+    type MaximumBlockLength = MaximumBlockLength;
+    type AvailableBlockRatio = AvailableBlockRatio;
+    type Version = ();
+    type ModuleToIndex = ();
+    type AccountData = ();
+    type OnNewAccount = ();
+    type OnKilledAccount = ();
 }
-
 impl Trait for Test {
-	type Event = ();
+    type Event = ();
 }
-
 pub type TemplateModule = Module<Test>;
 
 // This function basically just builds a genesis storage key/value store according to
 // our desired mockup.
 pub fn new_test_ext() -> sp_io::TestExternalities {
-	system::GenesisConfig::default()
-		.build_storage::<Test>()
-		.unwrap()
-		.into()
+    system::GenesisConfig::default()
+        .build_storage::<Test>()
+        .unwrap()
+        .into()
 }
modifiedpallets/nft/src/tests.rsdiffbeforeafterboth
--- a/pallets/nft/src/tests.rs
+++ b/pallets/nft/src/tests.rs
@@ -1,19 +1,13 @@
 // Tests to be written here
-
-use crate::{Error, mock::*};
-use frame_support::{assert_ok, assert_noop};
+use crate::mock::*;
+use frame_support::{assert_noop, assert_ok};
 
 #[test]
 fn create_collection_test() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
         assert_eq!(TemplateModule::collection(1).owner, 1);
     });
 }
@@ -21,15 +15,10 @@
 #[test]
 fn change_collection_owner() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
         assert_ok!(TemplateModule::change_collection_owner(
             origin1.clone(),
             1,
@@ -42,14 +31,10 @@
 #[test]
 fn destroy_collection() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
         let size = 1024;
         let origin1 = Origin::signed(1);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
         assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));
     });
 }
@@ -57,16 +42,11 @@
 #[test]
 fn create_item() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
         assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
         assert_ok!(TemplateModule::create_item(
             origin2.clone(),
@@ -82,16 +62,11 @@
 #[test]
 fn burn_item() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
         assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
         assert_ok!(TemplateModule::create_item(
             origin2.clone(),
@@ -116,19 +91,14 @@
 #[test]
 fn add_collection_admin() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
         let origin3 = Origin::signed(3);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin2.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin3.clone(), size));
 
         assert_eq!(TemplateModule::collection(1).owner, 1);
         assert_eq!(TemplateModule::collection(2).owner, 2);
@@ -146,19 +116,14 @@
 #[test]
 fn remove_collection_admin() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
         let origin3 = Origin::signed(3);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin2.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin3.clone(), size));
 
         assert_eq!(TemplateModule::collection(1).owner, 1);
         assert_eq!(TemplateModule::collection(2).owner, 2);
@@ -184,19 +149,14 @@
 #[test]
 fn balance_of() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
         let origin3 = Origin::signed(3);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin2.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin3.clone(), size));
 
         assert_eq!(TemplateModule::collection(1).owner, 1);
         assert_eq!(TemplateModule::collection(2).owner, 2);
@@ -221,19 +181,14 @@
 #[test]
 fn transfer() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
         let origin3 = Origin::signed(3);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin2.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin3.clone(), size));
 
         assert_eq!(TemplateModule::collection(1).owner, 1);
         assert_eq!(TemplateModule::collection(2).owner, 2);
@@ -259,19 +214,14 @@
 #[test]
 fn approve() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
         let origin3 = Origin::signed(3);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin2.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin3.clone(), size));
 
         assert_eq!(TemplateModule::collection(1).owner, 1);
         assert_eq!(TemplateModule::collection(2).owner, 2);
@@ -293,19 +243,14 @@
 #[test]
 fn get_approved() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
         let origin3 = Origin::signed(3);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin2.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin3.clone(), size));
 
         assert_eq!(TemplateModule::collection(1).owner, 1);
         assert_eq!(TemplateModule::collection(2).owner, 2);
@@ -327,19 +272,14 @@
 #[test]
 fn transfer_from() {
     new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
         let size = 1024;
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
         let origin3 = Origin::signed(3);
 
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin1.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin2.clone(), size));
+        assert_ok!(TemplateModule::create_collection(origin3.clone(), size));
 
         assert_eq!(TemplateModule::collection(1).owner, 1);
         assert_eq!(TemplateModule::collection(2).owner, 2);
@@ -357,55 +297,3 @@
         assert_ok!(TemplateModule::transfer_from(origin1.clone(), 1, 1, 2));
     });
 }
-
-#[test]
-fn index_list() {
-    new_test_ext().execute_with(|| {
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
-        let size = 1024;
-        let origin1 = Origin::signed(1);
-        let origin2 = Origin::signed(2);
-        let origin3 = Origin::signed(3);
-
-        assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-        assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));
-
-        assert_eq!(TemplateModule::collection(1).owner, 1);
-        assert_eq!(TemplateModule::collection(2).owner, 2);
-        assert_eq!(TemplateModule::collection(3).owner, 3);
-
-        // create items
-        assert_ok!(TemplateModule::create_item(
-            origin1.clone(),
-            1,
-            [1, 1, 1].to_vec()
-        ));
-
-        assert_ok!(TemplateModule::create_item(
-            origin1.clone(),
-            1,
-            [1, 1, 2].to_vec()
-        ));
-
-        assert_ok!(TemplateModule::create_item(
-            origin1.clone(),
-            1,
-            [1, 2, 3].to_vec()
-        ));
-
-        assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 3);
-
-        // burn one
-        assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 2));
-        assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 2);
-
-        // burn another one
-        assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 3));
-        assert_eq!(TemplateModule::address_tokens((1, 1))[0], 1);
-    });
-}
\ No newline at end of file
modifiedruntime/Cargo.tomldiffbeforeafterboth
--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -1,36 +1,3 @@
-[features]
-default = ['std']
-std = [
-    'aura/std',
-    'balances/std',
-    'codec/std',
-    'contracts/std',
-    'contracts-primitives/std',
-    'contracts-rpc-runtime-api/std',
-    'frame-executive/std',
-    'frame-support/std',
-    'grandpa/std',
-    'randomness-collective-flip/std',
-    'serde',
-    'sp-api/std',
-    'sp-block-builder/std',
-    'sp-consensus-aura/std',
-    'sp-core/std',
-    'sp-inherents/std',
-    'sp-io/std',
-    'sp-offchain/std',
-    'sp-runtime/std',
-    'sp-session/std',
-    'sp-std/std',
-    'sp-transaction-pool/std',
-    'sp-version/std',
-    'sudo/std',
-    'system/std',
-    'timestamp/std',
-    'transaction-payment/std',
-    'nft/std',
-]
-
 [dependencies.aura]
 default-features = false
 package = 'pallet-aura'
@@ -46,27 +13,6 @@
 features = ['derive']
 package = 'parity-scale-codec'
 version = '1.3.0'
-
-[dependencies.contracts]
-git = 'https://github.com/paritytech/substrate.git'
-default-features = false
-package = 'pallet-contracts'
-tag = 'v2.0.0-alpha.6'
-version = '2.0.0-alpha.6'
-
-[dependencies.contracts-primitives]
-git = 'https://github.com/paritytech/substrate.git'
-default-features = false
-package = 'pallet-contracts-primitives'
-tag = 'v2.0.0-alpha.6'
-version = '2.0.0-alpha.6'
-
-[dependencies.contracts-rpc-runtime-api]
-git = 'https://github.com/paritytech/substrate.git'
-default-features = false
-package = 'pallet-contracts-rpc-runtime-api'
-tag = 'v2.0.0-alpha.6'
-version = '0.8.0-alpha.6'
 
 [dependencies.frame-executive]
 default-features = false
@@ -165,18 +111,48 @@
 package = 'pallet-transaction-payment'
 version = '2.0.0-alpha.6'
 
+[build-dependencies.wasm-builder-runner]
+package = 'substrate-wasm-builder-runner'
+version = '1.0.5'
+
 [package]
-authors = ['UseTech']
+authors = ['Anonymous']
 edition = '2018'
-homepage = 'https://usetech.com/blockchain'
+homepage = 'https://substrate.dev'
 license = 'Unlicense'
 name = 'nft-runtime'
-repository = 'https://github.com/usetech-llc/nft_parachain/'
+repository = 'https://github.com/paritytech/substrate/'
 version = '2.0.0-alpha.6'
 
 [package.metadata.docs.rs]
 targets = ['x86_64-unknown-linux-gnu']
 
-[build-dependencies.wasm-builder-runner]
-package = 'substrate-wasm-builder-runner'
-version = '1.0.5'
+[features]
+default = ['std']
+std = [
+    'aura/std',
+    'balances/std',
+    'codec/std',
+    'frame-executive/std',
+    'frame-support/std',
+    'grandpa/std',
+    'randomness-collective-flip/std',
+    'serde',
+    'sp-api/std',
+    'sp-block-builder/std',
+    'sp-consensus-aura/std',
+    'sp-core/std',
+    'sp-inherents/std',
+    'sp-io/std',
+    'sp-offchain/std',
+    'sp-runtime/std',
+    'sp-session/std',
+    'sp-std/std',
+    'sp-transaction-pool/std',
+    'sp-version/std',
+    'sudo/std',
+    'system/std',
+    'timestamp/std',
+    'transaction-payment/std',
+    'nft/std',
+]
modifiedruntime/src/lib.rsdiffbeforeafterboth
before · runtime/src/lib.rs
1//! The Substrate Node Template runtime. This can be compiled with `#[no_std]`, ready for Wasm.23#![cfg_attr(not(feature = "std"), no_std)]4// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256.5#![recursion_limit="256"]67// Make the WASM binary available.8#[cfg(feature = "std")]9include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));1011use sp_std::prelude::*;12use sp_core::OpaqueMetadata;13use sp_runtime::{14	ApplyExtrinsicResult, generic, create_runtime_str, impl_opaque_keys, MultiSignature,15	transaction_validity::{TransactionValidity, TransactionSource},16};17use sp_runtime::traits::{18	BlakeTwo256, Block as BlockT, IdentityLookup, Verify, ConvertInto, IdentifyAccount19};20use sp_api::impl_runtime_apis;21use sp_consensus_aura::sr25519::AuthorityId as AuraId;22use grandpa::AuthorityList as GrandpaAuthorityList;23use grandpa::fg_primitives;24use sp_version::RuntimeVersion;25#[cfg(feature = "std")]26use sp_version::NativeVersion;27use contracts_rpc_runtime_api::ContractExecResult;2829// A few exports that help ease life for downstream crates.30#[cfg(any(feature = "std", test))]31pub use sp_runtime::BuildStorage;32pub use timestamp::Call as TimestampCall;33// pub use staking::Call as StakingCall;34pub use balances::Call as BalancesCall;35pub use sp_runtime::{Permill, Perbill};36pub use contracts::Schedule as ContractsSchedule;37pub use frame_support::{38    construct_runtime, parameter_types, traits::Randomness, weights::Weight, StorageValue,39};4041/// Importing a template pallet42pub use nft;4344/// An index to a block.45pub type BlockNumber = u32;4647/// Alias to 512-bit hash when used in the context of a transaction signature on the chain.48pub type Signature = MultiSignature;4950/// Some way of identifying an account on the chain. We intentionally make it equivalent51/// to the public key of our transaction signing scheme.52pub type AccountId = <<Signature as Verify>::Signer as IdentifyAccount>::AccountId;5354/// The type for looking up accounts. We don't expect more than 4 billion of them, but you55/// never know...56pub type AccountIndex = u32;5758/// Balance of an account.59pub type Balance = u128;6061/// Index of a transaction in the chain.62pub type Index = u32;6364/// A hash of some data used by the chain.65pub type Hash = sp_core::H256;6667/// Digest item type.68pub type DigestItem = generic::DigestItem<Hash>;6970pub const MILLICENTS: Balance = 1_000_000_000;71pub const CENTS: Balance = 1_000 * MILLICENTS;72pub const DOLLARS: Balance = 100 * CENTS;7374/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know75/// the specifics of the runtime. They can then be made to be agnostic over specific formats76/// of data like extrinsics, allowing for them to continue syncing the network through upgrades77/// to even the core data structures.78pub mod opaque {79	use super::*;8081	pub use sp_runtime::OpaqueExtrinsic as UncheckedExtrinsic;8283	/// Opaque block header type.84	pub type Header = generic::Header<BlockNumber, BlakeTwo256>;85	/// Opaque block type.86	pub type Block = generic::Block<Header, UncheckedExtrinsic>;87	/// Opaque block identifier type.88	pub type BlockId = generic::BlockId<Block>;8990	impl_opaque_keys! {91		pub struct SessionKeys {92			pub aura: Aura,93			pub grandpa: Grandpa,94		}95	}96}9798/// This runtime version.99pub const VERSION: RuntimeVersion = RuntimeVersion {100    spec_name: create_runtime_str!("nft"),101    impl_name: create_runtime_str!("nft"),102	authoring_version: 1,103	spec_version: 1,104	impl_version: 1,105	apis: RUNTIME_API_VERSIONS,106	transaction_version: 1,107};108109pub const MILLISECS_PER_BLOCK: u64 = 6000;110111pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK;112113// These time units are defined in number of blocks.114pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber);115pub const HOURS: BlockNumber = MINUTES * 60;116pub const DAYS: BlockNumber = HOURS * 24;117118/// The version information used to identify this runtime when compiled natively.119#[cfg(feature = "std")]120pub fn native_version() -> NativeVersion {121	NativeVersion {122		runtime_version: VERSION,123		can_author_with: Default::default(),124	}125}126127parameter_types! {128	pub const BlockHashCount: BlockNumber = 2400;129	/// We allow for 2 seconds of compute with a 6 second average block time.130	// pub const MaximumBlockWeight: Weight = 2 * WEIGHT_PER_SECOND;131    pub const MaximumBlockWeight: Weight = 1_000_000_000;132	pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75);133	/// Assume 10% of weight for average on_initialize calls.134	// pub MaximumExtrinsicWeight: Weight = AvailableBlockRatio::get()135	// 	.saturating_sub(Perbill::from_percent(10)) * MaximumBlockWeight::get();136	pub const MaximumBlockLength: u32 = 5 * 1024 * 1024;137	pub const Version: RuntimeVersion = VERSION;138}139140impl system::Trait for Runtime {141	/// The identifier used to distinguish between accounts.142	type AccountId = AccountId;143	/// The aggregated dispatch type that is available for extrinsics.144	type Call = Call;145	/// The lookup mechanism to get account ID from whatever is passed in dispatchers.146	type Lookup = IdentityLookup<AccountId>;147	/// The index type for storing how many extrinsics an account has signed.148	type Index = Index;149	/// The index type for blocks.150	type BlockNumber = BlockNumber;151	/// The type for hashing blocks and tries.152	type Hash = Hash;153	/// The hashing algorithm used.154	type Hashing = BlakeTwo256;155	/// The header type.156	type Header = generic::Header<BlockNumber, BlakeTwo256>;157	/// The ubiquitous event type.158	type Event = Event;159	/// The ubiquitous origin type.160	type Origin = Origin;161	/// Maximum number of block number to block hash mappings to keep (oldest pruned first).162	type BlockHashCount = BlockHashCount;163	/// Maximum weight of each block.164	type MaximumBlockWeight = MaximumBlockWeight;165	/// Maximum size of all encoded transactions (in bytes) that are allowed in one block.166	type MaximumBlockLength = MaximumBlockLength;167	/// Portion of the block weight that is available to all normal transactions.168	type AvailableBlockRatio = AvailableBlockRatio;169	/// Version of the runtime.170	type Version = Version;171	/// Converts a module to the index of the module in `construct_runtime!`.172	///173	/// This type is being generated by `construct_runtime!`.174	type ModuleToIndex = ModuleToIndex;175	/// What to do if a new account is created.176	type OnNewAccount = ();177	/// What to do if an account is fully reaped from the system.178	type OnKilledAccount = ();179	/// The data to be stored in an account.180	type AccountData = balances::AccountData<Balance>;181}182183impl aura::Trait for Runtime {184	type AuthorityId = AuraId;185}186187impl grandpa::Trait for Runtime {188	type Event = Event;189}190191parameter_types! {192	pub const MinimumPeriod: u64 = SLOT_DURATION / 2;193}194195impl timestamp::Trait for Runtime {196	/// A timestamp: milliseconds since the unix epoch.197	type Moment = u64;198	type OnTimestampSet = Aura;199	type MinimumPeriod = MinimumPeriod;200}201202impl contracts::Trait for Runtime {203    type Time = Timestamp;204    type Randomness = RandomnessCollectiveFlip;205    type Currency = Balances;206    type Event = Event;207    type DetermineContractAddress = contracts::SimpleAddressDeterminer<Runtime>;208    type TrieIdGenerator = contracts::TrieIdFromParentCounter<Runtime>;209    type RentPayment = ();210    type SignedClaimHandicap = contracts::DefaultSignedClaimHandicap;211    // type TombstoneDeposit = TombstoneDeposit;212    type StorageSizeOffset = contracts::DefaultStorageSizeOffset;213    // type RentByteFee = RentByteFee;214    // type RentDepositOffset = RentDepositOffset;215    // type SurchargeReward = SurchargeReward;216    type MaxDepth = contracts::DefaultMaxDepth;217    type MaxValueSize = contracts::DefaultMaxValueSize;218    // type WeightPrice = transaction_payment::Module<Self>;219}220221parameter_types! {222	pub const ExistentialDeposit: u128 = 500;223}224225impl balances::Trait for Runtime {226	/// The type for recording an account's balance.227	type Balance = Balance;228	/// The ubiquitous event type.229	type Event = Event;230	type DustRemoval = ();231	type ExistentialDeposit = ExistentialDeposit;232	type AccountStore = System;233}234235parameter_types! {236	pub const TransactionBaseFee: Balance = 0;237	pub const TransactionByteFee: Balance = 1;238}239240impl transaction_payment::Trait for Runtime {241	type Currency = balances::Module<Runtime>;242	type OnTransactionPayment = ();243	type TransactionBaseFee = TransactionBaseFee;244	type TransactionByteFee = TransactionByteFee;245	type WeightToFee = ConvertInto;246	type FeeMultiplierUpdate = ();247}248249impl sudo::Trait for Runtime {250	type Event = Event;251	type Call = Call;252}253254/// Used for the module template in `./template.rs`255impl nft::Trait for Runtime {256	type Event = Event;257}258259construct_runtime!(260	pub enum Runtime where261		Block = Block,262		NodeBlock = opaque::Block,263		UncheckedExtrinsic = UncheckedExtrinsic264	{265		System: system::{Module, Call, Config, Storage, Event<T>},266		RandomnessCollectiveFlip: randomness_collective_flip::{Module, Call, Storage},267		Contracts: contracts::{Module, Call, Config, Storage, Event<T>},268		Timestamp: timestamp::{Module, Call, Storage, Inherent},269		Aura: aura::{Module, Config<T>, Inherent(Timestamp)},270		Grandpa: grandpa::{Module, Call, Storage, Config, Event},271		Balances: balances::{Module, Call, Storage, Config<T>, Event<T>},272		TransactionPayment: transaction_payment::{Module, Storage},273		Sudo: sudo::{Module, Call, Config<T>, Storage, Event<T>},274		// Used for the module template in `./template.rs`275		Nft: nft::{Module, Call, Storage, Event<T>},276	}277);278279/// The address format for describing accounts.280pub type Address = AccountId;281/// Block header type as expected by this runtime.282pub type Header = generic::Header<BlockNumber, BlakeTwo256>;283/// Block type as expected by this runtime.284pub type Block = generic::Block<Header, UncheckedExtrinsic>;285/// A Block signed with a Justification286pub type SignedBlock = generic::SignedBlock<Block>;287/// BlockId type as expected by this runtime.288pub type BlockId = generic::BlockId<Block>;289/// The SignedExtension to the basic transaction logic.290pub type SignedExtra = (291	system::CheckVersion<Runtime>,292	system::CheckGenesis<Runtime>,293	system::CheckEra<Runtime>,294	system::CheckNonce<Runtime>,295	system::CheckWeight<Runtime>,296	transaction_payment::ChargeTransactionPayment<Runtime>297);298/// Unchecked extrinsic type as expected by this runtime.299pub type UncheckedExtrinsic = generic::UncheckedExtrinsic<Address, Call, Signature, SignedExtra>;300/// Extrinsic type that has already been checked.301pub type CheckedExtrinsic = generic::CheckedExtrinsic<AccountId, Call, SignedExtra>;302/// Executive: handles dispatch to the various modules.303pub type Executive = frame_executive::Executive<Runtime, Block, system::ChainContext<Runtime>, Runtime, AllModules>;304305impl_runtime_apis! {306	impl sp_api::Core<Block> for Runtime {307		fn version() -> RuntimeVersion {308			VERSION309		}310311		fn execute_block(block: Block) {312			Executive::execute_block(block)313		}314315		fn initialize_block(header: &<Block as BlockT>::Header) {316			Executive::initialize_block(header)317		}318	}319320	impl sp_api::Metadata<Block> for Runtime {321		fn metadata() -> OpaqueMetadata {322			Runtime::metadata().into()323		}324	}325326	impl sp_block_builder::BlockBuilder<Block> for Runtime {327		fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {328			Executive::apply_extrinsic(extrinsic)329		}330331		fn finalize_block() -> <Block as BlockT>::Header {332			Executive::finalize_block()333		}334335		fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<<Block as BlockT>::Extrinsic> {336			data.create_extrinsics()337		}338339		fn check_inherents(340			block: Block,341			data: sp_inherents::InherentData,342		) -> sp_inherents::CheckInherentsResult {343			data.check_extrinsics(&block)344		}345346		fn random_seed() -> <Block as BlockT>::Hash {347			RandomnessCollectiveFlip::random_seed()348		}349	}350351	impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {352		fn validate_transaction(353			source: TransactionSource,354			tx: <Block as BlockT>::Extrinsic,355		) -> TransactionValidity {356			Executive::validate_transaction(source, tx)357		}358	}359360	impl sp_offchain::OffchainWorkerApi<Block> for Runtime {361		fn offchain_worker(header: &<Block as BlockT>::Header) {362			Executive::offchain_worker(header)363		}364	}365366	impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {367		fn slot_duration() -> u64 {368			Aura::slot_duration()369		}370371		fn authorities() -> Vec<AuraId> {372			Aura::authorities()373		}374	}375376	impl sp_session::SessionKeys<Block> for Runtime {377		fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> {378			opaque::SessionKeys::generate(seed)379		}380381		fn decode_session_keys(382			encoded: Vec<u8>,383		) -> Option<Vec<(Vec<u8>, sp_core::crypto::KeyTypeId)>> {384			opaque::SessionKeys::decode_into_raw_public_keys(&encoded)385		}386	}387388	impl fg_primitives::GrandpaApi<Block> for Runtime {389		fn grandpa_authorities() -> GrandpaAuthorityList {390			Grandpa::grandpa_authorities()391		}392	}393394	impl contracts_rpc_runtime_api::ContractsApi<Block, AccountId, Balance, BlockNumber>395	for Runtime396	{397		fn call(398			origin: AccountId,399			dest: AccountId,400			value: Balance,401			gas_limit: u64,402			input_data: Vec<u8>,403		) -> ContractExecResult {404			let exec_result =405				Contracts::bare_call(origin, dest.into(), value, gas_limit, input_data);406			match exec_result {407				Ok(v) => ContractExecResult::Success {408					status: v.status,409					data: v.data,410				},411				Err(_) => ContractExecResult::Error,412			}413		}414415		fn get_storage(416			address: AccountId,417			key: [u8; 32],418		) -> contracts_primitives::GetStorageResult {419			Contracts::get_storage(address, key)420		}421422		fn rent_projection(423			address: AccountId,424		) -> contracts_primitives::RentProjectionResult<BlockNumber> {425			Contracts::rent_projection(address)426		}427	}428429}
after · runtime/src/lib.rs
1//! The Substrate Node Template runtime. This can be compiled with `#[no_std]`, ready for Wasm.23#![cfg_attr(not(feature = "std"), no_std)]4// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256.5#![recursion_limit = "256"]67// Make the WASM binary available.8#[cfg(feature = "std")]9include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));1011use grandpa::fg_primitives;12use grandpa::AuthorityList as GrandpaAuthorityList;13use sp_api::impl_runtime_apis;14use sp_consensus_aura::sr25519::AuthorityId as AuraId;15use sp_core::OpaqueMetadata;16use sp_runtime::traits::{17    BlakeTwo256, Block as BlockT, ConvertInto, IdentifyAccount, IdentityLookup, Verify,18};19use sp_runtime::{20    create_runtime_str, generic, impl_opaque_keys,21    transaction_validity::{TransactionSource, TransactionValidity},22    ApplyExtrinsicResult, MultiSignature,23};24use sp_std::prelude::*;25#[cfg(feature = "std")]26use sp_version::NativeVersion;27use sp_version::RuntimeVersion;2829// A few exports that help ease life for downstream crates.30pub use balances::Call as BalancesCall;31pub use frame_support::{32    construct_runtime, parameter_types, traits::Randomness, weights::Weight, StorageValue,33};34#[cfg(any(feature = "std", test))]35pub use sp_runtime::BuildStorage;36pub use sp_runtime::{Perbill, Permill};37pub use timestamp::Call as TimestampCall;3839/// Importing a template pallet40pub use nft;4142/// An index to a block.43pub type BlockNumber = u32;4445/// Alias to 512-bit hash when used in the context of a transaction signature on the chain.46pub type Signature = MultiSignature;4748/// Some way of identifying an account on the chain. We intentionally make it equivalent49/// to the public key of our transaction signing scheme.50pub type AccountId = <<Signature as Verify>::Signer as IdentifyAccount>::AccountId;5152/// The type for looking up accounts. We don't expect more than 4 billion of them, but you53/// never know...54pub type AccountIndex = u32;5556/// Balance of an account.57pub type Balance = u128;5859/// Index of a transaction in the chain.60pub type Index = u32;6162/// A hash of some data used by the chain.63pub type Hash = sp_core::H256;6465/// Digest item type.66pub type DigestItem = generic::DigestItem<Hash>;6768/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know69/// the specifics of the runtime. They can then be made to be agnostic over specific formats70/// of data like extrinsics, allowing for them to continue syncing the network through upgrades71/// to even the core data structures.72pub mod opaque {73    use super::*;7475    pub use sp_runtime::OpaqueExtrinsic as UncheckedExtrinsic;7677    /// Opaque block header type.78    pub type Header = generic::Header<BlockNumber, BlakeTwo256>;79    /// Opaque block type.80    pub type Block = generic::Block<Header, UncheckedExtrinsic>;81    /// Opaque block identifier type.82    pub type BlockId = generic::BlockId<Block>;8384    impl_opaque_keys! {85        pub struct SessionKeys {86            pub aura: Aura,87            pub grandpa: Grandpa,88        }89    }90}9192/// This runtime version.93pub const VERSION: RuntimeVersion = RuntimeVersion {94    spec_name: create_runtime_str!("nft"),95    impl_name: create_runtime_str!("nft"),96    authoring_version: 1,97    spec_version: 1,98    impl_version: 1,99    apis: RUNTIME_API_VERSIONS,100};101102pub const MILLISECS_PER_BLOCK: u64 = 6000;103104pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK;105106// These time units are defined in number of blocks.107pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber);108pub const HOURS: BlockNumber = MINUTES * 60;109pub const DAYS: BlockNumber = HOURS * 24;110111/// The version information used to identify this runtime when compiled natively.112#[cfg(feature = "std")]113pub fn native_version() -> NativeVersion {114    NativeVersion {115        runtime_version: VERSION,116        can_author_with: Default::default(),117    }118}119120parameter_types! {121    pub const BlockHashCount: BlockNumber = 250;122    pub const MaximumBlockWeight: Weight = 1_000_000_000;123    pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75);124    pub const MaximumBlockLength: u32 = 5 * 1024 * 1024;125    pub const Version: RuntimeVersion = VERSION;126}127128impl system::Trait for Runtime {129    /// The identifier used to distinguish between accounts.130    type AccountId = AccountId;131    /// The aggregated dispatch type that is available for extrinsics.132    type Call = Call;133    /// The lookup mechanism to get account ID from whatever is passed in dispatchers.134    type Lookup = IdentityLookup<AccountId>;135    /// The index type for storing how many extrinsics an account has signed.136    type Index = Index;137    /// The index type for blocks.138    type BlockNumber = BlockNumber;139    /// The type for hashing blocks and tries.140    type Hash = Hash;141    /// The hashing algorithm used.142    type Hashing = BlakeTwo256;143    /// The header type.144    type Header = generic::Header<BlockNumber, BlakeTwo256>;145    /// The ubiquitous event type.146    type Event = Event;147    /// The ubiquitous origin type.148    type Origin = Origin;149    /// Maximum number of block number to block hash mappings to keep (oldest pruned first).150    type BlockHashCount = BlockHashCount;151    /// Maximum weight of each block.152    type MaximumBlockWeight = MaximumBlockWeight;153    /// Maximum size of all encoded transactions (in bytes) that are allowed in one block.154    type MaximumBlockLength = MaximumBlockLength;155    /// Portion of the block weight that is available to all normal transactions.156    type AvailableBlockRatio = AvailableBlockRatio;157    /// Version of the runtime.158    type Version = Version;159    /// Converts a module to the index of the module in `construct_runtime!`.160    ///161    /// This type is being generated by `construct_runtime!`.162    type ModuleToIndex = ModuleToIndex;163    /// What to do if a new account is created.164    type OnNewAccount = ();165    /// What to do if an account is fully reaped from the system.166    type OnKilledAccount = ();167    /// The data to be stored in an account.168    type AccountData = balances::AccountData<Balance>;169}170171impl aura::Trait for Runtime {172    type AuthorityId = AuraId;173}174175impl grandpa::Trait for Runtime {176    type Event = Event;177}178179parameter_types! {180    pub const MinimumPeriod: u64 = SLOT_DURATION / 2;181}182183impl timestamp::Trait for Runtime {184    /// A timestamp: milliseconds since the unix epoch.185    type Moment = u64;186    type OnTimestampSet = Aura;187    type MinimumPeriod = MinimumPeriod;188}189190parameter_types! {191    pub const ExistentialDeposit: u128 = 500;192}193194impl balances::Trait for Runtime {195    /// The type for recording an account's balance.196    type Balance = Balance;197    /// The ubiquitous event type.198    type Event = Event;199    type DustRemoval = ();200    type ExistentialDeposit = ExistentialDeposit;201    type AccountStore = System;202}203204parameter_types! {205    pub const TransactionBaseFee: Balance = 0;206    pub const TransactionByteFee: Balance = 1;207}208209impl transaction_payment::Trait for Runtime {210    type Currency = balances::Module<Runtime>;211    type OnTransactionPayment = ();212    type TransactionBaseFee = TransactionBaseFee;213    type TransactionByteFee = TransactionByteFee;214    type WeightToFee = ConvertInto;215    type FeeMultiplierUpdate = ();216}217218impl sudo::Trait for Runtime {219    type Event = Event;220    type Call = Call;221}222223/// Used for the module template in `./template.rs`224impl nft::Trait for Runtime {225    type Event = Event;226}227228construct_runtime!(229    pub enum Runtime where230        Block = Block,231        NodeBlock = opaque::Block,232        UncheckedExtrinsic = UncheckedExtrinsic233    {234        System: system::{Module, Call, Config, Storage, Event<T>},235        RandomnessCollectiveFlip: randomness_collective_flip::{Module, Call, Storage},236        Timestamp: timestamp::{Module, Call, Storage, Inherent},237        Aura: aura::{Module, Config<T>, Inherent(Timestamp)},238        Grandpa: grandpa::{Module, Call, Storage, Config, Event},239        Balances: balances::{Module, Call, Storage, Config<T>, Event<T>},240        TransactionPayment: transaction_payment::{Module, Storage},241        Sudo: sudo::{Module, Call, Config<T>, Storage, Event<T>},242        // Used for the module template in `./template.rs`243        Nft: nft::{Module, Call, Storage, Event<T>},244    }245);246247/// The address format for describing accounts.248pub type Address = AccountId;249/// Block header type as expected by this runtime.250pub type Header = generic::Header<BlockNumber, BlakeTwo256>;251/// Block type as expected by this runtime.252pub type Block = generic::Block<Header, UncheckedExtrinsic>;253/// A Block signed with a Justification254pub type SignedBlock = generic::SignedBlock<Block>;255/// BlockId type as expected by this runtime.256pub type BlockId = generic::BlockId<Block>;257/// The SignedExtension to the basic transaction logic.258pub type SignedExtra = (259    system::CheckVersion<Runtime>,260    system::CheckGenesis<Runtime>,261    system::CheckEra<Runtime>,262    system::CheckNonce<Runtime>,263    system::CheckWeight<Runtime>,264    transaction_payment::ChargeTransactionPayment<Runtime>,265);266/// Unchecked extrinsic type as expected by this runtime.267pub type UncheckedExtrinsic = generic::UncheckedExtrinsic<Address, Call, Signature, SignedExtra>;268/// Extrinsic type that has already been checked.269pub type CheckedExtrinsic = generic::CheckedExtrinsic<AccountId, Call, SignedExtra>;270/// Executive: handles dispatch to the various modules.271pub type Executive =272    frame_executive::Executive<Runtime, Block, system::ChainContext<Runtime>, Runtime, AllModules>;273274impl_runtime_apis! {275    impl sp_api::Core<Block> for Runtime {276        fn version() -> RuntimeVersion {277            VERSION278        }279280        fn execute_block(block: Block) {281            Executive::execute_block(block)282        }283284        fn initialize_block(header: &<Block as BlockT>::Header) {285            Executive::initialize_block(header)286        }287    }288289    impl sp_api::Metadata<Block> for Runtime {290        fn metadata() -> OpaqueMetadata {291            Runtime::metadata().into()292        }293    }294295    impl sp_block_builder::BlockBuilder<Block> for Runtime {296        fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {297            Executive::apply_extrinsic(extrinsic)298        }299300        fn finalize_block() -> <Block as BlockT>::Header {301            Executive::finalize_block()302        }303304        fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<<Block as BlockT>::Extrinsic> {305            data.create_extrinsics()306        }307308        fn check_inherents(309            block: Block,310            data: sp_inherents::InherentData,311        ) -> sp_inherents::CheckInherentsResult {312            data.check_extrinsics(&block)313        }314315        fn random_seed() -> <Block as BlockT>::Hash {316            RandomnessCollectiveFlip::random_seed()317        }318    }319320    impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {321        fn validate_transaction(322            source: TransactionSource,323            tx: <Block as BlockT>::Extrinsic,324        ) -> TransactionValidity {325            Executive::validate_transaction(source, tx)326        }327    }328329    impl sp_offchain::OffchainWorkerApi<Block> for Runtime {330        fn offchain_worker(header: &<Block as BlockT>::Header) {331            Executive::offchain_worker(header)332        }333    }334335    impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {336        fn slot_duration() -> u64 {337            Aura::slot_duration()338        }339340        fn authorities() -> Vec<AuraId> {341            Aura::authorities()342        }343    }344345    impl sp_session::SessionKeys<Block> for Runtime {346        fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> {347            opaque::SessionKeys::generate(seed)348        }349350        fn decode_session_keys(351            encoded: Vec<u8>,352        ) -> Option<Vec<(Vec<u8>, sp_core::crypto::KeyTypeId)>> {353            opaque::SessionKeys::decode_into_raw_public_keys(&encoded)354        }355    }356357    impl fg_primitives::GrandpaApi<Block> for Runtime {358        fn grandpa_authorities() -> GrandpaAuthorityList {359            Grandpa::grandpa_authorities()360        }361    }362}