SafeMars Token Logo

SAFEMARS Token

ALERT: phishing / airdrop scam

About SAFEMARS

Listings

Token 15 months
CoinGecko 15 months
CoinMarketCap 15 months
white paper

SAFEMARS is a yield and liquidity generation protocol. It taxes transactions and distributes 2% to holders and locks 2% to liquidity.

Social

Laser Scorebeta Last Audit: 1 June 2022

report
Token seems to be a scam (type: phishing / airdrop scam).

Reentrancy in SAFEMARS._transfer(address,address,uint256) (contracts/SAFEMARS.sol#946-995):
External calls:
- swapAndLiquify(contractTokenBalance) (contracts/SAFEMARS.sol#982)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SAFEMARS.sol#1029-1035)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (contracts/SAFEMARS.sol#982)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (contracts/SAFEMARS.sol#902)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/SAFEMARS.sol#1085)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/SAFEMARS.sol#1076)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/SAFEMARS.sol#1077)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/SAFEMARS.sol#1096)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (contracts/SAFEMARS.sol#815)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/SAFEMARS.sol#1097)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/SAFEMARS.sol#1087)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (contracts/SAFEMARS.sol#817)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- _rTotal = _rTotal.sub(rFee) (contracts/SAFEMARS.sol#857)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (contracts/SAFEMARS.sol#904)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (contracts/SAFEMARS.sol#814)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (contracts/SAFEMARS.sol#1095)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (contracts/SAFEMARS.sol#1086)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (contracts/SAFEMARS.sol#816)
Apply the check-effects-interactions pattern.

Additional information: link


Contract ownership is not renounced (belongs to a wallet)

Ownable.unlock() (contracts/SAFEMARS.sol#426-431) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now > _lockTime,Contract is locked until 7 days) (contracts/SAFEMARS.sol#428)
Avoid relying on block.timestamp.

Additional information: link

renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (contracts/SAFEMARS.sol#398-401)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (contracts/SAFEMARS.sol#407-411)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (contracts/SAFEMARS.sol#413-415)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (contracts/SAFEMARS.sol#418-423)
unlock() should be declared external:
- Ownable.unlock() (contracts/SAFEMARS.sol#426-431)
name() should be declared external:
- SAFEMARS.name() (contracts/SAFEMARS.sol#706-708)
symbol() should be declared external:
- SAFEMARS.symbol() (contracts/SAFEMARS.sol#710-712)
decimals() should be declared external:
- SAFEMARS.decimals() (contracts/SAFEMARS.sol#714-716)
totalSupply() should be declared external:
- SAFEMARS.totalSupply() (contracts/SAFEMARS.sol#718-720)
transfer(address,uint256) should be declared external:
- SAFEMARS.transfer(address,uint256) (contracts/SAFEMARS.sol#727-730)
allowance(address,address) should be declared external:
- SAFEMARS.allowance(address,address) (contracts/SAFEMARS.sol#732-734)
approve(address,uint256) should be declared external:
- SAFEMARS.approve(address,uint256) (contracts/SAFEMARS.sol#736-739)
transferFrom(address,address,uint256) should be declared external:
- SAFEMARS.transferFrom(address,address,uint256) (contracts/SAFEMARS.sol#741-745)
increaseAllowance(address,uint256) should be declared external:
- SAFEMARS.increaseAllowance(address,uint256) (contracts/SAFEMARS.sol#747-750)
decreaseAllowance(address,uint256) should be declared external:
- SAFEMARS.decreaseAllowance(address,uint256) (contracts/SAFEMARS.sol#752-755)
isExcludedFromReward(address) should be declared external:
- SAFEMARS.isExcludedFromReward(address) (contracts/SAFEMARS.sol#757-759)
totalFees() should be declared external:
- SAFEMARS.totalFees() (contracts/SAFEMARS.sol#761-763)
deliver(uint256) should be declared external:
- SAFEMARS.deliver(uint256) (contracts/SAFEMARS.sol#765-772)
reflectionFromToken(uint256,bool) should be declared external:
- SAFEMARS.reflectionFromToken(uint256,bool) (contracts/SAFEMARS.sol#774-783)
excludeFromReward(address) should be declared external:
- SAFEMARS.excludeFromReward(address) (contracts/SAFEMARS.sol#791-798)
excludeFromFee(address) should be declared external:
- SAFEMARS.excludeFromFee(address) (contracts/SAFEMARS.sol#823-825)
includeInFee(address) should be declared external:
- SAFEMARS.includeInFee(address) (contracts/SAFEMARS.sol#827-829)
setSwapAndLiquifyEnabled(bool) should be declared external:
- SAFEMARS.setSwapAndLiquifyEnabled(bool) (contracts/SAFEMARS.sol#845-848)
isExcludedFromFee(address) should be declared external:
- SAFEMARS.isExcludedFromFee(address) (contracts/SAFEMARS.sol#934-936)
Use the external attribute for functions never called from the contract.

Additional information: link

SAFEMARS._decimals (contracts/SAFEMARS.sol#656) should be constant
SAFEMARS._name (contracts/SAFEMARS.sol#654) should be constant
SAFEMARS._symbol (contracts/SAFEMARS.sol#655) should be constant
SAFEMARS._tTotal (contracts/SAFEMARS.sol#650) should be constant
SAFEMARS.numTokensSellToAddToLiquidity (contracts/SAFEMARS.sol#672) should be constant
Add the constant attributes to state variables that never change.

Additional information: link

Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/SAFEMARS.sol#508) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/SAFEMARS.sol#509)
Variable SAFEMARS._transferStandard(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1075) is too similar to SAFEMARS._getValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#862)
Variable SAFEMARS._getValues(uint256).rTransferAmount (contracts/SAFEMARS.sol#863) is too similar to SAFEMARS._getTValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#870)
Variable SAFEMARS._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (contracts/SAFEMARS.sol#878) is too similar to SAFEMARS._transferToExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1084)
Variable SAFEMARS._transferStandard(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1075) is too similar to SAFEMARS._transferStandard(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1075)
Variable SAFEMARS._transferStandard(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1075) is too similar to SAFEMARS._getTValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#870)
Variable SAFEMARS._transferFromExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1094) is too similar to SAFEMARS._getTValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#870)
Variable SAFEMARS.reflectionFromToken(uint256,bool).rTransferAmount (contracts/SAFEMARS.sol#780) is too similar to SAFEMARS._getTValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#870)
Variable SAFEMARS._getValues(uint256).rTransferAmount (contracts/SAFEMARS.sol#863) is too similar to SAFEMARS._transferToExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1084)
Variable SAFEMARS._transferToExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1084) is too similar to SAFEMARS._getTValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#870)
Variable SAFEMARS._transferStandard(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1075) is too similar to SAFEMARS._transferFromExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1094)
Variable SAFEMARS._transferStandard(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1075) is too similar to SAFEMARS._transferToExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1084)
Variable SAFEMARS._transferFromExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1094) is too similar to SAFEMARS._transferToExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1084)
Variable SAFEMARS._transferFromExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1094) is too similar to SAFEMARS._transferFromExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1094)
Variable SAFEMARS.reflectionFromToken(uint256,bool).rTransferAmount (contracts/SAFEMARS.sol#780) is too similar to SAFEMARS._transferToExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1084)
Variable SAFEMARS._transferToExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1084) is too similar to SAFEMARS._transferToExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1084)
Variable SAFEMARS._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (contracts/SAFEMARS.sol#878) is too similar to SAFEMARS._getTValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#870)
Variable SAFEMARS.reflectionFromToken(uint256,bool).rTransferAmount (contracts/SAFEMARS.sol#780) is too similar to SAFEMARS._transferBothExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#813)
Variable SAFEMARS.reflectionFromToken(uint256,bool).rTransferAmount (contracts/SAFEMARS.sol#780) is too similar to SAFEMARS._getValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#862)
Variable SAFEMARS.reflectionFromToken(uint256,bool).rTransferAmount (contracts/SAFEMARS.sol#780) is too similar to SAFEMARS._transferStandard(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1075)
Variable SAFEMARS._transferStandard(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1075) is too similar to SAFEMARS._transferBothExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#813)
Variable SAFEMARS.reflectionFromToken(uint256,bool).rTransferAmount (contracts/SAFEMARS.sol#780) is too similar to SAFEMARS._transferFromExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1094)
Variable SAFEMARS._transferBothExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#813) is too similar to SAFEMARS._transferBothExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#813)
Variable SAFEMARS._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (contracts/SAFEMARS.sol#878) is too similar to SAFEMARS._transferBothExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#813)
Variable SAFEMARS._transferBothExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#813) is too similar to SAFEMARS._transferStandard(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1075)
Variable SAFEMARS._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (contracts/SAFEMARS.sol#878) is too similar to SAFEMARS._transferStandard(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1075)
Variable SAFEMARS._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (contracts/SAFEMARS.sol#878) is too similar to SAFEMARS._getValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#862)
Variable SAFEMARS._transferBothExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#813) is too similar to SAFEMARS._getValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#862)
Variable SAFEMARS._transferFromExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1094) is too similar to SAFEMARS._transferBothExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#813)
Variable SAFEMARS._transferToExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1084) is too similar to SAFEMARS._transferBothExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#813)
Variable SAFEMARS._transferFromExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1094) is too similar to SAFEMARS._transferStandard(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1075)
Variable SAFEMARS._transferToExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1084) is too similar to SAFEMARS._transferStandard(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1075)
Variable SAFEMARS._transferFromExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1094) is too similar to SAFEMARS._getValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#862)
Variable SAFEMARS._getValues(uint256).rTransferAmount (contracts/SAFEMARS.sol#863) is too similar to SAFEMARS._transferBothExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#813)
Variable SAFEMARS._transferBothExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#813) is too similar to SAFEMARS._getTValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#870)
Variable SAFEMARS._transferToExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1084) is too similar to SAFEMARS._getValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#862)
Variable SAFEMARS._getValues(uint256).rTransferAmount (contracts/SAFEMARS.sol#863) is too similar to SAFEMARS._getValues(uint256).tTransferAmount (contracts/SAFEMARS.sol#862)
Variable SAFEMARS._transferBothExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#813) is too similar to SAFEMARS._transferFromExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1094)
Variable SAFEMARS._getValues(uint256).rTransferAmount (contracts/SAFEMARS.sol#863) is too similar to SAFEMARS._transferStandard(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1075)
Variable SAFEMARS._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (contracts/SAFEMARS.sol#878) is too similar to SAFEMARS._transferFromExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1094)
Variable SAFEMARS._transferToExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#1084) is too similar to SAFEMARS._transferFromExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1094)
Variable SAFEMARS._transferBothExcluded(address,address,uint256).rTransferAmount (contracts/SAFEMARS.sol#813) is too similar to SAFEMARS._transferToExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1084)
Variable SAFEMARS._getValues(uint256).rTransferAmount (contracts/SAFEMARS.sol#863) is too similar to SAFEMARS._transferFromExcluded(address,address,uint256).tTransferAmount (contracts/SAFEMARS.sol#1094)
Prevent variables from having similar names.

Additional information: link

SAFEMARS.allowance(address,address).owner (contracts/SAFEMARS.sol#732) shadows:
- Ownable.owner() (contracts/SAFEMARS.sol#379-381) (function)
SAFEMARS._approve(address,address,uint256).owner (contracts/SAFEMARS.sol#938) shadows:
- Ownable.owner() (contracts/SAFEMARS.sol#379-381) (function)
Rename the local variables that shadow another component.

Additional information: link

SAFEMARS.setTaxFeePercent(uint256) (contracts/SAFEMARS.sol#831-833) should emit an event for:
- _taxFee = taxFee (contracts/SAFEMARS.sol#832)
SAFEMARS.setLiquidityFeePercent(uint256) (contracts/SAFEMARS.sol#835-837) should emit an event for:
- _liquidityFee = liquidityFee (contracts/SAFEMARS.sol#836)
SAFEMARS.setMaxTxPercent(uint256) (contracts/SAFEMARS.sol#839-843) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 2) (contracts/SAFEMARS.sol#840-842)
Emit an event for critical parameter changes.

Additional information: link

Reentrancy in SAFEMARS._transfer(address,address,uint256) (contracts/SAFEMARS.sol#946-995):
External calls:
- swapAndLiquify(contractTokenBalance) (contracts/SAFEMARS.sol#982)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SAFEMARS.sol#1029-1035)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (contracts/SAFEMARS.sol#982)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- _liquidityFee = _previousLiquidityFee (contracts/SAFEMARS.sol#931)
- _liquidityFee = 0 (contracts/SAFEMARS.sol#926)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- _previousLiquidityFee = _liquidityFee (contracts/SAFEMARS.sol#923)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- _previousTaxFee = _taxFee (contracts/SAFEMARS.sol#922)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- _tFeeTotal = _tFeeTotal.add(tFee) (contracts/SAFEMARS.sol#858)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- _taxFee = _previousTaxFee (contracts/SAFEMARS.sol#930)
- _taxFee = 0 (contracts/SAFEMARS.sol#925)
Reentrancy in SAFEMARS.constructor() (contracts/SAFEMARS.sol#688-704):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (contracts/SAFEMARS.sol#693-694)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (contracts/SAFEMARS.sol#700)
- _isExcludedFromFee[address(this)] = true (contracts/SAFEMARS.sol#701)
- uniswapV2Router = _uniswapV2Router (contracts/SAFEMARS.sol#697)
Reentrancy in SAFEMARS.swapAndLiquify(uint256) (contracts/SAFEMARS.sol#997-1018):
External calls:
- swapTokensForEth(half) (contracts/SAFEMARS.sol#1009)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SAFEMARS.sol#1029-1035)
- addLiquidity(otherHalf,newBalance) (contracts/SAFEMARS.sol#1015)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (contracts/SAFEMARS.sol#1015)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (contracts/SAFEMARS.sol#1015)
- _allowances[owner][spender] = amount (contracts/SAFEMARS.sol#942)
Reentrancy in SAFEMARS.transferFrom(address,address,uint256) (contracts/SAFEMARS.sol#741-745):
External calls:
- _transfer(sender,recipient,amount) (contracts/SAFEMARS.sol#742)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SAFEMARS.sol#1029-1035)
External calls sending eth:
- _transfer(sender,recipient,amount) (contracts/SAFEMARS.sol#742)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/SAFEMARS.sol#743)
- _allowances[owner][spender] = amount (contracts/SAFEMARS.sol#942)
Apply the check-effects-interactions pattern.

Additional information: link

SAFEMARS.addLiquidity(uint256,uint256) (contracts/SAFEMARS.sol#1038-1051) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
Ensure that all the return values of the function calls are used.

Additional information: link

Reentrancy in SAFEMARS._transfer(address,address,uint256) (contracts/SAFEMARS.sol#946-995):
External calls:
- swapAndLiquify(contractTokenBalance) (contracts/SAFEMARS.sol#982)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SAFEMARS.sol#1029-1035)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (contracts/SAFEMARS.sol#982)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (contracts/SAFEMARS.sol#1080)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- Transfer(sender,recipient,tTransferAmount) (contracts/SAFEMARS.sol#1090)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- Transfer(sender,recipient,tTransferAmount) (contracts/SAFEMARS.sol#1100)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
- Transfer(sender,recipient,tTransferAmount) (contracts/SAFEMARS.sol#820)
- _tokenTransfer(from,to,amount,takeFee) (contracts/SAFEMARS.sol#994)
Reentrancy in SAFEMARS.constructor() (contracts/SAFEMARS.sol#688-704):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (contracts/SAFEMARS.sol#693-694)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (contracts/SAFEMARS.sol#703)
Reentrancy in SAFEMARS.swapAndLiquify(uint256) (contracts/SAFEMARS.sol#997-1018):
External calls:
- swapTokensForEth(half) (contracts/SAFEMARS.sol#1009)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SAFEMARS.sol#1029-1035)
- addLiquidity(otherHalf,newBalance) (contracts/SAFEMARS.sol#1015)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (contracts/SAFEMARS.sol#1015)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/SAFEMARS.sol#943)
- addLiquidity(otherHalf,newBalance) (contracts/SAFEMARS.sol#1015)
- SwapAndLiquify(half,newBalance,otherHalf) (contracts/SAFEMARS.sol#1017)
Reentrancy in SAFEMARS.transferFrom(address,address,uint256) (contracts/SAFEMARS.sol#741-745):
External calls:
- _transfer(sender,recipient,amount) (contracts/SAFEMARS.sol#742)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/SAFEMARS.sol#1029-1035)
External calls sending eth:
- _transfer(sender,recipient,amount) (contracts/SAFEMARS.sol#742)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/SAFEMARS.sol#1043-1050)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/SAFEMARS.sol#943)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (contracts/SAFEMARS.sol#743)
Apply the check-effects-interactions pattern.

Additional information: link

Address.isContract(address) (contracts/SAFEMARS.sol#243-252) uses assembly
- INLINE ASM (contracts/SAFEMARS.sol#250)
Address._functionCallWithValue(address,bytes,uint256,string) (contracts/SAFEMARS.sol#336-357) uses assembly
- INLINE ASM (contracts/SAFEMARS.sol#349-352)
Do not use evm assembly.

Additional information: link

Address._functionCallWithValue(address,bytes,uint256,string) (contracts/SAFEMARS.sol#336-357) is never used and should be removed
Address.functionCall(address,bytes) (contracts/SAFEMARS.sol#296-298) is never used and should be removed
Address.functionCall(address,bytes,string) (contracts/SAFEMARS.sol#306-308) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (contracts/SAFEMARS.sol#321-323) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (contracts/SAFEMARS.sol#331-334) is never used and should be removed
Address.isContract(address) (contracts/SAFEMARS.sol#243-252) is never used and should be removed
Address.sendValue(address,uint256) (contracts/SAFEMARS.sol#270-276) is never used and should be removed
Context._msgData() (contracts/SAFEMARS.sol#219-222) is never used and should be removed
SafeMath.mod(uint256,uint256) (contracts/SAFEMARS.sol#192-194) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (contracts/SAFEMARS.sol#208-211) is never used and should be removed
Remove unused functions.

Additional information: link

SAFEMARS._rTotal (contracts/SAFEMARS.sol#651) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
SAFEMARS._previousTaxFee (contracts/SAFEMARS.sol#659) is set pre-construction with a non-constant function or state variable:
- _taxFee
SAFEMARS._previousLiquidityFee (contracts/SAFEMARS.sol#662) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.

Additional information: link

Low level call in Address.sendValue(address,uint256) (contracts/SAFEMARS.sol#270-276):
- (success) = recipient.call{value: amount}() (contracts/SAFEMARS.sol#274)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (contracts/SAFEMARS.sol#336-357):
- (success,returndata) = target.call{value: weiValue}(data) (contracts/SAFEMARS.sol#340)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence

Additional information: link

Function IUniswapV2Pair.DOMAIN_SEPARATOR() (contracts/SAFEMARS.sol#465) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (contracts/SAFEMARS.sol#466) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (contracts/SAFEMARS.sol#483) is not in mixedCase
Function IUniswapV2Router01.WETH() (contracts/SAFEMARS.sol#503) is not in mixedCase
Parameter SAFEMARS.setSwapAndLiquifyEnabled(bool)._enabled (contracts/SAFEMARS.sol#845) is not in mixedCase
Parameter SAFEMARS.calculateTaxFee(uint256)._amount (contracts/SAFEMARS.sol#907) is not in mixedCase
Parameter SAFEMARS.calculateLiquidityFee(uint256)._amount (contracts/SAFEMARS.sol#913) is not in mixedCase
Variable SAFEMARS._taxFee (contracts/SAFEMARS.sol#658) is not in mixedCase
Variable SAFEMARS._liquidityFee (contracts/SAFEMARS.sol#661) is not in mixedCase
Variable SAFEMARS._maxTxAmount (contracts/SAFEMARS.sol#671) is not in mixedCase
Follow the Solidity naming convention.

Additional information: link

Redundant expression "this (contracts/SAFEMARS.sol#220)" inContext (contracts/SAFEMARS.sol#214-223)
Remove redundant statements if they congest code but offer no value.

Additional information: link

SAFEMARS.slitherConstructorVariables() (contracts/SAFEMARS.sol#636-1106) uses literals with too many digits:
- _tTotal = 1000000000 * 10 ** 6 * 10 ** 9 (contracts/SAFEMARS.sol#650)
SAFEMARS.slitherConstructorVariables() (contracts/SAFEMARS.sol#636-1106) uses literals with too many digits:
- _maxTxAmount = 5000000 * 10 ** 6 * 10 ** 9 (contracts/SAFEMARS.sol#671)
SAFEMARS.slitherConstructorVariables() (contracts/SAFEMARS.sol#636-1106) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 500000 * 10 ** 6 * 10 ** 9 (contracts/SAFEMARS.sol#672)
Use: Ether suffix, Time suffix, or The scientific notation

Additional information: link

SAFEMARS.includeInReward(address) (contracts/SAFEMARS.sol#800-811) has costly operations inside a loop:
- _excluded.pop() (contracts/SAFEMARS.sol#807)
Use a local variable to hold the loop computation result.

Additional information: link

Holders:


Swap operations require suspiciously high gas. Contract logic is complex and may disguise some form of scam.


Token is deployed only at one blockchain

Contract has 4% buy tax and 4% sell tax.
Taxes are low but contract ownership is not renounced. Token has a high risk of becoming a honeypot.


Token makes many airdrops and seems to be a phishing / airdrop scam

Additional information: link


Unable to find Youtube account


Unable to find Discord account


Unable to find token on CoinHunt

Additional information: link


Unable to find Telegram link on the website


Unable to find Twitter link on the website


Token is not listed at Mobula.Finance

Additional information: link


Token is marked as scam (rug pull, honeypot, phishing, etc.)

Additional information: link

Price for SAFEMARS

News for SAFEMARS