Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Token.swapBNBForTokens(uint256) (#1559-1572) sends eth to arbitrary user
Dangerous calls:
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
Token.addLiquidity(uint256,uint256) (#1592-1605) sends eth to arbitrary user
Dangerous calls:
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in Token._transfer(address,address,uint256) (#1366-1440):
External calls:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
State variables written after the call(s):
- buyBackTokens(balance.div(100)) (#1412)
- inSwapAndLiquify = true (#960)
- inSwapAndLiquify = false (#962)
Reentrancy in Token._transfer(address,address,uint256) (#1366-1440):
External calls:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _burnFee = _previousBurnFee (#1347)
- _burnFee = 0 (#1337)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _buybackFee = _previousBuybackFee (#1349)
- _buybackFee = 0 (#1339)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _liquidityFee = _previousLiquidityFee (#1346)
- _liquidityFee = 0 (#1336)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1307)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1630)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1639)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1650)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1660)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1631)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1641)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1651)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1662)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _rTotal = _rTotal.sub(rFee) (#1262)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _rewardFee = _previousRewardFee (#1351)
- _rewardFee = 0 (#1341)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1309)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1649)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1659)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1640)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1661)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _walletCharityFee = _previousWalletCharityFee (#1350)
- _walletCharityFee = 0 (#1340)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _walletFee = _previousWalletFee (#1348)
- _walletFee = 0 (#1338)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend) (#1718)
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1723)
Reentrancy in Token._transfer(address,address,uint256) (#1366-1440):
External calls:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
State variables written after the call(s):
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
- _tDividendTotal = _tDividendTotal + value (#1768)
- _tDividendTotal = _tDividendTotal - value (#1776)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
- lastClaimTimes[account] = block.timestamp (#1969)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1769-1771)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1777-1779)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
- withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend) (#1718)
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1723)
Reentrancy in Token._transfer(address,address,uint256) (#1366-1440):
External calls:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1439)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
State variables written after the call(s):
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1439)
- _tDividendTotal = _tDividendTotal + value (#1768)
- _tDividendTotal = _tDividendTotal - value (#1776)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1439)
- lastClaimTimes[account] = block.timestamp (#1969)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1439)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1769-1771)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1777-1779)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1439)
- withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend) (#1718)
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1723)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- _tokenTransferNoFee(address(this),feeWalletCharity,spentAmount) (#1483)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1672)
- _rOwned[recipient] = _rOwned[recipient].add(rAmount) (#1673)
- _tokenTransferNoFee(address(this),feeWalletCharity,spentAmount) (#1483)
- _tOwned[sender] = _tOwned[sender].sub(amount) (#1676)
- _tOwned[recipient] = _tOwned[recipient].add(amount) (#1679)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- _tDividendTotal = _tDividendTotal + value (#1768)
- _tDividendTotal = _tDividendTotal - value (#1776)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1769-1771)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1777-1779)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend) (#1718)
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1723)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1489)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForRewardToken(spentAmount) (#1500)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- distributeDividends(newBalance_scope_4) (#1502)
- magnifiedDividendPerShare = magnifiedDividendPerShare.add((amount).mul(magnitude) / _tDividendTotal) (#1702-1704)
Apply the check-effects-interactions pattern.
Additional information: link
Token.recoverBEP20(address,uint256) (#1690-1695) ignores return value by IERC20(tokenAddress).transfer(owner(),tokenAmount) (#1694)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
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.
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056) contains a tautology or contradiction:
- require(bool,string)(fee.setRewardFee >= 0 && fee.setRewardFee <= maxTaxFee,RF err) (#1043)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056) contains a tautology or contradiction:
- require(bool,string)(fee.setWalletFee >= 0 && fee.setWalletFee <= maxWalletFee,WF err) (#1040)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056) contains a tautology or contradiction:
- require(bool,string)(fee.setTaxFee >= 0 && fee.setTaxFee <= maxTaxFee,TF err) (#1037)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056) contains a tautology or contradiction:
- require(bool,string)(fee.setBuybackFee >= 0 && fee.setBuybackFee <= maxBuybackFee,BBF err) (#1041)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056) contains a tautology or contradiction:
- require(bool,string)(fee.setLiqFee >= 0 && fee.setLiqFee <= maxLiqFee,LF err) (#1038)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056) contains a tautology or contradiction:
- require(bool,string)(fee.setWalletCharityFee >= 0 && fee.setWalletCharityFee <= maxWalletFee,WFT err) (#1042)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056) contains a tautology or contradiction:
- require(bool,string)(fee.setBurnFee >= 0 && fee.setBurnFee <= maxBurnFee,BF err) (#1039)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1188-1205) contains a tautology or contradiction:
- require(bool,string)(burnFee >= 0 && burnFee <= maxBurnFee,BF err) (#1191)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1188-1205) contains a tautology or contradiction:
- require(bool,string)(rewardFee >= 0 && rewardFee <= maxTaxFee,RF err) (#1195)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1188-1205) contains a tautology or contradiction:
- require(bool,string)(walletFee >= 0 && walletFee <= maxWalletFee,WF err) (#1192)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1188-1205) contains a tautology or contradiction:
- require(bool,string)(taxFee >= 0 && taxFee <= maxTaxFee,TF err) (#1189)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1188-1205) contains a tautology or contradiction:
- require(bool,string)(buybackFee >= 0 && buybackFee <= maxBuybackFee,BBF err) (#1193)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1188-1205) contains a tautology or contradiction:
- require(bool,string)(liquidityFee >= 0 && liquidityFee <= maxLiqFee,LF err) (#1190)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1188-1205) contains a tautology or contradiction:
- require(bool,string)(walletCharityFee >= 0 && walletCharityFee <= maxWalletFee,WFT err) (#1194)
Fix the incorrect comparison by changing the value type or the comparison.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#638-641)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#647-651)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#653-655)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#658-663)
unlock() should be declared external:
- Ownable.unlock() (#666-671)
name() should be declared external:
- Token.name() (#1058-1060)
updatePcsV2Router(address) should be declared external:
- Token.updatePcsV2Router(address) (#1062-1074)
symbol() should be declared external:
- Token.symbol() (#1076-1078)
decimals() should be declared external:
- Token.decimals() (#1080-1082)
transfer(address,uint256) should be declared external:
- Token.transfer(address,uint256) (#1093-1096)
allowance(address,address) should be declared external:
- Token.allowance(address,address) (#1098-1100)
approve(address,uint256) should be declared external:
- Token.approve(address,uint256) (#1102-1105)
transferFrom(address,address,uint256) should be declared external:
- Token.transferFrom(address,address,uint256) (#1107-1111)
increaseAllowance(address,uint256) should be declared external:
- Token.increaseAllowance(address,uint256) (#1113-1116)
decreaseAllowance(address,uint256) should be declared external:
- Token.decreaseAllowance(address,uint256) (#1118-1121)
isExcludedFromReward(address) should be declared external:
- Token.isExcludedFromReward(address) (#1123-1125)
totalFees() should be declared external:
- Token.totalFees() (#1127-1129)
deliver(uint256) should be declared external:
- Token.deliver(uint256) (#1131-1138)
reflectionFromToken(uint256,bool) should be declared external:
- Token.reflectionFromToken(uint256,bool) (#1140-1149)
excludeFromReward(address) should be declared external:
- Token.excludeFromReward(address) (#1157-1164)
excludeFromFee(address) should be declared external:
- Token.excludeFromFee(address) (#1180-1182)
includeInFee(address) should be declared external:
- Token.includeInFee(address) (#1184-1186)
buyBackUpperLimitAmount() should be declared external:
- Token.buyBackUpperLimitAmount() (#1207-1209)
setSwapAndLiquifyEnabled(bool) should be declared external:
- Token.setSwapAndLiquifyEnabled(bool) (#1229-1232)
isExcludedFromFee(address) should be declared external:
- Token.isExcludedFromFee(address) (#1354-1356)
recoverBEP20(address,uint256) should be declared external:
- Token.recoverBEP20(address,uint256) (#1690-1695)
withdrawDividend() should be declared external:
- Token.withdrawDividend() (#1711-1713)
dividendOf(address) should be declared external:
- Token.dividendOf(address) (#1732-1734)
withdrawnDividendOf(address) should be declared external:
- Token.withdrawnDividendOf(address) (#1740-1742)
excludeFromDividends(address) should be declared external:
- Token.excludeFromDividends(address) (#1794-1802)
getAccountDividendsInfoAtIndex(uint256) should be declared external:
- Token.getAccountDividendsInfoAtIndex(uint256) (#1866-1887)
updateGasForProcessing(uint256) should be declared external:
- Token.updateGasForProcessing(uint256) (#1977-1983)
Use the external attribute for functions never called from the contract.
Additional information: link
Token.swapAndLiquify(uint256) (#1442-1533) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_burnFee) (#1449)
Token.swapAndLiquify(uint256) (#1442-1533) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_walletFee) (#1455)
Token.swapAndLiquify(uint256) (#1442-1533) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_buybackFee) (#1473)
Token.swapAndLiquify(uint256) (#1442-1533) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_walletCharityFee) (#1479)
Token.swapAndLiquify(uint256) (#1442-1533) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_rewardFee) (#1498)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in Token._withdrawDividendOfUser(address) (#1715-1730):
External calls:
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
State variables written after the call(s):
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1723)
Reentrancy in Token.updatePcsV2Router(address) (#1062-1074):
External calls:
- pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).createPair(address(this),_pcsV2Router.WETH()) (#1069-1070)
State variables written after the call(s):
- pcsV2Router = _pcsV2Router (#1073)
Apply the check-effects-interactions pattern.
Additional information: link
Token.addLiquidity(uint256,uint256) (#1592-1605) ignores return value by pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
Ensure that all the return values of the function calls are used.
Additional information: link
Token.allowance(address,address).owner (#1098) shadows:
- Ownable.owner() (#619-621) (function)
Token._approve(address,address,uint256).owner (#1358) shadows:
- Ownable.owner() (#619-621) (function)
Token.dividendOf(address)._owner (#1732) shadows:
- Ownable._owner (#601) (state variable)
Token.withdrawableDividendOf(address)._owner (#1736) shadows:
- Ownable._owner (#601) (state variable)
Token.withdrawnDividendOf(address)._owner (#1740) shadows:
- Ownable._owner (#601) (state variable)
Token.accumulativeDividendOf(address)._owner (#1744) shadows:
- Ownable._owner (#601) (state variable)
Rename the local variables that shadow another component.
Additional information: link
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1188-1205) should emit an event for:
- _taxFee = taxFee (#1198)
- _liquidityFee = liquidityFee (#1199)
- _burnFee = burnFee (#1200)
- _buybackFee = buybackFee (#1201)
- _walletFee = walletFee (#1202)
- _walletCharityFee = walletCharityFee (#1203)
- _rewardFee = rewardFee (#1204)
Token.setBuybackUpperLimit(uint256) (#1211-1213) should emit an event for:
- buyBackUpperLimit = buyBackLimit * 10 ** 18 (#1212)
Token.setMaxTxPercent(uint256) (#1215-1220) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 4) (#1217-1219)
Token.setMaxWalletPercent(uint256) (#1222-1227) should emit an event for:
- _maxWalletAmount = _tTotal.mul(maxWalletPercent).div(10 ** 4) (#1224-1226)
Token.setMinimumTokenBalanceForDividends(uint256) (#1252-1255) should emit an event for:
- minimumTokenBalanceForDividends = _minimumTokenBalanceForDividends (#1254)
Token.updateGasForProcessing(uint256) (#1977-1983) should emit an event for:
- gasForProcessing = newValue (#1982)
Emit an event for critical parameter changes.
Additional information: link
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address)._rewardToken (#985) lacks a zero-check on :
- rewardToken = _rewardToken (#1008)
Check that the address is not zero.
Additional information: link
Token._withdrawDividendOfUser(address) (#1715-1730) has external calls inside a loop: success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in Token._transfer(address,address,uint256) (#1366-1440):
External calls:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _previousBurnFee = _burnFee (#1329)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _previousBuybackFee = _buybackFee (#1331)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _previousLiquidityFee = _liquidityFee (#1328)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _previousRewardFee = _rewardFee (#1333)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _previousTaxFee = _taxFee (#1327)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _previousWalletCharityFee = _walletCharityFee (#1332)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _previousWalletFee = _walletFee (#1330)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1263)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- _taxFee = _previousTaxFee (#1345)
- _taxFee = 0 (#1335)
Reentrancy in Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056):
External calls:
- transferEth(_feeReceiver,200000000000000000) (#990)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#992)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- _decimals = decimal (#997)
- _maxTxAmount = _tTotal.mul(setMxTxPer).div(10 ** 4) (#1011-1013)
- _maxWalletAmount = _tTotal.mul(setMxWalletPer).div(10 ** 4) (#1014-1016)
- _name = tokenName (#995)
- _rOwned[_msgSender()] = _rTotal (#1001)
- _rTotal = (MAX - (MAX % _tTotal)) (#999)
- _symbol = tokenSymbol (#996)
- _tTotal = amountOfTokenWei (#998)
- feeWallet = wallet.wallet (#1003)
- feeWalletCharity = wallet.walletCharity (#1004)
- minimumTokenBalanceForDividends = _minimumTokenBalanceForDividends (#1009)
- numTokensSellToAddToLiquidity = amountOfTokenWei.mul(1).div(1000) (#1018)
- rewardToken = _rewardToken (#1008)
- walletCharityFeeInBNB = wallet.walletCharityFeeInBNB (#1006)
- walletFeeInBNB = wallet.walletFeeInBNB (#1005)
Reentrancy in Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056):
External calls:
- transferEth(_feeReceiver,200000000000000000) (#990)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#992)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).createPair(address(this),_pcsV2Router.WETH()) (#1022-1023)
External calls sending eth:
- transferEth(_feeReceiver,200000000000000000) (#990)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#992)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- _burnFee = fee.setBurnFee (#1048)
- _buybackFee = fee.setBuybackFee (#1049)
- _isExcludedFromFee[_msgSender()] = true (#1028)
- _isExcludedFromFee[address(this)] = true (#1029)
- _liquidityFee = fee.setLiqFee (#1047)
- _rewardFee = fee.setRewardFee (#1052)
- _taxFee = fee.setTaxFee (#1046)
- _walletCharityFee = fee.setWalletCharityFee (#1051)
- _walletFee = fee.setWalletFee (#1050)
- excludedFromDividends[address(this)] = true (#1031)
- excludedFromDividends[_msgSender()] = true (#1032)
- excludedFromDividends[address(pcsV2Router)] = true (#1033)
- excludedFromDividends[address(0xdead)] = true (#1034)
- excludedFromDividends[address(pcsV2Pair)] = true (#1035)
- pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).createPair(address(this),_pcsV2Router.WETH()) (#1022-1023)
- pcsV2Router = _pcsV2Router (#1026)
Reentrancy in Token.processAccount(address,bool) (#1965-1975):
External calls:
- amount = _withdrawDividendOfUser(account) (#1966)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
State variables written after the call(s):
- lastClaimTimes[account] = block.timestamp (#1969)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- swapTokensForBNB(spentAmount) (#1474)
- _allowances[owner][spender] = amount (#1362)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- lastClaimTimes[account] = block.timestamp (#1969)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- swapTokensForBNB(spentAmount) (#1489)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- swapTokensForBNB(spentAmount) (#1489)
- _allowances[owner][spender] = amount (#1362)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1489)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForRewardToken(spentAmount) (#1500)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- swapTokensForRewardToken(spentAmount) (#1500)
- _allowances[owner][spender] = amount (#1362)
- distributeDividends(newBalance_scope_4) (#1502)
- totalDividendsDistributed = totalDividendsDistributed.add(amount) (#1707)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1489)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForRewardToken(spentAmount) (#1500)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- swapTokensForBNB(half) (#1520)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
State variables written after the call(s):
- swapTokensForBNB(half) (#1520)
- _allowances[owner][spender] = amount (#1362)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1489)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForRewardToken(spentAmount) (#1500)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- swapTokensForBNB(half) (#1520)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- addLiquidity(otherHalf,newBalance_scope_6) (#1526)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
- addLiquidity(otherHalf,newBalance_scope_6) (#1526)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance_scope_6) (#1526)
- _allowances[owner][spender] = amount (#1362)
Reentrancy in Token.transferFrom(address,address,uint256) (#1107-1111):
External calls:
- _transfer(sender,recipient,amount) (#1108)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1108)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#1109)
- _allowances[owner][spender] = amount (#1362)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Token._transfer(address,address,uint256) (#1366-1440):
External calls:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1970)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- DividendWithdrawn(user,_withdrawableDividend) (#1719)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- ProcessedDividendTracker(iterations,claims,_lastProcessedIndex,true,gas,tx.origin) (#1419)
- Transfer(sender,recipient,tTransferAmount) (#1634)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- Transfer(sender,recipient,tTransferAmount) (#1644)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- Transfer(sender,recipient,tTransferAmount) (#1654)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
- Transfer(sender,recipient,tTransferAmount) (#1665)
- _tokenTransfer(from,to,amount,takeFee) (#1436)
Reentrancy in Token._transfer(address,address,uint256) (#1366-1440):
External calls:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1970)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
- DividendWithdrawn(user,_withdrawableDividend) (#1719)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
Reentrancy in Token._transfer(address,address,uint256) (#1366-1440):
External calls:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1418)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1438)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1439)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1403)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- buyBackTokens(balance.div(100)) (#1412)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1970)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1439)
- DividendWithdrawn(user,_withdrawableDividend) (#1719)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1439)
Reentrancy in Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#982-1056):
External calls:
- transferEth(_feeReceiver,200000000000000000) (#990)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#992)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).createPair(address(this),_pcsV2Router.WETH()) (#1022-1023)
External calls sending eth:
- transferEth(_feeReceiver,200000000000000000) (#990)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#992)
- (res) = recipient.call{value: amount}() (#1685)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#1055)
Reentrancy in Token.processAccount(address,bool) (#1965-1975):
External calls:
- amount = _withdrawDividendOfUser(account) (#1966)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1970)
Reentrancy in Token.processDividendTracker(uint256) (#1985-1988):
External calls:
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1986)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,_lastProcessedIndex,false,gas,tx.origin) (#1987)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1363)
- swapTokensForBNB(spentAmount) (#1474)
- Transfer(sender,recipient,amount) (#1681)
- _tokenTransferNoFee(address(this),feeWalletCharity,spentAmount) (#1483)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1970)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- DividendWithdrawn(user,_withdrawableDividend) (#1719)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- swapTokensForBNB(spentAmount) (#1489)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1363)
- swapTokensForBNB(spentAmount) (#1489)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1489)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForRewardToken(spentAmount) (#1500)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1363)
- swapTokensForRewardToken(spentAmount) (#1500)
- DividendsDistributed(amount) (#1705)
- distributeDividends(newBalance_scope_4) (#1502)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1489)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForRewardToken(spentAmount) (#1500)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- swapTokensForBNB(half) (#1520)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1363)
- swapTokensForBNB(half) (#1520)
Reentrancy in Token.swapAndLiquify(uint256) (#1442-1533):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1459)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1464)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForBNB(spentAmount) (#1474)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1484)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- swapTokensForBNB(spentAmount) (#1489)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
- swapTokensForRewardToken(spentAmount) (#1500)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
- swapTokensForBNB(half) (#1520)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- addLiquidity(otherHalf,newBalance_scope_6) (#1526)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1467)
- (res) = recipient.call{value: amount}() (#1685)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1492)
- (res) = recipient.call{value: amount}() (#1685)
- addLiquidity(otherHalf,newBalance_scope_6) (#1526)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1363)
- addLiquidity(otherHalf,newBalance_scope_6) (#1526)
- SwapAndLiquify(half,newBalance_scope_6,otherHalf) (#1528)
Reentrancy in Token.transferFrom(address,address,uint256) (#1107-1111):
External calls:
- _transfer(sender,recipient,amount) (#1108)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1550-1556)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1720)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1583-1589)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1108)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1597-1604)
- (res) = recipient.call{value: amount}() (#1685)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1566-1571)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1363)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#1109)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#666-671) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#668)
Token.getAccountDividendsInfo(address) (#1822-1864) uses timestamp for comparisons
Dangerous comparisons:
- nextClaimTime > block.timestamp (#1861-1863)
Token.canAutoClaim(uint256) (#1889-1895) uses timestamp for comparisons
Dangerous comparisons:
- lastClaimTime > block.timestamp (#1890)
- block.timestamp.sub(lastClaimTime) >= claimWait (#1894)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#404-413) uses assembly
- INLINE ASM (#411)
Address._functionCallWithValue(address,bytes,uint256,string) (#497-518) uses assembly
- INLINE ASM (#510-513)
Do not use evm assembly.
Additional information: link
Token.includeInReward(address) (#1166-1177) has costly operations inside a loop:
- _excluded.pop() (#1173)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#497-518) is never used and should be removed
Address.functionCall(address,bytes) (#457-459) is never used and should be removed
Address.functionCall(address,bytes,string) (#467-469) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#482-484) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#492-495) is never used and should be removed
Address.isContract(address) (#404-413) is never used and should be removed
Address.sendValue(address,uint256) (#431-437) is never used and should be removed
Context._msgData() (#237-240) is never used and should be removed
IterableMapping.get(IterableMapping.Map,address) (#330-332) is never used and should be removed
SafeERC20._callOptionalReturn(IERC20,bytes) (#575-585) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (#548-557) is never used and should be removed
SafeERC20.safeDecreaseAllowance(IERC20,address,uint256) (#564-567) is never used and should be removed
SafeERC20.safeIncreaseAllowance(IERC20,address,uint256) (#559-562) is never used and should be removed
SafeERC20.safeTransfer(IERC20,address,uint256) (#533-535) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (#537-539) is never used and should be removed
SafeMath.mod(uint256,uint256) (#210-212) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#226-229) is never used and should be removed
SafeMathInt.abs(int256) (#295-298) is never used and should be removed
SafeMathInt.div(int256,int256) (#266-272) is never used and should be removed
SafeMathInt.mul(int256,int256) (#254-261) is never used and should be removed
Token._dtransfer(address,address,uint256) (#1754-1764) is never used and should be removed
Remove unused functions.
Additional information: link
Token._previousTaxFee (#914) is set pre-construction with a non-constant function or state variable:
- _taxFee
Token._previousRewardFee (#917) is set pre-construction with a non-constant function or state variable:
- _rewardFee
Token._previousLiquidityFee (#920) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
Token._previousBurnFee (#923) is set pre-construction with a non-constant function or state variable:
- _burnFee
Token._previousWalletFee (#926) is set pre-construction with a non-constant function or state variable:
- _walletFee
Token._previousWalletCharityFee (#929) is set pre-construction with a non-constant function or state variable:
- _walletCharityFee
Token._previousBuybackFee (#932) is set pre-construction with a non-constant function or state variable:
- _buybackFee
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) (#431-437):
- (success) = recipient.call{value: amount}() (#435)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#497-518):
- (success,returndata) = target.call{value: weiValue}(data) (#501)
Low level call in Token.transferEth(address,uint256) (#1684-1687):
- (res) = recipient.call{value: amount}() (#1685)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Router01.WETH() (#698) is not in mixedCase
Parameter Token.setSwapAndLiquifyEnabled(bool)._enabled (#1229) is not in mixedCase
Parameter Token.setMinimumTokenBalanceForDividends(uint256)._minimumTokenBalanceForDividends (#1252) is not in mixedCase
Parameter Token.calculateTaxFee(uint256)._amount (#1312) is not in mixedCase
Parameter Token.calculateLiquidityFee(uint256)._amount (#1318) is not in mixedCase
Parameter Token.dividendOf(address)._owner (#1732) is not in mixedCase
Parameter Token.withdrawableDividendOf(address)._owner (#1736) is not in mixedCase
Parameter Token.withdrawnDividendOf(address)._owner (#1740) is not in mixedCase
Parameter Token.accumulativeDividendOf(address)._owner (#1744) is not in mixedCase
Parameter Token.getAccountDividendsInfo(address)._account (#1822) is not in mixedCase
Variable Token._tDividendTotal (#860) is not in mixedCase
Constant Token.magnitude (#861) is not in UPPER_CASE_WITH_UNDERSCORES
Variable Token._tTotal (#903) is not in mixedCase
Variable Token._name (#909) is not in mixedCase
Variable Token._symbol (#910) is not in mixedCase
Variable Token._taxFee (#913) is not in mixedCase
Variable Token._rewardFee (#916) is not in mixedCase
Variable Token._liquidityFee (#919) is not in mixedCase
Variable Token._burnFee (#922) is not in mixedCase
Variable Token._walletFee (#925) is not in mixedCase
Variable Token._walletCharityFee (#928) is not in mixedCase
Variable Token._buybackFee (#931) is not in mixedCase
Variable Token._maxTxAmount (#945) is not in mixedCase
Variable Token._maxWalletAmount (#946) is not in mixedCase
Variable Token._isBlacklisted (#950) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#238)" inContext (#232-241)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#703) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#704)
Variable Token._withdrawDividendOfUser(address)._withdrawableDividend (#1716) is too similar to Token.getAccountDividendsInfo(address).withdrawableDividends (#1829)
Variable Token.swapAndLiquify(uint256).initialBalance_scope_1 (#1487) is too similar to Token.swapAndLiquify(uint256).initialBalance_scope_3 (#1499)
Variable Token.swapAndLiquify(uint256).initialBalance_scope_1 (#1487) is too similar to Token.swapAndLiquify(uint256).initialBalance_scope_5 (#1517)
Variable Token.swapAndLiquify(uint256).initialBalance_scope_3 (#1499) is too similar to Token.swapAndLiquify(uint256).initialBalance_scope_5 (#1517)
Variable Token.swapAndLiquify(uint256).newBalance_scope_2 (#1491) is too similar to Token.swapAndLiquify(uint256).newBalance_scope_4 (#1501)
Variable Token.swapAndLiquify(uint256).newBalance_scope_2 (#1491) is too similar to Token.swapAndLiquify(uint256).newBalance_scope_6 (#1523)
Variable Token.swapAndLiquify(uint256).newBalance_scope_4 (#1501) is too similar to Token.swapAndLiquify(uint256).newBalance_scope_6 (#1523)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1638) is too similar to Token._getValues(uint256).tTransferAmount (#1267)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1638) is too similar to Token._getTValues(uint256).tTransferAmount (#1275)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1629) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1648)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1658) is too similar to Token._getValues(uint256).tTransferAmount (#1267)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1638) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1629)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1658) is too similar to Token._getTValues(uint256).tTransferAmount (#1275)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1146) is too similar to Token._getValues(uint256).tTransferAmount (#1267)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1658) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1629)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1283) is too similar to Token._getValues(uint256).tTransferAmount (#1267)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1146) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1629)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1283) is too similar to Token._getTValues(uint256).tTransferAmount (#1275)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1648) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1648)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1283) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1629)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1638) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1648)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1629) is too similar to Token._getValues(uint256).tTransferAmount (#1267)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1658) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1648)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1638) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1658)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1629) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1629)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1146) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1648)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1658) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1658)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1283) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1648)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1638) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1638)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1648) is too similar to Token._getValues(uint256).tTransferAmount (#1267)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1648) is too similar to Token._getTValues(uint256).tTransferAmount (#1275)
Variable Token._getValues(uint256).rTransferAmount (#1268) is too similar to Token._getTValues(uint256).tTransferAmount (#1275)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1629) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1638)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1629) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1658)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1648) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1629)
Variable Token._getValues(uint256).rTransferAmount (#1268) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1629)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1146) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1638)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1146) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1658)
Variable Token._getValues(uint256).rTransferAmount (#1268) is too similar to Token._getValues(uint256).tTransferAmount (#1267)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1283) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1638)
Variable Token._getValues(uint256).rTransferAmount (#1268) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1648)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1629) is too similar to Token._getTValues(uint256).tTransferAmount (#1275)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1648) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1638)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1283) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1658)
Variable Token._getValues(uint256).rTransferAmount (#1268) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1638)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1648) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1658)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1146) is too similar to Token._getTValues(uint256).tTransferAmount (#1275)
Variable Token._getValues(uint256).rTransferAmount (#1268) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1658)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1658) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1638)
Prevent variables from having similar names.
Additional information: link
Token.updateGasForProcessing(uint256) (#1977-1983) uses literals with too many digits:
- require(bool,string)(newValue >= 200000 && newValue <= 5000000,gasForProcessing must be between 200,000 and 5,000,000) (#1978-1981)
Token.slitherConstructorVariables() (#837-1999) uses literals with too many digits:
- dead = 0x000000000000000000000000000000000000dEaD (#845)
Token.slitherConstructorVariables() (#837-1999) uses literals with too many digits:
- gasForProcessing = 300000 (#875)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#249) is never used in SafeMathInt (#247-305)
Remove unused state variables.
Additional information: link
Token.dead (#845) should be constant
Token.maxBurnFee (#849) should be constant
Token.maxBuybackFee (#851) should be constant
Token.maxLiqFee (#847) should be constant
Token.maxTaxFee (#848) should be constant
Token.maxWalletFee (#850) should be constant
Token.minMxTxPercentage (#852) should be constant
Token.minMxWalletPercentage (#853) should be constant
Token.mintedByUnicarve (#907) should be constant
Token.router (#898) should be constant
Add the constant attributes to state variables that never change.
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