🌐Website:https://dumbo.club/
📓WhitePaper:https://dumbo.gitbook.io/dumbo/
🐦Twitter:https://twitter.com/DumboToTheMoon
📢Channel:https://t.me/DumboGO
🇨🇳China Group:https://t.me/DumboChinagroup
Reentrancy in Dumbo._transfer(address,address,uint256) (#240-277):
External calls:
- swapTokensForEth(contractTokenBalance) (#252)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#284-290)
External calls sending eth:
- sendETHToFee(address(this).balance) (#255)
- _developmentAddress.transfer(amount.div(2)) (#294)
- _marketingAddress.transfer(amount.div(2)) (#295)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#276)
- _rOwned[address(this)] = _rOwned[address(this)].add(rTeam) (#334)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#324)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#325)
- _tokenTransfer(from,to,amount) (#276)
- _rTotal = _rTotal.sub(rFee) (#338)
Apply the check-effects-interactions pattern.
Additional information: link
Dumbo.sendETHToFee(uint256) (#293-296) sends eth to arbitrary user
Dangerous calls:
- _developmentAddress.transfer(amount.div(2)) (#294)
- _marketingAddress.transfer(amount.div(2)) (#295)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Dumbo.rescueForeignTokens(address,address,uint256) (#303-306) ignores return value by Token(_tokenAddr).transfer(_to,_amount) (#305)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Contract ownership is not renounced (belongs to a wallet)
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.
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Dumbo.allowance(address,address).owner (#212) shadows:
- Ownable.owner() (#104-106) (function)
Dumbo._approve(address,address,uint256).owner (#233) shadows:
- Ownable.owner() (#104-106) (function)
Rename the local variables that shadow another component.
Additional information: link
Ownable.transferOwnership(address).newOwner (#119) lacks a zero-check on :
- _owner = newOwner (#121)
Dumbo.setNewDevAddress(address).dev (#309) lacks a zero-check on :
- _developmentAddress = dev (#311)
Dumbo.setNewMarketingAddress(address).markt (#316) lacks a zero-check on :
- _marketingAddress = markt (#318)
Check that the address is not zero.
Additional information: link
Ownable._previousOwner (#96) is never used in Dumbo (#126-411)
Dumbo._tOwned (#130) is never used in Dumbo (#126-411)
Remove unused state variables.
Additional information: link
Ownable._previousOwner (#96) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
Reentrancy in Dumbo._transfer(address,address,uint256) (#240-277):
External calls:
- swapTokensForEth(contractTokenBalance) (#252)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#284-290)
External calls sending eth:
- sendETHToFee(address(this).balance) (#255)
- _developmentAddress.transfer(amount.div(2)) (#294)
- _marketingAddress.transfer(amount.div(2)) (#295)
State variables written after the call(s):
- _redisFee = _redisFeeOnBuy (#260)
- _redisFee = _redisFeeOnSell (#265)
- _redisFee = 0 (#270)
- _tokenTransfer(from,to,amount) (#276)
- _tFeeTotal = _tFeeTotal.add(tFee) (#339)
- _taxFee = _taxFeeOnBuy (#261)
- _taxFee = _taxFeeOnSell (#266)
- _taxFee = 0 (#271)
Reentrancy in Dumbo.constructor() (#166-180):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#171-172)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#174)
- _isExcludedFromFee[address(this)] = true (#175)
- _isExcludedFromFee[_developmentAddress] = true (#176)
- _isExcludedFromFee[_marketingAddress] = true (#177)
Reentrancy in Dumbo.transferFrom(address,address,uint256) (#221-225):
External calls:
- _transfer(sender,recipient,amount) (#222)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#284-290)
External calls sending eth:
- _transfer(sender,recipient,amount) (#222)
- _developmentAddress.transfer(amount.div(2)) (#294)
- _marketingAddress.transfer(amount.div(2)) (#295)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#223)
- _allowances[owner][spender] = amount (#236)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Dumbo._transfer(address,address,uint256) (#240-277):
External calls:
- swapTokensForEth(contractTokenBalance) (#252)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#284-290)
External calls sending eth:
- sendETHToFee(address(this).balance) (#255)
- _developmentAddress.transfer(amount.div(2)) (#294)
- _marketingAddress.transfer(amount.div(2)) (#295)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#328)
- _tokenTransfer(from,to,amount) (#276)
Reentrancy in Dumbo.constructor() (#166-180):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#171-172)
Event emitted after the call(s):
- Transfer(address(0x0000000000000000000000000000000000000000),_msgSender(),_tTotal) (#179)
Reentrancy in Dumbo.transferFrom(address,address,uint256) (#221-225):
External calls:
- _transfer(sender,recipient,amount) (#222)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#284-290)
External calls sending eth:
- _transfer(sender,recipient,amount) (#222)
- _developmentAddress.transfer(amount.div(2)) (#294)
- _marketingAddress.transfer(amount.div(2)) (#295)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#237)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#223)
Apply the check-effects-interactions pattern.
Additional information: link
Function IUniswapV2Router02.WETH() (#37) is not in mixedCase
Event DumbotokensRescued(address,address,uint256) (#302) is not in CapWords
Event DumbodevAddressUpdated(address,address) (#308) is not in CapWords
Event DumbomarketingAddressUpdated(address,address) (#315) is not in CapWords
Parameter Dumbo.rescueForeignTokens(address,address,uint256)._tokenAddr (#303) is not in mixedCase
Parameter Dumbo.rescueForeignTokens(address,address,uint256)._to (#303) is not in mixedCase
Parameter Dumbo.rescueForeignTokens(address,address,uint256)._amount (#303) is not in mixedCase
Parameter Dumbo.toggleSwap(bool)._swapEnabled (#401) is not in mixedCase
Constant Dumbo._tTotal (#135) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Dumbo._name (#148) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Dumbo._symbol (#149) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Dumbo._decimals (#150) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Reentrancy in Dumbo._transfer(address,address,uint256) (#240-277):
External calls:
- sendETHToFee(address(this).balance) (#255)
- _developmentAddress.transfer(amount.div(2)) (#294)
- _marketingAddress.transfer(amount.div(2)) (#295)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#276)
- _rOwned[address(this)] = _rOwned[address(this)].add(rTeam) (#334)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#324)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#325)
- _tokenTransfer(from,to,amount) (#276)
- _rTotal = _rTotal.sub(rFee) (#338)
- _redisFee = _redisFeeOnBuy (#260)
- _redisFee = _redisFeeOnSell (#265)
- _redisFee = 0 (#270)
- _tokenTransfer(from,to,amount) (#276)
- _tFeeTotal = _tFeeTotal.add(tFee) (#339)
- _taxFee = _taxFeeOnBuy (#261)
- _taxFee = _taxFeeOnSell (#266)
- _taxFee = 0 (#271)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#328)
- _tokenTransfer(from,to,amount) (#276)
Reentrancy in Dumbo.transferFrom(address,address,uint256) (#221-225):
External calls:
- _transfer(sender,recipient,amount) (#222)
- _developmentAddress.transfer(amount.div(2)) (#294)
- _marketingAddress.transfer(amount.div(2)) (#295)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#223)
- _allowances[owner][spender] = amount (#236)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#237)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#223)
Apply the check-effects-interactions pattern.
Additional information: link
Variable Dumbo._transferStandard(address,address,uint256).rTransferAmount (#323) is too similar to Dumbo._getTValues(uint256,uint256,uint256).tTransferAmount (#354)
Variable Dumbo._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#362) is too similar to Dumbo._getTValues(uint256,uint256,uint256).tTransferAmount (#354)
Variable Dumbo._getValues(uint256).rTransferAmount (#347) is too similar to Dumbo._getTValues(uint256,uint256,uint256).tTransferAmount (#354)
Variable Dumbo._transferStandard(address,address,uint256).rTransferAmount (#323) is too similar to Dumbo._transferStandard(address,address,uint256).tTransferAmount (#323)
Variable Dumbo._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#362) is too similar to Dumbo._transferStandard(address,address,uint256).tTransferAmount (#323)
Variable Dumbo._transferStandard(address,address,uint256).rTransferAmount (#323) is too similar to Dumbo._getValues(uint256).tTransferAmount (#345)
Variable Dumbo._getValues(uint256).rTransferAmount (#347) is too similar to Dumbo._transferStandard(address,address,uint256).tTransferAmount (#323)
Variable Dumbo._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#362) is too similar to Dumbo._getValues(uint256).tTransferAmount (#345)
Variable Dumbo._getValues(uint256).rTransferAmount (#347) is too similar to Dumbo._getValues(uint256).tTransferAmount (#345)
Prevent variables from having similar names.
Additional information: link
Dumbo.constructor() (#166-180) uses literals with too many digits:
- Transfer(address(0x0000000000000000000000000000000000000000),_msgSender(),_tTotal) (#179)
Dumbo.slitherConstructorConstantVariables() (#126-411) uses literals with too many digits:
- _tTotal = 1000000 * 10 ** 6 * 10 ** 9 (#135)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#113-116)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#119-122)
name() should be declared external:
- Dumbo.name() (#187-189)
symbol() should be declared external:
- Dumbo.symbol() (#191-193)
decimals() should be declared external:
- Dumbo.decimals() (#195-197)
totalSupply() should be declared external:
- Dumbo.totalSupply() (#199-201)
transfer(address,uint256) should be declared external:
- Dumbo.transfer(address,uint256) (#207-210)
allowance(address,address) should be declared external:
- Dumbo.allowance(address,address) (#212-214)
approve(address,uint256) should be declared external:
- Dumbo.approve(address,uint256) (#216-219)
transferFrom(address,address,uint256) should be declared external:
- Dumbo.transferFrom(address,address,uint256) (#221-225)
rescueForeignTokens(address,address,uint256) should be declared external:
- Dumbo.rescueForeignTokens(address,address,uint256) (#303-306)
setNewDevAddress(address) should be declared external:
- Dumbo.setNewDevAddress(address) (#309-313)
setNewMarketingAddress(address) should be declared external:
- Dumbo.setNewMarketingAddress(address) (#316-320)
setFee(uint256,uint256,uint256,uint256) should be declared external:
- Dumbo.setFee(uint256,uint256,uint256,uint256) (#390-399)
toggleSwap(bool) should be declared external:
- Dumbo.toggleSwap(bool) (#401-403)
excludeMultipleAccountsFromFees(address[],bool) should be declared external:
- Dumbo.excludeMultipleAccountsFromFees(address[],bool) (#405-409)
Use the external attribute for functions never called from the contract.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find whitepaper link on the website
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Young tokens have high risks of scam / price dump / death
Alexa traffic rank is very low
Additional information: link
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