Hunny Token Logo

HUNNY Token

About HUNNY

Listings

Token 2 years
CoinGecko 2 years
CoinMarketCap 2 years
[CoinGecko] alert: Pancake Hunny (HUNNY) has recently rebranded to Hunny Finance (HUNNY). For more information, please visit this announcement on Medium.
white paper

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.

Social

Laser Scorebeta Last Audit: 23 March 2023

report
Token seems to be (relatively) fine. It still become a scam, but probability is moderate.

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

Holders:


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.


Unable to find Youtube account


Unable to find Discord account


Token is not listed at Mobula.Finance

Additional information: link

No disclosed threats

Price for HUNNY

News for HUNNY