Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in SincereTiger._transfer(address,address,uint256) (#665-782):
External calls:
- swapTokens(contractTokenBalance) (#694)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#811-817)
External calls sending eth:
- swapTokens(contractTokenBalance) (#694)
- recipient.transfer(amount) (#1135)
State variables written after the call(s):
- _removeOldSellHistories() (#721)
- _sellHistories[i].time = _sellHistories[j].time (#1022)
- _sellHistories[i].bnbAmount = _sellHistories[j].bnbAmount (#1023)
- _sellHistories.pop() (#1033)
Reentrancy in SincereTiger._transfer(address,address,uint256) (#665-782):
External calls:
- swapTokens(contractTokenBalance) (#694)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#811-817)
- buyBackTokens(_bBSLimit) (#729)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
External calls sending eth:
- swapTokens(contractTokenBalance) (#694)
- recipient.transfer(amount) (#1135)
- buyBackTokens(_bBSLimit) (#729)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#958)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#874)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#883)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#875)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#894)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#904)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#885)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#895)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#906)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _rTotal = _rTotal.sub(rFee) (#913)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#960)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#893)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#903)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#884)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#905)
- buyBackTokens(_bBSLimit) (#729)
- inSwapAndLiquify = true (#511)
- inSwapAndLiquify = false (#513)
Apply the check-effects-interactions pattern.
Additional information: link
SincereTiger.swapETHForTokens(uint256) (#822-837) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
SincereTiger.addLiquidity(uint256,uint256) (#839-852) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#844-851)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
SincereTiger._transfer(address,address,uint256) (#665-782) uses a weak PRNG: "_bBSLimit = _bBSLimitMin + uint256(keccak256(bytes)(abi.encodePacked(block.timestamp,block.difficulty))) % (_bBSLimitMax - _bBSLimitMin + 1) (#726)"
Do not use block.timestamp, now or blockhash as a source of randomness
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.
SincereTiger._transfer(address,address,uint256).sellHistory (#681) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
SincereTiger.addLiquidity(uint256,uint256) (#839-852) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#844-851)
Ensure that all the return values of the function calls are used.
Additional information: link
SincereTiger.allowance(address,address).owner (#566) shadows:
- Ownable.owner() (#157-159) (function)
SincereTiger._approve(address,address,uint256).owner (#657) shadows:
- Ownable.owner() (#157-159) (function)
Rename the local variables that shadow another component.
Additional information: link
SincereTiger.SetBuyBackMaxTimeForHistories(uint256) (#1038-1040) should emit an event for:
- _buyBackMaxTimeForHistories = newMinutes * 60 (#1039)
SincereTiger.SetBuyBackDivisor(uint256) (#1042-1044) should emit an event for:
- _buyBackDivisor = newDivisor (#1043)
SincereTiger.SetBuyBackTimeInterval(uint256) (#1050-1052) should emit an event for:
- _buyBackTimeInterval = newMinutes * 60 (#1051)
SincereTiger.SetBuyBackRangeRate(uint256) (#1054-1057) should emit an event for:
- _buyBackRangeRate = newPercent (#1056)
SincereTiger.SetSwapMinutes(uint256) (#1063-1065) should emit an event for:
- _intervalMinutesForSwap = newMinutes * 60 (#1064)
SincereTiger.setTaxFeePercent(uint256) (#1067-1069) should emit an event for:
- _taxFee = taxFee (#1068)
SincereTiger.setBuyFee(uint256,uint256) (#1071-1074) should emit an event for:
- _buyTaxFee = buyTaxFee (#1072)
- _buyLiquidityFee = buyLiquidityFee (#1073)
SincereTiger.setSellFee(uint256,uint256) (#1076-1079) should emit an event for:
- _sellTaxFee = sellTaxFee (#1077)
- _sellLiquidityFee = sellLiquidityFee (#1078)
SincereTiger.setLiquidityFeePercent(uint256) (#1081-1083) should emit an event for:
- _liquidityFee = liquidityFee (#1082)
SincereTiger.setBuyBackSellLimit(uint256) (#1085-1087) should emit an event for:
- buyBackSellLimit = buyBackSellSetLimit (#1086)
SincereTiger.setMaxTxAmount(uint256) (#1089-1091) should emit an event for:
- _maxTxAmount = maxTxAmount (#1090)
SincereTiger.setMarketingDivisor(uint256) (#1093-1095) should emit an event for:
- marketingDivisor = divisor (#1094)
SincereTiger.setNumTokensSellToAddToBuyBack(uint256) (#1097-1099) should emit an event for:
- minimumTokensBeforeSwap = _minimumTokensBeforeSwap (#1098)
Emit an event for critical parameter changes.
Additional information: link
SincereTiger.setMarketingAddress(address)._marketingAddress (#1101) lacks a zero-check on :
- marketingAddress = address(_marketingAddress) (#1102)
Check that the address is not zero.
Additional information: link
Reentrancy in SincereTiger._transfer(address,address,uint256) (#665-782):
External calls:
- swapTokens(contractTokenBalance) (#694)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#811-817)
- buyBackTokens(_bBSLimit) (#729)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
External calls sending eth:
- swapTokens(contractTokenBalance) (#694)
- recipient.transfer(amount) (#1135)
- buyBackTokens(_bBSLimit) (#729)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
State variables written after the call(s):
- removeAllFee() (#745)
- _liquidityFee = 0 (#982)
- _liquidityFee = _buyLiquidityFee (#747)
- removeAllFee() (#751)
- _liquidityFee = 0 (#982)
- _liquidityFee = _sellLiquidityFee (#753)
- removeAllFee() (#758)
- _liquidityFee = 0 (#982)
- _liquidityFee = _addressFees[from]._liquidityFee (#760)
- _liquidityFee = _addressFees[from]._sellLiquidityFee (#765)
- removeAllFee() (#772)
- _liquidityFee = 0 (#982)
- _liquidityFee = _addressFees[to]._buyLiquidityFee (#775)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _liquidityFee = _previousLiquidityFee (#987)
- _liquidityFee = 0 (#982)
- removeAllFee() (#745)
- _previousLiquidityFee = _liquidityFee (#979)
- removeAllFee() (#751)
- _previousLiquidityFee = _liquidityFee (#979)
- removeAllFee() (#758)
- _previousLiquidityFee = _liquidityFee (#979)
- removeAllFee() (#772)
- _previousLiquidityFee = _liquidityFee (#979)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _previousLiquidityFee = _liquidityFee (#979)
- removeAllFee() (#745)
- _previousTaxFee = _taxFee (#978)
- removeAllFee() (#751)
- _previousTaxFee = _taxFee (#978)
- removeAllFee() (#758)
- _previousTaxFee = _taxFee (#978)
- removeAllFee() (#772)
- _previousTaxFee = _taxFee (#978)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _previousTaxFee = _taxFee (#978)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _tFeeTotal = _tFeeTotal.add(tFee) (#914)
- removeAllFee() (#745)
- _taxFee = 0 (#981)
- _taxFee = _buyTaxFee (#746)
- removeAllFee() (#751)
- _taxFee = 0 (#981)
- _taxFee = _sellTaxFee (#752)
- removeAllFee() (#758)
- _taxFee = 0 (#981)
- _taxFee = _addressFees[from]._taxFee (#759)
- _taxFee = _addressFees[from]._sellTaxFee (#764)
- removeAllFee() (#772)
- _taxFee = 0 (#981)
- _taxFee = _addressFees[to]._buyTaxFee (#774)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _taxFee = _previousTaxFee (#986)
- _taxFee = 0 (#981)
Reentrancy in SincereTiger.changeRouterVersion(address) (#1138-1151):
External calls:
- _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1144-1145)
State variables written after the call(s):
- uniswapV2Pair = _pair (#1147)
- uniswapV2Router = _uniswapV2Router (#1150)
Reentrancy in SincereTiger.constructor() (#516-538):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#526-527)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#532)
- _isExcludedFromFee[address(this)] = true (#533)
- _startTimeForSwap = block.timestamp (#535)
- uniswapV2Router = _uniswapV2Router (#529)
Reentrancy in SincereTiger.transferFrom(address,address,uint256) (#575-579):
External calls:
- _transfer(sender,recipient,amount) (#576)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#811-817)
External calls sending eth:
- _transfer(sender,recipient,amount) (#576)
- recipient.transfer(amount) (#1135)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#577)
- _allowances[owner][spender] = amount (#661)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in SincereTiger._transfer(address,address,uint256) (#665-782):
External calls:
- swapTokens(contractTokenBalance) (#694)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#811-817)
- buyBackTokens(_bBSLimit) (#729)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
External calls sending eth:
- swapTokens(contractTokenBalance) (#694)
- recipient.transfer(amount) (#1135)
- buyBackTokens(_bBSLimit) (#729)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#836)
- buyBackTokens(_bBSLimit) (#729)
- Transfer(sender,recipient,tTransferAmount) (#878)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- Transfer(sender,recipient,tTransferAmount) (#888)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- Transfer(sender,recipient,tTransferAmount) (#898)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- Transfer(sender,recipient,tTransferAmount) (#909)
- _tokenTransfer(from,to,amount,takeFee) (#781)
Reentrancy in SincereTiger.constructor() (#516-538):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#526-527)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#537)
Reentrancy in SincereTiger.swapETHForTokens(uint256) (#822-837):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#836)
Reentrancy in SincereTiger.swapTokensForEth(uint256) (#802-820):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#811-817)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#819)
Reentrancy in SincereTiger.transferFrom(address,address,uint256) (#575-579):
External calls:
- _transfer(sender,recipient,amount) (#576)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#811-817)
External calls sending eth:
- _transfer(sender,recipient,amount) (#576)
- recipient.transfer(amount) (#1135)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#662)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#577)
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)
SincereTiger._transfer(address,address,uint256) (#665-782) uses timestamp for comparisons
Dangerous comparisons:
- overMinimumTokenBalance && _startTimeForSwap + _intervalMinutesForSwap <= block.timestamp (#691)
- _sellHistories[i].time >= startTime (#711)
- balance > _bBSLimit (#728)
SincereTiger.buyBackTokens(uint256) (#796-800) uses timestamp for comparisons
Dangerous comparisons:
- amount > 0 (#797)
SincereTiger._removeOldSellHistories() (#1014-1036) uses timestamp for comparisons
Dangerous comparisons:
- _sellHistories[j].time >= maxStartTimeForHistories (#1020)
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
SincereTiger.includeInReward(address) (#644-655) has costly operations inside a loop:
- _excluded.pop() (#651)
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
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
SincereTiger.addLiquidity(uint256,uint256) (#839-852) is never used and should be removed
Remove unused functions.
Additional information: link
SincereTiger._rTotal (#426) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
SincereTiger._previousTaxFee (#449) is set pre-construction with a non-constant function or state variable:
- _taxFee
SincereTiger._previousLiquidityFee (#452) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
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) (#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() (#236) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#237) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#253) is not in mixedCase
Function IUniswapV2Router01.WETH() (#274) is not in mixedCase
Parameter SincereTiger.calculateTaxFee(uint256)._amount (#963) is not in mixedCase
Parameter SincereTiger.calculateLiquidityFee(uint256)._amount (#969) is not in mixedCase
Function SincereTiger.SetBuyBackMaxTimeForHistories(uint256) (#1038-1040) is not in mixedCase
Function SincereTiger.SetBuyBackDivisor(uint256) (#1042-1044) is not in mixedCase
Function SincereTiger.GetBuyBackTimeInterval() (#1046-1048) is not in mixedCase
Function SincereTiger.SetBuyBackTimeInterval(uint256) (#1050-1052) is not in mixedCase
Function SincereTiger.SetBuyBackRangeRate(uint256) (#1054-1057) is not in mixedCase
Function SincereTiger.GetSwapMinutes() (#1059-1061) is not in mixedCase
Function SincereTiger.SetSwapMinutes(uint256) (#1063-1065) is not in mixedCase
Parameter SincereTiger.setNumTokensSellToAddToBuyBack(uint256)._minimumTokensBeforeSwap (#1097) is not in mixedCase
Parameter SincereTiger.setMarketingAddress(address)._marketingAddress (#1101) is not in mixedCase
Parameter SincereTiger.setSwapAndLiquifyEnabled(bool)._enabled (#1105) is not in mixedCase
Parameter SincereTiger.setBuyBackEnabled(bool)._enabled (#1110) is not in mixedCase
Parameter SincereTiger.setAutoBuyBackEnabled(bool)._enabled (#1115) is not in mixedCase
Parameter SincereTiger.changeRouterVersion(address)._router (#1138) is not in mixedCase
Parameter SincereTiger.transferForeignToken(address,address)._token (#1157) is not in mixedCase
Parameter SincereTiger.transferForeignToken(address,address)._to (#1157) is not in mixedCase
Function SincereTiger.Sweep() (#1163-1166) is not in mixedCase
Parameter SincereTiger.setAddressFee(address,bool,uint256,uint256)._address (#1168) is not in mixedCase
Parameter SincereTiger.setAddressFee(address,bool,uint256,uint256)._enable (#1168) is not in mixedCase
Parameter SincereTiger.setAddressFee(address,bool,uint256,uint256)._addressTaxFee (#1168) is not in mixedCase
Parameter SincereTiger.setAddressFee(address,bool,uint256,uint256)._addressLiquidityFee (#1168) is not in mixedCase
Parameter SincereTiger.setBuyAddressFee(address,bool,uint256,uint256)._address (#1174) is not in mixedCase
Parameter SincereTiger.setBuyAddressFee(address,bool,uint256,uint256)._enable (#1174) is not in mixedCase
Parameter SincereTiger.setBuyAddressFee(address,bool,uint256,uint256)._addressTaxFee (#1174) is not in mixedCase
Parameter SincereTiger.setBuyAddressFee(address,bool,uint256,uint256)._addressLiquidityFee (#1174) is not in mixedCase
Parameter SincereTiger.setSellAddressFee(address,bool,uint256,uint256)._address (#1180) is not in mixedCase
Parameter SincereTiger.setSellAddressFee(address,bool,uint256,uint256)._enable (#1180) is not in mixedCase
Parameter SincereTiger.setSellAddressFee(address,bool,uint256,uint256)._addressTaxFee (#1180) is not in mixedCase
Parameter SincereTiger.setSellAddressFee(address,bool,uint256,uint256)._addressLiquidityFee (#1180) is not in mixedCase
Variable SincereTiger._taxFee (#448) is not in mixedCase
Variable SincereTiger._liquidityFee (#451) is not in mixedCase
Variable SincereTiger._buyTaxFee (#454) is not in mixedCase
Variable SincereTiger._buyLiquidityFee (#455) is not in mixedCase
Variable SincereTiger._sellTaxFee (#457) is not in mixedCase
Variable SincereTiger._sellLiquidityFee (#458) is not in mixedCase
Variable SincereTiger._startTimeForSwap (#460) is not in mixedCase
Variable SincereTiger._intervalMinutesForSwap (#461) is not in mixedCase
Variable SincereTiger._buyBackRangeRate (#463) is not in mixedCase
Variable SincereTiger._addressFees (#466) is not in mixedCase
Variable SincereTiger._maxTxAmount (#470) is not in mixedCase
Variable SincereTiger._sellHistories (#475) is not in mixedCase
Variable SincereTiger._isAutoBuyBack (#476) is not in mixedCase
Variable SincereTiger._buyBackDivisor (#477) is not in mixedCase
Variable SincereTiger._buyBackTimeInterval (#478) is not in mixedCase
Variable SincereTiger._buyBackMaxTimeForHistories (#479) is not in mixedCase
Variable SincereTiger._isEnabledBuyBackAndBurn (#488) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Reentrancy in SincereTiger._transfer(address,address,uint256) (#665-782):
External calls:
- swapTokens(contractTokenBalance) (#694)
- recipient.transfer(amount) (#1135)
State variables written after the call(s):
- _removeOldSellHistories() (#721)
- _sellHistories[i].time = _sellHistories[j].time (#1022)
- _sellHistories[i].bnbAmount = _sellHistories[j].bnbAmount (#1023)
- _sellHistories.pop() (#1033)
Reentrancy in SincereTiger._transfer(address,address,uint256) (#665-782):
External calls:
- swapTokens(contractTokenBalance) (#694)
- recipient.transfer(amount) (#1135)
External calls sending eth:
- swapTokens(contractTokenBalance) (#694)
- recipient.transfer(amount) (#1135)
- buyBackTokens(_bBSLimit) (#729)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
State variables written after the call(s):
- removeAllFee() (#745)
- _liquidityFee = 0 (#982)
- _liquidityFee = _buyLiquidityFee (#747)
- removeAllFee() (#751)
- _liquidityFee = 0 (#982)
- _liquidityFee = _sellLiquidityFee (#753)
- removeAllFee() (#758)
- _liquidityFee = 0 (#982)
- _liquidityFee = _addressFees[from]._liquidityFee (#760)
- _liquidityFee = _addressFees[from]._sellLiquidityFee (#765)
- removeAllFee() (#772)
- _liquidityFee = 0 (#982)
- _liquidityFee = _addressFees[to]._buyLiquidityFee (#775)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _liquidityFee = _previousLiquidityFee (#987)
- _liquidityFee = 0 (#982)
- removeAllFee() (#745)
- _previousLiquidityFee = _liquidityFee (#979)
- removeAllFee() (#751)
- _previousLiquidityFee = _liquidityFee (#979)
- removeAllFee() (#758)
- _previousLiquidityFee = _liquidityFee (#979)
- removeAllFee() (#772)
- _previousLiquidityFee = _liquidityFee (#979)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _previousLiquidityFee = _liquidityFee (#979)
- removeAllFee() (#745)
- _previousTaxFee = _taxFee (#978)
- removeAllFee() (#751)
- _previousTaxFee = _taxFee (#978)
- removeAllFee() (#758)
- _previousTaxFee = _taxFee (#978)
- removeAllFee() (#772)
- _previousTaxFee = _taxFee (#978)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _previousTaxFee = _taxFee (#978)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#958)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#874)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#883)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#875)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#894)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#904)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#885)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#895)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#906)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _rTotal = _rTotal.sub(rFee) (#913)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _tFeeTotal = _tFeeTotal.add(tFee) (#914)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#960)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#893)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#903)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#884)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#905)
- removeAllFee() (#745)
- _taxFee = 0 (#981)
- _taxFee = _buyTaxFee (#746)
- removeAllFee() (#751)
- _taxFee = 0 (#981)
- _taxFee = _sellTaxFee (#752)
- removeAllFee() (#758)
- _taxFee = 0 (#981)
- _taxFee = _addressFees[from]._taxFee (#759)
- _taxFee = _addressFees[from]._sellTaxFee (#764)
- removeAllFee() (#772)
- _taxFee = 0 (#981)
- _taxFee = _addressFees[to]._buyTaxFee (#774)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- _taxFee = _previousTaxFee (#986)
- _taxFee = 0 (#981)
- buyBackTokens(_bBSLimit) (#729)
- inSwapAndLiquify = true (#511)
- inSwapAndLiquify = false (#513)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#836)
- buyBackTokens(_bBSLimit) (#729)
- Transfer(sender,recipient,tTransferAmount) (#878)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- Transfer(sender,recipient,tTransferAmount) (#898)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- Transfer(sender,recipient,tTransferAmount) (#888)
- _tokenTransfer(from,to,amount,takeFee) (#781)
- Transfer(sender,recipient,tTransferAmount) (#909)
- _tokenTransfer(from,to,amount,takeFee) (#781)
Reentrancy in SincereTiger.transferFrom(address,address,uint256) (#575-579):
External calls:
- _transfer(sender,recipient,amount) (#576)
- recipient.transfer(amount) (#1135)
External calls sending eth:
- _transfer(sender,recipient,amount) (#576)
- recipient.transfer(amount) (#1135)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#829-834)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#577)
- _allowances[owner][spender] = amount (#661)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#662)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#577)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#279) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#280)
Variable SincereTiger._transferBothExcluded(address,address,uint256).rTransferAmount (#902) is too similar to SincereTiger._transferStandard(address,address,uint256).tTransferAmount (#873)
Variable SincereTiger._transferFromExcluded(address,address,uint256).rTransferAmount (#892) is too similar to SincereTiger._getValues(uint256).tTransferAmount (#918)
Variable SincereTiger._transferToExcluded(address,address,uint256).rTransferAmount (#882) is too similar to SincereTiger._transferStandard(address,address,uint256).tTransferAmount (#873)
Variable SincereTiger._transferBothExcluded(address,address,uint256).rTransferAmount (#902) is too similar to SincereTiger._transferBothExcluded(address,address,uint256).tTransferAmount (#902)
Variable SincereTiger._transferStandard(address,address,uint256).rTransferAmount (#873) is too similar to SincereTiger._getTValues(uint256).tTransferAmount (#926)
Variable SincereTiger.reflectionFromToken(uint256,bool).rTransferAmount (#623) is too similar to SincereTiger._transferStandard(address,address,uint256).tTransferAmount (#873)
Variable SincereTiger._transferFromExcluded(address,address,uint256).rTransferAmount (#892) is too similar to SincereTiger._transferStandard(address,address,uint256).tTransferAmount (#873)
Variable SincereTiger.reflectionFromToken(uint256,bool).rTransferAmount (#623) is too similar to SincereTiger._transferBothExcluded(address,address,uint256).tTransferAmount (#902)
Variable SincereTiger._transferFromExcluded(address,address,uint256).rTransferAmount (#892) is too similar to SincereTiger._transferBothExcluded(address,address,uint256).tTransferAmount (#902)
Variable SincereTiger._transferBothExcluded(address,address,uint256).rTransferAmount (#902) is too similar to SincereTiger._transferFromExcluded(address,address,uint256).tTransferAmount (#892)
Variable SincereTiger._transferToExcluded(address,address,uint256).rTransferAmount (#882) is too similar to SincereTiger._transferFromExcluded(address,address,uint256).tTransferAmount (#892)
Variable SincereTiger._transferStandard(address,address,uint256).rTransferAmount (#873) is too similar to SincereTiger._transferStandard(address,address,uint256).tTransferAmount (#873)
Variable SincereTiger._transferBothExcluded(address,address,uint256).rTransferAmount (#902) is too similar to SincereTiger._transferToExcluded(address,address,uint256).tTransferAmount (#882)
Variable SincereTiger.reflectionFromToken(uint256,bool).rTransferAmount (#623) is too similar to SincereTiger._transferFromExcluded(address,address,uint256).tTransferAmount (#892)
Variable SincereTiger._transferToExcluded(address,address,uint256).rTransferAmount (#882) is too similar to SincereTiger._transferToExcluded(address,address,uint256).tTransferAmount (#882)
Variable SincereTiger._transferFromExcluded(address,address,uint256).rTransferAmount (#892) is too similar to SincereTiger._transferFromExcluded(address,address,uint256).tTransferAmount (#892)
Variable SincereTiger._transferBothExcluded(address,address,uint256).rTransferAmount (#902) is too similar to SincereTiger._getTValues(uint256).tTransferAmount (#926)
Variable SincereTiger._transferBothExcluded(address,address,uint256).rTransferAmount (#902) is too similar to SincereTiger._getValues(uint256).tTransferAmount (#918)
Variable SincereTiger._transferToExcluded(address,address,uint256).rTransferAmount (#882) is too similar to SincereTiger._getTValues(uint256).tTransferAmount (#926)
Variable SincereTiger._transferToExcluded(address,address,uint256).rTransferAmount (#882) is too similar to SincereTiger._getValues(uint256).tTransferAmount (#918)
Variable SincereTiger._getValues(uint256).rTransferAmount (#919) is too similar to SincereTiger._getTValues(uint256).tTransferAmount (#926)
Variable SincereTiger.reflectionFromToken(uint256,bool).rTransferAmount (#623) is too similar to SincereTiger._transferToExcluded(address,address,uint256).tTransferAmount (#882)
Variable SincereTiger._transferFromExcluded(address,address,uint256).rTransferAmount (#892) is too similar to SincereTiger._transferToExcluded(address,address,uint256).tTransferAmount (#882)
Variable SincereTiger.reflectionFromToken(uint256,bool).rTransferAmount (#623) is too similar to SincereTiger._getTValues(uint256).tTransferAmount (#926)
Variable SincereTiger.reflectionFromToken(uint256,bool).rTransferAmount (#623) is too similar to SincereTiger._getValues(uint256).tTransferAmount (#918)
Variable SincereTiger._transferFromExcluded(address,address,uint256).rTransferAmount (#892) is too similar to SincereTiger._getTValues(uint256).tTransferAmount (#926)
Variable SincereTiger._getValues(uint256).rTransferAmount (#919) is too similar to SincereTiger._transferStandard(address,address,uint256).tTransferAmount (#873)
Variable SincereTiger._transferStandard(address,address,uint256).rTransferAmount (#873) is too similar to SincereTiger._getValues(uint256).tTransferAmount (#918)
Variable SincereTiger._transferStandard(address,address,uint256).rTransferAmount (#873) is too similar to SincereTiger._transferToExcluded(address,address,uint256).tTransferAmount (#882)
Variable SincereTiger._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#934) is too similar to SincereTiger._getValues(uint256).tTransferAmount (#918)
Variable SincereTiger._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#934) is too similar to SincereTiger._transferToExcluded(address,address,uint256).tTransferAmount (#882)
Variable SincereTiger._transferStandard(address,address,uint256).rTransferAmount (#873) is too similar to SincereTiger._transferBothExcluded(address,address,uint256).tTransferAmount (#902)
Variable SincereTiger._transferStandard(address,address,uint256).rTransferAmount (#873) is too similar to SincereTiger._transferFromExcluded(address,address,uint256).tTransferAmount (#892)
Variable SincereTiger._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#934) is too similar to SincereTiger._transferBothExcluded(address,address,uint256).tTransferAmount (#902)
Variable SincereTiger._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#934) is too similar to SincereTiger._getTValues(uint256).tTransferAmount (#926)
Variable SincereTiger._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#934) is too similar to SincereTiger._transferFromExcluded(address,address,uint256).tTransferAmount (#892)
Variable SincereTiger._getValues(uint256).rTransferAmount (#919) is too similar to SincereTiger._getValues(uint256).tTransferAmount (#918)
Variable SincereTiger._getValues(uint256).rTransferAmount (#919) is too similar to SincereTiger._transferToExcluded(address,address,uint256).tTransferAmount (#882)
Variable SincereTiger._getValues(uint256).rTransferAmount (#919) is too similar to SincereTiger._transferBothExcluded(address,address,uint256).tTransferAmount (#902)
Variable SincereTiger._getValues(uint256).rTransferAmount (#919) is too similar to SincereTiger._transferFromExcluded(address,address,uint256).tTransferAmount (#892)
Variable SincereTiger._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#934) is too similar to SincereTiger._transferStandard(address,address,uint256).tTransferAmount (#873)
Variable SincereTiger._transferToExcluded(address,address,uint256).rTransferAmount (#882) is too similar to SincereTiger._transferBothExcluded(address,address,uint256).tTransferAmount (#902)
Prevent variables from having similar names.
Additional information: link
SincereTiger.prepareForPreSale() (#1120-1125) uses literals with too many digits:
- _maxTxAmount = 1000000000 * 10 ** 6 * 10 ** 9 (#1124)
SincereTiger.afterPreSale() (#1127-1132) uses literals with too many digits:
- _maxTxAmount = 3000000 * 10 ** 6 * 10 ** 9 (#1131)
SincereTiger.slitherConstructorVariables() (#409-1187) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#414)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SincereTiger._decimals (#431) should be constant
SincereTiger._isEnabledBuyBackAndBurn (#488) should be constant
SincereTiger._name (#429) should be constant
SincereTiger._symbol (#430) should be constant
SincereTiger._tTotal (#425) 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:
- SincereTiger.name() (#540-542)
symbol() should be declared external:
- SincereTiger.symbol() (#544-546)
decimals() should be declared external:
- SincereTiger.decimals() (#548-550)
totalSupply() should be declared external:
- SincereTiger.totalSupply() (#552-554)
transfer(address,uint256) should be declared external:
- SincereTiger.transfer(address,uint256) (#561-564)
allowance(address,address) should be declared external:
- SincereTiger.allowance(address,address) (#566-568)
approve(address,uint256) should be declared external:
- SincereTiger.approve(address,uint256) (#570-573)
transferFrom(address,address,uint256) should be declared external:
- SincereTiger.transferFrom(address,address,uint256) (#575-579)
increaseAllowance(address,uint256) should be declared external:
- SincereTiger.increaseAllowance(address,uint256) (#581-584)
decreaseAllowance(address,uint256) should be declared external:
- SincereTiger.decreaseAllowance(address,uint256) (#586-589)
isExcludedFromReward(address) should be declared external:
- SincereTiger.isExcludedFromReward(address) (#591-593)
totalFees() should be declared external:
- SincereTiger.totalFees() (#595-597)
minimumTokensBeforeSwapAmount() should be declared external:
- SincereTiger.minimumTokensBeforeSwapAmount() (#599-601)
buyBackSellLimitAmount() should be declared external:
- SincereTiger.buyBackSellLimitAmount() (#603-605)
deliver(uint256) should be declared external:
- SincereTiger.deliver(uint256) (#607-614)
reflectionFromToken(uint256,bool) should be declared external:
- SincereTiger.reflectionFromToken(uint256,bool) (#617-626)
excludeFromReward(address) should be declared external:
- SincereTiger.excludeFromReward(address) (#634-642)
isExcludedFromFee(address) should be declared external:
- SincereTiger.isExcludedFromFee(address) (#990-992)
excludeFromFee(address) should be declared external:
- SincereTiger.excludeFromFee(address) (#994-996)
includeInFee(address) should be declared external:
- SincereTiger.includeInFee(address) (#998-1000)
GetBuyBackTimeInterval() should be declared external:
- SincereTiger.GetBuyBackTimeInterval() (#1046-1048)
GetSwapMinutes() should be declared external:
- SincereTiger.GetSwapMinutes() (#1059-1061)
setBuyBackEnabled(bool) should be declared external:
- SincereTiger.setBuyBackEnabled(bool) (#1110-1113)
setAutoBuyBackEnabled(bool) should be declared external:
- SincereTiger.setAutoBuyBackEnabled(bool) (#1115-1118)
changeRouterVersion(address) should be declared external:
- SincereTiger.changeRouterVersion(address) (#1138-1151)
transferForeignToken(address,address) should be declared external:
- SincereTiger.transferForeignToken(address,address) (#1157-1161)
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