pallet-mandate 2.0.8

A Substrate pallet to help over modules dispatch root calls
Documentation
# Mandate Pallet

A Substrate pallet to allow the use of `sudo` functions from a runtime module like the `collective`.

![Screen Shot 2020-02-13 at 12 30 21 PM](https://user-images.githubusercontent.com/10683430/74475712-c9557480-4e5c-11ea-91e1-626412815cd4.png)


# Usage

## Add the depedency

Edit `runtime/Cargo.toml` and add the following:
```toml
[dependencies.mandate]
default-features = false
version = '2.0.0'
package = "pallet-mandate"
```

Then add the `mandate/std` to the `[features]` section in the `std` array, it should
look like this:
```toml
[dependencies.mandate]
default-features = false
version = '2.0.0'
package = "pallet-mandate"

[features]
default = ['std']
std = [
    # Your substrate modules /std calls here
    # ...

    'mandate/std',
]
```


## Add the module to your runtime

### Trait implementation

You can use the `ExternalOrigin` type to specify who can dispatch calls to the module.
For instance you can use with the `collective`:
```rust
impl mandate::Trait for Runtime {
    type Proposal = Call;

    // A majority of the committee can dispatch root calls
    type ExternalOrigin =
        collective::EnsureProportionAtLeast<_1, _2, AccountId, TechnicalCollective>;
}
```


### Adding the module

In the `construct_runtime` macro call just add the `Mandate: mandate::{Module, Call}`, it should
look like this:
```rust
construct_runtime!(
    pub enum Runtime where
        Block = Block,
        NodeBlock = Block,
        UncheckedExtrinsic = UncheckedExtrinsic
    {
    	// Your modules here
    	// ...
        Mandate: mandate::{Module, Call},
    }
);
```