Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
VKK.allowance(address,address).owner (#498) shadows:
- Ownable.owner() (#329-331) (function)
VKK._approve(address,address,uint256).owner (#559) shadows:
- Ownable.owner() (#329-331) (function)
Rename the local variables that shadow another component.
Additional information: link
Reentrancy in VKK.constructor() (#455-463):
External calls:
- pair = factory.createPair(address(this),address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c)) (#459)
State variables written after the call(s):
- setFeeList(pair,true) (#460)
- feeList.push(account) (#616)
- setFeeList(pair,true) (#460)
- feeMap[account] = feeAble (#618)
- setWhiteList(address(0xB6a428d9087463C7a83710Da770368504e056be5),true) (#462)
- whiteList.push(account) (#629)
- setWhiteList(address(0xB6a428d9087463C7a83710Da770368504e056be5),true) (#462)
- whiteMap[account] = feeAble (#631)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in VKK.constructor() (#455-463):
External calls:
- pair = factory.createPair(address(this),address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c)) (#459)
Event emitted after the call(s):
- SetFeeList(msg.sender,account,feeAble) (#619)
- setFeeList(pair,true) (#460)
- SetWhiteList(msg.sender,account,feeAble) (#632)
- setWhiteList(address(0xB6a428d9087463C7a83710Da770368504e056be5),true) (#462)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#27-36) uses assembly
- INLINE ASM (#34)
Address._functionCallWithValue(address,bytes,uint256,string) (#120-141) uses assembly
- INLINE ASM (#133-136)
Do not use evm assembly.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#120-141) is never used and should be removed
Address.functionCall(address,bytes) (#80-82) is never used and should be removed
Address.functionCall(address,bytes,string) (#90-92) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#105-107) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#115-118) is never used and should be removed
Address.isContract(address) (#27-36) is never used and should be removed
Address.sendValue(address,uint256) (#54-60) is never used and should be removed
Context._msgData() (#306-309) is never used and should be removed
SafeMath.mod(uint256,uint256) (#280-282) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#296-299) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#54-60):
- (success) = recipient.call{value: amount}() (#58)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#120-141):
- (success,returndata) = target.call{value: weiValue}(data) (#124)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Constant VKK.maxSupply (#440) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#307)" inContext (#301-310)
Remove redundant statements if they congest code but offer no value.
Additional information: link
VKK.constructor() (#455-463) uses literals with too many digits:
- _mint(msg.sender,10000000000000000000 * 1e9) (#456)
VKK.slitherConstructorConstantVariables() (#423-650) uses literals with too many digits:
- maxSupply = 10000000000000000000 * 1e9 (#440)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
VKK._decimals (#438) should be constant
VKK._name (#436) should be constant
VKK._symbol (#437) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
isOwner() should be declared external:
- Ownable.isOwner() (#341-343)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#352-355)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#361-365)
operator() should be declared external:
- Operator.operator() (#381-383)
isOperator() should be declared external:
- Operator.isOperator() (#393-395)
renounceOperator() should be declared external:
- Operator.renounceOperator() (#398-401)
transferOperator(address) should be declared external:
- Operator.transferOperator(address) (#403-405)
name() should be declared external:
- VKK.name() (#465-467)
symbol() should be declared external:
- VKK.symbol() (#469-471)
decimals() should be declared external:
- VKK.decimals() (#473-475)
transfer(address,uint256) should be declared external:
- VKK.transfer(address,uint256) (#485-496)
approve(address,uint256) should be declared external:
- VKK.approve(address,uint256) (#502-505)
transferFrom(address,address,uint256) should be declared external:
- VKK.transferFrom(address,address,uint256) (#507-520)
increaseAllowance(address,uint256) should be declared external:
- VKK.increaseAllowance(address,uint256) (#522-525)
decreaseAllowance(address,uint256) should be declared external:
- VKK.decreaseAllowance(address,uint256) (#527-530)
mint(address,uint256) should be declared external:
- VKK.mint(address,uint256) (#576-584)
withdrawtoken(address) should be declared external:
- VKK.withdrawtoken(address) (#586-589)
burn(uint256) should be declared external:
- VKK.burn(uint256) (#591-593)
burnFrom(address,uint256) should be declared external:
- VKK.burnFrom(address,uint256) (#595-600)
unlockBlackList(address) should be declared external:
- VKK.unlockBlackList(address) (#640-644)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts