Giter VIP home page Giter VIP logo

chain's Introduction

Nodle Chain

A Blockchain node for the Nodle Parachain to connect and secure the next trillion things.

Built on Substrate.

Read the documentation

Live networks

Eden

Syncing Nodle's Parachain (codename: eden) is done easily via:

cargo run --bin nodle-parachain --release -- --chain eden

There are a few more chains available, such as eden-testing or dev.

Development

Building

cargo build

Testing

cargo test --all

Installing

cargo install

Run a local parachain and relay chain

Assuming that polkadot is in /usr/local/bin and that you installed polkadot-launch you can simply use this command:

cargo build --release -p nodle-parachain && polkadot-launch launch.json

Usage

With docker

  1. Build the image: docker build -t nodle/chain -f ./Dockerfile ..
  2. Run it: docker run -v ~/.local/path_to_parachain_data_dir:/data -p 9944:9944 -p 9933:9933 -p30333:30333 -it nodle/chain --chain=eden-testing --base-path=/data --rpc-methods=safe --rpc-cors all --rpc-external -- --rpc-external.

chain's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chain's Issues

Sync issue after runtime bump

Describe the bug

#47 introduced a runtime bump, however it seems like we have an issue due to the genesis block generation when trying to sync to arcadia.

To Reproduce

Compile the old node
git reset --hard eea5ac96067aa665f75f9756a3a66dbdddaa478d
cargo build
cp target/debug/nodle-chain /tmp/old-node
Compile the new node
git pull
cargo build
cp target/debug/nodle-chain /tmp/new-node
Generate the chain spec
/tmp/old-node build-spec --chain local > /tmp/spec.json
Start a network
  • Node 1: /tmp/old-node --chain /tmp/spec.json --alice -d /tmp/genesisA1
  • Node 2: /tmp/old-node --chain /tmp/spec.json --bob -d /tmp/genesisB1

Note the line Initializing Genesis block/state (state: 0x5f36…e5ff, header-hash: 0x41ba…662d).

Attempt sync
/tmp/new-node --chain /tmp/spec.json --charlie -d /tmp/genesisC1

Note the line Initializing Genesis block/state (state: 0x38a0…bfe9, header-hash: 0xe748…d05c). Hashes are different.

Expected behavior

The node should sync just fine!

Current behavior

The node doesn't sync, seems like it is due to the genesis block being different.

System (please complete the following information):

  • N/A, this is a chain code bug

Benchmarks

Describe the enhancement
Add benchmarks to our pallets and use them to estimate weights.

Use the new multisig pallet

Describe the enhancement

Seems like parity now has a pallet dedicated to multisigs instead of the utility one, change it!

Break runtime in more digestible files

Describe the enhancement

In order to unclutter the runtime code we should split it into smaller files. I like I have done for my Governance OS for instance.

Use try_root with EnsureOrigin

Describe the enhancement
Following parity's pattern we should let root calls go through EnsureOrigin enabled calls. This would allow some shared governance features and help make the modules easier to integrate with.

RPC chain_getBlock (incorrect extrinsic format)

RPC: chain_getBlock fetches block data of the head of the chain.

Problem:

The extrinsics are being output in a vec<u8>-format and not in a hexadecimal format.
This should be fixed to make the RPC of the nodle node consistent with other Substrate-clients.
Extrinsic encoding in Nodle: "extrinsics": [[40,4,1,0,11,224,195,128,14,113,1]] (check examples below)

Example request

{
    "jsonrpc": "2.0",
    "method": "chain_getBlock",
    "params": [],
    "id": 1
}

Example response on a Nodle Arcadia node

{
    "jsonrpc": "2.0",
    "result": {
        "block": {
            "extrinsics": [[40,4,1,0,11,224,195,128,14,113,1]],
            "header": {
                "digest": {
                    "logs": [
                        "0x06424142453402000000003215bf0f00000000",
                        "0x054241424501019e9c2296a36c47c1370f0787818619cd54c673bb1f6d7b1f137038db46a0ee2aa463b33c19b9dbfefdee75814a173b6571b8257e8516a550db22b12d7debb186"
                    ]
                },
                "extrinsicsRoot": "0xc488193d7b1eeec7ae5422d0ba49a44a3c57257990567e2c7d176b69998ab5eb",
                "number": "0x2",
                "parentHash": "0xf08d6f4018108b8ada944c69682092c5af986872a6da3f2699df08d505485f02",
                "stateRoot": "0x881beb91716dbdececab6e76d03c0b4e20489ba99c7b8958138b29b283e3ac4f"
            }
        },
        "justification": null
    },
    "id": 1
}

