From 3eb34347a51543ed0a15fec10194545026a9b650 Mon Sep 17 00:00:00 2001 From: Olanetsoft Date: Mon, 10 Mar 2025 12:43:57 +0100 Subject: [PATCH 01/15] chore: update its version --- packages/axelar-local-dev/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/axelar-local-dev/package.json b/packages/axelar-local-dev/package.json index 06f717b8..dd500b15 100644 --- a/packages/axelar-local-dev/package.json +++ b/packages/axelar-local-dev/package.json @@ -1,6 +1,6 @@ { "name": "@axelar-network/axelar-local-dev", - "version": "2.3.3", + "version": "2.3.4", "description": "", "main": "dist/index.js", "files": [ @@ -36,7 +36,7 @@ "@axelar-network/axelar-cgp-solidity": "^6.3.0", "@axelar-network/axelar-chains-config": "^1.3.0", "@axelar-network/axelar-gmp-sdk-solidity": "^5.7.0", - "@axelar-network/interchain-token-service": "^1.2.4", + "@axelar-network/interchain-token-service": "^2.1.0", "ethers": "^5.6.5", "fs-extra": "^10.1.0", "ganache": "^7.1.0", From a106039a200d646c4f6def75baea3b1087d74c80 Mon Sep 17 00:00:00 2001 From: Olanetsoft Date: Mon, 10 Mar 2025 13:37:35 +0100 Subject: [PATCH 02/15] fix: update lock file --- package-lock.json | 62 ++++++++++++++++------------------------------- 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1ba857b1..c63a2986 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,22 +50,14 @@ } }, "node_modules/@axelar-network/axelar-cgp-solidity": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-solidity/-/axelar-cgp-solidity-6.2.1.tgz", - "integrity": "sha512-0RaxLYmsp3elXBytn7+eZUil1KFS6jjHR/ECrN/3IC7TeTDPUYunyy6JDxCdNYNtiD6EKgUAfQ7G4DrBb6hRxg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-solidity/-/axelar-cgp-solidity-6.4.0.tgz", + "integrity": "sha512-Xnw5xi234B1cmTCzgudV8zq+DDjJ1d1U362CM0vKH1FWmZprKIdqgmOYkiRyu+QiVhnznKiBURiSEHVrNjtYpw==", "dependencies": { - "@axelar-network/axelar-gmp-sdk-solidity": "5.6.4" + "@axelar-network/axelar-gmp-sdk-solidity": "5.10.0" }, "engines": { - "node": ">=16" - } - }, - "node_modules/@axelar-network/axelar-cgp-solidity/node_modules/@axelar-network/axelar-gmp-sdk-solidity": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.6.4.tgz", - "integrity": "sha512-PQjV+HeJynmSRMhyM3SexwnbFNruSaiRUeNCWjV8/7CkdPsDqypoqIXVRVU8Zk92DUUHeqZZzL/3qP2LYuvlnA==", - "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@axelar-network/axelar-cgp-sui": { @@ -357,9 +349,9 @@ } }, "node_modules/@axelar-network/axelar-gmp-sdk-solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.7.0.tgz", - "integrity": "sha512-JlokiWFxvR6bFQtDjdErtk0mZrr3GH1A8bKps1zVP/Bu4XOHR0WsrWGPVhWIbvT8a8Ag3dva4hskBYgdq+pLig==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.10.0.tgz", + "integrity": "sha512-s8SImALvYB+5AeiT3tbfWNBI2Mhqw1x91i/zM3DNpVUCnAR2HKtsB9T84KnUn/OJjOVgb4h0lv7q9smeYniRPw==", "engines": { "node": ">=18" } @@ -389,23 +381,23 @@ "link": true }, "node_modules/@axelar-network/interchain-token-service": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@axelar-network/interchain-token-service/-/interchain-token-service-1.2.4.tgz", - "integrity": "sha512-Sgw2M4VzW5hjL9TBe2ljL5wo+paYqlL2XNQlq1dyaDAD6E7PG1MQ+0U44QnfJfhhAwcqZtKQmb92ZNwV+BEdVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@axelar-network/interchain-token-service/-/interchain-token-service-2.1.0.tgz", + "integrity": "sha512-eRaDL7otxqZixzsSu3rYtMkFQ1buopNGAmc8fEHvJPPD1WYiRARx24z+61OTJjCHcRygBljl9oIlqmqiM6SAYg==", "dependencies": { - "@axelar-network/axelar-cgp-solidity": "6.2.1", - "@axelar-network/axelar-gmp-sdk-solidity": "5.6.4" + "@axelar-network/axelar-cgp-solidity": "6.4.0", + "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@axelar-network/interchain-token-service/node_modules/@axelar-network/axelar-gmp-sdk-solidity": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.6.4.tgz", - "integrity": "sha512-PQjV+HeJynmSRMhyM3SexwnbFNruSaiRUeNCWjV8/7CkdPsDqypoqIXVRVU8Zk92DUUHeqZZzL/3qP2LYuvlnA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-6.0.4.tgz", + "integrity": "sha512-o8pv+krIAlEwzid0Ac8qwykDsavc+1DRPvyFQ3V0R0zTQFtYLJIIXXXt7FRb8b+LJDAuX+E0bB3N2X+hlcxk/g==", "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@babel/code-frame": { @@ -15664,8 +15656,7 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "extraneous": true, "os": [ - "darwin", - "linux" + "darwin" ], "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" @@ -33898,13 +33889,13 @@ }, "packages/axelar-local-dev": { "name": "@axelar-network/axelar-local-dev", - "version": "2.3.3", + "version": "2.3.4", "license": "ISC", "dependencies": { "@axelar-network/axelar-cgp-solidity": "^6.3.0", "@axelar-network/axelar-chains-config": "^1.3.0", "@axelar-network/axelar-gmp-sdk-solidity": "^5.7.0", - "@axelar-network/interchain-token-service": "^1.2.4", + "@axelar-network/interchain-token-service": "^2.1.0", "ethers": "^5.6.5", "fs-extra": "^10.1.0", "ganache": "^7.1.0", @@ -34036,17 +34027,6 @@ "@mysten/sui.js": "^0.41.0" } }, - "packages/axelar-local-dev/node_modules/@axelar-network/axelar-cgp-solidity": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-solidity/-/axelar-cgp-solidity-6.3.0.tgz", - "integrity": "sha512-dHE2UgaFZvQvL0ythMi+aBsr4t+eR6zrVGmCU5BxslEqi6Tx+Wmjwg1O1p15EqoztalSqRKj+r57n3GtgeUpig==", - "dependencies": { - "@axelar-network/axelar-gmp-sdk-solidity": "5.7.0" - }, - "engines": { - "node": ">=18" - } - }, "packages/axelar-local-dev/node_modules/@types/node": { "version": "18.19.3", "dev": true, From 6477563c87b7b475b30827e1f0ad0ab56418465d Mon Sep 17 00:00:00 2001 From: Olanetsoft Date: Mon, 10 Mar 2025 13:44:57 +0100 Subject: [PATCH 03/15] fix: update os to include linux --- package-lock.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index c63a2986..7c1a8649 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15656,7 +15656,8 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "extraneous": true, "os": [ - "darwin" + "darwin", + "linux" ], "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" From c3068b74da0245ced677b8311ed5b6151af0ff7d Mon Sep 17 00:00:00 2001 From: Olanetsoft Date: Mon, 10 Mar 2025 16:14:07 +0100 Subject: [PATCH 04/15] chore: update gmp-sdk-solidity version --- package-lock.json | 10 +++++++++- packages/axelar-local-dev/package.json | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7c1a8649..841db6e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33895,7 +33895,7 @@ "dependencies": { "@axelar-network/axelar-cgp-solidity": "^6.3.0", "@axelar-network/axelar-chains-config": "^1.3.0", - "@axelar-network/axelar-gmp-sdk-solidity": "^5.7.0", + "@axelar-network/axelar-gmp-sdk-solidity": "^6.0.6", "@axelar-network/interchain-token-service": "^2.1.0", "ethers": "^5.6.5", "fs-extra": "^10.1.0", @@ -34028,6 +34028,14 @@ "@mysten/sui.js": "^0.41.0" } }, + "packages/axelar-local-dev/node_modules/@axelar-network/axelar-gmp-sdk-solidity": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-6.0.6.tgz", + "integrity": "sha512-XIcDlr1HoYSqcxuvvusILmiqerh2bL9NJLwU4lFBAJK5E/st/q3Em9ropBBZML9iuUZ+hDsch8Ev9rMO+ulaSQ==", + "engines": { + "node": ">=18" + } + }, "packages/axelar-local-dev/node_modules/@types/node": { "version": "18.19.3", "dev": true, diff --git a/packages/axelar-local-dev/package.json b/packages/axelar-local-dev/package.json index dd500b15..d99d334a 100644 --- a/packages/axelar-local-dev/package.json +++ b/packages/axelar-local-dev/package.json @@ -35,7 +35,7 @@ "dependencies": { "@axelar-network/axelar-cgp-solidity": "^6.3.0", "@axelar-network/axelar-chains-config": "^1.3.0", - "@axelar-network/axelar-gmp-sdk-solidity": "^5.7.0", + "@axelar-network/axelar-gmp-sdk-solidity": "^6.0.6", "@axelar-network/interchain-token-service": "^2.1.0", "ethers": "^5.6.5", "fs-extra": "^10.1.0", From d45a54c78df0c97f1d041343996e5fb65d5063f4 Mon Sep 17 00:00:00 2001 From: Olanetsoft Date: Tue, 11 Mar 2025 16:35:55 +0100 Subject: [PATCH 05/15] fix: remove wrong import --- packages/axelar-local-dev/src/contracts/GMP.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/axelar-local-dev/src/contracts/GMP.sol b/packages/axelar-local-dev/src/contracts/GMP.sol index 72ffe7b8..7b47bae5 100644 --- a/packages/axelar-local-dev/src/contracts/GMP.sol +++ b/packages/axelar-local-dev/src/contracts/GMP.sol @@ -11,5 +11,4 @@ import { AxelarGasService } from '@axelar-network/axelar-cgp-solidity/contracts/ import { AxelarGasServiceProxy } from '@axelar-network/axelar-cgp-solidity/contracts/gas-service/AxelarGasServiceProxy.sol'; // Axelar GMP SDK -import { IAxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarExecutable.sol'; -import { AxelarExpressExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutable.sol'; +import { IAxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarExecutable.sol'; \ No newline at end of file From d16d9345c3684b8ae86d96247fe3c0b6ea199a6d Mon Sep 17 00:00:00 2001 From: Olanetsoft Date: Tue, 11 Mar 2025 17:26:59 +0100 Subject: [PATCH 06/15] fix: rename AxelarExpressExecutable to AxelarExpressExecutableWithToken --- packages/axelar-local-dev/src/contracts/GMP.sol | 3 ++- .../src/contracts/test/ExpressWithToken.sol | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/axelar-local-dev/src/contracts/GMP.sol b/packages/axelar-local-dev/src/contracts/GMP.sol index 7b47bae5..8873a715 100644 --- a/packages/axelar-local-dev/src/contracts/GMP.sol +++ b/packages/axelar-local-dev/src/contracts/GMP.sol @@ -11,4 +11,5 @@ import { AxelarGasService } from '@axelar-network/axelar-cgp-solidity/contracts/ import { AxelarGasServiceProxy } from '@axelar-network/axelar-cgp-solidity/contracts/gas-service/AxelarGasServiceProxy.sol'; // Axelar GMP SDK -import { IAxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarExecutable.sol'; \ No newline at end of file +import { IAxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarExecutable.sol'; +import { AxelarExpressExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutableWithToken.sol'; diff --git a/packages/axelar-local-dev/src/contracts/test/ExpressWithToken.sol b/packages/axelar-local-dev/src/contracts/test/ExpressWithToken.sol index 0e56f88b..37bce43d 100644 --- a/packages/axelar-local-dev/src/contracts/test/ExpressWithToken.sol +++ b/packages/axelar-local-dev/src/contracts/test/ExpressWithToken.sol @@ -2,16 +2,16 @@ pragma solidity ^0.8.0; import { AxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.sol'; -import { AxelarExpressExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutable.sol'; +import { AxelarExpressExecutableWithToken } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutableWithToken.sol'; import { IAxelarGateway } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGateway.sol'; import { IERC20 } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IERC20.sol'; import { IAxelarGasService } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol'; import { Upgradable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/upgradable/Upgradable.sol'; -contract ExpressWithToken is AxelarExpressExecutable { +contract ExpressWithToken is AxelarExpressExecutableWithToken { IAxelarGasService public immutable gasService; - constructor(address gateway_, address gasReceiver_) AxelarExpressExecutable(gateway_) { + constructor(address gateway_, address gasReceiver_) AxelarExpressExecutableWithToken(gateway_) { gasService = IAxelarGasService(gasReceiver_); } From e2fd5da4859bd48b523399815045772c978f245c Mon Sep 17 00:00:00 2001 From: Olanetsoft Date: Wed, 12 Mar 2025 19:12:58 +0000 Subject: [PATCH 07/15] fix: update AxelarExpressExecutable method --- packages/axelar-local-dev/src/contracts/GMP.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/axelar-local-dev/src/contracts/GMP.sol b/packages/axelar-local-dev/src/contracts/GMP.sol index 8873a715..f38592b4 100644 --- a/packages/axelar-local-dev/src/contracts/GMP.sol +++ b/packages/axelar-local-dev/src/contracts/GMP.sol @@ -12,4 +12,4 @@ import { AxelarGasServiceProxy } from '@axelar-network/axelar-cgp-solidity/contr // Axelar GMP SDK import { IAxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarExecutable.sol'; -import { AxelarExpressExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutableWithToken.sol'; +import { AxelarExpressExecutableWithToken } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutableWithToken.sol'; From ac17787ed51e39c6b25701b71ce808e953b76f52 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 19 Mar 2025 16:56:18 +0200 Subject: [PATCH 08/15] fix packages and contracts --- package-lock.json | 31 +++++++++---------- packages/axelar-local-dev-cosmos/package.json | 2 +- packages/axelar-local-dev/hardhat.config.js | 3 +- packages/axelar-local-dev/package.json | 5 +-- packages/axelar-local-dev/src/Network.ts | 4 +-- .../axelar-local-dev/src/contracts/GMP.sol | 8 ----- .../axelar-local-dev/src/contracts/ITS.sol | 2 +- .../axelar-local-dev/src/contracts/index.ts | 16 +++++----- .../src/contracts/test/Executable.sol | 10 ++++-- .../contracts/test/ExecutableWithToken.sol | 23 +++++++++----- .../src/contracts/test/ExpressWithToken.sol | 20 +++++++----- packages/axelar-local-dev/src/its.ts | 10 +++--- packages/axelar-local-dev/src/networkUtils.ts | 4 +-- .../axelar-local-dev/src/relay/EvmRelayer.ts | 2 +- 14 files changed, 78 insertions(+), 62 deletions(-) diff --git a/package-lock.json b/package-lock.json index 841db6e0..4a73d191 100644 --- a/package-lock.json +++ b/package-lock.json @@ -54,12 +54,20 @@ "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-solidity/-/axelar-cgp-solidity-6.4.0.tgz", "integrity": "sha512-Xnw5xi234B1cmTCzgudV8zq+DDjJ1d1U362CM0vKH1FWmZprKIdqgmOYkiRyu+QiVhnznKiBURiSEHVrNjtYpw==", "dependencies": { - "@axelar-network/axelar-gmp-sdk-solidity": "5.10.0" + "@axelar-network/axelar-gmp-sdk-solidity": "6.0.6" }, "engines": { "node": ">=18" } }, + "node_modules/@axelar-network/axelar-cgp-solidity/node_modules/@axelar-network/axelar-gmp-sdk-solidity": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.10.0.tgz", + "integrity": "sha512-s8SImALvYB+5AeiT3tbfWNBI2Mhqw1x91i/zM3DNpVUCnAR2HKtsB9T84KnUn/OJjOVgb4h0lv7q9smeYniRPw==", + "engines": { + "node": ">=18" + } + }, "node_modules/@axelar-network/axelar-cgp-sui": { "version": "0.0.0", "resolved": "git+ssh://git@github.com/axelarnetwork/axelar-cgp-sui.git#a27769db651ab1c40c707ad95ea92bffc89fb75e", @@ -349,9 +357,9 @@ } }, "node_modules/@axelar-network/axelar-gmp-sdk-solidity": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.10.0.tgz", - "integrity": "sha512-s8SImALvYB+5AeiT3tbfWNBI2Mhqw1x91i/zM3DNpVUCnAR2HKtsB9T84KnUn/OJjOVgb4h0lv7q9smeYniRPw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-6.0.6.tgz", + "integrity": "sha512-XIcDlr1HoYSqcxuvvusILmiqerh2bL9NJLwU4lFBAJK5E/st/q3Em9ropBBZML9iuUZ+hDsch8Ev9rMO+ulaSQ==", "engines": { "node": ">=18" } @@ -15656,8 +15664,7 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "extraneous": true, "os": [ - "darwin", - "linux" + "darwin" ], "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" @@ -33893,7 +33900,7 @@ "version": "2.3.4", "license": "ISC", "dependencies": { - "@axelar-network/axelar-cgp-solidity": "^6.3.0", + "@axelar-network/axelar-cgp-solidity": "^6.4.0", "@axelar-network/axelar-chains-config": "^1.3.0", "@axelar-network/axelar-gmp-sdk-solidity": "^6.0.6", "@axelar-network/interchain-token-service": "^2.1.0", @@ -33964,7 +33971,7 @@ "sinon": "^17.0.1" }, "devDependencies": { - "@axelar-network/axelar-gmp-sdk-solidity": "^5.6.2", + "@axelar-network/axelar-gmp-sdk-solidity": "^6.0.6", "@types/node-fetch": "^2.6.5", "jest": "^29.7.0", "ts-jest": "^29.1.1", @@ -34028,14 +34035,6 @@ "@mysten/sui.js": "^0.41.0" } }, - "packages/axelar-local-dev/node_modules/@axelar-network/axelar-gmp-sdk-solidity": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-6.0.6.tgz", - "integrity": "sha512-XIcDlr1HoYSqcxuvvusILmiqerh2bL9NJLwU4lFBAJK5E/st/q3Em9ropBBZML9iuUZ+hDsch8Ev9rMO+ulaSQ==", - "engines": { - "node": ">=18" - } - }, "packages/axelar-local-dev/node_modules/@types/node": { "version": "18.19.3", "dev": true, diff --git a/packages/axelar-local-dev-cosmos/package.json b/packages/axelar-local-dev-cosmos/package.json index c2834bc9..118fab33 100644 --- a/packages/axelar-local-dev-cosmos/package.json +++ b/packages/axelar-local-dev-cosmos/package.json @@ -36,7 +36,7 @@ "license": "ISC", "description": "", "devDependencies": { - "@axelar-network/axelar-gmp-sdk-solidity": "^5.6.2", + "@axelar-network/axelar-gmp-sdk-solidity": "^6.0.6", "@types/node-fetch": "^2.6.5", "jest": "^29.7.0", "ts-jest": "^29.1.1", diff --git a/packages/axelar-local-dev/hardhat.config.js b/packages/axelar-local-dev/hardhat.config.js index 32cb732b..d6927395 100644 --- a/packages/axelar-local-dev/hardhat.config.js +++ b/packages/axelar-local-dev/hardhat.config.js @@ -4,9 +4,10 @@ require('@typechain/hardhat'); /** * @type import('hardhat/config').HardhatUserConfig */ + module.exports = { solidity: { - version: '0.8.9', + version: '0.8.23', settings: { evmVersion: process.env.EVM_VERSION || 'london', optimizer: { diff --git a/packages/axelar-local-dev/package.json b/packages/axelar-local-dev/package.json index d99d334a..44ebd92a 100644 --- a/packages/axelar-local-dev/package.json +++ b/packages/axelar-local-dev/package.json @@ -13,7 +13,8 @@ "contract-test": "npx hardhat test", "test": "jest", "build-ts": "rm -rf dist && tsc", - "build-contract": "rm -rf src/artifacts artifacts && hardhat clean && hardhat compile && mv artifacts src/artifacts", + "build-cgp-solidity-types": "npx typechain --target=ethers-v5 '../../node_modules/@axelar-network/axelar-cgp-solidity/artifacts/contracts/**/**.json' --out-dir=./src/types/@axelar-network/axelar-cgp-solidity/contracts", + "build-contract": "rm -rf src/artifacts artifacts && hardhat clean && hardhat compile && mv artifacts src/artifacts && npm run build-cgp-solidity-types", "build": "run-s build-contract build-ts", "lint": "solhint 'src/contracts/**/*.sol' && eslint 'test/**/*.js'", "prettier": "prettier --write 'src/contracts/**/*.sol' 'test/**/*.js' 'src/**/*.ts'" @@ -33,7 +34,7 @@ }, "homepage": "https://github.com/axelarnetwork/axelar-local-dev#readme", "dependencies": { - "@axelar-network/axelar-cgp-solidity": "^6.3.0", + "@axelar-network/axelar-cgp-solidity": "^6.4.0", "@axelar-network/axelar-chains-config": "^1.3.0", "@axelar-network/axelar-gmp-sdk-solidity": "^6.0.6", "@axelar-network/interchain-token-service": "^2.1.0", diff --git a/packages/axelar-local-dev/src/Network.ts b/packages/axelar-local-dev/src/Network.ts index 481aa768..6d22345b 100644 --- a/packages/axelar-local-dev/src/Network.ts +++ b/packages/axelar-local-dev/src/Network.ts @@ -21,10 +21,10 @@ import { InterchainTokenFactory as InterchainTokenFactoryContract, InterchainProxy, } from './contracts'; -import { AxelarGateway__factory as AxelarGatewayFactory } from './types/factories/@axelar-network/axelar-cgp-solidity/contracts/AxelarGateway__factory'; +import { AxelarGateway__factory as AxelarGatewayFactory } from './types/@axelar-network/axelar-cgp-solidity/contracts/factories/AxelarGateway__factory'; import { AxelarGateway } from './types/@axelar-network/axelar-cgp-solidity/contracts/AxelarGateway'; import { InterchainTokenService, InterchainTokenFactory } from './types/@axelar-network/interchain-token-service/contracts'; -import { AxelarGasService__factory as AxelarGasServiceFactory } from './types/factories/@axelar-network/axelar-cgp-solidity/contracts/gas-service/AxelarGasService__factory'; +import { AxelarGasService__factory as AxelarGasServiceFactory } from './types/@axelar-network/axelar-cgp-solidity/contracts/factories/gas-service/AxelarGasService__factory'; import { InterchainTokenService__factory as InterchainTokenServiceFactory, InterchainTokenFactory__factory as InterchainTokenFactoryFactory, diff --git a/packages/axelar-local-dev/src/contracts/GMP.sol b/packages/axelar-local-dev/src/contracts/GMP.sol index f38592b4..8da748ec 100644 --- a/packages/axelar-local-dev/src/contracts/GMP.sol +++ b/packages/axelar-local-dev/src/contracts/GMP.sol @@ -2,14 +2,6 @@ pragma solidity ^0.8.0; -// Axelar CGP SDK -import { TokenDeployer } from '@axelar-network/axelar-cgp-solidity/contracts/TokenDeployer.sol'; -import { AxelarGateway } from '@axelar-network/axelar-cgp-solidity/contracts/AxelarGateway.sol'; -import { AxelarAuthWeighted } from '@axelar-network/axelar-cgp-solidity/contracts/auth/AxelarAuthWeighted.sol'; -import { AxelarGatewayProxy } from '@axelar-network/axelar-cgp-solidity/contracts/AxelarGatewayProxy.sol'; -import { AxelarGasService } from '@axelar-network/axelar-cgp-solidity/contracts/gas-service/AxelarGasService.sol'; -import { AxelarGasServiceProxy } from '@axelar-network/axelar-cgp-solidity/contracts/gas-service/AxelarGasServiceProxy.sol'; - // Axelar GMP SDK import { IAxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarExecutable.sol'; import { AxelarExpressExecutableWithToken } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutableWithToken.sol'; diff --git a/packages/axelar-local-dev/src/contracts/ITS.sol b/packages/axelar-local-dev/src/contracts/ITS.sol index 40ddc5d5..3df5fd08 100644 --- a/packages/axelar-local-dev/src/contracts/ITS.sol +++ b/packages/axelar-local-dev/src/contracts/ITS.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.9; +pragma solidity ^0.8.9; // Interchain Token Service import { TokenManagerDeployer } from '@axelar-network/interchain-token-service/contracts/utils/TokenManagerDeployer.sol'; diff --git a/packages/axelar-local-dev/src/contracts/index.ts b/packages/axelar-local-dev/src/contracts/index.ts index 16d50d9e..d0b03c2b 100644 --- a/packages/axelar-local-dev/src/contracts/index.ts +++ b/packages/axelar-local-dev/src/contracts/index.ts @@ -1,11 +1,11 @@ -import TokenDeployer from '../artifacts/@axelar-network/axelar-cgp-solidity/contracts/TokenDeployer.sol/TokenDeployer.json'; -import AxelarGatewayProxy from '../artifacts/@axelar-network/axelar-cgp-solidity/contracts/AxelarGatewayProxy.sol/AxelarGatewayProxy.json'; -import AxelarGateway from '../artifacts/@axelar-network/axelar-cgp-solidity/contracts/AxelarGateway.sol/AxelarGateway.json'; -import IAxelarGateway from '../artifacts/@axelar-network/axelar-cgp-solidity/contracts/interfaces/IAxelarGateway.sol/IAxelarGateway.json'; -import BurnableMintableCappedERC20 from '../artifacts/@axelar-network/axelar-cgp-solidity/contracts/BurnableMintableCappedERC20.sol/BurnableMintableCappedERC20.json'; -import Auth from '../artifacts/@axelar-network/axelar-cgp-solidity/contracts/auth/AxelarAuthWeighted.sol/AxelarAuthWeighted.json'; -import AxelarGasReceiver from '../artifacts/@axelar-network/axelar-cgp-solidity/contracts/gas-service/AxelarGasService.sol/AxelarGasService.json'; -import AxelarGasReceiverProxy from '../artifacts/@axelar-network/axelar-cgp-solidity/contracts/gas-service/AxelarGasServiceProxy.sol/AxelarGasServiceProxy.json'; +import TokenDeployer from '@axelar-network/axelar-cgp-solidity/artifacts/contracts/TokenDeployer.sol/TokenDeployer.json'; +import AxelarGatewayProxy from '@axelar-network/axelar-cgp-solidity/artifacts/contracts/AxelarGatewayProxy.sol/AxelarGatewayProxy.json'; +import AxelarGateway from '@axelar-network/axelar-cgp-solidity/artifacts/contracts/AxelarGateway.sol/AxelarGateway.json'; +import IAxelarGateway from '@axelar-network/axelar-cgp-solidity/artifacts/contracts/interfaces/IAxelarGateway.sol/IAxelarGateway.json'; +import BurnableMintableCappedERC20 from '@axelar-network/axelar-cgp-solidity/artifacts/contracts/BurnableMintableCappedERC20.sol/BurnableMintableCappedERC20.json'; +import Auth from '@axelar-network/axelar-cgp-solidity/artifacts/contracts/auth/AxelarAuthWeighted.sol/AxelarAuthWeighted.json'; +import AxelarGasReceiver from '@axelar-network/axelar-cgp-solidity/artifacts/contracts/gas-service/AxelarGasService.sol/AxelarGasService.json'; +import AxelarGasReceiverProxy from '@axelar-network/axelar-cgp-solidity/artifacts/contracts/gas-service/AxelarGasServiceProxy.sol/AxelarGasServiceProxy.json'; import IAxelarGasService from '../artifacts/@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol/IAxelarGasService.json'; import ConstAddressDeployer from '@axelar-network/axelar-gmp-sdk-solidity/artifacts/contracts/deploy/ConstAddressDeployer.sol/ConstAddressDeployer.json'; import Create3Deployer from '@axelar-network/axelar-gmp-sdk-solidity/artifacts/contracts/deploy/Create3Deployer.sol/Create3Deployer.json'; diff --git a/packages/axelar-local-dev/src/contracts/test/Executable.sol b/packages/axelar-local-dev/src/contracts/test/Executable.sol index ec68d5db..7fc2fb6e 100644 --- a/packages/axelar-local-dev/src/contracts/test/Executable.sol +++ b/packages/axelar-local-dev/src/contracts/test/Executable.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; +import { IAxelarGateway } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGateway.sol'; import { IAxelarGasService } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol'; import { AxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.sol'; @@ -28,12 +29,17 @@ contract Executable is AxelarExecutable { if (msg.value > 0) { gasService.payNativeGasForContractCall{ value: msg.value }(address(this), chain, siblings[chain], payload, msg.sender); } - gateway.callContract(chain, siblings[chain], payload); + IAxelarGateway(gatewayAddress).callContract(chain, siblings[chain], payload); } /* Handles calls created by setAndSend. Updates this contract's value and gives the token received to the destination specified at the source chain. */ - function _execute(string calldata sourceChain_, string calldata sourceAddress_, bytes calldata payload_) internal override { + function _execute( + bytes32, + string calldata sourceChain_, + string calldata sourceAddress_, + bytes calldata payload_ + ) internal override { (value) = abi.decode(payload_, (string)); sourceChain = sourceChain_; sourceAddress = sourceAddress_; diff --git a/packages/axelar-local-dev/src/contracts/test/ExecutableWithToken.sol b/packages/axelar-local-dev/src/contracts/test/ExecutableWithToken.sol index 4959d866..93997a31 100644 --- a/packages/axelar-local-dev/src/contracts/test/ExecutableWithToken.sol +++ b/packages/axelar-local-dev/src/contracts/test/ExecutableWithToken.sol @@ -3,17 +3,18 @@ pragma solidity ^0.8.0; import { IERC20 } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IERC20.sol'; +import { IAxelarGatewayWithToken } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGatewayWithToken.sol'; import { IAxelarGasService } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol'; -import { AxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.sol'; +import { AxelarExecutableWithToken } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutableWithToken.sol'; -contract ExecutableWithToken is AxelarExecutable { +contract ExecutableWithToken is AxelarExecutableWithToken { string public value; string public sourceChain; string public sourceAddress; IAxelarGasService public immutable gasService; mapping(string => string) public siblings; - constructor(address gateway_, address gasService_) AxelarExecutable(gateway_) { + constructor(address gateway_, address gasService_) AxelarExecutableWithToken(gateway_) { gasService = IAxelarGasService(gasService_); } @@ -43,15 +44,16 @@ contract ExecutableWithToken is AxelarExecutable { msg.sender ); } - address token = gateway.tokenAddresses(symbol); + address token = IAxelarGatewayWithToken(gatewayAddress).tokenAddresses(symbol); IERC20(token).transferFrom(msg.sender, address(this), amount); - IERC20(token).approve(address(gateway), amount); - gateway.callContractWithToken(chain, siblings[chain], payload, symbol, amount); + IERC20(token).approve(gatewayAddress, amount); + IAxelarGatewayWithToken(gatewayAddress).callContractWithToken(chain, siblings[chain], payload, symbol, amount); } /*Handles calls created by setAndSend. Updates this contract's value and gives the token received to the destination specified at the source chain. */ function _executeWithToken( + bytes32, string calldata sourceChain_, string calldata sourceAddress_, bytes calldata payload_, @@ -62,7 +64,14 @@ contract ExecutableWithToken is AxelarExecutable { (value, destinationAddress) = abi.decode(payload_, (string, address)); sourceChain = sourceChain_; sourceAddress = sourceAddress_; - address token = gateway.tokenAddresses(symbol); + address token = IAxelarGatewayWithToken(gatewayAddress).tokenAddresses(symbol); IERC20(token).transfer(destinationAddress, amount); } + + function _execute( + bytes32, + string calldata, + string calldata, + bytes calldata + ) internal override {} } diff --git a/packages/axelar-local-dev/src/contracts/test/ExpressWithToken.sol b/packages/axelar-local-dev/src/contracts/test/ExpressWithToken.sol index 37bce43d..f5b9b7eb 100644 --- a/packages/axelar-local-dev/src/contracts/test/ExpressWithToken.sol +++ b/packages/axelar-local-dev/src/contracts/test/ExpressWithToken.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; import { AxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.sol'; import { AxelarExpressExecutableWithToken } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutableWithToken.sol'; -import { IAxelarGateway } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGateway.sol'; +import { IAxelarGatewayWithToken } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGatewayWithToken.sol'; import { IERC20 } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IERC20.sol'; import { IAxelarGasService } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol'; import { Upgradable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/upgradable/Upgradable.sol'; @@ -22,9 +22,9 @@ contract ExpressWithToken is AxelarExpressExecutableWithToken { string memory symbol, uint256 amount ) external payable { - address tokenAddress = gateway.tokenAddresses(symbol); + address tokenAddress = IAxelarGatewayWithToken(gatewayAddress).tokenAddresses(symbol); IERC20(tokenAddress).transferFrom(msg.sender, address(this), amount); - IERC20(tokenAddress).approve(address(gateway), amount); + IERC20(tokenAddress).approve(gatewayAddress, amount); bytes memory payload = abi.encode(destinationAddresses); if (msg.value > 0) { gasService.payNativeGasForExpressCallWithToken{ value: msg.value }( @@ -37,10 +37,18 @@ contract ExpressWithToken is AxelarExpressExecutableWithToken { msg.sender ); } - gateway.callContractWithToken(destinationChain, destinationAddress, payload, symbol, amount); + IAxelarGatewayWithToken(gatewayAddress).callContractWithToken(destinationChain, destinationAddress, payload, symbol, amount); } + function _execute( + bytes32 commandId, + string calldata sourceChain, + string calldata sourceAddress, + bytes calldata payload + ) internal override {} + function _executeWithToken( + bytes32, string calldata, string calldata, bytes calldata payload, @@ -48,13 +56,11 @@ contract ExpressWithToken is AxelarExpressExecutableWithToken { uint256 amount ) internal override { address[] memory recipients = abi.decode(payload, (address[])); - address tokenAddress = gateway.tokenAddresses(tokenSymbol); + address tokenAddress = IAxelarGatewayWithToken(gatewayAddress).tokenAddresses(tokenSymbol); uint256 sentAmount = amount / recipients.length; for (uint256 i = 0; i < recipients.length; i++) { IERC20(tokenAddress).transfer(recipients[i], sentAmount); } } - - function _execute(string calldata, string calldata, bytes calldata payload) internal override {} } diff --git a/packages/axelar-local-dev/src/its.ts b/packages/axelar-local-dev/src/its.ts index 3f758cb5..ab57b3d7 100644 --- a/packages/axelar-local-dev/src/its.ts +++ b/packages/axelar-local-dev/src/its.ts @@ -48,7 +48,7 @@ export async function setupITS(network: Network) { await ( await factory .connect(wallet) - .deployRemoteCanonicalInterchainToken('', tokenAddress, destinationChain.name, gasValue, { value: gasValue }) + .registerCanonicalInterchainToken(tokenAddress) ).wait(); await relay(); @@ -69,7 +69,8 @@ export async function setupITS(network: Network) { const factory = network.interchainTokenFactory; await (await factory.connect(wallet).deployInterchainToken(salt, name, symbol, decimals, mintAmount, distributor)).wait(); - const tokenAddress = await factory.interchainTokenAddress(wallet.address, salt); + const tokenId = await factory.interchainTokenId(wallet.address, salt); + const tokenAddress = await network.interchainTokenService.interchainTokenAddress(tokenId); return IInterchainTokenFactory.connect(tokenAddress, wallet); }; @@ -91,12 +92,13 @@ export async function setupITS(network: Network) { await ( await factory .connect(wallet) - .deployRemoteInterchainToken('', salt, distributor, destinationChain.name, gasValue, { value: gasValue }) + .deployRemoteInterchainTokenWithMinter(salt, distributor, destinationChain.name, distributor, gasValue, { value: gasValue }) ).wait(); await relay(); - const tokenAddress = await factory.interchainTokenAddress(wallet.address, salt); + const tokenId = await factory.interchainTokenId(wallet.address, salt); + const tokenAddress = await network.interchainTokenService.interchainTokenAddress(tokenId); return IInterchainTokenFactory.connect(tokenAddress, destinationChain.provider); }; } diff --git a/packages/axelar-local-dev/src/networkUtils.ts b/packages/axelar-local-dev/src/networkUtils.ts index 28eb57a6..e22ce0ab 100644 --- a/packages/axelar-local-dev/src/networkUtils.ts +++ b/packages/axelar-local-dev/src/networkUtils.ts @@ -7,8 +7,8 @@ import { ethers, Wallet, Contract, providers, getDefaultProvider } from 'ethers' import { merge } from 'lodash'; import { defaultAccounts, setJSON, httpGet, logger } from './utils'; import { Network, networks, NetworkOptions, NetworkInfo, NetworkSetup } from './Network'; -import { AxelarGateway__factory as AxelarGatewayFactory } from './types/factories/@axelar-network/axelar-cgp-solidity/contracts/AxelarGateway__factory'; -import { AxelarGasService__factory as AxelarGasServiceFactory } from './types/factories/@axelar-network/axelar-cgp-solidity/contracts/gas-service/AxelarGasService__factory'; +import { AxelarGateway__factory as AxelarGatewayFactory } from './types/@axelar-network/axelar-cgp-solidity/contracts/factories/AxelarGateway__factory'; +import { AxelarGasService__factory as AxelarGasServiceFactory } from './types/@axelar-network/axelar-cgp-solidity/contracts/factories/gas-service/AxelarGasService__factory'; import { Server } from 'http'; import { ConstAddressDeployer, Create3Deployer, IInterchainTokenService } from './contracts'; import { diff --git a/packages/axelar-local-dev/src/relay/EvmRelayer.ts b/packages/axelar-local-dev/src/relay/EvmRelayer.ts index 319cea58..2648d761 100644 --- a/packages/axelar-local-dev/src/relay/EvmRelayer.ts +++ b/packages/axelar-local-dev/src/relay/EvmRelayer.ts @@ -11,7 +11,7 @@ import { ContractCallEventObject, ContractCallWithTokenEventObject, } from '../types/@axelar-network/axelar-cgp-solidity/contracts/AxelarGateway'; -import { AxelarExpressExecutable__factory as AxelarExpressExecutableFactory } from '../types/factories/@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutable__factory'; +import { AxelarExpressExecutableWithToken__factory as AxelarExpressExecutableFactory } from '../types/factories/@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutableWithToken__factory'; const AddressZero = ethers.constants.AddressZero; From 1b8cb6bae0ecf4bb4c4e40512f8783a1a9de3c11 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 19 Mar 2025 17:06:30 +0200 Subject: [PATCH 09/15] remove optional dep --- package-lock.json | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4a73d191..36884f18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15658,18 +15658,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "extraneous": true }, - "node_modules/ganache/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "extraneous": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/ganache/node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", From afb076ab26d2e5c8bf47e19539203e58611a7caf Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 19 Mar 2025 17:14:15 +0200 Subject: [PATCH 10/15] fixed a test import --- packages/axelar-local-dev/src/__tests__/export.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/axelar-local-dev/src/__tests__/export.spec.ts b/packages/axelar-local-dev/src/__tests__/export.spec.ts index 8a9dbf55..34415eaa 100644 --- a/packages/axelar-local-dev/src/__tests__/export.spec.ts +++ b/packages/axelar-local-dev/src/__tests__/export.spec.ts @@ -6,7 +6,7 @@ import { Wallet } from 'ethers'; import fs from 'fs'; const { expect } = chai; import { deployContract, setLogger, createAndExport, destroyExported, Network, networks, setupAndExport } from '../'; -import { AxelarExpressExecutable__factory as AxelarExpressExecutableFactory } from '../types/factories/@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutable__factory'; +import { AxelarExpressExecutableWithToken__factory as AxelarExpressExecutableFactory } from '../types/factories/@axelar-network/axelar-gmp-sdk-solidity/contracts/express/AxelarExpressExecutableWithToken__factory'; import { ExpressWithToken__factory as ExpressWithTokenFactory } from '../types/factories/src/contracts/test/ExpressWithToken__factory'; import { ExecutableWithToken__factory as ExecuteWithTokenFactory } from '../types/factories/src/contracts/test/ExecutableWithToken__factory'; import ExpressWithToken from '../artifacts/src/contracts/test/ExpressWithToken.sol/ExpressWithToken.json'; From 3cd31999b1b855a83c80f50579b5502c29aaa783 Mon Sep 17 00:00:00 2001 From: Foivos Date: Fri, 21 Mar 2025 14:53:55 +0200 Subject: [PATCH 11/15] fixed its deployment --- packages/axelar-local-dev/src/Network.ts | 3 +++ packages/axelar-local-dev/src/contracts/ITS.sol | 1 + packages/axelar-local-dev/src/contracts/index.ts | 2 ++ 3 files changed, 6 insertions(+) diff --git a/packages/axelar-local-dev/src/Network.ts b/packages/axelar-local-dev/src/Network.ts index 6d22345b..cae8b95a 100644 --- a/packages/axelar-local-dev/src/Network.ts +++ b/packages/axelar-local-dev/src/Network.ts @@ -20,6 +20,7 @@ import { InterchainTokenService as InterchainTokenServiceContract, InterchainTokenFactory as InterchainTokenFactoryContract, InterchainProxy, + GatewayCaller, } from './contracts'; import { AxelarGateway__factory as AxelarGatewayFactory } from './types/@axelar-network/axelar-cgp-solidity/contracts/factories/AxelarGateway__factory'; import { AxelarGateway } from './types/@axelar-network/axelar-cgp-solidity/contracts/AxelarGateway'; @@ -237,6 +238,7 @@ export class Network { const tokenManager = await deployContract(wallet, TokenManager, [interchainTokenServiceAddress]); const tokenHandler = await deployContract(wallet, TokenHandler, []); const interchainTokenFactoryAddress = await this.create3Deployer.deployedAddress('0x', wallet.address, factorySalt); + const gatewayCaller = await deployContract(wallet, GatewayCaller, [this.gateway.address, this.gasService.address]); const tokenServiceImplementation = await deployContract(wallet, InterchainTokenServiceContract, [ tokenManagerDeployer.address, @@ -247,6 +249,7 @@ export class Network { this.name, tokenManager.address, tokenHandler.address, + gatewayCaller.address, ]); const factory = new ContractFactory(InterchainProxy.abi, InterchainProxy.bytecode); let bytecode = factory.getDeployTransaction( diff --git a/packages/axelar-local-dev/src/contracts/ITS.sol b/packages/axelar-local-dev/src/contracts/ITS.sol index 3df5fd08..b54914b2 100644 --- a/packages/axelar-local-dev/src/contracts/ITS.sol +++ b/packages/axelar-local-dev/src/contracts/ITS.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.9; // Interchain Token Service import { TokenManagerDeployer } from '@axelar-network/interchain-token-service/contracts/utils/TokenManagerDeployer.sol'; +import { GatewayCaller } from '@axelar-network/interchain-token-service/contracts/utils/GatewayCaller.sol'; import { InterchainToken } from '@axelar-network/interchain-token-service/contracts/interchain-token/InterchainToken.sol'; import { InterchainTokenDeployer } from '@axelar-network/interchain-token-service/contracts/utils/InterchainTokenDeployer.sol'; import { TokenManager } from '@axelar-network/interchain-token-service/contracts/token-manager/TokenManager.sol'; diff --git a/packages/axelar-local-dev/src/contracts/index.ts b/packages/axelar-local-dev/src/contracts/index.ts index d0b03c2b..9a826373 100644 --- a/packages/axelar-local-dev/src/contracts/index.ts +++ b/packages/axelar-local-dev/src/contracts/index.ts @@ -21,6 +21,7 @@ import InterchainTokenFactory from '../artifacts/@axelar-network/interchain-toke import InterchainProxy from '../artifacts/@axelar-network/interchain-token-service/contracts/proxies/InterchainProxy.sol/InterchainProxy.json'; import IInterchainTokenService from '../artifacts/@axelar-network/interchain-token-service/contracts/interfaces/IInterchainTokenService.sol/IInterchainTokenService.json'; import IInterchainTokenFactory from '../artifacts/@axelar-network/interchain-token-service/contracts/interfaces/IInterchainTokenFactory.sol/IInterchainTokenFactory.json'; +import GatewayCaller from '../artifacts/@axelar-network/interchain-token-service/contracts/utils/GatewayCaller.sol/GatewayCaller.json'; export { TokenDeployer, @@ -45,4 +46,5 @@ export { InterchainTokenFactory, IInterchainTokenService, IInterchainTokenFactory, + GatewayCaller, }; From 0492d310a36d18772e077f14caba2ecd74e98037 Mon Sep 17 00:00:00 2001 From: Foivos Date: Fri, 21 Mar 2025 15:21:57 +0200 Subject: [PATCH 12/15] fix executable with token --- packages/axelar-local-dev/src/contracts/index.ts | 2 ++ packages/axelar-local-dev/src/relay/Command.ts | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/axelar-local-dev/src/contracts/index.ts b/packages/axelar-local-dev/src/contracts/index.ts index 9a826373..c2a15f0d 100644 --- a/packages/axelar-local-dev/src/contracts/index.ts +++ b/packages/axelar-local-dev/src/contracts/index.ts @@ -10,6 +10,7 @@ import IAxelarGasService from '../artifacts/@axelar-network/axelar-gmp-sdk-solid import ConstAddressDeployer from '@axelar-network/axelar-gmp-sdk-solidity/artifacts/contracts/deploy/ConstAddressDeployer.sol/ConstAddressDeployer.json'; import Create3Deployer from '@axelar-network/axelar-gmp-sdk-solidity/artifacts/contracts/deploy/Create3Deployer.sol/Create3Deployer.json'; import IAxelarExecutable from '../artifacts/@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarExecutable.sol/IAxelarExecutable.json'; +import IAxelarExecutableWithToken from '../artifacts/@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarExecutableWithToken.sol/IAxelarExecutableWithToken.json'; import TokenManagerDeployer from '../artifacts/@axelar-network/interchain-token-service/contracts/utils/TokenManagerDeployer.sol/TokenManagerDeployer.json'; import InterchainToken from '../artifacts/@axelar-network/interchain-token-service/contracts/interchain-token/InterchainToken.sol/InterchainToken.json'; @@ -36,6 +37,7 @@ export { Create3Deployer, IAxelarGasService, IAxelarExecutable, + IAxelarExecutableWithToken, TokenManagerDeployer, InterchainToken, InterchainTokenDeployer, diff --git a/packages/axelar-local-dev/src/relay/Command.ts b/packages/axelar-local-dev/src/relay/Command.ts index 32a11109..be830ee4 100644 --- a/packages/axelar-local-dev/src/relay/Command.ts +++ b/packages/axelar-local-dev/src/relay/Command.ts @@ -4,7 +4,7 @@ import { ethers, Contract, ContractReceipt } from 'ethers'; const { defaultAbiCoder } = ethers.utils; import { networks } from '../Network'; import { CallContractArgs, CallContractWithTokenArgs, RelayData } from './types'; -import { IAxelarExecutable } from '../contracts'; +import { IAxelarExecutable, IAxelarExecutableWithToken } from '../contracts'; //An internal class for handling axelar commands. export class Command { @@ -64,7 +64,7 @@ export class Command { const to = networks.find((chain) => chain.name == args.to); if (!to) return; - const contract = new Contract(args.destinationContractAddress, IAxelarExecutable.abi, to.relayerWallet); + const contract = new Contract(args.destinationContractAddress, IAxelarExecutableWithToken.abi, to.relayerWallet); const receipt = await contract .executeWithToken( commandId, From 7bf6af956736bd7893e0929f61729a3c63390ffe Mon Sep 17 00:00:00 2001 From: Olanetsoft Date: Wed, 26 Mar 2025 14:46:10 +0000 Subject: [PATCH 13/15] fix: aptos test --- .../__tests__/contracts/HelloWorld.sol | 27 +++++++------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/packages/axelar-local-dev-aptos/__tests__/contracts/HelloWorld.sol b/packages/axelar-local-dev-aptos/__tests__/contracts/HelloWorld.sol index 6e3983db..c1f726fe 100644 --- a/packages/axelar-local-dev-aptos/__tests__/contracts/HelloWorld.sol +++ b/packages/axelar-local-dev-aptos/__tests__/contracts/HelloWorld.sol @@ -1,33 +1,27 @@ //SPDX-License-Identifier: MIT pragma solidity >=0.8.9 <0.9.0; +import { IAxelarGateway } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGateway.sol'; +import { IAxelarGasService } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol'; import { AxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.sol'; -import { IAxelarGateway } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IAxelarGateway.sol'; -import { IAxelarGasService } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IAxelarGasService.sol'; contract HelloWorld is AxelarExecutable { string public value; string public sourceChain; string public sourceAddress; - IAxelarGasService gasService; + IAxelarGasService public immutable gasService; - constructor(address _gateway, address _gasReceiver) - AxelarExecutable(_gateway) - { + constructor(address _gateway, address _gasReceiver) AxelarExecutable(_gateway) { gasService = IAxelarGasService(_gasReceiver); } event Executed(); // Call this function to update the value of this contract along with all its siblings'. - function setRemoteValue( - string memory destinationChain, - string memory destinationAddress, - string calldata message - ) external payable { + function setRemoteValue(string memory destinationChain, string memory destinationAddress, string calldata message) external payable { bytes memory payload = abi.encodePacked(message); if (msg.value > 0) { - gasService.payNativeGasForContractCall{value: msg.value}( + gasService.payNativeGasForContractCall{ value: msg.value }( address(this), destinationChain, destinationAddress, @@ -35,15 +29,12 @@ contract HelloWorld is AxelarExecutable { msg.sender ); } - gateway.callContract(destinationChain, destinationAddress, payload); + IAxelarGateway(gatewayAddress).callContract(destinationChain, destinationAddress, payload); + // gateway.callContract(destinationChain, destinationAddress, payload); } // Handles calls created by setAndSend. Updates this contract's value - function _execute( - string calldata sourceChain_, - string calldata sourceAddress_, - bytes calldata payload_ - ) internal override { + function _execute(bytes32, string calldata sourceChain_, string calldata sourceAddress_, bytes calldata payload_) internal override { (value) = abi.decode(payload_, (string)); sourceChain = sourceChain_; sourceAddress = sourceAddress_; From b8b2bb6c0f31924bfd0d70cf9823bae3800957f7 Mon Sep 17 00:00:00 2001 From: Olanetsoft Date: Wed, 26 Mar 2025 14:55:57 +0000 Subject: [PATCH 14/15] fix: cosmos and multiversx test --- .../__tests__/contracts/HelloWorld.sol | 1 - .../src/__tests__/contracts/SendReceive.sol | 11 +++++--- .../__tests__/contracts/HelloWorld.sol | 27 ++++++------------- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/packages/axelar-local-dev-aptos/__tests__/contracts/HelloWorld.sol b/packages/axelar-local-dev-aptos/__tests__/contracts/HelloWorld.sol index c1f726fe..ba04993b 100644 --- a/packages/axelar-local-dev-aptos/__tests__/contracts/HelloWorld.sol +++ b/packages/axelar-local-dev-aptos/__tests__/contracts/HelloWorld.sol @@ -30,7 +30,6 @@ contract HelloWorld is AxelarExecutable { ); } IAxelarGateway(gatewayAddress).callContract(destinationChain, destinationAddress, payload); - // gateway.callContract(destinationChain, destinationAddress, payload); } // Handles calls created by setAndSend. Updates this contract's value diff --git a/packages/axelar-local-dev-cosmos/src/__tests__/contracts/SendReceive.sol b/packages/axelar-local-dev-cosmos/src/__tests__/contracts/SendReceive.sol index 36584000..f4aa3e55 100644 --- a/packages/axelar-local-dev-cosmos/src/__tests__/contracts/SendReceive.sol +++ b/packages/axelar-local-dev-cosmos/src/__tests__/contracts/SendReceive.sol @@ -1,9 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; -import {AxelarExecutable} from "@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.sol"; -import {IAxelarGateway} from "@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGateway.sol"; -import {IAxelarGasService} from "@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol"; + +import { IAxelarGateway } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGateway.sol'; +import { IAxelarGasService } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol'; +import { AxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.sol'; + import {StringToAddress, AddressToString} from "@axelar-network/axelar-gmp-sdk-solidity/contracts/libs/AddressString.sol"; contract SendReceive is AxelarExecutable { @@ -51,7 +53,7 @@ contract SendReceive is AxelarExecutable { ); // 3. Make GMP call - gateway.callContract(destinationChain, destinationAddress, payload); + IAxelarGateway(gatewayAddress).callContract(destinationChain, destinationAddress, payload); } function _encodePayloadToCosmWasm( @@ -94,6 +96,7 @@ contract SendReceive is AxelarExecutable { } function _execute( + bytes32 /*commandId*/, string calldata /*sourceChain*/, string calldata /*sourceAddress*/, bytes calldata payload diff --git a/packages/axelar-local-dev-multiversx/__tests__/contracts/HelloWorld.sol b/packages/axelar-local-dev-multiversx/__tests__/contracts/HelloWorld.sol index 6e3983db..262b781c 100644 --- a/packages/axelar-local-dev-multiversx/__tests__/contracts/HelloWorld.sol +++ b/packages/axelar-local-dev-multiversx/__tests__/contracts/HelloWorld.sol @@ -1,33 +1,26 @@ //SPDX-License-Identifier: MIT pragma solidity >=0.8.9 <0.9.0; - +import { IAxelarGateway } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGateway.sol'; +import { IAxelarGasService } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/IAxelarGasService.sol'; import { AxelarExecutable } from '@axelar-network/axelar-gmp-sdk-solidity/contracts/executable/AxelarExecutable.sol'; -import { IAxelarGateway } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IAxelarGateway.sol'; -import { IAxelarGasService } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IAxelarGasService.sol'; contract HelloWorld is AxelarExecutable { string public value; string public sourceChain; string public sourceAddress; - IAxelarGasService gasService; + IAxelarGasService public immutable gasService; - constructor(address _gateway, address _gasReceiver) - AxelarExecutable(_gateway) - { + constructor(address _gateway, address _gasReceiver) AxelarExecutable(_gateway) { gasService = IAxelarGasService(_gasReceiver); } event Executed(); // Call this function to update the value of this contract along with all its siblings'. - function setRemoteValue( - string memory destinationChain, - string memory destinationAddress, - string calldata message - ) external payable { + function setRemoteValue(string memory destinationChain, string memory destinationAddress, string calldata message) external payable { bytes memory payload = abi.encodePacked(message); if (msg.value > 0) { - gasService.payNativeGasForContractCall{value: msg.value}( + gasService.payNativeGasForContractCall{ value: msg.value }( address(this), destinationChain, destinationAddress, @@ -35,15 +28,11 @@ contract HelloWorld is AxelarExecutable { msg.sender ); } - gateway.callContract(destinationChain, destinationAddress, payload); + IAxelarGateway(gatewayAddress).callContract(destinationChain, destinationAddress, payload); } // Handles calls created by setAndSend. Updates this contract's value - function _execute( - string calldata sourceChain_, - string calldata sourceAddress_, - bytes calldata payload_ - ) internal override { + function _execute(bytes32, string calldata sourceChain_, string calldata sourceAddress_, bytes calldata payload_) internal override { (value) = abi.decode(payload_, (string)); sourceChain = sourceChain_; sourceAddress = sourceAddress_; From 6a2332f3249e1e4f49104b37e888f8ef3f1c4440 Mon Sep 17 00:00:00 2001 From: npty Date: Wed, 9 Apr 2025 21:51:29 +0700 Subject: [PATCH 15/15] chore: bump package version to 2.3.5-alpha.1 --- packages/axelar-local-dev/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/axelar-local-dev/package.json b/packages/axelar-local-dev/package.json index 44ebd92a..9293182d 100644 --- a/packages/axelar-local-dev/package.json +++ b/packages/axelar-local-dev/package.json @@ -1,6 +1,6 @@ { "name": "@axelar-network/axelar-local-dev", - "version": "2.3.4", + "version": "2.3.5-alpha.1", "description": "", "main": "dist/index.js", "files": [