Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
SafeMath.mod(uint256,uint256) (#57-59) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#61-68) is never used and should be removed
Remove unused functions.
Additional information: link
Function IPancakeRouter.WETH() (#125) is not in mixedCase
Function KIKDAO._limitSwap() (#234) is not in mixedCase
Parameter KIKTOK.setMarketAddress(address)._marketAddress (#517) is not in mixedCase
Parameter KIKTOK.setTxlimitByBnb(uint256)._txLimitByBnb (#521) is not in mixedCase
Parameter KIKTOK.setRelateContract(KIKDAO)._relateContract (#525) is not in mixedCase
Parameter KIKTOK.setOpenBlock(uint256)._openBlock (#529) is not in mixedCase
Parameter KIKTOK.setLimitBlock(uint256)._limitBlock (#533) is not in mixedCase
Variable KIKTOK._router (#293) is not in mixedCase
Variable KIKTOK._pair (#297) is not in mixedCase
Variable KIKTOK._maxTxAmount (#299) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
KIKTOK.addNextAdd(address,address) (#541-543) ignores return value by relateContract.addRetation(sender,recipient) (#542)
Ensure that all the return values of the function calls are used.
Additional information: link
KIKTOK.allowance(address,address).owner (#352) shadows:
- Ownable.owner() (#252-254) (function)
KIKTOK._approve(address,address,uint256).owner (#414) shadows:
- Ownable.owner() (#252-254) (function)
Rename the local variables that shadow another component.
Additional information: link
KIKTOK.isContract(address) (#545-554) uses assembly
- INLINE ASM (#550-552)
Do not use evm assembly.
Additional information: link
KIKTOK.setMarketAddress(address)._marketAddress (#517) lacks a zero-check on :
- marketAddress = _marketAddress (#518)
KIKTOK.setPair(address).pair (#537) lacks a zero-check on :
- _pair = pair (#538)
Check that the address is not zero.
Additional information: link
KIKTOK._transfer(address,address,uint256) (#432-497) performs a multiplication on the result of a division:
-share = amount.div(100) (#457)
-_balances[recipient] = _balances[recipient].add(share.mul(88).add(surplus)) (#459-461)
KIKTOK._transfer(address,address,uint256) (#432-497) performs a multiplication on the result of a division:
-share_scope_1 = amount.div(100) (#489)
-noBurn = _burn(share_scope_1.mul(5)) (#490)
KIKTOK._transfer(address,address,uint256) (#432-497) performs a multiplication on the result of a division:
-share = amount.div(100) (#457)
-Transfer(sender,recipient,share.mul(88).add(surplus)) (#462)
KIKTOK._transfer(address,address,uint256) (#432-497) performs a multiplication on the result of a division:
-share_scope_1 = amount.div(100) (#489)
-_balances[recipient] = _balances[recipient].add(share_scope_1.mul(95).add(noBurn)) (#491-493)
KIKTOK._transfer(address,address,uint256) (#432-497) performs a multiplication on the result of a division:
-share_scope_1 = amount.div(100) (#489)
-Transfer(sender,recipient,share_scope_1.mul(95).add(noBurn)) (#494)
Consider ordering multiplication before division.
Additional information: link
KIKTOK.setTxlimitByBnb(uint256) (#521-523) should emit an event for:
- txlimitByBnb = _txLimitByBnb (#522)
KIKTOK.setOpenBlock(uint256) (#529-531) should emit an event for:
- openBlock = _openBlock (#530)
KIKTOK.setLimitBlock(uint256) (#533-535) should emit an event for:
- limitBlock = _limitBlock (#534)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in KIKTOK._transfer(address,address,uint256) (#432-497):
External calls:
- addNextAdd(sender,recipient) (#437)
- relateContract.addRetation(sender,recipient) (#542)
State variables written after the call(s):
- _basicTransfer(sender,recipient,amount) (#439)
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#504)
- _balances[recipient] = _balances[recipient].add(amount) (#505)
- _balances[sender] = senderBalance.sub(amount) (#455)
- surplus = promotionRewards(tx.origin,share) (#458)
- _balances[deadAddress] = _balances[deadAddress].add(burnAmount) (#402)
- _balances[pre] = _balances[pre].add(a) (#566)
- _balances[deadAddress] = _balances[deadAddress].add(amount) (#407)
- _balances[pre] = _balances[pre].add(a) (#575)
- _balances[pre] = _balances[pre].add(a) (#584)
- _balances[marketAddress] = _balances[marketAddress].add(marketBonusAmount) (#591)
- _balances[recipient] = _balances[recipient].add(share.mul(88).add(surplus)) (#459-461)
- limitTx(amount) (#441)
- _maxTxAmount = reserve0.mul(txlimitByBnb).div(reserve1) (#610)
- _maxTxAmount = reserve1.mul(txlimitByBnb).div(reserve0) (#613)
- surplus = promotionRewards(tx.origin,share) (#458)
- _totalSupply = _totalSupply.sub(burnAmount) (#401)
- _totalSupply = _totalSupply.sub(amount) (#406)
Reentrancy in KIKTOK._transfer(address,address,uint256) (#432-497):
External calls:
- addNextAdd(sender,recipient) (#437)
- relateContract.addRetation(sender,recipient) (#542)
- relateContract._limitSwap() (#465)
State variables written after the call(s):
- _basicTransfer(sender,recipient,amount) (#473)
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#504)
- _balances[recipient] = _balances[recipient].add(amount) (#505)
Reentrancy in KIKTOK._transfer(address,address,uint256) (#432-497):
External calls:
- addNextAdd(sender,recipient) (#437)
- relateContract.addRetation(sender,recipient) (#542)
- relateContract._limitSwap() (#476)
State variables written after the call(s):
- _balances[sender] = senderBalance_scope_0.sub(amount) (#487)
- noBurn = _burn(share_scope_1.mul(5)) (#490)
- _balances[deadAddress] = _balances[deadAddress].add(burnAmount) (#402)
- _balances[deadAddress] = _balances[deadAddress].add(amount) (#407)
- _balances[recipient] = _balances[recipient].add(share_scope_1.mul(95).add(noBurn)) (#491-493)
- noBurn = _burn(share_scope_1.mul(5)) (#490)
- _totalSupply = _totalSupply.sub(burnAmount) (#401)
- _totalSupply = _totalSupply.sub(amount) (#406)
Reentrancy in KIKTOK.constructor() (#311-324):
External calls:
- _pair = IPancakeFactory(router.factory()).createPair(address(this),router.WETH()) (#316-319)
State variables written after the call(s):
- isExcludedFromFee[owner()] = true (#320)
- isExcludedFromFee[_router] = true (#321)
- isExcludedFromFee[marketAddress] = true (#322)
- isExcludedFromFee[address(this)] = true (#323)
Reentrancy in KIKTOK.transferFrom(address,address,uint256) (#372-387):
External calls:
- _transfer(sender,recipient,amount) (#377)
- relateContract.addRetation(sender,recipient) (#542)
- relateContract._limitSwap() (#465)
- relateContract._limitSwap() (#476)
State variables written after the call(s):
- _approve(sender,_msgSender(),currentAllowance - amount) (#384)
- _allowances[owner][spender] = amount (#418)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in KIKTOK._transfer(address,address,uint256) (#432-497):
External calls:
- addNextAdd(sender,recipient) (#437)
- relateContract.addRetation(sender,recipient) (#542)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#506)
- _basicTransfer(sender,recipient,amount) (#439)
- Transfer(address(0),deadAddress,burnAmount) (#403)
- surplus = promotionRewards(tx.origin,share) (#458)
- Transfer(sender,pre,a) (#568)
- surplus = promotionRewards(tx.origin,share) (#458)
- Transfer(address(0),deadAddress,amount) (#408)
- surplus = promotionRewards(tx.origin,share) (#458)
- Transfer(sender,pre,a) (#577)
- surplus = promotionRewards(tx.origin,share) (#458)
- Transfer(sender,recipient,share.mul(88).add(surplus)) (#462)
- Transfer(sender,pre,a) (#586)
- surplus = promotionRewards(tx.origin,share) (#458)
- Transfer(sender,marketAddress,marketBonusAmount) (#593)
- surplus = promotionRewards(tx.origin,share) (#458)
Reentrancy in KIKTOK._transfer(address,address,uint256) (#432-497):
External calls:
- addNextAdd(sender,recipient) (#437)
- relateContract.addRetation(sender,recipient) (#542)
- relateContract._limitSwap() (#465)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#506)
- _basicTransfer(sender,recipient,amount) (#473)
Reentrancy in KIKTOK._transfer(address,address,uint256) (#432-497):
External calls:
- addNextAdd(sender,recipient) (#437)
- relateContract.addRetation(sender,recipient) (#542)
- relateContract._limitSwap() (#476)
Event emitted after the call(s):
- Transfer(address(0),deadAddress,burnAmount) (#403)
- noBurn = _burn(share_scope_1.mul(5)) (#490)
- Transfer(address(0),deadAddress,amount) (#408)
- noBurn = _burn(share_scope_1.mul(5)) (#490)
- Transfer(sender,recipient,share_scope_1.mul(95).add(noBurn)) (#494)
Reentrancy in KIKTOK.transferFrom(address,address,uint256) (#372-387):
External calls:
- _transfer(sender,recipient,amount) (#377)
- relateContract.addRetation(sender,recipient) (#542)
- relateContract._limitSwap() (#465)
- relateContract._limitSwap() (#476)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#419)
- _approve(sender,_msgSender(),currentAllowance - amount) (#384)
Apply the check-effects-interactions pattern.
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
Variable IPancakeRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#130) is too similar to IPancakeRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#131)
Prevent variables from having similar names.
Additional information: link
KIKTOK.slitherConstructorVariables() (#276-621) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#290)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
KIKTOK.created (#284) is never used in KIKTOK (#276-621)
Remove unused state variables.
Additional information: link
KIKTOK._router (#293) should be constant
KIKTOK.created (#284) should be constant
KIKTOK.finalSupply (#303) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
waiveOwnership() should be declared external:
- Ownable.waiveOwnership() (#261-264)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#266-273)
name() should be declared external:
- KIKTOK.name() (#326-328)
symbol() should be declared external:
- KIKTOK.symbol() (#330-332)
decimals() should be declared external:
- KIKTOK.decimals() (#334-336)
totalSupply() should be declared external:
- KIKTOK.totalSupply() (#338-340)
transfer(address,uint256) should be declared external:
- KIKTOK.transfer(address,uint256) (#342-350)
allowance(address,address) should be declared external:
- KIKTOK.allowance(address,address) (#352-360)
approve(address,uint256) should be declared external:
- KIKTOK.approve(address,uint256) (#362-370)
transferFrom(address,address,uint256) should be declared external:
- KIKTOK.transferFrom(address,address,uint256) (#372-387)
balanceOf(address) should be declared external:
- KIKTOK.balanceOf(address) (#422-430)
setIsExcludedFromFee(address,bool) should be declared external:
- KIKTOK.setIsExcludedFromFee(address,bool) (#510-515)
setMarketAddress(address) should be declared external:
- KIKTOK.setMarketAddress(address) (#517-519)
setTxlimitByBnb(uint256) should be declared external:
- KIKTOK.setTxlimitByBnb(uint256) (#521-523)
setRelateContract(KIKDAO) should be declared external:
- KIKTOK.setRelateContract(KIKDAO) (#525-527)
setOpenBlock(uint256) should be declared external:
- KIKTOK.setOpenBlock(uint256) (#529-531)
setLimitBlock(uint256) should be declared external:
- KIKTOK.setLimitBlock(uint256) (#533-535)
setPair(address) should be declared external:
- KIKTOK.setPair(address) (#537-539)
isContract(address) should be declared external:
- KIKTOK.isContract(address) (#545-554)
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