🐺 Hunt 🩸 Collect 💥 Earn // Adventure Game on #BSC. // 🌕 Join us: https://t.co/2piocEcuhq
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract ticker ($CWOLF) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.
CryptoWolf.allowance(address,address).owner (contracts/CryptoWolf.sol#139) shadows:
- Ownable.owner() (contracts/Ownable.sol#37-39) (function)
CryptoWolf._approve(address,address,uint256).owner (contracts/CryptoWolf.sol#332) shadows:
- Ownable.owner() (contracts/Ownable.sol#37-39) (function)
Rename the local variables that shadow another component.
Additional information: link
AntiWhale.isWhale(uint256) (contracts/AntiWhale.sol#30-41) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp >= startDate && block.timestamp <= endDate (contracts/AntiWhale.sol#37)
Avoid relying on block.timestamp.
Additional information: link
Pragma version0.8.3 (contracts/Address.sol#4) allows old versions
Pragma version0.8.3 (contracts/AntiWhale.sol#3) allows old versions
Pragma version0.8.3 (contracts/Context.sol#3) allows old versions
Pragma version0.8.3 (contracts/CryptoWolf.sol#3) allows old versions
Pragma version0.8.3 (contracts/IBEP20.sol#3) allows old versions
Pragma version0.8.3 (contracts/Ownable.sol#3) allows old versions
Pragma version0.8.3 (contracts/ReentrancyGuard.sol#3) allows old versions
Pragma version0.8.3 (contracts/SafeBEP20.sol#3) allows old versions
Pragma version0.8.3 (contracts/SafeMath.sol#3) allows old versions
solc-0.8.3 is not recommended for deployment
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
Low level call in Address.sendValue(address,uint256) (contracts/Address.sol#54-60):
- (success) = recipient.call{value: amount}() (contracts/Address.sol#58)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (contracts/Address.sol#115-122):
- (success,returndata) = target.call{value: value}(data) (contracts/Address.sol#120)
Low level call in Address.functionStaticCall(address,bytes,string) (contracts/Address.sol#140-146):
- (success,returndata) = target.staticcall(data) (contracts/Address.sol#144)
Low level call in Address.functionDelegateCall(address,bytes,string) (contracts/Address.sol#164-170):
- (success,returndata) = target.delegatecall(data) (contracts/Address.sol#168)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Address.isContract(address) (contracts/Address.sol#27-36) uses assembly
- INLINE ASM (contracts/Address.sol#34)
Address._verifyCallResult(bool,bytes,string) (contracts/Address.sol#172-189) uses assembly
- INLINE ASM (contracts/Address.sol#181-184)
Do not use evm assembly.
Additional information: link
AntiWhale.activateAntiWhale() (contracts/AntiWhale.sol#13-16) compares to a boolean constant:
-require(bool)(antiWhaleActivated == false) (contracts/AntiWhale.sol#14)
AntiWhale.deActivateAntiWhale() (contracts/AntiWhale.sol#18-21) compares to a boolean constant:
-require(bool)(antiWhaleActivated == true) (contracts/AntiWhale.sol#19)
AntiWhale.isWhale(uint256) (contracts/AntiWhale.sol#30-41) compares to a boolean constant:
-msg.sender == owner() || antiWhaleActivated == false || amount <= limitWhale (contracts/AntiWhale.sol#32-34)
CryptoWolf.approve(address,uint256) (contracts/CryptoWolf.sol#156-168) compares to a boolean constant:
-require(bool,string)(awaitingDraw == false || msg.sender == owner(),Draw is not started) (contracts/CryptoWolf.sol#162-165)
CryptoWolf.transferFrom(address,address,uint256) (contracts/CryptoWolf.sol#183-202) compares to a boolean constant:
-require(bool,string)(awaitingDraw == false || msg.sender == owner(),Draw is not started) (contracts/CryptoWolf.sol#188-191)
Remove the equality to the boolean constant.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (contracts/Address.sol#172-189) is never used and should be removed
Address.functionCall(address,bytes) (contracts/Address.sol#80-82) is never used and should be removed
Address.functionCall(address,bytes,string) (contracts/Address.sol#90-92) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (contracts/Address.sol#105-107) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (contracts/Address.sol#115-122) is never used and should be removed
Address.functionDelegateCall(address,bytes) (contracts/Address.sol#154-156) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (contracts/Address.sol#164-170) is never used and should be removed
Address.functionStaticCall(address,bytes) (contracts/Address.sol#130-132) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (contracts/Address.sol#140-146) is never used and should be removed
Address.isContract(address) (contracts/Address.sol#27-36) is never used and should be removed
Address.sendValue(address,uint256) (contracts/Address.sol#54-60) is never used and should be removed
Context._msgData() (contracts/Context.sol#19-23) is never used and should be removed
SafeBEP20._callOptionalReturn(IBEP20,bytes) (contracts/SafeBEP20.sol#87-98) is never used and should be removed
SafeBEP20.safeApprove(IBEP20,address,uint256) (contracts/SafeBEP20.sol#46-60) is never used and should be removed
SafeBEP20.safeDecreaseAllowance(IBEP20,address,uint256) (contracts/SafeBEP20.sol#71-79) is never used and should be removed
SafeBEP20.safeIncreaseAllowance(IBEP20,address,uint256) (contracts/SafeBEP20.sol#62-69) is never used and should be removed
SafeBEP20.safeTransfer(IBEP20,address,uint256) (contracts/SafeBEP20.sol#22-28) is never used and should be removed
SafeBEP20.safeTransferFrom(IBEP20,address,address,uint256) (contracts/SafeBEP20.sol#30-37) is never used and should be removed
SafeMath.add(uint256,uint256) (contracts/SafeMath.sol#91-93) is never used and should be removed
SafeMath.div(uint256,uint256) (contracts/SafeMath.sol#133-135) is never used and should be removed
SafeMath.div(uint256,uint256,string) (contracts/SafeMath.sol#189-194) is never used and should be removed
SafeMath.mod(uint256,uint256) (contracts/SafeMath.sol#149-151) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (contracts/SafeMath.sol#211-216) is never used and should be removed
SafeMath.mul(uint256,uint256) (contracts/SafeMath.sol#119-121) is never used and should be removed
SafeMath.sub(uint256,uint256) (contracts/SafeMath.sol#105-107) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (contracts/SafeMath.sol#166-171) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (contracts/SafeMath.sol#20-26) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (contracts/SafeMath.sol#62-67) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (contracts/SafeMath.sol#74-79) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (contracts/SafeMath.sol#45-55) is never used and should be removed
SafeMath.trySub(uint256,uint256) (contracts/SafeMath.sol#33-38) is never used and should be removed
Remove unused functions.
Additional information: link
Parameter AntiWhale.setAntiWhale(uint256,uint256,uint256)._startDate (contracts/AntiWhale.sol#23) is not in mixedCase
Parameter AntiWhale.setAntiWhale(uint256,uint256,uint256)._endDate (contracts/AntiWhale.sol#23) is not in mixedCase
Parameter AntiWhale.setAntiWhale(uint256,uint256,uint256)._limitWhale (contracts/AntiWhale.sol#23) is not in mixedCase
Constant CryptoWolf.maxCap (contracts/CryptoWolf.sol#46) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (contracts/Context.sol#20)" inContext (contracts/Context.sol#14-25)
Remove redundant statements if they congest code but offer no value.
Additional information: link
CryptoWolf.slitherConstructorConstantVariables() (contracts/CryptoWolf.sol#36-352) uses literals with too many digits:
- maxCap = 10000000 * (10 ** 18) (contracts/CryptoWolf.sol#46)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
CryptoWolf._decimals (contracts/CryptoWolf.sol#44) is never used in CryptoWolf (contracts/CryptoWolf.sol#36-352)
Remove unused state variables.
Additional information: link
CryptoWolf._decimals (contracts/CryptoWolf.sol#44) should be constant
CryptoWolf._name (contracts/CryptoWolf.sol#42) should be constant
CryptoWolf._symbol (contracts/CryptoWolf.sol#43) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
activateAntiWhale() should be declared external:
- AntiWhale.activateAntiWhale() (contracts/AntiWhale.sol#13-16)
deActivateAntiWhale() should be declared external:
- AntiWhale.deActivateAntiWhale() (contracts/AntiWhale.sol#18-21)
setAntiWhale(uint256,uint256,uint256) should be declared external:
- AntiWhale.setAntiWhale(uint256,uint256,uint256) (contracts/AntiWhale.sol#23-28)
name() should be declared external:
- CryptoWolf.name() (contracts/CryptoWolf.sol#69-71)
symbol() should be declared external:
- CryptoWolf.symbol() (contracts/CryptoWolf.sol#77-79)
decimals() should be declared external:
- CryptoWolf.decimals() (contracts/CryptoWolf.sol#94-96)
totalSupply() should be declared external:
- CryptoWolf.totalSupply() (contracts/CryptoWolf.sol#101-103)
balanceOf(address) should be declared external:
- CryptoWolf.balanceOf(address) (contracts/CryptoWolf.sol#108-116)
transfer(address,uint256) should be declared external:
- CryptoWolf.transfer(address,uint256) (contracts/CryptoWolf.sol#126-134)
allowance(address,address) should be declared external:
- CryptoWolf.allowance(address,address) (contracts/CryptoWolf.sol#139-147)
approve(address,uint256) should be declared external:
- CryptoWolf.approve(address,uint256) (contracts/CryptoWolf.sol#156-168)
transferFrom(address,address,uint256) should be declared external:
- CryptoWolf.transferFrom(address,address,uint256) (contracts/CryptoWolf.sol#183-202)
increaseAllowance(address,uint256) should be declared external:
- CryptoWolf.increaseAllowance(address,uint256) (contracts/CryptoWolf.sol#216-227)
decreaseAllowance(address,uint256) should be declared external:
- CryptoWolf.decreaseAllowance(address,uint256) (contracts/CryptoWolf.sol#243-256)
draw() should be declared external:
- CryptoWolf.draw() (contracts/CryptoWolf.sol#343-351)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (contracts/Ownable.sol#56-59)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (contracts/Ownable.sol#65-69)
Use the external attribute for functions never called from the contract.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find token contract audit
Unable to find audit link on the website
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Young tokens have high risks of price dump / death
Young tokens have high risks of scam / price dump / death
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
Token has relatively low CoinGecko rank
Token has relatively low CoinMarketCap rank
Last post in Twitter was more than 30 days ago
Unable to find Youtube account