CryptoZoon is inspired by Pokemon Story, our mission is to build a comprehensive platform of digital monsters that will enable millions of individuals to participate in the NFT and blockchain-based gaming world in a simple, creative, and enjoyable way.
Contract locking ether found:
Contract CryptoZoon (CryptoZoon.sol#8-118) has payable functions:
- CryptoZoon.receive() (CryptoZoon.sol#85)
But does not have a function to withdraw the ether
Remove the payable attribute or add a withdraw function.
Additional information: link
CryptoZoon._transfer(address,address,uint256) (CryptoZoon.sol#47-75) uses timestamp for comparisons
Dangerous comparisons:
- antiBotTime > block.timestamp && amount > antiBotAmount && bots[sender] (CryptoZoon.sol#53-55)
Avoid relying on block.timestamp.
Additional information: link
ZoonERC20.setTransferFeeRate(uint256,uint256) (ZoonERC20.sol#43-49) should emit an event for:
- sellFeeRate = _sellFeeRate (ZoonERC20.sol#47)
- buyFeeRate = _buyFeeRate (ZoonERC20.sol#48)
ZoonERC20.setMinTokensBeforeSwap(uint256) (ZoonERC20.sol#51-57) should emit an event for:
- tokenForBosses = _tokenForBosses (ZoonERC20.sol#56)
CryptoZoon.antiBot(uint256) (CryptoZoon.sol#109-116) should emit an event for:
- antiBotAmount = amount (CryptoZoon.sol#113)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in CryptoZoon.constructor(string,string) (CryptoZoon.sol#22-35):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (CryptoZoon.sol#30-31)
State variables written after the call(s):
- _approve(address(this),address(uniswapV2Router),~ uint256(0)) (CryptoZoon.sol#34)
- _allowances[owner][spender] = amount (ERC20.sol#276)
- uniswapV2Router = _uniswapV2Router (CryptoZoon.sol#33)
Apply the check-effects-interactions pattern.
Additional information: link
CryptoZoon.constructor(string,string).name (CryptoZoon.sol#22) shadows:
- ERC20.name() (ERC20.sol#64-66) (function)
CryptoZoon.constructor(string,string).symbol (CryptoZoon.sol#22) shadows:
- ERC20.symbol() (ERC20.sol#72-74) (function)
ZoonERC20.constructor(string,string).name (ZoonERC20.sol#25) shadows:
- ERC20.name() (ERC20.sol#64-66) (function)
ZoonERC20.constructor(string,string).symbol (ZoonERC20.sol#25) shadows:
- ERC20.symbol() (ERC20.sol#72-74) (function)
Rename the local variables that shadow another component.
Additional information: link
Reentrancy in CryptoZoon.constructor(string,string) (CryptoZoon.sol#22-35):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (CryptoZoon.sol#30-31)
Event emitted after the call(s):
- Approval(owner,spender,amount) (ERC20.sol#277)
- _approve(address(this),address(uniswapV2Router),~ uint256(0)) (CryptoZoon.sol#34)
Apply the check-effects-interactions pattern.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.6.0<0.8.0', '^0.7.6']
- >=0.6.0<0.8.0 (Context.sol#3)
- ^0.7.6 (CryptoZoon.sol#2)
- >=0.6.0<0.8.0 (ERC20.sol#3)
- >=0.6.0<0.8.0 (IERC20.sol#3)
- ^0.7.6 (ManagerInterface.sol#3)
- >=0.6.0<0.8.0 (Ownable.sol#3)
- >=0.6.0<0.8.0 (ReentrancyGuard.sol#3)
- >=0.6.0<0.8.0 (SafeMath.sol#3)
- ^0.7.6 (Uniswap.sol#2)
- ^0.7.6 (ZoonERC20.sol#2)
Use one Solidity version.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (Uniswap.sol#148) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (Uniswap.sol#149)
Prevent variables from having similar names.
Additional information: link
CryptoZoon.antiBotDuration (CryptoZoon.sol#18) should be constant
CryptoZoon.maxSupply (CryptoZoon.sol#12) should be constant
ZoonERC20.amountFarm (ZoonERC20.sol#14) should be constant
ZoonERC20.amountPlayToEarn (ZoonERC20.sol#12) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
burn(uint256) should be declared external:
- CryptoZoon.burn(uint256) (CryptoZoon.sol#37-39)
sweepTokenForBosses() should be declared external:
- CryptoZoon.sweepTokenForBosses() (CryptoZoon.sol#77-82)
name() should be declared external:
- ERC20.name() (ERC20.sol#64-66)
symbol() should be declared external:
- ERC20.symbol() (ERC20.sol#72-74)
decimals() should be declared external:
- ERC20.decimals() (ERC20.sol#89-91)
totalSupply() should be declared external:
- ERC20.totalSupply() (ERC20.sol#96-98)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (ERC20.sol#115-118)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (ERC20.sol#123-125)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (ERC20.sol#134-137)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (ERC20.sol#152-156)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (ERC20.sol#170-173)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (ERC20.sol#189-192)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (Ownable.sol#54-57)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (Ownable.sol#63-67)
setManager(address) should be declared external:
- ZoonERC20.setManager(address) (ZoonERC20.sol#39-41)
setTransferFeeRate(uint256,uint256) should be declared external:
- ZoonERC20.setTransferFeeRate(uint256,uint256) (ZoonERC20.sol#43-49)
setMinTokensBeforeSwap(uint256) should be declared external:
- ZoonERC20.setMinTokensBeforeSwap(uint256) (ZoonERC20.sol#51-57)
Use the external attribute for functions never called from the contract.
Additional information: link
Context._msgData() (Context.sol#20-23) is never used and should be removed
ERC20._setupDecimals(uint8) (ERC20.sol#287-289) is never used and should be removed
SafeMath.div(uint256,uint256,string) (SafeMath.sol#190-193) is never used and should be removed
SafeMath.mod(uint256,uint256) (SafeMath.sol#152-155) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (SafeMath.sol#210-213) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (SafeMath.sol#24-28) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (SafeMath.sol#60-63) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (SafeMath.sol#70-73) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (SafeMath.sol#45-53) is never used and should be removed
SafeMath.trySub(uint256,uint256) (SafeMath.sol#35-38) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version>=0.6.0<0.8.0 (Context.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (ERC20.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (IERC20.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (Ownable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (ReentrancyGuard.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (SafeMath.sol#3) is too complex
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 CryptoZoon.setBots(address)._bots (CryptoZoon.sol#41) is not in mixedCase
Parameter CryptoZoon.setAddressForBosses(address)._addressForBosses (CryptoZoon.sol#103) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (Uniswap.sol#67) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (Uniswap.sol#69) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (Uniswap.sol#99) is not in mixedCase
Function IUniswapV2Router01.WETH() (Uniswap.sol#143) is not in mixedCase
Parameter ZoonERC20.setManager(address)._manager (ZoonERC20.sol#39) is not in mixedCase
Parameter ZoonERC20.setTransferFeeRate(uint256,uint256)._sellFeeRate (ZoonERC20.sol#43) is not in mixedCase
Parameter ZoonERC20.setTransferFeeRate(uint256,uint256)._buyFeeRate (ZoonERC20.sol#43) is not in mixedCase
Parameter ZoonERC20.setMinTokensBeforeSwap(uint256)._tokenForBosses (ZoonERC20.sol#51) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (Context.sol#21)" inContext (Context.sol#15-25)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Contract ownership is semi-renounced (passed to a contract)
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Last post in Twitter was more than 180 days ago