PancakeHunny is the newest DeFi yield aggregator built on BSC, our aim is to provide users with the most convenient way of yield farming, at the same time, optimising their returns and creating a fun and engaging experience for all users through our integrated games such as HunnyPoker. We are constantly curating the best yield farms for our users.
UniswapV2OracleLibrary.currentBlockTimestamp() (#1950-1952) uses a weak PRNG: "uint32(block.timestamp % 2 ** 32) (#1951)"
Do not use block.timestamp, now or blockhash as a source of randomness
Additional information: link
Reentrancy in CakeFlipVault.withdrawAll() (#4626-4632):
External calls:
- withdraw(_withdraw) (#4629)
- returndata = address(token).functionCall(data,SafeBEP20: low-level call failed) (#657)
- rewardsToken.deposit(cakeAmount) (#4660)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- CAKE_MASTER_CHEF.withdraw(poolId,amount) (#4608)
- minter.mintFor(address(stakingToken),withdrawalFee.sub(performanceFee),performanceFee,msg.sender,_depositedAt) (#4615)
- stakingToken.safeTransfer(msg.sender,amount) (#4620)
- getReward() (#4631)
- returndata = address(token).functionCall(data,SafeBEP20: low-level call failed) (#657)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- rewardsToken.withdraw(reward) (#4638)
- minter.mintFor(CAKE,0,performanceFee,msg.sender,depositedAt[msg.sender]) (#4643)
- IBEP20(CAKE).safeTransfer(msg.sender,cakeBalance) (#4647)
External calls sending eth:
- withdraw(_withdraw) (#4629)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- getReward() (#4631)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
State variables written after the call(s):
- getReward() (#4631)
- _status = _ENTERED (#3416)
- _status = _NOT_ENTERED (#3422)
- getReward() (#4631)
- lastUpdateTime = lastTimeRewardApplicable() (#4767)
- getReward() (#4631)
- rewardPerTokenStored = rewardPerToken() (#4766)
- getReward() (#4631)
- rewards[msg.sender] = 0 (#4637)
- rewards[account] = earned(account) (#4769)
- getReward() (#4631)
- userRewardPerTokenPaid[account] = rewardPerTokenStored (#4770)
Reentrancy in HunnyPool.withdrawAll() (#3827-3833):
External calls:
- withdraw(_withdraw) (#3830)
- returndata = address(token).functionCall(data,SafeBEP20: low-level call failed) (#657)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- stakingToken.safeTransfer(msg.sender,amount) (#3823)
- getReward() (#3832)
- returndata = address(token).functionCall(data,SafeBEP20: low-level call failed) (#657)
- (rewardHunny) = ROUTER.removeLiquidity(address(stakingToken),wbnb,amount,0,0,address(this),block.timestamp) (#3847-3849)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- IBEP20(ROUTER.WETH()).safeTransfer(msg.sender,reward) (#3840)
- ROUTER.swapExactTokensForTokens(rewardHunny,0,path,address(this),block.timestamp) (#3853)
External calls sending eth:
- withdraw(_withdraw) (#3830)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- getReward() (#3832)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
State variables written after the call(s):
- getReward() (#3832)
- _status = _ENTERED (#3416)
- _status = _NOT_ENTERED (#3422)
- getReward() (#3832)
- lastUpdateTime = lastTimeRewardApplicable() (#3950)
- getReward() (#3832)
- rewardPerTokenStored = rewardPerToken() (#3949)
- getReward() (#3832)
- rewards[msg.sender] = 0 (#3838)
- rewards[account] = earned(account) (#3952)
- getReward() (#3832)
- userRewardPerTokenPaid[account] = rewardPerTokenStored (#3953)
Apply the check-effects-interactions pattern.
Additional information: link
Deployer2.emergencyTransfer() (#4980-4983) ignores return value by deployer1.hunny().transfer(owner(),deployer1.hunny().balanceOf(address(this))) (#4982)
HunnyMinter.mintForLottery() (#3003-3011) ignores return value by hunny.transfer(lotteryPool,amountHunny) (#3007)
Deployer2.step4_setupLiquidityReward(uint256) (#4939-4965) ignores return value by IBEP20(presale.flipToken()).transfer(address(deployer1.hunnyPool()),rewardAmount) (#4958)
HunnyMinter.mint(uint256,address) (#2989-2999) ignores return value by hunny.transfer(to,amount) (#2991)
PancakeSwap.generateFlipToken() (#2715-2729) ignores return value by IBEP20(_hunny).transfer(msg.sender,IBEP20(_hunny).balanceOf(address(this))) (#2727)
Deployer2.step4_setupLiquidityReward(uint256) (#4939-4965) ignores return value by deployer1.hunny().transfer(owner(),deployer1.hunny().balanceOf(address(this))) (#4951)
PancakeSwap.generateFlipToken() (#2715-2729) ignores return value by IBEP20(_wbnb).transfer(msg.sender,IBEP20(_wbnb).balanceOf(address(this))) (#2728)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
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.
HunnyPool.rewardPerToken() (#3783-3791) uses a dangerous strict equality:
- _totalSupply == 0 (#3784)
HunnyToken._writeCheckpoint(address,uint32,uint256,uint256) (#1293-1311) uses a dangerous strict equality:
- nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber (#1303)
CakeVault.balanceOf(address) (#4277-4280) uses a dangerous strict equality:
- totalShares == 0 (#4278)
CakeFlipVault.rewardPerToken() (#4565-4573) uses a dangerous strict equality:
- _totalSupply == 0 (#4566)
CakeVault.priceShare() (#4333-4336) uses a dangerous strict equality:
- totalShares == 0 (#4334)
HunnyPool.apy() (#3763-3777) uses a dangerous strict equality:
- __totalSupply == 0 (#3766)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
RewardsDistributionRecipient.setRewardsDistribution(address) (#3476-3478) should emit an event for:
- rewardsDistribution = _rewardsDistribution (#3477)
Emit an event for critical parameter changes.
Additional information: link
HunnyBNBPool.WBNB (#4019) is never used in HunnyBNBPool (#4013-4187)
HunnyBNBPool.CAKE (#4018) is never used in HunnyBNBPool (#4013-4187)
StrategyHelperV1.BUSD (#3167) is never used in StrategyHelperV1 (#3163-3325)
HunnyMinter.WBNB (#2848) is never used in HunnyMinter (#2842-3012)
Remove unused state variables.
Additional information: link
Address.isContract(address) (#429-440) uses assembly
- INLINE ASM (#436-438)
HunnyToken.getChainId() (#1318-1322) uses assembly
- INLINE ASM (#1320)
Address._functionCallWithValue(address,bytes,uint256,string) (#537-563) uses assembly
- INLINE ASM (#555-558)
Do not use evm assembly.
Additional information: link
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#537-563):
- (success,returndata) = target.call{value: weiValue}(data) (#546)
Low level call in Address.sendValue(address,uint256) (#458-464):
- (success) = recipient.call{value: amount}() (#462)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Redundant expression "this (#219)" inContext (#209-222)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Contract ownership is semi-renounced (passed to a contract)
HunnyPool.withdrawableBalanceOf(address) (#3729-3750) performs a multiplication on the result of a division:
-lockedRatio = (soldInPresale.sub(hunnyNewMint)).mul(1e18).div(soldInPresale) (#3746)
-lockedBalance = _presaleBalance[account].mul(lockedRatio).div(1e18) (#3747)
StrategyHelperV1.tvl(address,uint256) (#3255-3279) performs a multiplication on the result of a division:
-hunnyBalance.mul(price).div(1e18).mul(2) (#3267)
StrategyHelperV1.tvlInBNB(address,uint256) (#3281-3303) performs a multiplication on the result of a division:
-bnb = WBNB.balanceOf(address(_flip)).mul(amount).div(IBEP20(_flip).totalSupply()) (#3296)
-bnb.mul(2) (#3297)
StrategyHelperV1.tvlInBNB(address,uint256) (#3281-3303) performs a multiplication on the result of a division:
-hunnyBalance.mul(priceInBNB).div(1e18).mul(2) (#3292)
StrategyHelperV1.tvlInBNB(address,uint256) (#3281-3303) performs a multiplication on the result of a division:
-balanceToken0.mul(price).div(1e18).mul(2) (#3302)
FullMath.fullDiv(uint256,uint256,uint256) (#1520-1539) performs a multiplication on the result of a division:
-l /= pow2 (#1527)
-l * r (#1538)
FullMath.fullDiv(uint256,uint256,uint256) (#1520-1539) performs a multiplication on the result of a division:
-d /= pow2 (#1526)
-r *= 2 - d * r (#1537)
CakeFlipVault._notifyRewardAmount(uint256) (#4730-4749) performs a multiplication on the result of a division:
-rewardRate = reward.div(rewardsDuration) (#4732)
-leftover = remaining.mul(rewardRate) (#4735)
HunnyPool.withdrawableBalanceOf(address) (#3729-3750) performs a multiplication on the result of a division:
-soldInPresale = IPresale(presaleContract).totalBalance().div(2).mul(3) (#3736)
HunnyPool.notifyRewardAmount(uint256) (#3913-3932) performs a multiplication on the result of a division:
-rewardRate = reward.div(rewardsDuration) (#3915)
-leftover = remaining.mul(rewardRate) (#3918)
StrategyHelperV1.tvl(address,uint256) (#3255-3279) performs a multiplication on the result of a division:
-balanceToken0.mul(price_scope_1).div(1e18).mul(bnbPriceInUSD()).div(1e18).mul(2) (#3278)
FullMath.fullDiv(uint256,uint256,uint256) (#1520-1539) performs a multiplication on the result of a division:
-d /= pow2 (#1526)
-r *= 2 - d * r (#1533)
HunnyPool.apy() (#3763-3777) performs a multiplication on the result of a division:
-rewardPerTokenPerSecond = rewardRate.mul(tokenDecimals).div(__totalSupply) (#3770)
-_bnb = rewardPerTokenPerSecond.mul(31536000).mul(flipPrice).div(hunnyPrice) (#3776)
StrategyHelperV1.tvl(address,uint256) (#3255-3279) performs a multiplication on the result of a division:
-bnb.mul(price_scope_0).div(1e18).mul(2) (#3273)
CakeFlipVault.apy() (#4543-4559) performs a multiplication on the result of a division:
-dailyAPY = helper.compoundingAPY(poolId,31536000).div(365) (#4544)
-_usd = dailyAPY.mul(cakeAPY).div(cakeDailyAPY) (#4556)
FullMath.fullDiv(uint256,uint256,uint256) (#1520-1539) performs a multiplication on the result of a division:
-d /= pow2 (#1526)
-r *= 2 - d * r (#1530)
FullMath.fullDiv(uint256,uint256,uint256) (#1520-1539) performs a multiplication on the result of a division:
-d /= pow2 (#1526)
-r *= 2 - d * r (#1531)
FullMath.fullDiv(uint256,uint256,uint256) (#1520-1539) performs a multiplication on the result of a division:
-d /= pow2 (#1526)
-r *= 2 - d * r (#1535)
FullMath.fullDiv(uint256,uint256,uint256) (#1520-1539) performs a multiplication on the result of a division:
-d /= pow2 (#1526)
-r *= 2 - d * r (#1532)
FullMath.fullDiv(uint256,uint256,uint256) (#1520-1539) performs a multiplication on the result of a division:
-d /= pow2 (#1526)
-r *= 2 - d * r (#1534)
FullMath.fullDiv(uint256,uint256,uint256) (#1520-1539) performs a multiplication on the result of a division:
-d /= pow2 (#1526)
-r *= 2 - d * r (#1536)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in HunnyMinter.mintForLottery() (#3003-3011):
External calls:
- hunny.mint(amountHunny) (#3006)
- hunny.transfer(lotteryPool,amountHunny) (#3007)
State variables written after the call(s):
- lastLotteryMintBlock = block.number (#3010)
Reentrancy in HunnyBNBPool._depositTo(uint256,address) (#4134-4146):
External calls:
- token.safeTransferFrom(msg.sender,address(this),_amount) (#4135)
- mintHunny(amount,duration) (#4140)
- minter.mintForHunnyBNB(amount,duration,msg.sender) (#4173)
State variables written after the call(s):
- _shares[_to] = _shares[_to].add(_amount) (#4144)
- depositedAt[_to] = block.timestamp (#4145)
Reentrancy in CakeFlipVault._deposit(uint256,address) (#4584-4594):
External calls:
- stakingToken.safeTransferFrom(msg.sender,address(this),amount) (#4589)
- CAKE_MASTER_CHEF.deposit(poolId,amount) (#4590)
- _harvest() (#4593)
- rewardsToken.deposit(cakeAmount) (#4660)
State variables written after the call(s):
- _harvest() (#4593)
- lastUpdateTime = lastTimeRewardApplicable() (#4767)
- lastUpdateTime = block.timestamp (#4746)
- _harvest() (#4593)
- periodFinish = block.timestamp.add(rewardsDuration) (#4747)
- _harvest() (#4593)
- rewardPerTokenStored = rewardPerToken() (#4766)
- _harvest() (#4593)
- rewardRate = reward.div(rewardsDuration) (#4732)
- rewardRate = reward.add(leftover).div(rewardsDuration) (#4736)
- _harvest() (#4593)
- rewards[account] = earned(account) (#4769)
- _harvest() (#4593)
- userRewardPerTokenPaid[account] = rewardPerTokenStored (#4770)
Reentrancy in CakeFlipVault.withdraw(uint256) (#4604-4624):
External calls:
- CAKE_MASTER_CHEF.withdraw(poolId,amount) (#4608)
- minter.mintFor(address(stakingToken),withdrawalFee.sub(performanceFee),performanceFee,msg.sender,_depositedAt) (#4615)
- stakingToken.safeTransfer(msg.sender,amount) (#4620)
- _harvest() (#4623)
- rewardsToken.deposit(cakeAmount) (#4660)
State variables written after the call(s):
- _harvest() (#4623)
- lastUpdateTime = lastTimeRewardApplicable() (#4767)
- lastUpdateTime = block.timestamp (#4746)
- _harvest() (#4623)
- periodFinish = block.timestamp.add(rewardsDuration) (#4747)
- _harvest() (#4623)
- rewardPerTokenStored = rewardPerToken() (#4766)
- _harvest() (#4623)
- rewardRate = reward.div(rewardsDuration) (#4732)
- rewardRate = reward.add(leftover).div(rewardsDuration) (#4736)
- _harvest() (#4623)
- rewards[account] = earned(account) (#4769)
- _harvest() (#4623)
- userRewardPerTokenPaid[account] = rewardPerTokenStored (#4770)
Apply the check-effects-interactions pattern.
Additional information: link
UniswapV2Library.getAmountsOut(address,uint256,address[]).i (#1919) is a local variable never initialized
HunnyPool.info(address).poolAPY (#3876) is a local variable never initialized
CakeFlipVault.info(address).poolAPY (#4683) is a local variable never initialized
HunnyBNBPool.info(address).userInfo (#4100) is a local variable never initialized
CakeVault.info(address).profit (#4314) is a local variable never initialized
HunnyBNBPool.info(address).poolAPY (#4115) is a local variable never initialized
CakeVault.info(address).poolAPY (#4323) is a local variable never initialized
CakeVault.info(address).userInfo (#4308) is a local variable never initialized
HunnyPool.info(address).profit (#3867) is a local variable never initialized
CakeFlipVault.info(address).profit (#4674) is a local variable never initialized
HunnyPool.info(address).userInfo (#3861) is a local variable never initialized
CakeFlipVault.info(address).userInfo (#4668) is a local variable never initialized
HunnyBNBPool.info(address).profit (#4106) 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
HunnyMinter.constructor(address,address,address,address,address) (#2873-2885) ignores return value by hunny.approve(hunnyPool,uint256(~ 0)) (#2884)
HunnyMinter.mint(uint256,address) (#2989-2999) ignores return value by hunny.mint(hunnyForDev) (#2994)
PancakeSwap.swapToken(address,uint256,address) (#2695-2713) ignores return value by ROUTER.swapExactTokensForTokens(_amount,0,path,address(this),block.timestamp) (#2712)
HunnyMinter.mint(uint256,address) (#2989-2999) ignores return value by hunny.mint(amount) (#2990)
HunnyPool._flipToWBNB(uint256) (#3845-3856) ignores return value by ROUTER.swapExactTokensForTokens(rewardHunny,0,path,address(this),block.timestamp) (#3853)
HunnyMinter.mintForLottery() (#3003-3011) ignores return value by hunny.mint(amountHunny) (#3006)
PancakeSwap._flipToHunnyBNBFlip(address,uint256) (#2675-2693) ignores return value by ROUTER.removeLiquidity(_token0,_token1,amount,0,0,address(this),block.timestamp) (#2681)
Deployer2.step4_setupLiquidityReward(uint256) (#4939-4965) ignores return value by router.addLiquidityETH{value: bnbAmount}(token,tokenAmount,0,0,address(this),block.timestamp) (#4948)
Ensure that all the return values of the function calls are used.
Additional information: link
HunnyMinter.constructor(address,address,address,address,address)._hunny (#2873) shadows:
- PancakeSwap._hunny (#2648) (state variable)
BEP20.allowance(address,address).owner (#2204) shadows:
- Ownable.owner() (#259-261) (function)
CakeFlipVault.tvlReward().earned (#4539) shadows:
- CakeFlipVault.earned(address) (#4575-4577) (function)
BEP20Virtual.constructor(string,string).symbol (#725) shadows:
- BEP20Virtual.symbol() (#755-757) (function)
- IBEP20.symbol() (#321) (function)
BEP20Virtual._approve(address,address,uint256).owner (#961) shadows:
- Ownable.owner() (#259-261) (function)
BEP20Virtual.allowance(address,address).owner (#789) shadows:
- Ownable.owner() (#259-261) (function)
BEP20.constructor(string,string).symbol (#2140) shadows:
- BEP20.symbol() (#2170-2172) (function)
- IBEP20.symbol() (#321) (function)
BEP20._approve(address,address,uint256).owner (#2376) shadows:
- Ownable.owner() (#259-261) (function)
CakeFlipVault.tvl().earned (#4527) shadows:
- CakeFlipVault.earned(address) (#4575-4577) (function)
BEP20Virtual.constructor(string,string).name (#725) shadows:
- BEP20Virtual.name() (#741-743) (function)
- IBEP20.name() (#326) (function)
BEP20.constructor(string,string).name (#2140) shadows:
- BEP20.name() (#2156-2158) (function)
- IBEP20.name() (#326) (function)
HunnyMinter.transferHunnyOwner(address)._owner (#2887) shadows:
- Ownable._owner (#243) (state variable)
Rename the local variables that shadow another component.
Additional information: link
HunnyMinter.setPerformanceFee(uint256) (#2896-2899) should emit an event for:
- PERFORMANCE_FEE = _fee (#2898)
HunnyMinter.setWithdrawalFeeFreePeriod(uint256) (#2901-2903) should emit an event for:
- WITHDRAWAL_FEE_FREE_PERIOD = _period (#2902)
HunnyMinter.setHunnyPerProfitBNB(uint256) (#2913-2915) should emit an event for:
- hunnyPerProfitBNB = _ratio (#2914)
HunnyMinter.setHunnyPerHunnyBNBFlip(uint256) (#2917-2919) should emit an event for:
- hunnyPerHunnyBNBFlip = _hunnyPerHunnyBNBFlip (#2918)
HunnyMinter.setHunnyPerBlockLottery(uint256) (#2921-2923) should emit an event for:
- hunnyPerBlockLottery = _hunnyPerBlockLottery (#2922)
HunnyMinter.setWithdrawalFee(uint256) (#2891-2894) should emit an event for:
- WITHDRAWAL_FEE = _fee (#2893)
Emit an event for critical parameter changes.
Additional information: link
HunnyBNBPool.constructor(address,address,address)._presale (#4031) lacks a zero-check on :
- presale = _presale (#4033)
HunnyMinter.constructor(address,address,address,address,address)._hunnyPool (#2873) lacks a zero-check on :
- hunnyPool = _hunnyPool (#2875)
HunnyOracle.constructor(address).hunny (#2013) lacks a zero-check on :
- hunnyToken = hunny (#2014)
HunnyPool.constructor(address,address,address)._presale (#3691) lacks a zero-check on :
- presaleContract = _presale (#3693)
PancakeSwap.constructor(address)._hunnyAddress (#2651) lacks a zero-check on :
- _hunny = _hunnyAddress (#2652)
CakeFlipVault.constructor(uint256,address,address,address,address).cake (#4466) lacks a zero-check on :
- CAKE = cake (#4467)
HunnyMinter.constructor(address,address,address,address,address)._lotteryPool (#2873) lacks a zero-check on :
- lotteryPool = _lotteryPool (#2876)
RewardsDistributionRecipient.setRewardsDistribution(address)._rewardsDistribution (#3476) lacks a zero-check on :
- rewardsDistribution = _rewardsDistribution (#3477)
Check that the address is not zero.
Additional information: link
Reentrancy in HunnyPool.stakeTo(uint256,address) (#3906-3911):
External calls:
- _deposit(amount,_to) (#3907)
- returndata = address(token).functionCall(data,SafeBEP20: low-level call failed) (#657)
- stakingToken.safeTransferFrom(msg.sender,address(this),amount) (#3806)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
External calls sending eth:
- _deposit(amount,_to) (#3907)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
State variables written after the call(s):
- _presaleBalance[_to] = _presaleBalance[_to].add(amount) (#3909)
Reentrancy in HunnyBNBPool._depositTo(uint256,address) (#4134-4146):
External calls:
- token.safeTransferFrom(msg.sender,address(this),_amount) (#4135)
- mintHunny(amount,duration) (#4140)
- minter.mintForHunnyBNB(amount,duration,msg.sender) (#4173)
State variables written after the call(s):
- totalShares = totalShares.add(_amount) (#4143)
Reentrancy in CakeFlipVault._harvest() (#4657-4665):
External calls:
- rewardsToken.deposit(cakeAmount) (#4660)
State variables written after the call(s):
- _notifyRewardAmount(amount) (#4663)
- lastUpdateTime = lastTimeRewardApplicable() (#4767)
- lastUpdateTime = block.timestamp (#4746)
- _notifyRewardAmount(amount) (#4663)
- periodFinish = block.timestamp.add(rewardsDuration) (#4747)
- _notifyRewardAmount(amount) (#4663)
- rewardPerTokenStored = rewardPerToken() (#4766)
- _notifyRewardAmount(amount) (#4663)
- rewardRate = reward.div(rewardsDuration) (#4732)
- rewardRate = reward.add(leftover).div(rewardsDuration) (#4736)
- _notifyRewardAmount(amount) (#4663)
- rewards[account] = earned(account) (#4769)
- _notifyRewardAmount(amount) (#4663)
- userRewardPerTokenPaid[account] = rewardPerTokenStored (#4770)
Reentrancy in CakeVault._depositTo(uint256,address) (#4338-4356):
External calls:
- CAKE.safeTransferFrom(msg.sender,address(this),_amount) (#4342)
State variables written after the call(s):
- _shares[_to] = _shares[_to].add(shares) (#4351)
- totalShares = totalShares.add(shares) (#4350)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in CakeFlipVault.harvest() (#4652-4655):
External calls:
- CAKE_MASTER_CHEF.withdraw(poolId,0) (#4653)
- _harvest() (#4654)
- rewardsToken.deposit(cakeAmount) (#4660)
Event emitted after the call(s):
- RewardAdded(reward) (#4748)
- _harvest() (#4654)
Reentrancy in CakeFlipVault.withdrawAll() (#4626-4632):
External calls:
- withdraw(_withdraw) (#4629)
- returndata = address(token).functionCall(data,SafeBEP20: low-level call failed) (#657)
- rewardsToken.deposit(cakeAmount) (#4660)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- CAKE_MASTER_CHEF.withdraw(poolId,amount) (#4608)
- minter.mintFor(address(stakingToken),withdrawalFee.sub(performanceFee),performanceFee,msg.sender,_depositedAt) (#4615)
- stakingToken.safeTransfer(msg.sender,amount) (#4620)
- getReward() (#4631)
- returndata = address(token).functionCall(data,SafeBEP20: low-level call failed) (#657)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- rewardsToken.withdraw(reward) (#4638)
- minter.mintFor(CAKE,0,performanceFee,msg.sender,depositedAt[msg.sender]) (#4643)
- IBEP20(CAKE).safeTransfer(msg.sender,cakeBalance) (#4647)
External calls sending eth:
- withdraw(_withdraw) (#4629)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- getReward() (#4631)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
Event emitted after the call(s):
- RewardPaid(msg.sender,cakeBalance) (#4648)
- getReward() (#4631)
Reentrancy in CakeFlipVault.withdraw(uint256) (#4604-4624):
External calls:
- CAKE_MASTER_CHEF.withdraw(poolId,amount) (#4608)
- minter.mintFor(address(stakingToken),withdrawalFee.sub(performanceFee),performanceFee,msg.sender,_depositedAt) (#4615)
- stakingToken.safeTransfer(msg.sender,amount) (#4620)
- _harvest() (#4623)
- rewardsToken.deposit(cakeAmount) (#4660)
Event emitted after the call(s):
- RewardAdded(reward) (#4748)
- _harvest() (#4623)
Reentrancy in HunnyPool._deposit(uint256,address) (#3802-3808):
External calls:
- stakingToken.safeTransferFrom(msg.sender,address(this),amount) (#3806)
Event emitted after the call(s):
- Staked(_to,amount) (#3807)
Reentrancy in CakeFlipVault._deposit(uint256,address) (#4584-4594):
External calls:
- stakingToken.safeTransferFrom(msg.sender,address(this),amount) (#4589)
- CAKE_MASTER_CHEF.deposit(poolId,amount) (#4590)
Event emitted after the call(s):
- Staked(_to,amount) (#4591)
Reentrancy in HunnyPool.withdrawAll() (#3827-3833):
External calls:
- withdraw(_withdraw) (#3830)
- returndata = address(token).functionCall(data,SafeBEP20: low-level call failed) (#657)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- stakingToken.safeTransfer(msg.sender,amount) (#3823)
- getReward() (#3832)
- returndata = address(token).functionCall(data,SafeBEP20: low-level call failed) (#657)
- (rewardHunny) = ROUTER.removeLiquidity(address(stakingToken),wbnb,amount,0,0,address(this),block.timestamp) (#3847-3849)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- IBEP20(ROUTER.WETH()).safeTransfer(msg.sender,reward) (#3840)
- ROUTER.swapExactTokensForTokens(rewardHunny,0,path,address(this),block.timestamp) (#3853)
External calls sending eth:
- withdraw(_withdraw) (#3830)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
- getReward() (#3832)
- (success,returndata) = target.call{value: weiValue}(data) (#546)
Event emitted after the call(s):
- RewardPaid(msg.sender,reward) (#3841)
- getReward() (#3832)
Reentrancy in CakeFlipVault.recoverBEP20(address,uint256) (#4751-4755):
External calls:
- IBEP20(tokenAddress).safeTransfer(owner(),tokenAmount) (#4753)
Event emitted after the call(s):
- Recovered(tokenAddress,tokenAmount) (#4754)
Reentrancy in CakeFlipVault.getReward() (#4634-4650):
External calls:
- rewardsToken.withdraw(reward) (#4638)
- minter.mintFor(CAKE,0,performanceFee,msg.sender,depositedAt[msg.sender]) (#4643)
- IBEP20(CAKE).safeTransfer(msg.sender,cakeBalance) (#4647)
Event emitted after the call(s):
- RewardPaid(msg.sender,cakeBalance) (#4648)
Reentrancy in HunnyPool.withdraw(uint256) (#3818-3825):
External calls:
- stakingToken.safeTransfer(msg.sender,amount) (#3823)
Event emitted after the call(s):
- Withdrawn(msg.sender,amount) (#3824)
Reentrancy in CakeFlipVault._harvest() (#4657-4665):
External calls:
- rewardsToken.deposit(cakeAmount) (#4660)
Event emitted after the call(s):
- RewardAdded(reward) (#4748)
- _notifyRewardAmount(amount) (#4663)
Reentrancy in CakeFlipVault.withdraw(uint256) (#4604-4624):
External calls:
- CAKE_MASTER_CHEF.withdraw(poolId,amount) (#4608)
- minter.mintFor(address(stakingToken),withdrawalFee.sub(performanceFee),performanceFee,msg.sender,_depositedAt) (#4615)
- stakingToken.safeTransfer(msg.sender,amount) (#4620)
Event emitted after the call(s):
- Withdrawn(msg.sender,amount) (#4621)
Reentrancy in HunnyPool.recoverBEP20(address,uint256) (#3934-3938):
External calls:
- IBEP20(tokenAddress).safeTransfer(owner(),tokenAmount) (#3936)
Event emitted after the call(s):
- Recovered(tokenAddress,tokenAmount) (#3937)
Reentrancy in HunnyPool.getReward() (#3835-3843):
External calls:
- reward = _flipToWBNB(reward) (#3839)
- (rewardHunny) = ROUTER.removeLiquidity(address(stakingToken),wbnb,amount,0,0,address(this),block.timestamp) (#3847-3849)
- ROUTER.swapExactTokensForTokens(rewardHunny,0,path,address(this),block.timestamp) (#3853)
- IBEP20(ROUTER.WETH()).safeTransfer(msg.sender,reward) (#3840)
Event emitted after the call(s):
- RewardPaid(msg.sender,reward) (#3841)
Reentrancy in CakeFlipVault._deposit(uint256,address) (#4584-4594):
External calls:
- stakingToken.safeTransferFrom(msg.sender,address(this),amount) (#4589)
- CAKE_MASTER_CHEF.deposit(poolId,amount) (#4590)
- _harvest() (#4593)
- rewardsToken.deposit(cakeAmount) (#4660)
Event emitted after the call(s):
- RewardAdded(reward) (#4748)
- _harvest() (#4593)
Apply the check-effects-interactions pattern.
Additional information: link
HunnyMinter.withdrawalFee(uint256,uint256) (#2954-2959) uses timestamp for comparisons
Dangerous comparisons:
- depositedAt.add(WITHDRAWAL_FEE_FREE_PERIOD) > block.timestamp (#2955)
HunnyMinter.isMinter(address) (#2935-2944) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp < 1605585600 (#2940)
HunnyPool.setRewardsDuration(uint256) (#3940-3944) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(periodFinish == 0 || block.timestamp > periodFinish,period) (#3941)
CakeFlipVault.withdraw(uint256) (#4604-4624) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(amount > 0,amount) (#4605)
- withdrawalFee > 0 (#4613)
UniswapV2OracleLibrary.currentCumulativePrices(address) (#1955-1973) uses timestamp for comparisons
Dangerous comparisons:
- blockTimestampLast != blockTimestamp (#1964)
HunnyToken.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (#1159-1200) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now <= expiry,HUNNY::delegateBySig: signature expired) (#1198)
HunnyPool.getReward() (#3835-3843) uses timestamp for comparisons
Dangerous comparisons:
- reward > 0 (#3837)
CakeFlipVault.getReward() (#4634-4650) uses timestamp for comparisons
Dangerous comparisons:
- reward > 0 (#4636)
CakeFlipVault._notifyRewardAmount(uint256) (#4730-4749) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp >= periodFinish (#4731)
- require(bool,string)(rewardRate <= _balance.div(rewardsDuration),reward) (#4744)
HunnyPool.notifyRewardAmount(uint256) (#3913-3932) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp >= periodFinish (#3914)
- require(bool,string)(rewardRate <= _balance.div(rewardsDuration),reward) (#3927)
CakeFlipVault.setRewardsDuration(uint256) (#4757-4761) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(periodFinish == 0 || block.timestamp > periodFinish,period) (#4758)
HunnyPool.withdrawableBalanceOf(address) (#3729-3750) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp > TIMESTAMP_90_DAYS_AFTER_PRESALE (#3730)
- block.timestamp < TIMESTAMP_2_HOURS_AFTER_PRESALE (#3733)
HunnyBNBPool._depositTo(uint256,address) (#4134-4146) uses timestamp for comparisons
Dangerous comparisons:
- amount != 0 && depositedAt[_to] != 0 (#4138)
Avoid relying on block.timestamp.
Additional information: link
HunnyToken.antiWhale(address,address,uint256) (#1037-1047) compares to a boolean constant:
-_excludedFromAntiWhale[sender] == false && _excludedFromAntiWhale[recipient] == false (#1040-1041)
HunnyMinter.onlyMinter() (#2868-2871) compares to a boolean constant:
-require(bool,string)(isMinter(msg.sender) == true,not minter) (#2869)
Remove the equality to the boolean constant.
Additional information: link
FixedPoint.sqrt(FixedPoint.uq112x112) (#1841-1849) is never used and should be removed
SafeBEP20.safeDecreaseAllowance(IBEP20,address,uint256) (#634-644) is never used and should be removed
FixedPoint.muluq(FixedPoint.uq112x112,FixedPoint.uq112x112) (#1769-1794) is never used and should be removed
Address.sendValue(address,uint256) (#458-464) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#513-519) is never used and should be removed
FixedPoint.decode(FixedPoint.uq112x112) (#1742-1744) is never used and should be removed
SafeMath.sqrt(uint256) (#179-190) is never used and should be removed
BEP20Virtual._burn(address,uint256) (#939-945) is never used and should be removed
BEP20._burnFrom(address,uint256) (#2393-2400) is never used and should be removed
UniswapV2Library.getReserves(address,address,address) (#1882-1886) is never used and should be removed
BitMath.leastSignificantBit(uint256) (#1659-1699) is never used and should be removed
HomoraMath.sqrt(uint256) (#3039-3082) is never used and should be removed
BEP20._burn(address,uint256) (#2354-2360) is never used and should be removed
Math.max(uint256,uint256) (#3340-3342) is never used and should be removed
UniswapV2Library.getAmountsIn(address,uint256,address[]) (#1926-1934) is never used and should be removed
HomoraMath.divCeil(uint256,uint256) (#3025-3027) is never used and should be removed
Math.average(uint256,uint256) (#3355-3358) is never used and should be removed
UniswapV2Library.getAmountOut(uint256,uint256,uint256) (#1896-1903) is never used and should be removed
SafeMath.min(uint256,uint256) (#174-176) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#165-172) is never used and should be removed
FixedPoint.encode144(uint144) (#1737-1739) is never used and should be removed
FixedPoint.encode(uint112) (#1732-1734) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#527-535) is never used and should be removed
Context._msgData() (#218-221) is never used and should be removed
FixedPoint.reciprocal(FixedPoint.uq112x112) (#1833-1837) is never used and should be removed
SafeMath.mod(uint256,uint256) (#149-151) is never used and should be removed
UniswapV2Library.getAmountIn(uint256,uint256,uint256) (#1906-1912) is never used and should be removed
FixedPoint.muli(FixedPoint.uq112x112,int256) (#1761-1765) is never used and should be removed
HomoraMath.fdiv(uint256,uint256) (#3033-3035) is never used and should be removed
UniswapV2Library.pairFor(address,address,address) (#1871-1879) is never used and should be removed
Babylonian.sqrt(uint256) (#1569-1611) is never used and should be removed
FixedPoint.divuq(FixedPoint.uq112x112,FixedPoint.uq112x112) (#1797-1811) is never used and should be removed
SafeBEP20.safeIncreaseAllowance(IBEP20,address,uint256) (#625-632) is never used and should be removed
UniswapV2Library.getAmountsOut(address,uint256,address[]) (#1915-1923) is never used and should be removed
UniswapV2Library.sortTokens(address,address) (#1864-1868) is never used and should be removed
HomoraMath.fmul(uint256,uint256) (#3029-3031) is never used and should be removed
BEP20Virtual._burnFrom(address,uint256) (#978-985) is never used and should be removed
UniswapV2Library.quote(uint256,uint256,uint256) (#1889-1893) is never used and should be removed
BitMath.mostSignificantBit(uint256) (#1622-1654) is never used and should be removed
Address.functionCall(address,bytes) (#484-486) is never used and should be removed
Remove unused functions.
Additional information: link
CakeVault (#4230-4399) should inherit from ICakeVault (#4406-4412)
HunnyBNBPool (#4013-4187) should inherit from ICakeVault (#4406-4412)
HunnyPool (#3655-3971) should inherit from IStakingRewards (#2773-2776)
Inherit from the missing interface or contract.
Additional information: link
Parameter CakeVault.setHelper(IStrategyHelper)._helper (#4260) is not in mixedCase
Parameter CakeFlipVault.setHelper(IStrategyHelper)._helper (#4721) is not in mixedCase
Parameter HunnyMinter.mintFor(address,uint256,uint256,address,uint256)._performanceFee (#2965) is not in mixedCase
Parameter HunnyPool.setHelper(IStrategyHelper)._helper (#3897) is not in mixedCase
Function IPancakeRouter01.WETH() (#2410) is not in mixedCase
Parameter CakeVault.deposit(uint256)._amount (#4358) is not in mixedCase
Variable HunnyMinter.WITHDRAWAL_FEE (#2851) is not in mixedCase
Variable HunnyPool.TIMESTAMP_2_HOURS_AFTER_PRESALE (#3682) is not in mixedCase
Parameter Whitelist.setWhitelist(address,bool)._address (#1489) is not in mixedCase
Variable HunnyBNBPool.HUNNY (#4017) is not in mixedCase
Parameter HunnyBNBPool.setMinter(IHunnyMinter)._minter (#4042) is not in mixedCase
Function Deployer2.step1_presaleInitialize() (#4882-4905) is not in mixedCase
Variable CakeVault.CAKE_MASTER_CHEF (#4235) is not in mixedCase
Parameter CakeVault.setKeeper(address)._keeper (#4254) is not in mixedCase
Parameter HunnyToken.updateMaxTransferAmountRate(uint16)._maxTransferAmountRate (#1070) is not in mixedCase
Parameter Pausable.setPaused(bool)._paused (#3537) is not in mixedCase
Variable CakeFlipVault.CAKE (#4453) is not in mixedCase
Variable HunnyToken._delegates (#1100) is not in mixedCase
Parameter StrategyHelperV1.tvlInBNB(address,uint256)._flip (#3281) is not in mixedCase
Parameter HunnyMinter.transferHunnyOwner(address)._owner (#2887) is not in mixedCase
Parameter HunnyToken.isExcludedFromAntiWhale(address)._account (#1066) is not in mixedCase
Variable PancakeSwap.ROUTER (#2644) is not in mixedCase
Parameter HunnyMinter.mintFor(address,uint256,uint256,address,uint256)._withdrawalFee (#2965) is not in mixedCase
Parameter StrategyHelperV1.tvl(address,uint256)._flip (#3255) is not in mixedCase
Function Deployer2.step3_presaleFinalize() (#4919-4937) is not in mixedCase
Parameter HunnyPool.setStakePermission(address,bool)._address (#3902) is not in mixedCase
Parameter HunnyMinter.setPerformanceFee(uint256)._fee (#2896) is not in mixedCase
Parameter HunnyToken.mint(address,uint256)._to (#1088) is not in mixedCase
Variable HunnyMinter.PERFORMANCE_FEE (#2854) is not in mixedCase
Function IHunnyMinter.WITHDRAWAL_FEE() (#2749) is not in mixedCase
Parameter HunnyMinter.setHunnyPerHunnyBNBFlip(uint256)._hunnyPerHunnyBNBFlip (#2917) is not in mixedCase
Parameter StrategyHelperV1.tokenPriceInBNB(address)._token (#3181) is not in mixedCase
Variable CakeFlipVault.CAKE_MASTER_CHEF (#4454) is not in mixedCase
Parameter HunnyToken.setExcludedFromAntiWhale(address,bool)._account (#1076) is not in mixedCase
Variable HunnyMinter.WBNB (#2848) is not in mixedCase
Parameter CakeVault.withdraw(uint256)._amount (#4385) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#1367) is not in mixedCase
Function Deployer2.step4_setupLiquidityReward(uint256) (#4939-4965) is not in mixedCase
Struct FixedPoint.uq112x112 (#1716-1718) is not in CapWords
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#1384) is not in mixedCase
Parameter CakeFlipVault.setRewardsToken(address)._rewardsToken (#4712) is not in mixedCase
Parameter HunnyMinter.setHunnyPerProfitBNB(uint256)._ratio (#2913) is not in mixedCase
Parameter HunnyMinter.setWithdrawalFee(uint256)._fee (#2891) is not in mixedCase
Parameter CakeFlipVault.setRewardsDuration(uint256)._rewardsDuration (#4757) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#1366) is not in mixedCase
Variable HunnyBNBPool.WBNB (#4019) is not in mixedCase
Variable StrategyHelperV1.WBNB (#3165) is not in mixedCase
Parameter HunnyBNBPool.setFlipToken(address)._token (#4037) is not in mixedCase
Parameter HunnyMinter.setWithdrawalFeeFreePeriod(uint256)._period (#2901) is not in mixedCase
Variable HunnyPool.TIMESTAMP_90_DAYS_AFTER_PRESALE (#3683) is not in mixedCase
Parameter HunnyPool.stakeTo(uint256,address)._to (#3906) is not in mixedCase
Parameter PancakeSwap.swapToken(address,uint256,address)._from (#2695) is not in mixedCase
Parameter RewardsDistributionRecipient.setRewardsDistribution(address)._rewardsDistribution (#3476) is not in mixedCase
Function Deployer2.step2_2_presaleDistributeTokensWhiteList() (#4913-4917) is not in mixedCase
Variable StrategyHelperV1.BUSD (#3167) is not in mixedCase
Constant HunnyPool.deadAddress (#3679) is not in UPPER_CASE_WITH_UNDERSCORES
Variable HunnyPool.ROUTER (#3687) is not in mixedCase
Function IPancakePair.MINIMUM_LIQUIDITY() (#2589) is not in mixedCase
Variable StrategyHelperV1.CAKE (#3166) is not in mixedCase
Parameter HunnyBNBPool.setHelper(IStrategyHelper)._helper (#4050) is not in mixedCase
Parameter HunnyPool.setRewardsDuration(uint256)._rewardsDuration (#3940) is not in mixedCase
Parameter Whitelist.isWhitelist(address)._address (#1485) is not in mixedCase
Parameter HunnyBNBPool.deposit(uint256)._amount (#4148) is not in mixedCase
Parameter StrategyHelperV1.unsafeTokenPriceInBNB(address)._token (#3191) is not in mixedCase
Variable CakeVault.CAKE (#4234) is not in mixedCase
Parameter PancakeSwap.swapToken(address,uint256,address)._amount (#2695) is not in mixedCase
Variable HunnyBNBPool.CAKE (#4018) is not in mixedCase
Parameter PancakeSwap.swapToken(address,uint256,address)._to (#2695) is not in mixedCase
Variable HunnyMinter.WITHDRAWAL_FEE_FREE_PERIOD (#2850) is not in mixedCase
Parameter HunnyMinter.setHunnyPerBlockLottery(uint256)._hunnyPerBlockLottery (#2921) is not in mixedCase
Parameter CakeFlipVault.setKeeper(address)._keeper (#4694) is not in mixedCase
Function IPancakePair.PERMIT_TYPEHASH() (#2572) is not in mixedCase
Parameter CakeFlipVault.setMinter(IHunnyMinter)._minter (#4700) is not in mixedCase
Function IPancakePair.DOMAIN_SEPARATOR() (#2571) is not in mixedCase
Parameter HunnyMinter.setOracle(IHunnyOracle)._oracle (#2930) is not in mixedCase
Parameter HunnyMinter.setHelper(IStrategyHelper)._helper (#2925) is not in mixedCase
Parameter HunnyBNBPool.depositTo(uint256,uint256,address)._amount (#4129) is not in mixedCase
Parameter CakeVault.setWhitelist(address,bool)._address (#4267) is not in mixedCase
Parameter HunnyBNBPool.depositTo(uint256,uint256,address)._to (#4129) is not in mixedCase
Parameter HunnyToken.setExcludedFromAntiWhale(address,bool)._excluded (#1076) is not in mixedCase
Function IHunnyMinter.WITHDRAWAL_FEE_FREE_PERIOD() (#2748) is not in mixedCase
Struct FixedPoint.uq144x112 (#1722-1724) is not in CapWords
Parameter CakeVault.setWhitelist(address,bool)._on (#4267) is not in mixedCase
Function Deployer2.step2_1_presaleDistributeTokens(uint256,uint256) (#4907-4911) is not in mixedCase
Parameter HunnyPool.setRewardsToken(address)._rewardsToken (#3887) is not in mixedCase
Parameter HunnyToken.mint(address,uint256)._amount (#1088) is not in mixedCase
Parameter Whitelist.setWhitelist(address,bool)._on (#1489) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#2415) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#2416)
Variable HunnyOracle._update().price0Cumulative (#2053) is too similar to HunnyOracle._update().price1Cumulative (#2053)
Variable StrategyHelperV1.tvl(address,uint256).price_scope_0 (#3272) is too similar to StrategyHelperV1.tvl(address,uint256).price_scope_1 (#3277)
Variable HunnyMinter.WITHDRAWAL_FEE (#2851) is too similar to HunnyMinter.mintFor(address,uint256,uint256,address,uint256)._withdrawalFee (#2965)
Variable HunnyMinter.PERFORMANCE_FEE (#2854) is too similar to IHunnyMinter.mintFor(address,uint256,uint256,address,uint256)._performanceFee (#2743)
Variable HunnyOracle.price0CumulativeLast (#2007) is too similar to HunnyOracle.price1CumulativeLast (#2008)
Variable PancakeSwap.generateFlipToken().amountADesired (#2716) is too similar to PancakeSwap.generateFlipToken().amountBDesired (#2717)
Variable HunnyMinter.PERFORMANCE_FEE (#2854) is too similar to HunnyMinter.mintFor(address,uint256,uint256,address,uint256)._performanceFee (#2965)
Variable UniswapV2OracleLibrary.currentCumulativePrices(address).price0Cumulative (#1957) is too similar to UniswapV2OracleLibrary.currentCumulativePrices(address).price1Cumulative (#1957)
Variable HunnyMinter.WITHDRAWAL_FEE (#2851) is too similar to IHunnyMinter.mintFor(address,uint256,uint256,address,uint256)._withdrawalFee (#2743)
Variable HunnyOracle.price0Average (#2010) is too similar to HunnyOracle.price1Average (#2011)
Prevent variables from having similar names.
Additional information: link
Babylonian.sqrt(uint256) (#1569-1611) uses literals with too many digits:
- xx >= 0x10000000000000000 (#1579)
HomoraMath.sqrt(uint256) (#3039-3082) uses literals with too many digits:
- xx >= 0x100000000000000000000000000000000 (#3044)
HunnyOracle.slitherConstructorConstantVariables() (#1994-2085) uses literals with too many digits:
- BOOTSTRAP_HUNNY_PRICE = 250000000000000 (#1998)
Babylonian.sqrt(uint256) (#1569-1611) uses literals with too many digits:
- xx >= 0x100000000000000000000000000000000 (#1575)
Babylonian.sqrt(uint256) (#1569-1611) uses literals with too many digits:
- xx >= 0x100000000 (#1583)
FixedPoint.slitherConstructorConstantVariables() (#1713-1850) uses literals with too many digits:
- Q224 = 0x100000000000000000000000000000000000000000000000000000000 (#1728)
BitMath.mostSignificantBit(uint256) (#1622-1654) uses literals with too many digits:
- x >= 0x100000000000000000000000000000000 (#1625)
HomoraMath.sqrt(uint256) (#3039-3082) uses literals with too many digits:
- xx >= 0x100000000 (#3053)
HunnyPool.slitherConstructorConstantVariables() (#3655-3971) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#3679)
FixedPoint.slitherConstructorConstantVariables() (#1713-1850) uses literals with too many digits:
- Q112 = 0x10000000000000000000000000000 (#1727)
BitMath.mostSignificantBit(uint256) (#1622-1654) uses literals with too many digits:
- x >= 0x10000000000000000 (#1629)
HomoraMath.sqrt(uint256) (#3039-3082) uses literals with too many digits:
- xx >= 0x10000000000000000 (#3049)
BitMath.mostSignificantBit(uint256) (#1622-1654) uses literals with too many digits:
- x >= 0x100000000 (#1633)
HunnyToken.slitherConstructorConstantVariables() (#1022-1323) uses literals with too many digits:
- BURN_ADDRESS = 0x000000000000000000000000000000000000dEaD (#1024)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
CakeVault.poolId (#4239) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
isExcludedFromAntiWhale(address) should be declared external:
- HunnyToken.isExcludedFromAntiWhale(address) (#1066-1068)
symbol() should be declared external:
- BEP20.symbol() (#2170-2172)
- BEP20Virtual.symbol() (#755-757)
decreaseAllowance(address,uint256) should be declared external:
- BEP20Virtual.decreaseAllowance(address,uint256) (#862-869)
setTokenFeed(address,address) should be declared external:
- StrategyHelperV1.setTokenFeed(address,address) (#3322-3324)
capture() should be declared external:
- HunnyOracle.capture() (#2077-2084)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#278-281)
allowance(address,address) should be declared external:
- BEP20.allowance(address,address) (#2204-2206)
- BEP20Virtual.allowance(address,address) (#789-791)
transferOperator(address) should be declared external:
- HunnyToken.transferOperator(address) (#1080-1085)
transferContractOwner(address) should be declared external:
- Deployer1.transferContractOwner(address) (#4856-4864)
update() should be declared external:
- HunnyOracle.update() (#2037-2050)
performanceFee(uint256) should be declared external:
- HunnyMinter.performanceFee(uint256) (#2961-2963)
priceShare() should be declared external:
- CakeVault.priceShare() (#4333-4336)
step1_presaleInitialize() should be declared external:
- Deployer2.step1_presaleInitialize() (#4882-4905)
notifyRewardAmount(uint256) should be declared external:
- CakeFlipVault.notifyRewardAmount(uint256) (#4726-4728)
step2_2_presaleDistributeTokensWhiteList() should be declared external:
- Deployer2.step2_2_presaleDistributeTokensWhiteList() (#4913-4917)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#287-289)
isWhitelist(address) should be declared external:
- Whitelist.isWhitelist(address) (#1485-1487)
increaseAllowance(address,uint256) should be declared external:
- BEP20Virtual.increaseAllowance(address,uint256) (#843-846)
mint(uint256) should be declared external:
- BEP20.mint(uint256) (#2294-2297)
mint(uint256) should be declared external:
- BEP20Virtual.mint(uint256) (#879-882)
step2_1_presaleDistributeTokens(uint256,uint256) should be declared external:
- Deployer2.step2_1_presaleDistributeTokens(uint256,uint256) (#4907-4911)
transferFrom(address,address,uint256) should be declared external:
- BEP20.transferFrom(address,address,uint256) (#2232-2244)
- BEP20Virtual.transferFrom(address,address,uint256) (#817-829)
step4_setupLiquidityReward(uint256) should be declared external:
- Deployer2.step4_setupLiquidityReward(uint256) (#4939-4965)
updateMaxTransferAmountRate(uint16) should be declared external:
- HunnyToken.updateMaxTransferAmountRate(uint16) (#1070-1074)
setFlipToken(address) should be declared external:
- HunnyBNBPool.setFlipToken(address) (#4037-4040)
tvlInBNB(address,uint256) should be declared external:
- StrategyHelperV1.tvlInBNB(address,uint256) (#3281-3303)
approve(address,uint256) should be declared external:
- BEP20.approve(address,uint256) (#2215-2218)
- BEP20Virtual.approve(address,uint256) (#800-803)
disableWhitelist(bool) should be declared external:
- Whitelist.disableWhitelist(bool) (#1495-1502)
transferContractOwner(address) should be declared external:
- Deployer2.transferContractOwner(address) (#4967-4976)
transfer(address,uint256) should be declared external:
- BEP20.transfer(address,uint256) (#2196-2199)
- BEP20Virtual.transfer(address,uint256) (#781-784)
apy(address,uint256) should be declared external:
- StrategyHelperV1.apy(address,uint256) (#3249-3253)
priceShare() should be declared external:
- HunnyBNBPool.priceShare() (#4125-4127)
emergencyTransfer() should be declared external:
- Deployer2.emergencyTransfer() (#4980-4983)
harvest() should be declared external:
- CakeFlipVault.harvest() (#4652-4655)
step3_presaleFinalize() should be declared external:
- Deployer2.step3_presaleFinalize() (#4919-4937)
increaseAllowance(address,uint256) should be declared external:
- BEP20.increaseAllowance(address,uint256) (#2258-2261)
decreaseAllowance(address,uint256) should be declared external:
- BEP20.decreaseAllowance(address,uint256) (#2277-2284)
sharesOf(address) should be declared external:
- HunnyBNBPool.sharesOf(address) (#4067-4069)
decimals() should be declared external:
- BEP20.decimals() (#2163-2165)
- BEP20Virtual.decimals() (#748-750)
setOracle(address) should be declared external:
- StrategyHelperV1.setOracle(address) (#3318-3320)
setExcludedFromAntiWhale(address,bool) should be declared external:
- HunnyToken.setExcludedFromAntiWhale(address,bool) (#1076-1078)
mint(address,uint256) should be declared external:
- HunnyToken.mint(address,uint256) (#1088-1091)
Use the external attribute for functions never called from the contract.
Additional information: link
Average 30d PancakeSwap liquidity is less than $100. Token is either dead or inactive.
Average 30d number of PancakeSwap swaps is less than 1. Token is either dead or inactive.
Token is deployed only at one blockchain
Average 30d PancakeSwap volume is low.
Average PancakeSwap trading volume, liqudity, number of swaps are low. Token seems to be inactive.
Token is not listed at Mobula.Finance
Additional information: link
Unable to find Youtube account
Unable to find Discord account