Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
SDVToken.defaultTransfer(address,address,uint256) (contracts/SDVToken.sol#436-447) contains a tautology or contradiction:
- require(bool,string)(amount >= 0,ERC20: transfer amount must larger than 0) (contracts/SDVToken.sol#440)
Fix the incorrect comparison by changing the value type or the comparison.
Additional information: link
SDVToken.slitherConstructorVariables() (contracts/SDVToken.sol#199-531) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (contracts/SDVToken.sol#221)
SDVToken.slitherConstructorVariables() (contracts/SDVToken.sol#199-531) uses literals with too many digits:
- airdropToken = 1500000 * 10 ** 18 (contracts/SDVToken.sol#236)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SDVToken.buyPresale() (contracts/SDVToken.sol#344-354) performs a multiplication on the result of a division:
-_numberOfTokens = msg.value.div(presalePrice).mul(10 ** 18) (contracts/SDVToken.sol#345)
Consider ordering multiplication before division.
Additional information: link
SDVToken.addLiquidity(uint256,uint256) (contracts/SDVToken.sol#471-484) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SDVToken.sol#476-483)
Ensure that all the return values of the function calls are used.
Additional information: link
SDVToken.getPresaleLockAmount(address)._owner (contracts/SDVToken.sol#263) shadows:
- Ownable._owner (@openzeppelin/contracts/access/Ownable.sol#21) (state variable)
Rename the local variables that shadow another component.
Additional information: link
SDVToken.setPresalePrice(uint256) (contracts/SDVToken.sol#271-273) should emit an event for:
- presalePrice = _price (contracts/SDVToken.sol#272)
SDVToken.setMaxTxAmount(uint256) (contracts/SDVToken.sol#279-281) should emit an event for:
- maxTxAmount = _maxTxAmount (contracts/SDVToken.sol#280)
SDVToken.setTaxFee(uint256) (contracts/SDVToken.sol#295-297) should emit an event for:
- taxFee = _fee (contracts/SDVToken.sol#296)
SDVToken.setLiquidityFee(uint256) (contracts/SDVToken.sol#298-300) should emit an event for:
- liquidityFee = _fee (contracts/SDVToken.sol#299)
SDVToken.setBuyTaxFee(uint256) (contracts/SDVToken.sol#301-303) should emit an event for:
- buyTaxFee = _fee (contracts/SDVToken.sol#302)
SDVToken.setSellTaxFee(uint256) (contracts/SDVToken.sol#304-306) should emit an event for:
- sellTaxFee = _fee (contracts/SDVToken.sol#305)
SDVToken.setMarketingDivisor(uint256) (contracts/SDVToken.sol#307-309) should emit an event for:
- marketingDivisor = _fee (contracts/SDVToken.sol#308)
SDVToken.setBurnFee(uint256) (contracts/SDVToken.sol#310-312) should emit an event for:
- burnFee = _fee (contracts/SDVToken.sol#311)
SDVToken.setAirdropEth(uint256) (contracts/SDVToken.sol#322-324) should emit an event for:
- airdropEth = _amount (contracts/SDVToken.sol#323)
SDVToken.setAirdropToken(uint256) (contracts/SDVToken.sol#328-330) should emit an event for:
- airdropToken = _amount (contracts/SDVToken.sol#329)
SDVToken.setReferETH(uint256) (contracts/SDVToken.sol#331-333) should emit an event for:
- _referEth = _amount (contracts/SDVToken.sol#332)
SDVToken.setReferToken(uint256) (contracts/SDVToken.sol#334-336) should emit an event for:
- _referToken = _amount (contracts/SDVToken.sol#335)
Emit an event for critical parameter changes.
Additional information: link
SDVToken.setMaketingAddress(address)._address (contracts/SDVToken.sol#316) lacks a zero-check on :
- maketingAddress = _address (contracts/SDVToken.sol#317)
Check that the address is not zero.
Additional information: link
Reentrancy in SDVToken.constructor() (contracts/SDVToken.sol#248-261):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (contracts/SDVToken.sol#250-251)
State variables written after the call(s):
- _mint(_msgSender(),100 * 10 ** 9 * 10 ** 18) (contracts/SDVToken.sol#253)
- _balances[account] += amount (contracts/ERC20.sol#263)
- _mint(_msgSender(),100 * 10 ** 9 * 10 ** 18) (contracts/SDVToken.sol#253)
- _totalSupply += amount (contracts/ERC20.sol#262)
- _totalSupply = 2100 * 10 ** 9 * 10 ** 18 (contracts/SDVToken.sol#259)
- isExcludedFromFee[_msgSender()] = true (contracts/SDVToken.sol#254)
- isExcludedFromFee[address(this)] = true (contracts/SDVToken.sol#255)
- isExcludedReward[address(this)] = true (contracts/SDVToken.sol#256)
- isExcludedReward[_msgSender()] = true (contracts/SDVToken.sol#257)
- maketingAddress = _msgSender() (contracts/SDVToken.sol#258)
- uniswapV2Router = _uniswapV2Router (contracts/SDVToken.sol#252)
Reentrancy in SDVToken.processLiquidityFee() (contracts/SDVToken.sol#461-469):
External calls:
- swapTokensForEth(amount) (contracts/SDVToken.sol#465)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SDVToken.sol#494-500)
- addLiquidity(amount,balanceReceived) (contracts/SDVToken.sol#468)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SDVToken.sol#476-483)
External calls sending eth:
- addLiquidity(amount,balanceReceived) (contracts/SDVToken.sol#468)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SDVToken.sol#476-483)
State variables written after the call(s):
- addLiquidity(amount,balanceReceived) (contracts/SDVToken.sol#468)
- _allowances[owner][spender] = amount (contracts/ERC20.sol#318)
Apply the check-effects-interactions pattern.
Additional information: link
SDVToken.refer (contracts/SDVToken.sol#241) is never used in SDVToken (contracts/SDVToken.sol#199-531)
Remove unused state variables.
Additional information: link
Reentrancy in SDVToken.constructor() (contracts/SDVToken.sol#248-261):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (contracts/SDVToken.sol#250-251)
Event emitted after the call(s):
- Transfer(address(0),account,amount) (contracts/ERC20.sol#264)
- _mint(_msgSender(),100 * 10 ** 9 * 10 ** 18) (contracts/SDVToken.sol#253)
- Transfer(address(0),_msgSender(),100 * 10 ** 9 * 10 ** 18) (contracts/SDVToken.sol#260)
Reentrancy in SDVToken.processLiquidityFee() (contracts/SDVToken.sol#461-469):
External calls:
- swapTokensForEth(amount) (contracts/SDVToken.sol#465)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SDVToken.sol#494-500)
- addLiquidity(amount,balanceReceived) (contracts/SDVToken.sol#468)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SDVToken.sol#476-483)
External calls sending eth:
- addLiquidity(amount,balanceReceived) (contracts/SDVToken.sol#468)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SDVToken.sol#476-483)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/ERC20.sol#319)
- addLiquidity(amount,balanceReceived) (contracts/SDVToken.sol#468)
Reentrancy in SDVToken.swapTokensForEth(uint256) (contracts/SDVToken.sol#486-503):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SDVToken.sol#494-500)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (contracts/SDVToken.sol#502)
Apply the check-effects-interactions pattern.
Additional information: link
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#201-221) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#213-216)
Do not use evm assembly.
Additional information: link
SDVToken._transfer(address,address,uint256) (contracts/SDVToken.sol#370-434) compares to a boolean constant:
-isExcludedReward[from] == false && isHolder[from] == true && balanceOf(from) == 0 (contracts/SDVToken.sol#426)
SDVToken._transfer(address,address,uint256) (contracts/SDVToken.sol#370-434) compares to a boolean constant:
-isExcludedReward[to] == false && isHolder[to] == false (contracts/SDVToken.sol#429)
SDVToken._transfer(address,address,uint256) (contracts/SDVToken.sol#370-434) compares to a boolean constant:
-isExcludedReward[from] == false && isHolder[from] == true && balanceOf(from) == 0 (contracts/SDVToken.sol#420)
SDVToken._transfer(address,address,uint256) (contracts/SDVToken.sol#370-434) compares to a boolean constant:
-isExcludedReward[to] == false && isHolder[to] == false (contracts/SDVToken.sol#396)
SDVToken.airdrop(address) (contracts/SDVToken.sol#517-530) compares to a boolean constant:
-require(bool,string)(isAirdrop && msg.value == airdropEth && isClaimed[_msgSender()] == false,Transaction recovery) (contracts/SDVToken.sol#518)
Remove the equality to the boolean constant.
Additional information: link
Different versions of Solidity is used:
- Version used: ['^0.8.0', '^0.8.1']
- ^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
- ^0.8.1 (@openzeppelin/contracts/utils/Address.sol#4)
- ^0.8.0 (@openzeppelin/contracts/utils/Context.sol#4)
- ^0.8.0 (@openzeppelin/contracts/utils/math/SafeMath.sol#4)
- ^0.8.0 (contracts/ERC20.sol#4)
- ^0.8.0 (contracts/SDVToken.sol#2)
Use one Solidity version.
Additional information: link
Address.functionCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#85-87) is never used and should be removed
Address.functionCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#95-101) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts/utils/Address.sol#114-120) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#128-139) is never used and should be removed
Address.functionDelegateCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#174-176) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#184-193) is never used and should be removed
Address.functionStaticCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#147-149) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#157-166) is never used and should be removed
Address.isContract(address) (@openzeppelin/contracts/utils/Address.sol#36-42) is never used and should be removed
Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#60-65) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#201-221) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#21-23) is never used and should be removed
ERC20._burn(address,uint256) (contracts/ERC20.sol#280-295) is never used and should be removed
ERC20._transfer(address,address,uint256) (contracts/ERC20.sol#226-246) is never used and should be removed
SDVToken.getTokenToETHPrice(uint256) (contracts/SDVToken.sol#364-368) is never used and should be removed
SafeMath.add(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#93-95) is never used and should be removed
SafeMath.div(uint256,uint256,string) (@openzeppelin/contracts/utils/math/SafeMath.sol#191-200) is never used and should be removed
SafeMath.mod(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#151-153) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (@openzeppelin/contracts/utils/math/SafeMath.sol#217-226) is never used and should be removed
SafeMath.sub(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#107-109) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (@openzeppelin/contracts/utils/math/SafeMath.sol#168-177) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#22-28) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#64-69) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#76-81) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#47-57) is never used and should be removed
SafeMath.trySub(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#35-40) is never used and should be removed
Remove unused functions.
Additional information: link
SDVToken.buyTaxFee (contracts/SDVToken.sol#216) is set pre-construction with a non-constant function or state variable:
- taxFee
SDVToken.sellTaxFee (contracts/SDVToken.sol#217) is set pre-construction with a non-constant function or state variable:
- taxFee
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 (@openzeppelin/contracts/access/Ownable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4) allows old versions
Pragma version^0.8.1 (@openzeppelin/contracts/utils/Address.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Context.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/math/SafeMath.sol#4) allows old versions
Pragma version^0.8.0 (contracts/ERC20.sol#4) allows old versions
Pragma version^0.8.0 (contracts/SDVToken.sol#2) allows old versions
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 Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#60-65):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts/utils/Address.sol#63)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts/utils/Address.sol#137)
Low level call in Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#157-166):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts/utils/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#184-193):
- (success,returndata) = target.delegatecall(data) (@openzeppelin/contracts/utils/Address.sol#191)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable ERC20._balances (contracts/ERC20.sol#36) is not in mixedCase
Variable ERC20._totalSupply (contracts/ERC20.sol#40) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (contracts/SDVToken.sol#36) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (contracts/SDVToken.sol#37) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (contracts/SDVToken.sol#46) is not in mixedCase
Function IUniswapV2Router01.WETH() (contracts/SDVToken.sol#66) is not in mixedCase
Parameter SDVToken.getPresaleLockAmount(address)._owner (contracts/SDVToken.sol#263) is not in mixedCase
Function SDVToken.Ox8b7a79(bool) (contracts/SDVToken.sol#267-269) is not in mixedCase
Parameter SDVToken.Ox8b7a79(bool)._isLock (contracts/SDVToken.sol#267) is not in mixedCase
Parameter SDVToken.setPresalePrice(uint256)._price (contracts/SDVToken.sol#271) is not in mixedCase
Parameter SDVToken.setPercentRewardBNB(uint256)._amount (contracts/SDVToken.sol#275) is not in mixedCase
Parameter SDVToken.setMaxTxAmount(uint256)._maxTxAmount (contracts/SDVToken.sol#279) is not in mixedCase
Parameter SDVToken.withdrawBNB(uint256)._amount (contracts/SDVToken.sol#287) is not in mixedCase
Parameter SDVToken.withdrawToken(uint256)._amount (contracts/SDVToken.sol#290) is not in mixedCase
Parameter SDVToken.setTaxFee(uint256)._fee (contracts/SDVToken.sol#295) is not in mixedCase
Parameter SDVToken.setLiquidityFee(uint256)._fee (contracts/SDVToken.sol#298) is not in mixedCase
Parameter SDVToken.setBuyTaxFee(uint256)._fee (contracts/SDVToken.sol#301) is not in mixedCase
Parameter SDVToken.setSellTaxFee(uint256)._fee (contracts/SDVToken.sol#304) is not in mixedCase
Parameter SDVToken.setMarketingDivisor(uint256)._fee (contracts/SDVToken.sol#307) is not in mixedCase
Parameter SDVToken.setBurnFee(uint256)._fee (contracts/SDVToken.sol#310) is not in mixedCase
Parameter SDVToken.setExcludeFee(address,bool)._address (contracts/SDVToken.sol#313) is not in mixedCase
Parameter SDVToken.setExcludeFee(address,bool)._state (contracts/SDVToken.sol#313) is not in mixedCase
Parameter SDVToken.setMaketingAddress(address)._address (contracts/SDVToken.sol#316) is not in mixedCase
Parameter SDVToken.setExcludeReward(address,bool)._address (contracts/SDVToken.sol#319) is not in mixedCase
Parameter SDVToken.setExcludeReward(address,bool)._state (contracts/SDVToken.sol#319) is not in mixedCase
Parameter SDVToken.setAirdropEth(uint256)._amount (contracts/SDVToken.sol#322) is not in mixedCase
Parameter SDVToken.setIsAirdrop(bool)._isAirdrop (contracts/SDVToken.sol#325) is not in mixedCase
Parameter SDVToken.setAirdropToken(uint256)._amount (contracts/SDVToken.sol#328) is not in mixedCase
Parameter SDVToken.setReferETH(uint256)._amount (contracts/SDVToken.sol#331) is not in mixedCase
Parameter SDVToken.setReferToken(uint256)._amount (contracts/SDVToken.sol#334) is not in mixedCase
Parameter SDVToken.setIsAirdropBNBRefer(bool)._isAirdrop (contracts/SDVToken.sol#337) is not in mixedCase
Function SDVToken.Ox8b7a22(uint256) (contracts/SDVToken.sol#340-342) is not in mixedCase
Parameter SDVToken.Ox8b7a22(uint256)._amount (contracts/SDVToken.sol#340) is not in mixedCase
Parameter SDVToken.removeHolder(address)._address (contracts/SDVToken.sol#505) is not in mixedCase
Parameter SDVToken.airdrop(address)._refer (contracts/SDVToken.sol#517) is not in mixedCase
Variable SDVToken.Ox8b7a78 (contracts/SDVToken.sol#204) is not in mixedCase
Variable SDVToken._referEth (contracts/SDVToken.sol#237) is not in mixedCase
Variable SDVToken._referToken (contracts/SDVToken.sol#238) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/SDVToken.sol#71) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/SDVToken.sol#72)
Prevent variables from having similar names.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (@openzeppelin/contracts/access/Ownable.sol#54-56)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (@openzeppelin/contracts/access/Ownable.sol#62-65)
name() should be declared external:
- ERC20.name() (contracts/ERC20.sol#62-64)
symbol() should be declared external:
- ERC20.symbol() (contracts/ERC20.sol#70-72)
decimals() should be declared external:
- ERC20.decimals() (contracts/ERC20.sol#87-89)
totalSupply() should be declared external:
- ERC20.totalSupply() (contracts/ERC20.sol#94-96)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (contracts/ERC20.sol#113-117)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (contracts/ERC20.sol#136-140)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (contracts/ERC20.sol#158-167)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (contracts/ERC20.sol#181-185)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (contracts/ERC20.sol#201-210)
getPresaleLockAmount(address) should be declared external:
- SDVToken.getPresaleLockAmount(address) (contracts/SDVToken.sol#263-265)
buyPresale() should be declared external:
- SDVToken.buyPresale() (contracts/SDVToken.sol#344-354)
processLiquidityFee() should be declared external:
- SDVToken.processLiquidityFee() (contracts/SDVToken.sol#461-469)
airdrop(address) should be declared external:
- SDVToken.airdrop(address) (contracts/SDVToken.sol#517-530)
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