zero-network 0.1.10

Zero network privacy-preserving blockchain
Documentation
# Frequent Errors
The main errors happen during development of runtime pallet are followings.

- `error: duplicate lang item in crate`
- `error: the wasm32-unknown-unknown target is not supported by default, you may need to enable the "js" feature`
- `error[E0603]: module "group" is private`
- `error[E0512]: cannot transmute between types of different sizes, or dependently-sized types`
- `error[E0432]: unresolved import sp_core::to_substrate_wasm_fn_return_value`

Explaining causes and remedies.

## `error: duplicate lang item in crate`
This error happens when we use different version crate but same crate on one crate.
The error says the dependencies duplication so we can query the crate name as following.

```
$ cargo tree -e features -i {crate}
```

If we find the duplication of crate that we use same crate different version multiple times, we should align the version.

## `error: the wasm32-unknown-unknown target is not supported by default, you may need to enable the "js" feature`
This error happens `getrandom` crate dependency on `std`.  
We need to disable `std` feature of `getrandom`.  

Firstly, checking which libraries depend on `getrandom` depending on `std` to execute following command.

```
$ cargo tree -e features
```

`cargo tree` command displays the dependencies tree.  
The libraries with `(*)` doesn't depend on `std` but if there is `getrandom` not marked as `(*)`, it would cause error.

Secondly, independing from `std` library by followings.

- Add `default-features = false` to crate in `Cargo.toml` which is not marked as `(*)`
- Add `#![cfg_attr(not(feature = "std"), no_std)]` if imported crate is made by self.

And run `cargo tree` and check whether `getrandom` is marked as `(*)`

You can also use `cargo nono check` to check dependency on `std`.

```
$ cargo nono check
```

## `error[E0603]: module "group" is private`
This error happens `syn` crate because its interface was change.
We need to indicate exact version of `syn` as using expected behavior.

```
$ cargo update -p syn --precise 1.0.96
```

## `error[E0512]: cannot transmute between types of different sizes, or dependently-sized types`
This error happens on [`runtime-interface`](https://github.com/paritytech/substrate/blob/master/primitives/runtime-interface/src/impls.rs#L44) and both macro available when `#[cfg(all(not(feature = "std"), not(feature = "disable_target_static_assertions")))]` so we need to specify `std` as following.

```toml
[features]
default = ["std"]
std = [
    "crate/std"
]
```

## `error[E0432]: unresolved import sp_core::to_substrate_wasm_fn_return_value`
This error happens the crate which has `sp_api` dependency. And to clarify every crate which imported as `default-features = false` is described as `crate/std` in `[features]`.

```toml
[features]
default = ["std"]
std = [
    "crate/std"
]
```