Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in PUSSINBOOTS._transfer(address,address,uint256) (#584-622):
External calls:
- swapAndLiquify(contractTokenBalance) (#606)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#664-670)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#606)
- recipient.transfer(amount) (#566)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#609)
- _balances[recipient] = _balances[recipient].add(finalAmount) (#617)
- finalAmount = takeFee(sender,recipient,amount) (#611-612)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#702)
Apply the check-effects-interactions pattern.
Additional information: link
PUSSINBOOTS.addLiquidity(uint256,uint256) (#675-688) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
Ensure that all the return values of the function calls are used.
Additional information: link
PUSSINBOOTS.allowance(address,address).owner (#493) shadows:
- Ownable.owner() (#151-153) (function)
PUSSINBOOTS._approve(address,address,uint256).owner (#516) shadows:
- Ownable.owner() (#151-153) (function)
Rename the local variables that shadow another component.
Additional information: link
PUSSINBOOTS.setBuyTaxes(uint256,uint256,uint256) (#528-534) should emit an event for:
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee) (#533)
PUSSINBOOTS.setSellTaxes(uint256,uint256,uint256) (#536-542) should emit an event for:
- _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee) (#541)
PUSSINBOOTS.setMaxTxAmount(uint256) (#544-546) should emit an event for:
- _maxTxAmount = maxTxAmount (#545)
PUSSINBOOTS.setWalletLimit(uint256) (#552-554) should emit an event for:
- _walletMax = newLimit (#553)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in PUSSINBOOTS.constructor() (#437-471):
External calls:
- uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#441-442)
State variables written after the call(s):
- _allowances[address(this)][address(uniswapV2Router)] = _totalSupply (#445)
- _balances[_msgSender()] = _totalSupply (#469)
- _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare) (#454)
- _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee) (#452)
- _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee) (#453)
- isExcludedFromFee[owner()] = true (#447)
- isExcludedFromFee[marketingWalletAddress] = true (#448)
- isExcludedFromFee[teamWalletAddress] = true (#449)
- isExcludedFromFee[address(this)] = true (#450)
- isMarketPair[address(uniswapPair)] = true (#467)
- isTxLimitExempt[owner()] = true (#462)
- isTxLimitExempt[address(this)] = true (#463)
- isTxLimitExempt[marketingWalletAddress] = true (#464)
- isTxLimitExempt[teamWalletAddress] = true (#465)
- isWalletLimitExempt[owner()] = true (#456)
- isWalletLimitExempt[address(uniswapPair)] = true (#457)
- isWalletLimitExempt[address(this)] = true (#458)
- isWalletLimitExempt[marketingWalletAddress] = true (#459)
- isWalletLimitExempt[teamWalletAddress] = true (#460)
- uniswapV2Router = _uniswapV2Router (#444)
Reentrancy in PUSSINBOOTS.swapAndLiquify(uint256) (#631-653):
External calls:
- swapTokensForEth(tokensForSwap) (#636)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#664-670)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#652)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#646)
- recipient.transfer(amount) (#566)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#649)
- recipient.transfer(amount) (#566)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#652)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (#652)
- _allowances[owner][spender] = amount (#520)
Reentrancy in PUSSINBOOTS.transferFrom(address,address,uint256) (#578-582):
External calls:
- _transfer(sender,recipient,amount) (#579)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#664-670)
External calls sending eth:
- _transfer(sender,recipient,amount) (#579)
- recipient.transfer(amount) (#566)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#580)
- _allowances[owner][spender] = amount (#520)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in PUSSINBOOTS._transfer(address,address,uint256) (#584-622):
External calls:
- swapAndLiquify(contractTokenBalance) (#606)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#664-670)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#606)
- recipient.transfer(amount) (#566)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount) (#703)
- finalAmount = takeFee(sender,recipient,amount) (#611-612)
- Transfer(sender,recipient,finalAmount) (#619)
Reentrancy in PUSSINBOOTS.constructor() (#437-471):
External calls:
- uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#441-442)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_totalSupply) (#470)
Reentrancy in PUSSINBOOTS.swapAndLiquify(uint256) (#631-653):
External calls:
- swapTokensForEth(tokensForSwap) (#636)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#664-670)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#652)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#646)
- recipient.transfer(amount) (#566)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#649)
- recipient.transfer(amount) (#566)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#652)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#521)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#652)
Reentrancy in PUSSINBOOTS.swapTokensForEth(uint256) (#655-673):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#664-670)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#672)
Reentrancy in PUSSINBOOTS.transferFrom(address,address,uint256) (#578-582):
External calls:
- _transfer(sender,recipient,amount) (#579)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#664-670)
External calls sending eth:
- _transfer(sender,recipient,amount) (#579)
- recipient.transfer(amount) (#566)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#521)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#580)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#88-97) uses assembly
- INLINE ASM (#95)
Address._functionCallWithValue(address,bytes,uint256,string) (#124-141) uses assembly
- INLINE ASM (#133-136)
Do not use evm assembly.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#124-141) is never used and should be removed
Address.functionCall(address,bytes) (#107-109) is never used and should be removed
Address.functionCall(address,bytes,string) (#111-113) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#115-117) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#119-122) is never used and should be removed
Address.isContract(address) (#88-97) is never used and should be removed
Address.sendValue(address,uint256) (#99-105) is never used and should be removed
Context._msgData() (#15-18) is never used and should be removed
SafeMath.mod(uint256,uint256) (#76-78) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#80-83) is never used and should be removed
Remove unused functions.
Additional information: link
PUSSINBOOTS._totalSupply (#401) is set pre-construction with a non-constant function or state variable:
- 1000000000 * 10 ** _decimals
PUSSINBOOTS._maxTxAmount (#402) is set pre-construction with a non-constant function or state variable:
- 100000000000000000 * 10 ** _decimals
PUSSINBOOTS._walletMax (#403) is set pre-construction with a non-constant function or state variable:
- 500000000000000000 * 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
Low level call in Address.sendValue(address,uint256) (#99-105):
- (success) = recipient.call{value: amount}() (#103)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#124-141):
- (success,returndata) = target.call{value: weiValue}(data) (#127)
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() (#195) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#196) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#212) is not in mixedCase
Function IUniswapV2Router01.WETH() (#231) is not in mixedCase
Parameter PUSSINBOOTS.setSwapAndLiquifyEnabled(bool)._enabled (#556) is not in mixedCase
Variable PUSSINBOOTS._balances (#377) is not in mixedCase
Variable PUSSINBOOTS._buyLiquidityFee (#385) is not in mixedCase
Variable PUSSINBOOTS._buyMarketingFee (#386) is not in mixedCase
Variable PUSSINBOOTS._buyTeamFee (#387) is not in mixedCase
Variable PUSSINBOOTS._sellLiquidityFee (#389) is not in mixedCase
Variable PUSSINBOOTS._sellMarketingFee (#390) is not in mixedCase
Variable PUSSINBOOTS._sellTeamFee (#391) is not in mixedCase
Variable PUSSINBOOTS._liquidityShare (#393) is not in mixedCase
Variable PUSSINBOOTS._marketingShare (#394) is not in mixedCase
Variable PUSSINBOOTS._teamShare (#395) is not in mixedCase
Variable PUSSINBOOTS._totalTaxIfBuying (#397) is not in mixedCase
Variable PUSSINBOOTS._totalTaxIfSelling (#398) is not in mixedCase
Variable PUSSINBOOTS._totalDistributionShares (#399) is not in mixedCase
Variable PUSSINBOOTS._maxTxAmount (#402) is not in mixedCase
Variable PUSSINBOOTS._walletMax (#403) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#16)" inContext (#9-19)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in PUSSINBOOTS._transfer(address,address,uint256) (#584-622):
External calls:
- swapAndLiquify(contractTokenBalance) (#606)
- recipient.transfer(amount) (#566)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#606)
- recipient.transfer(amount) (#566)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#609)
- _balances[recipient] = _balances[recipient].add(finalAmount) (#617)
- finalAmount = takeFee(sender,recipient,amount) (#611-612)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#702)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount) (#703)
- finalAmount = takeFee(sender,recipient,amount) (#611-612)
- Transfer(sender,recipient,finalAmount) (#619)
Reentrancy in PUSSINBOOTS.swapAndLiquify(uint256) (#631-653):
External calls:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#646)
- recipient.transfer(amount) (#566)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#649)
- recipient.transfer(amount) (#566)
External calls sending eth:
- transferToAddressETH(marketingWalletAddress,amountBNBMarketing) (#646)
- recipient.transfer(amount) (#566)
- transferToAddressETH(teamWalletAddress,amountBNBTeam) (#649)
- recipient.transfer(amount) (#566)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#652)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
State variables written after the call(s):
- addLiquidity(tokensForLP,amountBNBLiquidity) (#652)
- _allowances[owner][spender] = amount (#520)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#521)
- addLiquidity(tokensForLP,amountBNBLiquidity) (#652)
Reentrancy in PUSSINBOOTS.transferFrom(address,address,uint256) (#578-582):
External calls:
- _transfer(sender,recipient,amount) (#579)
- recipient.transfer(amount) (#566)
External calls sending eth:
- _transfer(sender,recipient,amount) (#579)
- recipient.transfer(amount) (#566)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#680-687)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#580)
- _allowances[owner][spender] = amount (#520)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#521)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#580)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#236) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#237)
Prevent variables from having similar names.
Additional information: link
PUSSINBOOTS.slitherConstructorVariables() (#364-710) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#375)
PUSSINBOOTS.slitherConstructorVariables() (#364-710) uses literals with too many digits:
- _totalSupply = 1000000000 * 10 ** _decimals (#401)
PUSSINBOOTS.slitherConstructorVariables() (#364-710) uses literals with too many digits:
- _maxTxAmount = 100000000000000000 * 10 ** _decimals (#402)
PUSSINBOOTS.slitherConstructorVariables() (#364-710) uses literals with too many digits:
- _walletMax = 500000000000000000 * 10 ** _decimals (#403)
PUSSINBOOTS.slitherConstructorVariables() (#364-710) uses literals with too many digits:
- minimumTokensBeforeSwap = 1000000 * 10 ** 3 (#404)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
PUSSINBOOTS._decimals (#371) should be constant
PUSSINBOOTS._liquidityShare (#393) should be constant
PUSSINBOOTS._marketingShare (#394) should be constant
PUSSINBOOTS._name (#369) should be constant
PUSSINBOOTS._symbol (#370) should be constant
PUSSINBOOTS._teamShare (#395) should be constant
PUSSINBOOTS.checkWalletLimit (#412) should be constant
PUSSINBOOTS.marketingWalletAddress (#373) should be constant
PUSSINBOOTS.minimumTokensBeforeSwap (#404) should be constant
PUSSINBOOTS.swapAndLiquifyByLimitOnly (#411) should be constant
PUSSINBOOTS.teamWalletAddress (#374) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#158-161)
name() should be declared external:
- PUSSINBOOTS.name() (#473-475)
symbol() should be declared external:
- PUSSINBOOTS.symbol() (#477-479)
decimals() should be declared external:
- PUSSINBOOTS.decimals() (#481-483)
totalSupply() should be declared external:
- PUSSINBOOTS.totalSupply() (#485-487)
allowance(address,address) should be declared external:
- PUSSINBOOTS.allowance(address,address) (#493-495)
increaseAllowance(address,uint256) should be declared external:
- PUSSINBOOTS.increaseAllowance(address,uint256) (#497-500)
decreaseAllowance(address,uint256) should be declared external:
- PUSSINBOOTS.decreaseAllowance(address,uint256) (#502-505)
minimumTokensBeforeSwapAmount() should be declared external:
- PUSSINBOOTS.minimumTokensBeforeSwapAmount() (#507-509)
approve(address,uint256) should be declared external:
- PUSSINBOOTS.approve(address,uint256) (#511-514)
setSwapAndLiquifyEnabled(bool) should be declared external:
- PUSSINBOOTS.setSwapAndLiquifyEnabled(bool) (#556-559)
getCirculatingSupply() should be declared external:
- PUSSINBOOTS.getCirculatingSupply() (#561-563)
transfer(address,uint256) should be declared external:
- PUSSINBOOTS.transfer(address,uint256) (#573-576)
transferFrom(address,address,uint256) should be declared external:
- PUSSINBOOTS.transferFrom(address,address,uint256) (#578-582)
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