From 15d448e077f415097b0bbdd86f1b6dc56e7685e1 Mon Sep 17 00:00:00 2001 From: Max Andreev Date: Fri, 20 Jan 2023 08:07:08 +0000 Subject: [PATCH] Merge branch 'develop' into tests/generalization --- --- /dev/null +++ b/.docker/Dockerfile-collators @@ -0,0 +1,74 @@ +ARG POLKADOT_BUILD_BRANCH +FROM uniquenetwork/builder-polkadot:${POLKADOT_BUILD_BRANCH} as polkadot + +# ===== Rust builder ===== +FROM uniquenetwork/services:latest as rust-builder +ARG RUST_TOOLCHAIN= + +ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN +ENV CARGO_HOME="/cargo-home" +ENV PATH="/cargo-home/bin:$PATH" +ENV TZ=UTC + +RUN rustup toolchain uninstall $(rustup toolchain list) && \ + rustup toolchain install $RUST_TOOLCHAIN && \ + rustup default $RUST_TOOLCHAIN && \ + rustup target list --installed && \ + rustup show +RUN rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN + +RUN mkdir /unique_parachain +WORKDIR /unique_parachain + +# ===== BUILD ====== +FROM rust-builder as builder-unique + +ARG PROFILE=release +ARG NETWORK +ARG POLKADOT_LAUNCH_BRANCH +ARG BRANCH + +ENV POLKADOT_LAUNCH_BRANCH $POLKADOT_LAUNCH_BRANCH + +WORKDIR /unique_parachain + +RUN git clone -b $BRANCH https://github.com/UniqueNetwork/unique-chain.git && \ + cd unique-chain && \ + cargo build --features=$NETWORK-runtime --$PROFILE + +# ===== RUN ====== + +FROM ubuntu:20.04 + +RUN apt-get -y update && \ + apt-get -y install curl git && \ + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \ + export NVM_DIR="$HOME/.nvm" && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + nvm install v16.16.0 && \ + nvm use v16.16.0 + +RUN git clone https://github.com/uniquenetwork/polkadot-launch -b ${POLKADOT_LAUNCH_BRANCH} + +RUN export NVM_DIR="$HOME/.nvm" && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + cd /polkadot-launch && \ + npm install --global yarn && \ + yarn install + +COPY --from=builder-unique /unique_parachain/unique-chain/.docker/testnet-config/launch-config.json /polkadot-launch/launch-config.json +COPY --from=builder-unique /unique_parachain/unique-chain/target/release/unique-collator /unique-chain/target/release/ + +COPY --from=polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/ + +EXPOSE 9844 +EXPOSE 9944 +EXPOSE 9933 +EXPOSE 9833 +EXPOSE 40333 +EXPOSE 30333 + +CMD export NVM_DIR="$HOME/.nvm" && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + cd /polkadot-launch && \ + yarn start launch-config.json --- a/.docker/Dockerfile-parachain +++ b/.docker/Dockerfile-parachain @@ -32,7 +32,7 @@ WORKDIR /unique_parachain -RUN git clone $REPO_URL -b $BRANCH . && \ +RUN git clone https://github.com/UniqueNetwork/unique-chain.git -b $BRANCH . && \ cargo build --features=${NETWORK}-runtime --$PROFILE # ===== RUN ====== --- /dev/null +++ b/.docker/docker-compose.tmp-collators.j2 @@ -0,0 +1,25 @@ +version: "3.5" + +services: + parachain-collators: + build: + args: + - "RUST_TOOLCHAIN={{ RUST_TOOLCHAIN }}" + - "POLKADOT_BUILD_BRANCH={{ POLKADOT_BUILD_BRANCH }}" + - "POLKADOT_LAUNCH_BRANCH={{ POLKADOT_LAUNCH_BRANCH }}" + - "NETWORK={{ NETWORK }}" + - "BRANCH={{ BRANCH }}" + context: ../ + dockerfile: .docker/Dockerfile-parachain + image: parachain-collators + container_name: parachain-collators + expose: + - 9944 + - 9933 + ports: + - 127.0.0.1:9944:9944 + - 127.0.0.1:9933:9933 + logging: + options: + max-size: "1m" + max-file: "3" --- a/.docker/testnet-config/launch-config.json +++ b/.docker/testnet-config/launch-config.json @@ -111,6 +111,42 @@ "--unsafe-ws-external", "-lxcm=trace" ] + }, + { + "port": 31202, + "wsPort": 9946, + "rpcPort": 9935, + "name": "charlie", + "flags": [ + "--rpc-cors=all", + "--unsafe-rpc-external", + "--unsafe-ws-external", + "-lxcm=trace" + ] + }, + { + "port": 31203, + "wsPort": 9947, + "rpcPort": 9936, + "name": "dave", + "flags": [ + "--rpc-cors=all", + "--unsafe-rpc-external", + "--unsafe-ws-external", + "-lxcm=trace" + ] + }, + { + "port": 31204, + "wsPort": 9948, + "rpcPort": 9937, + "name": "eve", + "flags": [ + "--rpc-cors=all", + "--unsafe-rpc-external", + "--unsafe-ws-external", + "-lxcm=trace" + ] } ] } --- a/.github/workflows/ci-develop.yml +++ b/.github/workflows/ci-develop.yml @@ -34,6 +34,10 @@ uses: ./.github/workflows/xcm.yml secrets: inherit # pass all secrets from initial workflow to nested + collator-selection: + if: ${{ (github.event.pull_request.draft == false && contains( github.event.pull_request.labels.*.name, 'CI-collator-selection')) }} # Conditional check for draft & labels per job. + uses: ./.github/workflows/collator-selection.yml + forkless: if: ${{ (github.event.pull_request.draft == false && contains( github.event.pull_request.labels.*.name, 'forkless')) }} # Conditional check for draft & labels per job. uses: ./.github/workflows/forkless.yml --- a/.github/workflows/ci-master.yml +++ b/.github/workflows/ci-master.yml @@ -35,6 +35,9 @@ xcm: uses: ./.github/workflows/xcm.yml secrets: inherit # pass all secrets from initial workflow to nested + + collator-selection: + uses: ./.github/workflows/collator-selection.yml # testnet: # uses: ./.github/workflows/testnet-build.yml --- /dev/null +++ b/.github/workflows/collator-selection.yml @@ -0,0 +1,165 @@ +name: collator-selection-test-run + +# Triger: only call from main workflow(re-usable workflows) +on: + workflow_call: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + execution-marix: + name: Prepare execution matrix + + runs-on: self-hosted-ci + outputs: + matrix: ${{ steps.create_matrix.outputs.matrix }} + + steps: + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Create Execution matrix + uses: CertainLach/create-matrix-action@v3 + id: create_matrix + with: + matrix: | + network {opal}, wasm_name {opal}, mainnet_branch {${{ env.OPAL_MAINNET_BRANCH }}}, replica_from_address {${{ env.OPAL_REPLICA_FROM }}}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}} + network {quartz}, wasm_name {quartz}, mainnet_branch {${{ env.QUARTZ_MAINNET_BRANCH }}}, replica_from_address {${{ env.QUARTZ_REPLICA_FROM }}}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}} + network {sapphire}, wasm_name {quartz}, mainnet_branch {${{ env.SAPPHIRE_MAINNET_BRANCH }}}, replica_from_address {${{ env.SAPPHIRE_REPLICA_FROM }}}, relay_branch {${{ env.UNIQUEEAST_MAINNET_BRANCH }}} + + collator-selection: + needs: execution-marix + # The type of runner that the job will run on + runs-on: [self-hosted-ci,large] + timeout-minutes: 1380 + + name: ${{ matrix.network }} + strategy: + matrix: + include: ${{fromJson(needs.execution-marix.outputs.matrix)}} + + continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + steps: + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.tmp-collators.j2 + output_file: .docker/docker-compose.collators.${{ matrix.network }}.yml + variables: | + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} + POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }} + NETWORK=${{ matrix.network }} + BRANCH=${{ github.head_ref }} + + - name: Show build configuration + run: cat .docker/docker-compose.collators.${{ matrix.network }}.yml + + - name: Show launch-config configuration + run: cat launch-config.json + + - name: Build the stack + run: docker-compose -f ".docker/docker-compose.collators.${{ matrix.network }}.yml" up -d --remove-orphans --force-recreate --timeout 300 + + # 🚀 POLKADOT LAUNCH COMPLETE 🚀 + - name: Check if docker logs consist messages related to testing of collator tests + if: success() + run: | + counter=160 + function check_container_status { + docker inspect -f {{.State.Running}} parachain-collators + } + function do_docker_logs { + docker logs --details parachain-collators 2>&1 + } + function is_started { + if [ "$(check_container_status)" == "true" ]; then + echo "Container: collator-${{ matrix.network }}-testnet-local RUNNING"; + echo "Check Docker logs" + DOCKER_LOGS=$(do_docker_logs) + if [[ ${DOCKER_LOGS} = *"POLKADOT LAUNCH COMPLETE"* ]];then + echo "🚀 POLKADOT LAUNCH COMPLETE 🚀" + return 0 + else + echo "Message not found in logs output, repeating..." + return 1 + fi + else + echo "Container collator-${{ matrix.network }}-testnet-local NOT RUNNING" + echo "Halting all future checks" + exit 1 + fi + echo "something goes wrong" + exit 1 + } + while ! is_started; do + echo "Waiting for special message in log files " + sleep 30s + counter=$(( $counter - 1 )) + echo "Counter: $counter" + if [ "$counter" -gt "0" ]; then + continue + else + break + fi + done + echo "Halting script" + exit 0 + shell: bash + + - uses: actions/setup-node@v3 + with: + node-version: 16 + + - name: Run Collator tests + working-directory: tests + if: success() || failure() + run: | + yarn install + yarn add mochawesome + node scripts/readyness.js + echo "Ready to start tests" + yarn polkadot-types + NOW=$(date +%s) && yarn testCollators --reporter mochawesome --reporter-options reportFilename=test-collators-${NOW} + env: + RPC_URL: http://127.0.0.1:9933/ + + - name: Test Report Collator + uses: phoenix-actions/test-reporting@v8 + id: test-report-collator + if: success() || failure() # run this step even if previous step failed + with: + name: Report Collator tests results - ${{ matrix.network }} # Name of the check run which will be created + path: tests/mochawesome-report/test-collators-*.json # Path to test results + reporter: mochawesome-json + fail-on-error: 'false' + + - name: Stop running containers + if: always() # run this step always + run: docker-compose -f ".docker/docker-compose.collators.${{ matrix.network }}.yml" down + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f -a + docker system prune -f --- a/.rustfmt.toml +++ b/.rustfmt.toml @@ -1,2 +1,2 @@ hard_tabs = true -reorder_imports = false \ No newline at end of file +reorder_imports = false --- /dev/null +++ b/.taplo.toml @@ -0,0 +1,9 @@ +[formatting] +array_auto_collapse = true +array_auto_expand = true +array_trailing_comma = true +column_width = 120 +indent_string = "\t" +reorder_arrays = true +reorder_keys = true +trailing_newline = true --- a/Cargo.lock +++ b/Cargo.lock @@ -125,14 +125,11 @@ name = "app-promotion-rpc" version = "0.1.0" dependencies = [ - "pallet-common", "pallet-evm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api", - "sp-core", "sp-runtime", "sp-std", - "up-data-structs", ] [[package]] @@ -319,9 +316,9 @@ [[package]] name = "async-trait" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d1d8ab452a3936018a687b20e6f7cf5363d713b732b8884001317b0e48aa3" +checksum = "705339e0e4a9690e2908d2b3d049d85682cf19fbd5782494498fbf7003a6a282" dependencies = [ "proc-macro2", "quote", @@ -343,9 +340,9 @@ [[package]] name = "atomic-waker" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" +checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" [[package]] name = "atty" @@ -360,9 +357,9 @@ [[package]] name = "auto_impl" -version = "0.5.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4" +checksum = "8a8c1df849285fbacd587de7818cc7d13be6cd2cbcd47a04fb1801b0e2706e33" dependencies = [ "proc-macro-error", "proc-macro2", @@ -387,7 +384,7 @@ "cfg-if", "libc", "miniz_oxide", - "object 0.30.0", + "object 0.30.2", "rustc-demangle", ] @@ -416,6 +413,12 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + +[[package]] name = "base64ct" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -438,10 +441,10 @@ "array-bytes 4.2.0", "async-trait", "fnv", - "futures 0.3.25", + "futures", "futures-timer", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-chain-spec", "sc-client-api", @@ -473,10 +476,10 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "beefy-gadget", - "futures 0.3.25", + "futures", "jsonrpsee", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-rpc", "sc-utils", @@ -533,26 +536,14 @@ [[package]] name = "bitvec" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" -dependencies = [ - "funty 1.1.0", - "radium 0.6.2", - "tap", - "wyz 0.2.0", -] - -[[package]] -name = "bitvec" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ - "funty 2.0.0", - "radium 0.7.0", + "funty", + "radium", "tap", - "wyz 0.5.1", + "wyz", ] [[package]] @@ -700,6 +691,16 @@ ] [[package]] +name = "bstr" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b" +dependencies = [ + "memchr", + "serde", +] + +[[package]] name = "build-helper" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -710,9 +711,9 @@ [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "byte-slice-cast" @@ -751,9 +752,9 @@ [[package]] name = "camino" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e" +checksum = "c77df041dc383319cc661b428b6961a005db4d6808d5e12536931b1ca9556055" dependencies = [ "serde", ] @@ -903,9 +904,9 @@ [[package]] name = "clap" -version = "4.0.32" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39" +checksum = "4ec7a4128863c188deefe750ac1d1dfe66c236909f845af04beed823638dc1b2" dependencies = [ "bitflags", "clap_derive", @@ -918,9 +919,9 @@ [[package]] name = "clap_derive" -version = "4.0.21" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" +checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8" dependencies = [ "heck", "proc-macro-error", @@ -931,9 +932,9 @@ [[package]] name = "clap_lex" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" +checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade" dependencies = [ "os_str_bytes", ] @@ -962,9 +963,9 @@ [[package]] name = "comfy-table" -version = "6.1.3" +version = "6.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e621e7e86c46fd8a14c32c6ae3cb95656621b4743a27d0cffedb831d46e7ad21" +checksum = "6e7b787b0dc42e8111badfdbe4c3059158ccb2db8780352fa1b01e8ccf45cc4d" dependencies = [ "strum", "strum_macros", @@ -973,24 +974,23 @@ [[package]] name = "concurrent-queue" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7bef69dc86e3c610e4e7aed41035e2a7ed12e72dd7530f61327a6579a4390b" +checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" dependencies = [ "crossbeam-utils", ] [[package]] name = "console" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c" +checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60" dependencies = [ "encode_unicode", "lazy_static", "libc", - "terminal_size", - "winapi", + "windows-sys 0.42.0", ] [[package]] @@ -1303,7 +1303,7 @@ source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0" dependencies = [ "clap", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-chain-spec", "sc-cli", "sc-service", @@ -1320,8 +1320,8 @@ "cumulus-client-consensus-common", "cumulus-client-network", "cumulus-primitives-core", - "futures 0.3.25", - "parity-scale-codec 3.2.1", + "futures", + "parity-scale-codec", "parking_lot 0.12.1", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -1343,8 +1343,8 @@ "async-trait", "cumulus-client-consensus-common", "cumulus-primitives-core", - "futures 0.3.25", - "parity-scale-codec 3.2.1", + "futures", + "parity-scale-codec", "sc-client-api", "sc-consensus", "sc-consensus-aura", @@ -1374,9 +1374,9 @@ "cumulus-primitives-core", "cumulus-relay-chain-interface", "dyn-clone", - "futures 0.3.25", + "futures", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-primitives", "sc-client-api", "sc-consensus", @@ -1394,9 +1394,9 @@ dependencies = [ "async-trait", "cumulus-relay-chain-interface", - "futures 0.3.25", + "futures", "futures-timer", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "polkadot-node-primitives", "polkadot-parachain", @@ -1417,9 +1417,9 @@ dependencies = [ "cumulus-primitives-core", "cumulus-relay-chain-interface", - "futures 0.3.25", + "futures", "futures-timer", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", @@ -1446,7 +1446,7 @@ "cumulus-relay-chain-inprocess-interface", "cumulus-relay-chain-interface", "cumulus-relay-chain-minimal-node", - "futures 0.3.25", + "futures", "parking_lot 0.12.1", "polkadot-primitives", "sc-client-api", @@ -1469,7 +1469,7 @@ "frame-support", "frame-system", "pallet-aura", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-application-crypto", "sp-consensus-aura", @@ -1486,7 +1486,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-io", "sp-runtime", @@ -1508,7 +1508,7 @@ "frame-system", "impl-trait-for-tuples", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-parachain", "scale-info", "sp-core", @@ -1541,7 +1541,7 @@ "cumulus-primitives-core", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-io", "sp-runtime", @@ -1558,7 +1558,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rand_chacha 0.3.1", "scale-info", "sp-runtime", @@ -1572,7 +1572,7 @@ version = "0.1.0" source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-core-primitives", "polkadot-parachain", "polkadot-primitives", @@ -1591,7 +1591,7 @@ "cumulus-primitives-core", "cumulus-relay-chain-interface", "cumulus-test-relay-sproof-builder", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-client-api", "scale-info", "sp-api", @@ -1611,8 +1611,8 @@ source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0" dependencies = [ "cumulus-primitives-core", - "futures 0.3.25", - "parity-scale-codec 3.2.1", + "futures", + "parity-scale-codec", "sp-inherents", "sp-std", "sp-timestamp", @@ -1626,7 +1626,7 @@ "cumulus-primitives-core", "frame-support", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-runtime", "sp-std", "xcm", @@ -1642,7 +1642,7 @@ "async-trait", "cumulus-primitives-core", "cumulus-relay-chain-interface", - "futures 0.3.25", + "futures", "futures-timer", "polkadot-cli", "polkadot-client", @@ -1666,9 +1666,9 @@ dependencies = [ "async-trait", "cumulus-primitives-core", - "futures 0.3.25", + "futures", "jsonrpsee-core", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-overseer", "polkadot-service", "sc-client-api", @@ -1689,7 +1689,7 @@ "cumulus-primitives-core", "cumulus-relay-chain-interface", "cumulus-relay-chain-rpc-interface", - "futures 0.3.25", + "futures", "lru", "polkadot-core-primitives", "polkadot-network-bridge", @@ -1727,11 +1727,11 @@ "async-trait", "cumulus-primitives-core", "cumulus-relay-chain-interface", - "futures 0.3.25", + "futures", "futures-timer", "jsonrpsee", "lru", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-service", "sc-client-api", "sc-rpc-api", @@ -1754,7 +1754,7 @@ source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0" dependencies = [ "cumulus-primitives-core", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-primitives", "sp-runtime", "sp-state-machine", @@ -1803,9 +1803,9 @@ [[package]] name = "cxx" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd" +checksum = "51d1075c37807dcf850c379432f0df05ba52cc30f279c5cfc43cc221ce7f8579" dependencies = [ "cc", "cxxbridge-flags", @@ -1815,9 +1815,9 @@ [[package]] name = "cxx-build" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0" +checksum = "5044281f61b27bc598f2f6647d480aed48d2bf52d6eb0b627d84c0361b17aa70" dependencies = [ "cc", "codespan-reporting", @@ -1830,15 +1830,15 @@ [[package]] name = "cxxbridge-flags" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59" +checksum = "61b50bc93ba22c27b0d31128d2d130a0a6b3d267ae27ef7e4fae2167dfe8781c" [[package]] name = "cxxbridge-macro" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6" +checksum = "39e61fda7e62115119469c7b3591fd913ecca96fb766cfd3f2e2502ab7bc87a5" dependencies = [ "proc-macro2", "quote", @@ -2050,9 +2050,9 @@ [[package]] name = "ed25519" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ "signature", ] @@ -2173,6 +2173,19 @@ ] [[package]] +name = "env_logger" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + +[[package]] name = "environmental" version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2254,7 +2267,7 @@ "ethereum-types 0.14.1", "hash-db", "hash256-std-hasher", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rlp", "scale-info", "serde", @@ -2301,8 +2314,8 @@ [[package]] name = "evm" -version = "0.35.0" -source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2a" +version = "0.37.0" +source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#e543965fa325885fc61ebf6ec47565b8ab686afd" dependencies = [ "auto_impl", "environmental", @@ -2311,7 +2324,7 @@ "evm-gasometer", "evm-runtime", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "primitive-types 0.12.1", "rlp", "scale-info", @@ -2333,7 +2346,6 @@ "primitive-types 0.12.1", "sha3-const", "similar-asserts", - "sp-std", "trybuild", ] @@ -2351,10 +2363,10 @@ [[package]] name = "evm-core" -version = "0.35.0" -source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2a" +version = "0.37.0" +source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#e543965fa325885fc61ebf6ec47565b8ab686afd" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "primitive-types 0.12.1", "scale-info", "serde", @@ -2362,8 +2374,8 @@ [[package]] name = "evm-gasometer" -version = "0.35.0" -source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2a" +version = "0.37.0" +source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#e543965fa325885fc61ebf6ec47565b8ab686afd" dependencies = [ "environmental", "evm-core", @@ -2373,8 +2385,8 @@ [[package]] name = "evm-runtime" -version = "0.35.0" -source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2a" +version = "0.37.0" +source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#e543965fa325885fc61ebf6ec47565b8ab686afd" dependencies = [ "auto_impl", "environmental", @@ -2389,7 +2401,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.3.25", + "futures", ] [[package]] @@ -2491,7 +2503,7 @@ "kvdb-rocksdb", "log", "parity-db", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-client-db", "smallvec", @@ -2509,7 +2521,7 @@ "fc-db", "fp-consensus", "fp-rpc", - "futures 0.3.25", + "futures", "futures-timer", "log", "sc-client-api", @@ -2532,13 +2544,13 @@ "fp-evm", "fp-rpc", "fp-storage", - "futures 0.3.25", + "futures", "hex", "jsonrpsee", "libsecp256k1", "log", "lru", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "prometheus", "rand 0.8.5", "rlp", @@ -2602,11 +2614,11 @@ [[package]] name = "file-per-thread-logger" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e16290574b39ee41c71aeb90ae960c504ebaf1e2a1c87bd52aa56ed6e1a02f" +checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" dependencies = [ - "env_logger", + "env_logger 0.10.0", "log", ] @@ -2624,16 +2636,16 @@ [[package]] name = "finality-grandpa" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22349c6a11563a202d95772a68e0fcf56119e74ea8a2a19cf2301460fcd0df5" +checksum = "e24e6c429951433ccb7c87fd528c60084834dcd14763182c1f83291bcde24c34" dependencies = [ "either", - "futures 0.3.25", + "futures", "futures-timer", "log", "num-traits", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "scale-info", ] @@ -2679,22 +2691,6 @@ ] [[package]] -name = "flexi_logger" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade8e86c48285f138a4d6ca15a2912e39bd6c74d62db42da4f1985f651a0b057" -dependencies = [ - "atty", - "chrono", - "glob", - "lazy_static", - "log", - "nu-ansi-term", - "regex", - "thiserror", -] - -[[package]] name = "float-cmp" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2714,7 +2710,7 @@ version = "3.0.0" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", ] [[package]] @@ -2732,7 +2728,7 @@ source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634" dependencies = [ "ethereum 0.14.0", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-core", "sp-runtime", "sp-std", @@ -2748,7 +2744,7 @@ "fp-evm", "frame-support", "num_enum", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-core", "sp-std", ] @@ -2761,7 +2757,7 @@ "evm", "frame-support", "impl-trait-for-tuples", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "serde", "sp-core", "sp-std", @@ -2784,7 +2780,7 @@ "ethereum 0.14.0", "ethereum-types 0.14.1", "fp-evm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-api", "sp-core", @@ -2800,7 +2796,7 @@ dependencies = [ "ethereum 0.14.0", "frame-support", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-runtime", @@ -2811,7 +2807,7 @@ version = "2.0.0" source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "serde", ] @@ -2830,7 +2826,7 @@ "frame-system", "linregress", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "paste", "scale-info", "serde", @@ -2866,7 +2862,7 @@ "linked-hash-map", "log", "memory-db", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rand 0.8.5", "rand_pcg 0.3.1", "sc-block-builder", @@ -2915,7 +2911,7 @@ "frame-election-provider-solution-type", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-arithmetic", "sp-core", @@ -2932,7 +2928,7 @@ "frame-support", "frame-system", "frame-try-runtime", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -2948,7 +2944,7 @@ checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d" dependencies = [ "cfg-if", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", ] @@ -2958,10 +2954,10 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "env_logger", - "futures 0.3.25", + "env_logger 0.9.3", + "futures", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "serde", "serde_json", "sp-core", @@ -2984,7 +2980,7 @@ "k256", "log", "once_cell", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "paste", "scale-info", "serde", @@ -3047,7 +3043,7 @@ dependencies = [ "frame-support", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-core", @@ -3066,7 +3062,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-runtime", @@ -3078,7 +3074,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api", ] @@ -3088,7 +3084,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "frame-support", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api", "sp-runtime", "sp-std", @@ -3115,12 +3111,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" - -[[package]] -name = "funty" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" [[package]] name = "funty" @@ -3130,12 +3120,6 @@ [[package]] name = "futures" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" - -[[package]] -name = "futures" version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" @@ -3244,7 +3228,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" dependencies = [ - "futures 0.1.31", "futures-channel", "futures-core", "futures-io", @@ -3348,18 +3331,18 @@ [[package]] name = "glob" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a" +checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" dependencies = [ "aho-corasick", - "bstr", + "bstr 1.1.0", "fnv", "log", "regex", @@ -3681,7 +3664,7 @@ "async-io", "core-foundation", "fnv", - "futures 0.3.25", + "futures", "if-addrs", "ipnet", "log", @@ -3696,7 +3679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", ] [[package]] @@ -3771,9 +3754,9 @@ [[package]] name = "io-lifetimes" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" +checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e" dependencies = [ "libc", "windows-sys 0.42.0", @@ -3799,9 +3782,9 @@ [[package]] name = "ipnet" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11b0d96e660696543b251e58030cf9787df56da39dab19ad60eae7353040917e" +checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" [[package]] name = "is-terminal" @@ -3810,8 +3793,8 @@ checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189" dependencies = [ "hermit-abi 0.2.6", - "io-lifetimes 1.0.3", - "rustix 0.36.5", + "io-lifetimes 1.0.4", + "rustix 0.36.7", "windows-sys 0.42.0", ] @@ -3998,7 +3981,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "bitvec 1.0.1", + "bitvec", "frame-benchmarking", "frame-election-provider-support", "frame-executive", @@ -4056,7 +4039,7 @@ "pallet-whitelist", "pallet-xcm", "pallet-xcm-benchmarks", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -4193,7 +4176,7 @@ checksum = "ec878fda12ebec479186b3914ebc48ff180fa4c51847e11a1a68bf65249e02c1" dependencies = [ "bytes", - "futures 0.3.25", + "futures", "futures-timer", "getrandom 0.2.8", "instant", @@ -4231,7 +4214,7 @@ "ed25519-dalek", "either", "fnv", - "futures 0.3.25", + "futures", "futures-timer", "instant", "lazy_static", @@ -4259,7 +4242,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2322c9fb40d99101def6a01612ee30500c89abbbecb6297b3cd252903a4c1720" dependencies = [ - "futures 0.3.25", + "futures", "libp2p-core", "log", "parking_lot 0.12.1", @@ -4274,7 +4257,7 @@ checksum = "dcf9a121f699e8719bda2e6e9e9b6ddafc6cff4602471d6481c1067930ccb29b" dependencies = [ "asynchronous-codec", - "futures 0.3.25", + "futures", "futures-timer", "libp2p-core", "libp2p-swarm", @@ -4299,7 +4282,7 @@ "bytes", "either", "fnv", - "futures 0.3.25", + "futures", "futures-timer", "instant", "libp2p-core", @@ -4324,7 +4307,7 @@ dependencies = [ "data-encoding", "dns-parser", - "futures 0.3.25", + "futures", "if-watch", "libp2p-core", "libp2p-swarm", @@ -4358,7 +4341,7 @@ dependencies = [ "asynchronous-codec", "bytes", - "futures 0.3.25", + "futures", "libp2p-core", "log", "nohash-hasher", @@ -4376,7 +4359,7 @@ dependencies = [ "bytes", "curve25519-dalek 3.2.0", - "futures 0.3.25", + "futures", "lazy_static", "libp2p-core", "log", @@ -4396,7 +4379,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7228b9318d34689521349a86eb39a3c3a802c9efc99a0568062ffb80913e3f91" dependencies = [ - "futures 0.3.25", + "futures", "futures-timer", "instant", "libp2p-core", @@ -4414,7 +4397,7 @@ dependencies = [ "async-trait", "bytes", - "futures 0.3.25", + "futures", "instant", "libp2p-core", "libp2p-swarm", @@ -4432,7 +4415,7 @@ dependencies = [ "either", "fnv", - "futures 0.3.25", + "futures", "futures-timer", "instant", "libp2p-core", @@ -4461,7 +4444,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9839d96761491c6d3e238e70554b856956fca0ab60feb9de2cd08eed4473fa92" dependencies = [ - "futures 0.3.25", + "futures", "futures-timer", "if-watch", "libc", @@ -4477,7 +4460,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a17b5b8e7a73e379e47b1b77f8a82c4721e97eca01abcd18e9cd91a23ca6ce97" dependencies = [ - "futures 0.3.25", + "futures", "js-sys", "libp2p-core", "parity-send-wrapper", @@ -4492,7 +4475,7 @@ checksum = "3758ae6f89b2531a24b6d9f5776bda6a626b60a57600d7185d43dfa75ca5ecc4" dependencies = [ "either", - "futures 0.3.25", + "futures", "futures-rustls", "libp2p-core", "log", @@ -4510,7 +4493,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d6874d66543c4f7e26e3b8ca9a6bead351563a13ab4fafd43c7927f7c0d6c12" dependencies = [ - "futures 0.3.25", + "futures", "libp2p-core", "log", "parking_lot 0.12.1", @@ -4540,7 +4523,7 @@ checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" dependencies = [ "arrayref", - "base64", + "base64 0.13.1", "digest 0.9.0", "hmac-drbg", "libsecp256k1-core", @@ -4757,7 +4740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b20a59d985586e4a5aef64564ac77299f8586d8be6cf9106a5a40207e8908efb" dependencies = [ - "rustix 0.36.5", + "rustix 0.36.7", ] [[package]] @@ -4821,7 +4804,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532" dependencies = [ - "futures 0.3.25", + "futures", "rand 0.8.5", "thrift", ] @@ -4858,9 +4841,9 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-client-api", "sc-offchain", "sp-api", @@ -4880,7 +4863,7 @@ dependencies = [ "anyhow", "jsonrpsee", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "serde", "sp-api", "sp-blockchain", @@ -4989,7 +4972,7 @@ checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a" dependencies = [ "bytes", - "futures 0.3.25", + "futures", "log", "pin-project", "smallvec", @@ -5085,7 +5068,7 @@ checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" dependencies = [ "bytes", - "futures 0.3.25", + "futures", "log", "netlink-packet-core", "netlink-sys", @@ -5101,7 +5084,7 @@ dependencies = [ "async-io", "bytes", - "futures 0.3.25", + "futures", "libc", "log", ] @@ -5125,9 +5108,9 @@ [[package]] name = "nom" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", @@ -5138,16 +5121,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] [[package]] name = "num-bigint" @@ -5256,18 +5229,18 @@ [[package]] name = "object" -version = "0.30.0" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239da7f290cfa979f43f85a8efeee9a8a76d0827c356d37f9d3d7254d6b537fb" +checksum = "2b8c786513eb403643f2a88c244c2aaa270ef2153f55094587d0c48a3cf22a83" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "opal-runtime" @@ -5342,7 +5315,7 @@ "pallet-unique-scheduler-v2", "pallet-xcm", "parachain-info", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-parachain", "precompile-utils-macro", "rmrk-rpc", @@ -5399,7 +5372,7 @@ dependencies = [ "async-trait", "dyn-clonable", - "futures 0.3.25", + "futures", "futures-timer", "orchestra-proc-macro", "pin-project", @@ -5440,7 +5413,7 @@ "frame-support", "frame-system", "orml-traits", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-runtime", @@ -5456,7 +5429,7 @@ "impl-trait-for-tuples", "num-traits", "orml-utilities", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-io", @@ -5471,7 +5444,7 @@ source = "git+https://github.com/uniquenetwork/open-runtime-module-library?branch=feature/polkadot-v0.9.36#3f70b9adb6c0599db7b8688abb49d0d459634b68" dependencies = [ "frame-support", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-io", @@ -5486,7 +5459,7 @@ dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-io", @@ -5501,7 +5474,7 @@ dependencies = [ "frame-support", "orml-traits", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-runtime", "sp-std", "xcm", @@ -5519,7 +5492,7 @@ "orml-traits", "orml-xcm-support", "pallet-xcm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-io", @@ -5536,12 +5509,6 @@ checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" [[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] name = "packed_simd_2" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5564,14 +5531,10 @@ "pallet-evm", "pallet-evm-contract-helpers", "pallet-evm-migration", - "pallet-randomness-collective-flip", - "pallet-timestamp", "pallet-unique", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", - "serde", "sp-core", - "sp-io", "sp-runtime", "sp-std", "up-data-structs", @@ -5585,7 +5548,7 @@ "frame-support", "frame-system", "pallet-timestamp", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-application-crypto", "sp-consensus-aura", @@ -5601,7 +5564,7 @@ "frame-support", "frame-system", "pallet-session", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-application-crypto", "sp-authority-discovery", @@ -5617,7 +5580,7 @@ "frame-support", "frame-system", "impl-trait-for-tuples", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-authorship", "sp-runtime", @@ -5636,7 +5599,7 @@ "pallet-authorship", "pallet-session", "pallet-timestamp", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-application-crypto", "sp-consensus-babe", @@ -5659,7 +5622,7 @@ "frame-system", "log", "pallet-balances", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -5677,7 +5640,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-runtime", "sp-std", @@ -5691,7 +5654,7 @@ "fp-evm", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-core", @@ -5706,7 +5669,7 @@ "frame-support", "frame-system", "pallet-session", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-beefy", @@ -5727,7 +5690,7 @@ "pallet-beefy", "pallet-mmr", "pallet-session", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-beefy", @@ -5747,7 +5710,7 @@ "frame-system", "log", "pallet-treasury", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -5766,7 +5729,7 @@ "log", "pallet-bounties", "pallet-treasury", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -5788,7 +5751,7 @@ "pallet-configuration", "pallet-session", "pallet-timestamp", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rand 0.8.5", "scale-info", "serde", @@ -5810,7 +5773,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -5824,15 +5787,13 @@ dependencies = [ "ethereum 0.14.0", "evm-coder", - "fp-evm-mapping", "frame-benchmarking", "frame-support", "frame-system", "pallet-evm", "pallet-evm-coder-substrate", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", - "serde", "sp-core", "sp-runtime", "sp-std", @@ -5848,12 +5809,11 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "smallvec", "sp-arithmetic", "sp-core", - "sp-runtime", "sp-std", "xcm", ] @@ -5867,7 +5827,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-io", @@ -5884,7 +5844,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-core", @@ -5904,7 +5864,7 @@ "frame-system", "log", "pallet-election-provider-support-benchmarking", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rand 0.7.3", "scale-info", "sp-arithmetic", @@ -5925,7 +5885,7 @@ "frame-benchmarking", "frame-election-provider-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-npos-elections", "sp-runtime", ] @@ -5939,7 +5899,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -5967,7 +5927,7 @@ "frame-system", "pallet-evm", "pallet-timestamp", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rlp", "scale-info", "serde", @@ -5992,7 +5952,7 @@ "impl-trait-for-tuples", "log", "pallet-timestamp", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "primitive-types 0.12.1", "rlp", "scale-info", @@ -6007,14 +5967,12 @@ name = "pallet-evm-coder-substrate" version = "0.1.3" dependencies = [ - "ethereum 0.14.0", "evm-coder", "frame-benchmarking", "frame-support", "frame-system", - "pallet-ethereum", "pallet-evm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-std", @@ -6025,20 +5983,16 @@ name = "pallet-evm-contract-helpers" version = "0.3.0" dependencies = [ - "ethereum 0.14.0", "evm-coder", - "fp-evm-mapping", "frame-support", "frame-system", - "log", "pallet-common", "pallet-evm", "pallet-evm-coder-substrate", "pallet-evm-transaction-payment", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", - "sp-runtime", "sp-std", "up-data-structs", "up-sponsorship", @@ -6049,16 +6003,13 @@ version = "0.1.1" dependencies = [ "ethereum 0.14.0", - "fp-evm", "frame-benchmarking", "frame-support", "frame-system", "pallet-evm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", - "sp-io", - "sp-runtime", "sp-std", ] @@ -6077,15 +6028,12 @@ version = "0.1.1" dependencies = [ "fp-evm", - "fp-evm-mapping", "frame-support", "frame-system", - "pallet-ethereum", "pallet-evm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", - "sp-io", "sp-runtime", "sp-std", "up-sponsorship", @@ -6101,7 +6049,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-io", "sp-runtime", @@ -6123,7 +6071,7 @@ "pallet-common", "pallet-fungible", "pallet-timestamp", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "serde_json", @@ -6133,7 +6081,6 @@ "sp-std", "up-data-structs", "xcm", - "xcm-builder", "xcm-executor", ] @@ -6141,7 +6088,6 @@ name = "pallet-fungible" version = "0.1.9" dependencies = [ - "ethereum 0.14.0", "evm-coder", "frame-benchmarking", "frame-support", @@ -6150,7 +6096,7 @@ "pallet-evm", "pallet-evm-coder-substrate", "pallet-structure", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-runtime", @@ -6169,7 +6115,7 @@ "log", "pallet-authorship", "pallet-session", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-application-crypto", "sp-core", @@ -6190,7 +6136,7 @@ "frame-support", "frame-system", "pallet-balances", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6207,7 +6153,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-io", "sp-runtime", @@ -6224,7 +6170,7 @@ "frame-system", "log", "pallet-authorship", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-application-crypto", "sp-core", @@ -6242,7 +6188,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6259,11 +6205,8 @@ "frame-support", "frame-system", "pallet-balances", - "pallet-randomness-collective-flip", - "pallet-timestamp", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", - "serde", "sp-core", "sp-io", "sp-runtime", @@ -6277,7 +6220,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-std", ] @@ -6291,7 +6234,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6307,7 +6250,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6325,7 +6268,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-io", "sp-runtime", @@ -6340,7 +6283,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-arithmetic", "sp-core", @@ -6356,7 +6299,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6377,7 +6320,7 @@ "pallet-bags-list", "pallet-nomination-pools", "pallet-staking", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-runtime", "sp-runtime-interface", @@ -6390,7 +6333,7 @@ version = "1.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api", "sp-std", ] @@ -6399,7 +6342,6 @@ name = "pallet-nonfungible" version = "0.1.12" dependencies = [ - "ethereum 0.14.0", "evm-coder", "frame-benchmarking", "frame-support", @@ -6408,7 +6350,7 @@ "pallet-evm", "pallet-evm-coder-substrate", "pallet-structure", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-runtime", @@ -6426,7 +6368,7 @@ "frame-system", "log", "pallet-balances", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-runtime", @@ -6450,7 +6392,7 @@ "pallet-offences", "pallet-session", "pallet-staking", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-runtime", "sp-staking", @@ -6466,7 +6408,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6482,7 +6424,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-io", "sp-runtime", @@ -6496,7 +6438,7 @@ dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "safe-mix", "scale-info", "sp-runtime", @@ -6512,7 +6454,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-arithmetic", "sp-core", @@ -6529,7 +6471,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-io", "sp-runtime", @@ -6546,7 +6488,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-arithmetic", @@ -6559,8 +6501,6 @@ name = "pallet-refungible" version = "0.2.11" dependencies = [ - "derivative", - "ethereum 0.14.0", "evm-coder", "frame-benchmarking", "frame-support", @@ -6569,12 +6509,11 @@ "pallet-evm", "pallet-evm-coder-substrate", "pallet-structure", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-runtime", "sp-std", - "struct-versioning", "up-data-structs", ] @@ -6582,7 +6521,6 @@ name = "pallet-rmrk-core" version = "0.1.2" dependencies = [ - "derivative", "frame-benchmarking", "frame-support", "frame-system", @@ -6590,10 +6528,9 @@ "pallet-evm", "pallet-nonfungible", "pallet-structure", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rmrk-traits", "scale-info", - "sp-core", "sp-runtime", "sp-std", "up-data-structs", @@ -6610,10 +6547,8 @@ "pallet-evm", "pallet-nonfungible", "pallet-rmrk-core", - "parity-scale-codec 3.2.1", - "rmrk-traits", + "parity-scale-codec", "scale-info", - "sp-core", "sp-runtime", "sp-std", "up-data-structs", @@ -6628,7 +6563,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-io", "sp-runtime", @@ -6646,7 +6581,7 @@ "impl-trait-for-tuples", "log", "pallet-timestamp", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6680,7 +6615,7 @@ dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rand_chacha 0.2.2", "scale-info", "sp-runtime", @@ -6699,7 +6634,7 @@ "log", "pallet-authorship", "pallet-session", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rand_chacha 0.2.2", "scale-info", "serde", @@ -6739,7 +6674,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6757,7 +6692,7 @@ "log", "pallet-common", "pallet-evm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-std", "up-data-structs", @@ -6770,7 +6705,7 @@ dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-io", "sp-runtime", @@ -6787,7 +6722,7 @@ "frame-system", "pallet-balances", "pallet-transaction-payment", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-core", @@ -6804,7 +6739,7 @@ "frame-support", "frame-system", "pallet-unique-scheduler-v2", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-std", ] @@ -6818,7 +6753,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-inherents", "sp-io", @@ -6837,7 +6772,7 @@ "frame-system", "log", "pallet-treasury", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-core", @@ -6853,7 +6788,7 @@ dependencies = [ "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-core", @@ -6869,7 +6804,7 @@ dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api", "sp-blockchain", "sp-core", @@ -6884,7 +6819,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "pallet-transaction-payment", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api", "sp-runtime", "sp-weights", @@ -6900,7 +6835,7 @@ "frame-system", "impl-trait-for-tuples", "pallet-balances", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-runtime", @@ -6921,7 +6856,7 @@ "pallet-evm-coder-substrate", "pallet-nonfungible", "pallet-refungible", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-core", @@ -6940,7 +6875,7 @@ "frame-system", "log", "pallet-preimage", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6957,7 +6892,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -6974,7 +6909,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-runtime", "sp-std", @@ -6988,7 +6923,7 @@ "frame-benchmarking", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-api", "sp-runtime", @@ -7003,7 +6938,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-core", @@ -7022,7 +6957,7 @@ "frame-support", "frame-system", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-runtime", "sp-std", @@ -7038,7 +6973,7 @@ "cumulus-primitives-core", "frame-support", "frame-system", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", ] @@ -7063,50 +6998,24 @@ [[package]] name = "parity-scale-codec" -version = "2.3.1" +version = "3.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +checksum = "e7ab01d0f889e957861bc65888d5ccbe82c158d0270136ba46820d43837cdf72" dependencies = [ "arrayvec 0.7.2", - "bitvec 0.20.4", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive 2.3.1", - "serde", -] - -[[package]] -name = "parity-scale-codec" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366e44391a8af4cfd6002ef6ba072bae071a96aafca98d7d448a34c5dca38b6a" -dependencies = [ - "arrayvec 0.7.2", - "bitvec 1.0.1", + "bitvec", "byte-slice-cast", "bytes", "impl-trait-for-tuples", - "parity-scale-codec-derive 3.1.3", + "parity-scale-codec-derive", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.1.3" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd" +checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -7150,7 +7059,7 @@ checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.5", + "parking_lot_core 0.9.6", ] [[package]] @@ -7169,9 +7078,9 @@ [[package]] name = "parking_lot_core" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" +checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" dependencies = [ "cfg-if", "libc", @@ -7218,9 +7127,9 @@ [[package]] name = "pest" -version = "2.5.1" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8bed3549e0f9b0a2a78bf7c0018237a2cdf085eecbbc048e52612438e4e9d0" +checksum = "4257b4a04d91f7e9e6290be5d3da4804dd5784fafde3a497d73eb2b4a158c30a" dependencies = [ "thiserror", "ucd-trie", @@ -7228,9 +7137,9 @@ [[package]] name = "pest_derive" -version = "2.5.1" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdc078600d06ff90d4ed238f0119d84ab5d43dbaad278b0e33a8820293b32344" +checksum = "241cda393b0cdd65e62e07e12454f1f25d57017dcc514b1514cd3c4645e3a0a6" dependencies = [ "pest", "pest_generator", @@ -7238,9 +7147,9 @@ [[package]] name = "pest_generator" -version = "2.5.1" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a1af60b1c4148bb269006a750cff8e2ea36aff34d2d96cf7be0b14d1bed23c" +checksum = "46b53634d8c8196302953c74d5352f33d0c512a9499bd2ce468fc9f4128fa27c" dependencies = [ "pest", "pest_meta", @@ -7251,13 +7160,13 @@ [[package]] name = "pest_meta" -version = "2.5.1" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec8605d59fc2ae0c6c1aefc0c7c7a9769732017c0ce07f7a9cfffa7b4404f20" +checksum = "0ef4f1332a8d4678b41966bb4cc1d0676880e84183a1ecc3f4b69f03e99c7a51" dependencies = [ "once_cell", "pest", - "sha1", + "sha2 0.10.6", ] [[package]] @@ -7341,7 +7250,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "futures 0.3.25", + "futures", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7356,7 +7265,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "futures 0.3.25", + "futures", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -7372,9 +7281,9 @@ dependencies = [ "derive_more", "fatality", - "futures 0.3.25", + "futures", "lru", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -7394,9 +7303,9 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "fatality", - "futures 0.3.25", + "futures", "lru", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -7416,7 +7325,7 @@ dependencies = [ "clap", "frame-benchmarking-cli", - "futures 0.3.25", + "futures", "log", "polkadot-client", "polkadot-node-core-pvf", @@ -7446,7 +7355,7 @@ "frame-benchmarking-cli", "frame-system", "frame-system-rpc-runtime-api", - "futures 0.3.25", + "futures", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "polkadot-core-primitives", @@ -7484,9 +7393,9 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "always-assert", - "bitvec 1.0.1", + "bitvec", "fatality", - "futures 0.3.25", + "futures", "futures-timer", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -7505,7 +7414,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-runtime", @@ -7519,11 +7428,11 @@ dependencies = [ "derive_more", "fatality", - "futures 0.3.25", + "futures", "futures-timer", "indexmap", "lru", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -7542,7 +7451,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-node-primitives", "polkadot-primitives", "reed-solomon-novelpoly", @@ -7556,7 +7465,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "futures 0.3.25", + "futures", "futures-timer", "polkadot-node-network-protocol", "polkadot-node-subsystem", @@ -7580,8 +7489,8 @@ "async-trait", "bytes", "fatality", - "futures 0.3.25", - "parity-scale-codec 3.2.1", + "futures", + "parity-scale-codec", "parking_lot 0.12.1", "polkadot-node-network-protocol", "polkadot-node-subsystem", @@ -7600,8 +7509,8 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "futures 0.3.25", - "parity-scale-codec 3.2.1", + "futures", + "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7618,14 +7527,14 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "bitvec 1.0.1", + "bitvec", "derive_more", - "futures 0.3.25", + "futures", "futures-timer", "kvdb", "lru", "merlin", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-node-jaeger", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7647,11 +7556,11 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "bitvec 1.0.1", - "futures 0.3.25", + "bitvec", + "futures", "futures-timer", "kvdb", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7667,9 +7576,9 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "bitvec 1.0.1", + "bitvec", "fatality", - "futures 0.3.25", + "futures", "polkadot-erasure-coding", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7686,7 +7595,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "futures 0.3.25", + "futures", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", @@ -7702,9 +7611,9 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "futures-timer", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-node-core-pvf", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7720,7 +7629,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "futures 0.3.25", + "futures", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", @@ -7735,10 +7644,10 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "futures 0.3.25", + "futures", "futures-timer", "kvdb", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -7753,10 +7662,10 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "fatality", - "futures 0.3.25", + "futures", "kvdb", "lru", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -7772,7 +7681,7 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "futures-timer", "polkadot-node-subsystem", "polkadot-overseer", @@ -7789,9 +7698,9 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "bitvec 1.0.1", + "bitvec", "fatality", - "futures 0.3.25", + "futures", "futures-timer", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7812,9 +7721,9 @@ "async-process", "async-std", "cpu-time", - "futures 0.3.25", + "futures", "futures-timer", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "pin-project", "polkadot-core-primitives", "polkadot-node-metrics", @@ -7840,7 +7749,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "futures 0.3.25", + "futures", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -7856,7 +7765,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "futures 0.3.25", + "futures", "lru", "polkadot-node-subsystem", "polkadot-node-subsystem-types", @@ -7874,7 +7783,7 @@ "lazy_static", "log", "mick-jaeger", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "polkadot-node-primitives", "polkadot-primitives", @@ -7890,10 +7799,10 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "bs58", - "futures 0.3.25", + "futures", "futures-timer", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-primitives", "prioritized-metered-channel", "sc-cli", @@ -7911,9 +7820,9 @@ "async-trait", "derive_more", "fatality", - "futures 0.3.25", + "futures", "hex", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-node-jaeger", "polkadot-node-primitives", "polkadot-primitives", @@ -7932,8 +7841,8 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "bounded-vec", - "futures 0.3.25", - "parity-scale-codec 3.2.1", + "futures", + "parity-scale-codec", "polkadot-parachain", "polkadot-primitives", "schnorrkel", @@ -7965,7 +7874,7 @@ dependencies = [ "async-trait", "derive_more", - "futures 0.3.25", + "futures", "orchestra", "polkadot-node-jaeger", "polkadot-node-network-protocol", @@ -7989,12 +7898,12 @@ "async-trait", "derive_more", "fatality", - "futures 0.3.25", + "futures", "itertools", "kvdb", "lru", "parity-db", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.11.2", "pin-project", "polkadot-node-jaeger", @@ -8019,7 +7928,7 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "futures-timer", "lru", "orchestra", @@ -8043,7 +7952,7 @@ dependencies = [ "derive_more", "frame-support", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-core-primitives", "scale-info", "serde", @@ -8057,7 +7966,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "env_logger", + "env_logger 0.9.3", "kusama-runtime", "log", "polkadot-erasure-coding", @@ -8072,9 +7981,9 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "bitvec 1.0.1", + "bitvec", "hex-literal", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-core-primitives", "polkadot-parachain", "scale-info", @@ -8130,7 +8039,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "bitvec 1.0.1", + "bitvec", "frame-benchmarking", "frame-election-provider-support", "frame-executive", @@ -8180,7 +8089,7 @@ "pallet-utility", "pallet-vesting", "pallet-xcm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-constants", @@ -8219,7 +8128,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "bitvec 1.0.1", + "bitvec", "frame-benchmarking", "frame-election-provider-support", "frame-support", @@ -8240,7 +8149,7 @@ "pallet-transaction-payment", "pallet-treasury", "pallet-vesting", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-parachains", "rustc-hex", @@ -8282,7 +8191,7 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "bs58", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-primitives", "sp-std", "sp-tracing", @@ -8294,7 +8203,7 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "bitflags", - "bitvec 1.0.1", + "bitvec", "derive_more", "frame-benchmarking", "frame-support", @@ -8308,7 +8217,7 @@ "pallet-staking", "pallet-timestamp", "pallet-vesting", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-metrics", "rand 0.8.5", @@ -8340,7 +8249,7 @@ "beefy-gadget", "frame-support", "frame-system-rpc-runtime-api", - "futures 0.3.25", + "futures", "hex-literal", "kusama-runtime", "kvdb", @@ -8444,9 +8353,9 @@ dependencies = [ "arrayvec 0.5.2", "fatality", - "futures 0.3.25", + "futures", "indexmap", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -8463,127 +8372,12 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "parity-scale-codec 3.2.1", - "polkadot-primitives", - "sp-core", -] - -[[package]] -name = "polkadot-test-runtime" -version = "0.9.36" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" -dependencies = [ - "bitvec 1.0.1", - "frame-election-provider-support", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-rpc-runtime-api", - "log", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-balances", - "pallet-grandpa", - "pallet-indices", - "pallet-offences", - "pallet-session", - "pallet-staking", - "pallet-staking-reward-curve", - "pallet-sudo", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-vesting", - "pallet-xcm", - "parity-scale-codec 3.2.1", - "polkadot-parachain", + "parity-scale-codec", "polkadot-primitives", - "polkadot-runtime-common", - "polkadot-runtime-parachains", - "rustc-hex", - "scale-info", - "serde", - "serde_derive", - "smallvec", - "sp-api", - "sp-authority-discovery", - "sp-beefy", - "sp-block-builder", - "sp-consensus-babe", "sp-core", - "sp-inherents", - "sp-io", - "sp-mmr-primitives", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-staking", - "sp-std", - "sp-transaction-pool", - "sp-version", - "substrate-wasm-builder", - "test-runtime-constants", - "xcm", - "xcm-builder", - "xcm-executor", ] [[package]] -name = "polkadot-test-service" -version = "0.9.36" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" -dependencies = [ - "frame-benchmarking", - "frame-system", - "futures 0.3.25", - "hex", - "pallet-balances", - "pallet-staking", - "pallet-transaction-payment", - "polkadot-node-primitives", - "polkadot-node-subsystem", - "polkadot-overseer", - "polkadot-parachain", - "polkadot-primitives", - "polkadot-rpc", - "polkadot-runtime-common", - "polkadot-runtime-parachains", - "polkadot-service", - "polkadot-test-runtime", - "rand 0.8.5", - "sc-authority-discovery", - "sc-chain-spec", - "sc-cli", - "sc-client-api", - "sc-consensus", - "sc-consensus-babe", - "sc-executor", - "sc-finality-grandpa", - "sc-network", - "sc-network-common", - "sc-service", - "sc-tracing", - "sc-transaction-pool", - "sp-arithmetic", - "sp-authority-discovery", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-core", - "sp-finality-grandpa", - "sp-inherents", - "sp-keyring", - "sp-runtime", - "sp-state-machine", - "substrate-test-client", - "tempfile", - "test-runtime-constants", - "tokio", - "tracing-gum", -] - -[[package]] name = "polling" version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -8639,9 +8433,9 @@ [[package]] name = "predicates" -version = "2.1.4" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f54fc5dc63ed3bbf19494623db4f3af16842c0d975818e469022d09e53f0aa05" +checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" dependencies = [ "difflib", "float-cmp", @@ -8669,9 +8463,9 @@ [[package]] name = "prettyplease" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8992a85d8e93a28bdf76137db888d3874e3b230dee5ed8bebac4c9f7617773" +checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78" dependencies = [ "proc-macro2", "syn", @@ -8713,7 +8507,7 @@ "coarsetime", "crossbeam-queue", "derive_more", - "futures 0.3.25", + "futures", "futures-timer", "nanorand", "thiserror", @@ -8757,9 +8551,9 @@ [[package]] name = "proc-macro2" -version = "1.0.49" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" +checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" dependencies = [ "unicode-ident", ] @@ -8803,9 +8597,9 @@ [[package]] name = "prost" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c01db6702aa05baa3f57dec92b8eeeeb4cb19e894e73996b32a4093289e54592" +checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698" dependencies = [ "bytes", "prost-derive", @@ -8813,9 +8607,9 @@ [[package]] name = "prost-build" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5320c680de74ba083512704acb90fe00f28f79207286a848e730c45dd73ed6" +checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e" dependencies = [ "bytes", "heck", @@ -8848,9 +8642,9 @@ [[package]] name = "prost-derive" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8842bad1a5419bca14eac663ba798f6bc19c413c2fdceb5f3ba3b0932d96720" +checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d" dependencies = [ "anyhow", "itertools", @@ -8861,9 +8655,9 @@ [[package]] name = "prost-types" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "017f79637768cde62820bc2d4fe0e45daaa027755c323ad077767c6c5f173091" +checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788" dependencies = [ "bytes", "prost", @@ -8950,7 +8744,7 @@ "pallet-unique", "pallet-xcm", "parachain-info", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-parachain", "precompile-utils-macro", "rmrk-rpc", @@ -9006,12 +8800,6 @@ dependencies = [ "proc-macro2", ] - -[[package]] -name = "radium" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" [[package]] name = "radium" @@ -9214,9 +9002,9 @@ [[package]] name = "regex" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ "aho-corasick", "memchr", @@ -9318,11 +9106,10 @@ name = "rmrk-rpc" version = "0.0.2" dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec", "rmrk-traits", "serde", "sp-api", - "sp-core", "sp-runtime", "sp-std", ] @@ -9331,7 +9118,7 @@ name = "rmrk-traits" version = "0.1.0" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", ] @@ -9398,7 +9185,7 @@ "pallet-vesting", "pallet-xcm", "pallet-xcm-benchmarks", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-parachain", "polkadot-primitives", "polkadot-runtime-common", @@ -9463,7 +9250,7 @@ checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" dependencies = [ "async-global-executor", - "futures 0.3.25", + "futures", "log", "netlink-packet-route", "netlink-proto", @@ -9533,13 +9320,13 @@ [[package]] name = "rustix" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588" +checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03" dependencies = [ "bitflags", "errno", - "io-lifetimes 1.0.3", + "io-lifetimes 1.0.4", "libc", "linux-raw-sys 0.1.4", "windows-sys 0.42.0", @@ -9547,9 +9334,9 @@ [[package]] name = "rustls" -version = "0.20.7" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" dependencies = [ "log", "ring", @@ -9571,11 +9358,11 @@ [[package]] name = "rustls-pemfile" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" dependencies = [ - "base64", + "base64 0.21.0", ] [[package]] @@ -9590,7 +9377,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04" dependencies = [ - "futures 0.3.25", + "futures", "pin-project", "static_assertions", ] @@ -9636,12 +9423,12 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "futures-timer", "ip_network", "libp2p", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "prost", "prost-build", "rand 0.7.3", @@ -9662,10 +9449,10 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "futures-timer", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-block-builder", "sc-client-api", "sc-proposer-metrics", @@ -9685,7 +9472,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-client-api", "sp-api", "sp-block-builder", @@ -9703,7 +9490,7 @@ dependencies = [ "impl-trait-for-tuples", "memmap2", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-chain-spec-derive", "sc-network-common", "sc-telemetry", @@ -9733,11 +9520,11 @@ "chrono", "clap", "fdlimit", - "futures 0.3.25", + "futures", "libp2p", "log", "names", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rand 0.7.3", "regex", "rpassword", @@ -9770,10 +9557,10 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "fnv", - "futures 0.3.25", + "futures", "hash-db", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-executor", "sc-transaction-pool-api", @@ -9804,7 +9591,7 @@ "linked-hash-map", "log", "parity-db", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-client-api", "sc-state-db", @@ -9823,7 +9610,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "futures-timer", "libp2p", "log", @@ -9848,9 +9635,9 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-block-builder", "sc-client-api", "sc-consensus", @@ -9878,13 +9665,13 @@ dependencies = [ "async-trait", "fork-tree", - "futures 0.3.25", + "futures", "log", "merlin", "num-bigint", "num-rational", "num-traits", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-client-api", "sc-consensus", @@ -9917,7 +9704,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "jsonrpsee", "sc-consensus-babe", "sc-consensus-epochs", @@ -9940,7 +9727,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "fork-tree", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-client-api", "sc-consensus", "sp-blockchain", @@ -9954,10 +9741,10 @@ dependencies = [ "assert_matches", "async-trait", - "futures 0.3.25", + "futures", "jsonrpsee", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-client-api", "sc-consensus", "sc-consensus-aura", @@ -9987,10 +9774,10 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "futures-timer", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-client-api", "sc-consensus", "sc-telemetry", @@ -10011,7 +9798,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "lru", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-executor-common", "sc-executor-wasmi", @@ -10083,10 +9870,10 @@ "dyn-clone", "finality-grandpa", "fork-tree", - "futures 0.3.25", + "futures", "futures-timer", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "rand 0.8.5", "sc-block-builder", @@ -10119,10 +9906,10 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "finality-grandpa", - "futures 0.3.25", + "futures", "jsonrpsee", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-client-api", "sc-finality-grandpa", "sc-rpc", @@ -10140,7 +9927,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "ansi_term", - "futures 0.3.25", + "futures", "futures-timer", "log", "sc-client-api", @@ -10179,7 +9966,7 @@ "either", "fnv", "fork-tree", - "futures 0.3.25", + "futures", "futures-timer", "ip_network", "libp2p", @@ -10187,7 +9974,7 @@ "linked_hash_set", "log", "lru", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "pin-project", "prost", @@ -10218,7 +10005,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "cid", - "futures 0.3.25", + "futures", "libp2p", "log", "prost", @@ -10240,11 +10027,11 @@ "async-trait", "bitflags", "bytes", - "futures 0.3.25", + "futures", "futures-timer", "libp2p", "linked_hash_set", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "prost-build", "sc-consensus", "sc-peerset", @@ -10264,7 +10051,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "ahash", - "futures 0.3.25", + "futures", "futures-timer", "libp2p", "log", @@ -10282,10 +10069,10 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "array-bytes 4.2.0", - "futures 0.3.25", + "futures", "libp2p", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "prost", "prost-build", "sc-client-api", @@ -10305,12 +10092,12 @@ "array-bytes 4.2.0", "async-trait", "fork-tree", - "futures 0.3.25", + "futures", "libp2p", "log", "lru", "mockall", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "prost", "prost-build", "sc-client-api", @@ -10335,11 +10122,11 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "array-bytes 4.2.0", - "futures 0.3.25", + "futures", "hex", "libp2p", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "pin-project", "sc-network-common", "sc-peerset", @@ -10356,14 +10143,14 @@ "array-bytes 4.2.0", "bytes", "fnv", - "futures 0.3.25", + "futures", "futures-timer", "hyper", "hyper-rustls", "libp2p", "num_cpus", "once_cell", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "rand 0.7.3", "sc-client-api", @@ -10383,7 +10170,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "libp2p", "log", "sc-utils", @@ -10405,11 +10192,11 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "hash-db", "jsonrpsee", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-block-builder", "sc-chain-spec", @@ -10435,10 +10222,10 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "jsonrpsee", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-chain-spec", "sc-transaction-pool-api", @@ -10458,7 +10245,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "http", "jsonrpsee", "log", @@ -10474,10 +10261,10 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "hex", "jsonrpsee", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-chain-spec", "sc-transaction-pool-api", "serde", @@ -10496,12 +10283,12 @@ "async-trait", "directories", "exit-future", - "futures 0.3.25", + "futures", "futures-timer", "hash-db", "jsonrpsee", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "pin-project", "rand 0.7.3", @@ -10564,7 +10351,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-client-api", "sp-core", @@ -10576,7 +10363,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "jsonrpsee", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-chain-spec", "sc-client-api", "sc-consensus-babe", @@ -10594,7 +10381,7 @@ version = "6.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "libc", "log", "rand 0.7.3", @@ -10614,7 +10401,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "chrono", - "futures 0.3.25", + "futures", "libp2p", "log", "parking_lot 0.12.1", @@ -10674,11 +10461,11 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "futures-timer", "linked-hash-map", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sc-client-api", "sc-transaction-pool-api", @@ -10700,7 +10487,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "log", "serde", "sp-blockchain", @@ -10713,7 +10500,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "futures-timer", "lazy_static", "log", @@ -10727,10 +10514,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "001cf62ece89779fd16105b5f515ad0e5cedcd5440d3dd806bb067978e7c3608" dependencies = [ - "bitvec 1.0.1", + "bitvec", "cfg-if", "derive_more", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info-derive", "serde", ] @@ -10749,12 +10536,11 @@ [[package]] name = "schannel" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" dependencies = [ - "lazy_static", - "windows-sys 0.36.1", + "windows-sys 0.42.0", ] [[package]] @@ -10813,9 +10599,9 @@ [[package]] name = "secp256k1" -version = "0.24.2" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9512ffd81e3a3503ed401f79c33168b9148c75038956039166cd750eaa037c3" +checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" dependencies = [ "secp256k1-sys", ] @@ -10840,9 +10626,9 @@ [[package]] name = "security-framework" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +checksum = "645926f31b250a2dca3c232496c2d898d91036e45ca0e97e0e2390c54e11be36" dependencies = [ "bitflags", "core-foundation", @@ -10853,9 +10639,9 @@ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" dependencies = [ "core-foundation-sys", "libc", @@ -10896,18 +10682,18 @@ [[package]] name = "serde" -version = "1.0.151" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.151" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -10948,17 +10734,6 @@ ] [[package]] -name = "sha1" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.6", -] - -[[package]] name = "sha2" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -11085,7 +10860,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" dependencies = [ - "bstr", + "bstr 0.2.17", "unicode-segmentation", ] @@ -11120,7 +10895,7 @@ source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ "enumn", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "paste", "sp-runtime", "sp-std", @@ -11180,10 +10955,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ - "base64", + "base64 0.13.1", "bytes", "flate2", - "futures 0.3.25", + "futures", "http", "httparse", "log", @@ -11198,7 +10973,7 @@ dependencies = [ "hash-db", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api-proc-macro", "sp-core", "sp-runtime", @@ -11226,7 +11001,7 @@ version = "7.0.0" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-core", @@ -11241,7 +11016,7 @@ dependencies = [ "integer-sqrt", "num-traits", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-debug-derive", @@ -11254,7 +11029,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-api", "sp-application-crypto", @@ -11268,7 +11043,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-inherents", "sp-runtime", "sp-std", @@ -11279,7 +11054,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-api", @@ -11296,7 +11071,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api", "sp-inherents", "sp-runtime", @@ -11308,10 +11083,10 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "log", "lru", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "sp-api", "sp-consensus", @@ -11327,10 +11102,10 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "futures-timer", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-core", "sp-inherents", "sp-runtime", @@ -11346,7 +11121,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-api", "sp-application-crypto", @@ -11365,7 +11140,7 @@ dependencies = [ "async-trait", "merlin", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-api", @@ -11386,7 +11161,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-arithmetic", @@ -11400,7 +11175,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "schnorrkel", "sp-core", @@ -11420,7 +11195,7 @@ "byteorder", "dyn-clonable", "ed25519-zebra", - "futures 0.3.25", + "futures", "hash-db", "hash256-std-hasher", "impl-serde", @@ -11429,7 +11204,7 @@ "log", "merlin", "num-traits", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "primitive-types 0.12.1", "rand 0.7.3", @@ -11503,7 +11278,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "environmental", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-std", "sp-storage", ] @@ -11515,7 +11290,7 @@ dependencies = [ "finality-grandpa", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-api", @@ -11533,7 +11308,7 @@ dependencies = [ "async-trait", "impl-trait-for-tuples", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-core", "sp-runtime", "sp-std", @@ -11547,11 +11322,11 @@ dependencies = [ "bytes", "ed25519-dalek", - "futures 0.3.25", + "futures", "hash-db", "libsecp256k1", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "secp256k1", "sp-core", @@ -11584,9 +11359,9 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "async-trait", - "futures 0.3.25", + "futures", "merlin", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "schnorrkel", "serde", @@ -11611,7 +11386,7 @@ dependencies = [ "ckb-merkle-mountain-range", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-api", @@ -11627,7 +11402,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-arithmetic", @@ -11675,7 +11450,7 @@ "hash256-std-hasher", "impl-trait-for-tuples", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "paste", "rand 0.7.3", "scale-info", @@ -11695,7 +11470,7 @@ dependencies = [ "bytes", "impl-trait-for-tuples", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "primitive-types 0.12.1", "sp-externalities", "sp-runtime-interface-proc-macro", @@ -11723,7 +11498,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-api", "sp-core", @@ -11737,7 +11512,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-runtime", @@ -11752,7 +11527,7 @@ "hash-db", "log", "num-traits", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "rand 0.7.3", "smallvec", @@ -11777,7 +11552,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "impl-serde", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "ref-cast", "serde", "sp-debug-derive", @@ -11792,7 +11567,7 @@ "async-trait", "futures-timer", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api", "sp-inherents", "sp-runtime", @@ -11805,7 +11580,7 @@ version = "6.0.0" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-std", "tracing", "tracing-core", @@ -11828,7 +11603,7 @@ dependencies = [ "async-trait", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-inherents", @@ -11849,7 +11624,7 @@ "lru", "memory-db", "nohash-hasher", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parking_lot 0.12.1", "scale-info", "sp-core", @@ -11866,7 +11641,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "impl-serde", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "parity-wasm", "scale-info", "serde", @@ -11882,7 +11657,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "proc-macro2", "quote", "syn", @@ -11895,7 +11670,7 @@ dependencies = [ "impl-trait-for-tuples", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-std", "wasmi", "wasmtime", @@ -11907,7 +11682,7 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "impl-trait-for-tuples", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "smallvec", @@ -11935,9 +11710,9 @@ [[package]] name = "ss58-registry" -version = "1.36.0" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d92659e7d18d82b803824a9ba5a6022cff101c3491d027c1c1d8d30e749284" +checksum = "d44528162f980c0e03c71e005d334332c8da0aec9f2b0b4bdc557ed4a9f24776" dependencies = [ "Inflector", "num-format", @@ -12089,10 +11864,10 @@ source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ "frame-system-rpc-runtime-api", - "futures 0.3.25", + "futures", "jsonrpsee", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-client-api", "sc-rpc-api", "sc-transaction-pool-api", @@ -12137,7 +11912,7 @@ dependencies = [ "jsonrpsee", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-client-api", "sc-rpc-api", "scale-info", @@ -12149,32 +11924,6 @@ "sp-std", "sp-trie", "trie-db", -] - -[[package]] -name = "substrate-test-client" -version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" -dependencies = [ - "array-bytes 4.2.0", - "async-trait", - "futures 0.3.25", - "parity-scale-codec 3.2.1", - "sc-client-api", - "sc-client-db", - "sc-consensus", - "sc-executor", - "sc-offchain", - "sc-service", - "serde", - "serde_json", - "sp-blockchain", - "sp-consensus", - "sp-core", - "sp-keyring", - "sp-keystore", - "sp-runtime", - "sp-state-machine", ] [[package]] @@ -12182,7 +11931,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" dependencies = [ - "futures 0.3.25", + "futures", "substrate-test-utils-derive", "tokio", ] @@ -12293,21 +12042,11 @@ [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", -] - -[[package]] -name = "terminal_size" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" -dependencies = [ - "libc", - "winapi", ] [[package]] @@ -12317,20 +12056,6 @@ checksum = "95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8" [[package]] -name = "test-runtime-constants" -version = "0.9.36" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" -dependencies = [ - "frame-support", - "polkadot-primitives", - "polkadot-runtime-common", - "smallvec", - "sp-core", - "sp-runtime", - "sp-weights", -] - -[[package]] name = "tests" version = "0.1.1" dependencies = [ @@ -12350,7 +12075,7 @@ "pallet-timestamp", "pallet-transaction-payment", "pallet-unique", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-core", "sp-io", @@ -12495,9 +12220,9 @@ [[package]] name = "tokio" -version = "1.23.0" +version = "1.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46" +checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb" dependencies = [ "autocfg", "bytes", @@ -12801,9 +12526,9 @@ [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "try-runtime-cli" @@ -12815,7 +12540,7 @@ "frame-try-runtime", "hex", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sc-chain-spec", "sc-cli", "sc-executor", @@ -12838,9 +12563,9 @@ [[package]] name = "trybuild" -version = "1.0.73" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed01de3de062db82c0920b5cabe804f88d599a3f217932292597c678c903754d" +checksum = "6ed2c57956f91546d4d33614265a85d55c8e1ab91484853a10335894786d7db6" dependencies = [ "glob", "once_cell", @@ -12884,9 +12609,8 @@ "frame-benchmarking", "jsonrpsee", "opal-runtime", - "pallet-common", "pallet-evm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "quartz-runtime", "rmrk-rpc", "sc-client-api", @@ -12898,7 +12622,6 @@ "sp-core", "sp-externalities", "sp-keystore", - "sp-rpc", "sp-runtime", "sp-state-machine", "sp-trie", @@ -12931,9 +12654,9 @@ [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "0046be40136ef78dc325e0edefccf84ccddacd0afcc1ca54103fa3c61bbdab1d" [[package]] name = "unicode-ident" @@ -12975,7 +12698,6 @@ "app-promotion-rpc", "clap", "cumulus-client-cli", - "cumulus-client-collator", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", "cumulus-client-network", @@ -12990,24 +12712,17 @@ "fc-mapping-sync", "fc-rpc", "fc-rpc-core", - "flexi_logger", "fp-rpc", "frame-benchmarking", "frame-benchmarking-cli", - "futures 0.3.25", - "jsonrpsee", + "futures", "log", "opal-runtime", - "pallet-ethereum", - "pallet-transaction-payment-rpc", "pallet-transaction-payment-rpc-runtime-api", - "parity-scale-codec 3.2.1", - "parking_lot 0.12.1", + "parity-scale-codec", "polkadot-cli", - "polkadot-parachain", "polkadot-primitives", "polkadot-service", - "polkadot-test-service", "quartz-runtime", "rmrk-rpc", "sc-basic-authorship", @@ -13015,14 +12730,9 @@ "sc-cli", "sc-client-api", "sc-consensus", - "sc-consensus-aura", "sc-consensus-manual-seal", "sc-executor", - "sc-finality-grandpa", - "sc-keystore", "sc-network", - "sc-rpc", - "sc-rpc-api", "sc-service", "sc-sysinfo", "sc-telemetry", @@ -13033,11 +12743,8 @@ "sp-api", "sp-block-builder", "sp-blockchain", - "sp-consensus", "sp-consensus-aura", "sp-core", - "sp-finality-grandpa", - "sp-inherents", "sp-io", "sp-keystore", "sp-offchain", @@ -13045,7 +12752,6 @@ "sp-session", "sp-timestamp", "sp-transaction-pool", - "sp-trie", "substrate-build-script-utils", "substrate-frame-rpc-system", "substrate-prometheus-endpoint", @@ -13066,25 +12772,15 @@ dependencies = [ "app-promotion-rpc", "fc-db", - "fc-mapping-sync", "fc-rpc", "fc-rpc-core", "fp-rpc", "fp-storage", - "futures 0.3.25", "jsonrpsee", - "pallet-common", - "pallet-ethereum", "pallet-transaction-payment-rpc", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-unique", "rmrk-rpc", "sc-client-api", - "sc-consensus-aura", - "sc-consensus-epochs", "sc-finality-grandpa", - "sc-finality-grandpa-rpc", - "sc-keystore", "sc-network", "sc-rpc", "sc-rpc-api", @@ -13094,16 +12790,8 @@ "sp-api", "sp-block-builder", "sp-blockchain", - "sp-consensus", - "sp-consensus-aura", - "sp-core", - "sp-offchain", "sp-runtime", - "sp-session", - "sp-storage", - "sp-transaction-pool", "substrate-frame-rpc-system", - "tokio", "uc-rpc", "up-common", "up-data-structs", @@ -13183,12 +12871,11 @@ "pallet-unique", "pallet-xcm", "parachain-info", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-parachain", "precompile-utils-macro", "rmrk-rpc", "scale-info", - "serde", "smallvec", "sp-api", "sp-arithmetic", @@ -13263,9 +12950,8 @@ "bondrewd", "derivative", "frame-support", - "frame-system", "pallet-evm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "rmrk-traits", "scale-info", "serde", @@ -13279,7 +12965,7 @@ name = "up-pov-estimate-rpc" version = "0.1.0" dependencies = [ - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "serde", "sp-api", @@ -13294,7 +12980,7 @@ dependencies = [ "pallet-common", "pallet-evm", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-api", "sp-core", "sp-runtime", @@ -13522,7 +13208,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" dependencies = [ - "futures 0.3.25", + "futures", "js-sys", "parking_lot 0.11.2", "pin-utils", @@ -13617,7 +13303,7 @@ checksum = "bcd849399d17d2270141cfe47fa0d91ee52d5f8ea9b98cf7ddde0d53e5f79882" dependencies = [ "anyhow", - "base64", + "base64 0.13.1", "bincode", "directories-next", "file-per-thread-logger", @@ -13786,7 +13472,7 @@ version = "0.9.36" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc" dependencies = [ - "bitvec 1.0.1", + "bitvec", "frame-benchmarking", "frame-election-provider-support", "frame-executive", @@ -13837,7 +13523,7 @@ "pallet-vesting", "pallet-xcm", "pallet-xcm-benchmarks", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-parachain", "polkadot-primitives", "polkadot-runtime-common", @@ -13966,19 +13652,19 @@ checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", + "windows_aarch64_msvc 0.42.1", + "windows_i686_gnu 0.42.1", + "windows_i686_msvc 0.42.1", + "windows_x86_64_gnu 0.42.1", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "windows_x86_64_msvc 0.42.1", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" [[package]] name = "windows_aarch64_msvc" @@ -13994,9 +13680,9 @@ [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] name = "windows_i686_gnu" @@ -14012,9 +13698,9 @@ [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] name = "windows_i686_msvc" @@ -14030,9 +13716,9 @@ [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] name = "windows_x86_64_gnu" @@ -14048,15 +13734,15 @@ [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] name = "windows_x86_64_msvc" @@ -14072,9 +13758,9 @@ [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" [[package]] name = "winreg" @@ -14087,12 +13773,6 @@ [[package]] name = "wyz" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" - -[[package]] -name = "wyz" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" @@ -14119,7 +13799,7 @@ "derivative", "impl-trait-for-tuples", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "scale-info", "sp-runtime", "xcm-procedural", @@ -14134,7 +13814,7 @@ "frame-system", "log", "pallet-transaction-payment", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "polkadot-parachain", "scale-info", "sp-arithmetic", @@ -14154,7 +13834,7 @@ "frame-support", "impl-trait-for-tuples", "log", - "parity-scale-codec 3.2.1", + "parity-scale-codec", "sp-arithmetic", "sp-core", "sp-io", @@ -14180,7 +13860,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5" dependencies = [ - "futures 0.3.25", + "futures", "log", "nohash-hasher", "parking_lot 0.12.1", @@ -14230,10 +13910,11 @@ [[package]] name = "zstd-sys" -version = "2.0.4+zstd.1.5.2" +version = "2.0.5+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa202f2ef00074143e219d15b62ffc317d17cc33909feac471c044087cad7b0" +checksum = "edc50ffce891ad571e9f9afe5039c4837bede781ac4bb13052ed7ae695518596" dependencies = [ "cc", "libc", + "pkg-config", ] --- a/Cargo.toml +++ b/Cargo.toml @@ -1,38 +1,24 @@ [workspace] -resolver = "2" +default-members = ['client/*', 'node/*', 'runtime/opal'] members = [ - 'node/*', - 'pallets/*', - 'client/*', - 'primitives/*', - 'crates/*', - 'runtime/opal', - 'runtime/quartz', - 'runtime/unique', - 'runtime/tests', + 'client/*', + 'crates/*', + 'node/*', + 'pallets/*', + 'primitives/*', + 'runtime/opal', + 'runtime/quartz', + 'runtime/tests', + 'runtime/unique', ] -default-members = ['node/*', 'client/*', 'runtime/opal'] package.version = "0.9.36" +resolver = "2" [profile.release] panic = 'unwind' -[workspace.dependencies.orml-vesting] -git = "https://github.com/uniquenetwork/open-runtime-module-library" -branch = "feature/polkadot-v0.9.36" -default-features = false - -[workspace.dependencies.orml-xtokens] -git = "https://github.com/uniquenetwork/open-runtime-module-library" -branch = "feature/polkadot-v0.9.36" -default-features = false - -[workspace.dependencies.orml-tokens] -git = "https://github.com/uniquenetwork/open-runtime-module-library" -branch = "feature/polkadot-v0.9.36" -default-features = false - -[workspace.dependencies.orml-traits] -git = "https://github.com/uniquenetwork/open-runtime-module-library" -branch = "feature/polkadot-v0.9.36" -default-features = false +[workspace.dependencies] +orml-tokens = { git = "https://github.com/uniquenetwork/open-runtime-module-library", branch = "feature/polkadot-v0.9.36", default-features = false } +orml-traits = { git = "https://github.com/uniquenetwork/open-runtime-module-library", branch = "feature/polkadot-v0.9.36", default-features = false } +orml-vesting = { git = "https://github.com/uniquenetwork/open-runtime-module-library", branch = "feature/polkadot-v0.9.36", default-features = false } +orml-xtokens = { git = "https://github.com/uniquenetwork/open-runtime-module-library", branch = "feature/polkadot-v0.9.36", default-features = false } --- a/Makefile +++ b/Makefile @@ -144,7 +144,15 @@ .PHONY: bench-app-promotion bench-app-promotion: make _bench PALLET=app-promotion PALLET_DIR=app-promotion - + .PHONY: bench -# Disabled: bench-scheduler, bench-collator-selection, bench-rmrk-core, bench-rmrk-equip -bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-configuration bench-foreign-assets bench-identity +# Disabled: bench-scheduler, bench-collator-selection, bench-identity, bench-rmrk-core, bench-rmrk-equip +bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-configuration bench-foreign-assets + +.PHONY: check +check: + SKIP_WASM_BUILD=1 cargo check --features=quartz-runtime,unique-runtime,try-runtime,runtime-benchmarks --tests + +.PHONY: clippy +clippy: + SKIP_WASM_BUILD=1 cargo clippy --features=quartz-runtime,unique-runtime,try-runtime,runtime-benchmarks --tests --- a/client/rpc/Cargo.toml +++ b/client/rpc/Cargo.toml @@ -1,49 +1,47 @@ [package] +edition = "2021" +license = "GPLv3" name = "uc-rpc" version = "0.1.4" -license = "GPLv3" -edition = "2021" [dependencies] -pallet-common = { default-features = false, path = '../../pallets/common' } -up-data-structs = { default-features = false, path = '../../primitives/data-structs' } -up-common = { default-features = false, path = '../../primitives/common' } -up-rpc = { path = "../../primitives/rpc" } -app-promotion-rpc = { path = "../../primitives/app_promotion_rpc" } -rmrk-rpc = { path = "../../primitives/rmrk-rpc" } +anyhow = "1.0.57" +app-promotion-rpc.path = "../../primitives/app_promotion_rpc" +codec = { package = "parity-scale-codec", version = "3.1.2" } +jsonrpsee = { version = "0.16.2", features = ["macros", "server"] } +rmrk-rpc.path = "../../primitives/rmrk-rpc" +trie-db = { version = "0.24.0", default-features = false } +up-common = { default-features = false, path = "../../primitives/common" } +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } up-pov-estimate-rpc = { path = "../../primitives/pov-estimate-rpc", optional = true } -codec = { package = "parity-scale-codec", version = "3.1.2" } -jsonrpsee = { version = "0.16.2", features = ["server", "macros"] } -anyhow = "1.0.57" +up-rpc.path = "../../primitives/rpc" zstd = { version = "0.11.2", default-features = false } -trie-db = { version = "0.24.0", default-features = false } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sc-rpc-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sc-service = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-externalities = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-blockchain = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-externalities = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-keystore = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-rpc = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-trie = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sc-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -unique-runtime = { path = '../../runtime/unique', optional = true } -quartz-runtime = { path = '../../runtime/quartz', optional = true } -opal-runtime = { path = '../../runtime/opal' } +opal-runtime.path = "../../runtime/opal" +quartz-runtime = { path = "../../runtime/quartz", optional = true } +unique-runtime = { path = "../../runtime/unique", optional = true } [features] pov-estimate = [ - 'up-pov-estimate-rpc', - 'unique-runtime?/pov-estimate', - 'quartz-runtime?/pov-estimate', - 'opal-runtime/pov-estimate', + 'opal-runtime/pov-estimate', + 'quartz-runtime?/pov-estimate', + 'unique-runtime?/pov-estimate', + 'up-pov-estimate-rpc', ] --- a/crates/evm-coder/Cargo.toml +++ b/crates/evm-coder/Cargo.toml @@ -1,18 +1,17 @@ [package] +edition = "2021" +license = "GPLv3" name = "evm-coder" version = "0.1.6" -license = "GPLv3" -edition = "2021" [dependencies] sha3-const = { version = "0.1.1", default-features = false } # evm-coder reexports those proc-macro -evm-coder-procedural = { path = "./procedural" } +evm-coder-procedural.path = "./procedural" # Evm uses primitive-types for H160, H256 and others primitive-types = { version = "0.12.1", default-features = false } # Evm doesn't have reexports for log and others ethereum = { version = "0.14.0", default-features = false } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } # Error types for execution evm-core = { default-features = false, git = "https://github.com/uniquenetwork/evm", branch = "unique-polkadot-v0.9.36" } @@ -28,11 +27,6 @@ [features] default = ["std"] -std = [ - "ethereum/std", - "primitive-types/std", - "evm-core/std", - "frame-support/std", -] +std = ["ethereum/std", "evm-core/std", "frame-support/std", "primitive-types/std"] # Stub/interface generation stubgen = [] --- a/crates/evm-coder/procedural/Cargo.toml +++ b/crates/evm-coder/procedural/Cargo.toml @@ -1,8 +1,8 @@ [package] +edition = "2021" +license = "GPLv3" name = "evm-coder-procedural" version = "0.2.3" -license = "GPLv3" -edition = "2021" [lib] proc-macro = true @@ -11,9 +11,9 @@ # Ethereum uses keccak (=sha3) for selectors sha3 = "0.10.1" # Value formatting +Inflector = "0.11.4" hex = "0.4.3" -Inflector = "0.11.4" # General proc-macro utilities +proc-macro2 = "1.0" quote = "1.0" -proc-macro2 = "1.0" syn = { version = "1.0", features = ["full"] } --- a/crates/evm-coder/procedural/src/to_log.rs +++ b/crates/evm-coder/procedural/src/to_log.rs @@ -231,7 +231,7 @@ #[automatically_derived] impl ::evm_coder::events::ToLog for #name { - fn to_log(&self, contract: Address) -> ::ethereum::Log { + fn to_log(&self, contract: Address) -> ::evm_coder::ethereum::Log { use ::evm_coder::events::ToTopic; use ::evm_coder::abi::AbiWrite; let mut writer = ::evm_coder::abi::AbiWriter::new(); @@ -241,7 +241,7 @@ #serializers, )* } - ::ethereum::Log { + ::evm_coder::ethereum::Log { address: contract, topics, data: writer.finish(), --- a/crates/evm-coder/src/lib.rs +++ b/crates/evm-coder/src/lib.rs @@ -96,6 +96,9 @@ pub use evm_coder_procedural::AbiCoder; pub use sha3_const; +/// macro reexports +pub use ethereum; + /// Derives [`ToLog`] for enum /// /// Selectors will be derived from variant names, there is currently no way to have custom naming @@ -198,7 +201,7 @@ /// Should be same between evm-coder and substrate to avoid confusion /// /// Isn't same thing as gas, some mapping is required between those types -pub type Weight = frame_support::weights::Weight; +pub type Weight = frame_support::pallet_prelude::Weight; /// In substrate, we have benchmarking, which allows /// us to not rely on gas metering, but instead predict amount of gas to execute call --- a/crates/struct-versioning/Cargo.toml +++ b/crates/struct-versioning/Cargo.toml @@ -1,11 +1,11 @@ [package] +edition = "2021" name = "struct-versioning" version = "0.1.0" -edition = "2021" [dependencies] +quote = "1.0.15" syn = { version = "1.0", features = ["full"] } -quote = "1.0.15" [lib] proc-macro = true --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -1,286 +1,7 @@ -################################################################################ -# Build Dependencies - -[build-dependencies.substrate-build-script-utils] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -################################################################################ -# Substrate Dependecies - -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - -[dependencies.frame-benchmarking] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-benchmarking-cli] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.try-runtime-cli] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-transaction-payment-rpc] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.substrate-prometheus-endpoint] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-basic-authorship] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-chain-spec] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-cli] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-client-api] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-consensus] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-consensus-aura] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-executor] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-finality-grandpa] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-keystore] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-rpc] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-rpc-api] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-service] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-telemetry] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-transaction-pool] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-tracing] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-sysinfo] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-block-builder] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-api] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-blockchain] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-consensus] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-consensus-aura] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-core] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-io] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-finality-grandpa] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-inherents] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-keystore] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-offchain] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-runtime] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-session] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-timestamp] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-transaction-pool] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-trie] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.substrate-frame-rpc-system] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sc-network] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.serde] -features = ['derive'] -version = '1.0.130' - -[dependencies.serde_json] -version = '1.0.68' - -[dependencies.sc-consensus-manual-seal] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -################################################################################ -# Cumulus dependencies - -[dependencies.cumulus-client-consensus-aura] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-client-consensus-common] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-client-collator] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-client-cli] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-client-network] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-primitives-core] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-primitives-parachain-inherent] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-client-service] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-relay-chain-interface] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-relay-chain-inprocess-interface] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-relay-chain-minimal-node] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -################################################################################ -# Polkadot dependencies -[dependencies.polkadot-primitives] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" - -[dependencies.polkadot-service] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" - -[dependencies.polkadot-cli] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" +[build-dependencies] +substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -[dependencies.polkadot-test-service] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" - -[dependencies.polkadot-parachain] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" - - ################################################################################ -# Local dependencies - -[dependencies.up-common] -path = "../../primitives/common" - -[dependencies.unique-runtime] -path = '../../runtime/unique' -optional = true - -[dependencies.quartz-runtime] -path = '../../runtime/quartz' -optional = true - -[dependencies.opal-runtime] -path = '../../runtime/opal' -optional = true - -[dependencies.up-data-structs] -path = "../../primitives/data-structs" -default-features = false - -[dependencies.up-rpc] -path = "../../primitives/rpc" - -[dependencies.pallet-transaction-payment-rpc-runtime-api] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -################################################################################ # Package [package] @@ -302,49 +23,98 @@ targets = ['x86_64-unknown-linux-gnu'] [dependencies] +clap = "4.1" +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.2" } +cumulus-client-cli = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +cumulus-client-consensus-aura = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +cumulus-client-consensus-common = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +cumulus-client-network = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +cumulus-client-service = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +cumulus-primitives-core = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +cumulus-relay-chain-inprocess-interface = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +cumulus-relay-chain-interface = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +cumulus-relay-chain-minimal-node = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } futures = '0.3.17' -log = '0.4.16' -flexi_logger = "0.24.2" -parking_lot = '0.12.1' -clap = "4.0.9" -jsonrpsee = { version = "0.16.2", features = ["server", "macros"] } -tokio = { version = "1.19.2", features = ["time"] } +log = '0.4.17' +opal-runtime = { path = "../../runtime/opal", optional = true } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36" } +polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36" } +polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36" } +quartz-runtime = { path = "../../runtime/quartz", optional = true } +sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-consensus-manual-seal = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-service = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-sysinfo = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +serde = { features = ['derive'], version = "1.0" } +serde_json = "1.0" +sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-session = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +tokio = { version = "1.24", features = ["time"] } +try-runtime-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +unique-runtime = { path = "../../runtime/unique", optional = true } +up-common.path = "../../primitives/common" +up-data-structs = { path = "../../primitives/data-structs", default-features = false } +up-rpc.path = "../../primitives/rpc" -fc-rpc-core = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fc-consensus = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +fc-db = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fc-mapping-sync = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fc-rpc = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fc-db = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +fc-rpc-core = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fp-rpc = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false } +rmrk-rpc.path = "../../primitives/rmrk-rpc" +uc-rpc = { default-features = false, path = "../../client/rpc" } unique-rpc = { default-features = false, path = "../rpc" } -uc-rpc = { default-features = false, path = "../../client/rpc" } -app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false } -rmrk-rpc = { path = "../../primitives/rmrk-rpc" } up-pov-estimate-rpc = { path = "../../primitives/pov-estimate-rpc", default-features = false } [features] default = ["opal-runtime"] -runtime-benchmarks = [ - 'unique-runtime?/runtime-benchmarks', - 'quartz-runtime?/runtime-benchmarks', - 'opal-runtime/runtime-benchmarks', - 'polkadot-service/runtime-benchmarks', - 'polkadot-cli/runtime-benchmarks', - 'sc-service/runtime-benchmarks', +pov-estimate = [ + 'opal-runtime/pov-estimate', + 'quartz-runtime?/pov-estimate', + 'uc-rpc/pov-estimate', + 'unique-rpc/pov-estimate', + 'unique-runtime?/pov-estimate', ] -try-runtime = [ - 'unique-runtime?/try-runtime', - 'quartz-runtime?/try-runtime', - 'opal-runtime?/try-runtime', - 'try-runtime-cli/try-runtime', +runtime-benchmarks = [ + 'opal-runtime/runtime-benchmarks', + 'polkadot-cli/runtime-benchmarks', + 'polkadot-service/runtime-benchmarks', + 'quartz-runtime?/runtime-benchmarks', + 'sc-service/runtime-benchmarks', + 'unique-runtime?/runtime-benchmarks', ] sapphire-runtime = ['quartz-runtime', 'quartz-runtime/become-sapphire'] -pov-estimate = [ - 'unique-runtime?/pov-estimate', - 'quartz-runtime?/pov-estimate', - 'opal-runtime/pov-estimate', - 'uc-rpc/pov-estimate', - 'unique-rpc/pov-estimate', +try-runtime = [ + 'opal-runtime?/try-runtime', + 'quartz-runtime?/try-runtime', + 'try-runtime-cli/try-runtime', + 'unique-runtime?/try-runtime', ] --- a/node/rpc/Cargo.toml +++ b/node/rpc/Cargo.toml @@ -1,69 +1,48 @@ [package] -name = "unique-rpc" -version = "0.1.2" authors = ['Unique Network '] -license = 'GPLv3' +description = "Unique chain rpc" edition = "2021" -description = "Unique chain rpc" +license = 'GPLv3' +name = "unique-rpc" +version = "0.1.2" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] [dependencies] -futures = { version = "0.3.17", features = ["compat"] } -jsonrpsee = { version = "0.16.2", features = ["server", "macros"] } +jsonrpsee = { version = "0.16.2", features = ["macros", "server"] } # pallet-contracts-rpc = { git = 'https://github.com/paritytech/substrate', branch = 'master' } pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sc-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sc-consensus-epochs = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sc-finality-grandpa-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sc-service = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-storage = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-session = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -tokio = { version = "1.19.2", features = ["macros", "sync"] } -pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +fc-db = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fp-storage = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fc-db = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fc-mapping-sync = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-common = { default-features = false, path = "../../pallets/common" } -up-common = { path = "../../primitives/common" } -pallet-unique = { path = "../../pallets/unique" } -uc-rpc = { path = "../../client/rpc" } -up-rpc = { path = "../../primitives/rpc" } -app-promotion-rpc = { path = "../../primitives/app_promotion_rpc" } -rmrk-rpc = { path = "../../primitives/rmrk-rpc" } -up-pov-estimate-rpc = { path = "../../primitives/pov-estimate-rpc" } +app-promotion-rpc.path = "../../primitives/app_promotion_rpc" +rmrk-rpc.path = "../../primitives/rmrk-rpc" +serde = { features = ['derive'], version = "1.0.130" } +uc-rpc.path = "../../client/rpc" +up-common.path = "../../primitives/common" up-data-structs = { default-features = false, path = "../../primitives/data-structs" } - -[dependencies.serde] -features = ['derive'] -version = '1.0.130' +up-pov-estimate-rpc.path = "../../primitives/pov-estimate-rpc" +up-rpc.path = "../../primitives/rpc" [features] default = [] +pov-estimate = ['uc-rpc/pov-estimate'] std = [] unique-runtime = [] -pov-estimate = ['uc-rpc/pov-estimate'] --- a/pallets/app-promotion/Cargo.toml +++ b/pallets/app-promotion/Cargo.toml @@ -15,63 +15,52 @@ targets = ['x86_64-unknown-linux-gnu'] [features] -default = ['std',] +default = ['std'] runtime-benchmarks = [ - 'frame-benchmarking', - 'frame-support/runtime-benchmarks', - 'frame-system/runtime-benchmarks', - # 'pallet-unique/runtime-benchmarks', + 'frame-benchmarking', + 'frame-support/runtime-benchmarks', + 'frame-system/runtime-benchmarks', + # 'pallet-unique/runtime-benchmarks', ] std = [ - 'codec/std', - 'frame-benchmarking/std', - 'frame-support/std', - 'frame-system/std', - 'pallet-balances/std', - 'pallet-timestamp/std', - 'pallet-randomness-collective-flip/std', - 'pallet-evm/std', - 'sp-io/std', - 'sp-std/std', - 'sp-runtime/std', - 'sp-core/std', - 'serde/std', + 'codec/std', + 'frame-benchmarking/std', + 'frame-support/std', + 'frame-system/std', + 'pallet-balances/std', + 'pallet-evm/std', + 'sp-core/std', + 'sp-runtime/std', + 'sp-std/std', ] try-runtime = ["frame-support/try-runtime"] [dependencies] -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } ################################################################################ # Substrate Dependencies -codec = { default-features = false, features = [ - 'derive', -], package = 'parity-scale-codec', version = '3.1.2' } +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } + frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-timestamp = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-randomness-collective-flip = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -serde = { default-features = false, features = ['derive'], version = '1.0.130' } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } ################################################################################ # local dependencies -up-data-structs = { default-features = false, path = "../../primitives/data-structs" } pallet-common = { default-features = false, path = "../common" } pallet-configuration = { default-features = false, path = "../configuration" } -pallet-unique = { default-features = false, path = "../unique" } pallet-evm-contract-helpers = { default-features = false, path = "../evm-contract-helpers" } pallet-evm-migration = { default-features = false, path = "../evm-migration" } +pallet-unique = { default-features = false, path = "../unique" } +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } # [dev-dependencies] --- a/pallets/collator-selection/Cargo.toml +++ b/pallets/collator-selection/Cargo.toml @@ -1,43 +1,43 @@ [package] -name = "pallet-collator-selection" -version = "4.0.0" +authors = ["Parity Technologies ", "Unique Network "] description = "Simple staking pallet with a fixed stake." -authors = ["Parity Technologies ", "Unique Network "] edition = "2021" homepage = "https://unique.network" -repository = "https://github.com/UniqueNetwork/unique-chain" license = "GPLv3" +name = "pallet-collator-selection" +repository = "https://github.com/UniqueNetwork/unique-chain" +version = "4.0.0" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] [dependencies] -log = { version = "0.4.17", default-features = false } codec = { default-features = false, features = ["derive"], package = "parity-scale-codec", version = "3.0.0" } +log = { version = "0.4.17", default-features = false } rand = { version = "0.8.5", features = ["std_rng"], default-features = false } scale-info = { version = "2.2.0", default-features = false, features = ["derive"] } serde = { version = "1.0.145", default-features = false } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-staking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } pallet-authorship = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-configuration = { default-features = false, path = "../configuration" } pallet-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-configuration = { default-features = false, path = "../configuration" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-staking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [dev-dependencies] +pallet-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-aura = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [features] default = ["std"] @@ -48,17 +48,17 @@ ] std = [ "codec/std", + "frame-benchmarking/std", + "frame-support/std", + "frame-system/std", "log/std", - "scale-info/std", + "pallet-authorship/std", + "pallet-session/std", "rand/std", + "scale-info/std", "sp-runtime/std", "sp-staking/std", "sp-std/std", - "frame-support/std", - "frame-system/std", - "frame-benchmarking/std", - "pallet-authorship/std", - "pallet-session/std", ] -try-runtime = [ "frame-support/try-runtime" ] +try-runtime = ["frame-support/try-runtime"] --- a/pallets/common/Cargo.toml +++ b/pallets/common/Cargo.toml @@ -1,50 +1,37 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-common" version = "0.1.12" -license = "GPLv3" -edition = "2021" -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' +[dependencies] +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } -[dependencies] +ethereum = { version = "0.14.0", default-features = false } +evm-coder = { default-features = false, path = "../../crates/evm-coder" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -up-data-structs = { default-features = false, path = '../../primitives/data-structs' } -pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' } -evm-coder = { default-features = false, path = '../../crates/evm-coder' } -ethereum = { version = "0.14.0", default-features = false } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } up-pov-estimate-rpc = { default-features = false, path = "../../primitives/pov-estimate-rpc" } -serde = { version = "1.0.130", default-features = false } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } - [features] default = ["std"] +runtime-benchmarks = ["frame-benchmarking/runtime-benchmarks", "up-data-structs/runtime-benchmarks"] std = [ - "frame-support/std", - "frame-system/std", - "sp-runtime/std", - "sp-std/std", - "fp-evm-mapping/std", - "up-data-structs/std", - "pallet-evm/std", - "up-pov-estimate-rpc/std", -] -runtime-benchmarks = [ - "frame-benchmarking/runtime-benchmarks", - "up-data-structs/runtime-benchmarks", + "frame-support/std", + "frame-system/std", + "pallet-evm/std", + "sp-runtime/std", + "sp-std/std", + "up-data-structs/std", + "up-pov-estimate-rpc/std", ] -try-runtime = ["frame-support/try-runtime"] stubgen = ["evm-coder/stubgen"] +try-runtime = ["frame-support/try-runtime"] --- a/pallets/common/src/erc.rs +++ b/pallets/common/src/erc.rs @@ -28,8 +28,8 @@ use sp_std::{vec, vec::Vec}; use sp_core::U256; use up_data_structs::{ - AccessMode, CollectionMode, CollectionPermissions, OwnerRestrictedSet, Property, - SponsoringRateLimit, SponsorshipState, + CollectionMode, CollectionPermissions, OwnerRestrictedSet, Property, SponsoringRateLimit, + SponsorshipState, }; use crate::{ --- a/pallets/common/src/eth.rs +++ b/pallets/common/src/eth.rs @@ -80,10 +80,7 @@ if cross_account_id.is_canonical_substrate() { Self::from_sub::(cross_account_id.as_sub()) } else { - Self { - eth: *cross_account_id.as_eth(), - sub: Default::default(), - } + Self::from_eth(*cross_account_id.as_eth()) } } /// Creates [`CrossAddress`] from Substrate account. @@ -97,6 +94,13 @@ sub: U256::from_big_endian(account_id.as_ref()), } } + /// Creates [`CrossAddress`] from Ethereum account. + pub fn from_eth(address: Address) -> Self { + Self { + eth: address, + sub: Default::default(), + } + } /// Converts [`CrossAddress`] to `CrossAccountId`. pub fn into_sub_cross_account(&self) -> evm_coder::execution::Result where --- a/pallets/common/src/lib.rs +++ b/pallets/common/src/lib.rs @@ -100,6 +100,7 @@ PropertyValue, PropertyPermission, PropertiesError, + TokenOwnerError, PropertyKeyPermission, TokenData, TrySetProperty, @@ -2134,7 +2135,7 @@ /// Get the owner of the token. /// /// * `token` - The token for which you need to find out the owner. - fn token_owner(&self, token: TokenId) -> Option; + fn token_owner(&self, token: TokenId) -> Result; /// Returns 10 tokens owners in no particular order. /// --- a/pallets/configuration/Cargo.toml +++ b/pallets/configuration/Cargo.toml @@ -1,38 +1,32 @@ [package] +edition = "2021" name = "pallet-configuration" version = "0.1.3" -edition = "2021" [dependencies] -parity-scale-codec = { version = "3.1.5", features = [ - "derive", -], default-features = false } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } +fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +parity-scale-codec = { version = "3.2.2", features = ["derive"], default-features = false } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } +smallvec = "1.6.1" +sp-arithmetic = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-arithmetic = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -smallvec = "1.6.1" xcm = { default-features = false, git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36" } [features] default = ["std"] runtime-benchmarks = ["frame-benchmarking"] std = [ - "parity-scale-codec/std", + "fp-evm/std", + "frame-benchmarking/std", "frame-support/std", "frame-system/std", - "frame-benchmarking/std", - "sp-runtime/std", + "parity-scale-codec/std", + "sp-arithmetic/std", + "sp-core/std", "sp-std/std", - "sp-core/std", - "sp-arithmetic/std", - "fp-evm/std", ] try-runtime = ["frame-support/try-runtime"] --- a/pallets/configuration/src/weights.rs +++ b/pallets/configuration/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_configuration //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-12-28, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-01-18, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -48,37 +48,37 @@ impl WeightInfo for SubstrateWeight { // Storage: Configuration WeightToFeeCoefficientOverride (r:0 w:1) fn set_weight_to_fee_coefficient_override() -> Weight { - Weight::from_ref_time(5_691_000 as u64) + Weight::from_ref_time(4_756_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Configuration MinGasPriceOverride (r:0 w:1) fn set_min_gas_price_override() -> Weight { - Weight::from_ref_time(5_521_000 as u64) + Weight::from_ref_time(4_754_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Configuration XcmAllowedLocationsOverride (r:0 w:1) fn set_xcm_allowed_locations() -> Weight { - Weight::from_ref_time(6_091_000 as u64) + Weight::from_ref_time(4_875_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Configuration AppPromomotionConfigurationOverride (r:0 w:1) fn set_app_promotion_configuration_override() -> Weight { - Weight::from_ref_time(6_241_000 as u64) + Weight::from_ref_time(4_832_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Configuration CollatorSelectionDesiredCollatorsOverride (r:0 w:1) fn set_collator_selection_desired_collators() -> Weight { - Weight::from_ref_time(25_298_000 as u64) + Weight::from_ref_time(18_337_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Configuration CollatorSelectionLicenseBondOverride (r:0 w:1) fn set_collator_selection_license_bond() -> Weight { - Weight::from_ref_time(18_675_000 as u64) + Weight::from_ref_time(14_806_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Configuration CollatorSelectionKickThresholdOverride (r:0 w:1) fn set_collator_selection_kick_threshold() -> Weight { - Weight::from_ref_time(18_044_000 as u64) + Weight::from_ref_time(14_524_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } } @@ -87,37 +87,37 @@ impl WeightInfo for () { // Storage: Configuration WeightToFeeCoefficientOverride (r:0 w:1) fn set_weight_to_fee_coefficient_override() -> Weight { - Weight::from_ref_time(5_691_000 as u64) + Weight::from_ref_time(4_756_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Configuration MinGasPriceOverride (r:0 w:1) fn set_min_gas_price_override() -> Weight { - Weight::from_ref_time(5_521_000 as u64) + Weight::from_ref_time(4_754_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Configuration XcmAllowedLocationsOverride (r:0 w:1) fn set_xcm_allowed_locations() -> Weight { - Weight::from_ref_time(6_091_000 as u64) + Weight::from_ref_time(4_875_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Configuration AppPromomotionConfigurationOverride (r:0 w:1) fn set_app_promotion_configuration_override() -> Weight { - Weight::from_ref_time(6_241_000 as u64) + Weight::from_ref_time(4_832_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Configuration CollatorSelectionDesiredCollatorsOverride (r:0 w:1) fn set_collator_selection_desired_collators() -> Weight { - Weight::from_ref_time(25_298_000 as u64) + Weight::from_ref_time(18_337_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Configuration CollatorSelectionLicenseBondOverride (r:0 w:1) fn set_collator_selection_license_bond() -> Weight { - Weight::from_ref_time(18_675_000 as u64) + Weight::from_ref_time(14_806_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Configuration CollatorSelectionKickThresholdOverride (r:0 w:1) fn set_collator_selection_kick_threshold() -> Weight { - Weight::from_ref_time(18_044_000 as u64) + Weight::from_ref_time(14_524_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } } --- a/pallets/evm-coder-substrate/Cargo.toml +++ b/pallets/evm-coder-substrate/Cargo.toml @@ -1,42 +1,32 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-evm-coder-substrate" version = "0.1.3" -license = "GPLv3" -edition = "2021" [dependencies] -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -ethereum = { version = "0.14.0", default-features = false } +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.2.2" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } + evm-coder = { default-features = false, path = "../../crates/evm-coder" } -pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } up-data-structs = { default-features = false, path = "../../primitives/data-structs" } - -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' [features] default = ["std"] +runtime-benchmarks = ['frame-benchmarking'] std = [ - "sp-std/std", - "sp-core/std", - "ethereum/std", - "evm-coder/std", - "pallet-ethereum/std", - "pallet-evm/std", - "frame-support/std", - "frame-system/std", - 'frame-benchmarking/std', + "evm-coder/std", + "frame-support/std", + "frame-system/std", + "pallet-evm/std", + "sp-core/std", + "sp-std/std", + 'frame-benchmarking/std', ] -runtime-benchmarks = ['frame-benchmarking'] try-runtime = ["frame-support/try-runtime"] --- a/pallets/evm-contract-helpers/Cargo.toml +++ b/pallets/evm-contract-helpers/Cargo.toml @@ -1,56 +1,42 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-evm-contract-helpers" version = "0.3.0" -license = "GPLv3" -edition = "2021" [dependencies] -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -log = { default-features = false, version = "0.4.14" } -ethereum = { version = "0.14.0", default-features = false } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } # Substrate frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } # Unique pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36" } # Locals -evm-coder = { default-features = false, path = '../../crates/evm-coder' } -pallet-common = { default-features = false, path = '../../pallets/common' } -pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' } -pallet-evm-transaction-payment = { default-features = false, path = '../../pallets/evm-transaction-payment' } -up-data-structs = { default-features = false, path = '../../primitives/data-structs', features = [ - 'serde1', -] } +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +evm-coder = { default-features = false, path = "../../crates/evm-coder" } +pallet-common = { default-features = false, path = "../../pallets/common" } +pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" } +pallet-evm-transaction-payment = { default-features = false, path = "../../pallets/evm-transaction-payment" } +up-data-structs = { default-features = false, path = "../../primitives/data-structs", features = ['serde1'] } -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - [features] default = ["std"] std = [ - "frame-support/std", - "frame-system/std", - "sp-runtime/std", - "sp-std/std", - "sp-core/std", - "evm-coder/std", - "pallet-evm-coder-substrate/std", - "pallet-evm/std", - "up-sponsorship/std", - "pallet-common/std", + "evm-coder/std", + "frame-support/std", + "frame-system/std", + "pallet-common/std", + "pallet-evm-coder-substrate/std", + "pallet-evm/std", + "sp-core/std", + "sp-std/std", + "up-sponsorship/std", ] -try-runtime = ["frame-support/try-runtime"] stubgen = ["evm-coder/stubgen", "pallet-common/stubgen"] +try-runtime = ["frame-support/try-runtime"] --- a/pallets/evm-migration/Cargo.toml +++ b/pallets/evm-migration/Cargo.toml @@ -1,42 +1,22 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-evm-migration" version = "0.1.1" -license = "GPLv3" -edition = "2021" [dependencies] -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } ethereum = { version = "0.14.0", default-features = false } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } - -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [features] -default = ["std", "runtime-benchmarks"] -std = [ - "frame-support/std", - "frame-system/std", - "frame-benchmarking/std", - "sp-runtime/std", - "sp-std/std", - "sp-io/std", - "sp-core/std", - "pallet-evm/std", - "fp-evm/std", -] +default = ["runtime-benchmarks", "std"] runtime-benchmarks = ["frame-benchmarking"] +std = ["frame-benchmarking/std", "frame-support/std", "frame-system/std", "pallet-evm/std", "sp-core/std", "sp-std/std"] try-runtime = ["frame-support/try-runtime"] --- a/pallets/evm-migration/src/weights.rs +++ b/pallets/evm-migration/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_evm_migration //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-12-26, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-01-18, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -48,37 +48,35 @@ // Storage: System Account (r:1 w:0) // Storage: EVM AccountCodes (r:1 w:0) fn begin() -> Weight { - Weight::from_ref_time(15_073_000 as u64) + Weight::from_ref_time(15_553_000 as u64) .saturating_add(T::DbWeight::get().reads(3 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: EvmMigration MigrationPending (r:1 w:0) // Storage: EVM AccountStorages (r:0 w:1) fn set_data(b: u32, ) -> Weight { - Weight::from_ref_time(7_943_438 as u64) - // Standard Error: 1_792 - .saturating_add(Weight::from_ref_time(960_230 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(8_826_376 as u64) + // Standard Error: 1_575 + .saturating_add(Weight::from_ref_time(953_367 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes((1 as u64).saturating_mul(b as u64))) } // Storage: EvmMigration MigrationPending (r:1 w:1) // Storage: EVM AccountCodes (r:0 w:1) - fn finish(b: u32, ) -> Weight { - Weight::from_ref_time(9_316_585 as u64) - // Standard Error: 595 - .saturating_add(Weight::from_ref_time(2_082 as u64).saturating_mul(b as u64)) + fn finish(_b: u32, ) -> Weight { + Weight::from_ref_time(9_382_842 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } fn insert_eth_logs(b: u32, ) -> Weight { - Weight::from_ref_time(6_570_767 as u64) - // Standard Error: 2_292 - .saturating_add(Weight::from_ref_time(722_345 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(8_647_347 as u64) + // Standard Error: 1_360 + .saturating_add(Weight::from_ref_time(736_935 as u64).saturating_mul(b as u64)) } fn insert_events(b: u32, ) -> Weight { - Weight::from_ref_time(10_936_376 as u64) - // Standard Error: 1_227 - .saturating_add(Weight::from_ref_time(1_311_481 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(12_275_370 as u64) + // Standard Error: 1_243 + .saturating_add(Weight::from_ref_time(1_269_025 as u64).saturating_mul(b as u64)) } } @@ -88,36 +86,34 @@ // Storage: System Account (r:1 w:0) // Storage: EVM AccountCodes (r:1 w:0) fn begin() -> Weight { - Weight::from_ref_time(15_073_000 as u64) + Weight::from_ref_time(15_553_000 as u64) .saturating_add(RocksDbWeight::get().reads(3 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: EvmMigration MigrationPending (r:1 w:0) // Storage: EVM AccountStorages (r:0 w:1) fn set_data(b: u32, ) -> Weight { - Weight::from_ref_time(7_943_438 as u64) - // Standard Error: 1_792 - .saturating_add(Weight::from_ref_time(960_230 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(8_826_376 as u64) + // Standard Error: 1_575 + .saturating_add(Weight::from_ref_time(953_367 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes((1 as u64).saturating_mul(b as u64))) } // Storage: EvmMigration MigrationPending (r:1 w:1) // Storage: EVM AccountCodes (r:0 w:1) - fn finish(b: u32, ) -> Weight { - Weight::from_ref_time(9_316_585 as u64) - // Standard Error: 595 - .saturating_add(Weight::from_ref_time(2_082 as u64).saturating_mul(b as u64)) + fn finish(_b: u32, ) -> Weight { + Weight::from_ref_time(9_382_842 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } fn insert_eth_logs(b: u32, ) -> Weight { - Weight::from_ref_time(6_570_767 as u64) - // Standard Error: 2_292 - .saturating_add(Weight::from_ref_time(722_345 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(8_647_347 as u64) + // Standard Error: 1_360 + .saturating_add(Weight::from_ref_time(736_935 as u64).saturating_mul(b as u64)) } fn insert_events(b: u32, ) -> Weight { - Weight::from_ref_time(10_936_376 as u64) - // Standard Error: 1_227 - .saturating_add(Weight::from_ref_time(1_311_481 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(12_275_370 as u64) + // Standard Error: 1_243 + .saturating_add(Weight::from_ref_time(1_269_025 as u64).saturating_mul(b as u64)) } } --- a/pallets/evm-transaction-payment/Cargo.toml +++ b/pallets/evm-transaction-payment/Cargo.toml @@ -1,44 +1,32 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-evm-transaction-payment" version = "0.1.1" -license = "GPLv3" -edition = "2021" [dependencies] -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } + +fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36" } -fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } - -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' [features] default = ["std"] std = [ - "frame-support/std", - "frame-system/std", - "sp-runtime/std", - "sp-std/std", - "sp-io/std", - "sp-core/std", - "pallet-evm/std", - "pallet-ethereum/std", - "fp-evm/std", - "up-sponsorship/std", - "fp-evm-mapping/std", + "fp-evm/std", + "frame-support/std", + "frame-system/std", + "pallet-evm/std", + "sp-core/std", + "sp-runtime/std", + "sp-std/std", + "up-sponsorship/std", ] try-runtime = ["frame-support/try-runtime"] --- a/pallets/foreign-assets/Cargo.toml +++ b/pallets/foreign-assets/Cargo.toml @@ -1,54 +1,53 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-foreign-assets" version = "0.1.0" -license = "GPLv3" -edition = "2021" [dependencies] +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } + +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36", default-features = false } log = { version = "0.4.16", default-features = false } +orml-tokens.workspace = true +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36", default-features = false } +pallet-common = { default-features = false, path = "../common" } +pallet-fungible = { default-features = false, path = "../fungible" } serde = { version = "1.0.136", optional = true } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36", default-features = false } sp-std = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36", default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36", default-features = false } -up-data-structs = { default-features = false, path = '../../primitives/data-structs' } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36", default-features = false } -pallet-common = { default-features = false, path = '../common' } -pallet-fungible = { default-features = false, path = '../fungible' } +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } -xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } -orml-tokens.workspace = true -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [dev-dependencies] +hex = "0.4" +pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } serde_json = "1.0.68" -hex = { version = "0.4" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [features] default = ["std"] +runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks'] std = [ - "serde", - "log/std", "codec/std", - "scale-info/std", - "sp-runtime/std", - "sp-std/std", "frame-support/std", "frame-system/std", - "up-data-structs/std", - "pallet-common/std", + "log/std", + "orml-tokens/std", "pallet-balances/std", + "pallet-common/std", "pallet-fungible/std", - "orml-tokens/std", + "scale-info/std", + "serde", + "sp-io/std", + "sp-runtime/std", + "sp-std/std", + "up-data-structs/std", ] try-runtime = ["frame-support/try-runtime"] -runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks'] --- a/pallets/foreign-assets/src/weights.rs +++ b/pallets/foreign-assets/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_foreign_assets //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-12-26, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-01-18, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -53,14 +53,14 @@ // Storage: Common CollectionProperties (r:0 w:1) // Storage: Common CollectionById (r:0 w:1) fn register_foreign_asset() -> Weight { - Weight::from_ref_time(54_196_000 as u64) + Weight::from_ref_time(53_122_000 as u64) .saturating_add(T::DbWeight::get().reads(9 as u64)) .saturating_add(T::DbWeight::get().writes(11 as u64)) } // Storage: ForeignAssets ForeignAssetLocations (r:1 w:1) // Storage: ForeignAssets AssetMetadatas (r:1 w:1) fn update_foreign_asset() -> Weight { - Weight::from_ref_time(23_719_000 as u64) + Weight::from_ref_time(23_796_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } @@ -80,14 +80,14 @@ // Storage: Common CollectionProperties (r:0 w:1) // Storage: Common CollectionById (r:0 w:1) fn register_foreign_asset() -> Weight { - Weight::from_ref_time(54_196_000 as u64) + Weight::from_ref_time(53_122_000 as u64) .saturating_add(RocksDbWeight::get().reads(9 as u64)) .saturating_add(RocksDbWeight::get().writes(11 as u64)) } // Storage: ForeignAssets ForeignAssetLocations (r:1 w:1) // Storage: ForeignAssets AssetMetadatas (r:1 w:1) fn update_foreign_asset() -> Weight { - Weight::from_ref_time(23_719_000 as u64) + Weight::from_ref_time(23_796_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } --- a/pallets/fungible/Cargo.toml +++ b/pallets/fungible/Cargo.toml @@ -1,49 +1,41 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-fungible" version = "0.1.9" -license = "GPLv3" -edition = "2021" -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - [dependencies] +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } + +evm-coder = { default-features = false, path = "../../crates/evm-coder" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-common = { default-features = false, path = "../common" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm-coder-substrate = { default-features = false, path = "../evm-coder-substrate" } +pallet-structure = { default-features = false, path = "../structure" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-common = { default-features = false, path = '../common' } -pallet-structure = { default-features = false, path = '../structure' } -up-data-structs = { default-features = false, path = '../../primitives/data-structs' } -evm-coder = { default-features = false, path = '../../crates/evm-coder' } -pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' } -ethereum = { version = "0.14.0", default-features = false } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } [features] default = ["std"] +runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks'] std = [ - "frame-support/std", - "frame-system/std", - "sp-runtime/std", - "sp-std/std", - "up-data-structs/std", - "pallet-common/std", - "pallet-structure/std", - "evm-coder/std", - "ethereum/std", - "pallet-evm-coder-substrate/std", - 'frame-benchmarking/std', - "pallet-evm/std", + "evm-coder/std", + "frame-support/std", + "frame-system/std", + "pallet-common/std", + "pallet-evm-coder-substrate/std", + "pallet-evm/std", + "pallet-structure/std", + "sp-runtime/std", + "sp-std/std", + "up-data-structs/std", + 'frame-benchmarking/std', ] -runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks'] -try-runtime = ["frame-support/try-runtime"] stubgen = ["evm-coder/stubgen", "pallet-common/stubgen"] +try-runtime = ["frame-support/try-runtime"] --- a/pallets/fungible/src/common.rs +++ b/pallets/fungible/src/common.rs @@ -17,7 +17,9 @@ use core::marker::PhantomData; use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight, traits::Get}; -use up_data_structs::{TokenId, CollectionId, CreateItemExData, budget::Budget, CreateItemData}; +use up_data_structs::{ + TokenId, CollectionId, CreateItemExData, budget::Budget, CreateItemData, TokenOwnerError, +}; use pallet_common::{ CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight, weights::WeightInfo as _, @@ -404,8 +406,8 @@ TokenId::default() } - fn token_owner(&self, _token: TokenId) -> Option { - None + fn token_owner(&self, _token: TokenId) -> Result { + Err(TokenOwnerError::MultipleOwners) } /// Returns 10 tokens owners in no particular order. --- a/pallets/fungible/src/weights.rs +++ b/pallets/fungible/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_fungible //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-12-26, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-01-18, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -50,16 +50,16 @@ // Storage: Fungible TotalSupply (r:1 w:1) // Storage: Fungible Balance (r:1 w:1) fn create_item() -> Weight { - Weight::from_ref_time(19_626_000 as u64) + Weight::from_ref_time(20_203_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } // Storage: Fungible TotalSupply (r:1 w:1) // Storage: Fungible Balance (r:4 w:4) fn create_multiple_items_ex(b: u32, ) -> Weight { - Weight::from_ref_time(22_364_107 as u64) - // Standard Error: 6_123 - .saturating_add(Weight::from_ref_time(3_608_476 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(19_426_730 as u64) + // Standard Error: 5_132 + .saturating_add(Weight::from_ref_time(3_579_196 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(b as u64))) .saturating_add(T::DbWeight::get().writes(1 as u64)) @@ -68,34 +68,34 @@ // Storage: Fungible TotalSupply (r:1 w:1) // Storage: Fungible Balance (r:1 w:1) fn burn_item() -> Weight { - Weight::from_ref_time(21_886_000 as u64) + Weight::from_ref_time(21_871_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } // Storage: Fungible Balance (r:2 w:2) fn transfer() -> Weight { - Weight::from_ref_time(23_827_000 as u64) + Weight::from_ref_time(22_677_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } // Storage: Fungible Balance (r:1 w:0) // Storage: Fungible Allowance (r:0 w:1) fn approve() -> Weight { - Weight::from_ref_time(21_626_000 as u64) + Weight::from_ref_time(22_109_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Fungible Balance (r:1 w:0) // Storage: Fungible Allowance (r:0 w:1) fn approve_from() -> Weight { - Weight::from_ref_time(19_817_000 as u64) + Weight::from_ref_time(22_434_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Fungible Allowance (r:1 w:1) // Storage: Fungible Balance (r:2 w:2) fn transfer_from() -> Weight { - Weight::from_ref_time(31_398_000 as u64) + Weight::from_ref_time(31_777_000 as u64) .saturating_add(T::DbWeight::get().reads(3 as u64)) .saturating_add(T::DbWeight::get().writes(3 as u64)) } @@ -103,7 +103,7 @@ // Storage: Fungible TotalSupply (r:1 w:1) // Storage: Fungible Balance (r:1 w:1) fn burn_from() -> Weight { - Weight::from_ref_time(30_499_000 as u64) + Weight::from_ref_time(32_101_000 as u64) .saturating_add(T::DbWeight::get().reads(3 as u64)) .saturating_add(T::DbWeight::get().writes(3 as u64)) } @@ -114,16 +114,16 @@ // Storage: Fungible TotalSupply (r:1 w:1) // Storage: Fungible Balance (r:1 w:1) fn create_item() -> Weight { - Weight::from_ref_time(19_626_000 as u64) + Weight::from_ref_time(20_203_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } // Storage: Fungible TotalSupply (r:1 w:1) // Storage: Fungible Balance (r:4 w:4) fn create_multiple_items_ex(b: u32, ) -> Weight { - Weight::from_ref_time(22_364_107 as u64) - // Standard Error: 6_123 - .saturating_add(Weight::from_ref_time(3_608_476 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(19_426_730 as u64) + // Standard Error: 5_132 + .saturating_add(Weight::from_ref_time(3_579_196 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(b as u64))) .saturating_add(RocksDbWeight::get().writes(1 as u64)) @@ -132,34 +132,34 @@ // Storage: Fungible TotalSupply (r:1 w:1) // Storage: Fungible Balance (r:1 w:1) fn burn_item() -> Weight { - Weight::from_ref_time(21_886_000 as u64) + Weight::from_ref_time(21_871_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } // Storage: Fungible Balance (r:2 w:2) fn transfer() -> Weight { - Weight::from_ref_time(23_827_000 as u64) + Weight::from_ref_time(22_677_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } // Storage: Fungible Balance (r:1 w:0) // Storage: Fungible Allowance (r:0 w:1) fn approve() -> Weight { - Weight::from_ref_time(21_626_000 as u64) + Weight::from_ref_time(22_109_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Fungible Balance (r:1 w:0) // Storage: Fungible Allowance (r:0 w:1) fn approve_from() -> Weight { - Weight::from_ref_time(19_817_000 as u64) + Weight::from_ref_time(22_434_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Fungible Allowance (r:1 w:1) // Storage: Fungible Balance (r:2 w:2) fn transfer_from() -> Weight { - Weight::from_ref_time(31_398_000 as u64) + Weight::from_ref_time(31_777_000 as u64) .saturating_add(RocksDbWeight::get().reads(3 as u64)) .saturating_add(RocksDbWeight::get().writes(3 as u64)) } @@ -167,7 +167,7 @@ // Storage: Fungible TotalSupply (r:1 w:1) // Storage: Fungible Balance (r:1 w:1) fn burn_from() -> Weight { - Weight::from_ref_time(30_499_000 as u64) + Weight::from_ref_time(32_101_000 as u64) .saturating_add(RocksDbWeight::get().reads(3 as u64)) .saturating_add(RocksDbWeight::get().writes(3 as u64)) } --- a/pallets/identity/Cargo.toml +++ b/pallets/identity/Cargo.toml @@ -1,24 +1,27 @@ [package] -name = "pallet-identity" -version = "4.0.0-dev" authors = ["Parity Technologies ", "Unique Network "] +description = "FRAME identity management pallet" edition = "2021" +homepage = "https://substrate.io" license = "Apache-2.0" -homepage = "https://substrate.io" -repository = "https://github.com/paritytech/substrate/" -description = "FRAME identity management pallet" +name = "pallet-identity" readme = "README.md" +repository = "https://github.com/paritytech/substrate/" +version = "4.0.0-dev" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] [dependencies] -codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } -enumflags2 = { version = "0.7.4" } -scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ + "derive", + "max-encoded-len", +] } +enumflags2 = "0.7.4" frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } sp-io = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { version = "5.0.0", default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } @@ -29,6 +32,11 @@ [features] default = ["std"] +runtime-benchmarks = [ + "frame-benchmarking/runtime-benchmarks", + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", +] std = [ "codec/std", "frame-benchmarking?/std", @@ -38,10 +46,5 @@ "sp-io/std", "sp-runtime/std", "sp-std/std", -] -runtime-benchmarks = [ - "frame-benchmarking/runtime-benchmarks", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", ] try-runtime = ["frame-support/try-runtime"] --- a/pallets/identity/src/benchmarking.rs +++ b/pallets/identity/src/benchmarking.rs @@ -417,7 +417,7 @@ let n in 0..600; use frame_benchmarking::account; let identities = (0..n).map(|i| ( - account("caller", i, 0), + account("caller", i, SEED), Registration::, T::MaxRegistrars, T::MaxAdditionalFields> { judgements: Default::default(), deposit: Default::default(), @@ -433,7 +433,7 @@ use frame_benchmarking::account; let origin = T::ForceOrigin::successful_origin(); let identities = (0..n).map(|i| ( - account("caller", i, 0), + account("caller", i, SEED), Registration::, T::MaxRegistrars, T::MaxAdditionalFields> { judgements: Default::default(), deposit: Default::default(), @@ -446,6 +446,23 @@ let identities = identities.into_iter().map(|(acc, _)| acc).collect::>(); }: _(origin, identities) + force_set_subs { + let s in 0 .. T::MaxSubAccounts::get(); + let n in 0..600; + use frame_benchmarking::account; + let identities = (0..n).map(|i| { + let caller: T::AccountId = account("caller", i, SEED); + ( + caller.clone(), + ( + BalanceOf::::max_value(), + create_sub_accounts::(&caller, s).unwrap().try_into().unwrap(), + ), + ) + }).collect::>(); + let origin = T::ForceOrigin::successful_origin(); + }: _(origin, identities) + add_sub { let s in 0 .. T::MaxSubAccounts::get() - 1; --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -314,6 +314,8 @@ main: T::AccountId, deposit: BalanceOf, }, + /// A number of identities were forcibly updated with new sub-identities. + SubIdentitiesInserted { amount: u32 }, } #[pallet::call] @@ -1137,13 +1139,64 @@ ) -> DispatchResult { T::ForceOrigin::ensure_origin(origin)?; for identity in identities.clone() { - IdentityOf::::set(identity, None); + let (_, sub_ids) = >::take(&identity); + >::remove(&identity); + for sub in sub_ids.iter() { + >::remove(sub); + } } Self::deposit_event(Event::IdentitiesRemoved { amount: identities.len() as u32, }); Ok(()) } + + /// Set sub-identities to be associated with the provided accounts as force origin. + /// + /// This is not meant to operate in tandem with the identity pallet as is, + /// and be instead used to keep identities made and verified externally, + /// forbidden from interacting with an ordinary user, since it ignores any safety mechanism. + #[pallet::call_index(17)] + #[pallet::weight(T::WeightInfo::force_set_subs( + T::MaxSubAccounts::get(), // S + subs.len() as u32, // N + ))] + pub fn force_set_subs( + origin: OriginFor, + subs: Vec<( + T::AccountId, + ( + BalanceOf, + BoundedVec<(T::AccountId, Data), T::MaxSubAccounts>, + ), + )>, + ) -> DispatchResult { + T::ForceOrigin::ensure_origin(origin)?; + for identity in subs.clone() { + let account = identity.0; + let (_, old_subs) = >::get(&account); + for old_sub in old_subs { + >::remove(old_sub); + } + + let mut ids = BoundedVec::::default(); + for (id, name) in identity.1 .1 { + >::insert(&id, (account.clone(), name)); + ids.try_push(id) + .expect("subs length is less than T::MaxSubAccounts; qed"); + } + + if ids.is_empty() { + >::remove(&account); + } else { + >::insert(account, (identity.1 .0, ids)); + } + } + Self::deposit_event(Event::SubIdentitiesInserted { + amount: subs.len() as u32, + }); + Ok(()) + } } } --- a/pallets/identity/src/weights.rs +++ b/pallets/identity/src/weights.rs @@ -78,6 +78,7 @@ fn kill_identity(r: u32, s: u32, x: u32, ) -> Weight; fn force_insert_identities(x: u32, n: u32, ) -> Weight; fn force_remove_identities(x: u32, n: u32, ) -> Weight; + fn force_set_subs(s: u32, n: u32, ) -> Weight; fn add_sub(s: u32, ) -> Weight; fn rename_sub(s: u32, ) -> Weight; fn remove_sub(s: u32, ) -> Weight; @@ -273,6 +274,20 @@ .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64).saturating_mul(n as u64)) } + // Storage: Identity IdentityOf (r:1 w:1) + // todo:collator + /// The range of component `s` is `[0, 100]`. + /// The range of component `n` is `[0, 600]`. + fn force_set_subs(s: u32, n: u32) -> Weight { + // Minimum execution time: 41_872 nanoseconds. + Weight::from_ref_time(40_230_216 as u64) + // Standard Error: 2_342 + .saturating_add(Weight::from_ref_time(145_168 as u64)) + // Standard Error: 457 + .saturating_add(Weight::from_ref_time(291_732 as u64).saturating_mul(s as u64)) + .saturating_add(T::DbWeight::get().reads(1 as u64)) + .saturating_add(T::DbWeight::get().writes(1 as u64).saturating_mul(n as u64)) + } // Storage: Identity IdentityOf (r:1 w:0) // Storage: Identity SuperOf (r:1 w:1) // Storage: Identity SubsOf (r:1 w:1) @@ -509,6 +524,20 @@ .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64).saturating_mul(n as u64)) } + // Storage: Identity IdentityOf (r:1 w:1) + // todo:collator + /// The range of component `xs is `[0, 100]`. + /// The range of component `n` is `[0, 600]`. + fn force_set_subs(s: u32, n: u32) -> Weight { + // Minimum execution time: 41_872 nanoseconds. + Weight::from_ref_time(40_230_216 as u64) + // Standard Error: 2_342 + .saturating_add(Weight::from_ref_time(145_168 as u64)) + // Standard Error: 457 + .saturating_add(Weight::from_ref_time(291_732 as u64).saturating_mul(s as u64)) + .saturating_add(RocksDbWeight::get().reads(1 as u64)) + .saturating_add(RocksDbWeight::get().writes(1 as u64).saturating_mul(n as u64)) + } // Storage: Identity IdentityOf (r:1 w:0) // Storage: Identity SuperOf (r:1 w:1) // Storage: Identity SubsOf (r:1 w:1) --- a/pallets/inflation/Cargo.toml +++ b/pallets/inflation/Cargo.toml @@ -18,85 +18,25 @@ default = ['std'] runtime-benchmarks = ['frame-benchmarking'] std = [ - 'codec/std', - 'serde/std', - 'frame-support/std', - 'frame-system/std', - 'pallet-balances/std', - 'pallet-timestamp/std', - 'pallet-randomness-collective-flip/std', - 'sp-std/std', - 'sp-runtime/std', - 'frame-benchmarking/std', + 'codec/std', + 'frame-benchmarking/std', + 'frame-support/std', + 'frame-system/std', + 'pallet-balances/std', + 'sp-runtime/std', + 'sp-std/std', ] try-runtime = ["frame-support/try-runtime"] -################################################################################ -# Substrate Dependencies +[dependencies] +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - -[dependencies.frame-benchmarking] -default-features = false -optional = true -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-support] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-system] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-balances] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-timestamp] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-randomness-collective-flip] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-std] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.serde] -default-features = false -features = ['derive'] -version = '1.0.130' - -[dependencies.sp-runtime] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-core] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-io] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies] -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } --- a/pallets/maintenance/Cargo.toml +++ b/pallets/maintenance/Cargo.toml @@ -1,39 +1,25 @@ [package] -name = "pallet-maintenance" -version = "0.1.0" authors = ["Unique Network "] +description = "Unique Maintenance pallet" edition = "2021" +homepage = "https://unique.network" license = "GPLv3" -homepage = "https://unique.network" +name = "pallet-maintenance" +readme = "README.md" repository = "https://github.com/UniqueNetwork/unique-chain" -description = "Unique Maintenance pallet" -readme = "README.md" +version = "0.1.0" [dependencies] -codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ - "derive", -] } -scale-info = { version = "2.1.1", default-features = false, features = [ - "derive", -] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } + +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [features] default = ["std"] -std = [ - "codec/std", - "scale-info/std", - "frame-support/std", - "frame-system/std", - "frame-benchmarking/std", - "sp-std/std", -] -runtime-benchmarks = [ - "frame-benchmarking", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", -] +runtime-benchmarks = ["frame-benchmarking", "frame-support/runtime-benchmarks", "frame-system/runtime-benchmarks"] +std = ["codec/std", "frame-benchmarking/std", "frame-support/std", "frame-system/std", "scale-info/std", "sp-std/std"] try-runtime = ["frame-support/try-runtime"] --- a/pallets/nonfungible/Cargo.toml +++ b/pallets/nonfungible/Cargo.toml @@ -1,55 +1,46 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-nonfungible" version = "0.1.12" -license = "GPLv3" -edition = "2021" - -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' [dependencies] +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +evm-coder = { default-features = false, path = "../../crates/evm-coder" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-common = { default-features = false, path = "../common" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm-coder-substrate = { default-features = false, path = "../evm-coder-substrate" } +pallet-structure = { default-features = false, path = "../structure" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-common = { default-features = false, path = '../common' } -pallet-structure = { default-features = false, path = '../structure' } -up-data-structs = { default-features = false, path = '../../primitives/data-structs' } -evm-coder = { default-features = false, path = '../../crates/evm-coder' } -pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' } -ethereum = { version = "0.14.0", default-features = false } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -struct-versioning = { path = "../../crates/struct-versioning" } +struct-versioning.path = "../../crates/struct-versioning" +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } [features] default = ["std"] -std = [ - "frame-support/std", - "frame-system/std", - "sp-runtime/std", - "sp-std/std", - "up-data-structs/std", - "pallet-common/std", - "pallet-structure/std", - "evm-coder/std", - "ethereum/std", - "pallet-evm-coder-substrate/std", - 'frame-benchmarking/std', - "pallet-evm/std", -] runtime-benchmarks = [ - 'frame-benchmarking', - 'frame-support/runtime-benchmarks', - 'frame-system/runtime-benchmarks', - 'up-data-structs/runtime-benchmarks', + 'frame-benchmarking', + 'frame-support/runtime-benchmarks', + 'frame-system/runtime-benchmarks', + 'up-data-structs/runtime-benchmarks', ] -try-runtime = ["frame-support/try-runtime"] +std = [ + "evm-coder/std", + "frame-support/std", + "frame-system/std", + "pallet-common/std", + "pallet-evm-coder-substrate/std", + "pallet-evm/std", + "pallet-structure/std", + "sp-runtime/std", + "sp-std/std", + "up-data-structs/std", + 'frame-benchmarking/std', +] stubgen = ["evm-coder/stubgen", "pallet-common/stubgen"] +try-runtime = ["frame-support/try-runtime"] --- a/pallets/nonfungible/src/common.rs +++ b/pallets/nonfungible/src/common.rs @@ -19,7 +19,7 @@ use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight}; use up_data_structs::{ TokenId, CreateItemExData, CollectionId, budget::Budget, Property, PropertyKey, - PropertyKeyPermission, PropertyValue, + PropertyKeyPermission, PropertyValue, TokenOwnerError, }; use pallet_common::{ CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight, @@ -460,13 +460,15 @@ TokenId(>::get(self.id)) } - fn token_owner(&self, token: TokenId) -> Option { - >::get((self.id, token)).map(|t| t.owner) + fn token_owner(&self, token: TokenId) -> Result { + >::get((self.id, token)) + .map(|t| t.owner) + .ok_or(TokenOwnerError::NotFound) } /// Returns token owners. fn token_owners(&self, token: TokenId) -> Vec { - self.token_owner(token).map_or_else(|| vec![], |t| vec![t]) + self.token_owner(token).map_or_else(|_| vec![], |t| vec![t]) } fn token_property(&self, token_id: TokenId, key: &PropertyKey) -> Option { --- a/pallets/nonfungible/src/erc.rs +++ b/pallets/nonfungible/src/erc.rs @@ -728,7 +728,7 @@ fn cross_owner_of(&self, token_id: U256) -> Result { Self::token_owner(&self, token_id.try_into()?) .map(|o| eth::CrossAddress::from_sub_cross_account::(&o)) - .ok_or(Error::Revert("key too large".into())) + .map_err(|_| Error::Revert("token not found".into())) } /// Returns the token properties. --- a/pallets/nonfungible/src/weights.rs +++ b/pallets/nonfungible/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_nonfungible //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-12-26, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-01-18, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -59,37 +59,44 @@ impl WeightInfo for SubstrateWeight { // Storage: Nonfungible TokensMinted (r:1 w:1) // Storage: Nonfungible AccountBalance (r:1 w:1) + // Storage: Nonfungible TokenProperties (r:1 w:1) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Nonfungible TokenData (r:0 w:1) // Storage: Nonfungible Owned (r:0 w:1) fn create_item() -> Weight { - Weight::from_ref_time(26_377_000 as u64) - .saturating_add(T::DbWeight::get().reads(2 as u64)) - .saturating_add(T::DbWeight::get().writes(4 as u64)) + Weight::from_ref_time(34_815_000 as u64) + .saturating_add(T::DbWeight::get().reads(4 as u64)) + .saturating_add(T::DbWeight::get().writes(5 as u64)) } // Storage: Nonfungible TokensMinted (r:1 w:1) // Storage: Nonfungible AccountBalance (r:1 w:1) + // Storage: Nonfungible TokenProperties (r:4 w:4) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Nonfungible TokenData (r:0 w:4) // Storage: Nonfungible Owned (r:0 w:4) fn create_multiple_items(b: u32, ) -> Weight { - Weight::from_ref_time(20_059_186 as u64) - // Standard Error: 4_735 - .saturating_add(Weight::from_ref_time(4_856_306 as u64).saturating_mul(b as u64)) - .saturating_add(T::DbWeight::get().reads(2 as u64)) + Weight::from_ref_time(18_772_483 as u64) + // Standard Error: 5_664 + .saturating_add(Weight::from_ref_time(7_602_706 as u64).saturating_mul(b as u64)) + .saturating_add(T::DbWeight::get().reads(3 as u64)) + .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(b as u64))) .saturating_add(T::DbWeight::get().writes(2 as u64)) - .saturating_add(T::DbWeight::get().writes((2 as u64).saturating_mul(b as u64))) + .saturating_add(T::DbWeight::get().writes((3 as u64).saturating_mul(b as u64))) } // Storage: Nonfungible TokensMinted (r:1 w:1) // Storage: Nonfungible AccountBalance (r:4 w:4) + // Storage: Nonfungible TokenProperties (r:4 w:4) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Nonfungible TokenData (r:0 w:4) // Storage: Nonfungible Owned (r:0 w:4) fn create_multiple_items_ex(b: u32, ) -> Weight { - Weight::from_ref_time(16_365_581 as u64) - // Standard Error: 9_711 - .saturating_add(Weight::from_ref_time(6_681_940 as u64).saturating_mul(b as u64)) - .saturating_add(T::DbWeight::get().reads(1 as u64)) - .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(b as u64))) + Weight::from_ref_time(15_449_226 as u64) + // Standard Error: 6_012 + .saturating_add(Weight::from_ref_time(9_325_591 as u64).saturating_mul(b as u64)) + .saturating_add(T::DbWeight::get().reads(2 as u64)) + .saturating_add(T::DbWeight::get().reads((2 as u64).saturating_mul(b as u64))) .saturating_add(T::DbWeight::get().writes(1 as u64)) - .saturating_add(T::DbWeight::get().writes((3 as u64).saturating_mul(b as u64))) + .saturating_add(T::DbWeight::get().writes((4 as u64).saturating_mul(b as u64))) } // Storage: Nonfungible TokenData (r:1 w:1) // Storage: Nonfungible TokenChildren (r:1 w:0) @@ -99,7 +106,7 @@ // Storage: Nonfungible Owned (r:0 w:1) // Storage: Nonfungible TokenProperties (r:0 w:1) fn burn_item() -> Weight { - Weight::from_ref_time(33_502_000 as u64) + Weight::from_ref_time(35_221_000 as u64) .saturating_add(T::DbWeight::get().reads(5 as u64)) .saturating_add(T::DbWeight::get().writes(5 as u64)) } @@ -111,7 +118,7 @@ // Storage: Nonfungible Owned (r:0 w:1) // Storage: Nonfungible TokenProperties (r:0 w:1) fn burn_recursively_self_raw() -> Weight { - Weight::from_ref_time(43_255_000 as u64) + Weight::from_ref_time(45_504_000 as u64) .saturating_add(T::DbWeight::get().reads(5 as u64)) .saturating_add(T::DbWeight::get().writes(5 as u64)) } @@ -124,9 +131,9 @@ // Storage: Nonfungible TokenProperties (r:0 w:1) // Storage: Common CollectionById (r:1 w:0) fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight { - Weight::from_ref_time(42_992_000 as u64) - // Standard Error: 1_010_119 - .saturating_add(Weight::from_ref_time(209_972_755 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(45_539_000 as u64) + // Standard Error: 1_047_413 + .saturating_add(Weight::from_ref_time(216_998_419 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(7 as u64)) .saturating_add(T::DbWeight::get().reads((4 as u64).saturating_mul(b as u64))) .saturating_add(T::DbWeight::get().writes(6 as u64)) @@ -137,21 +144,21 @@ // Storage: Nonfungible Allowance (r:1 w:0) // Storage: Nonfungible Owned (r:0 w:2) fn transfer() -> Weight { - Weight::from_ref_time(31_239_000 as u64) + Weight::from_ref_time(30_047_000 as u64) .saturating_add(T::DbWeight::get().reads(4 as u64)) .saturating_add(T::DbWeight::get().writes(5 as u64)) } // Storage: Nonfungible TokenData (r:1 w:0) // Storage: Nonfungible Allowance (r:1 w:1) fn approve() -> Weight { - Weight::from_ref_time(21_985_000 as u64) + Weight::from_ref_time(24_476_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Nonfungible TokenData (r:1 w:0) // Storage: Nonfungible Allowance (r:1 w:1) fn approve_from() -> Weight { - Weight::from_ref_time(18_965_000 as u64) + Weight::from_ref_time(22_818_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } @@ -160,7 +167,7 @@ // Storage: Nonfungible AccountBalance (r:2 w:2) // Storage: Nonfungible Owned (r:0 w:2) fn transfer_from() -> Weight { - Weight::from_ref_time(36_382_000 as u64) + Weight::from_ref_time(37_251_000 as u64) .saturating_add(T::DbWeight::get().reads(4 as u64)) .saturating_add(T::DbWeight::get().writes(6 as u64)) } @@ -172,54 +179,54 @@ // Storage: Nonfungible Owned (r:0 w:1) // Storage: Nonfungible TokenProperties (r:0 w:1) fn burn_from() -> Weight { - Weight::from_ref_time(42_046_000 as u64) + Weight::from_ref_time(43_202_000 as u64) .saturating_add(T::DbWeight::get().reads(5 as u64)) .saturating_add(T::DbWeight::get().writes(6 as u64)) } // Storage: Common CollectionPropertyPermissions (r:1 w:1) fn set_token_property_permissions(b: u32, ) -> Weight { - Weight::from_ref_time(5_543_000 as u64) - // Standard Error: 40_525 - .saturating_add(Weight::from_ref_time(12_126_787 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(5_282_000 as u64) + // Standard Error: 45_166 + .saturating_add(Weight::from_ref_time(12_937_288 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Nonfungible TokenProperties (r:1 w:1) // Storage: Common CollectionPropertyPermissions (r:1 w:0) fn set_token_properties(b: u32, ) -> Weight { - Weight::from_ref_time(31_850_484 as u64) - // Standard Error: 9_618 - .saturating_add(Weight::from_ref_time(4_721_947 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(28_171_920 as u64) + // Standard Error: 13_715 + .saturating_add(Weight::from_ref_time(6_217_801 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Nonfungible TokenProperties (r:1 w:1) // Storage: Common CollectionPropertyPermissions (r:1 w:0) fn delete_token_properties(b: u32, ) -> Weight { - Weight::from_ref_time(13_795_000 as u64) - // Standard Error: 28_239 - .saturating_add(Weight::from_ref_time(12_840_446 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(15_511_000 as u64) + // Standard Error: 68_273 + .saturating_add(Weight::from_ref_time(22_917_441 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Nonfungible TokenData (r:1 w:0) fn token_owner() -> Weight { - Weight::from_ref_time(6_881_000 as u64) + Weight::from_ref_time(7_088_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) } // Storage: Nonfungible CollectionAllowance (r:0 w:1) fn set_allowance_for_all() -> Weight { - Weight::from_ref_time(16_223_000 as u64) + Weight::from_ref_time(17_607_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Nonfungible CollectionAllowance (r:1 w:0) fn allowance_for_all() -> Weight { - Weight::from_ref_time(5_639_000 as u64) + Weight::from_ref_time(5_315_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) } // Storage: Nonfungible TokenProperties (r:1 w:1) fn repair_item() -> Weight { - Weight::from_ref_time(6_111_000 as u64) + Weight::from_ref_time(7_638_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } @@ -229,37 +236,44 @@ impl WeightInfo for () { // Storage: Nonfungible TokensMinted (r:1 w:1) // Storage: Nonfungible AccountBalance (r:1 w:1) + // Storage: Nonfungible TokenProperties (r:1 w:1) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Nonfungible TokenData (r:0 w:1) // Storage: Nonfungible Owned (r:0 w:1) fn create_item() -> Weight { - Weight::from_ref_time(26_377_000 as u64) - .saturating_add(RocksDbWeight::get().reads(2 as u64)) - .saturating_add(RocksDbWeight::get().writes(4 as u64)) + Weight::from_ref_time(34_815_000 as u64) + .saturating_add(RocksDbWeight::get().reads(4 as u64)) + .saturating_add(RocksDbWeight::get().writes(5 as u64)) } // Storage: Nonfungible TokensMinted (r:1 w:1) // Storage: Nonfungible AccountBalance (r:1 w:1) + // Storage: Nonfungible TokenProperties (r:4 w:4) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Nonfungible TokenData (r:0 w:4) // Storage: Nonfungible Owned (r:0 w:4) fn create_multiple_items(b: u32, ) -> Weight { - Weight::from_ref_time(20_059_186 as u64) - // Standard Error: 4_735 - .saturating_add(Weight::from_ref_time(4_856_306 as u64).saturating_mul(b as u64)) - .saturating_add(RocksDbWeight::get().reads(2 as u64)) + Weight::from_ref_time(18_772_483 as u64) + // Standard Error: 5_664 + .saturating_add(Weight::from_ref_time(7_602_706 as u64).saturating_mul(b as u64)) + .saturating_add(RocksDbWeight::get().reads(3 as u64)) + .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(b as u64))) .saturating_add(RocksDbWeight::get().writes(2 as u64)) - .saturating_add(RocksDbWeight::get().writes((2 as u64).saturating_mul(b as u64))) + .saturating_add(RocksDbWeight::get().writes((3 as u64).saturating_mul(b as u64))) } // Storage: Nonfungible TokensMinted (r:1 w:1) // Storage: Nonfungible AccountBalance (r:4 w:4) + // Storage: Nonfungible TokenProperties (r:4 w:4) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Nonfungible TokenData (r:0 w:4) // Storage: Nonfungible Owned (r:0 w:4) fn create_multiple_items_ex(b: u32, ) -> Weight { - Weight::from_ref_time(16_365_581 as u64) - // Standard Error: 9_711 - .saturating_add(Weight::from_ref_time(6_681_940 as u64).saturating_mul(b as u64)) - .saturating_add(RocksDbWeight::get().reads(1 as u64)) - .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(b as u64))) + Weight::from_ref_time(15_449_226 as u64) + // Standard Error: 6_012 + .saturating_add(Weight::from_ref_time(9_325_591 as u64).saturating_mul(b as u64)) + .saturating_add(RocksDbWeight::get().reads(2 as u64)) + .saturating_add(RocksDbWeight::get().reads((2 as u64).saturating_mul(b as u64))) .saturating_add(RocksDbWeight::get().writes(1 as u64)) - .saturating_add(RocksDbWeight::get().writes((3 as u64).saturating_mul(b as u64))) + .saturating_add(RocksDbWeight::get().writes((4 as u64).saturating_mul(b as u64))) } // Storage: Nonfungible TokenData (r:1 w:1) // Storage: Nonfungible TokenChildren (r:1 w:0) @@ -269,7 +283,7 @@ // Storage: Nonfungible Owned (r:0 w:1) // Storage: Nonfungible TokenProperties (r:0 w:1) fn burn_item() -> Weight { - Weight::from_ref_time(33_502_000 as u64) + Weight::from_ref_time(35_221_000 as u64) .saturating_add(RocksDbWeight::get().reads(5 as u64)) .saturating_add(RocksDbWeight::get().writes(5 as u64)) } @@ -281,7 +295,7 @@ // Storage: Nonfungible Owned (r:0 w:1) // Storage: Nonfungible TokenProperties (r:0 w:1) fn burn_recursively_self_raw() -> Weight { - Weight::from_ref_time(43_255_000 as u64) + Weight::from_ref_time(45_504_000 as u64) .saturating_add(RocksDbWeight::get().reads(5 as u64)) .saturating_add(RocksDbWeight::get().writes(5 as u64)) } @@ -294,9 +308,9 @@ // Storage: Nonfungible TokenProperties (r:0 w:1) // Storage: Common CollectionById (r:1 w:0) fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight { - Weight::from_ref_time(42_992_000 as u64) - // Standard Error: 1_010_119 - .saturating_add(Weight::from_ref_time(209_972_755 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(45_539_000 as u64) + // Standard Error: 1_047_413 + .saturating_add(Weight::from_ref_time(216_998_419 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(7 as u64)) .saturating_add(RocksDbWeight::get().reads((4 as u64).saturating_mul(b as u64))) .saturating_add(RocksDbWeight::get().writes(6 as u64)) @@ -307,21 +321,21 @@ // Storage: Nonfungible Allowance (r:1 w:0) // Storage: Nonfungible Owned (r:0 w:2) fn transfer() -> Weight { - Weight::from_ref_time(31_239_000 as u64) + Weight::from_ref_time(30_047_000 as u64) .saturating_add(RocksDbWeight::get().reads(4 as u64)) .saturating_add(RocksDbWeight::get().writes(5 as u64)) } // Storage: Nonfungible TokenData (r:1 w:0) // Storage: Nonfungible Allowance (r:1 w:1) fn approve() -> Weight { - Weight::from_ref_time(21_985_000 as u64) + Weight::from_ref_time(24_476_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Nonfungible TokenData (r:1 w:0) // Storage: Nonfungible Allowance (r:1 w:1) fn approve_from() -> Weight { - Weight::from_ref_time(18_965_000 as u64) + Weight::from_ref_time(22_818_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } @@ -330,7 +344,7 @@ // Storage: Nonfungible AccountBalance (r:2 w:2) // Storage: Nonfungible Owned (r:0 w:2) fn transfer_from() -> Weight { - Weight::from_ref_time(36_382_000 as u64) + Weight::from_ref_time(37_251_000 as u64) .saturating_add(RocksDbWeight::get().reads(4 as u64)) .saturating_add(RocksDbWeight::get().writes(6 as u64)) } @@ -342,54 +356,54 @@ // Storage: Nonfungible Owned (r:0 w:1) // Storage: Nonfungible TokenProperties (r:0 w:1) fn burn_from() -> Weight { - Weight::from_ref_time(42_046_000 as u64) + Weight::from_ref_time(43_202_000 as u64) .saturating_add(RocksDbWeight::get().reads(5 as u64)) .saturating_add(RocksDbWeight::get().writes(6 as u64)) } // Storage: Common CollectionPropertyPermissions (r:1 w:1) fn set_token_property_permissions(b: u32, ) -> Weight { - Weight::from_ref_time(5_543_000 as u64) - // Standard Error: 40_525 - .saturating_add(Weight::from_ref_time(12_126_787 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(5_282_000 as u64) + // Standard Error: 45_166 + .saturating_add(Weight::from_ref_time(12_937_288 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Nonfungible TokenProperties (r:1 w:1) // Storage: Common CollectionPropertyPermissions (r:1 w:0) fn set_token_properties(b: u32, ) -> Weight { - Weight::from_ref_time(31_850_484 as u64) - // Standard Error: 9_618 - .saturating_add(Weight::from_ref_time(4_721_947 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(28_171_920 as u64) + // Standard Error: 13_715 + .saturating_add(Weight::from_ref_time(6_217_801 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Nonfungible TokenProperties (r:1 w:1) // Storage: Common CollectionPropertyPermissions (r:1 w:0) fn delete_token_properties(b: u32, ) -> Weight { - Weight::from_ref_time(13_795_000 as u64) - // Standard Error: 28_239 - .saturating_add(Weight::from_ref_time(12_840_446 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(15_511_000 as u64) + // Standard Error: 68_273 + .saturating_add(Weight::from_ref_time(22_917_441 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Nonfungible TokenData (r:1 w:0) fn token_owner() -> Weight { - Weight::from_ref_time(6_881_000 as u64) + Weight::from_ref_time(7_088_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) } // Storage: Nonfungible CollectionAllowance (r:0 w:1) fn set_allowance_for_all() -> Weight { - Weight::from_ref_time(16_223_000 as u64) + Weight::from_ref_time(17_607_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Nonfungible CollectionAllowance (r:1 w:0) fn allowance_for_all() -> Weight { - Weight::from_ref_time(5_639_000 as u64) + Weight::from_ref_time(5_315_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) } // Storage: Nonfungible TokenProperties (r:1 w:1) fn repair_item() -> Weight { - Weight::from_ref_time(6_111_000 as u64) + Weight::from_ref_time(7_638_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } --- a/pallets/proxy-rmrk-core/Cargo.toml +++ b/pallets/proxy-rmrk-core/Cargo.toml @@ -1,51 +1,39 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-rmrk-core" version = "0.1.2" -license = "GPLv3" -edition = "2021" -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - [dependencies] +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } + +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-common = { default-features = false, path = '../common' } +pallet-common = { default-features = false, path = "../common" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } pallet-structure = { default-features = false, path = "../../pallets/structure" } -up-data-structs = { default-features = false, path = '../../primitives/data-structs' } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } rmrk-traits = { default-features = false, path = "../../primitives/rmrk-traits" } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -derivative = { version = "2.2.0", features = ["use_core"] } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } [features] default = ["std"] +runtime-benchmarks = ['frame-benchmarking', 'frame-support/runtime-benchmarks', 'frame-system/runtime-benchmarks'] std = [ - "frame-support/std", - "frame-system/std", - "sp-runtime/std", - "sp-std/std", - "up-data-structs/std", - "rmrk-traits/std", - "pallet-common/std", - "pallet-nonfungible/std", - "pallet-structure/std", - "pallet-evm/std", - 'frame-benchmarking/std', -] -runtime-benchmarks = [ - 'frame-benchmarking', - 'frame-support/runtime-benchmarks', - 'frame-system/runtime-benchmarks', + "frame-support/std", + "frame-system/std", + "pallet-common/std", + "pallet-evm/std", + "pallet-nonfungible/std", + "pallet-structure/std", + "rmrk-traits/std", + "sp-runtime/std", + "sp-std/std", + "up-data-structs/std", + 'frame-benchmarking/std', ] try-runtime = ["frame-support/try-runtime"] --- a/pallets/proxy-rmrk-core/src/lib.rs +++ b/pallets/proxy-rmrk-core/src/lib.rs @@ -741,7 +741,8 @@ Some((collection_id, nft_id)), &target_nft_budget, ) - .map_err(Self::map_unique_err_to_proxy)?; + .map_err(Self::map_unique_err_to_proxy)? + .ok_or::(>::NoPermission.into())?; approval_required = cross_sender != target_nft_owner; @@ -989,7 +990,8 @@ let nft_owner = >::find_topmost_owner(collection_id, nft_id, &budget) - .map_err(|_| >::ResourceDoesntExist)?; + .map_err(|_| >::ResourceDoesntExist)? + .ok_or::(>::NoPermission.into())?; Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| { ensure!(res.pending, >::ResourceNotPending); @@ -1044,7 +1046,8 @@ let nft_owner = >::find_topmost_owner(collection_id, nft_id, &budget) - .map_err(|_| >::ResourceDoesntExist)?; + .map_err(|_| >::ResourceDoesntExist)? + .ok_or::(>::NoPermission.into())?; ensure!(cross_sender == nft_owner, >::NoPermission); @@ -1666,7 +1669,8 @@ let budget = budget::Value::new(NESTING_BUDGET); let nft_owner = >::find_topmost_owner(collection_id, nft_id, &budget) - .map_err(Self::map_unique_err_to_proxy)?; + .map_err(Self::map_unique_err_to_proxy)? + .ok_or::(>::NoPermission.into())?; let pending = sender != nft_owner; @@ -1720,7 +1724,8 @@ let budget = up_data_structs::budget::Value::new(NESTING_BUDGET); let topmost_owner = - >::find_topmost_owner(collection_id, nft_id, &budget)?; + >::find_topmost_owner(collection_id, nft_id, &budget)? + .ok_or::(>::NoPermission.into())?; let sender = T::CrossAccountId::from_sub(sender); if topmost_owner == sender { --- a/pallets/proxy-rmrk-core/src/rpc.rs +++ b/pallets/proxy-rmrk-core/src/rpc.rs @@ -68,7 +68,7 @@ } let owner = match collection.token_owner(nft_id) { - Some(owner) => match T::CrossTokenAddressMapping::address_to_token(&owner) { + Ok(owner) => match T::CrossTokenAddressMapping::address_to_token(&owner) { Some((col, tok)) => { let rmrk_collection = >::rmrk_collection_id(col)?; @@ -76,7 +76,7 @@ } None => RmrkAccountIdOrCollectionNftTuple::AccountId(owner.as_sub().clone()), }, - None => return Ok(None), + _ => return Ok(None), }; Ok(Some(RmrkInstanceInfo { --- a/pallets/proxy-rmrk-equip/Cargo.toml +++ b/pallets/proxy-rmrk-equip/Cargo.toml @@ -1,50 +1,37 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-rmrk-equip" version = "0.1.2" -license = "GPLv3" -edition = "2021" -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - [dependencies] +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } + +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-common = { default-features = false, path = '../common' } -pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } -up-data-structs = { default-features = false, path = '../../primitives/data-structs' } +pallet-common = { default-features = false, path = "../common" } pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -rmrk-traits = { default-features = false, path = "../../primitives/rmrk-traits" } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } +pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } pallet-rmrk-core = { default-features = false, path = "../proxy-rmrk-core" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } [features] default = ["std"] +runtime-benchmarks = ['frame-benchmarking', 'frame-support/runtime-benchmarks', 'frame-system/runtime-benchmarks'] std = [ - "frame-support/std", - "frame-system/std", - "sp-runtime/std", - "sp-std/std", - "up-data-structs/std", - "rmrk-traits/std", - "pallet-common/std", - "pallet-nonfungible/std", - "pallet-rmrk-core/std", - "pallet-evm/std", - 'frame-benchmarking/std', -] -runtime-benchmarks = [ - 'frame-benchmarking', - 'frame-support/runtime-benchmarks', - 'frame-system/runtime-benchmarks', + "frame-support/std", + "frame-system/std", + "pallet-common/std", + "pallet-evm/std", + "pallet-nonfungible/std", + "pallet-rmrk-core/std", + "sp-runtime/std", + "sp-std/std", + "up-data-structs/std", + 'frame-benchmarking/std', ] try-runtime = ["frame-support/try-runtime"] --- a/pallets/refungible/Cargo.toml +++ b/pallets/refungible/Cargo.toml @@ -1,57 +1,47 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-refungible" version = "0.2.11" -license = "GPLv3" -edition = "2021" -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' +[dependencies] +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } -[dependencies] +evm-coder = { default-features = false, path = "../../crates/evm-coder" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-common = { default-features = false, path = "../common" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" } +pallet-structure = { default-features = false, path = "../structure" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -evm-coder = { default-features = false, path = '../../crates/evm-coder' } -pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' } -pallet-common = { default-features = false, path = '../common' } -pallet-structure = { default-features = false, path = '../structure' } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -struct-versioning = { path = "../../crates/struct-versioning" } -up-data-structs = { default-features = false, path = '../../primitives/data-structs' } -ethereum = { version = "0.14.0", default-features = false } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -derivative = { version = "2.2.0", features = ["use_core"] } +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } [features] default = ["std"] +runtime-benchmarks = [ + 'frame-benchmarking', + 'frame-support/runtime-benchmarks', + 'frame-system/runtime-benchmarks', + 'up-data-structs/runtime-benchmarks', +] std = [ - "ethereum/std", - "evm-coder/std", - 'frame-benchmarking/std', - "frame-support/std", - "frame-system/std", - "pallet-common/std", - "pallet-evm/std", - "pallet-evm-coder-substrate/std", - "pallet-structure/std", - "sp-runtime/std", - "sp-std/std", - "up-data-structs/std", + "evm-coder/std", + "frame-support/std", + "frame-system/std", + "pallet-common/std", + "pallet-evm-coder-substrate/std", + "pallet-evm/std", + "pallet-structure/std", + "sp-runtime/std", + "sp-std/std", + "up-data-structs/std", + 'frame-benchmarking/std', ] -runtime-benchmarks = [ - 'frame-benchmarking', - 'frame-support/runtime-benchmarks', - 'frame-system/runtime-benchmarks', - 'up-data-structs/runtime-benchmarks', -] +stubgen = ["evm-coder/stubgen", "pallet-common/stubgen"] try-runtime = ["frame-support/try-runtime"] -stubgen = ["evm-coder/stubgen", "pallet-common/stubgen"] --- a/pallets/refungible/src/common.rs +++ b/pallets/refungible/src/common.rs @@ -21,7 +21,7 @@ use up_data_structs::{ CollectionId, TokenId, CreateItemExData, budget::Budget, Property, PropertyKey, PropertyValue, PropertyKeyPermission, CollectionPropertiesVec, CreateRefungibleExMultipleOwners, - CreateRefungibleExSingleOwner, + CreateRefungibleExSingleOwner, TokenOwnerError, }; use pallet_common::{ CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight, @@ -478,7 +478,7 @@ TokenId(>::get(self.id)) } - fn token_owner(&self, token: TokenId) -> Option { + fn token_owner(&self, token: TokenId) -> Result { >::token_owner(self.id, token) } --- a/pallets/refungible/src/erc.rs +++ b/pallets/refungible/src/erc.rs @@ -43,7 +43,7 @@ use sp_std::{collections::btree_map::BTreeMap, vec::Vec, vec}; use up_data_structs::{ CollectionId, CollectionPropertiesVec, mapping::TokenAddressMapping, Property, PropertyKey, - PropertyKeyPermission, PropertyPermission, TokenId, + PropertyKeyPermission, PropertyPermission, TokenId, TokenOwnerError, }; use crate::{ @@ -411,9 +411,12 @@ self.consume_store_reads(2)?; let token = token_id.try_into()?; let owner = >::token_owner(self.id, token); - Ok(owner + owner .map(|address| *address.as_eth()) - .unwrap_or_else(|| ADDRESS_FOR_PARTIALLY_OWNED_TOKENS)) + .or_else(|err| match err { + TokenOwnerError::NotFound => Err(Error::Revert("token not found".into())), + TokenOwnerError::MultipleOwners => Ok(ADDRESS_FOR_PARTIALLY_OWNED_TOKENS), + }) } /// @dev Not implemented @@ -766,7 +769,12 @@ fn cross_owner_of(&self, token_id: U256) -> Result { Self::token_owner(&self, token_id.try_into()?) .map(|o| eth::CrossAddress::from_sub_cross_account::(&o)) - .ok_or(Error::Revert("key too large".into())) + .or_else(|err| match err { + TokenOwnerError::NotFound => Err(Error::Revert("token not found".into())), + TokenOwnerError::MultipleOwners => Ok(eth::CrossAddress::from_eth( + ADDRESS_FOR_PARTIALLY_OWNED_TOKENS, + )), + }) } /// Returns the token properties. --- a/pallets/refungible/src/lib.rs +++ b/pallets/refungible/src/lib.rs @@ -107,7 +107,7 @@ AccessMode, budget::Budget, CollectionId, CollectionFlags, CreateCollectionData, mapping::TokenAddressMapping, MAX_REFUNGIBLE_PIECES, Property, PropertyKey, PropertyKeyPermission, PropertyPermission, PropertyScope, PropertyValue, TokenId, - TrySetProperty, PropertiesPermissionMap, CreateRefungibleExMultipleOwners, + TrySetProperty, PropertiesPermissionMap, CreateRefungibleExMultipleOwners, TokenOwnerError, }; pub use pallet::*; @@ -480,7 +480,7 @@ >::remove((collection.id, token, owner)); >::insert((collection.id, owner), account_balance); - if let Some(user) = Self::token_owner(collection.id, token) { + if let Ok(user) = Self::token_owner(collection.id, token) { >::deposit_log( ERC721Events::Transfer { from: erc::ADDRESS_FOR_PARTIALLY_OWNED_TOKENS, @@ -1365,17 +1365,20 @@ Ok(()) } - fn token_owner(collection_id: CollectionId, token_id: TokenId) -> Option { + fn token_owner( + collection_id: CollectionId, + token_id: TokenId, + ) -> Result { let mut owner = None; let mut count = 0; for key in Balance::::iter_key_prefix((collection_id, token_id)) { count += 1; if count > 1 { - return None; + return Err(TokenOwnerError::MultipleOwners); } owner = Some(key); } - owner + owner.ok_or(TokenOwnerError::NotFound) } fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> Option { --- a/pallets/refungible/src/weights.rs +++ b/pallets/refungible/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_refungible //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-12-26, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-01-18, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -66,53 +66,62 @@ impl WeightInfo for SubstrateWeight { // Storage: Refungible TokensMinted (r:1 w:1) // Storage: Refungible AccountBalance (r:1 w:1) + // Storage: Refungible TokenProperties (r:1 w:1) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Refungible Balance (r:0 w:1) // Storage: Refungible TotalSupply (r:0 w:1) // Storage: Refungible Owned (r:0 w:1) fn create_item() -> Weight { - Weight::from_ref_time(32_864_000 as u64) - .saturating_add(T::DbWeight::get().reads(2 as u64)) - .saturating_add(T::DbWeight::get().writes(5 as u64)) + Weight::from_ref_time(37_536_000 as u64) + .saturating_add(T::DbWeight::get().reads(4 as u64)) + .saturating_add(T::DbWeight::get().writes(6 as u64)) } // Storage: Refungible TokensMinted (r:1 w:1) // Storage: Refungible AccountBalance (r:1 w:1) + // Storage: Refungible TokenProperties (r:4 w:4) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Refungible Balance (r:0 w:4) // Storage: Refungible TotalSupply (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items(b: u32, ) -> Weight { - Weight::from_ref_time(11_880_472 as u64) - // Standard Error: 5_240 - .saturating_add(Weight::from_ref_time(6_556_575 as u64).saturating_mul(b as u64)) - .saturating_add(T::DbWeight::get().reads(2 as u64)) + Weight::from_ref_time(16_345_581 as u64) + // Standard Error: 5_346 + .saturating_add(Weight::from_ref_time(9_281_076 as u64).saturating_mul(b as u64)) + .saturating_add(T::DbWeight::get().reads(3 as u64)) + .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(b as u64))) .saturating_add(T::DbWeight::get().writes(2 as u64)) - .saturating_add(T::DbWeight::get().writes((3 as u64).saturating_mul(b as u64))) + .saturating_add(T::DbWeight::get().writes((4 as u64).saturating_mul(b as u64))) } // Storage: Refungible TokensMinted (r:1 w:1) // Storage: Refungible AccountBalance (r:4 w:4) + // Storage: Refungible TokenProperties (r:4 w:4) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Refungible Balance (r:0 w:4) // Storage: Refungible TotalSupply (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight { - Weight::from_ref_time(11_644_173 as u64) - // Standard Error: 5_876 - .saturating_add(Weight::from_ref_time(8_214_607 as u64).saturating_mul(b as u64)) - .saturating_add(T::DbWeight::get().reads(1 as u64)) - .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(b as u64))) + Weight::from_ref_time(11_246_602 as u64) + // Standard Error: 8_015 + .saturating_add(Weight::from_ref_time(11_043_114 as u64).saturating_mul(b as u64)) + .saturating_add(T::DbWeight::get().reads(2 as u64)) + .saturating_add(T::DbWeight::get().reads((2 as u64).saturating_mul(b as u64))) .saturating_add(T::DbWeight::get().writes(1 as u64)) - .saturating_add(T::DbWeight::get().writes((4 as u64).saturating_mul(b as u64))) + .saturating_add(T::DbWeight::get().writes((5 as u64).saturating_mul(b as u64))) } // Storage: Refungible TokensMinted (r:1 w:1) + // Storage: Refungible TokenProperties (r:1 w:1) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Refungible TotalSupply (r:0 w:1) // Storage: Refungible AccountBalance (r:4 w:4) // Storage: Refungible Balance (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight { - Weight::from_ref_time(21_817_067 as u64) - // Standard Error: 5_215 - .saturating_add(Weight::from_ref_time(6_084_938 as u64).saturating_mul(b as u64)) - .saturating_add(T::DbWeight::get().reads(1 as u64)) + Weight::from_ref_time(31_350_923 as u64) + // Standard Error: 4_061 + .saturating_add(Weight::from_ref_time(6_007_108 as u64).saturating_mul(b as u64)) + .saturating_add(T::DbWeight::get().reads(3 as u64)) .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(b as u64))) - .saturating_add(T::DbWeight::get().writes(2 as u64)) + .saturating_add(T::DbWeight::get().writes(3 as u64)) .saturating_add(T::DbWeight::get().writes((3 as u64).saturating_mul(b as u64))) } // Storage: Refungible Balance (r:3 w:1) @@ -120,7 +129,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn burn_item_partial() -> Weight { - Weight::from_ref_time(47_087_000 as u64) + Weight::from_ref_time(47_342_000 as u64) .saturating_add(T::DbWeight::get().reads(5 as u64)) .saturating_add(T::DbWeight::get().writes(4 as u64)) } @@ -131,14 +140,14 @@ // Storage: Refungible Owned (r:0 w:1) // Storage: Refungible TokenProperties (r:0 w:1) fn burn_item_fully() -> Weight { - Weight::from_ref_time(40_135_000 as u64) + Weight::from_ref_time(40_664_000 as u64) .saturating_add(T::DbWeight::get().reads(4 as u64)) .saturating_add(T::DbWeight::get().writes(6 as u64)) } // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible TotalSupply (r:1 w:0) fn transfer_normal() -> Weight { - Weight::from_ref_time(30_749_000 as u64) + Weight::from_ref_time(31_585_000 as u64) .saturating_add(T::DbWeight::get().reads(3 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } @@ -147,7 +156,7 @@ // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:1) fn transfer_creating() -> Weight { - Weight::from_ref_time(33_565_000 as u64) + Weight::from_ref_time(35_015_000 as u64) .saturating_add(T::DbWeight::get().reads(4 as u64)) .saturating_add(T::DbWeight::get().writes(4 as u64)) } @@ -156,7 +165,7 @@ // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:1) fn transfer_removing() -> Weight { - Weight::from_ref_time(37_406_000 as u64) + Weight::from_ref_time(38_209_000 as u64) .saturating_add(T::DbWeight::get().reads(4 as u64)) .saturating_add(T::DbWeight::get().writes(4 as u64)) } @@ -165,68 +174,63 @@ // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:2) fn transfer_creating_removing() -> Weight { - Weight::from_ref_time(36_689_000 as u64) + Weight::from_ref_time(38_549_000 as u64) .saturating_add(T::DbWeight::get().reads(5 as u64)) .saturating_add(T::DbWeight::get().writes(6 as u64)) } // Storage: Refungible Balance (r:1 w:0) // Storage: Refungible Allowance (r:0 w:1) fn approve() -> Weight { - Weight::from_ref_time(23_177_000 as u64) + Weight::from_ref_time(24_503_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Refungible Balance (r:1 w:0) // Storage: Refungible Allowance (r:0 w:1) fn approve_from() -> Weight { - Weight::from_ref_time(20_649_000 as u64) + Weight::from_ref_time(24_584_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible TotalSupply (r:1 w:0) fn transfer_from_normal() -> Weight { - Weight::from_ref_time(41_288_000 as u64) - .saturating_add(T::DbWeight::get().reads(5 as u64)) + Weight::from_ref_time(41_001_000 as u64) + .saturating_add(T::DbWeight::get().reads(4 as u64)) .saturating_add(T::DbWeight::get().writes(3 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:1) fn transfer_from_creating() -> Weight { - Weight::from_ref_time(44_807_000 as u64) - .saturating_add(T::DbWeight::get().reads(6 as u64)) + Weight::from_ref_time(43_884_000 as u64) + .saturating_add(T::DbWeight::get().reads(5 as u64)) .saturating_add(T::DbWeight::get().writes(5 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:1) fn transfer_from_removing() -> Weight { - Weight::from_ref_time(47_297_000 as u64) - .saturating_add(T::DbWeight::get().reads(6 as u64)) + Weight::from_ref_time(47_515_000 as u64) + .saturating_add(T::DbWeight::get().reads(5 as u64)) .saturating_add(T::DbWeight::get().writes(5 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible AccountBalance (r:2 w:2) // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:2) fn transfer_from_creating_removing() -> Weight { - Weight::from_ref_time(47_566_000 as u64) - .saturating_add(T::DbWeight::get().reads(7 as u64)) + Weight::from_ref_time(47_087_000 as u64) + .saturating_add(T::DbWeight::get().reads(6 as u64)) .saturating_add(T::DbWeight::get().writes(7 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:1 w:1) // Storage: Refungible TotalSupply (r:1 w:1) // Storage: Refungible AccountBalance (r:1 w:1) @@ -234,61 +238,61 @@ // Storage: Refungible Owned (r:0 w:1) // Storage: Refungible TokenProperties (r:0 w:1) fn burn_from() -> Weight { - Weight::from_ref_time(53_074_000 as u64) - .saturating_add(T::DbWeight::get().reads(6 as u64)) + Weight::from_ref_time(52_735_000 as u64) + .saturating_add(T::DbWeight::get().reads(5 as u64)) .saturating_add(T::DbWeight::get().writes(7 as u64)) } // Storage: Common CollectionPropertyPermissions (r:1 w:1) fn set_token_property_permissions(b: u32, ) -> Weight { - Weight::from_ref_time(5_170_000 as u64) - // Standard Error: 40_532 - .saturating_add(Weight::from_ref_time(11_948_016 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(5_232_000 as u64) + // Standard Error: 43_746 + .saturating_add(Weight::from_ref_time(12_961_609 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Refungible TokenProperties (r:1 w:1) // Storage: Common CollectionPropertyPermissions (r:1 w:0) fn set_token_properties(b: u32, ) -> Weight { - Weight::from_ref_time(25_518_267 as u64) - // Standard Error: 20_451 - .saturating_add(Weight::from_ref_time(5_041_089 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(18_287_762 as u64) + // Standard Error: 31_915 + .saturating_add(Weight::from_ref_time(7_070_524 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Refungible TokenProperties (r:1 w:1) // Storage: Common CollectionPropertyPermissions (r:1 w:0) fn delete_token_properties(b: u32, ) -> Weight { - Weight::from_ref_time(13_715_000 as u64) - // Standard Error: 28_323 - .saturating_add(Weight::from_ref_time(13_113_351 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(15_075_000 as u64) + // Standard Error: 69_091 + .saturating_add(Weight::from_ref_time(22_793_781 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Refungible TotalSupply (r:1 w:1) // Storage: Refungible Balance (r:1 w:1) fn repartition_item() -> Weight { - Weight::from_ref_time(25_574_000 as u64) + Weight::from_ref_time(25_147_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } // Storage: Refungible Balance (r:2 w:0) fn token_owner() -> Weight { - Weight::from_ref_time(9_819_000 as u64) + Weight::from_ref_time(9_921_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) } // Storage: Refungible CollectionAllowance (r:0 w:1) fn set_allowance_for_all() -> Weight { - Weight::from_ref_time(16_228_000 as u64) + Weight::from_ref_time(17_822_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Refungible CollectionAllowance (r:1 w:0) fn allowance_for_all() -> Weight { - Weight::from_ref_time(5_374_000 as u64) + Weight::from_ref_time(5_265_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) } // Storage: Refungible TokenProperties (r:1 w:1) fn repair_item() -> Weight { - Weight::from_ref_time(5_624_000 as u64) + Weight::from_ref_time(7_229_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } @@ -298,53 +302,62 @@ impl WeightInfo for () { // Storage: Refungible TokensMinted (r:1 w:1) // Storage: Refungible AccountBalance (r:1 w:1) + // Storage: Refungible TokenProperties (r:1 w:1) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Refungible Balance (r:0 w:1) // Storage: Refungible TotalSupply (r:0 w:1) // Storage: Refungible Owned (r:0 w:1) fn create_item() -> Weight { - Weight::from_ref_time(32_864_000 as u64) - .saturating_add(RocksDbWeight::get().reads(2 as u64)) - .saturating_add(RocksDbWeight::get().writes(5 as u64)) + Weight::from_ref_time(37_536_000 as u64) + .saturating_add(RocksDbWeight::get().reads(4 as u64)) + .saturating_add(RocksDbWeight::get().writes(6 as u64)) } // Storage: Refungible TokensMinted (r:1 w:1) // Storage: Refungible AccountBalance (r:1 w:1) + // Storage: Refungible TokenProperties (r:4 w:4) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Refungible Balance (r:0 w:4) // Storage: Refungible TotalSupply (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items(b: u32, ) -> Weight { - Weight::from_ref_time(11_880_472 as u64) - // Standard Error: 5_240 - .saturating_add(Weight::from_ref_time(6_556_575 as u64).saturating_mul(b as u64)) - .saturating_add(RocksDbWeight::get().reads(2 as u64)) + Weight::from_ref_time(16_345_581 as u64) + // Standard Error: 5_346 + .saturating_add(Weight::from_ref_time(9_281_076 as u64).saturating_mul(b as u64)) + .saturating_add(RocksDbWeight::get().reads(3 as u64)) + .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(b as u64))) .saturating_add(RocksDbWeight::get().writes(2 as u64)) - .saturating_add(RocksDbWeight::get().writes((3 as u64).saturating_mul(b as u64))) + .saturating_add(RocksDbWeight::get().writes((4 as u64).saturating_mul(b as u64))) } // Storage: Refungible TokensMinted (r:1 w:1) // Storage: Refungible AccountBalance (r:4 w:4) + // Storage: Refungible TokenProperties (r:4 w:4) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Refungible Balance (r:0 w:4) // Storage: Refungible TotalSupply (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight { - Weight::from_ref_time(11_644_173 as u64) - // Standard Error: 5_876 - .saturating_add(Weight::from_ref_time(8_214_607 as u64).saturating_mul(b as u64)) - .saturating_add(RocksDbWeight::get().reads(1 as u64)) - .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(b as u64))) + Weight::from_ref_time(11_246_602 as u64) + // Standard Error: 8_015 + .saturating_add(Weight::from_ref_time(11_043_114 as u64).saturating_mul(b as u64)) + .saturating_add(RocksDbWeight::get().reads(2 as u64)) + .saturating_add(RocksDbWeight::get().reads((2 as u64).saturating_mul(b as u64))) .saturating_add(RocksDbWeight::get().writes(1 as u64)) - .saturating_add(RocksDbWeight::get().writes((4 as u64).saturating_mul(b as u64))) + .saturating_add(RocksDbWeight::get().writes((5 as u64).saturating_mul(b as u64))) } // Storage: Refungible TokensMinted (r:1 w:1) + // Storage: Refungible TokenProperties (r:1 w:1) + // Storage: Common CollectionPropertyPermissions (r:1 w:0) // Storage: Refungible TotalSupply (r:0 w:1) // Storage: Refungible AccountBalance (r:4 w:4) // Storage: Refungible Balance (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight { - Weight::from_ref_time(21_817_067 as u64) - // Standard Error: 5_215 - .saturating_add(Weight::from_ref_time(6_084_938 as u64).saturating_mul(b as u64)) - .saturating_add(RocksDbWeight::get().reads(1 as u64)) + Weight::from_ref_time(31_350_923 as u64) + // Standard Error: 4_061 + .saturating_add(Weight::from_ref_time(6_007_108 as u64).saturating_mul(b as u64)) + .saturating_add(RocksDbWeight::get().reads(3 as u64)) .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(b as u64))) - .saturating_add(RocksDbWeight::get().writes(2 as u64)) + .saturating_add(RocksDbWeight::get().writes(3 as u64)) .saturating_add(RocksDbWeight::get().writes((3 as u64).saturating_mul(b as u64))) } // Storage: Refungible Balance (r:3 w:1) @@ -352,7 +365,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn burn_item_partial() -> Weight { - Weight::from_ref_time(47_087_000 as u64) + Weight::from_ref_time(47_342_000 as u64) .saturating_add(RocksDbWeight::get().reads(5 as u64)) .saturating_add(RocksDbWeight::get().writes(4 as u64)) } @@ -363,14 +376,14 @@ // Storage: Refungible Owned (r:0 w:1) // Storage: Refungible TokenProperties (r:0 w:1) fn burn_item_fully() -> Weight { - Weight::from_ref_time(40_135_000 as u64) + Weight::from_ref_time(40_664_000 as u64) .saturating_add(RocksDbWeight::get().reads(4 as u64)) .saturating_add(RocksDbWeight::get().writes(6 as u64)) } // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible TotalSupply (r:1 w:0) fn transfer_normal() -> Weight { - Weight::from_ref_time(30_749_000 as u64) + Weight::from_ref_time(31_585_000 as u64) .saturating_add(RocksDbWeight::get().reads(3 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } @@ -379,7 +392,7 @@ // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:1) fn transfer_creating() -> Weight { - Weight::from_ref_time(33_565_000 as u64) + Weight::from_ref_time(35_015_000 as u64) .saturating_add(RocksDbWeight::get().reads(4 as u64)) .saturating_add(RocksDbWeight::get().writes(4 as u64)) } @@ -388,7 +401,7 @@ // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:1) fn transfer_removing() -> Weight { - Weight::from_ref_time(37_406_000 as u64) + Weight::from_ref_time(38_209_000 as u64) .saturating_add(RocksDbWeight::get().reads(4 as u64)) .saturating_add(RocksDbWeight::get().writes(4 as u64)) } @@ -397,68 +410,63 @@ // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:2) fn transfer_creating_removing() -> Weight { - Weight::from_ref_time(36_689_000 as u64) + Weight::from_ref_time(38_549_000 as u64) .saturating_add(RocksDbWeight::get().reads(5 as u64)) .saturating_add(RocksDbWeight::get().writes(6 as u64)) } // Storage: Refungible Balance (r:1 w:0) // Storage: Refungible Allowance (r:0 w:1) fn approve() -> Weight { - Weight::from_ref_time(23_177_000 as u64) + Weight::from_ref_time(24_503_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Refungible Balance (r:1 w:0) // Storage: Refungible Allowance (r:0 w:1) fn approve_from() -> Weight { - Weight::from_ref_time(20_649_000 as u64) + Weight::from_ref_time(24_584_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible TotalSupply (r:1 w:0) fn transfer_from_normal() -> Weight { - Weight::from_ref_time(41_288_000 as u64) - .saturating_add(RocksDbWeight::get().reads(5 as u64)) + Weight::from_ref_time(41_001_000 as u64) + .saturating_add(RocksDbWeight::get().reads(4 as u64)) .saturating_add(RocksDbWeight::get().writes(3 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:1) fn transfer_from_creating() -> Weight { - Weight::from_ref_time(44_807_000 as u64) - .saturating_add(RocksDbWeight::get().reads(6 as u64)) + Weight::from_ref_time(43_884_000 as u64) + .saturating_add(RocksDbWeight::get().reads(5 as u64)) .saturating_add(RocksDbWeight::get().writes(5 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:1) fn transfer_from_removing() -> Weight { - Weight::from_ref_time(47_297_000 as u64) - .saturating_add(RocksDbWeight::get().reads(6 as u64)) + Weight::from_ref_time(47_515_000 as u64) + .saturating_add(RocksDbWeight::get().reads(5 as u64)) .saturating_add(RocksDbWeight::get().writes(5 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:2 w:2) // Storage: Refungible AccountBalance (r:2 w:2) // Storage: Refungible TotalSupply (r:1 w:0) // Storage: Refungible Owned (r:0 w:2) fn transfer_from_creating_removing() -> Weight { - Weight::from_ref_time(47_566_000 as u64) - .saturating_add(RocksDbWeight::get().reads(7 as u64)) + Weight::from_ref_time(47_087_000 as u64) + .saturating_add(RocksDbWeight::get().reads(6 as u64)) .saturating_add(RocksDbWeight::get().writes(7 as u64)) } // Storage: Refungible Allowance (r:1 w:1) - // Storage: Refungible CollectionAllowance (r:1 w:0) // Storage: Refungible Balance (r:1 w:1) // Storage: Refungible TotalSupply (r:1 w:1) // Storage: Refungible AccountBalance (r:1 w:1) @@ -466,61 +474,61 @@ // Storage: Refungible Owned (r:0 w:1) // Storage: Refungible TokenProperties (r:0 w:1) fn burn_from() -> Weight { - Weight::from_ref_time(53_074_000 as u64) - .saturating_add(RocksDbWeight::get().reads(6 as u64)) + Weight::from_ref_time(52_735_000 as u64) + .saturating_add(RocksDbWeight::get().reads(5 as u64)) .saturating_add(RocksDbWeight::get().writes(7 as u64)) } // Storage: Common CollectionPropertyPermissions (r:1 w:1) fn set_token_property_permissions(b: u32, ) -> Weight { - Weight::from_ref_time(5_170_000 as u64) - // Standard Error: 40_532 - .saturating_add(Weight::from_ref_time(11_948_016 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(5_232_000 as u64) + // Standard Error: 43_746 + .saturating_add(Weight::from_ref_time(12_961_609 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Refungible TokenProperties (r:1 w:1) // Storage: Common CollectionPropertyPermissions (r:1 w:0) fn set_token_properties(b: u32, ) -> Weight { - Weight::from_ref_time(25_518_267 as u64) - // Standard Error: 20_451 - .saturating_add(Weight::from_ref_time(5_041_089 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(18_287_762 as u64) + // Standard Error: 31_915 + .saturating_add(Weight::from_ref_time(7_070_524 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Refungible TokenProperties (r:1 w:1) // Storage: Common CollectionPropertyPermissions (r:1 w:0) fn delete_token_properties(b: u32, ) -> Weight { - Weight::from_ref_time(13_715_000 as u64) - // Standard Error: 28_323 - .saturating_add(Weight::from_ref_time(13_113_351 as u64).saturating_mul(b as u64)) + Weight::from_ref_time(15_075_000 as u64) + // Standard Error: 69_091 + .saturating_add(Weight::from_ref_time(22_793_781 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Refungible TotalSupply (r:1 w:1) // Storage: Refungible Balance (r:1 w:1) fn repartition_item() -> Weight { - Weight::from_ref_time(25_574_000 as u64) + Weight::from_ref_time(25_147_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } // Storage: Refungible Balance (r:2 w:0) fn token_owner() -> Weight { - Weight::from_ref_time(9_819_000 as u64) + Weight::from_ref_time(9_921_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) } // Storage: Refungible CollectionAllowance (r:0 w:1) fn set_allowance_for_all() -> Weight { - Weight::from_ref_time(16_228_000 as u64) + Weight::from_ref_time(17_822_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Refungible CollectionAllowance (r:1 w:0) fn allowance_for_all() -> Weight { - Weight::from_ref_time(5_374_000 as u64) + Weight::from_ref_time(5_265_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) } // Storage: Refungible TokenProperties (r:1 w:1) fn repair_item() -> Weight { - Weight::from_ref_time(5_624_000 as u64) + Weight::from_ref_time(7_229_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } --- a/pallets/scheduler-v2/Cargo.toml +++ b/pallets/scheduler-v2/Cargo.toml @@ -1,29 +1,25 @@ [package] -name = "pallet-unique-scheduler-v2" -version = "0.1.0" authors = ["Unique Network "] +description = "Unique Scheduler pallet" edition = "2021" +homepage = "https://unique.network" license = "GPLv3" -homepage = "https://unique.network" -repository = "https://github.com/UniqueNetwork/unique-chain" -description = "Unique Scheduler pallet" +name = "pallet-unique-scheduler-v2" readme = "README.md" +repository = "https://github.com/UniqueNetwork/unique-chain" +version = "0.1.0" [dependencies] -codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ - "derive", -] } -log = { version = "0.4.17", default-features = false } -scale-info = { version = "2.1.1", default-features = false, features = [ - "derive", -] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +log = { version = "0.4.17", default-features = false } +scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [dev-dependencies] pallet-preimage = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } @@ -32,11 +28,7 @@ [features] default = ["std"] -runtime-benchmarks = [ - "frame-benchmarking", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", -] +runtime-benchmarks = ["frame-benchmarking", "frame-support/runtime-benchmarks", "frame-system/runtime-benchmarks"] std = [ "codec/std", "frame-benchmarking?/std", @@ -44,9 +36,9 @@ "frame-system/std", "log/std", "scale-info/std", + "sp-core/std", "sp-io/std", "sp-runtime/std", "sp-std/std", - "sp-core/std", ] try-runtime = ["frame-support/try-runtime"] --- a/pallets/structure/Cargo.toml +++ b/pallets/structure/Cargo.toml @@ -1,26 +1,33 @@ [package] +edition = "2021" name = "pallet-structure" version = "0.1.2" -edition = "2021" [dependencies] +parity-scale-codec = { version = "3.2.2", default-features = false, features = ["derive"] } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } + +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +log = { version = "0.4.17", default-features = false } pallet-common = { path = "../common", default-features = false } -parity-scale-codec = { version = "3.1.2", default-features = false, features = [ - "derive", -] } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -up-data-structs = { path = "../../primitives/data-structs", default-features = false } pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -log = { version = "0.4.17", default-features = false } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +up-data-structs = { path = "../../primitives/data-structs", default-features = false } [features] default = ["std"] -std = ["frame-support/std", "frame-system/std", "frame-benchmarking/std", "sp-std/std", "pallet-common/std", "scale-info/std", "parity-scale-codec/std", "up-data-structs/std", "pallet-evm/std"] runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks'] +std = [ + "frame-benchmarking/std", + "frame-support/std", + "frame-system/std", + "pallet-common/std", + "pallet-evm/std", + "parity-scale-codec/std", + "scale-info/std", + "sp-std/std", + "up-data-structs/std", +] try-runtime = ["frame-support/try-runtime"] --- a/pallets/structure/src/lib.rs +++ b/pallets/structure/src/lib.rs @@ -61,7 +61,9 @@ use frame_support::fail; pub use pallet::*; use pallet_common::{dispatch::CollectionDispatch, CollectionHandle}; -use up_data_structs::{CollectionId, TokenId, mapping::TokenAddressMapping, budget::Budget}; +use up_data_structs::{ + CollectionId, TokenId, mapping::TokenAddressMapping, budget::Budget, TokenOwnerError, +}; #[cfg(feature = "runtime-benchmarks")] pub mod benchmarking; @@ -135,6 +137,8 @@ User(CrossAccountId), /// Could not find the token provided as the owner. TokenNotFound, + /// Nested token has multiple owners. + MultipleOwners, /// Token owner is another token (still, the target token may not exist). Token(CollectionId, TokenId), } @@ -159,11 +163,12 @@ let handle = handle.as_dyn(); Ok(match handle.token_owner(token) { - Some(owner) => match T::CrossTokenAddressMapping::address_to_token(&owner) { + Ok(owner) => match T::CrossTokenAddressMapping::address_to_token(&owner) { Some((collection, token)) => Parent::Token(collection, token), None => Parent::User(owner), }, - None => Parent::TokenNotFound, + Err(TokenOwnerError::MultipleOwners) => Parent::MultipleOwners, + Err(TokenOwnerError::NotFound) => Parent::TokenNotFound, }) } @@ -203,19 +208,27 @@ /// /// May return token address if parent token not yet exists /// + /// Returns `None` if the token has multiple owners. + /// /// - `budget`: Limit for searching parents in depth. pub fn find_topmost_owner( collection: CollectionId, token: TokenId, budget: &dyn Budget, - ) -> Result { + ) -> Result, DispatchError> { let owner = Self::parent_chain(collection, token) .take_while(|_| budget.consume()) - .find(|p| matches!(p, Ok(Parent::User(_) | Parent::TokenNotFound))) + .find(|p| { + matches!( + p, + Ok(Parent::User(_) | Parent::TokenNotFound | Parent::MultipleOwners) + ) + }) .ok_or(>::DepthLimit)??; Ok(match owner { - Parent::User(v) => v, + Parent::User(v) => Some(v), + Parent::MultipleOwners => None, _ => fail!(>::TokenNotFound), }) } @@ -223,13 +236,15 @@ /// Find the topmost parent and check that assigning `for_nest` token as a child for /// `token` wouldn't create a cycle. /// + /// Returns `None` if the token has multiple owners. + /// /// - `budget`: Limit for searching parents in depth. pub fn get_checked_topmost_owner( collection: CollectionId, token: TokenId, for_nest: Option<(CollectionId, TokenId)>, budget: &dyn Budget, - ) -> Result { + ) -> Result, DispatchError> { // Tried to nest token in itself if Some((collection, token)) == for_nest { return Err(>::OuroborosDetected.into()); @@ -242,8 +257,9 @@ return Err(>::OuroborosDetected.into()) } // Token is owned by other user - Parent::User(user) => return Ok(user), + Parent::User(user) => return Ok(Some(user)), Parent::TokenNotFound => return Err(>::TokenNotFound.into()), + Parent::MultipleOwners => return Ok(None), // Continue parent chain Parent::Token(_, _) => {} } @@ -284,12 +300,17 @@ budget: &dyn Budget, ) -> Result { let target_parent = match T::CrossTokenAddressMapping::address_to_token(&user) { - Some((collection, token)) => Self::find_topmost_owner(collection, token, budget)?, + Some((collection, token)) => match Self::find_topmost_owner(collection, token, budget)? + { + Some(topmost_owner) => topmost_owner, + None => return Ok(false), + }, None => user, }; - Self::get_checked_topmost_owner(collection, token, for_nest, budget) - .map(|indirect_owner| indirect_owner == target_parent) + Self::get_checked_topmost_owner(collection, token, for_nest, budget).map(|indirect_owner| { + indirect_owner.map_or(false, |indirect_owner| indirect_owner == target_parent) + }) } /// Checks that `under` is valid token and that `token_id` could be nested under it --- a/pallets/structure/src/weights.rs +++ b/pallets/structure/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_structure //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-12-26, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-01-18, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -43,7 +43,7 @@ // Storage: Common CollectionById (r:1 w:0) // Storage: Nonfungible TokenData (r:1 w:0) fn find_parent() -> Weight { - Weight::from_ref_time(11_355_000 as u64) + Weight::from_ref_time(12_015_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) } } @@ -53,7 +53,7 @@ // Storage: Common CollectionById (r:1 w:0) // Storage: Nonfungible TokenData (r:1 w:0) fn find_parent() -> Weight { - Weight::from_ref_time(11_355_000 as u64) + Weight::from_ref_time(12_015_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) } } --- a/pallets/unique/Cargo.toml +++ b/pallets/unique/Cargo.toml @@ -16,93 +16,44 @@ [features] default = ['std'] +limit-testing = ["up-data-structs/limit-testing"] runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks'] std = [ - 'codec/std', - 'serde/std', - 'frame-support/std', - 'frame-system/std', - 'pallet-evm/std', - 'pallet-common/std', - 'up-data-structs/std', - 'sp-std/std', - 'sp-runtime/std', - 'frame-benchmarking/std', - 'evm-coder/std', - 'pallet-evm-coder-substrate/std', - 'pallet-nonfungible/std', + 'codec/std', + 'evm-coder/std', + 'frame-benchmarking/std', + 'frame-support/std', + 'frame-system/std', + 'pallet-common/std', + 'pallet-evm-coder-substrate/std', + 'pallet-evm/std', + 'pallet-nonfungible/std', + 'serde/std', + 'sp-runtime/std', + 'sp-std/std', + 'up-data-structs/std', ] -try-runtime = ["frame-support/try-runtime"] -limit-testing = ["up-data-structs/limit-testing"] stubgen = ["evm-coder/stubgen", "pallet-common/stubgen"] - -################################################################################ -# Standart Dependencies - -[dependencies.serde] -default-features = false -features = ['derive'] -version = '1.0.130' - -[dependencies.ethereum] -version = "0.12.0" -default-features = false - -################################################################################ -# Substrate Dependencies - -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - -[dependencies.frame-benchmarking] -default-features = false -optional = true -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-support] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-system] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-std] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-runtime] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-core] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-io] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" +try-runtime = ["frame-support/try-runtime"] ################################################################################ # Local Dependencies [dependencies] +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +ethereum = { version = "0.12.0", default-features = false } +evm-coder = { default-features = false, path = "../../crates/evm-coder" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-common = { default-features = false, path = "../common" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" } +pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } +pallet-refungible = { default-features = false, path = "../../pallets/refungible" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } +serde = { default-features = false, features = ['derive'], version = "1.0.130" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } up-data-structs = { default-features = false, path = "../../primitives/data-structs" } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-common = { default-features = false, path = "../common" } -evm-coder = { default-features = false, path = '../../crates/evm-coder' } -pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' } -pallet-nonfungible = { default-features = false, path = '../../pallets/nonfungible' } -pallet-refungible = { default-features = false, path = '../../pallets/refungible' } --- a/pallets/unique/src/weights.rs +++ b/pallets/unique/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_unique //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-12-26, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-01-18, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -59,7 +59,7 @@ // Storage: Common CollectionProperties (r:0 w:1) // Storage: Common CollectionById (r:0 w:1) fn create_collection() -> Weight { - Weight::from_ref_time(52_640_000 as u64) + Weight::from_ref_time(43_964_000 as u64) .saturating_add(T::DbWeight::get().reads(4 as u64)) .saturating_add(T::DbWeight::get().writes(6 as u64)) } @@ -71,27 +71,27 @@ // Storage: Common AdminAmount (r:0 w:1) // Storage: Common CollectionProperties (r:0 w:1) fn destroy_collection() -> Weight { - Weight::from_ref_time(63_934_000 as u64) + Weight::from_ref_time(62_034_000 as u64) .saturating_add(T::DbWeight::get().reads(3 as u64)) .saturating_add(T::DbWeight::get().writes(6 as u64)) } // Storage: Common CollectionById (r:1 w:0) // Storage: Common Allowlist (r:0 w:1) fn add_to_allow_list() -> Weight { - Weight::from_ref_time(31_858_000 as u64) + Weight::from_ref_time(27_915_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:0) // Storage: Common Allowlist (r:0 w:1) fn remove_from_allow_list() -> Weight { - Weight::from_ref_time(27_634_000 as u64) + Weight::from_ref_time(27_912_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn change_collection_owner() -> Weight { - Weight::from_ref_time(25_212_000 as u64) + Weight::from_ref_time(27_282_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } @@ -99,7 +99,7 @@ // Storage: Common IsAdmin (r:1 w:1) // Storage: Common AdminAmount (r:1 w:1) fn add_collection_admin() -> Weight { - Weight::from_ref_time(29_307_000 as u64) + Weight::from_ref_time(30_782_000 as u64) .saturating_add(T::DbWeight::get().reads(3 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } @@ -107,43 +107,43 @@ // Storage: Common IsAdmin (r:1 w:1) // Storage: Common AdminAmount (r:1 w:1) fn remove_collection_admin() -> Weight { - Weight::from_ref_time(32_592_000 as u64) + Weight::from_ref_time(34_343_000 as u64) .saturating_add(T::DbWeight::get().reads(3 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn set_collection_sponsor() -> Weight { - Weight::from_ref_time(25_438_000 as u64) + Weight::from_ref_time(27_196_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn confirm_sponsorship() -> Weight { - Weight::from_ref_time(24_965_000 as u64) + Weight::from_ref_time(27_116_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn remove_collection_sponsor() -> Weight { - Weight::from_ref_time(25_094_000 as u64) + Weight::from_ref_time(27_019_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn set_transfers_enabled_flag() -> Weight { - Weight::from_ref_time(12_800_000 as u64) + Weight::from_ref_time(13_405_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn set_collection_limits() -> Weight { - Weight::from_ref_time(25_908_000 as u64) + Weight::from_ref_time(27_709_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: Common CollectionProperties (r:1 w:1) fn force_repair_collection() -> Weight { - Weight::from_ref_time(10_598_000 as u64) + Weight::from_ref_time(10_991_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } @@ -158,7 +158,7 @@ // Storage: Common CollectionProperties (r:0 w:1) // Storage: Common CollectionById (r:0 w:1) fn create_collection() -> Weight { - Weight::from_ref_time(52_640_000 as u64) + Weight::from_ref_time(43_964_000 as u64) .saturating_add(RocksDbWeight::get().reads(4 as u64)) .saturating_add(RocksDbWeight::get().writes(6 as u64)) } @@ -170,27 +170,27 @@ // Storage: Common AdminAmount (r:0 w:1) // Storage: Common CollectionProperties (r:0 w:1) fn destroy_collection() -> Weight { - Weight::from_ref_time(63_934_000 as u64) + Weight::from_ref_time(62_034_000 as u64) .saturating_add(RocksDbWeight::get().reads(3 as u64)) .saturating_add(RocksDbWeight::get().writes(6 as u64)) } // Storage: Common CollectionById (r:1 w:0) // Storage: Common Allowlist (r:0 w:1) fn add_to_allow_list() -> Weight { - Weight::from_ref_time(31_858_000 as u64) + Weight::from_ref_time(27_915_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:0) // Storage: Common Allowlist (r:0 w:1) fn remove_from_allow_list() -> Weight { - Weight::from_ref_time(27_634_000 as u64) + Weight::from_ref_time(27_912_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn change_collection_owner() -> Weight { - Weight::from_ref_time(25_212_000 as u64) + Weight::from_ref_time(27_282_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } @@ -198,7 +198,7 @@ // Storage: Common IsAdmin (r:1 w:1) // Storage: Common AdminAmount (r:1 w:1) fn add_collection_admin() -> Weight { - Weight::from_ref_time(29_307_000 as u64) + Weight::from_ref_time(30_782_000 as u64) .saturating_add(RocksDbWeight::get().reads(3 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } @@ -206,43 +206,43 @@ // Storage: Common IsAdmin (r:1 w:1) // Storage: Common AdminAmount (r:1 w:1) fn remove_collection_admin() -> Weight { - Weight::from_ref_time(32_592_000 as u64) + Weight::from_ref_time(34_343_000 as u64) .saturating_add(RocksDbWeight::get().reads(3 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn set_collection_sponsor() -> Weight { - Weight::from_ref_time(25_438_000 as u64) + Weight::from_ref_time(27_196_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn confirm_sponsorship() -> Weight { - Weight::from_ref_time(24_965_000 as u64) + Weight::from_ref_time(27_116_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn remove_collection_sponsor() -> Weight { - Weight::from_ref_time(25_094_000 as u64) + Weight::from_ref_time(27_019_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn set_transfers_enabled_flag() -> Weight { - Weight::from_ref_time(12_800_000 as u64) + Weight::from_ref_time(13_405_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Common CollectionById (r:1 w:1) fn set_collection_limits() -> Weight { - Weight::from_ref_time(25_908_000 as u64) + Weight::from_ref_time(27_709_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: Common CollectionProperties (r:1 w:1) fn force_repair_collection() -> Weight { - Weight::from_ref_time(10_598_000 as u64) + Weight::from_ref_time(10_991_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } --- a/primitives/app_promotion_rpc/Cargo.toml +++ b/primitives/app_promotion_rpc/Cargo.toml @@ -1,29 +1,16 @@ [package] +edition = "2021" +license = "GPLv3" name = "app-promotion-rpc" version = "0.1.0" -license = "GPLv3" -edition = "2021" [dependencies] -pallet-common = { default-features = false, path = '../../pallets/common' } -up-data-structs = { default-features = false, path = '../data-structs' } -codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = [ - "derive", -] } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = ["derive"] } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [features] default = ["std"] -std = [ - "codec/std", - "sp-core/std", - "sp-std/std", - "sp-api/std", - "sp-runtime/std", - "pallet-common/std", - "up-data-structs/std", -] +std = ["codec/std", "sp-api/std", "sp-runtime/std", "sp-std/std"] --- a/primitives/common/Cargo.toml +++ b/primitives/common/Cargo.toml @@ -11,52 +11,22 @@ [features] default = ['std'] std = [ - 'sp-std/std', - 'frame-support/std', - 'sp-runtime/std', - 'sp-core/std', - 'sp-consensus-aura/std', - 'fp-rpc/std', - 'cumulus-primitives-core/std', - 'pallet-evm/std', + 'cumulus-primitives-core/std', + 'fp-rpc/std', + 'frame-support/std', + 'pallet-evm/std', + 'sp-consensus-aura/std', + 'sp-core/std', + 'sp-runtime/std', + 'sp-std/std', ] -[dependencies.sp-std] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-support] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-runtime] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-core] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-consensus-aura] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.fp-rpc] -default-features = false -git = "https://github.com/uniquenetwork/frontier" -branch = "unique-polkadot-v0.9.36" - -[dependencies.cumulus-primitives-core] -default-features = false -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-evm] -default-features = false -git = "https://github.com/uniquenetwork/frontier" -branch = "unique-polkadot-v0.9.36" +[dependencies] +cumulus-primitives-core = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +sp-consensus-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } --- a/primitives/common/src/constants.rs +++ b/primitives/common/src/constants.rs @@ -52,10 +52,10 @@ pub const SESSION_LENGTH: BlockNumber = HOURS; // Targeting 0.1 UNQ per transfer -pub const WEIGHT_TO_FEE_COEFF: u64 = /**/77_071_069_464_131_590/**/; +pub const WEIGHT_TO_FEE_COEFF: u64 = /**/77_191_946_012_018_089/**/; // Targeting 0.15 UNQ per transfer via ETH -pub const MIN_GAS_PRICE: u64 = /**/1_014_754_530_878/**/; +pub const MIN_GAS_PRICE: u64 = /**/1_016_390_998_841/**/; /// We assume that ~10% of the block weight is consumed by `on_initalize` handlers. /// This is used to limit the maximal weight of a single extrinsic. --- a/primitives/data-structs/Cargo.toml +++ b/primitives/data-structs/Cargo.toml @@ -1,50 +1,40 @@ [package] -name = "up-data-structs" authors = ["Unique Network "] description = "Unique data structs definitions" edition = "2021" +homepage = "https://unique.network" license = 'GPLv3' -homepage = "https://unique.network" +name = "up-data-structs" repository = 'https://github.com/UniqueNetwork/unique-chain' version = "0.2.2" [dependencies] -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = [ - 'derive', -] } -serde = { version = "1.0.130", features = [ - 'derive', -], default-features = false, optional = true } +bondrewd = { version = "0.1.14", features = ["derive"], default-features = false } +codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = ['derive'] } +derivative = { version = "2.2.0", features = ["use_core"] } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +rmrk-traits = { default-features = false, path = "../rmrk-traits" } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } +serde = { version = "1.0.130", features = ['derive'], default-features = false, optional = true } sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -derivative = { version = "2.2.0", features = ["use_core"] } -struct-versioning = { path = "../../crates/struct-versioning" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -rmrk-traits = { default-features = false, path = "../rmrk-traits" } -bondrewd = { version = "0.1.14", features = [ - "derive", -], default-features = false } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +struct-versioning.path = "../../crates/struct-versioning" [features] default = ["std"] +limit-testing = [] +runtime-benchmarks = [] +serde1 = ["serde/alloc"] std = [ - "serde1", - "serde/std", - "codec/std", - "frame-system/std", - "frame-support/std", - "sp-runtime/std", - "sp-core/std", - "sp-std/std", - "pallet-evm/std", - "rmrk-traits/std", + "codec/std", + "frame-support/std", + "pallet-evm/std", + "rmrk-traits/std", + "serde/std", + "serde1", + "sp-core/std", + "sp-runtime/std", + "sp-std/std", ] -serde1 = ["serde/alloc"] -limit-testing = [] -runtime-benchmarks = [] --- a/primitives/data-structs/src/lib.rs +++ b/primitives/data-structs/src/lib.rs @@ -1099,6 +1099,13 @@ EmptyPropertyKey, } +/// Token owner error: it could be either `NotFound` ot `MultipleOwners`. +#[derive(Debug)] +pub enum TokenOwnerError { + NotFound, + MultipleOwners, +} + /// Marker for scope of property. /// /// Scoped property can't be changed by user. Used for external collections. --- a/primitives/pov-estimate-rpc/Cargo.toml +++ b/primitives/pov-estimate-rpc/Cargo.toml @@ -1,28 +1,18 @@ [package] +edition = "2021" +license = "GPLv3" name = "up-pov-estimate-rpc" version = "0.1.0" -license = "GPLv3" -edition = "2021" [dependencies] -codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = [ - "derive", -] } +codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = ["derive"] } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } serde = { version = "1.0.130", features = ["derive"], default-features = false, optional = true } -scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } +sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [features] default = ["std"] -std = [ - "codec/std", - "serde/std", - "scale-info/std", - "sp-core/std", - "sp-std/std", - "sp-api/std", - "sp-runtime/std", -] +std = ["codec/std", "scale-info/std", "serde/std", "sp-api/std", "sp-core/std", "sp-runtime/std", "sp-std/std"] --- a/primitives/rmrk-rpc/Cargo.toml +++ b/primitives/rmrk-rpc/Cargo.toml @@ -1,28 +1,17 @@ [package] +edition = "2021" +license = "" name = "rmrk-rpc" version = "0.0.2" -license = "" -edition = "2021" [dependencies] -codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = [ - "derive", -] } -sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = ["derive"] } +rmrk-traits = { default-features = false, path = "../rmrk-traits" } +serde = { version = "1.0.130", default-features = false, features = ["derive"] } sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -serde = { version = "1.0.130", default-features = false, features = ["derive"] } -rmrk-traits = { default-features = false, path = "../rmrk-traits" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [features] default = ["std"] -std = [ - "codec/std", - "sp-core/std", - "sp-std/std", - "sp-api/std", - "sp-runtime/std", - "serde/std", - "rmrk-traits/std", -] +std = ["codec/std", "rmrk-traits/std", "serde/std", "sp-api/std", "sp-runtime/std", "sp-std/std"] --- a/primitives/rmrk-traits/Cargo.toml +++ b/primitives/rmrk-traits/Cargo.toml @@ -1,23 +1,19 @@ [package] -name = "rmrk-traits" authors = ["Unique Network "] description = "RMRK proxy data structs definitions" edition = "2021" +homepage = "https://unique.network" license = 'GPLv3' -homepage = "https://unique.network" +name = "rmrk-traits" repository = 'https://github.com/UniqueNetwork/unique-chain' version = "0.1.0" [dependencies] -scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = ["derive"] } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } serde = { version = "1.0.130", features = ["derive"], default-features = false, optional = true } [features] default = ["std"] -std = [ - "serde1", - "serde/std", - "codec/std", -] serde1 = ["serde/alloc"] +std = ["codec/std", "serde/std", "serde1"] --- a/primitives/rpc/Cargo.toml +++ b/primitives/rpc/Cargo.toml @@ -1,29 +1,27 @@ [package] +edition = "2021" +license = "GPLv3" name = "up-rpc" version = "0.1.3" -license = "GPLv3" -edition = "2021" [dependencies] -pallet-common = { default-features = false, path = '../../pallets/common' } -up-data-structs = { default-features = false, path = '../data-structs' } -codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = [ - "derive", -] } +codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false, features = ["derive"] } +pallet-common = { default-features = false, path = "../../pallets/common" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +up-data-structs = { default-features = false, path = "../data-structs" } [features] default = ["std"] std = [ "codec/std", + "pallet-common/std", + "sp-api/std", "sp-core/std", + "sp-runtime/std", "sp-std/std", - "sp-api/std", - "sp-runtime/std", - "pallet-common/std", "up-data-structs/std", ] --- a/runtime/common/ethereum/precompiles/utils/macro/Cargo.toml +++ b/runtime/common/ethereum/precompiles/utils/macro/Cargo.toml @@ -1,8 +1,8 @@ [package] -name = "precompile-utils-macro" -authors = [ "StakeTechnologies", "PureStake" ] +authors = ["PureStake", "StakeTechnologies"] description = "" edition = "2018" +name = "precompile-utils-macro" version = "0.1.0" [lib] @@ -13,4 +13,4 @@ proc-macro2 = "1.0" quote = "1.0" sha3 = "0.8" -syn = { version = "1.0", features = [ "extra-traits", "fold", "full", "visit" ] } +syn = { version = "1.0", features = ["extra-traits", "fold", "full", "visit"] } --- a/runtime/common/runtime_apis.rs +++ b/runtime/common/runtime_apis.rs @@ -16,11 +16,11 @@ #[macro_export] macro_rules! dispatch_unique_runtime { - ($collection:ident.$method:ident($($name:ident),*)) => {{ + ($collection:ident.$method:ident($($name:ident),*) $($rest:tt)*) => {{ let collection = ::CollectionDispatch::dispatch(>::try_get($collection)?); let dispatch = collection.as_dyn(); - Ok::<_, DispatchError>(dispatch.$method($($name),*)) + Ok::<_, DispatchError>(dispatch.$method($($name),*) $($rest)*) }}; } @@ -73,7 +73,7 @@ } fn token_owner(collection: CollectionId, token: TokenId) -> Result, DispatchError> { - dispatch_unique_runtime!(collection.token_owner(token)) + dispatch_unique_runtime!(collection.token_owner(token).ok()) } fn token_owners(collection: CollectionId, token: TokenId) -> Result, DispatchError> { @@ -83,7 +83,7 @@ fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result, DispatchError> { let budget = up_data_structs::budget::Value::new(10); - Ok(Some(>::find_topmost_owner(collection, token, &budget)?)) + Ok(>::find_topmost_owner(collection, token, &budget)?) } fn token_children(collection: CollectionId, token: TokenId) -> Result, DispatchError> { Ok(>::token_children_ids(collection, token)) @@ -720,7 +720,7 @@ // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate); - let storage_info = AllPalletsReversedWithSystemFirst::storage_info(); + let storage_info = AllPalletsWithSystem::storage_info(); return (list, storage_info) } --- a/runtime/opal/Cargo.toml +++ b/runtime/opal/Cargo.toml @@ -16,520 +16,289 @@ targets = ['x86_64-unknown-linux-gnu'] [features] -default = ['std', 'opal-runtime'] +default = ['opal-runtime', 'std'] +limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing'] +opal-runtime = ['app-promotion', 'collator-selection', 'foreign-assets', 'pallet-test-utils', 'refungible', 'rmrk'] +pov-estimate = [] runtime-benchmarks = [ - 'hex-literal', - 'frame-benchmarking', - 'frame-support/runtime-benchmarks', - 'frame-system-benchmarking', - 'frame-system/runtime-benchmarks', - 'pallet-ethereum/runtime-benchmarks', - 'pallet-evm-migration/runtime-benchmarks', - 'pallet-evm-coder-substrate/runtime-benchmarks', - 'pallet-balances/runtime-benchmarks', - 'pallet-timestamp/runtime-benchmarks', - 'pallet-configuration/runtime-benchmarks', - 'pallet-common/runtime-benchmarks', - 'pallet-structure/runtime-benchmarks', - 'pallet-fungible/runtime-benchmarks', - 'pallet-refungible/runtime-benchmarks', - 'pallet-nonfungible/runtime-benchmarks', - 'pallet-proxy-rmrk-core/runtime-benchmarks', - 'pallet-proxy-rmrk-equip/runtime-benchmarks', - 'pallet-foreign-assets/runtime-benchmarks', - 'pallet-unique/runtime-benchmarks', - 'pallet-inflation/runtime-benchmarks', - 'pallet-app-promotion/runtime-benchmarks', - 'pallet-collator-selection/runtime-benchmarks', - 'pallet-identity/runtime-benchmarks', - 'pallet-unique-scheduler-v2/runtime-benchmarks', - 'pallet-xcm/runtime-benchmarks', - 'sp-runtime/runtime-benchmarks', - 'xcm-builder/runtime-benchmarks', - 'pallet-maintenance/runtime-benchmarks', - 'cumulus-pallet-parachain-system/runtime-benchmarks', -] -try-runtime = [ - 'frame-try-runtime', - 'frame-try-runtime?/try-runtime', - 'frame-executive/try-runtime', - 'frame-support/try-runtime', - 'frame-system/try-runtime', - 'cumulus-pallet-parachain-system/try-runtime', - 'parachain-info/try-runtime', - 'pallet-aura/try-runtime', - 'cumulus-pallet-aura-ext/try-runtime', - 'pallet-balances/try-runtime', - 'pallet-randomness-collective-flip/try-runtime', - 'pallet-timestamp/try-runtime', - 'pallet-transaction-payment/try-runtime', - 'pallet-treasury/try-runtime', - 'pallet-sudo/try-runtime', - 'orml-vesting/try-runtime', - 'orml-xtokens/try-runtime', - 'orml-tokens/try-runtime', - 'cumulus-pallet-xcmp-queue/try-runtime', - 'pallet-xcm/try-runtime', - 'cumulus-pallet-xcm/try-runtime', - 'cumulus-pallet-dmp-queue/try-runtime', - "pallet-authorship/try-runtime", - "pallet-collator-selection/try-runtime", - "pallet-session/try-runtime", - "pallet-identity/try-runtime", - 'pallet-inflation/try-runtime', - 'pallet-unique/try-runtime', - 'pallet-configuration/try-runtime', - 'pallet-charge-transaction/try-runtime', - 'pallet-common/try-runtime', - 'pallet-fungible/try-runtime', - 'pallet-refungible/try-runtime', - 'pallet-nonfungible/try-runtime', - 'pallet-structure/try-runtime', - 'pallet-proxy-rmrk-core/try-runtime', - 'pallet-proxy-rmrk-equip/try-runtime', - 'pallet-app-promotion/try-runtime', - 'pallet-foreign-assets/try-runtime', - 'pallet-ethereum/try-runtime', - 'pallet-evm/try-runtime', - 'pallet-evm-coder-substrate/try-runtime', - 'pallet-evm-contract-helpers/try-runtime', - 'pallet-evm-transaction-payment/try-runtime', - 'pallet-evm-migration/try-runtime', - 'pallet-base-fee/try-runtime', - 'pallet-unique-scheduler-v2/try-runtime', - 'pallet-maintenance/try-runtime', - 'pallet-test-utils/try-runtime', - 'fp-self-contained/try-runtime', + 'cumulus-pallet-parachain-system/runtime-benchmarks', + 'frame-benchmarking', + 'frame-support/runtime-benchmarks', + 'frame-system-benchmarking', + 'frame-system/runtime-benchmarks', + 'hex-literal', + 'pallet-app-promotion/runtime-benchmarks', + 'pallet-balances/runtime-benchmarks', + 'pallet-collator-selection/runtime-benchmarks', + 'pallet-common/runtime-benchmarks', + 'pallet-configuration/runtime-benchmarks', + 'pallet-ethereum/runtime-benchmarks', + 'pallet-evm-coder-substrate/runtime-benchmarks', + 'pallet-evm-migration/runtime-benchmarks', + 'pallet-foreign-assets/runtime-benchmarks', + 'pallet-fungible/runtime-benchmarks', + 'pallet-identity/runtime-benchmarks', + 'pallet-inflation/runtime-benchmarks', + 'pallet-maintenance/runtime-benchmarks', + 'pallet-nonfungible/runtime-benchmarks', + 'pallet-proxy-rmrk-core/runtime-benchmarks', + 'pallet-proxy-rmrk-equip/runtime-benchmarks', + 'pallet-refungible/runtime-benchmarks', + 'pallet-structure/runtime-benchmarks', + 'pallet-timestamp/runtime-benchmarks', + 'pallet-unique-scheduler-v2/runtime-benchmarks', + 'pallet-unique/runtime-benchmarks', + 'pallet-xcm/runtime-benchmarks', + 'sp-runtime/runtime-benchmarks', + 'xcm-builder/runtime-benchmarks', ] std = [ - 'codec/std', - 'cumulus-pallet-aura-ext/std', - 'cumulus-pallet-parachain-system/std', - 'cumulus-pallet-xcm/std', - 'cumulus-pallet-xcmp-queue/std', - 'cumulus-primitives-core/std', - 'cumulus-primitives-utility/std', - 'frame-try-runtime/std', - 'frame-executive/std', - 'frame-support/std', - 'frame-system/std', - 'frame-system-rpc-runtime-api/std', - 'pallet-aura/std', - 'pallet-balances/std', - # 'pallet-contracts/std', - # 'pallet-contracts-primitives/std', - # 'pallet-contracts-rpc-runtime-api/std', - # 'pallet-contract-helpers/std', + 'codec/std', + 'cumulus-pallet-aura-ext/std', + 'cumulus-pallet-parachain-system/std', + 'cumulus-pallet-xcm/std', + 'cumulus-pallet-xcmp-queue/std', + 'cumulus-primitives-core/std', + 'cumulus-primitives-utility/std', + 'frame-executive/std', + 'frame-support/std', + 'frame-system-rpc-runtime-api/std', + 'frame-system/std', + 'frame-try-runtime/std', + 'pallet-aura/std', + 'pallet-balances/std', + # 'pallet-contracts/std', + # 'pallet-contracts-primitives/std', + # 'pallet-contracts-rpc-runtime-api/std', + # 'pallet-contract-helpers/std', "pallet-authorship/std", + "pallet-session/std", + "sp-consensus-aura/std", + 'app-promotion-rpc/std', + 'evm-coder/std', + 'fp-evm-mapping/std', + 'fp-rpc/std', + 'fp-self-contained/std', + 'pallet-app-promotion/std', + 'pallet-base-fee/std', + 'pallet-charge-transaction/std', 'pallet-collator-selection/std', - "pallet-session/std", + 'pallet-common/std', + 'pallet-configuration/std', + 'pallet-ethereum/std', + 'pallet-evm-coder-substrate/std', + 'pallet-evm-contract-helpers/std', + 'pallet-evm-migration/std', + 'pallet-evm-transaction-payment/std', + 'pallet-evm/std', + 'pallet-fungible/std', 'pallet-identity/std', - 'pallet-randomness-collective-flip/std', - 'pallet-sudo/std', - 'pallet-timestamp/std', - 'pallet-transaction-payment/std', - 'pallet-transaction-payment-rpc-runtime-api/std', - 'pallet-treasury/std', - 'pallet-evm/std', - 'pallet-evm-migration/std', - 'pallet-evm-contract-helpers/std', - 'pallet-evm-transaction-payment/std', - 'pallet-evm-coder-substrate/std', - 'pallet-ethereum/std', - 'pallet-base-fee/std', - 'fp-rpc/std', - 'up-rpc/std', - 'up-pov-estimate-rpc/std', - 'app-promotion-rpc/std', - 'fp-evm-mapping/std', - 'fp-self-contained/std', - 'parachain-info/std', - 'serde', - 'pallet-inflation/std', - 'pallet-configuration/std', - 'pallet-app-promotion/std', - 'pallet-common/std', - 'pallet-structure/std', - 'pallet-fungible/std', - 'pallet-refungible/std', - 'pallet-nonfungible/std', - 'pallet-proxy-rmrk-core/std', - 'pallet-proxy-rmrk-equip/std', - 'pallet-unique/std', - 'pallet-unique-scheduler-v2/std', - 'pallet-charge-transaction/std', - 'up-data-structs/std', - 'sp-api/std', - 'sp-block-builder/std', - "sp-consensus-aura/std", - 'sp-core/std', - 'sp-inherents/std', - 'sp-io/std', - 'sp-offchain/std', - 'sp-runtime/std', - 'sp-session/std', - 'sp-std/std', - 'sp-transaction-pool/std', - 'sp-version/std', - 'xcm/std', - 'xcm-builder/std', - 'xcm-executor/std', - 'up-common/std', - 'rmrk-rpc/std', - 'evm-coder/std', - 'up-sponsorship/std', + 'pallet-inflation/std', + 'pallet-nonfungible/std', + 'pallet-proxy-rmrk-core/std', + 'pallet-proxy-rmrk-equip/std', + 'pallet-randomness-collective-flip/std', + 'pallet-refungible/std', + 'pallet-structure/std', + 'pallet-sudo/std', + 'pallet-timestamp/std', + 'pallet-transaction-payment-rpc-runtime-api/std', + 'pallet-transaction-payment/std', + 'pallet-treasury/std', + 'pallet-unique-scheduler-v2/std', + 'pallet-unique/std', + 'parachain-info/std', + 'rmrk-rpc/std', + 'serde', + 'sp-api/std', + 'sp-block-builder/std', + 'sp-core/std', + 'sp-inherents/std', + 'sp-io/std', + 'sp-offchain/std', + 'sp-runtime/std', + 'sp-session/std', + 'sp-std/std', + 'sp-transaction-pool/std', + 'sp-version/std', + 'up-common/std', + 'up-data-structs/std', + 'up-pov-estimate-rpc/std', + 'up-rpc/std', + 'up-sponsorship/std', + 'xcm-builder/std', + 'xcm-executor/std', + 'xcm/std', - "orml-vesting/std", - "orml-tokens/std", - "orml-xtokens/std", - "orml-traits/std", - "pallet-foreign-assets/std", + "orml-tokens/std", + "orml-traits/std", + "orml-vesting/std", + "orml-xtokens/std", + "pallet-foreign-assets/std", - 'pallet-maintenance/std', - 'pallet-test-utils/std', + 'pallet-maintenance/std', + 'pallet-test-utils/std', ] -limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing'] -opal-runtime = [ - 'refungible', - 'rmrk', - 'app-promotion', - 'collator-selection', - 'foreign-assets', - 'pallet-test-utils', +try-runtime = [ + "pallet-authorship/try-runtime", + "pallet-collator-selection/try-runtime", + "pallet-identity/try-runtime", + "pallet-session/try-runtime", + 'cumulus-pallet-aura-ext/try-runtime', + 'cumulus-pallet-dmp-queue/try-runtime', + 'cumulus-pallet-parachain-system/try-runtime', + 'cumulus-pallet-xcm/try-runtime', + 'cumulus-pallet-xcmp-queue/try-runtime', + 'fp-self-contained/try-runtime', + 'frame-executive/try-runtime', + 'frame-support/try-runtime', + 'frame-system/try-runtime', + 'frame-try-runtime', + 'frame-try-runtime?/try-runtime', + 'orml-tokens/try-runtime', + 'orml-vesting/try-runtime', + 'orml-xtokens/try-runtime', + 'pallet-app-promotion/try-runtime', + 'pallet-aura/try-runtime', + 'pallet-balances/try-runtime', + 'pallet-base-fee/try-runtime', + 'pallet-charge-transaction/try-runtime', + 'pallet-common/try-runtime', + 'pallet-configuration/try-runtime', + 'pallet-ethereum/try-runtime', + 'pallet-evm-coder-substrate/try-runtime', + 'pallet-evm-contract-helpers/try-runtime', + 'pallet-evm-migration/try-runtime', + 'pallet-evm-transaction-payment/try-runtime', + 'pallet-evm/try-runtime', + 'pallet-foreign-assets/try-runtime', + 'pallet-fungible/try-runtime', + 'pallet-inflation/try-runtime', + 'pallet-maintenance/try-runtime', + 'pallet-nonfungible/try-runtime', + 'pallet-proxy-rmrk-core/try-runtime', + 'pallet-proxy-rmrk-equip/try-runtime', + 'pallet-randomness-collective-flip/try-runtime', + 'pallet-refungible/try-runtime', + 'pallet-structure/try-runtime', + 'pallet-sudo/try-runtime', + 'pallet-test-utils/try-runtime', + 'pallet-timestamp/try-runtime', + 'pallet-transaction-payment/try-runtime', + 'pallet-treasury/try-runtime', + 'pallet-unique-scheduler-v2/try-runtime', + 'pallet-unique/try-runtime', + 'pallet-xcm/try-runtime', + 'parachain-info/try-runtime', ] -pov-estimate = [] -refungible = [] -scheduler = [] -rmrk = [] -foreign-assets = [] app-promotion = [] collator-selection = [] +foreign-assets = [] pallet-test-utils = [] - -################################################################################ -# Substrate Dependencies - -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - -[dependencies.frame-benchmarking] -default-features = false -git = "https://github.com/paritytech/substrate" -optional = true -branch = "polkadot-v0.9.36" - -[dependencies.frame-try-runtime] -default-features = false -git = "https://github.com/paritytech/substrate" -optional = true -branch = "polkadot-v0.9.36" - -[dependencies.frame-executive] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-support] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-system] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-system-benchmarking] -default-features = false -git = "https://github.com/paritytech/substrate" -optional = true -branch = "polkadot-v0.9.36" - -[dependencies.frame-system-rpc-runtime-api] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.hex-literal] -optional = true -version = '0.3.3' - -[dependencies.serde] -default-features = false -features = ['derive'] -optional = true -version = '1.0.130' - -[dependencies.pallet-aura] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-authorship] -default-features = false -git = 'https://github.com/paritytech/substrate' -branch = 'polkadot-v0.9.36' - -[dependencies.pallet-session] -default-features = false -git = 'https://github.com/paritytech/substrate' -branch = 'polkadot-v0.9.36' - -[dependencies.pallet-balances] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -# Contracts specific packages -# [dependencies.pallet-contracts] -# git = 'https://github.com/paritytech/substrate' -# default-features = false -# branch = 'master' -# version = '4.0.0-dev' - -# [dependencies.pallet-contracts-primitives] -# git = 'https://github.com/paritytech/substrate' -# default-features = false -# branch = 'master' -# version = '4.0.0-dev' - -# [dependencies.pallet-contracts-rpc-runtime-api] -# git = 'https://github.com/paritytech/substrate' -# default-features = false -# branch = 'master' -# version = '4.0.0-dev' - -[dependencies.pallet-randomness-collective-flip] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-sudo] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-timestamp] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-transaction-payment] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-transaction-payment-rpc-runtime-api] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-treasury] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-arithmetic] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-api] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-block-builder] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-core] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-consensus-aura] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-inherents] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-io] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-offchain] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-runtime] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" +refungible = [] +rmrk = [] +scheduler = [] -[dependencies.sp-session] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-std] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-transaction-pool] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-version] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.smallvec] -version = '1.6.1' - ################################################################################ -# Cumulus dependencies - -[dependencies.parachain-info] -default-features = false -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-pallet-aura-ext] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-parachain-system] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-primitives-core] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-xcm] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-dmp-queue] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-xcmp-queue] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-primitives-utility] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-primitives-timestamp] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -################################################################################ -# Polkadot dependencies - -[dependencies.polkadot-parachain] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.xcm] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.xcm-builder] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.xcm-executor] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.pallet-xcm] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -################################################################################ # local dependencies [dependencies] -orml-vesting.workspace = true -orml-xtokens.workspace = true +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-dmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-xcm = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-primitives-core = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-primitives-timestamp = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-primitives-utility = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +frame-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", optional = true, branch = "polkadot-v0.9.36" } +frame-executive = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-system-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", optional = true, branch = "polkadot-v0.9.36" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-try-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", optional = true, branch = "polkadot-v0.9.36" } +hex-literal = { optional = true, version = "0.3.3" } orml-tokens.workspace = true orml-traits.workspace = true +orml-vesting.workspace = true +orml-xtokens.workspace = true +pallet-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-authorship = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-randomness-collective-flip = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-sudo = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-timestamp = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-treasury = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +parachain-info = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +serde = { default-features = false, features = ['derive'], optional = true, version = "1.0.130" } +smallvec = "1.6.1" +sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-arithmetic = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-block-builder = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-consensus-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-inherents = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-offchain = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-transaction-pool = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-version = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } -log = { version = "0.4.16", default-features = false } -up-common = { path = "../../primitives/common", default-features = false } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } +app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false } derivative = "2.2.0" -pallet-unique = { path = '../../pallets/unique', default-features = false } -up-rpc = { path = "../../primitives/rpc", default-features = false } -up-pov-estimate-rpc = { path = "../../primitives/pov-estimate-rpc", default-features = false } -app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false } -rmrk-rpc = { path = "../../primitives/rmrk-rpc", default-features = false } +evm-coder = { default-features = false, path = "../../crates/evm-coder" } fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-inflation = { path = '../../pallets/inflation', default-features = false } -pallet-app-promotion = { path = '../../pallets/app-promotion', default-features = false } -up-data-structs = { path = '../../primitives/data-structs', default-features = false } +fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +log = { version = "0.4.16", default-features = false } +num_enum = { version = "0.5.3", default-features = false } +pallet-app-promotion = { path = "../../pallets/app-promotion", default-features = false } +pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" } pallet-collator-selection = { default-features = false, path = "../../pallets/collator-selection" } -pallet-identity = { default-features = false, path = "../../pallets/identity" } -pallet-configuration = { default-features = false, path = "../../pallets/configuration" } pallet-common = { default-features = false, path = "../../pallets/common" } -pallet-structure = { default-features = false, path = "../../pallets/structure" } -pallet-fungible = { default-features = false, path = "../../pallets/fungible" } -pallet-refungible = { default-features = false, path = "../../pallets/refungible" } -pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } -pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" } -pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" } -pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" } -pallet-unique-scheduler-v2 = { path = '../../pallets/scheduler-v2', default-features = false } -pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false } -pallet-evm-contract-helpers = { path = '../../pallets/evm-contract-helpers', default-features = false } -pallet-evm-transaction-payment = { path = '../../pallets/evm-transaction-payment', default-features = false } -pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-configuration = { default-features = false, path = "../../pallets/configuration" } pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" } +pallet-evm-contract-helpers = { path = "../../pallets/evm-contract-helpers", default-features = false } +pallet-evm-migration = { path = "../../pallets/evm-migration", default-features = false } pallet-evm-precompile-simple = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -evm-coder = { default-features = false, path = '../../crates/evm-coder' } -up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.36' } +pallet-evm-transaction-payment = { path = "../../pallets/evm-transaction-payment", default-features = false } pallet-foreign-assets = { default-features = false, path = "../../pallets/foreign-assets" } +pallet-fungible = { default-features = false, path = "../../pallets/fungible" } +pallet-identity = { default-features = false, path = "../../pallets/identity" } +pallet-inflation = { path = "../../pallets/inflation", default-features = false } pallet-maintenance = { default-features = false, path = "../../pallets/maintenance" } -precompile-utils-macro = { path = "../common/ethereum/precompiles/utils/macro" } -num_enum = { version = "0.5.3", default-features = false } +pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } +pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" } +pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" } +pallet-refungible = { default-features = false, path = "../../pallets/refungible" } +pallet-structure = { default-features = false, path = "../../pallets/structure" } +pallet-unique = { path = "../../pallets/unique", default-features = false } +pallet-unique-scheduler-v2 = { path = "../../pallets/scheduler-v2", default-features = false } +precompile-utils-macro.path = "../common/ethereum/precompiles/utils/macro" +rmrk-rpc = { path = "../../primitives/rmrk-rpc", default-features = false } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } +up-common = { path = "../../primitives/common", default-features = false } +up-data-structs = { path = "../../primitives/data-structs", default-features = false } +up-pov-estimate-rpc = { path = "../../primitives/pov-estimate-rpc", default-features = false } +up-rpc = { path = "../../primitives/rpc", default-features = false } +up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36" } ################################################################################ # Test dependencies @@ -540,16 +309,9 @@ # Other Dependencies impl-trait-for-tuples = "0.2.2" - -################################################################################ -# Dev Dependencies -[dev-dependencies.logtest] -version = "2.0.0" - -################################################################################ -# Build Dependencies +[dev-dependencies] +logtest = "2.0.0" -[build-dependencies.substrate-wasm-builder] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" +[build-dependencies] +substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } --- a/runtime/quartz/Cargo.toml +++ b/runtime/quartz/Cargo.toml @@ -16,512 +16,281 @@ targets = ['x86_64-unknown-linux-gnu'] [features] -default = ['std', 'quartz-runtime'] +become-sapphire = [] +default = ['quartz-runtime', 'std'] +limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing'] +pov-estimate = [] +quartz-runtime = ['app-promotion', 'collator-selection', 'foreign-assets', 'refungible'] runtime-benchmarks = [ - 'hex-literal', - 'frame-benchmarking', - 'frame-support/runtime-benchmarks', - 'frame-system-benchmarking', - 'frame-system/runtime-benchmarks', - 'pallet-ethereum/runtime-benchmarks', - 'pallet-evm-migration/runtime-benchmarks', - 'pallet-evm-coder-substrate/runtime-benchmarks', - 'pallet-balances/runtime-benchmarks', - 'pallet-timestamp/runtime-benchmarks', - 'pallet-configuration/runtime-benchmarks', - 'pallet-common/runtime-benchmarks', - 'pallet-structure/runtime-benchmarks', - 'pallet-fungible/runtime-benchmarks', - 'pallet-refungible/runtime-benchmarks', - 'pallet-nonfungible/runtime-benchmarks', - 'pallet-proxy-rmrk-core/runtime-benchmarks', - 'pallet-proxy-rmrk-equip/runtime-benchmarks', - 'pallet-unique/runtime-benchmarks', - 'pallet-foreign-assets/runtime-benchmarks', - 'pallet-inflation/runtime-benchmarks', - 'pallet-collator-selection/runtime-benchmarks', - 'pallet-identity/runtime-benchmarks', - 'pallet-app-promotion/runtime-benchmarks', - 'pallet-xcm/runtime-benchmarks', - 'sp-runtime/runtime-benchmarks', - 'xcm-builder/runtime-benchmarks', - 'pallet-maintenance/runtime-benchmarks', - 'cumulus-pallet-parachain-system/runtime-benchmarks', -] -try-runtime = [ - 'frame-try-runtime', - 'frame-executive/try-runtime', - 'frame-support/try-runtime', - 'frame-system/try-runtime', - 'cumulus-pallet-parachain-system/try-runtime', - 'parachain-info/try-runtime', - 'pallet-aura/try-runtime', - 'cumulus-pallet-aura-ext/try-runtime', - 'pallet-balances/try-runtime', - 'pallet-randomness-collective-flip/try-runtime', - 'pallet-timestamp/try-runtime', - 'pallet-transaction-payment/try-runtime', - 'pallet-treasury/try-runtime', - 'pallet-sudo/try-runtime', - 'orml-vesting/try-runtime', - 'orml-xtokens/try-runtime', - 'orml-tokens/try-runtime', - 'cumulus-pallet-xcmp-queue/try-runtime', - 'pallet-xcm/try-runtime', - 'cumulus-pallet-xcm/try-runtime', - 'cumulus-pallet-dmp-queue/try-runtime', - "pallet-authorship/try-runtime", - "pallet-collator-selection/try-runtime", - "pallet-session/try-runtime", - "pallet-identity/try-runtime", - 'pallet-inflation/try-runtime', - 'pallet-unique/try-runtime', - 'pallet-configuration/try-runtime', - 'pallet-charge-transaction/try-runtime', - 'pallet-common/try-runtime', - 'pallet-fungible/try-runtime', - 'pallet-refungible/try-runtime', - 'pallet-nonfungible/try-runtime', - 'pallet-structure/try-runtime', - 'pallet-proxy-rmrk-core/try-runtime', - 'pallet-proxy-rmrk-equip/try-runtime', - 'pallet-app-promotion/try-runtime', - 'pallet-foreign-assets/try-runtime', - 'pallet-ethereum/try-runtime', - 'pallet-evm/try-runtime', - 'pallet-evm-coder-substrate/try-runtime', - 'pallet-evm-contract-helpers/try-runtime', - 'pallet-evm-transaction-payment/try-runtime', - 'pallet-evm-migration/try-runtime', - 'pallet-maintenance/try-runtime', - 'fp-self-contained/try-runtime', + 'cumulus-pallet-parachain-system/runtime-benchmarks', + 'frame-benchmarking', + 'frame-support/runtime-benchmarks', + 'frame-system-benchmarking', + 'frame-system/runtime-benchmarks', + 'hex-literal', + 'pallet-app-promotion/runtime-benchmarks', + 'pallet-balances/runtime-benchmarks', + 'pallet-collator-selection/runtime-benchmarks', + 'pallet-common/runtime-benchmarks', + 'pallet-configuration/runtime-benchmarks', + 'pallet-ethereum/runtime-benchmarks', + 'pallet-evm-coder-substrate/runtime-benchmarks', + 'pallet-evm-migration/runtime-benchmarks', + 'pallet-foreign-assets/runtime-benchmarks', + 'pallet-fungible/runtime-benchmarks', + 'pallet-identity/runtime-benchmarks', + 'pallet-inflation/runtime-benchmarks', + 'pallet-maintenance/runtime-benchmarks', + 'pallet-nonfungible/runtime-benchmarks', + 'pallet-proxy-rmrk-core/runtime-benchmarks', + 'pallet-proxy-rmrk-equip/runtime-benchmarks', + 'pallet-refungible/runtime-benchmarks', + 'pallet-structure/runtime-benchmarks', + 'pallet-timestamp/runtime-benchmarks', + 'pallet-unique/runtime-benchmarks', + 'pallet-xcm/runtime-benchmarks', + 'sp-runtime/runtime-benchmarks', + 'xcm-builder/runtime-benchmarks', ] std = [ - 'codec/std', - 'cumulus-pallet-aura-ext/std', - 'cumulus-pallet-parachain-system/std', - 'cumulus-pallet-xcm/std', - 'cumulus-pallet-xcmp-queue/std', - 'cumulus-primitives-core/std', - 'cumulus-primitives-utility/std', - 'frame-try-runtime/std', - 'frame-executive/std', - 'frame-support/std', - 'frame-system/std', - 'frame-system-rpc-runtime-api/std', - 'pallet-aura/std', - 'pallet-balances/std', - # 'pallet-contracts/std', - # 'pallet-contracts-primitives/std', - # 'pallet-contracts-rpc-runtime-api/std', - # 'pallet-contract-helpers/std', + 'codec/std', + 'cumulus-pallet-aura-ext/std', + 'cumulus-pallet-parachain-system/std', + 'cumulus-pallet-xcm/std', + 'cumulus-pallet-xcmp-queue/std', + 'cumulus-primitives-core/std', + 'cumulus-primitives-utility/std', + 'frame-executive/std', + 'frame-support/std', + 'frame-system-rpc-runtime-api/std', + 'frame-system/std', + 'frame-try-runtime/std', + 'pallet-aura/std', + 'pallet-balances/std', + # 'pallet-contracts/std', + # 'pallet-contracts-primitives/std', + # 'pallet-contracts-rpc-runtime-api/std', + # 'pallet-contract-helpers/std', "pallet-authorship/std", - 'pallet-collator-selection/std', - "pallet-session/std", "pallet-identity/std", - 'pallet-randomness-collective-flip/std', - 'pallet-sudo/std', - 'pallet-timestamp/std', - 'pallet-transaction-payment/std', - 'pallet-transaction-payment-rpc-runtime-api/std', - 'pallet-treasury/std', - 'pallet-evm/std', - 'pallet-evm-migration/std', - 'pallet-evm-contract-helpers/std', - 'pallet-evm-transaction-payment/std', - 'pallet-evm-coder-substrate/std', - 'pallet-ethereum/std', - 'pallet-base-fee/std', - 'fp-rpc/std', - 'up-rpc/std', - 'up-pov-estimate-rpc/std', - 'app-promotion-rpc/std', - 'fp-evm-mapping/std', - 'fp-self-contained/std', - 'parachain-info/std', - 'serde', - 'pallet-inflation/std', - 'pallet-configuration/std', - 'pallet-app-promotion/std', - 'pallet-common/std', - 'pallet-structure/std', - 'pallet-fungible/std', - 'pallet-refungible/std', - 'pallet-nonfungible/std', - 'pallet-proxy-rmrk-core/std', - 'pallet-proxy-rmrk-equip/std', - 'pallet-unique/std', - 'pallet-charge-transaction/std', - 'up-data-structs/std', - 'sp-api/std', - 'sp-block-builder/std', - "sp-consensus-aura/std", - 'sp-core/std', - 'sp-inherents/std', - 'sp-io/std', - 'sp-offchain/std', - 'sp-runtime/std', - 'sp-session/std', - 'sp-std/std', - 'sp-transaction-pool/std', - 'sp-version/std', - 'xcm/std', - 'xcm-builder/std', - 'xcm-executor/std', - 'up-common/std', - 'rmrk-rpc/std', - 'evm-coder/std', - 'up-sponsorship/std', + "pallet-session/std", + "sp-consensus-aura/std", + 'app-promotion-rpc/std', + 'evm-coder/std', + 'fp-evm-mapping/std', + 'fp-rpc/std', + 'fp-self-contained/std', + 'pallet-app-promotion/std', + 'pallet-base-fee/std', + 'pallet-charge-transaction/std', + 'pallet-collator-selection/std', + 'pallet-common/std', + 'pallet-configuration/std', + 'pallet-ethereum/std', + 'pallet-evm-coder-substrate/std', + 'pallet-evm-contract-helpers/std', + 'pallet-evm-migration/std', + 'pallet-evm-transaction-payment/std', + 'pallet-evm/std', + 'pallet-fungible/std', + 'pallet-inflation/std', + 'pallet-nonfungible/std', + 'pallet-proxy-rmrk-core/std', + 'pallet-proxy-rmrk-equip/std', + 'pallet-randomness-collective-flip/std', + 'pallet-refungible/std', + 'pallet-structure/std', + 'pallet-sudo/std', + 'pallet-timestamp/std', + 'pallet-transaction-payment-rpc-runtime-api/std', + 'pallet-transaction-payment/std', + 'pallet-treasury/std', + 'pallet-unique/std', + 'parachain-info/std', + 'rmrk-rpc/std', + 'serde', + 'sp-api/std', + 'sp-block-builder/std', + 'sp-core/std', + 'sp-inherents/std', + 'sp-io/std', + 'sp-offchain/std', + 'sp-runtime/std', + 'sp-session/std', + 'sp-std/std', + 'sp-transaction-pool/std', + 'sp-version/std', + 'up-common/std', + 'up-data-structs/std', + 'up-pov-estimate-rpc/std', + 'up-rpc/std', + 'up-sponsorship/std', + 'xcm-builder/std', + 'xcm-executor/std', + 'xcm/std', - "orml-vesting/std", - "orml-tokens/std", - "orml-xtokens/std", - "orml-traits/std", - "pallet-foreign-assets/std", - "pallet-maintenance/std", + "orml-tokens/std", + "orml-traits/std", + "orml-vesting/std", + "orml-xtokens/std", + "pallet-foreign-assets/std", + "pallet-maintenance/std", +] +try-runtime = [ + "pallet-authorship/try-runtime", + "pallet-collator-selection/try-runtime", + "pallet-identity/try-runtime", + "pallet-session/try-runtime", + 'cumulus-pallet-aura-ext/try-runtime', + 'cumulus-pallet-dmp-queue/try-runtime', + 'cumulus-pallet-parachain-system/try-runtime', + 'cumulus-pallet-xcm/try-runtime', + 'cumulus-pallet-xcmp-queue/try-runtime', + 'fp-self-contained/try-runtime', + 'frame-executive/try-runtime', + 'frame-support/try-runtime', + 'frame-system/try-runtime', + 'frame-try-runtime', + 'orml-tokens/try-runtime', + 'orml-vesting/try-runtime', + 'orml-xtokens/try-runtime', + 'pallet-app-promotion/try-runtime', + 'pallet-aura/try-runtime', + 'pallet-balances/try-runtime', + 'pallet-charge-transaction/try-runtime', + 'pallet-common/try-runtime', + 'pallet-configuration/try-runtime', + 'pallet-ethereum/try-runtime', + 'pallet-evm-coder-substrate/try-runtime', + 'pallet-evm-contract-helpers/try-runtime', + 'pallet-evm-migration/try-runtime', + 'pallet-evm-transaction-payment/try-runtime', + 'pallet-evm/try-runtime', + 'pallet-foreign-assets/try-runtime', + 'pallet-fungible/try-runtime', + 'pallet-inflation/try-runtime', + 'pallet-maintenance/try-runtime', + 'pallet-nonfungible/try-runtime', + 'pallet-proxy-rmrk-core/try-runtime', + 'pallet-proxy-rmrk-equip/try-runtime', + 'pallet-randomness-collective-flip/try-runtime', + 'pallet-refungible/try-runtime', + 'pallet-structure/try-runtime', + 'pallet-sudo/try-runtime', + 'pallet-timestamp/try-runtime', + 'pallet-transaction-payment/try-runtime', + 'pallet-treasury/try-runtime', + 'pallet-unique/try-runtime', + 'pallet-xcm/try-runtime', + 'parachain-info/try-runtime', ] -limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing'] -quartz-runtime = ['refungible', 'app-promotion', 'collator-selection', 'foreign-assets'] -become-sapphire = [] -pov-estimate = [] +app-promotion = [] +collator-selection = [] +foreign-assets = [] refungible = [] -scheduler = [] rmrk = [] -foreign-assets = [] -collator-selection = [] -app-promotion = [] - -################################################################################ -# Substrate Dependencies - -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - -[dependencies.frame-benchmarking] -default-features = false -git = "https://github.com/paritytech/substrate" -optional = true -branch = "polkadot-v0.9.36" - -[dependencies.frame-try-runtime] -default-features = false -git = "https://github.com/paritytech/substrate" -optional = true -branch = "polkadot-v0.9.36" - -[dependencies.frame-executive] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-support] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-system] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-system-benchmarking] -default-features = false -git = "https://github.com/paritytech/substrate" -optional = true -branch = "polkadot-v0.9.36" - -[dependencies.frame-system-rpc-runtime-api] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.hex-literal] -optional = true -version = '0.3.3' - -[dependencies.serde] -default-features = false -features = ['derive'] -optional = true -version = '1.0.130' - -[dependencies.pallet-aura] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-authorship] -default-features = false -git = 'https://github.com/paritytech/substrate' -branch = 'polkadot-v0.9.36' - -[dependencies.pallet-session] -default-features = false -git = 'https://github.com/paritytech/substrate' -branch = 'polkadot-v0.9.36' - -[dependencies.pallet-balances] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -# Contracts specific packages -# [dependencies.pallet-contracts] -# git = 'https://github.com/paritytech/substrate' -# default-features = false -# branch = 'master' -# version = '4.0.0-dev' - -# [dependencies.pallet-contracts-primitives] -# git = 'https://github.com/paritytech/substrate' -# default-features = false -# branch = 'master' -# version = '4.0.0-dev' - -# [dependencies.pallet-contracts-rpc-runtime-api] -# git = 'https://github.com/paritytech/substrate' -# default-features = false -# branch = 'master' -# version = '4.0.0-dev' - -[dependencies.pallet-randomness-collective-flip] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-sudo] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-timestamp] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-transaction-payment] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" +scheduler = [] -[dependencies.pallet-transaction-payment-rpc-runtime-api] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-treasury] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-arithmetic] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-api] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-block-builder] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-core] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-consensus-aura] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-inherents] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-io] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-offchain] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-runtime] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-session] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-std] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-transaction-pool] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-version] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.smallvec] -version = '1.6.1' - ################################################################################ -# Cumulus dependencies - -[dependencies.parachain-info] -default-features = false -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-pallet-aura-ext] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-parachain-system] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-primitives-core] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-xcm] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-dmp-queue] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-xcmp-queue] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-primitives-utility] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-primitives-timestamp] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -################################################################################ -# Polkadot dependencies - -[dependencies.polkadot-parachain] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.xcm] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.xcm-builder] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.xcm-executor] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.pallet-xcm] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -################################################################################ -# RMRK dependencies - -# todo git -[dependencies.rmrk-rpc] -default-features = false -path = "../../primitives/rmrk-rpc" - -################################################################################ # local dependencies [dependencies] +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-dmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-xcm = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-primitives-core = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-primitives-timestamp = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-primitives-utility = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +frame-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", optional = true, branch = "polkadot-v0.9.36" } +frame-executive = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-system-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", optional = true, branch = "polkadot-v0.9.36" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-try-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", optional = true, branch = "polkadot-v0.9.36" } +hex-literal = { optional = true, version = "0.3.3" } +orml-tokens.workspace = true +orml-traits.workspace = true orml-vesting.workspace = true orml-xtokens.workspace = true -orml-tokens.workspace = true -orml-traits.workspace = true +pallet-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-authorship = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-randomness-collective-flip = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-sudo = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-timestamp = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-treasury = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +parachain-info = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +rmrk-rpc = { default-features = false, path = "../../primitives/rmrk-rpc" } +serde = { default-features = false, features = ['derive'], optional = true, version = "1.0.130" } +smallvec = "1.6.1" +sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-arithmetic = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-block-builder = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-consensus-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-inherents = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-offchain = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-transaction-pool = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-version = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } -log = { version = "0.4.16", default-features = false } -up-common = { path = "../../primitives/common", default-features = false } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } +app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false } derivative = "2.2.0" -pallet-unique = { path = '../../pallets/unique', default-features = false } -up-rpc = { path = "../../primitives/rpc", default-features = false } -up-pov-estimate-rpc = { path = "../../primitives/pov-estimate-rpc", default-features = false } -app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false } fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-inflation = { path = '../../pallets/inflation', default-features = false } -pallet-app-promotion = { path = '../../pallets/app-promotion', default-features = false } -up-data-structs = { path = '../../primitives/data-structs', default-features = false } +log = { version = "0.4.16", default-features = false } +pallet-app-promotion = { path = "../../pallets/app-promotion", default-features = false } pallet-collator-selection = { default-features = false, path = "../../pallets/collator-selection" } -pallet-identity = { default-features = false, path = "../../pallets/identity" } +pallet-common = { default-features = false, path = "../../pallets/common" } pallet-configuration = { default-features = false, path = "../../pallets/configuration" } -pallet-common = { default-features = false, path = "../../pallets/common" } -pallet-structure = { default-features = false, path = "../../pallets/structure" } pallet-fungible = { default-features = false, path = "../../pallets/fungible" } -pallet-refungible = { default-features = false, path = "../../pallets/refungible" } +pallet-identity = { default-features = false, path = "../../pallets/identity" } +pallet-inflation = { path = "../../pallets/inflation", default-features = false } pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" } pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" } +pallet-refungible = { default-features = false, path = "../../pallets/refungible" } +pallet-structure = { default-features = false, path = "../../pallets/structure" } +pallet-unique = { path = "../../pallets/unique", default-features = false } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } +up-common = { path = "../../primitives/common", default-features = false } +up-data-structs = { path = "../../primitives/data-structs", default-features = false } +up-pov-estimate-rpc = { path = "../../primitives/pov-estimate-rpc", default-features = false } +up-rpc = { path = "../../primitives/rpc", default-features = false } # pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' } -pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" } -pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false } -pallet-evm-contract-helpers = { path = '../../pallets/evm-contract-helpers', default-features = false } -pallet-evm-transaction-payment = { path = '../../pallets/evm-transaction-payment', default-features = false } -pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +evm-coder = { default-features = false, path = "../../crates/evm-coder" } fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +num_enum = { version = "0.5.3", default-features = false } +pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" } +pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" } +pallet-evm-contract-helpers = { path = "../../pallets/evm-contract-helpers", default-features = false } +pallet-evm-migration = { path = "../../pallets/evm-migration", default-features = false } pallet-evm-precompile-simple = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -evm-coder = { default-features = false, path = '../../crates/evm-coder' } -up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.36' } +pallet-evm-transaction-payment = { path = "../../pallets/evm-transaction-payment", default-features = false } pallet-foreign-assets = { default-features = false, path = "../../pallets/foreign-assets" } pallet-maintenance = { default-features = false, path = "../../pallets/maintenance" } -precompile-utils-macro = { path = "../common/ethereum/precompiles/utils/macro" } -num_enum = { version = "0.5.3", default-features = false } +precompile-utils-macro.path = "../common/ethereum/precompiles/utils/macro" +up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36" } ################################################################################ # Test dependencies @@ -533,15 +302,8 @@ impl-trait-for-tuples = "0.2.2" -################################################################################ -# Dev Dependencies +[dev-dependencies] +logtest = "2.0.0" -[dev-dependencies.logtest] -version = "2.0.0" - -################################################################################ -# Build Dependencies - -[build-dependencies.substrate-wasm-builder] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" +[build-dependencies] +substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } --- a/runtime/tests/Cargo.toml +++ b/runtime/tests/Cargo.toml @@ -1,7 +1,7 @@ [package] +edition = "2021" name = "tests" version = "0.1.1" -edition = "2021" [features] default = ['refungible'] @@ -9,12 +9,12 @@ refungible = [] [dependencies] -up-data-structs = { default-features = false, path = '../../primitives/data-structs' } +up-data-structs = { default-features = false, path = "../../primitives/data-structs" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } @@ -22,25 +22,23 @@ frame-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-common = { path = '../../pallets/common' } -pallet-structure = { path = '../../pallets/structure' } -pallet-fungible = { path = '../../pallets/fungible' } -pallet-nonfungible = { path = '../../pallets/nonfungible' } -pallet-refungible = { path = '../../pallets/refungible' } -pallet-unique = { path = '../../pallets/unique' } +pallet-common.path = "../../pallets/common" +pallet-fungible.path = "../../pallets/fungible" +pallet-nonfungible.path = "../../pallets/nonfungible" +pallet-refungible.path = "../../pallets/refungible" +pallet-structure.path = "../../pallets/structure" +pallet-unique.path = "../../pallets/unique" -pallet-evm-coder-substrate = { path = '../../pallets/evm-coder-substrate' } +pallet-evm-coder-substrate.path = "../../pallets/evm-coder-substrate" -parity-scale-codec = { version = "3.1.2", default-features = false, features = [ - "derive", -] } +parity-scale-codec = { version = "3.2.2", default-features = false, features = ["derive"] } scale-info = "*" -evm-coder = { default-features = false, path = '../../crates/evm-coder' } +evm-coder = { default-features = false, path = "../../crates/evm-coder" } up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36" } --- a/runtime/unique/Cargo.toml +++ b/runtime/unique/Cargo.toml @@ -17,503 +17,277 @@ [features] default = ['std', 'unique-runtime'] +limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing'] +pov-estimate = [] runtime-benchmarks = [ - 'hex-literal', - 'frame-benchmarking', - 'frame-support/runtime-benchmarks', - 'frame-system-benchmarking', - 'frame-system/runtime-benchmarks', - 'pallet-ethereum/runtime-benchmarks', - 'pallet-evm-migration/runtime-benchmarks', - 'pallet-evm-coder-substrate/runtime-benchmarks', - 'pallet-balances/runtime-benchmarks', - 'pallet-timestamp/runtime-benchmarks', - 'pallet-configuration/runtime-benchmarks', - 'pallet-common/runtime-benchmarks', - 'pallet-structure/runtime-benchmarks', - 'pallet-fungible/runtime-benchmarks', - 'pallet-refungible/runtime-benchmarks', - 'pallet-nonfungible/runtime-benchmarks', - 'pallet-proxy-rmrk-core/runtime-benchmarks', - 'pallet-proxy-rmrk-equip/runtime-benchmarks', - 'pallet-unique/runtime-benchmarks', - 'pallet-foreign-assets/runtime-benchmarks', - 'pallet-inflation/runtime-benchmarks', - 'pallet-collator-selection/runtime-benchmarks', - 'pallet-identity/runtime-benchmarks', - 'pallet-app-promotion/runtime-benchmarks', - 'pallet-xcm/runtime-benchmarks', - 'sp-runtime/runtime-benchmarks', - 'xcm-builder/runtime-benchmarks', - 'up-data-structs/runtime-benchmarks', - 'pallet-maintenance/runtime-benchmarks', + 'frame-benchmarking', + 'frame-support/runtime-benchmarks', + 'frame-system-benchmarking', + 'frame-system/runtime-benchmarks', + 'hex-literal', + 'pallet-app-promotion/runtime-benchmarks', + 'pallet-balances/runtime-benchmarks', + 'pallet-collator-selection/runtime-benchmarks', + 'pallet-common/runtime-benchmarks', + 'pallet-configuration/runtime-benchmarks', + 'pallet-ethereum/runtime-benchmarks', + 'pallet-evm-coder-substrate/runtime-benchmarks', + 'pallet-evm-migration/runtime-benchmarks', + 'pallet-foreign-assets/runtime-benchmarks', + 'pallet-fungible/runtime-benchmarks', + 'pallet-identity/runtime-benchmarks', + 'pallet-inflation/runtime-benchmarks', + 'pallet-maintenance/runtime-benchmarks', + 'pallet-nonfungible/runtime-benchmarks', + 'pallet-proxy-rmrk-core/runtime-benchmarks', + 'pallet-proxy-rmrk-equip/runtime-benchmarks', + 'pallet-refungible/runtime-benchmarks', + 'pallet-structure/runtime-benchmarks', + 'pallet-timestamp/runtime-benchmarks', + 'pallet-unique/runtime-benchmarks', + 'pallet-xcm/runtime-benchmarks', + 'sp-runtime/runtime-benchmarks', + 'up-data-structs/runtime-benchmarks', + 'xcm-builder/runtime-benchmarks', +] +std = [ + 'codec/std', + 'cumulus-pallet-aura-ext/std', + 'cumulus-pallet-parachain-system/std', + 'cumulus-pallet-xcm/std', + 'cumulus-pallet-xcmp-queue/std', + 'cumulus-primitives-core/std', + 'cumulus-primitives-utility/std', + 'frame-executive/std', + 'frame-support/std', + 'frame-system-rpc-runtime-api/std', + 'frame-system/std', + 'frame-try-runtime/std', + 'pallet-aura/std', + 'pallet-balances/std', + # 'pallet-contracts/std', + # 'pallet-contracts-primitives/std', + # 'pallet-contracts-rpc-runtime-api/std', + # 'pallet-contract-helpers/std', + "pallet-authorship/std", + "pallet-identity/std", + "pallet-session/std", + "sp-consensus-aura/std", + 'app-promotion-rpc/std', + 'evm-coder/std', + 'fp-evm-mapping/std', + 'fp-rpc/std', + 'fp-self-contained/std', + 'pallet-app-promotion/std', + 'pallet-base-fee/std', + 'pallet-charge-transaction/std', + 'pallet-collator-selection/std', + 'pallet-common/std', + 'pallet-configuration/std', + 'pallet-ethereum/std', + 'pallet-evm-coder-substrate/std', + 'pallet-evm-contract-helpers/std', + 'pallet-evm-migration/std', + 'pallet-evm-transaction-payment/std', + 'pallet-evm/std', + 'pallet-fungible/std', + 'pallet-inflation/std', + 'pallet-nonfungible/std', + 'pallet-proxy-rmrk-core/std', + 'pallet-proxy-rmrk-equip/std', + 'pallet-randomness-collective-flip/std', + 'pallet-refungible/std', + 'pallet-structure/std', + 'pallet-sudo/std', + 'pallet-timestamp/std', + 'pallet-transaction-payment-rpc-runtime-api/std', + 'pallet-transaction-payment/std', + 'pallet-treasury/std', + 'pallet-unique/std', + 'parachain-info/std', + 'rmrk-rpc/std', + 'sp-api/std', + 'sp-block-builder/std', + 'sp-core/std', + 'sp-inherents/std', + 'sp-io/std', + 'sp-offchain/std', + 'sp-runtime/std', + 'sp-session/std', + 'sp-std/std', + 'sp-transaction-pool/std', + 'sp-version/std', + 'up-common/std', + 'up-data-structs/std', + 'up-pov-estimate-rpc/std', + 'up-rpc/std', + 'up-sponsorship/std', + 'xcm-builder/std', + 'xcm-executor/std', + 'xcm/std', + + "orml-tokens/std", + "orml-traits/std", + "orml-vesting/std", + "orml-xtokens/std", + "pallet-foreign-assets/std", + "pallet-maintenance/std", ] +stubgen = ["evm-coder/stubgen"] try-runtime = [ - 'frame-try-runtime', - 'frame-executive/try-runtime', - 'frame-support/try-runtime', - 'frame-system/try-runtime', - 'cumulus-pallet-parachain-system/try-runtime', - 'parachain-info/try-runtime', - 'pallet-aura/try-runtime', - 'cumulus-pallet-aura-ext/try-runtime', - 'pallet-balances/try-runtime', - 'pallet-randomness-collective-flip/try-runtime', - 'pallet-timestamp/try-runtime', - 'pallet-transaction-payment/try-runtime', - 'pallet-treasury/try-runtime', - 'pallet-sudo/try-runtime', - 'orml-vesting/try-runtime', - 'orml-xtokens/try-runtime', - 'orml-tokens/try-runtime', - 'cumulus-pallet-xcmp-queue/try-runtime', - 'pallet-xcm/try-runtime', - 'cumulus-pallet-xcm/try-runtime', - 'cumulus-pallet-dmp-queue/try-runtime', "pallet-authorship/try-runtime", "pallet-collator-selection/try-runtime", + "pallet-identity/try-runtime", "pallet-session/try-runtime", - "pallet-identity/try-runtime", - 'pallet-inflation/try-runtime', - 'pallet-unique/try-runtime', - 'pallet-configuration/try-runtime', - 'pallet-charge-transaction/try-runtime', - 'pallet-common/try-runtime', - 'pallet-fungible/try-runtime', - 'pallet-refungible/try-runtime', - 'pallet-nonfungible/try-runtime', - 'pallet-structure/try-runtime', - 'pallet-proxy-rmrk-core/try-runtime', - 'pallet-proxy-rmrk-equip/try-runtime', - 'pallet-app-promotion/try-runtime', - 'pallet-foreign-assets/try-runtime', - 'pallet-ethereum/try-runtime', - 'pallet-evm/try-runtime', - 'pallet-evm-coder-substrate/try-runtime', - 'pallet-evm-contract-helpers/try-runtime', - 'pallet-evm-transaction-payment/try-runtime', - 'pallet-evm-migration/try-runtime', - 'pallet-maintenance/try-runtime', - 'fp-self-contained/try-runtime', -] -std = [ - 'codec/std', - 'cumulus-pallet-aura-ext/std', - 'cumulus-pallet-parachain-system/std', - 'cumulus-pallet-xcm/std', - 'cumulus-pallet-xcmp-queue/std', - 'cumulus-primitives-core/std', - 'cumulus-primitives-utility/std', - 'frame-try-runtime/std', - 'frame-executive/std', - 'frame-support/std', - 'frame-system/std', - 'frame-system-rpc-runtime-api/std', - 'pallet-aura/std', - 'pallet-balances/std', - # 'pallet-contracts/std', - # 'pallet-contracts-primitives/std', - # 'pallet-contracts-rpc-runtime-api/std', - # 'pallet-contract-helpers/std', - "pallet-authorship/std", - 'pallet-collator-selection/std', - "pallet-session/std", - "pallet-identity/std", - 'pallet-randomness-collective-flip/std', - 'pallet-sudo/std', - 'pallet-timestamp/std', - 'pallet-transaction-payment/std', - 'pallet-transaction-payment-rpc-runtime-api/std', - 'pallet-treasury/std', - 'pallet-evm/std', - 'pallet-evm-migration/std', - 'pallet-evm-contract-helpers/std', - 'pallet-evm-transaction-payment/std', - 'pallet-evm-coder-substrate/std', - 'pallet-ethereum/std', - 'pallet-base-fee/std', - 'fp-rpc/std', - 'up-rpc/std', - 'up-pov-estimate-rpc/std', - 'app-promotion-rpc/std', - 'fp-evm-mapping/std', - 'fp-self-contained/std', - 'parachain-info/std', - 'serde', - 'pallet-inflation/std', - 'pallet-configuration/std', - 'pallet-app-promotion/std', - 'pallet-common/std', - 'pallet-structure/std', - 'pallet-fungible/std', - 'pallet-refungible/std', - 'pallet-nonfungible/std', - 'pallet-proxy-rmrk-core/std', - 'pallet-proxy-rmrk-equip/std', - 'pallet-unique/std', - 'pallet-charge-transaction/std', - 'up-data-structs/std', - 'sp-api/std', - 'sp-block-builder/std', - "sp-consensus-aura/std", - 'sp-core/std', - 'sp-inherents/std', - 'sp-io/std', - 'sp-offchain/std', - 'sp-runtime/std', - 'sp-session/std', - 'sp-std/std', - 'sp-transaction-pool/std', - 'sp-version/std', - 'xcm/std', - 'xcm-builder/std', - 'xcm-executor/std', - 'up-common/std', - 'rmrk-rpc/std', - 'evm-coder/std', - 'up-sponsorship/std', - - "orml-vesting/std", - "orml-tokens/std", - "orml-xtokens/std", - "orml-traits/std", - "pallet-foreign-assets/std", - "pallet-maintenance/std", + 'cumulus-pallet-aura-ext/try-runtime', + 'cumulus-pallet-dmp-queue/try-runtime', + 'cumulus-pallet-parachain-system/try-runtime', + 'cumulus-pallet-xcm/try-runtime', + 'cumulus-pallet-xcmp-queue/try-runtime', + 'fp-self-contained/try-runtime', + 'frame-executive/try-runtime', + 'frame-support/try-runtime', + 'frame-system/try-runtime', + 'frame-try-runtime', + 'orml-tokens/try-runtime', + 'orml-vesting/try-runtime', + 'orml-xtokens/try-runtime', + 'pallet-app-promotion/try-runtime', + 'pallet-aura/try-runtime', + 'pallet-balances/try-runtime', + 'pallet-charge-transaction/try-runtime', + 'pallet-common/try-runtime', + 'pallet-configuration/try-runtime', + 'pallet-ethereum/try-runtime', + 'pallet-evm-coder-substrate/try-runtime', + 'pallet-evm-contract-helpers/try-runtime', + 'pallet-evm-migration/try-runtime', + 'pallet-evm-transaction-payment/try-runtime', + 'pallet-evm/try-runtime', + 'pallet-foreign-assets/try-runtime', + 'pallet-fungible/try-runtime', + 'pallet-inflation/try-runtime', + 'pallet-maintenance/try-runtime', + 'pallet-nonfungible/try-runtime', + 'pallet-proxy-rmrk-core/try-runtime', + 'pallet-proxy-rmrk-equip/try-runtime', + 'pallet-randomness-collective-flip/try-runtime', + 'pallet-refungible/try-runtime', + 'pallet-structure/try-runtime', + 'pallet-sudo/try-runtime', + 'pallet-timestamp/try-runtime', + 'pallet-transaction-payment/try-runtime', + 'pallet-treasury/try-runtime', + 'pallet-unique/try-runtime', + 'pallet-xcm/try-runtime', + 'parachain-info/try-runtime', ] -limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing'] unique-runtime = ['foreign-assets'] -pov-estimate = [] -stubgen = ["evm-coder/stubgen"] +collator-selection = [] +foreign-assets = [] refungible = [] -scheduler = [] rmrk = [] -foreign-assets = [] -collator-selection = [] - -################################################################################ -# Substrate Dependencies - -[dependencies.codec] -default-features = false -features = ['derive'] -package = 'parity-scale-codec' -version = '3.1.2' - -[dependencies.frame-benchmarking] -default-features = false -git = "https://github.com/paritytech/substrate" -optional = true -branch = "polkadot-v0.9.36" - -[dependencies.frame-try-runtime] -default-features = false -git = "https://github.com/paritytech/substrate" -optional = true -branch = "polkadot-v0.9.36" - -[dependencies.frame-executive] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-support] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-system] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.frame-system-benchmarking] -default-features = false -git = "https://github.com/paritytech/substrate" -optional = true -branch = "polkadot-v0.9.36" - -[dependencies.frame-system-rpc-runtime-api] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.hex-literal] -optional = true -version = '0.3.3' - -[dependencies.serde] -default-features = false -features = ['derive'] -optional = true -version = '1.0.130' - -[dependencies.pallet-aura] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-authorship] -default-features = false -git = 'https://github.com/paritytech/substrate' -branch = 'polkadot-v0.9.36' - -[dependencies.pallet-session] -default-features = false -git = 'https://github.com/paritytech/substrate' -branch = 'polkadot-v0.9.36' - -[dependencies.pallet-balances] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -# Contracts specific packages -# [dependencies.pallet-contracts] -# git = 'https://github.com/paritytech/substrate' -# default-features = false -# branch = 'master' -# version = '4.0.0-dev' - -# [dependencies.pallet-contracts-primitives] -# git = 'https://github.com/paritytech/substrate' -# default-features = false -# branch = 'master' -# version = '4.0.0-dev' - -# [dependencies.pallet-contracts-rpc-runtime-api] -# git = 'https://github.com/paritytech/substrate' -# default-features = false -# branch = 'master' -# version = '4.0.0-dev' - -[dependencies.pallet-randomness-collective-flip] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-sudo] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-timestamp] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-transaction-payment] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-transaction-payment-rpc-runtime-api] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.pallet-treasury] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-arithmetic] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-api] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-block-builder] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-core] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-consensus-aura] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-inherents] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-io] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-offchain] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-runtime] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-session] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-std] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-transaction-pool] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.sp-version] -default-features = false -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" - -[dependencies.smallvec] -version = '1.6.1' - -################################################################################ -# Cumulus dependencies - -[dependencies.parachain-info] -default-features = false -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" - -[dependencies.cumulus-pallet-aura-ext] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-parachain-system] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-primitives-core] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-xcm] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-dmp-queue] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-pallet-xcmp-queue] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-primitives-utility] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -[dependencies.cumulus-primitives-timestamp] -git = "https://github.com/paritytech/cumulus" -branch = "polkadot-v0.9.36" -default-features = false - -################################################################################ -# Polkadot dependencies - -[dependencies.polkadot-parachain] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.xcm] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.xcm-builder] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.xcm-executor] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false - -[dependencies.pallet-xcm] -git = "https://github.com/paritytech/polkadot" -branch = "release-v0.9.36" -default-features = false +scheduler = [] ################################################################################ # local dependencies [dependencies] -orml-vesting.workspace = true -orml-xtokens.workspace = true +codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.1.2" } +cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-dmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-xcm = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-primitives-core = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-primitives-timestamp = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +cumulus-primitives-utility = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36", default-features = false } +frame-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", optional = true, branch = "polkadot-v0.9.36" } +frame-executive = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-system-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", optional = true, branch = "polkadot-v0.9.36" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-try-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", optional = true, branch = "polkadot-v0.9.36" } +hex-literal = { optional = true, version = "0.3.3" } orml-tokens.workspace = true orml-traits.workspace = true +orml-vesting.workspace = true +orml-xtokens.workspace = true +pallet-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-authorship = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-randomness-collective-flip = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-sudo = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-timestamp = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-treasury = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +pallet-xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +parachain-info = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.36" } +polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +smallvec = "1.6.1" +sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-arithmetic = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-block-builder = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-consensus-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-inherents = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-offchain = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-transaction-pool = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-version = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } +xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.36", default-features = false } -log = { version = "0.4.16", default-features = false } -up-common = { path = "../../primitives/common", default-features = false } -scale-info = { version = "2.0.1", default-features = false, features = [ - "derive", -] } -derivative = "2.2.0" -pallet-unique = { path = '../../pallets/unique', default-features = false } -up-rpc = { path = "../../primitives/rpc", default-features = false } -up-pov-estimate-rpc = { path = "../../primitives/pov-estimate-rpc", default-features = false } app-promotion-rpc = { path = "../../primitives/app_promotion_rpc", default-features = false } -rmrk-rpc = { path = "../../primitives/rmrk-rpc", default-features = false } -pallet-inflation = { path = '../../pallets/inflation', default-features = false } -pallet-app-promotion = { path = '../../pallets/app-promotion', default-features = false } -up-data-structs = { path = '../../primitives/data-structs', default-features = false } +derivative = "2.2.0" +log = { version = "0.4.16", default-features = false } +pallet-app-promotion = { path = "../../pallets/app-promotion", default-features = false } pallet-collator-selection = { default-features = false, path = "../../pallets/collator-selection" } -pallet-identity = { default-features = false, path = "../../pallets/identity" } -pallet-configuration = { default-features = false, path = "../../pallets/configuration" } pallet-common = { default-features = false, path = "../../pallets/common" } -pallet-structure = { default-features = false, path = "../../pallets/structure" } +pallet-configuration = { default-features = false, path = "../../pallets/configuration" } pallet-fungible = { default-features = false, path = "../../pallets/fungible" } -pallet-refungible = { default-features = false, path = "../../pallets/refungible" } +pallet-identity = { default-features = false, path = "../../pallets/identity" } +pallet-inflation = { path = "../../pallets/inflation", default-features = false } pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" } pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" } pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" } +pallet-refungible = { default-features = false, path = "../../pallets/refungible" } +pallet-structure = { default-features = false, path = "../../pallets/structure" } +pallet-unique = { path = "../../pallets/unique", default-features = false } +rmrk-rpc = { path = "../../primitives/rmrk-rpc", default-features = false } +scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } +up-common = { path = "../../primitives/common", default-features = false } +up-data-structs = { path = "../../primitives/data-structs", default-features = false } +up-pov-estimate-rpc = { path = "../../primitives/pov-estimate-rpc", default-features = false } +up-rpc = { path = "../../primitives/rpc", default-features = false } # pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' } +evm-coder = { default-features = false, path = "../../crates/evm-coder" } +fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +num_enum = { version = "0.5.3", default-features = false } +pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" } -pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false } -pallet-evm-contract-helpers = { path = '../../pallets/evm-contract-helpers', default-features = false } -pallet-evm-transaction-payment = { path = '../../pallets/evm-transaction-payment', default-features = false } +pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" } -pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } +pallet-evm-contract-helpers = { path = "../../pallets/evm-contract-helpers", default-features = false } +pallet-evm-migration = { path = "../../pallets/evm-migration", default-features = false } pallet-evm-precompile-simple = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.36" } -evm-coder = { default-features = false, path = '../../crates/evm-coder' } -up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = 'polkadot-v0.9.36' } +pallet-evm-transaction-payment = { path = "../../pallets/evm-transaction-payment", default-features = false } pallet-foreign-assets = { default-features = false, path = "../../pallets/foreign-assets" } pallet-maintenance = { default-features = false, path = "../../pallets/maintenance" } -precompile-utils-macro = { path = "../common/ethereum/precompiles/utils/macro" } -num_enum = { version = "0.5.3", default-features = false } +precompile-utils-macro.path = "../common/ethereum/precompiles/utils/macro" +up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.36" } ################################################################################ # Test dependencies @@ -525,15 +299,8 @@ impl-trait-for-tuples = "0.2.2" -################################################################################ -# Dev Dependencies +[dev-dependencies] +logtest = "2.0.0" -[dev-dependencies.logtest] -version = "2.0.0" - -################################################################################ -# Build Dependencies - -[build-dependencies.substrate-wasm-builder] -git = "https://github.com/paritytech/substrate" -branch = "polkadot-v0.9.36" +[build-dependencies] +substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } --- a/smart_contracs/transfer/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore build artifacts from the local tests sub-crate. -/target/ - -# Ignore backup files creates by cargo fmt. -**/*.rs.bk - -# Remove Cargo.lock when creating an executable, leave it for libraries -# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock -Cargo.lock --- a/smart_contracs/transfer/Cargo.toml +++ /dev/null @@ -1,38 +0,0 @@ -[package] -name = "nft_transfer" -version = "0.1.0" -authors = ["[Greg Zaitsev] <[your_email]>"] -edition = "2021" - -[workspace] - -[dependencies] -ink_primitives = { default-features = false } -ink_metadata = { default-features = false, features = ["derive"], optional = true } -ink_env = { default-features = false } -ink_storage = { default-features = false } -ink_lang = { default-features = false } - -scale = { package = "parity-scale-codec", version = "2.3.0", default-features = false, features = ["derive"] } -scale-info = { version = "0.6.0", default-features = false, features = ["derive"] } - -[lib] -name = "nft_transfer" -path = "lib.rs" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", -] - -[features] -default = ["std"] -std = [ - "ink_metadata/std", - "ink_env/std", - "ink_storage/std", - "ink_lang/std", - "ink_primitives/std", - "scale/std", - "scale-info/std", -] -ink-as-dependency = [] --- a/smart_contracs/transfer/lib.rs +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. -// This file is part of Unique Network. - -// Unique Network 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. - -// Unique Network 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 Unique Network. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] -extern crate alloc; -use alloc::vec::Vec; - -use ink_lang as ink; -use ink_env::{Environment, DefaultEnvironment}; - -pub enum NftEnvironment {} - -impl Environment for NftEnvironment { - const MAX_EVENT_TOPICS: usize = - ::MAX_EVENT_TOPICS; - - type AccountId = ::AccountId; - type Balance = ::Balance; - type Hash = ::Hash; - type BlockNumber = ::BlockNumber; - type Timestamp = ::Timestamp; - - type ChainExtension = NftChainExtension; -} - -/// The shared error code for the NFT chain extension. -#[derive( - Debug, Copy, Clone, PartialEq, Eq, scale::Encode, scale::Decode, -)] -pub enum NftErrorCode { - SomeError, -} - -impl ink_env::chain_extension::FromStatusCode for NftErrorCode { - fn from_status_code(status_code: u32) -> Result<(), Self> { - match status_code { - 0 => Ok(()), - 1 => Err(Self::SomeError), - _ => panic!("encountered unknown status code"), - } - } -} - -#[derive(scale::Encode, scale::Decode, scale_info::TypeInfo)] -pub enum CreateItemData { - Nft { - const_data: Vec, - }, - Fungible { - value: u128, - }, - ReFungible { - const_data: Vec, - pieces: u128, - }, -} - -type DefaultAccountId = ::AccountId; - -#[ink::chain_extension] -pub trait NftChainExtension { - type ErrorCode = NftErrorCode; - - /// Transfer one NFT token from sender - /// - #[ink(extension = 0, returns_result = false)] - fn transfer(recipient: DefaultAccountId, collection_id: u32, token_id: u32, amount: u128); - #[ink(extension = 1, returns_result = false)] - fn create_item(owner: DefaultAccountId, collection_id: u32, data: CreateItemData); - #[ink(extension = 2, returns_result = false)] - fn create_multiple_items(owner: DefaultAccountId, collection_id: u32, data: Vec); - #[ink(extension = 3, returns_result = false)] - fn approve(spender: DefaultAccountId, collection_id: u32, item_id: u32, amount: u128); - #[ink(extension = 4, returns_result = false)] - fn transfer_from(owner: DefaultAccountId, recipient: DefaultAccountId, collection_id: u32, item_id: u32, amount: u128); - #[ink(extension = 6, returns_result = false)] - fn toggle_allow_list(collection_id: u32, address: DefaultAccountId, allowlisted: bool); -} - -#[ink::contract(env = crate::NftEnvironment, dynamic_storage_allocator = true)] -mod nft_transfer { - use alloc::vec::Vec; - // use ink_storage::Vec; - use crate::CreateItemData; - - #[ink(storage)] - pub struct NftTransfer { - } - - impl NftTransfer { - /// Default Constructor - /// - /// Constructors can delegate to other constructors. - #[ink(constructor)] - pub fn default() -> Self { - Self {} - } - - /// Transfer one NFT token - #[ink(message)] - pub fn transfer(&mut self, recipient: AccountId, collection_id: u32, token_id: u32, amount: u128) { - let _ = self.env() - .extension() - .transfer(recipient, collection_id, token_id, amount); - } - #[ink(message)] - pub fn create_item(&mut self, recipient: AccountId, collection_id: u32, data: CreateItemData) { - let _ = self.env() - .extension() - .create_item(recipient, collection_id, data); - } - #[ink(message)] - pub fn create_multiple_items(&mut self, owner: AccountId, collection_id: u32, data: Vec) { - let _ = self.env() - .extension() - .create_multiple_items(owner, collection_id, data); - } - #[ink(message)] - pub fn approve(&mut self, spender: AccountId, collection_id: u32, item_id: u32, amount: u128) { - let _ = self.env() - .extension() - .approve(spender, collection_id, item_id, amount); - } - #[ink(message)] - pub fn transfer_from(&mut self, owner: AccountId, recipient: AccountId, collection_id: u32, item_id: u32, amount: u128) { - let _ = self.env() - .extension() - .transfer_from(owner, recipient, collection_id, item_id, amount); - } - #[ink(message)] - pub fn toggle_allow_list(&mut self, collection_id: u32, address: AccountId, allowlisted: bool) { - let _ = self.env() - .extension() - .toggle_allow_list(collection_id, address, allowlisted); - } - - } - -} --- a/test-pallets/utils/Cargo.toml +++ b/test-pallets/utils/Cargo.toml @@ -1,34 +1,27 @@ [package] +edition = "2021" +license = "GPLv3" name = "pallet-test-utils" +publish = false version = "0.1.0" -license = "GPLv3" -edition = "2021" -publish = false [dependencies] -codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ - "derive", -] } -scale-info = { version = "2.1.1", default-features = false, features = [ - "derive", -] } +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } # pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false } -pallet-unique-scheduler-v2 = { path = '../../pallets/scheduler-v2', default-features = false } +pallet-unique-scheduler-v2 = { path = "../../pallets/scheduler-v2", default-features = false } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } [features] default = ["std"] std = [ "codec/std", - "scale-info/std", "frame-support/std", "frame-system/std", "pallet-unique-scheduler-v2/std", + "scale-info/std", "sp-std/std", ] -try-runtime = [ - "frame-support/try-runtime", - "pallet-unique-scheduler-v2/try-runtime", -] +try-runtime = ["frame-support/try-runtime", "pallet-unique-scheduler-v2/try-runtime"] --- a/tests/flipper-src/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore build artifacts from the local tests sub-crate. -/target/ - -# Ignore backup files creates by cargo fmt. -**/*.rs.bk - -# Remove Cargo.lock when creating an executable, leave it for libraries -# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock -Cargo.lock \ No newline at end of file --- a/tests/flipper-src/Cargo.toml +++ /dev/null @@ -1,35 +0,0 @@ -[package] -name = "flipper" -version = "3.0.0-rc1" -authors = ["Parity Technologies "] -edition = "2021" - -[dependencies] -ink_primitives = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false } -ink_metadata = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false, features = ["derive"], optional = true } -ink_env = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false } -ink_storage = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false } -ink_lang = { version = "3.0.0-rc1", git = "https://github.com/paritytech/ink", tag = "v3.0.0-rc1", default-features = false } - -scale = { package = "parity-scale-codec", version = "1.3", default-features = false, features = ["derive"] } -scale-info = { version = "0.4", default-features = false, features = ["derive"], optional = true } - -[lib] -name = "flipper" -path = "lib.rs" -crate-type = ["cdylib"] - -[features] -default = ["std"] -std = [ - "ink_primitives/std", - "ink_metadata", - "ink_metadata/std", - "ink_env/std", - "ink_storage/std", - "ink_lang/std", - "scale/std", - "scale-info", - "scale-info/std", -] -ink-as-dependency = [] --- a/tests/flipper-src/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -rustup component add rust-src --toolchain nightly -cargo +nightly contract build -cargo +nightly contract generate-metadata --- a/tests/flipper-src/lib.rs +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. -// This file is part of Unique Network. - -// Unique Network 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. - -// Unique Network 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 Unique Network. If not, see . - -// Original License -// Copyright 2018-2020 Parity Technologies (UK) Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#![cfg_attr(not(feature = "std"), no_std)] - -use ink_lang as ink; - -#[ink::contract] -pub mod flipper { - #[ink(storage)] - pub struct Flipper { - value: bool, - } - - impl Flipper { - /// Creates a new flipper smart contract initialized with the given value. - #[ink(constructor)] - pub fn new(init_value: bool) -> Self { - Self { value: init_value } - } - - /// Creates a new flipper smart contract initialized to `false`. - #[ink(constructor)] - pub fn default() -> Self { - Self::new(Default::default()) - } - - /// Flips the current value of the Flipper's bool. - #[ink(message)] - pub fn flip(&mut self) { - self.value = !self.value; - } - - /// Returns the current value of the Flipper's bool. - #[ink(message)] - pub fn get(&self) -> bool { - self.value - } - } - - #[cfg(test)] - mod tests { - use super::*; - - #[test] - fn default_works() { - let flipper = Flipper::default(); - assert_eq!(flipper.get(), false); - } - - #[test] - fn it_works() { - let mut flipper = Flipper::new(false); - assert_eq!(flipper.get(), false); - flipper.flip(); - assert_eq!(flipper.get(), true); - } - } -} \ No newline at end of file --- a/tests/ink-types-node-runtime/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -# Ignore build artifacts -/target/ -/examples/**/target/ - -# Ignore backup files creates by cargo fmt. -**/*.rs.bk - -# Remove Cargo.lock when creating an executable, leave it for libraries -# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock -Cargo.lock - -# Ignore VS Code artifacts. -**/.vscode/** - -# Ignore history files. -**/.history/** \ No newline at end of file --- a/tests/ink-types-node-runtime/Cargo.toml +++ /dev/null @@ -1,54 +0,0 @@ -[package] -name = "ink_types_node_runtime" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2021" - -license = "GPL-3.0" -readme = "README.md" - -repository = "https://github.com/paritytech/ink" -documentation = "https://github.com/paritytech/ink/wiki" -homepage = "https://www.parity.io/" - -description = "[ink!] Rust based eDSL for writing smart contracts for Substrate" -keywords = ["wasm", "parity", "webassembly", "blockchain", "edsl"] -categories = ["no-std", "embedded"] - -include = ["/Cargo.toml", "src/**/*.rs", "/README.md", "/LICENSE"] - -[dependencies] -ink_core = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_core", default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate/", package = "frame-system", default-features = false } -pallet-indices = { git = "https://github.com/paritytech/substrate/", package = "pallet-indices", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate/", package = "sp-core", default-features = false } -sp-io = { git = "https://github.com/paritytech/substrate/", package = "sp-io", default-features = false, features = ["disable_panic_handler", "disable_oom", "disable_allocator"] } -sp-runtime = { git = "https://github.com/paritytech/substrate/", package = "sp-runtime", default-features = false } -scale = { package = "parity-scale-codec", version = "1.3", default-features = false, features = ["derive"] } - -[dependencies.type-metadata] -git = "https://github.com/type-metadata/type-metadata.git" -rev = "02eae9f35c40c943b56af5b60616219f2b72b47d" -default-features = false -features = ["derive"] -optional = true - - -[dev-dependencies] -node-runtime = { git = "https://github.com/paritytech/substrate/", package = "node-runtime", features = ["std"] } - -[features] -default = ["std"] -std = [ - "ink_core/std", - "frame-system/std", - "pallet-indices/std", - "sp-core/std", - "sp-io/std", - "sp-runtime/std", -] -ink-generate-abi = [ - "std", - "type-metadata", - "ink_core/ink-generate-abi", -] --- a/tests/ink-types-node-runtime/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Node runtime types for `ink!` - -Defines types for [ink!](https://github.com/paritytech/ink) smart contracts targeting [Substrate's `node-runtime`](https://github.com/paritytech/substrate/blob/master/bin/node/runtime/src/lib.rs). - -Supplies an implementation of the [ink! `EnvTypes` trait](https://github.com/paritytech/ink/blob/master/core/src/env/types.rs#L128). - -See `ink!` [examples](./examples) for usage. - -## Requirements -``` -rustup component add rust-src --toolchain nightly -rustup target add wasm32-unknown-unknown --toolchain nightly -rustup target add wasm32-unknown-unknown --toolchain stable -cargo install cargo-contract --vers 0.6.1 --force -``` - -## Build - -### Runtime Dependencies -``` -cargo +nightly build --release -``` - -### ink! Smart Contract -``` -cargo +nightly contract build -cargo +nightly contract generate-metadata -``` - -## Test -``` -cargo +nightly test -``` \ No newline at end of file --- a/tests/ink-types-node-runtime/examples/calls/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore build artifacts from the local tests sub-crate. -/target/ - -# Ignore backup files creates by cargo fmt. -**/*.rs.bk - -# Remove Cargo.lock when creating an executable, leave it for libraries -# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock -Cargo.lock \ No newline at end of file --- a/tests/ink-types-node-runtime/examples/calls/.ink/abi_gen/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "abi-gen" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2021" -publish = false - -[[bin]] -name = "abi-gen" -path = "main.rs" - -[dependencies] -contract = { path = "../..", package = "calls", default-features = false, features = ["ink-generate-abi"] } -ink_lang = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_lang", default-features = false, features = ["ink-generate-abi"] } -serde = "1.0.101" -serde_json = "1.0.55" --- a/tests/ink-types-node-runtime/examples/calls/.ink/abi_gen/main.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. -// This file is part of Unique Network. - -// Unique Network 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. - -// Unique Network 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 Unique Network. If not, see . - -fn main() -> Result<(), std::io::Error> { - let abi = ::generate_abi(); - let contents = serde_json::to_string_pretty(&abi)?; - std::fs::create_dir("target").ok(); - std::fs::write("target/metadata.json", contents)?; - Ok(()) -} --- a/tests/ink-types-node-runtime/examples/calls/Cargo.toml +++ /dev/null @@ -1,73 +0,0 @@ -[package] -name = "calls" -version = "0.1.0" -authors = ["Parity Technologies "] -edition = "2021" - -[dependencies] -ink_abi = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_abi", default-features = false, features = ["derive"], optional = true } -ink_primitives = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_primitives", default-features = false } -ink_core = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_core", default-features = false } -ink_lang = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_lang", default-features = false } -ink_prelude = { version = "2", git = "https://github.com/paritytech/ink", tag = "latest-v2", package = "ink_prelude", default-features = false } - -scale = { package = "parity-scale-codec", version = "1.3", default-features = false, features = ["derive"] } -sp-keyring = { git = "https://github.com/paritytech/substrate/", package = "sp-keyring", optional = true } -ink_types_node_runtime = { path = "../../", default-features = false } - -[dependencies.type-metadata] -git = "https://github.com/type-metadata/type-metadata.git" -rev = "02eae9f35c40c943b56af5b60616219f2b72b47d" -default-features = false -features = ["derive"] -optional = true - -[lib] -name = "calls" -path = "lib.rs" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", - # Used for ABI generation. - "rlib", -] - -[features] -default = ["test-env"] -std = [ - "ink_abi/std", - "ink_core/std", - "ink_primitives/std", - "scale/std", - "type-metadata/std", - "ink_types_node_runtime/std", - "sp-keyring", -] -test-env = [ - "std", - "ink_lang/test-env", -] -ink-generate-abi = [ - "std", - "ink_abi", - "type-metadata", - "ink_core/ink-generate-abi", - "ink_lang/ink-generate-abi", - "ink_types_node_runtime/ink-generate-abi", -] -ink-as-dependency = [] - -[profile.release] -panic = "abort" -lto = true -opt-level = "z" -overflow-checks = true -codegen-units = 1 - -[workspace] -members = [ - ".ink/abi_gen" -] -exclude = [ - ".ink" -] --- a/tests/ink-types-node-runtime/examples/calls/lib.rs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. -// This file is part of Unique Network. - -// Unique Network 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. - -// Unique Network 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 Unique Network. If not, see . - -#![cfg_attr(not(feature = "std"), no_std)] - -use ink_lang as ink; - -#[ink::contract(version = "0.1.0", env = NodeRuntimeTypes)] -mod calls { - use ink_core::env; - use ink_prelude::*; - use ink_types_node_runtime::{calls as runtime_calls, NodeRuntimeTypes}; - - /// This simple dummy contract dispatches substrate runtime calls - #[ink(storage)] - struct Calls {} - - impl Calls { - #[ink(constructor)] - fn new(&mut self) {} - - /// Dispatches a `transfer` call to the Balances srml module - #[ink(message)] - fn balance_transfer(&self, dest: AccountId, value: Balance) { - // create the Balances::transfer Call - let transfer_call = runtime_calls::transfer_balance(dest, value); - - // dispatch the call to the runtime - let result = self.env().invoke_runtime(&transfer_call); - - // report result to console - // NOTE: println should only be used on a development chain) - env::println(&format!("Balance transfer invoke_runtime result {:?}", result)); - } - } - - #[cfg(test)] - mod tests { - use super::*; - use sp_keyring::AccountKeyring; - - #[test] - fn dispatches_balances_call() { - let calls = Calls::new(); - let alice = AccountId::from(AccountKeyring::Alice.to_account_id()); - // assert_eq!(calls.env().dispatched_calls().into_iter().count(), 0); - calls.balance_transfer(alice, 10000); - // assert_eq!(calls.env().dispatched_calls().into_iter().count(), 1); - } - } -} --- a/tests/ink-types-node-runtime/src/calls.rs +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. -// This file is part of Unique Network. - -// Unique Network 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. - -// Unique Network 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 Unique Network. If not, see . - -// Original License -// Copyright 2019 Parity Technologies (UK) Ltd. -// This file is part of ink!. -// -// ink! 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. -// -// ink! 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 ink!. If not, see . - -use ink_core::env::EnvTypes; -use scale::{Codec, Decode, Encode}; -use pallet_indices::address::Address; -use sp_runtime::traits::Member; -use crate::{AccountId, AccountIndex, Balance, NodeRuntimeTypes}; - -/// Default runtime Call type, a subset of the runtime Call module variants -/// -/// The codec indices of the modules *MUST* match those in the concrete runtime. -#[derive(Encode, Decode)] -#[cfg_attr(feature = "std", derive(Clone, PartialEq, Eq))] -pub enum Call { - #[codec(index = "5")] - Balances(Balances), -} - -impl From> for Call { - fn from(balances_call: Balances) -> Call { - Call::Balances(balances_call) - } -} -/// Generic Balance Call, could be used with other runtimes -#[derive(Encode, Decode, Clone, PartialEq, Eq)] -pub enum Balances -where - T: EnvTypes, - T::AccountId: Member + Codec, - AccountIndex: Member + Codec, -{ - #[allow(non_camel_case_types)] - #[codec(index = "3")] - transfer(T::AccountId, #[codec(compact)] T::Balance), - #[allow(non_camel_case_types)] - #[codec(index = "6")] - set_balance( - Address, - #[codec(compact)] T::Balance, - #[codec(compact)] T::Balance, - ), -} - -/// Construct a `Balances::transfer` call -pub fn transfer_balance(account: AccountId, balance: Balance) -> Call { - Balances::::transfer(account, balance).into() -} - -#[cfg(test)] -mod tests { - use crate::{calls, AccountIndex, NodeRuntimeTypes}; - use super::Call; - - use node_runtime::{self, Runtime}; - use pallet_indices::address; - use scale::{Decode, Encode}; - - - #[test] - fn call_balance_transfer() { - let balance = 10_000; - let account_index = 0; - - let contract_address = calls::Address::Index(account_index); - let contract_transfer = - calls::Balances::::transfer(contract_address, balance); - let contract_call = Call::Balances(contract_transfer); - - let srml_address = address::Address::Index(account_index); - let srml_transfer = node_runtime::BalancesCall::::transfer(srml_address, balance); - let srml_call = node_runtime::Call::Balances(srml_transfer); - - let contract_call_encoded = contract_call.encode(); - let srml_call_encoded = srml_call.encode(); - - assert_eq!(srml_call_encoded, contract_call_encoded); - - let srml_call_decoded: node_runtime::Call = - Decode::decode(&mut contract_call_encoded.as_slice()) - .expect("Balances transfer call decodes to srml type"); - let srml_call_encoded = srml_call_decoded.encode(); - let contract_call_decoded: Call = Decode::decode(&mut srml_call_encoded.as_slice()) - .expect("Balances transfer call decodes back to contract type"); - assert!(contract_call == contract_call_decoded); - } -} --- a/tests/ink-types-node-runtime/src/lib.rs +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. -// This file is part of Unique Network. - -// Unique Network 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. - -// Unique Network 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 Unique Network. If not, see . - -// Original License -// Copyright 2018-2019 Parity Technologies (UK) Ltd. -// This file is part of ink!. -// -// ink! 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. -// -// ink! 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 ink!. If not, see . - -//! Definitions for environment types for contracts targeted at a -//! substrate chain with the default `node-runtime` configuration. - -#![cfg_attr(not(feature = "std"), no_std)] - -use core::{array::TryFromSliceError, convert::TryFrom}; -use ink_core::env::Clear; -use scale::{Decode, Encode}; -use sp_core::crypto::AccountId32; -#[cfg(feature = "ink-generate-abi")] -use type_metadata::{HasTypeId, HasTypeDef, Metadata, MetaType, TypeId, TypeDef, TypeIdArray}; - -pub mod calls; - -/// Contract environment types defined in substrate node-runtime -#[cfg_attr(feature = "ink-generate-abi", derive(Metadata))] -#[derive(Clone, Debug, PartialEq, Eq)] -pub enum NodeRuntimeTypes {} - -#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Encode, Decode)] -pub struct AccountId (AccountId32); - -impl From for AccountId { - fn from(account: AccountId32) -> Self { - AccountId(account) - } -} - -#[cfg(feature = "ink-generate-abi")] -impl HasTypeId for AccountId { - fn type_id() -> TypeId { - TypeIdArray::new(32, MetaType::new::()).into() - } -} - -#[cfg(feature = "ink-generate-abi")] -impl HasTypeDef for AccountId { - fn type_def() -> TypeDef { - TypeDef::builtin() - } -} - -/// The default SRML balance type. -pub type Balance = u128; - -/// The default SRML hash type. -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Encode, Decode)] -pub struct Hash([u8; 32]); - -impl From<[u8; 32]> for Hash { - fn from(hash: [u8; 32]) -> Hash { - Hash(hash) - } -} - -impl<'a> TryFrom<&'a [u8]> for Hash { - type Error = TryFromSliceError; - - fn try_from(bytes: &'a [u8]) -> Result { - let hash = <[u8; 32]>::try_from(bytes)?; - Ok(Hash(hash)) - } -} - -impl AsRef<[u8]> for Hash { - fn as_ref(&self) -> &[u8] { - &self.0[..] - } -} - -impl AsMut<[u8]> for Hash { - fn as_mut(&mut self) -> &mut [u8] { - &mut self.0[..] - } -} - -impl Clear for Hash { - fn is_clear(&self) -> bool { - self.as_ref().iter().all(|&byte| byte == 0x00) - } - - fn clear() -> Self { - Self([0x00; 32]) - } -} - -/// The default SRML moment type. -pub type Moment = u64; - -/// The default SRML blocknumber type. -pub type BlockNumber = u64; - -/// The default SRML AccountIndex type. -pub type AccountIndex = u32; - -/// The default timestamp type. -pub type Timestamp = u64; - -impl ink_core::env::EnvTypes for NodeRuntimeTypes { - type AccountId = AccountId; - type Balance = Balance; - type Hash = Hash; - type Timestamp = Timestamp; - type BlockNumber = BlockNumber; - type Call = calls::Call; -} --- a/tests/loadtester-src/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore build artifacts from the local tests sub-crate. -/target/ - -# Ignore backup files creates by cargo fmt. -**/*.rs.bk - -# Remove Cargo.lock when creating an executable, leave it for libraries -# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock -Cargo.lock \ No newline at end of file --- a/tests/loadtester-src/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "loadtester" -version = "0.1.0" -authors = ["[your_name] <[your_email]>"] -edition = "2021" - -[dependencies] -ink_primitives = { version = "3.0.0-rc2", default-features = false } -ink_metadata = { version = "3.0.0-rc2", default-features = false, features = ["derive"], optional = true } -ink_env = { version = "3.0.0-rc2", default-features = false } -ink_storage = { version = "3.0.0-rc2", default-features = false } -ink_lang = { version = "3.0.0-rc2", default-features = false } -ink_prelude = { version = "3.0.0-rc2", default-features = false } - -scale = { package = "parity-scale-codec", version = "1.3", default-features = false, features = ["derive"] } -scale-info = { version = "0.4.1", default-features = false, features = ["derive"], optional = true } - -[lib] -name = "loadtester" -path = "lib.rs" -crate-type = [ - # Used for normal contract Wasm blobs. - "cdylib", -] - -[features] -default = ["std"] -std = [ - "ink_metadata/std", - "ink_env/std", - "ink_storage/std", - "ink_primitives/std", - "scale/std", - "scale-info/std", -] -ink-as-dependency = [] --- a/tests/loadtester-src/lib.rs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. -// This file is part of Unique Network. - -// Unique Network 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. - -// Unique Network 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 Unique Network. If not, see . - -// Original License -#![cfg_attr(not(feature = "std"), no_std)] - -use ink_lang as ink; - -#[ink::contract] -mod loadtester { - use ink_storage::collections::Vec as InkVec; - - #[ink(storage)] - pub struct LoadTester { - vector: InkVec, - } - - impl LoadTester { - #[ink(constructor)] - pub fn new() -> Self { - Self { - vector: InkVec::new(), - } - } - - #[ink(message)] - pub fn bloat(&mut self, count: u64){ - for i in 1..count+1 { - self.vector.push(i); - } - } - - #[ink(message)] - pub fn get(&self) -> u128 { - let mut sum: u128 = 0; - for num in self.vector.iter() { - sum += *num as u128; - } - sum - } - } - - #[cfg(test)] - mod tests { - - use super::*; - - #[test] - fn it_works() { - let mut lt = LoadTester::new(); - lt.bloat(4); - assert_eq!(lt.get(), [1,2,3,4]); - lt.bloat(3); - assert_eq!(lt.get(), [1,2,3,4,1,2,3]); - } - } -} --- a/tests/package.json +++ b/tests/package.json @@ -88,8 +88,9 @@ "testSchedulingEVM": "mocha --timeout 9999999 -r ts-node/register ./**/eth/scheduling.test.ts", "testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts", "testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts", - "testCollatorSelection": "mocha --timeout 9999999 -r ts-node/register ./**/collatorSelection.*test.ts", - "testIdentity": "mocha --timeout 9999999 -r ts-node/register ./**/identity.*test.ts", + "testCollators": "RUN_COLLATOR_TESTS=1 mocha --timeout 49999999 -r ts-node/register ./**/collator-selection/**.*test.ts", + "testCollatorSelection": "RUN_COLLATOR_TESTS=1 mocha --timeout 49999999 -r ts-node/register ./**/collatorSelection.*test.ts", + "testIdentity": "RUN_COLLATOR_TESTS=1 mocha --timeout 49999999 -r ts-node/register ./**/identity.*test.ts", "testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts", "testLimits": "mocha --timeout 9999999 -r ts-node/register ./**/limits.test.ts", "testEthCreateNFTCollection": "mocha --timeout 9999999 -r ts-node/register ./**/eth/createNFTCollection.test.ts", --- /dev/null +++ b/tests/src/collator-selection/collatorSelection.seqtest.ts @@ -0,0 +1,468 @@ +// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. +// This file is part of Unique Network. + +// Unique Network 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. + +// Unique Network 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 Unique Network. If not, see . + +import {IKeyringPair} from '@polkadot/types/types'; +import {usingPlaygrounds, expect, itSub, Pallets, requirePalletsOrSkip} from '../util'; + +async function resetInvulnerables() { + await usingPlaygrounds(async (helper, privateKey) => { + const superuser = await privateKey('//Alice'); + const alice = await privateKey('//Alice'); + const bob = await privateKey('//Bob'); + const invulnerables = await helper.collatorSelection.getInvulnerables(); + if (!invulnerables.includes(alice.address) || !invulnerables.includes(bob.address) || invulnerables.length != 2) { + console.warn('Alice and Bob are not the invulnerables! Reinstating them back. ' + + 'Current invulnerables\' size: ' + invulnerables.length); + + let nonce = await helper.chain.getNonce(alice.address); + // In case there are too many invulnerables already, remove some of them, leaving space for Alice and Bob. + if (invulnerables.length + 2 >= helper.collatorSelection.maxCollators()) { + await Promise.all([ + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerables.pop()], true, {nonce: nonce++}), + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerables.pop()], true, {nonce: nonce++}), + ]); + } + + nonce = await helper.chain.getNonce(alice.address); + await Promise.all([ + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [alice.address], true, {nonce: nonce++}), + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [bob.address], true, {nonce: nonce++}), + ]); + + nonce = await helper.chain.getNonce(alice.address); + await Promise.all(invulnerables.map((invulnerable: any) => { + if (invulnerable == alice.address || invulnerable == bob.address) return new Promise(res => res()); + return helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerable], true, {nonce: nonce++}); + })); + } + }); +} + +// todo:collator Most preferable to launch this test in parallel somehow -- or change the session period (1 hr). +describe('Integration Test: Collator Selection', () => { + let superuser: IKeyringPair; + let previousLicenseBond = 0n; + let licenseBond = 0n; + + before(async function() { + if (!process.env.RUN_COLLATOR_TESTS) this.skip(); + + await usingPlaygrounds(async (helper, privateKey) => { + requirePalletsOrSkip(this, helper, [Pallets.CollatorSelection]); + superuser = await privateKey('//Alice'); + + previousLicenseBond = await helper.collatorSelection.getLicenseBond(); + licenseBond = 10n * helper.balance.getOneTokenNominal(); + await helper.getSudo().collatorSelection.setLicenseBond(superuser, licenseBond); + }); + }); + + describe('Dynamic shuffling of collators', () => { + // These two are the default invulnerables, and should return to be invulnerables after this suite. + let alice: IKeyringPair; + let bob: IKeyringPair; + + let charlie: IKeyringPair; + let dave: IKeyringPair; + + before(async function() { + await usingPlaygrounds(async (helper, privateKey) => { + // todo:collator see again if blocks start to be finalized in dev mode + // Skip the collator block production in dev mode, since the blocks are sealed automatically. + if (await helper.arrange.isDevNode()) this.skip(); + + alice = await privateKey('//Alice'); + bob = await privateKey('//Bob'); + charlie = await privateKey('//Charlie'); + dave = await privateKey('//Dave'); + + expect((await helper.session.setOwnKeysFromAddress(charlie)) + .status.toLowerCase()).to.be.equal('success'); + expect((await helper.session.setOwnKeysFromAddress(dave)) + .status.toLowerCase()).to.be.equal('success'); + + const invulnerables = await helper.collatorSelection.getInvulnerables(); + if (!invulnerables.includes(alice.address) || !invulnerables.includes(bob.address) || invulnerables.length != 2) { + console.warn('Alice and Bob are not the invulnerables! Reinstating them back. ' + + 'Current invulnerables\' size: ' + invulnerables.length); + + let nonce = await helper.chain.getNonce(superuser.address); + await Promise.all([ + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [alice.address], true, {nonce: nonce++}), + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [bob.address], true, {nonce: nonce++}), + ]); + + nonce = await helper.chain.getNonce(superuser.address); + await Promise.all(invulnerables.map((invulnerable: any) => { + if (invulnerable == alice.address || invulnerable == bob.address) return new Promise((res) => res); + return helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerable], true, {nonce: nonce++}); + })); + } + }); + }); + + itSub('Change invulnerables and make sure they start producing blocks', async ({helper}) => { + let nonce = await helper.chain.getNonce(superuser.address); + await expect(Promise.all([ + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [charlie.address], true, {nonce: nonce++}), + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [dave.address], true, {nonce: nonce++}), + ])).to.be.fulfilled; + + nonce = await helper.chain.getNonce(superuser.address); + await expect(Promise.all([ + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [alice.address], true, {nonce: nonce++}), + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [bob.address], true, {nonce: nonce++}), + ])).to.be.fulfilled; + + const newInvulnerables = await helper.collatorSelection.getInvulnerables(); + expect(newInvulnerables).to.contain(charlie.address).and.contain(dave.address).and.be.length(2); + + await helper.wait.newSessions(2); + + const newValidators = await helper.callRpc('api.query.session.validators'); + expect(newValidators).to.contain(charlie.address).and.contain(dave.address).and.be.length(2); + + const lastBlockNumber = await helper.chain.getLatestBlockNumber(); + await helper.wait.newBlocks(1); + const lastCharlieBlock = (await helper.callRpc('api.query.collatorSelection.lastAuthoredBlock', [charlie.address])).toNumber(); + const lastDaveBlock = (await helper.callRpc('api.query.collatorSelection.lastAuthoredBlock', [dave.address])).toNumber(); + expect(lastCharlieBlock >= lastBlockNumber || lastDaveBlock >= lastBlockNumber).to.be.true; + }); + + after(async () => { + await usingPlaygrounds(async (helper) => { + if (await helper.arrange.isDevNode()) return; + + let nonce = await helper.chain.getNonce(superuser.address); + await Promise.all([ + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [alice.address], true, {nonce: nonce++}), + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [bob.address], true, {nonce: nonce++}), + ]); + + nonce = await helper.chain.getNonce(superuser.address); + await Promise.all([ + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [charlie.address], true, {nonce: nonce++}), + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [dave.address], true, {nonce: nonce++}), + ]); + }); + }); + }); + + describe('Getting and releasing licenses to collate', () => { + let charlie: IKeyringPair; + let dave: IKeyringPair; + let crowd: IKeyringPair[]; + + before(async function() { + await usingPlaygrounds(async (helper, privateKey) => { + charlie = await privateKey('//Charlie'); + dave = await privateKey('//Dave'); + crowd = await helper.arrange.createCrowd(20, 100n, superuser); + + // set session keys for everyone + expect((await helper.session.setOwnKeysFromAddress(charlie)) + .status.toLowerCase()).to.be.equal('success'); + expect((await helper.session.setOwnKeysFromAddress(dave)) + .status.toLowerCase()).to.be.equal('success'); + await Promise.all(crowd.map(acc => helper.session.setOwnKeysFromAddress(acc))); + }); + }); + + describe('Positive', () => { + itSub('Can lease and release a license', async ({helper}) => { + const account = crowd.pop()!; + + // make sure it does not have any reserved funds + expect((await helper.balance.getSubstrateFull(account.address)).reserved).to.be.equal(0n); + + // getting a license reserves a license bond cost + await helper.collatorSelection.obtainLicense(account); + expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(licenseBond); + expect((await helper.balance.getSubstrateFull(account.address)).reserved).to.be.equal(licenseBond); + + // releasing a license un-reserves the license bond cost + await helper.collatorSelection.releaseLicense(account); + expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(0n); + + const balance = await helper.balance.getSubstrateFull(account.address); + expect(balance.reserved).to.be.equal(0n); + expect(balance.free > 100n - licenseBond); + }); + + itSub('Can force revoke a license', async ({helper}) => { + const account = crowd.pop()!; + + // getting a license reserves a license bond cost + const previousBalance = await helper.balance.getSubstrateFull(account.address); + await helper.collatorSelection.obtainLicense(account); + expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(licenseBond); + + // force-releasing a license un-reserves the license bond cost as well + await helper.getSudo().collatorSelection.forceReleaseLicense(superuser, account.address); + expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(previousBalance.reserved); + + const balance = await helper.balance.getSubstrateFull(account.address); + expect(balance.reserved).to.be.equal(previousBalance.reserved); + expect(balance.free > previousBalance.free - licenseBond); + }); + }); + + describe('Negative', () => { + itSub('Cannot get a license without session keys set', async ({helper}) => { + const [account] = await helper.arrange.createAccounts([100n], superuser); + await expect(helper.collatorSelection.obtainLicense(account)) + .to.be.rejectedWith(/collatorSelection.ValidatorNotRegistered/); + }); + + itSub('Cannot register a license twice', async ({helper}) => { + const account = crowd.pop()!; + await helper.collatorSelection.obtainLicense(account); + await expect(helper.collatorSelection.obtainLicense(account)) + .to.be.rejectedWith(/collatorSelection.AlreadyHoldingLicense/); + }); + + itSub('Cannot release a license twice', async ({helper}) => { + const account = crowd.pop()!; + await helper.collatorSelection.obtainLicense(account); + await helper.collatorSelection.releaseLicense(account); + await expect(helper.collatorSelection.releaseLicense(account)) + .to.be.rejectedWith(/collatorSelection.NoLicense/); + }); + + itSub('Cannot force revoke a license as non-sudo', async ({helper}) => { + const account = crowd.pop()!; + await helper.collatorSelection.obtainLicense(account); + await expect(helper.collatorSelection.forceReleaseLicense(superuser, account.address)) + .to.be.rejectedWith(/BadOrigin/); + }); + }); + }); + + describe('Onboarding, collating, and offboarding as collator candidates', () => { + // These two are the default invulnerables, and should return to be invulnerables after this suite. + let charlie: IKeyringPair; + let dave: IKeyringPair; + let crowd: IKeyringPair[]; + + before(async function() { + await usingPlaygrounds(async (helper, privateKey) => { + charlie = await privateKey('//Charlie'); + dave = await privateKey('//Dave'); + crowd = await helper.arrange.createCrowd(20, 100n, superuser); + + // set session keys for everyone + expect((await helper.session.setOwnKeysFromAddress(charlie)) + .status.toLowerCase()).to.be.equal('success'); + expect((await helper.session.setOwnKeysFromAddress(dave)) + .status.toLowerCase()).to.be.equal('success'); + await Promise.all(crowd.map(acc => helper.session.setOwnKeysFromAddress(acc))); + }); + }); + + describe('Positive', () => { + itSub('Can onboard and offboard repeatedly', async ({helper}) => { + const account = crowd.pop()!; + await helper.collatorSelection.obtainLicense(account); + await helper.collatorSelection.onboard(account); + expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([account.address]); + + await helper.collatorSelection.offboard(account); + expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([]); + + await helper.collatorSelection.onboard(account); + expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([account.address]); + + await helper.collatorSelection.offboard(account); + expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([]); + }); + + itSub('Penalizes and forfeits license from faulty collators', async ({helper}) => { + // This one shouldn't even be able to produce blocks. + const account = crowd.pop()!; + await helper.collatorSelection.obtainLicense(account); + await helper.collatorSelection.onboard(account); + expect(await helper.collatorSelection.getCandidates()).to.contain(account.address); + + // Wait for 3 new sessions before checking that the collator will be kicked: + // one to get collator onboarded, and another two for the collator to fail + await helper.wait.newSessions(3); + + expect(await helper.collatorSelection.getCandidates()).to.not.contain(account.address); + expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(0n); + + // The account's reserved funds get slashed as a penalty + const balance = await helper.balance.getSubstrateFull(account.address); + expect(balance.reserved).to.be.equal(0n); + expect(balance.free < 100n - licenseBond); + }); + }); + + describe('Negative', () => { + itSub('Cannot onboard without a license', async ({helper}) => { + const account = crowd.pop()!; + await expect(helper.collatorSelection.onboard(account)) + .to.be.rejectedWith(/collatorSelection.NoLicense/); + }); + + itSub('Cannot offboard without a license', async ({helper}) => { + const account = crowd.pop()!; + await expect(helper.collatorSelection.offboard(account)) + .to.be.rejectedWith(/collatorSelection.NotCandidate/); + }); + + itSub('Cannot offboard while not onboarded', async ({helper}) => { + const account = crowd.pop()!; + await helper.collatorSelection.obtainLicense(account); + await expect(helper.collatorSelection.offboard(account)) + .to.be.rejectedWith(/collatorSelection.NotCandidate/); + }); + + itSub('Cannot onboard while already onboarded', async ({helper}) => { + const account = crowd.pop()!; + await helper.collatorSelection.obtainLicense(account); + await helper.collatorSelection.onboard(account); + await expect(helper.collatorSelection.onboard(account)) + .to.be.rejectedWith(/collatorSelection.AlreadyCandidate/); + }); + }); + }); + + describe('Addition and removal of invulnerables', () => { + before(async function() { + await resetInvulnerables(); + }); + + describe('Positive', () => { + itSub('Adds an invulnerable', async ({helper}) => { + const [account] = await helper.arrange.createAccounts([10n], superuser); + const invulnerables = await helper.collatorSelection.getInvulnerables(); + + await helper.session.setOwnKeysFromAddress(account); + await helper.getSudo().collatorSelection.addInvulnerable(superuser, account.address); + + const newInvulnerables = await helper.collatorSelection.getInvulnerables(); + expect(invulnerables.concat(account.address)).to.have.all.members(newInvulnerables); + }); + + itSub('Removes an invulnerable', async ({helper}) => { + const invulnerables = await helper.collatorSelection.getInvulnerables(); + const lastInvulnerable = invulnerables.pop()!; + + await helper.getSudo().collatorSelection.removeInvulnerable(superuser, lastInvulnerable); + const newInvulnerables = await helper.collatorSelection.getInvulnerables(); + // invulnerables had its last element removed, so they should be equal + expect(newInvulnerables).to.have.all.members(invulnerables); + }); + }); + + describe('Negative', () => { + itSub('Does not duplicate an invulnerable', async ({helper}) => { + const invulnerables = await helper.collatorSelection.getInvulnerables(); + // adding an already invulnerable should not fail, but should not duplicate it either + await expect(helper.getSudo().collatorSelection.addInvulnerable(superuser, invulnerables[0])) + .to.be.fulfilled; + const newInvulnerables = await helper.collatorSelection.getInvulnerables(); + expect(newInvulnerables).to.have.all.members(invulnerables); + }); + + itSub('Cannot remove a non-existent invulnerable', async ({helper}) => { + const [account] = await helper.arrange.createAccounts([0n], superuser); + await expect(helper.getSudo().collatorSelection.removeInvulnerable(superuser, account.address)) + .to.be.rejectedWith(/collatorSelection.NotInvulnerable/); + }); + + itSub('Cannot allow invulnerables to be empty', async ({helper}) => { + const invulnerables = await helper.collatorSelection.getInvulnerables(); + const lastInvulnerable = invulnerables.pop()!; + + let nonce = await helper.chain.getNonce(superuser.address); + await Promise.all(invulnerables.map((i: any) => + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [i], true, {nonce: nonce++}))); + + await expect(helper.getSudo().collatorSelection.removeInvulnerable(superuser, lastInvulnerable)) + .to.be.rejectedWith(/collatorSelection.TooFewInvulnerables/); + + const newInvulnerables = await helper.collatorSelection.getInvulnerables(); + expect(newInvulnerables).to.be.deep.equal([lastInvulnerable]); + + // restore the invulnerables to the previous state + nonce = await helper.chain.getNonce(superuser.address); + await Promise.all(invulnerables.map((i: any) => + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [i], true, {nonce: nonce++}))); + }); + + itSub('Cannot have too many invulnerables', async ({helper}) => { + // todo:collator make sure that there is enough session time for a set of tests + // 28 non-functioning collators, teehee. + + const invulnerablesLength = (await helper.collatorSelection.getInvulnerables()).length; + const invulnerablesUntilLimit = helper.collatorSelection.maxCollators() - invulnerablesLength; + const newInvulnerables = await helper.arrange.createAccounts(Array(invulnerablesUntilLimit).fill(10n), superuser); + const [lastInvulnerable] = await helper.arrange.createAccounts([10n], superuser); + + await Promise.all(newInvulnerables.map((i: IKeyringPair) => + helper.session.setOwnKeysFromAddress(i))); + await helper.session.setOwnKeysFromAddress(lastInvulnerable); + + let nonce = await helper.chain.getNonce(superuser.address); + await Promise.all(newInvulnerables.map((i: IKeyringPair) => + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [i.address], true, {nonce: nonce++}))); + + await expect(helper.getSudo().collatorSelection.addInvulnerable(superuser, lastInvulnerable.address)) + .to.be.rejectedWith(/collatorSelection.TooManyInvulnerables/); + + // restore the invulnerables to the previous state + nonce = await helper.chain.getNonce(superuser.address); + await Promise.all(newInvulnerables.map((i: IKeyringPair) => + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [i.address], true, {nonce: nonce++}))); + }); + + itSub('Forbids a non-sudo to add an invulnerable', async ({helper}) => { + const [account] = await helper.arrange.createAccounts([10n], superuser); + const invulnerables = await helper.collatorSelection.getInvulnerables(); + + await helper.session.setOwnKeysFromAddress(account); + await expect(helper.collatorSelection.addInvulnerable(superuser, account.address)) + .to.be.rejectedWith(/BadOrigin/); + + const newInvulnerables = await helper.collatorSelection.getInvulnerables(); + expect(newInvulnerables).to.be.members(invulnerables); + }); + + itSub('Forbids a non-sudo to remove an invulnerable', async ({helper}) => { + const invulnerables = await helper.collatorSelection.getInvulnerables(); + await expect(helper.collatorSelection.removeInvulnerable(superuser, invulnerables[0])) + .to.be.rejectedWith(/BadOrigin/); + expect(await helper.collatorSelection.getInvulnerables()).to.have.all.members(invulnerables); + }); + }); + }); + + after(async function() { + if (!process.env.RUN_COLLATOR_TESTS) return; + + await usingPlaygrounds(async (helper) => { + if (helper.fetchMissingPalletNames([Pallets.CollatorSelection]).length != 0) return; + + await helper.getSudo().collatorSelection.setLicenseBond(superuser, previousLicenseBond); + + const candidates = await helper.collatorSelection.getCandidates(); + let nonce = await helper.chain.getNonce(superuser.address); + await Promise.all(candidates.map(candidate => + helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.forceReleaseLicense', [candidate], true, {nonce: nonce++}))); + }); + }); +}); \ No newline at end of file --- /dev/null +++ b/tests/src/collator-selection/identity.seqtest.ts @@ -0,0 +1,284 @@ +// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. +// This file is part of Unique Network. + +// Unique Network 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. + +// Unique Network 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 Unique Network. If not, see . + +import {IKeyringPair} from '@polkadot/types/types'; +import {usingPlaygrounds, expect, itSub, Pallets, requirePalletsOrSkip} from '../util'; +import {UniqueHelper} from '../util/playgrounds/unique'; + +async function getIdentities(helper: UniqueHelper) { + const identities: [string, any][] = []; + for(const [key, value] of await helper.getApi().query.identity.identityOf.entries()) + identities.push([(key as any).toHuman(), (value as any).unwrap()]); + return identities; +} + +async function getIdentityAccounts(helper: UniqueHelper) { + return (await getIdentities(helper)).flatMap(([key, _value]) => key); +} + +async function getSubIdentityAccounts(helper: UniqueHelper, address: string) { + return ((await helper.getApi().query.identity.subsOf(address)).toHuman() as any)[1]; +} + +async function getSubIdentityName(helper: UniqueHelper, address: string) { + return ((await helper.getApi().query.identity.superOf(address)).toHuman() as any); +} + +describe('Integration Test: Identities Manipulation', () => { + let superuser: IKeyringPair; + + before(async function() { + if (!process.env.RUN_COLLATOR_TESTS) this.skip(); + + await usingPlaygrounds(async (helper, privateKey) => { + requirePalletsOrSkip(this, helper, [Pallets.Identity]); + superuser = await privateKey('//Alice'); + }); + }); + + itSub('Normal calls do not work', async ({helper}) => { + // console.error = () => {}; + await expect(helper.executeExtrinsic(superuser, 'api.tx.identity.setIdentity', [{info: {display: {Raw: 'Meowser'}}}])) + .to.be.rejectedWith(/Transaction call is not expected/); + }); + + describe('Identities', () => { + itSub('Sets identities', async ({helper}) => { + const oldIdentitiesCount = (await getIdentityAccounts(helper)).length; + + const crowdSize = 10; + const crowd = await helper.arrange.createCrowd(crowdSize, 0n, superuser); + const identities = crowd.map((acc, i) => [acc.address, {info: {display: {Raw: `accounter #${i}`}}}]); + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]); + + expect((await getIdentityAccounts(helper)).length).to.be.equal(oldIdentitiesCount + crowdSize); + }); + + itSub('Setting identities does not delete existing but does overwrite', async ({helper}) => { + const crowd = await helper.arrange.createCrowd(10, 0n, superuser); + const identities = crowd.map((acc, i) => [acc.address, {info: {display: {Raw: `accounter #${i}`}}}]); + + // insert a single identity + let singleIdentity = identities.pop()!; + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [[singleIdentity]]); + + const oldIdentitiesCount = (await getIdentityAccounts(helper)).length; + + // change an identity and push it with a few new others + singleIdentity = [singleIdentity[0], {info: {display: {Raw: 'something special'}}}]; + identities.push(singleIdentity); + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]); + + // oldIdentitiesCount + 9 because one identity is overwritten, not inserted on top + expect((await getIdentityAccounts(helper)).length).to.be.equal(oldIdentitiesCount + 9); + expect((await helper.callRpc('api.query.identity.identityOf', [singleIdentity[0]])).toHuman().info.display) + .to.be.deep.equal({Raw: 'something special'}); + }); + + itSub('Removes identities', async ({helper}) => { + const crowd = await helper.arrange.createCrowd(10, 0n, superuser); + const identities = crowd.map((acc, i) => [acc.address, {info: {display: {Raw: `accounter #${i}`}}}]); + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]); + const oldIdentities = await getIdentityAccounts(helper); + + // delete a couple, check that they are no longer there + const scapegoats = [crowd.pop()!.address, crowd.pop()!.address]; + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [scapegoats]); + const newIdentities = await getIdentityAccounts(helper); + expect(newIdentities.concat(scapegoats)).to.be.have.members(oldIdentities); + }); + }); + + describe('Sub-identities', () => { + itSub('Sets subs', async ({helper}) => { + const crowdSize = 18; + const crowd = await helper.arrange.createCrowd(crowdSize, 0n, superuser); + const supers = [crowd.pop()!, crowd.pop()!, crowd.pop()!]; + + const subsPerSup = crowd.length / supers.length; + let subCount = 0; + const subs = [ + crowd.slice(subCount, subCount += subsPerSup + 1), + crowd.slice(subCount, subCount += subsPerSup), + crowd.slice(subCount, subCount += subsPerSup - 1), + ]; + + const subsInfo = supers.map((acc, i) => [ + acc.address, [ + 1000000n + BigInt(i + 1), + subs[i].map((sub, j) => [ + sub.address, {Raw: `accounter #${j}`}, + ]), + ], + ]); + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceSetSubs', [subsInfo]); + + for (let i = 0; i < supers.length; i++) { + // check deposit + expect(((await helper.getApi().query.identity.subsOf(supers[i].address)).toJSON() as any)[0]).to.be.equal(1000001 + i); + + const subsAccounts = await getSubIdentityAccounts(helper, supers[i].address); + // check sub-identities as account ids + expect(subsAccounts).to.include.members(subs[i].map(x => x.address)); + + for (let j = 0; j < subsAccounts.length; j++) { + // check sub-identities' names + expect((await getSubIdentityName(helper, subsAccounts[j]))[1]).to.be.deep.equal({Raw: `accounter #${j}`}); + } + } + }); + + itSub('Setting sub-identities does not delete other existing but does overwrite own', async ({helper}) => { + const crowdSize = 18; + const crowd = await helper.arrange.createCrowd(crowdSize, 0n, superuser); + const supers = [crowd.pop()!, crowd.pop()!, crowd.pop()!]; + + const subsPerSup = crowd.length / supers.length; + let subCount = 0; + const subs = [ + crowd.slice(subCount, subCount += subsPerSup + 1), + crowd.slice(subCount, subCount += subsPerSup), + crowd.slice(subCount, subCount += subsPerSup - 1), + ]; + + const subsInfo1 = supers.map((acc, i) => [ + acc.address, [ + 1000000n + BigInt(i + 1), + subs[i].map((sub, j) => [ + sub.address, {Raw: `accounter #${j}`}, + ]), + ], + ]); + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceSetSubs', [subsInfo1]); + + // change some sub-identities... + subs[2].pop(); subs[2].pop(); subs[2].push(...await helper.arrange.createAccounts([0n], superuser)); + + // ...and set them + const subsInfo2 = [[ + supers[2].address, [ + 999999n, + subs[2].map((sub, j) => [ + sub.address, {Raw: `discounter #${j}`}, + ]), + ], + ]]; + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceSetSubs', [subsInfo2]); + + // make sure everything else is the same + for (let i = 0; i < supers.length - 1; i++) { + // check deposit + expect(((await helper.getApi().query.identity.subsOf(supers[i].address)).toJSON() as any)[0]).to.be.equal(1000001 + i); + + const subsAccounts = await getSubIdentityAccounts(helper, supers[i].address); + // check sub-identities as account ids + expect(subsAccounts).to.include.members(subs[i].map(x => x.address)); + + for (let j = 0; j < subsAccounts; j++) { + // check sub-identities' names + expect((await getSubIdentityName(helper, subsAccounts[j]))[1]).to.be.deep.equal({Raw: `accounter #${j}`}); + } + } + + // check deposit + expect(((await helper.getApi().query.identity.subsOf(supers[2].address)).toJSON() as any)[0]).to.be.equal(999999); + + const subsAccounts = await getSubIdentityAccounts(helper, supers[2].address); + // check sub-identities as account ids + expect(subsAccounts).to.include.members(subs[2].map(x => x.address)); + + for (let j = 0; j < subsAccounts.length; j++) { + // check sub-identities' names + expect((await getSubIdentityName(helper, subsAccounts[j]))[1]).to.be.deep.equal({Raw: `discounter #${j}`}); + } + }); + + itSub('Removes sub-identities', async ({helper}) => { + const crowdSize = 3; + const crowd = await helper.arrange.createCrowd(crowdSize, 0n, superuser); + const sup = crowd.pop()!; + + const subsInfo1 = [[ + sup.address, [ + 1000000n, + crowd.map((sub, j) => [ + sub.address, {Raw: `accounter #${j}`}, + ]), + ], + ]]; + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceSetSubs', [subsInfo1]); + + // empty sub-identities should delete the records + const subsInfo2 = [[ + sup.address, [ + 1000000n, + [], + ], + ]]; + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceSetSubs', [subsInfo2]); + + // check deposit + expect((await helper.getApi().query.identity.subsOf(sup.address)).toHuman()).to.be.deep.equal(['0', []]); + + for (let j = 0; j < crowd.length; j++) { + // check sub-identities' names + expect((await getSubIdentityName(helper, crowd[j].address))).to.be.null; + } + }); + + itSub('Removing identities deletes associated sub-identities', async ({helper}) => { + const crowd = await helper.arrange.createCrowd(3, 0n, superuser); + const sup = crowd.pop()!; + + // insert identity + const identities = [[sup.address, {info: {display: {Raw: 'mental'}}}]]; + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]); + + // and its sub-identities + const subsInfo = [[ + sup.address, [ + 1000000n, + crowd.map((sub, j) => [ + sub.address, {Raw: `accounter #${j}`}, + ]), + ], + ]]; + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceSetSubs', [subsInfo]); + + // delete top identity + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [[sup.address]]); + + // check that sub-identities are deleted + expect((await helper.getApi().query.identity.subsOf(sup.address)).toHuman()).to.be.deep.equal(['0', []]); + + for (let j = 0; j < crowd.length; j++) { + // check sub-identities' names + expect((await getSubIdentityName(helper, crowd[j].address))).to.be.null; + } + }); + }); + + after(async function() { + if (!process.env.RUN_COLLATOR_TESTS) return; + + await usingPlaygrounds(async helper => { + if (helper.fetchMissingPalletNames([Pallets.Identity]).length != 0) return; + + const identitiesToRemove: string[] = await getIdentityAccounts(helper); + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [identitiesToRemove]); + }); + }); +}); --- a/tests/src/collatorSelection.seqtest.ts +++ /dev/null @@ -1,465 +0,0 @@ -// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. -// This file is part of Unique Network. - -// Unique Network 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. - -// Unique Network 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 Unique Network. If not, see . - -import {IKeyringPair} from '@polkadot/types/types'; -import {usingPlaygrounds, expect, itSub, Pallets, requirePalletsOrSkip} from './util'; - -async function resetInvulnerables() { - await usingPlaygrounds(async (helper, privateKey) => { - const superuser = await privateKey('//Alice'); - const alice = await privateKey('//Alice'); - const bob = await privateKey('//Bob'); - const invulnerables = await helper.collatorSelection.getInvulnerables(); - if (!invulnerables.includes(alice.address) || !invulnerables.includes(bob.address) || invulnerables.length != 2) { - console.warn('Alice and Bob are not the invulnerables! Reinstating them back. ' - + 'Current invulnerables\' size: ' + invulnerables.length); - - let nonce = await helper.chain.getNonce(alice.address); - // In case there are too many invulnerables already, remove some of them, leaving space for Alice and Bob. - if (invulnerables.length + 2 >= helper.collatorSelection.maxCollators()) { - await Promise.all([ - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerables.pop()], true, {nonce: nonce++}), - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerables.pop()], true, {nonce: nonce++}), - ]); - } - - nonce = await helper.chain.getNonce(alice.address); - await Promise.all([ - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [alice.address], true, {nonce: nonce++}), - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [bob.address], true, {nonce: nonce++}), - ]); - - nonce = await helper.chain.getNonce(alice.address); - await Promise.all(invulnerables.map((invulnerable: any) => { - if (invulnerable == alice.address || invulnerable == bob.address) return new Promise(res => res()); - return helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerable], true, {nonce: nonce++}); - })); - } - }); -} - -// todo:collator Most preferable to launch this test in parallel somehow -- or change the session period (1 hr). -describe('Integration Test: Collator Selection', () => { - let superuser: IKeyringPair; - let previousLicenseBond = 0n; - let licenseBond = 0n; - - before(async function() { - await usingPlaygrounds(async (helper, privateKey) => { - requirePalletsOrSkip(this, helper, [Pallets.CollatorSelection]); - superuser = await privateKey('//Alice'); - - previousLicenseBond = await helper.collatorSelection.getLicenseBond(); - licenseBond = 10n * helper.balance.getOneTokenNominal(); - await helper.getSudo().collatorSelection.setLicenseBond(superuser, licenseBond); - }); - }); - - describe('Dynamic shuffling of collators', () => { - // These two are the default invulnerables, and should return to be invulnerables after this suite. - let alice: IKeyringPair; - let bob: IKeyringPair; - - let charlie: IKeyringPair; - let dave: IKeyringPair; - - before(async function() { - await usingPlaygrounds(async (helper, privateKey) => { - // todo:collator see again if blocks start to be finalized in dev mode - // Skip the collator block production in dev mode, since the blocks are sealed automatically. - if (await helper.arrange.isDevNode()) this.skip(); - - alice = await privateKey('//Alice'); - bob = await privateKey('//Bob'); - charlie = await privateKey('//Charlie'); - dave = await privateKey('//Dave'); - - expect((await helper.session.setOwnKeysFromAddress(charlie)) - .status.toLowerCase()).to.be.equal('success'); - expect((await helper.session.setOwnKeysFromAddress(dave)) - .status.toLowerCase()).to.be.equal('success'); - - const invulnerables = await helper.collatorSelection.getInvulnerables(); - if (!invulnerables.includes(alice.address) || !invulnerables.includes(bob.address) || invulnerables.length != 2) { - console.warn('Alice and Bob are not the invulnerables! Reinstating them back. ' - + 'Current invulnerables\' size: ' + invulnerables.length); - - let nonce = await helper.chain.getNonce(superuser.address); - await Promise.all([ - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [alice.address], true, {nonce: nonce++}), - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [bob.address], true, {nonce: nonce++}), - ]); - - nonce = await helper.chain.getNonce(superuser.address); - await Promise.all(invulnerables.map((invulnerable: any) => { - if (invulnerable == alice.address || invulnerable == bob.address) return new Promise((res) => res); - return helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [invulnerable], true, {nonce: nonce++}); - })); - } - }); - }); - - itSub('Change invulnerables and make sure they start producing blocks', async ({helper}) => { - let nonce = await helper.chain.getNonce(superuser.address); - await expect(Promise.all([ - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [charlie.address], true, {nonce: nonce++}), - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [dave.address], true, {nonce: nonce++}), - ])).to.be.fulfilled; - - nonce = await helper.chain.getNonce(superuser.address); - await expect(Promise.all([ - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [alice.address], true, {nonce: nonce++}), - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [bob.address], true, {nonce: nonce++}), - ])).to.be.fulfilled; - - const newInvulnerables = await helper.collatorSelection.getInvulnerables(); - expect(newInvulnerables).to.contain(charlie.address).and.contain(dave.address).and.be.length(2); - - await helper.wait.newSessions(2); - - const newValidators = await helper.callRpc('api.query.session.validators'); - expect(newValidators).to.contain(charlie.address).and.contain(dave.address).and.be.length(2); - - const lastBlockNumber = await helper.chain.getLatestBlockNumber(); - await helper.wait.newBlocks(1); - const lastCharlieBlock = (await helper.callRpc('api.query.collatorSelection.lastAuthoredBlock', [charlie.address])).toNumber(); - const lastDaveBlock = (await helper.callRpc('api.query.collatorSelection.lastAuthoredBlock', [dave.address])).toNumber(); - expect(lastCharlieBlock >= lastBlockNumber || lastDaveBlock >= lastBlockNumber).to.be.true; - }); - - after(async () => { - await usingPlaygrounds(async (helper) => { - if (await helper.arrange.isDevNode()) return; - - let nonce = await helper.chain.getNonce(superuser.address); - await Promise.all([ - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [alice.address], true, {nonce: nonce++}), - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [bob.address], true, {nonce: nonce++}), - ]); - - nonce = await helper.chain.getNonce(superuser.address); - await Promise.all([ - await helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [charlie.address], true, {nonce: nonce++}), - await helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [dave.address], true, {nonce: nonce++}), - ]); - }); - }); - }); - - describe('Getting and releasing licenses to collate', () => { - let charlie: IKeyringPair; - let dave: IKeyringPair; - let crowd: IKeyringPair[]; - - before(async function() { - await usingPlaygrounds(async (helper, privateKey) => { - charlie = await privateKey('//Charlie'); - dave = await privateKey('//Dave'); - crowd = await helper.arrange.createCrowd(20, 100n, superuser); - - // set session keys for everyone - expect((await helper.session.setOwnKeysFromAddress(charlie)) - .status.toLowerCase()).to.be.equal('success'); - expect((await helper.session.setOwnKeysFromAddress(dave)) - .status.toLowerCase()).to.be.equal('success'); - await Promise.all(crowd.map(acc => helper.session.setOwnKeysFromAddress(acc))); - }); - }); - - describe('Positive', () => { - itSub('Can lease and release a license', async ({helper}) => { - const account = crowd.pop()!; - - // make sure it does not have any reserved funds - expect((await helper.balance.getSubstrateFull(account.address)).reserved).to.be.equal(0n); - - // getting a license reserves a license bond cost - await helper.collatorSelection.obtainLicense(account); - expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(licenseBond); - expect((await helper.balance.getSubstrateFull(account.address)).reserved).to.be.equal(licenseBond); - - // releasing a license un-reserves the license bond cost - await helper.collatorSelection.releaseLicense(account); - expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(0n); - - const balance = await helper.balance.getSubstrateFull(account.address); - expect(balance.reserved).to.be.equal(0n); - expect(balance.free > 100n - licenseBond); - }); - - itSub('Can force revoke a license', async ({helper}) => { - const account = crowd.pop()!; - - // getting a license reserves a license bond cost - const previousBalance = await helper.balance.getSubstrateFull(account.address); - await helper.collatorSelection.obtainLicense(account); - expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(licenseBond); - - // force-releasing a license un-reserves the license bond cost as well - await helper.getSudo().collatorSelection.forceReleaseLicense(superuser, account.address); - expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(previousBalance.reserved); - - const balance = await helper.balance.getSubstrateFull(account.address); - expect(balance.reserved).to.be.equal(previousBalance.reserved); - expect(balance.free > previousBalance.free - licenseBond); - }); - }); - - describe('Negative', () => { - itSub('Cannot get a license without session keys set', async ({helper}) => { - const [account] = await helper.arrange.createAccounts([100n], superuser); - await expect(helper.collatorSelection.obtainLicense(account)) - .to.be.rejectedWith(/collatorSelection.ValidatorNotRegistered/); - }); - - itSub('Cannot register a license twice', async ({helper}) => { - const account = crowd.pop()!; - await helper.collatorSelection.obtainLicense(account); - await expect(helper.collatorSelection.obtainLicense(account)) - .to.be.rejectedWith(/collatorSelection.AlreadyHoldingLicense/); - }); - - itSub('Cannot release a license twice', async ({helper}) => { - const account = crowd.pop()!; - await helper.collatorSelection.obtainLicense(account); - await helper.collatorSelection.releaseLicense(account); - await expect(helper.collatorSelection.releaseLicense(account)) - .to.be.rejectedWith(/collatorSelection.NoLicense/); - }); - - itSub('Cannot force revoke a license as non-sudo', async ({helper}) => { - const account = crowd.pop()!; - await helper.collatorSelection.obtainLicense(account); - await expect(helper.collatorSelection.forceReleaseLicense(superuser, account.address)) - .to.be.rejectedWith(/BadOrigin/); - }); - }); - }); - - describe('Onboarding, collating, and offboarding as collator candidates', () => { - // These two are the default invulnerables, and should return to be invulnerables after this suite. - let charlie: IKeyringPair; - let dave: IKeyringPair; - let crowd: IKeyringPair[]; - - before(async function() { - await usingPlaygrounds(async (helper, privateKey) => { - charlie = await privateKey('//Charlie'); - dave = await privateKey('//Dave'); - crowd = await helper.arrange.createCrowd(20, 100n, superuser); - - // set session keys for everyone - expect((await helper.session.setOwnKeysFromAddress(charlie)) - .status.toLowerCase()).to.be.equal('success'); - expect((await helper.session.setOwnKeysFromAddress(dave)) - .status.toLowerCase()).to.be.equal('success'); - await Promise.all(crowd.map(acc => helper.session.setOwnKeysFromAddress(acc))); - }); - }); - - describe('Positive', () => { - itSub('Can onboard and offboard repeatedly', async ({helper}) => { - const account = crowd.pop()!; - await helper.collatorSelection.obtainLicense(account); - await helper.collatorSelection.onboard(account); - expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([account.address]); - - await helper.collatorSelection.offboard(account); - expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([]); - - await helper.collatorSelection.onboard(account); - expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([account.address]); - - await helper.collatorSelection.offboard(account); - expect(await helper.collatorSelection.getCandidates()).to.be.deep.equal([]); - }); - - itSub('Penalizes and forfeits license from faulty collators', async ({helper}) => { - // This one shouldn't even be able to produce blocks. - const account = crowd.pop()!; - await helper.collatorSelection.obtainLicense(account); - await helper.collatorSelection.onboard(account); - expect(await helper.collatorSelection.getCandidates()).to.contain(account.address); - - // Wait for 3 new sessions before checking that the collator will be kicked: - // one to get collator onboarded, and another two for the collator to fail - await helper.wait.newSessions(3); - - expect(await helper.collatorSelection.getCandidates()).to.not.contain(account.address); - expect(await helper.collatorSelection.hasLicense(account.address)).to.be.equal(0n); - - // The account's reserved funds get slashed as a penalty - const balance = await helper.balance.getSubstrateFull(account.address); - expect(balance.reserved).to.be.equal(0n); - expect(balance.free < 100n - licenseBond); - }); - }); - - describe('Negative', () => { - itSub('Cannot onboard without a license', async ({helper}) => { - const account = crowd.pop()!; - await expect(helper.collatorSelection.onboard(account)) - .to.be.rejectedWith(/collatorSelection.NoLicense/); - }); - - itSub('Cannot offboard without a license', async ({helper}) => { - const account = crowd.pop()!; - await expect(helper.collatorSelection.offboard(account)) - .to.be.rejectedWith(/collatorSelection.NotCandidate/); - }); - - itSub('Cannot offboard while not onboarded', async ({helper}) => { - const account = crowd.pop()!; - await helper.collatorSelection.obtainLicense(account); - await expect(helper.collatorSelection.offboard(account)) - .to.be.rejectedWith(/collatorSelection.NotCandidate/); - }); - - itSub('Cannot onboard while already onboarded', async ({helper}) => { - const account = crowd.pop()!; - await helper.collatorSelection.obtainLicense(account); - await helper.collatorSelection.onboard(account); - await expect(helper.collatorSelection.onboard(account)) - .to.be.rejectedWith(/collatorSelection.AlreadyCandidate/); - }); - }); - }); - - describe('Addition and removal of invulnerables', () => { - before(async function() { - await resetInvulnerables(); - }); - - describe('Positive', () => { - itSub('Adds an invulnerable', async ({helper}) => { - const [account] = await helper.arrange.createAccounts([10n], superuser); - const invulnerables = await helper.collatorSelection.getInvulnerables(); - - await helper.session.setOwnKeysFromAddress(account); - await helper.getSudo().collatorSelection.addInvulnerable(superuser, account.address); - - const newInvulnerables = await helper.collatorSelection.getInvulnerables(); - expect(invulnerables.concat(account.address)).to.have.all.members(newInvulnerables); - }); - - itSub('Removes an invulnerable', async ({helper}) => { - const invulnerables = await helper.collatorSelection.getInvulnerables(); - const lastInvulnerable = invulnerables.pop()!; - - await helper.getSudo().collatorSelection.removeInvulnerable(superuser, lastInvulnerable); - const newInvulnerables = await helper.collatorSelection.getInvulnerables(); - // invulnerables had its last element removed, so they should be equal - expect(newInvulnerables).to.have.all.members(invulnerables); - }); - }); - - describe('Negative', () => { - itSub('Does not duplicate an invulnerable', async ({helper}) => { - const invulnerables = await helper.collatorSelection.getInvulnerables(); - // adding an already invulnerable should not fail, but should not duplicate it either - await expect(helper.getSudo().collatorSelection.addInvulnerable(superuser, invulnerables[0])) - .to.be.fulfilled; - const newInvulnerables = await helper.collatorSelection.getInvulnerables(); - expect(newInvulnerables).to.have.all.members(invulnerables); - }); - - itSub('Cannot remove a non-existent invulnerable', async ({helper}) => { - const [account] = await helper.arrange.createAccounts([0n], superuser); - await expect(helper.getSudo().collatorSelection.removeInvulnerable(superuser, account.address)) - .to.be.rejectedWith(/collatorSelection.NotInvulnerable/); - }); - - itSub('Cannot allow invulnerables to be empty', async ({helper}) => { - const invulnerables = await helper.collatorSelection.getInvulnerables(); - const lastInvulnerable = invulnerables.pop()!; - - let nonce = await helper.chain.getNonce(superuser.address); - await Promise.all(invulnerables.map((i: any) => - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [i], true, {nonce: nonce++}))); - - await expect(helper.getSudo().collatorSelection.removeInvulnerable(superuser, lastInvulnerable)) - .to.be.rejectedWith(/collatorSelection.TooFewInvulnerables/); - - const newInvulnerables = await helper.collatorSelection.getInvulnerables(); - expect(newInvulnerables).to.be.deep.equal([lastInvulnerable]); - - // restore the invulnerables to the previous state - nonce = await helper.chain.getNonce(superuser.address); - await Promise.all(invulnerables.map((i: any) => - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [i], true, {nonce: nonce++}))); - }); - - itSub('Cannot have too many invulnerables', async ({helper}) => { - // todo:collator make sure that there is enough session time for a set of tests - // 28 non-functioning collators, teehee. - - const invulnerablesLength = (await helper.collatorSelection.getInvulnerables()).length; - const invulnerablesUntilLimit = helper.collatorSelection.maxCollators() - invulnerablesLength; - const newInvulnerables = await helper.arrange.createAccounts(Array(invulnerablesUntilLimit).fill(10n), superuser); - const [lastInvulnerable] = await helper.arrange.createAccounts([10n], superuser); - - await Promise.all(newInvulnerables.map((i: IKeyringPair) => - helper.session.setOwnKeysFromAddress(i))); - await helper.session.setOwnKeysFromAddress(lastInvulnerable); - - let nonce = await helper.chain.getNonce(superuser.address); - await Promise.all(newInvulnerables.map((i: IKeyringPair) => - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.addInvulnerable', [i.address], true, {nonce: nonce++}))); - - await expect(helper.getSudo().collatorSelection.addInvulnerable(superuser, lastInvulnerable.address)) - .to.be.rejectedWith(/collatorSelection.TooManyInvulnerables/); - - // restore the invulnerables to the previous state - nonce = await helper.chain.getNonce(superuser.address); - await Promise.all(newInvulnerables.map((i: IKeyringPair) => - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.removeInvulnerable', [i.address], true, {nonce: nonce++}))); - }); - - itSub('Forbids a non-sudo to add an invulnerable', async ({helper}) => { - const [account] = await helper.arrange.createAccounts([10n], superuser); - const invulnerables = await helper.collatorSelection.getInvulnerables(); - - await helper.session.setOwnKeysFromAddress(account); - await expect(helper.collatorSelection.addInvulnerable(superuser, account.address)) - .to.be.rejectedWith(/BadOrigin/); - - const newInvulnerables = await helper.collatorSelection.getInvulnerables(); - expect(newInvulnerables).to.be.members(invulnerables); - }); - - itSub('Forbids a non-sudo to remove an invulnerable', async ({helper}) => { - const invulnerables = await helper.collatorSelection.getInvulnerables(); - await expect(helper.collatorSelection.removeInvulnerable(superuser, invulnerables[0])) - .to.be.rejectedWith(/BadOrigin/); - expect(await helper.collatorSelection.getInvulnerables()).to.have.all.members(invulnerables); - }); - }); - }); - - after(async () => { - // eslint-disable-next-line require-await - await usingPlaygrounds(async (helper) => { - if (helper.fetchMissingPalletNames([Pallets.CollatorSelection]).length != 0) return; - - await helper.getSudo().collatorSelection.setLicenseBond(superuser, previousLicenseBond); - - const candidates = await helper.collatorSelection.getCandidates(); - let nonce = await helper.chain.getNonce(superuser.address); - await Promise.all(candidates.map(candidate => - helper.getSudo().executeExtrinsic(superuser, 'api.tx.collatorSelection.forceReleaseLicense', [candidate], true, {nonce: nonce++}))); - }); - }); -}); \ No newline at end of file --- a/tests/src/eth/fractionalizer/fractionalizer.test.ts +++ b/tests/src/eth/fractionalizer/fractionalizer.test.ts @@ -173,7 +173,7 @@ }); itEth('RFT to NFT', async ({helper}) => { - const owner = await helper.eth.createAccountWithBalance(donor, 20n); + const owner = await helper.eth.createAccountWithBalance(donor, 30n); const {contract: fractionalizer, rftCollectionAddress} = await initContract(helper, owner); const {rftTokenAddress, nftCollectionAddress, nftTokenId} = await mintRFTToken(helper, owner, fractionalizer, 100n); --- a/tests/src/identity.seqtest.ts +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. -// This file is part of Unique Network. - -// Unique Network 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. - -// Unique Network 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 Unique Network. If not, see . - -import {IKeyringPair} from '@polkadot/types/types'; -import {usingPlaygrounds, expect, itSub, Pallets, requirePalletsOrSkip} from './util'; -import {UniqueHelper} from './util/playgrounds/unique'; - -async function getIdentities(helper: UniqueHelper) { - const identities: [string, any][] = []; - for(const [key, value] of await helper.getApi().query.identity.identityOf.entries()) - identities.push([(key as any).toHuman(), (value as any).unwrap()]); - return identities; -} - -async function getIdentityAccounts(helper: UniqueHelper) { - return (await getIdentities(helper)).flatMap(([key, _value]) => key); -} - -describe('Integration Test: Identities Manipulation', () => { - let superuser: IKeyringPair; - - before(async function() { - await usingPlaygrounds(async (helper, privateKey) => { - requirePalletsOrSkip(this, helper, [Pallets.Identity]); - superuser = await privateKey('//Alice'); - }); - }); - - itSub('Normal calls do not work', async ({helper}) => { - // console.error = () => {}; - await expect(helper.executeExtrinsic(superuser, 'api.tx.identity.setIdentity', [{info: {display: {Raw: 'Meowser'}}}])) - .to.be.rejectedWith(/Transaction call is not expected/); - }); - - itSub('Sets identities', async ({helper}) => { - const oldIdentitiesCount = (await getIdentityAccounts(helper)).length; - - const crowdSize = 10; - const crowd = await helper.arrange.createCrowd(crowdSize, 0n, superuser); - const identities = crowd.map((acc, i) => [acc.address, {info: {display: {Raw: `accounter #${i}`}}}]); - await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]); - - expect((await getIdentityAccounts(helper)).length).to.be.equal(oldIdentitiesCount + crowdSize); - }); - - itSub('Setting identities does not delete existing but does overwrite', async ({helper}) => { - const crowd = await helper.arrange.createCrowd(10, 0n, superuser); - const identities = crowd.map((acc, i) => [acc.address, {info: {display: {Raw: `accounter #${i}`}}}]); - - // insert a single identity - let singleIdentity = identities.pop()!; - await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [[singleIdentity]]); - - const oldIdentitiesCount = (await getIdentityAccounts(helper)).length; - - // change an identity and push it with a few new others - singleIdentity = [singleIdentity[0], {info: {display: {Raw: 'something special'}}}]; - identities.push(singleIdentity); - await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]); - - // oldIdentitiesCount + 9 because one identity is overwritten, not inserted on top - expect((await getIdentityAccounts(helper)).length).to.be.equal(oldIdentitiesCount + 9); - expect((await helper.callRpc('api.query.identity.identityOf', [singleIdentity[0]])).toHuman().info.display) - .to.be.deep.equal({Raw: 'something special'}); - }); - - itSub('Removes identities', async ({helper}) => { - const crowd = await helper.arrange.createCrowd(10, 0n, superuser); - const identities = crowd.map((acc, i) => [acc.address, {info: {display: {Raw: `accounter #${i}`}}}]); - await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identities]); - const oldIdentities = await getIdentityAccounts(helper); - - // delete a couple, check that they are no longer there - const scapegoats = [crowd.pop()!.address, crowd.pop()!.address]; - await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [scapegoats]); - const newIdentities = await getIdentityAccounts(helper); - expect(newIdentities.concat(scapegoats)).to.be.have.members(oldIdentities); - }); - - after(async function() { - await usingPlaygrounds(async helper => { - if (helper.fetchMissingPalletNames([Pallets.Identity]).length != 0) return; - - const identitiesToRemove: string[] = await getIdentityAccounts(helper); - await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [identitiesToRemove]); - }); - }); -}); --- a/tests/src/nesting/nest.test.ts +++ b/tests/src/nesting/nest.test.ts @@ -15,7 +15,7 @@ // along with Unique Network. If not, see . import {IKeyringPair} from '@polkadot/types/types'; -import {expect, itSub, usingPlaygrounds} from '../util'; +import {expect, itSub, Pallets, usingPlaygrounds} from '../util'; describe('Integration Test: Composite nesting tests', () => { let alice: IKeyringPair; @@ -68,7 +68,7 @@ before(async () => { await usingPlaygrounds(async (helper, privateKey) => { const donor = await privateKey({filename: __filename}); - [alice, bob, charlie] = await helper.arrange.createAccounts([50n, 10n, 10n], donor); + [alice, bob, charlie] = await helper.arrange.createAccounts([200n, 10n, 10n], donor); }); }); @@ -218,6 +218,38 @@ await collectionFT.transfer(charlie, targetToken.nestingAccount(), 2n); expect(await collectionFT.getBalance(targetToken.nestingAccount())).to.be.equal(7n); }); + + itSub.ifWithPallets('ReFungible: getTopmostOwner works correctly with Nesting', [Pallets.ReFungible], async({helper}) => { + const collectionNFT = await helper.nft.mintCollection(alice, { + permissions: { + nesting: { + tokenOwner: true, + }, + }, + }); + const collectionRFT = await helper.rft.mintCollection(alice); + + const nft = await collectionNFT.mintToken(alice, {Substrate: alice.address}); + const rft = await collectionRFT.mintToken(alice, 100n, {Substrate: alice.address}); + + expect(await rft.getTopmostOwner()).deep.equal({Substrate: alice.address}); + + await rft.transfer(alice, nft.nestingAccount(), 40n); + + expect(await rft.getTopmostOwner()).deep.equal(null); + + await rft.transfer(alice, nft.nestingAccount(), 60n); + + expect(await rft.getTopmostOwner()).deep.equal({Substrate: alice.address}); + + await rft.transferFrom(alice, nft.nestingAccount(), {Substrate: alice.address}, 30n); + + expect(await rft.getTopmostOwner()).deep.equal(null); + + await rft.transferFrom(alice, nft.nestingAccount(), {Substrate: alice.address}, 70n); + + expect(await rft.getTopmostOwner()).deep.equal({Substrate: alice.address}); + }); }); describe('Negative Test: Nesting', () => { --- a/tests/src/util/identitySetter.ts +++ b/tests/src/util/identitySetter.ts @@ -1,5 +1,8 @@ // Copyright 2019-2022 Unique Network (Gibraltar) Ltd. // SPDX-License-Identifier: Apache-2.0 +// +// Usage: `yarn setIdentities [relay WS URL] [parachain WS URL] [sudo key]` +// Example: `yarn setIdentities wss://polkadot-rpc.dwellir.com ws://localhost:9944 escape pattern miracle train sudden cart adapt embark wedding alien lamp mesh` import {encodeAddress} from '@polkadot/keyring'; import {usingPlaygrounds, Pallets} from './index'; @@ -9,36 +12,81 @@ const paraUrl = process.argv[3] ?? 'ws://localhost:9944'; const key = process.argv.length > 4 ? process.argv.slice(4).join(' ') : '//Alice'; +function extractAccountId(key: any): string { + return (key as any).toHuman()[0]; +} + function extractIdentity(key: any, value: any): [string, any] { - return [(key as any).toHuman()[0], (value as any).unwrap()]; + return [extractAccountId(key), (value as any).unwrap()]; } -async function getIdentities(helper: ChainHelperBase) { +async function getIdentities(helper: ChainHelperBase, noneCasePredicate?: (key: any, value: any) => void) { const identities: [string, any][] = []; - for(const [key, value] of await helper.getApi().query.identity.identityOf.entries()) + for(const [key, v] of await helper.getApi().query.identity.identityOf.entries()) { + const value = v as any; + if (value.isNone) { + if (noneCasePredicate) noneCasePredicate(key, value); + continue; + } identities.push(extractIdentity(key, value)); + } return identities; } -// This is a utility for pulling +function constructSubInfo(identityAccount: string, subQuery: any, supers: any[], ss58?: number): [string, any] { + const deposit = subQuery.toJSON()[0]; + const subIdentities = subQuery.toHuman()[1]; + subIdentities.map((sub: string) => supers.find((sup: any) => sup[0] === sub)); + // supers.find((x: any) => x[0] === subIdentities[0])![1].toHuman(); + return [ + encodeAddress(identityAccount, ss58), [ + deposit, + subIdentities.map((sub: string) => [ + encodeAddress(sub, ss58), + supers.find((sup: any) => sup[0] === sub)![1].toJSON()[1], + ]), + ], + ]; +} + +async function getSubs(helper: ChainHelperBase) { + return (await helper.getApi().query.identity.subsOf.entries()).map(([key, value]) => [extractAccountId(key), value as any]); +} + +async function getSupers(helper: ChainHelperBase) { + return (await helper.getApi().query.identity.superOf.entries()).map(([key, value]) => [extractAccountId(key), value as any]); +} + +// The utility for pulling identity and sub-identity data const forceInsertIdentities = async (): Promise => { const identitiesOnRelay: any[] = []; + const subsOnRelay: any[] = []; const identitiesToRemove: string[] = []; await usingPlaygrounds(async helper => { try { // iterate over every identity - for(const [key, v] of await helper.getApi().query.identity.identityOf.entries()) { - const value = v as any; - if (value.isNone) { - // in the nigh-impossible case that storage map would actually give None for a value, might as well delete it - identitiesToRemove.push((key as any).toHuman()[0]); - continue; - } - + for(const [key, value] of await getIdentities(helper, (key, _value) => identitiesToRemove.push((key as any).toHuman()[0]))) { // if any of the judgements resulted in a good confirmed outcome, keep this identity - if (value.unwrap().toHuman().judgements.filter((x: any) => x[1] == 'Reasonable' || x[1] == 'KnownGood').length == 0) continue; - identitiesOnRelay.push(extractIdentity(key, value)); + if (value.toHuman().judgements.filter((x: any) => x[1] == 'Reasonable' || x[1] == 'KnownGood').length == 0) continue; + identitiesOnRelay.push([key, value]); + } + + const sublessIdentities = [...identitiesOnRelay]; + const supersOfSubs = await getSupers(helper); + + // iterate over every sub-identity + for(const [key, value] of await getSubs(helper)) { + // only get subs of the identities interesting to us + const identityIndex = sublessIdentities.findIndex((x: any) => x[0] == key); + if (identityIndex == -1) continue; + sublessIdentities.splice(identityIndex, 1); + subsOnRelay.push(constructSubInfo(key, value, supersOfSubs)); } + + // mark the rest of sub-identities for deletion with empty arrays + /*for(const [account, _identity] of sublessIdentities) { + subsOnRelay.push([account, ['0', []]]); + }*/ } catch (error) { console.error(error); throw Error('Error during fetching identities'); @@ -60,7 +108,7 @@ const identity = paraIdentities.find(i => i[0] === encodedKey); if (identity) { // only update if the identity info does not exist or is changed - if (value.toString() === identity[1].toString()) { + if (JSON.stringify(value) === JSON.stringify(identity[1])) { continue; } } @@ -71,11 +119,36 @@ // identitiesToRemove.push((key as any).toHuman()[0]); } - // await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [identitiesToRemove]); - await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identitiesToAdd]); - console.log(`Tried to upload ${identitiesToAdd.length} identities ` - + `and found ${identitiesToRemove.length} identities for potential removal. ` - + `Now there are ${(await helper.getApi().query.identity.identityOf.keys()).length}.`); + const paraSubs = await getSubs(helper); + const supersOfSubs = await getSupers(helper); + const subsToUpdate: any[] = []; + + if (identitiesToRemove.length != 0) + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceRemoveIdentities', [identitiesToRemove]); + if (identitiesToAdd.length != 0) + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceInsertIdentities', [identitiesToAdd]); + + console.log(`Tried to upload ${identitiesToAdd.length} identities` + + ` and found ${identitiesToRemove.length} identities for potential removal.` + + ` Now there are ${(await helper.getApi().query.identity.identityOf.keys()).length}.`); + + for (const [key, value] of subsOnRelay) { + const encodedKey = encodeAddress(key, ss58Format); + const sub = paraSubs.find(i => i[0] === encodedKey); + if (sub) { + // only update if the sub-identity info does not exist or is changed + if (JSON.stringify(value) === JSON.stringify(constructSubInfo(sub[0], sub[1], supersOfSubs)[1])) { + continue; + } + } + subsToUpdate.push([key, value]); + } + + if (subsToUpdate.length != 0) + await helper.getSudo().executeExtrinsic(superuser, 'api.tx.identity.forceSetSubs', [subsToUpdate]); + + console.log(`Also tried to update ${subsToUpdate.length} identities with their sub-identities.` + + ` Now there are ${(await helper.getApi().query.identity.subsOf.keys()).length} identities with subs.`); } catch (error) { console.error(error); throw Error('Error during setting identities'); -- gitstuff