Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract ownership is not renounced (belongs to a wallet)
KingKongToken._transfers(address,address,uint256) (#1049-1074) performs a multiplication on the result of a division:
-feeAmount = amount.div(1000) (#1064)
-_transfer(from,_destroyAddress,feeAmount.mul(2)) (#1065)
KingKongToken._transfers(address,address,uint256) (#1049-1074) performs a multiplication on the result of a division:
-feeAmount = amount.div(1000) (#1064)
-_transfer(from,_fundAddress,feeAmount.mul(4)) (#1066)
KingKongToken._transfers(address,address,uint256) (#1049-1074) performs a multiplication on the result of a division:
-feeAmount = amount.div(1000) (#1064)
-_transfer(from,router,feeAmount.mul(2)) (#1067)
KingKongToken._transfers(address,address,uint256) (#1049-1074) performs a multiplication on the result of a division:
-feeAmount = amount.div(1000) (#1064)
-_transfer(from,to,amount.sub(feeAmount.mul(8))) (#1068)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in KingKongToken._transfers(address,address,uint256) (#1049-1074):
External calls:
- swapAndLiquify(contractTokenBalance) (#1058)
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#1077)
State variables written after the call(s):
- _transfer(from,to,amount) (#1062)
- _balances[from] = fromBalance - amount (#773)
- _balances[to] += amount (#775)
- _transfer(from,_destroyAddress,feeAmount.mul(2)) (#1065)
- _balances[from] = fromBalance - amount (#773)
- _balances[to] += amount (#775)
- _transfer(from,_fundAddress,feeAmount.mul(4)) (#1066)
- _balances[from] = fromBalance - amount (#773)
- _balances[to] += amount (#775)
- _transfer(from,router,feeAmount.mul(2)) (#1067)
- _balances[from] = fromBalance - amount (#773)
- _balances[to] += amount (#775)
- _transfer(from,to,amount.sub(feeAmount.mul(8))) (#1068)
- _balances[from] = fromBalance - amount (#773)
- _balances[to] += amount (#775)
Apply the check-effects-interactions pattern.
Additional information: link
KingKongToken.excludeFromFees(address[],bool[]).i (#1028) 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
KingKongToken.setNumTokensSellToAddToLiquidity(uint256) (#1041-1043) should emit an event for:
- numTokensSellToAddToLiquidity = _num (#1042)
Emit an event for critical parameter changes.
Additional information: link
KingKongToken.changeRouter(address)._router (#1037) lacks a zero-check on :
- router = _router (#1038)
Check that the address is not zero.
Additional information: link
Reentrancy in KingKongToken.transferFrom(address,address,uint256) (#997-1001):
External calls:
- _transfers(sender,recipient,amount) (#998)
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#1077)
State variables written after the call(s):
- _approve(sender,msg.sender,allowance(sender,msg.sender).sub(amount,ERC20: transfer amount exceeds allowance)) (#999)
- _allowances[owner][spender] = amount (#852)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in KingKongToken._transfers(address,address,uint256) (#1049-1074):
External calls:
- swapAndLiquify(contractTokenBalance) (#1058)
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#1077)
Event emitted after the call(s):
- Transfer(from,to,amount) (#777)
- _transfer(from,to,amount) (#1062)
- Transfer(from,to,amount) (#777)
- _transfer(from,_destroyAddress,feeAmount.mul(2)) (#1065)
- Transfer(from,to,amount) (#777)
- _transfer(from,to,amount.sub(feeAmount.mul(8))) (#1068)
- Transfer(from,to,amount) (#777)
- _transfer(from,router,feeAmount.mul(2)) (#1067)
- Transfer(from,to,amount) (#777)
- _transfer(from,_fundAddress,feeAmount.mul(4)) (#1066)
Reentrancy in KingKongToken.transferFrom(address,address,uint256) (#997-1001):
External calls:
- _transfers(sender,recipient,amount) (#998)
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#1077)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#853)
- _approve(sender,msg.sender,allowance(sender,msg.sender).sub(amount,ERC20: transfer amount exceeds allowance)) (#999)
Apply the check-effects-interactions pattern.
Additional information: link
Context._msgData() (#365-367) is never used and should be removed
SafeMath.add(uint256,uint256) (#15-20) is never used and should be removed
SafeMath.mod(uint256,uint256) (#125-127) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#141-144) is never used and should be removed
Remove unused functions.
Additional information: link
KingKongToken.numTokensSellToAddToLiquidity (#960) 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
Pragma version^0.8.0 (#953) 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 KingKongToken.swapAndLiquify(uint256) (#1076-1079):
- (success,data) = router.call(abi.encodeWithSelector(bytes4(keccak256(bytes)(bytes(swapAndLiquify(uint256)))),contractTokenBalance)) (#1077)
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() (#178) is not in mixedCase
Function IKingKongPair.PERMIT_TYPEHASH() (#179) is not in mixedCase
Function IKingKongPair.MINIMUM_LIQUIDITY() (#196) is not in mixedCase
Function IKingKongRouter01.WETH() (#217) is not in mixedCase
Parameter KingKongToken.setFeePair(address,bool)._pair (#1015) is not in mixedCase
Parameter KingKongToken.setFeePair(address,bool)._enabled (#1015) is not in mixedCase
Parameter KingKongToken.setSwapAndLiquifyEnabled(bool)._enabled (#1019) is not in mixedCase
Parameter KingKongToken.excludeFromFees(address[],bool[])._isListed (#1027) is not in mixedCase
Parameter KingKongToken.changeRouter(address)._router (#1037) is not in mixedCase
Parameter KingKongToken.setNumTokensSellToAddToLiquidity(uint256)._num (#1041) is not in mixedCase
Variable KingKongToken._destroyAddress (#969) is not in mixedCase
Variable KingKongToken._fundAddress (#970) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IKingKongRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#222) is too similar to IKingKongRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#223)
Prevent variables from having similar names.
Additional information: link
KingKongToken.constructor() (#979-989) uses literals with too many digits:
- _mint(0xc482Df977Ec5d4b06756f15dfc4644e87B88b96B,5000000 * 10 ** decimals()) (#983)
KingKongToken.constructor() (#979-989) uses literals with too many digits:
- _mint(0x12b143109AA1fc8548e9a9E9BB8dEf0d598eB0bc,2000000 * 10 ** decimals()) (#984)
KingKongToken.constructor() (#979-989) uses literals with too many digits:
- _mint(0x9240dec92001244737ea319d9E0A2C2C6F37F81E,2000000 * 10 ** decimals()) (#985)
KingKongToken.constructor() (#979-989) uses literals with too many digits:
- _mint(0xd492A1d14746b8fAD38152Bebc5615bFDf56597d,500000 * 10 ** decimals()) (#986)
KingKongToken.constructor() (#979-989) uses literals with too many digits:
- _mint(0xf1FE8c7F3556512602287F9B5fE07AE7C1e20dbf,500000 * 10 ** decimals()) (#987)
KingKongToken.constructor() (#979-989) uses literals with too many digits:
- _mint(0x7F1F09E30826330416a205B615d1eA0FeB4b4A44,11000000 * 10 ** decimals()) (#988)
KingKongToken.slitherConstructorVariables() (#956-1082) uses literals with too many digits:
- _destroyAddress = address(0x000000000000000000000000000000000000dEaD) (#969)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
KingKongToken._destroyAddress (#969) should be constant
KingKongToken._fundAddress (#970) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#418-420)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#426-429)
name() should be declared external:
- ERC20.name() (#596-598)
symbol() should be declared external:
- ERC20.symbol() (#604-606)
totalSupply() should be declared external:
- ERC20.totalSupply() (#628-630)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#647-651)
- KingKongToken.transfer(address,uint256) (#992-995)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#670-674)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#692-701)
- KingKongToken.transferFrom(address,address,uint256) (#997-1001)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#715-719)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#735-744)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (#931-933)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (#946-949)
transfers(address,uint256) should be declared external:
- KingKongToken.transfers(address,uint256) (#1003-1006)
transfersFrom(address,address,uint256) should be declared external:
- KingKongToken.transfersFrom(address,address,uint256) (#1008-1012)
setFeePair(address,bool) should be declared external:
- KingKongToken.setFeePair(address,bool) (#1015-1017)
setSwapAndLiquifyEnabled(bool) should be declared external:
- KingKongToken.setSwapAndLiquifyEnabled(bool) (#1019-1021)
excludeFromFee(address) should be declared external:
- KingKongToken.excludeFromFee(address) (#1023-1025)
excludeFromFees(address[],bool[]) should be declared external:
- KingKongToken.excludeFromFees(address[],bool[]) (#1027-1031)
includeInFee(address) should be declared external:
- KingKongToken.includeInFee(address) (#1033-1035)
changeRouter(address) should be declared external:
- KingKongToken.changeRouter(address) (#1037-1039)
setNumTokensSellToAddToLiquidity(uint256) should be declared external:
- KingKongToken.setNumTokensSellToAddToLiquidity(uint256) (#1041-1043)
isExcludedFromFee(address) should be declared external:
- KingKongToken.isExcludedFromFee(address) (#1045-1047)
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