Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in Margex._transfer(address,address,uint256) (#622-660):
External calls:
- swapTokens(contractTokenBalance) (#640)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#689-695)
- buyBackTokens(balance.div(100)) (#648)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
External calls sending eth:
- swapTokens(contractTokenBalance) (#640)
- recipient.transfer(amount) (#933)
- buyBackTokens(balance.div(100)) (#648)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _liquidityFee = _previousLiquidityFee (#865)
- _liquidityFee = 0 (#860)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#836)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#752)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#761)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#772)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#782)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#753)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#763)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#773)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#784)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _rTotal = _rTotal.sub(rFee) (#791)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#838)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#771)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#781)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#762)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#783)
- buyBackTokens(balance.div(100)) (#648)
- inSwapAndLiquify = true (#476)
- inSwapAndLiquify = false (#478)
Apply the check-effects-interactions pattern.
Additional information: link
Margex.swapTokens(uint256) (#662-671) performs a multiplication on the result of a division:
-transferToAddressETH(marketingAddress,transferredBalance.div(_liquidityFee).mul(marketingDivisor)) (#669)
Consider ordering multiplication before division.
Additional information: link
Margex.addLiquidity(uint256,uint256) (#717-730) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#722-729)
Ensure that all the return values of the function calls are used.
Additional information: link
Margex.allowance(address,address).owner (#523) shadows:
- Ownable.owner() (#157-159) (function)
Margex._approve(address,address,uint256).owner (#614) shadows:
- Ownable.owner() (#157-159) (function)
Rename the local variables that shadow another component.
Additional information: link
Margex.setTaxFeePercent(uint256) (#880-882) should emit an event for:
- _taxFee = taxFee (#881)
Margex.setLiquidityFeePercent(uint256) (#884-886) should emit an event for:
- _liquidityFee = liquidityFee (#885)
Margex.setMaxTxAmount(uint256) (#888-890) should emit an event for:
- _maxTxAmount = maxTxAmount (#889)
Margex.setMarketingDivisor(uint256) (#892-894) should emit an event for:
- marketingDivisor = divisor (#893)
Margex.setNumTokensSellToAddToLiquidity(uint256) (#896-898) should emit an event for:
- minimumTokensBeforeSwap = _minimumTokensBeforeSwap (#897)
Margex.setBuybackUpperLimit(uint256) (#900-902) should emit an event for:
- buyBackUpperLimit = buyBackLimit * 10 ** 18 (#901)
Emit an event for critical parameter changes.
Additional information: link
Margex.setMarketingAddress(address)._marketingAddress (#904) lacks a zero-check on :
- marketingAddress = address(_marketingAddress) (#905)
Check that the address is not zero.
Additional information: link
Reentrancy in Margex._transfer(address,address,uint256) (#622-660):
External calls:
- swapTokens(contractTokenBalance) (#640)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#689-695)
- buyBackTokens(balance.div(100)) (#648)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
External calls sending eth:
- swapTokens(contractTokenBalance) (#640)
- recipient.transfer(amount) (#933)
- buyBackTokens(balance.div(100)) (#648)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _previousLiquidityFee = _liquidityFee (#857)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _previousTaxFee = _taxFee (#856)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _tFeeTotal = _tFeeTotal.add(tFee) (#792)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _taxFee = _previousTaxFee (#864)
- _taxFee = 0 (#859)
Reentrancy in Margex.constructor() (#481-495):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#485-486)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#491)
- _isExcludedFromFee[address(this)] = true (#492)
- uniswapV2Router = _uniswapV2Router (#488)
Reentrancy in Margex.transferFrom(address,address,uint256) (#532-536):
External calls:
- _transfer(sender,recipient,amount) (#533)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#689-695)
External calls sending eth:
- _transfer(sender,recipient,amount) (#533)
- recipient.transfer(amount) (#933)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#534)
- _allowances[owner][spender] = amount (#618)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Margex._transfer(address,address,uint256) (#622-660):
External calls:
- swapTokens(contractTokenBalance) (#640)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#689-695)
- buyBackTokens(balance.div(100)) (#648)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
External calls sending eth:
- swapTokens(contractTokenBalance) (#640)
- recipient.transfer(amount) (#933)
- buyBackTokens(balance.div(100)) (#648)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#714)
- buyBackTokens(balance.div(100)) (#648)
- Transfer(sender,recipient,tTransferAmount) (#756)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- Transfer(sender,recipient,tTransferAmount) (#766)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- Transfer(sender,recipient,tTransferAmount) (#776)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- Transfer(sender,recipient,tTransferAmount) (#787)
- _tokenTransfer(from,to,amount,takeFee) (#659)
Reentrancy in Margex.constructor() (#481-495):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#485-486)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#494)
Reentrancy in Margex.swapETHForTokens(uint256) (#700-715):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#714)
Reentrancy in Margex.swapTokensForEth(uint256) (#680-698):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#689-695)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#697)
Reentrancy in Margex.transferFrom(address,address,uint256) (#532-536):
External calls:
- _transfer(sender,recipient,amount) (#533)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#689-695)
External calls sending eth:
- _transfer(sender,recipient,amount) (#533)
- recipient.transfer(amount) (#933)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#619)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#534)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#192-197) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#194)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#87-96) uses assembly
- INLINE ASM (#94)
Address._functionCallWithValue(address,bytes,uint256,string) (#124-141) uses assembly
- INLINE ASM (#133-136)
Do not use evm assembly.
Additional information: link
Margex.includeInReward(address) (#601-612) has costly operations inside a loop:
- _excluded.pop() (#608)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#124-141) is never used and should be removed
Address.functionCall(address,bytes) (#107-109) is never used and should be removed
Address.functionCall(address,bytes,string) (#111-113) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#115-117) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#119-122) is never used and should be removed
Address.isContract(address) (#87-96) is never used and should be removed
Address.sendValue(address,uint256) (#98-104) is never used and should be removed
Context._msgData() (#10-13) is never used and should be removed
Margex.addLiquidity(uint256,uint256) (#717-730) is never used and should be removed
SafeMath.mod(uint256,uint256) (#75-77) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#79-82) is never used and should be removed
Remove unused functions.
Additional information: link
Margex._rTotal (#428) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
Margex._previousTaxFee (#437) is set pre-construction with a non-constant function or state variable:
- _taxFee
Margex._previousLiquidityFee (#440) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#98-104):
- (success) = recipient.call{value: amount}() (#102)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#124-141):
- (success,returndata) = target.call{value: weiValue}(data) (#127)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#236) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#237) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#253) is not in mixedCase
Function IUniswapV2Router01.WETH() (#274) is not in mixedCase
Parameter Margex.calculateTaxFee(uint256)._amount (#841) is not in mixedCase
Parameter Margex.calculateLiquidityFee(uint256)._amount (#847) is not in mixedCase
Parameter Margex.setNumTokensSellToAddToLiquidity(uint256)._minimumTokensBeforeSwap (#896) is not in mixedCase
Parameter Margex.setMarketingAddress(address)._marketingAddress (#904) is not in mixedCase
Parameter Margex.setSwapAndLiquifyEnabled(bool)._enabled (#908) is not in mixedCase
Parameter Margex.setBuyBackEnabled(bool)._enabled (#913) is not in mixedCase
Variable Margex._taxFee (#436) is not in mixedCase
Variable Margex._liquidityFee (#439) is not in mixedCase
Variable Margex._maxTxAmount (#444) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#11)" inContext (#5-14)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in Margex._transfer(address,address,uint256) (#622-660):
External calls:
- swapTokens(contractTokenBalance) (#640)
- recipient.transfer(amount) (#933)
External calls sending eth:
- swapTokens(contractTokenBalance) (#640)
- recipient.transfer(amount) (#933)
- buyBackTokens(balance.div(100)) (#648)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _liquidityFee = _previousLiquidityFee (#865)
- _liquidityFee = 0 (#860)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _previousLiquidityFee = _liquidityFee (#857)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _previousTaxFee = _taxFee (#856)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#836)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#752)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#761)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#772)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#782)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#753)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#763)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#773)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#784)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _rTotal = _rTotal.sub(rFee) (#791)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _tFeeTotal = _tFeeTotal.add(tFee) (#792)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#838)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#771)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#781)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#762)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#783)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- _taxFee = _previousTaxFee (#864)
- _taxFee = 0 (#859)
- buyBackTokens(balance.div(100)) (#648)
- inSwapAndLiquify = true (#476)
- inSwapAndLiquify = false (#478)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#714)
- buyBackTokens(balance.div(100)) (#648)
- Transfer(sender,recipient,tTransferAmount) (#756)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- Transfer(sender,recipient,tTransferAmount) (#776)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- Transfer(sender,recipient,tTransferAmount) (#766)
- _tokenTransfer(from,to,amount,takeFee) (#659)
- Transfer(sender,recipient,tTransferAmount) (#787)
- _tokenTransfer(from,to,amount,takeFee) (#659)
Reentrancy in Margex.transferFrom(address,address,uint256) (#532-536):
External calls:
- _transfer(sender,recipient,amount) (#533)
- recipient.transfer(amount) (#933)
External calls sending eth:
- _transfer(sender,recipient,amount) (#533)
- recipient.transfer(amount) (#933)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#707-712)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#534)
- _allowances[owner][spender] = amount (#618)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#619)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#534)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#279) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#280)
Variable Margex._transferToExcluded(address,address,uint256).rTransferAmount (#760) is too similar to Margex._transferToExcluded(address,address,uint256).tTransferAmount (#760)
Variable Margex._getValues(uint256).rTransferAmount (#797) is too similar to Margex._transferFromExcluded(address,address,uint256).tTransferAmount (#770)
Variable Margex._transferToExcluded(address,address,uint256).rTransferAmount (#760) is too similar to Margex._transferFromExcluded(address,address,uint256).tTransferAmount (#770)
Variable Margex._transferFromExcluded(address,address,uint256).rTransferAmount (#770) is too similar to Margex._transferBothExcluded(address,address,uint256).tTransferAmount (#780)
Variable Margex._transferBothExcluded(address,address,uint256).rTransferAmount (#780) is too similar to Margex._transferBothExcluded(address,address,uint256).tTransferAmount (#780)
Variable Margex._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#812) is too similar to Margex._transferBothExcluded(address,address,uint256).tTransferAmount (#780)
Variable Margex._getValues(uint256).rTransferAmount (#797) is too similar to Margex._getTValues(uint256).tTransferAmount (#804)
Variable Margex._transferFromExcluded(address,address,uint256).rTransferAmount (#770) is too similar to Margex._transferStandard(address,address,uint256).tTransferAmount (#751)
Variable Margex.reflectionFromToken(uint256,bool).rTransferAmount (#580) is too similar to Margex._transferBothExcluded(address,address,uint256).tTransferAmount (#780)
Variable Margex.reflectionFromToken(uint256,bool).rTransferAmount (#580) is too similar to Margex._transferStandard(address,address,uint256).tTransferAmount (#751)
Variable Margex._transferFromExcluded(address,address,uint256).rTransferAmount (#770) is too similar to Margex._transferToExcluded(address,address,uint256).tTransferAmount (#760)
Variable Margex._transferFromExcluded(address,address,uint256).rTransferAmount (#770) is too similar to Margex._transferFromExcluded(address,address,uint256).tTransferAmount (#770)
Variable Margex._getValues(uint256).rTransferAmount (#797) is too similar to Margex._transferBothExcluded(address,address,uint256).tTransferAmount (#780)
Variable Margex._transferStandard(address,address,uint256).rTransferAmount (#751) is too similar to Margex._transferBothExcluded(address,address,uint256).tTransferAmount (#780)
Variable Margex.reflectionFromToken(uint256,bool).rTransferAmount (#580) is too similar to Margex._transferToExcluded(address,address,uint256).tTransferAmount (#760)
Variable Margex._transferToExcluded(address,address,uint256).rTransferAmount (#760) is too similar to Margex._transferBothExcluded(address,address,uint256).tTransferAmount (#780)
Variable Margex._getValues(uint256).rTransferAmount (#797) is too similar to Margex._transferStandard(address,address,uint256).tTransferAmount (#751)
Variable Margex._transferStandard(address,address,uint256).rTransferAmount (#751) is too similar to Margex._transferStandard(address,address,uint256).tTransferAmount (#751)
Variable Margex.reflectionFromToken(uint256,bool).rTransferAmount (#580) is too similar to Margex._transferFromExcluded(address,address,uint256).tTransferAmount (#770)
Variable Margex._transferToExcluded(address,address,uint256).rTransferAmount (#760) is too similar to Margex._transferStandard(address,address,uint256).tTransferAmount (#751)
Variable Margex._getValues(uint256).rTransferAmount (#797) is too similar to Margex._transferToExcluded(address,address,uint256).tTransferAmount (#760)
Variable Margex._transferToExcluded(address,address,uint256).rTransferAmount (#760) is too similar to Margex._getValues(uint256).tTransferAmount (#796)
Variable Margex._transferBothExcluded(address,address,uint256).rTransferAmount (#780) is too similar to Margex._transferFromExcluded(address,address,uint256).tTransferAmount (#770)
Variable Margex.reflectionFromToken(uint256,bool).rTransferAmount (#580) is too similar to Margex._getValues(uint256).tTransferAmount (#796)
Variable Margex._transferFromExcluded(address,address,uint256).rTransferAmount (#770) is too similar to Margex._getValues(uint256).tTransferAmount (#796)
Variable Margex._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#812) is too similar to Margex._transferFromExcluded(address,address,uint256).tTransferAmount (#770)
Variable Margex._transferStandard(address,address,uint256).rTransferAmount (#751) is too similar to Margex._transferFromExcluded(address,address,uint256).tTransferAmount (#770)
Variable Margex._transferBothExcluded(address,address,uint256).rTransferAmount (#780) is too similar to Margex._getTValues(uint256).tTransferAmount (#804)
Variable Margex._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#812) is too similar to Margex._getTValues(uint256).tTransferAmount (#804)
Variable Margex._transferStandard(address,address,uint256).rTransferAmount (#751) is too similar to Margex._getTValues(uint256).tTransferAmount (#804)
Variable Margex._transferBothExcluded(address,address,uint256).rTransferAmount (#780) is too similar to Margex._transferStandard(address,address,uint256).tTransferAmount (#751)
Variable Margex._getValues(uint256).rTransferAmount (#797) is too similar to Margex._getValues(uint256).tTransferAmount (#796)
Variable Margex._transferBothExcluded(address,address,uint256).rTransferAmount (#780) is too similar to Margex._transferToExcluded(address,address,uint256).tTransferAmount (#760)
Variable Margex._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#812) is too similar to Margex._transferStandard(address,address,uint256).tTransferAmount (#751)
Variable Margex._transferToExcluded(address,address,uint256).rTransferAmount (#760) is too similar to Margex._getTValues(uint256).tTransferAmount (#804)
Variable Margex._transferBothExcluded(address,address,uint256).rTransferAmount (#780) is too similar to Margex._getValues(uint256).tTransferAmount (#796)
Variable Margex._transferStandard(address,address,uint256).rTransferAmount (#751) is too similar to Margex._transferToExcluded(address,address,uint256).tTransferAmount (#760)
Variable Margex._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#812) is too similar to Margex._transferToExcluded(address,address,uint256).tTransferAmount (#760)
Variable Margex._transferFromExcluded(address,address,uint256).rTransferAmount (#770) is too similar to Margex._getTValues(uint256).tTransferAmount (#804)
Variable Margex.reflectionFromToken(uint256,bool).rTransferAmount (#580) is too similar to Margex._getTValues(uint256).tTransferAmount (#804)
Variable Margex._transferStandard(address,address,uint256).rTransferAmount (#751) is too similar to Margex._getValues(uint256).tTransferAmount (#796)
Variable Margex._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#812) is too similar to Margex._getValues(uint256).tTransferAmount (#796)
Prevent variables from having similar names.
Additional information: link
Margex.prepareForPreSale() (#918-923) uses literals with too many digits:
- _maxTxAmount = 1000000 * 10 ** 2 * 10 ** 9 (#922)
Margex.slitherConstructorVariables() (#411-939) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#416)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Margex._decimals (#433) should be constant
Margex._name (#431) should be constant
Margex._symbol (#432) should be constant
Margex._tTotal (#427) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#166-169)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#171-175)
getUnlockTime() should be declared external:
- Ownable.getUnlockTime() (#177-179)
getTime() should be declared external:
- Ownable.getTime() (#181-183)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#185-190)
unlock() should be declared external:
- Ownable.unlock() (#192-197)
name() should be declared external:
- Margex.name() (#497-499)
symbol() should be declared external:
- Margex.symbol() (#501-503)
decimals() should be declared external:
- Margex.decimals() (#505-507)
totalSupply() should be declared external:
- Margex.totalSupply() (#509-511)
transfer(address,uint256) should be declared external:
- Margex.transfer(address,uint256) (#518-521)
allowance(address,address) should be declared external:
- Margex.allowance(address,address) (#523-525)
approve(address,uint256) should be declared external:
- Margex.approve(address,uint256) (#527-530)
transferFrom(address,address,uint256) should be declared external:
- Margex.transferFrom(address,address,uint256) (#532-536)
increaseAllowance(address,uint256) should be declared external:
- Margex.increaseAllowance(address,uint256) (#538-541)
decreaseAllowance(address,uint256) should be declared external:
- Margex.decreaseAllowance(address,uint256) (#543-546)
isExcludedFromReward(address) should be declared external:
- Margex.isExcludedFromReward(address) (#548-550)
totalFees() should be declared external:
- Margex.totalFees() (#552-554)
minimumTokensBeforeSwapAmount() should be declared external:
- Margex.minimumTokensBeforeSwapAmount() (#556-558)
buyBackUpperLimitAmount() should be declared external:
- Margex.buyBackUpperLimitAmount() (#560-562)
deliver(uint256) should be declared external:
- Margex.deliver(uint256) (#564-571)
reflectionFromToken(uint256,bool) should be declared external:
- Margex.reflectionFromToken(uint256,bool) (#574-583)
excludeFromReward(address) should be declared external:
- Margex.excludeFromReward(address) (#591-599)
isExcludedFromFee(address) should be declared external:
- Margex.isExcludedFromFee(address) (#868-870)
excludeFromFee(address) should be declared external:
- Margex.excludeFromFee(address) (#872-874)
includeInFee(address) should be declared external:
- Margex.includeInFee(address) (#876-878)
setBuyBackEnabled(bool) should be declared external:
- Margex.setBuyBackEnabled(bool) (#913-916)
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