Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
DMG.addLiquidity(uint256,uint256) (#1534-1547) sends eth to arbitrary user
Dangerous calls:
- ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in DMG._transfer(address,address,uint256) (#1435-1470):
External calls:
- swapAndLiquify() (#1445)
- ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
- ErcSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1524-1530)
External calls sending eth:
- swapAndLiquify() (#1445)
- ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
State variables written after the call(s):
- super._transfer(sender,recipient,amount) (#1449)
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#1034)
- _balances[recipient] = _balances[recipient].add(amount) (#1035)
- super._transfer(sender,BURN_ADDRESS,burnAmount) (#1462)
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#1034)
- _balances[recipient] = _balances[recipient].add(amount) (#1035)
- super._transfer(sender,address(this),liquidityAmount) (#1465)
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#1034)
- _balances[recipient] = _balances[recipient].add(amount) (#1035)
- super._transfer(sender,recipient,sendAmount) (#1467)
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#1034)
- _balances[recipient] = _balances[recipient].add(amount) (#1035)
Apply the check-effects-interactions pattern.
Additional information: link
DMG.recoverLostTokensExceptOurTokens(address,uint256) (#1510-1513) ignores return value by BEP20(_token).transfer(msg.sender,amount) (#1512)
MasterChef.safeErcTransfer(address,uint256) (#2167-2174) ignores return value by Erc.transfer(_to,ErcBal) (#2170)
MasterChef.safeErcTransfer(address,uint256) (#2167-2174) ignores return value by Erc.transfer(_to,_amount) (#2172)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
DMG._writeCheckpoint(address,uint32,uint256,uint256) (#1849-1867) uses a dangerous strict equality:
- nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber (#1859)
MasterChef.updatePool(uint256) (#2063-2079) uses a dangerous strict equality:
- lpSupply == 0 || pool.allocPoint == 0 (#2069)
Don't use strict equality to determine if an account has enough Ether or tokens.
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.
DMG._transfer(address,address,uint256) (#1435-1470) performs a multiplication on the result of a division:
-taxAmount = amount.mul(transferTaxRate).div(10000) (#1452)
-burnAmount = taxAmount.mul(burnRate).div(100) (#1453)
MasterChef.pendingErc(uint256,address) (#2034-2046) performs a multiplication on the result of a division:
-ErcReward = multiplier.mul(ErcPerBlock).mul(pool.allocPoint).div(totalAllocPoint) (#2041)
-accErcPerShare = accErcPerShare.add(ErcReward.mul(1e12).div(lpSupply)) (#2042)
MasterChef.updatePool(uint256) (#2063-2079) performs a multiplication on the result of a division:
-ErcReward = multiplier.mul(ErcPerBlock).mul(pool.allocPoint).div(totalAllocPoint) (#2074)
-pool.accErcPerShare = pool.accErcPerShare.add(ErcReward.mul(1e12).div(lpSupply)) (#2077)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in MasterChef.add(uint256,IBEP20,uint16,uint256,bool) (#1996-2013):
External calls:
- massUpdatePools() (#2000)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
State variables written after the call(s):
- poolExistence[_lpToken] = true (#2004)
- poolInfo.push(PoolInfo(_lpToken,_allocPoint,lastRewardBlock,0,_depositFeeBP,_harvestInterval)) (#2005-2012)
- totalAllocPoint = totalAllocPoint.add(_allocPoint) (#2003)
Reentrancy in MasterChef.deposit(uint256,uint256,address) (#2082-2106):
External calls:
- updatePool(_pid) (#2085)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
- ErcReferral.recordReferral(msg.sender,_referrer) (#2087)
- payOrLockupPendingErc(_pid) (#2089)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
State variables written after the call(s):
- payOrLockupPendingErc(_pid) (#2089)
- user.nextHarvestUntil = block.timestamp.add(pool.harvestInterval) (#2142)
- user.rewardLockedUp = 0 (#2152)
- user.nextHarvestUntil = block.timestamp.add(pool.harvestInterval) (#2153)
- user.rewardLockedUp = user.rewardLockedUp.add(pending) (#2160)
Reentrancy in MasterChef.deposit(uint256,uint256,address) (#2082-2106):
External calls:
- updatePool(_pid) (#2085)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
- ErcReferral.recordReferral(msg.sender,_referrer) (#2087)
- payOrLockupPendingErc(_pid) (#2089)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
- pool.lpToken.safeTransferFrom(address(msg.sender),address(this),_amount) (#2091)
- pool.lpToken.safeTransfer(feeAddress,depositFee) (#2098)
State variables written after the call(s):
- user.amount = user.amount.add(_amount).sub(depositFee) (#2099)
- user.rewardDebt = user.amount.mul(pool.accErcPerShare).div(1e12) (#2104)
Reentrancy in MasterChef.deposit(uint256,uint256,address) (#2082-2106):
External calls:
- updatePool(_pid) (#2085)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
- ErcReferral.recordReferral(msg.sender,_referrer) (#2087)
- payOrLockupPendingErc(_pid) (#2089)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
- pool.lpToken.safeTransferFrom(address(msg.sender),address(this),_amount) (#2091)
State variables written after the call(s):
- user.amount = user.amount.add(_amount) (#2101)
Reentrancy in MasterChef.set(uint256,uint256,uint16,uint256,bool) (#2016-2026):
External calls:
- massUpdatePools() (#2020)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
State variables written after the call(s):
- poolInfo[_pid].allocPoint = _allocPoint (#2023)
- poolInfo[_pid].depositFeeBP = _depositFeeBP (#2024)
- poolInfo[_pid].harvestInterval = _harvestInterval (#2025)
- totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint) (#2022)
Reentrancy in MasterChef.updateEmissionRate(uint256) (#2190-2194):
External calls:
- massUpdatePools() (#2191)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
State variables written after the call(s):
- ErcPerBlock = _ErcPerBlock (#2193)
Reentrancy in MasterChef.updatePool(uint256) (#2063-2079):
External calls:
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
State variables written after the call(s):
- pool.accErcPerShare = pool.accErcPerShare.add(ErcReward.mul(1e12).div(lpSupply)) (#2077)
- pool.lastRewardBlock = block.number (#2078)
Reentrancy in MasterChef.withdraw(uint256,uint256) (#2109-2121):
External calls:
- updatePool(_pid) (#2113)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
- payOrLockupPendingErc(_pid) (#2114)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
State variables written after the call(s):
- payOrLockupPendingErc(_pid) (#2114)
- user.nextHarvestUntil = block.timestamp.add(pool.harvestInterval) (#2142)
- user.rewardLockedUp = 0 (#2152)
- user.nextHarvestUntil = block.timestamp.add(pool.harvestInterval) (#2153)
- user.rewardLockedUp = user.rewardLockedUp.add(pending) (#2160)
- user.amount = user.amount.sub(_amount) (#2116)
Reentrancy in MasterChef.withdraw(uint256,uint256) (#2109-2121):
External calls:
- updatePool(_pid) (#2113)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
- payOrLockupPendingErc(_pid) (#2114)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
- pool.lpToken.safeTransfer(address(msg.sender),_amount) (#2117)
State variables written after the call(s):
- user.rewardDebt = user.amount.mul(pool.accErcPerShare).div(1e12) (#2119)
Apply the check-effects-interactions pattern.
Additional information: link
DMG.addLiquidity(uint256,uint256) (#1534-1547) ignores return value by ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
Ensure that all the return values of the function calls are used.
Additional information: link
BEP20.constructor(string,string).name (#853) shadows:
- BEP20.name() (#869-871) (function)
- IBEP20.name() (#241) (function)
BEP20.constructor(string,string).symbol (#853) shadows:
- BEP20.symbol() (#883-885) (function)
- IBEP20.symbol() (#236) (function)
BEP20.allowance(address,address).owner (#917) shadows:
- Ownable.owner() (#697-699) (function)
BEP20._approve(address,address,uint256).owner (#1089) shadows:
- Ownable.owner() (#697-699) (function)
DMG.swapAndLiquify().maxTransferAmount (#1475) shadows:
- DMG.maxTransferAmount() (#1552-1554) (function)
DMG.recoverLostBNB()._owner (#1505) shadows:
- Ownable._owner (#681) (state variable)
Rename the local variables that shadow another component.
Additional information: link
MasterChef.add(uint256,IBEP20,uint16,uint256,bool) (#1996-2013) should emit an event for:
- totalAllocPoint = totalAllocPoint.add(_allocPoint) (#2003)
MasterChef.set(uint256,uint256,uint16,uint256,bool) (#2016-2026) should emit an event for:
- totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint) (#2022)
MasterChef.setReferralCommissionRate(uint16) (#2202-2205) should emit an event for:
- referralCommissionRate = _referralCommissionRate (#2204)
Emit an event for critical parameter changes.
Additional information: link
DMG.recoverLostBNB()._owner (#1505) lacks a zero-check on :
- _owner.transfer(address(this).balance) (#1506)
Check that the address is not zero.
Additional information: link
MasterChef.updatePool(uint256) (#2063-2079) has external calls inside a loop: lpSupply = pool.lpToken.balanceOf(address(this)) (#2068)
MasterChef.updatePool(uint256) (#2063-2079) has external calls inside a loop: Erc.mint(devAddress,ErcReward.div(10)) (#2075)
MasterChef.updatePool(uint256) (#2063-2079) has external calls inside a loop: Erc.mint(address(this),ErcReward) (#2076)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in DMG.swapAndLiquify() (#1473-1503):
External calls:
- swapTokensForEth(half) (#1493)
- ErcSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1524-1530)
- addLiquidity(otherHalf,newBalance) (#1499)
- ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1499)
- ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1499)
- _allowances[owner][spender] = amount (#1096)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in DMG._transfer(address,address,uint256) (#1435-1470):
External calls:
- swapAndLiquify() (#1445)
- ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
- ErcSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1524-1530)
External calls sending eth:
- swapAndLiquify() (#1445)
- ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#1036)
- super._transfer(sender,address(this),liquidityAmount) (#1465)
- Transfer(sender,recipient,amount) (#1036)
- super._transfer(sender,recipient,sendAmount) (#1467)
- Transfer(sender,recipient,amount) (#1036)
- super._transfer(sender,recipient,amount) (#1449)
- Transfer(sender,recipient,amount) (#1036)
- super._transfer(sender,BURN_ADDRESS,burnAmount) (#1462)
Reentrancy in MasterChef.deposit(uint256,uint256,address) (#2082-2106):
External calls:
- updatePool(_pid) (#2085)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
- ErcReferral.recordReferral(msg.sender,_referrer) (#2087)
- payOrLockupPendingErc(_pid) (#2089)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
Event emitted after the call(s):
- ReferralCommissionPaid(_user,referrer,commissionAmount) (#2216)
- payOrLockupPendingErc(_pid) (#2089)
- RewardLockedUp(msg.sender,_pid,pending) (#2162)
- payOrLockupPendingErc(_pid) (#2089)
Reentrancy in MasterChef.deposit(uint256,uint256,address) (#2082-2106):
External calls:
- updatePool(_pid) (#2085)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
- ErcReferral.recordReferral(msg.sender,_referrer) (#2087)
- payOrLockupPendingErc(_pid) (#2089)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
- pool.lpToken.safeTransferFrom(address(msg.sender),address(this),_amount) (#2091)
- pool.lpToken.safeTransfer(feeAddress,depositFee) (#2098)
Event emitted after the call(s):
- Deposit(msg.sender,_pid,_amount) (#2105)
Reentrancy in MasterChef.emergencyWithdraw(uint256) (#2124-2134):
External calls:
- pool.lpToken.safeTransfer(address(msg.sender),amount) (#2132)
Event emitted after the call(s):
- EmergencyWithdraw(msg.sender,_pid,amount) (#2133)
Reentrancy in MasterChef.payOrLockupPendingErc(uint256) (#2137-2164):
External calls:
- safeErcTransfer(msg.sender,totalRewards) (#2156)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- payReferralCommission(msg.sender,totalRewards) (#2157)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
Event emitted after the call(s):
- ReferralCommissionPaid(_user,referrer,commissionAmount) (#2216)
- payReferralCommission(msg.sender,totalRewards) (#2157)
Reentrancy in MasterChef.payReferralCommission(address,uint256) (#2208-2219):
External calls:
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
Event emitted after the call(s):
- ReferralCommissionPaid(_user,referrer,commissionAmount) (#2216)
Reentrancy in DMG.swapAndLiquify() (#1473-1503):
External calls:
- swapTokensForEth(half) (#1493)
- ErcSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1524-1530)
- addLiquidity(otherHalf,newBalance) (#1499)
- ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1499)
- ErcSwapRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,operator(),block.timestamp) (#1539-1546)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1097)
- addLiquidity(otherHalf,newBalance) (#1499)
- SwapAndLiquify(half,newBalance,otherHalf) (#1501)
Reentrancy in MasterChef.updateEmissionRate(uint256) (#2190-2194):
External calls:
- massUpdatePools() (#2191)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
Event emitted after the call(s):
- EmissionRateUpdated(msg.sender,ErcPerBlock,_ErcPerBlock) (#2192)
Reentrancy in MasterChef.withdraw(uint256,uint256) (#2109-2121):
External calls:
- updatePool(_pid) (#2113)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
- payOrLockupPendingErc(_pid) (#2114)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
Event emitted after the call(s):
- ReferralCommissionPaid(_user,referrer,commissionAmount) (#2216)
- payOrLockupPendingErc(_pid) (#2114)
- RewardLockedUp(msg.sender,_pid,pending) (#2162)
- payOrLockupPendingErc(_pid) (#2114)
Reentrancy in MasterChef.withdraw(uint256,uint256) (#2109-2121):
External calls:
- updatePool(_pid) (#2113)
- Erc.mint(devAddress,ErcReward.div(10)) (#2075)
- Erc.mint(address(this),ErcReward) (#2076)
- payOrLockupPendingErc(_pid) (#2114)
- Erc.transfer(_to,ErcBal) (#2170)
- Erc.transfer(_to,_amount) (#2172)
- Erc.mint(referrer,commissionAmount) (#2214)
- ErcReferral.recordReferralCommission(referrer,commissionAmount) (#2215)
- pool.lpToken.safeTransfer(address(msg.sender),_amount) (#2117)
Event emitted after the call(s):
- Withdraw(msg.sender,_pid,_amount) (#2120)
Apply the check-effects-interactions pattern.
Additional information: link
DMG.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (#1715-1756) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now <= expiry,ERC::delegateBySig: signature expired) (#1754)
MasterChef.canHarvest(uint256,address) (#2049-2052) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp >= user.nextHarvestUntil (#2051)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#344-353) uses assembly
- INLINE ASM (#351)
Address._verifyCallResult(bool,bytes,string) (#489-506) uses assembly
- INLINE ASM (#498-501)
DMG.getChainId() (#1874-1878) uses assembly
- INLINE ASM (#1876)
Do not use evm assembly.
Additional information: link
DMG._transfer(address,address,uint256) (#1435-1470) compares to a boolean constant:
-swapAndLiquifyEnabled == true && _inSwapAndLiquify == false && address(ErcSwapRouter) != address(0) && ErcSwapPair != address(0) && sender != ErcSwapPair && sender != owner() (#1438-1443)
DMG.antiWhale(address,address,uint256) (#1389-1399) compares to a boolean constant:
-_excludedFromAntiWhale[sender] == false && _excludedFromAntiWhale[recipient] == false (#1392-1393)
MasterChef.nonDuplicated(IBEP20) (#1991-1994) compares to a boolean constant:
-require(bool,string)(poolExistence[_lpToken] == false,nonDuplicated: duplicated) (#1992)
Remove the equality to the boolean constant.
Additional information: link
Different versions of Solidity is used:
- Version used: ['0.6.12', '>=0.4.0', '>=0.5.0', '>=0.6.0<0.8.0', '>=0.6.2', '>=0.6.2<0.8.0', '^0.6.0']
- >=0.6.0<0.8.0 (#3)
- >=0.4.0 (#220)
- >=0.6.2<0.8.0 (#321)
- ^0.6.0 (#513)
- 0.6.12 (#616)
- >=0.6.0<0.8.0 (#639)
- >=0.6.0<0.8.0 (#666)
- >=0.6.0<0.8.0 (#736)
- >=0.4.0 (#803)
- >=0.6.2 (#1118)
- >=0.6.2 (#1216)
- >=0.5.0 (#1262)
- >=0.5.0 (#1317)
- 0.6.12 (#1339)
- 0.6.12 (#1885)
Use one Solidity version.
Additional information: link
Address.functionCall(address,bytes) (#397-399) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#422-424) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#471-473) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#481-487) is never used and should be removed
Address.functionStaticCall(address,bytes) (#447-449) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#457-463) is never used and should be removed
Address.sendValue(address,uint256) (#371-377) is never used and should be removed
BEP20._burn(address,uint256) (#1067-1073) is never used and should be removed
BEP20._burnFrom(address,uint256) (#1106-1113) is never used and should be removed
Context._msgData() (#656-659) is never used and should be removed
SafeBEP20.safeApprove(IBEP20,address,uint256) (#555-569) is never used and should be removed
SafeBEP20.safeDecreaseAllowance(IBEP20,address,uint256) (#580-590) is never used and should be removed
SafeBEP20.safeIncreaseAllowance(IBEP20,address,uint256) (#571-578) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#190-193) is never used and should be removed
SafeMath.mod(uint256,uint256) (#152-155) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#210-213) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#24-28) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#60-63) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#70-73) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#45-53) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#35-38) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version>=0.6.0<0.8.0 (#3) is too complex
Pragma version>=0.4.0 (#220) allows old versions
Pragma version>=0.6.2<0.8.0 (#321) is too complex
Pragma version^0.6.0 (#513) allows old versions
Pragma version>=0.6.0<0.8.0 (#639) is too complex
Pragma version>=0.6.0<0.8.0 (#666) is too complex
Pragma version>=0.6.0<0.8.0 (#736) is too complex
Pragma version>=0.4.0 (#803) allows old versions
Pragma version>=0.6.2 (#1118) allows old versions
Pragma version>=0.6.2 (#1216) allows old versions
Pragma version>=0.5.0 (#1262) allows old versions
Pragma version>=0.5.0 (#1317) allows old versions
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
Low level call in Address.sendValue(address,uint256) (#371-377):
- (success) = recipient.call{value: amount}() (#375)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#432-439):
- (success,returndata) = target.call{value: value}(data) (#437)
Low level call in Address.functionStaticCall(address,bytes,string) (#457-463):
- (success,returndata) = target.staticcall(data) (#461)
Low level call in Address.functionDelegateCall(address,bytes,string) (#481-487):
- (success,returndata) = target.delegatecall(data) (#485)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Router01.WETH() (#1122) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#1279) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#1280) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#1297) is not in mixedCase
Parameter DMG.mint(address,uint256)._to (#1429) is not in mixedCase
Parameter DMG.mint(address,uint256)._amount (#1429) is not in mixedCase
Parameter DMG.recoverLostTokensExceptOurTokens(address,uint256)._token (#1510) is not in mixedCase
Parameter DMG.isExcludedFromAntiWhale(address)._account (#1559) is not in mixedCase
Parameter DMG.updateTransferTaxRate(uint16)._transferTaxRate (#1570) is not in mixedCase
Parameter DMG.updateBurnRate(uint16)._burnRate (#1580) is not in mixedCase
Parameter DMG.updateMaxTransferAmountRate(uint16)._maxTransferAmountRate (#1590) is not in mixedCase
Parameter DMG.updateMinAmountToLiquify(uint256)._minAmount (#1600) is not in mixedCase
Parameter DMG.setExcludedFromAntiWhale(address,bool)._account (#1609) is not in mixedCase
Parameter DMG.setExcludedFromAntiWhale(address,bool)._excluded (#1609) is not in mixedCase
Parameter DMG.updateSwapAndLiquifyEnabled(bool)._enabled (#1617) is not in mixedCase
Parameter DMG.updateErcSwapRouter(address)._router (#1626) is not in mixedCase
Variable DMG.ErcSwapRouter (#1365) is not in mixedCase
Variable DMG.ErcSwapPair (#1367) is not in mixedCase
Variable DMG._delegates (#1657) is not in mixedCase
Parameter MasterChef.add(uint256,IBEP20,uint16,uint256,bool)._allocPoint (#1996) is not in mixedCase
Parameter MasterChef.add(uint256,IBEP20,uint16,uint256,bool)._lpToken (#1996) is not in mixedCase
Parameter MasterChef.add(uint256,IBEP20,uint16,uint256,bool)._depositFeeBP (#1996) is not in mixedCase
Parameter MasterChef.add(uint256,IBEP20,uint16,uint256,bool)._harvestInterval (#1996) is not in mixedCase
Parameter MasterChef.add(uint256,IBEP20,uint16,uint256,bool)._withUpdate (#1996) is not in mixedCase
Parameter MasterChef.set(uint256,uint256,uint16,uint256,bool)._pid (#2016) is not in mixedCase
Parameter MasterChef.set(uint256,uint256,uint16,uint256,bool)._allocPoint (#2016) is not in mixedCase
Parameter MasterChef.set(uint256,uint256,uint16,uint256,bool)._depositFeeBP (#2016) is not in mixedCase
Parameter MasterChef.set(uint256,uint256,uint16,uint256,bool)._harvestInterval (#2016) is not in mixedCase
Parameter MasterChef.set(uint256,uint256,uint16,uint256,bool)._withUpdate (#2016) is not in mixedCase
Parameter MasterChef.getMultiplier(uint256,uint256)._from (#2029) is not in mixedCase
Parameter MasterChef.getMultiplier(uint256,uint256)._to (#2029) is not in mixedCase
Parameter MasterChef.pendingErc(uint256,address)._pid (#2034) is not in mixedCase
Parameter MasterChef.pendingErc(uint256,address)._user (#2034) is not in mixedCase
Parameter MasterChef.canHarvest(uint256,address)._pid (#2049) is not in mixedCase
Parameter MasterChef.canHarvest(uint256,address)._user (#2049) is not in mixedCase
Parameter MasterChef.updatePool(uint256)._pid (#2063) is not in mixedCase
Parameter MasterChef.deposit(uint256,uint256,address)._pid (#2082) is not in mixedCase
Parameter MasterChef.deposit(uint256,uint256,address)._amount (#2082) is not in mixedCase
Parameter MasterChef.deposit(uint256,uint256,address)._referrer (#2082) is not in mixedCase
Parameter MasterChef.withdraw(uint256,uint256)._pid (#2109) is not in mixedCase
Parameter MasterChef.withdraw(uint256,uint256)._amount (#2109) is not in mixedCase
Parameter MasterChef.emergencyWithdraw(uint256)._pid (#2124) is not in mixedCase
Parameter MasterChef.payOrLockupPendingErc(uint256)._pid (#2137) is not in mixedCase
Parameter MasterChef.safeErcTransfer(address,uint256)._to (#2167) is not in mixedCase
Parameter MasterChef.safeErcTransfer(address,uint256)._amount (#2167) is not in mixedCase
Parameter MasterChef.setDevAddress(address)._devAddress (#2177) is not in mixedCase
Parameter MasterChef.setFeeAddress(address)._feeAddress (#2183) is not in mixedCase
Parameter MasterChef.updateEmissionRate(uint256)._ErcPerBlock (#2190) is not in mixedCase
Parameter MasterChef.setErcReferral(IErcReferral)._ErcReferral (#2197) is not in mixedCase
Parameter MasterChef.setReferralCommissionRate(uint16)._referralCommissionRate (#2202) is not in mixedCase
Parameter MasterChef.payReferralCommission(address,uint256)._user (#2208) is not in mixedCase
Parameter MasterChef.payReferralCommission(address,uint256)._pending (#2208) is not in mixedCase
Variable MasterChef.Erc (#1935) is not in mixedCase
Variable MasterChef.ErcPerBlock (#1941) is not in mixedCase
Variable MasterChef.ErcReferral (#1959) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#657)" inContext (#651-660)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#1127) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#1128)
Prevent variables from having similar names.
Additional information: link
DMG.slitherConstructorConstantVariables() (#1346-1879) uses literals with too many digits:
- BURN_ADDRESS = 0x000000000000000000000000000000000000dEaD (#1354)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#716-719)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#725-729)
decimals() should be declared external:
- BEP20.decimals() (#876-878)
symbol() should be declared external:
- BEP20.symbol() (#883-885)
transfer(address,uint256) should be declared external:
- BEP20.transfer(address,uint256) (#909-912)
allowance(address,address) should be declared external:
- BEP20.allowance(address,address) (#917-919)
approve(address,uint256) should be declared external:
- BEP20.approve(address,uint256) (#928-931)
transferFrom(address,address,uint256) should be declared external:
- BEP20.transferFrom(address,address,uint256) (#945-957)
increaseAllowance(address,uint256) should be declared external:
- BEP20.increaseAllowance(address,uint256) (#971-974)
decreaseAllowance(address,uint256) should be declared external:
- BEP20.decreaseAllowance(address,uint256) (#990-997)
mint(uint256) should be declared external:
- BEP20.mint(uint256) (#1007-1010)
mint(address,uint256) should be declared external:
- DMG.mint(address,uint256) (#1429-1432)
recoverLostBNB() should be declared external:
- DMG.recoverLostBNB() (#1504-1507)
recoverLostTokensExceptOurTokens(address,uint256) should be declared external:
- DMG.recoverLostTokensExceptOurTokens(address,uint256) (#1510-1513)
isExcludedFromAntiWhale(address) should be declared external:
- DMG.isExcludedFromAntiWhale(address) (#1559-1561)
updateTransferTaxRate(uint16) should be declared external:
- DMG.updateTransferTaxRate(uint16) (#1570-1574)
updateBurnRate(uint16) should be declared external:
- DMG.updateBurnRate(uint16) (#1580-1584)
updateMaxTransferAmountRate(uint16) should be declared external:
- DMG.updateMaxTransferAmountRate(uint16) (#1590-1594)
updateMinAmountToLiquify(uint256) should be declared external:
- DMG.updateMinAmountToLiquify(uint256) (#1600-1603)
setExcludedFromAntiWhale(address,bool) should be declared external:
- DMG.setExcludedFromAntiWhale(address,bool) (#1609-1611)
updateSwapAndLiquifyEnabled(bool) should be declared external:
- DMG.updateSwapAndLiquifyEnabled(bool) (#1617-1620)
updateErcSwapRouter(address) should be declared external:
- DMG.updateErcSwapRouter(address) (#1626-1631)
transferOperator(address) should be declared external:
- DMG.transferOperator(address) (#1644-1648)
add(uint256,IBEP20,uint16,uint256,bool) should be declared external:
- MasterChef.add(uint256,IBEP20,uint16,uint256,bool) (#1996-2013)
set(uint256,uint256,uint16,uint256,bool) should be declared external:
- MasterChef.set(uint256,uint256,uint16,uint256,bool) (#2016-2026)
withdraw(uint256,uint256) should be declared external:
- MasterChef.withdraw(uint256,uint256) (#2109-2121)
emergencyWithdraw(uint256) should be declared external:
- MasterChef.emergencyWithdraw(uint256) (#2124-2134)
setDevAddress(address) should be declared external:
- MasterChef.setDevAddress(address) (#2177-2181)
setFeeAddress(address) should be declared external:
- MasterChef.setFeeAddress(address) (#2183-2187)
updateEmissionRate(uint256) should be declared external:
- MasterChef.updateEmissionRate(uint256) (#2190-2194)
setErcReferral(IErcReferral) should be declared external:
- MasterChef.setErcReferral(IErcReferral) (#2197-2199)
setReferralCommissionRate(uint16) should be declared external:
- MasterChef.setReferralCommissionRate(uint16) (#2202-2205)
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 price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts