Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
TITDAO.withdrawRest(address) (#667-669) ignores return value by IERC20(_token).transfer(owner(),IERC20(_token).balanceOf(address(this))) (#668)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Contract ownership is not renounced (belongs to a wallet)
Reentrancy in TITDAO.transferFrom(address,address,uint256) (#545-549):
External calls:
- _transfers(sender,recipient,amount) (#546)
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#636)
State variables written after the call(s):
- _approve(sender,msg.sender,allowance(sender,msg.sender).sub(amount,ERC20: transfer amount exceeds allowance)) (#547)
- _allowances[owner][spender] = amount (#458)
Apply the check-effects-interactions pattern.
Additional information: link
TITDAO._transfers(address,address,uint256) (#608-633) performs a multiplication on the result of a division:
-feeAmount = amount.div(1000) (#623)
-_transfer(from,_destroyAddress,feeAmount.mul(10)) (#625)
TITDAO._transfers(address,address,uint256) (#608-633) performs a multiplication on the result of a division:
-feeAmount = amount.div(1000) (#623)
-_transfer(from,router,feeAmount.mul(30)) (#626)
TITDAO._transfers(address,address,uint256) (#608-633) performs a multiplication on the result of a division:
-feeAmount = amount.div(1000) (#623)
-_transfer(from,_fundAddress,feeAmount.mul(20)) (#627)
TITDAO._transfers(address,address,uint256) (#608-633) performs a multiplication on the result of a division:
-feeAmount = amount.div(1000) (#623)
-_transfer(from,to,amount.sub(feeAmount.mul(80))) (#628)
TITDAO._takeInviterFee(address,address,uint256) (#640-665) performs a multiplication on the result of a division:
-_transfer(from,receiveD,amount.div(1000).mul(rate)) (#663)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in TITDAO._transfers(address,address,uint256) (#608-633):
External calls:
- swapAndLiquify(numTokensSellToAddToLiquidity) (#617)
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#636)
State variables written after the call(s):
- _transfer(from,to,amount) (#621)
- _balances[from] = fromBalance - amount (#412)
- _balances[to] += amount (#414)
- _takeInviterFee(from,to,amount) (#624)
- _balances[from] = fromBalance - amount (#412)
- _balances[to] += amount (#414)
- _transfer(from,_destroyAddress,feeAmount.mul(10)) (#625)
- _balances[from] = fromBalance - amount (#412)
- _balances[to] += amount (#414)
- _transfer(from,router,feeAmount.mul(30)) (#626)
- _balances[from] = fromBalance - amount (#412)
- _balances[to] += amount (#414)
- _transfer(from,_fundAddress,feeAmount.mul(20)) (#627)
- _balances[from] = fromBalance - amount (#412)
- _balances[to] += amount (#414)
- _transfer(from,to,amount.sub(feeAmount.mul(80))) (#628)
- _balances[from] = fromBalance - amount (#412)
- _balances[to] += amount (#414)
Apply the check-effects-interactions pattern.
Additional information: link
TITDAO.excludeFromFees(address[],bool[]).i (#576) 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
TITDAO.setNumTokensSellToAddToLiquidity(uint256) (#600-602) should emit an event for:
- numTokensSellToAddToLiquidity = _num (#601)
Emit an event for critical parameter changes.
Additional information: link
TITDAO.changeRouter(address)._router (#585) lacks a zero-check on :
- router = _router (#586)
TITDAO.changeInvite(address)._invite (#590) lacks a zero-check on :
- inviteR = _invite (#591)
Check that the address is not zero.
Additional information: link
Reentrancy in TITDAO._transfers(address,address,uint256) (#608-633):
External calls:
- swapAndLiquify(numTokensSellToAddToLiquidity) (#617)
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#636)
Event emitted after the call(s):
- Transfer(from,to,amount) (#416)
- _transfer(from,to,amount.sub(feeAmount.mul(80))) (#628)
- Transfer(from,to,amount) (#416)
- _transfer(from,_fundAddress,feeAmount.mul(20)) (#627)
- Transfer(from,to,amount) (#416)
- _transfer(from,router,feeAmount.mul(30)) (#626)
- Transfer(from,to,amount) (#416)
- _transfer(from,_destroyAddress,feeAmount.mul(10)) (#625)
- Transfer(from,to,amount) (#416)
- _transfer(from,to,amount) (#621)
- Transfer(from,to,amount) (#416)
- _takeInviterFee(from,to,amount) (#624)
Reentrancy in TITDAO.transferFrom(address,address,uint256) (#545-549):
External calls:
- _transfers(sender,recipient,amount) (#546)
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#636)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#459)
- _approve(sender,msg.sender,allowance(sender,msg.sender).sub(amount,ERC20: transfer amount exceeds allowance)) (#547)
Apply the check-effects-interactions pattern.
Additional information: link
Context._msgData() (#282-284) is never used and should be removed
SafeMath.add(uint256,uint256) (#6-11) is never used and should be removed
Remove unused functions.
Additional information: link
TITDAO.numTokensSellToAddToLiquidity (#508) is set pre-construction with a non-constant function or state variable:
- 200 * 10 ** decimals()
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
Pragma version^0.8.0 (#2) allows old versions
solc-0.8.0 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 TITDAO.swapAndLiquify(uint256) (#635-638):
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#636)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IKingKongPair.DOMAIN_SEPARATOR() (#79) is not in mixedCase
Function IKingKongPair.PERMIT_TYPEHASH() (#80) is not in mixedCase
Function IKingKongPair.MINIMUM_LIQUIDITY() (#97) is not in mixedCase
Function IKingKongRouter01.WETH() (#118) is not in mixedCase
Parameter TITDAO.setFeePair(address,bool)._pair (#563) is not in mixedCase
Parameter TITDAO.setFeePair(address,bool)._enabled (#563) is not in mixedCase
Parameter TITDAO.setSwapAndLiquifyEnabled(bool)._enabled (#567) is not in mixedCase
Parameter TITDAO.excludeFromFees(address[],bool[])._isListed (#575) is not in mixedCase
Parameter TITDAO.changeRouter(address)._router (#585) is not in mixedCase
Parameter TITDAO.changeInvite(address)._invite (#590) is not in mixedCase
Parameter TITDAO.setNumTokensSellToAddToLiquidity(uint256)._num (#600) is not in mixedCase
Parameter TITDAO.withdrawRest(address)._token (#667) is not in mixedCase
Variable TITDAO._destroyAddress (#518) is not in mixedCase
Variable TITDAO._fundAddress (#519) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IKingKongRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#123) is too similar to IKingKongRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#124)
Prevent variables from having similar names.
Additional information: link
TITDAO.slitherConstructorVariables() (#504-672) uses literals with too many digits:
- _destroyAddress = address(0x000000000000000000000000000000000000dEaD) (#518)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
TITDAO._destroyAddress (#518) should be constant
TITDAO._fundAddress (#519) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#304-306)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#308-311)
name() should be declared external:
- ERC20.name() (#335-337)
symbol() should be declared external:
- ERC20.symbol() (#339-341)
totalSupply() should be declared external:
- ERC20.totalSupply() (#347-349)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#355-359)
- TITDAO.transfer(address,uint256) (#540-543)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#365-369)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#371-380)
- TITDAO.transferFrom(address,address,uint256) (#545-549)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#382-386)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#388-397)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (#491-493)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (#495-498)
transfers(address,uint256) should be declared external:
- TITDAO.transfers(address,uint256) (#551-554)
transfersFrom(address,address,uint256) should be declared external:
- TITDAO.transfersFrom(address,address,uint256) (#556-560)
setFeePair(address,bool) should be declared external:
- TITDAO.setFeePair(address,bool) (#563-565)
setSwapAndLiquifyEnabled(bool) should be declared external:
- TITDAO.setSwapAndLiquifyEnabled(bool) (#567-569)
excludeFromFee(address) should be declared external:
- TITDAO.excludeFromFee(address) (#571-573)
excludeFromFees(address[],bool[]) should be declared external:
- TITDAO.excludeFromFees(address[],bool[]) (#575-579)
includeInFee(address) should be declared external:
- TITDAO.includeInFee(address) (#581-583)
changeRouter(address) should be declared external:
- TITDAO.changeRouter(address) (#585-588)
changeInvite(address) should be declared external:
- TITDAO.changeInvite(address) (#590-593)
setNumTokensSellToAddToLiquidity(uint256) should be declared external:
- TITDAO.setNumTokensSellToAddToLiquidity(uint256) (#600-602)
isExcludedFromFee(address) should be declared external:
- TITDAO.isExcludedFromFee(address) (#604-606)
withdrawRest(address) should be declared external:
- TITDAO.withdrawRest(address) (#667-669)
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 is marked as scam (rug pull, honeypot, phishing, etc.)
Additional information: link
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts