From 37635f94d97d95e2f0ec0b2ef7a3275f33ae3c31 Mon Sep 17 00:00:00 2001 From: DarkLord017 Date: Sat, 10 Aug 2024 22:40:28 +0530 Subject: [PATCH 1/2] updated dependencies & made all non-payable functions cross chain --- contracts/contracts/interface.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/contracts/interface.sol b/contracts/contracts/interface.sol index f34e1c6..57b69bf 100644 --- a/contracts/contracts/interface.sol +++ b/contracts/contracts/interface.sol @@ -140,7 +140,7 @@ contract universal { function builderSignup() public payable {} - function initializeTeam(Team memory team) public {} //TeamAlreadyExists() OnlyValidTeamSize() NotInTeam() DuplicateParticipants() OnlyBuilder() + function initializeTeam(address[] memory team) public {} //TeamAlreadyExists() OnlyValidTeamSize() NotInTeam() DuplicateParticipants() OnlyBuilder() function submitProject() public {} From e0efb9c601098a8526c98357c084d85ee347de42 Mon Sep 17 00:00:00 2001 From: DarkLord017 Date: Sat, 10 Aug 2024 22:46:24 +0530 Subject: [PATCH 2/2] updated dependencies & made all non-payable functions cross chain --- axelar-cross-chain/.env.example | 3 +- .../chain-config-parent/testnet.json | 98 +++-- .../contracts/child/crossDappHack.sol | 137 +++++- axelar-cross-chain/contracts/child/index.js | 57 ++- .../contracts/parent/dapphack.sol | 345 +++++++++++---- axelar-cross-chain/output.json | 1 + axelar-cross-chain/package-lock.json | 408 ++++++++++++------ axelar-cross-chain/package.json | 10 +- axelar-cross-chain/scripts/libs/utils.js | 8 +- axelar-cross-chain/scripts/runExecute.js | 2 +- 10 files changed, 804 insertions(+), 265 deletions(-) create mode 100644 axelar-cross-chain/output.json diff --git a/axelar-cross-chain/.env.example b/axelar-cross-chain/.env.example index 2544c46..5958c16 100644 --- a/axelar-cross-chain/.env.example +++ b/axelar-cross-chain/.env.example @@ -1,4 +1,5 @@ -EVM_PRIVATE_KEY="your EVM private key" +EVM_PRIVATE_KEY="YOUR_PRIVATE_KEY" +PRIVATE_KEY2 = "YOUR_PRIVATE_KEY" APTOS_URL=http://0.0.0.0:8080 APTOS_ADDRESS=0x8ac1b8ff9583ac8e661c7f0ee462698c57bb7fc454f587e3fa25a57f9406acc0 APTOS_TOKEN_LINKER_ADDRESS=0x1641cde81bb0ffd52cce178f6ab4f1fc86fe451de189ffc71298aaf2e74a7a15 diff --git a/axelar-cross-chain/chain-config-parent/testnet.json b/axelar-cross-chain/chain-config-parent/testnet.json index ebcf4a2..f1d6ed5 100644 --- a/axelar-cross-chain/chain-config-parent/testnet.json +++ b/axelar-cross-chain/chain-config-parent/testnet.json @@ -2,6 +2,7 @@ { "name": "Filecoin", "id": "filecoin-2", + "axelarId": "filecoin-2", "chainId": 314159, "rpc": "https://api.calibration.node.glif.io/rpc/v1", "tokenSymbol": "FIL", @@ -11,15 +12,18 @@ }, "AxelarGateway": { "address": "0x999117D44220F33e0441fbAb2A5aDB8FF485c54D", - "implementation": "0xD2ed9ACBd2Acba9CA3EA60b9Eb7652698598bC53", - "authModule": "0x57441fFa88C5F311aeC600bcaC15666198C82B52", - "tokenDeployer": "0x364a9f84cD5A0fB88E1953a2fB70F676c284D57C", - "deployer": "0xB8Cd93C83A974649D76B1c19f311f639e62272BC" + "implementation": "0x99B5FA03a5ea4315725c43346e55a6A6fbd94098", + "authModule": "0xaDa0F9d5698459a57c2c8b9c380398E71C69D6fA", + "tokenDeployer": "0xb28478319B64f8D47e19A120209A211D902F8b8f", + "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", + "implementationCodehash": "0xc3516b0df24004564d42ebd7c4e4d3814655ea19ec2535627ebcdced0970cccd", + "deploymentMethod": "create3", + "salt": "AxelarGateway v6.2" }, "AxelarGasService": { "collector": "0x7F83F5cA2AE4206AbFf8a3C3668e88ce5F11C0B5", "address": "0xbe406f0189a0b4cf3a05c286473d23791dd44cc6", - "implementation": "0x125AAf72B24a78f7aE5Cae92D7717f533633320d", + "implementation": "0xA72afaa3130fE7F25CfcA4A49ed48e377a35aB6C", "deployer": "0x5b593E7b1725dc6FcbbFe80b2415B19153F94A85", "owner": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05" }, @@ -33,26 +37,11 @@ }, "Create3Deployer": { "salt": "Create3Deployer", - "address": "0xf49B10ccFB7D82C3a8749fFB1aAF3e0c936Eba36", - "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", - "deploymentMethod": "create2" - }, - "InterchainTokenService": { - "salt": "ITS v0.3.0", + "address": "0x6513Aedb4D1593BA12e50644401D976aebDc90d8", "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", - "tokenManagerDeployer": "0x6Aa459645b696108894C7548A898192E4716Ef15", - "standardizedTokenLockUnlock": "0x3a27e5d92C50C022510B74D2eBc53956E3b3cAd6", - "standardizedTokenMintBurn": "0x9b63b458cD214C3786f117aD3d2821a9aC8E4201", - "standardizedTokenDeployer": "0x6c6632071c792f7F73BBC404A1FD1973e60B8C0C", - "remoteAddressValidatorImplementation": "0x33FEfaaD1D97d82C930B2d920613c8697787823D", - "remoteAddressValidator": "0x30c8dffBfb0f0535A1B56A7D00d5627692B399D5", - "tokenManagerImplementations": { - "tokenManagerLockUnlock": "0xADE0d3f7E7325219610907F80e7438CD22B0d27D", - "tokenManagerMintBurn": "0x2dF7688066d10e6aAEd5116814eB0f701cF6F74f", - "tokenManagerLiquidityPool": "0x5D16dFFFb32889eB4d023030FD63B598334C9C90" - }, - "implementation": "0x6f7F028e83696498233EdB778Abe858D8c63d85b", - "address": "0xF786e21509A9D50a9aFD033B5940A2b7D872C208" + "deploymentMethod": "create2", + "codehash": "0xf0ad66defbe082df243d4d274e626f557f97579c5c9e19f33d8093d6160808b7", + "predeployCodehash": "0x73fc31262c4bad113c79439fd231281201c7c7d45b50328bd86bccf37684bf92" }, "InterchainProposalSender": { "address": "0x1f8A4d195B647647c7dD45650CBd553FD33cCAA6", @@ -66,15 +55,63 @@ "deployer": "0xB8Cd93C83A974649D76B1c19f311f639e62272BC", "deploymentMethod": "create2", "salt": "Operators" + }, + "InterchainGovernance": { + "governanceChain": "Axelarnet", + "governanceAddress": "axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj", + "minimumTimeDelay": 300, + "address": "0xfDF36A30070ea0241d69052ea85ff44Ad0476a66", + "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", + "deploymentMethod": "create3", + "codehash": "0x0a188afb57c6c5caec589da3096f75f674e48a8a8abb5d747a251630dbf5b2ab", + "predeployCodehash": "0xe2de43b29f2387b6f3575a1b50d566908fc00e03a8d88ad6be74b674a70874d2", + "salt": "InterchainGovernance v5.5" + }, + "Multisig": { + "threshold": 2, + "signers": [ + "0x15837c1318AB83d99b19392Fd4811813f520d843", + "0x64247a441CeF0b7A46614AC34d046c0fdfe35954", + "0xEE64c8eb48437DbD2D5B8598dc4A3E8a6c8CEaD9" + ], + "address": "0xCC940AE49C78F20E3F13F3cF37e996b98Ac3EC68", + "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", + "deploymentMethod": "create3", + "codehash": "0x912095d5076ee40a9dd49c0f9d61d61334c47a78c7512852791652baef26c296", + "predeployCodehash": "0x912095d5076ee40a9dd49c0f9d61d61334c47a78c7512852791652baef26c296", + "salt": "Multisig v5.5" + }, + "InterchainTokenService": { + "salt": "ITS v1.2.4", + "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", + "tokenManagerDeployer": "0x121b0e54Cd7ad2BBCb4c4C9275697978EBaF3653", + "interchainToken": "0x7F9F70Da4af54671a6abAc58e705b5634cac8819", + "interchainTokenDeployer": "0x58667c5f134420Bf6904C7dD01fDDcB4Fea3a760", + "tokenManager": "0x81a0545091864617E7037171FdfcBbdCFE3aeb23", + "tokenHandler": "0x07715674F74c560200c7C95430673180812fCE73", + "implementation": "0x6d59D9360BDAe406614b7E61c53F43a03198A4ef", + "address": "0xB5FB4BE02232B1bBA4dC8f81dc24C26980dE9e3C", + "proxySalt": "ITS v1.0.0" + }, + "InterchainTokenFactory": { + "salt": "ITS Factory v1.0.0", + "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", + "implementation": "0xA852412D2d91fE05d790934B6E64C3C351fAB54f", + "address": "0x83a93500d23Fbc3e82B410aD07A6a9F7A0670D66" } }, "explorer": { + "name": "Filfox", "url": "https://calibration.filfox.info" }, "gasOptions": { "gasLimit": 300000000 }, - "confirmations": 1, + "confirmations": 3, + "eip1559": true, + "finality": "120", + "approxFinalityWaitTime": 60, + "txTimeout": 180000, "AxelarGasService": { "address": "0xbE406F0189A0B4cf3A05C286473D23791Dd44Cc6" }, @@ -96,6 +133,8 @@ "event ProjectSubmitted(uint256 teamNumber, string nftUri)", "event SponsorSignedUp(string name, address indexed sponsor, uint256 prize)", "event TeamInitialized(string name, address[] participants)", + "event TeamJoined(uint256 index, address indexed builder)", + "event TeamLeft(uint256 index, address indexed builder)", "event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)", "event WinnerJudged(uint256 trackNumber, uint256 winnerNumber)", "function STAKE() view returns (uint256)", @@ -103,8 +142,7 @@ "function balanceOf(address owner) view returns (uint256)", "function builderSignup() payable", "function builderToTeam(address) view returns (string name, bool validProject, bool projectSubmitted)", - "function changePrizePool(uint256 sponsorNumber, uint256 newPrize) payable", - "function changePrizePoolSTruct() payable", + "function crosssubmitProject(uint256 teamNumber, string nftUri)", "function distributePrize() payable", "function distributePrizePool(uint256 prize, tuple(string name, address[] participants, bool validProject, bool projectSubmitted) team) payable", "function distributePrizeTrack(uint256 prize, tuple(string name, address[] participants, bool validProject, bool projectSubmitted) team) payable", @@ -128,6 +166,7 @@ "function getWinnerTrackWinners(uint256 winnerNumber) view returns (uint256[])", "function initializeTeam(string name, address[] participants)", "function isApprovedForAll(address owner, address operator) view returns (bool)", + "function joinTeam(uint256 teamIndex)", "function judgeWinner(string _sponsor_name, uint256[] trackWinners, uint256[] poolPrizeWinners)", "function name() view returns (string)", "function ownerOf(uint256 tokenId) view returns (address)", @@ -155,9 +194,10 @@ "function symbol() view returns (string)", "function tokenIdOf(address owner) view returns (uint256)", "function tokenURI(uint256 tokenId) view returns (string)", - "function transferFrom(address from, address to, uint256 tokenId)" + "function transferFrom(address from, address to, uint256 tokenId)", + "function withdrawTeam(uint256 participantIndex, uint256 TeamIndex)" ], - "address": "0x9aB7f1600E3A0B4c6D2219f22D2B2cfe86436dfa" + "address": "0x8CBC7F3ddB155c2a030DDd64509C8a775657e7a9" } } ] diff --git a/axelar-cross-chain/contracts/child/crossDappHack.sol b/axelar-cross-chain/contracts/child/crossDappHack.sol index fb0f42c..2dd2b1d 100644 --- a/axelar-cross-chain/contracts/child/crossDappHack.sol +++ b/axelar-cross-chain/contracts/child/crossDappHack.sol @@ -7,12 +7,34 @@ import { IAxelarGasService } from '@axelar-network/axelar-gmp-sdk-solidity/contr contract CrossDappHack is AxelarExecutable { IAxelarGasService public immutable gasService; - uint256 public constant STAKE = 1000000000000000; + uint256 public constant STAKE = 10000000000000; constructor(address gateway_, address gasService_) AxelarExecutable(gateway_){ gasService = IAxelarGasService(gasService_); } + modifier DuplicateParticipants(address[] memory participant) { + address[] memory AllParticipants = new address[](1 + participant.length); + + for (uint i = 0 ; i != participant.length; i++ ){ + AllParticipants[i] = participant[i]; + } + + AllParticipants[participant.length] = msg.sender; + + for (uint i = 0; i != AllParticipants.length; i++ ) { + for (uint j = i + 1; j != AllParticipants.length; j++ ) { + if(AllParticipants[j] == AllParticipants[i]) { + revert("Duplicate Participants"); + } + + } + + } + + _; + } + function crossBuilderSignup( string calldata destinationChain, string calldata destinationAddress @@ -20,7 +42,7 @@ contract CrossDappHack is AxelarExecutable { //could be exploited. Include gas fee in the the require require(msg.value > STAKE, 'Stake is not enough'); - bytes memory payload = abi.encode(msg.sender); + bytes memory payload = abi.encode("builderSignup" , msg.sender); gasService.payNativeGasForContractCall{ value: msg.value - STAKE }( address(this), destinationChain, @@ -29,7 +51,116 @@ contract CrossDappHack is AxelarExecutable { msg.sender ); gateway.callContract(destinationChain, destinationAddress, payload); - payable(address(this)).transfer(STAKE); + // payable(address(this)).transfer(STAKE); } + + function crossinitializeTeam( + string calldata destinationChain, + string calldata destinationAddress, + string calldata name, + address[] calldata participants + ) public payable DuplicateParticipants(participants) { + address[] memory totalParticipants = new address[](participants.length + 1); + + for(uint i = 0; i < participants.length; i++){ + totalParticipants[i] = participants[i]; + } + totalParticipants[participants.length] = msg.sender; + + bytes memory payload = abi.encode("initializeTeam" , name, totalParticipants); + gateway.callContract(destinationChain, destinationAddress, payload); + + gasService.payNativeGasForContractCall{ value: msg.value }( + address(this), + destinationChain, + destinationAddress, + payload, + msg.sender + ); + gateway.callContract(destinationChain, destinationAddress, payload); + + } + + function crossjoinTeam( + string calldata destinationChain, + string calldata destinationAddress, + uint256 teamIndex + ) public payable { + bytes memory payload = abi.encode( "joinTeam" , teamIndex , msg.sender); + gateway.callContract(destinationChain, destinationAddress, payload); + + gasService.payNativeGasForContractCall{ value: msg.value }( + address(this), + destinationChain, + destinationAddress, + payload, + msg.sender + ); + gateway.callContract(destinationChain, destinationAddress, payload); + + } + + function crosswithdrawTeam( + string calldata destinationChain, + string calldata destinationAddress, + uint256 participantIndex, + uint256 teamIndex + ) public payable { + bytes memory payload = abi.encode("withdrawTeam" , participantIndex , teamIndex , msg.sender); + gateway.callContract(destinationChain, destinationAddress, payload); + + gasService.payNativeGasForContractCall{ value: msg.value }( + address(this), + destinationChain, + destinationAddress, + payload, + msg.sender + ); + gateway.callContract(destinationChain, destinationAddress, payload); + + } + + function crosssubmitProject( + string calldata destinationChain, + string calldata destinationAddress, + uint256 teamNumber, + string memory nftUri + ) public payable { + bytes memory payload = abi.encode("submitProject" , teamNumber , nftUri , msg.sender); + gateway.callContract(destinationChain, destinationAddress, payload); + + gasService.payNativeGasForContractCall{ value: msg.value }( + address(this), + destinationChain, + destinationAddress, + payload, + msg.sender + ); + gateway.callContract(destinationChain, destinationAddress, payload); + + } + + function crossjudgeWinner( + string calldata destinationChain, + string calldata destinationAddress, + string memory _sponsor_name, + uint256[] memory trackWinners, + uint256[] memory poolPrizeWinners + ) public payable { + bytes memory payload = abi.encode("judgeWinner" , _sponsor_name, trackWinners, poolPrizeWinners, msg.sender ); + gateway.callContract(destinationChain, destinationAddress, payload); + + gasService.payNativeGasForContractCall{ value: msg.value }( + address(this), + destinationChain, + destinationAddress, + payload, + msg.sender + ); + gateway.callContract(destinationChain, destinationAddress, payload); + + } + + } \ No newline at end of file diff --git a/axelar-cross-chain/contracts/child/index.js b/axelar-cross-chain/contracts/child/index.js index f3da712..8b76cbd 100644 --- a/axelar-cross-chain/contracts/child/index.js +++ b/axelar-cross-chain/contracts/child/index.js @@ -3,6 +3,8 @@ const { utils: { deployContract }, } = require('@axelar-network/axelar-local-dev'); +const { parse } = require('dotenv'); +const { ethers, BigNumber } = require('ethers'); const CrossDappHack = rootRequire('artifacts/contracts/child/CrossDappHack.sol/CrossDappHack.json'); @@ -14,17 +16,60 @@ async function deploy(chain, wallet) { } async function execute(chains, wallet, options) { + const { source, destination, calculateBridgeFee } = options; - // console.log(source); - const fee = await calculateBridgeFee(source, destination); - console.log(fee); + const fee = await calculateBridgeFee(source, destination, { + gasLimit: 30000000 + }); + const value = parseInt(fee.toString()) + parseInt('10000000000000'); + console.log(`Crossing ${value} wei from ${source.name} to ${destination.name}.`); + const tx = await source.contract.crossBuilderSignup(destination.id, destination.contract.address, { - value: fee, - gasLimit: 300000000, + value: BigNumber.from(value), + gasLimit: 30000000 }); const reciept = await tx.wait(); console.log(reciept.transactionHash); - console.log('done'); + + const createTeam = await source.contract.crossinitializeTeam(destination.id, destination.contract.address, "Team1", [], { + value: BigNumber.from(value), + gasLimit: 30000000 + }); + const createTeamReciept = await createTeam.wait(); + console.log(createTeamReciept.transactionHash); + for (const chain of chains) { + chain.provider = new ethers.providers.JsonRpcProvider(chain.rpc); + + + const wallet2 = new ethers.Wallet(process.env.PRIVATE_KEY2, chain.provider); + + const ContractJoinMember = new ethers.Contract(destination.contract.address, CrossDappHack.abi, wallet2); + + const OtherMembertx = await ContractJoinMember.crossBuilderSignup(destination.id, destination.contract.address, { + value: BigNumber.from(value), + gasLimit: 30000000 + }); + + const Memberreciept = await OtherMembertx.wait(); + console.log(Memberreciept.transactionHash); + const joinTeam = await ContractJoinMember.crossjoinTeam(source.id, source.contract.address, 0, { + value: BigNumber.from(value), + gasLimit: 30000000 + }); + const joinTeamReciept = await joinTeam.wait(); + console.log(joinTeamReciept.transactionHash); + + console.log(`Crossed ${value} wei from ${source.name} to ${destination.name}.`); + } + + const withdrawTeam = await source.contract.crosswithdrawTeam(0, 0, destination.id, destination.contract.address, { + value: fee, + gasLimit: 30000000 + }); + + const withdrawTeamReciept = await withdrawTeam.wait(); + console.log(withdrawTeamReciept.transactionHash); + } module.exports = { diff --git a/axelar-cross-chain/contracts/parent/dapphack.sol b/axelar-cross-chain/contracts/parent/dapphack.sol index 1d62a94..0bb7aaf 100644 --- a/axelar-cross-chain/contracts/parent/dapphack.sol +++ b/axelar-cross-chain/contracts/parent/dapphack.sol @@ -84,6 +84,8 @@ contract DappHack is ProjectNFTs, AxelarExecutable { ); event BuilderSignedUp(address indexed builder); event TeamInitialized(string name, address[] participants); + event TeamJoined(uint256 index, address indexed builder); + event TeamLeft(uint256 index, address indexed builder); event ProjectSubmitted(uint256 teamNumber, string nftUri); event WinnerJudged(uint256 trackNumber, uint256 winnerNumber); event PrizeDistributed(uint256 amount); @@ -134,9 +136,41 @@ contract DappHack is ProjectNFTs, AxelarExecutable { } //create mapping for this - modifier NotInTeam() { + modifier NotInTeam(address[] memory participants) { // need a mapping from address(of the signer) to team as cant fetch a team that is not created - // require(s_teams[msg.sender] == 0, "Already in a team"); + + for (uint i = 0; i < participants.length; i++) { + require( + bytes(builderToTeam[participants[i]].name).length == 0, + "Already in a team" + ); + } + + require( + bytes(builderToTeam[msg.sender].name).length == 0, + "Already in a team" + ); + _; + } +modifier DuplicateParticipants(address[] memory participant) { + address[] memory AllParticipants = new address[](1 + participant.length); + + for (uint i = 0 ; i != participant.length; i++ ){ + AllParticipants[i] = participant[i]; + } + + AllParticipants[participant.length] = msg.sender; + + for (uint i = 0; i != AllParticipants.length; i++ ) { + for (uint j = i + 1; j != AllParticipants.length; j++ ) { + if(AllParticipants[j] == AllParticipants[i]) { + revert("Duplicate Participants"); + } + + } + + } + _; } @@ -153,6 +187,19 @@ contract DappHack is ProjectNFTs, AxelarExecutable { _; } + modifier TeamAlreadyExists(string memory teamName) { + bool flag = false; + for (uint i = 0; i < s_teams.length; i++) { + if ( + keccak256(abi.encodePacked(s_teams[i].name)) == + keccak256(abi.encodePacked(teamName)) + ) flag = true; + } + require(flag == false, "Team already exists"); + _; + } + + // Functions // Layout of Functions: @@ -290,49 +337,45 @@ contract DappHack is ProjectNFTs, AxelarExecutable { * @param newPrize The new prize amount for the sponsor. */ - function changePrizePool( - uint256 sponsorNumber, - uint256 newPrize - ) public payable OnlySponsor { - require(newPrize > 0, "Invalid prize amount"); + function changePrizePool( + uint256 sponsorNumber, + uint256 newPrize + ) public payable OnlySponsor { + require(newPrize > 0, "Invalid prize amount"); - Sponsor memory sponsor = s_sponsors[sponsorNumber]; + Sponsor memory sponsor = s_sponsors[sponsorNumber]; - uint256 temp_sum = 0; - uint256[] memory temp_array = sponsor.prizeArray; - for (uint i = 0; i < temp_array.length; ++i) { - temp_sum += temp_array[i]; - } + uint256 temp_sum = 0; + uint256[] memory temp_array = sponsor.prizeArray; + for (uint i = 0; i < temp_array.length; ++i) { + temp_sum += temp_array[i]; + } // check that the newPrize fund is greater than the sum of all the prizes - require( - newPrize >= temp_sum + sponsor.poolPrize, - "Invalid prize amount" - ); + require( + newPrize >= temp_sum + sponsor.poolPrize, + "Invalid prize amount" + ); - uint256 oldPrize = sponsorPrizePool[sponsorNumber]; + uint256 oldPrize = sponsorPrizePool[sponsorNumber]; int amt = int(newPrize - oldPrize); - if (amt >= 0) { - payable(address(this)).transfer(uint256(amt)); - } else { - payable(msg.sender).transfer(uint256(-amt)); - } - //update total prize pool - s_totalPrizePool += uint256(amt); - - //prizePoolStructChange to be called + if (amt >= 0) { + payable(address(this)).transfer(uint256(amt)); + } else { + payable(msg.sender).transfer(uint256(-amt)); + } + //update total prize pool + s_totalPrizePool += uint256(amt); - sponsorPrizePool[sponsorNumber] = newPrize; - s_sponsors[sponsorNumber].poolPrize = newPrize; + //prizePoolStructChange to be called - emit PrizePoolChanged(msg.sender, oldPrize, newPrize); - } + sponsorPrizePool[sponsorNumber] = newPrize; + s_sponsors[sponsorNumber].poolPrize = newPrize; - function changePrizePoolSTruct() public payable { - /// TODO - } + emit PrizePoolChanged(msg.sender, oldPrize, newPrize); + } /** * @dev Allows a builder to sign up for the competition. @@ -361,22 +404,50 @@ contract DappHack is ProjectNFTs, AxelarExecutable { * @param name The name of the team. * @param participants The addresses of the participants in the team. */ - function initializeTeam( + function initializeTeam( string memory name, address[] memory participants - ) public OnlyValidTeamSize(participants.length) NotInTeam { - //add the team to the team array - s_teams.push(Team(name, participants, false, false)); // ATTACK_VECTOR: People can add members already in a team , a Problem + ) + public + DuplicateParticipants(participants) + + { - // give the team to builder in mapping + for(uint i = 0; i != participants.length; i++ ) { + require(isBuilder(participants[i]), "Builder not found"); + } - for (uint256 i = 0; i < participants.length; i++) { - builderToTeam[participants[i]] = s_teams[s_teams.length - 1]; + address[] memory totalParticipants = new address[]( + participants.length + 1 + ); + + for (uint i = 0; i != participants.length; i++ ) { + totalParticipants[i] = participants[i]; + } - emit TeamInitialized(name, participants); + totalParticipants[participants.length] = msg.sender; - //team withdraw ? + crossinitializeTeam(name, totalParticipants); + } + + /** + * @dev Adds a participant to a particular team. + * @param teamIndex Index of team in s_teams array which you want to join. + */ + + function joinTeam(uint256 teamIndex) public { + crossjoinTeam(teamIndex, msg.sender); + } + + /** + * @dev Withdraws a participant from a particular team. + * @dev Deletes the team if there are no participants left. + * @param participantIndex Index of participant in team which you want to withdraw. + * @param TeamIndex Index of team in s_teams array which you want to join. + */ + function withdrawTeam(uint256 participantIndex , uint256 TeamIndex) public { + crosswithdrawTeam(participantIndex, TeamIndex, msg.sender); } /** @@ -388,19 +459,7 @@ contract DappHack is ProjectNFTs, AxelarExecutable { uint256 teamNumber, string memory nftUri ) public OnlyBuilder { - require( - s_teams[teamNumber].projectSubmitted == false, - "Project already submitted" - ); - s_teams[teamNumber].validProject = true; - for (uint256 i = 0; i < s_teams[teamNumber].participants.length; i++) { - mint(); - setTokenOwner(s_tokenId, s_teams[teamNumber].participants[i]); - setOwnerTokenId(s_teams[teamNumber].participants[i], s_tokenId); - setTokenUri(s_tokenId, nftUri); - s_teams[teamNumber].projectSubmitted = true; - } - emit ProjectSubmitted(teamNumber, nftUri); + crosssubmitProject(teamNumber, nftUri); } /** @@ -415,15 +474,7 @@ contract DappHack is ProjectNFTs, AxelarExecutable { uint256[] memory poolPrizeWinners ) public OnlySponsor { //POSSIBLE ATTACK : a protocol has assigned 4 sponsors and each sponsor can give his own winners which is a problem - - s_winners.push(Winner(_sponsor_name, trackWinners, poolPrizeWinners)); - - sponsorToWinner[sponsorToId[msg.sender]] = s_winners[ - s_winners.length - 1 - ]; - - // initialize sponsor to winner mapping - emit WinnerJudged(s_winners.length - 1, poolPrizeWinners.length); + crossjudgeWinner(_sponsor_name, trackWinners, poolPrizeWinners, msg.sender); } /** @@ -492,18 +543,7 @@ contract DappHack is ProjectNFTs, AxelarExecutable { * @param sponsor The address to check. * @return True if the address is a sponsor, false otherwise. */ - function isSponsor( - address sponsor, - uint256 sponsorId - ) internal view returns (bool) { - Sponsor memory s = s_sponsors[sponsorId]; - for (uint256 i = 0; i < s.sponsors.length; i++) { - if (s.sponsors[i] == sponsor) { - return true; - } - } - return false; - } + /** * @dev Checks if the given address is a builder. @@ -534,14 +574,159 @@ contract DappHack is ProjectNFTs, AxelarExecutable { } // Axelar Cross-Chain Functions - function _execute(string calldata sourceChain_, string calldata sourceAddress_, bytes calldata payload_) internal override { + + + + function _execute(string calldata sourceChain_, string calldata sourceAddress_, bytes calldata payload_) internal override { // // DealRequest calldata deal; // DealRequest[] memory deal = abi.decode(payload_, (DealRequest[])); // makeBatchDealProposal(deal); - address builder = abi.decode(payload_, (address)); + string memory _func; + (_func) = abi.decode(payload_, (string)); + bytes32 _funcHash = keccak256(abi.encodePacked(_func)); + if(_funcHash == keccak256(abi.encodePacked("builderSignup"))) { + + (, address builder) = abi.decode(payload_, (string , address)); + require(!isBuilder(builder), "Already signed up"); s_builders.push(builder); emit BuilderSignedUp(builder); + + }else if(_funcHash == keccak256(abi.encodePacked("initializeTeam"))){ + (, string memory _name , address[] memory participants) = abi.decode(payload_, (string, string, address[])); + crossinitializeTeam(_name, participants); + }else if(_funcHash == keccak256(abi.encodePacked("joinTeam"))){ + (, uint256 teamIndex, address user) = abi.decode(payload_, (string, uint256, address)); + crossjoinTeam(teamIndex, user); + }else if(_funcHash == keccak256(abi.encodePacked("withdrawTeam"))){ + (, uint256 participantIndex , uint256 teamIndex , address user) = abi.decode(payload_, (string, uint256, uint256, address)); + crosswithdrawTeam(participantIndex, teamIndex, user); + }else if(_funcHash == keccak256(abi.encodePacked("submitProject"))){ + (, uint256 teamNumber, string memory nftUri, address user) = abi.decode(payload_, (string , uint256, string, address)); + require(isBuilder(user), "Not a Builder"); + crosssubmitProject(teamNumber , nftUri); + }else if(_funcHash == keccak256(abi.encodePacked("judgeWinner"))){ + (,string memory _sponsor_name, uint256[] memory trackWinners, uint256[] memory poolPrizeWinners, address user) = abi.decode(payload_, (string,string , uint256[] , uint256[], address)); + + require( + sponsorToId[msg.sender] != 0, + "Only sponsors can call this function" + ); + crossjudgeWinner(_sponsor_name, trackWinners, poolPrizeWinners, user); + } + + } + + function crossinitializeTeam(string memory name , address[] memory participants) internal + TeamAlreadyExists(name) + OnlyValidTeamSize(participants.length) { + for(uint i = 0 ; i != participants.length ; i++ ){ + require(isBuilder(participants[i]), "Builder not found"); + require( + bytes(builderToTeam[participants[i]].name).length == 0, + "Already in a team" + ); + } + + s_teams.push(Team(name, participants, false, false)); + + for (uint256 i = 0; i != participants.length; i++ ) { + builderToTeam[participants[i]] = s_teams[s_teams.length - 1]; + } + + emit TeamInitialized(name, participants); + } + + function crossjoinTeam(uint256 teamIndex, address user) internal { + require(isBuilder(user), "Not a Builder"); + require( + bytes(builderToTeam[user].name).length == 0, + "Already in a team" + ); + require(teamIndex < s_teams.length, "No such team exists"); + require( + (s_teams[teamIndex].participants.length + 1) <= s_teamSizeLimit, + "Team limit exceeded" + ); + + s_teams[teamIndex].participants.push(user); + + for(uint i = 0; i != s_teams[teamIndex].participants.length; i++ ) { + builderToTeam[s_teams[teamIndex].participants[i]] = s_teams[teamIndex]; + } + + emit TeamJoined(teamIndex, user); + } + + function crosswithdrawTeam(uint256 participantIndex, uint256 teamIndex, address user) internal { + require(isBuilder(user), "Not a Builder"); + require( + bytes(builderToTeam[user].name).length != 0, + "You're not in any team" + ); + + address temp = s_teams[teamIndex].participants[participantIndex] ; + s_teams[teamIndex].participants[participantIndex] = s_teams[teamIndex].participants[s_teams[participantIndex].participants.length - 1]; + s_teams[teamIndex].participants[s_teams[teamIndex].participants.length - 1] = temp; + + s_teams[teamIndex].participants.pop(); + + + delete builderToTeam[user]; + + if (s_teams[teamIndex].participants.length == 0) { + Team memory TempStruct = s_teams[teamIndex]; + s_teams[teamIndex] = s_teams[s_teams.length - 1]; + s_teams[s_teams.length - 1] = TempStruct; + s_teams.pop(); + }else{ + for(uint i = 0; i != s_teams[teamIndex].participants.length; i++ ) { + builderToTeam[s_teams[teamIndex].participants[i]] = s_teams[teamIndex]; + } + + } + + + + } + + function crosssubmitProject( + uint256 teamNumber, + string memory nftUri + ) public{ + require( + s_teams[teamNumber].projectSubmitted == false, + "Project already submitted" + ); + s_teams[teamNumber].validProject = true; + for (uint256 i = 0; i < s_teams[teamNumber].participants.length; i++) { + mint(); + setTokenOwner(s_tokenId, s_teams[teamNumber].participants[i]); + setOwnerTokenId(s_teams[teamNumber].participants[i], s_tokenId); + setTokenUri(s_tokenId, nftUri); + s_teams[teamNumber].projectSubmitted = true; + } + emit ProjectSubmitted(teamNumber, nftUri); + } + function crossjudgeWinner( + string memory _sponsor_name, + uint256[] memory trackWinners, + uint256[] memory poolPrizeWinners, + address user + )internal { + + //POSSIBLE ATTACK : a protocol has assigned 4 sponsors and each sponsor can give his own winners which is a problem + + s_winners.push(Winner(_sponsor_name, trackWinners, poolPrizeWinners)); + + sponsorToWinner[sponsorToId[user]] = s_winners[ + s_winners.length - 1 + ]; + + // initialize sponsor to winner mapping + emit WinnerJudged(s_winners.length - 1, poolPrizeWinners.length); } + + @@ -688,4 +873,4 @@ contract DappHack is ProjectNFTs, AxelarExecutable { ) public view returns (uint256[] memory) { return s_winners[winnerNumber].poolPrizeWinners; } -} +} \ No newline at end of file diff --git a/axelar-cross-chain/output.json b/axelar-cross-chain/output.json new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/axelar-cross-chain/output.json @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/axelar-cross-chain/package-lock.json b/axelar-cross-chain/package-lock.json index 90a41f1..f5124cb 100644 --- a/axelar-cross-chain/package-lock.json +++ b/axelar-cross-chain/package-lock.json @@ -5,10 +5,10 @@ "packages": { "": { "dependencies": { - "@axelar-network/axelar-chains-config": "^0.1.0", - "@axelar-network/axelar-gmp-sdk-solidity": "^5.4.0", - "@axelar-network/axelar-local-dev": "^2.1.1-alpha.2", - "@axelar-network/axelarjs-sdk": "^0.12.8", + "@axelar-network/axelar-chains-config": "^1.2.0", + "@axelar-network/axelar-gmp-sdk-solidity": "^5.9.0", + "@axelar-network/axelar-local-dev": "2.3.2", + "@axelar-network/axelarjs-sdk": "^0.15.0", "@openzeppelin/contracts": "^4.9.3", "@zondax/filecoin-solidity": "^4.0.3", "cids": "^1.1.9", @@ -29,20 +29,28 @@ } }, "node_modules/@axelar-network/axelar-cgp-solidity": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-solidity/-/axelar-cgp-solidity-6.1.2.tgz", - "integrity": "sha512-KOv3Z0u/Xg1HsvTFJzpf0LewT4/HW8yBGb5AfVacFRoL/zor5Q1SwBb5SN12CDpxFebeUPC/MdGAddC2ZfNg8Q==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-solidity/-/axelar-cgp-solidity-6.3.1.tgz", + "integrity": "sha512-RJmcOQbj2VhQb8uqBtu0beNj4MKRVjiYj74wXu6QI/a4bJ5EwwZK3+uCbTVNM9Qc7LqJqObhtGQfKUnAXEFCHA==", "dependencies": { - "@axelar-network/axelar-gmp-sdk-solidity": "^5.3.3" + "@axelar-network/axelar-gmp-sdk-solidity": "5.8.0" }, "engines": { - "node": ">=16" + "node": ">=18" + } + }, + "node_modules/@axelar-network/axelar-cgp-solidity/node_modules/@axelar-network/axelar-gmp-sdk-solidity": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.8.0.tgz", + "integrity": "sha512-ThiCWK7lhwmsipgjKkw8c0z0ubB9toRMV9X0tRVOXHHSknKp5DCFfatbCwjpSC5GZRa+61ciTSqJNtCc7j9YoQ==", + "engines": { + "node": ">=18" } }, "node_modules/@axelar-network/axelar-chains-config": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-chains-config/-/axelar-chains-config-0.1.2.tgz", - "integrity": "sha512-qtll6BWLT7CWv5xRXYog/ZRwmwINew4aDUbE4IBpOvAbcGcSuLj7b+Ale14KnA9yTOLvGqaR5BHrBNpa/CXcBw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-chains-config/-/axelar-chains-config-1.3.0.tgz", + "integrity": "sha512-k633v2pJF8qPM3pDSawSqm7K4AgqmGicj2fUk0O0HwWB1jS2l/oFm+x5jB58HT64xhf8x7VB4BhdJQtMdKcOPA==", "dependencies": { "@ethersproject/keccak256": "^5.7.0", "fs-extra": "^11.1.1" @@ -62,21 +70,22 @@ } }, "node_modules/@axelar-network/axelar-gmp-sdk-solidity": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.4.0.tgz", - "integrity": "sha512-iPTJZq13ARDXJ5nCjKohq43bC45w0z0E8Dc5zAbQ0evKXXHi/XSNWqs7zvVFQzAHbUTAmEl19431lGCKPRuMcw==", + "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": ">=16" + "node": ">=18" } }, "node_modules/@axelar-network/axelar-local-dev": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-local-dev/-/axelar-local-dev-2.1.1.tgz", - "integrity": "sha512-sSZZktcT5+Uk59PX7d7jm3mwhqyHYnjH88rC8RVb264/8yoUoksxRJZ8lWQW2sjNpfvcD9CBNYqu7KrbCmKHdQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-local-dev/-/axelar-local-dev-2.3.2.tgz", + "integrity": "sha512-dnjSjhQ7AMQvvgKDHDU1B1miBlIbcLfaLY0uflHQYQva5UJ6wUM5CsL/ADs6W4UjLgbQGUURBs7jY9EDKn/HUQ==", "dependencies": { - "@axelar-network/axelar-cgp-solidity": "^6.1.0", - "@axelar-network/axelar-chains-config": "^0.1.0", - "@axelar-network/axelar-gmp-sdk-solidity": "^5.3.0", + "@axelar-network/axelar-cgp-solidity": "^6.3.0", + "@axelar-network/axelar-chains-config": "^1.2.0", + "@axelar-network/axelar-gmp-sdk-solidity": "^5.7.0", + "@axelar-network/interchain-token-service": "^1.2.4", "ethers": "^5.6.5", "fs-extra": "^10.1.0", "ganache": "^7.1.0", @@ -90,14 +99,15 @@ } }, "node_modules/@axelar-network/axelarjs-sdk": { - "version": "0.12.8", - "resolved": "https://registry.npmjs.org/@axelar-network/axelarjs-sdk/-/axelarjs-sdk-0.12.8.tgz", - "integrity": "sha512-4pb82LMiDOifE69q3OtUbOzcotL06VOU7Vhyk7vS7py+uO4Blu1kWd/pkzv+TH3IXgpIYl961f2ip4njK04qHQ==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@axelar-network/axelarjs-sdk/-/axelarjs-sdk-0.15.0.tgz", + "integrity": "sha512-7DSO/loMu/3p592WZ7rXtL0uUyLgSi5c7JH26OCR2WElzhobScM6twb1JUi+Gu9u3OcrFPJZyBLd/COIVY6S7A==", + "hasInstallScript": true, "dependencies": { "@axelar-network/axelar-cgp-solidity": "^4.5.0", - "@axelar-network/axelarjs-types": "^0.27.0", + "@axelar-network/axelarjs-types": "^0.33.0", "@cosmjs/json-rpc": "^0.30.1", - "@cosmjs/stargate": "^0.28.4", + "@cosmjs/stargate": "0.31.0-alpha.1", "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/networks": "^5.7.1", "@ethersproject/providers": "^5.7.2", @@ -130,12 +140,43 @@ } }, "node_modules/@axelar-network/axelarjs-types": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@axelar-network/axelarjs-types/-/axelarjs-types-0.27.0.tgz", - "integrity": "sha512-+ZsNgZc815FEBQnP8wxrtYjEqPMeibGFzKypkj1h0nwsvC051ABB/4xePX41E7G58e5RANhDTOxlvCSAx4MpyA==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@axelar-network/axelarjs-types/-/axelarjs-types-0.33.0.tgz", + "integrity": "sha512-aCbX/5G+tgWPjr9tl3dQfJftWwRMkILz61ytach7dKqxtO9G9jlxpNvELJQ6gKVOodUtSY8qBCO/fWU19v4hdQ==", "dependencies": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" + "long": "^5.2.0", + "protobufjs": "^7.0.0" + } + }, + "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==", + "dependencies": { + "@axelar-network/axelar-cgp-solidity": "6.2.1", + "@axelar-network/axelar-gmp-sdk-solidity": "5.6.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@axelar-network/interchain-token-service/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==", + "dependencies": { + "@axelar-network/axelar-gmp-sdk-solidity": "5.6.4" + }, + "engines": { + "node": ">=16" + } + }, + "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==", + "engines": { + "node": ">=16" } }, "node_modules/@babel/code-frame": { @@ -217,35 +258,65 @@ "protobufjs": "^6.8.8" } }, + "node_modules/@confio/ics23/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/@confio/ics23/node_modules/protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, "node_modules/@cosmjs/amino": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.28.13.tgz", - "integrity": "sha512-IHnH2zGwaY69qT4mVAavr/pfzx6YE+ud1NHJbvVePlbGiz68CXTi5LHR+K0lrKB5mQ7E+ZErWz2mw5U/x+V1wQ==", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.31.3.tgz", + "integrity": "sha512-36emtUq895sPRX8PTSOnG+lhJDCVyIcE0Tr5ct59sUbgQiI14y43vj/4WAlJ/utSOxy+Zhj9wxcs4AZfu0BHsw==", "dependencies": { - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13" + "@cosmjs/crypto": "^0.31.3", + "@cosmjs/encoding": "^0.31.3", + "@cosmjs/math": "^0.31.3", + "@cosmjs/utils": "^0.31.3" } }, "node_modules/@cosmjs/crypto": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.28.13.tgz", - "integrity": "sha512-ynKfM0q/tMBQMHJby6ad8lR3gkgBKaelQhIsCZTjClsnuC7oYT9y3ThSZCUWr7Pa9h0J8ahU2YV2oFWFVWJQzQ==", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.31.3.tgz", + "integrity": "sha512-vRbvM9ZKR2017TO73dtJ50KxoGcFzKtKI7C8iO302BQ5p+DuB+AirUg1952UpSoLfv5ki9O416MFANNg8UN/EQ==", "dependencies": { - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13", + "@cosmjs/encoding": "^0.31.3", + "@cosmjs/math": "^0.31.3", + "@cosmjs/utils": "^0.31.3", "@noble/hashes": "^1", "bn.js": "^5.2.0", - "elliptic": "^6.5.3", - "libsodium-wrappers": "^0.7.6" + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" } }, "node_modules/@cosmjs/encoding": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.28.13.tgz", - "integrity": "sha512-jtXbAYtV77rLHxoIrjGFsvgGjeTKttuHRv6cvuy3toCZzY7JzTclKH5O2g36IIE4lXwD9xwuhGJ2aa6A3dhNkA==", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.31.3.tgz", + "integrity": "sha512-6IRtG0fiVYwyP7n+8e54uTx2pLYijO48V3t9TLiROERm5aUAIzIlz6Wp0NYaI5he9nh1lcEGJ1lkquVKFw3sUg==", "dependencies": { "base64-js": "^1.3.0", "bech32": "^1.1.4", @@ -267,50 +338,55 @@ } }, "node_modules/@cosmjs/math": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.28.13.tgz", - "integrity": "sha512-PDpL8W/kbyeWi0mQ2OruyqE8ZUAdxPs1xCbDX3WXJwy2oU+X2UTbkuweJHVpS9CIqmZulBoWQAmlf6t6zr1N/g==", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.31.3.tgz", + "integrity": "sha512-kZ2C6glA5HDb9hLz1WrftAjqdTBb3fWQsRR+Us2HsjAYdeE6M3VdXMsYCP5M3yiihal1WDwAY2U7HmfJw7Uh4A==", "dependencies": { "bn.js": "^5.2.0" } }, "node_modules/@cosmjs/proto-signing": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz", - "integrity": "sha512-nSl/2ZLsUJYz3Ad0RY3ihZUgRHIow2OnYqKsESMu+3RA/jTi9bDYhiBu8mNMHI0xrEJry918B2CyI56pOUHdPQ==", - "dependencies": { - "@cosmjs/amino": "0.28.13", - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13", - "cosmjs-types": "^0.4.0", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.31.3.tgz", + "integrity": "sha512-24+10/cGl6lLS4VCrGTCJeDRPQTn1K5JfknzXzDIHOx8THR31JxA7/HV5eWGHqWgAbudA7ccdSvEK08lEHHtLA==", + "dependencies": { + "@cosmjs/amino": "^0.31.3", + "@cosmjs/crypto": "^0.31.3", + "@cosmjs/encoding": "^0.31.3", + "@cosmjs/math": "^0.31.3", + "@cosmjs/utils": "^0.31.3", + "cosmjs-types": "^0.8.0", "long": "^4.0.0" } }, + "node_modules/@cosmjs/proto-signing/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "node_modules/@cosmjs/socket": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.28.13.tgz", - "integrity": "sha512-lavwGxQ5VdeltyhpFtwCRVfxeWjH5D5mmN7jgx9nuCf3XSFbTcOYxrk2pQ4usenu1Q1KZdL4Yl5RCNrJuHD9Ug==", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.31.3.tgz", + "integrity": "sha512-aqrDGGi7os/hsz5p++avI4L0ZushJ+ItnzbqA7C6hamFSCJwgOkXaOUs+K9hXZdX4rhY7rXO4PH9IH8q09JkTw==", "dependencies": { - "@cosmjs/stream": "0.28.13", + "@cosmjs/stream": "^0.31.3", "isomorphic-ws": "^4.0.1", "ws": "^7", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/socket/node_modules/@cosmjs/stream": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.28.13.tgz", - "integrity": "sha512-AnjtfwT8NwPPkd3lhZhjOlOzT0Kn9bgEu2IPOZjQ1nmG2bplsr6TJmnwn0dJxHT7UGtex17h6whKB5N4wU37Wg==", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.31.3.tgz", + "integrity": "sha512-8keYyI7X0RjsLyVcZuBeNjSv5FA4IHwbFKx7H60NHFXszN8/MvXL6aZbNIvxtcIHHsW7K9QSQos26eoEWlAd+w==", "dependencies": { "xstream": "^11.14.0" } }, "node_modules/@cosmjs/socket/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -328,32 +404,62 @@ } }, "node_modules/@cosmjs/stargate": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.28.13.tgz", - "integrity": "sha512-dVBMazDz8/eActHsRcZjDHHptOBMqvibj5CFgEtZBp22gP6ASzoAUXTlkSVk5FBf4sfuUHoff6st134/+PGMAg==", + "version": "0.31.0-alpha.1", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.31.0-alpha.1.tgz", + "integrity": "sha512-kCTUT3niB2hvcHjhlxpM8cNw1KOVmgZROdJUQaO8Ts4j22OyRZRFdwRPrOIuAKpqhVW2I1vI2HQL9Bg7pk9Glw==", "dependencies": { "@confio/ics23": "^0.6.8", - "@cosmjs/amino": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/proto-signing": "0.28.13", - "@cosmjs/stream": "0.28.13", - "@cosmjs/tendermint-rpc": "0.28.13", - "@cosmjs/utils": "0.28.13", - "cosmjs-types": "^0.4.0", + "@cosmjs/amino": "^0.31.0-alpha.1", + "@cosmjs/encoding": "^0.31.0-alpha.1", + "@cosmjs/math": "^0.31.0-alpha.1", + "@cosmjs/proto-signing": "^0.31.0-alpha.1", + "@cosmjs/stream": "^0.31.0-alpha.1", + "@cosmjs/tendermint-rpc": "^0.31.0-alpha.1", + "@cosmjs/utils": "^0.31.0-alpha.1", + "cosmjs-types": "^0.8.0", "long": "^4.0.0", "protobufjs": "~6.11.3", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/stargate/node_modules/@cosmjs/stream": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.28.13.tgz", - "integrity": "sha512-AnjtfwT8NwPPkd3lhZhjOlOzT0Kn9bgEu2IPOZjQ1nmG2bplsr6TJmnwn0dJxHT7UGtex17h6whKB5N4wU37Wg==", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.31.3.tgz", + "integrity": "sha512-8keYyI7X0RjsLyVcZuBeNjSv5FA4IHwbFKx7H60NHFXszN8/MvXL6aZbNIvxtcIHHsW7K9QSQos26eoEWlAd+w==", "dependencies": { "xstream": "^11.14.0" } }, + "node_modules/@cosmjs/stargate/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/@cosmjs/stargate/node_modules/protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, "node_modules/@cosmjs/stream": { "version": "0.30.1", "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.30.1.tgz", @@ -363,43 +469,43 @@ } }, "node_modules/@cosmjs/tendermint-rpc": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.28.13.tgz", - "integrity": "sha512-GB+ZmfuJIGQm0hsRtLYjeR3lOxF7Z6XyCBR0cX5AAYOZzSEBJjevPgUHD6tLn8zIhvzxaW3/VKnMB+WmlxdH4w==", - "dependencies": { - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/json-rpc": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/socket": "0.28.13", - "@cosmjs/stream": "0.28.13", - "@cosmjs/utils": "0.28.13", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.31.3.tgz", + "integrity": "sha512-s3TiWkPCW4QceTQjpYqn4xttUJH36mTPqplMl+qyocdqk5+X5mergzExU/pHZRWQ4pbby8bnR7kMvG4OC1aZ8g==", + "dependencies": { + "@cosmjs/crypto": "^0.31.3", + "@cosmjs/encoding": "^0.31.3", + "@cosmjs/json-rpc": "^0.31.3", + "@cosmjs/math": "^0.31.3", + "@cosmjs/socket": "^0.31.3", + "@cosmjs/stream": "^0.31.3", + "@cosmjs/utils": "^0.31.3", "axios": "^0.21.2", "readonly-date": "^1.0.0", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/tendermint-rpc/node_modules/@cosmjs/json-rpc": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.28.13.tgz", - "integrity": "sha512-fInSvg7x9P6p+GWqet+TMhrMTM3OWWdLJOGS5w2ryubMjgpR1rLiAx77MdTNkArW+/6sUwku0sN4veM4ENQu6A==", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.31.3.tgz", + "integrity": "sha512-7LVYerXjnm69qqYR3uA6LGCrBW2EO5/F7lfJxAmY+iII2C7xO3a0vAjMSt5zBBh29PXrJVS6c2qRP22W1Le2Wg==", "dependencies": { - "@cosmjs/stream": "0.28.13", + "@cosmjs/stream": "^0.31.3", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/tendermint-rpc/node_modules/@cosmjs/stream": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.28.13.tgz", - "integrity": "sha512-AnjtfwT8NwPPkd3lhZhjOlOzT0Kn9bgEu2IPOZjQ1nmG2bplsr6TJmnwn0dJxHT7UGtex17h6whKB5N4wU37Wg==", + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.31.3.tgz", + "integrity": "sha512-8keYyI7X0RjsLyVcZuBeNjSv5FA4IHwbFKx7H60NHFXszN8/MvXL6aZbNIvxtcIHHsW7K9QSQos26eoEWlAd+w==", "dependencies": { "xstream": "^11.14.0" } }, "node_modules/@cosmjs/utils": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.28.13.tgz", - "integrity": "sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg==" + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.31.3.tgz", + "integrity": "sha512-VBhAgzrrYdIe0O5IbKRqwszbQa7ZyQLx9nEQuHQ3HUplQW7P44COG/ye2n6AzCudtqxmwdX7nyX8ta1J07GoqA==" }, "node_modules/@ensdomains/address-encoder": { "version": "0.1.9", @@ -1560,9 +1666,9 @@ } }, "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "engines": { "node": ">= 16" }, @@ -4926,14 +5032,44 @@ } }, "node_modules/cosmjs-types": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.4.1.tgz", - "integrity": "sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.8.0.tgz", + "integrity": "sha512-Q2Mj95Fl0PYMWEhA2LuGEIhipF7mQwd9gTQ85DdP9jjjopeoGaDxvmPa5nakNzsq7FnO1DMTatXTAx6bxMH7Lg==", "dependencies": { "long": "^4.0.0", "protobufjs": "~6.11.2" } }, + "node_modules/cosmjs-types/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/cosmjs-types/node_modules/protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, "node_modules/crc-32": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", @@ -11494,17 +11630,17 @@ "node": ">= 0.8.0" } }, - "node_modules/libsodium": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", - "integrity": "sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==" + "node_modules/libsodium-sumo": { + "version": "0.7.14", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.14.tgz", + "integrity": "sha512-2nDge6qlAjcwyslAhWfVumlkeSNK5+WCfKa2/VEq9prvlT5vP2FR0m0o5hmKaYqfsZ4TQVj5czQsimZvXDB1CQ==" }, - "node_modules/libsodium-wrappers": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz", - "integrity": "sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==", + "node_modules/libsodium-wrappers-sumo": { + "version": "0.7.14", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.14.tgz", + "integrity": "sha512-0lm7ZwN5a95J2yUi8R1rgQeeaVDIWnvNzgVmXmZswis4mC+bQtbDrB+QpJlL4qklaKx3hVpJjoc6ubzJFiv64Q==", "dependencies": { - "libsodium": "^0.7.13" + "libsodium-sumo": "^0.7.14" } }, "node_modules/lines-and-columns": { @@ -11660,9 +11796,9 @@ } }, "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/loupe": { "version": "2.3.7", @@ -12975,9 +13111,9 @@ } }, "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -12990,13 +13126,11 @@ "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", "@types/node": ">=13.7.0", - "long": "^4.0.0" + "long": "^5.0.0" }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" + "engines": { + "node": ">=12.0.0" } }, "node_modules/proxy-addr": { @@ -16042,9 +16176,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, diff --git a/axelar-cross-chain/package.json b/axelar-cross-chain/package.json index 1c69440..9a8dc09 100644 --- a/axelar-cross-chain/package.json +++ b/axelar-cross-chain/package.json @@ -14,10 +14,10 @@ "solidity-coverage": "^0.8.4" }, "dependencies": { - "@axelar-network/axelar-chains-config": "^0.1.0", - "@axelar-network/axelar-gmp-sdk-solidity": "^5.4.0", - "@axelar-network/axelar-local-dev": "^2.1.1-alpha.2", - "@axelar-network/axelarjs-sdk": "^0.12.8", + "@axelar-network/axelar-chains-config": "^1.2.0", + "@axelar-network/axelar-gmp-sdk-solidity": "^5.9.0", + "@axelar-network/axelar-local-dev": "2.3.2", + "@axelar-network/axelarjs-sdk": "^0.15.0", "@openzeppelin/contracts": "^4.9.3", "@zondax/filecoin-solidity": "^4.0.3", "cids": "^1.1.9", @@ -27,4 +27,4 @@ "solidity-cborutils": "^2.0.0", "uuid": "^9.0.1" } -} +} \ No newline at end of file diff --git a/axelar-cross-chain/scripts/libs/utils.js b/axelar-cross-chain/scripts/libs/utils.js index b3684e1..67bbdc1 100644 --- a/axelar-cross-chain/scripts/libs/utils.js +++ b/axelar-cross-chain/scripts/libs/utils.js @@ -135,14 +135,16 @@ function calculateBridgeFee(source, destination, options = {}) { const api = new AxelarQueryAPI({ environment: Environment.TESTNET }); const { gasLimit, gasMultiplier, symbol } = options; - console.log(CHAINS.TESTNET[source.name]); + console.log(source.name.toUpperCase()); + console.log("here", CHAINS.TESTNET["ARBITRUM_SEPOLIA"]); return api.estimateGasFee( - CHAINS.TESTNET[source.name.toUpperCase()], + CHAINS.TESTNET["ARBITRUM_SEPOLIA"], CHAINS.TESTNET[destination.name.toUpperCase()], - symbol || source.tokenSymbol, gasLimit, gasMultiplier, + symbol || source.tokenSymbol ); + } /** diff --git a/axelar-cross-chain/scripts/runExecute.js b/axelar-cross-chain/scripts/runExecute.js index 2c11373..8d7ca6a 100644 --- a/axelar-cross-chain/scripts/runExecute.js +++ b/axelar-cross-chain/scripts/runExecute.js @@ -26,4 +26,4 @@ if (args.length >= 2) { const parent = 'Filecoin'; // Get the chains for the environment. const chains = getEVMChains(env, selectedChains, parent); -executeEVMExample(env, chains, args, wallet, example); +executeEVMExample(env, chains, args, wallet, example); \ No newline at end of file