Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384) sends eth to arbitrary user
Dangerous calls:
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountETHMarketing}() (BabyLunaInu.sol#359-362)
- (success,None) = address(buyBackFeeReceiver).call{gas: 30000,value: amountETHBuyBack}() (BabyLunaInu.sol#363-366)
- (success,None) = address(ecosystemFeeReceiver).call{gas: 30000,value: amountETHEco}() (BabyLunaInu.sol#367-370)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in BabyLunaInu._transferFrom(address,address,uint256) (BabyLunaInu.sol#230-279):
External calls:
- swapBack() (BabyLunaInu.sol#261)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (BabyLunaInu.sol#337-343)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountETHMarketing}() (BabyLunaInu.sol#359-362)
- (success,None) = address(buyBackFeeReceiver).call{gas: 30000,value: amountETHBuyBack}() (BabyLunaInu.sol#363-366)
- (success,None) = address(ecosystemFeeReceiver).call{gas: 30000,value: amountETHEco}() (BabyLunaInu.sol#367-370)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (BabyLunaInu.sol#375-382)
External calls sending eth:
- swapBack() (BabyLunaInu.sol#261)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountETHMarketing}() (BabyLunaInu.sol#359-362)
- (success,None) = address(buyBackFeeReceiver).call{gas: 30000,value: amountETHBuyBack}() (BabyLunaInu.sol#363-366)
- (success,None) = address(ecosystemFeeReceiver).call{gas: 30000,value: amountETHEco}() (BabyLunaInu.sol#367-370)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (BabyLunaInu.sol#375-382)
State variables written after the call(s):
- _gonBalances[sender] = _gonBalances[sender].sub(gonAmount) (BabyLunaInu.sol#264)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonAmountReceived) (BabyLunaInu.sol#269-271)
- gonAmountReceived = takeFee(sender,gonAmount,isSell) (BabyLunaInu.sol#266-268)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(feeAmount) (BabyLunaInu.sol#307-309)
Apply the check-effects-interactions pattern.
Additional information: link
BabyLunaInu.swapBack().success (BabyLunaInu.sol#359) is written in both
(success) = address(marketingFeeReceiver).call{gas: 30000,value: amountETHMarketing}() (BabyLunaInu.sol#359-362)
(success,None) = address(buyBackFeeReceiver).call{gas: 30000,value: amountETHBuyBack}() (BabyLunaInu.sol#363-366)
BabyLunaInu.swapBack().success (BabyLunaInu.sol#359) is written in both
(success,None) = address(buyBackFeeReceiver).call{gas: 30000,value: amountETHBuyBack}() (BabyLunaInu.sol#363-366)
(success,None) = address(ecosystemFeeReceiver).call{gas: 30000,value: amountETHEco}() (BabyLunaInu.sol#367-370)
BabyLunaInu.swapBack().success (BabyLunaInu.sol#359) is written in both
(success,None) = address(ecosystemFeeReceiver).call{gas: 30000,value: amountETHEco}() (BabyLunaInu.sol#367-370)
success = false (BabyLunaInu.sol#372)
Fix or remove the writes.
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.
Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.
Not a direct threat, but may indicate unreliable intentions of developer. Both name and ticker of current token are widespread, i.e. common across multiple tokens. This is slightly suspicious
Parameter BabyLunaInu.cooldownEnabled(bool,uint8)._status (BabyLunaInu.sol#154) is not in mixedCase
Parameter BabyLunaInu.cooldownEnabled(bool,uint8)._interval (BabyLunaInu.sol#154) is not in mixedCase
Parameter BabyLunaInu.setMaster(address)._master (BabyLunaInu.sol#178) is not in mixedCase
Parameter BabyLunaInu.setLP(address)._address (BabyLunaInu.sol#182) is not in mixedCase
Parameter BabyLunaInu.enableTransfer(address)._addr (BabyLunaInu.sol#439) is not in mixedCase
Parameter BabyLunaInu.setFeeExempt(address)._addr (BabyLunaInu.sol#443) is not in mixedCase
Parameter BabyLunaInu.checkFeeExempt(address)._addr (BabyLunaInu.sol#447) is not in mixedCase
Parameter BabyLunaInu.setMaxWalletExempt(address)._addr (BabyLunaInu.sol#451) is not in mixedCase
Parameter BabyLunaInu.checkMaxWalletExempt(address)._addr (BabyLunaInu.sol#455) is not in mixedCase
Parameter BabyLunaInu.setMaxWalletToken(uint256,uint256)._num (BabyLunaInu.sol#459) is not in mixedCase
Parameter BabyLunaInu.setMaxWalletToken(uint256,uint256)._denom (BabyLunaInu.sol#459) is not in mixedCase
Parameter BabyLunaInu.setSwapBackSettings(bool,uint256,uint256)._enabled (BabyLunaInu.sol#483) is not in mixedCase
Parameter BabyLunaInu.setSwapBackSettings(bool,uint256,uint256)._num (BabyLunaInu.sol#484) is not in mixedCase
Parameter BabyLunaInu.setSwapBackSettings(bool,uint256,uint256)._denom (BabyLunaInu.sol#485) is not in mixedCase
Parameter BabyLunaInu.setFees(uint256,uint256,uint256,uint256,uint256)._ecosystemFee (BabyLunaInu.sol#509) is not in mixedCase
Parameter BabyLunaInu.setFees(uint256,uint256,uint256,uint256,uint256)._liquidityFee (BabyLunaInu.sol#510) is not in mixedCase
Parameter BabyLunaInu.setFees(uint256,uint256,uint256,uint256,uint256)._buyBackFee (BabyLunaInu.sol#511) is not in mixedCase
Parameter BabyLunaInu.setFees(uint256,uint256,uint256,uint256,uint256)._marketingFee (BabyLunaInu.sol#512) is not in mixedCase
Parameter BabyLunaInu.setFees(uint256,uint256,uint256,uint256,uint256)._feeDenominator (BabyLunaInu.sol#513) is not in mixedCase
Parameter BabyLunaInu.setFeeReceivers(address,address,address,address)._autoLiquidityReceiver (BabyLunaInu.sol#525) is not in mixedCase
Parameter BabyLunaInu.setFeeReceivers(address,address,address,address)._ecosystemFeeReceiver (BabyLunaInu.sol#526) is not in mixedCase
Parameter BabyLunaInu.setFeeReceivers(address,address,address,address)._marketingFeeReceiver (BabyLunaInu.sol#527) is not in mixedCase
Parameter BabyLunaInu.setFeeReceivers(address,address,address,address)._buyBackFeeReceiver (BabyLunaInu.sol#528) is not in mixedCase
Variable BabyLunaInu._isFeeExempt (BabyLunaInu.sol#44) is not in mixedCase
Variable BabyLunaInu._isMaxWalletExempt (BabyLunaInu.sol#45) is not in mixedCase
Variable BabyLunaInu.DEAD (BabyLunaInu.sol#75) is not in mixedCase
Variable BabyLunaInu.ZERO (BabyLunaInu.sol#76) is not in mixedCase
Variable BabyLunaInu.BuyTaxDuration (BabyLunaInu.sol#103) is not in mixedCase
Variable BabyLunaInu.SellTaxDuration (BabyLunaInu.sol#104) is not in mixedCase
Variable BabyLunaInu.LaunchTimestamp (BabyLunaInu.sol#292) is not in mixedCase
Function IDEXRouter.WETH() (IDEXRouter.sol#7) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (IDEXRouter.sol#12) is too similar to IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (IDEXRouter.sol#13)
Prevent variables from having similar names.
Additional information: link
BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384) performs a multiplication on the result of a division:
-contractTokenBalance = _gonBalances[address(this)].div(_gonsPerFragment) (BabyLunaInu.sol#322-324)
-amountToLiquify = contractTokenBalance.mul(dynamicLiquidityFee).div(totalFee).div(2) (BabyLunaInu.sol#325-328)
BabyLunaInu.setMaxWalletToken(uint256,uint256) (BabyLunaInu.sol#459-464) performs a multiplication on the result of a division:
-gonMaxWallet = TOTAL_GONS.div(_denom).mul(_num) (BabyLunaInu.sol#463)
BabyLunaInu.setSwapBackSettings(bool,uint256,uint256) (BabyLunaInu.sol#482-489) performs a multiplication on the result of a division:
-gonSwapThreshold = TOTAL_GONS.div(_denom).mul(_num) (BabyLunaInu.sol#488)
BabyLunaInu.getLiquidityBacking(uint256) (BabyLunaInu.sol#573-581) performs a multiplication on the result of a division:
-liquidityBalance = _gonBalances[pair].div(_gonsPerFragment) (BabyLunaInu.sol#578)
-accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply()) (BabyLunaInu.sol#579-580)
BabyLunaInu.slitherConstructorVariables() (BabyLunaInu.sol#28-593) performs a multiplication on the result of a division:
-gonMaxWallet = TOTAL_GONS.div(100).mul(2) (BabyLunaInu.sol#65)
Consider ordering multiplication before division.
Additional information: link
BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384) ignores return value by router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (BabyLunaInu.sol#375-382)
Ensure that all the return values of the function calls are used.
Additional information: link
BabyLunaInu.setMaster(address) (BabyLunaInu.sol#178-180) should emit an event for:
- master = _master (BabyLunaInu.sol#179)
Emit an event for critical parameter changes.
Additional information: link
BabyLunaInu.changeAntiDumpPercentage(uint256) (BabyLunaInu.sol#160-163) should emit an event for:
- antiDumpPercentage = percentage (BabyLunaInu.sol#162)
BabyLunaInu.changeAntiSniperPercentage(uint256) (BabyLunaInu.sol#165-168) should emit an event for:
- antiSniperPercentage = percentage (BabyLunaInu.sol#167)
BabyLunaInu.setMaxWalletToken(uint256,uint256) (BabyLunaInu.sol#459-464) should emit an event for:
- gonMaxWallet = TOTAL_GONS.div(_denom).mul(_num) (BabyLunaInu.sol#463)
BabyLunaInu.setSwapBackSettings(bool,uint256,uint256) (BabyLunaInu.sol#482-489) should emit an event for:
- gonSwapThreshold = TOTAL_GONS.div(_denom).mul(_num) (BabyLunaInu.sol#488)
BabyLunaInu.setTargetLiquidity(uint256,uint256) (BabyLunaInu.sol#491-494) should emit an event for:
- targetLiquidity = target (BabyLunaInu.sol#492)
- targetLiquidityDenominator = accuracy (BabyLunaInu.sol#493)
BabyLunaInu.setFees(uint256,uint256,uint256,uint256,uint256) (BabyLunaInu.sol#508-522) should emit an event for:
- ecosystemFee = _ecosystemFee (BabyLunaInu.sol#515)
- liquidityFee = _liquidityFee (BabyLunaInu.sol#516)
- buyBackFee = _buyBackFee (BabyLunaInu.sol#517)
- marketingFee = _marketingFee (BabyLunaInu.sol#518)
- totalFee = ecosystemFee.add(liquidityFee).add(marketingFee).add(buyBackFee) (BabyLunaInu.sol#519)
- feeDenominator = _feeDenominator (BabyLunaInu.sol#520)
Emit an event for critical parameter changes.
Additional information: link
BabyLunaInu.setMaster(address)._master (BabyLunaInu.sol#178) lacks a zero-check on :
- master = _master (BabyLunaInu.sol#179)
BabyLunaInu.setFeeReceivers(address,address,address,address)._autoLiquidityReceiver (BabyLunaInu.sol#525) lacks a zero-check on :
- autoLiquidityReceiver = _autoLiquidityReceiver (BabyLunaInu.sol#530)
BabyLunaInu.setFeeReceivers(address,address,address,address)._ecosystemFeeReceiver (BabyLunaInu.sol#526) lacks a zero-check on :
- ecosystemFeeReceiver = _ecosystemFeeReceiver (BabyLunaInu.sol#531)
BabyLunaInu.setFeeReceivers(address,address,address,address)._marketingFeeReceiver (BabyLunaInu.sol#527) lacks a zero-check on :
- marketingFeeReceiver = _marketingFeeReceiver (BabyLunaInu.sol#532)
BabyLunaInu.setFeeReceivers(address,address,address,address)._buyBackFeeReceiver (BabyLunaInu.sol#528) lacks a zero-check on :
- buyBackFeeReceiver = _buyBackFeeReceiver (BabyLunaInu.sol#533)
BabyLunaInu.clearStuckBalance(uint256,address).adr (BabyLunaInu.sol#544) lacks a zero-check on :
- address(adr).transfer((amountETH * amountPercentage) / 100) (BabyLunaInu.sol#546-548)
Check that the address is not zero.
Additional information: link
BabyLunaInu.constructor() (BabyLunaInu.sol#122-152) uses literals with too many digits:
- autoLiquidityReceiver = 0x000000000000000000000000000000000000dEaD (BabyLunaInu.sol#146)
BabyLunaInu.slitherConstructorVariables() (BabyLunaInu.sol#28-593) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (BabyLunaInu.sol#75)
BabyLunaInu.slitherConstructorVariables() (BabyLunaInu.sol#28-593) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (BabyLunaInu.sol#76)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
BabyLunaInu.MAX_SUPPLY (BabyLunaInu.sol#114) is never used in BabyLunaInu (BabyLunaInu.sol#28-593)
SafeMathInt.MAX_INT256 (SafeMathInt.sol#6) is never used in SafeMathInt (SafeMathInt.sol#4-39)
Remove unused state variables.
Additional information: link
BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384) has external calls inside a loop: path[1] = router.WETH() (BabyLunaInu.sol#333)
BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384) has external calls inside a loop: router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (BabyLunaInu.sol#337-343)
BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384) has external calls inside a loop: (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountETHMarketing}() (BabyLunaInu.sol#359-362)
BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384) has external calls inside a loop: (success,None) = address(buyBackFeeReceiver).call{gas: 30000,value: amountETHBuyBack}() (BabyLunaInu.sol#363-366)
BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384) has external calls inside a loop: (success,None) = address(ecosystemFeeReceiver).call{gas: 30000,value: amountETHEco}() (BabyLunaInu.sol#367-370)
BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384) has external calls inside a loop: router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (BabyLunaInu.sol#375-382)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in BabyLunaInu.constructor() (BabyLunaInu.sol#122-152):
External calls:
- pair = IDEXFactory(router.factory()).createPair(router.WETH(),address(this)) (BabyLunaInu.sol#125-128)
State variables written after the call(s):
- _allowedFragments[address(this)][address(router)] = uint256(- 1) (BabyLunaInu.sol#129)
- _gonBalances[msg.sender] = TOTAL_GONS (BabyLunaInu.sol#133)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (BabyLunaInu.sol#134)
- _isFeeExempt[msg.sender] = true (BabyLunaInu.sol#137)
- _isFeeExempt[address(this)] = true (BabyLunaInu.sol#138)
- _isMaxWalletExempt[pair] = true (BabyLunaInu.sol#140)
- _isMaxWalletExempt[DEAD] = true (BabyLunaInu.sol#141)
- _isMaxWalletExempt[address(this)] = true (BabyLunaInu.sol#142)
- _isMaxWalletExempt[msg.sender] = true (BabyLunaInu.sol#143)
- _isMaxWalletExempt[owner()] = true (BabyLunaInu.sol#144)
- _totalSupply = INITIAL_FRAGMENTS_SUPPLY (BabyLunaInu.sol#132)
- autoLiquidityReceiver = 0x000000000000000000000000000000000000dEaD (BabyLunaInu.sol#146)
- buyBackFeeReceiver = 0x6B6DDaf0827Ec6b147b55D838cd86B6B3c6fD0ad (BabyLunaInu.sol#149)
- ecosystemFeeReceiver = 0x23DA42142c2Da734036a560b2abF009D655AEab0 (BabyLunaInu.sol#148)
- initialDistributionFinished = false (BabyLunaInu.sol#136)
- marketingFeeReceiver = 0xB8D3803Bf4f3377e1d962d9092270c03188C8277 (BabyLunaInu.sol#147)
- pairContract = InterfaceLP(pair) (BabyLunaInu.sol#130)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in BabyLunaInu._transferFrom(address,address,uint256) (BabyLunaInu.sol#230-279):
External calls:
- swapBack() (BabyLunaInu.sol#261)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (BabyLunaInu.sol#337-343)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountETHMarketing}() (BabyLunaInu.sol#359-362)
- (success,None) = address(buyBackFeeReceiver).call{gas: 30000,value: amountETHBuyBack}() (BabyLunaInu.sol#363-366)
- (success,None) = address(ecosystemFeeReceiver).call{gas: 30000,value: amountETHEco}() (BabyLunaInu.sol#367-370)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (BabyLunaInu.sol#375-382)
External calls sending eth:
- swapBack() (BabyLunaInu.sol#261)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountETHMarketing}() (BabyLunaInu.sol#359-362)
- (success,None) = address(buyBackFeeReceiver).call{gas: 30000,value: amountETHBuyBack}() (BabyLunaInu.sol#363-366)
- (success,None) = address(ecosystemFeeReceiver).call{gas: 30000,value: amountETHEco}() (BabyLunaInu.sol#367-370)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (BabyLunaInu.sol#375-382)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount.div(_gonsPerFragment)) (BabyLunaInu.sol#310)
- gonAmountReceived = takeFee(sender,gonAmount,isSell) (BabyLunaInu.sol#266-268)
- Transfer(sender,recipient,gonAmountReceived.div(_gonsPerFragment)) (BabyLunaInu.sol#273-277)
Reentrancy in BabyLunaInu.constructor() (BabyLunaInu.sol#122-152):
External calls:
- pair = IDEXFactory(router.factory()).createPair(router.WETH(),address(this)) (BabyLunaInu.sol#125-128)
Event emitted after the call(s):
- Transfer(address(0x0),msg.sender,_totalSupply) (BabyLunaInu.sol#151)
Apply the check-effects-interactions pattern.
Additional information: link
BabyLunaInu._transferFrom(address,address,uint256) (BabyLunaInu.sol#230-279) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(cooldownTimer[recipient] < block.timestamp,buy Cooldown exists) (BabyLunaInu.sol#237)
BabyLunaInu.takeFee(address,uint256,bool) (BabyLunaInu.sol#294-313) uses timestamp for comparisons
Dangerous comparisons:
- isSell && antiDump && block.timestamp < LaunchTimestamp + SellTaxDuration (BabyLunaInu.sol#300)
- antiSniper && block.timestamp < LaunchTimestamp + BuyTaxDuration (BabyLunaInu.sol#303)
Avoid relying on block.timestamp.
Additional information: link
BabyLunaInu.swapping() (BabyLunaInu.sol#92-96) has costly operations inside a loop:
- inSwap = true (BabyLunaInu.sol#93)
BabyLunaInu.swapping() (BabyLunaInu.sol#92-96) has costly operations inside a loop:
- inSwap = false (BabyLunaInu.sol#95)
Use a local variable to hold the loop computation result.
Additional information: link
BabyLunaInu.transferToAddressETH(address,uint256) (BabyLunaInu.sol#551-555) is never used and should be removed
SafeMath.mod(uint256,uint256) (SafeMath.sol#53-56) is never used and should be removed
SafeMathInt.abs(int256) (SafeMathInt.sol#34-37) is never used and should be removed
SafeMathInt.add(int256,int256) (SafeMathInt.sol#28-32) is never used and should be removed
SafeMathInt.div(int256,int256) (SafeMathInt.sol#16-20) is never used and should be removed
SafeMathInt.mul(int256,int256) (SafeMathInt.sol#8-14) is never used and should be removed
SafeMathInt.sub(int256,int256) (SafeMathInt.sol#22-26) is never used and should be removed
Remove unused functions.
Additional information: link
BabyLunaInu.totalFee (BabyLunaInu.sol#71-72) is set pre-construction with a non-constant function or state variable:
- ecosystemFee.add(liquidityFee).add(marketingFee).add(buyBackFee)
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 version^0.7.4 (BabyLunaInu.sol#17) allows old versions
Pragma version^0.7.4 (ERC20Detailed.sol#2) allows old versions
Pragma version^0.7.4 (IDEXFactory.sol#2) allows old versions
Pragma version^0.7.4 (IDEXRouter.sol#2) allows old versions
Pragma version^0.7.4 (IERC20.sol#2) allows old versions
Pragma version^0.7.4 (InterfaceLP.sol#2) allows old versions
Pragma version^0.7.4 (Ownable.sol#2) allows old versions
Pragma version^0.7.4 (SafeMath.sol#2) allows old versions
Pragma version^0.7.4 (SafeMathInt.sol#2) allows old versions
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 BabyLunaInu.swapBack() (BabyLunaInu.sol#315-384):
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountETHMarketing}() (BabyLunaInu.sol#359-362)
- (success,None) = address(buyBackFeeReceiver).call{gas: 30000,value: amountETHBuyBack}() (BabyLunaInu.sol#363-366)
- (success,None) = address(ecosystemFeeReceiver).call{gas: 30000,value: amountETHEco}() (BabyLunaInu.sol#367-370)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
BabyLunaInu.BuyTaxDuration (BabyLunaInu.sol#103) should be constant
BabyLunaInu.DEAD (BabyLunaInu.sol#75) should be constant
BabyLunaInu.SellTaxDuration (BabyLunaInu.sol#104) should be constant
BabyLunaInu.ZERO (BabyLunaInu.sol#76) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
cooldownEnabled(bool,uint8) should be declared external:
- BabyLunaInu.cooldownEnabled(bool,uint8) (BabyLunaInu.sol#154-158)
changeAntiDumpPercentage(uint256) should be declared external:
- BabyLunaInu.changeAntiDumpPercentage(uint256) (BabyLunaInu.sol#160-163)
changeAntiSniperPercentage(uint256) should be declared external:
- BabyLunaInu.changeAntiSniperPercentage(uint256) (BabyLunaInu.sol#165-168)
rescueToken(address,uint256) should be declared external:
- BabyLunaInu.rescueToken(address,uint256) (BabyLunaInu.sol#536-542)
name() should be declared external:
- ERC20Detailed.name() (ERC20Detailed.sol#22-24)
symbol() should be declared external:
- ERC20Detailed.symbol() (ERC20Detailed.sol#26-28)
decimals() should be declared external:
- ERC20Detailed.decimals() (ERC20Detailed.sol#30-32)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (Ownable.sol#31-34)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (Ownable.sol#36-38)
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