KSD._tFeeTotal (#74) is never initialized. It is used in:
- KSD.totalFees() (#180-182)
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
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
KSD._tokenTransferBuy(address,address,uint256,bool) (#306-330) performs a multiplication on the result of a division:
-projectFee = tAmount.div(1000).mul(48) (#318)
KSD._tokenTransferBuy(address,address,uint256,bool) (#306-330) performs a multiplication on the result of a division:
-_rOwned[recipient] = _rOwned[recipient].add(rAmount.div(100).mul(recipientRate)) (#326-328)
KSD._tokenTransferBuy(address,address,uint256,bool) (#306-330) performs a multiplication on the result of a division:
-Transfer(sender,recipient,tAmount.div(100).mul(recipientRate)) (#329)
KSD._tokenTransferBuy(address,address,uint256,bool) (#306-330) performs a multiplication on the result of a division:
-destroyFee = tAmount.div(1000).mul(12) (#319)
KSD._tokenTransferSell(address,address,uint256,bool) (#331-355) performs a multiplication on the result of a division:
-projectFee = tAmount.div(1000).mul(72) (#343)
KSD._tokenTransferSell(address,address,uint256,bool) (#331-355) performs a multiplication on the result of a division:
-_rOwned[recipient] = _rOwned[recipient].add(rAmount.div(100).mul(recipientRate)) (#351-353)
KSD._tokenTransferSell(address,address,uint256,bool) (#331-355) performs a multiplication on the result of a division:
-destroyFee = tAmount.div(1000).mul(18) (#344)
KSD._tokenTransferSell(address,address,uint256,bool) (#331-355) performs a multiplication on the result of a division:
-Transfer(sender,recipient,tAmount.div(100).mul(recipientRate)) (#354)
KSD._tokenTransfer(address,address,uint256,bool) (#356-379) performs a multiplication on the result of a division:
-projectFee = tAmount.div(1000).mul(24) (#368)
KSD._tokenTransfer(address,address,uint256,bool) (#356-379) performs a multiplication on the result of a division:
-_rOwned[recipient] = _rOwned[recipient].add(rAmount.div(100).mul(recipientRate)) (#375-377)
KSD._tokenTransfer(address,address,uint256,bool) (#356-379) performs a multiplication on the result of a division:
-Transfer(sender,recipient,tAmount.div(100).mul(recipientRate)) (#378)
KSD._tokenTransfer(address,address,uint256,bool) (#356-379) performs a multiplication on the result of a division:
-destroyFee = tAmount.div(1000).mul(6) (#369)
Consider ordering multiplication before division.
Additional information: link
KSD._tokenTransfer(address,address,uint256,bool).rate (#366) is a local variable never initialized
KSD._tokenTransferBuy(address,address,uint256,bool).rate (#316) is a local variable never initialized
KSD._tokenTransferSell(address,address,uint256,bool).rate (#341) 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
Ownable.changeOwner(address) (#24-26) should emit an event for:
- _owner = newOwner (#25)
Emit an event for critical parameter changes.
Additional information: link
KSD.set_tradingEnabledTime(uint256) (#198-200) should emit an event for:
- _tradingEnabledTime = tradingEnabledTime (#199)
Emit an event for critical parameter changes.
Additional information: link
Ownable.changeOwner(address).newOwner (#24) lacks a zero-check on :
- _owner = newOwner (#25)
KSD.transferFrom(address,address,uint256).recipient (#136) lacks a zero-check on :
- uniswapV2Pair = recipient (#140)
KSD.changeRouter(address).router (#400) lacks a zero-check on :
- uniswapV2Pair = router (#401)
Check that the address is not zero.
Additional information: link
KSD._transfer(address,address,uint256) (#254-305) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp <= _tradingEnabledTime (#269)
- block.timestamp <= _tradingEnabledTime (#279)
Avoid relying on block.timestamp.
Additional information: link
KSD.getWhiteListLength() (#219-221) is never used and should be removed
KSD.transferWhiteUser() (#390-399) is never used and should be removed
Remove unused functions.
Additional information: link
Variable Ownable._owner (#19) is not in mixedCase
Function KSD.set_tradingEnabledTime(uint256) (#198-200) is not in mixedCase
Variable KSD._isBlacklisted (#68) is not in mixedCase
Variable KSD._tTotalFeeMax (#72) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
KSD.constructor(address) (#84-94) uses literals with too many digits:
- _tTotal = 2100000 * 10 ** _decimals (#88)
KSD.slitherConstructorVariables() (#61-404) uses literals with too many digits:
- _destroyAddress = address(0x000000000000000000000000000000000000dEaD) (#78)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
KSD._tOwned (#64) is never used in KSD (#61-404)
Remove unused state variables.
Additional information: link
KSD._destroyAddress (#78) should be constant
KSD._fundAddress (#79) should be constant
KSD._projectAddress (#80) should be constant
KSD._tFeeTotal (#74) should be constant
KSD._tTotalFeeMax (#72) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
changeOwner(address) should be declared external:
- Ownable.changeOwner(address) (#24-26)
name() should be declared external:
- KSD.name() (#95-97)
symbol() should be declared external:
- KSD.symbol() (#98-100)
decimals() should be declared external:
- KSD.decimals() (#101-103)
totalSupply() should be declared external:
- KSD.totalSupply() (#104-106)
transfer(address,uint256) should be declared external:
- KSD.transfer(address,uint256) (#110-117)
allowance(address,address) should be declared external:
- KSD.allowance(address,address) (#118-125)
approve(address,uint256) should be declared external:
- KSD.approve(address,uint256) (#126-133)
transferFrom(address,address,uint256) should be declared external:
- KSD.transferFrom(address,address,uint256) (#134-152)
increaseAllowance(address,uint256) should be declared external:
- KSD.increaseAllowance(address,uint256) (#153-164)
decreaseAllowance(address,uint256) should be declared external:
- KSD.decreaseAllowance(address,uint256) (#165-179)
totalFees() should be declared external:
- KSD.totalFees() (#180-182)
set_tradingEnabledTime(uint256) should be declared external:
- KSD.set_tradingEnabledTime(uint256) (#198-200)
setBlacklisted(address) should be declared external:
- KSD.setBlacklisted(address) (#201-203)
excludeFromFee(address) should be declared external:
- KSD.excludeFromFee(address) (#204-211)
includeInFee(address) should be declared external:
- KSD.includeInFee(address) (#212-217)
claimTokens() should be declared external:
- KSD.claimTokens() (#234-236)
isExcludedFromFee(address) should be declared external:
- KSD.isExcludedFromFee(address) (#237-239)
getInviter(address) should be declared external:
- KSD.getInviter(address) (#240-242)
changeRouter(address) should be declared external:
- KSD.changeRouter(address) (#400-402)
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