difftreelog
Merge pull request #908 from UniqueNetwork/fix/xcmv3-tests
in: master
Fix/xcmv3 tests
8 files changed
.docker/additional/xcm-rococo/Dockerfile-xcm-opal-rococo.tempdiffbeforeafterboth1FROM uniquenetwork/builder-polkadot:{{ POLKADOT_BUILD_BRANCH }} as polkadot1FROM uniquenetwork/builder-polkadot:{{ UNIQUEWEST_MAINNET_BRANCH }} as polkadot2FROM uniquenetwork/builder-cumulus:{{ STATEMINE_BUILD_BRANCH }} as cumulus2FROM uniquenetwork/builder-cumulus:{{ WESTMINT_BUILD_BRANCH }} as cumulus334# ===== Rust builder =====4# ===== Rust builder =====5FROM ubuntu:22.04 as rust-builder5FROM ubuntu:22.04 as rust-builder60 yarn install60 yarn install616162COPY --from=builder-unique /unique_parachain/.docker/additional/xcm-rococo/launch-config-xcm-opal-rococo.json /polkadot-launch/launch-config.json62COPY --from=builder-unique /unique_parachain/.docker/additional/xcm-rococo/launch-config-xcm-opal-rococo.json /polkadot-launch/launch-config.json63COPY --from=builder-unique /unique_parachain/.docker/xcm-config/5validators.jsonnet /polkadot-launch/5validators.jsonnet636464COPY --from=builder-unique /unique_parachain/target/release/unique-collator /unique-chain/target/release/65COPY --from=builder-unique /unique_parachain/target/release/unique-collator /unique-chain/target/release/65COPY --from=polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/66COPY --from=polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/.docker/additional/xcm-rococo/Dockerfile-xcm-quartz-rococo.tempdiffbeforeafterboth1FROM uniquenetwork/builder-polkadot:{{ POLKADOT_BUILD_BRANCH }} as polkadot1FROM uniquenetwork/builder-polkadot:{{ KUSAMA_MAINNET_BRANCH }} as polkadot2FROM uniquenetwork/builder-moonbeam:{{ MOONRIVER_BUILD_BRANCH }} as moonbeam2FROM uniquenetwork/builder-moonbeam:{{ MOONRIVER_BUILD_BRANCH }} as moonbeam3FROM uniquenetwork/builder-cumulus:{{ STATEMINE_BUILD_BRANCH }} as cumulus3FROM uniquenetwork/builder-cumulus:{{ STATEMINE_BUILD_BRANCH }} as cumulus4FROM uniquenetwork/builder-acala:{{ KARURA_BUILD_BRANCH }} as acala4FROM uniquenetwork/builder-acala:{{ KARURA_BUILD_BRANCH }} as acala.docker/additional/xcm-rococo/Dockerfile-xcm-unique-rococo.tempdiffbeforeafterboth1FROM uniquenetwork/builder-polkadot:{{ POLKADOT_BUILD_BRANCH }} as polkadot1FROM uniquenetwork/builder-polkadot:{{ POLKADOT_MAINNET_BRANCH }} as polkadot2FROM uniquenetwork/builder-moonbeam:{{ MOONBEAM_BUILD_BRANCH }} as moonbeam2FROM uniquenetwork/builder-moonbeam:{{ MOONBEAM_BUILD_BRANCH }} as moonbeam3FROM uniquenetwork/builder-cumulus:{{ STATEMINT_BUILD_BRANCH }} as cumulus3FROM uniquenetwork/builder-cumulus:{{ STATEMINT_BUILD_BRANCH }} as cumulus4FROM uniquenetwork/builder-acala:{{ ACALA_BUILD_BRANCH }} as acala4FROM uniquenetwork/builder-acala:{{ ACALA_BUILD_BRANCH }} as acala.envdiffbeforeafterboth3POLKADOT_LAUNCH_BRANCH=unique-network3POLKADOT_LAUNCH_BRANCH=unique-network4RELAY_CHAIN_TYPE=westend4RELAY_CHAIN_TYPE=westend556POLKADOT_MAINNET_BRANCH=release-v0.9.366POLKADOT_MAINNET_BRANCH=release-v0.9.377STATEMINT_BUILD_BRANCH=release-parachains-v93607STATEMINT_BUILD_BRANCH=release-parachains-v93708ACALA_BUILD_BRANCH=2.12.08ACALA_BUILD_BRANCH=2.12.09MOONBEAM_BUILD_BRANCH=runtime-20009MOONBEAM_BUILD_BRANCH=runtime-210010UNIQUE_MAINNET_BRANCH=release-v930033-fix-gas-price10UNIQUE_MAINNET_BRANCH=release-v930033-fix-gas-price11UNIQUE_REPLICA_FROM=wss://ws.unique.network:44311UNIQUE_REPLICA_FROM=wss://ws.unique.network:443121213KUSAMA_MAINNET_BRANCH=release-v0.9.3713KUSAMA_MAINNET_BRANCH=release-v0.9.3714STATEMINE_BUILD_BRANCH=release-parachains-v936014STATEMINE_BUILD_BRANCH=release-parachains-v937015KARURA_BUILD_BRANCH=release-karura-2.12.015KARURA_BUILD_BRANCH=release-karura-2.15.016MOONRIVER_BUILD_BRANCH=runtime-210016MOONRIVER_BUILD_BRANCH=runtime-220117QUARTZ_MAINNET_BRANCH=release-v930034-fix-gas-price17QUARTZ_MAINNET_BRANCH=release-v930034-fix-gas-price18QUARTZ_REPLICA_FROM=wss://ws-quartz.unique.network:44318QUARTZ_REPLICA_FROM=wss://ws-quartz.unique.network:443191920UNIQUEWEST_MAINNET_BRANCH=release-v0.9.3620UNIQUEWEST_MAINNET_BRANCH=release-v0.9.4021WESTMINT_BUILD_BRANCH=parachains-v937021WESTMINT_BUILD_BRANCH=release-parachains-v938222OPAL_MAINNET_BRANCH=release-v93705222OPAL_MAINNET_BRANCH=release-v93705223OPAL_REPLICA_FROM=wss://ws-opal.unique.network:44323OPAL_REPLICA_FROM=wss://ws-opal.unique.network:4432424.github/workflows/xcm.ymldiffbeforeafterboth39 uses: fabiocaccamo/create-matrix-action@v239 uses: fabiocaccamo/create-matrix-action@v240 id: create_matrix40 id: create_matrix41 with:41 with:42 matrix: |42 matrix: |43 network {opal}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.WESTMINT_BUILD_BRANCH }}}, runtest {testXcmOpal}43 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}44 network {quartz}, acala_version {${{ env.KARURA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONRIVER_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINE_BUILD_BRANCH }}}, runtest {testXcmQuartz}44 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}45 network {unique}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINT_BUILD_BRANCH }}}, runtest {testXcmUnique}45 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}464647 xcm-build:47 xcm-build:48 48 90 uses: cuchi/jinja2-action@v1.2.090 uses: cuchi/jinja2-action@v1.2.091 with:91 with:92 template: .docker/Dockerfile-polkadot.j292 template: .docker/Dockerfile-polkadot.j293 output_file: .docker/Dockerfile-polkadot.${{ env.POLKADOT_BUILD_BRANCH }}.yml93 output_file: .docker/Dockerfile-polkadot.${{ matrix.relay_branch }}.yml94 variables: |94 variables: |95 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}95 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}96 POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }}96 POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}979798 - name: Check if the dockerhub repository contains the needed version POLKADOT98 - name: Check if the dockerhub repository contains the needed version POLKADOT99 run: |99 run: |100 # aquire token100 # aquire token101 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)101 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)102 export TOKEN=$TOKEN102 export TOKEN=$TOKEN103103104 # Get TAGS from DOCKERHUB POLKADOT repository104 # Get TAGS from DOCKERHUB POLKADOT repository105 POLKADOT_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-polkadot/tags/?page_size=100 | jq -r '."results"[]["name"]')105 POLKADOT_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-polkadot/tags/?page_size=100 | jq -r '."results"[]["name"]')106 # Show TAGS106 # Show TAGS107 echo "POLKADOT TAGS:"107 echo "POLKADOT TAGS:"108 echo $POLKADOT_TAGS108 echo $POLKADOT_TAGS109 # Check correct version POLKADOT and build it if it doesn't exist in POLKADOT TAGS109 # Check correct version POLKADOT and build it if it doesn't exist in POLKADOT TAGS110 if [[ ${POLKADOT_TAGS[*]} =~ (^|[[:space:]])"${{ env.POLKADOT_BUILD_BRANCH }}"($|[[:space:]]) ]]; then110 if [[ ${POLKADOT_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.relay_branch }}"($|[[:space:]]) ]]; then111 echo "Repository has needed POLKADOT version";111 echo "Repository has needed POLKADOT version";112 docker pull uniquenetwork/builder-polkadot:${{ env.POLKADOT_BUILD_BRANCH }}112 docker pull uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}113 else113 else114 echo "Repository has not needed POLKADOT version, so build it";114 echo "Repository has not needed POLKADOT version, so build it";115 cd .docker/ && docker build --no-cache --file ./Dockerfile-polkadot.${{ env.POLKADOT_BUILD_BRANCH }}.yml --tag uniquenetwork/builder-polkadot:${{ env.POLKADOT_BUILD_BRANCH }} .115 cd .docker/ && docker build --no-cache --file ./Dockerfile-polkadot.${{ matrix.relay_branch }}.yml --tag uniquenetwork/builder-polkadot:${{ matrix.relay_branch }} .116 echo "Push needed POLKADOT version to the repository";116 echo "Push needed POLKADOT version to the repository";117 docker push uniquenetwork/builder-polkadot:${{ env.POLKADOT_BUILD_BRANCH }}117 docker push uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}118 fi118 fi119 shell: bash119 shell: bash120120121 # Check ACALA version and build it if it doesn't exist in repository121 # Check ACALA version and build it if it doesn't exist in repository235 with:235 with:236 template: .docker/Dockerfile-xcm.j2236 template: .docker/Dockerfile-xcm.j2237 output_file: .docker/Dockerfile-xcm.${{ matrix.network }}.yml237 output_file: .docker/Dockerfile-xcm.${{ matrix.network }}.yml238 variables: |238 variables: |239 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}239 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}240 NETWORK=${{ matrix.network }}240 NETWORK=${{ matrix.network }}241 POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }}241 POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}242 POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }} 242 POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }} 243 BRANCH=${{ github.head_ref }}243 BRANCH=${{ github.head_ref }}244 ACALA_BUILD_BRANCH=${{ matrix.acala_version }}244 ACALA_BUILD_BRANCH=${{ matrix.acala_version }}245 MOONBEAM_BUILD_BRANCH=${{ matrix.moonbeam_version }}245 MOONBEAM_BUILD_BRANCH=${{ matrix.moonbeam_version }}246 CUMULUS_BUILD_BRANCH=${{ matrix.cumulus_version }}246 CUMULUS_BUILD_BRANCH=${{ matrix.cumulus_version }}247247248 - name: Show build Dockerfile248 - name: Show build Dockerfile249 run: cat .docker/Dockerfile-xcm.${{ matrix.network }}.yml249 run: cat .docker/Dockerfile-xcm.${{ matrix.network }}.ymltests/src/util/playgrounds/unique.tsdiffbeforeafterboth2951 await this.helper.executeExtrinsic(signer, `api.tx.${this.palletName}.limitedReserveTransferAssets`, [destination, beneficiary, assets, feeAssetItem, weightLimit], true);2951 await this.helper.executeExtrinsic(signer, `api.tx.${this.palletName}.limitedReserveTransferAssets`, [destination, beneficiary, assets, feeAssetItem, weightLimit], true);2952 }2952 }29532954 async setSafeXcmVersion(signer: TSigner, version: number) {2955 await this.helper.executeExtrinsic(signer, `api.tx.${this.palletName}.forceDefaultXcmVersion`, [version], true);2956 }295329572954 async teleportAssets(signer: TSigner, destination: any, beneficiary: any, assets: any, feeAssetItem: number) {2958 async teleportAssets(signer: TSigner, destination: any, beneficiary: any, assets: any, feeAssetItem: number) {2955 await this.helper.executeExtrinsic(signer, `api.tx.${this.palletName}.teleportAssets`, [destination, beneficiary, assets, feeAssetItem], true);2959 await this.helper.executeExtrinsic(signer, `api.tx.${this.palletName}.teleportAssets`, [destination, beneficiary, assets, feeAssetItem], true);tests/src/xcm/xcmQuartz.test.tsdiffbeforeafterboth49const USDT_ASSET_METADATA_MINIMAL_BALANCE = 1n;49const USDT_ASSET_METADATA_MINIMAL_BALANCE = 1n;50const USDT_ASSET_AMOUNT = 10_000_000_000_000_000_000_000_000n;50const USDT_ASSET_AMOUNT = 10_000_000_000_000_000_000_000_000n;5152const SAFE_XCM_VERSION = 2;515352describeXCM('[XCM] Integration test: Exchanging USDT with Statemine', () => {54describeXCM('[XCM] Integration test: Exchanging USDT with Statemine', () => {53 let alice: IKeyringPair;55 let alice: IKeyringPair;6971707271 before(async () => {73 before(async () => {72 await usingPlaygrounds(async (_helper, privateKey) => {74 await usingPlaygrounds(async (helper, privateKey) => {73 alice = await privateKey('//Alice');75 alice = await privateKey('//Alice');74 bob = await privateKey('//Bob'); // sovereign account on Statemine(t) funds donor76 bob = await privateKey('//Bob'); // sovereign account on Statemine(t) funds donor7778 // Set the default version to wrap the first message to other chains.79 await helper.getSudo().xcm.setSafeXcmVersion(alice, SAFE_XCM_VERSION);75 });80 });768177 await usingRelayPlaygrounds(relayUrl, async (helper) => {82 await usingRelayPlaygrounds(relayUrl, async (helper) => {145 // (fee for USDT XCM are paid in relay tokens)150 // (fee for USDT XCM are paid in relay tokens)146 await usingRelayPlaygrounds(relayUrl, async (helper) => {151 await usingRelayPlaygrounds(relayUrl, async (helper) => {147 const destination = {152 const destination = {148 V2: {153 V1: {149 parents: 0,154 parents: 0,150 interior: {X1: {155 interior: {X1: {151 Parachain: QUARTZ_CHAIN,156 Parachain: QUARTZ_CHAIN,154 }};159 }};155160156 const beneficiary = {161 const beneficiary = {157 V2: {162 V1: {158 parents: 0,163 parents: 0,159 interior: {X1: {164 interior: {X1: {160 AccountId32: {165 AccountId32: {166 };171 };167172168 const assets = {173 const assets = {169 V2: [174 V1: [170 {175 {171 id: {176 id: {172 Concrete: {177 Concrete: {191 itSub('Should connect and send USDT from Statemine to Quartz', async ({helper}) => {196 itSub('Should connect and send USDT from Statemine to Quartz', async ({helper}) => {192 await usingStateminePlaygrounds(statemineUrl, async (helper) => {197 await usingStateminePlaygrounds(statemineUrl, async (helper) => {193 const dest = {198 const dest = {194 V2: {199 V1: {195 parents: 1,200 parents: 1,196 interior: {X1: {201 interior: {X1: {197 Parachain: QUARTZ_CHAIN,202 Parachain: QUARTZ_CHAIN,200 }};205 }};201206202 const beneficiary = {207 const beneficiary = {203 V2: {208 V1: {204 parents: 0,209 parents: 0,205 interior: {X1: {210 interior: {X1: {206 AccountId32: {211 AccountId32: {212 };217 };213218214 const assets = {219 const assets = {215 V2: [220 V1: [216 {221 {217 id: {222 id: {218 Concrete: {223 Concrete: {314319315 // the commission has been paid in parachain native token320 // the commission has been paid in parachain native token316 balanceQuartzFinal = await helper.balance.getSubstrate(alice.address);321 balanceQuartzFinal = await helper.balance.getSubstrate(alice.address);317 console.log('[Quartz -> Statemine] transaction fees on Quartz: %s QTZ', helper.util.bigIntToDecimals(balanceQuartzFinal - balanceQuartzAfter));322 console.log('[Quartz -> Statemine] transaction fees on Quartz: %s QTZ', helper.util.bigIntToDecimals(balanceQuartzAfter - balanceQuartzFinal));318 expect(balanceQuartzAfter > balanceQuartzFinal).to.be.true;323 expect(balanceQuartzAfter > balanceQuartzFinal).to.be.true;319324320 await usingStateminePlaygrounds(statemineUrl, async (helper) => {325 await usingStateminePlaygrounds(statemineUrl, async (helper) => {332337333 await usingRelayPlaygrounds(relayUrl, async (helper) => {338 await usingRelayPlaygrounds(relayUrl, async (helper) => {334 const destination = {339 const destination = {335 V2: {340 V1: {336 parents: 0,341 parents: 0,337 interior: {X1: {342 interior: {X1: {338 Parachain: QUARTZ_CHAIN,343 Parachain: QUARTZ_CHAIN,341 }};346 }};342347343 const beneficiary = {348 const beneficiary = {344 V2: {349 V1: {345 parents: 0,350 parents: 0,346 interior: {X1: {351 interior: {X1: {347 AccountId32: {352 AccountId32: {353 };358 };354359355 const assets = {360 const assets = {356 V2: [361 V1: [357 {362 {358 id: {363 id: {359 Concrete: {364 Concrete: {467 alice = await privateKey('//Alice');472 alice = await privateKey('//Alice');468 [randomAccount] = await helper.arrange.createAccounts([0n], alice);473 [randomAccount] = await helper.arrange.createAccounts([0n], alice);474475 // Set the default version to wrap the first message to other chains.476 await helper.getSudo().xcm.setSafeXcmVersion(alice, SAFE_XCM_VERSION);469 });477 });470478471 await usingKaruraPlaygrounds(karuraUrl, async (helper) => {479 await usingKaruraPlaygrounds(karuraUrl, async (helper) => {472 const destination = {480 const destination = {473 V2: {481 V1: {474 parents: 1,482 parents: 1,475 interior: {483 interior: {476 X1: {484 X1: {580 itSub('Should connect to Karura and send QTZ back', async ({helper}) => {588 itSub('Should connect to Karura and send QTZ back', async ({helper}) => {581 await usingKaruraPlaygrounds(karuraUrl, async (helper) => {589 await usingKaruraPlaygrounds(karuraUrl, async (helper) => {582 const destination = {590 const destination = {583 V2: {591 V1: {584 parents: 1,592 parents: 1,585 interior: {593 interior: {586 X2: [594 X2: [636 let alice: IKeyringPair;644 let alice: IKeyringPair;637645638 before(async () => {646 before(async () => {639 await usingPlaygrounds(async (_helper, privateKey) => {647 await usingPlaygrounds(async (helper, privateKey) => {640 alice = await privateKey('//Alice');648 alice = await privateKey('//Alice');649650 // Set the default version to wrap the first message to other chains.651 await helper.getSudo().xcm.setSafeXcmVersion(alice, SAFE_XCM_VERSION);641 });652 });642 });653 });643654644 itSub('Quartz rejects KAR tokens from Karura', async ({helper}) => {655 itSub('Quartz rejects KAR tokens from Karura', async ({helper}) => {645 await usingKaruraPlaygrounds(karuraUrl, async (helper) => {656 await usingKaruraPlaygrounds(karuraUrl, async (helper) => {646 const destination = {657 const destination = {647 V2: {658 V1: {648 parents: 1,659 parents: 1,649 interior: {660 interior: {650 X2: [661 X2: [727738728 balanceForeignQtzTokenInit = 0n;739 balanceForeignQtzTokenInit = 0n;740 741 // Set the default version to wrap the first message to other chains.742 const alice = quartzDonor;743 await helper.getSudo().xcm.setSafeXcmVersion(alice, SAFE_XCM_VERSION);729 });744 });730745731 await usingMoonriverPlaygrounds(moonriverUrl, async (helper) => {746 await usingMoonriverPlaygrounds(moonriverUrl, async (helper) => {905 itSub('Should connect to Moonriver and send QTZ back', async ({helper}) => {920 itSub('Should connect to Moonriver and send QTZ back', async ({helper}) => {906 await usingMoonriverPlaygrounds(moonriverUrl, async (helper) => {921 await usingMoonriverPlaygrounds(moonriverUrl, async (helper) => {907 const asset = {922 const asset = {908 V2: {923 V1: {909 id: {924 id: {910 Concrete: {925 Concrete: {911 parents: 1,926 parents: 1,920 },935 },921 };936 };922 const destination = {937 const destination = {923 V2: {938 V1: {924 parents: 1,939 parents: 1,925 interior: {940 interior: {926 X2: [941 X2: [tests/src/xcm/xcmUnique.test.tsdiffbeforeafterboth49const USDT_ASSET_METADATA_MINIMAL_BALANCE = 1n;49const USDT_ASSET_METADATA_MINIMAL_BALANCE = 1n;50const USDT_ASSET_AMOUNT = 10_000_000_000_000_000_000_000_000n;50const USDT_ASSET_AMOUNT = 10_000_000_000_000_000_000_000_000n;5152const SAFE_XCM_VERSION = 2;515352describeXCM('[XCM] Integration test: Exchanging USDT with Statemint', () => {54describeXCM('[XCM] Integration test: Exchanging USDT with Statemint', () => {53 let alice: IKeyringPair;55 let alice: IKeyringPair;6971707271 before(async () => {73 before(async () => {72 await usingPlaygrounds(async (_helper, privateKey) => {74 await usingPlaygrounds(async (helper, privateKey) => {73 alice = await privateKey('//Alice');75 alice = await privateKey('//Alice');74 bob = await privateKey('//Bob'); // sovereign account on Statemint funds donor76 bob = await privateKey('//Bob'); // sovereign account on Statemint funds donor7778 // Set the default version to wrap the first message to other chains.79 await helper.getSudo().xcm.setSafeXcmVersion(alice, SAFE_XCM_VERSION);75 });80 });768177 await usingRelayPlaygrounds(relayUrl, async (helper) => {82 await usingRelayPlaygrounds(relayUrl, async (helper) => {145 // (fee for USDT XCM are paid in relay tokens)150 // (fee for USDT XCM are paid in relay tokens)146 await usingRelayPlaygrounds(relayUrl, async (helper) => {151 await usingRelayPlaygrounds(relayUrl, async (helper) => {147 const destination = {152 const destination = {148 V2: {153 V1: {149 parents: 0,154 parents: 0,150 interior: {X1: {155 interior: {X1: {151 Parachain: UNIQUE_CHAIN,156 Parachain: UNIQUE_CHAIN,154 }};159 }};155160156 const beneficiary = {161 const beneficiary = {157 V2: {162 V1: {158 parents: 0,163 parents: 0,159 interior: {X1: {164 interior: {X1: {160 AccountId32: {165 AccountId32: {166 };171 };167172168 const assets = {173 const assets = {169 V2: [174 V1: [170 {175 {171 id: {176 id: {172 Concrete: {177 Concrete: {191 itSub('Should connect and send USDT from Statemint to Unique', async ({helper}) => {196 itSub('Should connect and send USDT from Statemint to Unique', async ({helper}) => {192 await usingStatemintPlaygrounds(statemintUrl, async (helper) => {197 await usingStatemintPlaygrounds(statemintUrl, async (helper) => {193 const dest = {198 const dest = {194 V2: {199 V1: {195 parents: 1,200 parents: 1,196 interior: {X1: {201 interior: {X1: {197 Parachain: UNIQUE_CHAIN,202 Parachain: UNIQUE_CHAIN,200 }};205 }};201206202 const beneficiary = {207 const beneficiary = {203 V2: {208 V1: {204 parents: 0,209 parents: 0,205 interior: {X1: {210 interior: {X1: {206 AccountId32: {211 AccountId32: {212 };217 };213218214 const assets = {219 const assets = {215 V2: [220 V1: [216 {221 {217 id: {222 id: {218 Concrete: {223 Concrete: {314319315 // the commission has been paid in parachain native token320 // the commission has been paid in parachain native token316 balanceUniqueFinal = await helper.balance.getSubstrate(alice.address);321 balanceUniqueFinal = await helper.balance.getSubstrate(alice.address);317 console.log('[Unique -> Statemint] transaction fees on Unique: %s UNQ', helper.util.bigIntToDecimals(balanceUniqueFinal - balanceUniqueAfter));322 console.log('[Unique -> Statemint] transaction fees on Unique: %s UNQ', helper.util.bigIntToDecimals(balanceUniqueAfter - balanceUniqueFinal));318 expect(balanceUniqueAfter > balanceUniqueFinal).to.be.true;323 expect(balanceUniqueAfter > balanceUniqueFinal).to.be.true;319324320 await usingStatemintPlaygrounds(statemintUrl, async (helper) => {325 await usingStatemintPlaygrounds(statemintUrl, async (helper) => {332337333 await usingRelayPlaygrounds(relayUrl, async (helper) => {338 await usingRelayPlaygrounds(relayUrl, async (helper) => {334 const destination = {339 const destination = {335 V2: {340 V1: {336 parents: 0,341 parents: 0,337 interior: {X1: {342 interior: {X1: {338 Parachain: UNIQUE_CHAIN,343 Parachain: UNIQUE_CHAIN,341 }};346 }};342347343 const beneficiary = {348 const beneficiary = {344 V2: {349 V1: {345 parents: 0,350 parents: 0,346 interior: {X1: {351 interior: {X1: {347 AccountId32: {352 AccountId32: {353 };358 };354359355 const assets = {360 const assets = {356 V2: [361 V1: [357 {362 {358 id: {363 id: {359 Concrete: {364 Concrete: {467 alice = await privateKey('//Alice');472 alice = await privateKey('//Alice');468 [randomAccount] = await helper.arrange.createAccounts([0n], alice);473 [randomAccount] = await helper.arrange.createAccounts([0n], alice);474475 // Set the default version to wrap the first message to other chains.476 await helper.getSudo().xcm.setSafeXcmVersion(alice, SAFE_XCM_VERSION);469 });477 });470478471 await usingAcalaPlaygrounds(acalaUrl, async (helper) => {479 await usingAcalaPlaygrounds(acalaUrl, async (helper) => {472 const destination = {480 const destination = {473 V2: {481 V1: {474 parents: 1,482 parents: 1,475 interior: {483 interior: {476 X1: {484 X1: {581 itSub('Should connect to Acala and send UNQ back', async ({helper}) => {589 itSub('Should connect to Acala and send UNQ back', async ({helper}) => {582 await usingAcalaPlaygrounds(acalaUrl, async (helper) => {590 await usingAcalaPlaygrounds(acalaUrl, async (helper) => {583 const destination = {591 const destination = {584 V2: {592 V1: {585 parents: 1,593 parents: 1,586 interior: {594 interior: {587 X2: [595 X2: [637 let alice: IKeyringPair;645 let alice: IKeyringPair;638646639 before(async () => {647 before(async () => {640 await usingPlaygrounds(async (_helper, privateKey) => {648 await usingPlaygrounds(async (helper, privateKey) => {641 alice = await privateKey('//Alice');649 alice = await privateKey('//Alice');650651 // Set the default version to wrap the first message to other chains.652 await helper.getSudo().xcm.setSafeXcmVersion(alice, SAFE_XCM_VERSION);642 });653 });643 });654 });644655645 itSub('Unique rejects ACA tokens from Acala', async ({helper}) => {656 itSub('Unique rejects ACA tokens from Acala', async ({helper}) => {646 await usingAcalaPlaygrounds(acalaUrl, async (helper) => {657 await usingAcalaPlaygrounds(acalaUrl, async (helper) => {647 const destination = {658 const destination = {648 V2: {659 V1: {649 parents: 1,660 parents: 1,650 interior: {661 interior: {651 X2: [662 X2: [728739729 balanceForeignUnqTokenInit = 0n;740 balanceForeignUnqTokenInit = 0n;741742 // Set the default version to wrap the first message to other chains.743 const alice = uniqueDonor;744 await helper.getSudo().xcm.setSafeXcmVersion(alice, SAFE_XCM_VERSION);730 });745 });731746732 await usingMoonbeamPlaygrounds(moonbeamUrl, async (helper) => {747 await usingMoonbeamPlaygrounds(moonbeamUrl, async (helper) => {907 itSub('Should connect to Moonbeam and send UNQ back', async ({helper}) => {922 itSub('Should connect to Moonbeam and send UNQ back', async ({helper}) => {908 await usingMoonbeamPlaygrounds(moonbeamUrl, async (helper) => {923 await usingMoonbeamPlaygrounds(moonbeamUrl, async (helper) => {909 const asset = {924 const asset = {910 V2: {925 V1: {911 id: {926 id: {912 Concrete: {927 Concrete: {913 parents: 1,928 parents: 1,922 },937 },923 };938 };924 const destination = {939 const destination = {925 V2: {940 V1: {926 parents: 1,941 parents: 1,927 interior: {942 interior: {928 X2: [943 X2: [