Sample response from a vanilla Substrate node

{
    "jsonrpc": "2.0",
    "result": {
        "block": {
            "extrinsics": [
                "0x280402000ba0ad323a7101",
                "0x1c0409002a826800",
                "0x1004140000"
            ],
            "header": {
                "digest": {
                    "logs": [
                        "0x06424142453402aa00000076f2c00f00000000",
                        "0x054241424501018ca9b55f0b35d37a7d6701369701fb6914b37e2ef67877a1f40ce78da33507096f3cd254e692e816d9d7db9b8284755ba3552cf5408946c27573c0d62b63f387"
                    ]
                },
                "extrinsicsRoot": "0x078a9c970ca1e90f9b255bdcbc3635d0edcb5e139b49700fe31efa668811fbf8",
                "number": "0x1a208d",
                "parentHash": "0x9cc75a1c71f0c73c471bd3b90cadbaa78b643c8f70a32ad463bf23f345fae7e7",
                "stateRoot": "0x3bc96998fd6d038afe84279f3096f3f7e7802a745d5e36991bff929a335faad4"
            }
        },
        "justification": null
    },
    "id": 1
}

Add scheduler module

Describe the enhancement

Add the scheduler pallet for user niceties:

  • add module
  • add benchmarks

Refactor Weights

Describe the enhancement

After #88 refactor the pallet's weights and make sure they make sense

Create the doctor pallet

Describe the enhancement

The doctor pallet should be callable by the technical committee to perform debugging and bug fixing operations. Its first feature will be to wipe old committee proposals.

Add a DID client

Describe the enhancement

Add a reference rust (wasm?) did enabled CLI to manipulate DIDs linked to our chain.

Add UX parity pallets

Describe the enhancement
Some pallets could be deployed to increase the UX of the chain users on the long term:

  • recovery
  • identity

Networking issues in alpha.5

Describe the bug
Sometimes a validator will go back in syncing mode and be stuck at 0 blocks. Parity indicated us a networking issue was the cause and that it should be fixed in a future release. In the meantime we would still like to have a healthy network.

Seems like paritytech/substrate#5387, paritytech/substrate#5408, paritytech/substrate#5604 and paritytech/substrate#5628 could be related.

To Reproduce

  1. Have a validator running
  2. Monitor its logs
  3. At some points it will stop with logs similar to what's below
2020-04-14 07:31:44.274 main-tokio- INFO substrate  Idle (3 peers), best: #3638 (0xa25c…e9c7), finalized #3636 (0xa9f7…089e), ⬇ 0.3kiB/s ⬆ 0.7kiB/s
2020-04-14 07:31:44.282 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:44.379 main-tokio- DEBUG sync  Propagating extrinsics
2020-04-14 07:31:44.880 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:45.383 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:46.483 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:47.280 main-tokio- DEBUG sync  Propagating extrinsics
2020-04-14 07:31:47.583 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:48.056 main-tokio- DEBUG sync  Received block announcement 0x9b42bc9729712d3cc1c262e3574100122b67f8b71873964f21d3540f6b858ce7 with number 3644 from QmTbn8JyAXsgqupCr38JRgt76ScWfU4ztMfNDspZr42Z9K
2020-04-14 07:31:48.217 main-tokio- DEBUG sync  Received block announcement 0x9b42bc9729712d3cc1c262e3574100122b67f8b71873964f21d3540f6b858ce7 with number 3644 from QmSa7BcdeW9e5kmRpKAZYLqgN1jLnsF2tdu7c6aDZxyLxc
2020-04-14 07:31:48.684 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:49.271 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:49.275 main-tokio- INFO substrate  Syncing  0.0 bps, target=#3644 (3 peers), best: #3638 (0xa25c…e9c7), finalized #3636 (0xa9f7…089e), ⬇ 89 B/s ⬆ 0
2020-04-14 07:31:49.784 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:49.880 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:49.880 main-tokio- DEBUG afg  Waiting to import block 0x2b7f…2a1a before 2 round messages can be imported. Requesting network sync service to retrieve block from. Possible fork?
2020-04-14 07:31:49.880 main-tokio- DEBUG sync  Explicit sync request for block 0x2b7f83c6a39849d44360b3f2666fa99930f4e9f069370cc0fb34fe5ff2b12a1a with no peers specified. Syncing from all connected peers [] instead.
2020-04-14 07:31:49.881 main-tokio- TRACE sync  Downloading requested old fork 0x2b7f83c6a39849d44360b3f2666fa99930f4e9f069370cc0fb34fe5ff2b12a1a
2020-04-14 07:31:50.180 main-tokio- DEBUG sync  Propagating extrinsics
2020-04-14 07:31:50.885 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:51.985 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:53.080 main-tokio- DEBUG sync  Propagating extrinsics
2020-04-14 07:31:53.085 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:54.186 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:54.271 main-tokio- TRACE afg  Polling round 6625, state = State { prevote_ghost: None, finalized: None, estimate: None, completable: false }, step = Some(Prevoted)
2020-04-14 07:31:54.275 main-tokio- INFO substrate  Syncing  0.0 bps, target=#3644 (3 peers), best: #3638 (0xa25c…e9c7), finalized #3636 (0xa9f7…089e), ⬇ 0.4kiB/s ⬆ 0.3kiB/s

