Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
BinanceDoge.transferEthOut(uint256,uint256) (#1024-1027) sends eth to arbitrary user
Dangerous calls:
- _marketingWallet.transfer(marketingBalance) (#1026)
BinanceDoge.swapETHForTokens(uint256) (#1029-1044) sends eth to arbitrary user
Dangerous calls:
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
BinanceDoge.addLiquidity(uint256,uint256) (#1064-1077) sends eth to arbitrary user
Dangerous calls:
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in BinanceDoge._transfer(address,address,uint256) (#927-978):
External calls:
- swapAndLiquify(contractTokenBalance) (#961)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1055-1061)
- buyBackTokens(buyBackAmount) (#967)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#961)
- _devWallet.transfer(devBalance) (#1025)
- _marketingWallet.transfer(marketingBalance) (#1026)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- buyBackTokens(buyBackAmount) (#967)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _buyBackFee = _previousBuyBackFee (#1202)
- _buyBackFee = _boostedBuyBackFee (#1219)
- _buyBackFee = 0 (#1194)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _devFee = _previousDevFee (#1204)
- _devFee = _boostedDevFee (#1221)
- _devFee = 0 (#1196)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _liquidityFee = _previousLiquidityFee (#1201)
- _liquidityFee = _boostedLiquidityFee (#1218)
- _liquidityFee = 0 (#1193)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _marketingFee = _previousMarketingFee (#1203)
- _marketingFee = _boostedMarketingFee (#1220)
- _marketingFee = 0 (#1195)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1164)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1097)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1098)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _rTotal = _rTotal.sub(rFee) (#1157)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1166)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1101)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1103)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1105)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1106)
- buyBackTokens(buyBackAmount) (#967)
- inSwapAndLiquify = true (#683)
- inSwapAndLiquify = false (#685)
Apply the check-effects-interactions pattern.
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.
BinanceDoge._decimals (#593) should be constant
BinanceDoge._devWallet (#633) should be constant
BinanceDoge._name (#599) should be constant
BinanceDoge._routerAddress (#629) should be constant
BinanceDoge._symbol (#600) should be constant
BinanceDoge.burnAddress (#631) should be constant
BinanceDoge.masterTaxDivisor (#622) should be constant
BinanceDoge.maxTxDivisor (#646) should be constant
BinanceDoge.maxTxPercent (#645) should be constant
BinanceDoge.maxWalletDivisor (#653) should be constant
BinanceDoge.maxWalletPercent (#652) should be constant
BinanceDoge.maximumTaxesPercent (#623) should be constant
BinanceDoge.startingSupply (#590) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
BinanceDoge.setTaxes(uint256,uint256,uint256,uint256,uint256) (#778-785) should emit an event for:
- _reflectFee = reflectFee (#780)
- _liquidityFee = liquidityFee (#781)
- _marketingFee = marketingFee (#782)
- _buyBackFee = buyBackFee (#783)
- _devFee = devFee (#784)
BinanceDoge.setBoostedTaxes(uint256,uint256,uint256,uint256,uint256) (#787-794) should emit an event for:
- _boostedReflectFee = reflectFee (#789)
- _boostedLiquidityFee = liquidityFee (#790)
- _boostedMarketingFee = marketingFee (#791)
- _boostedBuyBackFee = buyBackFee (#792)
- _boostedDevFee = devFee (#793)
BinanceDoge.setMaxTxPercent(uint256,uint256) (#796-800) should emit an event for:
- _maxTxAmount = _tTotal.mul(percent).div(divisor) (#798)
BinanceDoge.setMaxWallet(uint256,uint256) (#802-806) should emit an event for:
- _maxWalletAmount = _tTotal.mul(percent).div(divisor) (#804)
BinanceDoge.setPercentToSell(uint256) (#808-811) should emit an event for:
- percentToSell = percent (#809)
- numTokensSellToAddToLiquidity = (_tTotal * percentToSell) / 10000 (#810)
BinanceDoge.setBuyBackSellLimit(uint256) (#828-830) should emit an event for:
- buyBackSellLimit = limit * 10 ** _decimalsMul (#829)
BinanceDoge.setBuyBackAmount(uint256,uint256) (#832-834) should emit an event for:
- buyBackAmount = amount * 10 ** multiplier (#833)
Emit an event for critical parameter changes.
Additional information: link
BinanceDoge.swapAndLiquify(uint256) (#986-1022) performs a multiplication on the result of a division:
-half = toLiquify.div(2) (#996)
-liquidityBalance = fromSwap.mul(half).div(toSwapForEth) (#1011)
BinanceDoge.swapAndLiquify(uint256) (#986-1022) performs a multiplication on the result of a division:
-toBuyBack = contractTokenBalance.mul(_buyBackFee).div(totalBNBFees) (#991)
-buyBackBalance = fromSwap.mul(toBuyBack).div(toSwapForEth) (#1012)
BinanceDoge.swapAndLiquify(uint256) (#986-1022) performs a multiplication on the result of a division:
-toDev = contractTokenBalance.mul(_devFee).div(totalBNBFees) (#992)
-devBalance = fromSwap.mul(toDev).div(toSwapForEth) (#1013)
Consider ordering multiplication before division.
Additional information: link
BinanceDoge.addLiquidity(uint256,uint256) (#1064-1077) ignores return value by dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
Ensure that all the return values of the function calls are used.
Additional information: link
BinanceDoge._approve(address,address,uint256).owner (#919) shadows:
- Ownable.owner() (#551-553) (function)
Rename the local variables that shadow another component.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#412) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#413)
Variable BinanceDoge._finalizeTransfer(address,address,uint256).rTransferAmount (#1095) is too similar to BinanceDoge._finalizeTransfer(address,address,uint256).tTransferAmount (#1095)
Variable BinanceDoge._getValues(uint256).rTransferAmount (#1119) is too similar to BinanceDoge._finalizeTransfer(address,address,uint256).tTransferAmount (#1095)
Variable BinanceDoge._finalizeTransfer(address,address,uint256).rTransferAmount (#1095) is too similar to BinanceDoge._getValues(uint256).tTransferAmount (#1118)
Variable BinanceDoge.reflectionFromToken(uint256,bool).rTransferAmount (#882) is too similar to BinanceDoge._getValues(uint256).tTransferAmount (#1118)
Variable BinanceDoge._finalizeTransfer(address,address,uint256).rTransferAmount (#1095) is too similar to BinanceDoge._getTValues(uint256).tTransferAmount (#1126)
Variable BinanceDoge._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1134) is too similar to BinanceDoge._getValues(uint256).tTransferAmount (#1118)
Variable BinanceDoge.reflectionFromToken(uint256,bool).rTransferAmount (#882) is too similar to BinanceDoge._getTValues(uint256).tTransferAmount (#1126)
Variable BinanceDoge._getValues(uint256).rTransferAmount (#1119) is too similar to BinanceDoge._getValues(uint256).tTransferAmount (#1118)
Variable BinanceDoge._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1134) is too similar to BinanceDoge._getTValues(uint256).tTransferAmount (#1126)
Variable BinanceDoge.reflectionFromToken(uint256,bool).rTransferAmount (#882) is too similar to BinanceDoge._finalizeTransfer(address,address,uint256).tTransferAmount (#1095)
Variable BinanceDoge._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1134) is too similar to BinanceDoge._finalizeTransfer(address,address,uint256).tTransferAmount (#1095)
Variable BinanceDoge._getValues(uint256).rTransferAmount (#1119) is too similar to BinanceDoge._getTValues(uint256).tTransferAmount (#1126)
Prevent variables from having similar names.
Additional information: link
BinanceDoge._previousMaxTxAmount (#648) is never used in BinanceDoge (#575-1224)
BinanceDoge._previousMaxWalletAmount (#655) is never used in BinanceDoge (#575-1224)
Remove unused state variables.
Additional information: link
Reentrancy in BinanceDoge._transfer(address,address,uint256) (#927-978):
External calls:
- swapAndLiquify(contractTokenBalance) (#961)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1055-1061)
- buyBackTokens(buyBackAmount) (#967)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#961)
- _devWallet.transfer(devBalance) (#1025)
- _marketingWallet.transfer(marketingBalance) (#1026)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- buyBackTokens(buyBackAmount) (#967)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousBuyBackFee = _buyBackFee (#1213)
- _previousBuyBackFee = _buyBackFee (#1188)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousDevFee = _devFee (#1215)
- _previousDevFee = _devFee (#1190)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousLiquidityFee = _liquidityFee (#1212)
- _previousLiquidityFee = _liquidityFee (#1187)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousMarketingFee = _marketingFee (#1214)
- _previousMarketingFee = _marketingFee (#1189)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousReflectFee = _reflectFee (#1211)
- _previousReflectFee = _reflectFee (#1186)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _reflectFee = _previousReflectFee (#1200)
- _reflectFee = _boostedReflectFee (#1217)
- _reflectFee = 0 (#1192)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1158)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- boosted = true (#1084)
- boosted = false (#1207)
Reentrancy in BinanceDoge.constructor() (#688-718):
External calls:
- lpPair = IUniswapV2Factory(_dexRouter.factory()).createPair(address(this),_dexRouter.WETH()) (#693-694)
State variables written after the call(s):
- _approve(_msgSender(),_routerAddress,_tTotal) (#715)
- _allowances[owner][spender] = amount (#923)
- _excluded.push(address(this)) (#702)
- _excluded.push(owner()) (#704)
- _excluded.push(burnAddress) (#706)
- _excluded.push(lpPair) (#708)
- _excluded.push(0x2D045410f002A95EFcEE67759A92518fA3FcE677) (#712)
- _isExcluded[address(this)] = true (#701)
- _isExcluded[owner()] = true (#703)
- _isExcluded[burnAddress] = true (#705)
- _isExcluded[lpPair] = true (#707)
- _isExcluded[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true (#711)
- _isExcludedFromFee[owner()] = true (#698)
- _isExcludedFromFee[address(this)] = true (#699)
- _isExcludedFromFee[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true (#710)
- _liquidityHolders[owner()] = true (#700)
- dexRouter = _dexRouter (#696)
Reentrancy in BinanceDoge.setNewRouter(address) (#758-768):
External calls:
- lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this),_newRouter.WETH()) (#762)
State variables written after the call(s):
- dexRouter = _newRouter (#767)
Reentrancy in BinanceDoge.swapAndLiquify(uint256) (#986-1022):
External calls:
- swapTokensForEth(toSwapForEth) (#1007)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1055-1061)
- addLiquidity(otherHalf,liquidityBalance) (#1017)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
External calls sending eth:
- addLiquidity(otherHalf,liquidityBalance) (#1017)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
State variables written after the call(s):
- addLiquidity(otherHalf,liquidityBalance) (#1017)
- _allowances[owner][spender] = amount (#923)
Reentrancy in BinanceDoge.transferFrom(address,address,uint256) (#742-746):
External calls:
- _transfer(sender,recipient,amount) (#743)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1055-1061)
External calls sending eth:
- _transfer(sender,recipient,amount) (#743)
- _devWallet.transfer(devBalance) (#1025)
- _marketingWallet.transfer(marketingBalance) (#1026)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#744)
- _allowances[owner][spender] = amount (#923)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in BinanceDoge._transfer(address,address,uint256) (#927-978):
External calls:
- swapAndLiquify(contractTokenBalance) (#961)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1055-1061)
- buyBackTokens(buyBackAmount) (#967)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#961)
- _devWallet.transfer(devBalance) (#1025)
- _marketingWallet.transfer(marketingBalance) (#1026)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- buyBackTokens(buyBackAmount) (#967)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#1043)
- buyBackTokens(buyBackAmount) (#967)
- Transfer(sender,address(this),tLiquidity) (#1167)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- Transfer(sender,recipient,tTransferAmount) (#1114)
- _tokenTransfer(from,to,amount,takeFee) (#977)
Reentrancy in BinanceDoge.constructor() (#688-718):
External calls:
- lpPair = IUniswapV2Factory(_dexRouter.factory()).createPair(address(this),_dexRouter.WETH()) (#693-694)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#924)
- _approve(_msgSender(),_routerAddress,_tTotal) (#715)
- Transfer(address(0),_msgSender(),_tTotal) (#717)
Reentrancy in BinanceDoge.swapAndLiquify(uint256) (#986-1022):
External calls:
- swapTokensForEth(toSwapForEth) (#1007)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1055-1061)
- addLiquidity(otherHalf,liquidityBalance) (#1017)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
External calls sending eth:
- addLiquidity(otherHalf,liquidityBalance) (#1017)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#924)
- addLiquidity(otherHalf,liquidityBalance) (#1017)
- SwapAndLiquify(half,liquidityBalance,otherHalf) (#1019)
Reentrancy in BinanceDoge.swapETHForTokens(uint256) (#1029-1044):
External calls:
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#1043)
Reentrancy in BinanceDoge.transferFrom(address,address,uint256) (#742-746):
External calls:
- _transfer(sender,recipient,amount) (#743)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1055-1061)
External calls sending eth:
- _transfer(sender,recipient,amount) (#743)
- _devWallet.transfer(devBalance) (#1025)
- _marketingWallet.transfer(marketingBalance) (#1026)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#924)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#744)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#289-298) uses assembly
- INLINE ASM (#296)
Address._functionCallWithValue(address,bytes,uint256,string) (#326-347) uses assembly
- INLINE ASM (#339-342)
Do not use evm assembly.
Additional information: link
BinanceDoge.restoreAllFee() (#1199-1208) compares to a boolean constant:
-boosted == true (#1206)
Remove the equality to the boolean constant.
Additional information: link
BinanceDoge.includeInReward(address) (#903-914) has costly operations inside a loop:
- _excluded.pop() (#910)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#326-347) is never used and should be removed
Address.functionCall(address,bytes) (#308-310) is never used and should be removed
Address.functionCall(address,bytes,string) (#312-314) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#317-319) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#321-324) is never used and should be removed
Address.isContract(address) (#289-298) is never used and should be removed
Address.sendValue(address,uint256) (#300-306) is never used and should be removed
Context._msgData() (#33-37) is never used and should be removed
SafeMath.mod(uint256,uint256) (#266-268) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#282-285) is never used and should be removed
Remove unused functions.
Additional information: link
BinanceDoge._decimalsMul (#594) is set pre-construction with a non-constant function or state variable:
- _decimals
BinanceDoge._tTotal (#595) is set pre-construction with a non-constant function or state variable:
- startingSupply * 10 ** _decimalsMul
BinanceDoge._rTotal (#596) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
BinanceDoge._previousReflectFee (#603) is set pre-construction with a non-constant function or state variable:
- _reflectFee
BinanceDoge._previousLiquidityFee (#607) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
BinanceDoge._previousMarketingFee (#611) is set pre-construction with a non-constant function or state variable:
- _marketingFee
BinanceDoge._previousBuyBackFee (#615) is set pre-construction with a non-constant function or state variable:
- _buyBackFee
BinanceDoge._previousDevFee (#619) is set pre-construction with a non-constant function or state variable:
- _devFee
BinanceDoge.buyBackSellLimit (#639) is set pre-construction with a non-constant function or state variable:
- (_tTotal * 2) / 100
BinanceDoge._maxTxAmount (#647) is set pre-construction with a non-constant function or state variable:
- (_tTotal * maxTxPercent) / maxTxDivisor
BinanceDoge._previousMaxTxAmount (#648) is set pre-construction with a non-constant function or state variable:
- _maxTxAmount
BinanceDoge.maxTxAmountUI (#649) is set pre-construction with a non-constant function or state variable:
- (startingSupply * maxTxPercent) / maxTxDivisor
BinanceDoge._maxWalletAmount (#654) is set pre-construction with a non-constant function or state variable:
- (_tTotal * maxWalletPercent) / maxWalletDivisor
BinanceDoge._previousMaxWalletAmount (#655) is set pre-construction with a non-constant function or state variable:
- _maxWalletAmount
BinanceDoge.maxWalletAmountUI (#656) is set pre-construction with a non-constant function or state variable:
- (startingSupply * maxWalletPercent) / maxWalletDivisor
BinanceDoge.numTokensSellToAddToLiquidity (#661) is set pre-construction with a non-constant function or state variable:
- (_tTotal * percentToSell) / 10000
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
Pragma version>=0.8.0<0.9.0 (#26) is too complex
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) (#300-306):
- (success) = recipient.call{value: amount}() (#304)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#326-347):
- (success,returndata) = target.call{value: weiValue}(data) (#330)
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() (#375) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#376) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#390) is not in mixedCase
Function IUniswapV2Router01.WETH() (#408) is not in mixedCase
Parameter BinanceDoge.setSwapAndLiquifyEnabled(bool)._enabled (#818) is not in mixedCase
Parameter BinanceDoge.setBuyBackEnabled(bool)._enabled (#823) is not in mixedCase
Parameter BinanceDoge.calculateTaxFee(uint256)._amount (#1170) is not in mixedCase
Parameter BinanceDoge.calculateLiquidityFee(uint256)._amount (#1174) is not in mixedCase
Variable BinanceDoge._reflectFee (#602) is not in mixedCase
Variable BinanceDoge._boostedReflectFee (#604) is not in mixedCase
Variable BinanceDoge._liquidityFee (#606) is not in mixedCase
Variable BinanceDoge._boostedLiquidityFee (#608) is not in mixedCase
Variable BinanceDoge._marketingFee (#610) is not in mixedCase
Variable BinanceDoge._boostedMarketingFee (#612) is not in mixedCase
Variable BinanceDoge._buyBackFee (#614) is not in mixedCase
Variable BinanceDoge._boostedBuyBackFee (#616) is not in mixedCase
Variable BinanceDoge._devFee (#618) is not in mixedCase
Variable BinanceDoge._boostedDevFee (#620) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#34)" inContext (#28-38)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in BinanceDoge._transfer(address,address,uint256) (#927-978):
External calls:
- swapAndLiquify(contractTokenBalance) (#961)
- _devWallet.transfer(devBalance) (#1025)
- _marketingWallet.transfer(marketingBalance) (#1026)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#961)
- _devWallet.transfer(devBalance) (#1025)
- _marketingWallet.transfer(marketingBalance) (#1026)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- buyBackTokens(buyBackAmount) (#967)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _buyBackFee = _previousBuyBackFee (#1202)
- _buyBackFee = _boostedBuyBackFee (#1219)
- _buyBackFee = 0 (#1194)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _devFee = _previousDevFee (#1204)
- _devFee = _boostedDevFee (#1221)
- _devFee = 0 (#1196)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _liquidityFee = _previousLiquidityFee (#1201)
- _liquidityFee = _boostedLiquidityFee (#1218)
- _liquidityFee = 0 (#1193)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _marketingFee = _previousMarketingFee (#1203)
- _marketingFee = _boostedMarketingFee (#1220)
- _marketingFee = 0 (#1195)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousBuyBackFee = _buyBackFee (#1213)
- _previousBuyBackFee = _buyBackFee (#1188)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousDevFee = _devFee (#1215)
- _previousDevFee = _devFee (#1190)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousLiquidityFee = _liquidityFee (#1212)
- _previousLiquidityFee = _liquidityFee (#1187)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousMarketingFee = _marketingFee (#1214)
- _previousMarketingFee = _marketingFee (#1189)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _previousReflectFee = _reflectFee (#1211)
- _previousReflectFee = _reflectFee (#1186)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1164)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1097)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1098)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _rTotal = _rTotal.sub(rFee) (#1157)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _reflectFee = _previousReflectFee (#1200)
- _reflectFee = _boostedReflectFee (#1217)
- _reflectFee = 0 (#1192)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1158)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1166)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1101)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1103)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1105)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1106)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- boosted = true (#1084)
- boosted = false (#1207)
- buyBackTokens(buyBackAmount) (#967)
- inSwapAndLiquify = true (#683)
- inSwapAndLiquify = false (#685)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#1043)
- buyBackTokens(buyBackAmount) (#967)
- Transfer(sender,address(this),tLiquidity) (#1167)
- _tokenTransfer(from,to,amount,takeFee) (#977)
- Transfer(sender,recipient,tTransferAmount) (#1114)
- _tokenTransfer(from,to,amount,takeFee) (#977)
Reentrancy in BinanceDoge.transferFrom(address,address,uint256) (#742-746):
External calls:
- _transfer(sender,recipient,amount) (#743)
- _devWallet.transfer(devBalance) (#1025)
- _marketingWallet.transfer(marketingBalance) (#1026)
External calls sending eth:
- _transfer(sender,recipient,amount) (#743)
- _devWallet.transfer(devBalance) (#1025)
- _marketingWallet.transfer(marketingBalance) (#1026)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1069-1076)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1036-1041)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#744)
- _allowances[owner][spender] = amount (#923)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#924)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#744)
Apply the check-effects-interactions pattern.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#560-563)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#565-570)
transfer(address,uint256) should be declared external:
- BinanceDoge.transfer(address,uint256) (#732-735)
approve(address,uint256) should be declared external:
- BinanceDoge.approve(address,uint256) (#737-740)
transferFrom(address,address,uint256) should be declared external:
- BinanceDoge.transferFrom(address,address,uint256) (#742-746)
increaseAllowance(address,uint256) should be declared external:
- BinanceDoge.increaseAllowance(address,uint256) (#748-751)
decreaseAllowance(address,uint256) should be declared external:
- BinanceDoge.decreaseAllowance(address,uint256) (#753-756)
setNewRouter(address) should be declared external:
- BinanceDoge.setNewRouter(address) (#758-768)
isExcludedFromReward(address) should be declared external:
- BinanceDoge.isExcludedFromReward(address) (#770-772)
isExcludedFromFee(address) should be declared external:
- BinanceDoge.isExcludedFromFee(address) (#774-776)
setSwapAndLiquifyEnabled(bool) should be declared external:
- BinanceDoge.setSwapAndLiquifyEnabled(bool) (#818-821)
setBuyBackEnabled(bool) should be declared external:
- BinanceDoge.setBuyBackEnabled(bool) (#823-826)
excludeFromFee(address) should be declared external:
- BinanceDoge.excludeFromFee(address) (#846-848)
totalFees() should be declared external:
- BinanceDoge.totalFees() (#854-856)
deliver(uint256) should be declared external:
- BinanceDoge.deliver(uint256) (#867-874)
reflectionFromToken(uint256,bool) should be declared external:
- BinanceDoge.reflectionFromToken(uint256,bool) (#876-885)
excludeFromReward(address) should be declared external:
- BinanceDoge.excludeFromReward(address) (#893-901)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts