Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract locking ether found:
Contract VC (#677-819) has payable functions:
- VC.receive() (#698)
But does not have a function to withdraw the ether
Remove the payable attribute or add a withdraw function.
Additional information: link
Parameter VC.changeUniswapV2Pair(address)._uniswapV2Pair (#700) is not in mixedCase
Parameter VC.changeMinAmount(uint256)._minAmount (#769) is not in mixedCase
Variable VC._tokenOwner (#681) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#11)" inContext (#5-15)
Remove redundant statements if they congest code but offer no value.
Additional information: link
VC._transfer(address,address,uint256) (#714-758) uses literals with too many digits:
- amount = amount.div(100000).mul(99999) (#739)
VC._transfer(address,address,uint256) (#714-758) uses literals with too many digits:
- amount = amount.div(100000).mul(99999) (#742)
VC._splitOtherTokenSecond(uint256) (#774-806) uses literals with too many digits:
- rate = balanceOf(user).mul(1000000).div(totalAmount) (#786)
VC._splitOtherTokenSecond(uint256) (#774-806) uses literals with too many digits:
- super._transfer(address(this),user,thisAmount.mul(rate).div(1000000)) (#788)
VC._splitOtherTokenSecond(uint256) (#774-806) uses literals with too many digits:
- rate = balanceOf(user).mul(1000000).div(totalAmount) (#798)
VC._splitOtherTokenSecond(uint256) (#774-806) uses literals with too many digits:
- super._transfer(address(this),user,thisAmount.mul(rate).div(1000000)) (#800)
VC.slitherConstructorVariables() (#677-819) uses literals with too many digits:
- _destroyAddress = address(0x000000000000000000000000000000000000dEaD) (#682)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
VC._destroyAddress (#682) should be constant
VC.startTime (#686) should be constant
VC.swapAndLiquifyEnabled (#685) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
owner() should be declared external:
- Ownable.owner() (#138-140)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#157-160)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#166-173)
name() should be declared external:
- ERC20.name() (#204-206)
symbol() should be declared external:
- ERC20.symbol() (#212-214)
decimals() should be declared external:
- ERC20.decimals() (#229-231)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#261-269)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#274-282)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#291-299)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#314-333)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#347-358)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#374-388)
changeUniswapV2Pair(address) should be declared external:
- VC.changeUniswapV2Pair(address) (#700-703)
isExcludedFromFees(address) should be declared external:
- VC.isExcludedFromFees(address) (#709-711)
rescueToken(address,uint256) should be declared external:
- VC.rescueToken(address,uint256) (#760-766)
changeMinAmount(uint256) should be declared external:
- VC.changeMinAmount(uint256) (#769-771)
getLDXsize() should be declared external:
- VC.getLDXsize() (#815-817)
Use the external attribute for functions never called from the contract.
Additional information: link
VC._transfer(address,address,uint256) (#714-758) performs a multiplication on the result of a division:
-amount = amount.div(100000).mul(99999) (#739)
VC._transfer(address,address,uint256) (#714-758) performs a multiplication on the result of a division:
-amount = amount.div(100000).mul(99999) (#742)
VC._transfer(address,address,uint256) (#714-758) performs a multiplication on the result of a division:
-amount = amount.div(100).mul(99) (#750)
VC._splitOtherTokenSecond(uint256) (#774-806) performs a multiplication on the result of a division:
-super._transfer(address(this),user,thisAmount.mul(rate).div(1000000)) (#788)
-rate = balanceOf(user).mul(1000000).div(totalAmount) (#798)
VC._splitOtherTokenSecond(uint256) (#774-806) performs a multiplication on the result of a division:
-rate = balanceOf(user).mul(1000000).div(totalAmount) (#798)
-super._transfer(address(this),user,thisAmount.mul(rate).div(1000000)) (#800)
Consider ordering multiplication before division.
Additional information: link
ERC20.allowance(address,address).owner (#274) shadows:
- Ownable.owner() (#138-140) (function)
ERC20._approve(address,address,uint256).owner (#489) shadows:
- Ownable.owner() (#138-140) (function)
Rename the local variables that shadow another component.
Additional information: link
VC.changeMinAmount(uint256) (#769-771) should emit an event for:
- minAmount = _minAmount (#770)
Emit an event for critical parameter changes.
Additional information: link
ERC20.transferFrom(address,address,uint256).recipient (#316) lacks a zero-check on :
- uniswapV2Pair = recipient (#320)
Ownable.constructor().msgSender (#130) lacks a zero-check on :
- _owner = msgSender (#131)
VC.constructor(address).tokenOwner (#690) lacks a zero-check on :
- _tokenOwner = tokenOwner (#691)
VC.changeUniswapV2Pair(address)._uniswapV2Pair (#700) lacks a zero-check on :
- uniswapV2Pair = _uniswapV2Pair (#701)
Check that the address is not zero.
Additional information: link
Context._msgData() (#10-14) is never used and should be removed
ERC20._burn(address,uint256) (#460-471) is never used and should be removed
SafeMath.mod(uint256,uint256) (#651-653) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#667-674) is never used and should be removed
SafeMath.sub(uint256,uint256) (#550-552) is never used and should be removed
Remove unused functions.
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