Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
STILTONINU.transferEthOut(uint256,uint256) (#1007-1010) sends eth to arbitrary user
Dangerous calls:
- _marketingWallet.transfer(marketingBalance) (#1009)
STILTONINU.swapETHForTokens(uint256) (#1012-1027) sends eth to arbitrary user
Dangerous calls:
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
STILTONINU.addLiquidity(uint256,uint256) (#1047-1060) sends eth to arbitrary user
Dangerous calls:
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in STILTONINU._transfer(address,address,uint256) (#910-961):
External calls:
- swapAndLiquify(contractTokenBalance) (#944)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1038-1044)
- buyBackTokens(buyBackAmount) (#950)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#944)
- _devWallet.transfer(devBalance) (#1008)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- _marketingWallet.transfer(marketingBalance) (#1009)
- buyBackTokens(buyBackAmount) (#950)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _buyBackFee = _previousBuyBackFee (#1185)
- _buyBackFee = _boostedBuyBackFee (#1202)
- _buyBackFee = 0 (#1177)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _devFee = _previousDevFee (#1187)
- _devFee = _boostedDevFee (#1204)
- _devFee = 0 (#1179)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _liquidityFee = _previousLiquidityFee (#1184)
- _liquidityFee = _boostedLiquidityFee (#1201)
- _liquidityFee = 0 (#1176)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _marketingFee = _previousMarketingFee (#1186)
- _marketingFee = _boostedMarketingFee (#1203)
- _marketingFee = 0 (#1178)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1147)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1080)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1081)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _rTotal = _rTotal.sub(rFee) (#1140)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1149)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1084)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1086)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1088)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1089)
- buyBackTokens(buyBackAmount) (#950)
- inSwapAndLiquify = true (#666)
- inSwapAndLiquify = false (#668)
Apply the check-effects-interactions pattern.
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.
Contract ticker (STILTON INU) 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.
STILTONINU.swapAndLiquify(uint256) (#969-1005) performs a multiplication on the result of a division:
-half = toLiquify.div(2) (#979)
-liquidityBalance = fromSwap.mul(half).div(toSwapForEth) (#994)
STILTONINU.swapAndLiquify(uint256) (#969-1005) performs a multiplication on the result of a division:
-toBuyBack = contractTokenBalance.mul(_buyBackFee).div(totalBNBFees) (#974)
-buyBackBalance = fromSwap.mul(toBuyBack).div(toSwapForEth) (#995)
STILTONINU.swapAndLiquify(uint256) (#969-1005) performs a multiplication on the result of a division:
-toDev = contractTokenBalance.mul(_devFee).div(totalBNBFees) (#975)
-devBalance = fromSwap.mul(toDev).div(toSwapForEth) (#996)
Consider ordering multiplication before division.
Additional information: link
STILTONINU.addLiquidity(uint256,uint256) (#1047-1060) ignores return value by dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
Ensure that all the return values of the function calls are used.
Additional information: link
STILTONINU._approve(address,address,uint256).owner (#902) shadows:
- Ownable.owner() (#534-536) (function)
Rename the local variables that shadow another component.
Additional information: link
STILTONINU.setTaxes(uint256,uint256,uint256,uint256,uint256) (#761-768) should emit an event for:
- _reflectFee = reflectFee (#763)
- _liquidityFee = liquidityFee (#764)
- _marketingFee = marketingFee (#765)
- _buyBackFee = buyBackFee (#766)
- _devFee = devFee (#767)
STILTONINU.setBoostedTaxes(uint256,uint256,uint256,uint256,uint256) (#770-777) should emit an event for:
- _boostedReflectFee = reflectFee (#772)
- _boostedLiquidityFee = liquidityFee (#773)
- _boostedMarketingFee = marketingFee (#774)
- _boostedBuyBackFee = buyBackFee (#775)
- _boostedDevFee = devFee (#776)
STILTONINU.setMaxTxPercent(uint256,uint256) (#779-783) should emit an event for:
- _maxTxAmount = _tTotal.mul(percent).div(divisor) (#781)
STILTONINU.setMaxWallet(uint256,uint256) (#785-789) should emit an event for:
- _maxWalletAmount = _tTotal.mul(percent).div(divisor) (#787)
STILTONINU.setPercentToSell(uint256) (#791-794) should emit an event for:
- percentToSell = percent (#792)
- numTokensSellToAddToLiquidity = (_tTotal * percentToSell) / 10000 (#793)
STILTONINU.setBuyBackSellLimit(uint256) (#811-813) should emit an event for:
- buyBackSellLimit = limit * 10 ** _decimalsMul (#812)
STILTONINU.setBuyBackAmount(uint256,uint256) (#815-817) should emit an event for:
- buyBackAmount = amount * 10 ** multiplier (#816)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in STILTONINU._transfer(address,address,uint256) (#910-961):
External calls:
- swapAndLiquify(contractTokenBalance) (#944)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1038-1044)
- buyBackTokens(buyBackAmount) (#950)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#944)
- _devWallet.transfer(devBalance) (#1008)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- _marketingWallet.transfer(marketingBalance) (#1009)
- buyBackTokens(buyBackAmount) (#950)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousBuyBackFee = _buyBackFee (#1196)
- _previousBuyBackFee = _buyBackFee (#1171)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousDevFee = _devFee (#1198)
- _previousDevFee = _devFee (#1173)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousLiquidityFee = _liquidityFee (#1195)
- _previousLiquidityFee = _liquidityFee (#1170)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousMarketingFee = _marketingFee (#1197)
- _previousMarketingFee = _marketingFee (#1172)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousReflectFee = _reflectFee (#1194)
- _previousReflectFee = _reflectFee (#1169)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _reflectFee = _previousReflectFee (#1183)
- _reflectFee = _boostedReflectFee (#1200)
- _reflectFee = 0 (#1175)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1141)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- boosted = true (#1067)
- boosted = false (#1190)
Reentrancy in STILTONINU.constructor() (#671-701):
External calls:
- lpPair = IUniswapV2Factory(_dexRouter.factory()).createPair(address(this),_dexRouter.WETH()) (#676-677)
State variables written after the call(s):
- _approve(_msgSender(),_routerAddress,_tTotal) (#698)
- _allowances[owner][spender] = amount (#906)
- _excluded.push(address(this)) (#685)
- _excluded.push(owner()) (#687)
- _excluded.push(burnAddress) (#689)
- _excluded.push(lpPair) (#691)
- _excluded.push(0x2D045410f002A95EFcEE67759A92518fA3FcE677) (#695)
- _isExcluded[address(this)] = true (#684)
- _isExcluded[owner()] = true (#686)
- _isExcluded[burnAddress] = true (#688)
- _isExcluded[lpPair] = true (#690)
- _isExcluded[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true (#694)
- _isExcludedFromFee[owner()] = true (#681)
- _isExcludedFromFee[address(this)] = true (#682)
- _isExcludedFromFee[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true (#693)
- _liquidityHolders[owner()] = true (#683)
- dexRouter = _dexRouter (#679)
Reentrancy in STILTONINU.setNewRouter(address) (#741-751):
External calls:
- lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this),_newRouter.WETH()) (#745)
State variables written after the call(s):
- dexRouter = _newRouter (#750)
Reentrancy in STILTONINU.swapAndLiquify(uint256) (#969-1005):
External calls:
- swapTokensForEth(toSwapForEth) (#990)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1038-1044)
- addLiquidity(otherHalf,liquidityBalance) (#1000)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
External calls sending eth:
- addLiquidity(otherHalf,liquidityBalance) (#1000)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
State variables written after the call(s):
- addLiquidity(otherHalf,liquidityBalance) (#1000)
- _allowances[owner][spender] = amount (#906)
Reentrancy in STILTONINU.transferFrom(address,address,uint256) (#725-729):
External calls:
- _transfer(sender,recipient,amount) (#726)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1038-1044)
External calls sending eth:
- _transfer(sender,recipient,amount) (#726)
- _devWallet.transfer(devBalance) (#1008)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- _marketingWallet.transfer(marketingBalance) (#1009)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#727)
- _allowances[owner][spender] = amount (#906)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in STILTONINU._transfer(address,address,uint256) (#910-961):
External calls:
- swapAndLiquify(contractTokenBalance) (#944)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1038-1044)
- buyBackTokens(buyBackAmount) (#950)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#944)
- _devWallet.transfer(devBalance) (#1008)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- _marketingWallet.transfer(marketingBalance) (#1009)
- buyBackTokens(buyBackAmount) (#950)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#1026)
- buyBackTokens(buyBackAmount) (#950)
- Transfer(sender,address(this),tLiquidity) (#1150)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- Transfer(sender,recipient,tTransferAmount) (#1097)
- _tokenTransfer(from,to,amount,takeFee) (#960)
Reentrancy in STILTONINU.constructor() (#671-701):
External calls:
- lpPair = IUniswapV2Factory(_dexRouter.factory()).createPair(address(this),_dexRouter.WETH()) (#676-677)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#907)
- _approve(_msgSender(),_routerAddress,_tTotal) (#698)
- Transfer(address(0),_msgSender(),_tTotal) (#700)
Reentrancy in STILTONINU.swapAndLiquify(uint256) (#969-1005):
External calls:
- swapTokensForEth(toSwapForEth) (#990)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1038-1044)
- addLiquidity(otherHalf,liquidityBalance) (#1000)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
External calls sending eth:
- addLiquidity(otherHalf,liquidityBalance) (#1000)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#907)
- addLiquidity(otherHalf,liquidityBalance) (#1000)
- SwapAndLiquify(half,liquidityBalance,otherHalf) (#1002)
Reentrancy in STILTONINU.swapETHForTokens(uint256) (#1012-1027):
External calls:
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#1026)
Reentrancy in STILTONINU.transferFrom(address,address,uint256) (#725-729):
External calls:
- _transfer(sender,recipient,amount) (#726)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1038-1044)
External calls sending eth:
- _transfer(sender,recipient,amount) (#726)
- _devWallet.transfer(devBalance) (#1008)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- _marketingWallet.transfer(marketingBalance) (#1009)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#907)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#727)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#272-281) uses assembly
- INLINE ASM (#279)
Address._functionCallWithValue(address,bytes,uint256,string) (#309-330) uses assembly
- INLINE ASM (#322-325)
Do not use evm assembly.
Additional information: link
STILTONINU.restoreAllFee() (#1182-1191) compares to a boolean constant:
-boosted == true (#1189)
Remove the equality to the boolean constant.
Additional information: link
STILTONINU.includeInReward(address) (#886-897) has costly operations inside a loop:
- _excluded.pop() (#893)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#309-330) is never used and should be removed
Address.functionCall(address,bytes) (#291-293) is never used and should be removed
Address.functionCall(address,bytes,string) (#295-297) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#300-302) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#304-307) is never used and should be removed
Address.isContract(address) (#272-281) is never used and should be removed
Address.sendValue(address,uint256) (#283-289) is never used and should be removed
Context._msgData() (#16-20) is never used and should be removed
SafeMath.mod(uint256,uint256) (#249-251) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#265-268) is never used and should be removed
Remove unused functions.
Additional information: link
STILTONINU._decimalsMul (#577) is set pre-construction with a non-constant function or state variable:
- _decimals
STILTONINU._tTotal (#578) is set pre-construction with a non-constant function or state variable:
- startingSupply * 10 ** _decimalsMul
STILTONINU._rTotal (#579) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
STILTONINU._previousReflectFee (#586) is set pre-construction with a non-constant function or state variable:
- _reflectFee
STILTONINU._previousLiquidityFee (#590) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
STILTONINU._previousMarketingFee (#594) is set pre-construction with a non-constant function or state variable:
- _marketingFee
STILTONINU._previousBuyBackFee (#598) is set pre-construction with a non-constant function or state variable:
- _buyBackFee
STILTONINU._previousDevFee (#602) is set pre-construction with a non-constant function or state variable:
- _devFee
STILTONINU.buyBackSellLimit (#622) is set pre-construction with a non-constant function or state variable:
- (_tTotal * 2) / 100
STILTONINU._maxTxAmount (#630) is set pre-construction with a non-constant function or state variable:
- (_tTotal * maxTxPercent) / maxTxDivisor
STILTONINU._previousMaxTxAmount (#631) is set pre-construction with a non-constant function or state variable:
- _maxTxAmount
STILTONINU.maxTxAmountUI (#632) is set pre-construction with a non-constant function or state variable:
- (startingSupply * maxTxPercent) / maxTxDivisor
STILTONINU._maxWalletAmount (#637) is set pre-construction with a non-constant function or state variable:
- (_tTotal * maxWalletPercent) / maxWalletDivisor
STILTONINU._previousMaxWalletAmount (#638) is set pre-construction with a non-constant function or state variable:
- _maxWalletAmount
STILTONINU.maxWalletAmountUI (#639) is set pre-construction with a non-constant function or state variable:
- (startingSupply * maxWalletPercent) / maxWalletDivisor
STILTONINU.numTokensSellToAddToLiquidity (#644) is set pre-construction with a non-constant function or state variable:
- (_tTotal * percentToSell) / 10000
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<0.9.0 (#9) is too complex
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) (#283-289):
- (success) = recipient.call{value: amount}() (#287)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#309-330):
- (success,returndata) = target.call{value: weiValue}(data) (#313)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#358) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#359) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#373) is not in mixedCase
Function IUniswapV2Router01.WETH() (#391) is not in mixedCase
Parameter STILTONINU.setSwapAndLiquifyEnabled(bool)._enabled (#801) is not in mixedCase
Parameter STILTONINU.setBuyBackEnabled(bool)._enabled (#806) is not in mixedCase
Parameter STILTONINU.calculateTaxFee(uint256)._amount (#1153) is not in mixedCase
Parameter STILTONINU.calculateLiquidityFee(uint256)._amount (#1157) is not in mixedCase
Variable STILTONINU._reflectFee (#585) is not in mixedCase
Variable STILTONINU._boostedReflectFee (#587) is not in mixedCase
Variable STILTONINU._liquidityFee (#589) is not in mixedCase
Variable STILTONINU._boostedLiquidityFee (#591) is not in mixedCase
Variable STILTONINU._marketingFee (#593) is not in mixedCase
Variable STILTONINU._boostedMarketingFee (#595) is not in mixedCase
Variable STILTONINU._buyBackFee (#597) is not in mixedCase
Variable STILTONINU._boostedBuyBackFee (#599) is not in mixedCase
Variable STILTONINU._devFee (#601) is not in mixedCase
Variable STILTONINU._boostedDevFee (#603) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#17)" inContext (#11-21)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in STILTONINU._transfer(address,address,uint256) (#910-961):
External calls:
- swapAndLiquify(contractTokenBalance) (#944)
- _devWallet.transfer(devBalance) (#1008)
- _marketingWallet.transfer(marketingBalance) (#1009)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#944)
- _devWallet.transfer(devBalance) (#1008)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- _marketingWallet.transfer(marketingBalance) (#1009)
- buyBackTokens(buyBackAmount) (#950)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _buyBackFee = _previousBuyBackFee (#1185)
- _buyBackFee = _boostedBuyBackFee (#1202)
- _buyBackFee = 0 (#1177)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _devFee = _previousDevFee (#1187)
- _devFee = _boostedDevFee (#1204)
- _devFee = 0 (#1179)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _liquidityFee = _previousLiquidityFee (#1184)
- _liquidityFee = _boostedLiquidityFee (#1201)
- _liquidityFee = 0 (#1176)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _marketingFee = _previousMarketingFee (#1186)
- _marketingFee = _boostedMarketingFee (#1203)
- _marketingFee = 0 (#1178)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousBuyBackFee = _buyBackFee (#1196)
- _previousBuyBackFee = _buyBackFee (#1171)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousDevFee = _devFee (#1198)
- _previousDevFee = _devFee (#1173)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousLiquidityFee = _liquidityFee (#1195)
- _previousLiquidityFee = _liquidityFee (#1170)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousMarketingFee = _marketingFee (#1197)
- _previousMarketingFee = _marketingFee (#1172)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _previousReflectFee = _reflectFee (#1194)
- _previousReflectFee = _reflectFee (#1169)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1147)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1080)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1081)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _rTotal = _rTotal.sub(rFee) (#1140)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _reflectFee = _previousReflectFee (#1183)
- _reflectFee = _boostedReflectFee (#1200)
- _reflectFee = 0 (#1175)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1141)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1149)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1084)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1086)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1088)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1089)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- boosted = true (#1067)
- boosted = false (#1190)
- buyBackTokens(buyBackAmount) (#950)
- inSwapAndLiquify = true (#666)
- inSwapAndLiquify = false (#668)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#1026)
- buyBackTokens(buyBackAmount) (#950)
- Transfer(sender,address(this),tLiquidity) (#1150)
- _tokenTransfer(from,to,amount,takeFee) (#960)
- Transfer(sender,recipient,tTransferAmount) (#1097)
- _tokenTransfer(from,to,amount,takeFee) (#960)
Reentrancy in STILTONINU.transferFrom(address,address,uint256) (#725-729):
External calls:
- _transfer(sender,recipient,amount) (#726)
- _devWallet.transfer(devBalance) (#1008)
- _marketingWallet.transfer(marketingBalance) (#1009)
External calls sending eth:
- _transfer(sender,recipient,amount) (#726)
- _devWallet.transfer(devBalance) (#1008)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1052-1059)
- _marketingWallet.transfer(marketingBalance) (#1009)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1019-1024)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#727)
- _allowances[owner][spender] = amount (#906)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#907)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#727)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#395) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#396)
Variable STILTONINU._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1117) is too similar to STILTONINU._getTValues(uint256).tTransferAmount (#1109)
Variable STILTONINU.reflectionFromToken(uint256,bool).rTransferAmount (#865) is too similar to STILTONINU._getTValues(uint256).tTransferAmount (#1109)
Variable STILTONINU._finalizeTransfer(address,address,uint256).rTransferAmount (#1078) is too similar to STILTONINU._getTValues(uint256).tTransferAmount (#1109)
Variable STILTONINU._finalizeTransfer(address,address,uint256).rTransferAmount (#1078) is too similar to STILTONINU._finalizeTransfer(address,address,uint256).tTransferAmount (#1078)
Variable STILTONINU._getValues(uint256).rTransferAmount (#1102) is too similar to STILTONINU._getTValues(uint256).tTransferAmount (#1109)
Variable STILTONINU._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1117) is too similar to STILTONINU._finalizeTransfer(address,address,uint256).tTransferAmount (#1078)
Variable STILTONINU.reflectionFromToken(uint256,bool).rTransferAmount (#865) is too similar to STILTONINU._finalizeTransfer(address,address,uint256).tTransferAmount (#1078)
Variable STILTONINU._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1117) is too similar to STILTONINU._getValues(uint256).tTransferAmount (#1101)
Variable STILTONINU.reflectionFromToken(uint256,bool).rTransferAmount (#865) is too similar to STILTONINU._getValues(uint256).tTransferAmount (#1101)
Variable STILTONINU._getValues(uint256).rTransferAmount (#1102) is too similar to STILTONINU._finalizeTransfer(address,address,uint256).tTransferAmount (#1078)
Variable STILTONINU._finalizeTransfer(address,address,uint256).rTransferAmount (#1078) is too similar to STILTONINU._getValues(uint256).tTransferAmount (#1101)
Variable STILTONINU._getValues(uint256).rTransferAmount (#1102) is too similar to STILTONINU._getValues(uint256).tTransferAmount (#1101)
Prevent variables from having similar names.
Additional information: link
STILTONINU._previousMaxTxAmount (#631) is never used in STILTONINU (#558-1207)
STILTONINU._previousMaxWalletAmount (#638) is never used in STILTONINU (#558-1207)
Remove unused state variables.
Additional information: link
STILTONINU._decimals (#576) should be constant
STILTONINU._devWallet (#616) should be constant
STILTONINU._name (#582) should be constant
STILTONINU._routerAddress (#612) should be constant
STILTONINU._symbol (#583) should be constant
STILTONINU.burnAddress (#614) should be constant
STILTONINU.masterTaxDivisor (#605) should be constant
STILTONINU.maxTxDivisor (#629) should be constant
STILTONINU.maxTxPercent (#628) should be constant
STILTONINU.maxWalletDivisor (#636) should be constant
STILTONINU.maxWalletPercent (#635) should be constant
STILTONINU.maximumTaxesPercent (#606) should be constant
STILTONINU.startingSupply (#573) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#543-546)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#548-553)
transfer(address,uint256) should be declared external:
- STILTONINU.transfer(address,uint256) (#715-718)
approve(address,uint256) should be declared external:
- STILTONINU.approve(address,uint256) (#720-723)
transferFrom(address,address,uint256) should be declared external:
- STILTONINU.transferFrom(address,address,uint256) (#725-729)
increaseAllowance(address,uint256) should be declared external:
- STILTONINU.increaseAllowance(address,uint256) (#731-734)
decreaseAllowance(address,uint256) should be declared external:
- STILTONINU.decreaseAllowance(address,uint256) (#736-739)
setNewRouter(address) should be declared external:
- STILTONINU.setNewRouter(address) (#741-751)
isExcludedFromReward(address) should be declared external:
- STILTONINU.isExcludedFromReward(address) (#753-755)
isExcludedFromFee(address) should be declared external:
- STILTONINU.isExcludedFromFee(address) (#757-759)
setSwapAndLiquifyEnabled(bool) should be declared external:
- STILTONINU.setSwapAndLiquifyEnabled(bool) (#801-804)
setBuyBackEnabled(bool) should be declared external:
- STILTONINU.setBuyBackEnabled(bool) (#806-809)
excludeFromFee(address) should be declared external:
- STILTONINU.excludeFromFee(address) (#829-831)
totalFees() should be declared external:
- STILTONINU.totalFees() (#837-839)
deliver(uint256) should be declared external:
- STILTONINU.deliver(uint256) (#850-857)
reflectionFromToken(uint256,bool) should be declared external:
- STILTONINU.reflectionFromToken(uint256,bool) (#859-868)
excludeFromReward(address) should be declared external:
- STILTONINU.excludeFromReward(address) (#876-884)
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