git.delta.rocks / unique-network / refs/commits / 8afee3577b13

difftreelog

Merge branch 'feature/multi-assets-redone' of https://github.com/UniqueNetwork/unique-chain into feature/multi-assets-redone

Dev2022-08-30parents: #e413fd6 #102f1fa.patch.diff
in: master

26 files changed

modified.docker/Dockerfile-parachain-upgrade-datadiffbeforeafterboth
--- a/.docker/Dockerfile-parachain-upgrade-data
+++ b/.docker/Dockerfile-parachain-upgrade-data
@@ -108,9 +108,9 @@
 COPY --from=builder-polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/
 COPY --from=builder-polkadot /unique_parachain/polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm /polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm
 
-ARG FORK_FROM=
-ENV FORK_FROM=$FORK_FROM
-CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" FORK_FROM && \
+ARG REPLICA_FROM=
+ENV REPLICA_FROM=$REPLICA_FROM
+CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" REPLICA_FROM && \
     [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
     cd /polkadot-launch && \
     yarn start launch-config.json --test-upgrade-parachains
added.docker/Dockerfile-testnetdiffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-testnet
@@ -0,0 +1,96 @@
+# ===== Rust builder =====
+FROM ubuntu:20.04 as rust-builder
+LABEL maintainer="Unique.Network"
+
+ARG RUST_TOOLCHAIN=
+
+ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+ENV TZ=UTC
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+RUN apt-get update && \
+    apt-get install -y curl cmake pkg-config libssl-dev git clang llvm libudev-dev && \
+    apt-get clean && \
+    rm -r /var/lib/apt/lists/*
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+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 FEATURE=
+ARG BRANCH=
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $BRANCH https://github.com/UniqueNetwork/unique-chain.git && \
+    cd unique-chain && \
+    cargo build --features=$FEATURE --$PROFILE
+
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot
+
+ARG POLKADOT_BUILD_BRANCH=
+ENV POLKADOT_BUILD_BRANCH $POLKADOT_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $POLKADOT_BUILD_BRANCH --depth 1 https://github.com/paritytech/polkadot.git && \
+    cd polkadot && \
+    cargo build --release
+
+# ===== RUN ======
+
+FROM ubuntu:20.04
+
+ARG POLKADOT_LAUNCH_BRANCH=
+ENV POLKADOT_LAUNCH_BRANCH $POLKADOT_LAUNCH_BRANCH
+
+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/target/release/unique-collator /unique-chain/target/release/
+COPY --from=builder-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
+
+
added.docker/Dockerfile-testnet.j2diffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-testnet.j2
@@ -0,0 +1,96 @@
+# ===== Rust builder =====
+FROM ubuntu:20.04 as rust-builder
+LABEL maintainer="Unique.Network"
+
+#ARG RUST_TOOLCHAIN=
+
+#ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+ENV TZ=UTC
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+RUN apt-get update && \
+    apt-get install -y curl cmake pkg-config libssl-dev git clang llvm libudev-dev && \
+    apt-get clean && \
+    rm -r /var/lib/apt/lists/*
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+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 FEATURE=
+#ARG BRANCH=
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b {{ BRANCH }} https://github.com/UniqueNetwork/unique-chain.git && \
+    cd unique-chain && \
+    cargo build --features={{ FEATURE }} --$PROFILE
+
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot
+
+#ARG POLKADOT_BUILD_BRANCH=
+#ENV POLKADOT_BUILD_BRANCH $POLKADOT_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b {{ POLKADOT_BUILD_BRANCH }} --depth 1 https://github.com/paritytech/polkadot.git && \
+    cd polkadot && \
+    cargo build --release
+
+# ===== RUN ======
+
+FROM ubuntu:20.04
+
+#ARG POLKADOT_LAUNCH_BRANCH=
+#ENV POLKADOT_LAUNCH_BRANCH $POLKADOT_LAUNCH_BRANCH
+
+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/target/release/unique-collator /unique-chain/target/release/
+COPY --from=builder-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-try-runtimediffbeforeafterboth
--- a/.docker/Dockerfile-try-runtime
+++ b/.docker/Dockerfile-try-runtime
@@ -34,17 +34,17 @@
 
 ARG PROFILE=release
 ARG FEATURE=
-ARG FORK_FROM=
+ARG REPLICA_FROM=
 ENV FEATURE $FEATURE
-ENV FORK_FROM $FORK_FROM
+ENV REPLICA_FROM $REPLICA_FROM
 
 COPY . /unique_parachain
 WORKDIR /unique_parachain
 
 
 RUN echo "Requested features: $FEATURE\n" && \
-    echo "Fork from: $FORK_FROM\n" && \
+    echo "Fork from: $REPLICA_FROM\n" && \
     cargo build --features=$FEATURE --release
     
 
-CMD cargo run --features=$FEATURE --release -- try-runtime on-runtime-upgrade live --uri $FORK_FROM
+CMD cargo run --features=$FEATURE --release -- try-runtime on-runtime-upgrade live --uri $REPLICA_FROM
added.docker/Dockerfile-xcmdiffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-xcm
@@ -0,0 +1,146 @@
+# ===== Rust builder =====
+FROM ubuntu:20.04 as rust-builder
+LABEL maintainer="Unique.Network"
+
+ARG RUST_TOOLCHAIN=
+
+ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+ENV TZ=UTC
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+RUN apt-get update && \
+    apt-get install -y curl cmake pkg-config libssl-dev git clang llvm libudev-dev && \
+    apt-get clean && \
+    rm -r /var/lib/apt/lists/*
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+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 FEATURE=
+ARG BRANCH=
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $BRANCH https://github.com/UniqueNetwork/unique-chain.git && \
+    cd unique-chain && \
+    cargo build --features=$FEATURE --$PROFILE
+
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot
+
+ARG POLKADOT_BUILD_BRANCH=
+ENV POLKADOT_BUILD_BRANCH $POLKADOT_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $POLKADOT_BUILD_BRANCH --depth 1 https://github.com/paritytech/polkadot.git && \
+    cd polkadot && \
+    cargo build --release
+
+# ===== BUILD ACALA =====
+FROM rust-builder as builder-acala
+
+ARG ACALA_BUILD_BRANCH=
+ENV ACALA_BUILD_BRANCH $ACALA_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $ACALA_BUILD_BRANCH --depth 1 https://github.com/AcalaNetwork/Acala.git && \
+    cd Acala && \
+    make init && \
+    make build-release
+
+# ===== BUILD MOONBEAM =====
+FROM rust-builder as builder-moonbeam
+
+ARG MOONBEAM_BUILD_BRANCH=
+ENV MOONBEAM_BUILD_BRANCH $MOONBEAM_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $MOONBEAM_BUILD_BRANCH --depth 1 https://github.com/PureStake/moonbeam.git && \
+    cd moonbeam && \
+    cargo build --release
+
+# ===== BUILD CUMULUS =====
+FROM rust-builder as builder-cumulus
+
+ARG CUMULUS_BUILD_BRANCH=
+ENV CUMULUS_BUILD_BRANCH $CUMULUS_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b $CUMULUS_BUILD_BRANCH --depth 1 https://github.com/paritytech/cumulus.git && \
+    cd cumulus && \
+    cargo build --release
+
+# ===== BUILD CHAINQL =====
+FROM rust-builder as builder-chainql
+
+RUN mkdir chainql
+WORKDIR /chainql
+
+RUN git clone -b v0.1.0 --depth 1 https://github.com/CertainLach/chainql.git . && \
+    cargo build --release
+
+# ===== RUN ======
+
+FROM ubuntu:20.04
+
+ARG POLKADOT_LAUNCH_BRANCH=
+ENV POLKADOT_LAUNCH_BRANCH $POLKADOT_LAUNCH_BRANCH
+
+RUN apt-get -y update && \
+      apt-get -y install curl git jsonnet && \
+      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/target/release/unique-collator /unique-chain/target/release/
+COPY --from=builder-polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/
+COPY --from=builder-moonbeam /unique_parachain/moonbeam/target/release/moonbeam /moonbeam/target/release/
+COPY --from=builder-cumulus /unique_parachain/cumulus/target/release/polkadot-parachain /cumulus/target/release/cumulus
+COPY --from=builder-acala /unique_parachain/Acala/target/production/acala /acala/target/release/
+COPY --from=builder-chainql /chainql/target/release/chainql /chainql/target/release/
+
+EXPOSE 9844
+EXPOSE 9944
+EXPOSE 9946
+EXPOSE 9947
+EXPOSE 9948
+
+CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    yarn start launch-config.json
added.docker/Dockerfile-xcm.j2diffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-xcm.j2
@@ -0,0 +1,153 @@
+# ===== Rust builder =====
+FROM ubuntu:20.04 as rust-builder
+LABEL maintainer="Unique.Network"
+
+#ARG RUST_TOOLCHAIN=
+
+#ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+ENV TZ=UTC
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+RUN apt-get update && \
+    apt-get install -y curl cmake pkg-config libssl-dev git clang llvm libudev-dev && \
+    apt-get clean && \
+    rm -r /var/lib/apt/lists/*
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+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 FEATURE=
+#ARG BRANCH=
+
+WORKDIR /unique_parachain
+
+COPY ./xcm-config/launch-config-xcm-{{ NETWORK }}.json ./launch-config-xcm-{{ NETWORK }}.json
+COPY ./xcm-config/5validators.jsonnet ./5validators.jsonnet
+COPY ./xcm-config/minBondFix.jsonnet ./minBondFix.jsonnet
+
+RUN git clone -b {{ BRANCH }} https://github.com/UniqueNetwork/unique-chain.git && \
+    cd unique-chain && \
+    cargo build --features={{ FEATURE }} --$PROFILE
+
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot
+
+#ARG POLKADOT_BUILD_BRANCH=
+#ENV POLKADOT_BUILD_BRANCH $POLKADOT_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b {{ POLKADOT_BUILD_BRANCH }} --depth 1 https://github.com/paritytech/polkadot.git && \
+    cd polkadot && \
+    cargo build --release
+
+# ===== BUILD ACALA =====
+FROM rust-builder as builder-acala
+
+#ARG ACALA_BUILD_BRANCH=
+#ENV ACALA_BUILD_BRANCH $ACALA_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b {{ ACALA_BUILD_BRANCH }} --depth 1 https://github.com/AcalaNetwork/Acala.git && \
+    cd Acala && \
+    make init && \
+    make build-release
+
+# ===== BUILD MOONBEAM =====
+FROM rust-builder as builder-moonbeam
+
+#ARG MOONBEAM_BUILD_BRANCH=
+#ENV MOONBEAM_BUILD_BRANCH $MOONBEAM_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b {{ MOONBEAM_BUILD_BRANCH }} --depth 1 https://github.com/PureStake/moonbeam.git && \
+    cd moonbeam && \
+    cargo build --release
+
+# ===== BUILD CUMULUS =====
+FROM rust-builder as builder-cumulus
+
+#ARG CUMULUS_BUILD_BRANCH=
+#ENV CUMULUS_BUILD_BRANCH $CUMULUS_BUILD_BRANCH
+
+
+WORKDIR /unique_parachain
+
+RUN git clone -b {{ CUMULUS_BUILD_BRANCH }} --depth 1 https://github.com/paritytech/cumulus.git && \
+    cd cumulus && \
+    cargo build --release
+
+# ===== BUILD CHAINQL =====
+FROM rust-builder as builder-chainql
+
+RUN mkdir chainql
+WORKDIR /chainql
+
+RUN git clone -b v0.1.0 --depth 1 https://github.com/CertainLach/chainql.git . && \
+    cargo build --release
+
+# ===== RUN ======
+
+FROM ubuntu:20.04
+
+#ARG POLKADOT_LAUNCH_BRANCH=
+#ENV POLKADOT_LAUNCH_BRANCH $POLKADOT_LAUNCH_BRANCH
+
+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/launch-config-xcm-{{ NETWORK }}.json /polkadot-launch/
+COPY --from=builder-unique /unique_parachain/5validators.jsonnet /polkadot-launch/5validators.jsonnet
+COPY --from=builder-unique /unique_parachain/minBondFix.jsonnet /polkadot-launch/minBondFix.jsonnet
+
+COPY --from=builder-unique /unique_parachain/unique-chain/target/release/unique-collator /unique-chain/target/release/
+COPY --from=builder-polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/
+COPY --from=builder-moonbeam /unique_parachain/moonbeam/target/release/moonbeam /moonbeam/target/release/
+COPY --from=builder-cumulus /unique_parachain/cumulus/target/release/polkadot-parachain /cumulus/target/release/cumulus
+COPY --from=builder-acala /unique_parachain/Acala/target/production/acala /acala/target/release/
+COPY --from=builder-chainql /chainql/target/release/chainql /chainql/target/release/
+
+EXPOSE 9844
+EXPOSE 9944
+EXPOSE 9946
+EXPOSE 9947
+EXPOSE 9948
+
+CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    yarn start launch-config-xcm-{{ NETWORK }}.json
added.docker/docker-compose-testnet.ymldiffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose-testnet.yml
@@ -0,0 +1,17 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      context: ../
+      dockerfile: .docker/Dockerfile-testnet
+    expose:
+      - 9844
+      - 9944
+    ports:
+      - 127.0.0.1:9844:9844
+      - 127.0.0.1:9944:9944
+    logging:
+      options:
+        max-size: "1m"
+        max-file: "3"
added.docker/docker-compose-xcm.ymldiffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose-xcm.yml
@@ -0,0 +1,23 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      context: ../
+      dockerfile: .docker/Dockerfile-xcm
+    expose:
+      - 9844
+      - 9944
+      - 9946
+      - 9947
+      - 9948
+    ports:
+      - 127.0.0.1:9844:9844
+      - 127.0.0.1:9944:9944
+      - 127.0.0.1:9946:9946
+      - 127.0.0.1:9947:9947
+      - 127.0.0.1:9948:9948
+    logging:
+      options:
+        max-size: "1m"
+        max-file: "3"
modified.docker/docker-compose.tmp-forkless-data.j2diffbeforeafterboth
--- a/.docker/docker-compose.tmp-forkless-data.j2
+++ b/.docker/docker-compose.tmp-forkless-data.j2
@@ -12,7 +12,7 @@
         - "POLKADOT_BUILD_BRANCH={{ POLKADOT_BUILD_BRANCH }}"
         - "MAINNET_TAG={{ MAINNET_TAG }}"
         - "MAINNET_BRANCH={{ MAINNET_BRANCH }}"
-        - "FORK_FROM={{ FORK_FROM }}"
+        - "REPLICA_FROM={{ REPLICA_FROM }}"
       context: ../
       dockerfile: .docker/Dockerfile-parachain-upgrade-data
     image: node-parachain
added.docker/docker-compose.tmp-testnet.j2diffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose.tmp-testnet.j2
@@ -0,0 +1,18 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      args:
+        - "RUST_TOOLCHAIN={{ RUST_TOOLCHAIN }}"
+        - "BRANCH={{ BRANCH }}"
+        - "FEATURE={{ FEATURE }}"
+        - "POLKADOT_BUILD_BRANCH={{ POLKADOT_BUILD_BRANCH }}"
+        - "POLKADOT_LAUNCH_BRANCH={{ POLKADOT_LAUNCH_BRANCH }}"
+    image: testnet_node_{{ NETWORK }}
+    container_name: testnet_node_{{ NETWORK }}
+    volumes:
+       - type: bind
+         source: ./testnet-config/launch-config-testnet.json
+         target: /polkadot-launch/launch-config.json
+         read_only: true          
added.docker/docker-compose.tmp-xcm-quartz.ymldiffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose.tmp-xcm-quartz.yml
@@ -0,0 +1,25 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      args:
+        - "RUST_TOOLCHAIN=nightly-2022-07-24"
+        - "BRANCH=release-v927020"
+        - "FEATURE=quartz-runtime"
+        - "POLKADOT_BUILD_BRANCH=release-v0.9.27"
+        - "ACALA_BUILD_BRANCH=2.9.0"
+        - "MOONBEAM_BUILD_BRANCH=v0.25.0"
+        - "CUMULUS_BUILD_BRANCH=release-v0.9.230"
+        - "POLKADOT_LAUNCH_BRANCH=feature/rewrite-chain-id-in-spec"
+    image: xcm_nodes_quartz
+    container_name: xcm_nodes_quartz
+    volumes:
+       - type: bind
+         source: ./xcm-config/launch-config-xcm-quartz.json
+         target: /polkadot-launch/launch-config.json
+         read_only: true
+       - type: bind
+         source: ./xcm-config/5validators.jsonnet
+         target: /polkadot-launch/5validators.jsonnet
+         read_only: true           
added.docker/docker-compose.tmp-xcm-unique.ymldiffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose.tmp-xcm-unique.yml
@@ -0,0 +1,27 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      args:
+        - "RUST_TOOLCHAIN=nightly-2022-07-24"
+        - "BRANCH=release-v927020"
+        - "REPO_URL=https://github.com/UniqueNetwork/unique-chain.git"
+        - "FEATURE=unique-runtime"
+        - "POLKADOT_BUILD_BRANCH=release-v0.9.27"
+        - "ACALA_BUILD_BRANCH=2.9.0"
+        - "MOONBEAM_BUILD_BRANCH=v0.25.0"
+        - "CUMULUS_BUILD_BRANCH=release-v0.9.230"
+        - "POLKADOT_LAUNCH_BRANCH=feature/rewrite-chain-id-in-spec"          
+    image: xcm_nodes_unique
+    container_name: xcm_nodes_unique         
+    volumes:
+       - type: bind
+         source: ./xcm-config/launch-config-xcm-unique.json
+         target: /polkadot-launch/launch-config.json
+         read_only: true
+       - type: bind
+         source: ./xcm-config/5validators.jsonnet
+         target: /polkadot-launch/5validators.jsonnet
+         read_only: true
+
added.docker/docker-compose.tmp-xcm.j2diffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose.tmp-xcm.j2
@@ -0,0 +1,21 @@
+version: "3.5"
+
+services:
+  xcm_nodes:
+    build:
+      args:
+        - "RUST_TOOLCHAIN={{ RUST_TOOLCHAIN }}"
+        - "BRANCH={{ BRANCH }}"
+        - "FEATURE={{ FEATURE }}"
+        - "POLKADOT_BUILD_BRANCH={{ POLKADOT_BUILD_BRANCH }}"
+        - "ACALA_BUILD_BRANCH={{ ACALA_BUILD_BRANCH }}"
+        - "MOONBEAM_BUILD_BRANCH={{ MOONBEAM_BUILD_BRANCH }}"
+        - "CUMULUS_BUILD_BRANCH={{ CUMULUS_BUILD_BRANCH }}"
+        - "POLKADOT_LAUNCH_BRANCH={{ POLKADOT_LAUNCH_BRANCH }}"
+    image: xcm_nodes_{{ NETWORK }}
+    container_name: xcm_nodes_{{ NETWORK }}
+    volumes:
+       - type: bind
+         source: ./xcm-config/launch-config-xcm-{{ NETWORK }}.json
+         target: /polkadot-launch/launch-config.json
+         read_only: true          
modified.docker/docker-compose.try-runtime.j2diffbeforeafterboth
--- a/.docker/docker-compose.try-runtime.j2
+++ b/.docker/docker-compose.try-runtime.j2
@@ -6,5 +6,5 @@
       args:
         - "RUST_TOOLCHAIN={{ RUST_TOOLCHAIN }}"
         - "FEATURE={{ FEATURE }}"
-        - "FORK_FROM={{ FORK_FROM }}"
+        - "REPLICA_FROM={{ REPLICA_FROM }}"
 
modified.docker/forkless-config/launch-config-forkless-data.j2diffbeforeafterboth
--- a/.docker/forkless-config/launch-config-forkless-data.j2
+++ b/.docker/forkless-config/launch-config-forkless-data.j2
@@ -93,9 +93,9 @@
             "balance": "1000000000000000000000000",
             "chainRawInitializer": [
                 "chainql",
-                "--ext-str=FORK_FROM",
+                "--ext-str=REPLICA_FROM",
                 "--tla-code=rawSpec=import '${rawSpec}'",
-                "--tla-code=forkFrom=std.extVar('FORK_FROM')",
+                "--tla-code=forkFrom=std.extVar('REPLICA_FROM')",
                 "fork.jsonnet"
             ],
             "nodes": [
added.docker/testnet-config/launch-config-testnet.jsondiffbeforeafterboth
--- /dev/null
+++ b/.docker/testnet-config/launch-config-testnet.json
@@ -0,0 +1,121 @@
+{
+    "relaychain": {
+        "bin": "../polkadot/target/release/polkadot",
+        "chain": "rococo-local",
+        "nodes": [
+            {
+                "name": "alice",
+                "wsPort": 9844,
+                "rpcPort": 9843,
+                "port": 30444,
+                "flags": [
+                    "-lparachain::candidate_validation=debug",
+                    "-lxcm=trace",
+                    "--rpc-cors=all",
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external"
+                ]
+            },
+            {
+                "name": "bob",
+                "wsPort": 9855,
+                "rpcPort": 9854,
+                "port": 30555,
+                "flags": [
+                    "-lparachain::candidate_validation=debug",
+                    "-lxcm=trace",
+                    "--rpc-cors=all",
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external"
+                ]
+            },
+            {
+                "name": "charlie",
+                "wsPort": 9866,
+                "rpcPort": 9865,
+                "port": 30666,
+                "flags": [
+                    "-lparachain::candidate_validation=debug",
+                    "-lxcm=trace",
+                    "--rpc-cors=all",
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external"
+                ]
+            },
+            {
+                "name": "dave",
+                "wsPort": 9877,
+                "rpcPort": 9876,
+                "port": 30777,
+                "flags": [
+                    "-lparachain::candidate_validation=debug",
+                    "-lxcm=trace",
+                    "--rpc-cors=all",
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external"
+                ]
+            },
+            {
+                "name": "eve",
+                "wsPort": 9888,
+                "rpcPort": 9887,
+                "port": 30888,
+                "flags": [
+                    "-lparachain::candidate_validation=debug",
+                    "-lxcm=trace",
+                    "--rpc-cors=all",
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external"
+                ]
+            }
+        ],
+        "genesis": {
+            "runtime": {
+                "runtime_genesis_config": {
+                    "parachainsConfiguration": {
+                        "config": {
+                            "validation_upgrade_frequency": 1,
+                            "validation_upgrade_delay": 1
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "parachains": [
+        {
+            "bin": "../unique-chain/target/release/unique-collator",
+            "id": "1000",
+            "balance": "1000000000000000000000000",
+            "nodes": [
+                {
+                    "port": 31200,
+                    "wsPort": 9944,
+                    "rpcPort": 9933,
+                    "name": "alice",
+                    "flags": [
+                        "--rpc-cors=all",
+                        "--unsafe-rpc-external",
+                        "--unsafe-ws-external",
+                        "-lxcm=trace"
+                    ]
+                },
+                {
+                    "port": 31201,
+                    "wsPort": 9945,
+                    "rpcPort": 9934,
+                    "name": "bob",
+                    "flags": [
+                        "--rpc-cors=all",
+                        "--unsafe-rpc-external",
+                        "--unsafe-ws-external",
+                        "-lxcm=trace"
+                    ]
+                }
+            ]
+        }
+    ],
+    "simpleParachains": [],
+    "hrmpChannels": [],
+    "finalization": false
+}
added.docker/xcm-config/5validators.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/.docker/xcm-config/5validators.jsonnet
@@ -0,0 +1,50 @@
+
+function(spec)
+  spec {
+    genesis+: {
+      runtime+: {
+        staking+: {
+          validatorCount: 5,
+          invulnerables: [
+            '5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY',
+            '5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc',
+            '5Ck5SLSHYac6WFt5UZRSsdJjwmpSZq85fd5TRNAdZQVzEAPT',
+            '5HKPmK9GYtE1PSLsS1qiYU9xQ9Si1NcEhdeCq9sw5bqu4ns8',
+            '5FCfAonRZgTFrTd9HREEyeJjDpT397KMzizE6T3DvebLFE7n',
+          ],
+          stakers: [
+            [
+              '5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY',
+              '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
+              100000000000000,
+              'Validator',
+            ],
+            [
+              '5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc',
+              '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty',
+              100000000000000,
+              'Validator',
+            ],
+            [
+              '5Ck5SLSHYac6WFt5UZRSsdJjwmpSZq85fd5TRNAdZQVzEAPT',
+              '5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y',
+              100000000000000,
+              'Validator',
+            ],
+            [
+              '5HKPmK9GYtE1PSLsS1qiYU9xQ9Si1NcEhdeCq9sw5bqu4ns8',
+              '5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy',
+              100000000000000,
+              'Validator',
+            ],
+            [
+              '5FCfAonRZgTFrTd9HREEyeJjDpT397KMzizE6T3DvebLFE7n',
+              '5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw',
+              100000000000000,
+              'Validator',
+            ],
+          ],
+        },
+      },
+    },
+  }
added.docker/xcm-config/launch-config-xcm-opal.jsondiffbeforeafterboth
--- /dev/null
+++ b/.docker/xcm-config/launch-config-xcm-opal.json
@@ -0,0 +1,134 @@
+{
+    "relaychain": {
+        "bin": "/polkadot/target/release/polkadot",
+        "chain": "westend-local",
+        "chainInitializer": [
+                "chainql",
+                "--tla-code=spec=import '${spec}'",
+                "5validators.jsonnet"
+            ],	
+        "nodes": [
+            {
+                "name": "alice",
+                "wsPort": 9844,
+                "rpcPort": 9843,
+                "port": 30444,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "bob",
+                "wsPort": 9855,
+                "rpcPort": 9854,
+                "port": 30555,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "charlie",
+                "wsPort": 9866,
+                "rpcPort": 9865,
+                "port": 30666,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "dave",
+                "wsPort": 9877,
+                "rpcPort": 9876,
+                "port": 30777,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "eve",
+                "wsPort": 9888,
+                "rpcPort": 9887,
+                "port": 30888,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            }
+
+        ],
+        "genesis": {
+            "runtime": {
+                "runtime_genesis_config": {
+                    "parachainsConfiguration": {
+                        "config": {
+                            "validation_upgrade_frequency": 1,
+                            "validation_upgrade_delay": 1
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "parachains": [
+        {
+            "bin": "/unique-chain/target/release/unique-collator",
+            "id": "2095",
+            "balance": "1000000000000000000000000",
+            "nodes": [
+                {
+                    "port": 31200,
+                    "wsPort": 9944,
+                    "rpcPort": 9933,
+                    "name": "alice",
+                    "flags": [
+                       "--unsafe-rpc-external",
+                       "--unsafe-ws-external"
+		    ]
+                }
+            ]
+        },
+        {
+            "bin": "/cumulus/target/release/cumulus",
+            "id": "1000",
+            "chain": "westmint-local",
+            "balance": "1000000000000000000000000",
+            "nodes": [
+                {
+                    "wsPort": 9948,
+                    "port": 31204,
+                    "name": "alice",
+                    "flags": [
+                       "--unsafe-rpc-external",
+                       "--unsafe-ws-external"
+                    ]
+                }
+            ]
+        }
+    ],
+    "simpleParachains": [],
+    "hrmpChannels": [
+        {
+            "sender": 2095,
+            "recipient": 1000,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 1000,
+            "recipient": 2095,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        }
+    ],
+    "finalization": false
+}
+
added.docker/xcm-config/launch-config-xcm-quartz.jsondiffbeforeafterboth
--- /dev/null
+++ b/.docker/xcm-config/launch-config-xcm-quartz.json
@@ -0,0 +1,199 @@
+{
+    "relaychain": {
+        "bin": "/polkadot/target/release/polkadot",
+        "chain": "westend-local",
+        "chainInitializer": [
+                "chainql",
+                "--tla-code=spec=import '${spec}'",
+                "5validators.jsonnet"
+            ],	
+        "nodes": [
+            {
+                "name": "alice",
+                "wsPort": 9844,
+                "rpcPort": 9843,
+                "port": 30444,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "bob",
+                "wsPort": 9855,
+                "rpcPort": 9854,
+                "port": 30555,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "charlie",
+                "wsPort": 9866,
+                "rpcPort": 9865,
+                "port": 30666,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "dave",
+                "wsPort": 9877,
+                "rpcPort": 9876,
+                "port": 30777,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "eve",
+                "wsPort": 9888,
+                "rpcPort": 9887,
+                "port": 30888,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            }
+
+        ],
+        "genesis": {
+            "runtime": {
+                "runtime_genesis_config": {
+                    "parachainsConfiguration": {
+                        "config": {
+                            "validation_upgrade_frequency": 1,
+                            "validation_upgrade_delay": 1
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "parachains": [
+        {
+            "bin": "/unique-chain/target/release/unique-collator",
+            "id": "2095",
+            "balance": "1000000000000000000000000",
+            "nodes": [
+                {
+                    "port": 31200,
+                    "wsPort": 9944,
+                    "rpcPort": 9933,
+                    "name": "alice",
+                    "flags": [
+                       "--unsafe-rpc-external",
+                       "--unsafe-ws-external"
+		    ]
+                }
+            ]
+        },
+        {
+            "bin": "/acala/target/release/acala",
+            "id": "2000",
+            "chain":  "karura-dev",
+            "balance": "1000000000000000000000",
+            "nodes": [
+                {
+                    "wsPort": 9946,
+                    "port": 31202,
+                    "name": "alice",
+                    "flags": [
+                       "--unsafe-rpc-external",
+                       "--unsafe-ws-external"
+                     ]
+                }
+              ]
+        },
+        {
+            "bin": "/moonbeam/target/release/moonbeam",
+            "id": 2023,
+            "balance": "1000000000000000000000",
+            "chain": "moonriver-local",
+            "chainInitializer": [
+                "chainql",
+                "--tla-code=spec=import '${spec}'",
+                "minBondFix.jsonnet"
+            ],		    
+            "nodes": [
+                {
+                    "wsPort": 9947,
+                    "port": 31203,
+                    "name": "alice",
+                    "flags": [
+                       "--unsafe-rpc-external",
+                       "--unsafe-ws-external",
+                        "--",
+                        "--execution=wasm"
+                    ]
+                }
+            ]
+        },
+        {
+            "bin": "/cumulus/target/release/cumulus",
+            "id": "1000",
+            "chain": "statemine-local",
+            "balance": "1000000000000000000000000",
+            "nodes": [
+                {
+                    "wsPort": 9948,
+                    "port": 31204,
+                    "name": "alice",
+                    "flags": [
+                       "--unsafe-rpc-external",
+                       "--unsafe-ws-external"
+                    ]
+                }
+            ]
+        }
+    ],
+    "simpleParachains": [],
+    "hrmpChannels": [
+        {
+            "sender": 2095,
+            "recipient": 2000,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 2000,
+            "recipient": 2095,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 2095,
+            "recipient": 2023,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 2023,
+            "recipient": 2095,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 2095,
+            "recipient": 1000,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 1000,
+            "recipient": 2095,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        }
+    ],
+    "finalization": false
+}
+
added.docker/xcm-config/launch-config-xcm-unique.jsondiffbeforeafterboth
--- /dev/null
+++ b/.docker/xcm-config/launch-config-xcm-unique.json
@@ -0,0 +1,194 @@
+{
+    "relaychain": {
+        "bin": "/polkadot/target/release/polkadot",
+        "chain": "westend-local",
+        "chainInitializer": [
+                "chainql",
+                "--tla-code=spec=import '${spec}'",
+                "5validators.jsonnet"
+            ],	
+        "nodes": [
+            {
+                "name": "alice",
+                "wsPort": 9844,
+                "rpcPort": 9843,
+                "port": 30444,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "bob",
+                "wsPort": 9855,
+                "rpcPort": 9854,
+                "port": 30555,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "charlie",
+                "wsPort": 9866,
+                "rpcPort": 9865,
+                "port": 30666,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "dave",
+                "wsPort": 9877,
+                "rpcPort": 9876,
+                "port": 30777,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            },
+            {
+                "name": "eve",
+                "wsPort": 9888,
+                "rpcPort": 9887,
+                "port": 30888,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            }
+
+        ],
+        "genesis": {
+            "runtime": {
+                "runtime_genesis_config": {
+                    "parachainsConfiguration": {
+                        "config": {
+                            "validation_upgrade_frequency": 1,
+                            "validation_upgrade_delay": 1
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "parachains": [
+        {
+            "bin": "/unique-chain/target/release/unique-collator",
+            "id": "2037",
+            "balance": "1000000000000000000000000",
+            "nodes": [
+                {
+                    "port": 31200,
+                    "wsPort": 9944,
+                    "rpcPort": 9933,
+                    "name": "alice",
+                    "flags": [
+                        "--unsafe-rpc-external",
+                        "--unsafe-ws-external"
+		    ]
+                }
+            ]
+        },
+        {
+            "bin": "/acala/target/release/acala",
+            "id": "2000",
+            "chain":  "acala-dev",
+            "balance": "1000000000000000000000",
+            "nodes": [
+                {
+                    "wsPort": 9946,
+                    "port": 31202,
+                    "name": "alice",
+                    "flags": [
+                        "--unsafe-rpc-external",
+                        "--unsafe-ws-external"
+		    ]
+                }
+              ]
+        },
+        {
+            "bin": "/moonbeam/target/release/moonbeam",
+            "id": "2004",
+            "balance": "1000000000000000000000",
+            "chain": "moonbeam-local",
+            "nodes": [
+                {
+                    "wsPort": 9947,
+                    "port": 31203,
+                    "name": "alice",
+                    "flags": [
+                        "--unsafe-rpc-external",
+                        "--unsafe-ws-external",
+  			"--",
+                        "--execution=wasm"
+                    ]
+                }
+            ]
+        },
+        {
+            "bin": "/cumulus/target/release/cumulus",
+            "id": "1000",
+            "chain": "statemint-local",
+            "balance": "1000000000000000000000000",
+            "nodes": [
+                {
+                    "wsPort": 9948,
+                    "port": 31204,
+                    "name": "alice",
+                    "flags": [
+                        "--unsafe-rpc-external",
+                        "--unsafe-ws-external"
+		    ]
+                }
+            ]
+        }
+    ],
+    "simpleParachains": [],
+    "hrmpChannels": [
+        {
+            "sender": 2037,
+            "recipient": 2000,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 2000,
+            "recipient": 2037,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 2037,
+            "recipient": 2004,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 2004,
+            "recipient": 2037,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 2037,
+            "recipient": 1000,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 1000,
+            "recipient": 2037,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        }
+    ],
+    "finalization": false
+}
+
added.docker/xcm-config/minBondFix.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/.docker/xcm-config/minBondFix.jsonnet
@@ -0,0 +1,10 @@
+function(spec)
+spec {
+	genesis+: {
+		runtime+: {
+			parachainStaking+: {
+				candidates: std.map(function(candidate) [candidate[0], candidate[1] * 1000], super.candidates)
+			},
+		},
+	},
+}
modified.envdiffbeforeafterboth
--- a/.env
+++ b/.env
@@ -7,6 +7,17 @@
 KUSAMA_MAINNET_BRANCH=release-v0.9.26
 QUARTZ_MAINNET_TAG=quartz-v924012-2
 
-OPAL_FORK_FROM=wss://eu-ws-opal.unique.network:443
-QUARTZ_FORK_FROM=wss://eu-ws-quartz.unique.network:443
-UNIQUE_FORK_FROM=wss://eu-ws.unique.network:443
+UNQWND_MAINNET_BRANCH=release-v0.9.24
+
+OPAL_REPLICA_FROM=wss://eu-ws-opal.unique.network:443
+QUARTZ_REPLICA_FROM=wss://eu-ws-quartz.unique.network:443
+UNIQUE_REPLICA_FROM=wss://eu-ws.unique.network:443
+
+
+POLKADOT_LAUNCH_BRANCH=feature/rewrite-chain-id-in-spec
+
+ACALA_BUILD_BRANCH=2.9.0
+MOONBEAM_BUILD_BRANCH=v0.25.0
+CUMULUS_BUILD_BRANCH=release-v0.9.230
+
+
modified.github/workflows/codestyle.ymldiffbeforeafterboth
--- a/.github/workflows/codestyle.yml
+++ b/.github/workflows/codestyle.yml
@@ -37,16 +37,20 @@
         if: github.event.pull_request.draft == true
         run: exit 1
 
-      - uses: actions/checkout@v1
+      - uses: actions/checkout@v3
       - name: Install latest nightly
         uses: actions-rs/toolchain@v1
         with:
             toolchain: nightly
             default: true
             target: wasm32-unknown-unknown
-            components: rustfmt, clippy
+            components: rustfmt, clippy 
       - name: Run cargo fmt
-        run: cargo fmt -- --check
+        run: cargo fmt -- --check   # In that mode it returns only exit code.
+      - name: Cargo fmt state
+        if: success()
+        run: echo "Nothing to do. Cargo fmt returned exit code 0."
+
 
   clippy:
     if: ${{ false }}
modified.github/workflows/forkless-update-data.ymldiffbeforeafterboth
--- a/.github/workflows/forkless-update-data.yml
+++ b/.github/workflows/forkless-update-data.yml
@@ -52,9 +52,9 @@
         id: create_matrix
         with:
           matrix: |
-            network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}, fork_from_address {${{ env.OPAL_FORK_FROM }}}
-            network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}, fork_from_address {${{ env.QUARTZ_FORK_FROM }}}
-            network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}}, fork_from_address {${{ env.UNIQUE_FORK_FROM }}}
+            network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}, replica_from_address {${{ env.OPAL_REPLICA_FROM }}}
+            network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}, replica_from_address {${{ env.QUARTZ_REPLICA_FROM }}}
+            network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}}, replica_from_address {${{ env.UNIQUE_REPLICA_FROM }}}
 
 
 
@@ -120,7 +120,7 @@
             FEATURE=${{ matrix.features }}
             RUNTIME=${{ matrix.runtime }}
             BRANCH=${{ github.head_ref }}
-            FORK_FROM=${{ matrix.fork_from_address }}
+            REPLICA_FROM=${{ matrix.replica_from_address }}
 
       - name: Show build configuration
         run: cat .docker/docker-compose.${{ matrix.network }}.yml
modified.github/workflows/try-runtime.ymldiffbeforeafterboth
--- a/.github/workflows/try-runtime.yml
+++ b/.github/workflows/try-runtime.yml
@@ -38,13 +38,13 @@
         include:
           - network: opal
             features: try-runtime,opal-runtime
-            fork_from_address: wss://eu-ws-opal.unique.network:443
+            replica_from_address: wss://eu-ws-opal.unique.network:443
           - network: quartz
             features: try-runtime,quartz-runtime
-            fork_from_address: wss://eu-ws-quartz.unique.network:443
+            replica_from_address: wss://eu-ws-quartz.unique.network:443
           - network: unique
             features: try-runtime,unique-runtime
-            fork_from_address: wss://eu-ws.unique.network:443
+            replica_from_address: wss://eu-ws.unique.network:443
 
     steps:
       - name: Skip if pull request is in Draft
@@ -85,7 +85,7 @@
           variables: |
             RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
             FEATURE=${{ matrix.features }}
-            FORK_FROM=${{ matrix.fork_from_address }}
+            REPLICA_FROM=${{ matrix.replica_from_address }}
 
       - name: Show build configuration
         run: cat .docker/docker-compose.try-runtime.${{ matrix.network }}.yml
added.github/workflows/xcm-testnet.ymldiffbeforeafterboth

no changes