Everyone is an artist In the world of NFT Michael, and will prove their ability. Join us to concur the world.
MjackToken.addLiquidity(uint256,uint256) (#764-777) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in MjackToken._transfer(address,address,uint256) (#694-721):
External calls:
- swapAndLiquify(contractTokenBalance) (#716)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#755-761)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#716)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#720)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#644)
- _rOwned[deadAddress] = _rOwned[deadAddress].add(rBurn) (#829)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#849)
- _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rMarketing) (#842)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#860)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#587)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#851)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#861)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#814)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#815)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#589)
- _tokenTransfer(from,to,amount) (#720)
- _rTotal = _rTotal.sub(rFee) (#599)
- _tokenTransfer(from,to,amount) (#720)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#646)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#586)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#859)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#850)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#588)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
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.
MjackToken._rTotal (#413) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
MjackToken._previousTaxFee (#421) is set pre-construction with a non-constant function or state variable:
- _taxFee
MjackToken._previousLiquidityFee (#424) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
MjackToken._previousBurnFee (#427) is set pre-construction with a non-constant function or state variable:
- _burnFee
MjackToken._previousmarketingFee (#432) is set pre-construction with a non-constant function or state variable:
- _marketingFee
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
MjackToken.takeBurn(address,uint256,uint256,uint256) (#821-832) performs a multiplication on the result of a division:
-tBurn = tAmount.div(100).mul(_burnFee) (#825)
MjackToken.takeMarketing(address,uint256,uint256,uint256) (#834-845) performs a multiplication on the result of a division:
-tMarketing = tAmount.div(100).mul(_marketingFee) (#838)
Consider ordering multiplication before division.
Additional information: link
Redundant expression "this (#72)" inContext (#66-75)
Remove redundant statements if they congest code but offer no value.
Additional information: link
MjackToken.addLiquidity(uint256,uint256) (#764-777) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
Ensure that all the return values of the function calls are used.
Additional information: link
MjackToken.allowance(address,address).owner (#503) shadows:
- Ownable.owner() (#150-152) (function)
MjackToken._approve(address,address,uint256).owner (#686) shadows:
- Ownable.owner() (#150-152) (function)
Rename the local variables that shadow another component.
Additional information: link
MjackToken.setmarketingWallet(address).newWallet (#901) lacks a zero-check on :
- marketingWallet = newWallet (#902)
Check that the address is not zero.
Additional information: link
MjackToken.setTaxFeePercent(uint256) (#905-907) should emit an event for:
- _taxFee = taxFee (#906)
MjackToken.setLiquidityFeePercent(uint256) (#909-911) should emit an event for:
- _liquidityFee = liquidityFee (#910)
MjackToken.setChartityFeePercent(uint256) (#913-915) should emit an event for:
- _marketingFee = marketingFee (#914)
MjackToken.setBurnFeePercent(uint256) (#917-919) should emit an event for:
- _burnFee = burnFee (#918)
MjackToken.setNumTokensSellToAddToLiquidity(uint256,uint256) (#921-923) should emit an event for:
- numTokensSellToAddToLiquidity = newAmt * 10 ** decimal (#922)
MjackToken.setMaxTxAmount(uint256,uint256) (#925-928) should emit an event for:
- _maxTxAmount = maxTxAmount * 10 ** decimal (#927)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in MjackToken._transfer(address,address,uint256) (#694-721):
External calls:
- swapAndLiquify(contractTokenBalance) (#716)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#755-761)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#716)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#720)
- _burnFee = _previousBurnFee (#678)
- _burnFee = 0 (#672)
- _tokenTransfer(from,to,amount) (#720)
- _liquidityFee = _previousLiquidityFee (#677)
- _liquidityFee = 0 (#670)
- _tokenTransfer(from,to,amount) (#720)
- _marketingFee = _previousmarketingFee (#679)
- _marketingFee = 0 (#671)
- _tokenTransfer(from,to,amount) (#720)
- _previousBurnFee = _burnFee (#666)
- _tokenTransfer(from,to,amount) (#720)
- _previousLiquidityFee = _liquidityFee (#665)
- _tokenTransfer(from,to,amount) (#720)
- _previousTaxFee = _taxFee (#664)
- _tokenTransfer(from,to,amount) (#720)
- _previousmarketingFee = _marketingFee (#667)
- _tokenTransfer(from,to,amount) (#720)
- _tFeeTotal = _tFeeTotal.add(tFee) (#600)
- _tokenTransfer(from,to,amount) (#720)
- _taxFee = _previousTaxFee (#676)
- _taxFee = 0 (#669)
Reentrancy in MjackToken.constructor() (#457-475):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#464-465)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#471)
- _isExcludedFromFee[address(this)] = true (#472)
- uniswapV2Router = _uniswapV2Router (#468)
Reentrancy in MjackToken.setRouterAddress(address) (#930-934):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_newPancakeRouter.factory()).createPair(address(this),_newPancakeRouter.WETH()) (#932)
State variables written after the call(s):
- uniswapV2Router = _newPancakeRouter (#933)
Reentrancy in MjackToken.swapAndLiquify(uint256) (#723-744):
External calls:
- swapTokensForEth(half) (#735)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#755-761)
- addLiquidity(otherHalf,newBalance) (#741)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#741)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#741)
- _allowances[owner][spender] = amount (#690)
Reentrancy in MjackToken.transferFrom(address,address,uint256) (#512-516):
External calls:
- _transfer(sender,recipient,amount) (#513)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#755-761)
External calls sending eth:
- _transfer(sender,recipient,amount) (#513)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#514)
- _allowances[owner][spender] = amount (#690)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in MjackToken._transfer(address,address,uint256) (#694-721):
External calls:
- swapAndLiquify(contractTokenBalance) (#716)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#755-761)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#716)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
Event emitted after the call(s):
- Transfer(sender,marketingWallet,tMarketing) (#843)
- _tokenTransfer(from,to,amount) (#720)
- Transfer(sender,deadAddress,tBurn) (#830)
- _tokenTransfer(from,to,amount) (#720)
- Transfer(sender,recipient,tTransferAmount) (#864)
- _tokenTransfer(from,to,amount) (#720)
- Transfer(sender,recipient,tTransferAmount) (#854)
- _tokenTransfer(from,to,amount) (#720)
- Transfer(sender,recipient,tTransferAmount) (#592)
- _tokenTransfer(from,to,amount) (#720)
- Transfer(sender,recipient,tTransferAmount) (#818)
- _tokenTransfer(from,to,amount) (#720)
Reentrancy in MjackToken.constructor() (#457-475):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#464-465)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#474)
Reentrancy in MjackToken.swapAndLiquify(uint256) (#723-744):
External calls:
- swapTokensForEth(half) (#735)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#755-761)
- addLiquidity(otherHalf,newBalance) (#741)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#741)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#691)
- addLiquidity(otherHalf,newBalance) (#741)
- SwapAndLiquify(half,newBalance,otherHalf) (#743)
Reentrancy in MjackToken.transferFrom(address,address,uint256) (#512-516):
External calls:
- _transfer(sender,recipient,amount) (#513)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#755-761)
External calls sending eth:
- _transfer(sender,recipient,amount) (#513)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#769-776)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#691)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#514)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#183-188) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#185)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#79-86) uses assembly
- INLINE ASM (#84)
Address._functionCallWithValue(address,bytes,uint256,string) (#113-134) uses assembly
- INLINE ASM (#126-129)
Do not use evm assembly.
Additional information: link
MjackToken.includeInReward(address) (#571-582) has costly operations inside a loop:
- _excluded.pop() (#578)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#113-134) is never used and should be removed
Address.functionCall(address,bytes) (#96-98) is never used and should be removed
Address.functionCall(address,bytes,string) (#100-102) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#104-106) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#108-111) is never used and should be removed
Address.isContract(address) (#79-86) is never used and should be removed
Address.sendValue(address,uint256) (#88-94) is never used and should be removed
Context._msgData() (#71-74) is never used and should be removed
SafeMath.mod(uint256,uint256) (#56-58) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#60-63) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#88-94):
- (success) = recipient.call{value: amount}() (#92)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#113-134):
- (success,returndata) = target.call{value: weiValue}(data) (#117)
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() (#226) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#227) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#243) is not in mixedCase
Function IUniswapV2Router01.WETH() (#264) is not in mixedCase
Parameter MjackToken.calculateTaxFee(uint256)._amount (#649) is not in mixedCase
Parameter MjackToken.calculateLiquidityFee(uint256)._amount (#655) is not in mixedCase
Parameter MjackToken.setSwapAndLiquifyEnabled(bool)._enabled (#936) is not in mixedCase
Variable MjackToken._taxFee (#420) is not in mixedCase
Variable MjackToken._liquidityFee (#423) is not in mixedCase
Variable MjackToken._burnFee (#426) is not in mixedCase
Variable MjackToken._marketingFee (#430) is not in mixedCase
Variable MjackToken._maxTxAmount (#441) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#269) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#270)
Variable MjackToken._getValues(uint256).rTransferAmount (#605) is too similar to MjackToken._transferToExcluded(address,address,uint256).tTransferAmount (#848)
Variable MjackToken._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#620) is too similar to MjackToken.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#821)
Variable MjackToken._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#620) is too similar to MjackToken._getTValues(uint256).tTransferAmount (#612)
Variable MjackToken._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#620) is too similar to MjackToken._transferFromExcluded(address,address,uint256).tTransferAmount (#858)
Variable MjackToken.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#834) is too similar to MjackToken._transferToExcluded(address,address,uint256).tTransferAmount (#848)
Variable MjackToken._transferFromExcluded(address,address,uint256).rTransferAmount (#858) is too similar to MjackToken._transferFromExcluded(address,address,uint256).tTransferAmount (#858)
Variable MjackToken._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#620) is too similar to MjackToken.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#834)
Variable MjackToken._transferToExcluded(address,address,uint256).rTransferAmount (#848) is too similar to MjackToken._transferFromExcluded(address,address,uint256).tTransferAmount (#858)
Variable MjackToken._transferBothExcluded(address,address,uint256).rTransferAmount (#585) is too similar to MjackToken.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#821)
Variable MjackToken._transferBothExcluded(address,address,uint256).rTransferAmount (#585) is too similar to MjackToken._getTValues(uint256).tTransferAmount (#612)
Variable MjackToken._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#620) is too similar to MjackToken._transferToExcluded(address,address,uint256).tTransferAmount (#848)
Variable MjackToken._transferStandard(address,address,uint256).rTransferAmount (#811) is too similar to MjackToken.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#821)
Variable MjackToken._transferStandard(address,address,uint256).rTransferAmount (#811) is too similar to MjackToken._getTValues(uint256).tTransferAmount (#612)
Variable MjackToken.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#821) is too similar to MjackToken._transferFromExcluded(address,address,uint256).tTransferAmount (#858)
Variable MjackToken._transferBothExcluded(address,address,uint256).rTransferAmount (#585) is too similar to MjackToken._transferBothExcluded(address,address,uint256).tTransferAmount (#585)
Variable MjackToken._getValues(uint256).rTransferAmount (#605) is too similar to MjackToken.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#834)
Variable MjackToken._transferBothExcluded(address,address,uint256).rTransferAmount (#585) is too similar to MjackToken._transferFromExcluded(address,address,uint256).tTransferAmount (#858)
Variable MjackToken._getValues(uint256).rTransferAmount (#605) is too similar to MjackToken.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#821)
Variable MjackToken._getValues(uint256).rTransferAmount (#605) is too similar to MjackToken._getTValues(uint256).tTransferAmount (#612)
Variable MjackToken._transferStandard(address,address,uint256).rTransferAmount (#811) is too similar to MjackToken._transferFromExcluded(address,address,uint256).tTransferAmount (#858)
Variable MjackToken._transferFromExcluded(address,address,uint256).rTransferAmount (#858) is too similar to MjackToken._transferToExcluded(address,address,uint256).tTransferAmount (#848)
Variable MjackToken._getValues(uint256).rTransferAmount (#605) is too similar to MjackToken._transferFromExcluded(address,address,uint256).tTransferAmount (#858)
Variable MjackToken.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#821) is too similar to MjackToken.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#834)
Variable MjackToken._transferToExcluded(address,address,uint256).rTransferAmount (#848) is too similar to MjackToken._transferToExcluded(address,address,uint256).tTransferAmount (#848)
Variable MjackToken.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#821) is too similar to MjackToken._transferToExcluded(address,address,uint256).tTransferAmount (#848)
Variable MjackToken._transferBothExcluded(address,address,uint256).rTransferAmount (#585) is too similar to MjackToken._getValues(uint256).tTransferAmount (#604)
Variable MjackToken._transferBothExcluded(address,address,uint256).rTransferAmount (#585) is too similar to MjackToken.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#834)
Variable MjackToken._transferStandard(address,address,uint256).rTransferAmount (#811) is too similar to MjackToken._getValues(uint256).tTransferAmount (#604)
Variable MjackToken._transferStandard(address,address,uint256).rTransferAmount (#811) is too similar to MjackToken.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#834)
Variable MjackToken.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#834) is too similar to MjackToken._transferFromExcluded(address,address,uint256).tTransferAmount (#858)
Variable MjackToken._transferBothExcluded(address,address,uint256).rTransferAmount (#585) is too similar to MjackToken._transferToExcluded(address,address,uint256).tTransferAmount (#848)
Variable MjackToken._transferBothExcluded(address,address,uint256).rTransferAmount (#585) is too similar to MjackToken._transferStandard(address,address,uint256).tTransferAmount (#811)
Variable MjackToken._transferStandard(address,address,uint256).rTransferAmount (#811) is too similar to MjackToken._transferToExcluded(address,address,uint256).tTransferAmount (#848)
Variable MjackToken._transferStandard(address,address,uint256).rTransferAmount (#811) is too similar to MjackToken._transferStandard(address,address,uint256).tTransferAmount (#811)
Variable MjackToken.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#821) is too similar to MjackToken._transferStandard(address,address,uint256).tTransferAmount (#811)
Variable MjackToken._transferFromExcluded(address,address,uint256).rTransferAmount (#858) is too similar to MjackToken.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#834)
Variable MjackToken._transferToExcluded(address,address,uint256).rTransferAmount (#848) is too similar to MjackToken.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#821)
Variable MjackToken._transferToExcluded(address,address,uint256).rTransferAmount (#848) is too similar to MjackToken._transferBothExcluded(address,address,uint256).tTransferAmount (#585)
Variable MjackToken.reflectionFromToken(uint256,bool).rTransferAmount (#551) is too similar to MjackToken._getTValues(uint256).tTransferAmount (#612)
Variable MjackToken._transferToExcluded(address,address,uint256).rTransferAmount (#848) is too similar to MjackToken._transferStandard(address,address,uint256).tTransferAmount (#811)
Variable MjackToken._transferToExcluded(address,address,uint256).rTransferAmount (#848) is too similar to MjackToken._getValues(uint256).tTransferAmount (#604)
Variable MjackToken._transferStandard(address,address,uint256).rTransferAmount (#811) is too similar to MjackToken._transferBothExcluded(address,address,uint256).tTransferAmount (#585)
Variable MjackToken.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#834) is too similar to MjackToken.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#821)
Variable MjackToken.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#821) is too similar to MjackToken._getValues(uint256).tTransferAmount (#604)
Variable MjackToken.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#834) is too similar to MjackToken._transferBothExcluded(address,address,uint256).tTransferAmount (#585)
Variable MjackToken.reflectionFromToken(uint256,bool).rTransferAmount (#551) is too similar to MjackToken._transferFromExcluded(address,address,uint256).tTransferAmount (#858)
Variable MjackToken.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#834) is too similar to MjackToken._transferStandard(address,address,uint256).tTransferAmount (#811)
Variable MjackToken.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#834) is too similar to MjackToken._getValues(uint256).tTransferAmount (#604)
Variable MjackToken._transferFromExcluded(address,address,uint256).rTransferAmount (#858) is too similar to MjackToken._getTValues(uint256).tTransferAmount (#612)
Variable MjackToken._transferToExcluded(address,address,uint256).rTransferAmount (#848) is too similar to MjackToken.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#834)
Variable MjackToken.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#821) is too similar to MjackToken._getTValues(uint256).tTransferAmount (#612)
Variable MjackToken._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#620) is too similar to MjackToken._getValues(uint256).tTransferAmount (#604)
Variable MjackToken._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#620) is too similar to MjackToken._transferBothExcluded(address,address,uint256).tTransferAmount (#585)
Variable MjackToken._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#620) is too similar to MjackToken._transferStandard(address,address,uint256).tTransferAmount (#811)
Variable MjackToken.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#834) is too similar to MjackToken.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#834)
Variable MjackToken.reflectionFromToken(uint256,bool).rTransferAmount (#551) is too similar to MjackToken.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#821)
Variable MjackToken._getValues(uint256).rTransferAmount (#605) is too similar to MjackToken._getValues(uint256).tTransferAmount (#604)
Variable MjackToken._getValues(uint256).rTransferAmount (#605) is too similar to MjackToken._transferBothExcluded(address,address,uint256).tTransferAmount (#585)
Variable MjackToken.reflectionFromToken(uint256,bool).rTransferAmount (#551) is too similar to MjackToken._getValues(uint256).tTransferAmount (#604)
Variable MjackToken.reflectionFromToken(uint256,bool).rTransferAmount (#551) is too similar to MjackToken._transferBothExcluded(address,address,uint256).tTransferAmount (#585)
Variable MjackToken._getValues(uint256).rTransferAmount (#605) is too similar to MjackToken._transferStandard(address,address,uint256).tTransferAmount (#811)
Variable MjackToken.reflectionFromToken(uint256,bool).rTransferAmount (#551) is too similar to MjackToken._transferToExcluded(address,address,uint256).tTransferAmount (#848)
Variable MjackToken.reflectionFromToken(uint256,bool).rTransferAmount (#551) is too similar to MjackToken._transferStandard(address,address,uint256).tTransferAmount (#811)
Variable MjackToken._transferToExcluded(address,address,uint256).rTransferAmount (#848) is too similar to MjackToken._getTValues(uint256).tTransferAmount (#612)
Variable MjackToken._transferFromExcluded(address,address,uint256).rTransferAmount (#858) is too similar to MjackToken.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#821)
Variable MjackToken._transferFromExcluded(address,address,uint256).rTransferAmount (#858) is too similar to MjackToken._getValues(uint256).tTransferAmount (#604)
Variable MjackToken._transferFromExcluded(address,address,uint256).rTransferAmount (#858) is too similar to MjackToken._transferBothExcluded(address,address,uint256).tTransferAmount (#585)
Variable MjackToken._transferFromExcluded(address,address,uint256).rTransferAmount (#858) is too similar to MjackToken._transferStandard(address,address,uint256).tTransferAmount (#811)
Variable MjackToken.takeMarketing(address,uint256,uint256,uint256).rTransferAmount (#834) is too similar to MjackToken._getTValues(uint256).tTransferAmount (#612)
Variable MjackToken.reflectionFromToken(uint256,bool).rTransferAmount (#551) is too similar to MjackToken.takeMarketing(address,uint256,uint256,uint256).tTransferAmount (#834)
Variable MjackToken.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#821) is too similar to MjackToken.takeBurn(address,uint256,uint256,uint256).tTransferAmount (#821)
Variable MjackToken.takeBurn(address,uint256,uint256,uint256).rTransferAmount (#821) is too similar to MjackToken._transferBothExcluded(address,address,uint256).tTransferAmount (#585)
Prevent variables from having similar names.
Additional information: link
MjackToken.prepareFoePresale() (#867-878) uses literals with too many digits:
- _maxTxAmount = 1000000000000 * 10 ** 18 (#876)
MjackToken.afterPresale() (#880-891) uses literals with too many digits:
- _maxTxAmount = 10000000000000000 * 10 ** 18 (#889)
MjackToken.slitherConstructorVariables() (#399-941) uses literals with too many digits:
- _tTotal = 1000000000000 * 10 ** 18 (#412)
MjackToken.slitherConstructorVariables() (#399-941) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#428)
MjackToken.slitherConstructorVariables() (#399-941) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 50000000000 * 10 ** 18 (#440)
MjackToken.slitherConstructorVariables() (#399-941) uses literals with too many digits:
- _maxTxAmount = 1000000000000 * 10 ** 18 (#441)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
MjackToken._decimals (#418) should be constant
MjackToken._name (#416) should be constant
MjackToken._symbol (#417) should be constant
MjackToken._tTotal (#412) should be constant
MjackToken.deadAddress (#428) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#159-162)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#164-168)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#170-172)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#175-180)
unlock() should be declared external:
- Ownable.unlock() (#183-188)
name() should be declared external:
- MjackToken.name() (#477-479)
symbol() should be declared external:
- MjackToken.symbol() (#481-483)
decimals() should be declared external:
- MjackToken.decimals() (#485-487)
totalSupply() should be declared external:
- MjackToken.totalSupply() (#489-491)
transfer(address,uint256) should be declared external:
- MjackToken.transfer(address,uint256) (#498-501)
allowance(address,address) should be declared external:
- MjackToken.allowance(address,address) (#503-505)
approve(address,uint256) should be declared external:
- MjackToken.approve(address,uint256) (#507-510)
transferFrom(address,address,uint256) should be declared external:
- MjackToken.transferFrom(address,address,uint256) (#512-516)
increaseAllowance(address,uint256) should be declared external:
- MjackToken.increaseAllowance(address,uint256) (#518-521)
decreaseAllowance(address,uint256) should be declared external:
- MjackToken.decreaseAllowance(address,uint256) (#523-526)
isExcludedFromReward(address) should be declared external:
- MjackToken.isExcludedFromReward(address) (#528-530)
totalFees() should be declared external:
- MjackToken.totalFees() (#532-534)
deliver(uint256) should be declared external:
- MjackToken.deliver(uint256) (#536-543)
reflectionFromToken(uint256,bool) should be declared external:
- MjackToken.reflectionFromToken(uint256,bool) (#545-554)
excludeFromReward(address) should be declared external:
- MjackToken.excludeFromReward(address) (#562-569)
isExcludedFromFee(address) should be declared external:
- MjackToken.isExcludedFromFee(address) (#682-684)
excludeFromFee(address) should be declared external:
- MjackToken.excludeFromFee(address) (#893-895)
includeInFee(address) should be declared external:
- MjackToken.includeInFee(address) (#897-899)
setRouterAddress(address) should be declared external:
- MjackToken.setRouterAddress(address) (#930-934)
Use the external attribute for functions never called from the contract.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find token contract audit
Unable to find audit link on the website
Young tokens have high risks of price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Alexa traffic rank is relatively low
Additional information: link
Token has relatively low CoinGecko rank
Young tokens have high risks of price dump / death
Token has relatively low CoinMarketCap rank
Unable to find Youtube account