Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Shibaroo.addLiquidity(uint256,uint256) (#746-759) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#751-758)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Shibaroo._transfer(address,address,uint256) (#660-695) uses a dangerous strict equality:
- CoolDown[to] == 0 (#671)
Shibaroo._transfer(address,address,uint256) (#660-695) uses a dangerous strict equality:
- (block.number.sub(CoolDown[from]) < 2) || (block.number.sub(CoolDown[from]) == 100) (#678)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Shibaroo.addLiquidity(uint256,uint256) (#746-759) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#751-758)
Ensure that all the return values of the function calls are used.
Additional information: link
Shibaroo.allowance(address,address).owner (#512) shadows:
- Ownable.owner() (#147-149) (function)
Shibaroo._approve(address,address,uint256).owner (#539) shadows:
- Ownable.owner() (#147-149) (function)
Rename the local variables that shadow another component.
Additional information: link
Shibaroo.setBuyTaxes(uint256,uint256,uint256) (#559-565) should emit an event for:
- _buyLiquidityFee = newLiquidityTax (#560)
- _buyMarketingFee = newMarketingTax (#561)
- _buyBurnedFee = newBurnedTax (#562)
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyBurnedFee) (#564)
Shibaroo.setSellTaxes(uint256,uint256,uint256) (#567-573) should emit an event for:
- _sellLiquidityFee = newLiquidityTax (#568)
- _sellMarketingFee = newMarketingTax (#569)
- _sellBurnedFee = newBurnedTax (#570)
- _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellBurnedFee) (#572)
Shibaroo.setDistributionSettings(uint256,uint256,uint256) (#575-581) should emit an event for:
- _liquidityShare = newLiquidityShare (#576)
- _BurnedShare = newBurnedShare (#578)
- _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_BurnedShare) (#580)
Shibaroo.setNumTokensBeforeSwap(uint256) (#599-601) should emit an event for:
- minimumTokensBeforeSwap = newLimit (#600)
Emit an event for critical parameter changes.
Additional information: link
Shibaroo.setMarketingWalletAddress(address).newAddress (#603) lacks a zero-check on :
- marketingWalletAddress = address(newAddress) (#604)
Shibaroo.setBurnedWalletAddress(address).newAddress (#607) lacks a zero-check on :
- BurnedWalletAddress = address(newAddress) (#608)
Check that the address is not zero.
Additional information: link
Reentrancy in Shibaroo.changeRouterVersion(address) (#628-645):
External calls:
- newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#636-637)
State variables written after the call(s):
- isMarketPair[address(uniswapPair)] = true (#644)
- isWalletLimitExempt[address(uniswapPair)] = true (#643)
- uniswapPair = newPairAddress (#640)
- uniswapV2Router = _uniswapV2Router (#641)
Reentrancy in Shibaroo.constructor() (#463-490):
External calls:
- uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#466-467)
State variables written after the call(s):
- _allowances[address(this)][address(uniswapV2Router)] = _totalSupply (#470)
- _balances[_msgSender()] = _totalSupply (#488)
- _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_BurnedShare) (#477)
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyBurnedFee) (#475)
- _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellBurnedFee) (#476)
- isExcludedFromFee[owner()] = true (#472)
- isExcludedFromFee[address(this)] = true (#473)
- isMarketPair[address(uniswapPair)] = true (#486)
- isTxLimitExempt[owner()] = true (#483)
- isTxLimitExempt[address(this)] = true (#484)
- isWalletLimitExempt[owner()] = true (#479)
- isWalletLimitExempt[address(uniswapPair)] = true (#480)
- isWalletLimitExempt[address(this)] = true (#481)
- uniswapV2Router = _uniswapV2Router (#469)
Reentrancy in Shibaroo.swapAndLiquify(uint256) (#704-726):
External calls:
- swapTokensForEth(tokensForSwap) (#709)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#735-741)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#725)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#751-758)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#719)
- recipient.transfer(amount) (#625)
- transferToAddressETH(BurnedWalletAddress,amountBNBBurned) (#722)
- recipient.transfer(amount) (#625)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#725)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#751-758)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (#725)
- _allowances[owner][spender] = amount (#543)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Shibaroo.constructor() (#463-490):
External calls:
- uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#466-467)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_totalSupply) (#489)
Reentrancy in Shibaroo.swapAndLiquify(uint256) (#704-726):
External calls:
- swapTokensForEth(tokensForSwap) (#709)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#735-741)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#725)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#751-758)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#719)
- recipient.transfer(amount) (#625)
- transferToAddressETH(BurnedWalletAddress,amountBNBBurned) (#722)
- recipient.transfer(amount) (#625)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#725)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#751-758)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#544)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#725)
Reentrancy in Shibaroo.swapTokensForEth(uint256) (#728-744):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#735-741)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#743)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#182-187) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#184)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#82-88) uses assembly
- INLINE ASM (#86)
Address._functionCallWithValue(address,bytes,uint256,string) (#114-131) uses assembly
- INLINE ASM (#123-126)
Do not use evm assembly.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#114-131) is never used and should be removed
Address.functionCall(address,bytes) (#97-99) is never used and should be removed
Address.functionCall(address,bytes,string) (#101-103) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#105-107) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#109-112) is never used and should be removed
Address.isContract(address) (#82-88) is never used and should be removed
Address.sendValue(address,uint256) (#90-95) is never used and should be removed
Context._msgData() (#10-13) is never used and should be removed
SafeMath.mod(uint256,uint256) (#70-72) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#74-77) is never used and should be removed
Shibaroo.addLiquidity(uint256,uint256) (#746-759) is never used and should be removed
Shibaroo.swapAndLiquify(uint256) (#704-726) is never used and should be removed
Shibaroo.swapTokensForEth(uint256) (#728-744) is never used and should be removed
Shibaroo.takeFee(address,address,uint256) (#761-778) is never used and should be removed
Shibaroo.transferToAddressETH(address,uint256) (#624-626) is never used and should be removed
Remove unused functions.
Additional information: link
Shibaroo._liquidityShare (#417) is set pre-construction with a non-constant function or state variable:
- _buyLiquidityFee.add(_sellLiquidityFee)
Shibaroo._marketingShare (#418) is set pre-construction with a non-constant function or state variable:
- _buyMarketingFee.add(_sellMarketingFee)
Shibaroo._BurnedShare (#419) is set pre-construction with a non-constant function or state variable:
- _buyBurnedFee.add(_sellBurnedFee)
Shibaroo._totalSupply (#425) is set pre-construction with a non-constant function or state variable:
- 1000000000 * 10 ** _decimals
Shibaroo._maxTxAmount (#426) is set pre-construction with a non-constant function or state variable:
- _totalSupply.div(1)
Shibaroo._walletMax (#427) is set pre-construction with a non-constant function or state variable:
- _totalSupply.div(1)
Shibaroo.minimumTokensBeforeSwap (#428) is set pre-construction with a non-constant function or state variable:
- 100 * 10 ** 2 * 10 ** _decimals
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 version0.8.2 (#2) allows old versions
solc-0.8.2 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) (#90-95):
- (success) = recipient.call{value: amount}() (#93)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#114-131):
- (success,returndata) = target.call{value: weiValue}(data) (#117)
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() (#221) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#222) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#238) is not in mixedCase
Function IUniswapV2Router01.WETH() (#257) is not in mixedCase
Parameter Shibaroo.setSwapAndLiquifyEnabled(bool)._enabled (#611) is not in mixedCase
Variable Shibaroo.BurnedWalletAddress (#399) is not in mixedCase
Variable Shibaroo._balances (#402) is not in mixedCase
Variable Shibaroo._buyLiquidityFee (#410) is not in mixedCase
Variable Shibaroo._buyMarketingFee (#411) is not in mixedCase
Variable Shibaroo._buyBurnedFee (#412) is not in mixedCase
Variable Shibaroo._sellLiquidityFee (#413) is not in mixedCase
Variable Shibaroo._sellMarketingFee (#414) is not in mixedCase
Variable Shibaroo._sellBurnedFee (#415) is not in mixedCase
Variable Shibaroo._liquidityShare (#417) is not in mixedCase
Variable Shibaroo._marketingShare (#418) is not in mixedCase
Variable Shibaroo._BurnedShare (#419) is not in mixedCase
Variable Shibaroo._totalTaxIfBuying (#421) is not in mixedCase
Variable Shibaroo._totalTaxIfSelling (#422) is not in mixedCase
Variable Shibaroo._totalDistributionShares (#423) is not in mixedCase
Variable Shibaroo._maxTxAmount (#426) is not in mixedCase
Variable Shibaroo._walletMax (#427) is not in mixedCase
Variable Shibaroo.CoolDown (#438) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#11)" inContext (#4-14)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in Shibaroo.swapAndLiquify(uint256) (#704-726):
External calls:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#719)
- recipient.transfer(amount) (#625)
- transferToAddressETH(BurnedWalletAddress,amountBNBBurned) (#722)
- recipient.transfer(amount) (#625)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#719)
- recipient.transfer(amount) (#625)
- transferToAddressETH(BurnedWalletAddress,amountBNBBurned) (#722)
- recipient.transfer(amount) (#625)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#725)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#751-758)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (#725)
- _allowances[owner][spender] = amount (#543)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#544)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#725)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#262) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#263)
Prevent variables from having similar names.
Additional information: link
Shibaroo.slitherConstructorVariables() (#390-781) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#400)
Shibaroo.slitherConstructorVariables() (#390-781) uses literals with too many digits:
- _totalSupply = 1000000000 * 10 ** _decimals (#425)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Shibaroo._decimals (#396) should be constant
Shibaroo._name (#394) should be constant
Shibaroo._symbol (#395) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
waiveOwnership() should be declared external:
- Ownable.waiveOwnership() (#156-159)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#161-165)
getUnlockTime() should be declared external:
- Ownable.getUnlockTime() (#167-169)
getTime() should be declared external:
- Ownable.getTime() (#171-173)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#175-180)
unlock() should be declared external:
- Ownable.unlock() (#182-187)
name() should be declared external:
- Shibaroo.name() (#492-494)
symbol() should be declared external:
- Shibaroo.symbol() (#496-498)
decimals() should be declared external:
- Shibaroo.decimals() (#500-502)
totalSupply() should be declared external:
- Shibaroo.totalSupply() (#504-506)
allowance(address,address) should be declared external:
- Shibaroo.allowance(address,address) (#512-514)
increaseAllowance(address,uint256) should be declared external:
- Shibaroo.increaseAllowance(address,uint256) (#520-523)
decreaseAllowance(address,uint256) should be declared external:
- Shibaroo.decreaseAllowance(address,uint256) (#525-528)
minimumTokensBeforeSwapAmount() should be declared external:
- Shibaroo.minimumTokensBeforeSwapAmount() (#530-532)
approve(address,uint256) should be declared external:
- Shibaroo.approve(address,uint256) (#534-537)
setMarketPairStatus(address,bool) should be declared external:
- Shibaroo.setMarketPairStatus(address,bool) (#547-549)
setIsExcludedFromFee(address,bool) should be declared external:
- Shibaroo.setIsExcludedFromFee(address,bool) (#555-557)
setSwapAndLiquifyEnabled(bool) should be declared external:
- Shibaroo.setSwapAndLiquifyEnabled(bool) (#611-614)
setSwapAndLiquifyByLimitOnly(bool) should be declared external:
- Shibaroo.setSwapAndLiquifyByLimitOnly(bool) (#616-618)
getCirculatingSupply() should be declared external:
- Shibaroo.getCirculatingSupply() (#620-622)
changeRouterVersion(address) should be declared external:
- Shibaroo.changeRouterVersion(address) (#628-645)
transfer(address,uint256) should be declared external:
- Shibaroo.transfer(address,uint256) (#649-652)
transferFrom(address,address,uint256) should be declared external:
- Shibaroo.transferFrom(address,address,uint256) (#654-658)
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