GemUni is building a Decentralized NFTs Gaming Platform for Play To Earn for everyone around the world to engage in Fun, Easy, and Play to Earn Games. Users can enjoy diverse addictive Casual Games & Signature Games while monetizing their experiences with gaming platform rewards and NFTs transactions.
GemUni comprises two ecosystems, GENI token and Reward tokens. In the GENI ecosystem, users can earn GENI (main project cryptocurrency) with our DeFi mechanics and trade NFT items on GemUni's NFT marketplace. In the Reward ecosystem, users can play and earn from two reward systems: Casual Gaming Platform and Signature Gaming Platform.
In the Casual Gaming Platform, users can enjoy diverse addictive casual games and earn gaming platform rewards in the form of GENIX (in-game cryptocurrency). In the Signature Gaming Platform, users will gain access to unique Signature Games that are built separately to enhance gaming experiences and maximize earning opportunities with other reward tokens.
GENI.removeFromWhales(address[]).i (contracts/GENI.sol#86) is a local variable never initialized
GENI.addListWhales(address[]).i (contracts/GENI.sol#78) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
GENI.constructor(address,address)._exchange (contracts/GENI.sol#20) lacks a zero-check on :
- exchange = _exchange (contracts/GENI.sol#21)
GENI.constructor(address,address)._busd (contracts/GENI.sol#20) lacks a zero-check on :
- busd = _busd (contracts/GENI.sol#22)
Check that the address is not zero.
Additional information: link
GENI._transfer(address,address,uint256) (contracts/GENI.sol#93-115) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp < antiWhaleTimeBuy (contracts/GENI.sol#96)
- block.timestamp < antiWhaleTimeSell (contracts/GENI.sol#105)
Avoid relying on block.timestamp.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.6.2', '^0.8.0']
- ^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
- ^0.8.0 (@openzeppelin/contracts/utils/Context.sol#4)
- ^0.8.0 (contracts/GENI.sol#1)
- >=0.6.2 (contracts/interfaces/IExchangeRouter.sol#1)
- ^0.8.0 (contracts/interfaces/IGENI.sol#1)
- ^0.8.0 (contracts/utils/PermissionGroup.sol#3)
Use one Solidity version.
Additional information: link
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#21-23) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Context.sol#4) allows old versions
Pragma version^0.8.0 (contracts/GENI.sol#1) allows old versions
Pragma version>=0.6.2 (contracts/interfaces/IExchangeRouter.sol#1) allows old versions
Pragma version^0.8.0 (contracts/interfaces/IGENI.sol#1) allows old versions
Pragma version^0.8.0 (contracts/utils/PermissionGroup.sol#3) allows old versions
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Parameter GENI.setLpToken(address)._lpToken (contracts/GENI.sol#35) is not in mixedCase
Parameter GENI.setBusd(address)._busd (contracts/GENI.sol#41) is not in mixedCase
Parameter GENI.setExchange(address)._exchange (contracts/GENI.sol#47) is not in mixedCase
Parameter GENI.addListWhales(address[])._whales (contracts/GENI.sol#77) is not in mixedCase
Parameter GENI.removeFromWhales(address[])._whales (contracts/GENI.sol#85) is not in mixedCase
Function IExchangeRouter.WETH() (contracts/interfaces/IExchangeRouter.sol#5) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IExchangeRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/interfaces/IExchangeRouter.sol#10) is too similar to IExchangeRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/interfaces/IExchangeRouter.sol#11)
Prevent variables from having similar names.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (@openzeppelin/contracts/access/Ownable.sol#54-56)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (@openzeppelin/contracts/access/Ownable.sol#62-65)
name() should be declared external:
- ERC20.name() (@openzeppelin/contracts/token/ERC20/ERC20.sol#62-64)
symbol() should be declared external:
- ERC20.symbol() (@openzeppelin/contracts/token/ERC20/ERC20.sol#70-72)
decimals() should be declared external:
- ERC20.decimals() (@openzeppelin/contracts/token/ERC20/ERC20.sol#87-89)
totalSupply() should be declared external:
- ERC20.totalSupply() (@openzeppelin/contracts/token/ERC20/ERC20.sol#94-96)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#113-116)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (@openzeppelin/contracts/token/ERC20/ERC20.sol#121-123)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#132-135)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#150-164)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#178-181)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#197-205)
Use the external attribute for functions never called from the contract.
Additional information: link
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death