Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
DogeLimitless._claimBNBTo(address,address,uint256) (#563-574) sends eth to arbitrary user
Dangerous calls:
- (sent) = to.call{value: (amountWei)}() (#570)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in DogeLimitless._claimBNBTo(address,address,uint256) (#563-574):
External calls:
- (sent) = to.call{value: (amountWei)}() (#570)
State variables written after the call(s):
- _isWithdrawing = false (#572)
Reentrancy in DogeLimitless._taxedTransfer(address,address,uint256,bool,bool) (#886-933):
External calls:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#837-843)
- (sent) = to.call{value: (amountWei)}() (#570)
External calls sending eth:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- (sent) = to.call{value: (amountWei)}() (#570)
State variables written after the call(s):
- _removeToken(sender,amount) (#928)
- _balances[addr] = newAmount (#742)
- _balances[addr] = newAmount (#748)
- _addToken(address(this),contractToken) (#929)
- _balances[addr] = newAmount (#724)
- _balances[addr] = newAmount (#730)
- _balances[addr] = newAmount (#735)
- _addToken(recipient,taxedAmount) (#931)
- _balances[addr] = newAmount (#724)
- _balances[addr] = newAmount (#730)
- _balances[addr] = newAmount (#735)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _isWithdrawing = true (#566)
- _isWithdrawing = false (#572)
- _removeToken(sender,amount) (#928)
- _totalShares -= amount (#745)
- _addToken(address(this),contractToken) (#929)
- _totalShares += amount (#727)
- _addToken(recipient,taxedAmount) (#931)
- _totalShares += amount (#727)
- _removeToken(sender,amount) (#928)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#749)
- _addToken(address(this),contractToken) (#929)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#731)
- _addToken(recipient,taxedAmount) (#931)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#731)
- _swapContractToken(AutoLPThreshold,false) (#924)
- alreadyPaidMisc[addr] = miscRewardShare * _balances[addr] (#585)
- _removeToken(sender,amount) (#928)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#751)
- _addToken(address(this),contractToken) (#929)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#733)
- _addToken(recipient,taxedAmount) (#931)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#733)
- _swapContractToken(AutoLPThreshold,false) (#924)
- mainRewardShare += ((MainAmount * DistributionMultiplier) / totalShares) (#786)
- _swapContractToken(AutoLPThreshold,false) (#924)
- miscRewardShare += ((MiscAmount * DistributionMultiplier) / totalShares) (#787)
- _removeToken(sender,amount) (#928)
- toBePaidMain[addr] += mainPayment (#750)
- _addToken(address(this),contractToken) (#929)
- toBePaidMain[addr] += mainPayment (#732)
- _addToken(recipient,taxedAmount) (#931)
- toBePaidMain[addr] += mainPayment (#732)
- _swapContractToken(AutoLPThreshold,false) (#924)
- toBePaidMisc[addr] -= amount (#581)
- toBePaidMisc[addr] += newAmount (#586)
- toBePaidMisc[addr] -= amount (#587)
- _removeToken(sender,amount) (#928)
- toBePaidMisc[addr] += miscPayment (#752)
- _addToken(address(this),contractToken) (#929)
- toBePaidMisc[addr] += miscPayment (#734)
- _addToken(recipient,taxedAmount) (#931)
- toBePaidMisc[addr] += miscPayment (#734)
- _swapContractToken(AutoLPThreshold,false) (#924)
- totalPayouts += amountWei (#569)
Reentrancy in DogeLimitless.claimToken(address,address,uint256) (#502-547):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
State variables written after the call(s):
- _isWithdrawing = false (#546)
Apply the check-effects-interactions pattern.
Additional information: link
DogeLimitless.ReleaseLP() (#646-651) ignores return value by liquidityToken.transfer(msg.sender,amount) (#650)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
DogeLimitless._subtractDividents(address,uint256) (#576-589) uses a dangerous strict equality:
- amount == 0 (#577)
DogeLimitless.claimToken(address,address,uint256) (#502-547) uses a dangerous strict equality:
- amount == 0 && payableAmount == 0 (#528)
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.
DogeLimitless._distributeStake(uint256,bool) (#767-791) performs a multiplication on the result of a division:
-StakingSplit = (BNBamount * _stakingTax) / totalRatio (#772)
-MainAmount = (StakingSplit * _MainRewardSplit) / 100 (#773)
DogeLimitless._distributeStake(uint256,bool) (#767-791) performs a multiplication on the result of a division:
-StakingSplit = (BNBamount * _stakingTax) / totalRatio (#772)
-MiscAmount = (StakingSplit * _MiscRewardSplit) / 100 (#774)
DogeLimitless._distributeStake(uint256,bool) (#767-791) performs a multiplication on the result of a division:
-MainAmount = (StakingSplit * _MainRewardSplit) / 100 (#773)
-mainRewardShare += ((MainAmount * DistributionMultiplier) / totalShares) (#786)
DogeLimitless._distributeStake(uint256,bool) (#767-791) performs a multiplication on the result of a division:
-MiscAmount = (StakingSplit * _MiscRewardSplit) / 100 (#774)
-miscRewardShare += ((MiscAmount * DistributionMultiplier) / totalShares) (#787)
DogeLimitless._swapContractToken(uint16,bool) (#802-830) performs a multiplication on the result of a division:
-tokenToSwap = _balances[_pancakePairAddress] * permilleOfPancake / 1000 (#808)
-tokenForLiquidity = (tokenToSwap * _liquidityTax) / totalTax (#817)
Consider ordering multiplication before division.
Additional information: link
DogeLimitless.constructor() (#424-455) ignores return value by _excluded.add(msg.sender) (#445)
DogeLimitless.constructor() (#424-455) ignores return value by _excluded.add(MarketingWallet) (#446)
DogeLimitless.constructor() (#424-455) ignores return value by _excluded.add(Developer) (#447)
DogeLimitless.constructor() (#424-455) ignores return value by _excluded.add(address(this)) (#448)
DogeLimitless.constructor() (#424-455) ignores return value by _excluded.add(BurnAddress) (#449)
DogeLimitless.constructor() (#424-455) ignores return value by _excludedFromStaking.add(address(this)) (#450)
DogeLimitless.constructor() (#424-455) ignores return value by _excludedFromStaking.add(BurnAddress) (#451)
DogeLimitless.constructor() (#424-455) ignores return value by _excludedFromStaking.add(address(_pancakeRouter)) (#452)
DogeLimitless.constructor() (#424-455) ignores return value by _excludedFromStaking.add(_pancakePairAddress) (#453)
DogeLimitless.RemoveLP() (#654-670) ignores return value by liquidityToken.approve(address(_pancakeRouter),amount) (#659)
DogeLimitless.RemoveLP() (#654-670) ignores return value by _pancakeRouter.removeLiquidityETHSupportingFeeOnTransferTokens(address(this),amount,0,0,address(this),block.timestamp) (#660-667)
DogeLimitless._addLiquidity(uint256,uint256) (#846-857) ignores return value by _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
DogeLimitless.ExcludeFromStaking(address) (#1032-1043) ignores return value by _excludedFromStaking.add(addr) (#1041)
DogeLimitless.IncludeMeToStaking() (#1046-1052) ignores return value by _excludedFromStaking.remove(msg.sender) (#1049)
DogeLimitless.IncludeToStaking(address) (#1055-1062) ignores return value by _excludedFromStaking.remove(addr) (#1058)
DogeLimitless.SetMarketingWallet(address) (#1078-1084) ignores return value by _excluded.remove(prevMarketing) (#1080)
DogeLimitless.SetMarketingWallet(address) (#1078-1084) ignores return value by _excluded.add(MarketingWallet) (#1082)
DogeLimitless.SetDevWallet(address) (#1088-1094) ignores return value by _excluded.remove(prevDev) (#1090)
DogeLimitless.SetDevWallet(address) (#1088-1094) ignores return value by _excluded.add(Developer) (#1092)
DogeLimitless.ExcludeAccountFromFees(address) (#1098-1101) ignores return value by _excluded.add(account) (#1099)
DogeLimitless.IncludeAccountToFees(address) (#1104-1107) ignores return value by _excluded.remove(account) (#1105)
DogeLimitless.setPresale(address) (#1109-1112) ignores return value by _excluded.add(presaleAddress) (#1110)
DogeLimitless.setPresale(address) (#1109-1112) ignores return value by _excludedFromStaking.add(presaleAddress) (#1111)
Ensure that all the return values of the function calls are used.
Additional information: link
DogeLimitless.allowance(address,address)._owner (#456) shadows:
- Ownable._owner (#182) (state variable)
DogeLimitless._approve(address,address,uint256).owner (#463) shadows:
- Ownable.owner() (#189-191) (function)
Rename the local variables that shadow another component.
Additional information: link
DogeLimitless.TriggerBuyBack(uint256) (#977-990) should emit an event for:
- BuyBackBalance -= weiAmount (#979)
DogeLimitless.WithdrawDev(uint256) (#1006-1011) should emit an event for:
- DevBalance -= amount (#1008)
DogeLimitless.WithdrawMarketing(uint256) (#1022-1027) should emit an event for:
- MarketingBalance -= amount (#1024)
Emit an event for critical parameter changes.
Additional information: link
DogeLimitless.ChangeMiscReward(address).newReward (#623) lacks a zero-check on :
- MiscReward = newReward (#624)
DogeLimitless.SetMarketingWallet(address).addr (#1078) lacks a zero-check on :
- MarketingWallet = addr (#1081)
DogeLimitless.SetDevWallet(address).addr (#1088) lacks a zero-check on :
- Developer = addr (#1091)
Check that the address is not zero.
Additional information: link
Reentrancy in DogeLimitless._swapContractToken(uint16,bool) (#802-830):
External calls:
- _swapTokenForBNB(swapToken) (#823)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#837-843)
- _addLiquidity(liqToken,liqBNB) (#826)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#826)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
State variables written after the call(s):
- _distributeStake(distributeBNB,true) (#829)
- BuyBackBalance += BuyBackSplit (#777)
- _distributeStake(distributeBNB,true) (#829)
- DevBalance += DevSplit (#776)
- _distributeStake(distributeBNB,true) (#829)
- MarketingBalance += MarketingSplit (#775)
- MarketingBalance += StakingSplit (#784)
- _addLiquidity(liqToken,liqBNB) (#826)
- _allowances[owner][spender] = amount (#467)
- _distributeStake(distributeBNB,true) (#829)
- mainRewardShare += ((MainAmount * DistributionMultiplier) / totalShares) (#786)
- _distributeStake(distributeBNB,true) (#829)
- miscRewardShare += ((MiscAmount * DistributionMultiplier) / totalShares) (#787)
- _distributeStake(distributeBNB,true) (#829)
- totalRewards += StakingSplit (#780)
Reentrancy in DogeLimitless._taxedTransfer(address,address,uint256,bool,bool) (#886-933):
External calls:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#837-843)
- (sent) = to.call{value: (amountWei)}() (#570)
External calls sending eth:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- (sent) = to.call{value: (amountWei)}() (#570)
State variables written after the call(s):
- _swapContractToken(AutoLPThreshold,false) (#924)
- _allowances[owner][spender] = amount (#467)
- _circulatingSupply -= tokensToBeBurnt (#930)
Reentrancy in DogeLimitless.constructor() (#424-455):
External calls:
- _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this),_pancakeRouter.WETH()) (#433)
State variables written after the call(s):
- Developer = msg.sender (#440)
- MarketingWallet = msg.sender (#439)
- MaxWallet = _totalSupply / MaxWalletDivider (#443)
- _allowances[address(this)][address(_pancakeRouter)] = type()(uint256).max (#436)
- _approve(address(this),address(_pancakeRouter),type()(uint256).max) (#454)
- _allowances[owner][spender] = amount (#467)
- _addToken(msg.sender,_totalSupply) (#434)
- _balances[addr] = newAmount (#724)
- _balances[addr] = newAmount (#730)
- _balances[addr] = newAmount (#735)
- _addToken(msg.sender,_totalSupply) (#434)
- _totalShares += amount (#727)
- _addToken(msg.sender,_totalSupply) (#434)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#731)
- _addToken(msg.sender,_totalSupply) (#434)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#733)
- sellLimit = _totalSupply / SellLimitDivider (#442)
- _addToken(msg.sender,_totalSupply) (#434)
- toBePaidMain[addr] += mainPayment (#732)
- _addToken(msg.sender,_totalSupply) (#434)
- toBePaidMisc[addr] += miscPayment (#734)
Reentrancy in DogeLimitless.transferFrom(address,address,uint256) (#488-496):
External calls:
- _transfer(sender,recipient,amount) (#489)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#837-843)
- (sent) = to.call{value: (amountWei)}() (#570)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
External calls sending eth:
- _transfer(sender,recipient,amount) (#489)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- (sent) = to.call{value: (amountWei)}() (#570)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
State variables written after the call(s):
- _approve(sender,msg.sender,currentAllowance - amount) (#494)
- _allowances[owner][spender] = amount (#467)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in DogeLimitless._claimBNBTo(address,address,uint256) (#563-574):
External calls:
- (sent) = to.call{value: (amountWei)}() (#570)
Event emitted after the call(s):
- OnClaimBNB(from,to,amountWei) (#573)
Reentrancy in DogeLimitless._swapContractToken(uint16,bool) (#802-830):
External calls:
- _swapTokenForBNB(swapToken) (#823)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#837-843)
- _addLiquidity(liqToken,liqBNB) (#826)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#826)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#468)
- _addLiquidity(liqToken,liqBNB) (#826)
Reentrancy in DogeLimitless._swapContractToken(uint16,bool) (#802-830):
External calls:
- _swapTokenForBNB(swapToken) (#823)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#837-843)
- _addLiquidity(liqToken,liqBNB) (#826)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- _claimBNBTo(distribute,distribute,newLiq) (#829)
- (sent) = to.call{value: (amountWei)}() (#570)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#826)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- _claimBNBTo(distribute,distribute,newLiq) (#829)
- (sent) = to.call{value: (amountWei)}() (#570)
Event emitted after the call(s):
- OnClaimBNB(from,to,amountWei) (#573)
- _claimBNBTo(distribute,distribute,newLiq) (#829)
Reentrancy in DogeLimitless._taxedTransfer(address,address,uint256,bool,bool) (#886-933):
External calls:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#837-843)
- (sent) = to.call{value: (amountWei)}() (#570)
External calls sending eth:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- (sent) = to.call{value: (amountWei)}() (#570)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#468)
- _swapContractToken(AutoLPThreshold,false) (#924)
- OnClaimBNB(from,to,amountWei) (#573)
- _swapContractToken(AutoLPThreshold,false) (#924)
- Transfer(sender,recipient,taxedAmount) (#932)
Reentrancy in DogeLimitless.claimToken(address,address,uint256) (#502-547):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
Event emitted after the call(s):
- OnWithdrawToken(amount,token,addr) (#545)
Reentrancy in DogeLimitless.constructor() (#424-455):
External calls:
- _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this),_pancakeRouter.WETH()) (#433)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#468)
- _approve(address(this),address(_pancakeRouter),type()(uint256).max) (#454)
- Transfer(address(0),msg.sender,_totalSupply) (#435)
Reentrancy in DogeLimitless.transferFrom(address,address,uint256) (#488-496):
External calls:
- _transfer(sender,recipient,amount) (#489)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#837-843)
- (sent) = to.call{value: (amountWei)}() (#570)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
External calls sending eth:
- _transfer(sender,recipient,amount) (#489)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#849-856)
- (sent) = to.call{value: (amountWei)}() (#570)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#539-543)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#468)
- _approve(sender,msg.sender,currentAllowance - amount) (#494)
Apply the check-effects-interactions pattern.
Additional information: link
DogeLimitless._lockLiquidityTokens(uint256) (#639-643) uses timestamp for comparisons
Dangerous comparisons:
- require(bool)(newUnlockTime > _liquidityUnlockTime) (#641)
DogeLimitless.ReleaseLP() (#646-651) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#647)
DogeLimitless.RemoveLP() (#654-670) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#655)
DogeLimitless.RecoverBNB() (#673-678) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#674)
DogeLimitless.getLiquidityUnlockInSeconds() (#1196-1201) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp < _liquidityUnlockTime (#1197)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#207-211) uses assembly
- INLINE ASM (#209)
Address._verifyCallResult(bool,bytes,string) (#248-261) uses assembly
- INLINE ASM (#253-256)
Do not use evm assembly.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#248-261) is never used and should be removed
Address.functionCall(address,bytes) (#217-219) is never used and should be removed
Address.functionCall(address,bytes,string) (#220-222) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#223-225) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#226-231) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#240-242) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#243-247) is never used and should be removed
Address.functionStaticCall(address,bytes) (#232-234) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#235-239) is never used and should be removed
Address.isContract(address) (#207-211) is never used and should be removed
Address.sendValue(address,uint256) (#212-216) is never used and should be removed
EnumerableSet._at(EnumerableSet.Set,uint256) (#298-301) is never used and should be removed
EnumerableSet._length(EnumerableSet.Set) (#295-297) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (#305-307) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (#341-343) is never used and should be removed
EnumerableSet.at(EnumerableSet.AddressSet,uint256) (#335-337) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (#317-319) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (#353-355) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (#311-313) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (#347-349) is never used and should be removed
EnumerableSet.length(EnumerableSet.AddressSet) (#332-334) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (#314-316) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (#350-352) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (#308-310) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (#344-346) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.11 (#7) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.11 is not recommended for deployment
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) (#212-216):
- (success) = recipient.call{value: amount}() (#214)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#226-231):
- (success,returndata) = target.call{value: value}(data) (#229)
Low level call in Address.functionStaticCall(address,bytes,string) (#235-239):
- (success,returndata) = target.staticcall(data) (#237)
Low level call in Address.functionDelegateCall(address,bytes,string) (#243-247):
- (success,returndata) = target.delegatecall(data) (#245)
Low level call in DogeLimitless._claimBNBTo(address,address,uint256) (#563-574):
- (sent) = to.call{value: (amountWei)}() (#570)
Low level call in DogeLimitless.RemoveLP() (#654-670):
- (sent) = msg.sender.call{value: (address(this).balance)}() (#668)
Low level call in DogeLimitless.RecoverBNB() (#673-678):
- (sent) = msg.sender.call{value: (address(this).balance)}() (#676)
Low level call in DogeLimitless.WithdrawAllDev() (#998-1003):
- (sent) = Developer.call{value: (amount)}() (#1001)
Low level call in DogeLimitless.WithdrawDev(uint256) (#1006-1011):
- (sent) = Developer.call{value: (amount)}() (#1009)
Low level call in DogeLimitless.WithdrawAllMarketing() (#1014-1019):
- (sent) = MarketingWallet.call{value: (amount)}() (#1017)
Low level call in DogeLimitless.WithdrawMarketing(uint256) (#1022-1027):
- (sent) = MarketingWallet.call{value: (amount)}() (#1025)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IPancakeERC20.DOMAIN_SEPARATOR() (#35) is not in mixedCase
Function IPancakeERC20.PERMIT_TYPEHASH() (#36) is not in mixedCase
Function IPancakeRouter01.WETH() (#135) is not in mixedCase
Event DogeLimitlessonUpdateLPThreshold(uint16) (#699) is not in CapWords
Parameter DogeLimitless.allowance(address,address)._owner (#456) is not in mixedCase
Function DogeLimitless.ClaimMainReward() (#550-552) is not in mixedCase
Function DogeLimitless.ClaimMiscReward() (#555-559) is not in mixedCase
Function DogeLimitless.ChangeMainReward(address) (#615-619) is not in mixedCase
Function DogeLimitless.ChangeMiscReward(address) (#623-626) is not in mixedCase
Function DogeLimitless.LockLiquidityTokens(uint256) (#635-638) is not in mixedCase
Function DogeLimitless.ReleaseLP() (#646-651) is not in mixedCase
Function DogeLimitless.RemoveLP() (#654-670) is not in mixedCase
Function DogeLimitless.RecoverBNB() (#673-678) is not in mixedCase
Function DogeLimitless.UpdateAutoLPThreshold(uint16) (#700-705) is not in mixedCase
Parameter DogeLimitless.UpdateAutoLPThreshold(uint16).Threshold (#700) is not in mixedCase
Function DogeLimitless.CreateLPandBNB(uint16,bool) (#708-710) is not in mixedCase
Parameter DogeLimitless.CreateLPandBNB(uint16,bool).PermilleOfPancake (#708) is not in mixedCase
Function DogeLimitless.ManualBNBSwap(bool) (#861-863) is not in mixedCase
Function DogeLimitless.TriggerBuyBack(uint256) (#977-990) is not in mixedCase
Function DogeLimitless.BurnTokens(uint256) (#993-995) is not in mixedCase
Function DogeLimitless.WithdrawAllDev() (#998-1003) is not in mixedCase
Function DogeLimitless.WithdrawDev(uint256) (#1006-1011) is not in mixedCase
Function DogeLimitless.WithdrawAllMarketing() (#1014-1019) is not in mixedCase
Function DogeLimitless.WithdrawMarketing(uint256) (#1022-1027) is not in mixedCase
Function DogeLimitless.ExcludeFromStaking(address) (#1032-1043) is not in mixedCase
Function DogeLimitless.IncludeMeToStaking() (#1046-1052) is not in mixedCase
Function DogeLimitless.IncludeToStaking(address) (#1055-1062) is not in mixedCase
Function DogeLimitless.SetMarketingWallet(address) (#1078-1084) is not in mixedCase
Function DogeLimitless.SetDevWallet(address) (#1088-1094) is not in mixedCase
Function DogeLimitless.ExcludeAccountFromFees(address) (#1098-1101) is not in mixedCase
Function DogeLimitless.IncludeAccountToFees(address) (#1104-1107) is not in mixedCase
Function DogeLimitless.UpdateTaxes(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1120-1138) is not in mixedCase
Function DogeLimitless.UpdateRewardSplit(uint8,uint8) (#1142-1148) is not in mixedCase
Parameter DogeLimitless.UpdateRewardSplit(uint8,uint8).MainSplit (#1142) is not in mixedCase
Parameter DogeLimitless.UpdateRewardSplit(uint8,uint8).MiscSplit (#1142) is not in mixedCase
Function DogeLimitless.UpdateLimits(uint256,uint256) (#1151-1165) is not in mixedCase
Constant DogeLimitless._name (#368) is not in UPPER_CASE_WITH_UNDERSCORES
Constant DogeLimitless._symbol (#369) is not in UPPER_CASE_WITH_UNDERSCORES
Constant DogeLimitless._decimals (#370) is not in UPPER_CASE_WITH_UNDERSCORES
Constant DogeLimitless._totalSupply (#371) is not in UPPER_CASE_WITH_UNDERSCORES
Variable DogeLimitless._circulatingSupply (#372) is not in mixedCase
Constant DogeLimitless.MaxWalletDivider (#373) is not in UPPER_CASE_WITH_UNDERSCORES
Constant DogeLimitless.SellLimitDivider (#374) is not in UPPER_CASE_WITH_UNDERSCORES
Constant DogeLimitless.MaxTax (#375) is not in UPPER_CASE_WITH_UNDERSCORES
Variable DogeLimitless._MainRewardSplit (#388) is not in mixedCase
Variable DogeLimitless._MiscRewardSplit (#389) is not in mixedCase
Variable DogeLimitless.MaxWallet (#390) is not in mixedCase
Variable DogeLimitless.MarketingWallet (#392) is not in mixedCase
Variable DogeLimitless.Developer (#393) is not in mixedCase
Variable DogeLimitless.BurnAddress (#394) is not in mixedCase
Constant DogeLimitless.blacklistBlocks (#399) is not in UPPER_CASE_WITH_UNDERSCORES
Variable DogeLimitless.MainReward (#407) is not in mixedCase
Variable DogeLimitless.MiscReward (#408) is not in mixedCase
Variable DogeLimitless._pancakePairAddress (#410) is not in mixedCase
Variable DogeLimitless.PancakeRouter (#412) is not in mixedCase
Constant DogeLimitless.StakeMulti (#682) is not in UPPER_CASE_WITH_UNDERSCORES
Constant DogeLimitless.DistributionMultiplier (#683) is not in UPPER_CASE_WITH_UNDERSCORES
Variable DogeLimitless.MarketingBalance (#689) is not in mixedCase
Variable DogeLimitless.DevBalance (#690) is not in mixedCase
Variable DogeLimitless.BuyBackBalance (#691) is not in mixedCase
Variable DogeLimitless.AutoLPThreshold (#692) is not in mixedCase
Variable DogeLimitless.Staker (#795) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#55) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#56)
Prevent variables from having similar names.
Additional information: link
DogeLimitless.slitherConstructorVariables() (#359-1209) uses literals with too many digits:
- BurnAddress = 0x000000000000000000000000000000000000dEaD (#394)
DogeLimitless.slitherConstructorConstantVariables() (#359-1209) uses literals with too many digits:
- _totalSupply = 1000000000 * 10 ** _decimals (#371)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
DogeLimitless.BurnAddress (#394) should be constant
DogeLimitless.Staker (#795) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#196-199)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#200-204)
ClaimMainReward() should be declared external:
- DogeLimitless.ClaimMainReward() (#550-552)
ClaimMiscReward() should be declared external:
- DogeLimitless.ClaimMiscReward() (#555-559)
getMainBalance(address) should be declared external:
- DogeLimitless.getMainBalance(address) (#602-605)
getMiscBalance(address) should be declared external:
- DogeLimitless.getMiscBalance(address) (#608-611)
ChangeMainReward(address) should be declared external:
- DogeLimitless.ChangeMainReward(address) (#615-619)
ChangeMiscReward(address) should be declared external:
- DogeLimitless.ChangeMiscReward(address) (#623-626)
LockLiquidityTokens(uint256) should be declared external:
- DogeLimitless.LockLiquidityTokens(uint256) (#635-638)
ReleaseLP() should be declared external:
- DogeLimitless.ReleaseLP() (#646-651)
RemoveLP() should be declared external:
- DogeLimitless.RemoveLP() (#654-670)
RecoverBNB() should be declared external:
- DogeLimitless.RecoverBNB() (#673-678)
UpdateAutoLPThreshold(uint16) should be declared external:
- DogeLimitless.UpdateAutoLPThreshold(uint16) (#700-705)
CreateLPandBNB(uint16,bool) should be declared external:
- DogeLimitless.CreateLPandBNB(uint16,bool) (#708-710)
ManualBNBSwap(bool) should be declared external:
- DogeLimitless.ManualBNBSwap(bool) (#861-863)
TriggerBuyBack(uint256) should be declared external:
- DogeLimitless.TriggerBuyBack(uint256) (#977-990)
BurnTokens(uint256) should be declared external:
- DogeLimitless.BurnTokens(uint256) (#993-995)
WithdrawAllDev() should be declared external:
- DogeLimitless.WithdrawAllDev() (#998-1003)
WithdrawDev(uint256) should be declared external:
- DogeLimitless.WithdrawDev(uint256) (#1006-1011)
WithdrawAllMarketing() should be declared external:
- DogeLimitless.WithdrawAllMarketing() (#1014-1019)
WithdrawMarketing(uint256) should be declared external:
- DogeLimitless.WithdrawMarketing(uint256) (#1022-1027)
ExcludeFromStaking(address) should be declared external:
- DogeLimitless.ExcludeFromStaking(address) (#1032-1043)
IncludeMeToStaking() should be declared external:
- DogeLimitless.IncludeMeToStaking() (#1046-1052)
IncludeToStaking(address) should be declared external:
- DogeLimitless.IncludeToStaking(address) (#1055-1062)
setBlacklistStatus(address[],bool) should be declared external:
- DogeLimitless.setBlacklistStatus(address[],bool) (#1064-1068)
enableBlacklist(bool) should be declared external:
- DogeLimitless.enableBlacklist(bool) (#1071-1074)
SetMarketingWallet(address) should be declared external:
- DogeLimitless.SetMarketingWallet(address) (#1078-1084)
SetDevWallet(address) should be declared external:
- DogeLimitless.SetDevWallet(address) (#1088-1094)
ExcludeAccountFromFees(address) should be declared external:
- DogeLimitless.ExcludeAccountFromFees(address) (#1098-1101)
IncludeAccountToFees(address) should be declared external:
- DogeLimitless.IncludeAccountToFees(address) (#1104-1107)
setPresale(address) should be declared external:
- DogeLimitless.setPresale(address) (#1109-1112)
UpdateTaxes(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8) should be declared external:
- DogeLimitless.UpdateTaxes(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1120-1138)
UpdateRewardSplit(uint8,uint8) should be declared external:
- DogeLimitless.UpdateRewardSplit(uint8,uint8) (#1142-1148)
UpdateLimits(uint256,uint256) should be declared external:
- DogeLimitless.UpdateLimits(uint256,uint256) (#1151-1165)
getBurntTokens() should be declared external:
- DogeLimitless.getBurntTokens() (#1188-1190)
getLimits() should be declared external:
- DogeLimitless.getLimits() (#1192-1194)
getLiquidityUnlockInSeconds() should be declared external:
- DogeLimitless.getLiquidityUnlockInSeconds() (#1196-1201)
getTaxes() should be declared external:
- DogeLimitless.getTaxes() (#1203-1205)
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 Twitter account
Telegram account has relatively few subscribers
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account