Reentrancy in NewShibaGrow._transfer(address,address,uint256) (#321-368):
External calls:
- swapAndSendToFee(sellTokens) (#360)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#399-405)
External calls sending eth:
- swapAndSendToFee(sellTokens) (#360)
- address(marketingWallet).transfer(ethToSend) (#375)
State variables written after the call(s):
- _tOwned[to] += transferAmount (#366)
- swapping = false (#361)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract ownership is not renounced (belongs to a wallet)
NewShibaGrow._transfer(address,address,uint256).takeFee (#338) 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
NewShibaGrow.allowance(address,address).owner (#246) shadows:
- Ownable.owner() (#105-107) (function)
NewShibaGrow._approve(address,address,uint256).owner (#293) shadows:
- Ownable.owner() (#105-107) (function)
Rename the local variables that shadow another component.
Additional information: link
NewShibaGrow.setMaxTxPercent(uint256) (#311-314) should emit an event for:
- _maxTxAmount = _tTotal.mul(newMaxTxPercent).div(10 ** 2) (#313)
NewShibaGrow.setMaxWalletPercent(uint256) (#316-319) should emit an event for:
- _maxWalletAmount = _tTotal.mul(newMaxWalletPercent).div(10 ** 2) (#318)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in NewShibaGrow.constructor() (#199-219):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#209)
State variables written after the call(s):
- _isExcludedFromFee[msg.sender] = true (#214)
- _isExcludedFromFee[address(this)] = true (#215)
- _isExcludedFromFee[marketingWallet] = true (#216)
- uniswapV2Pair = _uniswapV2Pair (#212)
- uniswapV2Router = _uniswapV2Router (#211)
Reentrancy in NewShibaGrow.swapAndLiquify() (#378-389):
External calls:
- newBalance = swapTokensForEth(half) (#382)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#399-405)
- addLiquidity(otherHalf,newBalance) (#386)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#412-419)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#386)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#412-419)
- address(marketingWallet).transfer(ethAmount - ethFromLiquidity) (#422)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#386)
- _allowances[owner][spender] = amount (#297)
Reentrancy in NewShibaGrow.transferFrom(address,address,uint256) (#255-259):
External calls:
- _transfer(sender,recipient,amount) (#256)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#399-405)
External calls sending eth:
- _transfer(sender,recipient,amount) (#256)
- address(marketingWallet).transfer(ethToSend) (#375)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (#257)
- _allowances[owner][spender] = amount (#297)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in NewShibaGrow._transfer(address,address,uint256) (#321-368):
External calls:
- swapAndSendToFee(sellTokens) (#360)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#399-405)
External calls sending eth:
- swapAndSendToFee(sellTokens) (#360)
- address(marketingWallet).transfer(ethToSend) (#375)
Event emitted after the call(s):
- Transfer(from,to,transferAmount) (#367)
Reentrancy in NewShibaGrow.constructor() (#199-219):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#209)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#218)
Reentrancy in NewShibaGrow.swapAndLiquify() (#378-389):
External calls:
- newBalance = swapTokensForEth(half) (#382)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#399-405)
- addLiquidity(otherHalf,newBalance) (#386)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#412-419)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#386)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#412-419)
- address(marketingWallet).transfer(ethAmount - ethFromLiquidity) (#422)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#298)
- addLiquidity(otherHalf,newBalance) (#386)
- SwapAndLiquify(half,newBalance,otherHalf) (#387)
Reentrancy in NewShibaGrow.transferFrom(address,address,uint256) (#255-259):
External calls:
- _transfer(sender,recipient,amount) (#256)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#399-405)
External calls sending eth:
- _transfer(sender,recipient,amount) (#256)
- address(marketingWallet).transfer(ethToSend) (#375)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#298)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (#257)
Apply the check-effects-interactions pattern.
Additional information: link
NewShibaGrow._transfer(address,address,uint256) (#321-368) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_lastBuy[to] + _buyCooldown < block.timestamp,Must wait til after coooldown to buy) (#331)
NewShibaGrow.addLiquidity(uint256,uint256) (#409-423) uses timestamp for comparisons
Dangerous comparisons:
- ethAmount - ethFromLiquidity > 0 (#421)
Avoid relying on block.timestamp.
Additional information: link
Context._msgData() (#88-91) is never used and should be removed
NewShibaGrow.addLiquidity(uint256,uint256) (#409-423) is never used and should be removed
NewShibaGrow.swapAndLiquify() (#378-389) is never used and should be removed
SafeMath.add(uint256,uint256) (#32-37) is never used and should be removed
SafeMath.mod(uint256,uint256) (#73-75) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#77-80) is never used and should be removed
SafeMath.sub(uint256,uint256) (#39-41) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (#43-48) is never used and should be removed
Remove unused functions.
Additional information: link
Function IUniswapV2Router02.WETH() (#134) is not in mixedCase
Constant NewShibaGrow._name (#164) is not in UPPER_CASE_WITH_UNDERSCORES
Constant NewShibaGrow._symbol (#165) is not in UPPER_CASE_WITH_UNDERSCORES
Constant NewShibaGrow._decimals (#166) is not in UPPER_CASE_WITH_UNDERSCORES
Variable NewShibaGrow._maxWalletAmount (#169) is not in mixedCase
Variable NewShibaGrow._maxTxAmount (#170) is not in mixedCase
Variable NewShibaGrow._buyCooldown (#192) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#89)" inContext (#83-92)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in NewShibaGrow._transfer(address,address,uint256) (#321-368):
External calls:
- swapAndSendToFee(sellTokens) (#360)
- address(marketingWallet).transfer(ethToSend) (#375)
State variables written after the call(s):
- _tOwned[to] += transferAmount (#366)
- swapping = false (#361)
Event emitted after the call(s):
- Transfer(from,to,transferAmount) (#367)
Reentrancy in NewShibaGrow.swapAndLiquify() (#378-389):
External calls:
- addLiquidity(otherHalf,newBalance) (#386)
- address(marketingWallet).transfer(ethAmount - ethFromLiquidity) (#422)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#386)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#412-419)
- address(marketingWallet).transfer(ethAmount - ethFromLiquidity) (#422)
Event emitted after the call(s):
- SwapAndLiquify(half,newBalance,otherHalf) (#387)
Reentrancy in NewShibaGrow.transferFrom(address,address,uint256) (#255-259):
External calls:
- _transfer(sender,recipient,amount) (#256)
- address(marketingWallet).transfer(ethToSend) (#375)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (#257)
- _allowances[owner][spender] = amount (#297)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#298)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (#257)
Apply the check-effects-interactions pattern.
Additional information: link
NewShibaGrow.slitherConstructorVariables() (#154-435) uses literals with too many digits:
- _tTotal = 100000000000 * 10 ** _decimals (#167)
NewShibaGrow.slitherConstructorVariables() (#154-435) uses literals with too many digits:
- _maxWalletAmount = 5000000000 * 10 ** _decimals (#169)
NewShibaGrow.slitherConstructorVariables() (#154-435) uses literals with too many digits:
- _maxTxAmount = 5000000000 * 10 ** _decimals (#170)
NewShibaGrow.slitherConstructorVariables() (#154-435) uses literals with too many digits:
- swapTokenAtAmount = 100000000 * 10 ** _decimals (#171)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
NewShibaGrow._buyCooldown (#192) should be constant
NewShibaGrow._tTotal (#167) should be constant
NewShibaGrow.liquidityReceiver (#190) should be constant
NewShibaGrow.marketingWallet (#189) should be constant
NewShibaGrow.swapTokenAtAmount (#171) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
owner() should be declared external:
- Ownable.owner() (#105-107)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#114-117)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#119-123)
name() should be declared external:
- NewShibaGrow.name() (#221-223)
symbol() should be declared external:
- NewShibaGrow.symbol() (#225-227)
decimals() should be declared external:
- NewShibaGrow.decimals() (#229-231)
totalSupply() should be declared external:
- NewShibaGrow.totalSupply() (#233-235)
transfer(address,uint256) should be declared external:
- NewShibaGrow.transfer(address,uint256) (#241-244)
allowance(address,address) should be declared external:
- NewShibaGrow.allowance(address,address) (#246-248)
approve(address,uint256) should be declared external:
- NewShibaGrow.approve(address,uint256) (#250-253)
transferFrom(address,address,uint256) should be declared external:
- NewShibaGrow.transferFrom(address,address,uint256) (#255-259)
increaseAllowance(address,uint256) should be declared external:
- NewShibaGrow.increaseAllowance(address,uint256) (#261-264)
decreaseAllowance(address,uint256) should be declared external:
- NewShibaGrow.decreaseAllowance(address,uint256) (#266-269)
excludeFromFee(address) should be declared external:
- NewShibaGrow.excludeFromFee(address) (#271-273)
includeInFee(address) should be declared external:
- NewShibaGrow.includeInFee(address) (#275-277)
isExcludedFromFee(address) should be declared external:
- NewShibaGrow.isExcludedFromFee(address) (#289-291)
setBuyFees(uint256,uint256) should be declared external:
- NewShibaGrow.setBuyFees(uint256,uint256) (#301-304)
setSellFees(uint256,uint256) should be declared external:
- NewShibaGrow.setSellFees(uint256,uint256) (#306-309)
setMaxTxPercent(uint256) should be declared external:
- NewShibaGrow.setMaxTxPercent(uint256) (#311-314)
setMaxWalletPercent(uint256) should be declared external:
- NewShibaGrow.setMaxWalletPercent(uint256) (#316-319)
Use the external attribute for functions never called from the contract.
Additional information: link
Contract ticker ($NSG) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.
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.
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