Galactix Zone v2

CertiKFiles named in the report

CertiK reviewed Galactix Zone (Galactix Zone v2) on 25 Sep 2023: 13 findings, 0 critical; 3 marked fixed, 4 acknowledged, 6 open.

No open critical findings
Open the reportOpen Galactix Zone’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings13

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High040
Medium001
Low602
LowInefficient Memory ParameterOpen

One or more parameters with `memory` data location are never modified in their functions and those functions are never called internally within the contract. Thus, their data location can be changed to `calldata` to avoid the gas consumption copying from calldata to memory. ```solidity=56 function initialize( ``` `initialize` has memory location parameters: `_pauseExemptions`, `_taxExemptions`.

LowLack of Reasonable Fee LimitationOpen

In the `__GalactixToken__init_unchained()` function, state variables `commonTaxRate` and `ownerTaxRate` are set without value validation, there will be a risk that the value of these two state variables can be greater than `ONE_HUNDRED_PERCENT`. ```solidity=105 function __GalactixToken__init_unchained( address _admin, uint256 _totalSupply, uint256 _commonTaxRate, uint256 _ownerTaxRate, address _commonTaxRecipient, address _ownerTaxRecipient, address[] memory _pauseExemptions, address[] memory _taxExemptions ) internal onlyInitializing { commonTaxRate = _commonTaxRate; ownerTaxRate = _ownerTaxRate; ``` And in functions `setCommonTaxRate()` and `setOwnerTaxRecipient()`, both of them have a `require` statement to protect the value of tax rate becoming greater than `ONE_HUNDRED_PERCENT(10,000)`, but tax rates are still able to be set with a very big value, e.g. 9999(tax rate 99%). ```solidity=379 function setCommonTaxRate(uint256 _newTaxRate) external onlyOwner { require(_newTaxRate <= ONE_HUNDRED_PERCENT, 'GXZ: invalid tax rate!'); commonTaxRate = _newTaxRate; } function setOwnerTaxRate(uint256 _newTaxRate) external onlyOwner { require(_newTaxRate <= ONE_HUNDRED_PERCENT, 'GXZ: invalid tax rate!'); ownerTaxRate = _newTaxRate; } ```

LowLack of Storage Gap in Upgradeable ContractOpen

There is no storage gap preserved in the logic contract. Any logic contract that acts as a base contract that needs to be inherited by other upgradeable children should have a reasonable size of storage gap preserved for the new state variable introduced by the future upgrades.

LowPotential Cross-Chain Replay AttackOpen

Signed messages are not properly verified with the current **chain ID**, thus allowing attackers to perform replay attacks across chains. Hardcoded or cached chain ID values are also vulnerable since a hard fork may occur and change the chain ID in the future. ```solidity=15 bytes32 messageHash = getMessageHash(_nonce, _salePhase, _signer, _candidate, _BUSDAmount); bytes32 ethSignedMessageHash = getEthSignedMessageHash(messageHash); address signerAddress = getSignerAddress(ethSignedMessageHash, _signature); return signerAddress == _signer; ``` - The library function `verifySignature()`, which eventually calls `ecrecover`. The **chain ID** is not used for creating a signed message hash. ```solidity=17 address signerAddress = getSignerAddress(ethSignedMessageHash, _signature); ``` - Calling `getSignerAddress`, which eventually calls `ecrecover`. ```solidity=36 return ECDSA.recover(_messageHash, _signature); ``` - Calling `ECDSA.recover()` with a hash that does not properly include the chain ID.

LowThird-Party Dependency UsageOpen

The contract is serving as the underlying entity to interact with one or more third party protocols. The scope of the audit treats third party entities as black boxes and assumes their functional correctness. However, in the real world, third parties can be compromised and this may lead to lost or stolen assets. In addition, upgrades of third parties can possibly create severe impacts, such as increasing fees of third parties, migrating to new LP pools, etc. ```solidity=37 IAntisnipe public antisnipe; ``` - The contract `GalactixZoneToken` interacts with third party contract with `IAntisnipe` interface via `antisnipe`.

LowUnused Return ValueOpen

The smart contract does not check or store the return value of an external call in a local or state variable, which may introduce vulnerabilities due to the unhandled outcome. ```solidity=121 isPauseExempt.add(_admin); ``` --- ```solidity=122 isTaxExempt.add(_admin); ``` --- ```solidity=125 isPauseExempt.add(_pauseExemptions[i]); ``` --- ```solidity=129 isTaxExempt.add(_taxExemptions[i]); ```

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (3)

  • contracts/GalaxticToken.sol
  • contracts/Whitelist.sol
  • contracts/utils/LockableFunction.sol

Part of Galactix Zone’s security record

Galactix Zone
Audits2 audits by 1 firmLast audit Sep 2023, by CertiK.
Critical findingsNo open critical findingsAcross the 2 reports, 1 critical finding was reported. It is marked fixed by the firm that reported it.
Open Galactix Zone’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us