Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
SMTP.swapETHForTokensAndBurn(uint256) (#906-921) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
SMTP.swapETHForTokensToHere(uint256) (#923-938) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,address(this),block.timestamp.add(300)) (#930-935)
SMTP.addLiquidity(uint256,uint256) (#940-953) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#945-952)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
SMTP._transfer(address,address,uint256) (#718-862) uses a weak PRNG: "_bBSLimit = _bBSLimitMin + uint256(keccak256(bytes)(abi.encodePacked(block.timestamp,block.difficulty))) % (buyBackSellLimit - _bBSLimitMin + 1) (#795)"
Do not use block.timestamp, now or blockhash as a source of randomness
Additional information: link
Reentrancy in SMTP._transfer(address,address,uint256) (#718-862):
External calls:
- swapTokens(contractTokenBalance) (#781)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#895-901)
- buyBackTokens(_bBSLimit) (#799)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
External calls sending eth:
- swapTokens(contractTokenBalance) (#781)
- recipient.transfer(amount) (#1269)
- buyBackTokens(_bBSLimit) (#799)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#861)
- _rOwned[vaultRewardAddress] = _rOwned[vaultRewardAddress].add(rVault) (#1066)
- _rOwned[liquidityWallet] = _rOwned[liquidityWallet].add(rLiquidity) (#1059)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#979)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#969)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1002)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#991)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#970)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#992)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#981)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1004)
- _tokenTransfer(from,to,amount) (#861)
- _rTotal = _rTotal.sub(rFee) (#1012)
- _tokenTransfer(from,to,amount) (#861)
- _tOwned[vaultRewardAddress] = _tOwned[vaultRewardAddress].add(tVault) (#1068)
- _tOwned[liquidityWallet] = _tOwned[liquidityWallet].add(tLiquidity) (#1061)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1001)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#990)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#980)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1003)
- buyBackTokens(_bBSLimit) (#799)
- inSwapAndLiquify = true (#531)
- inSwapAndLiquify = false (#533)
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.
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.
SMTP._transfer(address,address,uint256) (#718-862) performs a multiplication on the result of a division:
-buyBackSellLimit = balance.div(_buyBackDivisor) (#788)
-_bBSLimitMin = buyBackSellLimit.mul(_buyBackRangeRate).div(100) (#792)
SMTP.swapTokens(uint256) (#864-877) performs a multiplication on the result of a division:
-transferToAddressETH(charityAddress,convertedBalance.div(_liquidityFee).mul(charityDivisor)) (#871)
SMTP.swapTokens(uint256) (#864-877) performs a multiplication on the result of a division:
-transferToAddressETH(developmentAddress,convertedBalance.div(_liquidityFee).mul(developmentDivisor)) (#873)
SMTP.swapTokens(uint256) (#864-877) performs a multiplication on the result of a division:
-transferToAddressETH(marketingAddress,convertedBalance.div(_liquidityFee).mul(marketingDivisor)) (#875)
Consider ordering multiplication before division.
Additional information: link
SMTP.addLiquidity(uint256,uint256) (#940-953) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#945-952)
Ensure that all the return values of the function calls are used.
Additional information: link
SMTP.allowance(address,address).owner (#593) shadows:
- Ownable.owner() (#157-159) (function)
SMTP._approve(address,address,uint256).owner (#710) shadows:
- Ownable.owner() (#157-159) (function)
Rename the local variables that shadow another component.
Additional information: link
SMTP.SetBuyBackDivisor(uint256) (#1127-1129) should emit an event for:
- _buyBackDivisor = newDivisor (#1128)
SMTP.SetBuyBackRangeRate(uint256) (#1131-1134) should emit an event for:
- _buyBackRangeRate = newPercent (#1133)
SMTP.SetSwapMinutes(uint256) (#1140-1142) should emit an event for:
- _intervalMinutesForSwap = newMinutes * 60 (#1141)
SMTP.setTaxFeePercent(uint256) (#1144-1146) should emit an event for:
- _taxFee = taxFee (#1145)
SMTP.setVaultFeePercent(uint256) (#1148-1150) should emit an event for:
- _vaultFee = vaultFee (#1149)
SMTP.setBuyFee(uint256,uint256,uint256) (#1152-1156) should emit an event for:
- _buyTaxFee = buyTaxFee (#1153)
- _buyVaultFee = buyVaultFee (#1154)
- _buyLiquidityFee = buyLiquidityFee (#1155)
SMTP.setSellFee(uint256,uint256,uint256) (#1158-1162) should emit an event for:
- _sellTaxFee = sellTaxFee (#1159)
- _sellVaultFee = sellVaultFee (#1160)
- _sellLiquidityFee = sellLiquidityFee (#1161)
SMTP.setLiquidityFeePercent(uint256) (#1164-1166) should emit an event for:
- _liquidityFee = liquidityFee (#1165)
SMTP.setBuyBackSellLimit(uint256) (#1168-1170) should emit an event for:
- buyBackSellLimit = buyBackSellSetLimit (#1169)
SMTP.setBuyMaxTxAmount(uint256) (#1172-1174) should emit an event for:
- _bMaxTxAmount = bMaxTxAmount (#1173)
SMTP.setSellMaxTxAmount(uint256) (#1176-1178) should emit an event for:
- _sMaxTxAmount = sMaxTxAmount (#1177)
SMTP.setTriggerAmount(uint256) (#1180-1182) should emit an event for:
- _trigger = trigger (#1181)
SMTP.setMarketingDivisor(uint256) (#1184-1186) should emit an event for:
- marketingDivisor = divisor (#1185)
SMTP.setDevelopmentDivisor(uint256) (#1188-1190) should emit an event for:
- developmentDivisor = divisor (#1189)
SMTP.setCharityDivisor(uint256) (#1192-1194) should emit an event for:
- charityDivisor = divisor (#1193)
SMTP.setNumTokensSellToAddToBuyBack(uint256) (#1196-1198) should emit an event for:
- minimumTokensBeforeSwap = _minimumTokensBeforeSwap (#1197)
Emit an event for critical parameter changes.
Additional information: link
SMTP.setPairAddress(address).newPair (#649) lacks a zero-check on :
- uniswapV2Pair = newPair (#650)
SMTP.setLiquidityAddress(address).newLiquidityWallet (#654) lacks a zero-check on :
- liquidityWallet = newLiquidityWallet (#655)
SMTP.setMarketingAddress(address)._marketingAddress (#1200) lacks a zero-check on :
- marketingAddress = address(_marketingAddress) (#1201)
SMTP.setDevelopmentAddress(address)._developmentAddress (#1205) lacks a zero-check on :
- developmentAddress = address(_developmentAddress) (#1206)
SMTP.setCharityAddress(address)._charityAddress (#1210) lacks a zero-check on :
- charityAddress = address(_charityAddress) (#1211)
SMTP.setVaultAddress(address)._vaultAddress (#1215) lacks a zero-check on :
- vaultRewardAddress = address(_vaultAddress) (#1216)
Check that the address is not zero.
Additional information: link
Reentrancy in SMTP._transfer(address,address,uint256) (#718-862):
External calls:
- swapTokens(contractTokenBalance) (#781)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#895-901)
External calls sending eth:
- swapTokens(contractTokenBalance) (#781)
- recipient.transfer(amount) (#1269)
State variables written after the call(s):
- buyBackSellLimit = balance.div(_buyBackDivisor) (#788)
Reentrancy in SMTP._transfer(address,address,uint256) (#718-862):
External calls:
- swapTokens(contractTokenBalance) (#781)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#895-901)
- buyBackTokens(_bBSLimit) (#799)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
External calls sending eth:
- swapTokens(contractTokenBalance) (#781)
- recipient.transfer(amount) (#1269)
- buyBackTokens(_bBSLimit) (#799)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#861)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1013)
- _tempLiquidityFee = 0 (#810)
- _tempLiquidityFee = _liquidityFee (#816)
- _tempLiquidityFee = _buyLiquidityFee (#822)
- _tempLiquidityFee = _sellLiquidityFee (#828)
- _tempLiquidityFee = _addressFees[from]._liquidityFee (#835)
- _tempLiquidityFee = _addressFees[from]._sellLiquidityFee (#841)
- _tempLiquidityFee = _addressFees[to]._liquidityFee (#850)
- _tempLiquidityFee = _addressFees[to]._buyLiquidityFee (#855)
- _tempTaxFee = 0 (#808)
- _tempTaxFee = _taxFee (#814)
- _tempTaxFee = _buyTaxFee (#820)
- _tempTaxFee = _sellTaxFee (#826)
- _tempTaxFee = _addressFees[from]._taxFee (#833)
- _tempTaxFee = _addressFees[from]._sellTaxFee (#839)
- _tempTaxFee = _addressFees[to]._taxFee (#848)
- _tempTaxFee = _addressFees[to]._buyTaxFee (#853)
- _tempVaultFee = 0 (#809)
- _tempVaultFee = _vaultFee (#815)
- _tempVaultFee = _buyVaultFee (#821)
- _tempVaultFee = _sellVaultFee (#827)
- _tempVaultFee = _addressFees[from]._vaultFee (#834)
- _tempVaultFee = _addressFees[from]._sellVaultFee (#840)
- _tempVaultFee = _addressFees[to]._vaultFee (#849)
- _tempVaultFee = _addressFees[to]._buyVaultFee (#854)
Reentrancy in SMTP.changeRouterVersion(address) (#1272-1285):
External calls:
- _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1278-1279)
State variables written after the call(s):
- uniswapV2Pair = _pair (#1281)
- uniswapV2Router = _uniswapV2Router (#1284)
Reentrancy in SMTP.constructor() (#536-565):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#546-547)
State variables written after the call(s):
- excludeFromReward(uniswapV2Pair) (#559)
- _excluded.push(account) (#694)
- excludeFromReward(deadAddress) (#560)
- _excluded.push(account) (#694)
- excludeFromReward(uniswapV2Pair) (#559)
- _isExcluded[account] = true (#693)
- excludeFromReward(deadAddress) (#560)
- _isExcluded[account] = true (#693)
- _isExcludedFromFee[owner()] = true (#552)
- _isExcludedFromFee[liquidityWallet] = true (#553)
- _isExcludedFromFee[marketingAddress] = true (#554)
- _isExcludedFromFee[developmentAddress] = true (#555)
- _isExcludedFromFee[vaultRewardAddress] = true (#556)
- _isExcludedFromFee[charityAddress] = true (#557)
- _startTimeForSwap = block.timestamp (#562)
- excludeFromReward(uniswapV2Pair) (#559)
- _tOwned[account] = tokenFromReflection(_rOwned[account]) (#691)
- excludeFromReward(deadAddress) (#560)
- _tOwned[account] = tokenFromReflection(_rOwned[account]) (#691)
- uniswapV2Router = _uniswapV2Router (#549)
Reentrancy in SMTP.manualSwapAndLiquifyBNB(uint256) (#1298-1319):
External calls:
- swapETHForTokensToHere(half) (#1310)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,address(this),block.timestamp.add(300)) (#930-935)
- addLiquidity(newTokenBalance,otherHalf) (#1316)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#945-952)
State variables written after the call(s):
- addLiquidity(newTokenBalance,otherHalf) (#1316)
- _allowances[owner][spender] = amount (#714)
Reentrancy in SMTP.manualSwapAndLiquifyTokens(uint256) (#1322-1343):
External calls:
- swapTokensForEth(half) (#1334)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#895-901)
- addLiquidity(otherHalf,newBalance) (#1340)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#945-952)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1340)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#945-952)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1340)
- _allowances[owner][spender] = amount (#714)
Reentrancy in SMTP.setRouterAddressAndCreatePair(address) (#636-640):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_newPancakeRouter.factory()).createPair(address(this),_newPancakeRouter.WETH()) (#638)
State variables written after the call(s):
- uniswapV2Router = _newPancakeRouter (#639)
Reentrancy in SMTP.transferFrom(address,address,uint256) (#602-606):
External calls:
- _transfer(sender,recipient,amount) (#603)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#895-901)
External calls sending eth:
- _transfer(sender,recipient,amount) (#603)
- recipient.transfer(amount) (#1269)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#604)
- _allowances[owner][spender] = amount (#714)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in SMTP._transfer(address,address,uint256) (#718-862):
External calls:
- swapTokens(contractTokenBalance) (#781)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#895-901)
- buyBackTokens(_bBSLimit) (#799)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
External calls sending eth:
- swapTokens(contractTokenBalance) (#781)
- recipient.transfer(amount) (#1269)
- buyBackTokens(_bBSLimit) (#799)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#920)
- buyBackTokens(_bBSLimit) (#799)
- Transfer(sender,recipient,tTransferAmount) (#974)
- _tokenTransfer(from,to,amount) (#861)
- Transfer(sender,recipient,tTransferAmount) (#985)
- _tokenTransfer(from,to,amount) (#861)
- Transfer(sender,recipient,tTransferAmount) (#996)
- _tokenTransfer(from,to,amount) (#861)
- Transfer(sender,recipient,tTransferAmount) (#1008)
- _tokenTransfer(from,to,amount) (#861)
Reentrancy in SMTP.constructor() (#536-565):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#546-547)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#564)
Reentrancy in SMTP.manualSwapAndLiquifyBNB(uint256) (#1298-1319):
External calls:
- swapETHForTokensToHere(half) (#1310)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,address(this),block.timestamp.add(300)) (#930-935)
- addLiquidity(newTokenBalance,otherHalf) (#1316)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#945-952)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#715)
- addLiquidity(newTokenBalance,otherHalf) (#1316)
- SwapAndLiquifyBNB(half,newTokenBalance,otherHalf) (#1318)
Reentrancy in SMTP.manualSwapAndLiquifyTokens(uint256) (#1322-1343):
External calls:
- swapTokensForEth(half) (#1334)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#895-901)
- addLiquidity(otherHalf,newBalance) (#1340)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#945-952)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1340)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#945-952)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#715)
- addLiquidity(otherHalf,newBalance) (#1340)
- SwapAndLiquifyTokens(half,newBalance,otherHalf) (#1342)
Reentrancy in SMTP.swapETHForTokensAndBurn(uint256) (#906-921):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#920)
Reentrancy in SMTP.swapETHForTokensToHere(uint256) (#923-938):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,address(this),block.timestamp.add(300)) (#930-935)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#937)
Reentrancy in SMTP.swapTokensForEth(uint256) (#886-904):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#895-901)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#903)
Reentrancy in SMTP.transferFrom(address,address,uint256) (#602-606):
External calls:
- _transfer(sender,recipient,amount) (#603)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#895-901)
External calls sending eth:
- _transfer(sender,recipient,amount) (#603)
- recipient.transfer(amount) (#1269)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#715)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#604)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#192-197) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#194)
SMTP._transfer(address,address,uint256) (#718-862) uses timestamp for comparisons
Dangerous comparisons:
- cooldown[to] > block.timestamp (#738)
- cooldown[to] > block.timestamp + 1680 (#739)
- cooldown[to] > block.timestamp + 79200 (#741)
- cooldown[to] > block.timestamp (#753)
- cooldown[from] > 600 (#764)
- require(bool,string)(cooldown[from] < block.timestamp,Antibotmode active for first few hours: sell cooldown for your address is not elapsed. Sell cooldown is caused by repeat purchases, if you did not repeat purchase just wait 10 minutes.) (#765)
- overMinimumTokenBalance && _startTimeForSwap + _intervalMinutesForSwap <= block.timestamp (#778)
- balance > _bBSLimit (#798)
SMTP.buyBackTokens(uint256) (#880-884) uses timestamp for comparisons
Dangerous comparisons:
- amount > 0 (#881)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#87-96) uses assembly
- INLINE ASM (#94)
Address._functionCallWithValue(address,bytes,uint256,string) (#124-141) uses assembly
- INLINE ASM (#133-136)
Do not use evm assembly.
Additional information: link
SMTP._transfer(address,address,uint256) (#718-862) compares to a boolean constant:
-_abmode == true (#729)
SMTP._transfer(address,address,uint256) (#718-862) compares to a boolean constant:
-_cooldownMode == true (#737)
SMTP._transfer(address,address,uint256) (#718-862) compares to a boolean constant:
-tradingOpen == true (#725)
SMTP._transfer(address,address,uint256) (#718-862) compares to a boolean constant:
-_cooldownMode == true (#763)
SMTP._transfer(address,address,uint256) (#718-862) compares to a boolean constant:
-tradingOpen == false (#732)
SMTP._transfer(address,address,uint256) (#718-862) compares to a boolean constant:
-require(bool,string)(bots[from] != true,No bot transactions during antibotmode.) (#730)
Remove the equality to the boolean constant.
Additional information: link
SMTP.includeInReward(address) (#697-708) has costly operations inside a loop:
- _excluded.pop() (#704)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#124-141) is never used and should be removed
Address.functionCall(address,bytes) (#107-109) is never used and should be removed
Address.functionCall(address,bytes,string) (#111-113) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#115-117) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#119-122) is never used and should be removed
Address.isContract(address) (#87-96) is never used and should be removed
Address.sendValue(address,uint256) (#98-104) is never used and should be removed
Context._msgData() (#10-13) is never used and should be removed
SMTP._getSellBnBAmount(uint256) (#1116-1125) is never used and should be removed
SafeMath.mod(uint256,uint256) (#75-77) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#79-82) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#98-104):
- (success) = recipient.call{value: amount}() (#102)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#124-141):
- (success,returndata) = target.call{value: weiValue}(data) (#127)
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() (#237) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#238) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#254) is not in mixedCase
Function IUniswapV2Router01.WETH() (#275) is not in mixedCase
Parameter SMTP.calculateTaxFee(uint256)._amount (#1071) is not in mixedCase
Parameter SMTP.calculateVaultFee(uint256)._amount (#1077) is not in mixedCase
Parameter SMTP.calculateLiquidityFee(uint256)._amount (#1083) is not in mixedCase
Parameter SMTP.checkIfOnBotList(address)._address (#1112) is not in mixedCase
Function SMTP.SetBuyBackDivisor(uint256) (#1127-1129) is not in mixedCase
Function SMTP.SetBuyBackRangeRate(uint256) (#1131-1134) is not in mixedCase
Function SMTP.GetSwapMinutes() (#1136-1138) is not in mixedCase
Function SMTP.SetSwapMinutes(uint256) (#1140-1142) is not in mixedCase
Parameter SMTP.setNumTokensSellToAddToBuyBack(uint256)._minimumTokensBeforeSwap (#1196) is not in mixedCase
Parameter SMTP.setMarketingAddress(address)._marketingAddress (#1200) is not in mixedCase
Parameter SMTP.setDevelopmentAddress(address)._developmentAddress (#1205) is not in mixedCase
Parameter SMTP.setCharityAddress(address)._charityAddress (#1210) is not in mixedCase
Parameter SMTP.setVaultAddress(address)._vaultAddress (#1215) is not in mixedCase
Parameter SMTP.setSwapAndLiquifyEnabled(bool)._enabled (#1220) is not in mixedCase
Parameter SMTP.setABMode(bool)._enabled (#1225) is not in mixedCase
Parameter SMTP.setCooldownMode(bool)._enabled (#1230) is not in mixedCase
Parameter SMTP.setBuyBackEnabled(bool)._enabled (#1235) is not in mixedCase
Parameter SMTP.setTradingOpen(bool)._status (#1264) is not in mixedCase
Parameter SMTP.changeRouterVersion(address)._router (#1272) is not in mixedCase
Parameter SMTP.transferForeignToken(address,address)._token (#1291) is not in mixedCase
Parameter SMTP.transferForeignToken(address,address)._to (#1291) is not in mixedCase
Function SMTP.SweepStuck(uint256) (#1346-1348) is not in mixedCase
Parameter SMTP.SweepStuck(uint256)._amount (#1346) is not in mixedCase
Parameter SMTP.setAddressFee(address,bool,uint256,uint256,uint256)._address (#1350) is not in mixedCase
Parameter SMTP.setAddressFee(address,bool,uint256,uint256,uint256)._enable (#1350) is not in mixedCase
Parameter SMTP.setAddressFee(address,bool,uint256,uint256,uint256)._addressTaxFee (#1350) is not in mixedCase
Parameter SMTP.setAddressFee(address,bool,uint256,uint256,uint256)._addressVaultFee (#1350) is not in mixedCase
Parameter SMTP.setAddressFee(address,bool,uint256,uint256,uint256)._addressLiquidityFee (#1350) is not in mixedCase
Parameter SMTP.setBuyAddressFee(address,bool,uint256,uint256,uint256)._address (#1357) is not in mixedCase
Parameter SMTP.setBuyAddressFee(address,bool,uint256,uint256,uint256)._enable (#1357) is not in mixedCase
Parameter SMTP.setBuyAddressFee(address,bool,uint256,uint256,uint256)._addressTaxFee (#1357) is not in mixedCase
Parameter SMTP.setBuyAddressFee(address,bool,uint256,uint256,uint256)._addressVaultFee (#1357) is not in mixedCase
Parameter SMTP.setBuyAddressFee(address,bool,uint256,uint256,uint256)._addressLiquidityFee (#1357) is not in mixedCase
Parameter SMTP.setSellAddressFee(address,bool,uint256,uint256,uint256)._address (#1364) is not in mixedCase
Parameter SMTP.setSellAddressFee(address,bool,uint256,uint256,uint256)._enable (#1364) is not in mixedCase
Parameter SMTP.setSellAddressFee(address,bool,uint256,uint256,uint256)._addressTaxFee (#1364) is not in mixedCase
Parameter SMTP.setSellAddressFee(address,bool,uint256,uint256,uint256)._addressVaultFee (#1364) is not in mixedCase
Parameter SMTP.setSellAddressFee(address,bool,uint256,uint256,uint256)._addressLiquidityFee (#1364) is not in mixedCase
Constant SMTP._tTotal (#433) is not in UPPER_CASE_WITH_UNDERSCORES
Constant SMTP._name (#437) is not in UPPER_CASE_WITH_UNDERSCORES
Constant SMTP._symbol (#438) is not in UPPER_CASE_WITH_UNDERSCORES
Constant SMTP._decimals (#439) is not in UPPER_CASE_WITH_UNDERSCORES
Variable SMTP._taxFee (#454) is not in mixedCase
Variable SMTP._vaultFee (#455) is not in mixedCase
Variable SMTP._liquidityFee (#456) is not in mixedCase
Variable SMTP._buyTaxFee (#463) is not in mixedCase
Variable SMTP._buyVaultFee (#464) is not in mixedCase
Variable SMTP._buyLiquidityFee (#465) is not in mixedCase
Variable SMTP._sellTaxFee (#467) is not in mixedCase
Variable SMTP._sellVaultFee (#468) is not in mixedCase
Variable SMTP._sellLiquidityFee (#469) is not in mixedCase
Variable SMTP._startTimeForSwap (#471) is not in mixedCase
Variable SMTP._intervalMinutesForSwap (#472) is not in mixedCase
Variable SMTP._buyBackRangeRate (#474) is not in mixedCase
Variable SMTP._addressFees (#477) is not in mixedCase
Variable SMTP._bMaxTxAmount (#483) is not in mixedCase
Variable SMTP._sMaxTxAmount (#484) is not in mixedCase
Variable SMTP._buyBackDivisor (#491) is not in mixedCase
Variable SMTP._buyBackTimeInterval (#492) is not in mixedCase
Variable SMTP._isEnabledBuyBackAndBurn (#501) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#11)" inContext (#5-14)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in SMTP._transfer(address,address,uint256) (#718-862):
External calls:
- swapTokens(contractTokenBalance) (#781)
- recipient.transfer(amount) (#1269)
State variables written after the call(s):
- buyBackSellLimit = balance.div(_buyBackDivisor) (#788)
Reentrancy in SMTP._transfer(address,address,uint256) (#718-862):
External calls:
- swapTokens(contractTokenBalance) (#781)
- recipient.transfer(amount) (#1269)
External calls sending eth:
- swapTokens(contractTokenBalance) (#781)
- recipient.transfer(amount) (#1269)
- buyBackTokens(_bBSLimit) (#799)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#861)
- _rOwned[vaultRewardAddress] = _rOwned[vaultRewardAddress].add(rVault) (#1066)
- _rOwned[liquidityWallet] = _rOwned[liquidityWallet].add(rLiquidity) (#1059)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#979)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#969)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1002)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#991)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#970)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#992)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#981)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1004)
- _tokenTransfer(from,to,amount) (#861)
- _rTotal = _rTotal.sub(rFee) (#1012)
- _tokenTransfer(from,to,amount) (#861)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1013)
- _tokenTransfer(from,to,amount) (#861)
- _tOwned[vaultRewardAddress] = _tOwned[vaultRewardAddress].add(tVault) (#1068)
- _tOwned[liquidityWallet] = _tOwned[liquidityWallet].add(tLiquidity) (#1061)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1001)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#990)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#980)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1003)
- _tempLiquidityFee = 0 (#810)
- _tempLiquidityFee = _liquidityFee (#816)
- _tempLiquidityFee = _buyLiquidityFee (#822)
- _tempLiquidityFee = _sellLiquidityFee (#828)
- _tempLiquidityFee = _addressFees[from]._liquidityFee (#835)
- _tempLiquidityFee = _addressFees[from]._sellLiquidityFee (#841)
- _tempLiquidityFee = _addressFees[to]._liquidityFee (#850)
- _tempLiquidityFee = _addressFees[to]._buyLiquidityFee (#855)
- _tempTaxFee = 0 (#808)
- _tempTaxFee = _taxFee (#814)
- _tempTaxFee = _buyTaxFee (#820)
- _tempTaxFee = _sellTaxFee (#826)
- _tempTaxFee = _addressFees[from]._taxFee (#833)
- _tempTaxFee = _addressFees[from]._sellTaxFee (#839)
- _tempTaxFee = _addressFees[to]._taxFee (#848)
- _tempTaxFee = _addressFees[to]._buyTaxFee (#853)
- _tempVaultFee = 0 (#809)
- _tempVaultFee = _vaultFee (#815)
- _tempVaultFee = _buyVaultFee (#821)
- _tempVaultFee = _sellVaultFee (#827)
- _tempVaultFee = _addressFees[from]._vaultFee (#834)
- _tempVaultFee = _addressFees[from]._sellVaultFee (#840)
- _tempVaultFee = _addressFees[to]._vaultFee (#849)
- _tempVaultFee = _addressFees[to]._buyVaultFee (#854)
- buyBackTokens(_bBSLimit) (#799)
- inSwapAndLiquify = true (#531)
- inSwapAndLiquify = false (#533)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#920)
- buyBackTokens(_bBSLimit) (#799)
- Transfer(sender,recipient,tTransferAmount) (#974)
- _tokenTransfer(from,to,amount) (#861)
- Transfer(sender,recipient,tTransferAmount) (#985)
- _tokenTransfer(from,to,amount) (#861)
- Transfer(sender,recipient,tTransferAmount) (#996)
- _tokenTransfer(from,to,amount) (#861)
- Transfer(sender,recipient,tTransferAmount) (#1008)
- _tokenTransfer(from,to,amount) (#861)
Reentrancy in SMTP.transferFrom(address,address,uint256) (#602-606):
External calls:
- _transfer(sender,recipient,amount) (#603)
- recipient.transfer(amount) (#1269)
External calls sending eth:
- _transfer(sender,recipient,amount) (#603)
- recipient.transfer(amount) (#1269)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#913-918)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#604)
- _allowances[owner][spender] = amount (#714)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#715)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#604)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#280) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#281)
Variable SMTP._bMaxTxAmount (#483) is too similar to SMTP._sMaxTxAmount (#484)
Variable SMTP.setBuyMaxTxAmount(uint256).bMaxTxAmount (#1172) is too similar to SMTP.setSellMaxTxAmount(uint256).sMaxTxAmount (#1176)
Variable SMTP._transferStandard(address,address,uint256).rTransferAmount (#968) is too similar to SMTP._transferFromExcluded(address,address,uint256).tTransferAmount (#989)
Variable SMTP._transferBothExcluded(address,address,uint256).rTransferAmount (#1000) is too similar to SMTP._transferFromExcluded(address,address,uint256).tTransferAmount (#989)
Variable SMTP.reflectionFromToken(uint256,bool).rTransferAmount (#676) is too similar to SMTP._transferFromExcluded(address,address,uint256).tTransferAmount (#989)
Variable SMTP._transferStandard(address,address,uint256).rTransferAmount (#968) is too similar to SMTP._transferStandard(address,address,uint256).tTransferAmount (#968)
Variable SMTP._transferBothExcluded(address,address,uint256).rTransferAmount (#1000) is too similar to SMTP._transferStandard(address,address,uint256).tTransferAmount (#968)
Variable SMTP._getValues(uint256).rTransferAmount (#1018) is too similar to SMTP._transferFromExcluded(address,address,uint256).tTransferAmount (#989)
Variable SMTP.reflectionFromToken(uint256,bool).rTransferAmount (#676) is too similar to SMTP._transferStandard(address,address,uint256).tTransferAmount (#968)
Variable SMTP._transferToExcluded(address,address,uint256).rTransferAmount (#978) is too similar to SMTP._transferToExcluded(address,address,uint256).tTransferAmount (#978)
Variable SMTP._transferToExcluded(address,address,uint256).rTransferAmount (#978) is too similar to SMTP._transferFromExcluded(address,address,uint256).tTransferAmount (#989)
Variable SMTP._transferBothExcluded(address,address,uint256).rTransferAmount (#1000) is too similar to SMTP._transferBothExcluded(address,address,uint256).tTransferAmount (#1000)
Variable SMTP._getValues(uint256).rTransferAmount (#1018) is too similar to SMTP._transferStandard(address,address,uint256).tTransferAmount (#968)
Variable SMTP._transferToExcluded(address,address,uint256).rTransferAmount (#978) is too similar to SMTP._transferStandard(address,address,uint256).tTransferAmount (#968)
Variable SMTP.reflectionFromToken(uint256,bool).rTransferAmount (#676) is too similar to SMTP._transferBothExcluded(address,address,uint256).tTransferAmount (#1000)
Variable SMTP._transferStandard(address,address,uint256).rTransferAmount (#968) is too similar to SMTP._getTValues(uint256).tTransferAmount (#1026)
Variable SMTP._transferBothExcluded(address,address,uint256).rTransferAmount (#1000) is too similar to SMTP._getTValues(uint256).tTransferAmount (#1026)
Variable SMTP._transferToExcluded(address,address,uint256).rTransferAmount (#978) is too similar to SMTP._transferBothExcluded(address,address,uint256).tTransferAmount (#1000)
Variable SMTP.reflectionFromToken(uint256,bool).rTransferAmount (#676) is too similar to SMTP._getTValues(uint256).tTransferAmount (#1026)
Variable SMTP._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1035) is too similar to SMTP._transferFromExcluded(address,address,uint256).tTransferAmount (#989)
Variable SMTP._getValues(uint256).rTransferAmount (#1018) is too similar to SMTP._getTValues(uint256).tTransferAmount (#1026)
Variable SMTP._transferFromExcluded(address,address,uint256).rTransferAmount (#989) is too similar to SMTP._transferFromExcluded(address,address,uint256).tTransferAmount (#989)
Variable SMTP._transferToExcluded(address,address,uint256).rTransferAmount (#978) is too similar to SMTP._getTValues(uint256).tTransferAmount (#1026)
Variable SMTP._transferStandard(address,address,uint256).rTransferAmount (#968) is too similar to SMTP._getValues(uint256).tTransferAmount (#1017)
Variable SMTP._transferBothExcluded(address,address,uint256).rTransferAmount (#1000) is too similar to SMTP._transferToExcluded(address,address,uint256).tTransferAmount (#978)
Variable SMTP._transferBothExcluded(address,address,uint256).rTransferAmount (#1000) is too similar to SMTP._getValues(uint256).tTransferAmount (#1017)
Variable SMTP._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1035) is too similar to SMTP._transferStandard(address,address,uint256).tTransferAmount (#968)
Variable SMTP._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1035) is too similar to SMTP._transferBothExcluded(address,address,uint256).tTransferAmount (#1000)
Variable SMTP._transferFromExcluded(address,address,uint256).rTransferAmount (#989) is too similar to SMTP._transferBothExcluded(address,address,uint256).tTransferAmount (#1000)
Variable SMTP._transferFromExcluded(address,address,uint256).rTransferAmount (#989) is too similar to SMTP._transferStandard(address,address,uint256).tTransferAmount (#968)
Variable SMTP._getValues(uint256).rTransferAmount (#1018) is too similar to SMTP._transferBothExcluded(address,address,uint256).tTransferAmount (#1000)
Variable SMTP.reflectionFromToken(uint256,bool).rTransferAmount (#676) is too similar to SMTP._transferToExcluded(address,address,uint256).tTransferAmount (#978)
Variable SMTP.reflectionFromToken(uint256,bool).rTransferAmount (#676) is too similar to SMTP._getValues(uint256).tTransferAmount (#1017)
Variable SMTP._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1035) is too similar to SMTP._getTValues(uint256).tTransferAmount (#1026)
Variable SMTP._transferStandard(address,address,uint256).rTransferAmount (#968) is too similar to SMTP._transferBothExcluded(address,address,uint256).tTransferAmount (#1000)
Variable SMTP._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1035) is too similar to SMTP._transferToExcluded(address,address,uint256).tTransferAmount (#978)
Variable SMTP._transferFromExcluded(address,address,uint256).rTransferAmount (#989) is too similar to SMTP._getTValues(uint256).tTransferAmount (#1026)
Variable SMTP._transferToExcluded(address,address,uint256).rTransferAmount (#978) is too similar to SMTP._getValues(uint256).tTransferAmount (#1017)
Variable SMTP._getRValues(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1035) is too similar to SMTP._getValues(uint256).tTransferAmount (#1017)
Variable SMTP._getValues(uint256).rTransferAmount (#1018) is too similar to SMTP._transferToExcluded(address,address,uint256).tTransferAmount (#978)
Variable SMTP._transferFromExcluded(address,address,uint256).rTransferAmount (#989) is too similar to SMTP._transferToExcluded(address,address,uint256).tTransferAmount (#978)
Variable SMTP._getValues(uint256).rTransferAmount (#1018) is too similar to SMTP._getValues(uint256).tTransferAmount (#1017)
Variable SMTP._transferFromExcluded(address,address,uint256).rTransferAmount (#989) is too similar to SMTP._getValues(uint256).tTransferAmount (#1017)
Variable SMTP._transferStandard(address,address,uint256).rTransferAmount (#968) is too similar to SMTP._transferToExcluded(address,address,uint256).tTransferAmount (#978)
Prevent variables from having similar names.
Additional information: link
SMTP.prepareForPreSale() (#1240-1250) uses literals with too many digits:
- _bMaxTxAmount = 1000000000 * 10 ** 9 (#1248)
SMTP.prepareForPreSale() (#1240-1250) uses literals with too many digits:
- _sMaxTxAmount = 1000000000 * 10 ** 9 (#1249)
SMTP.afterPreSale() (#1252-1262) uses literals with too many digits:
- _bMaxTxAmount = 6000000 * 10 ** 9 (#1259)
SMTP.afterPreSale() (#1252-1262) uses literals with too many digits:
- _sMaxTxAmount = 3000000 * 10 ** 9 (#1260)
SMTP.slitherConstructorVariables() (#410-1372) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#420)
SMTP.slitherConstructorVariables() (#410-1372) uses literals with too many digits:
- _bMaxTxAmount = 1000000000 * 10 ** 9 (#483)
SMTP.slitherConstructorVariables() (#410-1372) uses literals with too many digits:
- _sMaxTxAmount = 1000000000 * 10 ** 9 (#484)
SMTP.slitherConstructorVariables() (#410-1372) uses literals with too many digits:
- _trigger = 1000000000 * 10 ** 9 (#485)
SMTP.slitherConstructorConstantVariables() (#410-1372) uses literals with too many digits:
- _tTotal = 1000000000 * 10 ** 9 (#433)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SMTP._buyBackTimeInterval (#492) should be constant
SMTP._isEnabledBuyBackAndBurn (#501) should be constant
SMTP.deadAddress (#420) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#166-169)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#171-175)
getUnlockTime() should be declared external:
- Ownable.getUnlockTime() (#177-179)
getTime() should be declared external:
- Ownable.getTime() (#181-183)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#185-190)
unlock() should be declared external:
- Ownable.unlock() (#192-197)
name() should be declared external:
- SMTP.name() (#567-569)
symbol() should be declared external:
- SMTP.symbol() (#571-573)
decimals() should be declared external:
- SMTP.decimals() (#575-577)
totalSupply() should be declared external:
- SMTP.totalSupply() (#579-581)
transfer(address,uint256) should be declared external:
- SMTP.transfer(address,uint256) (#588-591)
allowance(address,address) should be declared external:
- SMTP.allowance(address,address) (#593-595)
approve(address,uint256) should be declared external:
- SMTP.approve(address,uint256) (#597-600)
transferFrom(address,address,uint256) should be declared external:
- SMTP.transferFrom(address,address,uint256) (#602-606)
increaseAllowance(address,uint256) should be declared external:
- SMTP.increaseAllowance(address,uint256) (#608-611)
decreaseAllowance(address,uint256) should be declared external:
- SMTP.decreaseAllowance(address,uint256) (#613-616)
isExcludedFromReward(address) should be declared external:
- SMTP.isExcludedFromReward(address) (#618-620)
totalFees() should be declared external:
- SMTP.totalFees() (#622-624)
minimumTokensBeforeSwapAmount() should be declared external:
- SMTP.minimumTokensBeforeSwapAmount() (#626-628)
buyBackSellLimitAmount() should be declared external:
- SMTP.buyBackSellLimitAmount() (#630-632)
setRouterAddressAndCreatePair(address) should be declared external:
- SMTP.setRouterAddressAndCreatePair(address) (#636-640)
setRouterAddress(address) should be declared external:
- SMTP.setRouterAddress(address) (#643-646)
setPairAddress(address) should be declared external:
- SMTP.setPairAddress(address) (#649-651)
setLiquidityAddress(address) should be declared external:
- SMTP.setLiquidityAddress(address) (#654-657)
airdrop(uint256) should be declared external:
- SMTP.airdrop(uint256) (#660-667)
reflectionFromToken(uint256,bool) should be declared external:
- SMTP.reflectionFromToken(uint256,bool) (#670-679)
isExcludedFromFee(address) should be declared external:
- SMTP.isExcludedFromFee(address) (#1089-1091)
excludeFromFee(address) should be declared external:
- SMTP.excludeFromFee(address) (#1093-1095)
includeInFee(address) should be declared external:
- SMTP.includeInFee(address) (#1097-1099)
setBots(address[]) should be declared external:
- SMTP.setBots(address[]) (#1101-1106)
delBot(address) should be declared external:
- SMTP.delBot(address) (#1108-1110)
checkIfOnBotList(address) should be declared external:
- SMTP.checkIfOnBotList(address) (#1112-1114)
GetSwapMinutes() should be declared external:
- SMTP.GetSwapMinutes() (#1136-1138)
setBuyBackEnabled(bool) should be declared external:
- SMTP.setBuyBackEnabled(bool) (#1235-1238)
changeRouterVersion(address) should be declared external:
- SMTP.changeRouterVersion(address) (#1272-1285)
transferForeignToken(address,address) should be declared external:
- SMTP.transferForeignToken(address,address) (#1291-1295)
manualSwapAndLiquifyBNB(uint256) should be declared external:
- SMTP.manualSwapAndLiquifyBNB(uint256) (#1298-1319)
manualSwapAndLiquifyTokens(uint256) should be declared external:
- SMTP.manualSwapAndLiquifyTokens(uint256) (#1322-1343)
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