Skip to content
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 27 additions & 51 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 8 additions & 18 deletions packages/axelar-local-dev-aptos/__tests__/contracts/HelloWorld.sol
Original file line number Diff line number Diff line change
@@ -1,49 +1,39 @@
//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,
payload,
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_;
Expand Down
2 changes: 1 addition & 1 deletion packages/axelar-local-dev-cosmos/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -94,6 +96,7 @@ contract SendReceive is AxelarExecutable {
}

function _execute(
bytes32 /*commandId*/,
string calldata /*sourceChain*/,
string calldata /*sourceAddress*/,
bytes calldata payload
Expand Down
Original file line number Diff line number Diff line change
@@ -1,49 +1,38 @@
//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,
payload,
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_;
Expand Down
3 changes: 2 additions & 1 deletion packages/axelar-local-dev/hardhat.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -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: {
Expand Down
11 changes: 6 additions & 5 deletions packages/axelar-local-dev/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@axelar-network/axelar-local-dev",
"version": "2.3.3",
"version": "2.3.4",
"description": "",
"main": "dist/index.js",
"files": [
Expand All @@ -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'"
Expand All @@ -33,10 +34,10 @@
},
"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": "^5.7.0",
"@axelar-network/interchain-token-service": "^1.2.4",
"@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",
"ganache": "^7.1.0",
Expand Down
7 changes: 5 additions & 2 deletions packages/axelar-local-dev/src/Network.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ import {
InterchainTokenService as InterchainTokenServiceContract,
InterchainTokenFactory as InterchainTokenFactoryContract,
InterchainProxy,
GatewayCaller,
} 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,
Expand Down Expand Up @@ -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,
Expand All @@ -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(
Expand Down
2 changes: 1 addition & 1 deletion packages/axelar-local-dev/src/__tests__/export.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
Loading