diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index b70651f488e..ac5656a8a2a 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -125,6 +125,7 @@ jobs: uses: actions/setup-node@v2 with: node-version: 14.x + - name: Cargo fmt run: | cargo +nightly fmt --all -- --check @@ -160,9 +161,18 @@ jobs: ./node_modules/.bin/remark -f $file || total_exit_code=$? done << (find . -name "*.md" -not -path "*/node_modules/*" -not -path "./.github/*") exit $total_exit_code + - name: Cargo clippy run: | - SKIP_WASM_BUILD=1 env -u RUSTFLAGS cargo +nightly clippy --all-targets + SKIP_WASM_BUILD=1 env -u RUSTFLAGS cargo +nightly clippy --all-targets + + - name: Cargo Single Depedency + # description: Speed up builds and reduced security check surface + run: | + cargo install -f cargo-deny + # start from minimal dependency crate + cargo deny --manifest-path ./frame/composable-support/Cargo.toml check Ban + - name: Cargo udeps env: UDEPS_VERSION: v0.1.24 @@ -174,4 +184,3 @@ jobs: cargo udeps --version SKIP_WASM_BUILD=1 cargo udeps --workspace --all-features continue-on-error: true # Often this turns gives false positives, due to the different ways that Substrate uses features. - diff --git a/deny.toml b/deny.toml new file mode 100644 index 00000000000..02e7f9a52c0 --- /dev/null +++ b/deny.toml @@ -0,0 +1,220 @@ +# generated with `cargo deny init` +# it is like authoritarian version of crev or like +# so for now used only feature to deny several deps of same crate + +# This template contains all of the possible sections and their default values + +# Note that all fields that take a lint level have these possible values: +# * deny - An error will be produced and the check will fail +# * warn - A warning will be produced, but the check will not fail +# * allow - No warning or error will be produced, though in some cases a note +# will be + +# The values provided in this template are the default values that will be used +# when any section or field is not specified in your own configuration + +# If 1 or more target triples (and optionally, target_features) are specified, +# only the specified targets will be checked when running `cargo deny check`. +# This means, if a particular package is only ever used as a target specific +# dependency, such as, for example, the `nix` crate only being used via the +# `target_family = "unix"` configuration, that only having windows targets in +# this list would mean the nix crate, as well as any of its exclusive +# dependencies not shared by any other crates, would be ignored, as the target +# list here is effectively saying which targets you are building for. +targets = [ + # The triple can be any string, but only the target triples built in to + # rustc (as of 1.40) can be checked against actual config expressions + #{ triple = "x86_64-unknown-linux-musl" }, + # You can also specify which target_features you promise are enabled for a + # particular target. target_features are currently not validated against + # the actual valid features supported by the target architecture. + #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, +] + +# This section is considered when running `cargo deny check advisories` +# More documentation for the advisories section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html +[advisories] +# The path where the advisory database is cloned/fetched into +db-path = "~/.cargo/advisory-db" +# The url(s) of the advisory databases to use +db-urls = ["https://github.com/rustsec/advisory-db"] +# The lint level for security vulnerabilities +vulnerability = "deny" +# The lint level for unmaintained crates +unmaintained = "warn" +# The lint level for crates that have been yanked from their source registry +yanked = "warn" +# The lint level for crates with security notices. Note that as of +# 2019-12-17 there are no security notice advisories in +# https://github.com/rustsec/advisory-db +notice = "warn" +# A list of advisory IDs to ignore. Note that ignored advisories will still +# output a note when they are encountered. +ignore = [ + #"RUSTSEC-0000-0000", +] +# Threshold for security vulnerabilities, any vulnerability with a CVSS score +# lower than the range specified will be ignored. Note that ignored advisories +# will still output a note when they are encountered. +# * None - CVSS Score 0.0 +# * Low - CVSS Score 0.1 - 3.9 +# * Medium - CVSS Score 4.0 - 6.9 +# * High - CVSS Score 7.0 - 8.9 +# * Critical - CVSS Score 9.0 - 10.0 +#severity-threshold = + +# This section is considered when running `cargo deny check licenses` +# More documentation for the licenses section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html +[licenses] +# The lint level for crates which do not have a detectable license +unlicensed = "deny" +# List of explicitly allowed licenses +# See https://spdx.org/licenses/ for list of possible licenses +# [possible values: any SPDX 3.11 short identifier (+ optional exception)]. +allow = [ + #"MIT", + #"Apache-2.0", + #"Apache-2.0 WITH LLVM-exception", +] +# List of explicitly disallowed licenses +# See https://spdx.org/licenses/ for list of possible licenses +# [possible values: any SPDX 3.11 short identifier (+ optional exception)]. +deny = [ + #"Nokia", +] +# Lint level for licenses considered copyleft +copyleft = "warn" +# Blanket approval or denial for OSI-approved or FSF Free/Libre licenses +# * both - The license will be approved if it is both OSI-approved *AND* FSF +# * either - The license will be approved if it is either OSI-approved *OR* FSF +# * osi-only - The license will be approved if is OSI-approved *AND NOT* FSF +# * fsf-only - The license will be approved if is FSF *AND NOT* OSI-approved +# * neither - This predicate is ignored and the default lint level is used +allow-osi-fsf-free = "neither" +# Lint level used when no other predicates are matched +# 1. License isn't in the allow or deny lists +# 2. License isn't copyleft +# 3. License isn't OSI/FSF, or allow-osi-fsf-free = "neither" +default = "deny" +# The confidence threshold for detecting a license from license text. +# The higher the value, the more closely the license text must be to the +# canonical license text of a valid SPDX license file. +# [possible values: any between 0.0 and 1.0]. +confidence-threshold = 0.8 +# Allow 1 or more licenses on a per-crate basis, so that particular licenses +# aren't accepted for every possible crate as with the normal allow list +exceptions = [ + # Each entry is the crate and version constraint, and its specific allow + # list + #{ allow = ["Zlib"], name = "adler32", version = "*" }, +] + +# Some crates don't have (easily) machine readable licensing information, +# adding a clarification entry for it allows you to manually specify the +# licensing information +#[[licenses.clarify]] +# The name of the crate the clarification applies to +#name = "ring" +# The optional version constraint for the crate +#version = "*" +# The SPDX expression for the license requirements of the crate +#expression = "MIT AND ISC AND OpenSSL" +# One or more files in the crate's source used as the "source of truth" for +# the license expression. If the contents match, the clarification will be used +# when running the license check, otherwise the clarification will be ignored +# and the crate will be checked normally, which may produce warnings or errors +# depending on the rest of your configuration +#license-files = [ + # Each entry is a crate relative path, and the (opaque) hash of its contents + #{ path = "LICENSE", hash = 0xbd0eed23 } +#] + +[licenses.private] +# If true, ignores workspace crates that aren't published, or are only +# published to private registries. +# To see how to mark a crate as unpublished (to the official registry), +# visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field. +ignore = false +# One or more private registries that you might publish crates to, if a crate +# is only published to private registries, and ignore is true, the crate will +# not have its license(s) checked +registries = [ + #"https://sekretz.com/registry +] + +# This section is considered when running `cargo deny check bans`. +# More documentation about the 'bans' section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html +[bans] +# Lint level for when multiple versions of the same crate are detected +multiple-versions = "warn" +# Lint level for when a crate version requirement is `*` +# * is for git rev too +wildcards = "allow" +# The graph highlighting used when creating dotgraphs for crates +# with multiple versions +# * lowest-version - The path to the lowest versioned duplicate is highlighted +# * simplest-path - The path to the version with the fewest edges is highlighted +# * all - Both lowest-version and simplest-path are used +highlight = "lowest-version" +# List of crates that are allowed. Use with care! +allow = [ + #{ name = "ansi_term", version = "=0.11.0" }, +] +# List of crates to deny +deny = [ + # Each entry the name of a crate and a version range. If version is + # not specified, all versions will be matched. + #{ name = "ansi_term", version = "=0.11.0" }, + # + # Wrapper crates can optionally be specified to allow the crate when it + # is a direct dependency of the otherwise banned crate + #{ name = "ansi_term", version = "=0.11.0", wrappers = [] }, +] +# Certain crates/versions that will be skipped when doing duplicate detection. +skip = [ + # unfortunately substrate itself depends on several versions, to allow for it + { name = "wasi", version = "=0.10.0+wasi-snapshot-preview1" }, + { name = "smallvec", version = "=0.6.14" }, + { name = "sha2", version = "=0.9.9" }, + { name = "semver", version = "=1.0.4" }, + { name = "rustc_version", version = "=0.4.0" }, + { name = "redox_syscall", version = "=0.2.10" }, + { name = "pbkdf2", version = "=0.8.0" }, + { name = "rand_xorshift", version = "=0.3.0" }, + { name = "rand_pcg", version = "=0.2.1" }, + { name = "opaque-debug", version = "=0.3.0" }, +] +# Similarly to `skip` allows you to skip certain crates during duplicate +# detection. Unlike skip, it also includes the entire tree of transitive +# dependencies starting at the specified crate, up to a certain depth, which is +# by default infinite +skip-tree = [ + #{ name = "ansi_term", version = "=0.11.0", depth = 20 }, +] + +# This section is considered when running `cargo deny check sources`. +# More documentation about the 'sources' section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html +[sources] +# Lint level for what to happen when a crate from a crate registry that is not +# in the allow list is encountered +unknown-registry = "warn" +# Lint level for what to happen when a crate from a git repository that is not +# in the allow list is encountered +unknown-git = "warn" +# List of URLs for allowed crate registries. Defaults to the crates.io index +# if not specified. If it is specified but empty, no registries are allowed. +allow-registry = ["https://github.com/rust-lang/crates.io-index"] +# List of URLs for allowed Git repositories +allow-git = [] + +[sources.allow-org] +# 1 or more github.com organizations to allow git sources for +github = [""] +# 1 or more gitlab.com organizations to allow git sources for +gitlab = [""] +# 1 or more bitbucket.org organizations to allow git sources for +bitbucket = [""] diff --git a/frame/bonded-finance/Cargo.toml b/frame/bonded-finance/Cargo.toml index a103c6ab1d1..65eaa1b9943 100644 --- a/frame/bonded-finance/Cargo.toml +++ b/frame/bonded-finance/Cargo.toml @@ -33,7 +33,7 @@ orml-traits = { git = "https://github.com/open-web3-stack/open-runtime-module-li composable-traits = { path = "../../frame/composable-traits" } proptest = "1.0" proptest-derive = "0.3" -serde = { version = "1.0.124" } +serde = { version = "1.0.130" } orml-tokens = { git = "https://github.com/open-web3-stack/open-runtime-module-library", rev = "17a791edf431d7d7aee1ea3dfaeeb7bc21944301" } pallet-vesting = { path = "../../frame/vesting" } composable-tests-helpers = { path = "../composable-tests-helpers", default-features = false } diff --git a/frame/call-filter/Cargo.toml b/frame/call-filter/Cargo.toml index eb73435e785..e05ce9d1678 100644 --- a/frame/call-filter/Cargo.toml +++ b/frame/call-filter/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] -serde = { version = "1.0.124", optional = true } +serde = { version = "1.0.130", optional = true } codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } support = { package = "frame-support", git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } diff --git a/frame/crowdloan-rewards/Cargo.toml b/frame/crowdloan-rewards/Cargo.toml index c9ac573167e..e699c431bd1 100644 --- a/frame/crowdloan-rewards/Cargo.toml +++ b/frame/crowdloan-rewards/Cargo.toml @@ -16,7 +16,7 @@ package = "parity-scale-codec" version = "2.0.0" [dev-dependencies] -serde = "1.0.119" +serde = "1.0.130" sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } libsecp256k1 = { version = "0.7.0", default-features = false, features = [ "hmac", diff --git a/frame/democracy/Cargo.toml b/frame/democracy/Cargo.toml index 38e0ec20707..0b16a8f4f9a 100644 --- a/frame/democracy/Cargo.toml +++ b/frame/democracy/Cargo.toml @@ -13,7 +13,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] composable-traits = { default-features = false, path = "../composable-traits" } -serde = { version = "1.0.126", optional = true, features = ["derive"] } +serde = { version = "1.0.130", optional = true, features = ["derive"] } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive" ] } scale-info = { version = "1.0", default-features = false, features = ["derive"] } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } diff --git a/frame/lending/Cargo.toml b/frame/lending/Cargo.toml index eb469396769..42cddbe2b2f 100644 --- a/frame/lending/Cargo.toml +++ b/frame/lending/Cargo.toml @@ -38,7 +38,7 @@ log = { version = "0.4.14", default-features = false } num-traits = { version = "0.2.14", default-features = false } plotters = { version = "0.3.1", optional = true } scale-info = { version = "1.0", default-features = false, features = ["derive"] } -serde = { version = '1.0.119' } +serde = { version = '1.0.130' } [dev-dependencies] hex-literal = "0.3.3" diff --git a/frame/lending/src/benchmarking.rs b/frame/lending/src/benchmarking.rs index af03580eae6..838dd5cb3b9 100644 --- a/frame/lending/src/benchmarking.rs +++ b/frame/lending/src/benchmarking.rs @@ -112,8 +112,8 @@ benchmarks! { withdraw_collateral { let caller: T::AccountId = whitelisted_caller(); - let market: MarketIndex = MarketIndex::new(1u32); - let amount: T::Balance = 1_000_000u64.into(); + let market: MarketIndex = MarketIndex::new(1_u32); + let amount: T::Balance = 1_000_000_u64.into(); set_prices::(); let (market, _vault_id) = create_market::(caller.clone(), BTC, USDT); ::Currency::mint_into(USDT.into(), &caller, amount).unwrap(); @@ -208,12 +208,12 @@ benchmarks! { handle_withdrawable { let caller: T::AccountId = whitelisted_caller(); - let (borrow_asset_id, collateral_asset_id) = (1u32, 2u32); + let (borrow_asset_id, collateral_asset_id) = (1_u32, 2u32); set_price::(borrow_asset_id.into(), u64::from(borrow_asset_id) * 10); set_price::(collateral_asset_id.into(), u64::from(collateral_asset_id) * 10); let (market_id, vault_id) = create_market::(caller.clone(), borrow_asset_id.into(), collateral_asset_id.into()); let market_config = Markets::::try_get(market_id).unwrap(); - let balance = 0u32.into(); + let balance = 0_u32.into(); }: { Lending::::handle_withdrawable(&market_config, &caller, balance).unwrap() } diff --git a/frame/lending/src/lib.rs b/frame/lending/src/lib.rs index f15c7b5d6b6..5d8efda1f23 100644 --- a/frame/lending/src/lib.rs +++ b/frame/lending/src/lib.rs @@ -1,7 +1,7 @@ //! Lending pallet #![cfg_attr( not(any(test, feature = "runtime-benchmarks")), - warn( + deny( clippy::disallowed_method, clippy::disallowed_type, clippy::indexing_slicing, @@ -12,7 +12,9 @@ )] // allow in tests #![warn(clippy::unseparated_literal_suffix)] #![cfg_attr(not(feature = "std"), no_std)] -#![warn( +#![deny( + unused_imports, + clippy::useless_conversion, bad_style, bare_trait_objects, const_err, diff --git a/frame/lending/src/mocks/currency.rs b/frame/lending/src/mocks/currency.rs index 0db1e32f3cd..3af93fb94f7 100644 --- a/frame/lending/src/mocks/currency.rs +++ b/frame/lending/src/mocks/currency.rs @@ -1,28 +1,6 @@ -use crate::{self as pallet_lending, *}; -use composable_traits::{ - currency::DynamicCurrencyId, - defi::DeFiComposableConfig, - governance::{GovernanceRegistry, SignedRawOrigin}, -}; -use frame_support::{ - ord_parameter_types, parameter_types, - traits::{Everything, OnFinalize, OnInitialize}, - PalletId, -}; -use frame_system::EnsureSignedBy; -use hex_literal::hex; -use once_cell::sync::Lazy; -use orml_traits::{parameter_type_with_key, GetByKey}; +use composable_traits::currency::DynamicCurrencyId; use scale_info::TypeInfo; -use sp_arithmetic::traits::Zero; -use sp_core::{sr25519::Signature, H256}; -use sp_runtime::{ - testing::{Header, TestXt}, - traits::{ - BlakeTwo256, ConvertInto, Extrinsic as ExtrinsicT, IdentifyAccount, IdentityLookup, Verify, - }, - ArithmeticError, DispatchError, -}; +use sp_runtime::{ArithmeticError, DispatchError}; #[derive( PartialOrd, diff --git a/frame/lending/src/mocks/mod.rs b/frame/lending/src/mocks/mod.rs index 6228295fa8a..28a85b8e27a 100644 --- a/frame/lending/src/mocks/mod.rs +++ b/frame/lending/src/mocks/mod.rs @@ -1,7 +1,6 @@ use self::currency::CurrencyId; use crate::{self as pallet_lending, *}; use composable_traits::{ - currency::DynamicCurrencyId, defi::DeFiComposableConfig, governance::{GovernanceRegistry, SignedRawOrigin}, }; @@ -15,7 +14,6 @@ use frame_system::EnsureSignedBy; use hex_literal::hex; use once_cell::sync::Lazy; use orml_traits::{parameter_type_with_key, GetByKey}; -use scale_info::TypeInfo; use smallvec::smallvec; use sp_arithmetic::traits::Zero; use sp_core::{sr25519::Signature, H256}; @@ -24,7 +22,7 @@ use sp_runtime::{ traits::{ BlakeTwo256, ConvertInto, Extrinsic as ExtrinsicT, IdentifyAccount, IdentityLookup, Verify, }, - ArithmeticError, DispatchError, Perbill, + Perbill, }; pub mod currency; diff --git a/frame/lending/src/mocks/oracle.rs b/frame/lending/src/mocks/oracle.rs index 7279858c192..befe3a426db 100644 --- a/frame/lending/src/mocks/oracle.rs +++ b/frame/lending/src/mocks/oracle.rs @@ -112,8 +112,8 @@ pub mod pallet { fn get_ratio( pair: composable_traits::defi::CurrencyPair, ) -> Result { - let base: u128 = Self::get_price(pair.base, (10_u32 ^ 12).into())?.price.into(); - let quote: u128 = Self::get_price(pair.quote, (10_u32 ^ 12).into())?.price.into(); + let base: u128 = Self::get_price(pair.base, (10_u32 ^ 12).into())?.price; + let quote: u128 = Self::get_price(pair.quote, (10_u32 ^ 12).into())?.price; let base = FixedU128::saturating_from_integer(base); let quote = FixedU128::saturating_from_integer(quote); Ok(base.safe_div("e)?) @@ -124,7 +124,7 @@ pub mod pallet { amount: Self::Balance, ) -> Result { let price = Self::get_price(asset_id, 10 ^ 12)?; - let inversed = amount / price.price / 10 ^ 12; + let inversed = (amount / price.price / 10) ^ 12; Ok(inversed) } } diff --git a/frame/oracle/Cargo.toml b/frame/oracle/Cargo.toml index 778724b1c96..234a84841e5 100644 --- a/frame/oracle/Cargo.toml +++ b/frame/oracle/Cargo.toml @@ -37,7 +37,7 @@ scale-info = { version = "1.0", default-features = false, features = ["derive"] [dev-dependencies] pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } parking_lot = "0.11.2" -serde = "1.0.119" +serde = "1.0.130" sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } [features] diff --git a/frame/ping/Cargo.toml b/frame/ping/Cargo.toml index 94028b7baf2..f51a97946bd 100644 --- a/frame/ping/Cargo.toml +++ b/frame/ping/Cargo.toml @@ -9,7 +9,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "2.3.0", default-features = false, features = ["derive"] } scale-info = { version = "1.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.101", optional = true, features = ["derive"] } +serde = { version = "1.0.130", optional = true, features = ["derive"] } sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-v0.9.13" } sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-v0.9.13" } diff --git a/frame/vault/Cargo.toml b/frame/vault/Cargo.toml index 69889b22649..8b896444234 100644 --- a/frame/vault/Cargo.toml +++ b/frame/vault/Cargo.toml @@ -36,7 +36,7 @@ scale-info = { version = "1.0", default-features = false, features = ["derive"] [dev-dependencies] once_cell = "1.8.0" proptest = "0.9.6" -serde = "1.0.119" +serde = "1.0.130" orml-tokens = { git = "https://github.com/open-web3-stack/open-runtime-module-library", rev = "17a791edf431d7d7aee1ea3dfaeeb7bc21944301" } orml-traits = { git = "https://github.com/open-web3-stack/open-runtime-module-library", rev = "17a791edf431d7d7aee1ea3dfaeeb7bc21944301", default-features = false } pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13" } diff --git a/frame/vesting/Cargo.toml b/frame/vesting/Cargo.toml index 19487c20e18..cf38a11af2e 100644 --- a/frame/vesting/Cargo.toml +++ b/frame/vesting/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" [dependencies] scale-info = { version = "1.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.124", optional = true } +serde = { version = "1.0.130", optional = true } codec = { package = "parity-scale-codec", version = "2.3.1", default-features = false, features = ["derive"] } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index 076c9751a3d..1fb9b4c2aeb 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -105,7 +105,7 @@ xcm-emulator = { git = "https://github.com/dzmitry-lahoda-forks/xcm-simulator", kusama-runtime = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.13", default-features = false } polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.13", default-features = false } polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.13", default-features = false } -picasso-runtime = { package = "dali-runtime", path = "../runtime/dali", default-features = false } +dali-runtime = { package = "dali-runtime", path = "../runtime/dali", default-features = false } [dev-dependencies] env_logger = "0.9.0" @@ -145,7 +145,7 @@ std = [ "democracy/std", "scheduler/std", "common/std", - "picasso-runtime/std", + "dali-runtime/std", "primitives/std", "collective/std", "transaction-payment/std", @@ -163,11 +163,11 @@ std = [ "xcm-executor/std", "aura/std", "sp-consensus-aura/std", - "scale-info/std", - "kusama-runtime/std", - "polkadot-core-primitives/std", - "polkadot-primitives/std", - "polkadot-runtime-parachains/std", + "scale-info/std", + "kusama-runtime/std", + "polkadot-core-primitives/std", + "polkadot-primitives/std", + "polkadot-runtime-parachains/std", ] runtime-benchmarks = [ @@ -193,9 +193,9 @@ runtime-benchmarks = [ "democracy/runtime-benchmarks", "utility/runtime-benchmarks", "kusama-runtime/runtime-benchmarks", - "picasso-runtime/runtime-benchmarks", - "polkadot-primitives/runtime-benchmarks", - "polkadot-runtime-parachains/runtime-benchmarks", + "dali-runtime/runtime-benchmarks", + "polkadot-primitives/runtime-benchmarks", + "polkadot-runtime-parachains/runtime-benchmarks", ] develop = [ diff --git a/integration-tests/README.md b/integration-tests/README.md index 678d7100926..c9a7bc53d0d 100644 --- a/integration-tests/README.md +++ b/integration-tests/README.md @@ -107,4 +107,3 @@ RUST_LOG=trace,parity-db=error,trie=error,runtime=trace,substrate-relay=trace,br ### Issues We use ORML + Cumulus, which does not support out of box access to all instruction. - diff --git a/integration-tests/src/cross_chain_transfer.rs b/integration-tests/src/cross_chain_transfer.rs index 89be0f0fd7d..663127c7683 100644 --- a/integration-tests/src/cross_chain_transfer.rs +++ b/integration-tests/src/cross_chain_transfer.rs @@ -3,8 +3,8 @@ use codec::Encode; use common::AccountId; use composable_traits::assets::{RemoteAssetRegistry, XcmAssetLocation}; use cumulus_primitives_core::ParaId; +use dali_runtime as picasso_runtime; use orml_traits::currency::MultiCurrency; -use picasso_runtime as dali_runtime; use primitives::currency::*; use sp_runtime::traits::AccountIdConversion; use support::assert_ok; @@ -388,7 +388,7 @@ fn subscribe_version_notify_works() { Picasso::execute_with(|| { let r = pallet_xcm::Pallet::::force_subscribe_version_notify( picasso_runtime::Origin::root(), - Box::new((Parent, Parachain(2001)).into()), + Box::new((Parent, Parachain(PICASSO_PARA_ID)).into()), ); assert_ok!(r); }); diff --git a/integration-tests/src/kusama_test_net.rs b/integration-tests/src/kusama_test_net.rs index 5f33e53b80b..4732874547c 100644 --- a/integration-tests/src/kusama_test_net.rs +++ b/integration-tests/src/kusama_test_net.rs @@ -1,6 +1,7 @@ //! Setup of Picasso running as if it is on Kusama relay use common::AccountId; use cumulus_primitives_core::ParaId; +use dali_runtime as picasso_runtime; use polkadot_primitives::v1::{BlockNumber, MAX_CODE_SIZE, MAX_POV_SIZE}; use polkadot_runtime_parachains::configuration::HostConfiguration; use primitives::currency::CurrencyId; @@ -25,8 +26,8 @@ decl_test_parachain! { // and then decide how to imitate hydra decl_test_parachain! { pub struct Dali { - Runtime = picasso_runtime::Runtime, - Origin = picasso_runtime::Origin, + Runtime = dali_runtime::Runtime, + Origin = dali_runtime::Origin, new_ext = picasso_ext(DALI_PARA_ID), } } @@ -127,7 +128,7 @@ pub const ALICE_PARACHAIN_KSM: u128 = 13 * 1_000_000_000_000; pub fn picasso_ext(parachain_id: u32) -> sp_io::TestExternalities { let parachain_id = parachain_id.into(); - use picasso_runtime::{Runtime, System}; + use dali_runtime::{Runtime, System}; let mut storage = frame_system::GenesisConfig::default().build_storage::().unwrap(); balances::GenesisConfig:: { balances: vec![(AccountId::from(ALICE), ALICE_PARACHAIN_BALANCE)], diff --git a/integration-tests/src/runtime_tests.rs b/integration-tests/src/runtime_tests.rs index 23adc57842b..4815c69e730 100644 --- a/integration-tests/src/runtime_tests.rs +++ b/integration-tests/src/runtime_tests.rs @@ -13,7 +13,7 @@ fn channel_to_relay() { env_logger_init(); KusamaNetwork::reset(); Picasso::execute_with(|| { - let status = ::get_channel_status( + let status = ::get_channel_status( ParaId::new(2090), ); assert!(matches!(status, ChannelStatus::Closed)); @@ -26,7 +26,7 @@ fn channel_to_self() { env_logger_init(); KusamaNetwork::reset(); Picasso::execute_with(|| { - let status = ::get_channel_status( + let status = ::get_channel_status( ParaId::new(PICASSO_PARA_ID), ); assert!(matches!(status, ChannelStatus::Ready(_, _))); @@ -39,7 +39,7 @@ fn channel_to_parachain() { env_logger_init(); KusamaNetwork::reset(); Picasso::execute_with(|| { - let status = ::get_channel_status( + let status = ::get_channel_status( ParaId::new(DALI_PARA_ID), ); diff --git a/integration-tests/src/xcm_tests.rs b/integration-tests/src/xcm_tests.rs index e6eddbbf9c6..58b8fc7cfb8 100644 --- a/integration-tests/src/xcm_tests.rs +++ b/integration-tests/src/xcm_tests.rs @@ -10,8 +10,8 @@ use codec::Encode; use common::AccountId; use composable_traits::assets::{RemoteAssetRegistry, XcmAssetLocation}; use cumulus_primitives_core::ParaId; +use dali_runtime as picasso_runtime; use kusama_runtime::*; -use picasso_runtime as dali_runtime; use primitives::currency::CurrencyId; use sp_runtime::traits::AccountIdConversion; use support::assert_ok; diff --git a/node/Cargo.toml b/node/Cargo.toml index 769aa9a1546..9b750730a34 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -13,7 +13,7 @@ targets = ["x86_64-unknown-linux-gnu"] codec = { package = "parity-scale-codec", version = "2.0.0" } jsonrpc-core = "18" log = "0.4.14" -serde = { version = "1.0.119", features = ["derive"] } +serde = { version = "1.0.130", features = ["derive"] } structopt = "0.3.8" # Local Dependencies @@ -100,4 +100,3 @@ std = ["picasso-runtime/std", "composable-runtime/std", "dali-runtime/std"] [package.metadata.cargo-udeps.ignore] normal = ["pallet-bonded-finance"] - diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 54db6067563..914649e373e 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -33,7 +33,7 @@ primitives = { path = "../primitives", default-features = false } scale-info = { version = "1.0", default-features = false, features = ["derive"] } [dev-dependencies] -serde = { version = "1.0.119" } +serde = { version = "1.0.130" } authorship = { package = "pallet-authorship", git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } orml-traits = { git = "https://github.com/open-web3-stack/open-runtime-module-library", rev = "17a791edf431d7d7aee1ea3dfaeeb7bc21944301", default-features = false } orml-tokens = { git = "https://github.com/open-web3-stack/open-runtime-module-library", rev = "17a791edf431d7d7aee1ea3dfaeeb7bc21944301" } diff --git a/runtime/dali/src/lib.rs b/runtime/dali/src/lib.rs index f575b93bcef..364857c1f4d 100644 --- a/runtime/dali/src/lib.rs +++ b/runtime/dali/src/lib.rs @@ -101,7 +101,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // `spec_version`, and `authoring_version` are the same between Wasm and native. // This value is set to 100 to notify Polkadot-JS App (https://polkadot.js.org/apps) to use // the compatible custom types. - spec_version: 2003, + spec_version: 2004, impl_version: 2, apis: RUNTIME_API_VERSIONS, transaction_version: 1, diff --git a/runtime/dali/src/xcmp.rs b/runtime/dali/src/xcmp.rs index e2297a1564b..6d8f0540def 100644 --- a/runtime/dali/src/xcmp.rs +++ b/runtime/dali/src/xcmp.rs @@ -46,7 +46,7 @@ use xcm_executor::{ }; parameter_types! { - // pub const RelayLocation: MultiLocation = MultiLocation::X1(Junction::Parent); + pub KsmLocation: MultiLocation = MultiLocation::parent(); pub const RelayNetwork: NetworkId = NetworkId::Kusama; pub RelayOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into(); pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into(); @@ -60,7 +60,25 @@ match_type! { }; } +/// this is debug struct implementing as many XCMP interfaces as possible +/// it just dumps content, no modification. +/// returns default expected +pub struct XcmpDebug; + +impl xcm_executor::traits::ShouldExecute for XcmpDebug { + fn should_execute( + origin: &MultiLocation, + message: &mut Xcm, + max_weight: Weight, + weight_credit: &mut Weight, + ) -> Result<(), ()> { + log::trace!("{:?} {:?} {:?} {:?}", origin, message, max_weight, weight_credit); + Err(()) + } +} + pub type Barrier = ( + XcmpDebug, TakeWeightCredit, AllowTopLevelPaidExecutionFrom, xcm_builder::AllowUnpaidExecutionFrom, @@ -132,6 +150,7 @@ parameter_types! { pub const MaxInstructions: u32 = 10_000; } +// TODO: as of now we allow any, but need to decide on payments as in Acala pub struct TradePassthrough(); /// any payment to pass @@ -188,9 +207,12 @@ impl orml_unknown_tokens::Config for Runtime { type Event = Event; } +/// is collaed to convert some account id to account id on other network +/// as of now it is same as in Acala/Hydra pub struct AccountIdToMultiLocation; impl Convert for AccountIdToMultiLocation { fn convert(account: AccountId) -> MultiLocation { + // considers any other network using globally unique ids X1(AccountId32 { network: NetworkId::Any, id: account.into() }).into() } } @@ -204,7 +226,7 @@ impl sp_runtime::traits::Convert> for Currency fn convert(id: CurrencyId) -> Option { match id { CurrencyId::INVALID => { - log::trace!( + log::warn!( "mapping for {:?} on {:?} parachain not found", id, ParachainInfo::parachain_id() @@ -221,7 +243,7 @@ impl sp_runtime::traits::Convert> for Currency { Some(location) } else { - log::trace!( + log::warn!( "mapping for {:?} on {:?} parachain not found", id, ParachainInfo::parachain_id() diff --git a/runtime/picasso/src/lib.rs b/runtime/picasso/src/lib.rs index d4e742a0ced..3efaa85deea 100644 --- a/runtime/picasso/src/lib.rs +++ b/runtime/picasso/src/lib.rs @@ -99,7 +99,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, // `spec_version`, and `authoring_version` are the same between Wasm and native. - spec_version: 2001, + spec_version: 2004, impl_version: 2, apis: RUNTIME_API_VERSIONS, transaction_version: 1, diff --git a/runtime/primitives/Cargo.toml b/runtime/primitives/Cargo.toml index ebf9ed231c2..6e44680ec44 100644 --- a/runtime/primitives/Cargo.toml +++ b/runtime/primitives/Cargo.toml @@ -10,7 +10,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } -serde = { version = '1.0.119', features = ['derive'], optional = true } +serde = { version = '1.0.130', features = ['derive'], optional = true } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.13", default-features = false } composable-traits = { path = "../../frame/composable-traits", default-features = false } scale-info = { version = "1.0", default-features = false, features = ["derive"] }