From c562488d4cff2f52f6fb7a0eff64d8a9806feee5 Mon Sep 17 00:00:00 2001 From: Konstantin Astakhov Date: Mon, 27 Mar 2023 13:37:59 +0000 Subject: [PATCH] add astar parachain for xcm --- --- /dev/null +++ b/.docker/Dockerfile-astar.j2 @@ -0,0 +1,40 @@ +# ===== Rust builder ===== +FROM ubuntu:20.04 as rust-builder +LABEL maintainer="Unique.Network" + +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 protobuf-compiler && \ + 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 ACALA ===== +FROM rust-builder as builder-astar-bin + +WORKDIR /unique_parachain + +RUN git clone --recurse-submodules -b {{ ASTAR_BUILD_BRANCH }} --depth 1 https://github.com/AstarNetwork/Astar.git && \ + cd Astar && \ + cargo build --release + +# ===== BIN ====== + +FROM ubuntu:20.04 as builder-astar + +COPY --from=builder-astar-bin /unique_parachain/Astar/target/release/astar /unique_parachain/Astar/target/release/astar --- a/.docker/Dockerfile-xcm.j2 +++ b/.docker/Dockerfile-xcm.j2 @@ -57,6 +57,7 @@ COPY --from=uniquenetwork/builder-moonbeam:{{ MOONBEAM_BUILD_BRANCH }} /unique_parachain/moonbeam/target/release/moonbeam /moonbeam/target/release/ COPY --from=uniquenetwork/builder-cumulus:{{ CUMULUS_BUILD_BRANCH }} /unique_parachain/cumulus/target/release/polkadot-parachain /cumulus/target/release/cumulus COPY --from=uniquenetwork/builder-acala:{{ ACALA_BUILD_BRANCH }} /unique_parachain/Acala/target/production/acala /acala/target/release/ +COPY --from=uniquenetwork/builder-astar:{{ ASTAR_BUILD_BRANCH }} /unique_parachain/Astar/target/release/astar /astar/target/release/ COPY --from=uniquenetwork/builder-chainql:latest /chainql/target/release/chainql /chainql/target/release/ EXPOSE 9844 @@ -65,6 +66,7 @@ EXPOSE 9946 EXPOSE 9947 EXPOSE 9948 +EXPOSE 9949 CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" && \ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ --- a/.docker/docker-compose.tmp-xcm-tests.j2 +++ b/.docker/docker-compose.tmp-xcm-tests.j2 @@ -11,6 +11,7 @@ - 9946 - 9947 - 9948 + - 9949 ports: - 127.0.0.1:9844:9844 - 127.0.0.1:9933:9933 @@ -18,6 +19,7 @@ - 127.0.0.1:9946:9946 - 127.0.0.1:9947:9947 - 127.0.0.1:9948:9948 + - 127.0.0.1:9949:9949 logging: options: max-size: "1m" --- /dev/null +++ b/.docker/xcm-config/6validators.jsonnet @@ -0,0 +1,56 @@ +function(spec) + spec { + genesis+: { + runtime+: { + staking+: { + validatorCount: 6, + invulnerables: [ + '5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY', + '5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc', + '5Ck5SLSHYac6WFt5UZRSsdJjwmpSZq85fd5TRNAdZQVzEAPT', + '5HKPmK9GYtE1PSLsS1qiYU9xQ9Si1NcEhdeCq9sw5bqu4ns8', + '5FCfAonRZgTFrTd9HREEyeJjDpT397KMzizE6T3DvebLFE7n', + '5CRmqmsiNFExV6VbdmPJViVxrWmkaXXvBrSX8oqBT8R9vmWk', + ], + stakers: [ + [ + '5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY', + '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + 100000000000000, + 'Validator', + ], + [ + '5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc', + '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + 100000000000000, + 'Validator', + ], + [ + '5Ck5SLSHYac6WFt5UZRSsdJjwmpSZq85fd5TRNAdZQVzEAPT', + '5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y', + 100000000000000, + 'Validator', + ], + [ + '5HKPmK9GYtE1PSLsS1qiYU9xQ9Si1NcEhdeCq9sw5bqu4ns8', + '5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy', + 100000000000000, + 'Validator', + ], + [ + '5FCfAonRZgTFrTd9HREEyeJjDpT397KMzizE6T3DvebLFE7n', + '5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw', + 100000000000000, + 'Validator', + ], + [ + '5CRmqmsiNFExV6VbdmPJViVxrWmkaXXvBrSX8oqBT8R9vmWk', + '5CiPPseXPECbkjWCa6MnjNokrgYjMqmKndv2rSnekmSK2DjL', + 100000000000000, + 'Validator', + ], + ], + }, + }, + }, + } \ No newline at end of file --- a/.docker/xcm-config/launch-config-xcm-quartz.j2 +++ b/.docker/xcm-config/launch-config-xcm-quartz.j2 @@ -5,7 +5,7 @@ "chainInitializer": [ "chainql", "--tla-code=spec=import '${spec}'", - "5validators.jsonnet" + "6validators.jsonnet" ], "nodes": [ { @@ -62,6 +62,17 @@ "--unsafe-ws-external", "-lparachain::candidate_validation=debug" ] + }, + { + "name": "ferdie", + "wsPort": 9899, + "rpcPort": 9898, + "port": 30999, + "flags": [ + "--unsafe-rpc-external", + "--unsafe-ws-external", + "-lparachain::candidate_validation=debug" + ] } ], @@ -156,6 +167,23 @@ } ] } + { + "bin": "/astar/target/release/astar", + "id": "2007", + "chain": "astar-dev", + "balance": "1000000000000000000000000", + "nodes": [ + { + "wsPort": 9949, + "port": 31205, + "name": "alice", + "flags": [ + "--unsafe-rpc-external", + "--unsafe-ws-external" + ] + } + ] + } ], "simpleParachains": [], "hrmpChannels": [ @@ -194,7 +222,19 @@ "recipient": 2095, "maxCapacity": 8, "maxMessageSize": 512 - } + }, + { + "sender": 2007, + "recipient": 1000, + "maxCapacity": 8, + "maxMessageSize": 512 + }, + { + "sender": 1000, + "recipient": 2007, + "maxCapacity": 8, + "maxMessageSize": 512 + } ], "finalization": false } --- a/.docker/xcm-config/launch-config-xcm-unique.j2 +++ b/.docker/xcm-config/launch-config-xcm-unique.j2 @@ -5,7 +5,7 @@ "chainInitializer": [ "chainql", "--tla-code=spec=import '${spec}'", - "5validators.jsonnet" + "6validators.jsonnet" ], "nodes": [ { @@ -62,7 +62,18 @@ "--unsafe-ws-external", "-lparachain::candidate_validation=debug" ] - } + }, + { + "name": "ferdie", + "wsPort": 9899, + "rpcPort": 9898, + "port": 30999, + "flags": [ + "--unsafe-rpc-external", + "--unsafe-ws-external", + "-lparachain::candidate_validation=debug" + ] + } ], "genesis": { @@ -93,7 +104,7 @@ "-lxcm=trace,parity_ws::handler=debug,jsonrpsee_core=trace,jsonrpsee-core=trace,jsonrpsee_ws_server=debug", "--unsafe-rpc-external", "--unsafe-ws-external" - ] + ] } ] }, @@ -115,7 +126,7 @@ "flags": [ "--unsafe-rpc-external", "--unsafe-ws-external" - ] + ] } ] }, @@ -133,7 +144,7 @@ "flags": [ "--unsafe-rpc-external", "--unsafe-ws-external", - "--", + "--", "--execution=wasm" ] } @@ -152,7 +163,24 @@ "flags": [ "--unsafe-rpc-external", "--unsafe-ws-external" - ] + ] + } + ] + }, + { + "bin": "/astar/target/release/astar", + "id": "2006", + "chain": "astar-dev", + "balance": "1000000000000000000000000", + "nodes": [ + { + "wsPort": 9949, + "port": 31205, + "name": "alice", + "flags": [ + "--unsafe-rpc-external", + "--unsafe-ws-external" + ] } ] } @@ -194,7 +222,19 @@ "recipient": 2037, "maxCapacity": 8, "maxMessageSize": 512 - } + }, + { + "sender": 2006, + "recipient": 1000, + "maxCapacity": 8, + "maxMessageSize": 512 + }, + { + "sender": 1000, + "recipient": 2006, + "maxCapacity": 8, + "maxMessageSize": 512 + } ], "finalization": false } --- a/.github/workflows/xcm.yml +++ b/.github/workflows/xcm.yml @@ -41,8 +41,8 @@ with: matrix: | network {opal}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.WESTMINT_BUILD_BRANCH }}}, runtest {testXcmOpal} - network {quartz}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}, acala_version {${{ env.KARURA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONRIVER_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINE_BUILD_BRANCH }}}, runtest {testXcmQuartz} - network {unique}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINT_BUILD_BRANCH }}}, runtest {testXcmUnique} + network {quartz}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}, acala_version {${{ env.KARURA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONRIVER_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINE_BUILD_BRANCH }}}, astar_version {${{ env.SHIDEN_BUILD_BRANCH }}}, runtest {testXcmQuartz} + network {unique}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINT_BUILD_BRANCH }}}, astar_version {${{ env.ASTAR_BUILD_BRANCH }}}, runtest {testXcmUnique} xcm-build: @@ -183,7 +183,6 @@ docker push uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }} fi shell: bash - # Check CUMULUS version and build it if it doesn't exist in repository - name: Generate ENV related extend Dockerfile file for CUMULUS @@ -218,6 +217,41 @@ fi shell: bash + + # Check ASTAR version and build it if it doesn't exist in repository + - name: Generate ENV related extend Dockerfile file for ASTAR + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/Dockerfile-astar.j2 + output_file: .docker/Dockerfile-astar.${{ matrix.astar_version }}.yml + variables: | + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + ASTAR_BUILD_BRANCH=${{ matrix.astar_version }} + + - name: Check if the dockerhub repository contains the needed MOONBEAM version + run: | + # aquire token + TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token) + export TOKEN=$TOKEN + + # Get TAGS from DOCKERHUB repository + ASTAR_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-astar/tags/?page_size=100 | jq -r '."results"[]["name"]') + # Show TAGS + echo "ASTAR TAGS:" + echo $ASTAR_TAGS + # Check correct version ASTAR and build it if it doesn't exist in ASTAR TAGS + if [[ ${ASTAR_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.astar_version }}"($|[[:space:]]) ]]; then + echo "Repository has needed ASTAR version"; + docker pull uniquenetwork/builder-astar:${{ matrix.astar_version }} + else + echo "Repository has not needed ASTAR version, so build it"; + cd .docker/ && docker build --no-cache --file ./Dockerfile-astar.${{ matrix.astar_version }}.yml --tag uniquenetwork/builder-astar:${{ matrix.astar_version }} . + echo "Push needed ASTAR version to the repository"; + docker push uniquenetwork/builder-astar:${{ matrix.astar_version }} + fi + shell: bash + + - name: Generate ENV related extend launch-config file uses: cuchi/jinja2-action@v1.2.0 with: -- gitstuff