Expected behavior
The node should stay healthy.

Current behavior
The node is not healthy and seems to pause.

System (please complete the following information):

  • Ubuntu 19.04, on GCP
  • Running in docker

Additional context
Seems like the addition of more validators could help in keeping the network healthy. At least we would tolerate some disconnections.

migration bridge

Describe the enhancement

Add a bridge to move Stellar Nodle Cash to Nodle Cash.

Company reserve function to send transactions from the reserve itself

Describe the enhancement
At the moment the reserve module only let us credit another account. We would like to add a function to execute transactions as the company reserve in order to trigger more complex calls, for instance the creation of a vested grant.

(Optional) Suggest a solution
We could take inspiration from pallet-mandate and add a apply function that would dispatch call with the company reserve account as a origin.

If we do so, we could remove the spend function.

Merge parachain and main branch

For now we have an eliott/parachain and a master branch. We may want to look into merging both of them together and have a set of command flags to either start a parachain or a standalone chain to avoid rebasing issues.

Add missing benchmarks

Describe the enhancement

In #44 we added benchmarks support but removed some problematic pallets. Let's make sure they are enabled there.

Re-enable wasmtime

Describe the enhancement

In #104 we had to disable wasmtime due to compilation issues, turn it back on.

Chaos network

Describe the enhancement

Duplicate one of our chain specs to create the chaos network.

What is the Chaos network?

The Chaos network is not even a testnet, it is an extremely unstable network running on a limited set of nodes that can be used to test some specific features of the chain without impacting our production variants.

Ultimately, it corresponds to the local chain spec being deployed on one or two servers for every release. Terraform should be a good option here.

Panic on fresh sync up

We pushed an upgrade to the network linked to #20 however fresh node synchronizing there seems to panic around block 131,140

2020-04-03 01:31:55 Syncing  0.0 bps, target=#131682 (2 peers), best: #131319 (0xc251…e963), finalized #131072 (0xae65…2a78), ⬇ 99.5kiB/s ⬆ 2.0kiB/s
Hash: given=bbc736cd9484e3ea6a3697eb06900272093a63691bdb28bd4cad63058fb527e5, expected=0826fde67c866d994469a239880a92a8273957160bb7c7324f17e7c54ffa6745

====================

