git.delta.rocks / unique-network / refs/commits / 33d49899f36c

difftreelog

Merge pull request #985 from UniqueNetwork/fix/xcm-release-60

Yaroslav Bolyukin2023-09-06parents: #432eea3 #bf4df5f.patch.diff
in: master

4 files changed

modified.baedeker/xcm-quartz.jsonnetdiffbeforeafterboth
--- a/.baedeker/xcm-quartz.jsonnet
+++ b/.baedeker/xcm-quartz.jsonnet
@@ -82,7 +82,7 @@
 			wantedKeys: 'para-nimbus',
 			legacyRpc: true,
 		},
-		for name in ['alice', 'bob']
+		for name in ['alith', 'baltathar']
 	},
 };
 
modified.baedeker/xcm-unique.jsonnetdiffbeforeafterboth
--- a/.baedeker/xcm-unique.jsonnet
+++ b/.baedeker/xcm-unique.jsonnet
@@ -83,7 +83,7 @@
 			wantedKeys: 'para-nimbus',
 			legacyRpc: true,
 		},
-		for name in ['alice', 'bob']
+		for name in ['alith', 'baltathar']
 	},
 };
 
modifiedtests/src/xcm/xcmQuartz.test.tsdiffbeforeafterboth
468 // 1.919176000000000000 QTZ received (you can check Karura's chain state in the corresponding block)468 // 1.919176000000000000 QTZ received (you can check Karura's chain state in the corresponding block)
469 const expectedKaruraIncomeFee = 2000000000000000000n - 1919176000000000000n;469 const expectedKaruraIncomeFee = 2000000000000000000n - 1919176000000000000n;
470
471 const KARURA_BACKWARD_TRANSFER_AMOUNT = TRANSFER_AMOUNT - expectedKaruraIncomeFee;470 const karuraEps = 8n * 10n ** 16n;
471
472 let karuraBackwardTransferAmount: bigint;
472473
473 before(async () => {474 before(async () => {
474 await usingPlaygrounds(async (helper, privateKey) => {475 await usingPlaygrounds(async (helper, privateKey) => {
569570
570 const karFees = balanceKaruraTokenInit - balanceKaruraTokenMiddle;571 const karFees = balanceKaruraTokenInit - balanceKaruraTokenMiddle;
571 const qtzIncomeTransfer = balanceQuartzForeignTokenMiddle - balanceQuartzForeignTokenInit;572 const qtzIncomeTransfer = balanceQuartzForeignTokenMiddle - balanceQuartzForeignTokenInit;
573 karuraBackwardTransferAmount = qtzIncomeTransfer;
574
572 const karUnqFees = TRANSFER_AMOUNT - qtzIncomeTransfer;575 const karUnqFees = TRANSFER_AMOUNT - qtzIncomeTransfer;
573576
582 console.log('[Quartz -> Karura] income %s QTZ', helper.util.bigIntToDecimals(qtzIncomeTransfer));585 console.log('[Quartz -> Karura] income %s QTZ', helper.util.bigIntToDecimals(qtzIncomeTransfer));
583 expect(karFees == 0n).to.be.true;586 expect(karFees == 0n).to.be.true;
587
588 const bigintAbs = (n: bigint) => (n < 0n) ? -n : n;
589
584 expect(590 expect(
585 karUnqFees == expectedKaruraIncomeFee,591 bigintAbs(karUnqFees - expectedKaruraIncomeFee) < karuraEps,
586 'Karura took different income fee, check the Karura foreign asset config',592 'Karura took different income fee, check the Karura foreign asset config',
587 ).to.be.true;593 ).to.be.true;
588 });594 });
611 ForeignAsset: 0,617 ForeignAsset: 0,
612 };618 };
613619
614 await helper.xTokens.transfer(randomAccount, id, KARURA_BACKWARD_TRANSFER_AMOUNT, destination, 'Unlimited');620 await helper.xTokens.transfer(randomAccount, id, karuraBackwardTransferAmount, destination, 'Unlimited');
615 balanceKaruraTokenFinal = await helper.balance.getSubstrate(randomAccount.address);621 balanceKaruraTokenFinal = await helper.balance.getSubstrate(randomAccount.address);
616 balanceQuartzForeignTokenFinal = await helper.tokens.accounts(randomAccount.address, id);622 balanceQuartzForeignTokenFinal = await helper.tokens.accounts(randomAccount.address, id);
617623
625 console.log('[Karura -> Quartz] outcome %s QTZ', helper.util.bigIntToDecimals(qtzOutcomeTransfer));631 console.log('[Karura -> Quartz] outcome %s QTZ', helper.util.bigIntToDecimals(qtzOutcomeTransfer));
626632
627 expect(karFees > 0, 'Negative fees KAR, looks like nothing was transferred').to.be.true;633 expect(karFees > 0, 'Negative fees KAR, looks like nothing was transferred').to.be.true;
628 expect(qtzOutcomeTransfer == KARURA_BACKWARD_TRANSFER_AMOUNT).to.be.true;634 expect(qtzOutcomeTransfer == karuraBackwardTransferAmount).to.be.true;
629 });635 });
630636
631 await helper.wait.newBlocks(3);637 await helper.wait.newBlocks(3);
636642
637 console.log('[Karura -> Quartz] actually delivered %s QTZ', helper.util.bigIntToDecimals(actuallyDelivered));643 console.log('[Karura -> Quartz] actually delivered %s QTZ', helper.util.bigIntToDecimals(actuallyDelivered));
638644
639 const qtzFees = KARURA_BACKWARD_TRANSFER_AMOUNT - actuallyDelivered;645 const qtzFees = karuraBackwardTransferAmount - actuallyDelivered;
640 console.log('[Karura -> Quartz] transaction fees on Quartz: %s QTZ', helper.util.bigIntToDecimals(qtzFees));646 console.log('[Karura -> Quartz] transaction fees on Quartz: %s QTZ', helper.util.bigIntToDecimals(qtzFees));
641 expect(qtzFees == 0n).to.be.true;647 expect(qtzFees == 0n).to.be.true;
642 });648 });
673 );679 );
674680
675 let maliciousXcmProgramSent: any;681 let maliciousXcmProgramSent: any;
676 const maxWaitBlocks = 3;682 const maxWaitBlocks = 5;
677683
678 // Try to trick Quartz684 // Try to trick Quartz
679 await usingKaruraPlaygrounds(karuraUrl, async (helper) => {685 await usingKaruraPlaygrounds(karuraUrl, async (helper) => {
682 maliciousXcmProgramSent = await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.XcmpMessageSent);688 maliciousXcmProgramSent = await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.XcmpMessageSent);
683 });689 });
684690
685 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramSent.messageHash691 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => {
692 return event.messageHash == maliciousXcmProgramSent.messageHash
686 && event.outcome().isFailedToTransactAsset);693 && event.outcome.isFailedToTransactAsset;
694 });
687695
688 targetAccountBalance = await helper.balance.getSubstrate(targetAccount.address);696 targetAccountBalance = await helper.balance.getSubstrate(targetAccount.address);
689 expect(targetAccountBalance).to.be.equal(0n);697 expect(targetAccountBalance).to.be.equal(0n);
764 });772 });
765773
766 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramFullIdSent.messageHash774 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramFullIdSent.messageHash
767 && event.outcome().isUntrustedReserveLocation);775 && event.outcome.isUntrustedReserveLocation);
768776
769 let accountBalance = await helper.balance.getSubstrate(targetAccount.address);777 let accountBalance = await helper.balance.getSubstrate(targetAccount.address);
770 expect(accountBalance).to.be.equal(0n);778 expect(accountBalance).to.be.equal(0n);
777 });785 });
778786
779 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramHereIdSent.messageHash787 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramHereIdSent.messageHash
780 && event.outcome().isUntrustedReserveLocation);788 && event.outcome.isUntrustedReserveLocation);
781789
782 accountBalance = await helper.balance.getSubstrate(targetAccount.address);790 accountBalance = await helper.balance.getSubstrate(targetAccount.address);
783 expect(accountBalance).to.be.equal(0n);791 expect(accountBalance).to.be.equal(0n);
853861
854 const expectFailedToTransact = async (helper: DevUniqueHelper, messageSent: any) => {862 const expectFailedToTransact = async (helper: DevUniqueHelper, messageSent: any) => {
855 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == messageSent.messageHash863 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == messageSent.messageHash
856 && event.outcome().isFailedToTransactAsset);864 && event.outcome.isFailedToTransactAsset);
857 };865 };
858866
859 itSub('Quartz rejects KAR tokens from Karura', async ({helper}) => {867 itSub('Quartz rejects KAR tokens from Karura', async ({helper}) => {
1165 });1173 });
11661174
1167 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramSent.messageHash1175 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramSent.messageHash
1168 && event.outcome().isFailedToTransactAsset);1176 && event.outcome.isFailedToTransactAsset);
11691177
1170 targetAccountBalance = await helper.balance.getSubstrate(targetAccount.address);1178 targetAccountBalance = await helper.balance.getSubstrate(targetAccount.address);
1171 expect(targetAccountBalance).to.be.equal(0n);1179 expect(targetAccountBalance).to.be.equal(0n);
1254 });1262 });
12551263
1256 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramFullIdSent.messageHash1264 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramFullIdSent.messageHash
1257 && event.outcome().isUntrustedReserveLocation);1265 && event.outcome.isUntrustedReserveLocation);
12581266
1259 let accountBalance = await helper.balance.getSubstrate(targetAccount.address);1267 let accountBalance = await helper.balance.getSubstrate(targetAccount.address);
1260 expect(accountBalance).to.be.equal(0n);1268 expect(accountBalance).to.be.equal(0n);
1271 });1279 });
12721280
1273 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramHereIdSent.messageHash1281 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramHereIdSent.messageHash
1274 && event.outcome().isUntrustedReserveLocation);1282 && event.outcome.isUntrustedReserveLocation);
12751283
1276 accountBalance = await helper.balance.getSubstrate(targetAccount.address);1284 accountBalance = await helper.balance.getSubstrate(targetAccount.address);
1277 expect(accountBalance).to.be.equal(0n);1285 expect(accountBalance).to.be.equal(0n);
1531 });1539 });
15321540
1533 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramSent.messageHash1541 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramSent.messageHash
1534 && event.outcome().isFailedToTransactAsset);1542 && event.outcome.isFailedToTransactAsset);
15351543
1536 targetAccountBalance = await helper.balance.getSubstrate(targetAccount.address);1544 targetAccountBalance = await helper.balance.getSubstrate(targetAccount.address);
1537 expect(targetAccountBalance).to.be.equal(0n);1545 expect(targetAccountBalance).to.be.equal(0n);
1612 });1620 });
16131621
1614 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramFullIdSent.messageHash1622 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramFullIdSent.messageHash
1615 && event.outcome().isUntrustedReserveLocation);1623 && event.outcome.isUntrustedReserveLocation);
16161624
1617 let accountBalance = await helper.balance.getSubstrate(targetAccount.address);1625 let accountBalance = await helper.balance.getSubstrate(targetAccount.address);
1618 expect(accountBalance).to.be.equal(0n);1626 expect(accountBalance).to.be.equal(0n);
1625 });1633 });
16261634
1627 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramHereIdSent.messageHash1635 await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramHereIdSent.messageHash
1628 && event.outcome().isUntrustedReserveLocation);1636 && event.outcome.isUntrustedReserveLocation);
16291637
1630 accountBalance = await helper.balance.getSubstrate(targetAccount.address);1638 accountBalance = await helper.balance.getSubstrate(targetAccount.address);
1631 expect(accountBalance).to.be.equal(0n);1639 expect(accountBalance).to.be.equal(0n);
modifiedtests/src/xcm/xcmUnique.test.tsdiffbeforeafterboth
--- a/tests/src/xcm/xcmUnique.test.ts
+++ b/tests/src/xcm/xcmUnique.test.ts
@@ -84,9 +84,8 @@
 
     await usingRelayPlaygrounds(relayUrl, async (helper) => {
       // Fund accounts on Statemint
-      const relayXcmVersion = 2;
-      await helper.xcm.teleportNativeAsset(alice, STATEMINT_CHAIN, alice.addressRaw, FUNDING_AMOUNT, relayXcmVersion);
-      await helper.xcm.teleportNativeAsset(alice, STATEMINT_CHAIN, bob.addressRaw, FUNDING_AMOUNT, relayXcmVersion);
+      await helper.xcm.teleportNativeAsset(alice, STATEMINT_CHAIN, alice.addressRaw, FUNDING_AMOUNT);
+      await helper.xcm.teleportNativeAsset(alice, STATEMINT_CHAIN, bob.addressRaw, FUNDING_AMOUNT);
     });
 
     await usingStatemintPlaygrounds(statemintUrl, async (helper) => {
@@ -154,7 +153,7 @@
     // (fee for USDT XCM are paid in relay tokens)
     await usingRelayPlaygrounds(relayUrl, async (helper) => {
       const destination = {
-        V1: {
+        V2: {
           parents: 0,
           interior: {X1: {
             Parachain: UNIQUE_CHAIN,
@@ -163,7 +162,7 @@
         }};
 
       const beneficiary = {
-        V1: {
+        V2: {
           parents: 0,
           interior: {X1: {
             AccountId32: {
@@ -175,7 +174,7 @@
       };
 
       const assets = {
-        V1: [
+        V2: [
           {
             id: {
               Concrete: {
@@ -200,7 +199,7 @@
   itSub('Should connect and send USDT from Statemint to Unique', async ({helper}) => {
     await usingStatemintPlaygrounds(statemintUrl, async (helper) => {
       const dest = {
-        V1: {
+        V2: {
           parents: 1,
           interior: {X1: {
             Parachain: UNIQUE_CHAIN,
@@ -209,7 +208,7 @@
         }};
 
       const beneficiary = {
-        V1: {
+        V2: {
           parents: 0,
           interior: {X1: {
             AccountId32: {
@@ -221,7 +220,7 @@
       };
 
       const assets = {
-        V1: [
+        V2: [
           {
             id: {
               Concrete: {
@@ -341,7 +340,7 @@
 
     await usingRelayPlaygrounds(relayUrl, async (helper) => {
       const destination = {
-        V1: {
+        V2: {
           parents: 0,
           interior: {X1: {
             Parachain: UNIQUE_CHAIN,
@@ -350,7 +349,7 @@
         }};
 
       const beneficiary = {
-        V1: {
+        V2: {
           parents: 0,
           interior: {X1: {
             AccountId32: {
@@ -362,7 +361,7 @@
       };
 
       const assets = {
-        V1: [
+        V2: [
           {
             id: {
               Concrete: {
@@ -468,8 +467,9 @@
   // 2 UNQ sent https://unique.subscan.io/xcm_message/polkadot-bad0b68847e2398af25d482e9ee6f9c1f9ec2a48
   // 1.898970000000000000 UNQ received (you can check Acala's chain state in the corresponding block)
   const expectedAcalaIncomeFee = 2000000000000000000n - 1898970000000000000n;
+  const acalaEps = 8n * 10n ** 16n;
 
-  const ACALA_BACKWARD_TRANSFER_AMOUNT = TRANSFER_AMOUNT - expectedAcalaIncomeFee;
+  let acalaBackwardTransferAmount: bigint;
 
   before(async () => {
     await usingPlaygrounds(async (helper, privateKey) => {
@@ -482,7 +482,7 @@
 
     await usingAcalaPlaygrounds(acalaUrl, async (helper) => {
       const destination = {
-        V1: {
+        V2: {
           parents: 1,
           interior: {
             X1: {
@@ -571,6 +571,8 @@
 
       const acaFees = balanceAcalaTokenInit - balanceAcalaTokenMiddle;
       const unqIncomeTransfer = balanceUniqueForeignTokenMiddle - balanceUniqueForeignTokenInit;
+      acalaBackwardTransferAmount = unqIncomeTransfer;
+
       const acaUnqFees = TRANSFER_AMOUNT - unqIncomeTransfer;
 
       console.log(
@@ -583,8 +585,11 @@
       );
       console.log('[Unique -> Acala] income %s UNQ', helper.util.bigIntToDecimals(unqIncomeTransfer));
       expect(acaFees == 0n).to.be.true;
+
+      const bigintAbs = (n: bigint) => (n < 0n) ? -n : n;
+
       expect(
-        acaUnqFees == expectedAcalaIncomeFee,
+        bigintAbs(acaUnqFees - expectedAcalaIncomeFee) < acalaEps,
         'Acala took different income fee, check the Acala foreign asset config',
       ).to.be.true;
     });
@@ -593,7 +598,7 @@
   itSub('Should connect to Acala and send UNQ back', async ({helper}) => {
     await usingAcalaPlaygrounds(acalaUrl, async (helper) => {
       const destination = {
-        V1: {
+        V2: {
           parents: 1,
           interior: {
             X2: [
@@ -613,7 +618,7 @@
         ForeignAsset: 0,
       };
 
-      await helper.xTokens.transfer(randomAccount, id, ACALA_BACKWARD_TRANSFER_AMOUNT, destination, 'Unlimited');
+      await helper.xTokens.transfer(randomAccount, id, acalaBackwardTransferAmount, destination, 'Unlimited');
       balanceAcalaTokenFinal = await helper.balance.getSubstrate(randomAccount.address);
       balanceUniqueForeignTokenFinal = await helper.tokens.accounts(randomAccount.address, id);
 
@@ -627,7 +632,7 @@
       console.log('[Acala -> Unique] outcome %s UNQ', helper.util.bigIntToDecimals(unqOutcomeTransfer));
 
       expect(acaFees > 0, 'Negative fees ACA, looks like nothing was transferred').to.be.true;
-      expect(unqOutcomeTransfer == ACALA_BACKWARD_TRANSFER_AMOUNT).to.be.true;
+      expect(unqOutcomeTransfer == acalaBackwardTransferAmount).to.be.true;
     });
 
     await helper.wait.newBlocks(3);
@@ -638,7 +643,7 @@
 
     console.log('[Acala -> Unique] actually delivered %s UNQ', helper.util.bigIntToDecimals(actuallyDelivered));
 
-    const unqFees = ACALA_BACKWARD_TRANSFER_AMOUNT - actuallyDelivered;
+    const unqFees = acalaBackwardTransferAmount - actuallyDelivered;
     console.log('[Acala -> Unique] transaction fees on Unique: %s UNQ', helper.util.bigIntToDecimals(unqFees));
     expect(unqFees == 0n).to.be.true;
   });
@@ -655,7 +660,7 @@
     const [targetAccount] = await helper.arrange.createAccounts([targetAccountBalance], alice);
 
     const uniqueMultilocation = {
-      V1: {
+      V2: {
         parents: 1,
         interior: {
           X1: {Parachain: UNIQUE_CHAIN},
@@ -685,7 +690,7 @@
     });
 
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramSent.messageHash
-        && event.outcome().isFailedToTransactAsset);
+        && event.outcome.isFailedToTransactAsset);
 
     targetAccountBalance = await helper.balance.getSubstrate(targetAccount.address);
     expect(targetAccountBalance).to.be.equal(0n);
@@ -718,7 +723,7 @@
     const [targetAccount] = await helper.arrange.createAccounts([0n], alice);
 
     const uniqueMultilocation = {
-      V1: {
+      V2: {
         parents: 1,
         interior: {
           X1: {
@@ -766,7 +771,7 @@
     });
 
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramFullIdSent.messageHash
-        && event.outcome().isUntrustedReserveLocation);
+        && event.outcome.isUntrustedReserveLocation);
 
     let accountBalance = await helper.balance.getSubstrate(targetAccount.address);
     expect(accountBalance).to.be.equal(0n);
@@ -779,7 +784,7 @@
     });
 
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramHereIdSent.messageHash
-        && event.outcome().isUntrustedReserveLocation);
+        && event.outcome.isUntrustedReserveLocation);
 
     accountBalance = await helper.balance.getSubstrate(targetAccount.address);
     expect(accountBalance).to.be.equal(0n);
@@ -845,7 +850,7 @@
       };
 
       uniqueCombinedMultilocationAcala = {
-        V1: {
+        V2: {
           parents: 1,
           interior: {
             X2: [uniqueParachainJunction, uniqueAccountJunction],
@@ -865,7 +870,7 @@
 
   const expectFailedToTransact = async (helper: DevUniqueHelper, messageSent: any) => {
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == messageSent.messageHash
-        && event.outcome().isFailedToTransactAsset);
+        && event.outcome.isFailedToTransactAsset);
   };
 
   itSub('Unique rejects ACA tokens from Acala', async ({helper}) => {
@@ -1178,7 +1183,7 @@
     });
 
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramSent.messageHash
-        && event.outcome().isFailedToTransactAsset);
+        && event.outcome.isFailedToTransactAsset);
 
     targetAccountBalance = await helper.balance.getSubstrate(targetAccount.address);
     expect(targetAccountBalance).to.be.equal(0n);
@@ -1267,7 +1272,7 @@
     });
 
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramFullIdSent.messageHash
-        && event.outcome().isUntrustedReserveLocation);
+        && event.outcome.isUntrustedReserveLocation);
 
     let accountBalance = await helper.balance.getSubstrate(targetAccount.address);
     expect(accountBalance).to.be.equal(0n);
@@ -1284,7 +1289,7 @@
     });
 
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramHereIdSent.messageHash
-        && event.outcome().isUntrustedReserveLocation);
+        && event.outcome.isUntrustedReserveLocation);
 
     accountBalance = await helper.balance.getSubstrate(targetAccount.address);
     expect(accountBalance).to.be.equal(0n);
@@ -1543,7 +1548,7 @@
     });
 
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramSent.messageHash
-        && event.outcome().isFailedToTransactAsset);
+        && event.outcome.isFailedToTransactAsset);
 
     targetAccountBalance = await helper.balance.getSubstrate(targetAccount.address);
     expect(targetAccountBalance).to.be.equal(0n);
@@ -1624,7 +1629,7 @@
     });
 
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramFullIdSent.messageHash
-        && event.outcome().isUntrustedReserveLocation);
+        && event.outcome.isUntrustedReserveLocation);
 
     let accountBalance = await helper.balance.getSubstrate(targetAccount.address);
     expect(accountBalance).to.be.equal(0n);
@@ -1637,7 +1642,7 @@
     });
 
     await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.Fail, event => event.messageHash == maliciousXcmProgramHereIdSent.messageHash
-        && event.outcome().isUntrustedReserveLocation);
+        && event.outcome.isUntrustedReserveLocation);
 
     accountBalance = await helper.balance.getSubstrate(targetAccount.address);
     expect(accountBalance).to.be.equal(0n);