git.delta.rocks / unique-network / refs/commits / 15d448e077f4

difftreelog

Merge branch 'develop' into tests/generalization

Max Andreev2023-01-20parents: #a93496d #24d3f67.patch.diff
in: master

107 files changed

added.docker/Dockerfile-collatorsdiffbeforeafterboth
--- /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
modified.docker/Dockerfile-parachaindiffbeforeafterboth
--- 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 ======
added.docker/docker-compose.tmp-collators.j2diffbeforeafterboth
--- /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"
modified.docker/testnet-config/launch-config.jsondiffbeforeafterboth
--- 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"
+                    ]
                 }
             ]
         }
modified.github/workflows/ci-develop.ymldiffbeforeafterboth
--- 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
modified.github/workflows/ci-master.ymldiffbeforeafterboth
--- 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
added.github/workflows/collator-selection.ymldiffbeforeafterboth
--- /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
modified.rustfmt.tomldiffbeforeafterboth
--- 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
added.taplo.tomldiffbeforeafterboth
--- /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
modifiedCargo.lockdiffbeforeafterboth
125name = "app-promotion-rpc"125name = "app-promotion-rpc"
126version = "0.1.0"126version = "0.1.0"
127dependencies = [127dependencies = [
128 "pallet-common",
129 "pallet-evm",128 "pallet-evm",
130 "parity-scale-codec 3.2.1",129 "parity-scale-codec",
131 "sp-api",130 "sp-api",
132 "sp-core",
133 "sp-runtime",131 "sp-runtime",
134 "sp-std",132 "sp-std",
135 "up-data-structs",
136]133]
137134
138[[package]]135[[package]]
319316
320[[package]]317[[package]]
321name = "async-trait"318name = "async-trait"
322version = "0.1.60"319version = "0.1.61"
323source = "registry+https://github.com/rust-lang/crates.io-index"320source = "registry+https://github.com/rust-lang/crates.io-index"
324checksum = "677d1d8ab452a3936018a687b20e6f7cf5363d713b732b8884001317b0e48aa3"321checksum = "705339e0e4a9690e2908d2b3d049d85682cf19fbd5782494498fbf7003a6a282"
325dependencies = [322dependencies = [
326 "proc-macro2",323 "proc-macro2",
327 "quote",324 "quote",
343340
344[[package]]341[[package]]
345name = "atomic-waker"342name = "atomic-waker"
346version = "1.0.0"343version = "1.1.0"
347source = "registry+https://github.com/rust-lang/crates.io-index"344source = "registry+https://github.com/rust-lang/crates.io-index"
348checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a"345checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599"
349346
350[[package]]347[[package]]
351name = "atty"348name = "atty"
360357
361[[package]]358[[package]]
362name = "auto_impl"359name = "auto_impl"
363version = "0.5.0"360version = "1.0.1"
364source = "registry+https://github.com/rust-lang/crates.io-index"361source = "registry+https://github.com/rust-lang/crates.io-index"
365checksum = "7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4"362checksum = "8a8c1df849285fbacd587de7818cc7d13be6cd2cbcd47a04fb1801b0e2706e33"
366dependencies = [363dependencies = [
367 "proc-macro-error",364 "proc-macro-error",
368 "proc-macro2",365 "proc-macro2",
387 "cfg-if",384 "cfg-if",
388 "libc",385 "libc",
389 "miniz_oxide",386 "miniz_oxide",
390 "object 0.30.0",387 "object 0.30.2",
391 "rustc-demangle",388 "rustc-demangle",
392]389]
393390
415source = "registry+https://github.com/rust-lang/crates.io-index"412source = "registry+https://github.com/rust-lang/crates.io-index"
416checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"413checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
414
415[[package]]
416name = "base64"
417version = "0.21.0"
418source = "registry+https://github.com/rust-lang/crates.io-index"
419checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
417420
418[[package]]421[[package]]
419name = "base64ct"422name = "base64ct"
438 "array-bytes 4.2.0",441 "array-bytes 4.2.0",
439 "async-trait",442 "async-trait",
440 "fnv",443 "fnv",
441 "futures 0.3.25",444 "futures",
442 "futures-timer",445 "futures-timer",
443 "log",446 "log",
444 "parity-scale-codec 3.2.1",447 "parity-scale-codec",
445 "parking_lot 0.12.1",448 "parking_lot 0.12.1",
446 "sc-chain-spec",449 "sc-chain-spec",
447 "sc-client-api",450 "sc-client-api",
473source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"476source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
474dependencies = [477dependencies = [
475 "beefy-gadget",478 "beefy-gadget",
476 "futures 0.3.25",479 "futures",
477 "jsonrpsee",480 "jsonrpsee",
478 "log",481 "log",
479 "parity-scale-codec 3.2.1",482 "parity-scale-codec",
480 "parking_lot 0.12.1",483 "parking_lot 0.12.1",
481 "sc-rpc",484 "sc-rpc",
482 "sc-utils",485 "sc-utils",
531source = "registry+https://github.com/rust-lang/crates.io-index"534source = "registry+https://github.com/rust-lang/crates.io-index"
532checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"535checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
533
534[[package]]
535name = "bitvec"
536version = "0.20.4"
537source = "registry+https://github.com/rust-lang/crates.io-index"
538checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848"
539dependencies = [
540 "funty 1.1.0",
541 "radium 0.6.2",
542 "tap",
543 "wyz 0.2.0",
544]
545536
546[[package]]537[[package]]
547name = "bitvec"538name = "bitvec"
548version = "1.0.1"539version = "1.0.1"
549source = "registry+https://github.com/rust-lang/crates.io-index"540source = "registry+https://github.com/rust-lang/crates.io-index"
550checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"541checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
551dependencies = [542dependencies = [
552 "funty 2.0.0",543 "funty",
553 "radium 0.7.0",544 "radium",
554 "tap",545 "tap",
555 "wyz 0.5.1",546 "wyz",
556]547]
557548
558[[package]]549[[package]]
699 "regex-automata",690 "regex-automata",
700]691]
692
693[[package]]
694name = "bstr"
695version = "1.1.0"
696source = "registry+https://github.com/rust-lang/crates.io-index"
697checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b"
698dependencies = [
699 "memchr",
700 "serde",
701]
701702
702[[package]]703[[package]]
703name = "build-helper"704name = "build-helper"
710711
711[[package]]712[[package]]
712name = "bumpalo"713name = "bumpalo"
713version = "3.11.1"714version = "3.12.0"
714source = "registry+https://github.com/rust-lang/crates.io-index"715source = "registry+https://github.com/rust-lang/crates.io-index"
715checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"716checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
716717
717[[package]]718[[package]]
718name = "byte-slice-cast"719name = "byte-slice-cast"
751752
752[[package]]753[[package]]
753name = "camino"754name = "camino"
754version = "1.1.1"755version = "1.1.2"
755source = "registry+https://github.com/rust-lang/crates.io-index"756source = "registry+https://github.com/rust-lang/crates.io-index"
756checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e"757checksum = "c77df041dc383319cc661b428b6961a005db4d6808d5e12536931b1ca9556055"
757dependencies = [758dependencies = [
758 "serde",759 "serde",
759]760]
903904
904[[package]]905[[package]]
905name = "clap"906name = "clap"
906version = "4.0.32"907version = "4.1.1"
907source = "registry+https://github.com/rust-lang/crates.io-index"908source = "registry+https://github.com/rust-lang/crates.io-index"
908checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39"909checksum = "4ec7a4128863c188deefe750ac1d1dfe66c236909f845af04beed823638dc1b2"
909dependencies = [910dependencies = [
910 "bitflags",911 "bitflags",
911 "clap_derive",912 "clap_derive",
918919
919[[package]]920[[package]]
920name = "clap_derive"921name = "clap_derive"
921version = "4.0.21"922version = "4.1.0"
922source = "registry+https://github.com/rust-lang/crates.io-index"923source = "registry+https://github.com/rust-lang/crates.io-index"
923checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014"924checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8"
924dependencies = [925dependencies = [
925 "heck",926 "heck",
926 "proc-macro-error",927 "proc-macro-error",
931932
932[[package]]933[[package]]
933name = "clap_lex"934name = "clap_lex"
934version = "0.3.0"935version = "0.3.1"
935source = "registry+https://github.com/rust-lang/crates.io-index"936source = "registry+https://github.com/rust-lang/crates.io-index"
936checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"937checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade"
937dependencies = [938dependencies = [
938 "os_str_bytes",939 "os_str_bytes",
939]940]
962963
963[[package]]964[[package]]
964name = "comfy-table"965name = "comfy-table"
965version = "6.1.3"966version = "6.1.4"
966source = "registry+https://github.com/rust-lang/crates.io-index"967source = "registry+https://github.com/rust-lang/crates.io-index"
967checksum = "e621e7e86c46fd8a14c32c6ae3cb95656621b4743a27d0cffedb831d46e7ad21"968checksum = "6e7b787b0dc42e8111badfdbe4c3059158ccb2db8780352fa1b01e8ccf45cc4d"
968dependencies = [969dependencies = [
969 "strum",970 "strum",
970 "strum_macros",971 "strum_macros",
973974
974[[package]]975[[package]]
975name = "concurrent-queue"976name = "concurrent-queue"
976version = "2.0.0"977version = "2.1.0"
977source = "registry+https://github.com/rust-lang/crates.io-index"978source = "registry+https://github.com/rust-lang/crates.io-index"
978checksum = "bd7bef69dc86e3c610e4e7aed41035e2a7ed12e72dd7530f61327a6579a4390b"979checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e"
979dependencies = [980dependencies = [
980 "crossbeam-utils",981 "crossbeam-utils",
981]982]
982983
983[[package]]984[[package]]
984name = "console"985name = "console"
985version = "0.15.2"986version = "0.15.5"
986source = "registry+https://github.com/rust-lang/crates.io-index"987source = "registry+https://github.com/rust-lang/crates.io-index"
987checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c"988checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60"
988dependencies = [989dependencies = [
989 "encode_unicode",990 "encode_unicode",
990 "lazy_static",991 "lazy_static",
991 "libc",992 "libc",
992 "terminal_size",
993 "winapi",993 "windows-sys 0.42.0",
994]994]
995995
996[[package]]996[[package]]
1303source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0"1303source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0"
1304dependencies = [1304dependencies = [
1305 "clap",1305 "clap",
1306 "parity-scale-codec 3.2.1",1306 "parity-scale-codec",
1307 "sc-chain-spec",1307 "sc-chain-spec",
1308 "sc-cli",1308 "sc-cli",
1309 "sc-service",1309 "sc-service",
1320 "cumulus-client-consensus-common",1320 "cumulus-client-consensus-common",
1321 "cumulus-client-network",1321 "cumulus-client-network",
1322 "cumulus-primitives-core",1322 "cumulus-primitives-core",
1323 "futures 0.3.25",1323 "futures",
1324 "parity-scale-codec 3.2.1",1324 "parity-scale-codec",
1325 "parking_lot 0.12.1",1325 "parking_lot 0.12.1",
1326 "polkadot-node-primitives",1326 "polkadot-node-primitives",
1327 "polkadot-node-subsystem",1327 "polkadot-node-subsystem",
1343 "async-trait",1343 "async-trait",
1344 "cumulus-client-consensus-common",1344 "cumulus-client-consensus-common",
1345 "cumulus-primitives-core",1345 "cumulus-primitives-core",
1346 "futures 0.3.25",1346 "futures",
1347 "parity-scale-codec 3.2.1",1347 "parity-scale-codec",
1348 "sc-client-api",1348 "sc-client-api",
1349 "sc-consensus",1349 "sc-consensus",
1350 "sc-consensus-aura",1350 "sc-consensus-aura",
1374 "cumulus-primitives-core",1374 "cumulus-primitives-core",
1375 "cumulus-relay-chain-interface",1375 "cumulus-relay-chain-interface",
1376 "dyn-clone",1376 "dyn-clone",
1377 "futures 0.3.25",1377 "futures",
1378 "log",1378 "log",
1379 "parity-scale-codec 3.2.1",1379 "parity-scale-codec",
1380 "polkadot-primitives",1380 "polkadot-primitives",
1381 "sc-client-api",1381 "sc-client-api",
1382 "sc-consensus",1382 "sc-consensus",
1394dependencies = [1394dependencies = [
1395 "async-trait",1395 "async-trait",
1396 "cumulus-relay-chain-interface",1396 "cumulus-relay-chain-interface",
1397 "futures 0.3.25",1397 "futures",
1398 "futures-timer",1398 "futures-timer",
1399 "parity-scale-codec 3.2.1",1399 "parity-scale-codec",
1400 "parking_lot 0.12.1",1400 "parking_lot 0.12.1",
1401 "polkadot-node-primitives",1401 "polkadot-node-primitives",
1402 "polkadot-parachain",1402 "polkadot-parachain",
1417dependencies = [1417dependencies = [
1418 "cumulus-primitives-core",1418 "cumulus-primitives-core",
1419 "cumulus-relay-chain-interface",1419 "cumulus-relay-chain-interface",
1420 "futures 0.3.25",1420 "futures",
1421 "futures-timer",1421 "futures-timer",
1422 "parity-scale-codec 3.2.1",1422 "parity-scale-codec",
1423 "polkadot-node-primitives",1423 "polkadot-node-primitives",
1424 "polkadot-node-subsystem",1424 "polkadot-node-subsystem",
1425 "polkadot-overseer",1425 "polkadot-overseer",
1446 "cumulus-relay-chain-inprocess-interface",1446 "cumulus-relay-chain-inprocess-interface",
1447 "cumulus-relay-chain-interface",1447 "cumulus-relay-chain-interface",
1448 "cumulus-relay-chain-minimal-node",1448 "cumulus-relay-chain-minimal-node",
1449 "futures 0.3.25",1449 "futures",
1450 "parking_lot 0.12.1",1450 "parking_lot 0.12.1",
1451 "polkadot-primitives",1451 "polkadot-primitives",
1452 "sc-client-api",1452 "sc-client-api",
1469 "frame-support",1469 "frame-support",
1470 "frame-system",1470 "frame-system",
1471 "pallet-aura",1471 "pallet-aura",
1472 "parity-scale-codec 3.2.1",1472 "parity-scale-codec",
1473 "scale-info",1473 "scale-info",
1474 "sp-application-crypto",1474 "sp-application-crypto",
1475 "sp-consensus-aura",1475 "sp-consensus-aura",
1486 "frame-support",1486 "frame-support",
1487 "frame-system",1487 "frame-system",
1488 "log",1488 "log",
1489 "parity-scale-codec 3.2.1",1489 "parity-scale-codec",
1490 "scale-info",1490 "scale-info",
1491 "sp-io",1491 "sp-io",
1492 "sp-runtime",1492 "sp-runtime",
1508 "frame-system",1508 "frame-system",
1509 "impl-trait-for-tuples",1509 "impl-trait-for-tuples",
1510 "log",1510 "log",
1511 "parity-scale-codec 3.2.1",1511 "parity-scale-codec",
1512 "polkadot-parachain",1512 "polkadot-parachain",
1513 "scale-info",1513 "scale-info",
1514 "sp-core",1514 "sp-core",
1541 "cumulus-primitives-core",1541 "cumulus-primitives-core",
1542 "frame-support",1542 "frame-support",
1543 "frame-system",1543 "frame-system",
1544 "parity-scale-codec 3.2.1",1544 "parity-scale-codec",
1545 "scale-info",1545 "scale-info",
1546 "sp-io",1546 "sp-io",
1547 "sp-runtime",1547 "sp-runtime",
1558 "frame-support",1558 "frame-support",
1559 "frame-system",1559 "frame-system",
1560 "log",1560 "log",
1561 "parity-scale-codec 3.2.1",1561 "parity-scale-codec",
1562 "rand_chacha 0.3.1",1562 "rand_chacha 0.3.1",
1563 "scale-info",1563 "scale-info",
1564 "sp-runtime",1564 "sp-runtime",
1572version = "0.1.0"1572version = "0.1.0"
1573source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0"1573source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0"
1574dependencies = [1574dependencies = [
1575 "parity-scale-codec 3.2.1",1575 "parity-scale-codec",
1576 "polkadot-core-primitives",1576 "polkadot-core-primitives",
1577 "polkadot-parachain",1577 "polkadot-parachain",
1578 "polkadot-primitives",1578 "polkadot-primitives",
1591 "cumulus-primitives-core",1591 "cumulus-primitives-core",
1592 "cumulus-relay-chain-interface",1592 "cumulus-relay-chain-interface",
1593 "cumulus-test-relay-sproof-builder",1593 "cumulus-test-relay-sproof-builder",
1594 "parity-scale-codec 3.2.1",1594 "parity-scale-codec",
1595 "sc-client-api",1595 "sc-client-api",
1596 "scale-info",1596 "scale-info",
1597 "sp-api",1597 "sp-api",
1611source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0"1611source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0"
1612dependencies = [1612dependencies = [
1613 "cumulus-primitives-core",1613 "cumulus-primitives-core",
1614 "futures 0.3.25",1614 "futures",
1615 "parity-scale-codec 3.2.1",1615 "parity-scale-codec",
1616 "sp-inherents",1616 "sp-inherents",
1617 "sp-std",1617 "sp-std",
1618 "sp-timestamp",1618 "sp-timestamp",
1626 "cumulus-primitives-core",1626 "cumulus-primitives-core",
1627 "frame-support",1627 "frame-support",
1628 "log",1628 "log",
1629 "parity-scale-codec 3.2.1",1629 "parity-scale-codec",
1630 "sp-runtime",1630 "sp-runtime",
1631 "sp-std",1631 "sp-std",
1632 "xcm",1632 "xcm",
1642 "async-trait",1642 "async-trait",
1643 "cumulus-primitives-core",1643 "cumulus-primitives-core",
1644 "cumulus-relay-chain-interface",1644 "cumulus-relay-chain-interface",
1645 "futures 0.3.25",1645 "futures",
1646 "futures-timer",1646 "futures-timer",
1647 "polkadot-cli",1647 "polkadot-cli",
1648 "polkadot-client",1648 "polkadot-client",
1666dependencies = [1666dependencies = [
1667 "async-trait",1667 "async-trait",
1668 "cumulus-primitives-core",1668 "cumulus-primitives-core",
1669 "futures 0.3.25",1669 "futures",
1670 "jsonrpsee-core",1670 "jsonrpsee-core",
1671 "parity-scale-codec 3.2.1",1671 "parity-scale-codec",
1672 "polkadot-overseer",1672 "polkadot-overseer",
1673 "polkadot-service",1673 "polkadot-service",
1674 "sc-client-api",1674 "sc-client-api",
1689 "cumulus-primitives-core",1689 "cumulus-primitives-core",
1690 "cumulus-relay-chain-interface",1690 "cumulus-relay-chain-interface",
1691 "cumulus-relay-chain-rpc-interface",1691 "cumulus-relay-chain-rpc-interface",
1692 "futures 0.3.25",1692 "futures",
1693 "lru",1693 "lru",
1694 "polkadot-core-primitives",1694 "polkadot-core-primitives",
1695 "polkadot-network-bridge",1695 "polkadot-network-bridge",
1727 "async-trait",1727 "async-trait",
1728 "cumulus-primitives-core",1728 "cumulus-primitives-core",
1729 "cumulus-relay-chain-interface",1729 "cumulus-relay-chain-interface",
1730 "futures 0.3.25",1730 "futures",
1731 "futures-timer",1731 "futures-timer",
1732 "jsonrpsee",1732 "jsonrpsee",
1733 "lru",1733 "lru",
1734 "parity-scale-codec 3.2.1",1734 "parity-scale-codec",
1735 "polkadot-service",1735 "polkadot-service",
1736 "sc-client-api",1736 "sc-client-api",
1737 "sc-rpc-api",1737 "sc-rpc-api",
1754source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0"1754source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.36#afe528af891f464b318293f183f6d3eefbc979b0"
1755dependencies = [1755dependencies = [
1756 "cumulus-primitives-core",1756 "cumulus-primitives-core",
1757 "parity-scale-codec 3.2.1",1757 "parity-scale-codec",
1758 "polkadot-primitives",1758 "polkadot-primitives",
1759 "sp-runtime",1759 "sp-runtime",
1760 "sp-state-machine",1760 "sp-state-machine",
18031803
1804[[package]]1804[[package]]
1805name = "cxx"1805name = "cxx"
1806version = "1.0.85"1806version = "1.0.86"
1807source = "registry+https://github.com/rust-lang/crates.io-index"1807source = "registry+https://github.com/rust-lang/crates.io-index"
1808checksum = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd"1808checksum = "51d1075c37807dcf850c379432f0df05ba52cc30f279c5cfc43cc221ce7f8579"
1809dependencies = [1809dependencies = [
1810 "cc",1810 "cc",
1811 "cxxbridge-flags",1811 "cxxbridge-flags",
18151815
1816[[package]]1816[[package]]
1817name = "cxx-build"1817name = "cxx-build"
1818version = "1.0.85"1818version = "1.0.86"
1819source = "registry+https://github.com/rust-lang/crates.io-index"1819source = "registry+https://github.com/rust-lang/crates.io-index"
1820checksum = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0"1820checksum = "5044281f61b27bc598f2f6647d480aed48d2bf52d6eb0b627d84c0361b17aa70"
1821dependencies = [1821dependencies = [
1822 "cc",1822 "cc",
1823 "codespan-reporting",1823 "codespan-reporting",
18301830
1831[[package]]1831[[package]]
1832name = "cxxbridge-flags"1832name = "cxxbridge-flags"
1833version = "1.0.85"1833version = "1.0.86"
1834source = "registry+https://github.com/rust-lang/crates.io-index"1834source = "registry+https://github.com/rust-lang/crates.io-index"
1835checksum = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59"1835checksum = "61b50bc93ba22c27b0d31128d2d130a0a6b3d267ae27ef7e4fae2167dfe8781c"
18361836
1837[[package]]1837[[package]]
1838name = "cxxbridge-macro"1838name = "cxxbridge-macro"
1839version = "1.0.85"1839version = "1.0.86"
1840source = "registry+https://github.com/rust-lang/crates.io-index"1840source = "registry+https://github.com/rust-lang/crates.io-index"
1841checksum = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6"1841checksum = "39e61fda7e62115119469c7b3591fd913ecca96fb766cfd3f2e2502ab7bc87a5"
1842dependencies = [1842dependencies = [
1843 "proc-macro2",1843 "proc-macro2",
1844 "quote",1844 "quote",
20502050
2051[[package]]2051[[package]]
2052name = "ed25519"2052name = "ed25519"
2053version = "1.5.2"2053version = "1.5.3"
2054source = "registry+https://github.com/rust-lang/crates.io-index"2054source = "registry+https://github.com/rust-lang/crates.io-index"
2055checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369"2055checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7"
2056dependencies = [2056dependencies = [
2057 "signature",2057 "signature",
2058]2058]
2172 "termcolor",2172 "termcolor",
2173]2173]
2174
2175[[package]]
2176name = "env_logger"
2177version = "0.10.0"
2178source = "registry+https://github.com/rust-lang/crates.io-index"
2179checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
2180dependencies = [
2181 "humantime",
2182 "is-terminal",
2183 "log",
2184 "regex",
2185 "termcolor",
2186]
21742187
2175[[package]]2188[[package]]
2176name = "environmental"2189name = "environmental"
2254 "ethereum-types 0.14.1",2267 "ethereum-types 0.14.1",
2255 "hash-db",2268 "hash-db",
2256 "hash256-std-hasher",2269 "hash256-std-hasher",
2257 "parity-scale-codec 3.2.1",2270 "parity-scale-codec",
2258 "rlp",2271 "rlp",
2259 "scale-info",2272 "scale-info",
2260 "serde",2273 "serde",
23012314
2302[[package]]2315[[package]]
2303name = "evm"2316name = "evm"
2304version = "0.35.0"2317version = "0.37.0"
2305source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2a"2318source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#e543965fa325885fc61ebf6ec47565b8ab686afd"
2306dependencies = [2319dependencies = [
2307 "auto_impl",2320 "auto_impl",
2308 "environmental",2321 "environmental",
2311 "evm-gasometer",2324 "evm-gasometer",
2312 "evm-runtime",2325 "evm-runtime",
2313 "log",2326 "log",
2314 "parity-scale-codec 3.2.1",2327 "parity-scale-codec",
2315 "primitive-types 0.12.1",2328 "primitive-types 0.12.1",
2316 "rlp",2329 "rlp",
2317 "scale-info",2330 "scale-info",
2333 "primitive-types 0.12.1",2346 "primitive-types 0.12.1",
2334 "sha3-const",2347 "sha3-const",
2335 "similar-asserts",2348 "similar-asserts",
2336 "sp-std",
2337 "trybuild",2349 "trybuild",
2338]2350]
23392351
23512363
2352[[package]]2364[[package]]
2353name = "evm-core"2365name = "evm-core"
2354version = "0.35.0"2366version = "0.37.0"
2355source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2a"2367source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#e543965fa325885fc61ebf6ec47565b8ab686afd"
2356dependencies = [2368dependencies = [
2357 "parity-scale-codec 3.2.1",2369 "parity-scale-codec",
2358 "primitive-types 0.12.1",2370 "primitive-types 0.12.1",
2359 "scale-info",2371 "scale-info",
2360 "serde",2372 "serde",
2361]2373]
23622374
2363[[package]]2375[[package]]
2364name = "evm-gasometer"2376name = "evm-gasometer"
2365version = "0.35.0"2377version = "0.37.0"
2366source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2a"2378source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#e543965fa325885fc61ebf6ec47565b8ab686afd"
2367dependencies = [2379dependencies = [
2368 "environmental",2380 "environmental",
2369 "evm-core",2381 "evm-core",
23732385
2374[[package]]2386[[package]]
2375name = "evm-runtime"2387name = "evm-runtime"
2376version = "0.35.0"2388version = "0.37.0"
2377source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#a68cd3ea5ee2eb310e3452e660a8e9e56a474d2a"2389source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.36#e543965fa325885fc61ebf6ec47565b8ab686afd"
2378dependencies = [2390dependencies = [
2379 "auto_impl",2391 "auto_impl",
2380 "environmental",2392 "environmental",
2389source = "registry+https://github.com/rust-lang/crates.io-index"2401source = "registry+https://github.com/rust-lang/crates.io-index"
2390checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5"2402checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5"
2391dependencies = [2403dependencies = [
2392 "futures 0.3.25",2404 "futures",
2393]2405]
23942406
2395[[package]]2407[[package]]
2491 "kvdb-rocksdb",2503 "kvdb-rocksdb",
2492 "log",2504 "log",
2493 "parity-db",2505 "parity-db",
2494 "parity-scale-codec 3.2.1",2506 "parity-scale-codec",
2495 "parking_lot 0.12.1",2507 "parking_lot 0.12.1",
2496 "sc-client-db",2508 "sc-client-db",
2497 "smallvec",2509 "smallvec",
2509 "fc-db",2521 "fc-db",
2510 "fp-consensus",2522 "fp-consensus",
2511 "fp-rpc",2523 "fp-rpc",
2512 "futures 0.3.25",2524 "futures",
2513 "futures-timer",2525 "futures-timer",
2514 "log",2526 "log",
2515 "sc-client-api",2527 "sc-client-api",
2532 "fp-evm",2544 "fp-evm",
2533 "fp-rpc",2545 "fp-rpc",
2534 "fp-storage",2546 "fp-storage",
2535 "futures 0.3.25",2547 "futures",
2536 "hex",2548 "hex",
2537 "jsonrpsee",2549 "jsonrpsee",
2538 "libsecp256k1",2550 "libsecp256k1",
2539 "log",2551 "log",
2540 "lru",2552 "lru",
2541 "parity-scale-codec 3.2.1",2553 "parity-scale-codec",
2542 "prometheus",2554 "prometheus",
2543 "rand 0.8.5",2555 "rand 0.8.5",
2544 "rlp",2556 "rlp",
26022614
2603[[package]]2615[[package]]
2604name = "file-per-thread-logger"2616name = "file-per-thread-logger"
2605version = "0.1.5"2617version = "0.1.6"
2606source = "registry+https://github.com/rust-lang/crates.io-index"2618source = "registry+https://github.com/rust-lang/crates.io-index"
2607checksum = "21e16290574b39ee41c71aeb90ae960c504ebaf1e2a1c87bd52aa56ed6e1a02f"2619checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866"
2608dependencies = [2620dependencies = [
2609 "env_logger",2621 "env_logger 0.10.0",
2610 "log",2622 "log",
2611]2623]
26122624
26242636
2625[[package]]2637[[package]]
2626name = "finality-grandpa"2638name = "finality-grandpa"
2627version = "0.16.0"2639version = "0.16.1"
2628source = "registry+https://github.com/rust-lang/crates.io-index"2640source = "registry+https://github.com/rust-lang/crates.io-index"
2629checksum = "b22349c6a11563a202d95772a68e0fcf56119e74ea8a2a19cf2301460fcd0df5"2641checksum = "e24e6c429951433ccb7c87fd528c60084834dcd14763182c1f83291bcde24c34"
2630dependencies = [2642dependencies = [
2631 "either",2643 "either",
2632 "futures 0.3.25",2644 "futures",
2633 "futures-timer",2645 "futures-timer",
2634 "log",2646 "log",
2635 "num-traits",2647 "num-traits",
2636 "parity-scale-codec 3.2.1",2648 "parity-scale-codec",
2637 "parking_lot 0.12.1",2649 "parking_lot 0.12.1",
2638 "scale-info",2650 "scale-info",
2639]2651]
2678 "miniz_oxide",2690 "miniz_oxide",
2679]2691]
2680
2681[[package]]
2682name = "flexi_logger"
2683version = "0.24.2"
2684source = "registry+https://github.com/rust-lang/crates.io-index"
2685checksum = "ade8e86c48285f138a4d6ca15a2912e39bd6c74d62db42da4f1985f651a0b057"
2686dependencies = [
2687 "atty",
2688 "chrono",
2689 "glob",
2690 "lazy_static",
2691 "log",
2692 "nu-ansi-term",
2693 "regex",
2694 "thiserror",
2695]
26962692
2697[[package]]2693[[package]]
2698name = "float-cmp"2694name = "float-cmp"
2714version = "3.0.0"2710version = "3.0.0"
2715source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"2711source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
2716dependencies = [2712dependencies = [
2717 "parity-scale-codec 3.2.1",2713 "parity-scale-codec",
2718]2714]
27192715
2720[[package]]2716[[package]]
2732source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"2728source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2733dependencies = [2729dependencies = [
2734 "ethereum 0.14.0",2730 "ethereum 0.14.0",
2735 "parity-scale-codec 3.2.1",2731 "parity-scale-codec",
2736 "sp-core",2732 "sp-core",
2737 "sp-runtime",2733 "sp-runtime",
2738 "sp-std",2734 "sp-std",
2748 "fp-evm",2744 "fp-evm",
2749 "frame-support",2745 "frame-support",
2750 "num_enum",2746 "num_enum",
2751 "parity-scale-codec 3.2.1",2747 "parity-scale-codec",
2752 "sp-core",2748 "sp-core",
2753 "sp-std",2749 "sp-std",
2754]2750]
2761 "evm",2757 "evm",
2762 "frame-support",2758 "frame-support",
2763 "impl-trait-for-tuples",2759 "impl-trait-for-tuples",
2764 "parity-scale-codec 3.2.1",2760 "parity-scale-codec",
2765 "serde",2761 "serde",
2766 "sp-core",2762 "sp-core",
2767 "sp-std",2763 "sp-std",
2784 "ethereum 0.14.0",2780 "ethereum 0.14.0",
2785 "ethereum-types 0.14.1",2781 "ethereum-types 0.14.1",
2786 "fp-evm",2782 "fp-evm",
2787 "parity-scale-codec 3.2.1",2783 "parity-scale-codec",
2788 "scale-info",2784 "scale-info",
2789 "sp-api",2785 "sp-api",
2790 "sp-core",2786 "sp-core",
2800dependencies = [2796dependencies = [
2801 "ethereum 0.14.0",2797 "ethereum 0.14.0",
2802 "frame-support",2798 "frame-support",
2803 "parity-scale-codec 3.2.1",2799 "parity-scale-codec",
2804 "scale-info",2800 "scale-info",
2805 "serde",2801 "serde",
2806 "sp-runtime",2802 "sp-runtime",
2811version = "2.0.0"2807version = "2.0.0"
2812source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"2808source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2813dependencies = [2809dependencies = [
2814 "parity-scale-codec 3.2.1",2810 "parity-scale-codec",
2815 "serde",2811 "serde",
2816]2812]
28172813
2830 "frame-system",2826 "frame-system",
2831 "linregress",2827 "linregress",
2832 "log",2828 "log",
2833 "parity-scale-codec 3.2.1",2829 "parity-scale-codec",
2834 "paste",2830 "paste",
2835 "scale-info",2831 "scale-info",
2836 "serde",2832 "serde",
2866 "linked-hash-map",2862 "linked-hash-map",
2867 "log",2863 "log",
2868 "memory-db",2864 "memory-db",
2869 "parity-scale-codec 3.2.1",2865 "parity-scale-codec",
2870 "rand 0.8.5",2866 "rand 0.8.5",
2871 "rand_pcg 0.3.1",2867 "rand_pcg 0.3.1",
2872 "sc-block-builder",2868 "sc-block-builder",
2915 "frame-election-provider-solution-type",2911 "frame-election-provider-solution-type",
2916 "frame-support",2912 "frame-support",
2917 "frame-system",2913 "frame-system",
2918 "parity-scale-codec 3.2.1",2914 "parity-scale-codec",
2919 "scale-info",2915 "scale-info",
2920 "sp-arithmetic",2916 "sp-arithmetic",
2921 "sp-core",2917 "sp-core",
2932 "frame-support",2928 "frame-support",
2933 "frame-system",2929 "frame-system",
2934 "frame-try-runtime",2930 "frame-try-runtime",
2935 "parity-scale-codec 3.2.1",2931 "parity-scale-codec",
2936 "scale-info",2932 "scale-info",
2937 "sp-core",2933 "sp-core",
2938 "sp-io",2934 "sp-io",
2948checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d"2944checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d"
2949dependencies = [2945dependencies = [
2950 "cfg-if",2946 "cfg-if",
2951 "parity-scale-codec 3.2.1",2947 "parity-scale-codec",
2952 "scale-info",2948 "scale-info",
2953 "serde",2949 "serde",
2954]2950]
2958version = "0.10.0-dev"2954version = "0.10.0-dev"
2959source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"2955source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
2960dependencies = [2956dependencies = [
2961 "env_logger",2957 "env_logger 0.9.3",
2962 "futures 0.3.25",2958 "futures",
2963 "log",2959 "log",
2964 "parity-scale-codec 3.2.1",2960 "parity-scale-codec",
2965 "serde",2961 "serde",
2966 "serde_json",2962 "serde_json",
2967 "sp-core",2963 "sp-core",
2984 "k256",2980 "k256",
2985 "log",2981 "log",
2986 "once_cell",2982 "once_cell",
2987 "parity-scale-codec 3.2.1",2983 "parity-scale-codec",
2988 "paste",2984 "paste",
2989 "scale-info",2985 "scale-info",
2990 "serde",2986 "serde",
3047dependencies = [3043dependencies = [
3048 "frame-support",3044 "frame-support",
3049 "log",3045 "log",
3050 "parity-scale-codec 3.2.1",3046 "parity-scale-codec",
3051 "scale-info",3047 "scale-info",
3052 "serde",3048 "serde",
3053 "sp-core",3049 "sp-core",
3066 "frame-benchmarking",3062 "frame-benchmarking",
3067 "frame-support",3063 "frame-support",
3068 "frame-system",3064 "frame-system",
3069 "parity-scale-codec 3.2.1",3065 "parity-scale-codec",
3070 "scale-info",3066 "scale-info",
3071 "sp-core",3067 "sp-core",
3072 "sp-runtime",3068 "sp-runtime",
3078version = "4.0.0-dev"3074version = "4.0.0-dev"
3079source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"3075source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
3080dependencies = [3076dependencies = [
3081 "parity-scale-codec 3.2.1",3077 "parity-scale-codec",
3082 "sp-api",3078 "sp-api",
3083]3079]
30843080
3088source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"3084source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
3089dependencies = [3085dependencies = [
3090 "frame-support",3086 "frame-support",
3091 "parity-scale-codec 3.2.1",3087 "parity-scale-codec",
3092 "sp-api",3088 "sp-api",
3093 "sp-runtime",3089 "sp-runtime",
3094 "sp-std",3090 "sp-std",
3116source = "registry+https://github.com/rust-lang/crates.io-index"3112source = "registry+https://github.com/rust-lang/crates.io-index"
3117checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394"3113checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394"
3118
3119[[package]]
3120name = "funty"
3121version = "1.1.0"
3122source = "registry+https://github.com/rust-lang/crates.io-index"
3123checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7"
31243114
3125[[package]]3115[[package]]
3126name = "funty"3116name = "funty"
3127version = "2.0.0"3117version = "2.0.0"
3128source = "registry+https://github.com/rust-lang/crates.io-index"3118source = "registry+https://github.com/rust-lang/crates.io-index"
3129checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"3119checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
3130
3131[[package]]
3132name = "futures"
3133version = "0.1.31"
3134source = "registry+https://github.com/rust-lang/crates.io-index"
3135checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678"
31363120
3137[[package]]3121[[package]]
3138name = "futures"3122name = "futures"
3244source = "registry+https://github.com/rust-lang/crates.io-index"3228source = "registry+https://github.com/rust-lang/crates.io-index"
3245checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"3229checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"
3246dependencies = [3230dependencies = [
3247 "futures 0.1.31",
3248 "futures-channel",3231 "futures-channel",
3249 "futures-core",3232 "futures-core",
3250 "futures-io",3233 "futures-io",
33483331
3349[[package]]3332[[package]]
3350name = "glob"3333name = "glob"
3351version = "0.3.0"3334version = "0.3.1"
3352source = "registry+https://github.com/rust-lang/crates.io-index"3335source = "registry+https://github.com/rust-lang/crates.io-index"
3353checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"3336checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
33543337
3355[[package]]3338[[package]]
3356name = "globset"3339name = "globset"
3357version = "0.4.9"3340version = "0.4.10"
3358source = "registry+https://github.com/rust-lang/crates.io-index"3341source = "registry+https://github.com/rust-lang/crates.io-index"
3359checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a"3342checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc"
3360dependencies = [3343dependencies = [
3361 "aho-corasick",3344 "aho-corasick",
3362 "bstr",3345 "bstr 1.1.0",
3363 "fnv",3346 "fnv",
3364 "log",3347 "log",
3365 "regex",3348 "regex",
3681 "async-io",3664 "async-io",
3682 "core-foundation",3665 "core-foundation",
3683 "fnv",3666 "fnv",
3684 "futures 0.3.25",3667 "futures",
3685 "if-addrs",3668 "if-addrs",
3686 "ipnet",3669 "ipnet",
3687 "log",3670 "log",
3696source = "registry+https://github.com/rust-lang/crates.io-index"3679source = "registry+https://github.com/rust-lang/crates.io-index"
3697checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"3680checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"
3698dependencies = [3681dependencies = [
3699 "parity-scale-codec 3.2.1",3682 "parity-scale-codec",
3700]3683]
37013684
3702[[package]]3685[[package]]
37713754
3772[[package]]3755[[package]]
3773name = "io-lifetimes"3756name = "io-lifetimes"
3774version = "1.0.3"3757version = "1.0.4"
3775source = "registry+https://github.com/rust-lang/crates.io-index"3758source = "registry+https://github.com/rust-lang/crates.io-index"
3776checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"3759checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e"
3777dependencies = [3760dependencies = [
3778 "libc",3761 "libc",
3779 "windows-sys 0.42.0",3762 "windows-sys 0.42.0",
37993782
3800[[package]]3783[[package]]
3801name = "ipnet"3784name = "ipnet"
3802version = "2.7.0"3785version = "2.7.1"
3803source = "registry+https://github.com/rust-lang/crates.io-index"3786source = "registry+https://github.com/rust-lang/crates.io-index"
3804checksum = "11b0d96e660696543b251e58030cf9787df56da39dab19ad60eae7353040917e"3787checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146"
38053788
3806[[package]]3789[[package]]
3807name = "is-terminal"3790name = "is-terminal"
3810checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"3793checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"
3811dependencies = [3794dependencies = [
3812 "hermit-abi 0.2.6",3795 "hermit-abi 0.2.6",
3813 "io-lifetimes 1.0.3",3796 "io-lifetimes 1.0.4",
3814 "rustix 0.36.5",3797 "rustix 0.36.7",
3815 "windows-sys 0.42.0",3798 "windows-sys 0.42.0",
3816]3799]
38173800
3998version = "0.9.36"3981version = "0.9.36"
3999source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"3982source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
4000dependencies = [3983dependencies = [
4001 "bitvec 1.0.1",3984 "bitvec",
4002 "frame-benchmarking",3985 "frame-benchmarking",
4003 "frame-election-provider-support",3986 "frame-election-provider-support",
4004 "frame-executive",3987 "frame-executive",
4056 "pallet-whitelist",4039 "pallet-whitelist",
4057 "pallet-xcm",4040 "pallet-xcm",
4058 "pallet-xcm-benchmarks",4041 "pallet-xcm-benchmarks",
4059 "parity-scale-codec 3.2.1",4042 "parity-scale-codec",
4060 "polkadot-primitives",4043 "polkadot-primitives",
4061 "polkadot-runtime-common",4044 "polkadot-runtime-common",
4062 "polkadot-runtime-parachains",4045 "polkadot-runtime-parachains",
4193checksum = "ec878fda12ebec479186b3914ebc48ff180fa4c51847e11a1a68bf65249e02c1"4176checksum = "ec878fda12ebec479186b3914ebc48ff180fa4c51847e11a1a68bf65249e02c1"
4194dependencies = [4177dependencies = [
4195 "bytes",4178 "bytes",
4196 "futures 0.3.25",4179 "futures",
4197 "futures-timer",4180 "futures-timer",
4198 "getrandom 0.2.8",4181 "getrandom 0.2.8",
4199 "instant",4182 "instant",
4231 "ed25519-dalek",4214 "ed25519-dalek",
4232 "either",4215 "either",
4233 "fnv",4216 "fnv",
4234 "futures 0.3.25",4217 "futures",
4235 "futures-timer",4218 "futures-timer",
4236 "instant",4219 "instant",
4237 "lazy_static",4220 "lazy_static",
4259source = "registry+https://github.com/rust-lang/crates.io-index"4242source = "registry+https://github.com/rust-lang/crates.io-index"
4260checksum = "2322c9fb40d99101def6a01612ee30500c89abbbecb6297b3cd252903a4c1720"4243checksum = "2322c9fb40d99101def6a01612ee30500c89abbbecb6297b3cd252903a4c1720"
4261dependencies = [4244dependencies = [
4262 "futures 0.3.25",4245 "futures",
4263 "libp2p-core",4246 "libp2p-core",
4264 "log",4247 "log",
4265 "parking_lot 0.12.1",4248 "parking_lot 0.12.1",
4274checksum = "dcf9a121f699e8719bda2e6e9e9b6ddafc6cff4602471d6481c1067930ccb29b"4257checksum = "dcf9a121f699e8719bda2e6e9e9b6ddafc6cff4602471d6481c1067930ccb29b"
4275dependencies = [4258dependencies = [
4276 "asynchronous-codec",4259 "asynchronous-codec",
4277 "futures 0.3.25",4260 "futures",
4278 "futures-timer",4261 "futures-timer",
4279 "libp2p-core",4262 "libp2p-core",
4280 "libp2p-swarm",4263 "libp2p-swarm",
4299 "bytes",4282 "bytes",
4300 "either",4283 "either",
4301 "fnv",4284 "fnv",
4302 "futures 0.3.25",4285 "futures",
4303 "futures-timer",4286 "futures-timer",
4304 "instant",4287 "instant",
4305 "libp2p-core",4288 "libp2p-core",
4324dependencies = [4307dependencies = [
4325 "data-encoding",4308 "data-encoding",
4326 "dns-parser",4309 "dns-parser",
4327 "futures 0.3.25",4310 "futures",
4328 "if-watch",4311 "if-watch",
4329 "libp2p-core",4312 "libp2p-core",
4330 "libp2p-swarm",4313 "libp2p-swarm",
4358dependencies = [4341dependencies = [
4359 "asynchronous-codec",4342 "asynchronous-codec",
4360 "bytes",4343 "bytes",
4361 "futures 0.3.25",4344 "futures",
4362 "libp2p-core",4345 "libp2p-core",
4363 "log",4346 "log",
4364 "nohash-hasher",4347 "nohash-hasher",
4376dependencies = [4359dependencies = [
4377 "bytes",4360 "bytes",
4378 "curve25519-dalek 3.2.0",4361 "curve25519-dalek 3.2.0",
4379 "futures 0.3.25",4362 "futures",
4380 "lazy_static",4363 "lazy_static",
4381 "libp2p-core",4364 "libp2p-core",
4382 "log",4365 "log",
4396source = "registry+https://github.com/rust-lang/crates.io-index"4379source = "registry+https://github.com/rust-lang/crates.io-index"
4397checksum = "7228b9318d34689521349a86eb39a3c3a802c9efc99a0568062ffb80913e3f91"4380checksum = "7228b9318d34689521349a86eb39a3c3a802c9efc99a0568062ffb80913e3f91"
4398dependencies = [4381dependencies = [
4399 "futures 0.3.25",4382 "futures",
4400 "futures-timer",4383 "futures-timer",
4401 "instant",4384 "instant",
4402 "libp2p-core",4385 "libp2p-core",
4414dependencies = [4397dependencies = [
4415 "async-trait",4398 "async-trait",
4416 "bytes",4399 "bytes",
4417 "futures 0.3.25",4400 "futures",
4418 "instant",4401 "instant",
4419 "libp2p-core",4402 "libp2p-core",
4420 "libp2p-swarm",4403 "libp2p-swarm",
4432dependencies = [4415dependencies = [
4433 "either",4416 "either",
4434 "fnv",4417 "fnv",
4435 "futures 0.3.25",4418 "futures",
4436 "futures-timer",4419 "futures-timer",
4437 "instant",4420 "instant",
4438 "libp2p-core",4421 "libp2p-core",
4461source = "registry+https://github.com/rust-lang/crates.io-index"4444source = "registry+https://github.com/rust-lang/crates.io-index"
4462checksum = "9839d96761491c6d3e238e70554b856956fca0ab60feb9de2cd08eed4473fa92"4445checksum = "9839d96761491c6d3e238e70554b856956fca0ab60feb9de2cd08eed4473fa92"
4463dependencies = [4446dependencies = [
4464 "futures 0.3.25",4447 "futures",
4465 "futures-timer",4448 "futures-timer",
4466 "if-watch",4449 "if-watch",
4467 "libc",4450 "libc",
4477source = "registry+https://github.com/rust-lang/crates.io-index"4460source = "registry+https://github.com/rust-lang/crates.io-index"
4478checksum = "a17b5b8e7a73e379e47b1b77f8a82c4721e97eca01abcd18e9cd91a23ca6ce97"4461checksum = "a17b5b8e7a73e379e47b1b77f8a82c4721e97eca01abcd18e9cd91a23ca6ce97"
4479dependencies = [4462dependencies = [
4480 "futures 0.3.25",4463 "futures",
4481 "js-sys",4464 "js-sys",
4482 "libp2p-core",4465 "libp2p-core",
4483 "parity-send-wrapper",4466 "parity-send-wrapper",
4492checksum = "3758ae6f89b2531a24b6d9f5776bda6a626b60a57600d7185d43dfa75ca5ecc4"4475checksum = "3758ae6f89b2531a24b6d9f5776bda6a626b60a57600d7185d43dfa75ca5ecc4"
4493dependencies = [4476dependencies = [
4494 "either",4477 "either",
4495 "futures 0.3.25",4478 "futures",
4496 "futures-rustls",4479 "futures-rustls",
4497 "libp2p-core",4480 "libp2p-core",
4498 "log",4481 "log",
4510source = "registry+https://github.com/rust-lang/crates.io-index"4493source = "registry+https://github.com/rust-lang/crates.io-index"
4511checksum = "0d6874d66543c4f7e26e3b8ca9a6bead351563a13ab4fafd43c7927f7c0d6c12"4494checksum = "0d6874d66543c4f7e26e3b8ca9a6bead351563a13ab4fafd43c7927f7c0d6c12"
4512dependencies = [4495dependencies = [
4513 "futures 0.3.25",4496 "futures",
4514 "libp2p-core",4497 "libp2p-core",
4515 "log",4498 "log",
4516 "parking_lot 0.12.1",4499 "parking_lot 0.12.1",
4540checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1"4523checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1"
4541dependencies = [4524dependencies = [
4542 "arrayref",4525 "arrayref",
4543 "base64",4526 "base64 0.13.1",
4544 "digest 0.9.0",4527 "digest 0.9.0",
4545 "hmac-drbg",4528 "hmac-drbg",
4546 "libsecp256k1-core",4529 "libsecp256k1-core",
4757source = "registry+https://github.com/rust-lang/crates.io-index"4740source = "registry+https://github.com/rust-lang/crates.io-index"
4758checksum = "b20a59d985586e4a5aef64564ac77299f8586d8be6cf9106a5a40207e8908efb"4741checksum = "b20a59d985586e4a5aef64564ac77299f8586d8be6cf9106a5a40207e8908efb"
4759dependencies = [4742dependencies = [
4760 "rustix 0.36.5",4743 "rustix 0.36.7",
4761]4744]
47624745
4763[[package]]4746[[package]]
4821source = "registry+https://github.com/rust-lang/crates.io-index"4804source = "registry+https://github.com/rust-lang/crates.io-index"
4822checksum = "69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532"4805checksum = "69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532"
4823dependencies = [4806dependencies = [
4824 "futures 0.3.25",4807 "futures",
4825 "rand 0.8.5",4808 "rand 0.8.5",
4826 "thrift",4809 "thrift",
4827]4810]
4858version = "4.0.0-dev"4841version = "4.0.0-dev"
4859source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"4842source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
4860dependencies = [4843dependencies = [
4861 "futures 0.3.25",4844 "futures",
4862 "log",4845 "log",
4863 "parity-scale-codec 3.2.1",4846 "parity-scale-codec",
4864 "sc-client-api",4847 "sc-client-api",
4865 "sc-offchain",4848 "sc-offchain",
4866 "sp-api",4849 "sp-api",
4880dependencies = [4863dependencies = [
4881 "anyhow",4864 "anyhow",
4882 "jsonrpsee",4865 "jsonrpsee",
4883 "parity-scale-codec 3.2.1",4866 "parity-scale-codec",
4884 "serde",4867 "serde",
4885 "sp-api",4868 "sp-api",
4886 "sp-blockchain",4869 "sp-blockchain",
4989checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a"4972checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a"
4990dependencies = [4973dependencies = [
4991 "bytes",4974 "bytes",
4992 "futures 0.3.25",4975 "futures",
4993 "log",4976 "log",
4994 "pin-project",4977 "pin-project",
4995 "smallvec",4978 "smallvec",
5085checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6"5068checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6"
5086dependencies = [5069dependencies = [
5087 "bytes",5070 "bytes",
5088 "futures 0.3.25",5071 "futures",
5089 "log",5072 "log",
5090 "netlink-packet-core",5073 "netlink-packet-core",
5091 "netlink-sys",5074 "netlink-sys",
5101dependencies = [5084dependencies = [
5102 "async-io",5085 "async-io",
5103 "bytes",5086 "bytes",
5104 "futures 0.3.25",5087 "futures",
5105 "libc",5088 "libc",
5106 "log",5089 "log",
5107]5090]
51255108
5126[[package]]5109[[package]]
5127name = "nom"5110name = "nom"
5128version = "7.1.1"5111version = "7.1.3"
5129source = "registry+https://github.com/rust-lang/crates.io-index"5112source = "registry+https://github.com/rust-lang/crates.io-index"
5130checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"5113checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
5131dependencies = [5114dependencies = [
5132 "memchr",5115 "memchr",
5133 "minimal-lexical",5116 "minimal-lexical",
5139source = "registry+https://github.com/rust-lang/crates.io-index"5122source = "registry+https://github.com/rust-lang/crates.io-index"
5140checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"5123checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
5141
5142[[package]]
5143name = "nu-ansi-term"
5144version = "0.46.0"
5145source = "registry+https://github.com/rust-lang/crates.io-index"
5146checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
5147dependencies = [
5148 "overload",
5149 "winapi",
5150]
51515124
5152[[package]]5125[[package]]
5153name = "num-bigint"5126name = "num-bigint"
52565229
5257[[package]]5230[[package]]
5258name = "object"5231name = "object"
5259version = "0.30.0"5232version = "0.30.2"
5260source = "registry+https://github.com/rust-lang/crates.io-index"5233source = "registry+https://github.com/rust-lang/crates.io-index"
5261checksum = "239da7f290cfa979f43f85a8efeee9a8a76d0827c356d37f9d3d7254d6b537fb"5234checksum = "2b8c786513eb403643f2a88c244c2aaa270ef2153f55094587d0c48a3cf22a83"
5262dependencies = [5235dependencies = [
5263 "memchr",5236 "memchr",
5264]5237]
52655238
5266[[package]]5239[[package]]
5267name = "once_cell"5240name = "once_cell"
5268version = "1.16.0"5241version = "1.17.0"
5269source = "registry+https://github.com/rust-lang/crates.io-index"5242source = "registry+https://github.com/rust-lang/crates.io-index"
5270checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"5243checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
52715244
5272[[package]]5245[[package]]
5273name = "opal-runtime"5246name = "opal-runtime"
5342 "pallet-unique-scheduler-v2",5315 "pallet-unique-scheduler-v2",
5343 "pallet-xcm",5316 "pallet-xcm",
5344 "parachain-info",5317 "parachain-info",
5345 "parity-scale-codec 3.2.1",5318 "parity-scale-codec",
5346 "polkadot-parachain",5319 "polkadot-parachain",
5347 "precompile-utils-macro",5320 "precompile-utils-macro",
5348 "rmrk-rpc",5321 "rmrk-rpc",
5399dependencies = [5372dependencies = [
5400 "async-trait",5373 "async-trait",
5401 "dyn-clonable",5374 "dyn-clonable",
5402 "futures 0.3.25",5375 "futures",
5403 "futures-timer",5376 "futures-timer",
5404 "orchestra-proc-macro",5377 "orchestra-proc-macro",
5405 "pin-project",5378 "pin-project",
5440 "frame-support",5413 "frame-support",
5441 "frame-system",5414 "frame-system",
5442 "orml-traits",5415 "orml-traits",
5443 "parity-scale-codec 3.2.1",5416 "parity-scale-codec",
5444 "scale-info",5417 "scale-info",
5445 "serde",5418 "serde",
5446 "sp-runtime",5419 "sp-runtime",
5456 "impl-trait-for-tuples",5429 "impl-trait-for-tuples",
5457 "num-traits",5430 "num-traits",
5458 "orml-utilities",5431 "orml-utilities",
5459 "parity-scale-codec 3.2.1",5432 "parity-scale-codec",
5460 "scale-info",5433 "scale-info",
5461 "serde",5434 "serde",
5462 "sp-io",5435 "sp-io",
5471source = "git+https://github.com/uniquenetwork/open-runtime-module-library?branch=feature/polkadot-v0.9.36#3f70b9adb6c0599db7b8688abb49d0d459634b68"5444source = "git+https://github.com/uniquenetwork/open-runtime-module-library?branch=feature/polkadot-v0.9.36#3f70b9adb6c0599db7b8688abb49d0d459634b68"
5472dependencies = [5445dependencies = [
5473 "frame-support",5446 "frame-support",
5474 "parity-scale-codec 3.2.1",5447 "parity-scale-codec",
5475 "scale-info",5448 "scale-info",
5476 "serde",5449 "serde",
5477 "sp-io",5450 "sp-io",
5486dependencies = [5459dependencies = [
5487 "frame-support",5460 "frame-support",
5488 "frame-system",5461 "frame-system",
5489 "parity-scale-codec 3.2.1",5462 "parity-scale-codec",
5490 "scale-info",5463 "scale-info",
5491 "serde",5464 "serde",
5492 "sp-io",5465 "sp-io",
5501dependencies = [5474dependencies = [
5502 "frame-support",5475 "frame-support",
5503 "orml-traits",5476 "orml-traits",
5504 "parity-scale-codec 3.2.1",5477 "parity-scale-codec",
5505 "sp-runtime",5478 "sp-runtime",
5506 "sp-std",5479 "sp-std",
5507 "xcm",5480 "xcm",
5519 "orml-traits",5492 "orml-traits",
5520 "orml-xcm-support",5493 "orml-xcm-support",
5521 "pallet-xcm",5494 "pallet-xcm",
5522 "parity-scale-codec 3.2.1",5495 "parity-scale-codec",
5523 "scale-info",5496 "scale-info",
5524 "serde",5497 "serde",
5525 "sp-io",5498 "sp-io",
5535source = "registry+https://github.com/rust-lang/crates.io-index"5508source = "registry+https://github.com/rust-lang/crates.io-index"
5536checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"5509checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
5537
5538[[package]]
5539name = "overload"
5540version = "0.1.1"
5541source = "registry+https://github.com/rust-lang/crates.io-index"
5542checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
55435510
5544[[package]]5511[[package]]
5545name = "packed_simd_2"5512name = "packed_simd_2"
5564 "pallet-evm",5531 "pallet-evm",
5565 "pallet-evm-contract-helpers",5532 "pallet-evm-contract-helpers",
5566 "pallet-evm-migration",5533 "pallet-evm-migration",
5567 "pallet-randomness-collective-flip",
5568 "pallet-timestamp",
5569 "pallet-unique",5534 "pallet-unique",
5570 "parity-scale-codec 3.2.1",5535 "parity-scale-codec",
5571 "scale-info",5536 "scale-info",
5572 "serde",
5573 "sp-core",5537 "sp-core",
5574 "sp-io",
5575 "sp-runtime",5538 "sp-runtime",
5576 "sp-std",5539 "sp-std",
5577 "up-data-structs",5540 "up-data-structs",
5585 "frame-support",5548 "frame-support",
5586 "frame-system",5549 "frame-system",
5587 "pallet-timestamp",5550 "pallet-timestamp",
5588 "parity-scale-codec 3.2.1",5551 "parity-scale-codec",
5589 "scale-info",5552 "scale-info",
5590 "sp-application-crypto",5553 "sp-application-crypto",
5591 "sp-consensus-aura",5554 "sp-consensus-aura",
5601 "frame-support",5564 "frame-support",
5602 "frame-system",5565 "frame-system",
5603 "pallet-session",5566 "pallet-session",
5604 "parity-scale-codec 3.2.1",5567 "parity-scale-codec",
5605 "scale-info",5568 "scale-info",
5606 "sp-application-crypto",5569 "sp-application-crypto",
5607 "sp-authority-discovery",5570 "sp-authority-discovery",
5617 "frame-support",5580 "frame-support",
5618 "frame-system",5581 "frame-system",
5619 "impl-trait-for-tuples",5582 "impl-trait-for-tuples",
5620 "parity-scale-codec 3.2.1",5583 "parity-scale-codec",
5621 "scale-info",5584 "scale-info",
5622 "sp-authorship",5585 "sp-authorship",
5623 "sp-runtime",5586 "sp-runtime",
5636 "pallet-authorship",5599 "pallet-authorship",
5637 "pallet-session",5600 "pallet-session",
5638 "pallet-timestamp",5601 "pallet-timestamp",
5639 "parity-scale-codec 3.2.1",5602 "parity-scale-codec",
5640 "scale-info",5603 "scale-info",
5641 "sp-application-crypto",5604 "sp-application-crypto",
5642 "sp-consensus-babe",5605 "sp-consensus-babe",
5659 "frame-system",5622 "frame-system",
5660 "log",5623 "log",
5661 "pallet-balances",5624 "pallet-balances",
5662 "parity-scale-codec 3.2.1",5625 "parity-scale-codec",
5663 "scale-info",5626 "scale-info",
5664 "sp-core",5627 "sp-core",
5665 "sp-io",5628 "sp-io",
5677 "frame-support",5640 "frame-support",
5678 "frame-system",5641 "frame-system",
5679 "log",5642 "log",
5680 "parity-scale-codec 3.2.1",5643 "parity-scale-codec",
5681 "scale-info",5644 "scale-info",
5682 "sp-runtime",5645 "sp-runtime",
5683 "sp-std",5646 "sp-std",
5691 "fp-evm",5654 "fp-evm",
5692 "frame-support",5655 "frame-support",
5693 "frame-system",5656 "frame-system",
5694 "parity-scale-codec 3.2.1",5657 "parity-scale-codec",
5695 "scale-info",5658 "scale-info",
5696 "serde",5659 "serde",
5697 "sp-core",5660 "sp-core",
5706 "frame-support",5669 "frame-support",
5707 "frame-system",5670 "frame-system",
5708 "pallet-session",5671 "pallet-session",
5709 "parity-scale-codec 3.2.1",5672 "parity-scale-codec",
5710 "scale-info",5673 "scale-info",
5711 "serde",5674 "serde",
5712 "sp-beefy",5675 "sp-beefy",
5727 "pallet-beefy",5690 "pallet-beefy",
5728 "pallet-mmr",5691 "pallet-mmr",
5729 "pallet-session",5692 "pallet-session",
5730 "parity-scale-codec 3.2.1",5693 "parity-scale-codec",
5731 "scale-info",5694 "scale-info",
5732 "serde",5695 "serde",
5733 "sp-beefy",5696 "sp-beefy",
5747 "frame-system",5710 "frame-system",
5748 "log",5711 "log",
5749 "pallet-treasury",5712 "pallet-treasury",
5750 "parity-scale-codec 3.2.1",5713 "parity-scale-codec",
5751 "scale-info",5714 "scale-info",
5752 "sp-core",5715 "sp-core",
5753 "sp-io",5716 "sp-io",
5766 "log",5729 "log",
5767 "pallet-bounties",5730 "pallet-bounties",
5768 "pallet-treasury",5731 "pallet-treasury",
5769 "parity-scale-codec 3.2.1",5732 "parity-scale-codec",
5770 "scale-info",5733 "scale-info",
5771 "sp-core",5734 "sp-core",
5772 "sp-io",5735 "sp-io",
5788 "pallet-configuration",5751 "pallet-configuration",
5789 "pallet-session",5752 "pallet-session",
5790 "pallet-timestamp",5753 "pallet-timestamp",
5791 "parity-scale-codec 3.2.1",5754 "parity-scale-codec",
5792 "rand 0.8.5",5755 "rand 0.8.5",
5793 "scale-info",5756 "scale-info",
5794 "serde",5757 "serde",
5810 "frame-support",5773 "frame-support",
5811 "frame-system",5774 "frame-system",
5812 "log",5775 "log",
5813 "parity-scale-codec 3.2.1",5776 "parity-scale-codec",
5814 "scale-info",5777 "scale-info",
5815 "sp-core",5778 "sp-core",
5816 "sp-io",5779 "sp-io",
5824dependencies = [5787dependencies = [
5825 "ethereum 0.14.0",5788 "ethereum 0.14.0",
5826 "evm-coder",5789 "evm-coder",
5827 "fp-evm-mapping",
5828 "frame-benchmarking",5790 "frame-benchmarking",
5829 "frame-support",5791 "frame-support",
5830 "frame-system",5792 "frame-system",
5831 "pallet-evm",5793 "pallet-evm",
5832 "pallet-evm-coder-substrate",5794 "pallet-evm-coder-substrate",
5833 "parity-scale-codec 3.2.1",5795 "parity-scale-codec",
5834 "scale-info",5796 "scale-info",
5835 "serde",
5836 "sp-core",5797 "sp-core",
5837 "sp-runtime",5798 "sp-runtime",
5838 "sp-std",5799 "sp-std",
5848 "frame-benchmarking",5809 "frame-benchmarking",
5849 "frame-support",5810 "frame-support",
5850 "frame-system",5811 "frame-system",
5851 "parity-scale-codec 3.2.1",5812 "parity-scale-codec",
5852 "scale-info",5813 "scale-info",
5853 "smallvec",5814 "smallvec",
5854 "sp-arithmetic",5815 "sp-arithmetic",
5855 "sp-core",5816 "sp-core",
5856 "sp-runtime",
5857 "sp-std",5817 "sp-std",
5858 "xcm",5818 "xcm",
5859]5819]
5867 "frame-benchmarking",5827 "frame-benchmarking",
5868 "frame-support",5828 "frame-support",
5869 "frame-system",5829 "frame-system",
5870 "parity-scale-codec 3.2.1",5830 "parity-scale-codec",
5871 "scale-info",5831 "scale-info",
5872 "serde",5832 "serde",
5873 "sp-io",5833 "sp-io",
5884 "frame-support",5844 "frame-support",
5885 "frame-system",5845 "frame-system",
5886 "log",5846 "log",
5887 "parity-scale-codec 3.2.1",5847 "parity-scale-codec",
5888 "scale-info",5848 "scale-info",
5889 "serde",5849 "serde",
5890 "sp-core",5850 "sp-core",
5904 "frame-system",5864 "frame-system",
5905 "log",5865 "log",
5906 "pallet-election-provider-support-benchmarking",5866 "pallet-election-provider-support-benchmarking",
5907 "parity-scale-codec 3.2.1",5867 "parity-scale-codec",
5908 "rand 0.7.3",5868 "rand 0.7.3",
5909 "scale-info",5869 "scale-info",
5910 "sp-arithmetic",5870 "sp-arithmetic",
5925 "frame-benchmarking",5885 "frame-benchmarking",
5926 "frame-election-provider-support",5886 "frame-election-provider-support",
5927 "frame-system",5887 "frame-system",
5928 "parity-scale-codec 3.2.1",5888 "parity-scale-codec",
5929 "sp-npos-elections",5889 "sp-npos-elections",
5930 "sp-runtime",5890 "sp-runtime",
5931]5891]
5939 "frame-support",5899 "frame-support",
5940 "frame-system",5900 "frame-system",
5941 "log",5901 "log",
5942 "parity-scale-codec 3.2.1",5902 "parity-scale-codec",
5943 "scale-info",5903 "scale-info",
5944 "sp-core",5904 "sp-core",
5945 "sp-io",5905 "sp-io",
5967 "frame-system",5927 "frame-system",
5968 "pallet-evm",5928 "pallet-evm",
5969 "pallet-timestamp",5929 "pallet-timestamp",
5970 "parity-scale-codec 3.2.1",5930 "parity-scale-codec",
5971 "rlp",5931 "rlp",
5972 "scale-info",5932 "scale-info",
5973 "serde",5933 "serde",
5992 "impl-trait-for-tuples",5952 "impl-trait-for-tuples",
5993 "log",5953 "log",
5994 "pallet-timestamp",5954 "pallet-timestamp",
5995 "parity-scale-codec 3.2.1",5955 "parity-scale-codec",
5996 "primitive-types 0.12.1",5956 "primitive-types 0.12.1",
5997 "rlp",5957 "rlp",
5998 "scale-info",5958 "scale-info",
6007name = "pallet-evm-coder-substrate"5967name = "pallet-evm-coder-substrate"
6008version = "0.1.3"5968version = "0.1.3"
6009dependencies = [5969dependencies = [
6010 "ethereum 0.14.0",
6011 "evm-coder",5970 "evm-coder",
6012 "frame-benchmarking",5971 "frame-benchmarking",
6013 "frame-support",5972 "frame-support",
6014 "frame-system",5973 "frame-system",
6015 "pallet-ethereum",
6016 "pallet-evm",5974 "pallet-evm",
6017 "parity-scale-codec 3.2.1",5975 "parity-scale-codec",
6018 "scale-info",5976 "scale-info",
6019 "sp-core",5977 "sp-core",
6020 "sp-std",5978 "sp-std",
6025name = "pallet-evm-contract-helpers"5983name = "pallet-evm-contract-helpers"
6026version = "0.3.0"5984version = "0.3.0"
6027dependencies = [5985dependencies = [
6028 "ethereum 0.14.0",
6029 "evm-coder",5986 "evm-coder",
6030 "fp-evm-mapping",
6031 "frame-support",5987 "frame-support",
6032 "frame-system",5988 "frame-system",
6033 "log",
6034 "pallet-common",5989 "pallet-common",
6035 "pallet-evm",5990 "pallet-evm",
6036 "pallet-evm-coder-substrate",5991 "pallet-evm-coder-substrate",
6037 "pallet-evm-transaction-payment",5992 "pallet-evm-transaction-payment",
6038 "parity-scale-codec 3.2.1",5993 "parity-scale-codec",
6039 "scale-info",5994 "scale-info",
6040 "sp-core",5995 "sp-core",
6041 "sp-runtime",
6042 "sp-std",5996 "sp-std",
6043 "up-data-structs",5997 "up-data-structs",
6044 "up-sponsorship",5998 "up-sponsorship",
6049version = "0.1.1"6003version = "0.1.1"
6050dependencies = [6004dependencies = [
6051 "ethereum 0.14.0",6005 "ethereum 0.14.0",
6052 "fp-evm",
6053 "frame-benchmarking",6006 "frame-benchmarking",
6054 "frame-support",6007 "frame-support",
6055 "frame-system",6008 "frame-system",
6056 "pallet-evm",6009 "pallet-evm",
6057 "parity-scale-codec 3.2.1",6010 "parity-scale-codec",
6058 "scale-info",6011 "scale-info",
6059 "sp-core",6012 "sp-core",
6060 "sp-io",
6061 "sp-runtime",
6062 "sp-std",6013 "sp-std",
6063]6014]
60646015
6077version = "0.1.1"6028version = "0.1.1"
6078dependencies = [6029dependencies = [
6079 "fp-evm",6030 "fp-evm",
6080 "fp-evm-mapping",
6081 "frame-support",6031 "frame-support",
6082 "frame-system",6032 "frame-system",
6083 "pallet-ethereum",
6084 "pallet-evm",6033 "pallet-evm",
6085 "parity-scale-codec 3.2.1",6034 "parity-scale-codec",
6086 "scale-info",6035 "scale-info",
6087 "sp-core",6036 "sp-core",
6088 "sp-io",
6089 "sp-runtime",6037 "sp-runtime",
6090 "sp-std",6038 "sp-std",
6091 "up-sponsorship",6039 "up-sponsorship",
6101 "frame-support",6049 "frame-support",
6102 "frame-system",6050 "frame-system",
6103 "log",6051 "log",
6104 "parity-scale-codec 3.2.1",6052 "parity-scale-codec",
6105 "scale-info",6053 "scale-info",
6106 "sp-io",6054 "sp-io",
6107 "sp-runtime",6055 "sp-runtime",
6123 "pallet-common",6071 "pallet-common",
6124 "pallet-fungible",6072 "pallet-fungible",
6125 "pallet-timestamp",6073 "pallet-timestamp",
6126 "parity-scale-codec 3.2.1",6074 "parity-scale-codec",
6127 "scale-info",6075 "scale-info",
6128 "serde",6076 "serde",
6129 "serde_json",6077 "serde_json",
6133 "sp-std",6081 "sp-std",
6134 "up-data-structs",6082 "up-data-structs",
6135 "xcm",6083 "xcm",
6136 "xcm-builder",
6137 "xcm-executor",6084 "xcm-executor",
6138]6085]
61396086
6140[[package]]6087[[package]]
6141name = "pallet-fungible"6088name = "pallet-fungible"
6142version = "0.1.9"6089version = "0.1.9"
6143dependencies = [6090dependencies = [
6144 "ethereum 0.14.0",
6145 "evm-coder",6091 "evm-coder",
6146 "frame-benchmarking",6092 "frame-benchmarking",
6147 "frame-support",6093 "frame-support",
6150 "pallet-evm",6096 "pallet-evm",
6151 "pallet-evm-coder-substrate",6097 "pallet-evm-coder-substrate",
6152 "pallet-structure",6098 "pallet-structure",
6153 "parity-scale-codec 3.2.1",6099 "parity-scale-codec",
6154 "scale-info",6100 "scale-info",
6155 "sp-core",6101 "sp-core",
6156 "sp-runtime",6102 "sp-runtime",
6169 "log",6115 "log",
6170 "pallet-authorship",6116 "pallet-authorship",
6171 "pallet-session",6117 "pallet-session",
6172 "parity-scale-codec 3.2.1",6118 "parity-scale-codec",
6173 "scale-info",6119 "scale-info",
6174 "sp-application-crypto",6120 "sp-application-crypto",
6175 "sp-core",6121 "sp-core",
6190 "frame-support",6136 "frame-support",
6191 "frame-system",6137 "frame-system",
6192 "pallet-balances",6138 "pallet-balances",
6193 "parity-scale-codec 3.2.1",6139 "parity-scale-codec",
6194 "scale-info",6140 "scale-info",
6195 "sp-core",6141 "sp-core",
6196 "sp-io",6142 "sp-io",
6207 "frame-benchmarking",6153 "frame-benchmarking",
6208 "frame-support",6154 "frame-support",
6209 "frame-system",6155 "frame-system",
6210 "parity-scale-codec 3.2.1",6156 "parity-scale-codec",
6211 "scale-info",6157 "scale-info",
6212 "sp-io",6158 "sp-io",
6213 "sp-runtime",6159 "sp-runtime",
6224 "frame-system",6170 "frame-system",
6225 "log",6171 "log",
6226 "pallet-authorship",6172 "pallet-authorship",
6227 "parity-scale-codec 3.2.1",6173 "parity-scale-codec",
6228 "scale-info",6174 "scale-info",
6229 "sp-application-crypto",6175 "sp-application-crypto",
6230 "sp-core",6176 "sp-core",
6242 "frame-benchmarking",6188 "frame-benchmarking",
6243 "frame-support",6189 "frame-support",
6244 "frame-system",6190 "frame-system",
6245 "parity-scale-codec 3.2.1",6191 "parity-scale-codec",
6246 "scale-info",6192 "scale-info",
6247 "sp-core",6193 "sp-core",
6248 "sp-io",6194 "sp-io",
6259 "frame-support",6205 "frame-support",
6260 "frame-system",6206 "frame-system",
6261 "pallet-balances",6207 "pallet-balances",
6262 "pallet-randomness-collective-flip",
6263 "pallet-timestamp",
6264 "parity-scale-codec 3.2.1",6208 "parity-scale-codec",
6265 "scale-info",6209 "scale-info",
6266 "serde",
6267 "sp-core",6210 "sp-core",
6268 "sp-io",6211 "sp-io",
6269 "sp-runtime",6212 "sp-runtime",
6277 "frame-benchmarking",6220 "frame-benchmarking",
6278 "frame-support",6221 "frame-support",
6279 "frame-system",6222 "frame-system",
6280 "parity-scale-codec 3.2.1",6223 "parity-scale-codec",
6281 "scale-info",6224 "scale-info",
6282 "sp-std",6225 "sp-std",
6283]6226]
6291 "frame-support",6234 "frame-support",
6292 "frame-system",6235 "frame-system",
6293 "log",6236 "log",
6294 "parity-scale-codec 3.2.1",6237 "parity-scale-codec",
6295 "scale-info",6238 "scale-info",
6296 "sp-core",6239 "sp-core",
6297 "sp-io",6240 "sp-io",
6307 "frame-benchmarking",6250 "frame-benchmarking",
6308 "frame-support",6251 "frame-support",
6309 "frame-system",6252 "frame-system",
6310 "parity-scale-codec 3.2.1",6253 "parity-scale-codec",
6311 "scale-info",6254 "scale-info",
6312 "sp-core",6255 "sp-core",
6313 "sp-io",6256 "sp-io",
6325 "frame-support",6268 "frame-support",
6326 "frame-system",6269 "frame-system",
6327 "log",6270 "log",
6328 "parity-scale-codec 3.2.1",6271 "parity-scale-codec",
6329 "scale-info",6272 "scale-info",
6330 "sp-io",6273 "sp-io",
6331 "sp-runtime",6274 "sp-runtime",
6340 "frame-benchmarking",6283 "frame-benchmarking",
6341 "frame-support",6284 "frame-support",
6342 "frame-system",6285 "frame-system",
6343 "parity-scale-codec 3.2.1",6286 "parity-scale-codec",
6344 "scale-info",6287 "scale-info",
6345 "sp-arithmetic",6288 "sp-arithmetic",
6346 "sp-core",6289 "sp-core",
6356 "frame-support",6299 "frame-support",
6357 "frame-system",6300 "frame-system",
6358 "log",6301 "log",
6359 "parity-scale-codec 3.2.1",6302 "parity-scale-codec",
6360 "scale-info",6303 "scale-info",
6361 "sp-core",6304 "sp-core",
6362 "sp-io",6305 "sp-io",
6377 "pallet-bags-list",6320 "pallet-bags-list",
6378 "pallet-nomination-pools",6321 "pallet-nomination-pools",
6379 "pallet-staking",6322 "pallet-staking",
6380 "parity-scale-codec 3.2.1",6323 "parity-scale-codec",
6381 "scale-info",6324 "scale-info",
6382 "sp-runtime",6325 "sp-runtime",
6383 "sp-runtime-interface",6326 "sp-runtime-interface",
6390version = "1.0.0-dev"6333version = "1.0.0-dev"
6391source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"6334source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
6392dependencies = [6335dependencies = [
6393 "parity-scale-codec 3.2.1",6336 "parity-scale-codec",
6394 "sp-api",6337 "sp-api",
6395 "sp-std",6338 "sp-std",
6396]6339]
6399name = "pallet-nonfungible"6342name = "pallet-nonfungible"
6400version = "0.1.12"6343version = "0.1.12"
6401dependencies = [6344dependencies = [
6402 "ethereum 0.14.0",
6403 "evm-coder",6345 "evm-coder",
6404 "frame-benchmarking",6346 "frame-benchmarking",
6405 "frame-support",6347 "frame-support",
6408 "pallet-evm",6350 "pallet-evm",
6409 "pallet-evm-coder-substrate",6351 "pallet-evm-coder-substrate",
6410 "pallet-structure",6352 "pallet-structure",
6411 "parity-scale-codec 3.2.1",6353 "parity-scale-codec",
6412 "scale-info",6354 "scale-info",
6413 "sp-core",6355 "sp-core",
6414 "sp-runtime",6356 "sp-runtime",
6426 "frame-system",6368 "frame-system",
6427 "log",6369 "log",
6428 "pallet-balances",6370 "pallet-balances",
6429 "parity-scale-codec 3.2.1",6371 "parity-scale-codec",
6430 "scale-info",6372 "scale-info",
6431 "serde",6373 "serde",
6432 "sp-runtime",6374 "sp-runtime",
6450 "pallet-offences",6392 "pallet-offences",
6451 "pallet-session",6393 "pallet-session",
6452 "pallet-staking",6394 "pallet-staking",
6453 "parity-scale-codec 3.2.1",6395 "parity-scale-codec",
6454 "scale-info",6396 "scale-info",
6455 "sp-runtime",6397 "sp-runtime",
6456 "sp-staking",6398 "sp-staking",
6466 "frame-support",6408 "frame-support",
6467 "frame-system",6409 "frame-system",
6468 "log",6410 "log",
6469 "parity-scale-codec 3.2.1",6411 "parity-scale-codec",
6470 "scale-info",6412 "scale-info",
6471 "sp-core",6413 "sp-core",
6472 "sp-io",6414 "sp-io",
6482 "frame-benchmarking",6424 "frame-benchmarking",
6483 "frame-support",6425 "frame-support",
6484 "frame-system",6426 "frame-system",
6485 "parity-scale-codec 3.2.1",6427 "parity-scale-codec",
6486 "scale-info",6428 "scale-info",
6487 "sp-io",6429 "sp-io",
6488 "sp-runtime",6430 "sp-runtime",
6496dependencies = [6438dependencies = [
6497 "frame-support",6439 "frame-support",
6498 "frame-system",6440 "frame-system",
6499 "parity-scale-codec 3.2.1",6441 "parity-scale-codec",
6500 "safe-mix",6442 "safe-mix",
6501 "scale-info",6443 "scale-info",
6502 "sp-runtime",6444 "sp-runtime",
6512 "frame-support",6454 "frame-support",
6513 "frame-system",6455 "frame-system",
6514 "log",6456 "log",
6515 "parity-scale-codec 3.2.1",6457 "parity-scale-codec",
6516 "scale-info",6458 "scale-info",
6517 "sp-arithmetic",6459 "sp-arithmetic",
6518 "sp-core",6460 "sp-core",
6529 "frame-benchmarking",6471 "frame-benchmarking",
6530 "frame-support",6472 "frame-support",
6531 "frame-system",6473 "frame-system",
6532 "parity-scale-codec 3.2.1",6474 "parity-scale-codec",
6533 "scale-info",6475 "scale-info",
6534 "sp-io",6476 "sp-io",
6535 "sp-runtime",6477 "sp-runtime",
6546 "frame-support",6488 "frame-support",
6547 "frame-system",6489 "frame-system",
6548 "log",6490 "log",
6549 "parity-scale-codec 3.2.1",6491 "parity-scale-codec",
6550 "scale-info",6492 "scale-info",
6551 "serde",6493 "serde",
6552 "sp-arithmetic",6494 "sp-arithmetic",
6559name = "pallet-refungible"6501name = "pallet-refungible"
6560version = "0.2.11"6502version = "0.2.11"
6561dependencies = [6503dependencies = [
6562 "derivative",
6563 "ethereum 0.14.0",
6564 "evm-coder",6504 "evm-coder",
6565 "frame-benchmarking",6505 "frame-benchmarking",
6566 "frame-support",6506 "frame-support",
6569 "pallet-evm",6509 "pallet-evm",
6570 "pallet-evm-coder-substrate",6510 "pallet-evm-coder-substrate",
6571 "pallet-structure",6511 "pallet-structure",
6572 "parity-scale-codec 3.2.1",6512 "parity-scale-codec",
6573 "scale-info",6513 "scale-info",
6574 "sp-core",6514 "sp-core",
6575 "sp-runtime",6515 "sp-runtime",
6576 "sp-std",6516 "sp-std",
6577 "struct-versioning",
6578 "up-data-structs",6517 "up-data-structs",
6579]6518]
65806519
6581[[package]]6520[[package]]
6582name = "pallet-rmrk-core"6521name = "pallet-rmrk-core"
6583version = "0.1.2"6522version = "0.1.2"
6584dependencies = [6523dependencies = [
6585 "derivative",
6586 "frame-benchmarking",6524 "frame-benchmarking",
6587 "frame-support",6525 "frame-support",
6588 "frame-system",6526 "frame-system",
6589 "pallet-common",6527 "pallet-common",
6590 "pallet-evm",6528 "pallet-evm",
6591 "pallet-nonfungible",6529 "pallet-nonfungible",
6592 "pallet-structure",6530 "pallet-structure",
6593 "parity-scale-codec 3.2.1",6531 "parity-scale-codec",
6594 "rmrk-traits",6532 "rmrk-traits",
6595 "scale-info",6533 "scale-info",
6596 "sp-core",
6597 "sp-runtime",6534 "sp-runtime",
6598 "sp-std",6535 "sp-std",
6599 "up-data-structs",6536 "up-data-structs",
6610 "pallet-evm",6547 "pallet-evm",
6611 "pallet-nonfungible",6548 "pallet-nonfungible",
6612 "pallet-rmrk-core",6549 "pallet-rmrk-core",
6613 "parity-scale-codec 3.2.1",6550 "parity-scale-codec",
6614 "rmrk-traits",
6615 "scale-info",6551 "scale-info",
6616 "sp-core",
6617 "sp-runtime",6552 "sp-runtime",
6618 "sp-std",6553 "sp-std",
6619 "up-data-structs",6554 "up-data-structs",
6628 "frame-support",6563 "frame-support",
6629 "frame-system",6564 "frame-system",
6630 "log",6565 "log",
6631 "parity-scale-codec 3.2.1",6566 "parity-scale-codec",
6632 "scale-info",6567 "scale-info",
6633 "sp-io",6568 "sp-io",
6634 "sp-runtime",6569 "sp-runtime",
6646 "impl-trait-for-tuples",6581 "impl-trait-for-tuples",
6647 "log",6582 "log",
6648 "pallet-timestamp",6583 "pallet-timestamp",
6649 "parity-scale-codec 3.2.1",6584 "parity-scale-codec",
6650 "scale-info",6585 "scale-info",
6651 "sp-core",6586 "sp-core",
6652 "sp-io",6587 "sp-io",
6680dependencies = [6615dependencies = [
6681 "frame-support",6616 "frame-support",
6682 "frame-system",6617 "frame-system",
6683 "parity-scale-codec 3.2.1",6618 "parity-scale-codec",
6684 "rand_chacha 0.2.2",6619 "rand_chacha 0.2.2",
6685 "scale-info",6620 "scale-info",
6686 "sp-runtime",6621 "sp-runtime",
6699 "log",6634 "log",
6700 "pallet-authorship",6635 "pallet-authorship",
6701 "pallet-session",6636 "pallet-session",
6702 "parity-scale-codec 3.2.1",6637 "parity-scale-codec",
6703 "rand_chacha 0.2.2",6638 "rand_chacha 0.2.2",
6704 "scale-info",6639 "scale-info",
6705 "serde",6640 "serde",
6739 "frame-support",6674 "frame-support",
6740 "frame-system",6675 "frame-system",
6741 "log",6676 "log",
6742 "parity-scale-codec 3.2.1",6677 "parity-scale-codec",
6743 "scale-info",6678 "scale-info",
6744 "sp-core",6679 "sp-core",
6745 "sp-io",6680 "sp-io",
6757 "log",6692 "log",
6758 "pallet-common",6693 "pallet-common",
6759 "pallet-evm",6694 "pallet-evm",
6760 "parity-scale-codec 3.2.1",6695 "parity-scale-codec",
6761 "scale-info",6696 "scale-info",
6762 "sp-std",6697 "sp-std",
6763 "up-data-structs",6698 "up-data-structs",
6770dependencies = [6705dependencies = [
6771 "frame-support",6706 "frame-support",
6772 "frame-system",6707 "frame-system",
6773 "parity-scale-codec 3.2.1",6708 "parity-scale-codec",
6774 "scale-info",6709 "scale-info",
6775 "sp-io",6710 "sp-io",
6776 "sp-runtime",6711 "sp-runtime",
6787 "frame-system",6722 "frame-system",
6788 "pallet-balances",6723 "pallet-balances",
6789 "pallet-transaction-payment",6724 "pallet-transaction-payment",
6790 "parity-scale-codec 3.2.1",6725 "parity-scale-codec",
6791 "scale-info",6726 "scale-info",
6792 "serde",6727 "serde",
6793 "sp-core",6728 "sp-core",
6804 "frame-support",6739 "frame-support",
6805 "frame-system",6740 "frame-system",
6806 "pallet-unique-scheduler-v2",6741 "pallet-unique-scheduler-v2",
6807 "parity-scale-codec 3.2.1",6742 "parity-scale-codec",
6808 "scale-info",6743 "scale-info",
6809 "sp-std",6744 "sp-std",
6810]6745]
6818 "frame-support",6753 "frame-support",
6819 "frame-system",6754 "frame-system",
6820 "log",6755 "log",
6821 "parity-scale-codec 3.2.1",6756 "parity-scale-codec",
6822 "scale-info",6757 "scale-info",
6823 "sp-inherents",6758 "sp-inherents",
6824 "sp-io",6759 "sp-io",
6837 "frame-system",6772 "frame-system",
6838 "log",6773 "log",
6839 "pallet-treasury",6774 "pallet-treasury",
6840 "parity-scale-codec 3.2.1",6775 "parity-scale-codec",
6841 "scale-info",6776 "scale-info",
6842 "serde",6777 "serde",
6843 "sp-core",6778 "sp-core",
6853dependencies = [6788dependencies = [
6854 "frame-support",6789 "frame-support",
6855 "frame-system",6790 "frame-system",
6856 "parity-scale-codec 3.2.1",6791 "parity-scale-codec",
6857 "scale-info",6792 "scale-info",
6858 "serde",6793 "serde",
6859 "sp-core",6794 "sp-core",
6869dependencies = [6804dependencies = [
6870 "jsonrpsee",6805 "jsonrpsee",
6871 "pallet-transaction-payment-rpc-runtime-api",6806 "pallet-transaction-payment-rpc-runtime-api",
6872 "parity-scale-codec 3.2.1",6807 "parity-scale-codec",
6873 "sp-api",6808 "sp-api",
6874 "sp-blockchain",6809 "sp-blockchain",
6875 "sp-core",6810 "sp-core",
6884source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"6819source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
6885dependencies = [6820dependencies = [
6886 "pallet-transaction-payment",6821 "pallet-transaction-payment",
6887 "parity-scale-codec 3.2.1",6822 "parity-scale-codec",
6888 "sp-api",6823 "sp-api",
6889 "sp-runtime",6824 "sp-runtime",
6890 "sp-weights",6825 "sp-weights",
6900 "frame-system",6835 "frame-system",
6901 "impl-trait-for-tuples",6836 "impl-trait-for-tuples",
6902 "pallet-balances",6837 "pallet-balances",
6903 "parity-scale-codec 3.2.1",6838 "parity-scale-codec",
6904 "scale-info",6839 "scale-info",
6905 "serde",6840 "serde",
6906 "sp-runtime",6841 "sp-runtime",
6921 "pallet-evm-coder-substrate",6856 "pallet-evm-coder-substrate",
6922 "pallet-nonfungible",6857 "pallet-nonfungible",
6923 "pallet-refungible",6858 "pallet-refungible",
6924 "parity-scale-codec 3.2.1",6859 "parity-scale-codec",
6925 "scale-info",6860 "scale-info",
6926 "serde",6861 "serde",
6927 "sp-core",6862 "sp-core",
6940 "frame-system",6875 "frame-system",
6941 "log",6876 "log",
6942 "pallet-preimage",6877 "pallet-preimage",
6943 "parity-scale-codec 3.2.1",6878 "parity-scale-codec",
6944 "scale-info",6879 "scale-info",
6945 "sp-core",6880 "sp-core",
6946 "sp-io",6881 "sp-io",
6957 "frame-benchmarking",6892 "frame-benchmarking",
6958 "frame-support",6893 "frame-support",
6959 "frame-system",6894 "frame-system",
6960 "parity-scale-codec 3.2.1",6895 "parity-scale-codec",
6961 "scale-info",6896 "scale-info",
6962 "sp-core",6897 "sp-core",
6963 "sp-io",6898 "sp-io",
6974 "frame-support",6909 "frame-support",
6975 "frame-system",6910 "frame-system",
6976 "log",6911 "log",
6977 "parity-scale-codec 3.2.1",6912 "parity-scale-codec",
6978 "scale-info",6913 "scale-info",
6979 "sp-runtime",6914 "sp-runtime",
6980 "sp-std",6915 "sp-std",
6988 "frame-benchmarking",6923 "frame-benchmarking",
6989 "frame-support",6924 "frame-support",
6990 "frame-system",6925 "frame-system",
6991 "parity-scale-codec 3.2.1",6926 "parity-scale-codec",
6992 "scale-info",6927 "scale-info",
6993 "sp-api",6928 "sp-api",
6994 "sp-runtime",6929 "sp-runtime",
7003 "frame-support",6938 "frame-support",
7004 "frame-system",6939 "frame-system",
7005 "log",6940 "log",
7006 "parity-scale-codec 3.2.1",6941 "parity-scale-codec",
7007 "scale-info",6942 "scale-info",
7008 "serde",6943 "serde",
7009 "sp-core",6944 "sp-core",
7022 "frame-support",6957 "frame-support",
7023 "frame-system",6958 "frame-system",
7024 "log",6959 "log",
7025 "parity-scale-codec 3.2.1",6960 "parity-scale-codec",
7026 "scale-info",6961 "scale-info",
7027 "sp-runtime",6962 "sp-runtime",
7028 "sp-std",6963 "sp-std",
7038 "cumulus-primitives-core",6973 "cumulus-primitives-core",
7039 "frame-support",6974 "frame-support",
7040 "frame-system",6975 "frame-system",
7041 "parity-scale-codec 3.2.1",6976 "parity-scale-codec",
7042 "scale-info",6977 "scale-info",
7043]6978]
70446979
7061 "snap",6996 "snap",
7062]6997]
7063
7064[[package]]
7065name = "parity-scale-codec"
7066version = "2.3.1"
7067source = "registry+https://github.com/rust-lang/crates.io-index"
7068checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909"
7069dependencies = [
7070 "arrayvec 0.7.2",
7071 "bitvec 0.20.4",
7072 "byte-slice-cast",
7073 "impl-trait-for-tuples",
7074 "parity-scale-codec-derive 2.3.1",
7075 "serde",
7076]
70776998
7078[[package]]6999[[package]]
7079name = "parity-scale-codec"7000name = "parity-scale-codec"
7080version = "3.2.1"7001version = "3.2.2"
7081source = "registry+https://github.com/rust-lang/crates.io-index"7002source = "registry+https://github.com/rust-lang/crates.io-index"
7082checksum = "366e44391a8af4cfd6002ef6ba072bae071a96aafca98d7d448a34c5dca38b6a"7003checksum = "e7ab01d0f889e957861bc65888d5ccbe82c158d0270136ba46820d43837cdf72"
7083dependencies = [7004dependencies = [
7084 "arrayvec 0.7.2",7005 "arrayvec 0.7.2",
7085 "bitvec 1.0.1",7006 "bitvec",
7086 "byte-slice-cast",7007 "byte-slice-cast",
7087 "bytes",7008 "bytes",
7088 "impl-trait-for-tuples",7009 "impl-trait-for-tuples",
7089 "parity-scale-codec-derive 3.1.3",7010 "parity-scale-codec-derive",
7090 "serde",7011 "serde",
7091]7012]
7092
7093[[package]]
7094name = "parity-scale-codec-derive"
7095version = "2.3.1"
7096source = "registry+https://github.com/rust-lang/crates.io-index"
7097checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27"
7098dependencies = [
7099 "proc-macro-crate",
7100 "proc-macro2",
7101 "quote",
7102 "syn",
7103]
71047013
7105[[package]]7014[[package]]
7106name = "parity-scale-codec-derive"7015name = "parity-scale-codec-derive"
7107version = "3.1.3"7016version = "3.1.4"
7108source = "registry+https://github.com/rust-lang/crates.io-index"7017source = "registry+https://github.com/rust-lang/crates.io-index"
7109checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd"7018checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b"
7110dependencies = [7019dependencies = [
7111 "proc-macro-crate",7020 "proc-macro-crate",
7112 "proc-macro2",7021 "proc-macro2",
7150checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"7059checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
7151dependencies = [7060dependencies = [
7152 "lock_api",7061 "lock_api",
7153 "parking_lot_core 0.9.5",7062 "parking_lot_core 0.9.6",
7154]7063]
71557064
7156[[package]]7065[[package]]
71697078
7170[[package]]7079[[package]]
7171name = "parking_lot_core"7080name = "parking_lot_core"
7172version = "0.9.5"7081version = "0.9.6"
7173source = "registry+https://github.com/rust-lang/crates.io-index"7082source = "registry+https://github.com/rust-lang/crates.io-index"
7174checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba"7083checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf"
7175dependencies = [7084dependencies = [
7176 "cfg-if",7085 "cfg-if",
7177 "libc",7086 "libc",
72187127
7219[[package]]7128[[package]]
7220name = "pest"7129name = "pest"
7221version = "2.5.1"7130version = "2.5.3"
7222source = "registry+https://github.com/rust-lang/crates.io-index"7131source = "registry+https://github.com/rust-lang/crates.io-index"
7223checksum = "cc8bed3549e0f9b0a2a78bf7c0018237a2cdf085eecbbc048e52612438e4e9d0"7132checksum = "4257b4a04d91f7e9e6290be5d3da4804dd5784fafde3a497d73eb2b4a158c30a"
7224dependencies = [7133dependencies = [
7225 "thiserror",7134 "thiserror",
7226 "ucd-trie",7135 "ucd-trie",
7227]7136]
72287137
7229[[package]]7138[[package]]
7230name = "pest_derive"7139name = "pest_derive"
7231version = "2.5.1"7140version = "2.5.3"
7232source = "registry+https://github.com/rust-lang/crates.io-index"7141source = "registry+https://github.com/rust-lang/crates.io-index"
7233checksum = "cdc078600d06ff90d4ed238f0119d84ab5d43dbaad278b0e33a8820293b32344"7142checksum = "241cda393b0cdd65e62e07e12454f1f25d57017dcc514b1514cd3c4645e3a0a6"
7234dependencies = [7143dependencies = [
7235 "pest",7144 "pest",
7236 "pest_generator",7145 "pest_generator",
7237]7146]
72387147
7239[[package]]7148[[package]]
7240name = "pest_generator"7149name = "pest_generator"
7241version = "2.5.1"7150version = "2.5.3"
7242source = "registry+https://github.com/rust-lang/crates.io-index"7151source = "registry+https://github.com/rust-lang/crates.io-index"
7243checksum = "28a1af60b1c4148bb269006a750cff8e2ea36aff34d2d96cf7be0b14d1bed23c"7152checksum = "46b53634d8c8196302953c74d5352f33d0c512a9499bd2ce468fc9f4128fa27c"
7244dependencies = [7153dependencies = [
7245 "pest",7154 "pest",
7246 "pest_meta",7155 "pest_meta",
72517160
7252[[package]]7161[[package]]
7253name = "pest_meta"7162name = "pest_meta"
7254version = "2.5.1"7163version = "2.5.3"
7255source = "registry+https://github.com/rust-lang/crates.io-index"7164source = "registry+https://github.com/rust-lang/crates.io-index"
7256checksum = "fec8605d59fc2ae0c6c1aefc0c7c7a9769732017c0ce07f7a9cfffa7b4404f20"7165checksum = "0ef4f1332a8d4678b41966bb4cc1d0676880e84183a1ecc3f4b69f03e99c7a51"
7257dependencies = [7166dependencies = [
7258 "once_cell",7167 "once_cell",
7259 "pest",7168 "pest",
7260 "sha1",7169 "sha2 0.10.6",
7261]7170]
72627171
7263[[package]]7172[[package]]
7341version = "0.9.36"7250version = "0.9.36"
7342source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7251source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7343dependencies = [7252dependencies = [
7344 "futures 0.3.25",7253 "futures",
7345 "polkadot-node-network-protocol",7254 "polkadot-node-network-protocol",
7346 "polkadot-node-primitives",7255 "polkadot-node-primitives",
7347 "polkadot-node-subsystem",7256 "polkadot-node-subsystem",
7356version = "0.9.36"7265version = "0.9.36"
7357source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7266source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7358dependencies = [7267dependencies = [
7359 "futures 0.3.25",7268 "futures",
7360 "polkadot-node-network-protocol",7269 "polkadot-node-network-protocol",
7361 "polkadot-node-subsystem",7270 "polkadot-node-subsystem",
7362 "polkadot-node-subsystem-util",7271 "polkadot-node-subsystem-util",
7372dependencies = [7281dependencies = [
7373 "derive_more",7282 "derive_more",
7374 "fatality",7283 "fatality",
7375 "futures 0.3.25",7284 "futures",
7376 "lru",7285 "lru",
7377 "parity-scale-codec 3.2.1",7286 "parity-scale-codec",
7378 "polkadot-erasure-coding",7287 "polkadot-erasure-coding",
7379 "polkadot-node-network-protocol",7288 "polkadot-node-network-protocol",
7380 "polkadot-node-primitives",7289 "polkadot-node-primitives",
7394source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7303source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7395dependencies = [7304dependencies = [
7396 "fatality",7305 "fatality",
7397 "futures 0.3.25",7306 "futures",
7398 "lru",7307 "lru",
7399 "parity-scale-codec 3.2.1",7308 "parity-scale-codec",
7400 "polkadot-erasure-coding",7309 "polkadot-erasure-coding",
7401 "polkadot-node-network-protocol",7310 "polkadot-node-network-protocol",
7402 "polkadot-node-primitives",7311 "polkadot-node-primitives",
7416dependencies = [7325dependencies = [
7417 "clap",7326 "clap",
7418 "frame-benchmarking-cli",7327 "frame-benchmarking-cli",
7419 "futures 0.3.25",7328 "futures",
7420 "log",7329 "log",
7421 "polkadot-client",7330 "polkadot-client",
7422 "polkadot-node-core-pvf",7331 "polkadot-node-core-pvf",
7446 "frame-benchmarking-cli",7355 "frame-benchmarking-cli",
7447 "frame-system",7356 "frame-system",
7448 "frame-system-rpc-runtime-api",7357 "frame-system-rpc-runtime-api",
7449 "futures 0.3.25",7358 "futures",
7450 "pallet-transaction-payment",7359 "pallet-transaction-payment",
7451 "pallet-transaction-payment-rpc-runtime-api",7360 "pallet-transaction-payment-rpc-runtime-api",
7452 "polkadot-core-primitives",7361 "polkadot-core-primitives",
7484source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7393source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7485dependencies = [7394dependencies = [
7486 "always-assert",7395 "always-assert",
7487 "bitvec 1.0.1",7396 "bitvec",
7488 "fatality",7397 "fatality",
7489 "futures 0.3.25",7398 "futures",
7490 "futures-timer",7399 "futures-timer",
7491 "polkadot-node-network-protocol",7400 "polkadot-node-network-protocol",
7492 "polkadot-node-primitives",7401 "polkadot-node-primitives",
7505version = "0.9.36"7414version = "0.9.36"
7506source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7415source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7507dependencies = [7416dependencies = [
7508 "parity-scale-codec 3.2.1",7417 "parity-scale-codec",
7509 "scale-info",7418 "scale-info",
7510 "sp-core",7419 "sp-core",
7511 "sp-runtime",7420 "sp-runtime",
7519dependencies = [7428dependencies = [
7520 "derive_more",7429 "derive_more",
7521 "fatality",7430 "fatality",
7522 "futures 0.3.25",7431 "futures",
7523 "futures-timer",7432 "futures-timer",
7524 "indexmap",7433 "indexmap",
7525 "lru",7434 "lru",
7526 "parity-scale-codec 3.2.1",7435 "parity-scale-codec",
7527 "polkadot-erasure-coding",7436 "polkadot-erasure-coding",
7528 "polkadot-node-network-protocol",7437 "polkadot-node-network-protocol",
7529 "polkadot-node-primitives",7438 "polkadot-node-primitives",
7542version = "0.9.36"7451version = "0.9.36"
7543source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7452source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7544dependencies = [7453dependencies = [
7545 "parity-scale-codec 3.2.1",7454 "parity-scale-codec",
7546 "polkadot-node-primitives",7455 "polkadot-node-primitives",
7547 "polkadot-primitives",7456 "polkadot-primitives",
7548 "reed-solomon-novelpoly",7457 "reed-solomon-novelpoly",
7556version = "0.9.36"7465version = "0.9.36"
7557source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7466source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7558dependencies = [7467dependencies = [
7559 "futures 0.3.25",7468 "futures",
7560 "futures-timer",7469 "futures-timer",
7561 "polkadot-node-network-protocol",7470 "polkadot-node-network-protocol",
7562 "polkadot-node-subsystem",7471 "polkadot-node-subsystem",
7580 "async-trait",7489 "async-trait",
7581 "bytes",7490 "bytes",
7582 "fatality",7491 "fatality",
7583 "futures 0.3.25",7492 "futures",
7584 "parity-scale-codec 3.2.1",7493 "parity-scale-codec",
7585 "parking_lot 0.12.1",7494 "parking_lot 0.12.1",
7586 "polkadot-node-network-protocol",7495 "polkadot-node-network-protocol",
7587 "polkadot-node-subsystem",7496 "polkadot-node-subsystem",
7600version = "0.9.36"7509version = "0.9.36"
7601source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7510source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7602dependencies = [7511dependencies = [
7603 "futures 0.3.25",7512 "futures",
7604 "parity-scale-codec 3.2.1",7513 "parity-scale-codec",
7605 "polkadot-erasure-coding",7514 "polkadot-erasure-coding",
7606 "polkadot-node-primitives",7515 "polkadot-node-primitives",
7607 "polkadot-node-subsystem",7516 "polkadot-node-subsystem",
7618version = "0.9.36"7527version = "0.9.36"
7619source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7528source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7620dependencies = [7529dependencies = [
7621 "bitvec 1.0.1",7530 "bitvec",
7622 "derive_more",7531 "derive_more",
7623 "futures 0.3.25",7532 "futures",
7624 "futures-timer",7533 "futures-timer",
7625 "kvdb",7534 "kvdb",
7626 "lru",7535 "lru",
7627 "merlin",7536 "merlin",
7628 "parity-scale-codec 3.2.1",7537 "parity-scale-codec",
7629 "polkadot-node-jaeger",7538 "polkadot-node-jaeger",
7630 "polkadot-node-primitives",7539 "polkadot-node-primitives",
7631 "polkadot-node-subsystem",7540 "polkadot-node-subsystem",
7647version = "0.9.36"7556version = "0.9.36"
7648source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7557source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7649dependencies = [7558dependencies = [
7650 "bitvec 1.0.1",7559 "bitvec",
7651 "futures 0.3.25",7560 "futures",
7652 "futures-timer",7561 "futures-timer",
7653 "kvdb",7562 "kvdb",
7654 "parity-scale-codec 3.2.1",7563 "parity-scale-codec",
7655 "polkadot-erasure-coding",7564 "polkadot-erasure-coding",
7656 "polkadot-node-primitives",7565 "polkadot-node-primitives",
7657 "polkadot-node-subsystem",7566 "polkadot-node-subsystem",
7667version = "0.9.36"7576version = "0.9.36"
7668source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7577source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7669dependencies = [7578dependencies = [
7670 "bitvec 1.0.1",7579 "bitvec",
7671 "fatality",7580 "fatality",
7672 "futures 0.3.25",7581 "futures",
7673 "polkadot-erasure-coding",7582 "polkadot-erasure-coding",
7674 "polkadot-node-primitives",7583 "polkadot-node-primitives",
7675 "polkadot-node-subsystem",7584 "polkadot-node-subsystem",
7686version = "0.9.36"7595version = "0.9.36"
7687source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7596source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7688dependencies = [7597dependencies = [
7689 "futures 0.3.25",7598 "futures",
7690 "polkadot-node-subsystem",7599 "polkadot-node-subsystem",
7691 "polkadot-node-subsystem-util",7600 "polkadot-node-subsystem-util",
7692 "polkadot-primitives",7601 "polkadot-primitives",
7702source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7611source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7703dependencies = [7612dependencies = [
7704 "async-trait",7613 "async-trait",
7705 "futures 0.3.25",7614 "futures",
7706 "futures-timer",7615 "futures-timer",
7707 "parity-scale-codec 3.2.1",7616 "parity-scale-codec",
7708 "polkadot-node-core-pvf",7617 "polkadot-node-core-pvf",
7709 "polkadot-node-primitives",7618 "polkadot-node-primitives",
7710 "polkadot-node-subsystem",7619 "polkadot-node-subsystem",
7720version = "0.9.36"7629version = "0.9.36"
7721source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7630source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7722dependencies = [7631dependencies = [
7723 "futures 0.3.25",7632 "futures",
7724 "polkadot-node-subsystem",7633 "polkadot-node-subsystem",
7725 "polkadot-node-subsystem-util",7634 "polkadot-node-subsystem-util",
7726 "polkadot-primitives",7635 "polkadot-primitives",
7735version = "0.9.36"7644version = "0.9.36"
7736source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7645source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7737dependencies = [7646dependencies = [
7738 "futures 0.3.25",7647 "futures",
7739 "futures-timer",7648 "futures-timer",
7740 "kvdb",7649 "kvdb",
7741 "parity-scale-codec 3.2.1",7650 "parity-scale-codec",
7742 "polkadot-node-primitives",7651 "polkadot-node-primitives",
7743 "polkadot-node-subsystem",7652 "polkadot-node-subsystem",
7744 "polkadot-node-subsystem-util",7653 "polkadot-node-subsystem-util",
7753source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7662source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7754dependencies = [7663dependencies = [
7755 "fatality",7664 "fatality",
7756 "futures 0.3.25",7665 "futures",
7757 "kvdb",7666 "kvdb",
7758 "lru",7667 "lru",
7759 "parity-scale-codec 3.2.1",7668 "parity-scale-codec",
7760 "polkadot-node-primitives",7669 "polkadot-node-primitives",
7761 "polkadot-node-subsystem",7670 "polkadot-node-subsystem",
7762 "polkadot-node-subsystem-util",7671 "polkadot-node-subsystem-util",
7772source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7681source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7773dependencies = [7682dependencies = [
7774 "async-trait",7683 "async-trait",
7775 "futures 0.3.25",7684 "futures",
7776 "futures-timer",7685 "futures-timer",
7777 "polkadot-node-subsystem",7686 "polkadot-node-subsystem",
7778 "polkadot-overseer",7687 "polkadot-overseer",
7789version = "0.9.36"7698version = "0.9.36"
7790source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7699source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7791dependencies = [7700dependencies = [
7792 "bitvec 1.0.1",7701 "bitvec",
7793 "fatality",7702 "fatality",
7794 "futures 0.3.25",7703 "futures",
7795 "futures-timer",7704 "futures-timer",
7796 "polkadot-node-primitives",7705 "polkadot-node-primitives",
7797 "polkadot-node-subsystem",7706 "polkadot-node-subsystem",
7812 "async-process",7721 "async-process",
7813 "async-std",7722 "async-std",
7814 "cpu-time",7723 "cpu-time",
7815 "futures 0.3.25",7724 "futures",
7816 "futures-timer",7725 "futures-timer",
7817 "parity-scale-codec 3.2.1",7726 "parity-scale-codec",
7818 "pin-project",7727 "pin-project",
7819 "polkadot-core-primitives",7728 "polkadot-core-primitives",
7820 "polkadot-node-metrics",7729 "polkadot-node-metrics",
7840version = "0.9.36"7749version = "0.9.36"
7841source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7750source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7842dependencies = [7751dependencies = [
7843 "futures 0.3.25",7752 "futures",
7844 "polkadot-node-primitives",7753 "polkadot-node-primitives",
7845 "polkadot-node-subsystem",7754 "polkadot-node-subsystem",
7846 "polkadot-node-subsystem-util",7755 "polkadot-node-subsystem-util",
7856version = "0.9.36"7765version = "0.9.36"
7857source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7766source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7858dependencies = [7767dependencies = [
7859 "futures 0.3.25",7768 "futures",
7860 "lru",7769 "lru",
7861 "polkadot-node-subsystem",7770 "polkadot-node-subsystem",
7862 "polkadot-node-subsystem-types",7771 "polkadot-node-subsystem-types",
7874 "lazy_static",7783 "lazy_static",
7875 "log",7784 "log",
7876 "mick-jaeger",7785 "mick-jaeger",
7877 "parity-scale-codec 3.2.1",7786 "parity-scale-codec",
7878 "parking_lot 0.12.1",7787 "parking_lot 0.12.1",
7879 "polkadot-node-primitives",7788 "polkadot-node-primitives",
7880 "polkadot-primitives",7789 "polkadot-primitives",
7890source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7799source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7891dependencies = [7800dependencies = [
7892 "bs58",7801 "bs58",
7893 "futures 0.3.25",7802 "futures",
7894 "futures-timer",7803 "futures-timer",
7895 "log",7804 "log",
7896 "parity-scale-codec 3.2.1",7805 "parity-scale-codec",
7897 "polkadot-primitives",7806 "polkadot-primitives",
7898 "prioritized-metered-channel",7807 "prioritized-metered-channel",
7899 "sc-cli",7808 "sc-cli",
7911 "async-trait",7820 "async-trait",
7912 "derive_more",7821 "derive_more",
7913 "fatality",7822 "fatality",
7914 "futures 0.3.25",7823 "futures",
7915 "hex",7824 "hex",
7916 "parity-scale-codec 3.2.1",7825 "parity-scale-codec",
7917 "polkadot-node-jaeger",7826 "polkadot-node-jaeger",
7918 "polkadot-node-primitives",7827 "polkadot-node-primitives",
7919 "polkadot-primitives",7828 "polkadot-primitives",
7932source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7841source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
7933dependencies = [7842dependencies = [
7934 "bounded-vec",7843 "bounded-vec",
7935 "futures 0.3.25",7844 "futures",
7936 "parity-scale-codec 3.2.1",7845 "parity-scale-codec",
7937 "polkadot-parachain",7846 "polkadot-parachain",
7938 "polkadot-primitives",7847 "polkadot-primitives",
7939 "schnorrkel",7848 "schnorrkel",
7965dependencies = [7874dependencies = [
7966 "async-trait",7875 "async-trait",
7967 "derive_more",7876 "derive_more",
7968 "futures 0.3.25",7877 "futures",
7969 "orchestra",7878 "orchestra",
7970 "polkadot-node-jaeger",7879 "polkadot-node-jaeger",
7971 "polkadot-node-network-protocol",7880 "polkadot-node-network-protocol",
7989 "async-trait",7898 "async-trait",
7990 "derive_more",7899 "derive_more",
7991 "fatality",7900 "fatality",
7992 "futures 0.3.25",7901 "futures",
7993 "itertools",7902 "itertools",
7994 "kvdb",7903 "kvdb",
7995 "lru",7904 "lru",
7996 "parity-db",7905 "parity-db",
7997 "parity-scale-codec 3.2.1",7906 "parity-scale-codec",
7998 "parking_lot 0.11.2",7907 "parking_lot 0.11.2",
7999 "pin-project",7908 "pin-project",
8000 "polkadot-node-jaeger",7909 "polkadot-node-jaeger",
8019source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7928source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8020dependencies = [7929dependencies = [
8021 "async-trait",7930 "async-trait",
8022 "futures 0.3.25",7931 "futures",
8023 "futures-timer",7932 "futures-timer",
8024 "lru",7933 "lru",
8025 "orchestra",7934 "orchestra",
8043dependencies = [7952dependencies = [
8044 "derive_more",7953 "derive_more",
8045 "frame-support",7954 "frame-support",
8046 "parity-scale-codec 3.2.1",7955 "parity-scale-codec",
8047 "polkadot-core-primitives",7956 "polkadot-core-primitives",
8048 "scale-info",7957 "scale-info",
8049 "serde",7958 "serde",
8057version = "0.9.36"7966version = "0.9.36"
8058source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7967source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8059dependencies = [7968dependencies = [
8060 "env_logger",7969 "env_logger 0.9.3",
8061 "kusama-runtime",7970 "kusama-runtime",
8062 "log",7971 "log",
8063 "polkadot-erasure-coding",7972 "polkadot-erasure-coding",
8072version = "0.9.36"7981version = "0.9.36"
8073source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"7982source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8074dependencies = [7983dependencies = [
8075 "bitvec 1.0.1",7984 "bitvec",
8076 "hex-literal",7985 "hex-literal",
8077 "parity-scale-codec 3.2.1",7986 "parity-scale-codec",
8078 "polkadot-core-primitives",7987 "polkadot-core-primitives",
8079 "polkadot-parachain",7988 "polkadot-parachain",
8080 "scale-info",7989 "scale-info",
8130version = "0.9.36"8039version = "0.9.36"
8131source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"8040source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8132dependencies = [8041dependencies = [
8133 "bitvec 1.0.1",8042 "bitvec",
8134 "frame-benchmarking",8043 "frame-benchmarking",
8135 "frame-election-provider-support",8044 "frame-election-provider-support",
8136 "frame-executive",8045 "frame-executive",
8180 "pallet-utility",8089 "pallet-utility",
8181 "pallet-vesting",8090 "pallet-vesting",
8182 "pallet-xcm",8091 "pallet-xcm",
8183 "parity-scale-codec 3.2.1",8092 "parity-scale-codec",
8184 "polkadot-primitives",8093 "polkadot-primitives",
8185 "polkadot-runtime-common",8094 "polkadot-runtime-common",
8186 "polkadot-runtime-constants",8095 "polkadot-runtime-constants",
8219version = "0.9.36"8128version = "0.9.36"
8220source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"8129source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8221dependencies = [8130dependencies = [
8222 "bitvec 1.0.1",8131 "bitvec",
8223 "frame-benchmarking",8132 "frame-benchmarking",
8224 "frame-election-provider-support",8133 "frame-election-provider-support",
8225 "frame-support",8134 "frame-support",
8240 "pallet-transaction-payment",8149 "pallet-transaction-payment",
8241 "pallet-treasury",8150 "pallet-treasury",
8242 "pallet-vesting",8151 "pallet-vesting",
8243 "parity-scale-codec 3.2.1",8152 "parity-scale-codec",
8244 "polkadot-primitives",8153 "polkadot-primitives",
8245 "polkadot-runtime-parachains",8154 "polkadot-runtime-parachains",
8246 "rustc-hex",8155 "rustc-hex",
8282source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"8191source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8283dependencies = [8192dependencies = [
8284 "bs58",8193 "bs58",
8285 "parity-scale-codec 3.2.1",8194 "parity-scale-codec",
8286 "polkadot-primitives",8195 "polkadot-primitives",
8287 "sp-std",8196 "sp-std",
8288 "sp-tracing",8197 "sp-tracing",
8294source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"8203source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8295dependencies = [8204dependencies = [
8296 "bitflags",8205 "bitflags",
8297 "bitvec 1.0.1",8206 "bitvec",
8298 "derive_more",8207 "derive_more",
8299 "frame-benchmarking",8208 "frame-benchmarking",
8300 "frame-support",8209 "frame-support",
8308 "pallet-staking",8217 "pallet-staking",
8309 "pallet-timestamp",8218 "pallet-timestamp",
8310 "pallet-vesting",8219 "pallet-vesting",
8311 "parity-scale-codec 3.2.1",8220 "parity-scale-codec",
8312 "polkadot-primitives",8221 "polkadot-primitives",
8313 "polkadot-runtime-metrics",8222 "polkadot-runtime-metrics",
8314 "rand 0.8.5",8223 "rand 0.8.5",
8340 "beefy-gadget",8249 "beefy-gadget",
8341 "frame-support",8250 "frame-support",
8342 "frame-system-rpc-runtime-api",8251 "frame-system-rpc-runtime-api",
8343 "futures 0.3.25",8252 "futures",
8344 "hex-literal",8253 "hex-literal",
8345 "kusama-runtime",8254 "kusama-runtime",
8346 "kvdb",8255 "kvdb",
8444dependencies = [8353dependencies = [
8445 "arrayvec 0.5.2",8354 "arrayvec 0.5.2",
8446 "fatality",8355 "fatality",
8447 "futures 0.3.25",8356 "futures",
8448 "indexmap",8357 "indexmap",
8449 "parity-scale-codec 3.2.1",8358 "parity-scale-codec",
8450 "polkadot-node-network-protocol",8359 "polkadot-node-network-protocol",
8451 "polkadot-node-primitives",8360 "polkadot-node-primitives",
8452 "polkadot-node-subsystem",8361 "polkadot-node-subsystem",
8463version = "0.9.36"8372version = "0.9.36"
8464source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"8373source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8465dependencies = [8374dependencies = [
8466 "parity-scale-codec 3.2.1",8375 "parity-scale-codec",
8467 "polkadot-primitives",8376 "polkadot-primitives",
8468 "sp-core",8377 "sp-core",
8469]8378]
8470
8471[[package]]
8472name = "polkadot-test-runtime"
8473version = "0.9.36"
8474source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8475dependencies = [
8476 "bitvec 1.0.1",
8477 "frame-election-provider-support",
8478 "frame-executive",
8479 "frame-support",
8480 "frame-system",
8481 "frame-system-rpc-runtime-api",
8482 "log",
8483 "pallet-authority-discovery",
8484 "pallet-authorship",
8485 "pallet-babe",
8486 "pallet-balances",
8487 "pallet-grandpa",
8488 "pallet-indices",
8489 "pallet-offences",
8490 "pallet-session",
8491 "pallet-staking",
8492 "pallet-staking-reward-curve",
8493 "pallet-sudo",
8494 "pallet-timestamp",
8495 "pallet-transaction-payment",
8496 "pallet-transaction-payment-rpc-runtime-api",
8497 "pallet-vesting",
8498 "pallet-xcm",
8499 "parity-scale-codec 3.2.1",
8500 "polkadot-parachain",
8501 "polkadot-primitives",
8502 "polkadot-runtime-common",
8503 "polkadot-runtime-parachains",
8504 "rustc-hex",
8505 "scale-info",
8506 "serde",
8507 "serde_derive",
8508 "smallvec",
8509 "sp-api",
8510 "sp-authority-discovery",
8511 "sp-beefy",
8512 "sp-block-builder",
8513 "sp-consensus-babe",
8514 "sp-core",
8515 "sp-inherents",
8516 "sp-io",
8517 "sp-mmr-primitives",
8518 "sp-offchain",
8519 "sp-runtime",
8520 "sp-session",
8521 "sp-staking",
8522 "sp-std",
8523 "sp-transaction-pool",
8524 "sp-version",
8525 "substrate-wasm-builder",
8526 "test-runtime-constants",
8527 "xcm",
8528 "xcm-builder",
8529 "xcm-executor",
8530]
8531
8532[[package]]
8533name = "polkadot-test-service"
8534version = "0.9.36"
8535source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
8536dependencies = [
8537 "frame-benchmarking",
8538 "frame-system",
8539 "futures 0.3.25",
8540 "hex",
8541 "pallet-balances",
8542 "pallet-staking",
8543 "pallet-transaction-payment",
8544 "polkadot-node-primitives",
8545 "polkadot-node-subsystem",
8546 "polkadot-overseer",
8547 "polkadot-parachain",
8548 "polkadot-primitives",
8549 "polkadot-rpc",
8550 "polkadot-runtime-common",
8551 "polkadot-runtime-parachains",
8552 "polkadot-service",
8553 "polkadot-test-runtime",
8554 "rand 0.8.5",
8555 "sc-authority-discovery",
8556 "sc-chain-spec",
8557 "sc-cli",
8558 "sc-client-api",
8559 "sc-consensus",
8560 "sc-consensus-babe",
8561 "sc-executor",
8562 "sc-finality-grandpa",
8563 "sc-network",
8564 "sc-network-common",
8565 "sc-service",
8566 "sc-tracing",
8567 "sc-transaction-pool",
8568 "sp-arithmetic",
8569 "sp-authority-discovery",
8570 "sp-blockchain",
8571 "sp-consensus",
8572 "sp-consensus-babe",
8573 "sp-core",
8574 "sp-finality-grandpa",
8575 "sp-inherents",
8576 "sp-keyring",
8577 "sp-runtime",
8578 "sp-state-machine",
8579 "substrate-test-client",
8580 "tempfile",
8581 "test-runtime-constants",
8582 "tokio",
8583 "tracing-gum",
8584]
85858379
8586[[package]]8380[[package]]
8587name = "polling"8381name = "polling"
86398433
8640[[package]]8434[[package]]
8641name = "predicates"8435name = "predicates"
8642version = "2.1.4"8436version = "2.1.5"
8643source = "registry+https://github.com/rust-lang/crates.io-index"8437source = "registry+https://github.com/rust-lang/crates.io-index"
8644checksum = "f54fc5dc63ed3bbf19494623db4f3af16842c0d975818e469022d09e53f0aa05"8438checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd"
8645dependencies = [8439dependencies = [
8646 "difflib",8440 "difflib",
8647 "float-cmp",8441 "float-cmp",
86698463
8670[[package]]8464[[package]]
8671name = "prettyplease"8465name = "prettyplease"
8672version = "0.1.22"8466version = "0.1.23"
8673source = "registry+https://github.com/rust-lang/crates.io-index"8467source = "registry+https://github.com/rust-lang/crates.io-index"
8674checksum = "2c8992a85d8e93a28bdf76137db888d3874e3b230dee5ed8bebac4c9f7617773"8468checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78"
8675dependencies = [8469dependencies = [
8676 "proc-macro2",8470 "proc-macro2",
8677 "syn",8471 "syn",
8713 "coarsetime",8507 "coarsetime",
8714 "crossbeam-queue",8508 "crossbeam-queue",
8715 "derive_more",8509 "derive_more",
8716 "futures 0.3.25",8510 "futures",
8717 "futures-timer",8511 "futures-timer",
8718 "nanorand",8512 "nanorand",
8719 "thiserror",8513 "thiserror",
87578551
8758[[package]]8552[[package]]
8759name = "proc-macro2"8553name = "proc-macro2"
8760version = "1.0.49"8554version = "1.0.50"
8761source = "registry+https://github.com/rust-lang/crates.io-index"8555source = "registry+https://github.com/rust-lang/crates.io-index"
8762checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"8556checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2"
8763dependencies = [8557dependencies = [
8764 "unicode-ident",8558 "unicode-ident",
8765]8559]
88038597
8804[[package]]8598[[package]]
8805name = "prost"8599name = "prost"
8806version = "0.11.5"8600version = "0.11.6"
8807source = "registry+https://github.com/rust-lang/crates.io-index"8601source = "registry+https://github.com/rust-lang/crates.io-index"
8808checksum = "c01db6702aa05baa3f57dec92b8eeeeb4cb19e894e73996b32a4093289e54592"8602checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698"
8809dependencies = [8603dependencies = [
8810 "bytes",8604 "bytes",
8811 "prost-derive",8605 "prost-derive",
8812]8606]
88138607
8814[[package]]8608[[package]]
8815name = "prost-build"8609name = "prost-build"
8816version = "0.11.5"8610version = "0.11.6"
8817source = "registry+https://github.com/rust-lang/crates.io-index"8611source = "registry+https://github.com/rust-lang/crates.io-index"
8818checksum = "cb5320c680de74ba083512704acb90fe00f28f79207286a848e730c45dd73ed6"8612checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e"
8819dependencies = [8613dependencies = [
8820 "bytes",8614 "bytes",
8821 "heck",8615 "heck",
88488642
8849[[package]]8643[[package]]
8850name = "prost-derive"8644name = "prost-derive"
8851version = "0.11.5"8645version = "0.11.6"
8852source = "registry+https://github.com/rust-lang/crates.io-index"8646source = "registry+https://github.com/rust-lang/crates.io-index"
8853checksum = "c8842bad1a5419bca14eac663ba798f6bc19c413c2fdceb5f3ba3b0932d96720"8647checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d"
8854dependencies = [8648dependencies = [
8855 "anyhow",8649 "anyhow",
8856 "itertools",8650 "itertools",
88618655
8862[[package]]8656[[package]]
8863name = "prost-types"8657name = "prost-types"
8864version = "0.11.5"8658version = "0.11.6"
8865source = "registry+https://github.com/rust-lang/crates.io-index"8659source = "registry+https://github.com/rust-lang/crates.io-index"
8866checksum = "017f79637768cde62820bc2d4fe0e45daaa027755c323ad077767c6c5f173091"8660checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788"
8867dependencies = [8661dependencies = [
8868 "bytes",8662 "bytes",
8869 "prost",8663 "prost",
8950 "pallet-unique",8744 "pallet-unique",
8951 "pallet-xcm",8745 "pallet-xcm",
8952 "parachain-info",8746 "parachain-info",
8953 "parity-scale-codec 3.2.1",8747 "parity-scale-codec",
8954 "polkadot-parachain",8748 "polkadot-parachain",
8955 "precompile-utils-macro",8749 "precompile-utils-macro",
8956 "rmrk-rpc",8750 "rmrk-rpc",
9007 "proc-macro2",8801 "proc-macro2",
9008]8802]
9009
9010[[package]]
9011name = "radium"
9012version = "0.6.2"
9013source = "registry+https://github.com/rust-lang/crates.io-index"
9014checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb"
90158803
9016[[package]]8804[[package]]
9017name = "radium"8805name = "radium"
92149002
9215[[package]]9003[[package]]
9216name = "regex"9004name = "regex"
9217version = "1.7.0"9005version = "1.7.1"
9218source = "registry+https://github.com/rust-lang/crates.io-index"9006source = "registry+https://github.com/rust-lang/crates.io-index"
9219checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"9007checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
9220dependencies = [9008dependencies = [
9221 "aho-corasick",9009 "aho-corasick",
9222 "memchr",9010 "memchr",
9318name = "rmrk-rpc"9106name = "rmrk-rpc"
9319version = "0.0.2"9107version = "0.0.2"
9320dependencies = [9108dependencies = [
9321 "parity-scale-codec 2.3.1",9109 "parity-scale-codec",
9322 "rmrk-traits",9110 "rmrk-traits",
9323 "serde",9111 "serde",
9324 "sp-api",9112 "sp-api",
9325 "sp-core",
9326 "sp-runtime",9113 "sp-runtime",
9327 "sp-std",9114 "sp-std",
9328]9115]
9331name = "rmrk-traits"9118name = "rmrk-traits"
9332version = "0.1.0"9119version = "0.1.0"
9333dependencies = [9120dependencies = [
9334 "parity-scale-codec 3.2.1",9121 "parity-scale-codec",
9335 "scale-info",9122 "scale-info",
9336 "serde",9123 "serde",
9337]9124]
9398 "pallet-vesting",9185 "pallet-vesting",
9399 "pallet-xcm",9186 "pallet-xcm",
9400 "pallet-xcm-benchmarks",9187 "pallet-xcm-benchmarks",
9401 "parity-scale-codec 3.2.1",9188 "parity-scale-codec",
9402 "polkadot-parachain",9189 "polkadot-parachain",
9403 "polkadot-primitives",9190 "polkadot-primitives",
9404 "polkadot-runtime-common",9191 "polkadot-runtime-common",
9463checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0"9250checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0"
9464dependencies = [9251dependencies = [
9465 "async-global-executor",9252 "async-global-executor",
9466 "futures 0.3.25",9253 "futures",
9467 "log",9254 "log",
9468 "netlink-packet-route",9255 "netlink-packet-route",
9469 "netlink-proto",9256 "netlink-proto",
95339320
9534[[package]]9321[[package]]
9535name = "rustix"9322name = "rustix"
9536version = "0.36.5"9323version = "0.36.7"
9537source = "registry+https://github.com/rust-lang/crates.io-index"9324source = "registry+https://github.com/rust-lang/crates.io-index"
9538checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588"9325checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03"
9539dependencies = [9326dependencies = [
9540 "bitflags",9327 "bitflags",
9541 "errno",9328 "errno",
9542 "io-lifetimes 1.0.3",9329 "io-lifetimes 1.0.4",
9543 "libc",9330 "libc",
9544 "linux-raw-sys 0.1.4",9331 "linux-raw-sys 0.1.4",
9545 "windows-sys 0.42.0",9332 "windows-sys 0.42.0",
9546]9333]
95479334
9548[[package]]9335[[package]]
9549name = "rustls"9336name = "rustls"
9550version = "0.20.7"9337version = "0.20.8"
9551source = "registry+https://github.com/rust-lang/crates.io-index"9338source = "registry+https://github.com/rust-lang/crates.io-index"
9552checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c"9339checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"
9553dependencies = [9340dependencies = [
9554 "log",9341 "log",
9555 "ring",9342 "ring",
95719358
9572[[package]]9359[[package]]
9573name = "rustls-pemfile"9360name = "rustls-pemfile"
9574version = "1.0.1"9361version = "1.0.2"
9575source = "registry+https://github.com/rust-lang/crates.io-index"9362source = "registry+https://github.com/rust-lang/crates.io-index"
9576checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55"9363checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b"
9577dependencies = [9364dependencies = [
9578 "base64",9365 "base64 0.21.0",
9579]9366]
95809367
9581[[package]]9368[[package]]
9590source = "registry+https://github.com/rust-lang/crates.io-index"9377source = "registry+https://github.com/rust-lang/crates.io-index"
9591checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04"9378checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04"
9592dependencies = [9379dependencies = [
9593 "futures 0.3.25",9380 "futures",
9594 "pin-project",9381 "pin-project",
9595 "static_assertions",9382 "static_assertions",
9596]9383]
9636source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9423source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
9637dependencies = [9424dependencies = [
9638 "async-trait",9425 "async-trait",
9639 "futures 0.3.25",9426 "futures",
9640 "futures-timer",9427 "futures-timer",
9641 "ip_network",9428 "ip_network",
9642 "libp2p",9429 "libp2p",
9643 "log",9430 "log",
9644 "parity-scale-codec 3.2.1",9431 "parity-scale-codec",
9645 "prost",9432 "prost",
9646 "prost-build",9433 "prost-build",
9647 "rand 0.7.3",9434 "rand 0.7.3",
9662version = "0.10.0-dev"9449version = "0.10.0-dev"
9663source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9450source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
9664dependencies = [9451dependencies = [
9665 "futures 0.3.25",9452 "futures",
9666 "futures-timer",9453 "futures-timer",
9667 "log",9454 "log",
9668 "parity-scale-codec 3.2.1",9455 "parity-scale-codec",
9669 "sc-block-builder",9456 "sc-block-builder",
9670 "sc-client-api",9457 "sc-client-api",
9671 "sc-proposer-metrics",9458 "sc-proposer-metrics",
9685version = "0.10.0-dev"9472version = "0.10.0-dev"
9686source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9473source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
9687dependencies = [9474dependencies = [
9688 "parity-scale-codec 3.2.1",9475 "parity-scale-codec",
9689 "sc-client-api",9476 "sc-client-api",
9690 "sp-api",9477 "sp-api",
9691 "sp-block-builder",9478 "sp-block-builder",
9703dependencies = [9490dependencies = [
9704 "impl-trait-for-tuples",9491 "impl-trait-for-tuples",
9705 "memmap2",9492 "memmap2",
9706 "parity-scale-codec 3.2.1",9493 "parity-scale-codec",
9707 "sc-chain-spec-derive",9494 "sc-chain-spec-derive",
9708 "sc-network-common",9495 "sc-network-common",
9709 "sc-telemetry",9496 "sc-telemetry",
9733 "chrono",9520 "chrono",
9734 "clap",9521 "clap",
9735 "fdlimit",9522 "fdlimit",
9736 "futures 0.3.25",9523 "futures",
9737 "libp2p",9524 "libp2p",
9738 "log",9525 "log",
9739 "names",9526 "names",
9740 "parity-scale-codec 3.2.1",9527 "parity-scale-codec",
9741 "rand 0.7.3",9528 "rand 0.7.3",
9742 "regex",9529 "regex",
9743 "rpassword",9530 "rpassword",
9770source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9557source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
9771dependencies = [9558dependencies = [
9772 "fnv",9559 "fnv",
9773 "futures 0.3.25",9560 "futures",
9774 "hash-db",9561 "hash-db",
9775 "log",9562 "log",
9776 "parity-scale-codec 3.2.1",9563 "parity-scale-codec",
9777 "parking_lot 0.12.1",9564 "parking_lot 0.12.1",
9778 "sc-executor",9565 "sc-executor",
9779 "sc-transaction-pool-api",9566 "sc-transaction-pool-api",
9804 "linked-hash-map",9591 "linked-hash-map",
9805 "log",9592 "log",
9806 "parity-db",9593 "parity-db",
9807 "parity-scale-codec 3.2.1",9594 "parity-scale-codec",
9808 "parking_lot 0.12.1",9595 "parking_lot 0.12.1",
9809 "sc-client-api",9596 "sc-client-api",
9810 "sc-state-db",9597 "sc-state-db",
9823source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9610source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
9824dependencies = [9611dependencies = [
9825 "async-trait",9612 "async-trait",
9826 "futures 0.3.25",9613 "futures",
9827 "futures-timer",9614 "futures-timer",
9828 "libp2p",9615 "libp2p",
9829 "log",9616 "log",
9848source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9635source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
9849dependencies = [9636dependencies = [
9850 "async-trait",9637 "async-trait",
9851 "futures 0.3.25",9638 "futures",
9852 "log",9639 "log",
9853 "parity-scale-codec 3.2.1",9640 "parity-scale-codec",
9854 "sc-block-builder",9641 "sc-block-builder",
9855 "sc-client-api",9642 "sc-client-api",
9856 "sc-consensus",9643 "sc-consensus",
9878dependencies = [9665dependencies = [
9879 "async-trait",9666 "async-trait",
9880 "fork-tree",9667 "fork-tree",
9881 "futures 0.3.25",9668 "futures",
9882 "log",9669 "log",
9883 "merlin",9670 "merlin",
9884 "num-bigint",9671 "num-bigint",
9885 "num-rational",9672 "num-rational",
9886 "num-traits",9673 "num-traits",
9887 "parity-scale-codec 3.2.1",9674 "parity-scale-codec",
9888 "parking_lot 0.12.1",9675 "parking_lot 0.12.1",
9889 "sc-client-api",9676 "sc-client-api",
9890 "sc-consensus",9677 "sc-consensus",
9917version = "0.10.0-dev"9704version = "0.10.0-dev"
9918source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9705source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
9919dependencies = [9706dependencies = [
9920 "futures 0.3.25",9707 "futures",
9921 "jsonrpsee",9708 "jsonrpsee",
9922 "sc-consensus-babe",9709 "sc-consensus-babe",
9923 "sc-consensus-epochs",9710 "sc-consensus-epochs",
9940source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9727source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
9941dependencies = [9728dependencies = [
9942 "fork-tree",9729 "fork-tree",
9943 "parity-scale-codec 3.2.1",9730 "parity-scale-codec",
9944 "sc-client-api",9731 "sc-client-api",
9945 "sc-consensus",9732 "sc-consensus",
9946 "sp-blockchain",9733 "sp-blockchain",
9954dependencies = [9741dependencies = [
9955 "assert_matches",9742 "assert_matches",
9956 "async-trait",9743 "async-trait",
9957 "futures 0.3.25",9744 "futures",
9958 "jsonrpsee",9745 "jsonrpsee",
9959 "log",9746 "log",
9960 "parity-scale-codec 3.2.1",9747 "parity-scale-codec",
9961 "sc-client-api",9748 "sc-client-api",
9962 "sc-consensus",9749 "sc-consensus",
9963 "sc-consensus-aura",9750 "sc-consensus-aura",
9987source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9774source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
9988dependencies = [9775dependencies = [
9989 "async-trait",9776 "async-trait",
9990 "futures 0.3.25",9777 "futures",
9991 "futures-timer",9778 "futures-timer",
9992 "log",9779 "log",
9993 "parity-scale-codec 3.2.1",9780 "parity-scale-codec",
9994 "sc-client-api",9781 "sc-client-api",
9995 "sc-consensus",9782 "sc-consensus",
9996 "sc-telemetry",9783 "sc-telemetry",
10011source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9798source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10012dependencies = [9799dependencies = [
10013 "lru",9800 "lru",
10014 "parity-scale-codec 3.2.1",9801 "parity-scale-codec",
10015 "parking_lot 0.12.1",9802 "parking_lot 0.12.1",
10016 "sc-executor-common",9803 "sc-executor-common",
10017 "sc-executor-wasmi",9804 "sc-executor-wasmi",
10083 "dyn-clone",9870 "dyn-clone",
10084 "finality-grandpa",9871 "finality-grandpa",
10085 "fork-tree",9872 "fork-tree",
10086 "futures 0.3.25",9873 "futures",
10087 "futures-timer",9874 "futures-timer",
10088 "log",9875 "log",
10089 "parity-scale-codec 3.2.1",9876 "parity-scale-codec",
10090 "parking_lot 0.12.1",9877 "parking_lot 0.12.1",
10091 "rand 0.8.5",9878 "rand 0.8.5",
10092 "sc-block-builder",9879 "sc-block-builder",
10119source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9906source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10120dependencies = [9907dependencies = [
10121 "finality-grandpa",9908 "finality-grandpa",
10122 "futures 0.3.25",9909 "futures",
10123 "jsonrpsee",9910 "jsonrpsee",
10124 "log",9911 "log",
10125 "parity-scale-codec 3.2.1",9912 "parity-scale-codec",
10126 "sc-client-api",9913 "sc-client-api",
10127 "sc-finality-grandpa",9914 "sc-finality-grandpa",
10128 "sc-rpc",9915 "sc-rpc",
10140source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"9927source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10141dependencies = [9928dependencies = [
10142 "ansi_term",9929 "ansi_term",
10143 "futures 0.3.25",9930 "futures",
10144 "futures-timer",9931 "futures-timer",
10145 "log",9932 "log",
10146 "sc-client-api",9933 "sc-client-api",
10179 "either",9966 "either",
10180 "fnv",9967 "fnv",
10181 "fork-tree",9968 "fork-tree",
10182 "futures 0.3.25",9969 "futures",
10183 "futures-timer",9970 "futures-timer",
10184 "ip_network",9971 "ip_network",
10185 "libp2p",9972 "libp2p",
10186 "linked-hash-map",9973 "linked-hash-map",
10187 "linked_hash_set",9974 "linked_hash_set",
10188 "log",9975 "log",
10189 "lru",9976 "lru",
10190 "parity-scale-codec 3.2.1",9977 "parity-scale-codec",
10191 "parking_lot 0.12.1",9978 "parking_lot 0.12.1",
10192 "pin-project",9979 "pin-project",
10193 "prost",9980 "prost",
10218source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10005source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10219dependencies = [10006dependencies = [
10220 "cid",10007 "cid",
10221 "futures 0.3.25",10008 "futures",
10222 "libp2p",10009 "libp2p",
10223 "log",10010 "log",
10224 "prost",10011 "prost",
10240 "async-trait",10027 "async-trait",
10241 "bitflags",10028 "bitflags",
10242 "bytes",10029 "bytes",
10243 "futures 0.3.25",10030 "futures",
10244 "futures-timer",10031 "futures-timer",
10245 "libp2p",10032 "libp2p",
10246 "linked_hash_set",10033 "linked_hash_set",
10247 "parity-scale-codec 3.2.1",10034 "parity-scale-codec",
10248 "prost-build",10035 "prost-build",
10249 "sc-consensus",10036 "sc-consensus",
10250 "sc-peerset",10037 "sc-peerset",
10264source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10051source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10265dependencies = [10052dependencies = [
10266 "ahash",10053 "ahash",
10267 "futures 0.3.25",10054 "futures",
10268 "futures-timer",10055 "futures-timer",
10269 "libp2p",10056 "libp2p",
10270 "log",10057 "log",
10282source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10069source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10283dependencies = [10070dependencies = [
10284 "array-bytes 4.2.0",10071 "array-bytes 4.2.0",
10285 "futures 0.3.25",10072 "futures",
10286 "libp2p",10073 "libp2p",
10287 "log",10074 "log",
10288 "parity-scale-codec 3.2.1",10075 "parity-scale-codec",
10289 "prost",10076 "prost",
10290 "prost-build",10077 "prost-build",
10291 "sc-client-api",10078 "sc-client-api",
10305 "array-bytes 4.2.0",10092 "array-bytes 4.2.0",
10306 "async-trait",10093 "async-trait",
10307 "fork-tree",10094 "fork-tree",
10308 "futures 0.3.25",10095 "futures",
10309 "libp2p",10096 "libp2p",
10310 "log",10097 "log",
10311 "lru",10098 "lru",
10312 "mockall",10099 "mockall",
10313 "parity-scale-codec 3.2.1",10100 "parity-scale-codec",
10314 "prost",10101 "prost",
10315 "prost-build",10102 "prost-build",
10316 "sc-client-api",10103 "sc-client-api",
10335source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10122source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10336dependencies = [10123dependencies = [
10337 "array-bytes 4.2.0",10124 "array-bytes 4.2.0",
10338 "futures 0.3.25",10125 "futures",
10339 "hex",10126 "hex",
10340 "libp2p",10127 "libp2p",
10341 "log",10128 "log",
10342 "parity-scale-codec 3.2.1",10129 "parity-scale-codec",
10343 "pin-project",10130 "pin-project",
10344 "sc-network-common",10131 "sc-network-common",
10345 "sc-peerset",10132 "sc-peerset",
10356 "array-bytes 4.2.0",10143 "array-bytes 4.2.0",
10357 "bytes",10144 "bytes",
10358 "fnv",10145 "fnv",
10359 "futures 0.3.25",10146 "futures",
10360 "futures-timer",10147 "futures-timer",
10361 "hyper",10148 "hyper",
10362 "hyper-rustls",10149 "hyper-rustls",
10363 "libp2p",10150 "libp2p",
10364 "num_cpus",10151 "num_cpus",
10365 "once_cell",10152 "once_cell",
10366 "parity-scale-codec 3.2.1",10153 "parity-scale-codec",
10367 "parking_lot 0.12.1",10154 "parking_lot 0.12.1",
10368 "rand 0.7.3",10155 "rand 0.7.3",
10369 "sc-client-api",10156 "sc-client-api",
10383version = "4.0.0-dev"10170version = "4.0.0-dev"
10384source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10171source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10385dependencies = [10172dependencies = [
10386 "futures 0.3.25",10173 "futures",
10387 "libp2p",10174 "libp2p",
10388 "log",10175 "log",
10389 "sc-utils",10176 "sc-utils",
10405version = "4.0.0-dev"10192version = "4.0.0-dev"
10406source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10193source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10407dependencies = [10194dependencies = [
10408 "futures 0.3.25",10195 "futures",
10409 "hash-db",10196 "hash-db",
10410 "jsonrpsee",10197 "jsonrpsee",
10411 "log",10198 "log",
10412 "parity-scale-codec 3.2.1",10199 "parity-scale-codec",
10413 "parking_lot 0.12.1",10200 "parking_lot 0.12.1",
10414 "sc-block-builder",10201 "sc-block-builder",
10415 "sc-chain-spec",10202 "sc-chain-spec",
10435version = "0.10.0-dev"10222version = "0.10.0-dev"
10436source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10223source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10437dependencies = [10224dependencies = [
10438 "futures 0.3.25",10225 "futures",
10439 "jsonrpsee",10226 "jsonrpsee",
10440 "log",10227 "log",
10441 "parity-scale-codec 3.2.1",10228 "parity-scale-codec",
10442 "parking_lot 0.12.1",10229 "parking_lot 0.12.1",
10443 "sc-chain-spec",10230 "sc-chain-spec",
10444 "sc-transaction-pool-api",10231 "sc-transaction-pool-api",
10458version = "4.0.0-dev"10245version = "4.0.0-dev"
10459source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10246source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10460dependencies = [10247dependencies = [
10461 "futures 0.3.25",10248 "futures",
10462 "http",10249 "http",
10463 "jsonrpsee",10250 "jsonrpsee",
10464 "log",10251 "log",
10474version = "0.10.0-dev"10261version = "0.10.0-dev"
10475source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10262source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10476dependencies = [10263dependencies = [
10477 "futures 0.3.25",10264 "futures",
10478 "hex",10265 "hex",
10479 "jsonrpsee",10266 "jsonrpsee",
10480 "parity-scale-codec 3.2.1",10267 "parity-scale-codec",
10481 "sc-chain-spec",10268 "sc-chain-spec",
10482 "sc-transaction-pool-api",10269 "sc-transaction-pool-api",
10483 "serde",10270 "serde",
10496 "async-trait",10283 "async-trait",
10497 "directories",10284 "directories",
10498 "exit-future",10285 "exit-future",
10499 "futures 0.3.25",10286 "futures",
10500 "futures-timer",10287 "futures-timer",
10501 "hash-db",10288 "hash-db",
10502 "jsonrpsee",10289 "jsonrpsee",
10503 "log",10290 "log",
10504 "parity-scale-codec 3.2.1",10291 "parity-scale-codec",
10505 "parking_lot 0.12.1",10292 "parking_lot 0.12.1",
10506 "pin-project",10293 "pin-project",
10507 "rand 0.7.3",10294 "rand 0.7.3",
10564source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10351source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10565dependencies = [10352dependencies = [
10566 "log",10353 "log",
10567 "parity-scale-codec 3.2.1",10354 "parity-scale-codec",
10568 "parking_lot 0.12.1",10355 "parking_lot 0.12.1",
10569 "sc-client-api",10356 "sc-client-api",
10570 "sp-core",10357 "sp-core",
10576source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10363source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10577dependencies = [10364dependencies = [
10578 "jsonrpsee",10365 "jsonrpsee",
10579 "parity-scale-codec 3.2.1",10366 "parity-scale-codec",
10580 "sc-chain-spec",10367 "sc-chain-spec",
10581 "sc-client-api",10368 "sc-client-api",
10582 "sc-consensus-babe",10369 "sc-consensus-babe",
10594version = "6.0.0-dev"10381version = "6.0.0-dev"
10595source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10382source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10596dependencies = [10383dependencies = [
10597 "futures 0.3.25",10384 "futures",
10598 "libc",10385 "libc",
10599 "log",10386 "log",
10600 "rand 0.7.3",10387 "rand 0.7.3",
10614source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10401source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10615dependencies = [10402dependencies = [
10616 "chrono",10403 "chrono",
10617 "futures 0.3.25",10404 "futures",
10618 "libp2p",10405 "libp2p",
10619 "log",10406 "log",
10620 "parking_lot 0.12.1",10407 "parking_lot 0.12.1",
10674source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10461source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10675dependencies = [10462dependencies = [
10676 "async-trait",10463 "async-trait",
10677 "futures 0.3.25",10464 "futures",
10678 "futures-timer",10465 "futures-timer",
10679 "linked-hash-map",10466 "linked-hash-map",
10680 "log",10467 "log",
10681 "parity-scale-codec 3.2.1",10468 "parity-scale-codec",
10682 "parking_lot 0.12.1",10469 "parking_lot 0.12.1",
10683 "sc-client-api",10470 "sc-client-api",
10684 "sc-transaction-pool-api",10471 "sc-transaction-pool-api",
10700source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10487source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10701dependencies = [10488dependencies = [
10702 "async-trait",10489 "async-trait",
10703 "futures 0.3.25",10490 "futures",
10704 "log",10491 "log",
10705 "serde",10492 "serde",
10706 "sp-blockchain",10493 "sp-blockchain",
10713version = "4.0.0-dev"10500version = "4.0.0-dev"
10714source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"10501source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
10715dependencies = [10502dependencies = [
10716 "futures 0.3.25",10503 "futures",
10717 "futures-timer",10504 "futures-timer",
10718 "lazy_static",10505 "lazy_static",
10719 "log",10506 "log",
10727source = "registry+https://github.com/rust-lang/crates.io-index"10514source = "registry+https://github.com/rust-lang/crates.io-index"
10728checksum = "001cf62ece89779fd16105b5f515ad0e5cedcd5440d3dd806bb067978e7c3608"10515checksum = "001cf62ece89779fd16105b5f515ad0e5cedcd5440d3dd806bb067978e7c3608"
10729dependencies = [10516dependencies = [
10730 "bitvec 1.0.1",10517 "bitvec",
10731 "cfg-if",10518 "cfg-if",
10732 "derive_more",10519 "derive_more",
10733 "parity-scale-codec 3.2.1",10520 "parity-scale-codec",
10734 "scale-info-derive",10521 "scale-info-derive",
10735 "serde",10522 "serde",
10736]10523]
1074910536
10750[[package]]10537[[package]]
10751name = "schannel"10538name = "schannel"
10752version = "0.1.20"10539version = "0.1.21"
10753source = "registry+https://github.com/rust-lang/crates.io-index"10540source = "registry+https://github.com/rust-lang/crates.io-index"
10754checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"10541checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3"
10755dependencies = [10542dependencies = [
10756 "lazy_static",
10757 "windows-sys 0.36.1",10543 "windows-sys 0.42.0",
10758]10544]
1075910545
10760[[package]]10546[[package]]
1081310599
10814[[package]]10600[[package]]
10815name = "secp256k1"10601name = "secp256k1"
10816version = "0.24.2"10602version = "0.24.3"
10817source = "registry+https://github.com/rust-lang/crates.io-index"10603source = "registry+https://github.com/rust-lang/crates.io-index"
10818checksum = "d9512ffd81e3a3503ed401f79c33168b9148c75038956039166cd750eaa037c3"10604checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62"
10819dependencies = [10605dependencies = [
10820 "secp256k1-sys",10606 "secp256k1-sys",
10821]10607]
1084010626
10841[[package]]10627[[package]]
10842name = "security-framework"10628name = "security-framework"
10843version = "2.7.0"10629version = "2.8.0"
10844source = "registry+https://github.com/rust-lang/crates.io-index"10630source = "registry+https://github.com/rust-lang/crates.io-index"
10845checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c"10631checksum = "645926f31b250a2dca3c232496c2d898d91036e45ca0e97e0e2390c54e11be36"
10846dependencies = [10632dependencies = [
10847 "bitflags",10633 "bitflags",
10848 "core-foundation",10634 "core-foundation",
1085310639
10854[[package]]10640[[package]]
10855name = "security-framework-sys"10641name = "security-framework-sys"
10856version = "2.6.1"10642version = "2.8.0"
10857source = "registry+https://github.com/rust-lang/crates.io-index"10643source = "registry+https://github.com/rust-lang/crates.io-index"
10858checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"10644checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4"
10859dependencies = [10645dependencies = [
10860 "core-foundation-sys",10646 "core-foundation-sys",
10861 "libc",10647 "libc",
1089610682
10897[[package]]10683[[package]]
10898name = "serde"10684name = "serde"
10899version = "1.0.151"10685version = "1.0.152"
10900source = "registry+https://github.com/rust-lang/crates.io-index"10686source = "registry+https://github.com/rust-lang/crates.io-index"
10901checksum = "97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0"10687checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
10902dependencies = [10688dependencies = [
10903 "serde_derive",10689 "serde_derive",
10904]10690]
1090510691
10906[[package]]10692[[package]]
10907name = "serde_derive"10693name = "serde_derive"
10908version = "1.0.151"10694version = "1.0.152"
10909source = "registry+https://github.com/rust-lang/crates.io-index"10695source = "registry+https://github.com/rust-lang/crates.io-index"
10910checksum = "255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8"10696checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
10911dependencies = [10697dependencies = [
10912 "proc-macro2",10698 "proc-macro2",
10913 "quote",10699 "quote",
10947 "opaque-debug 0.3.0",10733 "opaque-debug 0.3.0",
10948]10734]
10949
10950[[package]]
10951name = "sha1"
10952version = "0.10.5"
10953source = "registry+https://github.com/rust-lang/crates.io-index"
10954checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
10955dependencies = [
10956 "cfg-if",
10957 "cpufeatures",
10958 "digest 0.10.6",
10959]
1096010735
10961[[package]]10736[[package]]
10962name = "sha2"10737name = "sha2"
11085source = "registry+https://github.com/rust-lang/crates.io-index"10860source = "registry+https://github.com/rust-lang/crates.io-index"
11086checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf"10861checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf"
11087dependencies = [10862dependencies = [
11088 "bstr",10863 "bstr 0.2.17",
11089 "unicode-segmentation",10864 "unicode-segmentation",
11090]10865]
1109110866
11120source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"10895source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
11121dependencies = [10896dependencies = [
11122 "enumn",10897 "enumn",
11123 "parity-scale-codec 3.2.1",10898 "parity-scale-codec",
11124 "paste",10899 "paste",
11125 "sp-runtime",10900 "sp-runtime",
11126 "sp-std",10901 "sp-std",
11180source = "registry+https://github.com/rust-lang/crates.io-index"10955source = "registry+https://github.com/rust-lang/crates.io-index"
11181checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2"10956checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2"
11182dependencies = [10957dependencies = [
11183 "base64",10958 "base64 0.13.1",
11184 "bytes",10959 "bytes",
11185 "flate2",10960 "flate2",
11186 "futures 0.3.25",10961 "futures",
11187 "http",10962 "http",
11188 "httparse",10963 "httparse",
11189 "log",10964 "log",
11198dependencies = [10973dependencies = [
11199 "hash-db",10974 "hash-db",
11200 "log",10975 "log",
11201 "parity-scale-codec 3.2.1",10976 "parity-scale-codec",
11202 "sp-api-proc-macro",10977 "sp-api-proc-macro",
11203 "sp-core",10978 "sp-core",
11204 "sp-runtime",10979 "sp-runtime",
11226version = "7.0.0"11001version = "7.0.0"
11227source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11002source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11228dependencies = [11003dependencies = [
11229 "parity-scale-codec 3.2.1",11004 "parity-scale-codec",
11230 "scale-info",11005 "scale-info",
11231 "serde",11006 "serde",
11232 "sp-core",11007 "sp-core",
11241dependencies = [11016dependencies = [
11242 "integer-sqrt",11017 "integer-sqrt",
11243 "num-traits",11018 "num-traits",
11244 "parity-scale-codec 3.2.1",11019 "parity-scale-codec",
11245 "scale-info",11020 "scale-info",
11246 "serde",11021 "serde",
11247 "sp-debug-derive",11022 "sp-debug-derive",
11254version = "4.0.0-dev"11029version = "4.0.0-dev"
11255source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11030source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11256dependencies = [11031dependencies = [
11257 "parity-scale-codec 3.2.1",11032 "parity-scale-codec",
11258 "scale-info",11033 "scale-info",
11259 "sp-api",11034 "sp-api",
11260 "sp-application-crypto",11035 "sp-application-crypto",
11268source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11043source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11269dependencies = [11044dependencies = [
11270 "async-trait",11045 "async-trait",
11271 "parity-scale-codec 3.2.1",11046 "parity-scale-codec",
11272 "sp-inherents",11047 "sp-inherents",
11273 "sp-runtime",11048 "sp-runtime",
11274 "sp-std",11049 "sp-std",
11279version = "4.0.0-dev"11054version = "4.0.0-dev"
11280source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11055source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11281dependencies = [11056dependencies = [
11282 "parity-scale-codec 3.2.1",11057 "parity-scale-codec",
11283 "scale-info",11058 "scale-info",
11284 "serde",11059 "serde",
11285 "sp-api",11060 "sp-api",
11296version = "4.0.0-dev"11071version = "4.0.0-dev"
11297source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11072source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11298dependencies = [11073dependencies = [
11299 "parity-scale-codec 3.2.1",11074 "parity-scale-codec",
11300 "sp-api",11075 "sp-api",
11301 "sp-inherents",11076 "sp-inherents",
11302 "sp-runtime",11077 "sp-runtime",
11308version = "4.0.0-dev"11083version = "4.0.0-dev"
11309source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11084source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11310dependencies = [11085dependencies = [
11311 "futures 0.3.25",11086 "futures",
11312 "log",11087 "log",
11313 "lru",11088 "lru",
11314 "parity-scale-codec 3.2.1",11089 "parity-scale-codec",
11315 "parking_lot 0.12.1",11090 "parking_lot 0.12.1",
11316 "sp-api",11091 "sp-api",
11317 "sp-consensus",11092 "sp-consensus",
11327source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11102source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11328dependencies = [11103dependencies = [
11329 "async-trait",11104 "async-trait",
11330 "futures 0.3.25",11105 "futures",
11331 "futures-timer",11106 "futures-timer",
11332 "log",11107 "log",
11333 "parity-scale-codec 3.2.1",11108 "parity-scale-codec",
11334 "sp-core",11109 "sp-core",
11335 "sp-inherents",11110 "sp-inherents",
11336 "sp-runtime",11111 "sp-runtime",
11346source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11121source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11347dependencies = [11122dependencies = [
11348 "async-trait",11123 "async-trait",
11349 "parity-scale-codec 3.2.1",11124 "parity-scale-codec",
11350 "scale-info",11125 "scale-info",
11351 "sp-api",11126 "sp-api",
11352 "sp-application-crypto",11127 "sp-application-crypto",
11365dependencies = [11140dependencies = [
11366 "async-trait",11141 "async-trait",
11367 "merlin",11142 "merlin",
11368 "parity-scale-codec 3.2.1",11143 "parity-scale-codec",
11369 "scale-info",11144 "scale-info",
11370 "serde",11145 "serde",
11371 "sp-api",11146 "sp-api",
11386version = "0.10.0-dev"11161version = "0.10.0-dev"
11387source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11162source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11388dependencies = [11163dependencies = [
11389 "parity-scale-codec 3.2.1",11164 "parity-scale-codec",
11390 "scale-info",11165 "scale-info",
11391 "serde",11166 "serde",
11392 "sp-arithmetic",11167 "sp-arithmetic",
11400version = "0.10.0-dev"11175version = "0.10.0-dev"
11401source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11176source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11402dependencies = [11177dependencies = [
11403 "parity-scale-codec 3.2.1",11178 "parity-scale-codec",
11404 "scale-info",11179 "scale-info",
11405 "schnorrkel",11180 "schnorrkel",
11406 "sp-core",11181 "sp-core",
11420 "byteorder",11195 "byteorder",
11421 "dyn-clonable",11196 "dyn-clonable",
11422 "ed25519-zebra",11197 "ed25519-zebra",
11423 "futures 0.3.25",11198 "futures",
11424 "hash-db",11199 "hash-db",
11425 "hash256-std-hasher",11200 "hash256-std-hasher",
11426 "impl-serde",11201 "impl-serde",
11429 "log",11204 "log",
11430 "merlin",11205 "merlin",
11431 "num-traits",11206 "num-traits",
11432 "parity-scale-codec 3.2.1",11207 "parity-scale-codec",
11433 "parking_lot 0.12.1",11208 "parking_lot 0.12.1",
11434 "primitive-types 0.12.1",11209 "primitive-types 0.12.1",
11435 "rand 0.7.3",11210 "rand 0.7.3",
11503source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11278source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11504dependencies = [11279dependencies = [
11505 "environmental",11280 "environmental",
11506 "parity-scale-codec 3.2.1",11281 "parity-scale-codec",
11507 "sp-std",11282 "sp-std",
11508 "sp-storage",11283 "sp-storage",
11509]11284]
11515dependencies = [11290dependencies = [
11516 "finality-grandpa",11291 "finality-grandpa",
11517 "log",11292 "log",
11518 "parity-scale-codec 3.2.1",11293 "parity-scale-codec",
11519 "scale-info",11294 "scale-info",
11520 "serde",11295 "serde",
11521 "sp-api",11296 "sp-api",
11533dependencies = [11308dependencies = [
11534 "async-trait",11309 "async-trait",
11535 "impl-trait-for-tuples",11310 "impl-trait-for-tuples",
11536 "parity-scale-codec 3.2.1",11311 "parity-scale-codec",
11537 "sp-core",11312 "sp-core",
11538 "sp-runtime",11313 "sp-runtime",
11539 "sp-std",11314 "sp-std",
11547dependencies = [11322dependencies = [
11548 "bytes",11323 "bytes",
11549 "ed25519-dalek",11324 "ed25519-dalek",
11550 "futures 0.3.25",11325 "futures",
11551 "hash-db",11326 "hash-db",
11552 "libsecp256k1",11327 "libsecp256k1",
11553 "log",11328 "log",
11554 "parity-scale-codec 3.2.1",11329 "parity-scale-codec",
11555 "parking_lot 0.12.1",11330 "parking_lot 0.12.1",
11556 "secp256k1",11331 "secp256k1",
11557 "sp-core",11332 "sp-core",
11584source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11359source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11585dependencies = [11360dependencies = [
11586 "async-trait",11361 "async-trait",
11587 "futures 0.3.25",11362 "futures",
11588 "merlin",11363 "merlin",
11589 "parity-scale-codec 3.2.1",11364 "parity-scale-codec",
11590 "parking_lot 0.12.1",11365 "parking_lot 0.12.1",
11591 "schnorrkel",11366 "schnorrkel",
11592 "serde",11367 "serde",
11611dependencies = [11386dependencies = [
11612 "ckb-merkle-mountain-range",11387 "ckb-merkle-mountain-range",
11613 "log",11388 "log",
11614 "parity-scale-codec 3.2.1",11389 "parity-scale-codec",
11615 "scale-info",11390 "scale-info",
11616 "serde",11391 "serde",
11617 "sp-api",11392 "sp-api",
11627version = "4.0.0-dev"11402version = "4.0.0-dev"
11628source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11403source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11629dependencies = [11404dependencies = [
11630 "parity-scale-codec 3.2.1",11405 "parity-scale-codec",
11631 "scale-info",11406 "scale-info",
11632 "serde",11407 "serde",
11633 "sp-arithmetic",11408 "sp-arithmetic",
11675 "hash256-std-hasher",11450 "hash256-std-hasher",
11676 "impl-trait-for-tuples",11451 "impl-trait-for-tuples",
11677 "log",11452 "log",
11678 "parity-scale-codec 3.2.1",11453 "parity-scale-codec",
11679 "paste",11454 "paste",
11680 "rand 0.7.3",11455 "rand 0.7.3",
11681 "scale-info",11456 "scale-info",
11695dependencies = [11470dependencies = [
11696 "bytes",11471 "bytes",
11697 "impl-trait-for-tuples",11472 "impl-trait-for-tuples",
11698 "parity-scale-codec 3.2.1",11473 "parity-scale-codec",
11699 "primitive-types 0.12.1",11474 "primitive-types 0.12.1",
11700 "sp-externalities",11475 "sp-externalities",
11701 "sp-runtime-interface-proc-macro",11476 "sp-runtime-interface-proc-macro",
11723version = "4.0.0-dev"11498version = "4.0.0-dev"
11724source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11499source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11725dependencies = [11500dependencies = [
11726 "parity-scale-codec 3.2.1",11501 "parity-scale-codec",
11727 "scale-info",11502 "scale-info",
11728 "sp-api",11503 "sp-api",
11729 "sp-core",11504 "sp-core",
11737version = "4.0.0-dev"11512version = "4.0.0-dev"
11738source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11513source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11739dependencies = [11514dependencies = [
11740 "parity-scale-codec 3.2.1",11515 "parity-scale-codec",
11741 "scale-info",11516 "scale-info",
11742 "sp-core",11517 "sp-core",
11743 "sp-runtime",11518 "sp-runtime",
11752 "hash-db",11527 "hash-db",
11753 "log",11528 "log",
11754 "num-traits",11529 "num-traits",
11755 "parity-scale-codec 3.2.1",11530 "parity-scale-codec",
11756 "parking_lot 0.12.1",11531 "parking_lot 0.12.1",
11757 "rand 0.7.3",11532 "rand 0.7.3",
11758 "smallvec",11533 "smallvec",
11777source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11552source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11778dependencies = [11553dependencies = [
11779 "impl-serde",11554 "impl-serde",
11780 "parity-scale-codec 3.2.1",11555 "parity-scale-codec",
11781 "ref-cast",11556 "ref-cast",
11782 "serde",11557 "serde",
11783 "sp-debug-derive",11558 "sp-debug-derive",
11792 "async-trait",11567 "async-trait",
11793 "futures-timer",11568 "futures-timer",
11794 "log",11569 "log",
11795 "parity-scale-codec 3.2.1",11570 "parity-scale-codec",
11796 "sp-api",11571 "sp-api",
11797 "sp-inherents",11572 "sp-inherents",
11798 "sp-runtime",11573 "sp-runtime",
11805version = "6.0.0"11580version = "6.0.0"
11806source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11581source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11807dependencies = [11582dependencies = [
11808 "parity-scale-codec 3.2.1",11583 "parity-scale-codec",
11809 "sp-std",11584 "sp-std",
11810 "tracing",11585 "tracing",
11811 "tracing-core",11586 "tracing-core",
11828dependencies = [11603dependencies = [
11829 "async-trait",11604 "async-trait",
11830 "log",11605 "log",
11831 "parity-scale-codec 3.2.1",11606 "parity-scale-codec",
11832 "scale-info",11607 "scale-info",
11833 "sp-core",11608 "sp-core",
11834 "sp-inherents",11609 "sp-inherents",
11849 "lru",11624 "lru",
11850 "memory-db",11625 "memory-db",
11851 "nohash-hasher",11626 "nohash-hasher",
11852 "parity-scale-codec 3.2.1",11627 "parity-scale-codec",
11853 "parking_lot 0.12.1",11628 "parking_lot 0.12.1",
11854 "scale-info",11629 "scale-info",
11855 "sp-core",11630 "sp-core",
11866source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11641source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11867dependencies = [11642dependencies = [
11868 "impl-serde",11643 "impl-serde",
11869 "parity-scale-codec 3.2.1",11644 "parity-scale-codec",
11870 "parity-wasm",11645 "parity-wasm",
11871 "scale-info",11646 "scale-info",
11872 "serde",11647 "serde",
11882version = "4.0.0-dev"11657version = "4.0.0-dev"
11883source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11658source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11884dependencies = [11659dependencies = [
11885 "parity-scale-codec 3.2.1",11660 "parity-scale-codec",
11886 "proc-macro2",11661 "proc-macro2",
11887 "quote",11662 "quote",
11888 "syn",11663 "syn",
11895dependencies = [11670dependencies = [
11896 "impl-trait-for-tuples",11671 "impl-trait-for-tuples",
11897 "log",11672 "log",
11898 "parity-scale-codec 3.2.1",11673 "parity-scale-codec",
11899 "sp-std",11674 "sp-std",
11900 "wasmi",11675 "wasmi",
11901 "wasmtime",11676 "wasmtime",
11907source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11682source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
11908dependencies = [11683dependencies = [
11909 "impl-trait-for-tuples",11684 "impl-trait-for-tuples",
11910 "parity-scale-codec 3.2.1",11685 "parity-scale-codec",
11911 "scale-info",11686 "scale-info",
11912 "serde",11687 "serde",
11913 "smallvec",11688 "smallvec",
1193511710
11936[[package]]11711[[package]]
11937name = "ss58-registry"11712name = "ss58-registry"
11938version = "1.36.0"11713version = "1.37.0"
11939source = "registry+https://github.com/rust-lang/crates.io-index"11714source = "registry+https://github.com/rust-lang/crates.io-index"
11940checksum = "23d92659e7d18d82b803824a9ba5a6022cff101c3491d027c1c1d8d30e749284"11715checksum = "d44528162f980c0e03c71e005d334332c8da0aec9f2b0b4bdc557ed4a9f24776"
11941dependencies = [11716dependencies = [
11942 "Inflector",11717 "Inflector",
11943 "num-format",11718 "num-format",
12089source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11864source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
12090dependencies = [11865dependencies = [
12091 "frame-system-rpc-runtime-api",11866 "frame-system-rpc-runtime-api",
12092 "futures 0.3.25",11867 "futures",
12093 "jsonrpsee",11868 "jsonrpsee",
12094 "log",11869 "log",
12095 "parity-scale-codec 3.2.1",11870 "parity-scale-codec",
12096 "sc-client-api",11871 "sc-client-api",
12097 "sc-rpc-api",11872 "sc-rpc-api",
12098 "sc-transaction-pool-api",11873 "sc-transaction-pool-api",
12137dependencies = [11912dependencies = [
12138 "jsonrpsee",11913 "jsonrpsee",
12139 "log",11914 "log",
12140 "parity-scale-codec 3.2.1",11915 "parity-scale-codec",
12141 "sc-client-api",11916 "sc-client-api",
12142 "sc-rpc-api",11917 "sc-rpc-api",
12143 "scale-info",11918 "scale-info",
12151 "trie-db",11926 "trie-db",
12152]11927]
12153
12154[[package]]
12155name = "substrate-test-client"
12156version = "2.0.1"
12157source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
12158dependencies = [
12159 "array-bytes 4.2.0",
12160 "async-trait",
12161 "futures 0.3.25",
12162 "parity-scale-codec 3.2.1",
12163 "sc-client-api",
12164 "sc-client-db",
12165 "sc-consensus",
12166 "sc-executor",
12167 "sc-offchain",
12168 "sc-service",
12169 "serde",
12170 "serde_json",
12171 "sp-blockchain",
12172 "sp-consensus",
12173 "sp-core",
12174 "sp-keyring",
12175 "sp-keystore",
12176 "sp-runtime",
12177 "sp-state-machine",
12178]
1217911928
12180[[package]]11929[[package]]
12181name = "substrate-test-utils"11930name = "substrate-test-utils"
12182version = "4.0.0-dev"11931version = "4.0.0-dev"
12183source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"11932source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51"
12184dependencies = [11933dependencies = [
12185 "futures 0.3.25",11934 "futures",
12186 "substrate-test-utils-derive",11935 "substrate-test-utils-derive",
12187 "tokio",11936 "tokio",
12188]11937]
1229312042
12294[[package]]12043[[package]]
12295name = "termcolor"12044name = "termcolor"
12296version = "1.1.3"12045version = "1.2.0"
12297source = "registry+https://github.com/rust-lang/crates.io-index"12046source = "registry+https://github.com/rust-lang/crates.io-index"
12298checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"12047checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
12299dependencies = [12048dependencies = [
12300 "winapi-util",12049 "winapi-util",
12301]12050]
12302
12303[[package]]
12304name = "terminal_size"
12305version = "0.1.17"
12306source = "registry+https://github.com/rust-lang/crates.io-index"
12307checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
12308dependencies = [
12309 "libc",
12310 "winapi",
12311]
1231212051
12313[[package]]12052[[package]]
12314name = "termtree"12053name = "termtree"
12315version = "0.4.0"12054version = "0.4.0"
12316source = "registry+https://github.com/rust-lang/crates.io-index"12055source = "registry+https://github.com/rust-lang/crates.io-index"
12317checksum = "95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8"12056checksum = "95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8"
12318
12319[[package]]
12320name = "test-runtime-constants"
12321version = "0.9.36"
12322source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
12323dependencies = [
12324 "frame-support",
12325 "polkadot-primitives",
12326 "polkadot-runtime-common",
12327 "smallvec",
12328 "sp-core",
12329 "sp-runtime",
12330 "sp-weights",
12331]
1233212057
12333[[package]]12058[[package]]
12334name = "tests"12059name = "tests"
12350 "pallet-timestamp",12075 "pallet-timestamp",
12351 "pallet-transaction-payment",12076 "pallet-transaction-payment",
12352 "pallet-unique",12077 "pallet-unique",
12353 "parity-scale-codec 3.2.1",12078 "parity-scale-codec",
12354 "scale-info",12079 "scale-info",
12355 "sp-core",12080 "sp-core",
12356 "sp-io",12081 "sp-io",
1249512220
12496[[package]]12221[[package]]
12497name = "tokio"12222name = "tokio"
12498version = "1.23.0"12223version = "1.24.2"
12499source = "registry+https://github.com/rust-lang/crates.io-index"12224source = "registry+https://github.com/rust-lang/crates.io-index"
12500checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46"12225checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb"
12501dependencies = [12226dependencies = [
12502 "autocfg",12227 "autocfg",
12503 "bytes",12228 "bytes",
1280112526
12802[[package]]12527[[package]]
12803name = "try-lock"12528name = "try-lock"
12804version = "0.2.3"12529version = "0.2.4"
12805source = "registry+https://github.com/rust-lang/crates.io-index"12530source = "registry+https://github.com/rust-lang/crates.io-index"
12806checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"12531checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
1280712532
12808[[package]]12533[[package]]
12809name = "try-runtime-cli"12534name = "try-runtime-cli"
12815 "frame-try-runtime",12540 "frame-try-runtime",
12816 "hex",12541 "hex",
12817 "log",12542 "log",
12818 "parity-scale-codec 3.2.1",12543 "parity-scale-codec",
12819 "sc-chain-spec",12544 "sc-chain-spec",
12820 "sc-cli",12545 "sc-cli",
12821 "sc-executor",12546 "sc-executor",
1283812563
12839[[package]]12564[[package]]
12840name = "trybuild"12565name = "trybuild"
12841version = "1.0.73"12566version = "1.0.76"
12842source = "registry+https://github.com/rust-lang/crates.io-index"12567source = "registry+https://github.com/rust-lang/crates.io-index"
12843checksum = "ed01de3de062db82c0920b5cabe804f88d599a3f217932292597c678c903754d"12568checksum = "6ed2c57956f91546d4d33614265a85d55c8e1ab91484853a10335894786d7db6"
12844dependencies = [12569dependencies = [
12845 "glob",12570 "glob",
12846 "once_cell",12571 "once_cell",
12884 "frame-benchmarking",12609 "frame-benchmarking",
12885 "jsonrpsee",12610 "jsonrpsee",
12886 "opal-runtime",12611 "opal-runtime",
12887 "pallet-common",
12888 "pallet-evm",12612 "pallet-evm",
12889 "parity-scale-codec 3.2.1",12613 "parity-scale-codec",
12890 "quartz-runtime",12614 "quartz-runtime",
12891 "rmrk-rpc",12615 "rmrk-rpc",
12892 "sc-client-api",12616 "sc-client-api",
12898 "sp-core",12622 "sp-core",
12899 "sp-externalities",12623 "sp-externalities",
12900 "sp-keystore",12624 "sp-keystore",
12901 "sp-rpc",
12902 "sp-runtime",12625 "sp-runtime",
12903 "sp-state-machine",12626 "sp-state-machine",
12904 "sp-trie",12627 "sp-trie",
1293112654
12932[[package]]12655[[package]]
12933name = "unicode-bidi"12656name = "unicode-bidi"
12934version = "0.3.8"12657version = "0.3.9"
12935source = "registry+https://github.com/rust-lang/crates.io-index"12658source = "registry+https://github.com/rust-lang/crates.io-index"
12936checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"12659checksum = "0046be40136ef78dc325e0edefccf84ccddacd0afcc1ca54103fa3c61bbdab1d"
1293712660
12938[[package]]12661[[package]]
12939name = "unicode-ident"12662name = "unicode-ident"
12975 "app-promotion-rpc",12698 "app-promotion-rpc",
12976 "clap",12699 "clap",
12977 "cumulus-client-cli",12700 "cumulus-client-cli",
12978 "cumulus-client-collator",
12979 "cumulus-client-consensus-aura",12701 "cumulus-client-consensus-aura",
12980 "cumulus-client-consensus-common",12702 "cumulus-client-consensus-common",
12981 "cumulus-client-network",12703 "cumulus-client-network",
12990 "fc-mapping-sync",12712 "fc-mapping-sync",
12991 "fc-rpc",12713 "fc-rpc",
12992 "fc-rpc-core",12714 "fc-rpc-core",
12993 "flexi_logger",
12994 "fp-rpc",12715 "fp-rpc",
12995 "frame-benchmarking",12716 "frame-benchmarking",
12996 "frame-benchmarking-cli",12717 "frame-benchmarking-cli",
12997 "futures 0.3.25",12718 "futures",
12998 "jsonrpsee",
12999 "log",12719 "log",
13000 "opal-runtime",12720 "opal-runtime",
13001 "pallet-ethereum",
13002 "pallet-transaction-payment-rpc",
13003 "pallet-transaction-payment-rpc-runtime-api",12721 "pallet-transaction-payment-rpc-runtime-api",
13004 "parity-scale-codec 3.2.1",12722 "parity-scale-codec",
13005 "parking_lot 0.12.1",
13006 "polkadot-cli",12723 "polkadot-cli",
13007 "polkadot-parachain",
13008 "polkadot-primitives",12724 "polkadot-primitives",
13009 "polkadot-service",12725 "polkadot-service",
13010 "polkadot-test-service",
13011 "quartz-runtime",12726 "quartz-runtime",
13012 "rmrk-rpc",12727 "rmrk-rpc",
13013 "sc-basic-authorship",12728 "sc-basic-authorship",
13014 "sc-chain-spec",12729 "sc-chain-spec",
13015 "sc-cli",12730 "sc-cli",
13016 "sc-client-api",12731 "sc-client-api",
13017 "sc-consensus",12732 "sc-consensus",
13018 "sc-consensus-aura",
13019 "sc-consensus-manual-seal",12733 "sc-consensus-manual-seal",
13020 "sc-executor",12734 "sc-executor",
13021 "sc-finality-grandpa",
13022 "sc-keystore",
13023 "sc-network",12735 "sc-network",
13024 "sc-rpc",
13025 "sc-rpc-api",
13026 "sc-service",12736 "sc-service",
13027 "sc-sysinfo",12737 "sc-sysinfo",
13028 "sc-telemetry",12738 "sc-telemetry",
13033 "sp-api",12743 "sp-api",
13034 "sp-block-builder",12744 "sp-block-builder",
13035 "sp-blockchain",12745 "sp-blockchain",
13036 "sp-consensus",
13037 "sp-consensus-aura",12746 "sp-consensus-aura",
13038 "sp-core",12747 "sp-core",
13039 "sp-finality-grandpa",
13040 "sp-inherents",
13041 "sp-io",12748 "sp-io",
13042 "sp-keystore",12749 "sp-keystore",
13043 "sp-offchain",12750 "sp-offchain",
13044 "sp-runtime",12751 "sp-runtime",
13045 "sp-session",12752 "sp-session",
13046 "sp-timestamp",12753 "sp-timestamp",
13047 "sp-transaction-pool",12754 "sp-transaction-pool",
13048 "sp-trie",
13049 "substrate-build-script-utils",12755 "substrate-build-script-utils",
13050 "substrate-frame-rpc-system",12756 "substrate-frame-rpc-system",
13051 "substrate-prometheus-endpoint",12757 "substrate-prometheus-endpoint",
13066dependencies = [12772dependencies = [
13067 "app-promotion-rpc",12773 "app-promotion-rpc",
13068 "fc-db",12774 "fc-db",
13069 "fc-mapping-sync",
13070 "fc-rpc",12775 "fc-rpc",
13071 "fc-rpc-core",12776 "fc-rpc-core",
13072 "fp-rpc",12777 "fp-rpc",
13073 "fp-storage",12778 "fp-storage",
13074 "futures 0.3.25",
13075 "jsonrpsee",12779 "jsonrpsee",
13076 "pallet-common",
13077 "pallet-ethereum",
13078 "pallet-transaction-payment-rpc",12780 "pallet-transaction-payment-rpc",
13079 "pallet-transaction-payment-rpc-runtime-api",
13080 "pallet-unique",
13081 "rmrk-rpc",12781 "rmrk-rpc",
13082 "sc-client-api",12782 "sc-client-api",
13083 "sc-consensus-aura",
13084 "sc-consensus-epochs",
13085 "sc-finality-grandpa",12783 "sc-finality-grandpa",
13086 "sc-finality-grandpa-rpc",
13087 "sc-keystore",
13088 "sc-network",12784 "sc-network",
13089 "sc-rpc",12785 "sc-rpc",
13090 "sc-rpc-api",12786 "sc-rpc-api",
13094 "sp-api",12790 "sp-api",
13095 "sp-block-builder",12791 "sp-block-builder",
13096 "sp-blockchain",12792 "sp-blockchain",
13097 "sp-consensus",
13098 "sp-consensus-aura",
13099 "sp-core",
13100 "sp-offchain",
13101 "sp-runtime",12793 "sp-runtime",
13102 "sp-session",
13103 "sp-storage",
13104 "sp-transaction-pool",
13105 "substrate-frame-rpc-system",12794 "substrate-frame-rpc-system",
13106 "tokio",
13107 "uc-rpc",12795 "uc-rpc",
13108 "up-common",12796 "up-common",
13109 "up-data-structs",12797 "up-data-structs",
13183 "pallet-unique",12871 "pallet-unique",
13184 "pallet-xcm",12872 "pallet-xcm",
13185 "parachain-info",12873 "parachain-info",
13186 "parity-scale-codec 3.2.1",12874 "parity-scale-codec",
13187 "polkadot-parachain",12875 "polkadot-parachain",
13188 "precompile-utils-macro",12876 "precompile-utils-macro",
13189 "rmrk-rpc",12877 "rmrk-rpc",
13190 "scale-info",12878 "scale-info",
13191 "serde",
13192 "smallvec",12879 "smallvec",
13193 "sp-api",12880 "sp-api",
13194 "sp-arithmetic",12881 "sp-arithmetic",
13263 "bondrewd",12950 "bondrewd",
13264 "derivative",12951 "derivative",
13265 "frame-support",12952 "frame-support",
13266 "frame-system",
13267 "pallet-evm",12953 "pallet-evm",
13268 "parity-scale-codec 3.2.1",12954 "parity-scale-codec",
13269 "rmrk-traits",12955 "rmrk-traits",
13270 "scale-info",12956 "scale-info",
13271 "serde",12957 "serde",
13279name = "up-pov-estimate-rpc"12965name = "up-pov-estimate-rpc"
13280version = "0.1.0"12966version = "0.1.0"
13281dependencies = [12967dependencies = [
13282 "parity-scale-codec 3.2.1",12968 "parity-scale-codec",
13283 "scale-info",12969 "scale-info",
13284 "serde",12970 "serde",
13285 "sp-api",12971 "sp-api",
13294dependencies = [12980dependencies = [
13295 "pallet-common",12981 "pallet-common",
13296 "pallet-evm",12982 "pallet-evm",
13297 "parity-scale-codec 3.2.1",12983 "parity-scale-codec",
13298 "sp-api",12984 "sp-api",
13299 "sp-core",12985 "sp-core",
13300 "sp-runtime",12986 "sp-runtime",
13522source = "registry+https://github.com/rust-lang/crates.io-index"13208source = "registry+https://github.com/rust-lang/crates.io-index"
13523checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"13209checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"
13524dependencies = [13210dependencies = [
13525 "futures 0.3.25",13211 "futures",
13526 "js-sys",13212 "js-sys",
13527 "parking_lot 0.11.2",13213 "parking_lot 0.11.2",
13528 "pin-utils",13214 "pin-utils",
13617checksum = "bcd849399d17d2270141cfe47fa0d91ee52d5f8ea9b98cf7ddde0d53e5f79882"13303checksum = "bcd849399d17d2270141cfe47fa0d91ee52d5f8ea9b98cf7ddde0d53e5f79882"
13618dependencies = [13304dependencies = [
13619 "anyhow",13305 "anyhow",
13620 "base64",13306 "base64 0.13.1",
13621 "bincode",13307 "bincode",
13622 "directories-next",13308 "directories-next",
13623 "file-per-thread-logger",13309 "file-per-thread-logger",
13786version = "0.9.36"13472version = "0.9.36"
13787source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"13473source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.36#dc25abc712e42b9b51d87ad1168e453a42b5f0bc"
13788dependencies = [13474dependencies = [
13789 "bitvec 1.0.1",13475 "bitvec",
13790 "frame-benchmarking",13476 "frame-benchmarking",
13791 "frame-election-provider-support",13477 "frame-election-provider-support",
13792 "frame-executive",13478 "frame-executive",
13837 "pallet-vesting",13523 "pallet-vesting",
13838 "pallet-xcm",13524 "pallet-xcm",
13839 "pallet-xcm-benchmarks",13525 "pallet-xcm-benchmarks",
13840 "parity-scale-codec 3.2.1",13526 "parity-scale-codec",
13841 "polkadot-parachain",13527 "polkadot-parachain",
13842 "polkadot-primitives",13528 "polkadot-primitives",
13843 "polkadot-runtime-common",13529 "polkadot-runtime-common",
13966checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"13652checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
13967dependencies = [13653dependencies = [
13968 "windows_aarch64_gnullvm",13654 "windows_aarch64_gnullvm",
13969 "windows_aarch64_msvc 0.42.0",13655 "windows_aarch64_msvc 0.42.1",
13970 "windows_i686_gnu 0.42.0",13656 "windows_i686_gnu 0.42.1",
13971 "windows_i686_msvc 0.42.0",13657 "windows_i686_msvc 0.42.1",
13972 "windows_x86_64_gnu 0.42.0",13658 "windows_x86_64_gnu 0.42.1",
13973 "windows_x86_64_gnullvm",13659 "windows_x86_64_gnullvm",
13974 "windows_x86_64_msvc 0.42.0",13660 "windows_x86_64_msvc 0.42.1",
13975]13661]
1397613662
13977[[package]]13663[[package]]
13978name = "windows_aarch64_gnullvm"13664name = "windows_aarch64_gnullvm"
13979version = "0.42.0"13665version = "0.42.1"
13980source = "registry+https://github.com/rust-lang/crates.io-index"13666source = "registry+https://github.com/rust-lang/crates.io-index"
13981checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"13667checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
1398213668
13983[[package]]13669[[package]]
13984name = "windows_aarch64_msvc"13670name = "windows_aarch64_msvc"
1399413680
13995[[package]]13681[[package]]
13996name = "windows_aarch64_msvc"13682name = "windows_aarch64_msvc"
13997version = "0.42.0"13683version = "0.42.1"
13998source = "registry+https://github.com/rust-lang/crates.io-index"13684source = "registry+https://github.com/rust-lang/crates.io-index"
13999checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"13685checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
1400013686
14001[[package]]13687[[package]]
14002name = "windows_i686_gnu"13688name = "windows_i686_gnu"
1401213698
14013[[package]]13699[[package]]
14014name = "windows_i686_gnu"13700name = "windows_i686_gnu"
14015version = "0.42.0"13701version = "0.42.1"
14016source = "registry+https://github.com/rust-lang/crates.io-index"13702source = "registry+https://github.com/rust-lang/crates.io-index"
14017checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"13703checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
1401813704
14019[[package]]13705[[package]]
14020name = "windows_i686_msvc"13706name = "windows_i686_msvc"
1403013716
14031[[package]]13717[[package]]
14032name = "windows_i686_msvc"13718name = "windows_i686_msvc"
14033version = "0.42.0"13719version = "0.42.1"
14034source = "registry+https://github.com/rust-lang/crates.io-index"13720source = "registry+https://github.com/rust-lang/crates.io-index"
14035checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"13721checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
1403613722
14037[[package]]13723[[package]]
14038name = "windows_x86_64_gnu"13724name = "windows_x86_64_gnu"
1404813734
14049[[package]]13735[[package]]
14050name = "windows_x86_64_gnu"13736name = "windows_x86_64_gnu"
14051version = "0.42.0"13737version = "0.42.1"
14052source = "registry+https://github.com/rust-lang/crates.io-index"13738source = "registry+https://github.com/rust-lang/crates.io-index"
14053checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"13739checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
1405413740
14055[[package]]13741[[package]]
14056name = "windows_x86_64_gnullvm"13742name = "windows_x86_64_gnullvm"
14057version = "0.42.0"13743version = "0.42.1"
14058source = "registry+https://github.com/rust-lang/crates.io-index"13744source = "registry+https://github.com/rust-lang/crates.io-index"
14059checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"13745checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
1406013746
14061[[package]]13747[[package]]
14062name = "windows_x86_64_msvc"13748name = "windows_x86_64_msvc"
1407213758
14073[[package]]13759[[package]]
14074name = "windows_x86_64_msvc"13760name = "windows_x86_64_msvc"
14075version = "0.42.0"13761version = "0.42.1"
14076source = "registry+https://github.com/rust-lang/crates.io-index"13762source = "registry+https://github.com/rust-lang/crates.io-index"
14077checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"13763checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
1407813764
14079[[package]]13765[[package]]
14080name = "winreg"13766name = "winreg"
14085 "winapi",13771 "winapi",
14086]13772]
14087
14088[[package]]
14089name = "wyz"
14090version = "0.2.0"
14091source = "registry+https://github.com/rust-lang/crates.io-index"
14092checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
1409313773
14094[[package]]13774[[package]]
14095name = "wyz"13775name = "wyz"
14119 "derivative",13799 "derivative",
14120 "impl-trait-for-tuples",13800 "impl-trait-for-tuples",
14121 "log",13801 "log",
14122 "parity-scale-codec 3.2.1",13802 "parity-scale-codec",
14123 "scale-info",13803 "scale-info",
14124 "sp-runtime",13804 "sp-runtime",
14125 "xcm-procedural",13805 "xcm-procedural",
14134 "frame-system",13814 "frame-system",
14135 "log",13815 "log",
14136 "pallet-transaction-payment",13816 "pallet-transaction-payment",
14137 "parity-scale-codec 3.2.1",13817 "parity-scale-codec",
14138 "polkadot-parachain",13818 "polkadot-parachain",
14139 "scale-info",13819 "scale-info",
14140 "sp-arithmetic",13820 "sp-arithmetic",
14154 "frame-support",13834 "frame-support",
14155 "impl-trait-for-tuples",13835 "impl-trait-for-tuples",
14156 "log",13836 "log",
14157 "parity-scale-codec 3.2.1",13837 "parity-scale-codec",
14158 "sp-arithmetic",13838 "sp-arithmetic",
14159 "sp-core",13839 "sp-core",
14160 "sp-io",13840 "sp-io",
14180source = "registry+https://github.com/rust-lang/crates.io-index"13860source = "registry+https://github.com/rust-lang/crates.io-index"
14181checksum = "e5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5"13861checksum = "e5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5"
14182dependencies = [13862dependencies = [
14183 "futures 0.3.25",13863 "futures",
14184 "log",13864 "log",
14185 "nohash-hasher",13865 "nohash-hasher",
14186 "parking_lot 0.12.1",13866 "parking_lot 0.12.1",
1423013910
14231[[package]]13911[[package]]
14232name = "zstd-sys"13912name = "zstd-sys"
14233version = "2.0.4+zstd.1.5.2"13913version = "2.0.5+zstd.1.5.2"
14234source = "registry+https://github.com/rust-lang/crates.io-index"13914source = "registry+https://github.com/rust-lang/crates.io-index"
14235checksum = "4fa202f2ef00074143e219d15b62ffc317d17cc33909feac471c044087cad7b0"13915checksum = "edc50ffce891ad571e9f9afe5039c4837bede781ac4bb13052ed7ae695518596"
14236dependencies = [13916dependencies = [
14237 "cc",13917 "cc",
14238 "libc",13918 "libc",
13919 "pkg-config",
14239]13920]
1424013921
modifiedCargo.tomldiffbeforeafterboth
--- 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 }
modifiedMakefilediffbeforeafterboth
--- 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
modifiedclient/rpc/Cargo.tomldiffbeforeafterboth
--- 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',
 ]
modifiedcrates/evm-coder/Cargo.tomldiffbeforeafterboth
--- 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 = []
modifiedcrates/evm-coder/procedural/Cargo.tomldiffbeforeafterboth
--- 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"] }
modifiedcrates/evm-coder/procedural/src/to_log.rsdiffbeforeafterboth
--- 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(),
modifiedcrates/evm-coder/src/lib.rsdiffbeforeafterboth
--- 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
modifiedcrates/struct-versioning/Cargo.tomldiffbeforeafterboth
--- 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
modifiednode/cli/Cargo.tomldiffbeforeafterboth
--- 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',
 ]
modifiednode/rpc/Cargo.tomldiffbeforeafterboth
--- 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 <support@uniquenetwork.io>']
-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']
modifiedpallets/app-promotion/Cargo.tomldiffbeforeafterboth
--- 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]
 
modifiedpallets/collator-selection/Cargo.tomldiffbeforeafterboth
--- 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 <admin@parity.io>", "Unique Network <support@uniquenetwork.io>"]
 description = "Simple staking pallet with a fixed stake."
-authors = ["Parity Technologies <admin@parity.io>", "Unique Network <support@uniquenetwork.io>"]
 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"]
modifiedpallets/common/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/common/src/erc.rsdiffbeforeafterboth
--- 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::{
modifiedpallets/common/src/eth.rsdiffbeforeafterboth
--- 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::<T>(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<T>(&self) -> evm_coder::execution::Result<T::CrossAccountId>
 	where
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- 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<T::CrossAccountId>;
+	fn token_owner(&self, token: TokenId) -> Result<T::CrossAccountId, TokenOwnerError>;
 
 	/// Returns 10 tokens owners in no particular order.
 	///
modifiedpallets/configuration/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/configuration/src/weights.rsdiffbeforeafterboth
--- 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<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// 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))
 	}
 }
modifiedpallets/evm-coder-substrate/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/evm-contract-helpers/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/evm-migration/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/evm-migration/src/weights.rsdiffbeforeafterboth
--- 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))
 	}
 }
modifiedpallets/evm-transaction-payment/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/foreign-assets/Cargo.tomldiffbeforeafterboth
--- 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']
modifiedpallets/foreign-assets/src/weights.rsdiffbeforeafterboth
--- 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))
 	}
modifiedpallets/fungible/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/fungible/src/common.rsdiffbeforeafterboth
--- 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<T::CrossAccountId> {
-		None
+	fn token_owner(&self, _token: TokenId) -> Result<T::CrossAccountId, TokenOwnerError> {
+		Err(TokenOwnerError::MultipleOwners)
 	}
 
 	/// Returns 10 tokens owners in no particular order.
modifiedpallets/fungible/src/weights.rsdiffbeforeafterboth
--- 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))
 	}
modifiedpallets/identity/Cargo.tomldiffbeforeafterboth
--- 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 <admin@parity.io>", "Unique Network <support@uniquenetwork.io>"]
+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"]
modifiedpallets/identity/src/benchmarking.rsdiffbeforeafterboth
--- 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::<BalanceOf<T>, 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::<BalanceOf<T>, T::MaxRegistrars, T::MaxAdditionalFields> {
 				judgements: Default::default(),
 				deposit: Default::default(),
@@ -446,6 +446,23 @@
 		let identities = identities.into_iter().map(|(acc, _)| acc).collect::<Vec<_>>();
 	}: _<T::RuntimeOrigin>(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::<T>::max_value(),
+					create_sub_accounts::<T>(&caller, s).unwrap().try_into().unwrap(),
+				),
+			)
+		}).collect::<Vec<_>>();
+		let origin = T::ForceOrigin::successful_origin();
+	}: _<T::RuntimeOrigin>(origin, identities)
+
 	add_sub {
 		let s in 0 .. T::MaxSubAccounts::get() - 1;
 
modifiedpallets/identity/src/lib.rsdiffbeforeafterboth
--- a/pallets/identity/src/lib.rs
+++ b/pallets/identity/src/lib.rs
@@ -314,6 +314,8 @@
 			main: T::AccountId,
 			deposit: BalanceOf<T>,
 		},
+		/// 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::<T>::set(identity, None);
+				let (_, sub_ids) = <SubsOf<T>>::take(&identity);
+				<IdentityOf<T>>::remove(&identity);
+				for sub in sub_ids.iter() {
+					<SuperOf<T>>::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<T>,
+			subs: Vec<(
+				T::AccountId,
+				(
+					BalanceOf<T>,
+					BoundedVec<(T::AccountId, Data), T::MaxSubAccounts>,
+				),
+			)>,
+		) -> DispatchResult {
+			T::ForceOrigin::ensure_origin(origin)?;
+			for identity in subs.clone() {
+				let account = identity.0;
+				let (_, old_subs) = <SubsOf<T>>::get(&account);
+				for old_sub in old_subs {
+					<SuperOf<T>>::remove(old_sub);
+				}
+
+				let mut ids = BoundedVec::<T::AccountId, T::MaxSubAccounts>::default();
+				for (id, name) in identity.1 .1 {
+					<SuperOf<T>>::insert(&id, (account.clone(), name));
+					ids.try_push(id)
+						.expect("subs length is less than T::MaxSubAccounts; qed");
+				}
+
+				if ids.is_empty() {
+					<SubsOf<T>>::remove(&account);
+				} else {
+					<SubsOf<T>>::insert(account, (identity.1 .0, ids));
+				}
+			}
+			Self::deposit_event(Event::SubIdentitiesInserted {
+				amount: subs.len() as u32,
+			});
+			Ok(())
+		}
 	}
 }
 
modifiedpallets/identity/src/weights.rsdiffbeforeafterboth
--- 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)
modifiedpallets/inflation/Cargo.tomldiffbeforeafterboth
--- 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" }
modifiedpallets/maintenance/Cargo.tomldiffbeforeafterboth
--- 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 <support@uniquenetwork.io>"]
+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"]
modifiedpallets/nonfungible/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/nonfungible/src/common.rsdiffbeforeafterboth
--- 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(<TokensMinted<T>>::get(self.id))
 	}
 
-	fn token_owner(&self, token: TokenId) -> Option<T::CrossAccountId> {
-		<TokenData<T>>::get((self.id, token)).map(|t| t.owner)
+	fn token_owner(&self, token: TokenId) -> Result<T::CrossAccountId, TokenOwnerError> {
+		<TokenData<T>>::get((self.id, token))
+			.map(|t| t.owner)
+			.ok_or(TokenOwnerError::NotFound)
 	}
 
 	/// Returns token owners.
 	fn token_owners(&self, token: TokenId) -> Vec<T::CrossAccountId> {
-		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<PropertyValue> {
modifiedpallets/nonfungible/src/erc.rsdiffbeforeafterboth
--- 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<eth::CrossAddress> {
 		Self::token_owner(&self, token_id.try_into()?)
 			.map(|o| eth::CrossAddress::from_sub_cross_account::<T>(&o))
-			.ok_or(Error::Revert("key too large".into()))
+			.map_err(|_| Error::Revert("token not found".into()))
 	}
 
 	/// Returns the token properties.
modifiedpallets/nonfungible/src/weights.rsdiffbeforeafterboth
--- 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<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// 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))
 	}
modifiedpallets/proxy-rmrk-core/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth
--- 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::<DispatchError>(<Error<T>>::NoPermission.into())?;
 
 					approval_required = cross_sender != target_nft_owner;
 
@@ -989,7 +990,8 @@
 
 			let nft_owner =
 				<PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)
-					.map_err(|_| <Error<T>>::ResourceDoesntExist)?;
+					.map_err(|_| <Error<T>>::ResourceDoesntExist)?
+					.ok_or::<DispatchError>(<Error<T>>::NoPermission.into())?;
 
 			Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| {
 				ensure!(res.pending, <Error<T>>::ResourceNotPending);
@@ -1044,7 +1046,8 @@
 
 			let nft_owner =
 				<PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)
-					.map_err(|_| <Error<T>>::ResourceDoesntExist)?;
+					.map_err(|_| <Error<T>>::ResourceDoesntExist)?
+					.ok_or::<DispatchError>(<Error<T>>::NoPermission.into())?;
 
 			ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);
 
@@ -1666,7 +1669,8 @@
 		let budget = budget::Value::new(NESTING_BUDGET);
 
 		let nft_owner = <PalletStructure<T>>::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::<DispatchError>(<Error<T>>::NoPermission.into())?;
 
 		let pending = sender != nft_owner;
 
@@ -1720,7 +1724,8 @@
 
 		let budget = up_data_structs::budget::Value::new(NESTING_BUDGET);
 		let topmost_owner =
-			<PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)?;
+			<PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)?
+				.ok_or::<DispatchError>(<Error<T>>::NoPermission.into())?;
 
 		let sender = T::CrossAccountId::from_sub(sender);
 		if topmost_owner == sender {
modifiedpallets/proxy-rmrk-core/src/rpc.rsdiffbeforeafterboth
--- 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 = <Pallet<T>>::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 {
modifiedpallets/proxy-rmrk-equip/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/refungible/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/refungible/src/common.rsdiffbeforeafterboth
--- 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(<TokensMinted<T>>::get(self.id))
 	}
 
-	fn token_owner(&self, token: TokenId) -> Option<T::CrossAccountId> {
+	fn token_owner(&self, token: TokenId) -> Result<T::CrossAccountId, TokenOwnerError> {
 		<Pallet<T>>::token_owner(self.id, token)
 	}
 
modifiedpallets/refungible/src/erc.rsdiffbeforeafterboth
--- 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 = <Pallet<T>>::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<eth::CrossAddress> {
 		Self::token_owner(&self, token_id.try_into()?)
 			.map(|o| eth::CrossAddress::from_sub_cross_account::<T>(&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.
modifiedpallets/refungible/src/lib.rsdiffbeforeafterboth
--- 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 @@
 			<Balance<T>>::remove((collection.id, token, owner));
 			<AccountBalance<T>>::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) {
 				<PalletEvm<T>>::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<T::CrossAccountId> {
+	fn token_owner(
+		collection_id: CollectionId,
+		token_id: TokenId,
+	) -> Result<T::CrossAccountId, TokenOwnerError> {
 		let mut owner = None;
 		let mut count = 0;
 		for key in Balance::<T>::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<u128> {
modifiedpallets/refungible/src/weights.rsdiffbeforeafterboth
--- 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<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	// 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))
 	}
modifiedpallets/scheduler-v2/Cargo.tomldiffbeforeafterboth
--- 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 <support@uniquenetwork.io>"]
+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"]
modifiedpallets/structure/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedpallets/structure/src/lib.rsdiffbeforeafterboth
--- 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<T::CrossAccountId, DispatchError> {
+	) -> Result<Option<T::CrossAccountId>, 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(<Error<T>>::DepthLimit)??;
 
 		Ok(match owner {
-			Parent::User(v) => v,
+			Parent::User(v) => Some(v),
+			Parent::MultipleOwners => None,
 			_ => fail!(<Error<T>>::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<T::CrossAccountId, DispatchError> {
+	) -> Result<Option<T::CrossAccountId>, DispatchError> {
 		// Tried to nest token in itself
 		if Some((collection, token)) == for_nest {
 			return Err(<Error<T>>::OuroborosDetected.into());
@@ -242,8 +257,9 @@
 					return Err(<Error<T>>::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(<Error<T>>::TokenNotFound.into()),
+				Parent::MultipleOwners => return Ok(None),
 				// Continue parent chain
 				Parent::Token(_, _) => {}
 			}
@@ -284,12 +300,17 @@
 		budget: &dyn Budget,
 	) -> Result<bool, DispatchError> {
 		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
modifiedpallets/structure/src/weights.rsdiffbeforeafterboth
--- 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))
 	}
 }
modifiedpallets/unique/Cargo.tomldiffbeforeafterboth
--- 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' }
modifiedpallets/unique/src/weights.rsdiffbeforeafterboth
--- 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))
 	}
modifiedprimitives/app_promotion_rpc/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedprimitives/common/Cargo.tomldiffbeforeafterboth
--- 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" }
modifiedprimitives/common/src/constants.rsdiffbeforeafterboth
--- 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 = /*<weight2fee>*/77_071_069_464_131_590/*</weight2fee>*/;
+pub const WEIGHT_TO_FEE_COEFF: u64 = /*<weight2fee>*/77_191_946_012_018_089/*</weight2fee>*/;
 
 // Targeting 0.15 UNQ per transfer via ETH
-pub const MIN_GAS_PRICE: u64 = /*<mingasprice>*/1_014_754_530_878/*</mingasprice>*/;
+pub const MIN_GAS_PRICE: u64 = /*<mingasprice>*/1_016_390_998_841/*</mingasprice>*/;
 
 /// 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.
modifiedprimitives/data-structs/Cargo.tomldiffbeforeafterboth
--- a/primitives/data-structs/Cargo.toml
+++ b/primitives/data-structs/Cargo.toml
@@ -1,50 +1,40 @@
 [package]
-name = "up-data-structs"
 authors = ["Unique Network <support@uniquenetwork.io>"]
 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 = []
modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
--- 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.
modifiedprimitives/pov-estimate-rpc/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedprimitives/rmrk-rpc/Cargo.tomldiffbeforeafterboth
--- 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"]
modifiedprimitives/rmrk-traits/Cargo.tomldiffbeforeafterboth
--- a/primitives/rmrk-traits/Cargo.toml
+++ b/primitives/rmrk-traits/Cargo.toml
@@ -1,23 +1,19 @@
 [package]
-name = "rmrk-traits"
 authors = ["Unique Network <support@uniquenetwork.io>"]
 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"]
modifiedprimitives/rpc/Cargo.tomldiffbeforeafterboth
--- 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",
 ]
modifiedruntime/common/ethereum/precompiles/utils/macro/Cargo.tomldiffbeforeafterboth
--- 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"] }
modifiedruntime/common/runtime_apis.rsdiffbeforeafterboth
--- 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 = <Runtime as pallet_common::Config>::CollectionDispatch::dispatch(<pallet_common::CollectionHandle<Runtime>>::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<Option<CrossAccountId>, DispatchError> {
-                    dispatch_unique_runtime!(collection.token_owner(token))
+                    dispatch_unique_runtime!(collection.token_owner(token).ok())
                 }
 
                 fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec::<CrossAccountId>, DispatchError>  {
@@ -83,7 +83,7 @@
                 fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>, DispatchError> {
                     let budget = up_data_structs::budget::Value::new(10);
 
-                    Ok(Some(<pallet_structure::Pallet<Runtime>>::find_topmost_owner(collection, token, &budget)?))
+                    Ok(<pallet_structure::Pallet<Runtime>>::find_topmost_owner(collection, token, &budget)?)
                 }
                 fn token_children(collection: CollectionId, token: TokenId) -> Result<Vec<TokenChild>, DispatchError> {
                     Ok(<pallet_nonfungible::Pallet<Runtime>>::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)
                 }
modifiedruntime/opal/Cargo.tomldiffbeforeafterboth
--- 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" }
modifiedruntime/quartz/Cargo.tomldiffbeforeafterboth
--- 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" }
modifiedruntime/tests/Cargo.tomldiffbeforeafterboth
--- 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" }
modifiedruntime/unique/Cargo.tomldiffbeforeafterboth
--- 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" }
deletedsmart_contracs/transfer/.gitignorediffbeforeafterboth
--- 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
deletedsmart_contracs/transfer/Cargo.tomldiffbeforeafterboth
--- 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 = []
deletedsmart_contracs/transfer/lib.rsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
-
-#![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 =
-        <DefaultEnvironment as Environment>::MAX_EVENT_TOPICS;
-
-    type AccountId = <DefaultEnvironment as Environment>::AccountId;
-    type Balance = <DefaultEnvironment as Environment>::Balance;
-    type Hash = <DefaultEnvironment as Environment>::Hash;
-    type BlockNumber = <DefaultEnvironment as Environment>::BlockNumber;
-    type Timestamp = <DefaultEnvironment as Environment>::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<u8>,
-    },
-    Fungible {
-        value: u128,
-    },
-    ReFungible {
-        const_data: Vec<u8>,
-        pieces: u128,
-    },
-}
-
-type DefaultAccountId = <DefaultEnvironment as Environment>::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<CreateItemData>);
-    #[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<CreateItemData>) {
-            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);
-        }
-
-    }
-
-}
modifiedtest-pallets/utils/Cargo.tomldiffbeforeafterboth
--- 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"]
deletedtests/flipper-src/.gitignorediffbeforeafterboth
--- 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
deletedtests/flipper-src/Cargo.tomldiffbeforeafterboth
--- a/tests/flipper-src/Cargo.toml
+++ /dev/null
@@ -1,35 +0,0 @@
-[package]
-name = "flipper"
-version = "3.0.0-rc1"
-authors = ["Parity Technologies <admin@parity.io>"]
-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 = []
deletedtests/flipper-src/build.shdiffbeforeafterboth
--- 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
deletedtests/flipper-src/lib.rsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
-
-// 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
deletedtests/ink-types-node-runtime/.gitignorediffbeforeafterboth
--- 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
deletedtests/ink-types-node-runtime/Cargo.tomldiffbeforeafterboth
--- 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 <admin@parity.io>"]
-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",
-]
deletedtests/ink-types-node-runtime/README.mddiffbeforeafterboth
--- 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
deletedtests/ink-types-node-runtime/examples/calls/.gitignorediffbeforeafterboth
--- 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
deletedtests/ink-types-node-runtime/examples/calls/.ink/abi_gen/Cargo.tomldiffbeforeafterboth
--- 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 <admin@parity.io>"]
-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"
deletedtests/ink-types-node-runtime/examples/calls/.ink/abi_gen/main.rsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
-
-fn main() -> Result<(), std::io::Error> {
-    let abi = <contract::Calls as ink_lang::GenerateAbi>::generate_abi();
-    let contents = serde_json::to_string_pretty(&abi)?;
-    std::fs::create_dir("target").ok();
-    std::fs::write("target/metadata.json", contents)?;
-    Ok(())
-}
deletedtests/ink-types-node-runtime/examples/calls/Cargo.tomldiffbeforeafterboth
--- 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 <admin@parity.io>"]
-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"
-]
deletedtests/ink-types-node-runtime/examples/calls/lib.rsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
-
-#![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);
-        }
-    }
-}
deletedtests/ink-types-node-runtime/src/calls.rsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
-
-// 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 <http://www.gnu.org/licenses/>.
-
-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<NodeRuntimeTypes, AccountIndex>),
-}
-
-impl From<Balances<NodeRuntimeTypes, AccountIndex>> for Call {
-    fn from(balances_call: Balances<NodeRuntimeTypes, AccountIndex>) -> Call {
-        Call::Balances(balances_call)
-    }
-}
-/// Generic Balance Call, could be used with other runtimes
-#[derive(Encode, Decode, Clone, PartialEq, Eq)]
-pub enum Balances<T, AccountIndex>
-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<T::AccountId, AccountIndex>,
-        #[codec(compact)] T::Balance,
-        #[codec(compact)] T::Balance,
-    ),
-}
-
-/// Construct a `Balances::transfer` call
-pub fn transfer_balance(account: AccountId, balance: Balance) -> Call {
-    Balances::<NodeRuntimeTypes, AccountIndex>::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::<NodeRuntimeTypes, AccountIndex>::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::<Runtime>::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);
-    }
-}
deletedtests/ink-types-node-runtime/src/lib.rsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
-
-// 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 <http://www.gnu.org/licenses/>.
-
-//! 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<AccountId32> 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::<u8>()).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<Hash, TryFromSliceError> {
-        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;
-}
deletedtests/loadtester-src/.gitignorediffbeforeafterboth
--- 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
deletedtests/loadtester-src/Cargo.tomldiffbeforeafterboth
--- 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 = []
deletedtests/loadtester-src/lib.rsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
-
-// 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<u64>,
-    }
-
-    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]);
-        }
-    }
-}
modifiedtests/package.jsondiffbeforeafterboth
--- 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",
addedtests/src/collator-selection/collatorSelection.seqtest.tsdiffbeforeafterboth
--- /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 <http://www.gnu.org/licenses/>.
+
+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<void>(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
addedtests/src/collator-selection/identity.seqtest.tsdiffbeforeafterboth
--- /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 <http://www.gnu.org/licenses/>.
+
+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]);
+    });
+  });
+});
deletedtests/src/collatorSelection.seqtest.tsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
-
-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<void>(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
modifiedtests/src/eth/fractionalizer/fractionalizer.test.tsdiffbeforeafterboth
--- 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);
deletedtests/src/identity.seqtest.tsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
-
-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]);
-    });
-  });
-});
modifiedtests/src/nesting/nest.test.tsdiffbeforeafterboth
--- 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 <http://www.gnu.org/licenses/>.
 
 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', () => {
modifiedtests/src/util/identitySetter.tsdiffbeforeafterboth
--- 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<void> => {
   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');