FITI is a Web3.0 type DAPP, including Defi, Game-Fi and Social-Fi elements. Its goal is to bring people a healthy body and the joy of “sport to earn” in the FITI Metaverse
🔥Hot areas of focus for #CZ.Binance🔥
🟢Excellent token mechanism
🟢Low tax rate
🟢Irregular Buyback & Burn
✅Anti-bot
✅Anti whale
🔰Secure Smart Contract
👤Professional marketing team
🎯DEX trends within 24 hours after launch
🎯CMC, CG list within one week after launch
TokenTool.addLiquidity(uint256,uint256) (#820-833) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in TokenTool._transfer(address,address,uint256) (#729-767):
External calls:
- swapAndLiquify(contractTokenBalance) (#751)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#809-815)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#751)
- recipient.transfer(amount) (#693)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#754)
- _balances[recipient] = _balances[recipient].add(finalAmount) (#762)
- finalAmount = takeFee(sender,recipient,amount) (#756-757)
- _balances[deadAddress] = _balances[deadAddress].add(tAmount) (#867)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#856)
Apply the check-effects-interactions pattern.
Additional information: link
Contract ownership is not renounced (belongs to a wallet)
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.
TokenTool.constructor(string,string,uint8,uint256,address,address,address,address,address).owner (#504) shadows:
- Ownable.owner() (#152-154) (function)
TokenTool.allowance(address,address).owner (#570) shadows:
- Ownable.owner() (#152-154) (function)
TokenTool._approve(address,address,uint256).owner (#593) shadows:
- Ownable.owner() (#152-154) (function)
Rename the local variables that shadow another component.
Additional information: link
TokenTool.addLiquidity(uint256,uint256) (#820-833) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
Ensure that all the return values of the function calls are used.
Additional information: link
TokenTool.constructor(string,string,uint8,uint256,address,address,address,address,address).owner (#504) lacks a zero-check on :
- _owner = owner (#518)
TokenTool.constructor(string,string,uint8,uint256,address,address,address,address,address).marketingAddress (#505) lacks a zero-check on :
- marketingWalletAddress = address(marketingAddress) (#524)
TokenTool.constructor(string,string,uint8,uint256,address,address,address,address,address).teamAddress (#506) lacks a zero-check on :
- teamWalletAddress = address(teamAddress) (#525)
TokenTool.constructor(string,string,uint8,uint256,address,address,address,address,address).service (#507) lacks a zero-check on :
- address(service).transfer(msg.value) (#546)
TokenTool.setMarketingWalletAddress(address).newAddress (#671) lacks a zero-check on :
- marketingWalletAddress = address(newAddress) (#672)
TokenTool.setTeamWalletAddress(address).newAddress (#675) lacks a zero-check on :
- teamWalletAddress = address(newAddress) (#676)
Check that the address is not zero.
Additional information: link
Redundant expression "this (#11)" inContext (#4-15)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in TokenTool._transfer(address,address,uint256) (#729-767):
External calls:
- swapAndLiquify(contractTokenBalance) (#751)
- recipient.transfer(amount) (#693)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#751)
- recipient.transfer(amount) (#693)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#754)
- _balances[recipient] = _balances[recipient].add(finalAmount) (#762)
- finalAmount = takeFee(sender,recipient,amount) (#756-757)
- _balances[deadAddress] = _balances[deadAddress].add(tAmount) (#867)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#856)
- finalAmount = takeFee(sender,recipient,amount) (#756-757)
- _tFeeTotal = _tFeeTotal.add(tAmount) (#868)
Event emitted after the call(s):
- Transfer(sender,deadAddress,tAmount) (#869)
- finalAmount = takeFee(sender,recipient,amount) (#756-757)
- Transfer(sender,address(this),feeAmount) (#857)
- finalAmount = takeFee(sender,recipient,amount) (#756-757)
- Transfer(sender,recipient,finalAmount) (#764)
Reentrancy in TokenTool.constructor(string,string,uint8,uint256,address,address,address,address,address) (#498-548):
External calls:
- address(service).transfer(msg.value) (#546)
Event emitted after the call(s):
- Transfer(address(0),owner,_totalSupply) (#547)
Reentrancy in TokenTool.swapAndLiquify(uint256) (#776-798):
External calls:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#791)
- recipient.transfer(amount) (#693)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#794)
- recipient.transfer(amount) (#693)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#791)
- recipient.transfer(amount) (#693)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#794)
- recipient.transfer(amount) (#693)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#797)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (#797)
- _allowances[owner][spender] = amount (#597)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#598)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#797)
Reentrancy in TokenTool.transferFrom(address,address,uint256) (#723-727):
External calls:
- _transfer(sender,recipient,amount) (#724)
- recipient.transfer(amount) (#693)
External calls sending eth:
- _transfer(sender,recipient,amount) (#724)
- recipient.transfer(amount) (#693)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#725)
- _allowances[owner][spender] = amount (#597)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#598)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#725)
Apply the check-effects-interactions pattern.
Additional information: link
TokenTool.deadAddress (#430) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
TokenTool.setMaxDesAmount(uint256) (#613-615) should emit an event for:
- _maxDestroyAmount = maxDestroy (#614)
TokenTool.setBuyDestFee(uint256) (#617-620) should emit an event for:
- _buyDestroyFee = newBuyDestroyFee (#618)
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee) (#619)
TokenTool.setSellDestFee(uint256) (#622-625) should emit an event for:
- _sellDestroyFee = newSellDestroyFee (#623)
- _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee) (#624)
TokenTool.setBuyTaxes(uint256,uint256,uint256) (#627-633) should emit an event for:
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee) (#632)
TokenTool.setSelTaxes(uint256,uint256,uint256) (#635-641) should emit an event for:
- _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee) (#640)
TokenTool.setDistributionSettings(uint256,uint256,uint256) (#643-649) should emit an event for:
- _liquidityShare = newLiquidityShare (#644)
- _teamShare = newTeamShare (#646)
- _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare) (#648)
TokenTool.setMaxTxAmount(uint256) (#651-653) should emit an event for:
- _maxTxAmount = maxTxAmount (#652)
TokenTool.setWalletLimit(uint256) (#663-665) should emit an event for:
- _walletMax = newLimit (#664)
TokenTool.setNumTokensBeforeSwap(uint256) (#667-669) should emit an event for:
- _minimumTokensBeforeSwap = newLimit (#668)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in TokenTool._transfer(address,address,uint256) (#729-767):
External calls:
- swapAndLiquify(contractTokenBalance) (#751)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#809-815)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#751)
- recipient.transfer(amount) (#693)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
State variables written after the call(s):
- finalAmount = takeFee(sender,recipient,amount) (#756-757)
- _tFeeTotal = _tFeeTotal.add(tAmount) (#868)
Reentrancy in TokenTool.changeRouterVersion(address) (#696-713):
External calls:
- newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#704-705)
State variables written after the call(s):
- isMarketPair[address(uniswapPair)] = true (#712)
- isWalletLimitExempt[address(uniswapPair)] = true (#711)
- uniswapPair = newPairAddress (#708)
- uniswapV2Router = _uniswapV2Router (#709)
Reentrancy in TokenTool.constructor(string,string,uint8,uint256,address,address,address,address,address) (#498-548):
External calls:
- uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#512-513)
State variables written after the call(s):
- _allowances[address(this)][address(uniswapV2Router)] = _totalSupply (#530)
- _balances[owner] = _totalSupply (#545)
- _decimals = coinDecimals (#517)
- _maxDestroyAmount = supply * 10 ** _decimals (#522)
- _maxTxAmount = supply * 10 ** _decimals (#520)
- _minimumTokensBeforeSwap = 1 * 10 ** _decimals (#523)
- _name = coinName (#515)
- _owner = owner (#518)
- _symbol = coinSymbol (#516)
- _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare) (#528)
- _totalSupply = supply * 10 ** _decimals (#519)
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee) (#526)
- _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee) (#527)
- _walletMax = supply * 10 ** _decimals (#521)
- isExcludedFromFee[owner] = true (#531)
- isExcludedFromFee[address(this)] = true (#532)
- isMarketPair[address(uniswapPair)] = true (#543)
- isTxLimitExempt[owner] = true (#539)
- isTxLimitExempt[deadAddress] = true (#540)
- isTxLimitExempt[address(this)] = true (#541)
- isWalletLimitExempt[owner] = true (#534)
- isWalletLimitExempt[address(uniswapPair)] = true (#535)
- isWalletLimitExempt[address(this)] = true (#536)
- isWalletLimitExempt[deadAddress] = true (#537)
- marketingWalletAddress = address(marketingAddress) (#524)
- teamWalletAddress = address(teamAddress) (#525)
- uniswapV2Router = _uniswapV2Router (#529)
Reentrancy in TokenTool.swapAndLiquify(uint256) (#776-798):
External calls:
- swapTokensForEth(tokensForSwap) (#781)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#809-815)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#797)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#791)
- recipient.transfer(amount) (#693)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#794)
- recipient.transfer(amount) (#693)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#797)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (#797)
- _allowances[owner][spender] = amount (#597)
Reentrancy in TokenTool.transferFrom(address,address,uint256) (#723-727):
External calls:
- _transfer(sender,recipient,amount) (#724)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#809-815)
External calls sending eth:
- _transfer(sender,recipient,amount) (#724)
- recipient.transfer(amount) (#693)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#725)
- _allowances[owner][spender] = amount (#597)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in TokenTool._transfer(address,address,uint256) (#729-767):
External calls:
- swapAndLiquify(contractTokenBalance) (#751)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#809-815)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#751)
- recipient.transfer(amount) (#693)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
Event emitted after the call(s):
- Transfer(sender,deadAddress,tAmount) (#869)
- finalAmount = takeFee(sender,recipient,amount) (#756-757)
- Transfer(sender,address(this),feeAmount) (#857)
- finalAmount = takeFee(sender,recipient,amount) (#756-757)
- Transfer(sender,recipient,finalAmount) (#764)
Reentrancy in TokenTool.constructor(string,string,uint8,uint256,address,address,address,address,address) (#498-548):
External calls:
- uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#512-513)
External calls sending eth:
- address(service).transfer(msg.value) (#546)
Event emitted after the call(s):
- Transfer(address(0),owner,_totalSupply) (#547)
Reentrancy in TokenTool.swapAndLiquify(uint256) (#776-798):
External calls:
- swapTokensForEth(tokensForSwap) (#781)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#809-815)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#797)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#791)
- recipient.transfer(amount) (#693)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#794)
- recipient.transfer(amount) (#693)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#797)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#598)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#797)
Reentrancy in TokenTool.swapTokensForEth(uint256) (#800-818):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#809-815)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#817)
Reentrancy in TokenTool.transferFrom(address,address,uint256) (#723-727):
External calls:
- _transfer(sender,recipient,amount) (#724)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#809-815)
External calls sending eth:
- _transfer(sender,recipient,amount) (#724)
- recipient.transfer(amount) (#693)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#825-832)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#598)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#725)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#90-99) uses assembly
- INLINE ASM (#97)
Address._functionCallWithValue(address,bytes,uint256,string) (#126-143) uses assembly
- INLINE ASM (#135-138)
Do not use evm assembly.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#126-143) is never used and should be removed
Address.functionCall(address,bytes) (#109-111) is never used and should be removed
Address.functionCall(address,bytes,string) (#113-115) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#117-119) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#121-124) is never used and should be removed
Address.isContract(address) (#90-99) is never used and should be removed
Address.sendValue(address,uint256) (#101-107) is never used and should be removed
Context._msgData() (#10-14) is never used and should be removed
SafeMath.mod(uint256,uint256) (#78-80) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#82-85) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#101-107):
- (success) = recipient.call{value: amount}() (#105)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#126-143):
- (success,returndata) = target.call{value: weiValue}(data) (#129)
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._owner (#147) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#220) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#222) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#239) is not in mixedCase
Function IUniswapV2Router01.WETH() (#269) is not in mixedCase
Parameter TokenTool.setSwapAndLiquifyEnabled(bool)._enabled (#679) is not in mixedCase
Variable TokenTool._balances (#432) is not in mixedCase
Variable TokenTool._buyLiquidityFee (#440) is not in mixedCase
Variable TokenTool._buyMarketingFee (#441) is not in mixedCase
Variable TokenTool._buyTeamFee (#442) is not in mixedCase
Variable TokenTool._buyDestroyFee (#443) is not in mixedCase
Variable TokenTool._sellLiquidityFee (#445) is not in mixedCase
Variable TokenTool._sellMarketingFee (#446) is not in mixedCase
Variable TokenTool._sellTeamFee (#447) is not in mixedCase
Variable TokenTool._sellDestroyFee (#448) is not in mixedCase
Variable TokenTool._liquidityShare (#450) is not in mixedCase
Variable TokenTool._marketingShare (#451) is not in mixedCase
Variable TokenTool._teamShare (#452) is not in mixedCase
Variable TokenTool._totalDistributionShares (#453) is not in mixedCase
Variable TokenTool._totalTaxIfBuying (#455) is not in mixedCase
Variable TokenTool._totalTaxIfSelling (#456) is not in mixedCase
Variable TokenTool._tFeeTotal (#458) is not in mixedCase
Variable TokenTool._maxDestroyAmount (#459) is not in mixedCase
Variable TokenTool._maxTxAmount (#461) is not in mixedCase
Variable TokenTool._walletMax (#462) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#274) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#275)
Prevent variables from having similar names.
Additional information: link
TokenTool.slitherConstructorVariables() (#420-873) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#430)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
waiveOwnership() should be declared external:
- Ownable.waiveOwnership() (#161-164)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#166-170)
getTime() should be declared external:
- Ownable.getTime() (#172-174)
name() should be declared external:
- TokenTool.name() (#550-552)
symbol() should be declared external:
- TokenTool.symbol() (#554-556)
decimals() should be declared external:
- TokenTool.decimals() (#558-560)
totalSupply() should be declared external:
- TokenTool.totalSupply() (#562-564)
allowance(address,address) should be declared external:
- TokenTool.allowance(address,address) (#570-572)
increaseAllowance(address,uint256) should be declared external:
- TokenTool.increaseAllowance(address,uint256) (#574-577)
decreaseAllowance(address,uint256) should be declared external:
- TokenTool.decreaseAllowance(address,uint256) (#579-582)
minimumTokensBeforeSwapAmount() should be declared external:
- TokenTool.minimumTokensBeforeSwapAmount() (#584-586)
approve(address,uint256) should be declared external:
- TokenTool.approve(address,uint256) (#588-591)
setMarketPairStatus(address,bool) should be declared external:
- TokenTool.setMarketPairStatus(address,bool) (#601-603)
setIsExcludedFromFee(address,bool) should be declared external:
- TokenTool.setIsExcludedFromFee(address,bool) (#609-611)
setMaxDesAmount(uint256) should be declared external:
- TokenTool.setMaxDesAmount(uint256) (#613-615)
setBuyDestFee(uint256) should be declared external:
- TokenTool.setBuyDestFee(uint256) (#617-620)
setSellDestFee(uint256) should be declared external:
- TokenTool.setSellDestFee(uint256) (#622-625)
setSwapAndLiquifyEnabled(bool) should be declared external:
- TokenTool.setSwapAndLiquifyEnabled(bool) (#679-682)
setSwapAndLiquifyByLimitOnly(bool) should be declared external:
- TokenTool.setSwapAndLiquifyByLimitOnly(bool) (#684-686)
getCirculatingSupply() should be declared external:
- TokenTool.getCirculatingSupply() (#688-690)
changeRouterVersion(address) should be declared external:
- TokenTool.changeRouterVersion(address) (#696-713)
transfer(address,uint256) should be declared external:
- TokenTool.transfer(address,uint256) (#718-721)
transferFrom(address,address,uint256) should be declared external:
- TokenTool.transferFrom(address,address,uint256) (#723-727)
Use the external attribute for functions never called from the contract.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to verify that token and website are owned by the same team (no listings + unable to find contract on website)
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Unable to verify token contract address on the website
Young tokens have high risks of scam / price dump / death
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 Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account
Twitter account has few posts