Version: 2.0.0-493097c-x86_64-linux-gnu

   0: sp_panic_handler::set::{{closure}}
   1: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:476
   2: std::panicking::begin_panic
   3: frame_executive::Executive<System,Block,Context,UnsignedValidator,AllModules>::execute_block
   4: <nodle_chain_runtime::Runtime as sp_api::runtime_decl_for_Core::Core<sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<u32,sp_runtime::traits::BlakeTwo256>,sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic<<pallet_indices::Module<nodle_chain_runtime::Runtime> as sp_runtime::traits::StaticLookup>::Source,nodle_chain_runtime::Call,sp_runtime::MultiSignature,(frame_system::CheckVersion<nodle_chain_runtime::Runtime>, frame_system::CheckGenesis<nodle_chain_runtime::Runtime>, frame_system::CheckEra<nodle_chain_runtime::Runtime>, frame_system::CheckNonce<nodle_chain_runtime::Runtime>, frame_system::CheckWeight<nodle_chain_runtime::Runtime>, pallet_transaction_payment::ChargeTransactionPayment<nodle_chain_runtime::Runtime>)>>>>::execute_block
   5: sp_api::runtime_decl_for_Core::execute_block_native_call_generator::{{closure}}
   6: std::panicking::try::do_call
   7: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
   8: std::thread::local::LocalKey<T>::with
   9: std::thread::local::LocalKey<T>::with
  10: sp_state_machine::StateMachine<B,H,N,Exec>::execute_aux
  11: <sc_client::call_executor::LocalCallExecutor<B,E> as sc_client_api::call_executor::CallExecutor<Block>>::contextual_call
  12: <sc_client::client::Client<B,E,Block,RA> as sp_api::CallApiAt<Block>>::call_api_at
  13: sp_api::runtime_decl_for_Core::execute_block_call_api_at
  14: sp_api::Core::execute_block
  15: <&sc_client::client::Client<B,E,Block,RA> as sp_consensus::block_import::BlockImport<Block>>::import_block
  16: <sc_finality_grandpa::import::GrandpaBlockImport<BE,Block,Client,SC> as sp_consensus::block_import::BlockImport<Block>>::import_block
  17: <sc_consensus_babe::BabeBlockImport<Block,Client,Inner> as sp_consensus::block_import::BlockImport<Block>>::import_block
  18: sp_consensus::import_queue::import_single_block
  19: <futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll
  20: futures_util::future::future::chain::Chain<Fut1,Fut2,Data>::poll
  21: <futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll
  22: futures_executor::thread_pool::PoolState::work
  23: std::sys_common::backtrace::__rust_begin_short_backtrace
  24: std::panicking::try::do_call
  25: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
  26: core::ops::function::FnOnce::call_once{{vtable.shim}}
  27: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
             at rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1015
  28: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
             at rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1015
      std::sys_common::thread::start_thread
             at src/libstd/sys_common/thread.rs:13
      std::sys::unix::thread::Thread::new::thread_start
             at src/libstd/sys/unix/thread.rs:80
  29: start_thread
  30: __clone


Thread 'import-queue-worker-0' panicked at 'Storage root must match that calculated.', <::std::macros::panic macros>:2

This is a bug. Please report it at:

	https://github.com/NodleCode/chain/issues

2020-04-03 01:31:55 Block prepare storage changes error:
Execution(RuntimePanicked("Storage root must match that calculated."))

Error when testing emergency shutdown pallet with all features

Describe the bug

Compile error when testing emergency shutdown's benchmarks in a standalone manner.

To Reproduce

Steps to reproduce the behavior:

$ cargo test --all-features -p pallet-emergency-shutdown
   Compiling sp-api v2.0.0-alpha.7
error[E0432]: unresolved import `sp_core::to_substrate_wasm_fn_return_value`
  --> /Users/eliottteissonniere/.cargo/registry/src/github.com-1ecc6299db9ec823/sp-api-2.0.0-alpha.7/src/lib.rs:53:9
   |
53 | pub use sp_core::to_substrate_wasm_fn_return_value;
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `to_substrate_wasm_fn_return_value` in the root

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: could not compile `sp-api`.

To learn more, run the command again with --verbose.

Expected behavior

We shouldn't have this error!

Add proxy pallet

Describe the enhancement

There is now a proxy pallet to create proxy accounts. Add it to stay on par with mainstream features.

Automatic and easy creation of new validators / nodes

Describe the enhancement
As of now we deploy nodes pretty manually. Given that we want to have at least around 10 validators we should explore the possibility to automatize their deployments, or at least part of it. Later it would make sense to have something more complex with sentry nodes.

(Optional) Suggest a solution
There are many ways to automate this:

  • terraform: will also provision servers
  • ansible: to batch process servers
  • a hacky script: not the most maintainable though
  • kubernetes: the good old way to run a bunch of containers
  • a debian package: would be pretty straightforward

Wishlist

  • Support basic nodes
  • Support archiving nodes
  • Support validators
  • (Santa Level) Support validators with sentries

If you are reading this feel free to submit ideas / links / tips

Global Emergency Shutdown

Describe the enhancement
The Nodle core pallets should be linked to an emergency-shutdown pallet controlled by the Technical Committee in order to stop any modules with a potential economic impact if the need arise.

(Optional) Suggest a solution
The pallet itself is pretty simple:

  • one storage: is_shutdown
  • one function (with EnsureOrigin): toggle_shutdown
  • one event: ShutdownToggled

We then have a type in other pallet's traits Shutdown that can be used with T::Shutdown::is_shutdown in order to check if the pallet should stop its core functions.

Add contracts pallet

Describe the enhancement

