The World's First Anti-Whale Mechanism to protect your investment as you cash in on a super-high APY. LockPay is the greatest Autostaking & Compounding token with a Fixed APY 164,620.7%. $LockPay protects you from Pump And Dumps that plague small-cap projects while still giving you super-high daily compounding interest rate. No Team Tokens, Liquidity locked for 9 years, Double KYC with CoinSniper & Pinksale, and Massive Marketing with Top KOLs, Influencers, Celebrities on board.
Reentrancy in DTOKEN._transferFrom(address,address,uint256) (#508-565):
External calls:
- swapBack() (#542)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#616-625)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#633-639)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#647-653)
External calls sending eth:
- swapBack() (#542)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
State variables written after the call(s):
- _gonBalances[sender] = _gonBalances[sender].sub(gonAmount) (#545)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonAmountReceived) (#548)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#547)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(feeAmount) (#687)
- _rebase() (#557)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (#755)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Contract ownership is not renounced (belongs to a wallet)
DTOKEN.swapBack() (#656-679) performs a multiplication on the result of a division:
-contractTokenBalance = _gonBalances[address(this)].div(_gonsPerFragment) (#660)
-amountToLiquify = contractTokenBalance.mul(dynamicLiquidityFee.mul(2)).div(realTotalFee) (#662)
DTOKEN.swapBack() (#656-679) performs a multiplication on the result of a division:
-contractTokenBalance = _gonBalances[address(this)].div(_gonsPerFragment) (#660)
-amountToRFV = contractTokenBalance.mul(buyFeeRFV.mul(2).add(sellFeeRFVAdded)).div(realTotalFee) (#663)
DTOKEN.setSwapBackSettings(bool,uint256,uint256) (#818-821) performs a multiplication on the result of a division:
-gonSwapThreshold = TOTAL_GONS.div(_denom).mul(_num) (#820)
Consider ordering multiplication before division.
Additional information: link
DTOKEN.manualSync() (#487-491) has external calls inside a loop: InterfaceLP(_markerPairs[i]).sync() (#489)
Favor pull over push strategy for external calls.
Additional information: link
SafeMath.mod(uint256,uint256) (#109-112) is never used and should be removed
SafeMathInt.abs(int256) (#35-38) is never used and should be removed
SafeMathInt.add(int256,int256) (#29-33) is never used and should be removed
SafeMathInt.div(int256,int256) (#17-21) is never used and should be removed
SafeMathInt.mul(int256,int256) (#9-15) is never used and should be removed
SafeMathInt.sub(int256,int256) (#23-27) is never used and should be removed
Remove unused functions.
Additional information: link
DTOKEN.totalBuyFee (#359) is set pre-construction with a non-constant function or state variable:
- liquidityFee.add(treasuryFee).add(buyFeeRFV)
DTOKEN.totalSellFee (#360) is set pre-construction with a non-constant function or state variable:
- totalBuyFee.add(sellFeeTreasuryAdded).add(sellFeeRFVAdded)
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
Function IDEXRouter.WETH() (#171) is not in mixedCase
Struct DTOKEN.user (#375-379) is not in CapWords
Parameter DTOKEN.checkFeeExempt(address)._addr (#440) is not in mixedCase
Parameter DTOKEN.setAutomatedMarketMakerPair(address,bool)._pair (#774) is not in mixedCase
Parameter DTOKEN.setAutomatedMarketMakerPair(address,bool)._value (#774) is not in mixedCase
Parameter DTOKEN.setInitialDistributionFinished(bool)._value (#795) is not in mixedCase
Parameter DTOKEN.setFeeExempt(address,bool)._addr (#800) is not in mixedCase
Parameter DTOKEN.setFeeExempt(address,bool)._value (#800) is not in mixedCase
Parameter DTOKEN.setTxFee(uint256)._addr (#805) is not in mixedCase
Parameter DTOKEN.setTwentyFourhours(uint256)._time (#809) is not in mixedCase
Parameter DTOKEN.setSwapBackSettings(bool,uint256,uint256)._enabled (#818) is not in mixedCase
Parameter DTOKEN.setSwapBackSettings(bool,uint256,uint256)._num (#818) is not in mixedCase
Parameter DTOKEN.setSwapBackSettings(bool,uint256,uint256)._denom (#818) is not in mixedCase
Parameter DTOKEN.setFeeReceivers(address,address,address)._liquidityReceiver (#823) is not in mixedCase
Parameter DTOKEN.setFeeReceivers(address,address,address)._treasuryReceiver (#823) is not in mixedCase
Parameter DTOKEN.setFeeReceivers(address,address,address)._riskFreeValueReceiver (#823) is not in mixedCase
Parameter DTOKEN.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._liquidityFee (#829) is not in mixedCase
Parameter DTOKEN.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._riskFreeValue (#829) is not in mixedCase
Parameter DTOKEN.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._treasuryFee (#829) is not in mixedCase
Parameter DTOKEN.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._sellFeeTreasuryAdded (#829) is not in mixedCase
Parameter DTOKEN.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._sellFeeRFVAdded (#829) is not in mixedCase
Parameter DTOKEN.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._feeDenominator (#829) is not in mixedCase
Parameter DTOKEN.clearStuckBalance(address)._receiver (#850) is not in mixedCase
Parameter DTOKEN.setAutoRebase(bool)._autoRebase (#859) is not in mixedCase
Parameter DTOKEN.setRebaseFrequency(uint256)._rebaseFrequency (#864) is not in mixedCase
Parameter DTOKEN.setRewardYield(uint256,uint256)._rewardYield (#869) is not in mixedCase
Parameter DTOKEN.setRewardYield(uint256,uint256)._rewardYieldDenominator (#869) is not in mixedCase
Parameter DTOKEN.setFeesOnNormalTransfers(bool)._enabled (#874) is not in mixedCase
Parameter DTOKEN.setIsLiquidityInBnb(bool)._value (#879) is not in mixedCase
Parameter DTOKEN.setNextRebase(uint256)._nextRebase (#884) is not in mixedCase
Parameter DTOKEN.setMaxSellTransaction(uint256)._maxTxn (#888) is not in mixedCase
Variable DTOKEN._isFeeExempt (#331) is not in mixedCase
Variable DTOKEN._markerPairs (#332) is not in mixedCase
Variable DTOKEN.DEAD (#343) is not in mixedCase
Variable DTOKEN.ZERO (#344) is not in mixedCase
Variable DTOKEN.TwentyFourhours (#381) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#176) is too similar to IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#177)
Prevent variables from having similar names.
Additional information: link
DTOKEN.slitherConstructorVariables() (#314-898) uses literals with too many digits:
- rewardYieldDenominator = 10000000000 (#325)
DTOKEN.slitherConstructorVariables() (#314-898) uses literals with too many digits:
- maxSellTransactionAmount = 2500000 * 10 ** 18 (#326)
DTOKEN.slitherConstructorVariables() (#314-898) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#343)
DTOKEN.slitherConstructorVariables() (#314-898) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#344)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#7) is never used in SafeMathInt (#5-39)
Remove unused state variables.
Additional information: link
DTOKEN.DEAD (#343) should be constant
DTOKEN.ZERO (#344) should be constant
DTOKEN.busdToken (#349) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
name() should be declared external:
- ERC20Detailed.name() (#155-157)
symbol() should be declared external:
- ERC20Detailed.symbol() (#159-161)
decimals() should be declared external:
- ERC20Detailed.decimals() (#163-165)
owner() should be declared external:
- Ownable.owner() (#250-252)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#259-262)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#264-266)
addWhitelisted(address) should be declared external:
- WhitelistedRole.addWhitelisted(address) (#291-293)
removeWhitelisted(address) should be declared external:
- WhitelistedRole.removeWhitelisted(address) (#295-297)
renounceWhitelisted() should be declared external:
- WhitelistedRole.renounceWhitelisted() (#299-301)
Use the external attribute for functions never called from the contract.
Additional information: link
DTOKEN.constructor() (#397-424) ignores return value by IERC20(busdToken).approve(address(router),uint256(- 1)) (#419)
DTOKEN.constructor() (#397-424) ignores return value by IERC20(busdToken).approve(address(pairBusd),uint256(- 1)) (#420)
DTOKEN.constructor() (#397-424) ignores return value by IERC20(busdToken).approve(address(this),uint256(- 1)) (#421)
DTOKEN.getLiquidityBacking(uint256) (#475-481) ignores return value by liquidityBalance.add(balanceOf(_markerPairs[i]).div(10 ** 9)) (#478)
DTOKEN._addLiquidity(uint256,uint256) (#605-614) ignores return value by router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
DTOKEN._addLiquidityBusd(uint256,uint256) (#615-626) ignores return value by router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#616-625)
Ensure that all the return values of the function calls are used.
Additional information: link
DTOKEN.setTxFee(uint256) (#805-807) should emit an event for:
- txfee = _addr (#806)
DTOKEN.setTwentyFourhours(uint256) (#809-811) should emit an event for:
- TwentyFourhours = _time (#810)
DTOKEN.setTargetLiquidity(uint256,uint256) (#813-816) should emit an event for:
- targetLiquidity = target (#814)
- targetLiquidityDenominator = accuracy (#815)
DTOKEN.setSwapBackSettings(bool,uint256,uint256) (#818-821) should emit an event for:
- gonSwapThreshold = TOTAL_GONS.div(_denom).mul(_num) (#820)
DTOKEN.setFees(uint256,uint256,uint256,uint256,uint256,uint256) (#829-848) should emit an event for:
- liquidityFee = _liquidityFee (#839)
- buyFeeRFV = _riskFreeValue (#840)
- treasuryFee = _treasuryFee (#841)
- sellFeeTreasuryAdded = _sellFeeTreasuryAdded (#842)
- sellFeeRFVAdded = _sellFeeRFVAdded (#843)
- totalBuyFee = liquidityFee.add(treasuryFee).add(buyFeeRFV) (#844)
- totalSellFee = totalBuyFee.add(sellFeeTreasuryAdded).add(sellFeeRFVAdded) (#845)
- feeDenominator = _feeDenominator (#846)
DTOKEN.setRebaseFrequency(uint256) (#864-867) should emit an event for:
- rebaseFrequency = _rebaseFrequency (#866)
DTOKEN.setRewardYield(uint256,uint256) (#869-872) should emit an event for:
- rewardYield = _rewardYield (#870)
- rewardYieldDenominator = _rewardYieldDenominator (#871)
DTOKEN.setNextRebase(uint256) (#884-886) should emit an event for:
- nextRebase = _nextRebase (#885)
DTOKEN.setMaxSellTransaction(uint256) (#888-890) should emit an event for:
- maxSellTransactionAmount = _maxTxn (#889)
Emit an event for critical parameter changes.
Additional information: link
DTOKEN.setFeeReceivers(address,address,address)._liquidityReceiver (#823) lacks a zero-check on :
- liquidityReceiver = _liquidityReceiver (#824)
DTOKEN.setFeeReceivers(address,address,address)._treasuryReceiver (#823) lacks a zero-check on :
- treasuryReceiver = _treasuryReceiver (#825)
DTOKEN.setFeeReceivers(address,address,address)._riskFreeValueReceiver (#823) lacks a zero-check on :
- riskFreeValueReceiver = _riskFreeValueReceiver (#826)
DTOKEN.clearStuckBalance(address)._receiver (#850) lacks a zero-check on :
- address(_receiver).transfer(balance) (#852)
Check that the address is not zero.
Additional information: link
Reentrancy in DTOKEN._transferFrom(address,address,uint256) (#508-565):
External calls:
- swapBack() (#542)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#616-625)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#633-639)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#647-653)
External calls sending eth:
- swapBack() (#542)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
State variables written after the call(s):
- _rebase() (#557)
- _totalSupply = _totalSupply.sub(uint256(- supplyDelta)) (#746)
- _totalSupply = _totalSupply.add(uint256(supplyDelta)) (#748)
- _totalSupply = MAX_SUPPLY (#752)
- _rebase() (#557)
- nextRebase = epoch + rebaseFrequency (#757)
Reentrancy in DTOKEN.constructor() (#397-424):
External calls:
- pair = IDEXFactory(router.factory()).createPair(address(this),router.WETH()) (#399)
- pairBusd = IDEXFactory(router.factory()).createPair(address(this),busdToken) (#400)
State variables written after the call(s):
- _allowedFragments[address(this)][address(router)] = uint256(- 1) (#402)
- _allowedFragments[address(this)][pair] = uint256(- 1) (#403)
- _allowedFragments[address(this)][address(this)] = uint256(- 1) (#404)
- _allowedFragments[address(this)][pairBusd] = uint256(- 1) (#405)
- _gonBalances[msg.sender] = TOTAL_GONS (#411)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (#412)
- _isFeeExempt[treasuryReceiver] = true (#414)
- _isFeeExempt[riskFreeValueReceiver] = true (#415)
- _isFeeExempt[address(this)] = true (#416)
- _isFeeExempt[msg.sender] = true (#417)
- setAutomatedMarketMakerPair(pair,true) (#407)
- _markerPairs.push(_pair) (#780)
- _markerPairs[i] = _markerPairs[_markerPairs.length - 1] (#785)
- _markerPairs.pop() (#786)
- setAutomatedMarketMakerPair(pairBusd,true) (#408)
- _markerPairs.push(_pair) (#780)
- _markerPairs[i] = _markerPairs[_markerPairs.length - 1] (#785)
- _markerPairs.pop() (#786)
- _totalSupply = INITIAL_FRAGMENTS_SUPPLY (#410)
- setAutomatedMarketMakerPair(pair,true) (#407)
- automatedMarketMakerPairs[_pair] = _value (#777)
- setAutomatedMarketMakerPair(pairBusd,true) (#408)
- automatedMarketMakerPairs[_pair] = _value (#777)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in DTOKEN._swapAndLiquify(uint256) (#578-603):
External calls:
- _swapTokensForBNB(half,address(this)) (#585)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#633-639)
- _addLiquidity(otherHalf,newBalance) (#589)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
External calls sending eth:
- _addLiquidity(otherHalf,newBalance) (#589)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
Event emitted after the call(s):
- SwapAndLiquify(half,newBalance,otherHalf) (#591)
Reentrancy in DTOKEN._swapAndLiquify(uint256) (#578-603):
External calls:
- _swapTokensForBusd(half,address(this)) (#595)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#647-653)
- _addLiquidityBusd(otherHalf,newBalance_scope_1) (#599)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#616-625)
Event emitted after the call(s):
- SwapAndLiquifyBusd(half,newBalance_scope_1,otherHalf) (#601)
Reentrancy in DTOKEN._transferFrom(address,address,uint256) (#508-565):
External calls:
- swapBack() (#542)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#616-625)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#633-639)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#647-653)
External calls sending eth:
- swapBack() (#542)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
Event emitted after the call(s):
- LogRebase(epoch,_totalSupply) (#741)
- _rebase() (#557)
- LogRebase(epoch,_totalSupply) (#759)
- _rebase() (#557)
- Transfer(sender,address(this),feeAmount.div(_gonsPerFragment)) (#688)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#547)
- Transfer(sender,recipient,gonAmountReceived.div(_gonsPerFragment)) (#550-554)
Reentrancy in DTOKEN.constructor() (#397-424):
External calls:
- pair = IDEXFactory(router.factory()).createPair(address(this),router.WETH()) (#399)
- pairBusd = IDEXFactory(router.factory()).createPair(address(this),busdToken) (#400)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(_pair,_value) (#792)
- setAutomatedMarketMakerPair(pairBusd,true) (#408)
- SetAutomatedMarketMakerPair(_pair,_value) (#792)
- setAutomatedMarketMakerPair(pair,true) (#407)
Reentrancy in DTOKEN.constructor() (#397-424):
External calls:
- pair = IDEXFactory(router.factory()).createPair(address(this),router.WETH()) (#399)
- pairBusd = IDEXFactory(router.factory()).createPair(address(this),busdToken) (#400)
- IERC20(busdToken).approve(address(router),uint256(- 1)) (#419)
- IERC20(busdToken).approve(address(pairBusd),uint256(- 1)) (#420)
- IERC20(busdToken).approve(address(this),uint256(- 1)) (#421)
Event emitted after the call(s):
- Transfer(address(0x0),msg.sender,_totalSupply) (#423)
Reentrancy in DTOKEN.swapBack() (#656-679):
External calls:
- _swapAndLiquify(amountToLiquify) (#667)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#616-625)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#633-639)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#647-653)
- _swapTokensForBusd(amountToRFV,riskFreeValueReceiver) (#671)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#647-653)
- _swapTokensForBNB(amountToTreasury,treasuryReceiver) (#675)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#633-639)
External calls sending eth:
- _swapAndLiquify(amountToLiquify) (#667)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#606-613)
Event emitted after the call(s):
- SwapBack(contractTokenBalance,amountToLiquify,amountToRFV,amountToTreasury) (#678)
Apply the check-effects-interactions pattern.
Additional information: link
DTOKEN.shouldRebase() (#448-450) uses timestamp for comparisons
Dangerous comparisons:
- nextRebase <= block.timestamp (#449)
DTOKEN._transferFrom(address,address,uint256) (#508-565) uses timestamp for comparisons
Dangerous comparisons:
- blkTime > tradeData[sender].lastTradeTime + TwentyFourhours (#525)
- (blkTime < tradeData[sender].lastTradeTime + TwentyFourhours) && ((blkTime > tradeData[sender].lastTradeTime)) (#529)
- shouldRebase() && autoRebase (#556)
DTOKEN.manualRebase() (#763-772) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(nextRebase <= block.timestamp,Not in time) (#765)
Avoid relying on block.timestamp.
Additional information: link
DTOKEN.setAutomatedMarketMakerPair(address,bool) (#774-793) has costly operations inside a loop:
- _markerPairs.pop() (#786)
Use a local variable to hold the loop computation result.
Additional information: link
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Unable to find whitepaper link on the website
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Token is not listed at Mobula.Finance
Additional information: link
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
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account