Friendly #BSC coins. NFA, DYOR.
https://t.co/k8tSuzWxKL
BABYGIRL: 0x1febe7b1f02c007206147e1da9b9e128bfc89c48
MYSTGIRL: 0x9049e61f690b30ca40c9907a8fcee36626cd2673
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Token.swapBNBForTokens(uint256) (#1561-1574) sends eth to arbitrary user
Dangerous calls:
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
Token.addLiquidity(uint256,uint256) (#1594-1607) sends eth to arbitrary user
Dangerous calls:
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in Token._transfer(address,address,uint256) (#1367-1442):
External calls:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
State variables written after the call(s):
- buyBackTokens(balance.div(100)) (#1413)
- inSwapAndLiquify = true (#961)
- inSwapAndLiquify = false (#963)
Reentrancy in Token._transfer(address,address,uint256) (#1367-1442):
External calls:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _burnFee = _previousBurnFee (#1348)
- _burnFee = 0 (#1338)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _buybackFee = _previousBuybackFee (#1350)
- _buybackFee = 0 (#1340)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _liquidityFee = _previousLiquidityFee (#1347)
- _liquidityFee = 0 (#1337)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1308)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1632)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1641)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1652)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1662)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1633)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1643)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1653)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1664)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _rTotal = _rTotal.sub(rFee) (#1263)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _rewardFee = _previousRewardFee (#1352)
- _rewardFee = 0 (#1342)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1310)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1651)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1661)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1642)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1663)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _walletCharityFee = _previousWalletCharityFee (#1351)
- _walletCharityFee = 0 (#1341)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _walletFee = _previousWalletFee (#1349)
- _walletFee = 0 (#1339)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend) (#1726)
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1731)
Reentrancy in Token._transfer(address,address,uint256) (#1367-1442):
External calls:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
State variables written after the call(s):
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
- _tDividendTotal = _tDividendTotal + value (#1776)
- _tDividendTotal = _tDividendTotal - value (#1784)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
- lastClaimTimes[account] = block.timestamp (#1986)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1777-1779)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1785-1787)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
- withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend) (#1726)
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1731)
Reentrancy in Token._transfer(address,address,uint256) (#1367-1442):
External calls:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1441)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
State variables written after the call(s):
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1441)
- _tDividendTotal = _tDividendTotal + value (#1776)
- _tDividendTotal = _tDividendTotal - value (#1784)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1441)
- lastClaimTimes[account] = block.timestamp (#1986)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1441)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1777-1779)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1785-1787)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1441)
- withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend) (#1726)
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1731)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- _tokenTransferNoFee(address(this),feeWalletCharity,spentAmount) (#1485)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1674)
- _rOwned[recipient] = _rOwned[recipient].add(rAmount) (#1675)
- _tokenTransferNoFee(address(this),feeWalletCharity,spentAmount) (#1485)
- _tOwned[sender] = _tOwned[sender].sub(amount) (#1678)
- _tOwned[recipient] = _tOwned[recipient].add(amount) (#1681)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- _tDividendTotal = _tDividendTotal + value (#1776)
- _tDividendTotal = _tDividendTotal - value (#1784)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1777-1779)
- magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()) (#1785-1787)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend) (#1726)
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1731)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1491)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForRewardToken(spentAmount) (#1502)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- distributeDividends(newBalance_scope_4) (#1504)
- magnifiedDividendPerShare = magnifiedDividendPerShare.add((amount).mul(magnitude) / _tDividendTotal) (#1704-1706)
Apply the check-effects-interactions pattern.
Additional information: link
Token.recoverBEP20(address,uint256) (#1692-1697) ignores return value by IERC20(tokenAddress).transfer(owner(),tokenAmount) (#1696)
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) (#983-1057) contains a tautology or contradiction:
- require(bool,string)(fee.setWalletCharityFee >= 0 && fee.setWalletCharityFee <= maxWalletFee,WFT err) (#1043)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#983-1057) contains a tautology or contradiction:
- require(bool,string)(fee.setBurnFee >= 0 && fee.setBurnFee <= maxBurnFee,BF err) (#1040)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#983-1057) contains a tautology or contradiction:
- require(bool,string)(fee.setRewardFee >= 0 && fee.setRewardFee <= maxTaxFee,RF err) (#1044)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#983-1057) contains a tautology or contradiction:
- require(bool,string)(fee.setWalletFee >= 0 && fee.setWalletFee <= maxWalletFee,WF err) (#1041)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#983-1057) contains a tautology or contradiction:
- require(bool,string)(fee.setTaxFee >= 0 && fee.setTaxFee <= maxTaxFee,TF err) (#1038)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#983-1057) contains a tautology or contradiction:
- require(bool,string)(fee.setBuybackFee >= 0 && fee.setBuybackFee <= maxBuybackFee,BBF err) (#1042)
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#983-1057) contains a tautology or contradiction:
- require(bool,string)(fee.setLiqFee >= 0 && fee.setLiqFee <= maxLiqFee,LF err) (#1039)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1189-1206) contains a tautology or contradiction:
- require(bool,string)(walletCharityFee >= 0 && walletCharityFee <= maxWalletFee,WFT err) (#1195)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1189-1206) contains a tautology or contradiction:
- require(bool,string)(burnFee >= 0 && burnFee <= maxBurnFee,BF err) (#1192)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1189-1206) contains a tautology or contradiction:
- require(bool,string)(rewardFee >= 0 && rewardFee <= maxTaxFee,RF err) (#1196)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1189-1206) contains a tautology or contradiction:
- require(bool,string)(walletFee >= 0 && walletFee <= maxWalletFee,WF err) (#1193)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1189-1206) contains a tautology or contradiction:
- require(bool,string)(taxFee >= 0 && taxFee <= maxTaxFee,TF err) (#1190)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1189-1206) contains a tautology or contradiction:
- require(bool,string)(buybackFee >= 0 && buybackFee <= maxBuybackFee,BBF err) (#1194)
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1189-1206) contains a tautology or contradiction:
- require(bool,string)(liquidityFee >= 0 && liquidityFee <= maxLiqFee,LF err) (#1191)
Fix the incorrect comparison by changing the value type or the comparison.
Additional information: link
Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address)._rewardToken (#986) lacks a zero-check on :
- rewardToken = _rewardToken (#1009)
Check that the address is not zero.
Additional information: link
Token._withdrawDividendOfUser(address) (#1717-1738) has external calls inside a loop: curBalance = IERC20(rewardToken).balanceOf(address(this)) (#1721)
Token._withdrawDividendOfUser(address) (#1717-1738) has external calls inside a loop: success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in Token._transfer(address,address,uint256) (#1367-1442):
External calls:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _previousBurnFee = _burnFee (#1330)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _previousBuybackFee = _buybackFee (#1332)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _previousLiquidityFee = _liquidityFee (#1329)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _previousRewardFee = _rewardFee (#1334)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _previousTaxFee = _taxFee (#1328)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _previousWalletCharityFee = _walletCharityFee (#1333)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _previousWalletFee = _walletFee (#1331)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1264)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- _taxFee = _previousTaxFee (#1346)
- _taxFee = 0 (#1336)
Reentrancy in Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#983-1057):
External calls:
- transferEth(_feeReceiver,200000000000000000) (#991)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#993)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- _decimals = decimal (#998)
- _maxTxAmount = _tTotal.mul(setMxTxPer).div(10 ** 4) (#1012-1014)
- _maxWalletAmount = _tTotal.mul(setMxWalletPer).div(10 ** 4) (#1015-1017)
- _name = tokenName (#996)
- _rOwned[_msgSender()] = _rTotal (#1002)
- _rTotal = (MAX - (MAX % _tTotal)) (#1000)
- _symbol = tokenSymbol (#997)
- _tTotal = amountOfTokenWei (#999)
- feeWallet = wallet.wallet (#1004)
- feeWalletCharity = wallet.walletCharity (#1005)
- minimumTokenBalanceForDividends = _minimumTokenBalanceForDividends (#1010)
- numTokensSellToAddToLiquidity = amountOfTokenWei.mul(1).div(1000) (#1019)
- rewardToken = _rewardToken (#1009)
- walletCharityFeeInBNB = wallet.walletCharityFeeInBNB (#1007)
- walletFeeInBNB = wallet.walletFeeInBNB (#1006)
Reentrancy in Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#983-1057):
External calls:
- transferEth(_feeReceiver,200000000000000000) (#991)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#993)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).createPair(address(this),_pcsV2Router.WETH()) (#1023-1024)
External calls sending eth:
- transferEth(_feeReceiver,200000000000000000) (#991)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#993)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- _burnFee = fee.setBurnFee (#1049)
- _buybackFee = fee.setBuybackFee (#1050)
- _isExcludedFromFee[_msgSender()] = true (#1029)
- _isExcludedFromFee[address(this)] = true (#1030)
- _liquidityFee = fee.setLiqFee (#1048)
- _rewardFee = fee.setRewardFee (#1053)
- _taxFee = fee.setTaxFee (#1047)
- _walletCharityFee = fee.setWalletCharityFee (#1052)
- _walletFee = fee.setWalletFee (#1051)
- excludedFromDividends[address(this)] = true (#1032)
- excludedFromDividends[_msgSender()] = true (#1033)
- excludedFromDividends[address(pcsV2Router)] = true (#1034)
- excludedFromDividends[address(0xdead)] = true (#1035)
- excludedFromDividends[address(pcsV2Pair)] = true (#1036)
- pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).createPair(address(this),_pcsV2Router.WETH()) (#1023-1024)
- pcsV2Router = _pcsV2Router (#1027)
Reentrancy in Token.processAccount(address,bool) (#1978-1992):
External calls:
- amount = _withdrawDividendOfUser(account) (#1983)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
State variables written after the call(s):
- lastClaimTimes[account] = block.timestamp (#1986)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- swapTokensForBNB(spentAmount) (#1476)
- _allowances[owner][spender] = amount (#1363)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- lastClaimTimes[account] = block.timestamp (#1986)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- swapTokensForBNB(spentAmount) (#1491)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- swapTokensForBNB(spentAmount) (#1491)
- _allowances[owner][spender] = amount (#1363)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1491)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForRewardToken(spentAmount) (#1502)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- swapTokensForRewardToken(spentAmount) (#1502)
- _allowances[owner][spender] = amount (#1363)
- distributeDividends(newBalance_scope_4) (#1504)
- totalDividendsDistributed = totalDividendsDistributed.add(amount) (#1709)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1491)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForRewardToken(spentAmount) (#1502)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- swapTokensForBNB(half) (#1522)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
State variables written after the call(s):
- swapTokensForBNB(half) (#1522)
- _allowances[owner][spender] = amount (#1363)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1491)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForRewardToken(spentAmount) (#1502)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- swapTokensForBNB(half) (#1522)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- addLiquidity(otherHalf,newBalance_scope_6) (#1528)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
- addLiquidity(otherHalf,newBalance_scope_6) (#1528)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance_scope_6) (#1528)
- _allowances[owner][spender] = amount (#1363)
Reentrancy in Token.transferFrom(address,address,uint256) (#1108-1112):
External calls:
- _transfer(sender,recipient,amount) (#1109)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1109)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#1110)
- _allowances[owner][spender] = amount (#1363)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Token._transfer(address,address,uint256) (#1367-1442):
External calls:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1987)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- DividendWithdrawn(user,_withdrawableDividend) (#1727)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- ProcessedDividendTracker(iterations,claims,_lastProcessedIndex,true,gas,tx.origin) (#1421)
- Transfer(sender,recipient,tTransferAmount) (#1636)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- Transfer(sender,recipient,tTransferAmount) (#1646)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- Transfer(sender,recipient,tTransferAmount) (#1656)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
- Transfer(sender,recipient,tTransferAmount) (#1667)
- _tokenTransfer(from,to,amount,takeFee) (#1438)
Reentrancy in Token._transfer(address,address,uint256) (#1367-1442):
External calls:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1987)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
- DividendWithdrawn(user,_withdrawableDividend) (#1727)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
Reentrancy in Token._transfer(address,address,uint256) (#1367-1442):
External calls:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
- (iterations,claims,_lastProcessedIndex) = process(gas) (#1420)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- setBalance(address(from),balanceOf(from),currentBalanceFrom) (#1440)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1441)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1404)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- buyBackTokens(balance.div(100)) (#1413)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1987)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1441)
- DividendWithdrawn(user,_withdrawableDividend) (#1727)
- setBalance(address(to),balanceOf(to),currentBalanceTo) (#1441)
Reentrancy in Token.constructor(string,string,uint8,uint256,uint16,uint16,Token.FeeWallet,address,uint256,Token.Fee,address) (#983-1057):
External calls:
- transferEth(_feeReceiver,200000000000000000) (#991)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#993)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).createPair(address(this),_pcsV2Router.WETH()) (#1023-1024)
External calls sending eth:
- transferEth(_feeReceiver,200000000000000000) (#991)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(_msgSender(),msg.value.sub(200000000000000000)) (#993)
- (res) = recipient.call{value: amount}() (#1687)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#1056)
Reentrancy in Token.processAccount(address,bool) (#1978-1992):
External calls:
- amount = _withdrawDividendOfUser(account) (#1983)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1987)
Reentrancy in Token.processDividendTracker(uint256) (#2002-2005):
External calls:
- (iterations,claims,_lastProcessedIndex) = process(gas) (#2003)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,_lastProcessedIndex,false,gas,tx.origin) (#2004)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1364)
- swapTokensForBNB(spentAmount) (#1476)
- Transfer(sender,recipient,amount) (#1683)
- _tokenTransferNoFee(address(this),feeWalletCharity,spentAmount) (#1485)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1987)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- DividendWithdrawn(user,_withdrawableDividend) (#1727)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- swapTokensForBNB(spentAmount) (#1491)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1364)
- swapTokensForBNB(spentAmount) (#1491)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1491)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForRewardToken(spentAmount) (#1502)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1364)
- swapTokensForRewardToken(spentAmount) (#1502)
- DividendsDistributed(amount) (#1707)
- distributeDividends(newBalance_scope_4) (#1504)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1491)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForRewardToken(spentAmount) (#1502)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- swapTokensForBNB(half) (#1522)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1364)
- swapTokensForBNB(half) (#1522)
Reentrancy in Token.swapAndLiquify(uint256) (#1444-1535):
External calls:
- setBalance(address(feeWallet),balanceOf(feeWallet),currentBalance) (#1461)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1466)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForBNB(spentAmount) (#1476)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- setBalance(address(feeWalletCharity),balanceOf(feeWalletCharity),currentBalance_scope_0) (#1486)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
- swapTokensForBNB(spentAmount) (#1491)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
- swapTokensForRewardToken(spentAmount) (#1502)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- swapTokensForBNB(half) (#1522)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- addLiquidity(otherHalf,newBalance_scope_6) (#1528)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
External calls sending eth:
- transferEth(feeWallet,newBalance) (#1469)
- (res) = recipient.call{value: amount}() (#1687)
- transferEth(feeWalletCharity,newBalance_scope_2) (#1494)
- (res) = recipient.call{value: amount}() (#1687)
- addLiquidity(otherHalf,newBalance_scope_6) (#1528)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1364)
- addLiquidity(otherHalf,newBalance_scope_6) (#1528)
- SwapAndLiquify(half,newBalance_scope_6,otherHalf) (#1530)
Reentrancy in Token.transferFrom(address,address,uint256) (#1108-1112):
External calls:
- _transfer(sender,recipient,amount) (#1109)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
- pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1552-1558)
- pcsV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#1585-1591)
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1109)
- pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
- (res) = recipient.call{value: amount}() (#1687)
- pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,dead,block.timestamp.add(300)) (#1568-1573)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1364)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#1110)
Apply the check-effects-interactions pattern.
Additional information: link
Function IUniswapV2Router01.WETH() (#699) is not in mixedCase
Parameter Token.setSwapAndLiquifyEnabled(bool)._enabled (#1230) is not in mixedCase
Parameter Token.setMinimumTokenBalanceForDividends(uint256)._minimumTokenBalanceForDividends (#1253) is not in mixedCase
Parameter Token.calculateTaxFee(uint256)._amount (#1313) is not in mixedCase
Parameter Token.calculateLiquidityFee(uint256)._amount (#1319) is not in mixedCase
Parameter Token.dividendOf(address)._owner (#1740) is not in mixedCase
Parameter Token.withdrawableDividendOf(address)._owner (#1744) is not in mixedCase
Parameter Token.withdrawnDividendOf(address)._owner (#1748) is not in mixedCase
Parameter Token.accumulativeDividendOf(address)._owner (#1752) is not in mixedCase
Parameter Token.getAccountDividendsInfo(address)._account (#1835) is not in mixedCase
Variable Token._tDividendTotal (#861) is not in mixedCase
Constant Token.magnitude (#862) is not in UPPER_CASE_WITH_UNDERSCORES
Variable Token._tTotal (#904) is not in mixedCase
Variable Token._name (#910) is not in mixedCase
Variable Token._symbol (#911) is not in mixedCase
Variable Token._taxFee (#914) is not in mixedCase
Variable Token._rewardFee (#917) is not in mixedCase
Variable Token._liquidityFee (#920) is not in mixedCase
Variable Token._burnFee (#923) is not in mixedCase
Variable Token._walletFee (#926) is not in mixedCase
Variable Token._walletCharityFee (#929) is not in mixedCase
Variable Token._buybackFee (#932) is not in mixedCase
Variable Token._maxTxAmount (#946) is not in mixedCase
Variable Token._maxWalletAmount (#947) is not in mixedCase
Variable Token._isBlacklisted (#951) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#239)" inContext (#233-242)
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 (#704) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#705)
Variable Token._withdrawDividendOfUser(address)._withdrawableDividend (#1718) is too similar to Token.getAccountDividendsInfo(address).withdrawableDividends (#1842)
Variable Token.swapAndLiquify(uint256).initialBalance_scope_1 (#1489) is too similar to Token.swapAndLiquify(uint256).initialBalance_scope_3 (#1501)
Variable Token.swapAndLiquify(uint256).initialBalance_scope_1 (#1489) is too similar to Token.swapAndLiquify(uint256).initialBalance_scope_5 (#1519)
Variable Token.swapAndLiquify(uint256).initialBalance_scope_3 (#1501) is too similar to Token.swapAndLiquify(uint256).initialBalance_scope_5 (#1519)
Variable Token.swapAndLiquify(uint256).newBalance_scope_2 (#1493) is too similar to Token.swapAndLiquify(uint256).newBalance_scope_4 (#1503)
Variable Token.swapAndLiquify(uint256).newBalance_scope_2 (#1493) is too similar to Token.swapAndLiquify(uint256).newBalance_scope_6 (#1525)
Variable Token.swapAndLiquify(uint256).newBalance_scope_4 (#1503) is too similar to Token.swapAndLiquify(uint256).newBalance_scope_6 (#1525)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1284) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1650)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1284) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1631)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1631) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1631)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1147) is too similar to Token._getTValues(uint256).tTransferAmount (#1276)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1650) is too similar to Token._getTValues(uint256).tTransferAmount (#1276)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1640) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1640)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1147) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1631)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1650) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1650)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1650) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1631)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1147) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1650)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1284) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1640)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1660) is too similar to Token._getValues(uint256).tTransferAmount (#1268)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1631) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1640)
Variable Token._getValues(uint256).rTransferAmount (#1269) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1640)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1650) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1640)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1147) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1640)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1284) is too similar to Token._getValues(uint256).tTransferAmount (#1268)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1631) is too similar to Token._getValues(uint256).tTransferAmount (#1268)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1660) is too similar to Token._getTValues(uint256).tTransferAmount (#1276)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1147) is too similar to Token._getValues(uint256).tTransferAmount (#1268)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1650) is too similar to Token._getValues(uint256).tTransferAmount (#1268)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1660) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1650)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1660) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1631)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1660) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1660)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1284) is too similar to Token._getTValues(uint256).tTransferAmount (#1276)
Variable Token._transferBothExcluded(address,address,uint256).rTransferAmount (#1660) is too similar to Token._transferToExcluded(address,address,uint256).tTransferAmount (#1640)
Variable Token._transferFromExcluded(address,address,uint256).rTransferAmount (#1650) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1660)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1631) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1660)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1631) is too similar to Token._getTValues(uint256).tTransferAmount (#1276)
Variable Token._getValues(uint256).rTransferAmount (#1269) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1660)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1640) is too similar to Token._getTValues(uint256).tTransferAmount (#1276)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1640) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1660)
Variable Token.reflectionFromToken(uint256,bool).rTransferAmount (#1147) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1660)
Variable Token._getValues(uint256).rTransferAmount (#1269) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1631)
Variable Token._transferStandard(address,address,uint256).rTransferAmount (#1631) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1650)
Variable Token._getValues(uint256).rTransferAmount (#1269) is too similar to Token._getValues(uint256).tTransferAmount (#1268)
Variable Token._getValues(uint256).rTransferAmount (#1269) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1650)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1640) is too similar to Token._transferStandard(address,address,uint256).tTransferAmount (#1631)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1640) is too similar to Token._getValues(uint256).tTransferAmount (#1268)
Variable Token._transferToExcluded(address,address,uint256).rTransferAmount (#1640) is too similar to Token._transferFromExcluded(address,address,uint256).tTransferAmount (#1650)
Variable Token._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1284) is too similar to Token._transferBothExcluded(address,address,uint256).tTransferAmount (#1660)
Variable Token._getValues(uint256).rTransferAmount (#1269) is too similar to Token._getTValues(uint256).tTransferAmount (#1276)
Prevent variables from having similar names.
Additional information: link
SafeMathInt.MAX_INT256 (#250) is never used in SafeMathInt (#248-306)
Remove unused state variables.
Additional information: link
Token.swapAndLiquify(uint256) (#1444-1535) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_burnFee) (#1451)
Token.swapAndLiquify(uint256) (#1444-1535) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_walletFee) (#1457)
Token.swapAndLiquify(uint256) (#1444-1535) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_buybackFee) (#1475)
Token.swapAndLiquify(uint256) (#1444-1535) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_walletCharityFee) (#1481)
Token.swapAndLiquify(uint256) (#1444-1535) performs a multiplication on the result of a division:
-spentAmount = contractTokenBalance.div(totFee).mul(_rewardFee) (#1500)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in Token._withdrawDividendOfUser(address) (#1717-1738):
External calls:
- success = IERC20(rewardToken).transfer(user,_withdrawableDividend) (#1728)
State variables written after the call(s):
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1731)
Reentrancy in Token.updatePcsV2Router(address) (#1063-1075):
External calls:
- pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).createPair(address(this),_pcsV2Router.WETH()) (#1070-1071)
State variables written after the call(s):
- pcsV2Router = _pcsV2Router (#1074)
Apply the check-effects-interactions pattern.
Additional information: link
Token.addLiquidity(uint256,uint256) (#1594-1607) ignores return value by pcsV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,dead,block.timestamp) (#1599-1606)
Ensure that all the return values of the function calls are used.
Additional information: link
Token.allowance(address,address).owner (#1099) shadows:
- Ownable.owner() (#620-622) (function)
Token._approve(address,address,uint256).owner (#1359) shadows:
- Ownable.owner() (#620-622) (function)
Token.dividendOf(address)._owner (#1740) shadows:
- Ownable._owner (#602) (state variable)
Token.withdrawableDividendOf(address)._owner (#1744) shadows:
- Ownable._owner (#602) (state variable)
Token.withdrawnDividendOf(address)._owner (#1748) shadows:
- Ownable._owner (#602) (state variable)
Token.accumulativeDividendOf(address)._owner (#1752) shadows:
- Ownable._owner (#602) (state variable)
Rename the local variables that shadow another component.
Additional information: link
Token.setAllFeePercent(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1189-1206) should emit an event for:
- _taxFee = taxFee (#1199)
- _liquidityFee = liquidityFee (#1200)
- _burnFee = burnFee (#1201)
- _buybackFee = buybackFee (#1202)
- _walletFee = walletFee (#1203)
- _walletCharityFee = walletCharityFee (#1204)
- _rewardFee = rewardFee (#1205)
Token.setBuybackUpperLimit(uint256) (#1212-1214) should emit an event for:
- buyBackUpperLimit = buyBackLimit * 10 ** 18 (#1213)
Token.setMaxTxPercent(uint256) (#1216-1221) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 4) (#1218-1220)
Token.setMaxWalletPercent(uint256) (#1223-1228) should emit an event for:
- _maxWalletAmount = _tTotal.mul(maxWalletPercent).div(10 ** 4) (#1225-1227)
Token.setMinimumTokenBalanceForDividends(uint256) (#1253-1256) should emit an event for:
- minimumTokenBalanceForDividends = _minimumTokenBalanceForDividends (#1255)
Token.updateGasForProcessing(uint256) (#1994-2000) should emit an event for:
- gasForProcessing = newValue (#1999)
Emit an event for critical parameter changes.
Additional information: link
Ownable.unlock() (#667-672) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#669)
Token.getAccountDividendsInfo(address) (#1835-1877) uses timestamp for comparisons
Dangerous comparisons:
- nextClaimTime > block.timestamp (#1874-1876)
Token.canAutoClaim(uint256) (#1902-1908) uses timestamp for comparisons
Dangerous comparisons:
- lastClaimTime > block.timestamp (#1903)
- block.timestamp.sub(lastClaimTime) >= claimWait (#1907)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#405-414) uses assembly
- INLINE ASM (#412)
Address._functionCallWithValue(address,bytes,uint256,string) (#498-519) uses assembly
- INLINE ASM (#511-514)
Do not use evm assembly.
Additional information: link
Token.includeInReward(address) (#1167-1178) has costly operations inside a loop:
- _excluded.pop() (#1174)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#498-519) is never used and should be removed
Address.functionCall(address,bytes) (#458-460) is never used and should be removed
Address.functionCall(address,bytes,string) (#468-470) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#483-485) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#493-496) is never used and should be removed
Address.isContract(address) (#405-414) is never used and should be removed
Address.sendValue(address,uint256) (#432-438) is never used and should be removed
Context._msgData() (#238-241) is never used and should be removed
IterableMapping.get(IterableMapping.Map,address) (#331-333) is never used and should be removed
SafeERC20._callOptionalReturn(IERC20,bytes) (#576-586) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (#549-558) is never used and should be removed
SafeERC20.safeDecreaseAllowance(IERC20,address,uint256) (#565-568) is never used and should be removed
SafeERC20.safeIncreaseAllowance(IERC20,address,uint256) (#560-563) is never used and should be removed
SafeERC20.safeTransfer(IERC20,address,uint256) (#534-536) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (#538-540) is never used and should be removed
SafeMath.mod(uint256,uint256) (#211-213) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#227-230) is never used and should be removed
SafeMathInt.abs(int256) (#296-299) is never used and should be removed
SafeMathInt.div(int256,int256) (#267-273) is never used and should be removed
SafeMathInt.mul(int256,int256) (#255-262) is never used and should be removed
Token._dtransfer(address,address,uint256) (#1762-1772) is never used and should be removed
Remove unused functions.
Additional information: link
Token._previousTaxFee (#915) is set pre-construction with a non-constant function or state variable:
- _taxFee
Token._previousRewardFee (#918) is set pre-construction with a non-constant function or state variable:
- _rewardFee
Token._previousLiquidityFee (#921) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
Token._previousBurnFee (#924) is set pre-construction with a non-constant function or state variable:
- _burnFee
Token._previousWalletFee (#927) is set pre-construction with a non-constant function or state variable:
- _walletFee
Token._previousWalletCharityFee (#930) is set pre-construction with a non-constant function or state variable:
- _walletCharityFee
Token._previousBuybackFee (#933) 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) (#432-438):
- (success) = recipient.call{value: amount}() (#436)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#498-519):
- (success,returndata) = target.call{value: weiValue}(data) (#502)
Low level call in Token.transferEth(address,uint256) (#1686-1689):
- (res) = recipient.call{value: amount}() (#1687)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Token.updateGasForProcessing(uint256) (#1994-2000) uses literals with too many digits:
- require(bool,string)(newValue >= 200000 && newValue <= 5000000,gasForProcessing must be between 200,000 and 5,000,000) (#1995-1998)
Token.slitherConstructorVariables() (#838-2015) uses literals with too many digits:
- dead = 0x000000000000000000000000000000000000dEaD (#846)
Token.slitherConstructorVariables() (#838-2015) uses literals with too many digits:
- gasForProcessing = 300000 (#876)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Token.dead (#846) should be constant
Token.maxBurnFee (#850) should be constant
Token.maxBuybackFee (#852) should be constant
Token.maxLiqFee (#848) should be constant
Token.maxTaxFee (#849) should be constant
Token.maxWalletFee (#851) should be constant
Token.minMxTxPercentage (#853) should be constant
Token.minMxWalletPercentage (#854) should be constant
Token.mintedByUnicarve (#908) should be constant
Token.router (#899) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#639-642)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#648-652)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#654-656)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#659-664)
unlock() should be declared external:
- Ownable.unlock() (#667-672)
name() should be declared external:
- Token.name() (#1059-1061)
updatePcsV2Router(address) should be declared external:
- Token.updatePcsV2Router(address) (#1063-1075)
symbol() should be declared external:
- Token.symbol() (#1077-1079)
decimals() should be declared external:
- Token.decimals() (#1081-1083)
transfer(address,uint256) should be declared external:
- Token.transfer(address,uint256) (#1094-1097)
allowance(address,address) should be declared external:
- Token.allowance(address,address) (#1099-1101)
approve(address,uint256) should be declared external:
- Token.approve(address,uint256) (#1103-1106)
transferFrom(address,address,uint256) should be declared external:
- Token.transferFrom(address,address,uint256) (#1108-1112)
increaseAllowance(address,uint256) should be declared external:
- Token.increaseAllowance(address,uint256) (#1114-1117)
decreaseAllowance(address,uint256) should be declared external:
- Token.decreaseAllowance(address,uint256) (#1119-1122)
isExcludedFromReward(address) should be declared external:
- Token.isExcludedFromReward(address) (#1124-1126)
totalFees() should be declared external:
- Token.totalFees() (#1128-1130)
deliver(uint256) should be declared external:
- Token.deliver(uint256) (#1132-1139)
reflectionFromToken(uint256,bool) should be declared external:
- Token.reflectionFromToken(uint256,bool) (#1141-1150)
excludeFromReward(address) should be declared external:
- Token.excludeFromReward(address) (#1158-1165)
excludeFromFee(address) should be declared external:
- Token.excludeFromFee(address) (#1181-1183)
includeInFee(address) should be declared external:
- Token.includeInFee(address) (#1185-1187)
buyBackUpperLimitAmount() should be declared external:
- Token.buyBackUpperLimitAmount() (#1208-1210)
setSwapAndLiquifyEnabled(bool) should be declared external:
- Token.setSwapAndLiquifyEnabled(bool) (#1230-1233)
isExcludedFromFee(address) should be declared external:
- Token.isExcludedFromFee(address) (#1355-1357)
recoverBEP20(address,uint256) should be declared external:
- Token.recoverBEP20(address,uint256) (#1692-1697)
withdrawDividend() should be declared external:
- Token.withdrawDividend() (#1713-1715)
dividendOf(address) should be declared external:
- Token.dividendOf(address) (#1740-1742)
withdrawnDividendOf(address) should be declared external:
- Token.withdrawnDividendOf(address) (#1748-1750)
excludeFromDividends(address) should be declared external:
- Token.excludeFromDividends(address) (#1802-1815)
getAccountDividendsInfoAtIndex(uint256) should be declared external:
- Token.getAccountDividendsInfoAtIndex(uint256) (#1879-1900)
updateGasForProcessing(uint256) should be declared external:
- Token.updateGasForProcessing(uint256) (#1994-2000)
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
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 account
Twitter account has relatively few followers
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account