CATCH UP The only decentralize Social Media Application world wide (dApp) running on the Smart Chain Network. Creators can earn tokens, and can be tipped ETH/BNB/BTC and Catch-Up [CU] for creating quality content, play games, win rewards and contributing to the larger space ecosystem.
Audited By: ContractChecker +Anti whales.+Anti flashBots.
CatchUp.sendBNB(address,uint256) (catchup_update_12-08-22-cc.sol#80-85) sends eth to arbitrary user
Dangerous calls:
- (success) = recipient.call{value: amount}() (catchup_update_12-08-22-cc.sol#83)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in CatchUp._transfer(address,address,uint256) (catchup_update_12-08-22-cc.sol#139-230):
External calls:
- swapAndLiquify(liquidityTokens) (catchup_update_12-08-22-cc.sol#169)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(half,0,path,address(this),block.timestamp) (catchup_update_12-08-22-cc.sol#243-248)
- uniswapV2Router.addLiquidityETH{value: newBalance}(address(this),otherHalf,0,0,DEAD,block.timestamp) (catchup_update_12-08-22-cc.sol#252-259)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(contractTokenBalance,0,path,address(this),block.timestamp) (catchup_update_12-08-22-cc.sol#182-187)
- sendBNB(address(teamVestingWallet),teamBNB) (catchup_update_12-08-22-cc.sol#193)
- (success) = recipient.call{value: amount}() (catchup_update_12-08-22-cc.sol#83)
External calls sending eth:
- swapAndLiquify(liquidityTokens) (catchup_update_12-08-22-cc.sol#169)
- uniswapV2Router.addLiquidityETH{value: newBalance}(address(this),otherHalf,0,0,DEAD,block.timestamp) (catchup_update_12-08-22-cc.sol#252-259)
- sendBNB(address(teamVestingWallet),teamBNB) (catchup_update_12-08-22-cc.sol#193)
- (success) = recipient.call{value: amount}() (catchup_update_12-08-22-cc.sol#83)
State variables written after the call(s):
- super._transfer(from,address(this),fees) (catchup_update_12-08-22-cc.sol#224)
- _balances[sender] = senderBalance - amount (tools.sol#166)
- _balances[recipient] += amount (tools.sol#168)
- super._transfer(from,to,amount) (catchup_update_12-08-22-cc.sol#228)
- _balances[sender] = senderBalance - amount (tools.sol#166)
- _balances[recipient] += amount (tools.sol#168)
- swapping = false (catchup_update_12-08-22-cc.sol#197)
Apply the check-effects-interactions pattern.
Additional information: link
CatchUp.claimStuckTokens(address) (catchup_update_12-08-22-cc.sol#65-74) ignores return value by ERC20token.transfer(msg.sender,balance) (catchup_update_12-08-22-cc.sol#73)
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
Contract ownership is not renounced (belongs to a wallet)
CatchUp._transfer(address,address,uint256).liquidityTokens (catchup_update_12-08-22-cc.sol#166) 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
CatchUp.swapAndLiquify(uint256) (catchup_update_12-08-22-cc.sol#233-262) ignores return value by uniswapV2Router.addLiquidityETH{value: newBalance}(address(this),otherHalf,0,0,DEAD,block.timestamp) (catchup_update_12-08-22-cc.sol#252-259)
Ensure that all the return values of the function calls are used.
Additional information: link
CatchUp.setSwapTokensAtAmount(uint256) (catchup_update_12-08-22-cc.sol#264-267) should emit an event for:
- swapTokensAtAmount = newAmount (catchup_update_12-08-22-cc.sol#266)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in CatchUp.constructor(address) (catchup_update_12-08-22-cc.sol#42-59):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (catchup_update_12-08-22-cc.sol#45-46)
State variables written after the call(s):
- _approve(address(this),address(uniswapV2Router),type()(uint256).max) (catchup_update_12-08-22-cc.sol#51)
- _allowances[owner][spender] = amount (tools.sol#212)
- _mint(owner(),40_000_000_000 * (10 ** 18)) (catchup_update_12-08-22-cc.sol#56)
- _balances[account] += amount (tools.sol#181)
- _isExcludedFromFees[owner()] = true (catchup_update_12-08-22-cc.sol#53)
- _isExcludedFromFees[DEAD] = true (catchup_update_12-08-22-cc.sol#54)
- _isExcludedFromFees[address(this)] = true (catchup_update_12-08-22-cc.sol#55)
- _mint(owner(),40_000_000_000 * (10 ** 18)) (catchup_update_12-08-22-cc.sol#56)
- _totalSupply += amount (tools.sol#180)
- swapTokensAtAmount = 40_000_000_000 * (10 ** 18) / 5000 (catchup_update_12-08-22-cc.sol#58)
- uniswapV2Pair = _uniswapV2Pair (catchup_update_12-08-22-cc.sol#49)
- uniswapV2Router = _uniswapV2Router (catchup_update_12-08-22-cc.sol#48)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in CatchUp._transfer(address,address,uint256) (catchup_update_12-08-22-cc.sol#139-230):
External calls:
- swapAndLiquify(liquidityTokens) (catchup_update_12-08-22-cc.sol#169)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(half,0,path,address(this),block.timestamp) (catchup_update_12-08-22-cc.sol#243-248)
- uniswapV2Router.addLiquidityETH{value: newBalance}(address(this),otherHalf,0,0,DEAD,block.timestamp) (catchup_update_12-08-22-cc.sol#252-259)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(contractTokenBalance,0,path,address(this),block.timestamp) (catchup_update_12-08-22-cc.sol#182-187)
- sendBNB(address(teamVestingWallet),teamBNB) (catchup_update_12-08-22-cc.sol#193)
- (success) = recipient.call{value: amount}() (catchup_update_12-08-22-cc.sol#83)
External calls sending eth:
- swapAndLiquify(liquidityTokens) (catchup_update_12-08-22-cc.sol#169)
- uniswapV2Router.addLiquidityETH{value: newBalance}(address(this),otherHalf,0,0,DEAD,block.timestamp) (catchup_update_12-08-22-cc.sol#252-259)
- sendBNB(address(teamVestingWallet),teamBNB) (catchup_update_12-08-22-cc.sol#193)
- (success) = recipient.call{value: amount}() (catchup_update_12-08-22-cc.sol#83)
Event emitted after the call(s):
- SendTeam(teamBNB) (catchup_update_12-08-22-cc.sol#194)
- Transfer(sender,recipient,amount) (tools.sol#170)
- super._transfer(from,to,amount) (catchup_update_12-08-22-cc.sol#228)
- Transfer(sender,recipient,amount) (tools.sol#170)
- super._transfer(from,address(this),fees) (catchup_update_12-08-22-cc.sol#224)
Reentrancy in CatchUp.constructor(address) (catchup_update_12-08-22-cc.sol#42-59):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (catchup_update_12-08-22-cc.sol#45-46)
Event emitted after the call(s):
- Approval(owner,spender,amount) (tools.sol#213)
- _approve(address(this),address(uniswapV2Router),type()(uint256).max) (catchup_update_12-08-22-cc.sol#51)
- Transfer(address(0),account,amount) (tools.sol#182)
- _mint(owner(),40_000_000_000 * (10 ** 18)) (catchup_update_12-08-22-cc.sol#56)
Reentrancy in CatchUp.swapAndLiquify(uint256) (catchup_update_12-08-22-cc.sol#233-262):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(half,0,path,address(this),block.timestamp) (catchup_update_12-08-22-cc.sol#243-248)
- uniswapV2Router.addLiquidityETH{value: newBalance}(address(this),otherHalf,0,0,DEAD,block.timestamp) (catchup_update_12-08-22-cc.sol#252-259)
External calls sending eth:
- uniswapV2Router.addLiquidityETH{value: newBalance}(address(this),otherHalf,0,0,DEAD,block.timestamp) (catchup_update_12-08-22-cc.sol#252-259)
Event emitted after the call(s):
- SwapAndLiquify(half,newBalance,otherHalf) (catchup_update_12-08-22-cc.sol#261)
Apply the check-effects-interactions pattern.
Additional information: link
Context._msgData() (tools.sol#33-36) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version0.8.15 (catchup_update_12-08-22-cc.sol#5) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version0.8.15 (tools.sol#5) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.15 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 CatchUp.sendBNB(address,uint256) (catchup_update_12-08-22-cc.sol#80-85):
- (success) = recipient.call{value: amount}() (catchup_update_12-08-22-cc.sol#83)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function CatchUp.TrueBurn(uint256) (catchup_update_12-08-22-cc.sol#87-89) is not in mixedCase
Parameter CatchUp.updateBuyFees(uint256,uint256)._liquidityFeeOnBuy (catchup_update_12-08-22-cc.sol#103) is not in mixedCase
Parameter CatchUp.updateBuyFees(uint256,uint256)._teamFeeOnBuy (catchup_update_12-08-22-cc.sol#103) is not in mixedCase
Parameter CatchUp.updateSellFees(uint256,uint256)._liquidityFeeOnSell (catchup_update_12-08-22-cc.sol#114) is not in mixedCase
Parameter CatchUp.updateSellFees(uint256,uint256)._teamFeeOnSell (catchup_update_12-08-22-cc.sol#114) is not in mixedCase
Parameter CatchUp.changeTeamWallet(address)._teamWallet (catchup_update_12-08-22-cc.sol#132) is not in mixedCase
Variable CatchUp.DEAD (catchup_update_12-08-22-cc.sol#26) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (tools.sol#257) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (tools.sol#258) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (tools.sol#275) is not in mixedCase
Function IUniswapV2Router01.WETH() (tools.sol#295) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (tools.sol#34)" inContext (tools.sol#28-37)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (tools.sol#300) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (tools.sol#301)
Prevent variables from having similar names.
Additional information: link
CatchUp.setSwapTokensAtAmount(uint256) (catchup_update_12-08-22-cc.sol#264-267) uses literals with too many digits:
- require(bool,string)(newAmount > totalSupply() / 100000,SwapTokensAtAmount must be greater than 0.001% of total supply) (catchup_update_12-08-22-cc.sol#265)
CatchUp.slitherConstructorVariables() (catchup_update_12-08-22-cc.sol#8-273) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (catchup_update_12-08-22-cc.sol#26)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
CatchUp.DEAD (catchup_update_12-08-22-cc.sol#26) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
isExcludedFromFees(address) should be declared external:
- CatchUp.isExcludedFromFees(address) (catchup_update_12-08-22-cc.sol#99-101)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (tools.sol#59-62)
name() should be declared external:
- ERC20.name() (tools.sol#86-88)
symbol() should be declared external:
- ERC20.symbol() (tools.sol#90-92)
decimals() should be declared external:
- ERC20.decimals() (tools.sol#94-96)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (tools.sol#106-109)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (tools.sol#111-113)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (tools.sol#115-118)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (tools.sol#120-136)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (tools.sol#138-141)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (tools.sol#143-151)
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 Telegram link on the website
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
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
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Token is relatively young, but twitter if very old (probably it's fake).