Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
SinceredogeKing.sendETHToFee(uint256) (#308-311) sends eth to arbitrary user
Dangerous calls:
- _developmentAddress.transfer(amount.div(2)) (#309)
- _marketingAddress.transfer(amount.div(2)) (#310)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in SinceredogeKing._transfer(address,address,uint256) (#255-292):
External calls:
- swapTokensForEth(contractTokenBalance) (#267)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#299-305)
External calls sending eth:
- sendETHToFee(address(this).balance) (#270)
- _developmentAddress.transfer(amount.div(2)) (#309)
- _marketingAddress.transfer(amount.div(2)) (#310)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#291)
- _rOwned[address(this)] = _rOwned[address(this)].add(rTeam) (#349)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#339)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#340)
- _tokenTransfer(from,to,amount) (#291)
- _rTotal = _rTotal.sub(rFee) (#353)
Apply the check-effects-interactions pattern.
Additional information: link
SinceredogeKing.rescueForeignTokens(address,address,uint256) (#318-321) ignores return value by Token(_tokenAddr).transfer(_to,_amount) (#320)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Combination 1: Reentrancy vulnerabilities + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 2: Unchecked transfer + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 3: Reentrancy vulnerabilities + Unchecked transfer vulnerability. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.
SinceredogeKing.allowance(address,address).owner (#227) shadows:
- Ownable.owner() (#119-121) (function)
SinceredogeKing._approve(address,address,uint256).owner (#248) shadows:
- Ownable.owner() (#119-121) (function)
Rename the local variables that shadow another component.
Additional information: link
Ownable.transferOwnership(address).newOwner (#134) lacks a zero-check on :
- _owner = newOwner (#136)
SinceredogeKing.setNewDevAddress(address).dev (#324) lacks a zero-check on :
- _developmentAddress = dev (#326)
SinceredogeKing.setNewMarketingAddress(address).markt (#331) lacks a zero-check on :
- _marketingAddress = markt (#333)
Check that the address is not zero.
Additional information: link
SinceredogeKing.constructor() (#181-195) uses literals with too many digits:
- Transfer(address(0x0000000000000000000000000000000000000000),_msgSender(),_tTotal) (#194)
SinceredogeKing.slitherConstructorConstantVariables() (#141-426) uses literals with too many digits:
- _tTotal = 100000000000 * 10 ** 6 * 10 ** 9 (#150)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Ownable._previousOwner (#111) is never used in SinceredogeKing (#141-426)
SinceredogeKing._tOwned (#145) is never used in SinceredogeKing (#141-426)
Remove unused state variables.
Additional information: link
Ownable._previousOwner (#111) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
Reentrancy in SinceredogeKing._transfer(address,address,uint256) (#255-292):
External calls:
- swapTokensForEth(contractTokenBalance) (#267)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#299-305)
External calls sending eth:
- sendETHToFee(address(this).balance) (#270)
- _developmentAddress.transfer(amount.div(2)) (#309)
- _marketingAddress.transfer(amount.div(2)) (#310)
State variables written after the call(s):
- _redisFee = _redisFeeOnBuy (#275)
- _redisFee = _redisFeeOnSell (#280)
- _redisFee = 0 (#285)
- _tokenTransfer(from,to,amount) (#291)
- _tFeeTotal = _tFeeTotal.add(tFee) (#354)
- _taxFee = _taxFeeOnBuy (#276)
- _taxFee = _taxFeeOnSell (#281)
- _taxFee = 0 (#286)
Reentrancy in SinceredogeKing.constructor() (#181-195):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#186-187)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#189)
- _isExcludedFromFee[address(this)] = true (#190)
- _isExcludedFromFee[_developmentAddress] = true (#191)
- _isExcludedFromFee[_marketingAddress] = true (#192)
Reentrancy in SinceredogeKing.transferFrom(address,address,uint256) (#236-240):
External calls:
- _transfer(sender,recipient,amount) (#237)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#299-305)
External calls sending eth:
- _transfer(sender,recipient,amount) (#237)
- _developmentAddress.transfer(amount.div(2)) (#309)
- _marketingAddress.transfer(amount.div(2)) (#310)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#238)
- _allowances[owner][spender] = amount (#251)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in SinceredogeKing._transfer(address,address,uint256) (#255-292):
External calls:
- swapTokensForEth(contractTokenBalance) (#267)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#299-305)
External calls sending eth:
- sendETHToFee(address(this).balance) (#270)
- _developmentAddress.transfer(amount.div(2)) (#309)
- _marketingAddress.transfer(amount.div(2)) (#310)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#343)
- _tokenTransfer(from,to,amount) (#291)
Reentrancy in SinceredogeKing.constructor() (#181-195):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#186-187)
Event emitted after the call(s):
- Transfer(address(0x0000000000000000000000000000000000000000),_msgSender(),_tTotal) (#194)
Reentrancy in SinceredogeKing.transferFrom(address,address,uint256) (#236-240):
External calls:
- _transfer(sender,recipient,amount) (#237)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#299-305)
External calls sending eth:
- _transfer(sender,recipient,amount) (#237)
- _developmentAddress.transfer(amount.div(2)) (#309)
- _marketingAddress.transfer(amount.div(2)) (#310)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#252)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#238)
Apply the check-effects-interactions pattern.
Additional information: link
Function IUniswapV2Router02.WETH() (#52) is not in mixedCase
Event SinceredogeKingtokensRescued(address,address,uint256) (#317) is not in CapWords
Event SinceredogeKingdevAddressUpdated(address,address) (#323) is not in CapWords
Event SinceredogeKingmarketingAddressUpdated(address,address) (#330) is not in CapWords
Parameter SinceredogeKing.rescueForeignTokens(address,address,uint256)._tokenAddr (#318) is not in mixedCase
Parameter SinceredogeKing.rescueForeignTokens(address,address,uint256)._to (#318) is not in mixedCase
Parameter SinceredogeKing.rescueForeignTokens(address,address,uint256)._amount (#318) is not in mixedCase
Parameter SinceredogeKing.toggleSwap(bool)._swapEnabled (#416) is not in mixedCase
Constant SinceredogeKing._tTotal (#150) is not in UPPER_CASE_WITH_UNDERSCORES
Constant SinceredogeKing._name (#163) is not in UPPER_CASE_WITH_UNDERSCORES
Constant SinceredogeKing._symbol (#164) is not in UPPER_CASE_WITH_UNDERSCORES
Constant SinceredogeKing._decimals (#165) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Reentrancy in SinceredogeKing._transfer(address,address,uint256) (#255-292):
External calls:
- sendETHToFee(address(this).balance) (#270)
- _developmentAddress.transfer(amount.div(2)) (#309)
- _marketingAddress.transfer(amount.div(2)) (#310)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#291)
- _rOwned[address(this)] = _rOwned[address(this)].add(rTeam) (#349)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#339)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#340)
- _tokenTransfer(from,to,amount) (#291)
- _rTotal = _rTotal.sub(rFee) (#353)
- _redisFee = _redisFeeOnBuy (#275)
- _redisFee = _redisFeeOnSell (#280)
- _redisFee = 0 (#285)
- _tokenTransfer(from,to,amount) (#291)
- _tFeeTotal = _tFeeTotal.add(tFee) (#354)
- _taxFee = _taxFeeOnBuy (#276)
- _taxFee = _taxFeeOnSell (#281)
- _taxFee = 0 (#286)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#343)
- _tokenTransfer(from,to,amount) (#291)
Reentrancy in SinceredogeKing.transferFrom(address,address,uint256) (#236-240):
External calls:
- _transfer(sender,recipient,amount) (#237)
- _developmentAddress.transfer(amount.div(2)) (#309)
- _marketingAddress.transfer(amount.div(2)) (#310)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#238)
- _allowances[owner][spender] = amount (#251)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#252)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#238)
Apply the check-effects-interactions pattern.
Additional information: link
Variable SinceredogeKing._getValues(uint256).rTransferAmount (#362) is too similar to SinceredogeKing._getTValues(uint256,uint256,uint256).tTransferAmount (#369)
Variable SinceredogeKing._transferStandard(address,address,uint256).rTransferAmount (#338) is too similar to SinceredogeKing._transferStandard(address,address,uint256).tTransferAmount (#338)
Variable SinceredogeKing._transferStandard(address,address,uint256).rTransferAmount (#338) is too similar to SinceredogeKing._getTValues(uint256,uint256,uint256).tTransferAmount (#369)
Variable SinceredogeKing._transferStandard(address,address,uint256).rTransferAmount (#338) is too similar to SinceredogeKing._getValues(uint256).tTransferAmount (#360)
Variable SinceredogeKing._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#377) is too similar to SinceredogeKing._getTValues(uint256,uint256,uint256).tTransferAmount (#369)
Variable SinceredogeKing._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#377) is too similar to SinceredogeKing._getValues(uint256).tTransferAmount (#360)
Variable SinceredogeKing._getValues(uint256).rTransferAmount (#362) is too similar to SinceredogeKing._getValues(uint256).tTransferAmount (#360)
Variable SinceredogeKing._getValues(uint256).rTransferAmount (#362) is too similar to SinceredogeKing._transferStandard(address,address,uint256).tTransferAmount (#338)
Variable SinceredogeKing._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#377) is too similar to SinceredogeKing._transferStandard(address,address,uint256).tTransferAmount (#338)
Prevent variables from having similar names.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#128-131)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#134-137)
name() should be declared external:
- SinceredogeKing.name() (#202-204)
symbol() should be declared external:
- SinceredogeKing.symbol() (#206-208)
decimals() should be declared external:
- SinceredogeKing.decimals() (#210-212)
totalSupply() should be declared external:
- SinceredogeKing.totalSupply() (#214-216)
transfer(address,uint256) should be declared external:
- SinceredogeKing.transfer(address,uint256) (#222-225)
allowance(address,address) should be declared external:
- SinceredogeKing.allowance(address,address) (#227-229)
approve(address,uint256) should be declared external:
- SinceredogeKing.approve(address,uint256) (#231-234)
transferFrom(address,address,uint256) should be declared external:
- SinceredogeKing.transferFrom(address,address,uint256) (#236-240)
rescueForeignTokens(address,address,uint256) should be declared external:
- SinceredogeKing.rescueForeignTokens(address,address,uint256) (#318-321)
setNewDevAddress(address) should be declared external:
- SinceredogeKing.setNewDevAddress(address) (#324-328)
setNewMarketingAddress(address) should be declared external:
- SinceredogeKing.setNewMarketingAddress(address) (#331-335)
setFee(uint256,uint256,uint256,uint256) should be declared external:
- SinceredogeKing.setFee(uint256,uint256,uint256,uint256) (#405-414)
toggleSwap(bool) should be declared external:
- SinceredogeKing.toggleSwap(bool) (#416-418)
excludeMultipleAccountsFromFees(address[],bool) should be declared external:
- SinceredogeKing.excludeMultipleAccountsFromFees(address[],bool) (#420-424)
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