Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in BabyDogs._transfer(address,address,uint256) (#768-857):
External calls:
- swapAndLiquify(contractTokenBalance) (#834)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#904-910)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#834)
- wallet.transfer(amount) (#873)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#977)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#978)
- _tOwned[address(this)] = _tOwned[address(this)].add(tDev) (#979)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- txCount ++ (#966)
Apply the check-effects-interactions pattern.
Additional information: link
BabyDogs.blacklist_Add_Wallets(address[]).i (#645) is a local variable never initialized
BabyDogs.blacklist_Add_Wallets(address[]).gasUsed (#643) is a local variable never initialized
BabyDogs.blacklist_Remove_Wallets(address[]).gasUsed (#661) is a local variable never initialized
BabyDogs.blacklist_Remove_Wallets(address[]).i (#663) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
BabyDogs.allowance(address,address).owner (#526) shadows:
- Ownable.owner() (#154-156) (function)
BabyDogs._approve(address,address,uint256).owner (#760) shadows:
- Ownable.owner() (#154-156) (function)
Rename the local variables that shadow another component.
Additional information: link
BabyDogs._set_Fees(uint256,uint256) (#588-594) should emit an event for:
- _sellFee = Sell_Fee (#591)
- _buyFee = Buy_Fee (#592)
BabyDogs.set_Number_Of_Transactions_Before_Liquify_Trigger(uint8) (#618-620) should emit an event for:
- swapTrigger = number_of_transactions (#619)
BabyDogs.set_Max_Transaction_Percent(uint256) (#724-726) should emit an event for:
- _maxTxAmount = _tTotal * maxTxPercent_x100 / 10000 (#725)
BabyDogs.set_Max_Wallet_Percent(uint256) (#729-731) should emit an event for:
- _maxWalletToken = _tTotal * maxWallPercent_x100 / 10000 (#730)
Emit an event for critical parameter changes.
Additional information: link
BabyDogs.Wallet_Update_Dev(address).wallet (#599) lacks a zero-check on :
- Wallet_Dev = wallet (#600)
BabyDogs.set_New_Pair_Address(address).newPair (#949) lacks a zero-check on :
- uniswapV2Pair = newPair (#950)
Check that the address is not zero.
Additional information: link
Reentrancy in BabyDogs._transfer(address,address,uint256) (#768-857):
External calls:
- swapAndLiquify(contractTokenBalance) (#834)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#904-910)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#834)
- wallet.transfer(amount) (#873)
State variables written after the call(s):
- _TotalFee = _buyFee (#854)
- _TotalFee = _sellFee (#854)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _TotalFee = _previousTotalFee (#752)
- _TotalFee = 0 (#745)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _buyFee = _previousBuyFee (#753)
- _buyFee = 0 (#743)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _previousBuyFee = _buyFee (#740)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _previousSellFee = _sellFee (#741)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _previousTotalFee = _TotalFee (#742)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _sellFee = _previousSellFee (#754)
- _sellFee = 0 (#744)
Reentrancy in BabyDogs.constructor() (#477-492):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#484-485)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#487)
- _isExcludedFromFee[address(this)] = true (#488)
- _isExcludedFromFee[Wallet_Dev] = true (#489)
- uniswapV2Router = _uniswapV2Router (#486)
Reentrancy in BabyDogs.set_New_Router_and_Make_Pair(address) (#936-940):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_newPCSRouter.factory()).createPair(address(this),_newPCSRouter.WETH()) (#938)
State variables written after the call(s):
- uniswapV2Router = _newPCSRouter (#939)
Reentrancy in BabyDogs.transferFrom(address,address,uint256) (#535-539):
External calls:
- _transfer(sender,recipient,amount) (#536)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#904-910)
External calls sending eth:
- _transfer(sender,recipient,amount) (#536)
- wallet.transfer(amount) (#873)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#537)
- _allowances[owner][spender] = amount (#763)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in BabyDogs._transfer(address,address,uint256) (#768-857):
External calls:
- swapAndLiquify(contractTokenBalance) (#834)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#904-910)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#834)
- wallet.transfer(amount) (#873)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#980)
- _tokenTransfer(from,to,amount,takeFee) (#856)
Reentrancy in BabyDogs.constructor() (#477-492):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#484-485)
Event emitted after the call(s):
- Transfer(address(0),owner(),_tTotal) (#491)
Reentrancy in BabyDogs.transferFrom(address,address,uint256) (#535-539):
External calls:
- _transfer(sender,recipient,amount) (#536)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#904-910)
External calls sending eth:
- _transfer(sender,recipient,amount) (#536)
- wallet.transfer(amount) (#873)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#764)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#537)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#74-78) uses assembly
- INLINE ASM (#76)
Address._verifyCallResult(bool,bytes,string) (#126-139) uses assembly
- INLINE ASM (#131-134)
Do not use evm assembly.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#126-139) is never used and should be removed
Address.functionCall(address,bytes) (#86-88) is never used and should be removed
Address.functionCall(address,bytes,string) (#90-92) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#94-96) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#98-103) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#116-118) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#120-124) is never used and should be removed
Address.functionStaticCall(address,bytes) (#105-107) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#109-113) is never used and should be removed
Address.isContract(address) (#74-78) is never used and should be removed
Address.sendValue(address,uint256) (#80-84) is never used and should be removed
Context._msgData() (#65-68) is never used and should be removed
SafeMath.div(uint256,uint256) (#38-40) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#49-54) is never used and should be removed
SafeMath.mul(uint256,uint256) (#34-36) is never used and should be removed
Remove unused functions.
Additional information: link
BabyDogs._previousTotalFee (#423) is set pre-construction with a non-constant function or state variable:
- _TotalFee
BabyDogs._previousBuyFee (#424) is set pre-construction with a non-constant function or state variable:
- _buyFee
BabyDogs._previousSellFee (#425) is set pre-construction with a non-constant function or state variable:
- _sellFee
BabyDogs._maxWalletToken (#434) is set pre-construction with a non-constant function or state variable:
- _tTotal.mul(4).div(100)
BabyDogs._previousMaxWalletToken (#435) is set pre-construction with a non-constant function or state variable:
- _maxWalletToken
BabyDogs._maxTxAmount (#439) is set pre-construction with a non-constant function or state variable:
- _tTotal.mul(4).div(100)
BabyDogs._previousMaxTxAmount (#440) is set pre-construction with a non-constant function or state variable:
- _maxTxAmount
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
Low level call in Address.sendValue(address,uint256) (#80-84):
- (success) = recipient.call{value: amount}() (#82)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#98-103):
- (success,returndata) = target.call{value: value}(data) (#101)
Low level call in Address.functionStaticCall(address,bytes,string) (#109-113):
- (success,returndata) = target.staticcall(data) (#111)
Low level call in Address.functionDelegateCall(address,bytes,string) (#120-124):
- (success,returndata) = target.delegatecall(data) (#122)
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() (#202) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#203) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#216) is not in mixedCase
Function IUniswapV2Router01.WETH() (#233) is not in mixedCase
Function BabyDogs._set_Fees(uint256,uint256) (#588-594) is not in mixedCase
Parameter BabyDogs._set_Fees(uint256,uint256).Buy_Fee (#588) is not in mixedCase
Parameter BabyDogs._set_Fees(uint256,uint256).Sell_Fee (#588) is not in mixedCase
Function BabyDogs.Wallet_Update_Dev(address) (#599-602) is not in mixedCase
Function BabyDogs.set_Swap_And_Liquify_Enabled(bool) (#612-615) is not in mixedCase
Parameter BabyDogs.set_Swap_And_Liquify_Enabled(bool).true_or_false (#612) is not in mixedCase
Function BabyDogs.set_Number_Of_Transactions_Before_Liquify_Trigger(uint8) (#618-620) is not in mixedCase
Parameter BabyDogs.set_Number_Of_Transactions_Before_Liquify_Trigger(uint8).number_of_transactions (#618) is not in mixedCase
Function BabyDogs.blacklist_Add_Wallets(address[]) (#640-653) is not in mixedCase
Function BabyDogs.blacklist_Remove_Wallets(address[]) (#658-671) is not in mixedCase
Function BabyDogs.blacklist_Switch(bool) (#685-687) is not in mixedCase
Parameter BabyDogs.blacklist_Switch(bool).true_or_false (#685) is not in mixedCase
Function BabyDogs.set_Transfers_Without_Fees(bool) (#702-704) is not in mixedCase
Parameter BabyDogs.set_Transfers_Without_Fees(bool).true_or_false (#702) is not in mixedCase
Function BabyDogs.set_Max_Transaction_Percent(uint256) (#724-726) is not in mixedCase
Parameter BabyDogs.set_Max_Transaction_Percent(uint256).maxTxPercent_x100 (#724) is not in mixedCase
Function BabyDogs.set_Max_Wallet_Percent(uint256) (#729-731) is not in mixedCase
Parameter BabyDogs.set_Max_Wallet_Percent(uint256).maxWallPercent_x100 (#729) is not in mixedCase
Function BabyDogs.process_Tokens_Now(uint256) (#887-894) is not in mixedCase
Parameter BabyDogs.process_Tokens_Now(uint256).percent_Of_Tokens_To_Process (#887) is not in mixedCase
Function BabyDogs.remove_Random_Tokens(address,address,uint256) (#920-925) is not in mixedCase
Parameter BabyDogs.remove_Random_Tokens(address,address,uint256).random_Token_Address (#920) is not in mixedCase
Parameter BabyDogs.remove_Random_Tokens(address,address,uint256).send_to_wallet (#920) is not in mixedCase
Parameter BabyDogs.remove_Random_Tokens(address,address,uint256).number_of_tokens (#920) is not in mixedCase
Function BabyDogs.set_New_Router_and_Make_Pair(address) (#936-940) is not in mixedCase
Function BabyDogs.set_New_Router_Address(address) (#943-946) is not in mixedCase
Function BabyDogs.set_New_Pair_Address(address) (#949-951) is not in mixedCase
Variable BabyDogs._isExcludedFromFee (#374) is not in mixedCase
Variable BabyDogs._isBlacklisted (#377) is not in mixedCase
Variable BabyDogs.Wallet_Dev (#389) is not in mixedCase
Variable BabyDogs.Wallet_Burn (#390) is not in mixedCase
Variable BabyDogs.Wallet_zero (#391) is not in mixedCase
Variable BabyDogs._TotalFee (#417) is not in mixedCase
Variable BabyDogs._buyFee (#418) is not in mixedCase
Variable BabyDogs._sellFee (#419) is not in mixedCase
Variable BabyDogs._maxWalletToken (#434) is not in mixedCase
Variable BabyDogs._maxTxAmount (#439) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#66)" inContext (#60-69)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in BabyDogs._transfer(address,address,uint256) (#768-857):
External calls:
- swapAndLiquify(contractTokenBalance) (#834)
- wallet.transfer(amount) (#873)
State variables written after the call(s):
- _TotalFee = _buyFee (#854)
- _TotalFee = _sellFee (#854)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _TotalFee = _previousTotalFee (#752)
- _TotalFee = 0 (#745)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _buyFee = _previousBuyFee (#753)
- _buyFee = 0 (#743)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _previousBuyFee = _buyFee (#740)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _previousSellFee = _sellFee (#741)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _previousTotalFee = _TotalFee (#742)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _sellFee = _previousSellFee (#754)
- _sellFee = 0 (#744)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#977)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#978)
- _tOwned[address(this)] = _tOwned[address(this)].add(tDev) (#979)
- _tokenTransfer(from,to,amount,takeFee) (#856)
- txCount ++ (#966)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#980)
- _tokenTransfer(from,to,amount,takeFee) (#856)
Reentrancy in BabyDogs.transferFrom(address,address,uint256) (#535-539):
External calls:
- _transfer(sender,recipient,amount) (#536)
- wallet.transfer(amount) (#873)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#537)
- _allowances[owner][spender] = amount (#763)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#764)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#537)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#237) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#238)
Prevent variables from having similar names.
Additional information: link
BabyDogs.slitherConstructorVariables() (#366-997) uses literals with too many digits:
- Wallet_Burn = address(0x000000000000000000000000000000000000dEaD) (#390)
BabyDogs.slitherConstructorVariables() (#366-997) uses literals with too many digits:
- Wallet_zero = address(0x0000000000000000000000000000000000000000) (#391)
BabyDogs.slitherConstructorVariables() (#366-997) uses literals with too many digits:
- _tTotal = 100000000000000 * 10 ** 18 (#404)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
BabyDogs.Wallet_zero (#391) is never used in BabyDogs (#366-997)
BabyDogs._tFeeTotal (#405) is never used in BabyDogs (#366-997)
BabyDogs._previousMaxWalletToken (#435) is never used in BabyDogs (#366-997)
BabyDogs._previousMaxTxAmount (#440) is never used in BabyDogs (#366-997)
Remove unused state variables.
Additional information: link
BabyDogs.Wallet_Burn (#390) should be constant
BabyDogs.Wallet_zero (#391) should be constant
BabyDogs._decimals (#403) should be constant
BabyDogs._name (#401) should be constant
BabyDogs._symbol (#402) should be constant
BabyDogs._tFeeTotal (#405) should be constant
BabyDogs._tTotal (#404) should be constant
BabyDogs.maxPossibleFee (#413) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#165-168)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#171-175)
name() should be declared external:
- BabyDogs.name() (#501-503)
symbol() should be declared external:
- BabyDogs.symbol() (#505-507)
decimals() should be declared external:
- BabyDogs.decimals() (#509-511)
totalSupply() should be declared external:
- BabyDogs.totalSupply() (#513-515)
transfer(address,uint256) should be declared external:
- BabyDogs.transfer(address,uint256) (#521-524)
allowance(address,address) should be declared external:
- BabyDogs.allowance(address,address) (#526-528)
approve(address,uint256) should be declared external:
- BabyDogs.approve(address,uint256) (#530-533)
transferFrom(address,address,uint256) should be declared external:
- BabyDogs.transferFrom(address,address,uint256) (#535-539)
increaseAllowance(address,uint256) should be declared external:
- BabyDogs.increaseAllowance(address,uint256) (#541-544)
decreaseAllowance(address,uint256) should be declared external:
- BabyDogs.decreaseAllowance(address,uint256) (#546-549)
excludeFromFee(address) should be declared external:
- BabyDogs.excludeFromFee(address) (#568-570)
includeInFee(address) should be declared external:
- BabyDogs.includeInFee(address) (#573-575)
Wallet_Update_Dev(address) should be declared external:
- BabyDogs.Wallet_Update_Dev(address) (#599-602)
set_Swap_And_Liquify_Enabled(bool) should be declared external:
- BabyDogs.set_Swap_And_Liquify_Enabled(bool) (#612-615)
set_Number_Of_Transactions_Before_Liquify_Trigger(uint8) should be declared external:
- BabyDogs.set_Number_Of_Transactions_Before_Liquify_Trigger(uint8) (#618-620)
blacklist_Switch(bool) should be declared external:
- BabyDogs.blacklist_Switch(bool) (#685-687)
process_Tokens_Now(uint256) should be declared external:
- BabyDogs.process_Tokens_Now(uint256) (#887-894)
set_New_Router_and_Make_Pair(address) should be declared external:
- BabyDogs.set_New_Router_and_Make_Pair(address) (#936-940)
set_New_Router_Address(address) should be declared external:
- BabyDogs.set_New_Router_Address(address) (#943-946)
set_New_Pair_Address(address) should be declared external:
- BabyDogs.set_New_Pair_Address(address) (#949-951)
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