Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
MamaSaitama.swapAndLiquify(uint256) (#1557-1600) sends eth to arbitrary user
Dangerous calls:
- _devwallet.transfer(devAmt) (#1598)
MamaSaitama.claimETH() (#1795-1798) sends eth to arbitrary user
Dangerous calls:
- address(_devwallet).transfer(address(this).balance) (#1797)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in MamaSaitama._transfer(address,address,uint256) (#1496-1555):
External calls:
- swapAndLiquify(contractTokenBalance) (#1528)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1611-1617)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1528)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- address(_marketingAddress).transfer(marketingAmt) (#1594)
- _devwallet.transfer(devAmt) (#1598)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1397)
- _rOwned[address(this)] = _rOwned[address(this)].add(rWallet) (#1405)
- _rOwned[_donationAddress] = _rOwned[_donationAddress].add(rDonation) (#1413)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1687)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1718)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1750)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1688)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1781)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1720)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1751)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1783)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _rTotal = _rTotal.sub(rFee) (#1318)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _tOwned[address(this)] = _tOwned[address(this)].add(tWallet) (#1407)
- _tOwned[_donationAddress] = _tOwned[_donationAddress].add(tDonation) (#1415-1417)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1399)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1780)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1749)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1719)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1782)
Apply the check-effects-interactions pattern.
Additional information: link
MamaSaitama.claimTokens(address,uint256) (#1791-1794) ignores return value by IERC20(tokenAddress).transfer(owner(),tokenAmount) (#1793)
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.
Low level call in Address.sendValue(address,uint256) (#305-317):
- (success) = recipient.call{value: amount}() (#312)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#402-430):
- (success,returndata) = target.call{value: weiValue}(data) (#411-413)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
MamaSaitama.swapAndLiquify(uint256) (#1557-1600) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)) (#1574-1575)
-bnbToAddLiquidityWith = unitBalance * (buyFee.liquidity + sellFee.liquidity) (#1576-1577)
MamaSaitama.swapAndLiquify(uint256) (#1557-1600) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)) (#1574-1575)
-marketingAmt = unitBalance * 2 * (buyFee.marketing + sellFee.marketing) (#1585-1587)
MamaSaitama.swapAndLiquify(uint256) (#1557-1600) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)) (#1574-1575)
-unitBalance * 2 * (buyFee.dev + sellFee.dev) > address(this).balance (#1588-1591)
MamaSaitama.swapAndLiquify(uint256) (#1557-1600) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)) (#1574-1575)
-devAmt = unitBalance * 2 * (buyFee.dev + sellFee.dev) (#1588-1591)
Consider ordering multiplication before division.
Additional information: link
MamaSaitama._transfer(address,address,uint256) (#1496-1555) uses tx.origin for authorization: require(bool,string)(! _isBlackListedBot[tx.origin],blacklisted) (#1506)
Do not use tx.origin for authorization.
Additional information: link
MamaSaitama.addLiquidity(uint256,uint256) (#1620-1633) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
Ensure that all the return values of the function calls are used.
Additional information: link
MamaSaitama.allowance(address,address).owner (#1017) shadows:
- Ownable.owner() (#467-469) (function)
MamaSaitama._approve(address,address,uint256).owner (#1485) shadows:
- Ownable.owner() (#467-469) (function)
Rename the local variables that shadow another component.
Additional information: link
MamaSaitama.setNumTokensSellToAddToLiquidity(uint256) (#1294-1296) should emit an event for:
- numTokensSellToAddToLiquidity = numTokens (#1295)
MamaSaitama.setMaxTxPercent(uint256) (#1298-1300) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 3) (#1299)
MamaSaitama._setMaxWalletSizePercent(uint256) (#1302-1307) should emit an event for:
- _maxWalletSize = _tTotal.mul(maxWalletSize).div(10 ** 3) (#1306)
Emit an event for critical parameter changes.
Additional information: link
MamaSaitama.updateMarketingWallet(address).newAddress (#1165) lacks a zero-check on :
- _marketingAddress = newAddress (#1166)
MamaSaitama.updateDevWallet(address).newAddress (#1169) lacks a zero-check on :
- _devwallet = newAddress (#1170)
MamaSaitama.updateExchangeWallet(address).newAddress (#1173) lacks a zero-check on :
- _exchangewallet = newAddress (#1174)
Check that the address is not zero.
Additional information: link
Reentrancy in MamaSaitama._transfer(address,address,uint256) (#1496-1555):
External calls:
- swapAndLiquify(contractTokenBalance) (#1528)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1611-1617)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1528)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- address(_marketingAddress).transfer(marketingAmt) (#1594)
- _devwallet.transfer(devAmt) (#1598)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _devFee = 0 (#1457)
- _devFee = buyFee.dev (#1465)
- _devFee = sellFee.dev (#1473)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _donationFee = buyFee.donation (#1464)
- _donationFee = sellFee.donation (#1472)
- _donationFee = 0 (#1456)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _liquidityFee = sellFee.liquidity (#1470)
- _liquidityFee = 0 (#1454)
- _liquidityFee = buyFee.liquidity (#1462)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _marketingFee = buyFee.marketing (#1463)
- _marketingFee = sellFee.marketing (#1471)
- _marketingFee = 0 (#1455)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1319)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _taxFee = sellFee.tax (#1469)
- _taxFee = 0 (#1453)
- _taxFee = buyFee.tax (#1461)
Reentrancy in MamaSaitama.constructor() (#946-985):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#965-966)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#972)
- _isExcludedFromFee[address(this)] = true (#973)
- _isExcludedFromFee[_marketingAddress] = true (#974)
- _isExcludedFromFee[_devwallet] = true (#975)
- _isExcludedFromFee[_exchangewallet] = true (#976)
- _isExcludedFromLimit[_marketingAddress] = true (#978)
- _isExcludedFromLimit[_devwallet] = true (#979)
- _isExcludedFromLimit[_exchangewallet] = true (#980)
- _isExcludedFromLimit[owner()] = true (#981)
- _isExcludedFromLimit[address(this)] = true (#982)
- uniswapV2Router = _uniswapV2Router (#969)
Reentrancy in MamaSaitama.swapAndLiquify(uint256) (#1557-1600):
External calls:
- swapTokensForEth(toSwap) (#1571)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1611-1617)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#1581)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
External calls sending eth:
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#1581)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
State variables written after the call(s):
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#1581)
- _allowances[owner][spender] = amount (#1492)
Reentrancy in MamaSaitama.transferFrom(address,address,uint256) (#1035-1050):
External calls:
- _transfer(sender,recipient,amount) (#1040)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1611-1617)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1040)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- address(_marketingAddress).transfer(marketingAmt) (#1594)
- _devwallet.transfer(devAmt) (#1598)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#1041-1048)
- _allowances[owner][spender] = amount (#1492)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in MamaSaitama._transfer(address,address,uint256) (#1496-1555):
External calls:
- swapAndLiquify(contractTokenBalance) (#1528)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1611-1617)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1528)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- address(_marketingAddress).transfer(marketingAmt) (#1594)
- _devwallet.transfer(devAmt) (#1598)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1693)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- Transfer(sender,recipient,tTransferAmount) (#1725)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- Transfer(sender,recipient,tTransferAmount) (#1756)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- Transfer(sender,recipient,tTransferAmount) (#1788)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
Reentrancy in MamaSaitama.constructor() (#946-985):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#965-966)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#984)
Reentrancy in MamaSaitama.swapAndLiquify(uint256) (#1557-1600):
External calls:
- swapTokensForEth(toSwap) (#1571)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1611-1617)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#1581)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
External calls sending eth:
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#1581)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1493)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#1581)
Reentrancy in MamaSaitama.transferFrom(address,address,uint256) (#1035-1050):
External calls:
- _transfer(sender,recipient,amount) (#1040)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1611-1617)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1040)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- address(_marketingAddress).transfer(marketingAmt) (#1594)
- _devwallet.transfer(devAmt) (#1598)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1493)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#1041-1048)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#291-302) uses assembly
- INLINE ASM (#298-300)
Address._functionCallWithValue(address,bytes,uint256,string) (#402-430) uses assembly
- INLINE ASM (#422-425)
Do not use evm assembly.
Additional information: link
MamaSaitama.removeBotFromBlacklist(address) (#1188-1200) has costly operations inside a loop:
- _blackListedBots.pop() (#1196)
MamaSaitama.includeInReward(address) (#1211-1222) has costly operations inside a loop:
- _excluded.pop() (#1218)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#402-430) is never used and should be removed
Address.functionCall(address,bytes) (#337-342) is never used and should be removed
Address.functionCall(address,bytes,string) (#350-356) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#369-381) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#389-400) is never used and should be removed
Address.isContract(address) (#291-302) is never used and should be removed
Address.sendValue(address,uint256) (#305-317) is never used and should be removed
Context._msgData() (#264-267) is never used and should be removed
SafeMath.mod(uint256,uint256) (#233-235) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#249-256) is never used and should be removed
Remove unused functions.
Additional information: link
MamaSaitama._rTotal (#878) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
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
Pragma version^0.8.10 (#12) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.10 is not recommended for deployment
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#573) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#575) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#606) is not in mixedCase
Function IUniswapV2Router01.WETH() (#654) is not in mixedCase
Event MamaSaitamabotAddedToBlacklist(address) (#929) is not in CapWords
Event MamaSaitamabotRemovedFromBlacklist(address) (#930) is not in CapWords
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).buy_tax (#1269) is not in mixedCase
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).buy_liquidity (#1270) is not in mixedCase
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).buy_marketing (#1271) is not in mixedCase
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).buy_dev (#1272) is not in mixedCase
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).buy_donation (#1273) is not in mixedCase
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).sell_tax (#1274) is not in mixedCase
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).sell_liquidity (#1275) is not in mixedCase
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).sell_marketing (#1276) is not in mixedCase
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).sell_dev (#1277) is not in mixedCase
Parameter MamaSaitama.setBothFees(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16).sell_donation (#1278) is not in mixedCase
Function MamaSaitama._setMaxWalletSizePercent(uint256) (#1302-1307) is not in mixedCase
Parameter MamaSaitama.setSwapAndLiquifyEnabled(bool)._enabled (#1309) is not in mixedCase
Parameter MamaSaitama.calculateTaxFee(uint256)._amount (#1420) is not in mixedCase
Parameter MamaSaitama.calculateLiquidityFee(uint256)._amount (#1424) is not in mixedCase
Parameter MamaSaitama.calculateMarketingFee(uint256)._amount (#1432) is not in mixedCase
Parameter MamaSaitama.calculateDonationFee(uint256)._amount (#1440) is not in mixedCase
Parameter MamaSaitama.calculateDevFee(uint256)._amount (#1448) is not in mixedCase
Variable MamaSaitama._marketingAddress (#881-882) is not in mixedCase
Variable MamaSaitama._devwallet (#883-884) is not in mixedCase
Variable MamaSaitama._exchangewallet (#885-886) is not in mixedCase
Variable MamaSaitama._maxTxAmount (#925) is not in mixedCase
Variable MamaSaitama._maxWalletSize (#927) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#265)" inContext (#259-268)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in MamaSaitama._transfer(address,address,uint256) (#1496-1555):
External calls:
- swapAndLiquify(contractTokenBalance) (#1528)
- address(_marketingAddress).transfer(marketingAmt) (#1594)
- _devwallet.transfer(devAmt) (#1598)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1528)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- address(_marketingAddress).transfer(marketingAmt) (#1594)
- _devwallet.transfer(devAmt) (#1598)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _devFee = 0 (#1457)
- _devFee = buyFee.dev (#1465)
- _devFee = sellFee.dev (#1473)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _donationFee = buyFee.donation (#1464)
- _donationFee = sellFee.donation (#1472)
- _donationFee = 0 (#1456)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _liquidityFee = sellFee.liquidity (#1470)
- _liquidityFee = 0 (#1454)
- _liquidityFee = buyFee.liquidity (#1462)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _marketingFee = buyFee.marketing (#1463)
- _marketingFee = sellFee.marketing (#1471)
- _marketingFee = 0 (#1455)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1397)
- _rOwned[address(this)] = _rOwned[address(this)].add(rWallet) (#1405)
- _rOwned[_donationAddress] = _rOwned[_donationAddress].add(rDonation) (#1413)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1687)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1718)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1750)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1688)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1781)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1720)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1751)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1783)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _rTotal = _rTotal.sub(rFee) (#1318)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1319)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _tOwned[address(this)] = _tOwned[address(this)].add(tWallet) (#1407)
- _tOwned[_donationAddress] = _tOwned[_donationAddress].add(tDonation) (#1415-1417)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1399)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1780)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1749)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1719)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1782)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- _taxFee = sellFee.tax (#1469)
- _taxFee = 0 (#1453)
- _taxFee = buyFee.tax (#1461)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1693)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- Transfer(sender,recipient,tTransferAmount) (#1725)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- Transfer(sender,recipient,tTransferAmount) (#1756)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
- Transfer(sender,recipient,tTransferAmount) (#1788)
- _tokenTransfer(from,to,amount,takeFee) (#1554)
Reentrancy in MamaSaitama.transferFrom(address,address,uint256) (#1035-1050):
External calls:
- _transfer(sender,recipient,amount) (#1040)
- address(_marketingAddress).transfer(marketingAmt) (#1594)
- _devwallet.transfer(devAmt) (#1598)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1040)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#1625-1632)
- address(_marketingAddress).transfer(marketingAmt) (#1594)
- _devwallet.transfer(devAmt) (#1598)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#1041-1048)
- _allowances[owner][spender] = amount (#1492)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1493)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#1041-1048)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#659) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#660)
Variable MamaSaitama._transferFromExcluded(address,address,uint256).rTransferAmount (#1740) is too similar to MamaSaitama._getTValues(uint256).tTransferAmount (#1338)
Variable MamaSaitama._transferStandard(address,address,uint256).rTransferAmount (#1678) is too similar to MamaSaitama._transferFromExcluded(address,address,uint256).tTransferAmount (#1734)
Variable MamaSaitama._transferStandard(address,address,uint256).rTransferAmount (#1678) is too similar to MamaSaitama._transferToExcluded(address,address,uint256).tTransferAmount (#1703)
Variable MamaSaitama._transferBothExcluded(address,address,uint256).rTransferAmount (#1771) is too similar to MamaSaitama._transferToExcluded(address,address,uint256).tTransferAmount (#1703)
Variable MamaSaitama._transferBothExcluded(address,address,uint256).rTransferAmount (#1771) is too similar to MamaSaitama._transferFromExcluded(address,address,uint256).tTransferAmount (#1734)
Variable MamaSaitama._transferStandard(address,address,uint256).rTransferAmount (#1678) is too similar to MamaSaitama._getTValues(uint256).tTransferAmount (#1338)
Variable MamaSaitama._transferBothExcluded(address,address,uint256).rTransferAmount (#1771) is too similar to MamaSaitama._getTValues(uint256).tTransferAmount (#1338)
Variable MamaSaitama._getRValues(uint256,uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1366-1370) is too similar to MamaSaitama._transferStandard(address,address,uint256).tTransferAmount (#1672)
Variable MamaSaitama._getRValues(uint256,uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1366-1370) is too similar to MamaSaitama._transferBothExcluded(address,address,uint256).tTransferAmount (#1765)
Variable MamaSaitama._transferFromExcluded(address,address,uint256).rTransferAmount (#1740) is too similar to MamaSaitama._transferStandard(address,address,uint256).tTransferAmount (#1672)
Variable MamaSaitama._getRValues(uint256,uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1366-1370) is too similar to MamaSaitama._transferToExcluded(address,address,uint256).tTransferAmount (#1703)
Variable MamaSaitama._getRValues(uint256,uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1366-1370) is too similar to MamaSaitama._transferFromExcluded(address,address,uint256).tTransferAmount (#1734)
Variable MamaSaitama._getRValues(uint256,uint256,uint256,uint256,uint256,uint256).rTransferAmount (#1366-1370) is too similar to MamaSaitama._getTValues(uint256).tTransferAmount (#1338)
Variable MamaSaitama._transferFromExcluded(address,address,uint256).rTransferAmount (#1740) is too similar to MamaSaitama._transferBothExcluded(address,address,uint256).tTransferAmount (#1765)
Variable MamaSaitama._transferStandard(address,address,uint256).rTransferAmount (#1678) is too similar to MamaSaitama._transferStandard(address,address,uint256).tTransferAmount (#1672)
Variable MamaSaitama._transferBothExcluded(address,address,uint256).rTransferAmount (#1771) is too similar to MamaSaitama._transferStandard(address,address,uint256).tTransferAmount (#1672)
Variable MamaSaitama._transferStandard(address,address,uint256).rTransferAmount (#1678) is too similar to MamaSaitama._transferBothExcluded(address,address,uint256).tTransferAmount (#1765)
Variable MamaSaitama._transferToExcluded(address,address,uint256).rTransferAmount (#1709) is too similar to MamaSaitama._transferFromExcluded(address,address,uint256).tTransferAmount (#1734)
Variable MamaSaitama._transferFromExcluded(address,address,uint256).rTransferAmount (#1740) is too similar to MamaSaitama._transferToExcluded(address,address,uint256).tTransferAmount (#1703)
Variable MamaSaitama._transferFromExcluded(address,address,uint256).rTransferAmount (#1740) is too similar to MamaSaitama._transferFromExcluded(address,address,uint256).tTransferAmount (#1734)
Variable MamaSaitama._transferToExcluded(address,address,uint256).rTransferAmount (#1709) is too similar to MamaSaitama._getTValues(uint256).tTransferAmount (#1338)
Variable MamaSaitama._transferToExcluded(address,address,uint256).rTransferAmount (#1709) is too similar to MamaSaitama._transferStandard(address,address,uint256).tTransferAmount (#1672)
Variable MamaSaitama.reflectionFromToken(uint256,bool).rTransferAmount (#1135) is too similar to MamaSaitama._transferFromExcluded(address,address,uint256).tTransferAmount (#1734)
Variable MamaSaitama.reflectionFromToken(uint256,bool).rTransferAmount (#1135) is too similar to MamaSaitama._transferToExcluded(address,address,uint256).tTransferAmount (#1703)
Variable MamaSaitama.reflectionFromToken(uint256,bool).rTransferAmount (#1135) is too similar to MamaSaitama._getTValues(uint256).tTransferAmount (#1338)
Variable MamaSaitama._transferBothExcluded(address,address,uint256).rTransferAmount (#1771) is too similar to MamaSaitama._transferBothExcluded(address,address,uint256).tTransferAmount (#1765)
Variable MamaSaitama.reflectionFromToken(uint256,bool).rTransferAmount (#1135) is too similar to MamaSaitama._transferBothExcluded(address,address,uint256).tTransferAmount (#1765)
Variable MamaSaitama._transferToExcluded(address,address,uint256).rTransferAmount (#1709) is too similar to MamaSaitama._transferToExcluded(address,address,uint256).tTransferAmount (#1703)
Variable MamaSaitama._transferToExcluded(address,address,uint256).rTransferAmount (#1709) is too similar to MamaSaitama._transferBothExcluded(address,address,uint256).tTransferAmount (#1765)
Variable MamaSaitama.reflectionFromToken(uint256,bool).rTransferAmount (#1135) is too similar to MamaSaitama._transferStandard(address,address,uint256).tTransferAmount (#1672)
Prevent variables from having similar names.
Additional information: link
Ownable._previousOwner (#447) is never used in MamaSaitama (#859-1800)
Ownable._lockTime (#448) is never used in MamaSaitama (#859-1800)
Remove unused state variables.
Additional information: link
MamaSaitama._decimals (#892) should be constant
MamaSaitama._donationAddress (#887-888) should be constant
MamaSaitama._name (#890) should be constant
MamaSaitama._symbol (#891) should be constant
MamaSaitama._tTotal (#877) should be constant
Ownable._lockTime (#448) should be constant
Ownable._previousOwner (#447) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#486-489)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#495-502)
name() should be declared external:
- MamaSaitama.name() (#987-989)
symbol() should be declared external:
- MamaSaitama.symbol() (#991-993)
decimals() should be declared external:
- MamaSaitama.decimals() (#995-997)
totalSupply() should be declared external:
- MamaSaitama.totalSupply() (#999-1001)
transfer(address,uint256) should be declared external:
- MamaSaitama.transfer(address,uint256) (#1008-1015)
allowance(address,address) should be declared external:
- MamaSaitama.allowance(address,address) (#1017-1024)
approve(address,uint256) should be declared external:
- MamaSaitama.approve(address,uint256) (#1026-1033)
transferFrom(address,address,uint256) should be declared external:
- MamaSaitama.transferFrom(address,address,uint256) (#1035-1050)
increaseAllowance(address,uint256) should be declared external:
- MamaSaitama.increaseAllowance(address,uint256) (#1052-1063)
decreaseAllowance(address,uint256) should be declared external:
- MamaSaitama.decreaseAllowance(address,uint256) (#1065-1079)
isExcludedFromReward(address) should be declared external:
- MamaSaitama.isExcludedFromReward(address) (#1081-1083)
totalFees() should be declared external:
- MamaSaitama.totalFees() (#1085-1087)
donationAddress() should be declared external:
- MamaSaitama.donationAddress() (#1089-1091)
deliver(uint256) should be declared external:
- MamaSaitama.deliver(uint256) (#1093-1119)
reflectionFromToken(uint256,bool) should be declared external:
- MamaSaitama.reflectionFromToken(uint256,bool) (#1121-1149)
excludeFromReward(address) should be declared external:
- MamaSaitama.excludeFromReward(address) (#1202-1209)
excludeFromFee(address) should be declared external:
- MamaSaitama.excludeFromFee(address) (#1224-1226)
includeInFee(address) should be declared external:
- MamaSaitama.includeInFee(address) (#1228-1230)
excludeFromLimit(address) should be declared external:
- MamaSaitama.excludeFromLimit(address) (#1232-1234)
includeInLimit(address) should be declared external:
- MamaSaitama.includeInLimit(address) (#1236-1238)
setSwapAndLiquifyEnabled(bool) should be declared external:
- MamaSaitama.setSwapAndLiquifyEnabled(bool) (#1309-1312)
isExcludedFromFee(address) should be declared external:
- MamaSaitama.isExcludedFromFee(address) (#1476-1478)
isExcludedFromLimit(address) should be declared external:
- MamaSaitama.isExcludedFromLimit(address) (#1480-1482)
claimTokens(address,uint256) should be declared external:
- MamaSaitama.claimTokens(address,uint256) (#1791-1794)
claimETH() should be declared external:
- MamaSaitama.claimETH() (#1795-1798)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts