Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
FMT.airdrop(address) (#1023-1036) sends eth to arbitrary user
Dangerous calls:
- address(address(uint160(_refer))).transfer(referEth) (#1032)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in FMT._transfer(address,address,uint256) (#587-635):
External calls:
- swapTokens(contractTokenBalance) (#606)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#657-663)
External calls sending eth:
- swapTokens(contractTokenBalance) (#606)
- recipient.transfer(amount) (#951)
State variables written after the call(s):
- removeAllFee() (#617)
- _liquidityFee = 0 (#840)
- _liquidityFee = _buyLiquidityFee (#619)
- removeAllFee() (#624)
- _liquidityFee = 0 (#840)
- _liquidityFee = _sellLiquidityFee (#626)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _liquidityFee = _previousLiquidityFee (#846)
- _liquidityFee = 0 (#840)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#816)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#741)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#762)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#752)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#743)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#753)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#764)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#730)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#731)
- _rOwned[deadAddress] = _rOwned[deadAddress].add(rBurnAmount) (#732)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _rTotal = _rTotal.sub(rFee) (#771)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#818)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#751)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#761)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#742)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#763)
Apply the check-effects-interactions pattern.
Additional information: link
FMT.swapTokenForTokens(address,address,uint256) (#685-688) ignores return value by tokenC.transfer(account,amount) (#687)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Ownable._lockTime (#157) is never initialized. It is used in:
- Ownable.getUnlockTime() (#182-184)
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
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.
FMT.swapTokens(uint256) (#637-645) performs a multiplication on the result of a division:
-charityBnb = transferredBalance.div(_liquidityFee).mul(charityDivisor) (#642)
FMT._transferStandard(address,address,uint256) (#723-737) performs a multiplication on the result of a division:
-tBurnAmount = tAmount.div(100).mul(_burnFee) (#726)
Consider ordering multiplication before division.
Additional information: link
FMT.addLiquidity(uint256,uint256) (#690-703) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#695-702)
Ensure that all the return values of the function calls are used.
Additional information: link
FMT.allowance(address,address).owner (#491) shadows:
- Ownable.owner() (#168-170) (function)
FMT._approve(address,address,uint256).owner (#579) shadows:
- Ownable.owner() (#168-170) (function)
Rename the local variables that shadow another component.
Additional information: link
FMT.setTaxFeePercent(uint256) (#862-864) should emit an event for:
- _taxFee = taxFee (#863)
FMT.setLiquidityFeePercent(uint256) (#866-868) should emit an event for:
- _liquidityFee = liquidityFee (#867)
FMT.setBuyTaxFeePercent(uint256) (#870-872) should emit an event for:
- _buyTaxFee = buyTaxFee (#871)
FMT.setBuyLiquidityFeePercent(uint256) (#874-876) should emit an event for:
- _buyLiquidityFee = buyLiquidityFee (#875)
FMT.setSellTaxFeePercent(uint256) (#878-880) should emit an event for:
- _sellTaxFee = sellTaxFee (#879)
FMT.setSellLiquidityFeePercent(uint256) (#882-884) should emit an event for:
- _sellLiquidityFee = sellLiquidityFee (#883)
FMT.setBurnFeePercent(uint256) (#886-888) should emit an event for:
- _burnFee = burnTaxFee (#887)
FMT.setMaxTxAmount(uint256) (#890-892) should emit an event for:
- _maxTxAmount = maxTxAmount (#891)
FMT.setCharityFeePercent(uint256) (#898-900) should emit an event for:
- charityDivisor = divisor (#899)
FMT.setNumTokensSellToAddToLiquidity(uint256) (#902-904) should emit an event for:
- minimumTokensBeforeSwap = _minimumTokensBeforeSwap (#903)
FMT.setALLFeePercent(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (#906-916) should emit an event for:
- charityDivisor = charity (#907)
- _burnFee = burnTaxFee (#909)
- _sellLiquidityFee = sellLiquidityFee (#910)
- _sellTaxFee = sellTaxFee (#911)
- _buyLiquidityFee = buyLiquidityFee (#912)
- _buyTaxFee = buyTaxFee (#913)
- _liquidityFee = liquidityFee (#914)
- _taxFee = taxFee (#915)
FMT.set(uint8,uint256) (#993-1021) should emit an event for:
- _referEth = value (#1001)
- _referToken = value (#1003)
- _airdropEth = value (#1005)
- _airdropToken = value (#1007)
- salePrice = value (#1011)
- _airdorpBnb = value (#1014)
- _buyBnb = value (#1016)
Emit an event for critical parameter changes.
Additional information: link
FMT.setMarketingAddress(address)._marketingAddress (#918) lacks a zero-check on :
- marketingAddress = address(_marketingAddress) (#919)
FMT.setCharityAddress(address)._newaddress (#923) lacks a zero-check on :
- charityAddress = address(_newaddress) (#924)
FMT.transferToAddressETH(address,uint256).recipient (#950) lacks a zero-check on :
- recipient.transfer(amount) (#951)
Check that the address is not zero.
Additional information: link
Reentrancy in FMT._transfer(address,address,uint256) (#587-635):
External calls:
- swapTokens(contractTokenBalance) (#606)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#657-663)
External calls sending eth:
- swapTokens(contractTokenBalance) (#606)
- recipient.transfer(amount) (#951)
State variables written after the call(s):
- removeAllFee() (#617)
- _burnFee = 0 (#841)
- _burnFee = _previousBurnFee (#620)
- removeAllFee() (#624)
- _burnFee = 0 (#841)
- _burnFee = _previousBurnFee (#627)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _burnFee = _previousBurnFee (#847)
- _burnFee = 0 (#841)
- removeAllFee() (#617)
- _previousBurnFee = _burnFee (#838)
- removeAllFee() (#624)
- _previousBurnFee = _burnFee (#838)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _previousBurnFee = _burnFee (#838)
- removeAllFee() (#617)
- _previousLiquidityFee = _liquidityFee (#837)
- removeAllFee() (#624)
- _previousLiquidityFee = _liquidityFee (#837)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _previousLiquidityFee = _liquidityFee (#837)
- removeAllFee() (#617)
- _previousTaxFee = _taxFee (#836)
- removeAllFee() (#624)
- _previousTaxFee = _taxFee (#836)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _previousTaxFee = _taxFee (#836)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _tFeeTotal = _tFeeTotal.add(tFee) (#772)
- removeAllFee() (#617)
- _taxFee = 0 (#839)
- _taxFee = _buyTaxFee (#618)
- removeAllFee() (#624)
- _taxFee = 0 (#839)
- _taxFee = _sellTaxFee (#625)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _taxFee = _previousTaxFee (#845)
- _taxFee = 0 (#839)
Reentrancy in FMT.constructor() (#453-463):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#457-458)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#460)
- _isExcludedFromFee[address(this)] = true (#461)
- uniswapV2Router = _uniswapV2Router (#459)
Reentrancy in FMT.transferFrom(address,address,uint256) (#500-504):
External calls:
- _transfer(sender,recipient,amount) (#501)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#657-663)
External calls sending eth:
- _transfer(sender,recipient,amount) (#501)
- recipient.transfer(amount) (#951)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#502)
- _allowances[owner][spender] = amount (#583)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in FMT._transfer(address,address,uint256) (#587-635):
External calls:
- swapTokens(contractTokenBalance) (#606)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#657-663)
External calls sending eth:
- swapTokens(contractTokenBalance) (#606)
- recipient.transfer(amount) (#951)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#756)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- Transfer(sender,recipient,tTransferAmount) (#746)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- Transfer(sender,recipient,tTransferAmount) (#767)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- Transfer(sender,recipient,tTransferAmount) (#735)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- Transfer(sender,deadAddress,tBurnAmount) (#736)
- _tokenTransfer(from,to,amount,takeFee) (#634)
Reentrancy in FMT.constructor() (#453-463):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#457-458)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#462)
Reentrancy in FMT.swapETHForTokens(uint256) (#668-683):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#675-680)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#682)
Reentrancy in FMT.swapTokensForEth(uint256) (#648-666):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#657-663)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#665)
Reentrancy in FMT.transferFrom(address,address,uint256) (#500-504):
External calls:
- _transfer(sender,recipient,amount) (#501)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#657-663)
External calls sending eth:
- _transfer(sender,recipient,amount) (#501)
- recipient.transfer(amount) (#951)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#584)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#502)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#97-106) uses assembly
- INLINE ASM (#104)
Address._functionCallWithValue(address,bytes,uint256,string) (#134-151) uses assembly
- INLINE ASM (#143-146)
Do not use evm assembly.
Additional information: link
FMT.includeInReward(address) (#566-577) has costly operations inside a loop:
- _excluded.pop() (#573)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#134-151) is never used and should be removed
Address.functionCall(address,bytes) (#117-119) is never used and should be removed
Address.functionCall(address,bytes,string) (#121-123) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#125-127) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#129-132) is never used and should be removed
Address.isContract(address) (#97-106) is never used and should be removed
Address.sendValue(address,uint256) (#108-114) is never used and should be removed
Context._msgData() (#30-33) is never used and should be removed
FMT.addLiquidity(uint256,uint256) (#690-703) is never used and should be removed
FMT.swapETHForTokens(uint256) (#668-683) is never used and should be removed
SafeMath.mod(uint256,uint256) (#85-87) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#89-92) is never used and should be removed
Remove unused functions.
Additional information: link
FMT._rTotal (#407) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
FMT._previousTaxFee (#416) is set pre-construction with a non-constant function or state variable:
- _taxFee
FMT._previousLiquidityFee (#419) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
FMT._buyTaxFee (#421) is set pre-construction with a non-constant function or state variable:
- _taxFee
FMT._buyLiquidityFee (#422) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
FMT._sellTaxFee (#424) is set pre-construction with a non-constant function or state variable:
- _taxFee
FMT._sellLiquidityFee (#425) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
FMT._previousBurnFee (#428) is set pre-construction with a non-constant function or state variable:
- _burnFee
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
Low level call in Address.sendValue(address,uint256) (#108-114):
- (success) = recipient.call{value: amount}() (#112)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#134-151):
- (success,returndata) = target.call{value: weiValue}(data) (#137)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable Ownable._swAuth (#158) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#221) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#222) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#231) is not in mixedCase
Function IUniswapV2Router01.WETH() (#251) is not in mixedCase
Parameter FMT.calculateTaxFee(uint256)._amount (#821) is not in mixedCase
Parameter FMT.calculateLiquidityFee(uint256)._amount (#827) is not in mixedCase
Parameter FMT.setNumTokensSellToAddToLiquidity(uint256)._minimumTokensBeforeSwap (#902) is not in mixedCase
Parameter FMT.setMarketingAddress(address)._marketingAddress (#918) is not in mixedCase
Parameter FMT.setCharityAddress(address)._newaddress (#923) is not in mixedCase
Parameter FMT.setSwapAndLiquifyEnabled(bool)._enabled (#927) is not in mixedCase
Parameter FMT.airdrop(address)._refer (#1023) is not in mixedCase
Parameter FMT.buy(address)._refer (#1038) is not in mixedCase
Variable FMT._taxFee (#415) is not in mixedCase
Variable FMT._liquidityFee (#418) is not in mixedCase
Variable FMT._buyTaxFee (#421) is not in mixedCase
Variable FMT._buyLiquidityFee (#422) is not in mixedCase
Variable FMT._sellTaxFee (#424) is not in mixedCase
Variable FMT._sellLiquidityFee (#425) is not in mixedCase
Variable FMT._burnFee (#427) is not in mixedCase
Variable FMT._maxTxAmount (#434) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#31)" inContext (#24-34)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in FMT._transfer(address,address,uint256) (#587-635):
External calls:
- swapTokens(contractTokenBalance) (#606)
- recipient.transfer(amount) (#951)
State variables written after the call(s):
- removeAllFee() (#617)
- _burnFee = 0 (#841)
- _burnFee = _previousBurnFee (#620)
- removeAllFee() (#624)
- _burnFee = 0 (#841)
- _burnFee = _previousBurnFee (#627)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _burnFee = _previousBurnFee (#847)
- _burnFee = 0 (#841)
- removeAllFee() (#617)
- _liquidityFee = 0 (#840)
- _liquidityFee = _buyLiquidityFee (#619)
- removeAllFee() (#624)
- _liquidityFee = 0 (#840)
- _liquidityFee = _sellLiquidityFee (#626)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _liquidityFee = _previousLiquidityFee (#846)
- _liquidityFee = 0 (#840)
- removeAllFee() (#617)
- _previousBurnFee = _burnFee (#838)
- removeAllFee() (#624)
- _previousBurnFee = _burnFee (#838)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _previousBurnFee = _burnFee (#838)
- removeAllFee() (#617)
- _previousLiquidityFee = _liquidityFee (#837)
- removeAllFee() (#624)
- _previousLiquidityFee = _liquidityFee (#837)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _previousLiquidityFee = _liquidityFee (#837)
- removeAllFee() (#617)
- _previousTaxFee = _taxFee (#836)
- removeAllFee() (#624)
- _previousTaxFee = _taxFee (#836)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _previousTaxFee = _taxFee (#836)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#816)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#741)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#762)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#752)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#743)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#753)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#764)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#730)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#731)
- _rOwned[deadAddress] = _rOwned[deadAddress].add(rBurnAmount) (#732)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _rTotal = _rTotal.sub(rFee) (#771)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _tFeeTotal = _tFeeTotal.add(tFee) (#772)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#818)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#751)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#761)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#742)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#763)
- removeAllFee() (#617)
- _taxFee = 0 (#839)
- _taxFee = _buyTaxFee (#618)
- removeAllFee() (#624)
- _taxFee = 0 (#839)
- _taxFee = _sellTaxFee (#625)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- _taxFee = _previousTaxFee (#845)
- _taxFee = 0 (#839)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#756)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- Transfer(sender,recipient,tTransferAmount) (#746)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- Transfer(sender,recipient,tTransferAmount) (#767)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- Transfer(sender,recipient,tTransferAmount) (#735)
- _tokenTransfer(from,to,amount,takeFee) (#634)
- Transfer(sender,deadAddress,tBurnAmount) (#736)
- _tokenTransfer(from,to,amount,takeFee) (#634)
Reentrancy in FMT.transferFrom(address,address,uint256) (#500-504):
External calls:
- _transfer(sender,recipient,amount) (#501)
- recipient.transfer(amount) (#951)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#502)
- _allowances[owner][spender] = amount (#583)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#584)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#502)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#256) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#257)
Variable FMT._transferStandard(address,address,uint256).rBurnAmount (#727) is too similar to FMT._transferStandard(address,address,uint256).tBurnAmount (#726)
Variable FMT._getValues(uint256).rTransferAmount (#777) is too similar to FMT._getTValues(uint256).tTransferAmount (#784)
Variable FMT._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#792) is too similar to FMT._transferFromExcluded(address,address,uint256).tTransferAmount (#750)
Variable FMT._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#792) is too similar to FMT._transferToExcluded(address,address,uint256).tTransferAmount (#740)
Variable FMT._transferFromExcluded(address,address,uint256).rTransferAmount (#750) is too similar to FMT._transferFromExcluded(address,address,uint256).tTransferAmount (#750)
Variable FMT._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#792) is too similar to FMT._getTValues(uint256).tTransferAmount (#784)
Variable FMT._transferToExcluded(address,address,uint256).rTransferAmount (#740) is too similar to FMT._transferFromExcluded(address,address,uint256).tTransferAmount (#750)
Variable FMT._transferToExcluded(address,address,uint256).rTransferAmount (#740) is too similar to FMT._transferToExcluded(address,address,uint256).tTransferAmount (#740)
Variable FMT._transferBothExcluded(address,address,uint256).rTransferAmount (#760) is too similar to FMT._transferFromExcluded(address,address,uint256).tTransferAmount (#750)
Variable FMT._transferBothExcluded(address,address,uint256).rTransferAmount (#760) is too similar to FMT._transferToExcluded(address,address,uint256).tTransferAmount (#740)
Variable FMT._getValues(uint256).rTransferAmount (#777) is too similar to FMT._transferBothExcluded(address,address,uint256).tTransferAmount (#760)
Variable FMT.reflectionFromToken(uint256,bool).rTransferAmount (#545) is too similar to FMT._transferFromExcluded(address,address,uint256).tTransferAmount (#750)
Variable FMT._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#792) is too similar to FMT._transferBothExcluded(address,address,uint256).tTransferAmount (#760)
Variable FMT._transferBothExcluded(address,address,uint256).rTransferAmount (#760) is too similar to FMT._transferBothExcluded(address,address,uint256).tTransferAmount (#760)
Variable FMT._getValues(uint256).rTransferAmount (#777) is too similar to FMT._transferFromExcluded(address,address,uint256).tTransferAmount (#750)
Variable FMT._getValues(uint256).rTransferAmount (#777) is too similar to FMT._transferToExcluded(address,address,uint256).tTransferAmount (#740)
Variable FMT._transferStandard(address,address,uint256).rTransferAmount (#725) is too similar to FMT._transferBothExcluded(address,address,uint256).tTransferAmount (#760)
Variable FMT._transferBothExcluded(address,address,uint256).rTransferAmount (#760) is too similar to FMT._transferStandard(address,address,uint256).tTransferAmount (#725)
Variable FMT._transferStandard(address,address,uint256).rTransferAmount (#725) is too similar to FMT._transferStandard(address,address,uint256).tTransferAmount (#725)
Variable FMT.reflectionFromToken(uint256,bool).rTransferAmount (#545) is too similar to FMT._getTValues(uint256).tTransferAmount (#784)
Variable FMT._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#792) is too similar to FMT._transferStandard(address,address,uint256).tTransferAmount (#725)
Variable FMT._transferFromExcluded(address,address,uint256).rTransferAmount (#750) is too similar to FMT._getValues(uint256).tTransferAmount (#776)
Variable FMT._transferToExcluded(address,address,uint256).rTransferAmount (#740) is too similar to FMT._getValues(uint256).tTransferAmount (#776)
Variable FMT._transferFromExcluded(address,address,uint256).rTransferAmount (#750) is too similar to FMT._transferToExcluded(address,address,uint256).tTransferAmount (#740)
Variable FMT._transferBothExcluded(address,address,uint256).rTransferAmount (#760) is too similar to FMT._getTValues(uint256).tTransferAmount (#784)
Variable FMT._transferStandard(address,address,uint256).rTransferAmount (#725) is too similar to FMT._getTValues(uint256).tTransferAmount (#784)
Variable FMT._transferFromExcluded(address,address,uint256).rTransferAmount (#750) is too similar to FMT._transferBothExcluded(address,address,uint256).tTransferAmount (#760)
Variable FMT._transferFromExcluded(address,address,uint256).rTransferAmount (#750) is too similar to FMT._transferStandard(address,address,uint256).tTransferAmount (#725)
Variable FMT._transferToExcluded(address,address,uint256).rTransferAmount (#740) is too similar to FMT._transferStandard(address,address,uint256).tTransferAmount (#725)
Variable FMT._transferToExcluded(address,address,uint256).rTransferAmount (#740) is too similar to FMT._transferBothExcluded(address,address,uint256).tTransferAmount (#760)
Variable FMT.reflectionFromToken(uint256,bool).rTransferAmount (#545) is too similar to FMT._getValues(uint256).tTransferAmount (#776)
Variable FMT._getValues(uint256).rTransferAmount (#777) is too similar to FMT._getValues(uint256).tTransferAmount (#776)
Variable FMT.reflectionFromToken(uint256,bool).rTransferAmount (#545) is too similar to FMT._transferToExcluded(address,address,uint256).tTransferAmount (#740)
Variable FMT._transferBothExcluded(address,address,uint256).rTransferAmount (#760) is too similar to FMT._getValues(uint256).tTransferAmount (#776)
Variable FMT._transferStandard(address,address,uint256).rTransferAmount (#725) is too similar to FMT._getValues(uint256).tTransferAmount (#776)
Variable FMT.reflectionFromToken(uint256,bool).rTransferAmount (#545) is too similar to FMT._transferStandard(address,address,uint256).tTransferAmount (#725)
Variable FMT.reflectionFromToken(uint256,bool).rTransferAmount (#545) is too similar to FMT._transferBothExcluded(address,address,uint256).tTransferAmount (#760)
Variable FMT._transferFromExcluded(address,address,uint256).rTransferAmount (#750) is too similar to FMT._getTValues(uint256).tTransferAmount (#784)
Variable FMT._transferStandard(address,address,uint256).rTransferAmount (#725) is too similar to FMT._transferFromExcluded(address,address,uint256).tTransferAmount (#750)
Variable FMT._getValues(uint256).rTransferAmount (#777) is too similar to FMT._transferStandard(address,address,uint256).tTransferAmount (#725)
Variable FMT._transferToExcluded(address,address,uint256).rTransferAmount (#740) is too similar to FMT._getTValues(uint256).tTransferAmount (#784)
Variable FMT._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#792) is too similar to FMT._getValues(uint256).tTransferAmount (#776)
Variable FMT._transferStandard(address,address,uint256).rTransferAmount (#725) is too similar to FMT._transferToExcluded(address,address,uint256).tTransferAmount (#740)
Prevent variables from having similar names.
Additional information: link
FMT.slitherConstructorVariables() (#388-1057) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#395)
FMT.slitherConstructorVariables() (#388-1057) uses literals with too many digits:
- _tTotal = 30000000 * 10 ** 18 (#406)
FMT.slitherConstructorVariables() (#388-1057) uses literals with too many digits:
- _airdropEth = 2000000000000000 (#974)
FMT.slitherConstructorVariables() (#388-1057) uses literals with too many digits:
- _airdropToken = 60000000000000000000 (#975)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Ownable._previousOwner (#156) is never used in FMT (#388-1057)
FMT._auth (#976) is never used in FMT (#388-1057)
FMT._auth2 (#977) is never used in FMT (#388-1057)
FMT._authNum (#978) is never used in FMT (#388-1057)
Remove unused state variables.
Additional information: link
FMT._auth (#976) should be constant
FMT._auth2 (#977) should be constant
FMT._authNum (#978) should be constant
FMT._decimals (#412) should be constant
FMT._name (#410) should be constant
FMT._symbol (#411) should be constant
FMT._tTotal (#406) should be constant
FMT.burnOnBuy (#440) should be constant
FMT.burnOnSell (#441) should be constant
Ownable._lockTime (#157) should be constant
Ownable._previousOwner (#156) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#177-180)
getUnlockTime() should be declared external:
- Ownable.getUnlockTime() (#182-184)
getTime() should be declared external:
- Ownable.getTime() (#186-188)
name() should be declared external:
- FMT.name() (#465-467)
symbol() should be declared external:
- FMT.symbol() (#469-471)
decimals() should be declared external:
- FMT.decimals() (#473-475)
totalSupply() should be declared external:
- FMT.totalSupply() (#477-479)
transfer(address,uint256) should be declared external:
- FMT.transfer(address,uint256) (#486-489)
allowance(address,address) should be declared external:
- FMT.allowance(address,address) (#491-493)
approve(address,uint256) should be declared external:
- FMT.approve(address,uint256) (#495-498)
transferFrom(address,address,uint256) should be declared external:
- FMT.transferFrom(address,address,uint256) (#500-504)
increaseAllowance(address,uint256) should be declared external:
- FMT.increaseAllowance(address,uint256) (#506-509)
decreaseAllowance(address,uint256) should be declared external:
- FMT.decreaseAllowance(address,uint256) (#511-514)
isExcludedFromReward(address) should be declared external:
- FMT.isExcludedFromReward(address) (#516-518)
totalFees() should be declared external:
- FMT.totalFees() (#520-522)
minimumTokensBeforeSwapAmount() should be declared external:
- FMT.minimumTokensBeforeSwapAmount() (#524-526)
deliver(uint256) should be declared external:
- FMT.deliver(uint256) (#529-536)
reflectionFromToken(uint256,bool) should be declared external:
- FMT.reflectionFromToken(uint256,bool) (#539-548)
excludeFromReward(address) should be declared external:
- FMT.excludeFromReward(address) (#556-564)
swapTokenForTokens(address,address,uint256) should be declared external:
- FMT.swapTokenForTokens(address,address,uint256) (#685-688)
isExcludedFromFee(address) should be declared external:
- FMT.isExcludedFromFee(address) (#850-852)
excludeFromFee(address) should be declared external:
- FMT.excludeFromFee(address) (#854-856)
includeInFee(address) should be declared external:
- FMT.includeInFee(address) (#858-860)
recoverBalance(uint256) should be declared external:
- FMT.recoverBalance(uint256) (#954-956)
doManualSwapTokens(uint256) should be declared external:
- FMT.doManualSwapTokens(uint256) (#959-962)
clearAllETH() should be declared external:
- FMT.clearAllETH() (#986-989)
set(uint8,uint256) should be declared external:
- FMT.set(uint8,uint256) (#993-1021)
airdrop(address) should be declared external:
- FMT.airdrop(address) (#1023-1036)
buy(address) should be declared external:
- FMT.buy(address) (#1038-1054)
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 price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts