From 1e011625055a4c94236214ba7f9f8f2f7ed691a7 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 12 Sep 2018 11:13:31 +0200 Subject: [PATCH] Phase 1 of repo reorg (#719) * Remove unneeded script * Rename Substrate Demo -> Substrate * Rename demo -> node * Build wasm from last rename. * Merge ed25519 into substrate-primitives * Minor tweak * Rename substrate -> core * Move substrate-runtime-support to core/runtime/support * Rename/move substrate-runtime-version * Move codec up a level * Rename substrate-codec -> parity-codec * Move environmental up a level * Move pwasm-* up to top, ready for removal * Remove requirement of s-r-support from s-r-primitives * Move core/runtime/primitives into core/runtime-primitives * Remove s-r-support dep from s-r-version * Remove dep of s-r-support from bft * Remove dep of s-r-support from node/consensus * Sever all other core deps from s-r-support * Forgot the no_std directive * Rename non-SRML modules to sr-* to avoid match clashes * Move runtime/* to srml/* * Rename substrate-runtime-* -> srml-* * Move srml to top-level --- substrate/.gitignore | 14 +- substrate/.gitlab-ci.yml | 2 - substrate/CONTRIBUTING.adoc | 4 +- substrate/Cargo.lock | 1156 ++++++++--------- substrate/Cargo.toml | 111 +- substrate/README.adoc | 1 - substrate/ci/script.sh | 1 - substrate/{substrate => }/codec/Cargo.toml | 2 +- substrate/{substrate => }/codec/README.adoc | 0 .../{substrate => }/codec/derive/Cargo.toml | 4 +- .../codec/derive/src/decode.rs | 0 .../codec/derive/src/encode.rs | 0 .../{substrate => }/codec/derive/src/lib.rs | 0 .../{substrate => }/codec/derive/tests/mod.rs | 4 +- substrate/{substrate => }/codec/src/codec.rs | 0 substrate/{substrate => }/codec/src/joiner.rs | 0 .../{substrate => }/codec/src/keyedvec.rs | 0 substrate/{substrate => }/codec/src/lib.rs | 0 substrate/{substrate => core}/bft/Cargo.toml | 8 +- substrate/{substrate => core}/bft/README.adoc | 0 .../{substrate => core}/bft/src/error.rs | 3 +- substrate/{substrate => core}/bft/src/lib.rs | 13 +- substrate/{substrate => core}/cli/Cargo.toml | 12 +- substrate/{substrate => core}/cli/README.adoc | 0 substrate/{substrate => core}/cli/build.rs | 0 .../cli/doc/shell-completion.adoc | 0 substrate/{substrate => core}/cli/src/cli.yml | 0 .../{substrate => core}/cli/src/error.rs | 0 .../{substrate => core}/cli/src/informant.rs | 0 substrate/{substrate => core}/cli/src/lib.rs | 2 +- .../{substrate => core}/cli/src/panic_hook.rs | 0 .../{substrate => core}/client/Cargo.toml | 11 +- .../{substrate => core}/client/README.adoc | 0 substrate/core/client/db/Cargo.toml | 23 + .../client/db/src/cache.rs | 0 .../{substrate => core}/client/db/src/lib.rs | 7 +- .../client/db/src/light.rs | 0 .../client/db/src/utils.rs | 0 .../{substrate => core}/client/src/backend.rs | 0 .../client/src/block_builder.rs | 0 .../client/src/blockchain.rs | 0 .../client/src/call_executor.rs | 0 .../{substrate => core}/client/src/cht.rs | 0 .../{substrate => core}/client/src/client.rs | 4 +- .../{substrate => core}/client/src/error.rs | 0 .../{substrate => core}/client/src/genesis.rs | 3 +- .../{substrate => core}/client/src/in_mem.rs | 0 .../{substrate => core}/client/src/lib.rs | 9 +- .../client/src/light/backend.rs | 0 .../client/src/light/blockchain.rs | 0 .../client/src/light/call_executor.rs | 0 .../client/src/light/fetcher.rs | 0 .../client/src/light/mod.rs | 0 .../client/src/notifications.rs | 0 .../{substrate => core}/executor/Cargo.toml | 7 +- .../{substrate => core}/executor/README.adoc | 0 .../{substrate => core}/executor/src/error.rs | 0 .../{substrate => core}/executor/src/lib.rs | 7 +- .../executor/src/native_executor.rs | 0 .../executor/src/sandbox.rs | 0 .../executor/src/wasm_executor.rs | 18 +- .../executor/src/wasm_utils.rs | 0 .../executor/wasm/Cargo.lock | 84 +- .../executor/wasm/Cargo.toml | 4 +- .../executor/wasm/build.sh | 0 .../executor/wasm/src/lib.rs | 4 +- .../extrinsic-pool/Cargo.toml | 8 +- .../extrinsic-pool/README.adoc | 0 .../extrinsic-pool/src/error.rs | 0 .../extrinsic-pool/src/lib.rs | 4 +- .../extrinsic-pool/src/listener.rs | 0 .../extrinsic-pool/src/pool.rs | 0 .../extrinsic-pool/src/rotator.rs | 0 .../extrinsic-pool/src/watcher.rs | 0 .../{substrate => core}/keyring/Cargo.toml | 2 +- .../{substrate => core}/keyring/README.adoc | 0 .../{substrate => core}/keyring/src/lib.rs | 5 +- .../{substrate => core}/keystore/Cargo.toml | 1 - .../{substrate => core}/keystore/README.adoc | 0 .../{substrate => core}/keystore/src/lib.rs | 4 +- substrate/core/metadata/Cargo.toml | 13 + .../ed25519 => core/metadata}/README.adoc | 2 +- substrate/core/metadata/src/lib.rs | 190 +++ .../misbehavior-check/Cargo.toml | 8 +- .../misbehavior-check/README.adoc | 0 .../misbehavior-check/src/lib.rs | 6 +- .../network-libp2p/Cargo.toml | 0 .../network-libp2p/README.adoc | 0 .../network-libp2p/src/connection_filter.rs | 0 .../network-libp2p/src/custom_proto.rs | 2 +- .../network-libp2p/src/error.rs | 0 .../network-libp2p/src/lib.rs | 0 .../network-libp2p/src/network_state.rs | 0 .../network-libp2p/src/service.rs | 6 +- .../network-libp2p/src/timeouts.rs | 0 .../network-libp2p/src/topology.rs | 0 .../network-libp2p/src/traits.rs | 0 .../network-libp2p/src/transport.rs | 0 .../network-libp2p/tests/tests.rs | 0 substrate/core/network/Cargo.toml | 29 + .../{substrate => core}/network/README.adoc | 0 .../{substrate => core}/network/src/blocks.rs | 0 .../{substrate => core}/network/src/chain.rs | 0 .../{substrate => core}/network/src/config.rs | 0 .../network/src/consensus_gossip.rs | 0 .../{substrate => core}/network/src/error.rs | 0 .../network/src/import_queue.rs | 0 .../{substrate => core}/network/src/io.rs | 0 .../{substrate => core}/network/src/lib.rs | 7 +- .../network/src/message.rs | 3 +- .../network/src/on_demand.rs | 0 .../network/src/protocol.rs | 0 .../network/src/service.rs | 0 .../network/src/specialization.rs | 0 .../{substrate => core}/network/src/sync.rs | 0 .../network/src/test/mod.rs | 0 .../network/src/test/sync.rs | 0 .../{substrate => core}/primitives/Cargo.toml | 19 +- .../primitives/README.adoc | 0 .../primitives/src/authority_id.rs | 0 .../primitives/src/bytes.rs | 0 .../lib.rs => core/primitives/src/ed25519.rs} | 26 +- .../primitives/src/hash.rs | 0 .../primitives/src/hasher.rs | 0 .../primitives/src/hashing.rs | 0 .../primitives/src/hexdisplay.rs | 0 .../{substrate => core}/primitives/src/lib.rs | 17 +- .../primitives/src/rlp_codec.rs | 0 .../primitives/src/sandbox.rs | 0 .../primitives/src/storage.rs | 0 .../primitives/src/tests.rs | 0 .../primitives/src/u32_trait.rs | 0 .../primitives/src/uint.rs | 0 .../rpc-servers/Cargo.toml | 2 +- .../rpc-servers/README.adoc | 0 .../rpc-servers/src/lib.rs | 6 +- substrate/{substrate => core}/rpc/Cargo.toml | 6 +- substrate/{substrate => core}/rpc/README.adoc | 0 .../rpc/src/author/error.rs | 0 .../{substrate => core}/rpc/src/author/mod.rs | 0 .../rpc/src/author/tests.rs | 0 .../rpc/src/chain/error.rs | 0 .../{substrate => core}/rpc/src/chain/mod.rs | 0 .../rpc/src/chain/tests.rs | 0 .../{substrate => core}/rpc/src/errors.rs | 0 .../{substrate => core}/rpc/src/helpers.rs | 0 substrate/{substrate => core}/rpc/src/lib.rs | 6 +- .../{substrate => core}/rpc/src/metadata.rs | 0 .../rpc/src/state/error.rs | 0 .../{substrate => core}/rpc/src/state/mod.rs | 0 .../rpc/src/state/tests.rs | 0 .../rpc/src/subscriptions.rs | 0 .../rpc/src/system/error.rs | 0 .../{substrate => core}/rpc/src/system/mod.rs | 0 .../rpc/src/system/tests.rs | 0 .../{substrate => core}/serializer/Cargo.toml | 0 .../serializer/README.adoc | 0 .../{substrate => core}/serializer/src/lib.rs | 0 substrate/core/service/Cargo.toml | 31 + .../{substrate => core}/service/README.adoc | 0 .../service/src/chain_ops.rs | 0 .../service/src/chain_spec.rs | 0 .../service/src/components.rs | 0 .../{substrate => core}/service/src/config.rs | 0 .../{substrate => core}/service/src/error.rs | 0 .../{substrate => core}/service/src/lib.rs | 4 +- .../runtime-io => core/sr-io}/Cargo.toml | 14 +- .../runtime-io => core/sr-io}/README.adoc | 0 .../pwasm-alloc => core/sr-io}/build.rs | 0 .../runtime-io => core/sr-io}/src/lib.rs | 0 .../runtime-io => core/sr-io}/with_std.rs | 5 +- .../runtime-io => core/sr-io}/without_std.rs | 4 +- substrate/core/sr-primitives/Cargo.toml | 32 + .../sr-primitives}/src/bft.rs | 0 .../sr-primitives}/src/generic/block.rs | 0 .../src/generic/checked_extrinsic.rs | 9 +- .../sr-primitives}/src/generic/digest.rs | 0 .../sr-primitives}/src/generic/header.rs | 0 .../sr-primitives}/src/generic/mod.rs | 0 .../sr-primitives}/src/generic/tests.rs | 0 .../src/generic/unchecked_extrinsic.rs | 0 .../sr-primitives}/src/lib.rs | 9 +- .../sr-primitives}/src/testing.rs | 11 +- .../sr-primitives}/src/traits.rs | 3 +- .../sr-sandbox}/Cargo.toml | 14 +- .../sr-sandbox}/README.adoc | 0 .../runtime-io => core/sr-sandbox}/build.rs | 0 .../sr-sandbox}/src/lib.rs | 6 +- .../sr-sandbox}/with_std.rs | 0 .../sr-sandbox}/without_std.rs | 0 .../runtime-std => core/sr-std}/Cargo.toml | 6 +- .../runtime-std => core/sr-std}/README.adoc | 0 .../runtime-std => core/sr-std}/build.rs | 0 .../runtime-std => core/sr-std}/src/lib.rs | 0 .../runtime-std => core/sr-std}/with_std.rs | 0 .../sr-std}/without_std.rs | 0 substrate/core/sr-version/Cargo.toml | 20 + .../version => core/sr-version}/src/lib.rs | 8 +- .../{substrate => core}/state-db/Cargo.toml | 6 +- .../{substrate => core}/state-db/README.adoc | 0 .../{substrate => core}/state-db/src/lib.rs | 4 +- .../state-db/src/pruning.rs | 0 .../{substrate => core}/state-db/src/test.rs | 0 .../state-db/src/unfinalized.rs | 0 .../state-machine/Cargo.toml | 2 +- .../state-machine/README.adoc | 0 .../state-machine/src/backend.rs | 0 .../state-machine/src/ext.rs | 0 .../state-machine/src/lib.rs | 2 +- .../state-machine/src/proving_backend.rs | 0 .../state-machine/src/testing.rs | 0 .../state-machine/src/trie_backend.rs | 0 .../{substrate => core}/telemetry/Cargo.toml | 0 .../{substrate => core}/telemetry/README.adoc | 0 .../{substrate => core}/telemetry/src/lib.rs | 0 .../test-client/Cargo.toml | 8 +- .../test-client/README.adoc | 0 .../test-client/src/block_builder_ext.rs | 0 .../test-client/src/client_ext.rs | 0 .../test-client/src/lib.rs | 6 +- substrate/core/test-runtime/Cargo.toml | 36 + .../test-runtime/README.adoc | 0 .../test-runtime/src/genesismap.rs | 0 .../test-runtime/src/lib.rs | 18 +- .../test-runtime/src/system.rs | 0 .../test-runtime/wasm/Cargo.lock | 173 ++- substrate/core/test-runtime/wasm/Cargo.toml | 40 + .../test-runtime/wasm/build.sh | 0 .../runtime => core/test-runtime}/wasm/src | 0 substrate/demo/api/Cargo.toml | 13 - substrate/demo/cli/Cargo.toml | 12 - substrate/demo/consensus/Cargo.toml | 27 - substrate/demo/executor/Cargo.toml | 29 - substrate/demo/network/Cargo.toml | 17 - substrate/demo/primitives/Cargo.toml | 29 - substrate/demo/runtime/Cargo.toml | 61 - substrate/demo/runtime/wasm/Cargo.toml | 63 - .../release/demo_runtime.compact.wasm | Bin 707342 -> 0 bytes .../release/demo_runtime.wasm | Bin 707428 -> 0 bytes substrate/demo/service/Cargo.toml | 27 - substrate/demo/transaction-pool/Cargo.toml | 19 - substrate/doc/packages/substrate.adoc | 60 +- .../{substrate => }/environmental/Cargo.toml | 0 .../{substrate => }/environmental/README.adoc | 0 .../{substrate => }/environmental/src/lib.rs | 0 .../{substrate => }/environmental/with_std.rs | 0 .../environmental/without_std.rs | 0 substrate/{demo => node}/Cargo.toml | 2 +- substrate/node/api/Cargo.toml | 13 + substrate/{demo => node}/api/src/lib.rs | 16 +- substrate/{demo => node}/build.rs | 8 +- substrate/node/cli/Cargo.toml | 12 + substrate/{demo => node}/cli/src/cli.yml | 4 +- substrate/{demo => node}/cli/src/error.rs | 8 +- substrate/{demo => node}/cli/src/lib.rs | 14 +- substrate/node/consensus/Cargo.toml | 25 + .../{demo => node}/consensus/README.adoc | 0 .../{demo => node}/consensus/src/error.rs | 10 +- .../consensus/src/evaluation.rs | 16 +- substrate/{demo => node}/consensus/src/lib.rs | 40 +- .../consensus/src/offline_tracker.rs | 10 +- .../{demo => node}/consensus/src/service.rs | 12 +- substrate/node/executor/Cargo.toml | 28 + substrate/{demo => node}/executor/src/lib.rs | 52 +- substrate/node/network/Cargo.toml | 17 + .../{demo => node}/network/src/consensus.rs | 26 +- substrate/{demo => node}/network/src/lib.rs | 30 +- substrate/node/primitives/Cargo.toml | 29 + .../{demo => node}/primitives/src/lib.rs | 18 +- substrate/node/runtime/Cargo.toml | 61 + .../runtime/src/checked_block.rs | 12 +- substrate/{demo => node}/runtime/src/lib.rs | 54 +- .../{demo => node}/runtime/wasm/Cargo.lock | 630 +++++---- substrate/node/runtime/wasm/Cargo.toml | 63 + .../{demo => node}/runtime/wasm/build.sh | 2 +- .../test-runtime => node/runtime}/wasm/src | 0 substrate/node/service/Cargo.toml | 26 + .../{demo => node}/service/src/chain_spec.rs | 21 +- substrate/{demo => node}/service/src/lib.rs | 37 +- substrate/{demo => node}/src/main.rs | 12 +- substrate/node/transaction-pool/Cargo.toml | 18 + .../transaction-pool/src/error.rs | 12 +- .../transaction-pool/src/lib.rs | 23 +- .../{substrate => }/pwasm-alloc/Cargo.toml | 0 .../{substrate => }/pwasm-alloc/README.adoc | 0 .../runtime-sandbox => pwasm-alloc}/build.rs | 0 .../{substrate => }/pwasm-alloc/src/lib.rs | 0 .../{substrate => }/pwasm-libc/Cargo.toml | 0 .../{substrate => }/pwasm-libc/README.adoc | 0 .../{substrate => }/pwasm-libc/src/lib.rs | 0 substrate/scripts/build-demos.sh | 28 - substrate/scripts/common.sh | 9 +- .../{substrate/runtime => srml}/README.adoc | 0 substrate/srml/balances/Cargo.toml | 36 + .../runtime => srml}/balances/src/address.rs | 0 .../balances/src/genesis_config.rs | 0 .../runtime => srml}/balances/src/lib.rs | 14 +- .../runtime => srml}/balances/src/mock.rs | 0 .../runtime => srml}/balances/src/tests.rs | 0 substrate/srml/consensus/Cargo.toml | 32 + .../runtime => srml}/consensus/src/lib.rs | 14 +- substrate/srml/contract/Cargo.toml | 41 + .../contract/src/account_db.rs | 0 .../contract/src/double_map.rs | 0 .../runtime => srml}/contract/src/exec.rs | 0 .../runtime => srml}/contract/src/gas.rs | 0 .../contract/src/genesis_config.rs | 0 .../runtime => srml}/contract/src/lib.rs | 16 +- .../runtime => srml}/contract/src/tests.rs | 0 .../contract/src/vm/env_def/macros.rs | 0 .../contract/src/vm/env_def/mod.rs | 0 .../runtime => srml}/contract/src/vm/mod.rs | 0 .../contract/src/vm/prepare.rs | 0 substrate/srml/council/Cargo.toml | 43 + .../runtime => srml}/council/src/lib.rs | 20 +- .../runtime => srml}/council/src/motions.rs | 6 +- .../runtime => srml}/council/src/seats.rs | 2 +- .../runtime => srml}/council/src/voting.rs | 6 +- substrate/srml/democracy/Cargo.toml | 37 + .../runtime => srml}/democracy/src/lib.rs | 20 +- .../democracy/src/vote_threshold.rs | 0 substrate/srml/example/Cargo.toml | 34 + .../runtime => srml}/example/src/lib.rs | 16 +- substrate/srml/executive/Cargo.toml | 33 + .../runtime => srml}/executive/src/lib.rs | 25 +- substrate/srml/session/Cargo.toml | 40 + .../runtime => srml}/session/src/lib.rs | 18 +- substrate/srml/staking/Cargo.toml | 45 + .../staking/src/genesis_config.rs | 0 .../runtime => srml}/staking/src/lib.rs | 24 +- .../runtime => srml}/staking/src/mock.rs | 0 .../runtime => srml}/staking/src/tests.rs | 0 substrate/srml/support/Cargo.toml | 34 + .../support}/README.adoc | 0 .../support}/src/dispatch.rs | 2 +- .../support}/src/event.rs | 0 .../support}/src/hashable.rs | 0 .../support}/src/lib.rs | 9 +- .../support}/src/metadata.rs | 203 +-- .../support}/src/storage/generator.rs | 2 +- .../support}/src/storage/mod.rs | 0 substrate/srml/system/Cargo.toml | 32 + .../runtime => srml}/system/src/lib.rs | 12 +- substrate/srml/timestamp/Cargo.toml | 35 + .../runtime => srml}/timestamp/src/lib.rs | 14 +- substrate/srml/treasury/Cargo.toml | 34 + .../runtime => srml}/treasury/src/lib.rs | 16 +- substrate/subkey/Cargo.toml | 3 +- substrate/subkey/src/main.rs | 4 +- substrate/substrate/client/db/Cargo.toml | 24 - substrate/substrate/ed25519/Cargo.toml | 12 - .../release/runtime_test.compact.wasm | Bin 48108 -> 0 bytes .../release/runtime_test.wasm | Bin 48318 -> 0 bytes substrate/substrate/network/Cargo.toml | 30 - .../substrate/runtime-support/Cargo.toml | 34 - .../substrate/runtime/balances/Cargo.toml | 36 - .../substrate/runtime/consensus/Cargo.toml | 32 - .../substrate/runtime/contract/Cargo.toml | 41 - .../substrate/runtime/council/Cargo.toml | 43 - .../substrate/runtime/democracy/Cargo.toml | 37 - .../substrate/runtime/example/Cargo.toml | 34 - .../substrate/runtime/executive/Cargo.toml | 33 - .../substrate/runtime/primitives/Cargo.toml | 34 - .../substrate/runtime/session/Cargo.toml | 40 - .../substrate/runtime/staking/Cargo.toml | 45 - substrate/substrate/runtime/system/Cargo.toml | 32 - .../substrate/runtime/timestamp/Cargo.toml | 35 - .../substrate/runtime/treasury/Cargo.toml | 34 - .../substrate/runtime/version/Cargo.toml | 22 - substrate/substrate/service/Cargo.toml | 31 - substrate/substrate/test-runtime/Cargo.toml | 38 - .../substrate/test-runtime/wasm/Cargo.toml | 42 - .../substrate_test_runtime.compact.wasm | Bin 54010 -> 0 bytes .../release/substrate_test_runtime.wasm | Bin 54142 -> 0 bytes 374 files changed, 2845 insertions(+), 2902 deletions(-) rename substrate/{substrate => }/codec/Cargo.toml (91%) rename substrate/{substrate => }/codec/README.adoc (100%) rename substrate/{substrate => }/codec/derive/Cargo.toml (81%) rename substrate/{substrate => }/codec/derive/src/decode.rs (100%) rename substrate/{substrate => }/codec/derive/src/encode.rs (100%) rename substrate/{substrate => }/codec/derive/src/lib.rs (100%) rename substrate/{substrate => }/codec/derive/tests/mod.rs (98%) rename substrate/{substrate => }/codec/src/codec.rs (100%) rename substrate/{substrate => }/codec/src/joiner.rs (100%) rename substrate/{substrate => }/codec/src/keyedvec.rs (100%) rename substrate/{substrate => }/codec/src/lib.rs (100%) rename substrate/{substrate => core}/bft/Cargo.toml (59%) rename substrate/{substrate => core}/bft/README.adoc (100%) rename substrate/{substrate => core}/bft/src/error.rs (96%) rename substrate/{substrate => core}/bft/src/lib.rs (99%) rename substrate/{substrate => core}/cli/Cargo.toml (59%) rename substrate/{substrate => core}/cli/README.adoc (100%) rename substrate/{substrate => core}/cli/build.rs (100%) rename substrate/{substrate => core}/cli/doc/shell-completion.adoc (100%) rename substrate/{substrate => core}/cli/src/cli.yml (100%) rename substrate/{substrate => core}/cli/src/error.rs (100%) rename substrate/{substrate => core}/cli/src/informant.rs (100%) rename substrate/{substrate => core}/cli/src/lib.rs (99%) rename substrate/{substrate => core}/cli/src/panic_hook.rs (100%) rename substrate/{substrate => core}/client/Cargo.toml (67%) rename substrate/{substrate => core}/client/README.adoc (100%) create mode 100644 substrate/core/client/db/Cargo.toml rename substrate/{substrate => core}/client/db/src/cache.rs (100%) rename substrate/{substrate => core}/client/db/src/lib.rs (99%) rename substrate/{substrate => core}/client/db/src/light.rs (100%) rename substrate/{substrate => core}/client/db/src/utils.rs (100%) rename substrate/{substrate => core}/client/src/backend.rs (100%) rename substrate/{substrate => core}/client/src/block_builder.rs (100%) rename substrate/{substrate => core}/client/src/blockchain.rs (100%) rename substrate/{substrate => core}/client/src/call_executor.rs (100%) rename substrate/{substrate => core}/client/src/cht.rs (100%) rename substrate/{substrate => core}/client/src/client.rs (99%) rename substrate/{substrate => core}/client/src/error.rs (100%) rename substrate/{substrate => core}/client/src/genesis.rs (98%) rename substrate/{substrate => core}/client/src/in_mem.rs (100%) rename substrate/{substrate => core}/client/src/lib.rs (90%) rename substrate/{substrate => core}/client/src/light/backend.rs (100%) rename substrate/{substrate => core}/client/src/light/blockchain.rs (100%) rename substrate/{substrate => core}/client/src/light/call_executor.rs (100%) rename substrate/{substrate => core}/client/src/light/fetcher.rs (100%) rename substrate/{substrate => core}/client/src/light/mod.rs (100%) rename substrate/{substrate => core}/client/src/notifications.rs (100%) rename substrate/{substrate => core}/executor/Cargo.toml (76%) rename substrate/{substrate => core}/executor/README.adoc (100%) rename substrate/{substrate => core}/executor/src/error.rs (100%) rename substrate/{substrate => core}/executor/src/lib.rs (93%) rename substrate/{substrate => core}/executor/src/native_executor.rs (100%) rename substrate/{substrate => core}/executor/src/sandbox.rs (100%) rename substrate/{substrate => core}/executor/src/wasm_executor.rs (97%) rename substrate/{substrate => core}/executor/src/wasm_utils.rs (100%) rename substrate/{substrate => core}/executor/wasm/Cargo.lock (94%) rename substrate/{substrate => core}/executor/wasm/Cargo.toml (59%) rename substrate/{substrate => core}/executor/wasm/build.sh (100%) rename substrate/{substrate => core}/executor/wasm/src/lib.rs (97%) rename substrate/{substrate => core}/extrinsic-pool/Cargo.toml (52%) rename substrate/{substrate => core}/extrinsic-pool/README.adoc (100%) rename substrate/{substrate => core}/extrinsic-pool/src/error.rs (100%) rename substrate/{substrate => core}/extrinsic-pool/src/lib.rs (92%) rename substrate/{substrate => core}/extrinsic-pool/src/listener.rs (100%) rename substrate/{substrate => core}/extrinsic-pool/src/pool.rs (100%) rename substrate/{substrate => core}/extrinsic-pool/src/rotator.rs (100%) rename substrate/{substrate => core}/extrinsic-pool/src/watcher.rs (100%) rename substrate/{substrate => core}/keyring/Cargo.toml (79%) rename substrate/{substrate => core}/keyring/README.adoc (100%) rename substrate/{substrate => core}/keyring/src/lib.rs (96%) rename substrate/{substrate => core}/keystore/Cargo.toml (91%) rename substrate/{substrate => core}/keystore/README.adoc (100%) rename substrate/{substrate => core}/keystore/src/lib.rs (98%) create mode 100644 substrate/core/metadata/Cargo.toml rename substrate/{substrate/ed25519 => core/metadata}/README.adoc (88%) create mode 100644 substrate/core/metadata/src/lib.rs rename substrate/{substrate => core}/misbehavior-check/Cargo.toml (50%) rename substrate/{substrate => core}/misbehavior-check/README.adoc (100%) rename substrate/{substrate => core}/misbehavior-check/src/lib.rs (97%) rename substrate/{substrate => core}/network-libp2p/Cargo.toml (100%) rename substrate/{substrate => core}/network-libp2p/README.adoc (100%) rename substrate/{substrate => core}/network-libp2p/src/connection_filter.rs (100%) rename substrate/{substrate => core}/network-libp2p/src/custom_proto.rs (99%) rename substrate/{substrate => core}/network-libp2p/src/error.rs (100%) rename substrate/{substrate => core}/network-libp2p/src/lib.rs (100%) rename substrate/{substrate => core}/network-libp2p/src/network_state.rs (100%) rename substrate/{substrate => core}/network-libp2p/src/service.rs (99%) rename substrate/{substrate => core}/network-libp2p/src/timeouts.rs (100%) rename substrate/{substrate => core}/network-libp2p/src/topology.rs (100%) rename substrate/{substrate => core}/network-libp2p/src/traits.rs (100%) rename substrate/{substrate => core}/network-libp2p/src/transport.rs (100%) rename substrate/{substrate => core}/network-libp2p/tests/tests.rs (100%) create mode 100644 substrate/core/network/Cargo.toml rename substrate/{substrate => core}/network/README.adoc (100%) rename substrate/{substrate => core}/network/src/blocks.rs (100%) rename substrate/{substrate => core}/network/src/chain.rs (100%) rename substrate/{substrate => core}/network/src/config.rs (100%) rename substrate/{substrate => core}/network/src/consensus_gossip.rs (100%) rename substrate/{substrate => core}/network/src/error.rs (100%) rename substrate/{substrate => core}/network/src/import_queue.rs (100%) rename substrate/{substrate => core}/network/src/io.rs (100%) rename substrate/{substrate => core}/network/src/lib.rs (93%) rename substrate/{substrate => core}/network/src/message.rs (99%) rename substrate/{substrate => core}/network/src/on_demand.rs (100%) rename substrate/{substrate => core}/network/src/protocol.rs (100%) rename substrate/{substrate => core}/network/src/service.rs (100%) rename substrate/{substrate => core}/network/src/specialization.rs (100%) rename substrate/{substrate => core}/network/src/sync.rs (100%) rename substrate/{substrate => core}/network/src/test/mod.rs (100%) rename substrate/{substrate => core}/network/src/test/sync.rs (100%) rename substrate/{substrate => core}/primitives/Cargo.toml (73%) rename substrate/{substrate => core}/primitives/README.adoc (100%) rename substrate/{substrate => core}/primitives/src/authority_id.rs (100%) rename substrate/{substrate => core}/primitives/src/bytes.rs (100%) rename substrate/{substrate/ed25519/src/lib.rs => core/primitives/src/ed25519.rs} (95%) rename substrate/{substrate => core}/primitives/src/hash.rs (100%) rename substrate/{substrate => core}/primitives/src/hasher.rs (100%) rename substrate/{substrate => core}/primitives/src/hashing.rs (100%) rename substrate/{substrate => core}/primitives/src/hexdisplay.rs (100%) rename substrate/{substrate => core}/primitives/src/lib.rs (90%) rename substrate/{substrate => core}/primitives/src/rlp_codec.rs (100%) rename substrate/{substrate => core}/primitives/src/sandbox.rs (100%) rename substrate/{substrate => core}/primitives/src/storage.rs (100%) rename substrate/{substrate => core}/primitives/src/tests.rs (100%) rename substrate/{substrate => core}/primitives/src/u32_trait.rs (100%) rename substrate/{substrate => core}/primitives/src/uint.rs (100%) rename substrate/{substrate => core}/rpc-servers/Cargo.toml (88%) rename substrate/{substrate => core}/rpc-servers/README.adoc (100%) rename substrate/{substrate => core}/rpc-servers/src/lib.rs (92%) rename substrate/{substrate => core}/rpc/Cargo.toml (82%) rename substrate/{substrate => core}/rpc/README.adoc (100%) rename substrate/{substrate => core}/rpc/src/author/error.rs (100%) rename substrate/{substrate => core}/rpc/src/author/mod.rs (100%) rename substrate/{substrate => core}/rpc/src/author/tests.rs (100%) rename substrate/{substrate => core}/rpc/src/chain/error.rs (100%) rename substrate/{substrate => core}/rpc/src/chain/mod.rs (100%) rename substrate/{substrate => core}/rpc/src/chain/tests.rs (100%) rename substrate/{substrate => core}/rpc/src/errors.rs (100%) rename substrate/{substrate => core}/rpc/src/helpers.rs (100%) rename substrate/{substrate => core}/rpc/src/lib.rs (90%) rename substrate/{substrate => core}/rpc/src/metadata.rs (100%) rename substrate/{substrate => core}/rpc/src/state/error.rs (100%) rename substrate/{substrate => core}/rpc/src/state/mod.rs (100%) rename substrate/{substrate => core}/rpc/src/state/tests.rs (100%) rename substrate/{substrate => core}/rpc/src/subscriptions.rs (100%) rename substrate/{substrate => core}/rpc/src/system/error.rs (100%) rename substrate/{substrate => core}/rpc/src/system/mod.rs (100%) rename substrate/{substrate => core}/rpc/src/system/tests.rs (100%) rename substrate/{substrate => core}/serializer/Cargo.toml (100%) rename substrate/{substrate => core}/serializer/README.adoc (100%) rename substrate/{substrate => core}/serializer/src/lib.rs (100%) create mode 100644 substrate/core/service/Cargo.toml rename substrate/{substrate => core}/service/README.adoc (100%) rename substrate/{substrate => core}/service/src/chain_ops.rs (100%) rename substrate/{substrate => core}/service/src/chain_spec.rs (100%) rename substrate/{substrate => core}/service/src/components.rs (100%) rename substrate/{substrate => core}/service/src/config.rs (100%) rename substrate/{substrate => core}/service/src/error.rs (100%) rename substrate/{substrate => core}/service/src/lib.rs (99%) rename substrate/{substrate/runtime-io => core/sr-io}/Cargo.toml (64%) rename substrate/{substrate/runtime-io => core/sr-io}/README.adoc (100%) rename substrate/{substrate/pwasm-alloc => core/sr-io}/build.rs (100%) rename substrate/{substrate/runtime-io => core/sr-io}/src/lib.rs (100%) rename substrate/{substrate/runtime-io => core/sr-io}/with_std.rs (98%) rename substrate/{substrate/runtime-io => core/sr-io}/without_std.rs (99%) create mode 100644 substrate/core/sr-primitives/Cargo.toml rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/bft.rs (100%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/generic/block.rs (100%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/generic/checked_extrinsic.rs (89%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/generic/digest.rs (100%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/generic/header.rs (100%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/generic/mod.rs (100%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/generic/tests.rs (100%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/generic/unchecked_extrinsic.rs (100%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/lib.rs (98%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/testing.rs (91%) rename substrate/{substrate/runtime/primitives => core/sr-primitives}/src/traits.rs (99%) rename substrate/{substrate/runtime-sandbox => core/sr-sandbox}/Cargo.toml (56%) rename substrate/{substrate/runtime-sandbox => core/sr-sandbox}/README.adoc (100%) rename substrate/{substrate/runtime-io => core/sr-sandbox}/build.rs (100%) mode change 100644 => 100755 rename substrate/{substrate/runtime-sandbox => core/sr-sandbox}/src/lib.rs (98%) rename substrate/{substrate/runtime-sandbox => core/sr-sandbox}/with_std.rs (100%) rename substrate/{substrate/runtime-sandbox => core/sr-sandbox}/without_std.rs (100%) rename substrate/{substrate/runtime-std => core/sr-std}/Cargo.toml (66%) rename substrate/{substrate/runtime-std => core/sr-std}/README.adoc (100%) rename substrate/{substrate/runtime-std => core/sr-std}/build.rs (100%) rename substrate/{substrate/runtime-std => core/sr-std}/src/lib.rs (100%) rename substrate/{substrate/runtime-std => core/sr-std}/with_std.rs (100%) rename substrate/{substrate/runtime-std => core/sr-std}/without_std.rs (100%) create mode 100644 substrate/core/sr-version/Cargo.toml rename substrate/{substrate/runtime/version => core/sr-version}/src/lib.rs (96%) rename substrate/{substrate => core}/state-db/Cargo.toml (51%) rename substrate/{substrate => core}/state-db/README.adoc (100%) rename substrate/{substrate => core}/state-db/src/lib.rs (99%) rename substrate/{substrate => core}/state-db/src/pruning.rs (100%) rename substrate/{substrate => core}/state-db/src/test.rs (100%) rename substrate/{substrate => core}/state-db/src/unfinalized.rs (100%) rename substrate/{substrate => core}/state-machine/Cargo.toml (86%) rename substrate/{substrate => core}/state-machine/README.adoc (100%) rename substrate/{substrate => core}/state-machine/src/backend.rs (100%) rename substrate/{substrate => core}/state-machine/src/ext.rs (100%) rename substrate/{substrate => core}/state-machine/src/lib.rs (99%) rename substrate/{substrate => core}/state-machine/src/proving_backend.rs (100%) rename substrate/{substrate => core}/state-machine/src/testing.rs (100%) rename substrate/{substrate => core}/state-machine/src/trie_backend.rs (100%) rename substrate/{substrate => core}/telemetry/Cargo.toml (100%) rename substrate/{substrate => core}/telemetry/README.adoc (100%) rename substrate/{substrate => core}/telemetry/src/lib.rs (100%) rename substrate/{substrate => core}/test-client/Cargo.toml (63%) rename substrate/{substrate => core}/test-client/README.adoc (100%) rename substrate/{substrate => core}/test-client/src/block_builder_ext.rs (100%) rename substrate/{substrate => core}/test-client/src/client_ext.rs (100%) rename substrate/{substrate => core}/test-client/src/lib.rs (92%) create mode 100644 substrate/core/test-runtime/Cargo.toml rename substrate/{substrate => core}/test-runtime/README.adoc (100%) rename substrate/{substrate => core}/test-runtime/src/genesismap.rs (100%) rename substrate/{substrate => core}/test-runtime/src/lib.rs (90%) rename substrate/{substrate => core}/test-runtime/src/system.rs (100%) rename substrate/{substrate => core}/test-runtime/wasm/Cargo.lock (96%) create mode 100644 substrate/core/test-runtime/wasm/Cargo.toml rename substrate/{substrate => core}/test-runtime/wasm/build.sh (100%) rename substrate/{demo/runtime => core/test-runtime}/wasm/src (100%) delete mode 100644 substrate/demo/api/Cargo.toml delete mode 100644 substrate/demo/cli/Cargo.toml delete mode 100644 substrate/demo/consensus/Cargo.toml delete mode 100644 substrate/demo/executor/Cargo.toml delete mode 100644 substrate/demo/network/Cargo.toml delete mode 100644 substrate/demo/primitives/Cargo.toml delete mode 100644 substrate/demo/runtime/Cargo.toml delete mode 100644 substrate/demo/runtime/wasm/Cargo.toml delete mode 100644 substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm delete mode 100755 substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm delete mode 100644 substrate/demo/service/Cargo.toml delete mode 100644 substrate/demo/transaction-pool/Cargo.toml rename substrate/{substrate => }/environmental/Cargo.toml (100%) rename substrate/{substrate => }/environmental/README.adoc (100%) rename substrate/{substrate => }/environmental/src/lib.rs (100%) rename substrate/{substrate => }/environmental/with_std.rs (100%) rename substrate/{substrate => }/environmental/without_std.rs (100%) rename substrate/{demo => node}/Cargo.toml (91%) create mode 100644 substrate/node/api/Cargo.toml rename substrate/{demo => node}/api/src/lib.rs (92%) rename substrate/{demo => node}/build.rs (73%) create mode 100644 substrate/node/cli/Cargo.toml rename substrate/{demo => node}/cli/src/cli.yml (76%) rename substrate/{demo => node}/cli/src/error.rs (73%) rename substrate/{demo => node}/cli/src/lib.rs (90%) create mode 100644 substrate/node/consensus/Cargo.toml rename substrate/{demo => node}/consensus/README.adoc (100%) rename substrate/{demo => node}/consensus/src/error.rs (82%) rename substrate/{demo => node}/consensus/src/evaluation.rs (84%) rename substrate/{demo => node}/consensus/src/lib.rs (92%) rename substrate/{demo => node}/consensus/src/offline_tracker.rs (92%) rename substrate/{demo => node}/consensus/src/service.rs (93%) create mode 100644 substrate/node/executor/Cargo.toml rename substrate/{demo => node}/executor/src/lib.rs (91%) create mode 100644 substrate/node/network/Cargo.toml rename substrate/{demo => node}/network/src/consensus.rs (93%) rename substrate/{demo => node}/network/src/lib.rs (78%) create mode 100644 substrate/node/primitives/Cargo.toml rename substrate/{demo => node}/primitives/src/lib.rs (83%) create mode 100644 substrate/node/runtime/Cargo.toml rename substrate/{demo => node}/runtime/src/checked_block.rs (88%) rename substrate/{demo => node}/runtime/src/lib.rs (86%) rename substrate/{demo => node}/runtime/wasm/Cargo.lock (88%) create mode 100644 substrate/node/runtime/wasm/Cargo.toml rename substrate/{demo => node}/runtime/wasm/build.sh (90%) rename substrate/{substrate/test-runtime => node/runtime}/wasm/src (100%) create mode 100644 substrate/node/service/Cargo.toml rename substrate/{demo => node}/service/src/chain_spec.rs (92%) rename substrate/{demo => node}/service/src/lib.rs (87%) rename substrate/{demo => node}/src/main.rs (84%) create mode 100644 substrate/node/transaction-pool/Cargo.toml rename substrate/{demo => node}/transaction-pool/src/error.rs (87%) rename substrate/{demo => node}/transaction-pool/src/lib.rs (91%) rename substrate/{substrate => }/pwasm-alloc/Cargo.toml (100%) rename substrate/{substrate => }/pwasm-alloc/README.adoc (100%) rename substrate/{substrate/runtime-sandbox => pwasm-alloc}/build.rs (100%) mode change 100755 => 100644 rename substrate/{substrate => }/pwasm-alloc/src/lib.rs (100%) rename substrate/{substrate => }/pwasm-libc/Cargo.toml (100%) rename substrate/{substrate => }/pwasm-libc/README.adoc (100%) rename substrate/{substrate => }/pwasm-libc/src/lib.rs (100%) delete mode 100755 substrate/scripts/build-demos.sh rename substrate/{substrate/runtime => srml}/README.adoc (100%) create mode 100644 substrate/srml/balances/Cargo.toml rename substrate/{substrate/runtime => srml}/balances/src/address.rs (100%) rename substrate/{substrate/runtime => srml}/balances/src/genesis_config.rs (100%) rename substrate/{substrate/runtime => srml}/balances/src/lib.rs (98%) rename substrate/{substrate/runtime => srml}/balances/src/mock.rs (100%) rename substrate/{substrate/runtime => srml}/balances/src/tests.rs (100%) create mode 100644 substrate/srml/consensus/Cargo.toml rename substrate/{substrate/runtime => srml}/consensus/src/lib.rs (95%) create mode 100644 substrate/srml/contract/Cargo.toml rename substrate/{substrate/runtime => srml}/contract/src/account_db.rs (100%) rename substrate/{substrate/runtime => srml}/contract/src/double_map.rs (100%) rename substrate/{substrate/runtime => srml}/contract/src/exec.rs (100%) rename substrate/{substrate/runtime => srml}/contract/src/gas.rs (100%) rename substrate/{substrate/runtime => srml}/contract/src/genesis_config.rs (100%) rename substrate/{substrate/runtime => srml}/contract/src/lib.rs (95%) rename substrate/{substrate/runtime => srml}/contract/src/tests.rs (100%) rename substrate/{substrate/runtime => srml}/contract/src/vm/env_def/macros.rs (100%) rename substrate/{substrate/runtime => srml}/contract/src/vm/env_def/mod.rs (100%) rename substrate/{substrate/runtime => srml}/contract/src/vm/mod.rs (100%) rename substrate/{substrate/runtime => srml}/contract/src/vm/prepare.rs (100%) create mode 100644 substrate/srml/council/Cargo.toml rename substrate/{substrate/runtime => srml}/council/src/lib.rs (93%) rename substrate/{substrate/runtime => srml}/council/src/motions.rs (98%) rename substrate/{substrate/runtime => srml}/council/src/seats.rs (99%) rename substrate/{substrate/runtime => srml}/council/src/voting.rs (99%) create mode 100644 substrate/srml/democracy/Cargo.toml rename substrate/{substrate/runtime => srml}/democracy/src/lib.rs (97%) rename substrate/{substrate/runtime => srml}/democracy/src/vote_threshold.rs (100%) create mode 100644 substrate/srml/example/Cargo.toml rename substrate/{substrate/runtime => srml}/example/src/lib.rs (97%) create mode 100644 substrate/srml/executive/Cargo.toml rename substrate/{substrate/runtime => srml}/executive/src/lib.rs (93%) create mode 100644 substrate/srml/session/Cargo.toml rename substrate/{substrate/runtime => srml}/session/src/lib.rs (97%) create mode 100644 substrate/srml/staking/Cargo.toml rename substrate/{substrate/runtime => srml}/staking/src/genesis_config.rs (100%) rename substrate/{substrate/runtime => srml}/staking/src/lib.rs (97%) rename substrate/{substrate/runtime => srml}/staking/src/mock.rs (100%) rename substrate/{substrate/runtime => srml}/staking/src/tests.rs (100%) create mode 100644 substrate/srml/support/Cargo.toml rename substrate/{substrate/runtime-support => srml/support}/README.adoc (100%) rename substrate/{substrate/runtime-support => srml/support}/src/dispatch.rs (99%) rename substrate/{substrate/runtime-support => srml/support}/src/event.rs (100%) rename substrate/{substrate/runtime-support => srml/support}/src/hashable.rs (100%) rename substrate/{substrate/runtime-support => srml/support}/src/lib.rs (96%) rename substrate/{substrate/runtime-support => srml/support}/src/metadata.rs (53%) rename substrate/{substrate/runtime-support => srml/support}/src/storage/generator.rs (99%) rename substrate/{substrate/runtime-support => srml/support}/src/storage/mod.rs (100%) create mode 100644 substrate/srml/system/Cargo.toml rename substrate/{substrate/runtime => srml}/system/src/lib.rs (98%) create mode 100644 substrate/srml/timestamp/Cargo.toml rename substrate/{substrate/runtime => srml}/timestamp/src/lib.rs (95%) create mode 100644 substrate/srml/treasury/Cargo.toml rename substrate/{substrate/runtime => srml}/treasury/src/lib.rs (97%) delete mode 100644 substrate/substrate/client/db/Cargo.toml delete mode 100644 substrate/substrate/ed25519/Cargo.toml delete mode 100644 substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm delete mode 100755 substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm delete mode 100644 substrate/substrate/network/Cargo.toml delete mode 100644 substrate/substrate/runtime-support/Cargo.toml delete mode 100644 substrate/substrate/runtime/balances/Cargo.toml delete mode 100644 substrate/substrate/runtime/consensus/Cargo.toml delete mode 100644 substrate/substrate/runtime/contract/Cargo.toml delete mode 100644 substrate/substrate/runtime/council/Cargo.toml delete mode 100644 substrate/substrate/runtime/democracy/Cargo.toml delete mode 100644 substrate/substrate/runtime/example/Cargo.toml delete mode 100644 substrate/substrate/runtime/executive/Cargo.toml delete mode 100644 substrate/substrate/runtime/primitives/Cargo.toml delete mode 100644 substrate/substrate/runtime/session/Cargo.toml delete mode 100644 substrate/substrate/runtime/staking/Cargo.toml delete mode 100644 substrate/substrate/runtime/system/Cargo.toml delete mode 100644 substrate/substrate/runtime/timestamp/Cargo.toml delete mode 100644 substrate/substrate/runtime/treasury/Cargo.toml delete mode 100644 substrate/substrate/runtime/version/Cargo.toml delete mode 100644 substrate/substrate/service/Cargo.toml delete mode 100644 substrate/substrate/test-runtime/Cargo.toml delete mode 100644 substrate/substrate/test-runtime/wasm/Cargo.toml delete mode 100644 substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm delete mode 100755 substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm diff --git a/substrate/.gitignore b/substrate/.gitignore index 2e0651ba43..0a2ce91ba0 100644 --- a/substrate/.gitignore +++ b/substrate/.gitignore @@ -3,13 +3,13 @@ *.swp .wasm-binaries polkadot/runtime/wasm/target/ -substrate/executor/wasm/target/ -substrate/test-runtime/wasm/target/ -substrate/pwasm-alloc/target/ -substrate/pwasm-libc/target/ -substrate/pwasm-alloc/Cargo.lock -substrate/pwasm-libc/Cargo.lock -demo/runtime/wasm/target/ +core/executor/wasm/target/ +core/test-runtime/wasm/target/ +pwasm-alloc/target/ +pwasm-libc/target/ +pwasm-alloc/Cargo.lock +pwasm-libc/Cargo.lock +node/runtime/wasm/target/ **/._* .vscode polkadot.* diff --git a/substrate/.gitlab-ci.yml b/substrate/.gitlab-ci.yml index f4d781880b..cc9e3985e6 100644 --- a/substrate/.gitlab-ci.yml +++ b/substrate/.gitlab-ci.yml @@ -50,7 +50,6 @@ test:rust:stable: &test - ./scripts/init.sh - export PATH="${CI_PROJECT_DIR}/cargo/bin/:$PATH" - ./scripts/build.sh - - ./scripts/build-demos.sh - time cargo test --all --release tags: - rust-stable @@ -74,7 +73,6 @@ build:linux:ubuntu:amd64: &build - ./scripts/init.sh - export PATH="${CI_PROJECT_DIR}/cargo/bin/:$PATH" - ./scripts/build.sh - - ./scripts/build-demos.sh - cargo build --release <<: *collect_artifacts tags: diff --git a/substrate/CONTRIBUTING.adoc b/substrate/CONTRIBUTING.adoc index b789e03ed1..32976ad775 100644 --- a/substrate/CONTRIBUTING.adoc +++ b/substrate/CONTRIBUTING.adoc @@ -18,9 +18,9 @@ There are a few basic ground-rules for contributors (including the maintainer(s) Merging pull requests once CI is successful: -. A pull request that does not alter any logic (e.g. comments, dependencies, docs) may be tagged https://github.com/paritytech/substrate/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3AA2-insubstantial[`insubstantial`] and merged by its author. +. A pull request that does not alter any logic (e.g. comments, dependencies, docs) may be tagged https://github.com/paritytech/core/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3AA2-insubstantial[`insubstantial`] and merged by its author. . A pull request with no large change to logic that is an urgent fix may be merged after a non-author contributor has reviewed it well. -. All other PRs should sit for 48 hours with the https://github.com/paritytech/substrate/pulls?q=is%3Apr+is%3Aopen+label%3AA0-pleasereview[`pleasereview`] tag in order to garner feedback. +. All other PRs should sit for 48 hours with the https://github.com/paritytech/core/pulls?q=is%3Apr+is%3Aopen+label%3AA0-pleasereview[`pleasereview`] tag in order to garner feedback. . No PR should be merged until all reviews' comments are addressed. .Reviewing pull requests: diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index 14ab7f229b..6d4ab0eac7 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -402,189 +402,6 @@ dependencies = [ "tempfile 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "demo-api" -version = "0.1.0" -dependencies = [ - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "substrate-client 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", -] - -[[package]] -name = "demo-cli" -version = "0.1.0" -dependencies = [ - "demo-service 0.1.0", - "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-cli 0.3.0", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-consensus" -version = "0.1.0" -dependencies = [ - "demo-api 0.1.0", - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "demo-transaction-pool 0.1.0", - "ed25519 0.1.0", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-bft 0.1.0", - "substrate-client 0.1.0", - "substrate-codec 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-executor" -version = "0.1.0" -dependencies = [ - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "ed25519 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-executor 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-staking 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", - "substrate-runtime-treasury 0.1.0", - "substrate-state-machine 0.1.0", - "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-network" -version = "0.1.0" -dependencies = [ - "demo-api 0.1.0", - "demo-consensus 0.1.0", - "demo-primitives 0.1.0", - "ed25519 0.1.0", - "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-bft 0.1.0", - "substrate-network 0.1.0", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-primitives" -version = "0.1.0" -dependencies = [ - "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-serializer 0.1.0", -] - -[[package]] -name = "demo-runtime" -version = "0.1.0" -dependencies = [ - "demo-primitives 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-contract 0.1.0", - "substrate-runtime-council 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-executive 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-staking 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", - "substrate-runtime-treasury 0.1.0", - "substrate-runtime-version 0.1.0", -] - -[[package]] -name = "demo-service" -version = "0.1.0" -dependencies = [ - "demo-api 0.1.0", - "demo-consensus 0.1.0", - "demo-executor 0.1.0", - "demo-network 0.1.0", - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "demo-transaction-pool 0.1.0", - "ed25519 0.1.0", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-client 0.1.0", - "substrate-network 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-service 0.3.0", - "substrate-telemetry 0.3.0", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-transaction-pool" -version = "0.1.0" -dependencies = [ - "demo-api 0.1.0", - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "ed25519 0.1.0", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-client 0.1.0", - "substrate-codec 0.1.0", - "substrate-extrinsic-pool 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", -] - [[package]] name = "difference" version = "1.0.0" @@ -608,18 +425,6 @@ name = "dtoa" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ed25519" -version = "0.1.0" -dependencies = [ - "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "edit-distance" version = "2.0.1" @@ -1693,6 +1498,184 @@ dependencies = [ "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "node-api" +version = "0.1.0" +dependencies = [ + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "substrate-client 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "node-cli" +version = "0.1.0" +dependencies = [ + "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-service 0.1.0", + "substrate-cli 0.3.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-consensus" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-api 0.1.0", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "node-transaction-pool 0.1.0", + "parity-codec 0.1.0", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "substrate-bft 0.1.0", + "substrate-client 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-executor" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "parity-codec 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-session 0.1.0", + "srml-staking 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "srml-treasury 0.1.0", + "substrate-executor 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", + "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-network" +version = "0.1.0" +dependencies = [ + "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "node-api 0.1.0", + "node-consensus 0.1.0", + "node-primitives 0.1.0", + "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-bft 0.1.0", + "substrate-network 0.1.0", + "substrate-primitives 0.1.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-primitives" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", + "substrate-serializer 0.1.0", +] + +[[package]] +name = "node-runtime" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-contract 0.1.0", + "srml-council 0.1.0", + "srml-democracy 0.1.0", + "srml-executive 0.1.0", + "srml-session 0.1.0", + "srml-staking 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "srml-treasury 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "node-service" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-api 0.1.0", + "node-consensus 0.1.0", + "node-executor 0.1.0", + "node-network 0.1.0", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "node-transaction-pool 0.1.0", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "substrate-client 0.1.0", + "substrate-network 0.1.0", + "substrate-primitives 0.1.0", + "substrate-service 0.3.0", + "substrate-telemetry 0.3.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-transaction-pool" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-api 0.1.0", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "parity-codec 0.1.0", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "substrate-client 0.1.0", + "substrate-extrinsic-pool 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "nodrop" version = "0.1.12" @@ -1764,6 +1747,23 @@ name = "parity-bytes" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "parity-codec" +version = "0.1.0" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", + "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parity-crypto" version = "0.1.0" @@ -2399,6 +2399,322 @@ dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "sr-io" +version = "0.1.0" +dependencies = [ + "environmental 0.1.0", + "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", + "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-primitives" +version = "0.1.0" +dependencies = [ + "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "sr-sandbox" +version = "0.1.0" +dependencies = [ + "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", + "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-std" +version = "0.1.0" +dependencies = [ + "pwasm-alloc 0.1.0", + "pwasm-libc 0.1.0", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-version" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", +] + +[[package]] +name = "srml-balances" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-consensus" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-contract" +version = "0.1.0" +dependencies = [ + "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", + "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "srml-council" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-democracy 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-democracy" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-example" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-executive" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-session" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-staking" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-session 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-support" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-metadata 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-system" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-timestamp" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-treasury" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "stable_deref_trait" version = "1.0.0" @@ -2418,7 +2734,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "subkey" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", ] @@ -2428,9 +2743,9 @@ name = "substrate" version = "0.1.0" dependencies = [ "ctrlc 3.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "demo-cli 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "node-cli 0.1.0", "vergen 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2438,19 +2753,17 @@ dependencies = [ name = "substrate-bft" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "sr-primitives 0.1.0", + "sr-version 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-version 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2473,10 +2786,10 @@ dependencies = [ "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-network 0.1.0", "substrate-network-libp2p 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-service 0.3.0", "substrate-telemetry 0.3.0", "sysinfo 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2488,7 +2801,6 @@ dependencies = [ name = "substrate-client" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2496,18 +2808,18 @@ dependencies = [ "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", "substrate-bft 0.1.0", - "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", + "substrate-metadata 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", "substrate-state-machine 0.1.0", "substrate-telemetry 0.3.0", "substrate-test-client 0.1.0", @@ -2524,54 +2836,35 @@ dependencies = [ "kvdb-rocksdb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-client 0.1.0", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-executor 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", "substrate-state-db 0.1.0", "substrate-state-machine 0.1.0", ] -[[package]] -name = "substrate-codec" -version = "0.1.0" -dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-codec-derive" -version = "0.1.0" -dependencies = [ - "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-executor" version = "0.1.0" dependencies = [ "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "sr-io 0.1.0", + "sr-version 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-version 0.1.0", "substrate-serializer 0.1.0", "substrate-state-machine 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2587,12 +2880,12 @@ dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "sr-primitives 0.1.0", "substrate-keyring 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-test-client 0.1.0", "transaction-pool 1.13.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2601,16 +2894,15 @@ dependencies = [ name = "substrate-keyring" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", ] [[package]] name = "substrate-keystore" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-crypto 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2623,17 +2915,24 @@ dependencies = [ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-metadata" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", +] + [[package]] name = "substrate-misbehavior-check" version = "0.1.0" dependencies = [ + "parity-codec 0.1.0", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", "substrate-bft 0.1.0", - "substrate-codec 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", ] [[package]] @@ -2641,22 +2940,21 @@ name = "substrate-network" version = "0.1.0" dependencies = [ "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519 0.1.0", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-io 1.12.0 (git+https://github.com/paritytech/parity.git)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-client 0.1.0", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-network-libp2p 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-test-client 0.1.0", ] @@ -2692,6 +2990,7 @@ dependencies = [ name = "substrate-primitives" version = "0.1.0" dependencies = [ + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2699,19 +2998,22 @@ dependencies = [ "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-runtime-std 0.1.0", + "sr-std 0.1.0", "substrate-serializer 0.1.0", "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2725,16 +3027,16 @@ dependencies = [ "jsonrpc-macros 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-pubsub 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-version 0.1.0", "substrate-client 0.1.0", - "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-extrinsic-pool 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-version 0.1.0", "substrate-state-machine 0.1.0", "substrate-test-client 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2750,327 +3052,8 @@ dependencies = [ "jsonrpc-ws-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-rpc 0.1.0", - "substrate-runtime-primitives 0.1.0", -] - -[[package]] -name = "substrate-runtime-balances" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-consensus" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-contract" -version = "0.1.0" -dependencies = [ - "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-sandbox 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-council" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-democracy" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-example" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-executive" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-io" -version = "0.1.0" -dependencies = [ - "ed25519 0.1.0", - "environmental 0.1.0", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-state-machine 0.1.0", - "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-primitives" -version = "0.1.0" -dependencies = [ - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", -] - -[[package]] -name = "substrate-runtime-sandbox" -version = "0.1.0" -dependencies = [ - "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", - "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-session" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", -] - -[[package]] -name = "substrate-runtime-staking" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-sandbox 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", -] - -[[package]] -name = "substrate-runtime-std" -version = "0.1.0" -dependencies = [ - "pwasm-alloc 0.1.0", - "pwasm-libc 0.1.0", - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-support" -version = "0.1.0" -dependencies = [ - "ed25519 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", -] - -[[package]] -name = "substrate-runtime-system" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", -] - -[[package]] -name = "substrate-runtime-timestamp" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-treasury" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-version" -version = "0.1.0" -dependencies = [ - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] @@ -3090,14 +3073,16 @@ dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-client-db 0.1.0", - "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-extrinsic-pool 0.1.0", "substrate-keystore 0.1.0", @@ -3105,8 +3090,6 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-rpc 0.1.0", "substrate-rpc-servers 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-telemetry 0.3.0", "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3118,9 +3101,9 @@ version = "0.1.0" dependencies = [ "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", ] @@ -3134,10 +3117,10 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-primitives 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3161,15 +3144,15 @@ name = "substrate-test-client" version = "0.1.0" dependencies = [ "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "srml-support 0.1.0", "substrate-bft 0.1.0", "substrate-client 0.1.0", - "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", "substrate-test-runtime 0.1.0", ] @@ -3177,20 +3160,19 @@ dependencies = [ name = "substrate-test-runtime" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", + "srml-support 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-version 0.1.0", ] [[package]] diff --git a/substrate/Cargo.toml b/substrate/Cargo.toml index a0550303dc..81ec49dc99 100644 --- a/substrate/Cargo.toml +++ b/substrate/Cargo.toml @@ -1,63 +1,64 @@ [workspace] members = [ - "substrate/bft", - "substrate/cli", - "substrate/client", - "substrate/client/db", - "substrate/codec", - "substrate/codec/derive", - "substrate/environmental", - "substrate/executor", - "substrate/extrinsic-pool", - "substrate/keyring", - "substrate/misbehavior-check", - "substrate/network", - "substrate/primitives", - "substrate/rpc", - "substrate/rpc-servers", - "substrate/runtime-io", - "substrate/runtime-sandbox", - "substrate/runtime-std", - "substrate/runtime-support", - "substrate/runtime/balances", - "substrate/runtime/consensus", - "substrate/runtime/contract", - "substrate/runtime/council", - "substrate/runtime/democracy", - "substrate/runtime/example", - "substrate/runtime/executive", - "substrate/runtime/primitives", - "substrate/runtime/session", - "substrate/runtime/staking", - "substrate/runtime/system", - "substrate/runtime/timestamp", - "substrate/runtime/treasury", - "substrate/runtime/version", - "substrate/serializer", - "substrate/service", - "substrate/state-db", - "substrate/state-machine", - "substrate/test-runtime", - "substrate/telemetry", - "substrate/keystore", - "demo", - "demo/cli", - "demo/api", - "demo/consensus", - "demo/executor", - "demo/network", - "demo/primitives", - "demo/runtime", - "demo/service", - "demo/transaction-pool", + "codec", + "codec/derive", + "environmental", + "core/bft", + "core/cli", + "core/client", + "core/client/db", + "core/executor", + "core/extrinsic-pool", + "core/keyring", + "core/metadata", + "core/misbehavior-check", + "core/network", + "core/primitives", + "core/rpc", + "core/rpc-servers", + "core/sr-io", + "core/sr-sandbox", + "core/sr-std", + "core/sr-version", + "srml/support", + "srml/balances", + "srml/consensus", + "srml/contract", + "srml/council", + "srml/democracy", + "srml/example", + "srml/executive", + "core/sr-primitives", + "srml/session", + "srml/staking", + "srml/system", + "srml/timestamp", + "srml/treasury", + "core/serializer", + "core/service", + "core/state-db", + "core/state-machine", + "core/test-runtime", + "core/telemetry", + "core/keystore", + "node", + "node/cli", + "node/api", + "node/consensus", + "node/executor", + "node/network", + "node/primitives", + "node/runtime", + "node/service", + "node/transaction-pool", "subkey", ] exclude = [ - "demo/runtime/wasm", - "substrate/executor/wasm", - "substrate/pwasm-alloc", - "substrate/pwasm-libc", - "substrate/test-runtime/wasm", + "node/runtime/wasm", + "core/executor/wasm", + "pwasm-alloc", + "pwasm-libc", + "core/test-runtime/wasm", ] [badges] diff --git a/substrate/README.adoc b/substrate/README.adoc index f1502ca331..a6d7ab30c6 100644 --- a/substrate/README.adoc +++ b/substrate/README.adoc @@ -145,7 +145,6 @@ Then build the code: [source, shell] ---- ./scripts/build.sh # Builds the WebAssembly binaries -./scripts/build-demos.sh # Builds the WebAssembly binaries cargo build # Builds all native code ---- diff --git a/substrate/ci/script.sh b/substrate/ci/script.sh index 812da2d816..7eee447bb0 100755 --- a/substrate/ci/script.sh +++ b/substrate/ci/script.sh @@ -24,6 +24,5 @@ case $TARGET in # Install prerequisites and build all wasm projects ./scripts/init.sh ./scripts/build.sh - ./scripts/build-demos.sh ;; esac diff --git a/substrate/substrate/codec/Cargo.toml b/substrate/codec/Cargo.toml similarity index 91% rename from substrate/substrate/codec/Cargo.toml rename to substrate/codec/Cargo.toml index a228686e90..00bbed4985 100644 --- a/substrate/substrate/codec/Cargo.toml +++ b/substrate/codec/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-codec" +name = "parity-codec" description = "Serialization and deserialization codec for runtime values" version = "0.1.0" authors = ["Parity Technologies "] diff --git a/substrate/substrate/codec/README.adoc b/substrate/codec/README.adoc similarity index 100% rename from substrate/substrate/codec/README.adoc rename to substrate/codec/README.adoc diff --git a/substrate/substrate/codec/derive/Cargo.toml b/substrate/codec/derive/Cargo.toml similarity index 81% rename from substrate/substrate/codec/derive/Cargo.toml rename to substrate/codec/derive/Cargo.toml index d5ccd9fdd5..f92b1f5981 100644 --- a/substrate/substrate/codec/derive/Cargo.toml +++ b/substrate/codec/derive/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-codec-derive" +name = "parity-codec-derive" description = "Serialization and deserialization derive macro" version = "0.1.0" authors = ["Parity Technologies "] @@ -13,7 +13,7 @@ quote = "0.6" proc-macro2 = "0.4" [dev-dependencies] -substrate-codec = { path = "../" } +parity-codec = { path = "../" } [features] default = ["std"] diff --git a/substrate/substrate/codec/derive/src/decode.rs b/substrate/codec/derive/src/decode.rs similarity index 100% rename from substrate/substrate/codec/derive/src/decode.rs rename to substrate/codec/derive/src/decode.rs diff --git a/substrate/substrate/codec/derive/src/encode.rs b/substrate/codec/derive/src/encode.rs similarity index 100% rename from substrate/substrate/codec/derive/src/encode.rs rename to substrate/codec/derive/src/encode.rs diff --git a/substrate/substrate/codec/derive/src/lib.rs b/substrate/codec/derive/src/lib.rs similarity index 100% rename from substrate/substrate/codec/derive/src/lib.rs rename to substrate/codec/derive/src/lib.rs diff --git a/substrate/substrate/codec/derive/tests/mod.rs b/substrate/codec/derive/tests/mod.rs similarity index 98% rename from substrate/substrate/codec/derive/tests/mod.rs rename to substrate/codec/derive/tests/mod.rs index 6b3260f8f6..f7b4b77be3 100644 --- a/substrate/substrate/codec/derive/tests/mod.rs +++ b/substrate/codec/derive/tests/mod.rs @@ -14,10 +14,10 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -extern crate substrate_codec as codec; +extern crate parity_codec as codec; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; use codec::{Encode, Decode}; diff --git a/substrate/substrate/codec/src/codec.rs b/substrate/codec/src/codec.rs similarity index 100% rename from substrate/substrate/codec/src/codec.rs rename to substrate/codec/src/codec.rs diff --git a/substrate/substrate/codec/src/joiner.rs b/substrate/codec/src/joiner.rs similarity index 100% rename from substrate/substrate/codec/src/joiner.rs rename to substrate/codec/src/joiner.rs diff --git a/substrate/substrate/codec/src/keyedvec.rs b/substrate/codec/src/keyedvec.rs similarity index 100% rename from substrate/substrate/codec/src/keyedvec.rs rename to substrate/codec/src/keyedvec.rs diff --git a/substrate/substrate/codec/src/lib.rs b/substrate/codec/src/lib.rs similarity index 100% rename from substrate/substrate/codec/src/lib.rs rename to substrate/codec/src/lib.rs diff --git a/substrate/substrate/bft/Cargo.toml b/substrate/core/bft/Cargo.toml similarity index 59% rename from substrate/substrate/bft/Cargo.toml rename to substrate/core/bft/Cargo.toml index f15f24a0d5..96e1c6a523 100644 --- a/substrate/substrate/bft/Cargo.toml +++ b/substrate/core/bft/Cargo.toml @@ -5,12 +5,10 @@ authors = ["Parity Technologies "] [dependencies] futures = "0.1.17" -substrate-codec = { path = "../codec" } +parity-codec = { path = "../../codec" } substrate-primitives = { path = "../primitives" } -substrate-runtime-support = { path = "../runtime-support" } -substrate-runtime-primitives = { path = "../runtime/primitives" } -substrate-runtime-version = { path = "../runtime/version" } -ed25519 = { path = "../ed25519" } +sr-primitives = { path = "../sr-primitives" } +sr-version = { path = "../sr-version" } tokio = "0.1.7" parking_lot = "0.4" error-chain = "0.12" diff --git a/substrate/substrate/bft/README.adoc b/substrate/core/bft/README.adoc similarity index 100% rename from substrate/substrate/bft/README.adoc rename to substrate/core/bft/README.adoc diff --git a/substrate/substrate/bft/src/error.rs b/substrate/core/bft/src/error.rs similarity index 96% rename from substrate/substrate/bft/src/error.rs rename to substrate/core/bft/src/error.rs index d8de262364..fb41e7efa9 100644 --- a/substrate/substrate/bft/src/error.rs +++ b/substrate/core/bft/src/error.rs @@ -16,6 +16,7 @@ //! Error types in the BFT service. use runtime_version::RuntimeVersion; +use primitives::ed25519; error_chain! { errors { @@ -44,7 +45,7 @@ error_chain! { } /// Error checking signature - InvalidSignature(s: ::ed25519::Signature, a: ::primitives::AuthorityId) { + InvalidSignature(s: ed25519::Signature, a: ::primitives::AuthorityId) { description("Message signature is invalid"), display("Message signature {:?} by {:?} is invalid.", s, a), } diff --git a/substrate/substrate/bft/src/lib.rs b/substrate/core/bft/src/lib.rs similarity index 99% rename from substrate/substrate/bft/src/lib.rs rename to substrate/core/bft/src/lib.rs index 4b9d3be90c..469f9710a3 100644 --- a/substrate/substrate/bft/src/lib.rs +++ b/substrate/core/bft/src/lib.rs @@ -36,12 +36,10 @@ pub mod error; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_support as runtime_support; -extern crate substrate_runtime_primitives as runtime_primitives; -extern crate substrate_runtime_version as runtime_version; -extern crate ed25519; +extern crate sr_primitives as runtime_primitives; +extern crate sr_version as runtime_version; extern crate tokio; extern crate parking_lot; extern crate rhododendron; @@ -59,11 +57,10 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use std::time::{Instant, Duration}; use codec::Encode; -use ed25519::LocalizedSignature; use runtime_primitives::generic::BlockId; use runtime_primitives::traits::{Block, Header}; use runtime_primitives::bft::{Message as PrimitiveMessage, Action as PrimitiveAction, Justification as PrimitiveJustification}; -use primitives::AuthorityId; +use primitives::{AuthorityId, ed25519, ed25519::LocalizedSignature}; use futures::{Async, Stream, Sink, Future, IntoFuture}; use futures::sync::oneshot; @@ -316,7 +313,7 @@ impl> rhododendron::Context for BftInstance use std::collections::HashSet; let collect_pubkeys = |participants: HashSet<&Self::AuthorityId>| participants.into_iter() - .map(|p| ::ed25519::Public::from_raw(p.0)) + .map(|p| ed25519::Public::from_raw(p.0)) .collect::>(); let round_timeout = self.round_timeout_duration(next_round); diff --git a/substrate/substrate/cli/Cargo.toml b/substrate/core/cli/Cargo.toml similarity index 59% rename from substrate/substrate/cli/Cargo.toml rename to substrate/core/cli/Cargo.toml index 7ae824c3dc..23107218e2 100644 --- a/substrate/substrate/cli/Cargo.toml +++ b/substrate/core/cli/Cargo.toml @@ -23,12 +23,12 @@ futures = "0.1.17" fdlimit = "0.1" exit-future = "0.1" sysinfo = "0.5.7" -substrate-client = { path = "../../substrate/client" } -substrate-network = { path = "../../substrate/network" } -substrate-network-libp2p = { path = "../../substrate/network-libp2p" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-service = { path = "../../substrate/service" } -substrate-telemetry = { path = "../../substrate/telemetry" } +substrate-client = { path = "../../core/client" } +substrate-network = { path = "../../core/network" } +substrate-network-libp2p = { path = "../../core/network-libp2p" } +sr-primitives = { path = "../../core/sr-primitives" } +substrate-service = { path = "../../core/service" } +substrate-telemetry = { path = "../../core/telemetry" } names = "0.11.0" [build-dependencies] diff --git a/substrate/substrate/cli/README.adoc b/substrate/core/cli/README.adoc similarity index 100% rename from substrate/substrate/cli/README.adoc rename to substrate/core/cli/README.adoc diff --git a/substrate/substrate/cli/build.rs b/substrate/core/cli/build.rs similarity index 100% rename from substrate/substrate/cli/build.rs rename to substrate/core/cli/build.rs diff --git a/substrate/substrate/cli/doc/shell-completion.adoc b/substrate/core/cli/doc/shell-completion.adoc similarity index 100% rename from substrate/substrate/cli/doc/shell-completion.adoc rename to substrate/core/cli/doc/shell-completion.adoc diff --git a/substrate/substrate/cli/src/cli.yml b/substrate/core/cli/src/cli.yml similarity index 100% rename from substrate/substrate/cli/src/cli.yml rename to substrate/core/cli/src/cli.yml diff --git a/substrate/substrate/cli/src/error.rs b/substrate/core/cli/src/error.rs similarity index 100% rename from substrate/substrate/cli/src/error.rs rename to substrate/core/cli/src/error.rs diff --git a/substrate/substrate/cli/src/informant.rs b/substrate/core/cli/src/informant.rs similarity index 100% rename from substrate/substrate/cli/src/informant.rs rename to substrate/core/cli/src/informant.rs diff --git a/substrate/substrate/cli/src/lib.rs b/substrate/core/cli/src/lib.rs similarity index 99% rename from substrate/substrate/cli/src/lib.rs rename to substrate/core/cli/src/lib.rs index 94d8849b05..199f3688ec 100644 --- a/substrate/substrate/cli/src/lib.rs +++ b/substrate/core/cli/src/lib.rs @@ -37,7 +37,7 @@ extern crate sysinfo; extern crate substrate_client as client; extern crate substrate_network as network; extern crate substrate_network_libp2p as network_libp2p; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_service as service; #[macro_use] extern crate slog; // needed until we can reexport `slog_info` from `substrate_telemetry` diff --git a/substrate/substrate/cli/src/panic_hook.rs b/substrate/core/cli/src/panic_hook.rs similarity index 100% rename from substrate/substrate/cli/src/panic_hook.rs rename to substrate/core/cli/src/panic_hook.rs diff --git a/substrate/substrate/client/Cargo.toml b/substrate/core/client/Cargo.toml similarity index 67% rename from substrate/substrate/client/Cargo.toml rename to substrate/core/client/Cargo.toml index 5512b0d658..ab26b99cd0 100644 --- a/substrate/substrate/client/Cargo.toml +++ b/substrate/core/client/Cargo.toml @@ -11,18 +11,17 @@ parking_lot = "0.4" triehash = "0.2" hex-literal = "0.1" futures = "0.1.17" -ed25519 = { path = "../ed25519" } slog = "^2" heapsize = "0.4" substrate-bft = { path = "../bft" } -substrate-codec = { path = "../codec" } +parity-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-primitives = { path = "../primitives" } -substrate-runtime-io = { path = "../runtime-io" } -substrate-runtime-support = { path = "../runtime-support" } -substrate-runtime-primitives = { path = "../runtime/primitives" } +sr-io = { path = "../sr-io" } +substrate-metadata = { path = "../metadata" } +sr-primitives = { path = "../sr-primitives" } substrate-state-machine = { path = "../state-machine" } -substrate-keyring = { path = "../../substrate/keyring" } +substrate-keyring = { path = "../../core/keyring" } substrate-telemetry = { path = "../telemetry" } hashdb = "0.2.1" patricia-trie = "0.2.1" diff --git a/substrate/substrate/client/README.adoc b/substrate/core/client/README.adoc similarity index 100% rename from substrate/substrate/client/README.adoc rename to substrate/core/client/README.adoc diff --git a/substrate/core/client/db/Cargo.toml b/substrate/core/client/db/Cargo.toml new file mode 100644 index 0000000000..cb69ed4856 --- /dev/null +++ b/substrate/core/client/db/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "substrate-client-db" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +parking_lot = "0.4" +log = "0.3" +kvdb = "0.1" +kvdb-rocksdb = "0.1.3" +hashdb = "0.2.1" +memorydb = "0.2.1" +substrate-primitives = { path = "../../../core/primitives" } +sr-primitives = { path = "../../../core/sr-primitives" } +substrate-client = { path = "../../../core/client" } +substrate-state-machine = { path = "../../../core/state-machine" } +parity-codec = { path = "../../../codec" } +parity-codec-derive = { path = "../../../codec/derive" } +substrate-executor = { path = "../../../core/executor" } +substrate-state-db = { path = "../../../core/state-db" } + +[dev-dependencies] +kvdb-memorydb = "0.1" diff --git a/substrate/substrate/client/db/src/cache.rs b/substrate/core/client/db/src/cache.rs similarity index 100% rename from substrate/substrate/client/db/src/cache.rs rename to substrate/core/client/db/src/cache.rs diff --git a/substrate/substrate/client/db/src/lib.rs b/substrate/core/client/db/src/lib.rs similarity index 99% rename from substrate/substrate/client/db/src/lib.rs rename to substrate/core/client/db/src/lib.rs index acbd935ce8..0871b0cfe9 100644 --- a/substrate/substrate/client/db/src/lib.rs +++ b/substrate/core/client/db/src/lib.rs @@ -26,9 +26,8 @@ extern crate memorydb; extern crate parking_lot; extern crate substrate_state_machine as state_machine; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_support as runtime_support; -extern crate substrate_runtime_primitives as runtime_primitives; -extern crate substrate_codec as codec; +extern crate sr_primitives as runtime_primitives; +extern crate parity_codec as codec; extern crate substrate_executor as executor; extern crate substrate_state_db as state_db; @@ -36,7 +35,7 @@ extern crate substrate_state_db as state_db; extern crate log; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[cfg(test)] extern crate kvdb_memorydb; diff --git a/substrate/substrate/client/db/src/light.rs b/substrate/core/client/db/src/light.rs similarity index 100% rename from substrate/substrate/client/db/src/light.rs rename to substrate/core/client/db/src/light.rs diff --git a/substrate/substrate/client/db/src/utils.rs b/substrate/core/client/db/src/utils.rs similarity index 100% rename from substrate/substrate/client/db/src/utils.rs rename to substrate/core/client/db/src/utils.rs diff --git a/substrate/substrate/client/src/backend.rs b/substrate/core/client/src/backend.rs similarity index 100% rename from substrate/substrate/client/src/backend.rs rename to substrate/core/client/src/backend.rs diff --git a/substrate/substrate/client/src/block_builder.rs b/substrate/core/client/src/block_builder.rs similarity index 100% rename from substrate/substrate/client/src/block_builder.rs rename to substrate/core/client/src/block_builder.rs diff --git a/substrate/substrate/client/src/blockchain.rs b/substrate/core/client/src/blockchain.rs similarity index 100% rename from substrate/substrate/client/src/blockchain.rs rename to substrate/core/client/src/blockchain.rs diff --git a/substrate/substrate/client/src/call_executor.rs b/substrate/core/client/src/call_executor.rs similarity index 100% rename from substrate/substrate/client/src/call_executor.rs rename to substrate/core/client/src/call_executor.rs diff --git a/substrate/substrate/client/src/cht.rs b/substrate/core/client/src/cht.rs similarity index 100% rename from substrate/substrate/client/src/cht.rs rename to substrate/core/client/src/cht.rs diff --git a/substrate/substrate/client/src/client.rs b/substrate/core/client/src/client.rs similarity index 99% rename from substrate/substrate/client/src/client.rs rename to substrate/core/client/src/client.rs index 9b82413c6a..f5dc77c116 100644 --- a/substrate/substrate/client/src/client.rs +++ b/substrate/core/client/src/client.rs @@ -23,7 +23,7 @@ use primitives::AuthorityId; use runtime_primitives::{bft::Justification, generic::{BlockId, SignedBlock, Block as RuntimeBlock}}; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, Zero, One, As, NumberFor}; use runtime_primitives::BuildStorage; -use runtime_support::metadata::JSONMetadataDecodable; +use substrate_metadata::JsonMetadataDecodable; use primitives::{Blake2Hasher, RlpCodec}; use primitives::storage::{StorageKey, StorageData}; use codec::{Encode, Decode}; @@ -255,7 +255,7 @@ impl Client where /// Returns the runtime metadata as JSON. pub fn json_metadata(&self, id: &BlockId) -> error::Result { self.executor.call(id, "json_metadata",&[]) - .and_then(|r| Vec::::decode(&mut &r.return_data[..]) + .and_then(|r| Vec::::decode(&mut &r.return_data[..]) .ok_or("JSON Metadata decoding failed".into())) .and_then(|metadata| { let mut json = metadata.into_iter().enumerate().fold(String::from("{"), diff --git a/substrate/substrate/client/src/error.rs b/substrate/core/client/src/error.rs similarity index 100% rename from substrate/substrate/client/src/error.rs rename to substrate/core/client/src/error.rs diff --git a/substrate/substrate/client/src/genesis.rs b/substrate/core/client/src/genesis.rs similarity index 98% rename from substrate/substrate/client/src/genesis.rs rename to substrate/core/client/src/genesis.rs index 93b8244fec..9c7810aedc 100644 --- a/substrate/substrate/client/src/genesis.rs +++ b/substrate/core/client/src/genesis.rs @@ -50,8 +50,7 @@ mod tests { use test_client; use test_client::runtime::genesismap::{GenesisConfig, additional_storage_with_genesis}; use test_client::runtime::{Hash, Transfer, Block, BlockNumber, Header, Digest, Extrinsic}; - use ed25519::{Public, Pair}; - use primitives::{Blake2Hasher, RlpCodec}; + use primitives::{Blake2Hasher, RlpCodec, ed25519::{Public, Pair}}; native_executor_instance!(Executor, test_client::runtime::api::dispatch, test_client::runtime::VERSION, include_bytes!("../../test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm")); diff --git a/substrate/substrate/client/src/in_mem.rs b/substrate/core/client/src/in_mem.rs similarity index 100% rename from substrate/substrate/client/src/in_mem.rs rename to substrate/core/client/src/in_mem.rs diff --git a/substrate/substrate/client/src/lib.rs b/substrate/core/client/src/lib.rs similarity index 90% rename from substrate/substrate/client/src/lib.rs rename to substrate/core/client/src/lib.rs index 127aafe848..fdf8c3c22b 100644 --- a/substrate/substrate/client/src/lib.rs +++ b/substrate/core/client/src/lib.rs @@ -20,18 +20,17 @@ #![recursion_limit="128"] extern crate substrate_bft as bft; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; +extern crate substrate_metadata; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_support as runtime_support; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_io as runtime_io; +extern crate sr_primitives as runtime_primitives; extern crate substrate_state_machine as state_machine; #[cfg(test)] extern crate substrate_keyring as keyring; #[cfg(test)] extern crate substrate_test_client as test_client; #[macro_use] extern crate substrate_telemetry; #[macro_use] extern crate slog; // needed until we can reexport `slog_info` from `substrate_telemetry` -extern crate ed25519; extern crate fnv; extern crate futures; extern crate parking_lot; diff --git a/substrate/substrate/client/src/light/backend.rs b/substrate/core/client/src/light/backend.rs similarity index 100% rename from substrate/substrate/client/src/light/backend.rs rename to substrate/core/client/src/light/backend.rs diff --git a/substrate/substrate/client/src/light/blockchain.rs b/substrate/core/client/src/light/blockchain.rs similarity index 100% rename from substrate/substrate/client/src/light/blockchain.rs rename to substrate/core/client/src/light/blockchain.rs diff --git a/substrate/substrate/client/src/light/call_executor.rs b/substrate/core/client/src/light/call_executor.rs similarity index 100% rename from substrate/substrate/client/src/light/call_executor.rs rename to substrate/core/client/src/light/call_executor.rs diff --git a/substrate/substrate/client/src/light/fetcher.rs b/substrate/core/client/src/light/fetcher.rs similarity index 100% rename from substrate/substrate/client/src/light/fetcher.rs rename to substrate/core/client/src/light/fetcher.rs diff --git a/substrate/substrate/client/src/light/mod.rs b/substrate/core/client/src/light/mod.rs similarity index 100% rename from substrate/substrate/client/src/light/mod.rs rename to substrate/core/client/src/light/mod.rs diff --git a/substrate/substrate/client/src/notifications.rs b/substrate/core/client/src/notifications.rs similarity index 100% rename from substrate/substrate/client/src/notifications.rs rename to substrate/core/client/src/notifications.rs diff --git a/substrate/substrate/executor/Cargo.toml b/substrate/core/executor/Cargo.toml similarity index 76% rename from substrate/substrate/executor/Cargo.toml rename to substrate/core/executor/Cargo.toml index 0c4e658740..9ed88a215e 100644 --- a/substrate/substrate/executor/Cargo.toml +++ b/substrate/core/executor/Cargo.toml @@ -5,13 +5,12 @@ authors = ["Parity Technologies "] [dependencies] error-chain = "0.12" -substrate-codec = { path = "../codec" } -substrate-runtime-io = { path = "../runtime-io" } +parity-codec = { path = "../../codec" } +sr-io = { path = "../sr-io" } substrate-primitives = { path = "../primitives" } substrate-serializer = { path = "../serializer" } substrate-state-machine = { path = "../state-machine" } -substrate-runtime-version = { path = "../runtime/version" } -ed25519 = { path = "../ed25519" } +sr-version = { path = "../sr-version" } serde = "1.0" serde_derive = "1.0" wasmi = "0.4" diff --git a/substrate/substrate/executor/README.adoc b/substrate/core/executor/README.adoc similarity index 100% rename from substrate/substrate/executor/README.adoc rename to substrate/core/executor/README.adoc diff --git a/substrate/substrate/executor/src/error.rs b/substrate/core/executor/src/error.rs similarity index 100% rename from substrate/substrate/executor/src/error.rs rename to substrate/core/executor/src/error.rs diff --git a/substrate/substrate/executor/src/lib.rs b/substrate/core/executor/src/lib.rs similarity index 93% rename from substrate/substrate/executor/src/lib.rs rename to substrate/core/executor/src/lib.rs index 7898411be4..02cdf65c90 100644 --- a/substrate/substrate/executor/src/lib.rs +++ b/substrate/core/executor/src/lib.rs @@ -30,13 +30,12 @@ #![warn(missing_docs)] #![recursion_limit="128"] -extern crate substrate_codec as codec; -extern crate substrate_runtime_io as runtime_io; +extern crate parity_codec as codec; +extern crate sr_io as runtime_io; extern crate substrate_primitives as primitives; extern crate substrate_serializer as serializer; extern crate substrate_state_machine as state_machine; -extern crate substrate_runtime_version as runtime_version; -extern crate ed25519; +extern crate sr_version as runtime_version; extern crate serde; extern crate wasmi; diff --git a/substrate/substrate/executor/src/native_executor.rs b/substrate/core/executor/src/native_executor.rs similarity index 100% rename from substrate/substrate/executor/src/native_executor.rs rename to substrate/core/executor/src/native_executor.rs diff --git a/substrate/substrate/executor/src/sandbox.rs b/substrate/core/executor/src/sandbox.rs similarity index 100% rename from substrate/substrate/executor/src/sandbox.rs rename to substrate/core/executor/src/sandbox.rs diff --git a/substrate/substrate/executor/src/wasm_executor.rs b/substrate/core/executor/src/wasm_executor.rs similarity index 97% rename from substrate/substrate/executor/src/wasm_executor.rs rename to substrate/core/executor/src/wasm_executor.rs index 50488ac285..70d02d0189 100644 --- a/substrate/substrate/executor/src/wasm_executor.rs +++ b/substrate/core/executor/src/wasm_executor.rs @@ -27,7 +27,7 @@ use wasmi::memory_units::{Pages, Bytes}; use state_machine::Externalities; use error::{Error, ErrorKind, Result}; use wasm_utils::UserError; -use primitives::{blake2_256, twox_128, twox_256}; +use primitives::{blake2_256, twox_128, twox_256, ed25519}; use primitives::hexdisplay::HexDisplay; use primitives::sandbox as sandbox_primitives; use primitives::Blake2Hasher; @@ -173,29 +173,29 @@ impl_function_executor!(this: FunctionExecutor<'e, E>, ext_memcpy(dest: *mut u8, src: *const u8, count: usize) -> *mut u8 => { this.memory.copy_nonoverlapping(src as usize, dest as usize, count as usize) .map_err(|_| UserError("Invalid attempt to copy_nonoverlapping in ext_memcpy"))?; - debug_trace!(target: "runtime-io", "memcpy {} from {}, {} bytes", dest, src, count); + debug_trace!(target: "sr-io", "memcpy {} from {}, {} bytes", dest, src, count); Ok(dest) }, ext_memmove(dest: *mut u8, src: *const u8, count: usize) -> *mut u8 => { this.memory.copy(src as usize, dest as usize, count as usize) .map_err(|_| UserError("Invalid attempt to copy in ext_memmove"))?; - debug_trace!(target: "runtime-io", "memmove {} from {}, {} bytes", dest, src, count); + debug_trace!(target: "sr-io", "memmove {} from {}, {} bytes", dest, src, count); Ok(dest) }, ext_memset(dest: *mut u8, val: u32, count: usize) -> *mut u8 => { - debug_trace!(target: "runtime-io", "memset {} with {}, {} bytes", dest, val, count); + debug_trace!(target: "sr-io", "memset {} with {}, {} bytes", dest, val, count); this.memory.clear(dest as usize, val as u8, count as usize) .map_err(|_| UserError("Invalid attempt to clear in ext_memset"))?; Ok(dest) }, ext_malloc(size: usize) -> *mut u8 => { let r = this.heap.allocate(size); - debug_trace!(target: "runtime-io", "malloc {} bytes at {}", size, r); + debug_trace!(target: "sr-io", "malloc {} bytes at {}", size, r); Ok(r) }, ext_free(addr: *mut u8) => { this.heap.deallocate(addr); - debug_trace!(target: "runtime-io", "free {}", addr); + debug_trace!(target: "sr-io", "free {}", addr); Ok(()) }, ext_set_storage(key_data: *const u8, key_len: u32, value_data: *const u8, value_len: u32) => { @@ -359,7 +359,7 @@ impl_function_executor!(this: FunctionExecutor<'e, E>, this.memory.get_into(pubkey_data, &mut pubkey[..]).map_err(|_| UserError("Invalid attempt to get pubkey in ext_ed25519_verify"))?; let msg = this.memory.get(msg_data, msg_len as usize).map_err(|_| UserError("Invalid attempt to get message in ext_ed25519_verify"))?; - Ok(if ::ed25519::verify(&sig, &msg, &pubkey) { + Ok(if ed25519::verify(&sig, &msg, &pubkey) { 0 } else { 5 @@ -389,7 +389,7 @@ impl_function_executor!(this: FunctionExecutor<'e, E>, ext_sandbox_invoke(instance_idx: u32, export_ptr: *const u8, export_len: usize, args_ptr: *const u8, args_len: usize, return_val_ptr: *const u8, return_val_len: usize, state: usize) -> u32 => { use codec::{Decode, Encode}; - trace!(target: "runtime-sandbox", "invoke, instance_idx={}", instance_idx); + trace!(target: "sr-sandbox", "invoke, instance_idx={}", instance_idx); let export = this.memory.get(export_ptr, export_len as usize) .map_err(|_| UserError("Sandbox error")) .and_then(|b| @@ -684,7 +684,7 @@ mod tests { fn ed25519_verify_should_work() { let mut ext = TestExternalities::default(); let test_code = include_bytes!("../wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm"); - let key = ::ed25519::Pair::from_seed(&blake2_256(b"test")); + let key = ed25519::Pair::from_seed(&blake2_256(b"test")); let sig = key.sign(b"all ok!"); let mut calldata = vec![]; calldata.extend_from_slice(key.public().as_ref()); diff --git a/substrate/substrate/executor/src/wasm_utils.rs b/substrate/core/executor/src/wasm_utils.rs similarity index 100% rename from substrate/substrate/executor/src/wasm_utils.rs rename to substrate/core/executor/src/wasm_utils.rs diff --git a/substrate/substrate/executor/wasm/Cargo.lock b/substrate/core/executor/wasm/Cargo.lock similarity index 94% rename from substrate/substrate/executor/wasm/Cargo.lock rename to substrate/core/executor/wasm/Cargo.lock index ed26df817e..9ae42e7b30 100644 --- a/substrate/substrate/executor/wasm/Cargo.lock +++ b/substrate/core/executor/wasm/Cargo.lock @@ -31,6 +31,22 @@ name = "nodrop" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "parity-codec" +version = "0.1.0" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "0.1.0" +dependencies = [ + "proc-macro2 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "plain_hasher" version = "0.2.0" @@ -71,9 +87,9 @@ dependencies = [ name = "runtime-test" version = "0.1.0" dependencies = [ + "sr-io 0.1.0", + "sr-sandbox 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-sandbox 0.1.0", ] [[package]] @@ -108,19 +124,34 @@ version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "substrate-codec" +name = "sr-io" version = "0.1.0" dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] -name = "substrate-codec-derive" +name = "sr-sandbox" version = "0.1.0" dependencies = [ - "proc-macro2 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.7 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "sr-std" +version = "0.1.0" +dependencies = [ + "pwasm-alloc 0.1.0", + "pwasm-libc 0.1.0", + "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -131,46 +162,15 @@ dependencies = [ "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-runtime-std 0.1.0", + "sr-std 0.1.0", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "substrate-runtime-io" -version = "0.1.0" -dependencies = [ - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-std 0.1.0", -] - -[[package]] -name = "substrate-runtime-sandbox" -version = "0.1.0" -dependencies = [ - "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", -] - -[[package]] -name = "substrate-runtime-std" -version = "0.1.0" -dependencies = [ - "pwasm-alloc 0.1.0", - "pwasm-libc 0.1.0", - "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "syn" version = "0.14.7" diff --git a/substrate/substrate/executor/wasm/Cargo.toml b/substrate/core/executor/wasm/Cargo.toml similarity index 59% rename from substrate/substrate/executor/wasm/Cargo.toml rename to substrate/core/executor/wasm/Cargo.toml index 44e0dafe5d..6c650e9463 100644 --- a/substrate/substrate/executor/wasm/Cargo.toml +++ b/substrate/core/executor/wasm/Cargo.toml @@ -7,8 +7,8 @@ authors = ["Parity Technologies "] crate-type = ["cdylib"] [dependencies] -substrate-runtime-io = { path = "../../runtime-io", version = "0.1", default_features = false } -substrate-runtime-sandbox = { path = "../../runtime-sandbox", version = "0.1", default_features = false } +sr-io = { path = "../../sr-io", version = "0.1", default_features = false } +sr-sandbox = { path = "../../sr-sandbox", version = "0.1", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } [profile.release] diff --git a/substrate/substrate/executor/wasm/build.sh b/substrate/core/executor/wasm/build.sh similarity index 100% rename from substrate/substrate/executor/wasm/build.sh rename to substrate/core/executor/wasm/build.sh diff --git a/substrate/substrate/executor/wasm/src/lib.rs b/substrate/core/executor/wasm/src/lib.rs similarity index 97% rename from substrate/substrate/executor/wasm/src/lib.rs rename to substrate/core/executor/wasm/src/lib.rs index 3046fd1f16..3bec626091 100644 --- a/substrate/substrate/executor/wasm/src/lib.rs +++ b/substrate/core/executor/wasm/src/lib.rs @@ -7,8 +7,8 @@ extern crate alloc; use alloc::vec::Vec; #[macro_use] -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_sandbox as sandbox; +extern crate sr_io as runtime_io; +extern crate sr_sandbox as sandbox; extern crate substrate_primitives; use runtime_io::{ diff --git a/substrate/substrate/extrinsic-pool/Cargo.toml b/substrate/core/extrinsic-pool/Cargo.toml similarity index 52% rename from substrate/substrate/extrinsic-pool/Cargo.toml rename to substrate/core/extrinsic-pool/Cargo.toml index ba62e6a382..9de07854a2 100644 --- a/substrate/substrate/extrinsic-pool/Cargo.toml +++ b/substrate/core/extrinsic-pool/Cargo.toml @@ -11,9 +11,9 @@ futures = "0.1" log = "0.3" parking_lot = "0.4" transaction-pool = "1.13.2" -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } +sr-primitives = { path = "../../core/sr-primitives" } [dev-dependencies] -substrate-test-client = { path = "../../substrate/test-client" } -substrate-keyring = { path = "../../substrate/keyring" } -substrate-codec = { path = "../../substrate/codec" } +substrate-test-client = { path = "../../core/test-client" } +substrate-keyring = { path = "../../core/keyring" } +parity-codec = { path = "../../codec" } diff --git a/substrate/substrate/extrinsic-pool/README.adoc b/substrate/core/extrinsic-pool/README.adoc similarity index 100% rename from substrate/substrate/extrinsic-pool/README.adoc rename to substrate/core/extrinsic-pool/README.adoc diff --git a/substrate/substrate/extrinsic-pool/src/error.rs b/substrate/core/extrinsic-pool/src/error.rs similarity index 100% rename from substrate/substrate/extrinsic-pool/src/error.rs rename to substrate/core/extrinsic-pool/src/error.rs diff --git a/substrate/substrate/extrinsic-pool/src/lib.rs b/substrate/core/extrinsic-pool/src/lib.rs similarity index 92% rename from substrate/substrate/extrinsic-pool/src/lib.rs rename to substrate/core/extrinsic-pool/src/lib.rs index bcd2b03c80..f7c6c4bfd2 100644 --- a/substrate/substrate/extrinsic-pool/src/lib.rs +++ b/substrate/core/extrinsic-pool/src/lib.rs @@ -23,7 +23,7 @@ extern crate futures; extern crate parking_lot; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; #[macro_use] extern crate log; @@ -33,7 +33,7 @@ extern crate serde_derive; extern crate transaction_pool as txpool; #[cfg(test)] extern crate substrate_test_client as test_client; #[cfg(test)] extern crate substrate_keyring as keyring; -#[cfg(test)] extern crate substrate_codec as codec; +#[cfg(test)] extern crate parity_codec as codec; pub mod watcher; mod error; diff --git a/substrate/substrate/extrinsic-pool/src/listener.rs b/substrate/core/extrinsic-pool/src/listener.rs similarity index 100% rename from substrate/substrate/extrinsic-pool/src/listener.rs rename to substrate/core/extrinsic-pool/src/listener.rs diff --git a/substrate/substrate/extrinsic-pool/src/pool.rs b/substrate/core/extrinsic-pool/src/pool.rs similarity index 100% rename from substrate/substrate/extrinsic-pool/src/pool.rs rename to substrate/core/extrinsic-pool/src/pool.rs diff --git a/substrate/substrate/extrinsic-pool/src/rotator.rs b/substrate/core/extrinsic-pool/src/rotator.rs similarity index 100% rename from substrate/substrate/extrinsic-pool/src/rotator.rs rename to substrate/core/extrinsic-pool/src/rotator.rs diff --git a/substrate/substrate/extrinsic-pool/src/watcher.rs b/substrate/core/extrinsic-pool/src/watcher.rs similarity index 100% rename from substrate/substrate/extrinsic-pool/src/watcher.rs rename to substrate/core/extrinsic-pool/src/watcher.rs diff --git a/substrate/substrate/keyring/Cargo.toml b/substrate/core/keyring/Cargo.toml similarity index 79% rename from substrate/substrate/keyring/Cargo.toml rename to substrate/core/keyring/Cargo.toml index 69bd55a6f3..04d6c2bd13 100644 --- a/substrate/substrate/keyring/Cargo.toml +++ b/substrate/core/keyring/Cargo.toml @@ -4,6 +4,6 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -ed25519 = { path = "../ed25519" } +substrate-primitives = { path = "../primitives" } hex-literal = { version = "0.1.0" } lazy_static = { version = "1.0" } diff --git a/substrate/substrate/keyring/README.adoc b/substrate/core/keyring/README.adoc similarity index 100% rename from substrate/substrate/keyring/README.adoc rename to substrate/core/keyring/README.adoc diff --git a/substrate/substrate/keyring/src/lib.rs b/substrate/core/keyring/src/lib.rs similarity index 96% rename from substrate/substrate/keyring/src/lib.rs rename to substrate/core/keyring/src/lib.rs index 6f0270c9d4..33869ae7ad 100644 --- a/substrate/substrate/keyring/src/lib.rs +++ b/substrate/core/keyring/src/lib.rs @@ -20,11 +20,12 @@ #[macro_use] extern crate hex_literal; #[macro_use] extern crate lazy_static; -pub extern crate ed25519; +extern crate substrate_primitives; use std::collections::HashMap; use std::ops::Deref; -use ed25519::{Pair, Public, Signature}; +use substrate_primitives::ed25519::{Pair, Public, Signature}; +pub use substrate_primitives::ed25519; /// Set of test accounts. #[derive(Clone, Copy, PartialEq, Eq, Hash)] diff --git a/substrate/substrate/keystore/Cargo.toml b/substrate/core/keystore/Cargo.toml similarity index 91% rename from substrate/substrate/keystore/Cargo.toml rename to substrate/core/keystore/Cargo.toml index eb1da7e020..7ec5444e41 100644 --- a/substrate/substrate/keystore/Cargo.toml +++ b/substrate/core/keystore/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] substrate-primitives = { path = "../primitives" } parity-crypto = { version = "0.1", default_features = false } -ed25519 = { path = "../ed25519" } error-chain = "0.12" hex = "0.3" rand = "0.4" diff --git a/substrate/substrate/keystore/README.adoc b/substrate/core/keystore/README.adoc similarity index 100% rename from substrate/substrate/keystore/README.adoc rename to substrate/core/keystore/README.adoc diff --git a/substrate/substrate/keystore/src/lib.rs b/substrate/core/keystore/src/lib.rs similarity index 98% rename from substrate/substrate/keystore/src/lib.rs rename to substrate/core/keystore/src/lib.rs index 5686e63737..f3eeb4be3f 100644 --- a/substrate/substrate/keystore/src/lib.rs +++ b/substrate/core/keystore/src/lib.rs @@ -21,7 +21,6 @@ extern crate substrate_primitives; extern crate parity_crypto as crypto; extern crate subtle; -extern crate ed25519; extern crate rand; extern crate serde_json; extern crate serde; @@ -41,8 +40,7 @@ use std::path::PathBuf; use std::fs::{self, File}; use std::io::{self, Write}; -use substrate_primitives::hashing::blake2_256; -use ed25519::{Pair, Public, PKCS_LEN}; +use substrate_primitives::{hashing::blake2_256, ed25519::{Pair, Public, PKCS_LEN}}; pub use crypto::KEY_ITERATIONS; diff --git a/substrate/core/metadata/Cargo.toml b/substrate/core/metadata/Cargo.toml new file mode 100644 index 0000000000..f3d068c08b --- /dev/null +++ b/substrate/core/metadata/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "substrate-metadata" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +parity-codec = { path = "../../codec", default_features = false } + +[features] +default = ["std"] +std = [ + "parity-codec/std" +] diff --git a/substrate/substrate/ed25519/README.adoc b/substrate/core/metadata/README.adoc similarity index 88% rename from substrate/substrate/ed25519/README.adoc rename to substrate/core/metadata/README.adoc index 97c10769ee..8f4939087e 100644 --- a/substrate/substrate/ed25519/README.adoc +++ b/substrate/core/metadata/README.adoc @@ -1,5 +1,5 @@ -= ED25519 += Substrate BFT .Summary [source, toml] diff --git a/substrate/core/metadata/src/lib.rs b/substrate/core/metadata/src/lib.rs new file mode 100644 index 0000000000..9267408925 --- /dev/null +++ b/substrate/core/metadata/src/lib.rs @@ -0,0 +1,190 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Decodable variant of the JsonMetadata. +//! +//! This really doesn't belong here, but is necessary for the moment. In the future +//! it should be removed entirely to an external module for shimming on to the +//! codec-encoded metadata. + +#![cfg_attr(not(feature = "std"), no_std)] + +extern crate parity_codec as codec; + +use codec::{Encode, Output}; +#[cfg(feature = "std")] +use codec::{Decode, Input}; + +/// The metadata of a runtime encoded as JSON. +#[derive(Eq)] +#[cfg_attr(feature = "std", derive(Debug))] +pub enum JsonMetadata { + Events { name: &'static str, events: &'static [(&'static str, fn() -> &'static str)] }, + Module { module: &'static str, prefix: &'static str }, + ModuleWithStorage { module: &'static str, prefix: &'static str, storage: &'static str } +} + +impl Encode for JsonMetadata { + fn encode_to(&self, dest: &mut W) { + match self { + JsonMetadata::Events { name, events } => { + 0i8.encode_to(dest); + name.encode_to(dest); + events.iter().fold(0u32, |count, _| count + 1).encode_to(dest); + events + .iter() + .map(|(module, data)| (module, data())) + .for_each(|val| val.encode_to(dest)); + }, + JsonMetadata::Module { module, prefix } => { + 1i8.encode_to(dest); + prefix.encode_to(dest); + module.encode_to(dest); + }, + JsonMetadata::ModuleWithStorage { module, prefix, storage } => { + 2i8.encode_to(dest); + prefix.encode_to(dest); + module.encode_to(dest); + storage.encode_to(dest); + } + } + } +} + +impl PartialEq for JsonMetadata { + fn eq(&self, other: &JsonMetadata) -> bool { + match (self, other) { + ( + JsonMetadata::Events { name: lname, events: left }, + JsonMetadata::Events { name: rname, events: right } + ) => { + lname == rname && left.iter().zip(right.iter()).fold(true, |res, (l, r)| { + res && l.0 == r.0 && l.1() == r.1() + }) + }, + ( + JsonMetadata::Module { prefix: lpre, module: lmod }, + JsonMetadata::Module { prefix: rpre, module: rmod } + ) => { + lpre == rpre && lmod == rmod + }, + ( + JsonMetadata::ModuleWithStorage { prefix: lpre, module: lmod, storage: lstore }, + JsonMetadata::ModuleWithStorage { prefix: rpre, module: rmod, storage: rstore } + ) => { + lpre == rpre && lmod == rmod && lstore == rstore + }, + _ => false, + } + } +} + +/// Utility struct for making `JsonMetadata` decodeable. +#[derive(Eq, PartialEq, Debug)] +#[cfg(feature = "std")] +pub enum JsonMetadataDecodable { + Events { name: String, events: Vec<(String, String)> }, + Module { module: String, prefix: String }, + ModuleWithStorage { module: String, prefix: String, storage: String } +} + +#[cfg(feature = "std")] +impl JsonMetadataDecodable { + /// Returns the instance as JSON string. + /// The first value of the tuple is the name of the metadata type and the second in the JSON string. + pub fn into_json_string(self) -> (&'static str, String) { + match self { + JsonMetadataDecodable::Events { name, events } => { + ( + "events", + format!( + r#"{{ "name": "{}", "events": {{ {} }} }}"#, name, + events.iter().enumerate() + .fold(String::from(""), |mut json, (i, (name, data))| { + if i > 0 { + json.push_str(", "); + } + json.push_str(&format!(r#""{}": {}"#, name, data)); + json + }) + ) + ) + }, + JsonMetadataDecodable::Module { prefix, module } => { + ("module", format!(r#"{{ "prefix": "{}", "module": {} }}"#, prefix, module)) + }, + JsonMetadataDecodable::ModuleWithStorage { prefix, module, storage } => { + ( + "moduleWithStorage", + format!( + r#"{{ "prefix": "{}", "module": {}, "storage": {} }}"#, + prefix, module, storage + ) + ) + } + } + } +} + +#[cfg(feature = "std")] +impl Decode for JsonMetadataDecodable { + fn decode(input: &mut I) -> Option { + i8::decode(input).and_then(|variant| { + match variant { + 0 => String::decode(input) + .and_then(|name| Vec::<(String, String)>::decode(input).map(|events| (name, events))) + .and_then(|(name, events)| Some(JsonMetadataDecodable::Events { name, events })), + 1 => String::decode(input) + .and_then(|prefix| String::decode(input).map(|v| (prefix, v))) + .and_then(|(prefix, module)| Some(JsonMetadataDecodable::Module { prefix, module })), + 2 => String::decode(input) + .and_then(|prefix| String::decode(input).map(|v| (prefix, v))) + .and_then(|(prefix, module)| String::decode(input).map(|v| (prefix, module, v))) + .and_then(|(prefix, module, storage)| Some(JsonMetadataDecodable::ModuleWithStorage { prefix, module, storage })), + _ => None, + } + }) + } +} + +#[cfg(feature = "std")] +impl PartialEq for JsonMetadataDecodable { + fn eq(&self, other: &JsonMetadata) -> bool { + match (self, other) { + ( + JsonMetadataDecodable::Events { name: lname, events: left }, + JsonMetadata::Events { name: rname, events: right } + ) => { + lname == rname && left.iter().zip(right.iter()).fold(true, |res, (l, r)| { + res && l.0 == r.0 && l.1 == r.1() + }) + }, + ( + JsonMetadataDecodable::Module { prefix: lpre, module: lmod }, + JsonMetadata::Module { prefix: rpre, module: rmod } + ) => { + lpre == rpre && lmod == rmod + }, + ( + JsonMetadataDecodable::ModuleWithStorage { prefix: lpre, module: lmod, storage: lstore }, + JsonMetadata::ModuleWithStorage { prefix: rpre, module: rmod, storage: rstore } + ) => { + lpre == rpre && lmod == rmod && lstore == rstore + }, + _ => false, + } + } +} diff --git a/substrate/substrate/misbehavior-check/Cargo.toml b/substrate/core/misbehavior-check/Cargo.toml similarity index 50% rename from substrate/substrate/misbehavior-check/Cargo.toml rename to substrate/core/misbehavior-check/Cargo.toml index aa726c18b1..3ae60d2d30 100644 --- a/substrate/substrate/misbehavior-check/Cargo.toml +++ b/substrate/core/misbehavior-check/Cargo.toml @@ -4,10 +4,10 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -substrate-codec = { path = "../codec", default-features = false } +parity-codec = { path = "../../codec", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } -substrate-runtime-primitives = { path = "../runtime/primitives", default-features = false } -substrate-runtime-io = { path = "../runtime-io", default-features = false } +sr-primitives = { path = "../sr-primitives", default-features = false } +sr-io = { path = "../sr-io", default-features = false } [dev-dependencies] substrate-bft = { path = "../bft" } @@ -16,4 +16,4 @@ substrate-keyring = { path = "../keyring" } [features] default = ["std"] -std = ["substrate-codec/std", "substrate-primitives/std", "substrate-runtime-primitives/std", "substrate-runtime-io/std"] +std = ["parity-codec/std", "substrate-primitives/std", "sr-primitives/std", "sr-io/std"] diff --git a/substrate/substrate/misbehavior-check/README.adoc b/substrate/core/misbehavior-check/README.adoc similarity index 100% rename from substrate/substrate/misbehavior-check/README.adoc rename to substrate/core/misbehavior-check/README.adoc diff --git a/substrate/substrate/misbehavior-check/src/lib.rs b/substrate/core/misbehavior-check/src/lib.rs similarity index 97% rename from substrate/substrate/misbehavior-check/src/lib.rs rename to substrate/core/misbehavior-check/src/lib.rs index eff87ab1e5..69ddb52540 100644 --- a/substrate/substrate/misbehavior-check/src/lib.rs +++ b/substrate/core/misbehavior-check/src/lib.rs @@ -20,10 +20,10 @@ #![cfg_attr(not(feature = "std"), no_std)] -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_io as runtime_io; +extern crate sr_primitives as runtime_primitives; #[cfg(test)] extern crate substrate_bft; diff --git a/substrate/substrate/network-libp2p/Cargo.toml b/substrate/core/network-libp2p/Cargo.toml similarity index 100% rename from substrate/substrate/network-libp2p/Cargo.toml rename to substrate/core/network-libp2p/Cargo.toml diff --git a/substrate/substrate/network-libp2p/README.adoc b/substrate/core/network-libp2p/README.adoc similarity index 100% rename from substrate/substrate/network-libp2p/README.adoc rename to substrate/core/network-libp2p/README.adoc diff --git a/substrate/substrate/network-libp2p/src/connection_filter.rs b/substrate/core/network-libp2p/src/connection_filter.rs similarity index 100% rename from substrate/substrate/network-libp2p/src/connection_filter.rs rename to substrate/core/network-libp2p/src/connection_filter.rs diff --git a/substrate/substrate/network-libp2p/src/custom_proto.rs b/substrate/core/network-libp2p/src/custom_proto.rs similarity index 99% rename from substrate/substrate/network-libp2p/src/custom_proto.rs rename to substrate/core/network-libp2p/src/custom_proto.rs index 72807f21e8..b6c3d5c5d3 100644 --- a/substrate/substrate/network-libp2p/src/custom_proto.rs +++ b/substrate/core/network-libp2p/src/custom_proto.rs @@ -72,7 +72,7 @@ impl RegisteredProtocol { /// passed inside the `RegisteredProtocolOutput`. pub fn new(custom_data: T, protocol: ProtocolId, versions: &[(u8, u8)]) -> Self { - let mut proto_name = Bytes::from_static(b"/substrate/"); + let mut proto_name = Bytes::from_static(b"/core/"); proto_name.extend_from_slice(&protocol); proto_name.extend_from_slice(b"/"); diff --git a/substrate/substrate/network-libp2p/src/error.rs b/substrate/core/network-libp2p/src/error.rs similarity index 100% rename from substrate/substrate/network-libp2p/src/error.rs rename to substrate/core/network-libp2p/src/error.rs diff --git a/substrate/substrate/network-libp2p/src/lib.rs b/substrate/core/network-libp2p/src/lib.rs similarity index 100% rename from substrate/substrate/network-libp2p/src/lib.rs rename to substrate/core/network-libp2p/src/lib.rs diff --git a/substrate/substrate/network-libp2p/src/network_state.rs b/substrate/core/network-libp2p/src/network_state.rs similarity index 100% rename from substrate/substrate/network-libp2p/src/network_state.rs rename to substrate/core/network-libp2p/src/network_state.rs diff --git a/substrate/substrate/network-libp2p/src/service.rs b/substrate/core/network-libp2p/src/service.rs similarity index 99% rename from substrate/substrate/network-libp2p/src/service.rs rename to substrate/core/network-libp2p/src/service.rs index 4e82973893..1f6f54a979 100644 --- a/substrate/substrate/network-libp2p/src/service.rs +++ b/substrate/core/network-libp2p/src/service.rs @@ -630,9 +630,9 @@ fn listener_handle<'a, C>( sender.send( IdentifyInfo { public_key: shared.network_state.local_public_key().clone(), - protocol_version: concat!("substrate/", + protocol_version: concat!("core/", env!("CARGO_PKG_VERSION")).to_owned(), // TODO: ? - agent_version: concat!("substrate/", + agent_version: concat!("core/", env!("CARGO_PKG_VERSION")).to_owned(), listen_addrs: shared.listened_addrs.read().clone(), protocols: Vec::new(), // TODO: protocols_to_report, @@ -771,7 +771,7 @@ fn build_kademlia_response( } /// Handles a newly-opened connection to a remote with a custom protocol -/// (eg. `/substrate/dot/0`). +/// (eg. `/core/dot/0`). /// Returns a future that corresponds to when the handling is finished. fn handle_custom_connection( shared: Arc, diff --git a/substrate/substrate/network-libp2p/src/timeouts.rs b/substrate/core/network-libp2p/src/timeouts.rs similarity index 100% rename from substrate/substrate/network-libp2p/src/timeouts.rs rename to substrate/core/network-libp2p/src/timeouts.rs diff --git a/substrate/substrate/network-libp2p/src/topology.rs b/substrate/core/network-libp2p/src/topology.rs similarity index 100% rename from substrate/substrate/network-libp2p/src/topology.rs rename to substrate/core/network-libp2p/src/topology.rs diff --git a/substrate/substrate/network-libp2p/src/traits.rs b/substrate/core/network-libp2p/src/traits.rs similarity index 100% rename from substrate/substrate/network-libp2p/src/traits.rs rename to substrate/core/network-libp2p/src/traits.rs diff --git a/substrate/substrate/network-libp2p/src/transport.rs b/substrate/core/network-libp2p/src/transport.rs similarity index 100% rename from substrate/substrate/network-libp2p/src/transport.rs rename to substrate/core/network-libp2p/src/transport.rs diff --git a/substrate/substrate/network-libp2p/tests/tests.rs b/substrate/core/network-libp2p/tests/tests.rs similarity index 100% rename from substrate/substrate/network-libp2p/tests/tests.rs rename to substrate/core/network-libp2p/tests/tests.rs diff --git a/substrate/core/network/Cargo.toml b/substrate/core/network/Cargo.toml new file mode 100644 index 0000000000..0e4364b1ff --- /dev/null +++ b/substrate/core/network/Cargo.toml @@ -0,0 +1,29 @@ +[package] +description = "Polkadot network protocol" +name = "substrate-network" +version = "0.1.0" +license = "GPL-3.0" +authors = ["Parity Technologies "] + +[lib] + +[dependencies] +log = "0.3" +parking_lot = "0.4" +error-chain = "0.12" +bitflags = "1.0" +futures = "0.1.17" +linked-hash-map = "0.5" +rustc-hex = "1.0" +ethcore-io = { git = "https://github.com/paritytech/parity.git" } +substrate-primitives = { path = "../../core/primitives" } +substrate-client = { path = "../../core/client" } +sr-primitives = { path = "../../core/sr-primitives" } +parity-codec = { path = "../../codec" } +parity-codec-derive = { path = "../../codec/derive" } +substrate-network-libp2p = { path = "../../core/network-libp2p" } + +[dev-dependencies] +env_logger = "0.4" +substrate-keyring = { path = "../../core/keyring" } +substrate-test-client = { path = "../../core/test-client" } diff --git a/substrate/substrate/network/README.adoc b/substrate/core/network/README.adoc similarity index 100% rename from substrate/substrate/network/README.adoc rename to substrate/core/network/README.adoc diff --git a/substrate/substrate/network/src/blocks.rs b/substrate/core/network/src/blocks.rs similarity index 100% rename from substrate/substrate/network/src/blocks.rs rename to substrate/core/network/src/blocks.rs diff --git a/substrate/substrate/network/src/chain.rs b/substrate/core/network/src/chain.rs similarity index 100% rename from substrate/substrate/network/src/chain.rs rename to substrate/core/network/src/chain.rs diff --git a/substrate/substrate/network/src/config.rs b/substrate/core/network/src/config.rs similarity index 100% rename from substrate/substrate/network/src/config.rs rename to substrate/core/network/src/config.rs diff --git a/substrate/substrate/network/src/consensus_gossip.rs b/substrate/core/network/src/consensus_gossip.rs similarity index 100% rename from substrate/substrate/network/src/consensus_gossip.rs rename to substrate/core/network/src/consensus_gossip.rs diff --git a/substrate/substrate/network/src/error.rs b/substrate/core/network/src/error.rs similarity index 100% rename from substrate/substrate/network/src/error.rs rename to substrate/core/network/src/error.rs diff --git a/substrate/substrate/network/src/import_queue.rs b/substrate/core/network/src/import_queue.rs similarity index 100% rename from substrate/substrate/network/src/import_queue.rs rename to substrate/core/network/src/import_queue.rs diff --git a/substrate/substrate/network/src/io.rs b/substrate/core/network/src/io.rs similarity index 100% rename from substrate/substrate/network/src/io.rs rename to substrate/core/network/src/io.rs diff --git a/substrate/substrate/network/src/lib.rs b/substrate/core/network/src/lib.rs similarity index 93% rename from substrate/substrate/network/src/lib.rs rename to substrate/core/network/src/lib.rs index 14d3d82da5..996504889d 100644 --- a/substrate/substrate/network/src/lib.rs +++ b/substrate/core/network/src/lib.rs @@ -27,16 +27,15 @@ extern crate linked_hash_map; extern crate parking_lot; extern crate substrate_primitives as primitives; extern crate substrate_client as client; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_network_libp2p as network_libp2p; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate futures; -extern crate ed25519; extern crate rustc_hex; #[macro_use] extern crate log; #[macro_use] extern crate bitflags; #[macro_use] extern crate error_chain; -#[macro_use] extern crate substrate_codec_derive; +#[macro_use] extern crate parity_codec_derive; #[cfg(test)] extern crate env_logger; #[cfg(test)] extern crate substrate_keyring as keyring; diff --git a/substrate/substrate/network/src/message.rs b/substrate/core/network/src/message.rs similarity index 99% rename from substrate/substrate/network/src/message.rs rename to substrate/core/network/src/message.rs index 875529f0fe..3bb080e133 100644 --- a/substrate/substrate/network/src/message.rs +++ b/substrate/core/network/src/message.rs @@ -147,9 +147,8 @@ pub struct RemoteReadResponse { /// Generic types. pub mod generic { - use primitives::AuthorityId; + use primitives::{AuthorityId, ed25519}; use runtime_primitives::bft::Justification; - use ed25519; use service::Roles; use super::{ BlockAttributes, RemoteCallResponse, RemoteReadResponse, diff --git a/substrate/substrate/network/src/on_demand.rs b/substrate/core/network/src/on_demand.rs similarity index 100% rename from substrate/substrate/network/src/on_demand.rs rename to substrate/core/network/src/on_demand.rs diff --git a/substrate/substrate/network/src/protocol.rs b/substrate/core/network/src/protocol.rs similarity index 100% rename from substrate/substrate/network/src/protocol.rs rename to substrate/core/network/src/protocol.rs diff --git a/substrate/substrate/network/src/service.rs b/substrate/core/network/src/service.rs similarity index 100% rename from substrate/substrate/network/src/service.rs rename to substrate/core/network/src/service.rs diff --git a/substrate/substrate/network/src/specialization.rs b/substrate/core/network/src/specialization.rs similarity index 100% rename from substrate/substrate/network/src/specialization.rs rename to substrate/core/network/src/specialization.rs diff --git a/substrate/substrate/network/src/sync.rs b/substrate/core/network/src/sync.rs similarity index 100% rename from substrate/substrate/network/src/sync.rs rename to substrate/core/network/src/sync.rs diff --git a/substrate/substrate/network/src/test/mod.rs b/substrate/core/network/src/test/mod.rs similarity index 100% rename from substrate/substrate/network/src/test/mod.rs rename to substrate/core/network/src/test/mod.rs diff --git a/substrate/substrate/network/src/test/sync.rs b/substrate/core/network/src/test/sync.rs similarity index 100% rename from substrate/substrate/network/src/test/sync.rs rename to substrate/core/network/src/test/sync.rs diff --git a/substrate/substrate/primitives/Cargo.toml b/substrate/core/primitives/Cargo.toml similarity index 73% rename from substrate/substrate/primitives/Cargo.toml rename to substrate/core/primitives/Cargo.toml index 206bb24c56..5b28fcfb3e 100644 --- a/substrate/substrate/primitives/Cargo.toml +++ b/substrate/core/primitives/Cargo.toml @@ -5,9 +5,9 @@ authors = ["Parity Technologies "] [dependencies] crunchy = "0.1" -substrate-runtime-std = { path = "../runtime-std", default_features = false } -substrate-codec = { path = "../codec", default_features = false } -substrate-codec-derive = { path = "../codec/derive", default_features = false } +sr-std = { path = "../sr-std", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } elastic-array = {version = "0.10", optional = true } fixed-hash = { version = "0.2.2", default_features = false } rustc-hex = { version = "2.0", default_features = false } @@ -21,7 +21,10 @@ wasmi = { version = "0.4", optional = true } hashdb = { version = "0.2.1", default_features = false } patricia-trie = { version = "0.2.1", optional = true } plain_hasher = { version = "0.2", default_features = false } - +ring = { version = "0.12", optional = true } +untrusted = { version = "0.5", optional = true } +hex-literal = { version = "0.1", optional = true } +base58 = { version = "0.1", optional = true } blake2-rfc = { version = "0.2.18", optional = true } [dev-dependencies] @@ -37,12 +40,16 @@ std = [ "fixed-hash/std", "fixed-hash/heapsizeof", "fixed-hash/libc", - "substrate-codec/std", - "substrate-runtime-std/std", + "parity-codec/std", + "sr-std/std", "serde/std", "rustc-hex/std", "twox-hash", "blake2-rfc", + "ring", + "untrusted", + "hex-literal", + "base58", "serde_derive", "byteorder/std", "patricia-trie", diff --git a/substrate/substrate/primitives/README.adoc b/substrate/core/primitives/README.adoc similarity index 100% rename from substrate/substrate/primitives/README.adoc rename to substrate/core/primitives/README.adoc diff --git a/substrate/substrate/primitives/src/authority_id.rs b/substrate/core/primitives/src/authority_id.rs similarity index 100% rename from substrate/substrate/primitives/src/authority_id.rs rename to substrate/core/primitives/src/authority_id.rs diff --git a/substrate/substrate/primitives/src/bytes.rs b/substrate/core/primitives/src/bytes.rs similarity index 100% rename from substrate/substrate/primitives/src/bytes.rs rename to substrate/core/primitives/src/bytes.rs diff --git a/substrate/substrate/ed25519/src/lib.rs b/substrate/core/primitives/src/ed25519.rs similarity index 95% rename from substrate/substrate/ed25519/src/lib.rs rename to substrate/core/primitives/src/ed25519.rs index a7f419f478..7a95e4307c 100644 --- a/substrate/substrate/ed25519/src/lib.rs +++ b/substrate/core/primitives/src/ed25519.rs @@ -18,20 +18,12 @@ //! Simple Ed25519 API. // end::description[] -extern crate ring; -extern crate base58; -extern crate substrate_primitives as primitives; -extern crate untrusted; -extern crate blake2_rfc; - +use untrusted; +use blake2_rfc; use ring::{rand, signature}; -use primitives::{hash::H512, AuthorityId}; +use {hash::H512, AuthorityId}; use base58::{ToBase58, FromBase58}; -#[cfg(test)] -#[macro_use] -extern crate hex_literal; - /// Alias to 512-bit hash when used in the context of a signature on the relay chain. pub type Signature = H512; @@ -72,11 +64,16 @@ impl ::std::hash::Hash for Public { } } +/// An error type for SS58 decoding. #[derive(Clone, Copy, Eq, PartialEq, Debug)] pub enum PublicError { + /// Bad alphabet. BadBase58, + /// Bad length. BadLength, + /// Unknown version. UnknownVersion, + /// Invalid checksum. InvalidChecksum, } @@ -189,7 +186,7 @@ impl ::std::fmt::Display for Public { impl ::std::fmt::Debug for Public { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { let s = self.to_ss58check(); - write!(f, "{} ({}...)", ::primitives::hexdisplay::HexDisplay::from(&self.0), &s[0..8]) + write!(f, "{} ({}...)", ::hexdisplay::HexDisplay::from(&self.0), &s[0..8]) } } @@ -261,6 +258,7 @@ pub fn verify_strong>(sig: &Signature, message: &[u8], pubkey: } } +/// Something that acts as a signature allowing a message to be verified. pub trait Verifiable { /// Verify something that acts like a signature. fn verify>(&self, message: &[u8], pubkey: P) -> bool; @@ -285,7 +283,7 @@ mod test { fn _test_primitives_signature_and_local_the_same() { fn takes_two(_: T, _: T) { } - takes_two(Signature::default(), primitives::Signature::default()) + takes_two(Signature::default(), ::Signature::default()) } #[test] @@ -310,7 +308,7 @@ mod test { #[test] fn seeded_pair_should_work() { - use primitives::hexdisplay::HexDisplay; + use ::hexdisplay::HexDisplay; let pair = Pair::from_seed(b"12345678901234567890123456789012"); let public = pair.public(); diff --git a/substrate/substrate/primitives/src/hash.rs b/substrate/core/primitives/src/hash.rs similarity index 100% rename from substrate/substrate/primitives/src/hash.rs rename to substrate/core/primitives/src/hash.rs diff --git a/substrate/substrate/primitives/src/hasher.rs b/substrate/core/primitives/src/hasher.rs similarity index 100% rename from substrate/substrate/primitives/src/hasher.rs rename to substrate/core/primitives/src/hasher.rs diff --git a/substrate/substrate/primitives/src/hashing.rs b/substrate/core/primitives/src/hashing.rs similarity index 100% rename from substrate/substrate/primitives/src/hashing.rs rename to substrate/core/primitives/src/hashing.rs diff --git a/substrate/substrate/primitives/src/hexdisplay.rs b/substrate/core/primitives/src/hexdisplay.rs similarity index 100% rename from substrate/substrate/primitives/src/hexdisplay.rs rename to substrate/core/primitives/src/hexdisplay.rs diff --git a/substrate/substrate/primitives/src/lib.rs b/substrate/core/primitives/src/lib.rs similarity index 90% rename from substrate/substrate/primitives/src/lib.rs rename to substrate/core/primitives/src/lib.rs index 5fddf350d8..c5fc9c07f6 100644 --- a/substrate/substrate/primitives/src/lib.rs +++ b/substrate/core/primitives/src/lib.rs @@ -30,11 +30,11 @@ extern crate fixed_hash; #[macro_use] extern crate uint as uint_crate; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; extern crate rustc_hex; extern crate byteorder; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; #[cfg(feature = "std")] extern crate rlp; @@ -45,6 +45,15 @@ extern crate twox_hash; #[cfg(feature = "std")] extern crate blake2_rfc; +#[cfg(feature = "std")] +extern crate ring; +#[cfg(feature = "std")] +extern crate base58; +#[cfg(feature = "std")] +extern crate untrusted; +#[cfg(test)] +#[macro_use] +extern crate hex_literal; #[cfg(feature = "std")] #[macro_use] @@ -60,7 +69,7 @@ extern crate patricia_trie; #[cfg(feature = "std")] extern crate elastic_array; -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[cfg(test)] extern crate substrate_serializer; @@ -90,6 +99,8 @@ pub mod hashing; pub use hashing::{blake2_256, twox_128, twox_256}; #[cfg(feature = "std")] pub mod hexdisplay; +#[cfg(feature = "std")] +pub mod ed25519; pub mod u32_trait; diff --git a/substrate/substrate/primitives/src/rlp_codec.rs b/substrate/core/primitives/src/rlp_codec.rs similarity index 100% rename from substrate/substrate/primitives/src/rlp_codec.rs rename to substrate/core/primitives/src/rlp_codec.rs diff --git a/substrate/substrate/primitives/src/sandbox.rs b/substrate/core/primitives/src/sandbox.rs similarity index 100% rename from substrate/substrate/primitives/src/sandbox.rs rename to substrate/core/primitives/src/sandbox.rs diff --git a/substrate/substrate/primitives/src/storage.rs b/substrate/core/primitives/src/storage.rs similarity index 100% rename from substrate/substrate/primitives/src/storage.rs rename to substrate/core/primitives/src/storage.rs diff --git a/substrate/substrate/primitives/src/tests.rs b/substrate/core/primitives/src/tests.rs similarity index 100% rename from substrate/substrate/primitives/src/tests.rs rename to substrate/core/primitives/src/tests.rs diff --git a/substrate/substrate/primitives/src/u32_trait.rs b/substrate/core/primitives/src/u32_trait.rs similarity index 100% rename from substrate/substrate/primitives/src/u32_trait.rs rename to substrate/core/primitives/src/u32_trait.rs diff --git a/substrate/substrate/primitives/src/uint.rs b/substrate/core/primitives/src/uint.rs similarity index 100% rename from substrate/substrate/primitives/src/uint.rs rename to substrate/core/primitives/src/uint.rs diff --git a/substrate/substrate/rpc-servers/Cargo.toml b/substrate/core/rpc-servers/Cargo.toml similarity index 88% rename from substrate/substrate/rpc-servers/Cargo.toml rename to substrate/core/rpc-servers/Cargo.toml index 6b7038d44a..56a9c62006 100644 --- a/substrate/substrate/rpc-servers/Cargo.toml +++ b/substrate/core/rpc-servers/Cargo.toml @@ -11,4 +11,4 @@ jsonrpc-ws-server = { git = "https://github.com/paritytech/jsonrpc.git" } log = "0.3" serde = "1.0" substrate-rpc = { path = "../rpc", version = "0.1" } -substrate-runtime-primitives = { path = "../runtime/primitives" } +sr-primitives = { path = "../sr-primitives" } diff --git a/substrate/substrate/rpc-servers/README.adoc b/substrate/core/rpc-servers/README.adoc similarity index 100% rename from substrate/substrate/rpc-servers/README.adoc rename to substrate/core/rpc-servers/README.adoc diff --git a/substrate/substrate/rpc-servers/src/lib.rs b/substrate/core/rpc-servers/src/lib.rs similarity index 92% rename from substrate/substrate/rpc-servers/src/lib.rs rename to substrate/core/rpc-servers/src/lib.rs index 6139d32aec..8d9620535c 100644 --- a/substrate/substrate/rpc-servers/src/lib.rs +++ b/substrate/core/rpc-servers/src/lib.rs @@ -27,13 +27,13 @@ extern crate jsonrpc_http_server as http; extern crate jsonrpc_pubsub as pubsub; extern crate jsonrpc_ws_server as ws; extern crate serde; -extern crate substrate_runtime_primitives; +extern crate sr_primitives; #[macro_use] extern crate log; use std::io; -use substrate_runtime_primitives::traits::{Block as BlockT, NumberFor}; +use sr_primitives::traits::{Block as BlockT, NumberFor}; type Metadata = apis::metadata::Metadata; type RpcHandler = pubsub::PubSubHandler; @@ -48,7 +48,7 @@ pub fn rpc_handler( system: Y, ) -> RpcHandler where Block: BlockT + 'static, - ExHash: Send + Sync + 'static + substrate_runtime_primitives::Serialize + substrate_runtime_primitives::DeserializeOwned, + ExHash: Send + Sync + 'static + sr_primitives::Serialize + sr_primitives::DeserializeOwned, PendingExtrinsics: serde::Serialize + serde::de::DeserializeOwned + Send + Sync + 'static, S: apis::state::StateApi, C: apis::chain::ChainApi, Block::Extrinsic, Metadata=Metadata>, diff --git a/substrate/substrate/rpc/Cargo.toml b/substrate/core/rpc/Cargo.toml similarity index 82% rename from substrate/substrate/rpc/Cargo.toml rename to substrate/core/rpc/Cargo.toml index 423a0523b8..3caf7a84b6 100644 --- a/substrate/substrate/rpc/Cargo.toml +++ b/substrate/core/rpc/Cargo.toml @@ -10,13 +10,13 @@ jsonrpc-macros = { git="https://github.com/paritytech/jsonrpc.git" } jsonrpc-pubsub = { git="https://github.com/paritytech/jsonrpc.git" } log = "0.3" parking_lot = "0.4" -substrate-codec = { path = "../codec" } +parity-codec = { path = "../../codec" } substrate-client = { path = "../client" } substrate-executor = { path = "../executor" } substrate-extrinsic-pool = { path = "../extrinsic-pool" } substrate-primitives = { path = "../primitives" } -substrate-runtime-primitives = { path = "../runtime/primitives" } -substrate-runtime-version = { path = "../runtime/version" } +sr-primitives = { path = "../sr-primitives" } +sr-version = { path = "../sr-version" } substrate-state-machine = { path = "../state-machine" } tokio = "0.1.7" serde_json = "1.0" diff --git a/substrate/substrate/rpc/README.adoc b/substrate/core/rpc/README.adoc similarity index 100% rename from substrate/substrate/rpc/README.adoc rename to substrate/core/rpc/README.adoc diff --git a/substrate/substrate/rpc/src/author/error.rs b/substrate/core/rpc/src/author/error.rs similarity index 100% rename from substrate/substrate/rpc/src/author/error.rs rename to substrate/core/rpc/src/author/error.rs diff --git a/substrate/substrate/rpc/src/author/mod.rs b/substrate/core/rpc/src/author/mod.rs similarity index 100% rename from substrate/substrate/rpc/src/author/mod.rs rename to substrate/core/rpc/src/author/mod.rs diff --git a/substrate/substrate/rpc/src/author/tests.rs b/substrate/core/rpc/src/author/tests.rs similarity index 100% rename from substrate/substrate/rpc/src/author/tests.rs rename to substrate/core/rpc/src/author/tests.rs diff --git a/substrate/substrate/rpc/src/chain/error.rs b/substrate/core/rpc/src/chain/error.rs similarity index 100% rename from substrate/substrate/rpc/src/chain/error.rs rename to substrate/core/rpc/src/chain/error.rs diff --git a/substrate/substrate/rpc/src/chain/mod.rs b/substrate/core/rpc/src/chain/mod.rs similarity index 100% rename from substrate/substrate/rpc/src/chain/mod.rs rename to substrate/core/rpc/src/chain/mod.rs diff --git a/substrate/substrate/rpc/src/chain/tests.rs b/substrate/core/rpc/src/chain/tests.rs similarity index 100% rename from substrate/substrate/rpc/src/chain/tests.rs rename to substrate/core/rpc/src/chain/tests.rs diff --git a/substrate/substrate/rpc/src/errors.rs b/substrate/core/rpc/src/errors.rs similarity index 100% rename from substrate/substrate/rpc/src/errors.rs rename to substrate/core/rpc/src/errors.rs diff --git a/substrate/substrate/rpc/src/helpers.rs b/substrate/core/rpc/src/helpers.rs similarity index 100% rename from substrate/substrate/rpc/src/helpers.rs rename to substrate/core/rpc/src/helpers.rs diff --git a/substrate/substrate/rpc/src/lib.rs b/substrate/core/rpc/src/lib.rs similarity index 90% rename from substrate/substrate/rpc/src/lib.rs rename to substrate/core/rpc/src/lib.rs index b4e07fc823..a62c789551 100644 --- a/substrate/substrate/rpc/src/lib.rs +++ b/substrate/core/rpc/src/lib.rs @@ -23,13 +23,13 @@ extern crate jsonrpc_core as rpc; extern crate jsonrpc_pubsub; extern crate parking_lot; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_client as client; extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_state_machine as state_machine; -extern crate substrate_runtime_version as runtime_version; +extern crate sr_version as runtime_version; extern crate tokio; extern crate serde_json; diff --git a/substrate/substrate/rpc/src/metadata.rs b/substrate/core/rpc/src/metadata.rs similarity index 100% rename from substrate/substrate/rpc/src/metadata.rs rename to substrate/core/rpc/src/metadata.rs diff --git a/substrate/substrate/rpc/src/state/error.rs b/substrate/core/rpc/src/state/error.rs similarity index 100% rename from substrate/substrate/rpc/src/state/error.rs rename to substrate/core/rpc/src/state/error.rs diff --git a/substrate/substrate/rpc/src/state/mod.rs b/substrate/core/rpc/src/state/mod.rs similarity index 100% rename from substrate/substrate/rpc/src/state/mod.rs rename to substrate/core/rpc/src/state/mod.rs diff --git a/substrate/substrate/rpc/src/state/tests.rs b/substrate/core/rpc/src/state/tests.rs similarity index 100% rename from substrate/substrate/rpc/src/state/tests.rs rename to substrate/core/rpc/src/state/tests.rs diff --git a/substrate/substrate/rpc/src/subscriptions.rs b/substrate/core/rpc/src/subscriptions.rs similarity index 100% rename from substrate/substrate/rpc/src/subscriptions.rs rename to substrate/core/rpc/src/subscriptions.rs diff --git a/substrate/substrate/rpc/src/system/error.rs b/substrate/core/rpc/src/system/error.rs similarity index 100% rename from substrate/substrate/rpc/src/system/error.rs rename to substrate/core/rpc/src/system/error.rs diff --git a/substrate/substrate/rpc/src/system/mod.rs b/substrate/core/rpc/src/system/mod.rs similarity index 100% rename from substrate/substrate/rpc/src/system/mod.rs rename to substrate/core/rpc/src/system/mod.rs diff --git a/substrate/substrate/rpc/src/system/tests.rs b/substrate/core/rpc/src/system/tests.rs similarity index 100% rename from substrate/substrate/rpc/src/system/tests.rs rename to substrate/core/rpc/src/system/tests.rs diff --git a/substrate/substrate/serializer/Cargo.toml b/substrate/core/serializer/Cargo.toml similarity index 100% rename from substrate/substrate/serializer/Cargo.toml rename to substrate/core/serializer/Cargo.toml diff --git a/substrate/substrate/serializer/README.adoc b/substrate/core/serializer/README.adoc similarity index 100% rename from substrate/substrate/serializer/README.adoc rename to substrate/core/serializer/README.adoc diff --git a/substrate/substrate/serializer/src/lib.rs b/substrate/core/serializer/src/lib.rs similarity index 100% rename from substrate/substrate/serializer/src/lib.rs rename to substrate/core/serializer/src/lib.rs diff --git a/substrate/core/service/Cargo.toml b/substrate/core/service/Cargo.toml new file mode 100644 index 0000000000..4dfe64350c --- /dev/null +++ b/substrate/core/service/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "substrate-service" +version = "0.3.0" +authors = ["Parity Technologies "] + +[dependencies] +futures = "0.1.17" +parking_lot = "0.4" +error-chain = "0.12" +lazy_static = "1.0" +log = "0.3" +slog = "^2" +tokio = "0.1.7" +exit-future = "0.1" +serde = "1.0" +serde_json = "1.0" +serde_derive = "1.0" +target_info = "0.1" +substrate-keystore = { path = "../../core/keystore" } +sr-io = { path = "../../core/sr-io" } +sr-primitives = { path = "../../core/sr-primitives" } +substrate-primitives = { path = "../../core/primitives" } +substrate-network = { path = "../../core/network" } +substrate-client = { path = "../../core/client" } +substrate-client-db = { path = "../../core/client/db" } +parity-codec = { path = "../../codec" } +substrate-executor = { path = "../../core/executor" } +substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } +substrate-rpc = { path = "../../core/rpc" } +substrate-rpc-servers = { path = "../../core/rpc-servers" } +substrate-telemetry = { path = "../../core/telemetry" } diff --git a/substrate/substrate/service/README.adoc b/substrate/core/service/README.adoc similarity index 100% rename from substrate/substrate/service/README.adoc rename to substrate/core/service/README.adoc diff --git a/substrate/substrate/service/src/chain_ops.rs b/substrate/core/service/src/chain_ops.rs similarity index 100% rename from substrate/substrate/service/src/chain_ops.rs rename to substrate/core/service/src/chain_ops.rs diff --git a/substrate/substrate/service/src/chain_spec.rs b/substrate/core/service/src/chain_spec.rs similarity index 100% rename from substrate/substrate/service/src/chain_spec.rs rename to substrate/core/service/src/chain_spec.rs diff --git a/substrate/substrate/service/src/components.rs b/substrate/core/service/src/components.rs similarity index 100% rename from substrate/substrate/service/src/components.rs rename to substrate/core/service/src/components.rs diff --git a/substrate/substrate/service/src/config.rs b/substrate/core/service/src/config.rs similarity index 100% rename from substrate/substrate/service/src/config.rs rename to substrate/core/service/src/config.rs diff --git a/substrate/substrate/service/src/error.rs b/substrate/core/service/src/error.rs similarity index 100% rename from substrate/substrate/service/src/error.rs rename to substrate/core/service/src/error.rs diff --git a/substrate/substrate/service/src/lib.rs b/substrate/core/service/src/lib.rs similarity index 99% rename from substrate/substrate/service/src/lib.rs rename to substrate/core/service/src/lib.rs index d7c1e90e59..56e894a0bd 100644 --- a/substrate/substrate/service/src/lib.rs +++ b/substrate/core/service/src/lib.rs @@ -27,12 +27,12 @@ extern crate serde; extern crate serde_json; extern crate substrate_keystore as keystore; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_network as network; extern crate substrate_executor; extern crate substrate_client as client; extern crate substrate_client_db as client_db; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_rpc; extern crate substrate_rpc_servers as rpc; diff --git a/substrate/substrate/runtime-io/Cargo.toml b/substrate/core/sr-io/Cargo.toml similarity index 64% rename from substrate/substrate/runtime-io/Cargo.toml rename to substrate/core/sr-io/Cargo.toml index cf8a01dcf8..c23e7aed36 100644 --- a/substrate/substrate/runtime-io/Cargo.toml +++ b/substrate/core/sr-io/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-io" +name = "sr-io" version = "0.1.0" authors = ["Parity Technologies "] build = "build.rs" @@ -8,13 +8,12 @@ build = "build.rs" rustc_version = "0.2" [dependencies] -substrate-runtime-std = { path = "../runtime-std", default_features = false } -environmental = { path = "../environmental", optional = true } +sr-std = { path = "../sr-std", default_features = false } +environmental = { path = "../../environmental", optional = true } substrate-state-machine = { path = "../state-machine", optional = true } substrate-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../codec", default_features = false } +parity-codec = { path = "../../codec", default_features = false } triehash = { version = "0.2", optional = true } -ed25519 = { path = "../ed25519", optional = true } hashdb = { version = "0.2", default_features = false } rlp = { version = "0.2", optional = true, default_features = false } @@ -25,9 +24,8 @@ std = [ "substrate-state-machine", "triehash", "substrate-primitives/std", - "substrate-codec/std", - "substrate-runtime-std/std", - "ed25519", + "parity-codec/std", + "sr-std/std", "rlp" ] nightly = [] diff --git a/substrate/substrate/runtime-io/README.adoc b/substrate/core/sr-io/README.adoc similarity index 100% rename from substrate/substrate/runtime-io/README.adoc rename to substrate/core/sr-io/README.adoc diff --git a/substrate/substrate/pwasm-alloc/build.rs b/substrate/core/sr-io/build.rs similarity index 100% rename from substrate/substrate/pwasm-alloc/build.rs rename to substrate/core/sr-io/build.rs diff --git a/substrate/substrate/runtime-io/src/lib.rs b/substrate/core/sr-io/src/lib.rs similarity index 100% rename from substrate/substrate/runtime-io/src/lib.rs rename to substrate/core/sr-io/src/lib.rs diff --git a/substrate/substrate/runtime-io/with_std.rs b/substrate/core/sr-io/with_std.rs similarity index 98% rename from substrate/substrate/runtime-io/with_std.rs rename to substrate/core/sr-io/with_std.rs index c1d85d914e..4a69c45eed 100644 --- a/substrate/substrate/runtime-io/with_std.rs +++ b/substrate/core/sr-io/with_std.rs @@ -22,14 +22,13 @@ extern crate substrate_primitives as primitives; extern crate substrate_state_machine; extern crate triehash; -extern crate ed25519; extern crate hashdb; extern crate rlp; #[doc(hidden)] -pub extern crate substrate_codec as codec; +pub extern crate parity_codec as codec; // re-export hashing functions. -pub use primitives::{blake2_256, twox_128, twox_256}; +pub use primitives::{blake2_256, twox_128, twox_256, ed25519}; pub use primitives::Blake2Hasher; // Switch to this after PoC-3 diff --git a/substrate/substrate/runtime-io/without_std.rs b/substrate/core/sr-io/without_std.rs similarity index 99% rename from substrate/substrate/runtime-io/without_std.rs rename to substrate/core/sr-io/without_std.rs index 34c4191e97..6e9d391a65 100644 --- a/substrate/substrate/runtime-io/without_std.rs +++ b/substrate/core/sr-io/without_std.rs @@ -19,10 +19,10 @@ extern crate substrate_primitives as primitives; extern crate hashdb; #[doc(hidden)] -pub extern crate substrate_runtime_std as rstd; +pub extern crate sr_std as rstd; #[doc(hidden)] -pub extern crate substrate_codec as codec; +pub extern crate parity_codec as codec; use core::intrinsics; use rstd::vec::Vec; diff --git a/substrate/core/sr-primitives/Cargo.toml b/substrate/core/sr-primitives/Cargo.toml new file mode 100644 index 0000000000..a1316b300f --- /dev/null +++ b/substrate/core/sr-primitives/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "sr-primitives" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +num-traits = { version = "0.2", default_features = false } +integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } +serde = { version = "1.0", optional = true } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../primitives", default_features = false } +sr-std = { path = "../sr-std", default_features = false } +sr-io = { path = "../sr-io", default_features = false } +log = {version = "0.3", optional = true } + +[dev-dependencies] +serde_json = "1.0" + +[features] +default = ["std"] +std = [ + "num-traits/std", + "serde", + "serde_derive", + "log", + "sr-std/std", + "sr-io/std", + "parity-codec/std", + "substrate-primitives/std", +] diff --git a/substrate/substrate/runtime/primitives/src/bft.rs b/substrate/core/sr-primitives/src/bft.rs similarity index 100% rename from substrate/substrate/runtime/primitives/src/bft.rs rename to substrate/core/sr-primitives/src/bft.rs diff --git a/substrate/substrate/runtime/primitives/src/generic/block.rs b/substrate/core/sr-primitives/src/generic/block.rs similarity index 100% rename from substrate/substrate/runtime/primitives/src/generic/block.rs rename to substrate/core/sr-primitives/src/generic/block.rs diff --git a/substrate/substrate/runtime/primitives/src/generic/checked_extrinsic.rs b/substrate/core/sr-primitives/src/generic/checked_extrinsic.rs similarity index 89% rename from substrate/substrate/runtime/primitives/src/generic/checked_extrinsic.rs rename to substrate/core/sr-primitives/src/generic/checked_extrinsic.rs index e5aee32a02..e8be8dd534 100644 --- a/substrate/substrate/runtime/primitives/src/generic/checked_extrinsic.rs +++ b/substrate/core/sr-primitives/src/generic/checked_extrinsic.rs @@ -17,7 +17,6 @@ //! Generic implementation of an extrinsic that has passed the verification //! stage. -use runtime_support::Dispatchable; use traits::{self, Member, SimpleArithmetic, MaybeDisplay}; /// Definition of something that the external world might want to say; its @@ -39,11 +38,11 @@ impl traits::Applyable where AccountId: Member + MaybeDisplay, Index: Member + MaybeDisplay + SimpleArithmetic, - Call: Member + Dispatchable, - ::Origin: From> + Call: Member { type Index = Index; type AccountId = AccountId; + type Call = Call; fn index(&self) -> &Self::Index { &self.index @@ -53,7 +52,7 @@ where self.signed.as_ref() } - fn apply(self) -> Result<(), &'static str> { - self.function.dispatch(self.signed.into()) + fn deconstruct(self) -> (Self::Call, Option) { + (self.function, self.signed) } } diff --git a/substrate/substrate/runtime/primitives/src/generic/digest.rs b/substrate/core/sr-primitives/src/generic/digest.rs similarity index 100% rename from substrate/substrate/runtime/primitives/src/generic/digest.rs rename to substrate/core/sr-primitives/src/generic/digest.rs diff --git a/substrate/substrate/runtime/primitives/src/generic/header.rs b/substrate/core/sr-primitives/src/generic/header.rs similarity index 100% rename from substrate/substrate/runtime/primitives/src/generic/header.rs rename to substrate/core/sr-primitives/src/generic/header.rs diff --git a/substrate/substrate/runtime/primitives/src/generic/mod.rs b/substrate/core/sr-primitives/src/generic/mod.rs similarity index 100% rename from substrate/substrate/runtime/primitives/src/generic/mod.rs rename to substrate/core/sr-primitives/src/generic/mod.rs diff --git a/substrate/substrate/runtime/primitives/src/generic/tests.rs b/substrate/core/sr-primitives/src/generic/tests.rs similarity index 100% rename from substrate/substrate/runtime/primitives/src/generic/tests.rs rename to substrate/core/sr-primitives/src/generic/tests.rs diff --git a/substrate/substrate/runtime/primitives/src/generic/unchecked_extrinsic.rs b/substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs similarity index 100% rename from substrate/substrate/runtime/primitives/src/generic/unchecked_extrinsic.rs rename to substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs diff --git a/substrate/substrate/runtime/primitives/src/lib.rs b/substrate/core/sr-primitives/src/lib.rs similarity index 98% rename from substrate/substrate/runtime/primitives/src/lib.rs rename to substrate/core/sr-primitives/src/lib.rs index e9bddc3286..c0d1133d41 100644 --- a/substrate/substrate/runtime/primitives/src/lib.rs +++ b/substrate/core/sr-primitives/src/lib.rs @@ -31,14 +31,13 @@ extern crate serde_derive; extern crate log; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; extern crate num_traits; extern crate integer_sqrt; -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_support as runtime_support; -extern crate substrate_codec as codec; +extern crate sr_std as rstd; +extern crate sr_io as runtime_io; +extern crate parity_codec as codec; extern crate substrate_primitives; #[cfg(test)] diff --git a/substrate/substrate/runtime/primitives/src/testing.rs b/substrate/core/sr-primitives/src/testing.rs similarity index 91% rename from substrate/substrate/runtime/primitives/src/testing.rs rename to substrate/core/sr-primitives/src/testing.rs index 764828bfe5..b9646ea339 100644 --- a/substrate/substrate/runtime/primitives/src/testing.rs +++ b/substrate/core/sr-primitives/src/testing.rs @@ -19,7 +19,6 @@ use serde::{Serialize, de::DeserializeOwned}; use std::fmt::Debug; use codec::Codec; -use runtime_support::Dispatchable; use traits::{self, Checkable, Applyable, BlakeTwo256}; pub use substrate_primitives::H256; @@ -122,17 +121,19 @@ impl(pub Option, pub u64, pub Call); -impl Checkable for TestXt { +impl Checkable for TestXt { type Checked = Self; fn check_with(self, _: Context) -> Result { Ok(self) } } impl Applyable for TestXt where - Call: Sized + Send + Sync + Clone + Eq + Dispatchable + Codec + Debug + Serialize + DeserializeOwned, - ::Origin: From> + Call: 'static + Sized + Send + Sync + Clone + Eq + Codec + Debug + Serialize + DeserializeOwned, { type AccountId = u64; type Index = u64; + type Call = Call; fn sender(&self) -> Option<&u64> { self.0.as_ref() } fn index(&self) -> &u64 { &self.1 } - fn apply(self) -> Result<(), &'static str> { self.2.dispatch(self.0.into()) } + fn deconstruct(self) -> (Self::Call, Option) { + (self.2, self.0) + } } diff --git a/substrate/substrate/runtime/primitives/src/traits.rs b/substrate/core/sr-primitives/src/traits.rs similarity index 99% rename from substrate/substrate/runtime/primitives/src/traits.rs rename to substrate/core/sr-primitives/src/traits.rs index 32aa47a16f..460d52042b 100644 --- a/substrate/substrate/runtime/primitives/src/traits.rs +++ b/substrate/core/sr-primitives/src/traits.rs @@ -435,9 +435,10 @@ impl Checkable for T { pub trait Applyable: Sized + Send + Sync { type AccountId: Member + MaybeDisplay; type Index: Member + MaybeDisplay + SimpleArithmetic; + type Call: Member; fn index(&self) -> &Self::Index; fn sender(&self) -> Option<&Self::AccountId>; - fn apply(self) -> Result<(), &'static str>; + fn deconstruct(self) -> (Self::Call, Option); } /// Something that acts like a `Digest` - it can have `Log`s `push`ed onto it and these `Log`s are diff --git a/substrate/substrate/runtime-sandbox/Cargo.toml b/substrate/core/sr-sandbox/Cargo.toml similarity index 56% rename from substrate/substrate/runtime-sandbox/Cargo.toml rename to substrate/core/sr-sandbox/Cargo.toml index b80cb4443f..f62a5c0809 100755 --- a/substrate/substrate/runtime-sandbox/Cargo.toml +++ b/substrate/core/sr-sandbox/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-sandbox" +name = "sr-sandbox" version = "0.1.0" authors = ["Parity Technologies "] build = "build.rs" @@ -10,9 +10,9 @@ rustc_version = "0.2" [dependencies] wasmi = { version = "0.4", optional = true } substrate-primitives = { path = "../primitives", default_features = false } -substrate-runtime-std = { path = "../runtime-std", default_features = false } -substrate-runtime-io = { path = "../runtime-io", default_features = false } -substrate-codec = { path = "../codec", default_features = false } +sr-std = { path = "../sr-std", default_features = false } +sr-io = { path = "../sr-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } [dev-dependencies] wabt = "0.4" @@ -23,9 +23,9 @@ default = ["std"] std = [ "wasmi", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-codec/std", - "substrate-runtime-io/std", + "sr-std/std", + "parity-codec/std", + "sr-io/std", ] nightly = [] strict = [] diff --git a/substrate/substrate/runtime-sandbox/README.adoc b/substrate/core/sr-sandbox/README.adoc similarity index 100% rename from substrate/substrate/runtime-sandbox/README.adoc rename to substrate/core/sr-sandbox/README.adoc diff --git a/substrate/substrate/runtime-io/build.rs b/substrate/core/sr-sandbox/build.rs old mode 100644 new mode 100755 similarity index 100% rename from substrate/substrate/runtime-io/build.rs rename to substrate/core/sr-sandbox/build.rs diff --git a/substrate/substrate/runtime-sandbox/src/lib.rs b/substrate/core/sr-sandbox/src/lib.rs similarity index 98% rename from substrate/substrate/runtime-sandbox/src/lib.rs rename to substrate/core/sr-sandbox/src/lib.rs index 16066af160..ca94edf4e4 100755 --- a/substrate/substrate/runtime-sandbox/src/lib.rs +++ b/substrate/core/sr-sandbox/src/lib.rs @@ -43,10 +43,10 @@ #![cfg_attr(not(feature = "std"), feature(core_intrinsics))] #![cfg_attr(not(feature = "std"), feature(alloc))] -extern crate substrate_codec as codec; -extern crate substrate_runtime_io as runtime_io; +extern crate parity_codec as codec; +extern crate sr_io as runtime_io; #[cfg_attr(not(feature = "std"), macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; extern crate substrate_primitives as primitives; #[cfg(test)] diff --git a/substrate/substrate/runtime-sandbox/with_std.rs b/substrate/core/sr-sandbox/with_std.rs similarity index 100% rename from substrate/substrate/runtime-sandbox/with_std.rs rename to substrate/core/sr-sandbox/with_std.rs diff --git a/substrate/substrate/runtime-sandbox/without_std.rs b/substrate/core/sr-sandbox/without_std.rs similarity index 100% rename from substrate/substrate/runtime-sandbox/without_std.rs rename to substrate/core/sr-sandbox/without_std.rs diff --git a/substrate/substrate/runtime-std/Cargo.toml b/substrate/core/sr-std/Cargo.toml similarity index 66% rename from substrate/substrate/runtime-std/Cargo.toml rename to substrate/core/sr-std/Cargo.toml index 42745a0152..459d0f72d1 100644 --- a/substrate/substrate/runtime-std/Cargo.toml +++ b/substrate/core/sr-std/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-std" +name = "sr-std" version = "0.1.0" authors = ["Parity Technologies "] build = "build.rs" @@ -8,8 +8,8 @@ build = "build.rs" rustc_version = "0.2" [dependencies] -pwasm-alloc = { path = "../pwasm-alloc" } -pwasm-libc = { path = "../pwasm-libc" } +pwasm-alloc = { path = "../../pwasm-alloc" } +pwasm-libc = { path = "../../pwasm-libc" } [features] default = ["std"] diff --git a/substrate/substrate/runtime-std/README.adoc b/substrate/core/sr-std/README.adoc similarity index 100% rename from substrate/substrate/runtime-std/README.adoc rename to substrate/core/sr-std/README.adoc diff --git a/substrate/substrate/runtime-std/build.rs b/substrate/core/sr-std/build.rs similarity index 100% rename from substrate/substrate/runtime-std/build.rs rename to substrate/core/sr-std/build.rs diff --git a/substrate/substrate/runtime-std/src/lib.rs b/substrate/core/sr-std/src/lib.rs similarity index 100% rename from substrate/substrate/runtime-std/src/lib.rs rename to substrate/core/sr-std/src/lib.rs diff --git a/substrate/substrate/runtime-std/with_std.rs b/substrate/core/sr-std/with_std.rs similarity index 100% rename from substrate/substrate/runtime-std/with_std.rs rename to substrate/core/sr-std/with_std.rs diff --git a/substrate/substrate/runtime-std/without_std.rs b/substrate/core/sr-std/without_std.rs similarity index 100% rename from substrate/substrate/runtime-std/without_std.rs rename to substrate/core/sr-std/without_std.rs diff --git a/substrate/core/sr-version/Cargo.toml b/substrate/core/sr-version/Cargo.toml new file mode 100644 index 0000000000..b78fbbebba --- /dev/null +++ b/substrate/core/sr-version/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "sr-version" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +sr-std = { path = "../sr-std", default_features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "parity-codec/std", + "sr-std/std", +] diff --git a/substrate/substrate/runtime/version/src/lib.rs b/substrate/core/sr-version/src/lib.rs similarity index 96% rename from substrate/substrate/runtime/version/src/lib.rs rename to substrate/core/sr-version/src/lib.rs index c8e3b8f4a6..2a66e0a794 100644 --- a/substrate/substrate/runtime/version/src/lib.rs +++ b/substrate/core/sr-version/src/lib.rs @@ -27,12 +27,12 @@ extern crate serde_derive; #[allow(unused_imports)] #[macro_use] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; #[cfg(feature = "std")] use std::fmt; @@ -62,7 +62,7 @@ macro_rules! ver_str { #[derive(Clone, PartialEq, Eq, Encode)] #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize, Decode))] pub struct RuntimeVersion { - /// Identifies the different Substrate runtimes. There'll be at least polkadot and demo. + /// Identifies the different Substrate runtimes. There'll be at least polkadot and node. /// A different on-chain spec_name to that of the native runtime would normally result /// in node not attempting to sync or author blocks. pub spec_name: VersionString, diff --git a/substrate/substrate/state-db/Cargo.toml b/substrate/core/state-db/Cargo.toml similarity index 51% rename from substrate/substrate/state-db/Cargo.toml rename to substrate/core/state-db/Cargo.toml index d3e4c878cf..5093f70612 100644 --- a/substrate/substrate/state-db/Cargo.toml +++ b/substrate/core/state-db/Cargo.toml @@ -6,9 +6,9 @@ authors = ["Parity Technologies "] [dependencies] parking_lot = "0.5" log = "0.4" -substrate-primitives = { path = "../../substrate/primitives" } -substrate-codec = { path = "../../substrate/codec" } -substrate-codec-derive = { path = "../../substrate/codec/derive" } +substrate-primitives = { path = "../../core/primitives" } +parity-codec = { path = "../../codec" } +parity-codec-derive = { path = "../../codec/derive" } [dev-dependencies] env_logger = "0.4" diff --git a/substrate/substrate/state-db/README.adoc b/substrate/core/state-db/README.adoc similarity index 100% rename from substrate/substrate/state-db/README.adoc rename to substrate/core/state-db/README.adoc diff --git a/substrate/substrate/state-db/src/lib.rs b/substrate/core/state-db/src/lib.rs similarity index 99% rename from substrate/substrate/state-db/src/lib.rs rename to substrate/core/state-db/src/lib.rs index 7e7dd3369c..349abc63c3 100644 --- a/substrate/substrate/state-db/src/lib.rs +++ b/substrate/core/state-db/src/lib.rs @@ -33,9 +33,9 @@ // end::description[] #[macro_use] extern crate log; -#[macro_use] extern crate substrate_codec_derive; +#[macro_use] extern crate parity_codec_derive; extern crate parking_lot; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; mod unfinalized; diff --git a/substrate/substrate/state-db/src/pruning.rs b/substrate/core/state-db/src/pruning.rs similarity index 100% rename from substrate/substrate/state-db/src/pruning.rs rename to substrate/core/state-db/src/pruning.rs diff --git a/substrate/substrate/state-db/src/test.rs b/substrate/core/state-db/src/test.rs similarity index 100% rename from substrate/substrate/state-db/src/test.rs rename to substrate/core/state-db/src/test.rs diff --git a/substrate/substrate/state-db/src/unfinalized.rs b/substrate/core/state-db/src/unfinalized.rs similarity index 100% rename from substrate/substrate/state-db/src/unfinalized.rs rename to substrate/core/state-db/src/unfinalized.rs diff --git a/substrate/substrate/state-machine/Cargo.toml b/substrate/core/state-machine/Cargo.toml similarity index 86% rename from substrate/substrate/state-machine/Cargo.toml rename to substrate/core/state-machine/Cargo.toml index 3635627999..6f762dd4ef 100644 --- a/substrate/substrate/state-machine/Cargo.toml +++ b/substrate/core/state-machine/Cargo.toml @@ -17,5 +17,5 @@ triehash = "0.2" rlp = "0.2.4" substrate-primitives = { path = "../primitives", version = "0.1.0" } -substrate-codec = { path = "../codec", default_features = false } +parity-codec = { path = "../../codec", default_features = false } diff --git a/substrate/substrate/state-machine/README.adoc b/substrate/core/state-machine/README.adoc similarity index 100% rename from substrate/substrate/state-machine/README.adoc rename to substrate/core/state-machine/README.adoc diff --git a/substrate/substrate/state-machine/src/backend.rs b/substrate/core/state-machine/src/backend.rs similarity index 100% rename from substrate/substrate/state-machine/src/backend.rs rename to substrate/core/state-machine/src/backend.rs diff --git a/substrate/substrate/state-machine/src/ext.rs b/substrate/core/state-machine/src/ext.rs similarity index 100% rename from substrate/substrate/state-machine/src/ext.rs rename to substrate/core/state-machine/src/ext.rs diff --git a/substrate/substrate/state-machine/src/lib.rs b/substrate/core/state-machine/src/lib.rs similarity index 99% rename from substrate/substrate/state-machine/src/lib.rs rename to substrate/core/state-machine/src/lib.rs index 7dab6e6af6..5cdef5b064 100644 --- a/substrate/substrate/state-machine/src/lib.rs +++ b/substrate/core/state-machine/src/lib.rs @@ -36,7 +36,7 @@ extern crate rlp; extern crate heapsize; #[cfg(test)] extern crate substrate_primitives as primitives; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; use std::collections::HashMap; use std::fmt; diff --git a/substrate/substrate/state-machine/src/proving_backend.rs b/substrate/core/state-machine/src/proving_backend.rs similarity index 100% rename from substrate/substrate/state-machine/src/proving_backend.rs rename to substrate/core/state-machine/src/proving_backend.rs diff --git a/substrate/substrate/state-machine/src/testing.rs b/substrate/core/state-machine/src/testing.rs similarity index 100% rename from substrate/substrate/state-machine/src/testing.rs rename to substrate/core/state-machine/src/testing.rs diff --git a/substrate/substrate/state-machine/src/trie_backend.rs b/substrate/core/state-machine/src/trie_backend.rs similarity index 100% rename from substrate/substrate/state-machine/src/trie_backend.rs rename to substrate/core/state-machine/src/trie_backend.rs diff --git a/substrate/substrate/telemetry/Cargo.toml b/substrate/core/telemetry/Cargo.toml similarity index 100% rename from substrate/substrate/telemetry/Cargo.toml rename to substrate/core/telemetry/Cargo.toml diff --git a/substrate/substrate/telemetry/README.adoc b/substrate/core/telemetry/README.adoc similarity index 100% rename from substrate/substrate/telemetry/README.adoc rename to substrate/core/telemetry/README.adoc diff --git a/substrate/substrate/telemetry/src/lib.rs b/substrate/core/telemetry/src/lib.rs similarity index 100% rename from substrate/substrate/telemetry/src/lib.rs rename to substrate/core/telemetry/src/lib.rs diff --git a/substrate/substrate/test-client/Cargo.toml b/substrate/core/test-client/Cargo.toml similarity index 63% rename from substrate/substrate/test-client/Cargo.toml rename to substrate/core/test-client/Cargo.toml index f36ec382f6..fe85532d71 100644 --- a/substrate/substrate/test-client/Cargo.toml +++ b/substrate/core/test-client/Cargo.toml @@ -7,12 +7,12 @@ authors = ["Parity Technologies "] rhododendron = "0.3" substrate-bft = { path = "../bft" } substrate-client = { path = "../client" } -substrate-codec = { path = "../codec" } +parity-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } -substrate-keyring = { path = "../../substrate/keyring" } +substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } -substrate-runtime-support = { path = "../runtime-support" } +srml-support = { path = "../../srml/support" } substrate-test-runtime = { path = "../test-runtime" } -substrate-runtime-primitives = { path = "../runtime/primitives" } +sr-primitives = { path = "../sr-primitives" } hashdb = "0.2.1" diff --git a/substrate/substrate/test-client/README.adoc b/substrate/core/test-client/README.adoc similarity index 100% rename from substrate/substrate/test-client/README.adoc rename to substrate/core/test-client/README.adoc diff --git a/substrate/substrate/test-client/src/block_builder_ext.rs b/substrate/core/test-client/src/block_builder_ext.rs similarity index 100% rename from substrate/substrate/test-client/src/block_builder_ext.rs rename to substrate/core/test-client/src/block_builder_ext.rs diff --git a/substrate/substrate/test-client/src/client_ext.rs b/substrate/core/test-client/src/client_ext.rs similarity index 100% rename from substrate/substrate/test-client/src/client_ext.rs rename to substrate/core/test-client/src/client_ext.rs diff --git a/substrate/substrate/test-client/src/lib.rs b/substrate/core/test-client/src/lib.rs similarity index 92% rename from substrate/substrate/test-client/src/lib.rs rename to substrate/core/test-client/src/lib.rs index 3aeefed0fa..808b151727 100644 --- a/substrate/substrate/test-client/src/lib.rs +++ b/substrate/core/test-client/src/lib.rs @@ -22,10 +22,10 @@ extern crate rhododendron; extern crate substrate_bft as bft; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_support as runtime_support; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate srml_support as runtime_support; +extern crate sr_primitives as runtime_primitives; #[macro_use] extern crate substrate_executor as executor; extern crate hashdb; diff --git a/substrate/core/test-runtime/Cargo.toml b/substrate/core/test-runtime/Cargo.toml new file mode 100644 index 0000000000..dc7266fc2e --- /dev/null +++ b/substrate/core/test-runtime/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "substrate-test-runtime" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +log = { version = "0.3", optional = true } +hex-literal = { version = "0.1.0", optional = true } +serde = { version = "1.0", optional = true } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default-features = false } +parity-codec-derive = { path = "../../codec/derive", default-features = false } +substrate-keyring = { path = "../keyring", optional = true } +substrate-primitives = { path = "../primitives", default-features = false } +sr-std = { path = "../sr-std", default-features = false } +sr-io = { path = "../sr-io", default-features = false } +sr-primitives = { path = "../sr-primitives", default-features = false } +sr-version = { path = "../sr-version", default-features = false } +srml-support = { path = "../../srml/support", default-features = false } + +[features] +default = ["std"] +std = [ + "log", + "hex-literal", + "serde", + "serde_derive", + "substrate-keyring", + "parity-codec/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "substrate-primitives/std", + "sr-primitives/std", + "sr-version/std" +] diff --git a/substrate/substrate/test-runtime/README.adoc b/substrate/core/test-runtime/README.adoc similarity index 100% rename from substrate/substrate/test-runtime/README.adoc rename to substrate/core/test-runtime/README.adoc diff --git a/substrate/substrate/test-runtime/src/genesismap.rs b/substrate/core/test-runtime/src/genesismap.rs similarity index 100% rename from substrate/substrate/test-runtime/src/genesismap.rs rename to substrate/core/test-runtime/src/genesismap.rs diff --git a/substrate/substrate/test-runtime/src/lib.rs b/substrate/core/test-runtime/src/lib.rs similarity index 90% rename from substrate/substrate/test-runtime/src/lib.rs rename to substrate/core/test-runtime/src/lib.rs index eb1deca741..2418ad3400 100644 --- a/substrate/substrate/test-runtime/src/lib.rs +++ b/substrate/core/test-runtime/src/lib.rs @@ -20,9 +20,9 @@ #![cfg_attr(not(feature = "std"), no_std)] -extern crate substrate_runtime_std as rstd; -extern crate substrate_codec as codec; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_std as rstd; +extern crate parity_codec as codec; +extern crate sr_primitives as runtime_primitives; #[cfg(feature = "std")] extern crate serde; @@ -32,21 +32,19 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[macro_use] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; #[macro_use] -extern crate substrate_runtime_version as runtime_version; +extern crate sr_version as runtime_version; #[cfg(test)] #[macro_use] extern crate hex_literal; #[cfg(test)] -extern crate ed25519; -#[cfg(test)] extern crate substrate_keyring as keyring; #[cfg_attr(test, macro_use)] extern crate substrate_primitives as primitives; @@ -144,7 +142,7 @@ pub mod api { version => |()| super::version(), json_metadata => |()| { let mut vec = ::runtime_support::metadata::Vec::new(); - vec.push(::runtime_support::metadata::JSONMetadata::Events { + vec.push(::runtime_support::metadata::JsonMetadata::Events { name: "Test", events: &[ ("event", super::test_event_json) ] }); vec diff --git a/substrate/substrate/test-runtime/src/system.rs b/substrate/core/test-runtime/src/system.rs similarity index 100% rename from substrate/substrate/test-runtime/src/system.rs rename to substrate/core/test-runtime/src/system.rs diff --git a/substrate/substrate/test-runtime/wasm/Cargo.lock b/substrate/core/test-runtime/wasm/Cargo.lock similarity index 96% rename from substrate/substrate/test-runtime/wasm/Cargo.lock rename to substrate/core/test-runtime/wasm/Cargo.lock index f42241061f..b4a0da92bb 100644 --- a/substrate/substrate/test-runtime/wasm/Cargo.lock +++ b/substrate/core/test-runtime/wasm/Cargo.lock @@ -76,18 +76,6 @@ name = "crunchy" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ed25519" -version = "0.1.0" -dependencies = [ - "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "elastic-array" version = "0.10.0" @@ -290,6 +278,22 @@ name = "parity-bytes" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "parity-codec" +version = "0.1.0" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "0.1.0" +dependencies = [ + "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parity-wasm" version = "0.31.0" @@ -502,85 +506,38 @@ dependencies = [ ] [[package]] -name = "stable_deref_trait" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "substrate-codec" +name = "sr-io" version = "0.1.0" dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-codec-derive" -version = "0.1.0" -dependencies = [ - "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-primitives" -version = "0.1.0" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-runtime-std 0.1.0", - "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-io" -version = "0.1.0" -dependencies = [ - "ed25519 0.1.0", "environmental 0.1.0", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-state-machine 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "substrate-runtime-primitives" +name = "sr-primitives" version = "0.1.0" dependencies = [ "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "sr-io 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] -name = "substrate-runtime-std" +name = "sr-std" version = "0.1.0" dependencies = [ "pwasm-alloc 0.1.0", @@ -589,29 +546,68 @@ dependencies = [ ] [[package]] -name = "substrate-runtime-support" +name = "sr-version" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", + "sr-std 0.1.0", ] [[package]] -name = "substrate-runtime-version" +name = "srml-support" version = "0.1.0" dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-metadata 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "substrate-metadata" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", +] + +[[package]] +name = "substrate-primitives" +version = "0.1.0" +dependencies = [ + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -624,10 +620,10 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-primitives 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -636,17 +632,16 @@ dependencies = [ name = "substrate-test-runtime" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", + "srml-support 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-version 0.1.0", ] [[package]] diff --git a/substrate/core/test-runtime/wasm/Cargo.toml b/substrate/core/test-runtime/wasm/Cargo.toml new file mode 100644 index 0000000000..0720a20896 --- /dev/null +++ b/substrate/core/test-runtime/wasm/Cargo.toml @@ -0,0 +1,40 @@ +[package] +name = "substrate-test-runtime" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +log = { version = "0.3", optional = true } +hex-literal = { version = "0.1.0", optional = true } +parity-codec = { path = "../../../codec", default-features = false } +parity-codec-derive = { path = "../../../codec/derive", default-features = false } +substrate-primitives = { path = "../../primitives", default-features = false } +sr-std = { path = "../../sr-std", default-features = false } +sr-io = { path = "../../sr-io", default-features = false } +sr-version = { path = "../../sr-version", default-features = false } +sr-primitives = { path = "../../sr-primitives", default-features = false } +srml-support = { path = "../../../srml/support", default-features = false } + +[features] +default = [] +std = [ + "log", + "hex-literal", + "parity-codec/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-version/std", + "substrate-primitives/std", + "sr-primitives/std" +] + +[lib] +crate-type = ["cdylib"] + +[profile.release] +panic = "abort" +lto = true + +[workspace] +members = [] diff --git a/substrate/substrate/test-runtime/wasm/build.sh b/substrate/core/test-runtime/wasm/build.sh similarity index 100% rename from substrate/substrate/test-runtime/wasm/build.sh rename to substrate/core/test-runtime/wasm/build.sh diff --git a/substrate/demo/runtime/wasm/src b/substrate/core/test-runtime/wasm/src similarity index 100% rename from substrate/demo/runtime/wasm/src rename to substrate/core/test-runtime/wasm/src diff --git a/substrate/demo/api/Cargo.toml b/substrate/demo/api/Cargo.toml deleted file mode 100644 index b03eb27a72..0000000000 --- a/substrate/demo/api/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "demo-api" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -demo-runtime = { path = "../runtime" } -demo-primitives = { path = "../primitives" } -substrate-client = { path = "../../substrate/client" } -substrate-primitives = { path = "../../substrate/primitives" } - -[dev-dependencies] -substrate-keyring = { path = "../../substrate/keyring" } diff --git a/substrate/demo/cli/Cargo.toml b/substrate/demo/cli/Cargo.toml deleted file mode 100644 index 5c5b0f7a36..0000000000 --- a/substrate/demo/cli/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "demo-cli" -version = "0.1.0" -authors = ["Parity Technologies "] -description = "Substrate Demo node implementation in Rust." - -[dependencies] -log = "0.3" -tokio = "0.1.7" -exit-future = "0.1" -substrate-cli = { path = "../../substrate/cli" } -demo-service = { path = "../service" } diff --git a/substrate/demo/consensus/Cargo.toml b/substrate/demo/consensus/Cargo.toml deleted file mode 100644 index 1dc8eb8367..0000000000 --- a/substrate/demo/consensus/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "demo-consensus" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -futures = "0.1.17" -parking_lot = "0.4" -tokio = "0.1.7" -ed25519 = { path = "../../substrate/ed25519" } -error-chain = "0.12" -log = "0.3" -exit-future = "0.1" -rhododendron = "0.3" -demo-api = { path = "../api" } -demo-primitives = { path = "../primitives" } -demo-runtime = { path = "../runtime" } -demo-transaction-pool = { path = "../transaction-pool" } -substrate-bft = { path = "../../substrate/bft" } -substrate-codec = { path = "../../substrate/codec" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-runtime-support = { path = "../../substrate/runtime-support" } -substrate-client = { path = "../../substrate/client" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } - -[dev-dependencies] -substrate-keyring = { path = "../../substrate/keyring" } diff --git a/substrate/demo/executor/Cargo.toml b/substrate/demo/executor/Cargo.toml deleted file mode 100644 index 5bf56e9a8f..0000000000 --- a/substrate/demo/executor/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "demo-executor" -version = "0.1.0" -authors = ["Parity Technologies "] -description = "Substrate Demo node implementation in Rust." - -[dependencies] -hex-literal = "0.1" -triehash = "0.2" -ed25519 = { path = "../../substrate/ed25519" } -substrate-codec = { path = "../../substrate/codec" } -substrate-runtime-io = { path = "../../substrate/runtime-io" } -substrate-runtime-support = { path = "../../substrate/runtime-support" } -substrate-state-machine = { path = "../../substrate/state-machine" } -substrate-executor = { path = "../../substrate/executor" } -substrate-primitives = { path = "../../substrate/primitives" } -demo-primitives = { path = "../primitives" } -demo-runtime = { path = "../runtime" } - -[dev-dependencies] -substrate-keyring = { path = "../../substrate/keyring" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-runtime-balances = { path = "../../substrate/runtime/balances" } -substrate-runtime-session = { path = "../../substrate/runtime/session" } -substrate-runtime-staking = { path = "../../substrate/runtime/staking" } -substrate-runtime-system = { path = "../../substrate/runtime/system" } -substrate-runtime-consensus = { path = "../../substrate/runtime/consensus" } -substrate-runtime-timestamp = { path = "../../substrate/runtime/timestamp" } -substrate-runtime-treasury = { path = "../../substrate/runtime/treasury" } diff --git a/substrate/demo/network/Cargo.toml b/substrate/demo/network/Cargo.toml deleted file mode 100644 index 3329f779b4..0000000000 --- a/substrate/demo/network/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "demo-network" -version = "0.1.0" -authors = ["Parity Technologies "] -description = "Substrate demo networking protocol" - -[dependencies] -demo-api = { path = "../api" } -demo-consensus = { path = "../consensus" } -demo-primitives = { path = "../primitives" } -substrate-bft = { path = "../../substrate/bft" } -substrate-network = { path = "../../substrate/network" } -ed25519 = { path = "../../substrate/ed25519" } -futures = "0.1" -tokio = "0.1.7" -log = "0.4" -rhododendron = "0.3" diff --git a/substrate/demo/primitives/Cargo.toml b/substrate/demo/primitives/Cargo.toml deleted file mode 100644 index b517210d19..0000000000 --- a/substrate/demo/primitives/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "demo-primitives" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../substrate/codec", default_features = false } -substrate-codec-derive = { path = "../../substrate/codec/derive", default_features = false } -substrate-primitives = { path = "../../substrate/primitives", default_features = false } -substrate-runtime-std = { path = "../../substrate/runtime-std", default_features = false } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives", default_features = false } - -[dev-dependencies] -substrate-serializer = { path = "../../substrate/serializer" } -pretty_assertions = "0.4" - -[features] -default = ["std"] -std = [ - "substrate-codec-derive/std", - "substrate-codec/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-primitives/std", - "serde_derive", - "serde/std", -] diff --git a/substrate/demo/runtime/Cargo.toml b/substrate/demo/runtime/Cargo.toml deleted file mode 100644 index 3bf3b5af92..0000000000 --- a/substrate/demo/runtime/Cargo.toml +++ /dev/null @@ -1,61 +0,0 @@ -[package] -name = "demo-runtime" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -rustc-hex = "1.0" -hex-literal = "0.1.0" -log = { version = "0.3", optional = true } -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -safe-mix = { version = "1.0", default_features = false} -substrate-codec = { path = "../../substrate/codec" } -substrate-codec-derive = { path = "../../substrate/codec/derive" } -substrate-runtime-std = { path = "../../substrate/runtime-std" } -substrate-runtime-io = { path = "../../substrate/runtime-io" } -substrate-runtime-support = { path = "../../substrate/runtime-support" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-keyring = { path = "../../substrate/keyring" } -substrate-runtime-balances = { path = "../../substrate/runtime/balances" } -substrate-runtime-consensus = { path = "../../substrate/runtime/consensus" } -substrate-runtime-contract = { path = "../../substrate/runtime/contract" } -substrate-runtime-council = { path = "../../substrate/runtime/council" } -substrate-runtime-democracy = { path = "../../substrate/runtime/democracy" } -substrate-runtime-executive = { path = "../../substrate/runtime/executive" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-runtime-session = { path = "../../substrate/runtime/session" } -substrate-runtime-staking = { path = "../../substrate/runtime/staking" } -substrate-runtime-system = { path = "../../substrate/runtime/system" } -substrate-runtime-timestamp = { path = "../../substrate/runtime/timestamp" } -substrate-runtime-treasury = { path = "../../substrate/runtime/treasury" } -substrate-runtime-version = { path = "../../substrate/runtime/version" } -demo-primitives = { path = "../primitives" } - -[features] -default = ["std"] -std = [ - "substrate-codec/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-balances/std", - "substrate-runtime-consensus/std", - "substrate-runtime-contract/std", - "substrate-runtime-council/std", - "substrate-runtime-democracy/std", - "substrate-runtime-executive/std", - "substrate-runtime-primitives/std", - "substrate-runtime-session/std", - "substrate-runtime-staking/std", - "substrate-runtime-system/std", - "substrate-runtime-timestamp/std", - "substrate-runtime-treasury/std", - "substrate-runtime-version/std", - "demo-primitives/std", - "serde_derive", - "serde/std", - "log", - "safe-mix/std" -] diff --git a/substrate/demo/runtime/wasm/Cargo.toml b/substrate/demo/runtime/wasm/Cargo.toml deleted file mode 100644 index 198e8c6280..0000000000 --- a/substrate/demo/runtime/wasm/Cargo.toml +++ /dev/null @@ -1,63 +0,0 @@ -[package] -name = "demo-runtime" -version = "0.1.0" -authors = ["Parity Technologies "] - -[lib] -crate-type = ["cdylib"] - -[dependencies] -integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } -safe-mix = { version = "1.0", default_features = false} -substrate-codec-derive = { path = "../../../substrate/codec/derive" } -substrate-codec = { path = "../../../substrate/codec", default-features = false } -substrate-primitives = { path = "../../../substrate/primitives", default-features = false } -substrate-runtime-std = { path = "../../../substrate/runtime-std", default-features = false } -substrate-runtime-io = { path = "../../../substrate/runtime-io", default-features = false } -substrate-runtime-support = { path = "../../../substrate/runtime-support", default-features = false } -substrate-runtime-balances = { path = "../../../substrate/runtime/balances", default-features = false } -substrate-runtime-consensus = { path = "../../../substrate/runtime/consensus", default-features = false } -substrate-runtime-contract = { path = "../../../substrate/runtime/contract", default-features = false } -substrate-runtime-council = { path = "../../../substrate/runtime/council", default-features = false } -substrate-runtime-democracy = { path = "../../../substrate/runtime/democracy", default-features = false } -substrate-runtime-executive = { path = "../../../substrate/runtime/executive", default-features = false } -substrate-runtime-primitives = { path = "../../../substrate/runtime/primitives", default-features = false } -substrate-runtime-session = { path = "../../../substrate/runtime/session", default-features = false } -substrate-runtime-staking = { path = "../../../substrate/runtime/staking", default-features = false } -substrate-runtime-system = { path = "../../../substrate/runtime/system", default-features = false } -substrate-runtime-timestamp = { path = "../../../substrate/runtime/timestamp", default-features = false } -substrate-runtime-treasury = { path = "../../../substrate/runtime/treasury", default-features = false } -substrate-runtime-version = { path = "../../../substrate/runtime/version", default-features = false } -demo-primitives = { path = "../../primitives", default-features = false } - -[features] -default = [] -std = [ - "safe-mix/std", - "substrate-codec/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-balances/std", - "substrate-runtime-consensus/std", - "substrate-runtime-contract/std", - "substrate-runtime-council/std", - "substrate-runtime-democracy/std", - "substrate-runtime-executive/std", - "substrate-runtime-primitives/std", - "substrate-runtime-session/std", - "substrate-runtime-staking/std", - "substrate-runtime-system/std", - "substrate-runtime-timestamp/std", - "substrate-runtime-treasury/std", - "substrate-runtime-version/std", - "demo-primitives/std", -] - -[profile.release] -panic = "abort" -lto = true - -[workspace] -members = [] diff --git a/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm deleted file mode 100644 index 392a6759728e1ede026e4c5ad9b591e2376fe3d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707342 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 z�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 Kf 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
dfcn2PJN7 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 QCd%z4z$ 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

0$pYL~4Mgxgb?aItjWVtF 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 z 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 jJoT#%MVo=$y+u5aee)G(VHvd5EM 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"] - -[dependencies] -parking_lot = "0.4" -error-chain = "0.12" -lazy_static = "1.0" -log = "0.3" -slog = "^2" -tokio = "0.1.7" -hex-literal = "0.1" -ed25519 = { path = "../../substrate/ed25519" } -demo-api = { path = "../api" } -demo-primitives = { path = "../primitives" } -demo-runtime = { path = "../runtime" } -demo-executor = { path = "../executor" } -demo-consensus = { path = "../consensus" } -demo-network = { path = "../network" } -demo-transaction-pool = { path = "../transaction-pool" } -substrate-runtime-io = { path = "../../substrate/runtime-io" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-network = { path = "../../substrate/network" } -substrate-client = { path = "../../substrate/client" } -substrate-service = { path = "../../substrate/service" } -substrate-telemetry = { path = "../../substrate/telemetry" } diff --git a/substrate/demo/transaction-pool/Cargo.toml b/substrate/demo/transaction-pool/Cargo.toml deleted file mode 100644 index 94eaae111a..0000000000 --- a/substrate/demo/transaction-pool/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "demo-transaction-pool" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -log = "0.3.0" -error-chain = "0.12" -parking_lot = "0.4" -demo-api = { path = "../api" } -demo-primitives = { path = "../primitives" } -demo-runtime = { path = "../runtime" } -substrate-client = { path = "../../substrate/client" } -substrate-codec = { path = "../../substrate/codec" } -substrate-keyring = { path = "../../substrate/keyring" } -substrate-extrinsic-pool = { path = "../../substrate/extrinsic-pool" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -ed25519 = { path = "../../substrate/ed25519" } diff --git a/substrate/doc/packages/substrate.adoc b/substrate/doc/packages/substrate.adoc index 75f391e2b6..f82ed0ee68 100644 --- a/substrate/doc/packages/substrate.adoc +++ b/substrate/doc/packages/substrate.adoc @@ -3,64 +3,62 @@ :leveloffset: +3 -include::../../substrate/bft/README.adoc[] +include::../../core/bft/README.adoc[] -include::../../substrate/cli/README.adoc[] +include::../../core/cli/README.adoc[] -include::../../substrate/client/README.adoc[] +include::../../core/client/README.adoc[] -include::../../substrate/codec/README.adoc[] +include::../../codec/README.adoc[] -include::../../substrate/ed25519/README.adoc[] +include::../../environmental/README.adoc[] -include::../../substrate/environmental/README.adoc[] +include::../../core/executor/README.adoc[] -include::../../substrate/executor/README.adoc[] +include::../../core/extrinsic-pool/README.adoc[] -include::../../substrate/extrinsic-pool/README.adoc[] +include::../../core/keyring/README.adoc[] -include::../../substrate/keyring/README.adoc[] +include::../../core/keystore/README.adoc[] -include::../../substrate/keystore/README.adoc[] +include::../../core/misbehavior-check/README.adoc[] -include::../../substrate/misbehavior-check/README.adoc[] +include::../../core/network/README.adoc[] -include::../../substrate/network/README.adoc[] +include::../../core/network-libp2p/README.adoc[] -include::../../substrate/network-libp2p/README.adoc[] +include::../../core/primitives/README.adoc[] -include::../../substrate/primitives/README.adoc[] +include::../../pwasm-alloc/README.adoc[] -include::../../substrate/pwasm-alloc/README.adoc[] +include::../../pwasm-libc/README.adoc[] -include::../../substrate/pwasm-libc/README.adoc[] +include::../../core/rpc/README.adoc[] -include::../../substrate/rpc/README.adoc[] +include::../../core/rpc-servers/README.adoc[] -include::../../substrate/rpc-servers/README.adoc[] +include::../../srml/README.adoc[] -include::../../substrate/runtime/README.adoc[] +include::../../core/sr-io/README.adoc[] -include::../../substrate/runtime-io/README.adoc[] +include::../../core/sr-sandbox/README.adoc[] -include::../../substrate/runtime-sandbox/README.adoc[] +include::../../core/sr-std/README.adoc[] -include::../../substrate/runtime-std/README.adoc[] +include::../../core/runtime-support/README.adoc[] -include::../../substrate/runtime-support/README.adoc[] +include::../../core/serializer/README.adoc[] -include::../../substrate/serializer/README.adoc[] +include::../../core/service/README.adoc[] -include::../../substrate/service/README.adoc[] +include::../../core/state-db/README.adoc[] -include::../../substrate/state-db/README.adoc[] +include::../../core/state-machine/README.adoc[] -include::../../substrate/state-machine/README.adoc[] +include::../../core/telemetry/README.adoc[] -include::../../substrate/telemetry/README.adoc[] +include::../../core/test-client/README.adoc[] -include::../../substrate/test-client/README.adoc[] - -include::../../substrate/test-runtime/README.adoc[] +include::../../core/test-srml/README.adoc[] :leveloffset: -3 diff --git a/substrate/substrate/environmental/Cargo.toml b/substrate/environmental/Cargo.toml similarity index 100% rename from substrate/substrate/environmental/Cargo.toml rename to substrate/environmental/Cargo.toml diff --git a/substrate/substrate/environmental/README.adoc b/substrate/environmental/README.adoc similarity index 100% rename from substrate/substrate/environmental/README.adoc rename to substrate/environmental/README.adoc diff --git a/substrate/substrate/environmental/src/lib.rs b/substrate/environmental/src/lib.rs similarity index 100% rename from substrate/substrate/environmental/src/lib.rs rename to substrate/environmental/src/lib.rs diff --git a/substrate/substrate/environmental/with_std.rs b/substrate/environmental/with_std.rs similarity index 100% rename from substrate/substrate/environmental/with_std.rs rename to substrate/environmental/with_std.rs diff --git a/substrate/substrate/environmental/without_std.rs b/substrate/environmental/without_std.rs similarity index 100% rename from substrate/substrate/environmental/without_std.rs rename to substrate/environmental/without_std.rs diff --git a/substrate/demo/Cargo.toml b/substrate/node/Cargo.toml similarity index 91% rename from substrate/demo/Cargo.toml rename to substrate/node/Cargo.toml index 326844dc90..8746954b5a 100644 --- a/substrate/demo/Cargo.toml +++ b/substrate/node/Cargo.toml @@ -10,7 +10,7 @@ build = "build.rs" [dependencies] error-chain = "0.12" -demo-cli = { path = "cli" } +node-cli = { path = "cli" } futures = "0.1" ctrlc = { version = "3.0", features = ["termination"] } diff --git a/substrate/node/api/Cargo.toml b/substrate/node/api/Cargo.toml new file mode 100644 index 0000000000..5a0cee1387 --- /dev/null +++ b/substrate/node/api/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "node-api" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +node-runtime = { path = "../runtime" } +node-primitives = { path = "../primitives" } +substrate-client = { path = "../../core/client" } +substrate-primitives = { path = "../../core/primitives" } + +[dev-dependencies] +substrate-keyring = { path = "../../core/keyring" } diff --git a/substrate/demo/api/src/lib.rs b/substrate/node/api/src/lib.rs similarity index 92% rename from substrate/demo/api/src/lib.rs rename to substrate/node/api/src/lib.rs index 848c053046..233d82aac2 100644 --- a/substrate/demo/api/src/lib.rs +++ b/substrate/node/api/src/lib.rs @@ -1,26 +1,26 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Strongly typed API for Substrate Demo runtime. +//! Strongly typed API for Substrate runtime. #![warn(missing_docs)] #![warn(unused_extern_crates)] -extern crate demo_primitives as primitives; -extern crate demo_runtime as runtime; +extern crate node_primitives as primitives; +extern crate node_runtime as runtime; extern crate substrate_client as client; extern crate substrate_primitives; @@ -44,7 +44,7 @@ pub trait BlockBuilder { fn bake(self) -> Result; } -/// Trait encapsulating the demo API. +/// Trait encapsulating the node API. /// /// All calls should fail when the exact runtime is unknown. pub trait Api { diff --git a/substrate/demo/build.rs b/substrate/node/build.rs similarity index 73% rename from substrate/demo/build.rs rename to substrate/node/build.rs index 0f2f3b9bdc..4e48353aea 100644 --- a/substrate/demo/build.rs +++ b/substrate/node/build.rs @@ -1,18 +1,18 @@ // Copyright 2015-2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . extern crate vergen; diff --git a/substrate/node/cli/Cargo.toml b/substrate/node/cli/Cargo.toml new file mode 100644 index 0000000000..d26a47aade --- /dev/null +++ b/substrate/node/cli/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "node-cli" +version = "0.1.0" +authors = ["Parity Technologies "] +description = "Substrate node implementation in Rust." + +[dependencies] +log = "0.3" +tokio = "0.1.7" +exit-future = "0.1" +substrate-cli = { path = "../../core/cli" } +node-service = { path = "../service" } diff --git a/substrate/demo/cli/src/cli.yml b/substrate/node/cli/src/cli.yml similarity index 76% rename from substrate/demo/cli/src/cli.yml rename to substrate/node/cli/src/cli.yml index 263af9d9ef..6c1fe186e7 100644 --- a/substrate/demo/cli/src/cli.yml +++ b/substrate/node/cli/src/cli.yml @@ -1,6 +1,6 @@ -name: substrate-demo +name: substrate-node author: "Parity Team " -about: Substrate Demo Node Rust Implementation +about: Substrate Node Rust Implementation args: - log: short: l diff --git a/substrate/demo/cli/src/error.rs b/substrate/node/cli/src/error.rs similarity index 73% rename from substrate/demo/cli/src/error.rs rename to substrate/node/cli/src/error.rs index c8b4fdedde..a83466fbe6 100644 --- a/substrate/demo/cli/src/error.rs +++ b/substrate/node/cli/src/error.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Initialization errors. diff --git a/substrate/demo/cli/src/lib.rs b/substrate/node/cli/src/lib.rs similarity index 90% rename from substrate/demo/cli/src/lib.rs rename to substrate/node/cli/src/lib.rs index 09c09e1cc6..75cbf5d003 100644 --- a/substrate/demo/cli/src/lib.rs +++ b/substrate/node/cli/src/lib.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Substrate Demo CLI library. +//! Substrate CLI library. #![warn(missing_docs)] #![warn(unused_extern_crates)] @@ -22,7 +22,7 @@ extern crate tokio; extern crate substrate_cli as cli; -extern crate demo_service as service; +extern crate node_service as service; extern crate exit_future; #[macro_use] @@ -82,7 +82,7 @@ pub fn run(args: I, exit: E, version: cli::VersionInfo) -> error::Resul T: Into + Clone, E: IntoExit, { - match cli::prepare_execution::(args, exit, version, load_spec, "substrate-demo")? { + match cli::prepare_execution::(args, exit, version, load_spec, "substrate-node")? { cli::Action::ExecutedInternally => (), cli::Action::RunService((config, exit)) => { info!("Parity ·:· Substrate"); diff --git a/substrate/node/consensus/Cargo.toml b/substrate/node/consensus/Cargo.toml new file mode 100644 index 0000000000..e733d7ae7e --- /dev/null +++ b/substrate/node/consensus/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "node-consensus" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +futures = "0.1.17" +parking_lot = "0.4" +tokio = "0.1.7" +error-chain = "0.12" +log = "0.3" +exit-future = "0.1" +rhododendron = "0.3" +node-api = { path = "../api" } +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } +node-transaction-pool = { path = "../transaction-pool" } +substrate-bft = { path = "../../core/bft" } +parity-codec = { path = "../../codec" } +substrate-primitives = { path = "../../core/primitives" } +substrate-client = { path = "../../core/client" } +sr-primitives = { path = "../../core/sr-primitives" } + +[dev-dependencies] +substrate-keyring = { path = "../../core/keyring" } diff --git a/substrate/demo/consensus/README.adoc b/substrate/node/consensus/README.adoc similarity index 100% rename from substrate/demo/consensus/README.adoc rename to substrate/node/consensus/README.adoc diff --git a/substrate/demo/consensus/src/error.rs b/substrate/node/consensus/src/error.rs similarity index 82% rename from substrate/demo/consensus/src/error.rs rename to substrate/node/consensus/src/error.rs index e8b60c847c..01823a8e50 100644 --- a/substrate/demo/consensus/src/error.rs +++ b/substrate/node/consensus/src/error.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Errors that can occur during the consensus process. @@ -20,7 +20,7 @@ use primitives::AuthorityId; error_chain! { links { - Api(::demo_api::Error, ::demo_api::ErrorKind); + Api(::node_api::Error, ::node_api::ErrorKind); Bft(::bft::Error, ::bft::ErrorKind); } diff --git a/substrate/demo/consensus/src/evaluation.rs b/substrate/node/consensus/src/evaluation.rs similarity index 84% rename from substrate/demo/consensus/src/evaluation.rs rename to substrate/node/consensus/src/evaluation.rs index 0d073aa521..9d4d5b0911 100644 --- a/substrate/demo/consensus/src/evaluation.rs +++ b/substrate/node/consensus/src/evaluation.rs @@ -1,30 +1,30 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Block evaluation and evaluation errors. use super::MAX_TRANSACTIONS_SIZE; use codec::{Decode, Encode}; -use demo_runtime::{Block as GenericBlock, CheckedBlock}; -use demo_primitives::{Block, Hash, BlockNumber, Timestamp}; +use node_runtime::{Block as GenericBlock, CheckedBlock}; +use node_primitives::{Block, Hash, BlockNumber, Timestamp}; error_chain! { links { - Api(::demo_api::Error, ::demo_api::ErrorKind); + Api(::node_api::Error, ::node_api::ErrorKind); } errors { @@ -54,7 +54,7 @@ error_chain! { } } -/// Attempt to evaluate a substrate block as a demo block, returning error +/// Attempt to evaluate a substrate block as a node block, returning error /// upon any initial validity checks failing. pub fn evaluate_initial( proposal: &Block, diff --git a/substrate/demo/consensus/src/lib.rs b/substrate/node/consensus/src/lib.rs similarity index 92% rename from substrate/demo/consensus/src/lib.rs rename to substrate/node/consensus/src/lib.rs index 7f55bc1e68..a807ad69a7 100644 --- a/substrate/demo/consensus/src/lib.rs +++ b/substrate/node/consensus/src/lib.rs @@ -1,33 +1,31 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! This service uses BFT consensus provided by the substrate. -extern crate ed25519; extern crate parking_lot; -extern crate demo_api; -extern crate demo_transaction_pool as transaction_pool; -extern crate demo_runtime; -extern crate demo_primitives; +extern crate node_api; +extern crate node_transaction_pool as transaction_pool; +extern crate node_runtime; +extern crate node_primitives; extern crate substrate_bft as bft; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_support as runtime_support; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_client as client; extern crate exit_future; @@ -48,9 +46,9 @@ use std::sync::Arc; use std::time::{self, Duration, Instant}; use codec::{Decode, Encode}; -use demo_api::Api; -use demo_primitives::{AccountId, Hash, Block, BlockId, BlockNumber, Header, Timestamp, SessionKey}; -use primitives::AuthorityId; +use node_api::Api; +use node_primitives::{AccountId, Hash, Block, BlockId, BlockNumber, Header, Timestamp, SessionKey}; +use primitives::{AuthorityId, ed25519}; use transaction_pool::TransactionPool; use tokio::runtime::TaskExecutor; use tokio::timer::Delay; @@ -202,9 +200,9 @@ impl bft::Proposer for Proposer type Evaluate = Box>; fn propose(&self) -> Result { - use demo_api::BlockBuilder; + use node_api::BlockBuilder; use runtime_primitives::traits::{Hash as HashT, BlakeTwo256}; - use demo_primitives::InherentData; + use node_primitives::InherentData; const MAX_VOTE_OFFLINE_SECONDS: Duration = Duration::from_secs(60); @@ -363,8 +361,8 @@ impl bft::Proposer for Proposer fn import_misbehavior(&self, misbehavior: Vec<(AuthorityId, bft::Misbehavior)>) { use rhododendron::Misbehavior as GenericMisbehavior; use runtime_primitives::bft::{MisbehaviorKind, MisbehaviorReport}; - use demo_primitives::UncheckedExtrinsic as GenericExtrinsic; - use demo_runtime::{Call, UncheckedExtrinsic, ConsensusCall}; + use node_primitives::UncheckedExtrinsic as GenericExtrinsic; + use node_runtime::{Call, UncheckedExtrinsic, ConsensusCall}; let local_id = self.local_key.public().0.into(); let mut next_index = { @@ -408,7 +406,7 @@ impl bft::Proposer for Proposer let local_id = self.local_key.public().0.into(); let extrinsic = UncheckedExtrinsic { - signature: Some((demo_runtime::RawAddress::Id(local_id), signature)), + signature: Some((node_runtime::RawAddress::Id(local_id), signature)), index: payload.0, function: payload.1, }; @@ -427,7 +425,7 @@ impl bft::Proposer for Proposer // alter the message based on whether we think the empty proposer was forced to skip the round. // this is determined by checking if our local validator would have been forced to skip the round. if !was_proposed { - let public = ::ed25519::Public::from_raw(primary_validator.0); + let public = ed25519::Public::from_raw(primary_validator.0); info!( "Potential Offline Validator: {} failed to propose during assigned slot: {}", public, diff --git a/substrate/demo/consensus/src/offline_tracker.rs b/substrate/node/consensus/src/offline_tracker.rs similarity index 92% rename from substrate/demo/consensus/src/offline_tracker.rs rename to substrate/node/consensus/src/offline_tracker.rs index 243b801bce..18845dd68b 100644 --- a/substrate/demo/consensus/src/offline_tracker.rs +++ b/substrate/node/consensus/src/offline_tracker.rs @@ -1,22 +1,22 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Tracks offline validators. -use demo_primitives::AccountId; +use node_primitives::AccountId; use std::collections::HashMap; use std::time::{Instant, Duration}; diff --git a/substrate/demo/consensus/src/service.rs b/substrate/node/consensus/src/service.rs similarity index 93% rename from substrate/demo/consensus/src/service.rs rename to substrate/node/consensus/src/service.rs index e70bc78ab2..08bfe40af6 100644 --- a/substrate/demo/consensus/src/service.rs +++ b/substrate/node/consensus/src/service.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Consensus service. @@ -26,8 +26,8 @@ use bft::{self, BftService}; use client::{BlockchainEvents, ChainHead, BlockBody}; use ed25519; use futures::prelude::*; -use demo_api::Api; -use demo_primitives::{Block, Header}; +use node_api::Api; +use node_primitives::{Block, Header}; use transaction_pool::TransactionPool; use tokio::executor::current_thread::TaskExecutor as LocalThreadHandle; diff --git a/substrate/node/executor/Cargo.toml b/substrate/node/executor/Cargo.toml new file mode 100644 index 0000000000..fe93fd278d --- /dev/null +++ b/substrate/node/executor/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "node-executor" +version = "0.1.0" +authors = ["Parity Technologies "] +description = "Substrate node implementation in Rust." + +[dependencies] +hex-literal = "0.1" +triehash = "0.2" +parity-codec = { path = "../../codec" } +sr-io = { path = "../../core/sr-io" } +substrate-state-machine = { path = "../../core/state-machine" } +substrate-executor = { path = "../../core/executor" } +substrate-primitives = { path = "../../core/primitives" } +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } + +[dev-dependencies] +substrate-keyring = { path = "../../core/keyring" } +sr-primitives = { path = "../../core/sr-primitives" } +srml-support = { path = "../../srml/support" } +srml-balances = { path = "../../srml/balances" } +srml-session = { path = "../../srml/session" } +srml-staking = { path = "../../srml/staking" } +srml-system = { path = "../../srml/system" } +srml-consensus = { path = "../../srml/consensus" } +srml-timestamp = { path = "../../srml/timestamp" } +srml-treasury = { path = "../../srml/treasury" } diff --git a/substrate/demo/executor/src/lib.rs b/substrate/node/executor/src/lib.rs similarity index 91% rename from substrate/demo/executor/src/lib.rs rename to substrate/node/executor/src/lib.rs index 1c1631bea0..a226834f1c 100644 --- a/substrate/demo/executor/src/lib.rs +++ b/substrate/node/executor/src/lib.rs @@ -1,46 +1,45 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! A `CodeExecutor` specialisation which uses natively compiled runtime when the wasm to be //! executed is equivalent to the natively compiled code. -extern crate demo_runtime; +extern crate node_runtime; #[macro_use] extern crate substrate_executor; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_state_machine as state_machine; -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; extern crate substrate_primitives as primitives; -extern crate demo_primitives; -extern crate ed25519; +extern crate node_primitives; extern crate triehash; #[cfg(test)] extern crate substrate_keyring as keyring; -#[cfg(test)] extern crate substrate_runtime_primitives as runtime_primitives; -#[cfg(test)] extern crate substrate_runtime_support as runtime_support; -#[cfg(test)] extern crate substrate_runtime_balances as balances; -#[cfg(test)] extern crate substrate_runtime_session as session; -#[cfg(test)] extern crate substrate_runtime_staking as staking; -#[cfg(test)] extern crate substrate_runtime_system as system; -#[cfg(test)] extern crate substrate_runtime_consensus as consensus; -#[cfg(test)] extern crate substrate_runtime_timestamp as timestamp; -#[cfg(test)] extern crate substrate_runtime_treasury as treasury; +#[cfg(test)] extern crate sr_primitives as runtime_primitives; +#[cfg(test)] extern crate srml_support as runtime_support; +#[cfg(test)] extern crate srml_balances as balances; +#[cfg(test)] extern crate srml_session as session; +#[cfg(test)] extern crate srml_staking as staking; +#[cfg(test)] extern crate srml_system as system; +#[cfg(test)] extern crate srml_consensus as consensus; +#[cfg(test)] extern crate srml_timestamp as timestamp; +#[cfg(test)] extern crate srml_treasury as treasury; #[cfg(test)] #[macro_use] extern crate hex_literal; pub use substrate_executor::NativeExecutor; -native_executor_instance!(pub Executor, demo_runtime::api::dispatch, demo_runtime::VERSION, include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm")); +native_executor_instance!(pub Executor, node_runtime::api::dispatch, node_runtime::VERSION, include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm")); #[cfg(test)] mod tests { @@ -51,18 +50,17 @@ mod tests { use keyring::Keyring; use runtime_support::{Hashable, StorageValue, StorageMap}; use state_machine::{CodeExecutor, TestExternalities}; - use primitives::{twox_128, Blake2Hasher}; - use demo_primitives::{Hash, BlockNumber, AccountId}; + use primitives::{twox_128, Blake2Hasher, ed25519::{Public, Pair}}; + use node_primitives::{Hash, BlockNumber, AccountId}; use runtime_primitives::traits::Header as HeaderT; use runtime_primitives::{ApplyOutcome, ApplyError, ApplyResult}; use {balances, staking, session, system, consensus, timestamp, treasury}; use system::{EventRecord, Phase}; - use demo_runtime::{Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, + use node_runtime::{Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, BuildStorage, GenesisConfig, BalancesConfig, SessionConfig, StakingConfig, System, Event}; - use ed25519::{Public, Pair}; - const BLOATY_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm"); - const COMPACT_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm"); + const BLOATY_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.wasm"); + const COMPACT_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm"); // TODO: move into own crate. macro_rules! map { @@ -490,7 +488,7 @@ mod tests { twox_128(&>::key_for(0)).to_vec() => vec![0u8; 32] ]; - let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm"); + let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.wasm"); let r = WasmExecutor::new().call(&mut t, 8, &foreign_code[..], "initialise_block", &vec![].and(&from_block_number(1u64))); assert!(r.is_ok()); let r = WasmExecutor::new().call(&mut t, 8, &foreign_code[..], "apply_extrinsic", &vec![].and(&xt())).unwrap(); @@ -511,7 +509,7 @@ mod tests { twox_128(&>::key_for(0)).to_vec() => vec![0u8; 32] ]; - let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm"); + let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm"); let r = WasmExecutor::new().call(&mut t, 8, &foreign_code[..], "initialise_block", &vec![].and(&from_block_number(1u64))); assert!(r.is_ok()); let r = WasmExecutor::new().call(&mut t, 8, &foreign_code[..], "apply_extrinsic", &vec![].and(&xt())).unwrap(); diff --git a/substrate/node/network/Cargo.toml b/substrate/node/network/Cargo.toml new file mode 100644 index 0000000000..645edcfc42 --- /dev/null +++ b/substrate/node/network/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "node-network" +version = "0.1.0" +authors = ["Parity Technologies "] +description = "Substrate node networking protocol" + +[dependencies] +node-api = { path = "../api" } +node-consensus = { path = "../consensus" } +node-primitives = { path = "../primitives" } +substrate-bft = { path = "../../core/bft" } +substrate-network = { path = "../../core/network" } +substrate-primitives = { path = "../../core/primitives" } +futures = "0.1" +tokio = "0.1.7" +log = "0.4" +rhododendron = "0.3" diff --git a/substrate/demo/network/src/consensus.rs b/substrate/node/network/src/consensus.rs similarity index 93% rename from substrate/demo/network/src/consensus.rs rename to substrate/node/network/src/consensus.rs index d7c5fd92c5..63ed119afe 100644 --- a/substrate/demo/network/src/consensus.rs +++ b/substrate/node/network/src/consensus.rs @@ -1,30 +1,30 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! The "consensus" networking code built on top of the base network service. -//! This fulfills the `demo_consensus::Network` trait, providing a hook to be called +//! This fulfills the `node_consensus::Network` trait, providing a hook to be called //! each time consensus begins on a new chain head. use bft; -use ed25519; +use substrate_primitives::ed25519; use substrate_network::{self as net, generic_message as msg}; use substrate_network::consensus_gossip::ConsensusMessage; -use demo_api::Api; -use demo_consensus::Network; -use demo_primitives::{Block, Hash, SessionKey}; +use node_api::Api; +use node_consensus::Network; +use node_primitives::{Block, Hash, SessionKey}; use rhododendron; use futures::prelude::*; @@ -200,7 +200,7 @@ impl Future for MessageProcessTask { Ok(Async::Ready(None)) => return Ok(Async::Ready(())), Ok(Async::NotReady) => return Ok(Async::NotReady), Err(e) => { - debug!(target: "demo-network", "Error getting consensus message: {:?}", e); + debug!(target: "node-network", "Error getting consensus message: {:?}", e); return Err(e); }, } @@ -215,7 +215,7 @@ pub struct InputAdapter { impl Stream for InputAdapter { type Item = bft::Communication; - type Error = ::demo_consensus::Error; + type Error = ::node_consensus::Error; fn poll(&mut self) -> Poll, Self::Error> { match self.input.poll() { @@ -253,7 +253,7 @@ impl Network for ConsensusNetwork

{ type Input = InputAdapter; /// The output sink of BFT messages. Messages sent here should eventually pass to all /// current validators. - type Output = BftSink<::demo_consensus::Error>; + type Output = BftSink<::node_consensus::Error>; /// Get input and output streams of BFT messages. fn communication_for( @@ -285,7 +285,7 @@ impl Network for ConsensusNetwork

{ match process_task { Some(task) => task_executor.spawn(task), - None => warn!(target: "demo-network", "Cannot process incoming messages: network appears to be down"), + None => warn!(target: "node-network", "Cannot process incoming messages: network appears to be down"), } (InputAdapter { input: bft_recv }, sink) diff --git a/substrate/demo/network/src/lib.rs b/substrate/node/network/src/lib.rs similarity index 78% rename from substrate/demo/network/src/lib.rs rename to substrate/node/network/src/lib.rs index f32c039669..a01dae79b4 100644 --- a/substrate/demo/network/src/lib.rs +++ b/substrate/node/network/src/lib.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Substrate Demo-specific network implementation. +//! Substrate-specific network implementation. //! //! This manages gossip of consensus messages for BFT. @@ -22,12 +22,12 @@ extern crate substrate_bft as bft; extern crate substrate_network; +extern crate substrate_primitives; -extern crate demo_api; -extern crate demo_consensus; -extern crate demo_primitives; +extern crate node_api; +extern crate node_consensus; +extern crate node_primitives; -extern crate ed25519; extern crate futures; extern crate tokio; extern crate rhododendron; @@ -37,7 +37,7 @@ extern crate log; pub mod consensus; -use demo_primitives::{Block, Hash, Header}; +use node_primitives::{Block, Hash, Header}; use substrate_network::{NodeIndex, Context, Severity}; use substrate_network::consensus_gossip::ConsensusGossip; use substrate_network::{message, generic_message}; @@ -49,7 +49,7 @@ pub const PROTOCOL_ID: ::substrate_network::ProtocolId = *b"dot"; type FullStatus = GenericFullStatus; -/// Specialization of the network service for the demo protocol. +/// Specialization of the network service for the node protocol. pub type NetworkService = ::substrate_network::Service; @@ -60,7 +60,7 @@ pub struct Protocol { } impl Protocol { - /// Instantiate a demo protocol handler. + /// Instantiate a node protocol handler. pub fn new() -> Self { Protocol { consensus_gossip: ConsensusGossip::new(), @@ -92,13 +92,13 @@ impl Specialization for Protocol { fn on_message(&mut self, ctx: &mut Context, who: NodeIndex, message: message::Message) { match message { generic_message::Message::BftMessage(msg) => { - trace!(target: "demo-network", "BFT message from {}: {:?}", who, msg); + trace!(target: "node-network", "BFT message from {}: {:?}", who, msg); // TODO: check signature here? what if relevant block is unknown? self.consensus_gossip.on_bft_message(ctx, who, msg) } generic_message::Message::ChainSpecific(_) => { - trace!(target: "demo-network", "Bad message from {}", who); - ctx.report_peer(who, Severity::Bad("Invalid demo protocol message format")); + trace!(target: "node-network", "Bad message from {}", who); + ctx.report_peer(who, Severity::Bad("Invalid node protocol message format")); } _ => {} } diff --git a/substrate/node/primitives/Cargo.toml b/substrate/node/primitives/Cargo.toml new file mode 100644 index 0000000000..7d8840da42 --- /dev/null +++ b/substrate/node/primitives/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "node-primitives" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } + +[dev-dependencies] +substrate-serializer = { path = "../../core/serializer" } +pretty_assertions = "0.4" + +[features] +default = ["std"] +std = [ + "parity-codec-derive/std", + "parity-codec/std", + "substrate-primitives/std", + "sr-std/std", + "sr-primitives/std", + "serde_derive", + "serde/std", +] diff --git a/substrate/demo/primitives/src/lib.rs b/substrate/node/primitives/src/lib.rs similarity index 83% rename from substrate/demo/primitives/src/lib.rs rename to substrate/node/primitives/src/lib.rs index d93b75f395..670e0bdc3d 100644 --- a/substrate/demo/primitives/src/lib.rs +++ b/substrate/node/primitives/src/lib.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Low-level types used throughout the Substrate Demo code. +//! Low-level types used throughout the Substrate code. #![warn(missing_docs)] @@ -29,12 +29,12 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_std as rstd; +extern crate sr_primitives as runtime_primitives; extern crate substrate_primitives as primitives; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; use rstd::prelude::*; use runtime_primitives::generic; diff --git a/substrate/node/runtime/Cargo.toml b/substrate/node/runtime/Cargo.toml new file mode 100644 index 0000000000..a79cd9409b --- /dev/null +++ b/substrate/node/runtime/Cargo.toml @@ -0,0 +1,61 @@ +[package] +name = "node-runtime" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +rustc-hex = "1.0" +hex-literal = "0.1.0" +log = { version = "0.3", optional = true } +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +safe-mix = { version = "1.0", default_features = false} +parity-codec = { path = "../../codec" } +parity-codec-derive = { path = "../../codec/derive" } +sr-std = { path = "../../core/sr-std" } +sr-io = { path = "../../core/sr-io" } +srml-support = { path = "../../srml/support" } +substrate-primitives = { path = "../../core/primitives" } +substrate-keyring = { path = "../../core/keyring" } +srml-balances = { path = "../../srml/balances" } +srml-consensus = { path = "../../srml/consensus" } +srml-contract = { path = "../../srml/contract" } +srml-council = { path = "../../srml/council" } +srml-democracy = { path = "../../srml/democracy" } +srml-executive = { path = "../../srml/executive" } +sr-primitives = { path = "../../core/sr-primitives" } +srml-session = { path = "../../srml/session" } +srml-staking = { path = "../../srml/staking" } +srml-system = { path = "../../srml/system" } +srml-timestamp = { path = "../../srml/timestamp" } +srml-treasury = { path = "../../srml/treasury" } +sr-version = { path = "../../core/sr-version" } +node-primitives = { path = "../primitives" } + +[features] +default = ["std"] +std = [ + "parity-codec/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "srml-balances/std", + "srml-consensus/std", + "srml-contract/std", + "srml-council/std", + "srml-democracy/std", + "srml-executive/std", + "sr-primitives/std", + "srml-session/std", + "srml-staking/std", + "srml-system/std", + "srml-timestamp/std", + "srml-treasury/std", + "sr-version/std", + "node-primitives/std", + "serde_derive", + "serde/std", + "log", + "safe-mix/std" +] diff --git a/substrate/demo/runtime/src/checked_block.rs b/substrate/node/runtime/src/checked_block.rs similarity index 88% rename from substrate/demo/runtime/src/checked_block.rs rename to substrate/node/runtime/src/checked_block.rs index 281a9e4136..bba748dd15 100644 --- a/substrate/demo/runtime/src/checked_block.rs +++ b/substrate/node/runtime/src/checked_block.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Typesafe block interaction. @@ -54,7 +54,7 @@ impl CheckedBlock { } /// Extract the timestamp from the block. - pub fn timestamp(&self) -> ::demo_primitives::Timestamp { + pub fn timestamp(&self) -> ::node_primitives::Timestamp { let x = self.inner.extrinsics.get(TIMESTAMP_SET_POSITION as usize).and_then(|xt| match xt.function { Call::Timestamp(TimestampCall::set(x)) => Some(x), _ => None @@ -87,7 +87,7 @@ impl ::std::ops::Deref for CheckedBlock { /// Assert that a block is structurally valid. May lead to panic in the future /// in case it isn't. #[macro_export] -macro_rules! assert_demo_block { +macro_rules! assert_node_block { ($block: expr) => { $crate::CheckedBlock::new_unchecked($block, file!(), line!()) } diff --git a/substrate/demo/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs similarity index 86% rename from substrate/demo/runtime/src/lib.rs rename to substrate/node/runtime/src/lib.rs index 838fb9c330..4eee9a2449 100644 --- a/substrate/demo/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -1,31 +1,31 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! The Substrate Demo runtime. This can be compiled with ``#[no_std]`, ready for Wasm. +//! The Substrate runtime. This can be compiled with ``#[no_std]`, ready for Wasm. #![cfg_attr(not(feature = "std"), no_std)] #[macro_use] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; #[macro_use] -extern crate substrate_runtime_support; +extern crate srml_support; #[macro_use] -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; #[cfg(feature = "std")] #[macro_use] @@ -34,28 +34,28 @@ extern crate serde_derive; #[cfg(feature = "std")] extern crate serde; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[cfg_attr(not(feature = "std"), macro_use)] -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_consensus as consensus; -extern crate substrate_runtime_contract as contract; -extern crate substrate_runtime_council as council; -extern crate substrate_runtime_democracy as democracy; -extern crate substrate_runtime_executive as executive; -extern crate substrate_runtime_session as session; -extern crate substrate_runtime_staking as staking; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_timestamp as timestamp; -extern crate substrate_runtime_treasury as treasury; +extern crate sr_std as rstd; +extern crate srml_balances as balances; +extern crate srml_consensus as consensus; +extern crate srml_contract as contract; +extern crate srml_council as council; +extern crate srml_democracy as democracy; +extern crate srml_executive as executive; +extern crate srml_session as session; +extern crate srml_staking as staking; +extern crate srml_system as system; +extern crate srml_timestamp as timestamp; +extern crate srml_treasury as treasury; #[macro_use] -extern crate substrate_runtime_version as version; -extern crate demo_primitives; +extern crate sr_version as version; +extern crate node_primitives; #[cfg(feature = "std")] mod checked_block; @@ -63,7 +63,7 @@ mod checked_block; use rstd::prelude::*; use substrate_primitives::u32_trait::{_2, _4}; use codec::{Encode, Decode, Input}; -use demo_primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature, InherentData}; +use node_primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature, InherentData}; use runtime_primitives::generic; use runtime_primitives::traits::{Convert, BlakeTwo256, DigestItem}; use version::RuntimeVersion; @@ -88,8 +88,8 @@ pub struct Runtime; /// Runtime version. pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: ver_str!("demo"), - impl_name: ver_str!("substrate-demo"), + spec_name: ver_str!("node"), + impl_name: ver_str!("substrate-node"), authoring_version: 1, spec_version: 1, impl_version: 0, diff --git a/substrate/demo/runtime/wasm/Cargo.lock b/substrate/node/runtime/wasm/Cargo.lock similarity index 88% rename from substrate/demo/runtime/wasm/Cargo.lock rename to substrate/node/runtime/wasm/Cargo.lock index 89017d1a91..3711531432 100644 --- a/substrate/demo/runtime/wasm/Cargo.lock +++ b/substrate/node/runtime/wasm/Cargo.lock @@ -76,59 +76,6 @@ name = "crunchy" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "demo-primitives" -version = "0.1.0" -dependencies = [ - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", -] - -[[package]] -name = "demo-runtime" -version = "0.1.0" -dependencies = [ - "demo-primitives 0.1.0", - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-contract 0.1.0", - "substrate-runtime-council 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-executive 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-staking 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", - "substrate-runtime-treasury 0.1.0", - "substrate-runtime-version 0.1.0", -] - -[[package]] -name = "ed25519" -version = "0.1.0" -dependencies = [ - "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "elastic-array" version = "0.10.0" @@ -300,6 +247,47 @@ name = "nan-preserving-float" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "node-primitives" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "node-runtime" +version = "0.1.0" +dependencies = [ + "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "node-primitives 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-contract 0.1.0", + "srml-council 0.1.0", + "srml-democracy 0.1.0", + "srml-executive 0.1.0", + "srml-session 0.1.0", + "srml-staking 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "srml-treasury 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "nodrop" version = "0.1.12" @@ -331,6 +319,22 @@ name = "parity-bytes" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "parity-codec" +version = "0.1.0" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "0.1.0" +dependencies = [ + "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parity-wasm" version = "0.31.0" @@ -561,264 +565,50 @@ dependencies = [ ] [[package]] -name = "stable_deref_trait" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "substrate-codec" +name = "sr-io" version = "0.1.0" dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-codec-derive" -version = "0.1.0" -dependencies = [ - "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-keyring" -version = "0.1.0" -dependencies = [ - "ed25519 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-primitives" -version = "0.1.0" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-runtime-std 0.1.0", - "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-balances" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-consensus" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-contract" -version = "0.1.0" -dependencies = [ - "parity-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-sandbox 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-council" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-democracy" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-executive" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-io" -version = "0.1.0" -dependencies = [ - "ed25519 0.1.0", "environmental 0.1.0", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-state-machine 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "substrate-runtime-primitives" +name = "sr-primitives" version = "0.1.0" dependencies = [ "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "sr-io 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] -name = "substrate-runtime-sandbox" +name = "sr-sandbox" version = "0.1.0" dependencies = [ + "parity-codec 0.1.0", "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "sr-io 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "substrate-runtime-session" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", -] - -[[package]] -name = "substrate-runtime-staking" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-sandbox 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", -] - -[[package]] -name = "substrate-runtime-std" +name = "sr-std" version = "0.1.0" dependencies = [ "pwasm-alloc 0.1.0", @@ -827,81 +617,287 @@ dependencies = [ ] [[package]] -name = "substrate-runtime-support" +name = "sr-version" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", + "sr-std 0.1.0", ] [[package]] -name = "substrate-runtime-system" +name = "srml-balances" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] -name = "substrate-runtime-timestamp" +name = "srml-consensus" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", ] [[package]] -name = "substrate-runtime-treasury" +name = "srml-contract" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", + "parity-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-council" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-democracy 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", ] [[package]] -name = "substrate-runtime-version" +name = "srml-democracy" version = "0.1.0" dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-executive" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", +] + +[[package]] +name = "srml-session" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-staking" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-session 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-support" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-metadata 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-system" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-timestamp" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-treasury" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "substrate-keyring" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "substrate-metadata" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", +] + +[[package]] +name = "substrate-primitives" +version = "0.1.0" +dependencies = [ + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -914,10 +910,10 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-primitives 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/substrate/node/runtime/wasm/Cargo.toml b/substrate/node/runtime/wasm/Cargo.toml new file mode 100644 index 0000000000..ec718c477e --- /dev/null +++ b/substrate/node/runtime/wasm/Cargo.toml @@ -0,0 +1,63 @@ +[package] +name = "node-runtime" +version = "0.1.0" +authors = ["Parity Technologies "] + +[lib] +crate-type = ["cdylib"] + +[dependencies] +integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } +safe-mix = { version = "1.0", default_features = false} +parity-codec-derive = { path = "../../../codec/derive" } +parity-codec = { path = "../../../codec", default-features = false } +substrate-primitives = { path = "../../../core/primitives", default-features = false } +sr-std = { path = "../../../core/sr-std", default-features = false } +sr-io = { path = "../../../core/sr-io", default-features = false } +srml-support = { path = "../../../srml/support", default-features = false } +srml-balances = { path = "../../../srml/balances", default-features = false } +srml-consensus = { path = "../../../srml/consensus", default-features = false } +srml-contract = { path = "../../../srml/contract", default-features = false } +srml-council = { path = "../../../srml/council", default-features = false } +srml-democracy = { path = "../../../srml/democracy", default-features = false } +srml-executive = { path = "../../../srml/executive", default-features = false } +sr-primitives = { path = "../../../core/sr-primitives", default-features = false } +srml-session = { path = "../../../srml/session", default-features = false } +srml-staking = { path = "../../../srml/staking", default-features = false } +srml-system = { path = "../../../srml/system", default-features = false } +srml-timestamp = { path = "../../../srml/timestamp", default-features = false } +srml-treasury = { path = "../../../srml/treasury", default-features = false } +sr-version = { path = "../../../core/sr-version", default-features = false } +node-primitives = { path = "../../primitives", default-features = false } + +[features] +default = [] +std = [ + "safe-mix/std", + "parity-codec/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "srml-balances/std", + "srml-consensus/std", + "srml-contract/std", + "srml-council/std", + "srml-democracy/std", + "srml-executive/std", + "sr-primitives/std", + "srml-session/std", + "srml-staking/std", + "srml-system/std", + "srml-timestamp/std", + "srml-treasury/std", + "sr-version/std", + "node-primitives/std", +] + +[profile.release] +panic = "abort" +lto = true + +[workspace] +members = [] diff --git a/substrate/demo/runtime/wasm/build.sh b/substrate/node/runtime/wasm/build.sh similarity index 90% rename from substrate/demo/runtime/wasm/build.sh rename to substrate/node/runtime/wasm/build.sh index 0769faeba9..9fe3f0ca10 100755 --- a/substrate/demo/runtime/wasm/build.sh +++ b/substrate/node/runtime/wasm/build.sh @@ -2,7 +2,7 @@ set -e cargo +nightly build --target=wasm32-unknown-unknown --release -for i in demo_runtime +for i in node_runtime do wasm-gc target/wasm32-unknown-unknown/release/$i.wasm target/wasm32-unknown-unknown/release/$i.compact.wasm done diff --git a/substrate/substrate/test-runtime/wasm/src b/substrate/node/runtime/wasm/src similarity index 100% rename from substrate/substrate/test-runtime/wasm/src rename to substrate/node/runtime/wasm/src diff --git a/substrate/node/service/Cargo.toml b/substrate/node/service/Cargo.toml new file mode 100644 index 0000000000..045b8c8286 --- /dev/null +++ b/substrate/node/service/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "node-service" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +parking_lot = "0.4" +error-chain = "0.12" +lazy_static = "1.0" +log = "0.3" +slog = "^2" +tokio = "0.1.7" +hex-literal = "0.1" +node-api = { path = "../api" } +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } +node-executor = { path = "../executor" } +node-consensus = { path = "../consensus" } +node-network = { path = "../network" } +node-transaction-pool = { path = "../transaction-pool" } +sr-io = { path = "../../core/sr-io" } +substrate-primitives = { path = "../../core/primitives" } +substrate-network = { path = "../../core/network" } +substrate-client = { path = "../../core/client" } +substrate-service = { path = "../../core/service" } +substrate-telemetry = { path = "../../core/telemetry" } diff --git a/substrate/demo/service/src/chain_spec.rs b/substrate/node/service/src/chain_spec.rs similarity index 92% rename from substrate/demo/service/src/chain_spec.rs rename to substrate/node/service/src/chain_spec.rs index 84d0084da8..bf502cdbd1 100644 --- a/substrate/demo/service/src/chain_spec.rs +++ b/substrate/node/service/src/chain_spec.rs @@ -1,24 +1,23 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Substrate Demo chain configurations. +//! Substrate chain configurations. -use ed25519; -use primitives::AuthorityId; -use demo_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, +use primitives::{AuthorityId, ed25519}; +use node_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, SessionConfig, StakingConfig, TimestampConfig, BalancesConfig, TreasuryConfig, ContractConfig, Permill}; use service::ChainSpec; @@ -26,7 +25,7 @@ use service::ChainSpec; const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; pub fn testnet_config() -> Result, String> { - //ChainSpec::from_embedded(include_bytes!("../res/demo.json")) + //ChainSpec::from_embedded(include_bytes!("../res/node.json")) Ok(staging_testnet_config()) } @@ -42,7 +41,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { ]; GenesisConfig { consensus: Some(ConsensusConfig { - code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm").to_vec(), // TODO change + code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), // TODO change authorities: initial_authorities.clone(), }), system: None, @@ -133,7 +132,7 @@ fn testnet_genesis(initial_authorities: Vec) -> GenesisConfig { ]; GenesisConfig { consensus: Some(ConsensusConfig { - code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm").to_vec(), + code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), authorities: initial_authorities.clone(), }), system: None, diff --git a/substrate/demo/service/src/lib.rs b/substrate/node/service/src/lib.rs similarity index 87% rename from substrate/demo/service/src/lib.rs rename to substrate/node/service/src/lib.rs index 3f761b7542..469349d1c4 100644 --- a/substrate/demo/service/src/lib.rs +++ b/substrate/node/service/src/lib.rs @@ -1,31 +1,30 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . #![warn(unused_extern_crates)] -//! Substrate Demo service. Specialized wrapper over substrate service. +//! Substrate service. Specialized wrapper over substrate service. -extern crate ed25519; -extern crate demo_api; -extern crate demo_primitives; -extern crate demo_runtime; -extern crate demo_executor; -extern crate demo_network; -extern crate demo_transaction_pool as transaction_pool; -extern crate demo_consensus as consensus; +extern crate node_api; +extern crate node_primitives; +extern crate node_runtime; +extern crate node_executor; +extern crate node_network; +extern crate node_transaction_pool as transaction_pool; +extern crate node_consensus as consensus; extern crate substrate_primitives as primitives; extern crate substrate_network as network; extern crate substrate_client as client; @@ -42,11 +41,11 @@ pub mod chain_spec; use std::sync::Arc; use transaction_pool::TransactionPool; -use demo_api::Api; -use demo_primitives::{Block, Hash}; -use demo_runtime::GenesisConfig; +use node_api::Api; +use node_primitives::{Block, Hash}; +use node_runtime::GenesisConfig; use client::Client; -use demo_network::{Protocol as DemoProtocol, consensus::ConsensusNetwork}; +use node_network::{Protocol as DemoProtocol, consensus::ConsensusNetwork}; use tokio::runtime::TaskExecutor; use service::FactoryFullConfiguration; use primitives::{Blake2Hasher, RlpCodec}; @@ -97,13 +96,13 @@ impl service::ServiceFactory for Factory { type Block = Block; type ExtrinsicHash = Hash; type NetworkProtocol = DemoProtocol; - type RuntimeDispatch = demo_executor::Executor; + type RuntimeDispatch = node_executor::Executor; type FullExtrinsicPoolApi = transaction_pool::ChainApi>; type LightExtrinsicPoolApi = transaction_pool::ChainApi>; type Genesis = GenesisConfig; type Configuration = CustomConfiguration; - const NETWORK_PROTOCOL_ID: network::ProtocolId = ::demo_network::PROTOCOL_ID; + const NETWORK_PROTOCOL_ID: network::ProtocolId = ::node_network::PROTOCOL_ID; fn build_full_extrinsic_pool(config: ExtrinsicPoolOptions, client: Arc>) -> Result>, Error> diff --git a/substrate/demo/src/main.rs b/substrate/node/src/main.rs similarity index 84% rename from substrate/demo/src/main.rs rename to substrate/node/src/main.rs index 7b219728c3..dca5e5ed90 100644 --- a/substrate/demo/src/main.rs +++ b/substrate/node/src/main.rs @@ -1,24 +1,24 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Substrate Demo CLI +//! Substrate CLI #![warn(missing_docs)] -extern crate demo_cli as cli; +extern crate node_cli as cli; extern crate ctrlc; extern crate futures; diff --git a/substrate/node/transaction-pool/Cargo.toml b/substrate/node/transaction-pool/Cargo.toml new file mode 100644 index 0000000000..45455bcfd6 --- /dev/null +++ b/substrate/node/transaction-pool/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "node-transaction-pool" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +log = "0.3.0" +error-chain = "0.12" +parking_lot = "0.4" +node-api = { path = "../api" } +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } +substrate-client = { path = "../../core/client" } +parity-codec = { path = "../../codec" } +substrate-keyring = { path = "../../core/keyring" } +substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } +substrate-primitives = { path = "../../core/primitives" } +sr-primitives = { path = "../../core/sr-primitives" } diff --git a/substrate/demo/transaction-pool/src/error.rs b/substrate/node/transaction-pool/src/error.rs similarity index 87% rename from substrate/demo/transaction-pool/src/error.rs rename to substrate/node/transaction-pool/src/error.rs index 2303372084..7d1712a55a 100644 --- a/substrate/demo/transaction-pool/src/error.rs +++ b/substrate/node/transaction-pool/src/error.rs @@ -1,28 +1,28 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . use extrinsic_pool; -use demo_api; +use node_api; use primitives::Hash; use runtime::{Address, UncheckedExtrinsic}; error_chain! { links { Pool(extrinsic_pool::Error, extrinsic_pool::ErrorKind); - Api(demo_api::Error, demo_api::ErrorKind); + Api(node_api::Error, node_api::ErrorKind); } errors { /// Unexpected extrinsic format submitted diff --git a/substrate/demo/transaction-pool/src/lib.rs b/substrate/node/transaction-pool/src/lib.rs similarity index 91% rename from substrate/demo/transaction-pool/src/lib.rs rename to substrate/node/transaction-pool/src/lib.rs index 637356a098..b6dfcd3f25 100644 --- a/substrate/demo/transaction-pool/src/lib.rs +++ b/substrate/node/transaction-pool/src/lib.rs @@ -1,28 +1,27 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -extern crate ed25519; extern crate substrate_client as client; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_primitives; -extern crate substrate_runtime_primitives; -extern crate demo_runtime as runtime; -extern crate demo_primitives as primitives; -extern crate demo_api; +extern crate sr_primitives; +extern crate node_runtime as runtime; +extern crate node_primitives as primitives; +extern crate node_api; extern crate parking_lot; #[cfg(test)] @@ -44,10 +43,10 @@ use std::{ use codec::{Decode, Encode}; use extrinsic_pool::{Readiness, scoring::{Change, Choice}, VerifiedFor, ExtrinsicFor}; -use demo_api::Api; +use node_api::Api; use primitives::{AccountId, BlockId, Block, Hash, Index}; use runtime::{Address, UncheckedExtrinsic, RawAddress}; -use substrate_runtime_primitives::traits::{Bounded, Checkable, Hash as HashT, BlakeTwo256}; +use sr_primitives::traits::{Bounded, Checkable, Hash as HashT, BlakeTwo256}; pub use extrinsic_pool::{Options, Status, LightStatus, VerifiedTransaction as VerifiedTransactionOps}; pub use error::{Error, ErrorKind, Result}; diff --git a/substrate/substrate/pwasm-alloc/Cargo.toml b/substrate/pwasm-alloc/Cargo.toml similarity index 100% rename from substrate/substrate/pwasm-alloc/Cargo.toml rename to substrate/pwasm-alloc/Cargo.toml diff --git a/substrate/substrate/pwasm-alloc/README.adoc b/substrate/pwasm-alloc/README.adoc similarity index 100% rename from substrate/substrate/pwasm-alloc/README.adoc rename to substrate/pwasm-alloc/README.adoc diff --git a/substrate/substrate/runtime-sandbox/build.rs b/substrate/pwasm-alloc/build.rs old mode 100755 new mode 100644 similarity index 100% rename from substrate/substrate/runtime-sandbox/build.rs rename to substrate/pwasm-alloc/build.rs diff --git a/substrate/substrate/pwasm-alloc/src/lib.rs b/substrate/pwasm-alloc/src/lib.rs similarity index 100% rename from substrate/substrate/pwasm-alloc/src/lib.rs rename to substrate/pwasm-alloc/src/lib.rs diff --git a/substrate/substrate/pwasm-libc/Cargo.toml b/substrate/pwasm-libc/Cargo.toml similarity index 100% rename from substrate/substrate/pwasm-libc/Cargo.toml rename to substrate/pwasm-libc/Cargo.toml diff --git a/substrate/substrate/pwasm-libc/README.adoc b/substrate/pwasm-libc/README.adoc similarity index 100% rename from substrate/substrate/pwasm-libc/README.adoc rename to substrate/pwasm-libc/README.adoc diff --git a/substrate/substrate/pwasm-libc/src/lib.rs b/substrate/pwasm-libc/src/lib.rs similarity index 100% rename from substrate/substrate/pwasm-libc/src/lib.rs rename to substrate/pwasm-libc/src/lib.rs diff --git a/substrate/scripts/build-demos.sh b/substrate/scripts/build-demos.sh deleted file mode 100755 index 285da143c1..0000000000 --- a/substrate/scripts/build-demos.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash - -# This script assumes that all pre-requisites are installed. - -set -e - -PROJECT_ROOT=`git rev-parse --show-toplevel` -source `dirname "$0"`/common.sh - -export CARGO_INCREMENTAL=0 - -# Save current directory. -pushd . - -cd $ROOT - -for DEMO in "${DEMOS[@]}" -do - echo "*** Building wasm binaries in $DEMO" - cd "$PROJECT_ROOT/$DEMO" - - ./build.sh - - cd - >> /dev/null -done - -# Restore initial directory. -popd diff --git a/substrate/scripts/common.sh b/substrate/scripts/common.sh index a75be8e406..c7629f2d9e 100644 --- a/substrate/scripts/common.sh +++ b/substrate/scripts/common.sh @@ -4,12 +4,9 @@ ROOT=`dirname "$0"` # A list of directories which contain wasm projects. SRCS=( - "substrate/executor/wasm" -) - -DEMOS=( - "demo/runtime/wasm" - "substrate/test-runtime/wasm" + "core/executor/wasm" + "node/runtime/wasm" + "core/test-runtime/wasm" ) # Make pushd/popd silent. diff --git a/substrate/substrate/runtime/README.adoc b/substrate/srml/README.adoc similarity index 100% rename from substrate/substrate/runtime/README.adoc rename to substrate/srml/README.adoc diff --git a/substrate/srml/balances/Cargo.toml b/substrate/srml/balances/Cargo.toml new file mode 100644 index 0000000000..28059c3409 --- /dev/null +++ b/substrate/srml/balances/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "srml-balances" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +safe-mix = { version = "1.0", default_features = false} +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-keyring = { path = "../../core/keyring", optional = true } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-system = { path = "../system", default_features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "safe-mix/std", + "substrate-keyring", + "parity-codec/std", + "parity-codec-derive/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", + "srml-system/std", +] diff --git a/substrate/substrate/runtime/balances/src/address.rs b/substrate/srml/balances/src/address.rs similarity index 100% rename from substrate/substrate/runtime/balances/src/address.rs rename to substrate/srml/balances/src/address.rs diff --git a/substrate/substrate/runtime/balances/src/genesis_config.rs b/substrate/srml/balances/src/genesis_config.rs similarity index 100% rename from substrate/substrate/runtime/balances/src/genesis_config.rs rename to substrate/srml/balances/src/genesis_config.rs diff --git a/substrate/substrate/runtime/balances/src/lib.rs b/substrate/srml/balances/src/lib.rs similarity index 98% rename from substrate/substrate/runtime/balances/src/lib.rs rename to substrate/srml/balances/src/lib.rs index 3451b55f6a..c14cd62357 100644 --- a/substrate/substrate/runtime/balances/src/lib.rs +++ b/substrate/srml/balances/src/lib.rs @@ -26,19 +26,19 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; -extern crate substrate_runtime_system as system; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; +extern crate srml_system as system; use rstd::prelude::*; use rstd::{cmp, result}; diff --git a/substrate/substrate/runtime/balances/src/mock.rs b/substrate/srml/balances/src/mock.rs similarity index 100% rename from substrate/substrate/runtime/balances/src/mock.rs rename to substrate/srml/balances/src/mock.rs diff --git a/substrate/substrate/runtime/balances/src/tests.rs b/substrate/srml/balances/src/tests.rs similarity index 100% rename from substrate/substrate/runtime/balances/src/tests.rs rename to substrate/srml/balances/src/tests.rs diff --git a/substrate/srml/consensus/Cargo.toml b/substrate/srml/consensus/Cargo.toml new file mode 100644 index 0000000000..e6945f15bd --- /dev/null +++ b/substrate/srml/consensus/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "srml-consensus" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-system = { path = "../system", default_features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "parity-codec/std", + "parity-codec-derive/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", + "srml-system/std", +] diff --git a/substrate/substrate/runtime/consensus/src/lib.rs b/substrate/srml/consensus/src/lib.rs similarity index 95% rename from substrate/substrate/runtime/consensus/src/lib.rs rename to substrate/srml/consensus/src/lib.rs index 07ff10d071..40da2f25af 100644 --- a/substrate/substrate/runtime/consensus/src/lib.rs +++ b/substrate/srml/consensus/src/lib.rs @@ -20,10 +20,10 @@ #[allow(unused_imports)] #[macro_use] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg(feature = "std")] extern crate serde; @@ -33,12 +33,12 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; -extern crate substrate_codec as codec; -extern crate substrate_runtime_system as system; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; +extern crate parity_codec as codec; +extern crate srml_system as system; extern crate substrate_primitives; use rstd::prelude::*; diff --git a/substrate/srml/contract/Cargo.toml b/substrate/srml/contract/Cargo.toml new file mode 100644 index 0000000000..2e83124092 --- /dev/null +++ b/substrate/srml/contract/Cargo.toml @@ -0,0 +1,41 @@ +[package] +name = "srml-contract" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +pwasm-utils = { version = "0.3", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-wasm = { version = "0.31", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-sandbox = { path = "../../core/sr-sandbox", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-balances = { path = "../balances", default_features = false } + +[dev-dependencies] +wabt = "0.4" +assert_matches = "1.1" + +[features] +default = ["std"] +std = [ + "serde_derive", + "serde/std", + "parity-codec/std", + "substrate-primitives/std", + "sr-primitives/std", + "sr-io/std", + "sr-std/std", + "srml-balances/std", + "sr-sandbox/std", + "srml-support/std", + "srml-system/std", + "parity-wasm/std", + "pwasm-utils/std", +] diff --git a/substrate/substrate/runtime/contract/src/account_db.rs b/substrate/srml/contract/src/account_db.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/account_db.rs rename to substrate/srml/contract/src/account_db.rs diff --git a/substrate/substrate/runtime/contract/src/double_map.rs b/substrate/srml/contract/src/double_map.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/double_map.rs rename to substrate/srml/contract/src/double_map.rs diff --git a/substrate/substrate/runtime/contract/src/exec.rs b/substrate/srml/contract/src/exec.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/exec.rs rename to substrate/srml/contract/src/exec.rs diff --git a/substrate/substrate/runtime/contract/src/gas.rs b/substrate/srml/contract/src/gas.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/gas.rs rename to substrate/srml/contract/src/gas.rs diff --git a/substrate/substrate/runtime/contract/src/genesis_config.rs b/substrate/srml/contract/src/genesis_config.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/genesis_config.rs rename to substrate/srml/contract/src/genesis_config.rs diff --git a/substrate/substrate/runtime/contract/src/lib.rs b/substrate/srml/contract/src/lib.rs similarity index 95% rename from substrate/substrate/runtime/contract/src/lib.rs rename to substrate/srml/contract/src/lib.rs index 34acb7dcc0..f20e8ceb54 100644 --- a/substrate/substrate/runtime/contract/src/lib.rs +++ b/substrate/srml/contract/src/lib.rs @@ -62,20 +62,20 @@ extern crate serde; extern crate parity_wasm; extern crate pwasm_utils; -extern crate substrate_codec as codec; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_sandbox as sandbox; +extern crate parity_codec as codec; +extern crate sr_io as runtime_io; +extern crate sr_sandbox as sandbox; #[macro_use] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_system as system; +extern crate srml_balances as balances; +extern crate srml_system as system; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_primitives; #[cfg(test)] diff --git a/substrate/substrate/runtime/contract/src/tests.rs b/substrate/srml/contract/src/tests.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/tests.rs rename to substrate/srml/contract/src/tests.rs diff --git a/substrate/substrate/runtime/contract/src/vm/env_def/macros.rs b/substrate/srml/contract/src/vm/env_def/macros.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/vm/env_def/macros.rs rename to substrate/srml/contract/src/vm/env_def/macros.rs diff --git a/substrate/substrate/runtime/contract/src/vm/env_def/mod.rs b/substrate/srml/contract/src/vm/env_def/mod.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/vm/env_def/mod.rs rename to substrate/srml/contract/src/vm/env_def/mod.rs diff --git a/substrate/substrate/runtime/contract/src/vm/mod.rs b/substrate/srml/contract/src/vm/mod.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/vm/mod.rs rename to substrate/srml/contract/src/vm/mod.rs diff --git a/substrate/substrate/runtime/contract/src/vm/prepare.rs b/substrate/srml/contract/src/vm/prepare.rs similarity index 100% rename from substrate/substrate/runtime/contract/src/vm/prepare.rs rename to substrate/srml/contract/src/vm/prepare.rs diff --git a/substrate/srml/council/Cargo.toml b/substrate/srml/council/Cargo.toml new file mode 100644 index 0000000000..7f546dd277 --- /dev/null +++ b/substrate/srml/council/Cargo.toml @@ -0,0 +1,43 @@ +[package] +name = "srml-council" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +safe-mix = { version = "1.0", default_features = false} +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-keyring = { path = "../../core/keyring", optional = true } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } +srml-balances = { path = "../balances", default_features = false } +srml-democracy = { path = "../democracy", default_features = false } +srml-system = { path = "../system", default_features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "safe-mix/std", + "substrate-keyring", + "parity-codec/std", + "parity-codec-derive/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", + "srml-consensus/std", + "srml-balances/std", + "srml-democracy/std", + "srml-system/std", +] diff --git a/substrate/substrate/runtime/council/src/lib.rs b/substrate/srml/council/src/lib.rs similarity index 93% rename from substrate/substrate/runtime/council/src/lib.rs rename to substrate/srml/council/src/lib.rs index 1c0883877f..1ca4283574 100644 --- a/substrate/substrate/runtime/council/src/lib.rs +++ b/substrate/srml/council/src/lib.rs @@ -30,17 +30,17 @@ extern crate serde_derive; extern crate hex_literal; extern crate integer_sqrt; -extern crate substrate_codec as codec; -#[macro_use] extern crate substrate_codec_derive; +extern crate parity_codec as codec; +#[macro_use] extern crate parity_codec_derive; extern crate substrate_primitives; #[cfg(feature = "std")] extern crate substrate_keyring as keyring; -#[macro_use] extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_io as runtime_io; -#[macro_use] extern crate substrate_runtime_support; -extern crate substrate_runtime_primitives as primitives; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_democracy as democracy; -extern crate substrate_runtime_system as system; +#[macro_use] extern crate sr_std as rstd; +extern crate sr_io as runtime_io; +#[macro_use] extern crate srml_support; +extern crate sr_primitives as primitives; +extern crate srml_balances as balances; +extern crate srml_democracy as democracy; +extern crate srml_system as system; #[cfg(feature = "std")] use rstd::prelude::*; @@ -49,7 +49,7 @@ use std::collections::HashMap; #[cfg(feature = "std")] use primitives::traits::As; #[cfg(feature = "std")] -use substrate_runtime_support::StorageValue; +use srml_support::StorageValue; pub mod voting; pub mod motions; diff --git a/substrate/substrate/runtime/council/src/motions.rs b/substrate/srml/council/src/motions.rs similarity index 98% rename from substrate/substrate/runtime/council/src/motions.rs rename to substrate/srml/council/src/motions.rs index b9b26df00f..babbec7834 100644 --- a/substrate/substrate/runtime/council/src/motions.rs +++ b/substrate/srml/council/src/motions.rs @@ -20,8 +20,8 @@ use rstd::prelude::*; use rstd::result; use substrate_primitives::u32_trait::Value as U32; use primitives::traits::{Hash, EnsureOrigin, MaybeSerializeDebug, OnFinalise}; -use substrate_runtime_support::dispatch::{Result, Dispatchable, Parameter}; -use substrate_runtime_support::{StorageValue, StorageMap}; +use srml_support::dispatch::{Result, Dispatchable, Parameter}; +use srml_support::{StorageValue, StorageMap}; use super::{Trait as CouncilTrait, Module as Council}; use system::{self, ensure_signed}; @@ -221,7 +221,7 @@ mod tests { use super::RawEvent; use ::tests::*; use ::tests::{Call, Origin, Event as OuterEvent}; - use substrate_runtime_support::Hashable; + use srml_support::Hashable; use system::{EventRecord, Phase}; #[test] diff --git a/substrate/substrate/runtime/council/src/seats.rs b/substrate/srml/council/src/seats.rs similarity index 99% rename from substrate/substrate/runtime/council/src/seats.rs rename to substrate/srml/council/src/seats.rs index 294035a25a..8941dbeccb 100644 --- a/substrate/substrate/runtime/council/src/seats.rs +++ b/substrate/srml/council/src/seats.rs @@ -19,7 +19,7 @@ use rstd::prelude::*; use primitives::traits::{Zero, One, As, Lookup, OnFinalise}; use runtime_io::print; -use substrate_runtime_support::{StorageValue, StorageMap, dispatch::Result}; +use srml_support::{StorageValue, StorageMap, dispatch::Result}; use democracy; use balances::{self, address::Address}; use system::{self, ensure_signed, ensure_root}; diff --git a/substrate/substrate/runtime/council/src/voting.rs b/substrate/srml/council/src/voting.rs similarity index 99% rename from substrate/substrate/runtime/council/src/voting.rs rename to substrate/srml/council/src/voting.rs index 450eb034f1..886adfc7bf 100644 --- a/substrate/substrate/runtime/council/src/voting.rs +++ b/substrate/srml/council/src/voting.rs @@ -20,8 +20,8 @@ use rstd::prelude::*; use rstd::borrow::Borrow; use primitives::traits::{OnFinalise, Hash}; use runtime_io::print; -use substrate_runtime_support::dispatch::Result; -use substrate_runtime_support::{StorageValue, StorageMap, IsSubType}; +use srml_support::dispatch::Result; +use srml_support::{StorageValue, StorageMap, IsSubType}; use {system, democracy}; use super::{Trait as CouncilTrait, Module as Council}; use system::{ensure_signed, ensure_root}; @@ -244,7 +244,7 @@ mod tests { use super::*; use ::tests::*; use ::tests::{Call, Origin}; - use substrate_runtime_support::Hashable; + use srml_support::Hashable; use democracy::VoteThreshold; #[test] diff --git a/substrate/srml/democracy/Cargo.toml b/substrate/srml/democracy/Cargo.toml new file mode 100644 index 0000000000..5a523d5f5c --- /dev/null +++ b/substrate/srml/democracy/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "srml-democracy" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +safe-mix = { version = "1.0", default_features = false} +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-balances = { path = "../balances", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } +srml-system = { path = "../system", default_features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "safe-mix/std", + "parity-codec/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", + "srml-consensus/std", + "srml-balances/std", + "srml-system/std", +] diff --git a/substrate/substrate/runtime/democracy/src/lib.rs b/substrate/srml/democracy/src/lib.rs similarity index 97% rename from substrate/substrate/runtime/democracy/src/lib.rs rename to substrate/srml/democracy/src/lib.rs index 12f2e7e7aa..f74f37094d 100644 --- a/substrate/substrate/runtime/democracy/src/lib.rs +++ b/substrate/srml/democracy/src/lib.rs @@ -29,23 +29,23 @@ extern crate substrate_primitives; extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[macro_use] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support; +extern crate srml_support; -extern crate substrate_codec as codec; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_system as system; +extern crate parity_codec as codec; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; +extern crate srml_balances as balances; +extern crate srml_system as system; use rstd::prelude::*; use rstd::result; use primitives::traits::{Zero, OnFinalise, As, MaybeSerializeDebug}; -use substrate_runtime_support::{StorageValue, StorageMap, Parameter, Dispatchable, IsSubType}; -use substrate_runtime_support::dispatch::Result; +use srml_support::{StorageValue, StorageMap, Parameter, Dispatchable, IsSubType}; +use srml_support::dispatch::Result; use system::{ensure_signed, ensure_root}; #[cfg(any(feature = "std", test))] diff --git a/substrate/substrate/runtime/democracy/src/vote_threshold.rs b/substrate/srml/democracy/src/vote_threshold.rs similarity index 100% rename from substrate/substrate/runtime/democracy/src/vote_threshold.rs rename to substrate/srml/democracy/src/vote_threshold.rs diff --git a/substrate/srml/example/Cargo.toml b/substrate/srml/example/Cargo.toml new file mode 100644 index 0000000000..cb173c0896 --- /dev/null +++ b/substrate/srml/example/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "srml-example" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-balances = { path = "../balances", default_features = false } + +[features] +default = ["std"] +std = [ + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", + "srml-balances/std", + "serde/std", + "serde_derive", + "parity-codec/std", + "parity-codec-derive/std", + "substrate-primitives/std", + "srml-system/std", +] diff --git a/substrate/substrate/runtime/example/src/lib.rs b/substrate/srml/example/src/lib.rs similarity index 97% rename from substrate/substrate/runtime/example/src/lib.rs rename to substrate/srml/example/src/lib.rs index 8247106e38..77e77ef1ad 100644 --- a/substrate/substrate/runtime/example/src/lib.rs +++ b/substrate/srml/example/src/lib.rs @@ -22,11 +22,11 @@ // Assert macros used in tests. #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std; +extern crate sr_std; // Needed for tests (`with_externalities`). #[cfg(test)] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; // Needed for the set of mock primitives used in our tests. #[cfg(test)] @@ -41,22 +41,22 @@ extern crate serde_derive; // Needed for deriving `Encode` and `Decode` for `RawEvent`. #[macro_use] -extern crate substrate_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec_derive; +extern crate parity_codec as codec; // Needed for type-safe access to storage DB. #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; // Needed for various traits. In our case, `OnFinalise`. -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; // `system` module provides us with all sorts of useful stuff and macros // depend on it being around. -extern crate substrate_runtime_system as system; +extern crate srml_system as system; // `balances` module is needed for our little example. It's not required in // general (though if you want your module to be able to work with tokens, then you // might find it useful). -extern crate substrate_runtime_balances as balances; +extern crate srml_balances as balances; use runtime_primitives::traits::OnFinalise; use runtime_support::{StorageValue, dispatch::Result}; diff --git a/substrate/srml/executive/Cargo.toml b/substrate/srml/executive/Cargo.toml new file mode 100644 index 0000000000..113a7d307a --- /dev/null +++ b/substrate/srml/executive/Cargo.toml @@ -0,0 +1,33 @@ +[package] +name = "srml-executive" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-system = { path = "../system", default_features = false } + +[dev-dependencies] +parity-codec-derive = { path = "../../codec/derive" } +substrate-primitives = { path = "../../core/primitives" } +srml-balances = { path = "../balances" } + +[features] +default = ["std"] +std = [ + "sr-std/std", + "srml-support/std", + "serde/std", + "serde_derive", + "parity-codec/std", + "sr-primitives/std", + "sr-io/std", + "srml-system/std", +] diff --git a/substrate/substrate/runtime/executive/src/lib.rs b/substrate/srml/executive/src/lib.rs similarity index 93% rename from substrate/substrate/runtime/executive/src/lib.rs rename to substrate/srml/executive/src/lib.rs index 9b7e736f6d..a1086e0881 100644 --- a/substrate/substrate/runtime/executive/src/lib.rs +++ b/substrate/srml/executive/src/lib.rs @@ -26,16 +26,16 @@ extern crate serde_derive; #[cfg(test)] #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[cfg_attr(test, macro_use)] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_codec as codec; -extern crate substrate_runtime_primitives as primitives; -extern crate substrate_runtime_system as system; +extern crate sr_std as rstd; +extern crate sr_io as runtime_io; +extern crate parity_codec as codec; +extern crate sr_primitives as primitives; +extern crate srml_system as system; #[cfg(test)] #[macro_use] @@ -45,13 +45,14 @@ extern crate hex_literal; extern crate substrate_primitives; #[cfg(test)] -extern crate substrate_runtime_balances as balances; +extern crate srml_balances as balances; use rstd::prelude::*; use rstd::marker::PhantomData; use rstd::result; use primitives::traits::{self, Header, Zero, One, Checkable, Applyable, CheckEqual, OnFinalise, MakePayment, Hash}; +use runtime_support::Dispatchable; use codec::{Codec, Encode}; use system::extrinsics_root; use primitives::{ApplyOutcome, ApplyError}; @@ -87,7 +88,9 @@ impl< Finalisation: OnFinalise, > Executive where Block::Extrinsic: Checkable Result> + Codec, - Result>>::Checked: Applyable + Result>>::Checked: Applyable, + < Result>>::Checked as Applyable>::Call: Dispatchable, + << Result>>::Checked as Applyable>::Call as Dispatchable>::Origin: From> { /// Start the execution of a particular block. pub fn initialise_block(header: &System::Header) { @@ -191,8 +194,8 @@ impl< } // decode parameters and dispatch - let r = xt.apply(); - + let (f, s) = xt.deconstruct(); + let r = f.dispatch(s.into()); >::note_applied_extrinsic(&r); r.map(|_| internal::ApplyOutcome::Success).or_else(|e| Ok(internal::ApplyOutcome::Fail(e))) diff --git a/substrate/srml/session/Cargo.toml b/substrate/srml/session/Cargo.toml new file mode 100644 index 0000000000..5e2e29ab05 --- /dev/null +++ b/substrate/srml/session/Cargo.toml @@ -0,0 +1,40 @@ +[package] +name = "srml-session" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +safe-mix = { version = "1.0", default_features = false} +substrate-keyring = { path = "../../core/keyring", optional = true } +substrate-primitives = { path = "../../core/primitives", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-timestamp = { path = "../timestamp", default_features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "safe-mix/std", + "substrate-keyring", + "parity-codec/std", + "parity-codec-derive/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", + "srml-consensus/std", + "srml-system/std", + "srml-timestamp/std" +] diff --git a/substrate/substrate/runtime/session/src/lib.rs b/substrate/srml/session/src/lib.rs similarity index 97% rename from substrate/substrate/runtime/session/src/lib.rs rename to substrate/srml/session/src/lib.rs index 007dd43729..61cf47a095 100644 --- a/substrate/substrate/runtime/session/src/lib.rs +++ b/substrate/srml/session/src/lib.rs @@ -33,20 +33,20 @@ extern crate substrate_keyring as keyring; extern crate substrate_primitives; #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_codec as codec; -extern crate substrate_runtime_primitives as primitives; -extern crate substrate_runtime_consensus as consensus; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_timestamp as timestamp; +extern crate sr_io as runtime_io; +extern crate parity_codec as codec; +extern crate sr_primitives as primitives; +extern crate srml_consensus as consensus; +extern crate srml_system as system; +extern crate srml_timestamp as timestamp; use rstd::prelude::*; use primitives::traits::{Zero, One, OnFinalise, Convert, As}; diff --git a/substrate/srml/staking/Cargo.toml b/substrate/srml/staking/Cargo.toml new file mode 100644 index 0000000000..6fa892e5c6 --- /dev/null +++ b/substrate/srml/staking/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "srml-staking" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +safe-mix = { version = "1.0", default_features = false} +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-keyring = { path = "../../core/keyring", optional = true } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-sandbox = { path = "../../core/sr-sandbox", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-balances = { path = "../balances", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-session = { path = "../session", default_features = false } +srml-timestamp = { path = "../timestamp", default_features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "safe-mix/std", + "substrate-keyring", + "parity-codec/std", + "parity-codec-derive/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "sr-sandbox/std", + "srml-support/std", + "sr-primitives/std", + "srml-balances/std", + "srml-session/std", + "srml-system/std", + "srml-timestamp/std" +] diff --git a/substrate/substrate/runtime/staking/src/genesis_config.rs b/substrate/srml/staking/src/genesis_config.rs similarity index 100% rename from substrate/substrate/runtime/staking/src/genesis_config.rs rename to substrate/srml/staking/src/genesis_config.rs diff --git a/substrate/substrate/runtime/staking/src/lib.rs b/substrate/srml/staking/src/lib.rs similarity index 97% rename from substrate/substrate/runtime/staking/src/lib.rs rename to substrate/srml/staking/src/lib.rs index f9737d6a3c..1e0ec4b7b2 100644 --- a/substrate/substrate/runtime/staking/src/lib.rs +++ b/substrate/srml/staking/src/lib.rs @@ -28,24 +28,24 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_consensus as consensus; -extern crate substrate_runtime_sandbox as sandbox; -extern crate substrate_runtime_session as session; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_timestamp as timestamp; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; +extern crate srml_balances as balances; +extern crate srml_consensus as consensus; +extern crate sr_sandbox as sandbox; +extern crate srml_session as session; +extern crate srml_system as system; +extern crate srml_timestamp as timestamp; use rstd::prelude::*; use runtime_support::{Parameter, StorageValue, StorageMap}; diff --git a/substrate/substrate/runtime/staking/src/mock.rs b/substrate/srml/staking/src/mock.rs similarity index 100% rename from substrate/substrate/runtime/staking/src/mock.rs rename to substrate/srml/staking/src/mock.rs diff --git a/substrate/substrate/runtime/staking/src/tests.rs b/substrate/srml/staking/src/tests.rs similarity index 100% rename from substrate/substrate/runtime/staking/src/tests.rs rename to substrate/srml/staking/src/tests.rs diff --git a/substrate/srml/support/Cargo.toml b/substrate/srml/support/Cargo.toml new file mode 100644 index 0000000000..3f6d4e9e45 --- /dev/null +++ b/substrate/srml/support/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "srml-support" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = { version = "0.1.0", optional = true } +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +substrate-metadata = { path = "../../core/metadata", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } + +[dev-dependencies] +pretty_assertions = "0.5.1" +serde_json = { version = "1.0" } +parity-codec-derive = { path = "../../codec/derive" } + +[features] +default = ["std"] +std = [ + "hex-literal", + "serde/std", + "serde_derive", + "substrate-primitives/std", + "sr-io/std", + "parity-codec/std", + "sr-std/std", + "substrate-metadata/std", +] +nightly = [] +strict = [] diff --git a/substrate/substrate/runtime-support/README.adoc b/substrate/srml/support/README.adoc similarity index 100% rename from substrate/substrate/runtime-support/README.adoc rename to substrate/srml/support/README.adoc diff --git a/substrate/substrate/runtime-support/src/dispatch.rs b/substrate/srml/support/src/dispatch.rs similarity index 99% rename from substrate/substrate/runtime-support/src/dispatch.rs rename to substrate/srml/support/src/dispatch.rs index 90f6fd7a6d..092f156090 100644 --- a/substrate/substrate/runtime-support/src/dispatch.rs +++ b/substrate/srml/support/src/dispatch.rs @@ -78,7 +78,7 @@ macro_rules! decl_module { #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] // TODO: switching based on std feature is because of an issue in // serde-derive for when we attempt to derive `Deserialize` on these types, - // in a situation where we've imported `substrate_runtime_support` as another name. + // in a situation where we've imported `srml_support` as another name. #[cfg(feature = "std")] pub struct $mod_type<$trait_instance: $trait_name>(::std::marker::PhantomData<$trait_instance>); diff --git a/substrate/substrate/runtime-support/src/event.rs b/substrate/srml/support/src/event.rs similarity index 100% rename from substrate/substrate/runtime-support/src/event.rs rename to substrate/srml/support/src/event.rs diff --git a/substrate/substrate/runtime-support/src/hashable.rs b/substrate/srml/support/src/hashable.rs similarity index 100% rename from substrate/substrate/runtime-support/src/hashable.rs rename to substrate/srml/support/src/hashable.rs diff --git a/substrate/substrate/runtime-support/src/lib.rs b/substrate/srml/support/src/lib.rs similarity index 96% rename from substrate/substrate/runtime-support/src/lib.rs rename to substrate/srml/support/src/lib.rs index 73099360da..e467dc0679 100644 --- a/substrate/substrate/runtime-support/src/lib.rs +++ b/substrate/srml/support/src/lib.rs @@ -27,9 +27,10 @@ extern crate alloc; #[cfg(feature = "std")] extern crate serde; -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_io as runtime_io; +extern crate sr_std as rstd; +extern crate sr_io as runtime_io; extern crate substrate_primitives as primitives; +extern crate substrate_metadata; #[cfg(test)] #[macro_use] @@ -41,10 +42,10 @@ extern crate serde_derive; extern crate serde_json; #[cfg(test)] #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[doc(hidden)] -pub extern crate substrate_codec as codec; +pub extern crate parity_codec as codec; pub use self::storage::generator::Storage as GenericStorage; #[cfg(feature = "std")] diff --git a/substrate/substrate/runtime-support/src/metadata.rs b/substrate/srml/support/src/metadata.rs similarity index 53% rename from substrate/substrate/runtime-support/src/metadata.rs rename to substrate/srml/support/src/metadata.rs index 12953871d3..5fc57636c3 100644 --- a/substrate/substrate/runtime-support/src/metadata.rs +++ b/substrate/srml/support/src/metadata.rs @@ -14,10 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use codec::{Encode, Output}; -#[cfg(feature = "std")] -use codec::{Decode, Input}; use alloc; +pub use substrate_metadata::JsonMetadata; /// Make Box available on `std` and `no_std`. pub type Box = alloc::boxed::Box; @@ -39,10 +37,10 @@ macro_rules! impl_json_metadata { $( $rest:tt )* ) => { impl $runtime { - pub fn json_metadata() -> $crate::metadata::Vec<$crate::metadata::JSONMetadata> { + pub fn json_metadata() -> $crate::metadata::Vec<$crate::metadata::JsonMetadata> { let events = Self::outer_event_json_metadata(); __impl_json_metadata!($runtime; - $crate::metadata::JSONMetadata::Events { + $crate::metadata::JsonMetadata::Events { name: events.0, events: events.1, }; @@ -53,167 +51,6 @@ macro_rules! impl_json_metadata { } } -/// The metadata of a runtime encoded as JSON. -#[derive(Eq)] -#[cfg_attr(feature = "std", derive(Debug))] -pub enum JSONMetadata { - Events { name: &'static str, events: &'static [(&'static str, fn() -> &'static str)] }, - Module { module: &'static str, prefix: &'static str }, - ModuleWithStorage { module: &'static str, prefix: &'static str, storage: &'static str } -} - -impl Encode for JSONMetadata { - fn encode_to(&self, dest: &mut W) { - match self { - JSONMetadata::Events { name, events } => { - 0i8.encode_to(dest); - name.encode_to(dest); - events.iter().fold(0u32, |count, _| count + 1).encode_to(dest); - events - .iter() - .map(|(module, data)| (module, data())) - .for_each(|val| val.encode_to(dest)); - }, - JSONMetadata::Module { module, prefix } => { - 1i8.encode_to(dest); - prefix.encode_to(dest); - module.encode_to(dest); - }, - JSONMetadata::ModuleWithStorage { module, prefix, storage } => { - 2i8.encode_to(dest); - prefix.encode_to(dest); - module.encode_to(dest); - storage.encode_to(dest); - } - } - } -} - -impl PartialEq for JSONMetadata { - fn eq(&self, other: &JSONMetadata) -> bool { - match (self, other) { - ( - JSONMetadata::Events { name: lname, events: left }, - JSONMetadata::Events { name: rname, events: right } - ) => { - lname == rname && left.iter().zip(right.iter()).fold(true, |res, (l, r)| { - res && l.0 == r.0 && l.1() == r.1() - }) - }, - ( - JSONMetadata::Module { prefix: lpre, module: lmod }, - JSONMetadata::Module { prefix: rpre, module: rmod } - ) => { - lpre == rpre && lmod == rmod - }, - ( - JSONMetadata::ModuleWithStorage { prefix: lpre, module: lmod, storage: lstore }, - JSONMetadata::ModuleWithStorage { prefix: rpre, module: rmod, storage: rstore } - ) => { - lpre == rpre && lmod == rmod && lstore == rstore - }, - _ => false, - } - } -} - -/// Utility struct for making `JSONMetadata` decodeable. -#[derive(Eq, PartialEq, Debug)] -#[cfg(feature = "std")] -pub enum JSONMetadataDecodable { - Events { name: String, events: Vec<(String, String)> }, - Module { module: String, prefix: String }, - ModuleWithStorage { module: String, prefix: String, storage: String } -} - -#[cfg(feature = "std")] -impl JSONMetadataDecodable { - /// Returns the instance as JSON string. - /// The first value of the tuple is the name of the metadata type and the second in the JSON string. - pub fn into_json_string(self) -> (&'static str, String) { - match self { - JSONMetadataDecodable::Events { name, events } => { - ( - "events", - format!( - r#"{{ "name": "{}", "events": {{ {} }} }}"#, name, - events.iter().enumerate() - .fold(String::from(""), |mut json, (i, (name, data))| { - if i > 0 { - json.push_str(", "); - } - json.push_str(&format!(r#""{}": {}"#, name, data)); - json - }) - ) - ) - }, - JSONMetadataDecodable::Module { prefix, module } => { - ("module", format!(r#"{{ "prefix": "{}", "module": {} }}"#, prefix, module)) - }, - JSONMetadataDecodable::ModuleWithStorage { prefix, module, storage } => { - ( - "moduleWithStorage", - format!( - r#"{{ "prefix": "{}", "module": {}, "storage": {} }}"#, - prefix, module, storage - ) - ) - } - } - } -} - -#[cfg(feature = "std")] -impl Decode for JSONMetadataDecodable { - fn decode(input: &mut I) -> Option { - i8::decode(input).and_then(|variant| { - match variant { - 0 => String::decode(input) - .and_then(|name| Vec::<(String, String)>::decode(input).map(|events| (name, events))) - .and_then(|(name, events)| Some(JSONMetadataDecodable::Events { name, events })), - 1 => String::decode(input) - .and_then(|prefix| String::decode(input).map(|v| (prefix, v))) - .and_then(|(prefix, module)| Some(JSONMetadataDecodable::Module { prefix, module })), - 2 => String::decode(input) - .and_then(|prefix| String::decode(input).map(|v| (prefix, v))) - .and_then(|(prefix, module)| String::decode(input).map(|v| (prefix, module, v))) - .and_then(|(prefix, module, storage)| Some(JSONMetadataDecodable::ModuleWithStorage { prefix, module, storage })), - _ => None, - } - }) - } -} - -#[cfg(test)] -impl PartialEq for JSONMetadataDecodable { - fn eq(&self, other: &JSONMetadata) -> bool { - match (self, other) { - ( - JSONMetadataDecodable::Events { name: lname, events: left }, - JSONMetadata::Events { name: rname, events: right } - ) => { - lname == rname && left.iter().zip(right.iter()).fold(true, |res, (l, r)| { - res && l.0 == r.0 && l.1 == r.1() - }) - }, - ( - JSONMetadataDecodable::Module { prefix: lpre, module: lmod }, - JSONMetadata::Module { prefix: rpre, module: rmod } - ) => { - lpre == rpre && lmod == rmod - }, - ( - JSONMetadataDecodable::ModuleWithStorage { prefix: lpre, module: lmod, storage: lstore }, - JSONMetadata::ModuleWithStorage { prefix: rpre, module: rmod, storage: rstore } - ) => { - lpre == rpre && lmod == rmod && lstore == rstore - }, - _ => false, - } - } -} - #[macro_export] #[doc(hidden)] macro_rules! __impl_json_metadata { @@ -225,7 +62,7 @@ macro_rules! __impl_json_metadata { ) => { __impl_json_metadata!( $runtime; - $( $metadata, )* $crate::metadata::JSONMetadata::Module { + $( $metadata, )* $crate::metadata::JsonMetadata::Module { module: $mod::$module::<$runtime>::json_metadata(), prefix: stringify!($mod) }; $( $rest )* @@ -238,7 +75,7 @@ macro_rules! __impl_json_metadata { ) => { __impl_json_metadata!( $runtime; - $( $metadata, )* $crate::metadata::JSONMetadata::Module { + $( $metadata, )* $crate::metadata::JsonMetadata::Module { module: $mod::$module::<$runtime>::json_metadata(), prefix: stringify!($mod) }; ) @@ -251,7 +88,7 @@ macro_rules! __impl_json_metadata { ) => { __impl_json_metadata!( $runtime; - $( $metadata, )* $crate::metadata::JSONMetadata::ModuleWithStorage { + $( $metadata, )* $crate::metadata::JsonMetadata::ModuleWithStorage { module: $mod::$module::<$runtime>::json_metadata(), prefix: stringify!($mod), storage: $mod::$module::<$runtime>::store_json_metadata() }; @@ -265,7 +102,7 @@ macro_rules! __impl_json_metadata { ) => { __impl_json_metadata!( $runtime; - $( $metadata, )* $crate::metadata::JSONMetadata::ModuleWithStorage { + $( $metadata, )* $crate::metadata::JsonMetadata::ModuleWithStorage { module: $mod::$module::<$runtime>::json_metadata(), prefix: stringify!($mod), storage: $mod::$module::<$runtime>::store_json_metadata() }; @@ -286,6 +123,8 @@ mod tests { use super::*; use serde; use serde_json; + use substrate_metadata::JsonMetadataDecodable; + use codec::{Decode, Encode}; mod system { pub trait Trait { @@ -381,12 +220,6 @@ mod tests { type Origin = u32; } - impl_json_metadata!( - for TestRuntime with modules - event_module::Module, - event_module2::ModuleWithStorage with Storage - ); - fn system_event_json() -> &'static str { r#"{ "SystemEvent": { "params": null, "description": [ ] } }"# } @@ -399,8 +232,14 @@ mod tests { r#"{ "TestEvent": { "params": [ "Balance" ], "description": [ ] } }"# } - const EXPECTED_METADATA: &[JSONMetadata] = &[ - JSONMetadata::Events { + impl_json_metadata!( + for TestRuntime with modules + event_module::Module, + event_module2::ModuleWithStorage with Storage + ); + + const EXPECTED_METADATA: &[JsonMetadata] = &[ + JsonMetadata::Events { name: "TestEvent", events: &[ ("system", system_event_json), @@ -408,7 +247,7 @@ mod tests { ("event_module2", event_module2_event_json), ] }, - JSONMetadata::Module { + JsonMetadata::Module { module: concat!( r#"{ "name": "Module", "call": "#, r#"{ "name": "Call", "functions": "#, @@ -418,7 +257,7 @@ mod tests { ), prefix: "event_module" }, - JSONMetadata::ModuleWithStorage { + JsonMetadata::ModuleWithStorage { module: r#"{ "name": "ModuleWithStorage", "call": { "name": "Call", "functions": { } } }"#, prefix: "event_module2", storage: concat!( @@ -439,7 +278,7 @@ mod tests { fn json_metadata_encode_and_decode() { let metadata = TestRuntime::json_metadata(); let metadata_encoded = metadata.encode(); - let metadata_decoded = Vec::::decode(&mut &metadata_encoded[..]); + let metadata_decoded = Vec::::decode(&mut &metadata_encoded[..]); assert_eq!(&metadata_decoded.unwrap()[..], &metadata[..]); } @@ -448,7 +287,7 @@ mod tests { fn into_json_string_is_valid_json() { let metadata = TestRuntime::json_metadata(); let metadata_encoded = metadata.encode(); - let metadata_decoded = Vec::::decode(&mut &metadata_encoded[..]); + let metadata_decoded = Vec::::decode(&mut &metadata_encoded[..]); for mdata in metadata_decoded.unwrap().into_iter() { let json = mdata.into_json_string(); diff --git a/substrate/substrate/runtime-support/src/storage/generator.rs b/substrate/srml/support/src/storage/generator.rs similarity index 99% rename from substrate/substrate/runtime-support/src/storage/generator.rs rename to substrate/srml/support/src/storage/generator.rs index 7c820cc5cc..1ff9731cf1 100644 --- a/substrate/substrate/runtime-support/src/storage/generator.rs +++ b/substrate/srml/support/src/storage/generator.rs @@ -28,7 +28,7 @@ //! //! ```rust //! #[macro_use] -//! extern crate substrate_runtime_support; +//! extern crate srml_support; //! //! type AuthorityId = [u8; 32]; //! type Balance = u64; diff --git a/substrate/substrate/runtime-support/src/storage/mod.rs b/substrate/srml/support/src/storage/mod.rs similarity index 100% rename from substrate/substrate/runtime-support/src/storage/mod.rs rename to substrate/srml/support/src/storage/mod.rs diff --git a/substrate/srml/system/Cargo.toml b/substrate/srml/system/Cargo.toml new file mode 100644 index 0000000000..ce3f148fe4 --- /dev/null +++ b/substrate/srml/system/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "srml-system" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +safe-mix = { version = "1.0", default_features = false} +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "safe-mix/std", + "parity-codec/std", + "parity-codec-derive/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", +] diff --git a/substrate/substrate/runtime/system/src/lib.rs b/substrate/srml/system/src/lib.rs similarity index 98% rename from substrate/substrate/runtime/system/src/lib.rs rename to substrate/srml/system/src/lib.rs index ae8ceff6a6..39b2e2b0c1 100644 --- a/substrate/substrate/runtime/system/src/lib.rs +++ b/substrate/srml/system/src/lib.rs @@ -23,10 +23,10 @@ extern crate substrate_primitives; #[cfg_attr(any(feature = "std", test), macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg(feature = "std")] extern crate serde; @@ -36,11 +36,11 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; +extern crate parity_codec as codec; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; extern crate safe_mix; use rstd::prelude::*; diff --git a/substrate/srml/timestamp/Cargo.toml b/substrate/srml/timestamp/Cargo.toml new file mode 100644 index 0000000000..dd61099850 --- /dev/null +++ b/substrate/srml/timestamp/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "srml-timestamp" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } + +[dev-dependencies] +sr-io = { path = "../../core/sr-io", default_features = true } + +[features] +default = ["std"] +std = [ + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", + "srml-consensus/std", + "serde/std", + "serde_derive", + "parity-codec/std", + "substrate-primitives/std", + "srml-system/std", +] diff --git a/substrate/substrate/runtime/timestamp/src/lib.rs b/substrate/srml/timestamp/src/lib.rs similarity index 95% rename from substrate/substrate/runtime/timestamp/src/lib.rs rename to substrate/srml/timestamp/src/lib.rs index bf7000e60b..2556b3211c 100644 --- a/substrate/substrate/runtime/timestamp/src/lib.rs +++ b/substrate/srml/timestamp/src/lib.rs @@ -34,13 +34,13 @@ #![cfg_attr(not(feature = "std"), no_std)] #[cfg_attr(any(feature = "std", test), macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg(any(feature = "std", test))] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; #[cfg(feature = "std")] #[macro_use] @@ -48,10 +48,10 @@ extern crate serde_derive; #[cfg(test)] extern crate substrate_primitives; -extern crate substrate_runtime_primitives as runtime_primitives; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_consensus as consensus; -extern crate substrate_codec as codec; +extern crate sr_primitives as runtime_primitives; +extern crate srml_system as system; +extern crate srml_consensus as consensus; +extern crate parity_codec as codec; use runtime_support::{StorageValue, Parameter}; use runtime_support::dispatch::Result; diff --git a/substrate/srml/treasury/Cargo.toml b/substrate/srml/treasury/Cargo.toml new file mode 100644 index 0000000000..01166c0432 --- /dev/null +++ b/substrate/srml/treasury/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "srml-treasury" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-balances = { path = "../balances", default_features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "parity-codec/std", + "parity-codec-derive/std", + "substrate-primitives/std", + "sr-std/std", + "sr-io/std", + "sr-primitives/std", + "srml-support/std", + "srml-system/std", + "srml-balances/std", +] diff --git a/substrate/substrate/runtime/treasury/src/lib.rs b/substrate/srml/treasury/src/lib.rs similarity index 97% rename from substrate/substrate/runtime/treasury/src/lib.rs rename to substrate/srml/treasury/src/lib.rs index 1edf33a563..867cd631bc 100644 --- a/substrate/substrate/runtime/treasury/src/lib.rs +++ b/substrate/srml/treasury/src/lib.rs @@ -19,27 +19,27 @@ #![cfg_attr(not(feature = "std"), no_std)] #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg(feature = "std")] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; #[cfg(feature = "std")] #[macro_use] extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; #[cfg(test)] extern crate substrate_primitives; -extern crate substrate_runtime_primitives as runtime_primitives; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_balances as balances; +extern crate sr_primitives as runtime_primitives; +extern crate srml_system as system; +extern crate srml_balances as balances; use rstd::prelude::*; use runtime_support::{StorageValue, StorageMap}; diff --git a/substrate/subkey/Cargo.toml b/substrate/subkey/Cargo.toml index c9bb23962d..171c5163b2 100644 --- a/substrate/subkey/Cargo.toml +++ b/substrate/subkey/Cargo.toml @@ -4,8 +4,7 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -ed25519 = { version = "*", path = "../substrate/ed25519" } -substrate-primitives = { version = "*", path = "../substrate/primitives" } +substrate-primitives = { version = "*", path = "../core/primitives" } rand = "0.4" [features] diff --git a/substrate/subkey/src/main.rs b/substrate/subkey/src/main.rs index aa4cf48585..2b824664a8 100644 --- a/substrate/subkey/src/main.rs +++ b/substrate/subkey/src/main.rs @@ -1,14 +1,12 @@ #![cfg_attr(feature = "bench", feature(test))] #[cfg(feature = "bench")] extern crate test; -extern crate ed25519; extern crate substrate_primitives; extern crate rand; use rand::{OsRng, Rng}; use std::env::args; -use ed25519::Pair; -use substrate_primitives::hexdisplay::HexDisplay; +use substrate_primitives::{ed25519::Pair, hexdisplay::HexDisplay}; use std::cmp; fn good_waypoint(done: u64) -> u64 { diff --git a/substrate/substrate/client/db/Cargo.toml b/substrate/substrate/client/db/Cargo.toml deleted file mode 100644 index c88e338970..0000000000 --- a/substrate/substrate/client/db/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "substrate-client-db" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -parking_lot = "0.4" -log = "0.3" -kvdb = "0.1" -kvdb-rocksdb = "0.1.3" -hashdb = "0.2.1" -memorydb = "0.2.1" -substrate-primitives = { path = "../../../substrate/primitives" } -substrate-runtime-primitives = { path = "../../../substrate/runtime/primitives" } -substrate-client = { path = "../../../substrate/client" } -substrate-state-machine = { path = "../../../substrate/state-machine" } -substrate-runtime-support = { path = "../../../substrate/runtime-support" } -substrate-codec = { path = "../../../substrate/codec" } -substrate-codec-derive = { path = "../../../substrate/codec/derive" } -substrate-executor = { path = "../../../substrate/executor" } -substrate-state-db = { path = "../../../substrate/state-db" } - -[dev-dependencies] -kvdb-memorydb = "0.1" diff --git a/substrate/substrate/ed25519/Cargo.toml b/substrate/substrate/ed25519/Cargo.toml deleted file mode 100644 index 34494fc8be..0000000000 --- a/substrate/substrate/ed25519/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "ed25519" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -ring = "0.12" -untrusted = "0.5" -substrate-primitives = { version = "0.1", path = "../primitives" } -hex-literal = "0.1" -base58 = "0.1" -blake2-rfc = "0.2" diff --git a/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm deleted file mode 100644 index 9feda33fa2347299ffba1b67593813392d89a588..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48108 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 CZ+l<> diff --git a/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm deleted file mode 100755 index 2e44e7cbb66248b6e4256896822b89d4e658b4dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48318 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"] - -[lib] - -[dependencies] -log = "0.3" -parking_lot = "0.4" -error-chain = "0.12" -bitflags = "1.0" -futures = "0.1.17" -linked-hash-map = "0.5" -rustc-hex = "1.0" -ethcore-io = { git = "https://github.com/paritytech/parity.git" } -ed25519 = { path = "../../substrate/ed25519" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-client = { path = "../../substrate/client" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-codec = { path = "../../substrate/codec" } -substrate-codec-derive = { path = "../../substrate/codec/derive" } -substrate-network-libp2p = { path = "../../substrate/network-libp2p" } - -[dev-dependencies] -env_logger = "0.4" -substrate-keyring = { path = "../../substrate/keyring" } -substrate-test-client = { path = "../../substrate/test-client" } diff --git a/substrate/substrate/runtime-support/Cargo.toml b/substrate/substrate/runtime-support/Cargo.toml deleted file mode 100644 index ee8e524cf7..0000000000 --- a/substrate/substrate/runtime-support/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "substrate-runtime-support" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -ed25519 = { path = "../ed25519", optional = true } -hex-literal = { version = "0.1.0", optional = true } -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -substrate-runtime-std = { path = "../runtime-std", default_features = false } -substrate-runtime-io = { path = "../runtime-io", default_features = false } -substrate-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../codec", default_features = false } - -[dev-dependencies] -pretty_assertions = "0.5.1" -serde_json = { version = "1.0" } -substrate-codec-derive = { path = "../../substrate/codec/derive" } - -[features] -default = ["std"] -std = [ - "ed25519", - "hex-literal", - "serde/std", - "serde_derive", - "substrate-primitives/std", - "substrate-runtime-io/std", - "substrate-codec/std", - "substrate-runtime-std/std", -] -nightly = [] -strict = [] diff --git a/substrate/substrate/runtime/balances/Cargo.toml b/substrate/substrate/runtime/balances/Cargo.toml deleted file mode 100644 index 5a86a99c11..0000000000 --- a/substrate/substrate/runtime/balances/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "substrate-runtime-balances" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -safe-mix = { version = "1.0", default_features = false} -substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } - -[features] -default = ["std"] -std = [ - "serde/std", - "serde_derive", - "safe-mix/std", - "substrate-keyring", - "substrate-codec/std", - "substrate-codec-derive/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", - "substrate-runtime-system/std", -] diff --git a/substrate/substrate/runtime/consensus/Cargo.toml b/substrate/substrate/runtime/consensus/Cargo.toml deleted file mode 100644 index dfdebbddc1..0000000000 --- a/substrate/substrate/runtime/consensus/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "substrate-runtime-consensus" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } - -[features] -default = ["std"] -std = [ - "serde/std", - "serde_derive", - "substrate-codec/std", - "substrate-codec-derive/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", - "substrate-runtime-system/std", -] diff --git a/substrate/substrate/runtime/contract/Cargo.toml b/substrate/substrate/runtime/contract/Cargo.toml deleted file mode 100644 index a53cb5e886..0000000000 --- a/substrate/substrate/runtime/contract/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -[package] -name = "substrate-runtime-contract" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-primitives = { path = "../../runtime/primitives", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-sandbox = { path = "../../runtime-sandbox", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-system = { path = "../../runtime/system", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } -parity-wasm = { version = "0.31", default_features = false } -pwasm-utils = { version = "0.3", default_features = false } - -[dev-dependencies] -wabt = "0.4" -assert_matches = "1.1" - -[features] -default = ["std"] -std = [ - "serde_derive", - "serde/std", - "substrate-codec/std", - "substrate-primitives/std", - "substrate-runtime-primitives/std", - "substrate-runtime-io/std", - "substrate-runtime-std/std", - "substrate-runtime-balances/std", - "substrate-runtime-sandbox/std", - "substrate-runtime-support/std", - "substrate-runtime-system/std", - "parity-wasm/std", - "pwasm-utils/std", -] diff --git a/substrate/substrate/runtime/council/Cargo.toml b/substrate/substrate/runtime/council/Cargo.toml deleted file mode 100644 index aa1bbd0bdf..0000000000 --- a/substrate/substrate/runtime/council/Cargo.toml +++ /dev/null @@ -1,43 +0,0 @@ -[package] -name = "substrate-runtime-council" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -safe-mix = { version = "1.0", default_features = false} -substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } -substrate-runtime-democracy = { path = "../democracy", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } - -[features] -default = ["std"] -std = [ - "serde/std", - "serde_derive", - "safe-mix/std", - "substrate-keyring", - "substrate-codec/std", - "substrate-codec-derive/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", - "substrate-runtime-consensus/std", - "substrate-runtime-balances/std", - "substrate-runtime-democracy/std", - "substrate-runtime-system/std", -] diff --git a/substrate/substrate/runtime/democracy/Cargo.toml b/substrate/substrate/runtime/democracy/Cargo.toml deleted file mode 100644 index 4667e22be3..0000000000 --- a/substrate/substrate/runtime/democracy/Cargo.toml +++ /dev/null @@ -1,37 +0,0 @@ -[package] -name = "substrate-runtime-democracy" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -safe-mix = { version = "1.0", default_features = false} -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } - -[features] -default = ["std"] -std = [ - "serde/std", - "serde_derive", - "safe-mix/std", - "substrate-codec/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", - "substrate-runtime-consensus/std", - "substrate-runtime-balances/std", - "substrate-runtime-system/std", -] diff --git a/substrate/substrate/runtime/example/Cargo.toml b/substrate/substrate/runtime/example/Cargo.toml deleted file mode 100644 index 92c0d887e7..0000000000 --- a/substrate/substrate/runtime/example/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "substrate-runtime-example" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } - -[features] -default = ["std"] -std = [ - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", - "substrate-runtime-balances/std", - "serde/std", - "serde_derive", - "substrate-codec/std", - "substrate-codec-derive/std", - "substrate-primitives/std", - "substrate-runtime-system/std", -] diff --git a/substrate/substrate/runtime/executive/Cargo.toml b/substrate/substrate/runtime/executive/Cargo.toml deleted file mode 100644 index 965bbe2a1e..0000000000 --- a/substrate/substrate/runtime/executive/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[package] -name = "substrate-runtime-executive" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } - -[dev-dependencies] -substrate-primitives = { path = "../../primitives" } -substrate-runtime-balances = { path = "../balances" } -substrate-codec-derive = { path = "../../codec/derive" } - -[features] -default = ["std"] -std = [ - "substrate-runtime-std/std", - "substrate-runtime-support/std", - "serde/std", - "serde_derive", - "substrate-codec/std", - "substrate-runtime-primitives/std", - "substrate-runtime-io/std", - "substrate-runtime-system/std", -] diff --git a/substrate/substrate/runtime/primitives/Cargo.toml b/substrate/substrate/runtime/primitives/Cargo.toml deleted file mode 100644 index e7adc094d6..0000000000 --- a/substrate/substrate/runtime/primitives/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "substrate-runtime-primitives" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -num-traits = { version = "0.2", default_features = false } -integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } -serde = { version = "1.0", optional = true } -serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -log = {version = "0.3", optional = true } - -[dev-dependencies] -serde_json = "1.0" - -[features] -default = ["std"] -std = [ - "num-traits/std", - "serde", - "serde_derive", - "log", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-codec/std", - "substrate-primitives/std", -] diff --git a/substrate/substrate/runtime/session/Cargo.toml b/substrate/substrate/runtime/session/Cargo.toml deleted file mode 100644 index c2acfc1de2..0000000000 --- a/substrate/substrate/runtime/session/Cargo.toml +++ /dev/null @@ -1,40 +0,0 @@ -[package] -name = "substrate-runtime-session" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -safe-mix = { version = "1.0", default_features = false} -substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-timestamp = { path = "../timestamp", default_features = false } - -[features] -default = ["std"] -std = [ - "serde/std", - "serde_derive", - "safe-mix/std", - "substrate-keyring", - "substrate-codec/std", - "substrate-codec-derive/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", - "substrate-runtime-consensus/std", - "substrate-runtime-system/std", - "substrate-runtime-timestamp/std" -] diff --git a/substrate/substrate/runtime/staking/Cargo.toml b/substrate/substrate/runtime/staking/Cargo.toml deleted file mode 100644 index 78ea8b2958..0000000000 --- a/substrate/substrate/runtime/staking/Cargo.toml +++ /dev/null @@ -1,45 +0,0 @@ -[package] -name = "substrate-runtime-staking" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -safe-mix = { version = "1.0", default_features = false} -substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-sandbox = { path = "../../runtime-sandbox", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-session = { path = "../session", default_features = false } -substrate-runtime-timestamp = { path = "../timestamp", default_features = false } - -[features] -default = ["std"] -std = [ - "serde/std", - "serde_derive", - "safe-mix/std", - "substrate-keyring", - "substrate-codec/std", - "substrate-codec-derive/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-sandbox/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", - "substrate-runtime-balances/std", - "substrate-runtime-session/std", - "substrate-runtime-system/std", - "substrate-runtime-timestamp/std" -] diff --git a/substrate/substrate/runtime/system/Cargo.toml b/substrate/substrate/runtime/system/Cargo.toml deleted file mode 100644 index 28388bd539..0000000000 --- a/substrate/substrate/runtime/system/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "substrate-runtime-system" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -safe-mix = { version = "1.0", default_features = false} -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } - -[features] -default = ["std"] -std = [ - "serde/std", - "serde_derive", - "safe-mix/std", - "substrate-codec/std", - "substrate-codec-derive/std", - "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", -] diff --git a/substrate/substrate/runtime/timestamp/Cargo.toml b/substrate/substrate/runtime/timestamp/Cargo.toml deleted file mode 100644 index c87da900bf..0000000000 --- a/substrate/substrate/runtime/timestamp/Cargo.toml +++ /dev/null @@ -1,35 +0,0 @@ -[package] -name = "substrate-runtime-timestamp" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } - -[dev-dependencies] -substrate-runtime-io = { path = "../../runtime-io", default_features = true } - -[features] -default = ["std"] -std = [ - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", - "substrate-runtime-consensus/std", - "serde/std", - "serde_derive", - "substrate-codec/std", - "substrate-primitives/std", - "substrate-runtime-system/std", -] diff --git a/substrate/substrate/runtime/treasury/Cargo.toml b/substrate/substrate/runtime/treasury/Cargo.toml deleted file mode 100644 index 0c76961434..0000000000 --- a/substrate/substrate/runtime/treasury/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "substrate-runtime-treasury" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -hex-literal = "0.1.0" -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } - -[features] -default = ["std"] -std = [ - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-primitives/std", - "substrate-runtime-balances/std", - "serde/std", - "serde_derive", - "substrate-codec/std", - "substrate-codec-derive/std", - "substrate-primitives/std", - "substrate-runtime-system/std", -] diff --git a/substrate/substrate/runtime/version/Cargo.toml b/substrate/substrate/runtime/version/Cargo.toml deleted file mode 100644 index 2f471fe6ed..0000000000 --- a/substrate/substrate/runtime/version/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "substrate-runtime-version" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -serde = { version = "1.0", default_features = false } -serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } - -[features] -default = ["std"] -std = [ - "serde/std", - "serde_derive", - "substrate-codec/std", - "substrate-runtime-std/std", - "substrate-runtime-support/std", -] diff --git a/substrate/substrate/service/Cargo.toml b/substrate/substrate/service/Cargo.toml deleted file mode 100644 index a7e1d65c88..0000000000 --- a/substrate/substrate/service/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "substrate-service" -version = "0.3.0" -authors = ["Parity Technologies "] - -[dependencies] -futures = "0.1.17" -parking_lot = "0.4" -error-chain = "0.12" -lazy_static = "1.0" -log = "0.3" -slog = "^2" -tokio = "0.1.7" -exit-future = "0.1" -serde = "1.0" -serde_json = "1.0" -serde_derive = "1.0" -target_info = "0.1" -substrate-keystore = { path = "../../substrate/keystore" } -substrate-runtime-io = { path = "../../substrate/runtime-io" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-network = { path = "../../substrate/network" } -substrate-client = { path = "../../substrate/client" } -substrate-client-db = { path = "../../substrate/client/db" } -substrate-codec = { path = "../../substrate/codec" } -substrate-executor = { path = "../../substrate/executor" } -substrate-extrinsic-pool = { path = "../../substrate/extrinsic-pool" } -substrate-rpc = { path = "../../substrate/rpc" } -substrate-rpc-servers = { path = "../../substrate/rpc-servers" } -substrate-telemetry = { path = "../../substrate/telemetry" } diff --git a/substrate/substrate/test-runtime/Cargo.toml b/substrate/substrate/test-runtime/Cargo.toml deleted file mode 100644 index 5482936f05..0000000000 --- a/substrate/substrate/test-runtime/Cargo.toml +++ /dev/null @@ -1,38 +0,0 @@ -[package] -name = "substrate-test-runtime" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -log = { version = "0.3", optional = true } -hex-literal = { version = "0.1.0", optional = true } -ed25519 = { path = "../ed25519", optional = true } -serde = { version = "1.0", optional = true } -serde_derive = { version = "1.0", optional = true } -substrate-keyring = { path = "../keyring", optional = true } -substrate-codec = { path = "../codec", default-features = false } -substrate-codec-derive = { path = "../codec/derive", default-features = false } -substrate-runtime-std = { path = "../runtime-std", default-features = false } -substrate-runtime-io = { path = "../runtime-io", default-features = false } -substrate-runtime-support = { path = "../runtime-support", default-features = false } -substrate-primitives = { path = "../primitives", default-features = false } -substrate-runtime-primitives = { path = "../runtime/primitives", default-features = false } -substrate-runtime-version = { path = "../runtime/version", default-features = false } - -[features] -default = ["std"] -std = [ - "log", - "hex-literal", - "ed25519", - "serde", - "serde_derive", - "substrate-keyring", - "substrate-codec/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-primitives/std", - "substrate-runtime-primitives/std", - "substrate-runtime-version/std" -] diff --git a/substrate/substrate/test-runtime/wasm/Cargo.toml b/substrate/substrate/test-runtime/wasm/Cargo.toml deleted file mode 100644 index 599733e271..0000000000 --- a/substrate/substrate/test-runtime/wasm/Cargo.toml +++ /dev/null @@ -1,42 +0,0 @@ -[package] -name = "substrate-test-runtime" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -log = { version = "0.3", optional = true } -hex-literal = { version = "0.1.0", optional = true } -ed25519 = { path = "../../ed25519", optional = true } -substrate-codec = { path = "../../codec", default-features = false } -substrate-codec-derive = { path = "../../codec/derive", default-features = false } -substrate-runtime-std = { path = "../../runtime-std", default-features = false } -substrate-runtime-io = { path = "../../runtime-io", default-features = false } -substrate-runtime-support = { path = "../../runtime-support", default-features = false } -substrate-runtime-version = { path = "../../runtime/version", default-features = false } -substrate-primitives = { path = "../../primitives", default-features = false } -substrate-runtime-primitives = { path = "../../runtime/primitives", default-features = false } - -[features] -default = [] -std = [ - "log", - "hex-literal", - "ed25519", - "substrate-codec/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-support/std", - "substrate-runtime-version/std", - "substrate-primitives/std", - "substrate-runtime-primitives/std" -] - -[lib] -crate-type = ["cdylib"] - -[profile.release] -panic = "abort" -lto = true - -[workspace] -members = [] diff --git a/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm deleted file mode 100644 index dc0c4e46cea881810e42e9e111dcba1f8b55171f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54010 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⧀?*^W%(Ptbo#`a0FEET4nvrvWU<7 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 diff --git a/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm deleted file mode 100755 index 5b61818cf57b27d5f19f05cbc1a995b662dc1119..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54142 zcmeIb3w$J3b?1MptGm@w>(QDSgP-G)Jho?yM^@`CVTS3k$9TYxS$hly!pbeF<gv(JITzf}bw_yr{r3m=-x1vJ zxCmtKSLi->M~)23QVDlQRS(i~l zK?(CKwVDeQ?N)SoWnr;Cy;h%}aG?^rnu&{RM_slFsCIOA`M7f}2}hTGLeZM49X+~q ztkzm&wO02DTU6xET77!8zO+)kvo=k;OD-pHoyw};y>!oXd1%7rmDHmo>L#UKn^IHA z9jx8s5iVKD80N~-Qr&m1SIM(SYSonn2|oG z;o8vj(CFB7jqcZ0s`c93bbV!^Hf^BW!X4Y&L)RYW^BT8I5V(#oC=%`DFYFA%eAwRJ z*_rR`2(r0gImqX8Vc>f6=Y{tNl?NU;>5BKe%E?Dk&$e#_oAO6%N0(NPXWV(ykY#RR zr8dhztu4;h7nT;M>(!YfwZIjprw`Vu%hNN})mj*IOi#~M>s8R43p1*(!7)Iy49dA} zq}X7br#ub9`T3X?F31`ST-ZkMSAp*?>pHYbGe>LnszAESi`BLI!KIaj`a*5hZ7(e> z5~?0qSgk>yrP;%72jftiU8^VYm-SSamyaBuhJtX@>cXrW>YiU%OjjB1n5iDAF3#4b zm*(AQdogg8pqRUOtgnB(y^5$@S;kC9;uN>JM3iXGI9f+$nU60Cd}PAOgFie1i_rqW-^I9L3` zGg2sQP$+vi%7{Wx;E<>y3WcIj9&~e29tyR23WW^{6`+Ib&x=C&h)5Ljugz1a;3*_< zeK}8|yeJgcFbat-oxDRRXxbp)OF(@qJRtDWt% zll8RT_^u*_{#+%1LQ%FW=qwbYEL>Cc(nSLzqln<;ED&9@j7A{}u5_-yz2a_y{qlVs z3{|EQFjOEJ9NOtz<&}4-R0Sr@_H`7a_R9ByyDFywv1><^zpg72b;QMrQ3rKYtW(^! zJwxZ=99Owe%`zap&JTI%5WULw6hR;p<+`$+IR%lhW&_XBfTOXC@9OJ}icz7GudnnK z)O+8mv$mjj(s+AkARz6&Y}8rVR7WD8b9b#o?JI;n?yiF#3HhS7y`mIc-PaB?w$nu< zpuhb(B&*$sLqqK%O@~P1tYHWw!ery_c2N?l6orI{(%)%h$#_J%=#2={%#(@PqZR9KNsB0;APa2ZmX}PeHzCOQKBR2j=GEzorX{X$`Fnch((V8lF~_8YBniR zOem3uOi}w`gubsmYOCCTsJ{)_iVAzXV)P3YXZ%x0MC**Ws4pvGdkUU}jUEWD69QS^fr9WTn2cwHoI~tkoc=bN zg(7(kZwyYs7YUN`hod%Q`^fEdgZ=G{UwGXGmGCb3AMHe&d%Ms-eQlle=`7gytjf^0 zW6W&oqC$B;I3)Bj1}Mw1j2}zd%l2n0-*c~lSYR>bIx9h6f#P(T^qx2!d4y~$Q?5&; zD*0nDM&+auIxEn)QT}`3`U>4ig;ofi$0|J%XoCEJmFqp@Bw{ z(9Hya`Vsy5+AH@X9kBvHlsXUfnJ8s;!v`V>rh!Hmo?s3+1S3(+p(fxM!~ksrL!n?| zM({asSIDfr%~b+a2o0p6G$Yxe+CT|NTY}7 z!!1lvDEV=UW-8Az<7@uO#0s6Xhy=+%IL@S#DZSJcF+V!po_GD{N5A*8AOEFyys5Yn z1XAcs90JU2%CI-;p&u(G2>7-}h=eOiIAyJs2$8Ub$9o=B^XF1I!yGx5*>0ijgd$Q( zhbmu_MZzTVmzi}|nnWkI)6^+%r)3XUvSx*la|SB}xs#n{R!9bN#daFHBFBKqPLmbV zYNuf($O^IIg(!sWV_S_{%ng~S;QPzu?`<{V<0tfjSt4UDW)!f-WH=n58D+=8G9lKZ zCM(%Wpe2TE+DceEa2ysAifC^aIz2`)zs^h&B*wPTmlb9dMdZ<64XnI|{PlPRfEgb-^hbd|q*`$^U$$l|4yzgLjK zEnTWPGyPBOnT4Hr6#D;H2?Fd7o+b|<*&+pqyla&LFRMAps@7166d(co3y}gQ6q8k? z0Kt?LVCca6NC6@$QEgc)2$ICbB%w``Kyi}@ zc0mhkLTD90i=~**!ae|2j2Lp*vdS~<0oHxC#M6Q>RvAJ`%N0*4hRzl=ES@}4QHYH% z!$6M?Q-^5Vj;MW4^vJ`lt2m|s6I(1xd;WZ9rpNP>SN>@}sa(in2CTK3{i>;7ty^F> zB|sKvTY1mhq?Va0rKhE?y^XZj-{fW+!D|CG$nIsx2pb6h3V^N$TD%BP-Wwe^%qRMu&y<&(>>=~->4r<%rIn0jLq~| z={!=YAHqQ(YHP*s|Jm@ujs;`gw4z{|-zP_pXVC)eCyxgU(d(6J!lD62c)iDi^^_zT zoxuvtYm1K9;~^y$bF{n*?b2g$Elfzv`VEG#pH+(lSiNM7Z4hnne1GB*HN)L{*4K%} zYU;Vok7jRxAHokXOY1h-MP2G`Co4A|g}$B!4cenZ-17nz(AS-lmFtz- z=y@s1(en=J$&QE!eW&-n=Oy2BfkS!1J$P29nHg3+KT zT%U)=FfmBN$Lu{uS6;pz7Pyizgr`$Yv}wiA#yYlsNNxZT*#>$GgDh82#yfNR zdZqG9eVcGQ1tdoDFKmi>Q)-{y$TJj`{IhbQ_Y_r-eM^t6xWt-kJQ*eBf2fenur?_A zDdIV2Hb*kRncbBSK7^6cZYzR{tGE(NS!rpT2KG1di9hQO(WVNp9?ah8JqsR?#&Lf< z&pfp!_eg(sPxR;$Xu9kZxOU(UhTqFVTMX!25y!(UAp*82&iCcSsiN(b6?sSDAWfU_ z!2T$+CqJG!5LbDQsf-fm5FM0O>(`7a{0NHF8XQ&`JHq|r;h+`bb|qM=%J$3%Bf?{_ zzbopHba$`oJ(K$$hb=8I&xO54q#H*Uh--ie+Y6=>J40P-(A)8X}u^nvt@nTn*EhJhwf83ka5Vuy5>v<$NX`vE8yGg$?!uV`w< z(-75HkSDP%YL_<4i42TDyT(QX)QCf=9OP=mHM7GLalA+ea)O=1>2}AV{x0)O6`w+@ zL~Tz!EWd+nS>_P&K&JAXi`|;GTM*lopU(yvt^6O)G*m_usFFDi9PS!wo`n8Ln=~ZW zBhre8htVosK?{i3qrL)|`JBpkoRno;N_-qAhz%dW;`~lP=825)caRdh6Pe0aHG)za zWS1mi5BOs8cElnkC@1hpKOh%_vSrSG2X$2_b>PkRoTdlh{;Cz+3qg4|P$HmYWFCX% zI%wZ|anOWQw$vdaiD2IN>X+}xQ;jVH7J*D1AsR8>W9Wlbsi55lm6MZ`EVFOmDD4JO zD|{7hP`R*Gq>+oWvysi@W6i!ZkilmyRvxvm=Y_{J@WLMaQ=rCv0HX>{DL)Sh?-qH# zWA2?3Mrm6?pkGuP)f#(xAU_;gm2hU?K$+q90y)WzMq?2sWn9~Y;%xU#F zEJQcuRE)6CqJ8~2_S`V(_!mWaX8g*<2-EpuB$Z_`C9cB2C$k?@AxoIVL;YH0B|?1q z69>NfrU5`<%CiJC1x@ZuD=81citUs~upk+0KbgUDtjJ&hC?g%!+_iu6%v zM3LR5-qlgunl;wsjp zu3{UIcXyM#Mw5gQ&xR(Fy8e>q#a>BInlM>!C17F1-N8(aLmf=_F>Af(E}m-XqGHW1 zDz-rv??`nKmDb>(FzUtq#AQ;K6%Uo7UhHfWChH9S^P|ihh?0Li=->2If7hN1&E)Ia zlYQg~B=`OsWdF&6lYP+3(g@#(&AWcMK`9Zvq}wJ&Anw!s>}HbY#Vby4wE{G0fIF(e zd}x)E0qP6oby~vzlvc%%ehkHqJ|t#Ljq4c@#^~s6u01y;>Kil4^_656YeAbDB+RT= z_2)D?*eZCLrS?3l<>Jx7hsHeb|5btt(zp`_AU&AViP-0@U@anD6C0qdPTVZsERVggh%Ops%4>e9S&hNh(DeUD6$ z%YzrCg(rtS<@wFn%g80@to{UjZ&weBOOf->*Irf7hdG7%HSZ8AP$rsLVC);Ru5I!& z+Qs-;Wn|XLZp*4Om`lZnv2X)3*D3`7W_Bwd?&>RORAfxFj0(;Gl&`2}qNBmtNOane z2d{S7LxWr_m!cwKW4quiu%xp0b#*WVEMAS@Z=Qt;M03x`JretofXLpAC5%C zlaS9Zy`>N9RJgHnmhn$X{F_jsO;qU;Qg{fuo@n&J93?`6K4AayuS0$4L_^RKtq|Ly z%};o{xvkj;e63pgbu&fwQU@;7Zi#@&fJQf2A9~dX744_Y$)n7 z@fi`sP|S^*P6_!cbgN5iYw7GwzFR;{83O?f8%c#Sz4*ym>WJA2<);kvR60Y<*J0^OC$D4VzyScg8zk>EjcarC1SFcJdi&lW@~86`!q57V0q9mR{zB(P&zOu zHf@79Z7tF(t5}A0)Y}&z!HIF5H~veEYukTln9nKe*^Fz`n~mIc#x(*UjRcdPJ_*_K z3NM_d!BUx36U=B+VzN5MEvEP{^yIVnY(nf~`EFQ*J%H-PM)pVwzTde`FT(KtCcCqh zM>7xw<|tjk<2@N!`m(IIW4a?iJWpigSl$snn!yFg)EKJ#&#_|qk``!c=JbCOcN&&y zVKsbN!l?5{W$an2+L1Cf-PsR`MD2b3g$w%qx-SYMci3+rw?&SH0q0^O&P@oVM>GBH zPxW`~IT73^)oa=TmFQ$in0Bzv+lqygP5q2!XVmV`oD}*3b3bZsVZG7UDWxR!+$01$ z($-rQQExjdC$uAqstay0OZ7YABW3vv@ahl}Q3ohUqdBkn+&;`2!gZWS(r8`MXhlQ1 z+mLRLx?`2r-b7e>s!IrWK>;L-Hjea5(7aQCX%3y{`hrBK(K*y>N21f1gm4N39wXHi zsvsQq!Iwjk;am`wcn`cH15D5$0{(v+Tn(c}%a1u@))>ck!!>3`7|%pDC)%!+R(Vl= z9B!c=T;gjt>OBlSJ0zRNe-DHnPjxtqx}Mt8c^{*y@nmY%c$&9ZLx_W<0|y2DF%KZl zl0Ijnrm+Z0JH-|EXcI7?%pt~Dya!jCo>TX2b3#fTymo~5uweyhQSa^WyOPP+5tf9R z=z_;l=W_a>dgZzM?7R-gw;;0#EF&OQVQ!He8xT?wm~$;k!r6!h@wypS48-4(uI387 z?fF;WWNYTM$vWp(+)u)D@iP0@n?X|ELWlh_`yN6MyiKl_$2GZ-_g+2yiHi3TR7uIx z2b3%(PL|r(m6C=oo2JPF#66OM53qUADen~9ABRdWAw^=nJ@bLA=A!MH4`)jQB%Wj^ z#VmCQ@7+&kkSp2L0LdvkUCEF?9;UR_i)-?vyiNv@`=4d-R^U*PN~wHT&XaD=I{Nk^ zJnYJYOuo1kl)+SaG!(IoW5f*)ShSB}ktX-U!N`hJB3HV~9M?l*0F6s>a2PdU!-nTcDbz=ZH5D0+NC5)OmZUUzl^bAB)-4-IMxF;ghoJRN88~jHc->n3s^9Ypc z6u*-ev$b->?qXCOWrebi9gTh`CZ-r7P8}~frflg1#bZyFv@e}dg6f$>X`pB>jr zz(eQcIyq3AyFZT;i|P54_mLuGp>;@;Yz0r6A_!E)dsO;abG0RIthU3@yy?c0>cu2C zHx`z=Icu0bm54$|nTc5bUzCSj@Q}9;&3yu$;pW7X;PYU|4v&R6vzSPu)q^p`#$YHO z?Mm`sGWR(C(^E{R-ko9=V7&RzBfjp6I^k!(DFFbpYmEVV!^W=BNB))GDD8M6#}kS5AC9MhDK?>nHd*}Yo5}b4?k8rY zq%q!LQLNcd#Wv{Y$wogTze<#P6H918l(^`uLpWFDM2o$1&Aw#ioioZko{@J>O6c(> z6#V^kSB}00SxXUn%yb81q^qN>5Efo~fy* zbdXB$VsKwf?0s4VS!L9*`AEGL_5}RVi5&*OO7+>3~$q9Dv=T2R$Mmc5Ql!Y zZcF0ucw@Q}!#5`=O4@qNN-~BmTbI%qk#AKbmUg1g@cButw@*5Fl*3n!e29gz<$zBLJ^7C$){|geScyN^ny$R+cyDiLX3@n_Kd>`&GH} z2ySV~V?!@dq6E)r$%D}5-=`kIpe2vNPAS;Lp_}lX4UpPH!Df?sj7y?mH+kQ+sT9r_ zNvXa>q}$^63tp=5IbI2$t1v2AWzJKWa}^4ouW;6eqW=PgJ?GJ2XOxPAXIErpeLfxO zjSP;D)9DK%Ys1GO&_$88@8b}2Yh<|jIE24AR)ylTQ-Nj!$u19=Z&P%!kc&IEHPx|; z6plM~p~7*;dKHd4)}?UVF`H?uBSqhz4&RM-kA1--9eP~z9z{-b7$r;?gv6^YKK2YTk;})}KaWI6i`h|98e!SwT`UHe zZN7%M<5D1|ttnq!ORhxpoi>CUvhONiBbEq1whpmG`d#I7#Ec092L90Qq1^9@A)O?6 zJr3(=5TwE;8k*TOIZW0T=M1*yz>XRi)!E*f1LK+=CMRmmfyGS^o2pEN&)Pv4v_uj# z#ywW`mV?-sSB;zvXAMIfh1)>f@Fk&vuc1jo15Lw@ga&rW{vZEE*RLsDot%nK6XNugAA~#4ncrBFRLY(N1zj9io;!ukQb(`^W`koQ9JqjIj^MC zyKD~#N8zjUTrv-3So1IIkAAiLQ)z;PU#t!Dy}fb#%MKOWrt(H-o%0^M23nfGnB_bL zkypspBq8Jz-XLbD1!)Du*dP#MI2A=<#sYaS{(G=clyfdNdo#^VuQZ=2&ycD>J+u zkx)6aJAO0ksXduT`g7)7!mNA3znBX_;6_Fp+Sp4$_&{J;UhPr+C;$PrHne*82i?MY zUk68Q?%^m7r8r*NmuHm<^&)0(^X>@iJVC}vGd}EQFLXvMiVs)9WAZJ5zd2fT{Ha5W zTrql=M;KTg{h7ni#-Q~V#U1S5oBg02C-&s(92M)}UpLIr?OkN%gzly*Z0NB4gR_P= z>-g6#*1(Qu-5qs9^H}Bb^EzUYUpfp%YCUCn)v!Da~9Ku#`=BHr^J26>Q2-#7{HMWuR)x zVSp%N%4jVfq9Gd`(H$Spg5ctWA1~#-mXkl+eBsaf#Wn-+9@Fp8wV_Xanz3$VY-qER z${Bw*G_x;fQqj=oJ`F(wAa^lwqqgSSpu#;#HC5WrOR(>OO-whTqJ7X|b-XVQ4vvS< z5Hw6R{WgTK0T~%2HI~Fis;1+HI5tu>EjMJck*evrA()L+eNM#jU3c~(9Q<76uD!=s$lBofD;37APTyEpzP1^>~ErseIx>Tgle=s2lp zJDuBxbYbE*Clefjpn%^Ikxgb3{Ma^|NSmk5_QUI@sFU(c5iQe+ogYRGew03FKKZbO zL&(F+I;F;WI{XEGQt>0he4m~dVQ}QyWLk^D7#o{mG1}b7}bxW7WP-#mSG`M2Qq|L!RSRA)vQsp3E@!^L!t> zPJ84lONIp&|uyhO~&QID%PA(T>p9+i? zN&!Mv0mCrosKG6!n8Q86Taa4-rBO_L#T%gLn}SndoYQelFy;A-s8{OXvb}dE6YWhK zy?IBoLGNFdL%aa#jA~~hv!`yGCK~v}sB1PH)XlY=PXxZ+cT5PnA(B53LE$A03CtL*9W8V=yag$- zB8-36GeNqWX9HeV{53d(fX ze6RUI&&GM~_&9PUex3;Y3&|&Wlfm(_gsb#uL)le+6eVTH7MSX#*-SafDoI7QHIh+t zS5oQIZ&M|08&Z4=kDq(H63(R$vRU<#vO*Jt1})@YS2nO;qAoRyIj3IzTp=jPT77QA zaD8vM9@tbzrjxGQ8$;;p#^gS3h{^?k7f7&E9? zL`wbP$qr_(EXqPxui zm@h<=5*^JFzga!=XWh=_M%(>f$mLBe4%QJ(jG;t&txHNTgxL5w%k z`4)l7T*$+3rALs?#>Ku)fXFrX(Z3@bsNY^Ii8Yn2Uz4{^K;N_$0PVRh{zPx6)l1Pd zM10;IIbynkIl>fkJR3Bnm2Be=1RioHzB(}65k3ny7QCFm6&jAyL{>CFWSKQ&3G?vi<03To1|@tYG*&EAu*%+ z!&t}Y^;dl8yyDawVXNq@kIqVP)~BC?6xSu6OLtb-{Ohu{Ir~YlY?0MC zI!3_!3SH$n*vLLom(E#sL?K>QuVi9Q=x*TzN(gz+2L8=3Tah*xASU`c6Ij~U2EHN| zSU>c*KSSPFyP&^EC$ma;AE3aq0rcgZm3dhFevt^x_P!42uz+tIspV`XBay(>CscqF zl`h~#xE_K4ehrQXD%xwJdXX}GN*#kt z|8gcv94u-n2`GLhEz@|N>V@!#aVT}|37(K>7kM4>iLQ{&* zE-}l~u~pkeQ4B5)!CUQqfRnP!M}GLmGgnL6{CxIJYIu%Ip`vrLJ~4%hj>{&znIO1_ zS3m8AEZ&f#i67Cdu|4xJ%DQoYCw>i*b3h&F)G*vl87VI`qe_K5C4G9q91E{Q=YTrm zb3kU6XkkaYp!>N14u$)TL*Xw{FHAX&)bghTZLDsmsI;#6TD-4OS{L`X*ShkEO6xM4 z$d3<(K$f~f+W88S6cow^g`n>(wMWGkr@7$K6<@wfsyMD<`whi0aDdRLl4lL?&*A5S zRYYvmnly{kAbRw#wr!L+!U5!_2dvQ}1kM9k>jgvCjHMgrH3viUCz3snk@Y zkVKRgc>q+PSY+>6^UjC=d&8v4Rc)sgsu zox|#kl|s_9D27{tN8}}z+d8f4nws!4*-XwmtWWuu?qQ}#-q%PMj1VSA!NSA9Y8(Zl zj5CEF1s5>!Ca1BfWF6N+upj!XD})*|4#eyizZzMaCl1tIO#;5-`Sko0$(Z20THM2I zd%eX~9(_cv3l3)fX@TuB`w(#d zEo+PQg`>5|fBZM9-E*+Iw#xU02cpW%(n@_{@lIFye;zpLikput%-Cm~uUe_z%}0x8 z2Ub@7H)4w)4Zg`~?Ow+xC3$Y<`K^p|Ii4Yx{sOKn*KUkP{pDB$s{Gd|pmJ5>d7jtt zynyG`JUe*)1Q(#(Vd5&M>i}!SZ9KIS?Be-qE|oct`1Vx#Epd9%=C{aKxi9fl+kXT+q3dfmF-wvnY{`?R{LKo<$^ucxoBZ=d95DlgU8YG%F?lgx!PP*Ut+|*pd$Hg z(PH&z&DockirE9T)w-+vg>rJWW3@#h`p!i$Kc!D4PdWRrL2+j#{%-Q|Xkk@Qmuo9W zjz_h{*(E_=Sd8kx*}3A!-Py9I*tU9nb?Tn_oU2Guiv>nn-$@3hzWz~c_bnW$ExL-n zlTf_!z`@!|Evo7|a(DIkYLxm~^XYBKl=N-rbKYjW`RMY&s|N}>zPfra zT3o6}wY%1;N4)c{*t0kJxN}rnSy@_fm7jhX$lGuAU*3-NdF<#Y{2Lvu)@Kh!^@G)V zG+R9~yLLq1&>nD=r&Yd7gF%n$wWBs3+Px^|7ngjGKdsod11r_V)vA5_I?|`NQ?O@h z(J?+NEpSri#r|8skM@`cw2r?s?%jsP>(7Q`R7ThHbJdsLPRk9}T&bO6mNHs{9JAy@NnDTX-uE zS9p+H;MzVIrw2hxy37AK`Bv-w1gQ1Tc(}rQxCMou=bkA%!9Da4zO3XRF7pRg=2-ov9{l$-43oyrV#RQg*^8dAEg5=o$m5{g~{d5(d}GrhS?*OtwF zOphS0AOt$y_B$zKfM9{{j zPK^rr-WSC9&>=erOgn=O5Tq|X>|ZlpZG4SUROdW^v4SCZ>G zroc-#ar;y11)tk=nc_c^#J{&`S@D0x z?K$NSZ~iht(*ysG0D9n~JY3;-6)8N;JyZC7?qT5%xMvHW;GQe|8}9kSC%Ly3{+N5g zL%0TI3WSSzxWXlh6b89x3X|MH^!fVs66uF?zfMi6B|N<8c4C_?@c}=@NE1(!7)tRf z0Hgd2_x)-|@uYxzgYvkzQ&ehEw313_vdaRsjN{%)0FGPa;R<(ir`Yph>;6P=1-1pc zgjmp9=DgIb*=3U+;9Cm(z!9%fHSqa&0^COP=hTU0EZ*&V6pOeR%6ctY(d&>$GTjmS zr(CCZt%wGCzOI=;@P69K{fcgxv+PuJTH2W0&i%@U=SrTxZXb_Wq*OeEA*a9 zf*mgRIl^s)SnIlPh^7M3!WhdhM7@1f_)r@t+UzL4>=`B6nJp=Nr@*;VKPk@;q=}wS zu^fwY{eYEzi3Nqgvzy0vJ%ob{A0@KoE^aQ^^85a= zjmBJX{&i%(gOs2<|5}32J4^J;P>^|d50CSW4yD@&N=0Y0&Mbh}5YPPxH_VuK^1xXo zseKujp8sb?+#}Xm@NXIP_ii-k7rY88dd2mBW@o=2tUXtY$?}iVeN#R^MF8dFCyNtA zpyBiB-24-i$v>&;nks%zHG;yg@oNi{NsPxEkv&vOq7|DTeGHmyv|(DnvBSpX!n z=s(0bDdkbZ*7PtDF?M)k9B^6Ru-W=w1$fU^prN#$BkWf#y_-onP6wogdJ04e*^6W% z|040MyGZaf+k$pshRiPfOV^riGaJdeb$WTXE~ z{6W$$1HIsD*}ngnif2CO`mY9M{RQ91_U|CPop8Po^#2r1U9WJaqyI+9b~NZKTw-=my~YARr-?8 z)7CdA(dBDc?GGrN_q8uYeAISQyAf~HzJL-8nblC+KTdp;;+-DCPZOt+282eu0pW2< zu)tJ}ZC|12GYWT!_ngt|6oG_ZvQ`p$l{DBfz04MVdB*VHt@Q5%{i4+!gcIEVI>Dqt zr+ZW~rqhLt8vh%m8}SC7o5;4F2ELsWsvXm5hP*VD8}UZ%+mqVVurVT@rqeGHPt&Op zZ$S8EN~G!ZKDF=ZiM4u;pj*BFtyg)YM*7MGSb21TxM0Q`s8Mt?n@Ctz|<}Oiz z_csd|_$USbL*%8wH{t^C`oGC-g5m_C-5S#-Yh9iF=5}KFB+1keKfK*SB1@onM5Rys_e!DHW?2~}nLfz}oPCv^P z+}pP8C&5z&Ct-5T=)L?7*r<@*{%x`f5&J|PkSOb}SS0y3xiU`&SNs9bF51leN#J_4 z@GWF}e;G}1H$mj6=fU+!y|Rrp`_Pxme;O?4>AgIzH`rVM6~X7YGDiad`r2kr|DjO= z$uiN_vZX_|yUWW@V%^?)DR?Y%h40P;t&u0$zW63rxTs}|w{uTW5@c02oOB)6^Y?zdg^4CS##@+J&|`Ag4{q$%xt~mC8E1U3<@5IN#`xAB1&@z%W&bt^ zJWakx>{eWP*(qppI{}OQ9FbS_I`j?t?L6Lu22)4eHPCUbv&C(+WbKS+2 zy*3lLt-lT1ew{1(7j)@c1g=n}FVfmy5b#a@HK9jU{mpIkXzSfn{uKfE8Y7z5!X*DG z@bG2-gir-A=xQ?mF`=z@a{C1(wNc*XYv;yguQ*KT+g$CRA>Dg+^Cu8159vLGzRK11 zo2usWf1{jlH?sep&xyrR+P}f=yIe03Q*QnkAvUezg;~$L88MhdYm=Bs zv^I&^H@l0@d=&a;e}uqR1v2Q0TM4}EVvx8}(tG75sgLYG=Qc@3&sGqLS37>Nds7fy zo@%hRYN!{n|KT0L`A5WBjJ1@9AiIyuTWQCePUigEp=O`o`PTyOf3pZ1f*VodU&fSJ zXPo*K{5$FL&VR=3ozN~g_oo&8ToOJ13yNOC7(cGutvd2bkl6gw+%RksPjNFXlP-`=N7~Yn?sVh=&&+=X zOf&!GgI0ik{u1{;0nyx#6X0hIl$@0Nfg|SdKV8E9GR;>Vrld~WZ1@g%#4c6s)tnBb z2#39(n3k9@o7~$I5@qnk2Q$DIQ18|MCKO;@(wHrkA%f(0P{S6puO`4^w#>s7UZDtq z<}&Ow*I29i_#w(WKM33)Pip-qjU@8u?>TsWKm$9;l?(S{4k>oQN#-`s28N$<75(2i z;s>+AEw-=M)6S}LTekF9SY4V4ko0d8Jg8v7T`u1ic9nMX%&vO16>&XctJr>eRh$&9 zPik@mw%|Vi^ula&9qXFw*mIi;-K?!+pAf`?t!^z?a+e=A;5+2r&bl4)L!-dtvlUj` zx5fe2qrJ5luZOHq3liFPJag{r*XO#P+0&BHjrT&abF-y?PmiWie^5*$t+HAGX)Uwm zn&n3i_p+^cx3(5vj|Flcf!|i-Fq3}TZvJZzLU!|iSMZE>^Uou3wDY2z1Ml!i$vI#_ z?;O~qRPP-4HGsy>0mFKG;-$DsUW%t>D7dS{*Z)RA3VWkgy7uy)HGhPe#5V~dxIIXE ztRr4){c@Kdpj2!)Ym+i5MUoW8d*f2E{r(G-Fh2WWT=d1->4TGq?%ToQ&o5$O!zOY5 ztKqhTu*b7pc^&uhD)W5|UeD)2?ZRy7R|(%CI=Ipw5q!CtE|h+Y%(7BDulORt%NV=N z6hrqc5vHDx@p#0L@BIWpO)=R*?#6+_cWMDhu&hRVcfqXY47T6b-8xi;(|^;-CE}qkdt1zW{KlZPJZ6C30oU; zN=ABg|I#WyGtbY_k5TtB5}#_oxVAQ5<&2Go@e?H9Y{$Wj^VWukZ1;byJZ4)B$LiIY zBQ^69R*o#(xp-8Ewe)u>SH|#MCd4p;$&n*9J7!ej_|5Fz6*Hq;pA{_AuPPzK225W@ zIEGEg{S+8y+)q+S7NpJv>{+^}Hg^+Uy?XnOE2Hf@cG&@d{RgXy^`)cNa?I>%JHj_L zHQQ)*b!uv+zEZ1AO)XMyYU+ksbv_MYm)Sw4Pg~mlipx^`a4S z575zli}l*dV)aNGQ#*@swoo?&@OMDIX=(8dwUwo-&lb>n%IpG$_t9kBS5RfUEuN%k zw>(J^hiBY8Dc2C%&UFok4)w=MoSa`ul|@KN`Fg5s%zn+{S0X^W73I$ZIFd>++sHjB zA%phka9yTDjg0!*(Wxn@0p~5Pyk=o>&ixDkS`wtcDyy>#3)dX1u5c!guZP zg{Rn223*E{4iWyxgw&rKmX?;izz{Ly_`nMuia#ahc^bj_IU?5`S*oTmNb&hea$|WW zPmfmgkH+5QhN%_H zt9GqC-(PL{yKHajvNw7Toj+QinyReaxu%KhwdFV2ZrWu>Ija0Rj*Zrw990%g6~At2 zg+sS6zmu=4S=s!}=^5w>!MSdc8EV%q+lR9RxKz$#v~SIJ%=R_KXdO1Y+;&t#@wF5D20Pu#WUCZ;zU8Rsf<)ny?r-`s1L7UrD1sA-gARe2gB^4g{I ztnzzl%dlUY*k!Kx`Ni$)3tbtVk$gL%ox5U1;ZOBWO?mxiQ+ld}Yl6u#{N3x^Lhhr?01`Ru`7hUJJ|R;ajkm=2mx^&N%zh z>$v&NhKF3M+5wTTOB1b~DU9he%ltAmbxn1(hGJUg-2>6ljGLQb3%Sh>9K=*{FQe{( zyO+#0w!XCdKQWWbM<$TeOQyt+V5si3xZfhqxbKl7qtT?x_ui(&*bcbO zX;GOHQCZSwu*?^t=dvcYw^Y`HS#7~)i-pP`_+6`yx!x5j5}+qI=V1O^}D#f$R(5bFS!0v z7m$*_bh%HF_h(!xpZvX;{69KFy>z-<8#?x&!w_w$@>>Y&K!c7s2=CfC^)W6T zfKC3={rOs|KWCHvnKP6>Q~KZ0ZXb0nP1VzphKLCmHrvR z-{#uSbSb+?8|h!+O8&GFe~jw{mp0*(KW%{jF_(@o{dp=~$96)@AmyJ*rT;g=-{Z=X zC&yCqx1I7sT$5b4aV39mq|6f6o4J09>tAsF3Rm(c|IsLM`GBtA63lTfIgVBYkMQqu zHU2)IO9ZAmGqX}V7W4*}c5lvw-KCda(EaOsSV(3@T-d#D^CDJaxY=E_IqWVL9}RlI zxyS7zhLdy~C3Y2y7`XY#Kq+n6Kv{9Y!glg6q(=KX;Jv{nXxuSLHd_zWDK+YJ4sfbq zQ+}~K?4ByVJon1;-VuOH7fn)z>DeRo%Jax93bmfiG#s~A>N1Q$asrfkEmn$Sn*uOn zdG`Qc0Qw``_#T=N|Dq*&ZV@=GYlX7Ni?4dv9(xp7UH^t@D_NTTfXEv;mTS@{c~ zS+iRgo<@P&Ftjd8Av{7iw+^_Z;}NJ_Jiw@=Y2jRSQBdBj#M_In2a~>wTq8<_e&ycw zQlE#PvXMv8ZHgv&mo^)E<#}rAveu?>8^5$k*X>;ptyt_Tb{0k09g4Q)aa<|gRKa}<6dsz1{xS@DOQY&4LABm5$E1@PV#2i zk%h$?h8r%=E!=}3`0w3adN7~K`O5#jmiw{|bCXwD5uxV0tg6bv@@}5t-{gW^wxci8 z4b10nW;d0x{vgt6NF>c%mGZV-WzII|pLHL9 z-cGS#buqbx2SmEmYz}0*np)();elU;?a>ejp z7BZIwxt9*-!+&;cK3B|#U*jXK;d_qVo(*$_eE83Eh52kY*BO5Cz9(~S@5*KQ5#x8f zWgwf&y)++wVAHE}Tf$GfIwiWpuP+bevOlkC;V%VO=fl5v^9j=1^5H{#tTmf|%-4CU zd%)`4-mJ5luJa^VZO(^Z=VPw9@bbb(^5Ju9pQS9A{gZ6r)!_74`0aZe2oyFMv=av6 zT`L0y^>g>tbJ^8=`0lsdo*T-CUkvASz2Oyv!`D7ZSFVV__Fch)xlTSf{e?FVWb?qz zL{z;r{F(3>@c*-(y08s@?XBv3A^hWvHAvhee|4%kk*1z&drGA7UHnkoMRh+WOQVaF z*b;uMOTBLkpShlj#m@=CsZ#e z(x}eQ)M#{mAll?E&4<6pcm7KG+p~G`%~#&?7`PY1M|y70hu>JNhd;qfn%`KwnrEbV zHkS|oQ_rg@(;2=$FfIxou4`O2h5t~zJ$G*Yc7gfYTj8>|-!+iUs-U&rgLi#3d^^3)M3z` zm_eaW`1TI5Y%xi>A|L(>QpWT3@XyyiB5`?d$78w8YuUD3Px#M|e>PWoMLzt4w>*=3 zNk06Y5DGt@yD~qJD?OOsm)l9;%6hK!>hNQ4c}xYKR)P0#P@tvo@4n@+eE129sy={j zOe$R8gqVL#GaP>CEe~c3Ib{Ef`NCt_b}0BaZ)O+*2>t&S1}x!M?=GAmVN3X%g#q#} zE-+S~S-U#NFrVOaMJAmwh}&ZbpEUrVqkJx$DZnO3unOC>k4BPhAO5%QAXn%JpXPUI z_JqH8zhFP@9?RWKc%E~PFJvEFYjck_g`RgN++gmRTdCgZKR5A%+6cD;AnTT%4~K@{ z*OcLw<$gJg|4r(d$`((;UiXt)T|6GA#k!yQpgBzlX=teROZdtl*WOXM1BG4)kJX`i zPuOw0kKInJE9}W!9%MQoQ8uKG);i%-z(9z;*(^y~_Jn`!g4|@sla@-FmO$alg4{VB zh3Q;RzMgBBGGs1zUq)?Q7JmM%(&dHl35$;sFFc7J`)sC1VDo^`>M8t68)wKh#_zZ{ z(@%OX8~(R!L1J47AG!C*B;g}*!eep5W0}o>aldkPN9>?rW}W4;8FxlE-0<2PqwOnv zhhjG3TOzA$C`aXi;lY8yor?>19<1{@j_u=vW96Bl@$u1UXs|r7b8uqk(8P`%8V1`C zO}-U!6&ne&hnLpsSMkk?#IMP|wDzXu9Eu6JtcRZ4<-Ii?*KDm zL5XA&ebrr4^`CLMx$za3WM6%Qt@g|4t~bbKkGs7$?mzJQ>055T`M~r|H($FKzF*PK zy}r-lYIAs>Wcj$|r3FKGacS|*a$rwS4<;Va7r&VuyO4i??dECk#&_`}?VEei=_o9|xauD$!jc;+e1Xdk<|^_qSArf<0Ub$f5QrgH1v=^HEig~y15 zcbEd@$;#;^Xm)IPd~9f{!zW}6`66(Oj{P^(r$Y8lPJ6|0d ztR|4IxxR8s<(dO~Z<)U4hRUtCatPs?yWQ*DweALY!#(acciTPej&HQ>pGJSE?9o~W zjAn<*bF)K3Gu4T?`T6;=d78EDY#6{ko^$QOoeOo>5YpQg=i-kpwVXVNoy)c%(~@Cp zm1~yxcGV&ZYR^iodN_63;4-O0R&qnE=#mE4pE1yJfy;D@SA7ok?N@!a=yTUpuDO2i zwbT1=eqDLc&IL?Qml5@$(~c0N$uS-Sn@E6-8nE(E8XCkYkBkow4v$UD&J35w=7&c2 zIy)=ij+w5RmX?WS0tE$E-&sExpFr>%-phP#NC>lazU~--n_pO5SUpI#ZHS-kUb+A- z;E=DSH{*X8+voGAA4K?He+VIFGcncw4o5m}J8<2^v?OZ!b^ES8aD7u>FyiIWb-8fU z-26msaAvMLS(_WFjgO6M;?hq1qBcoiS3Q2(p@e#M^)S;IM;30WRp*Yo{k6q8ed*0k zG3Xq^Wp=ZjPQOWe6V94zmX;~1QwK9^3rCRGRRZ%a*}iY=;c(I*wGp|rIK5cATmCxg zHn!T+vy|WDI@6YOJT@(ohKFXxN9X3sGb2Ogz3#y4 zZa#ZB6G>?e4O7Qxb#!oScC=OrF_#C(y#d9_|Ock3!X9{8-luzvR;|Ylc7oQ7=qyF4Ldj4w3 z;OryzY2D9>xAK8Gr0>Ae(v7UCWUFJwwj3Xb-PFmxaNHEbG(0iA?S=!}BtioN@#1U1 zoBv8buwrw(7QP6c}t$tvs^4v|8sgcC*u~brc^sjLgqZjLp=>YJ+eRtd6d2DU!4{S$=V? zsomqBdNs z!A4bBw2a^jb!&7yP0*y#eN0@lwblO-O%II?j*pDbOwP;<)*#Fr3>*_*&5w^-^V@E@ zE@2k+kE3kX&wbxtZ&^+tGee`p<=JsGXDuE-KOr)3C>zv3+(*yNVu6MPjR?bu1kDKz zlJbWa>jxR)$;sK_i6QCZ>fBIuRzqArm<;P_z$GDSm`^{hl*?<2cdt~Jrq?Quz&Rtmed8eSTt^)?lT@`t%GZRfWp%;NVDkba-%RzFHn0 zL+6}ctOd@HXR(G}04Xtkd1w}bAdoid03I8e9~+*j4UJC>jf@XYB97?-X9aQ$J!O?< zbjYo`avZRub3=oJ5-hCr@tJWn&H6%))xtuZBS@$yWi>Z9^rRCLu0l!BwaEp$<99U8XQ~ilnAHLJ{VtHngX|g(A9zqRFNDYwQ zg4r3!8P}gJmnR3yv*r2OiOCwPU8^563TRAC85*2J^k~Ei-BiJtpMN}7r%C*VUEa1f zI)jQ`8=bS6Nqvd&7#km-sE&`$k5p&Mvx9RCCjDs9W}^mi$ZPTjbF70HLu0aFjw_Fk z%<<;Ncomz(L%Xs$dwPaHyJ={+iZ!Tp`NZ&eb!>dH$_j31m}!pm1jqj|)F`V1(`$?7 z`m3qYxuMzW_{4m9WN2_=a&Bzcy3#CR&Bq4KHTbQr^@h#hHcXD1KL_eff~$3|%Es+% z?S{#Qpo7LpxjHd9KQT8~tq#|QC$K*oxlPDFgvnuaRla>O^^@JU>6q_{9n+T?$7)_0Cn+&n%1hyziZh?(T&-*4-?P zXBXtdb+co88POjbtYMSj&@ye@?2@McQA?ZLaNbe= zhK8in^$W~7nsF-0Y?D}>^R=Pbnc3O7$@2Wr{K#m->eNZ;UAP|R8n_L&jN&j^L(CUz z<1^S$+~Q#(%v7M8daRijkKqu;#@z5IBYW??ak+Tu;73gp=V|i|%?%7(yRf=^qQGYrS!n}ctym?5sc_2HH&{3n|WFuo}&~`<5Cr^r(;aQu-6ovZ3W3$7< z)uFkunTc@*ml55lpdS+LIks|7qXT1jk*1H80a%?KpPL^X9i1&t3{8%W%dWMoGgK_c zHK+Y3@f~=v+1SMB@bKv5{LJ`R)mXyAXciJQzgsXKufEIUv+>^2bn+7cKpL5y9hsk* z7_Q9?myrgT>$Fm>h&8mDhn)bp{orE0oOqG*#Y<3u9(8?*d*$+&n^6(tL zEr2OLjkL|02cSAy8yOp(8?CZ9uMN?WmJ(OXEANeuF;l!7^hR6C1C>P+-f~%HkY4d+ zZwETn2ItvLm>3-z8mf&9Rk1!&`LVTXs7_5Ku7;_pjaY4J>ZYarUi1x}b=2^TO@l)d zqqTATcI?ki)M~?+qY3Yic~47uxOUGnFYivzSCJawSe_l7V--0vSe+dm9-n{&EhTu3 z|NPYJ%ldJL)z`62&PFzWPqSst-nNT3Q(vKA-A(Wi?f39x8e`0agPbPU*u}O(|ifBbemleA>QZQ;mNa; z61I1{EvC~SSrs}l;0dOtdz;A(Ay-C6s@=7!sz_Evm6L=%n5EgQ0KtJu=BzF05S z)f2CZ~c>Gs?R^gGuaybF~Y{7 zzeykl@&LgYzuzX9g6D-jdH4D)%BCsk*|Cnf|@qTtPD&iGpD!&=4 zF-Uf38>}V)^SiX7MvVA4!SpsOQNDf8)qIir5n|>+aDPl_-A0<}Eu;8L4YI9Kkmedr{I86lt$*aO|pj@0eN6_}+Zc-ZC)I8LhzL7&~ z5f2-hO9`m8X`XRw3j}TVZZm;+tgcX6yz57k?mTNZdC~Y+iNyt#={X~LuUMlX&Y0zy zkoxt6t$B@D+^lNFK*TtyPF^0WlgVqx^BnU{;OKMAes!eJfO-eaF4sxwX{&TMPU^nc zh3OWE#OpMtw;^L3R(X9#)VQpPi@rq)VD}I;v>5wQ;a2DOkm*(84cDhMeZ((PE+(#_ zHgD=LfSKnCeLHjmcmDZtX{Yb<;xb6@YWxk&#I8Vn>odJF)JIWIa~tZzqcP=nBuI(S zyls1$OZLq)mzXl{cA&*mpT4f@NtyVv^x$y@#^_C z)bxwZhYgeFI!td_C4Mh`V0Qy=u3p8^TJVTy%82RXIqTg;`mC%v;tBA4uEse~F}p_Z zX0ZnTNf45>{Dk7%cyy`d^makxG|OMB})XZkv_h<6s7ANmk8L#my$ zWLxWcFlg+D|AI%$8`}DSu5eD=)f9A2g4KK(Tc%PxsCN*AZQsa49joz7D;<3fEtY}r zD$CCxuO*n0!>5U6?BkVs!&>%Mva34gjT8TZgIjIpu-p4;%Es^-8aC0z*HJRr&NhPt zF7=A}!6u9{o4nG#)|h)&5;}0Rc5C(R`WSJk?RZ!Iy##GM=bEM2#nzu!PRWbfLd2Bv z3s?|h{J0qz6DgwHO|YOxrT4seyGL>&cle6D1WDb~WQLLDpBQ9i3f1o@<1UF6WB|taemR-L@oyJ?O#~WvJKj@1r5w z^`-VsrPl9Wx@Q_m=;%?5!bzE8s?meBdpb*&k8cF;(zJfDuB%rmvq$)BNK&VJlagw4 zL!+bRNq%f`Wnun!&m~HmIZ{1b8=6M4rfYOTQ&??oTE9?duu8qt(|1=_k511*ifMUZ zR(r=+*JixfnueRz*PpNer>1URtMl`NQ&Y=p`r5<6xyi}F$z9$#UhfClQqTeD>7}Kk=e)|6`vzoSK))P0@Y>p}T#Jq42~$(_ zjU9YOZRzN=F(x1<$~E?;IRv6DYMd`GS$%#$Dd$MKF*)S+8hGDkyvx5Y@oP>^S*zl8 zH99|7V=s1ma%6b0Tpg^wwAcDEQ@aya2XhR2kLMa;jxL|q27$yQ=PQ9BzaZ~9@WQOP z@1h-kUTgSSptKIw)5v<)!qzK&QN(;|s^K6~`8i6j_Yhrtv(aJQUi1d;6u`CkL+Pm+ zIJn+B6z$v?Q|SSUuXhRc4aLP}v9#zL3JjYx}=m^HZz+U^YOz{UzSa`a=q`r+0 zkIl1VKRGitHaa;rap~+v1A(li{d6z3k=iI*>?4!&lVh{(DBv z>9C5cI+4D;nEK7l9VL!^YC~aRwT6yZnmv5Q`vXI+*?jzypVEg%DSNEO2J@Y@MU)F& zKFC2p?Gs#YPYKFRYe#1|9TQ87evdN=b9R@XlHAA7XPO9|1wpT^iL#!cP?#{(93H93 zVLCoIH##xL;ft4{C~LE8^|%99F0I2~KUO&%cY-lWehTz#XuVw^|9f3Dh&<|m1ky$C+9{6UeTE;ImQz!)Y3$vUlpmchkKslg8Xp`PADSF0mp!Rtr5UUF0gfHq-B8pq8#Fe9rlzbk zvk!CN)YS9s>d@dwxi(rIF5@GGbq8?{_waq6Bgd!F`b^HN3$w%BoLf$D@5t>)o_%#3k