We should add the contracts pallet that will give us support for the ink! programming language and will be useful when opening our plans on this side.

TCR Admin functions

Describe the enhancement

Use the ExternalOrigin to support the following features in the TCR:

  • setting invulnerable entries
  • kicking / vetoing somebody out:
    • application
    • challenge
    • member
  • force adding a member

More CI checks

Describe the enhancement

We should add additional checks for the following:

  • Runtime number is incremented for pallet or runtime changes
  • Transaction number has been incremented
  • Tests have been added to the pallets (coverage checks?)
  • Benchmarks have been added to the pallets
  • Benchmarks have been mounted into the runtime

Grants module

Describe the enhancement

  • Timelocks -> cliff with no vesting
  • Vesting with cliff
  • Cancel
  • Finance committee controlled

Add JSON types spec

Describe the enhancement

Now that #89 has been merged we should add the JSON / JS types to the repo and maintain them

Add pallet-scheduler when released

Describe the enhancement
Parity added a new pallet to schedule transactions, let's support it when it hits crates.io: pallet-scheduler.

Upgrade to alpha.5

Describe the enhancement
The last published version of substrate is 2.0.0-alpha.5, we should upgrade our node and runtime to keep up to date. Additionally this may include fixes useful for #28.

Allocations v2

Describe the enhancement
#44 removed the obsolete allocations module. This issue covers the development of a new updated version used to allocate Proof Of Connectivity rewards from the chain itself, instead of having a central authority "minting" coins.

(Optional) Suggest a solution
We may want to look at offchain workers in order to make that more decentralized and efficient.

Nodle Arcadia finalization stalling at 140798

Describe the bug
Finalization is stalling on Nodle Arcadia network at block 140798.
This could be related to Grandpa finality or changes to the validator set.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Telemetry: https://telemetry.polkadot.io/#list/Arcadia%20Nodle%20Network'
  2. Add column 'Finalized Block'
  3. See error

image

Expected behavior
The finalized block should be only a limited number of blocks behind chaintip under normal network conditions.

Current behavior
Finalization is stalled at 3 April 2018 at block 140798
Polkascan: https://polkascan.io/pre/nodle-arcadia/block/140798

System (please complete the following information):

  • N/A this is related to the blockchain network itself.

Upgrade to alpha.6

Describe the enhancement
alpha.6 was just released! Let's consider a network wide upgrade.

This should contain the fix for #40.

Fix warnings in pallet-emergency-shutdown

Describe the enhancement

Seems like we have some warnings there, let's keep things pretty and get rid of them.

warning: unused import: `account`
  --> pallets/emergency-shutdown/src/benchmarking.rs:25:26
   |
25 | use frame_benchmarking::{account, benchmarks};
   |                          ^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: unused import: `frame_system::RawOrigin`
  --> pallets/emergency-shutdown/src/benchmarking.rs:26:5
   |
26 | use frame_system::RawOrigin;
   |     ^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `Saturating`
  --> pallets/emergency-shutdown/src/benchmarking.rs:27:40
   |
27 | use sp_runtime::traits::{Dispatchable, Saturating};
   |                                        ^^^^^^^^^^

   Compiling pallet-collective v2.0.0-alpha.6
warning: constant item is never used: `SEED`
  --> pallets/emergency-shutdown/src/benchmarking.rs:29:1
   |
29 | const SEED: u32 = 0;
   | ^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(dead_code)]` on by default

   Compiling pallet-identity v2.0.0-alpha.6
   Compiling pallet-vesting v2.0.0-alpha.6
   Compiling pallet-utility v2.0.0-alpha.6
warning: unused import: `account`
  --> pallets/emergency-shutdown/src/benchmarking.rs:25:26
   |
25 | use frame_benchmarking::{account, benchmarks};
   |                          ^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: unused import: `frame_system::RawOrigin`
  --> pallets/emergency-shutdown/src/benchmarking.rs:26:5
   |
26 | use frame_system::RawOrigin;
   |     ^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `Saturating`
  --> pallets/emergency-shutdown/src/benchmarking.rs:27:40
   |
27 | use sp_runtime::traits::{Dispatchable, Saturating};
   |                                        ^^^^^^^^^^

   Compiling pallet-session v2.0.0-alpha.6
warning: constant item is never used: `SEED`
  --> pallets/emergency-shutdown/src/benchmarking.rs:29:1
   |
29 | const SEED: u32 = 0;
   | ^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(dead_code)]` on by default

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.