Crazy Frog is the funniest frog on BSC! A community-focused, decentralized cryptocurrency with instant rewards for holders.
CrazyFrog.sendETHToFee(uint256) (#296-299) sends eth to arbitrary user
Dangerous calls:
- _developmentAddress.transfer(amount.div(2)) (#297)
- _marketingAddress.transfer(amount.div(2)) (#298)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in CrazyFrog._transfer(address,address,uint256) (#243-280):
External calls:
- swapTokensForEth(contractTokenBalance) (#255)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#287-293)
External calls sending eth:
- sendETHToFee(address(this).balance) (#258)
- _developmentAddress.transfer(amount.div(2)) (#297)
- _marketingAddress.transfer(amount.div(2)) (#298)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#279)
- _rOwned[address(this)] = _rOwned[address(this)].add(rTeam) (#337)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#327)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#328)
- _tokenTransfer(from,to,amount) (#279)
- _rTotal = _rTotal.sub(rFee) (#341)
Apply the check-effects-interactions pattern.
Additional information: link
CrazyFrog.rescueForeignTokens(address,address,uint256) (#306-309) ignores return value by Token(_tokenAddr).transfer(_to,_amount) (#308)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
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.
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
CrazyFrog.allowance(address,address).owner (#215) shadows:
- Ownable.owner() (#107-109) (function)
CrazyFrog._approve(address,address,uint256).owner (#236) shadows:
- Ownable.owner() (#107-109) (function)
Rename the local variables that shadow another component.
Additional information: link
Ownable.transferOwnership(address).newOwner (#122) lacks a zero-check on :
- _owner = newOwner (#124)
CrazyFrog.setNewDevAddress(address).dev (#312) lacks a zero-check on :
- _developmentAddress = dev (#314)
CrazyFrog.setNewMarketingAddress(address).markt (#319) lacks a zero-check on :
- _marketingAddress = markt (#321)
Check that the address is not zero.
Additional information: link
CrazyFrog.constructor() (#169-183) uses literals with too many digits:
- Transfer(address(0x0000000000000000000000000000000000000000),_msgSender(),_tTotal) (#182)
CrazyFrog.slitherConstructorConstantVariables() (#129-414) uses literals with too many digits:
- _tTotal = 100000000000 * 10 ** 4 * 10 ** 5 (#138)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Ownable._previousOwner (#99) is never used in CrazyFrog (#129-414)
CrazyFrog._tOwned (#133) is never used in CrazyFrog (#129-414)
Remove unused state variables.
Additional information: link
Ownable._previousOwner (#99) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
Reentrancy in CrazyFrog._transfer(address,address,uint256) (#243-280):
External calls:
- swapTokensForEth(contractTokenBalance) (#255)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#287-293)
External calls sending eth:
- sendETHToFee(address(this).balance) (#258)
- _developmentAddress.transfer(amount.div(2)) (#297)
- _marketingAddress.transfer(amount.div(2)) (#298)
State variables written after the call(s):
- _redisFee = _redisFeeOnBuy (#263)
- _redisFee = _redisFeeOnSell (#268)
- _redisFee = 0 (#273)
- _tokenTransfer(from,to,amount) (#279)
- _tFeeTotal = _tFeeTotal.add(tFee) (#342)
- _taxFee = _taxFeeOnBuy (#264)
- _taxFee = _taxFeeOnSell (#269)
- _taxFee = 0 (#274)
Reentrancy in CrazyFrog.constructor() (#169-183):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#174-175)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#177)
- _isExcludedFromFee[address(this)] = true (#178)
- _isExcludedFromFee[_developmentAddress] = true (#179)
- _isExcludedFromFee[_marketingAddress] = true (#180)
Reentrancy in CrazyFrog.transferFrom(address,address,uint256) (#224-228):
External calls:
- _transfer(sender,recipient,amount) (#225)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#287-293)
External calls sending eth:
- _transfer(sender,recipient,amount) (#225)
- _developmentAddress.transfer(amount.div(2)) (#297)
- _marketingAddress.transfer(amount.div(2)) (#298)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#226)
- _allowances[owner][spender] = amount (#239)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in CrazyFrog._transfer(address,address,uint256) (#243-280):
External calls:
- swapTokensForEth(contractTokenBalance) (#255)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#287-293)
External calls sending eth:
- sendETHToFee(address(this).balance) (#258)
- _developmentAddress.transfer(amount.div(2)) (#297)
- _marketingAddress.transfer(amount.div(2)) (#298)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#331)
- _tokenTransfer(from,to,amount) (#279)
Reentrancy in CrazyFrog.constructor() (#169-183):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#174-175)
Event emitted after the call(s):
- Transfer(address(0x0000000000000000000000000000000000000000),_msgSender(),_tTotal) (#182)
Reentrancy in CrazyFrog.transferFrom(address,address,uint256) (#224-228):
External calls:
- _transfer(sender,recipient,amount) (#225)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#287-293)
External calls sending eth:
- _transfer(sender,recipient,amount) (#225)
- _developmentAddress.transfer(amount.div(2)) (#297)
- _marketingAddress.transfer(amount.div(2)) (#298)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#240)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#226)
Apply the check-effects-interactions pattern.
Additional information: link
Function IUniswapV2Router02.WETH() (#40) is not in mixedCase
Event CrazyFrogtokensRescued(address,address,uint256) (#305) is not in CapWords
Event CrazyFrogdevAddressUpdated(address,address) (#311) is not in CapWords
Event CrazyFrogmarketingAddressUpdated(address,address) (#318) is not in CapWords
Parameter CrazyFrog.rescueForeignTokens(address,address,uint256)._tokenAddr (#306) is not in mixedCase
Parameter CrazyFrog.rescueForeignTokens(address,address,uint256)._to (#306) is not in mixedCase
Parameter CrazyFrog.rescueForeignTokens(address,address,uint256)._amount (#306) is not in mixedCase
Parameter CrazyFrog.toggleSwap(bool)._swapEnabled (#404) is not in mixedCase
Constant CrazyFrog._tTotal (#138) is not in UPPER_CASE_WITH_UNDERSCORES
Constant CrazyFrog._name (#151) is not in UPPER_CASE_WITH_UNDERSCORES
Constant CrazyFrog._symbol (#152) is not in UPPER_CASE_WITH_UNDERSCORES
Constant CrazyFrog._decimals (#153) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Reentrancy in CrazyFrog._transfer(address,address,uint256) (#243-280):
External calls:
- sendETHToFee(address(this).balance) (#258)
- _developmentAddress.transfer(amount.div(2)) (#297)
- _marketingAddress.transfer(amount.div(2)) (#298)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (#279)
- _rOwned[address(this)] = _rOwned[address(this)].add(rTeam) (#337)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#327)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#328)
- _tokenTransfer(from,to,amount) (#279)
- _rTotal = _rTotal.sub(rFee) (#341)
- _redisFee = _redisFeeOnBuy (#263)
- _redisFee = _redisFeeOnSell (#268)
- _redisFee = 0 (#273)
- _tokenTransfer(from,to,amount) (#279)
- _tFeeTotal = _tFeeTotal.add(tFee) (#342)
- _taxFee = _taxFeeOnBuy (#264)
- _taxFee = _taxFeeOnSell (#269)
- _taxFee = 0 (#274)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#331)
- _tokenTransfer(from,to,amount) (#279)
Reentrancy in CrazyFrog.transferFrom(address,address,uint256) (#224-228):
External calls:
- _transfer(sender,recipient,amount) (#225)
- _developmentAddress.transfer(amount.div(2)) (#297)
- _marketingAddress.transfer(amount.div(2)) (#298)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#226)
- _allowances[owner][spender] = amount (#239)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#240)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#226)
Apply the check-effects-interactions pattern.
Additional information: link
Variable CrazyFrog._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#365) is too similar to CrazyFrog._transferStandard(address,address,uint256).tTransferAmount (#326)
Variable CrazyFrog._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#365) is too similar to CrazyFrog._getValues(uint256).tTransferAmount (#348)
Variable CrazyFrog._transferStandard(address,address,uint256).rTransferAmount (#326) is too similar to CrazyFrog._transferStandard(address,address,uint256).tTransferAmount (#326)
Variable CrazyFrog._getValues(uint256).rTransferAmount (#350) is too similar to CrazyFrog._transferStandard(address,address,uint256).tTransferAmount (#326)
Variable CrazyFrog._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#365) is too similar to CrazyFrog._getTValues(uint256,uint256,uint256).tTransferAmount (#357)
Variable CrazyFrog._transferStandard(address,address,uint256).rTransferAmount (#326) is too similar to CrazyFrog._getTValues(uint256,uint256,uint256).tTransferAmount (#357)
Variable CrazyFrog._getValues(uint256).rTransferAmount (#350) is too similar to CrazyFrog._getValues(uint256).tTransferAmount (#348)
Variable CrazyFrog._transferStandard(address,address,uint256).rTransferAmount (#326) is too similar to CrazyFrog._getValues(uint256).tTransferAmount (#348)
Variable CrazyFrog._getValues(uint256).rTransferAmount (#350) is too similar to CrazyFrog._getTValues(uint256,uint256,uint256).tTransferAmount (#357)
Prevent variables from having similar names.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#116-119)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#122-125)
name() should be declared external:
- CrazyFrog.name() (#190-192)
symbol() should be declared external:
- CrazyFrog.symbol() (#194-196)
decimals() should be declared external:
- CrazyFrog.decimals() (#198-200)
totalSupply() should be declared external:
- CrazyFrog.totalSupply() (#202-204)
transfer(address,uint256) should be declared external:
- CrazyFrog.transfer(address,uint256) (#210-213)
allowance(address,address) should be declared external:
- CrazyFrog.allowance(address,address) (#215-217)
approve(address,uint256) should be declared external:
- CrazyFrog.approve(address,uint256) (#219-222)
transferFrom(address,address,uint256) should be declared external:
- CrazyFrog.transferFrom(address,address,uint256) (#224-228)
rescueForeignTokens(address,address,uint256) should be declared external:
- CrazyFrog.rescueForeignTokens(address,address,uint256) (#306-309)
setNewDevAddress(address) should be declared external:
- CrazyFrog.setNewDevAddress(address) (#312-316)
setNewMarketingAddress(address) should be declared external:
- CrazyFrog.setNewMarketingAddress(address) (#319-323)
setFee(uint256,uint256,uint256,uint256) should be declared external:
- CrazyFrog.setFee(uint256,uint256,uint256,uint256) (#393-402)
toggleSwap(bool) should be declared external:
- CrazyFrog.toggleSwap(bool) (#404-406)
excludeMultipleAccountsFromFees(address[],bool) should be declared external:
- CrazyFrog.excludeMultipleAccountsFromFees(address[],bool) (#408-412)
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 token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Unable to find whitepaper link on the website
Token is not listed at Mobula.Finance
Additional information: link
Unable to find token on CoinHunt
Additional information: link
Young tokens have high risks of scam / price dump / death
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
Unable to find Discord account