$BIFI tokens are ‘dividend-eligible’ revenue shares in Beefy Finance, through which holders earn profits generated by Beefy Finance and are entitled to vote on important platform decisions.
Beefy Finance is a Decentralized Finance (DeFi) Yield Optimizer platform that allows its users to earn compound interest on their holdings.
DeFi applications are unique in the sense that they are permissionless and trustless, meaning that anyone with a supported wallet can interact with them without the need for a trusted middleman.
Through a set of investment strategies secured and enforced by smart contracts, Beefy Finance automatically maximizes the user rewards from various liquidity pools (LPs), automated market making (AMM) projects, and other yield farming opportunities in the DeFi ecosystem.
For all the vaults deployed on every blockchain, Beefy Finance has its native governance token $BIFI at its core. Platform revenue is generated from a small percentage of all the vault profits and distributed back to those who stake $BIFI.
Beefy Finance is a supported partner of Binance’s official decentralized wallet, Trust Wallet, and audited by Certik to guarantee the robustness of deployed smart contracts. Certik has already provided audits for such projects as Ocean Protocol, NEO, Ontology, and Waves.
The supply of $BIFI is limited at 80,000 tokens and available on the top decentralized exchanges such as Binance, 1inchexchange and PancakeSwap.
What is $BIFI?
$BIFI is the native governance token of Beefy Finance. $BIFI Tokens can be staked on the Beefy platform to gain rewards and interest. A portion of the fees paid by anyone using Beefy’s yield optimization vaults are distributed to holders of $BIFI staked on the platform. Token holders also have a right to create and vote on proposals to the platform as part of its governance system. They can vote without un-staking their tokens.
What makes Beefy Finance unique?
There are lots of farms to choose from across several blockchains. Beefy automates and optimizes different investment strategies, allowing token holders to benefit from the upside of complex farming protocols. Users can request new vaults directly from Beefy’s developers and the time it takes to answer these requests is very low.
What are yield farming and yield optimization?
Yield farming is simply a way to make some interest with crypto holdings. A yield optimizer is an automated service that seeks to gain the maximum possible return on crypto-investments made through DeFi platforms. They work much more efficiently than attempting to maximize yield through manual means. Each yield optimization method on Beefy Finance has its own unique strategy for farming, which normally involves the reinvestment of crypto assets staked in liquidity pools. At the most simple level, it farms the rewards given from staked assets and reinvests them back into the liquidity pool for the user.
What are Beefy vaults?
Vaults are investment instruments that employ an optimized set of strategies for yield farming. They make use of automation to continually invest and reinvest deposited funds, which help to achieve high levels of compounded interest. Vaults are the core of the Beefy Finance ecosystem. In a Beefy vault, you earn more of the asset you stake, regardless of whether it’s a liquidity pool (LP) token or a single asset.
Despite what the name 'vault' suggests, user funds are never locked on Beefy.Finance. Users can withdraw from a vault at any moment in time and Beefy does not own the funds staked in its vaults.
What fees are incurred from using Beefy Finance?
The performance fees are already built into the displayed APY of each vault and daily rate. Most vaults available on Beefy Finance take 4.5% of harvest rewards.
The performance fee on users vault profits is largely distributed back to $BIFI stakers and is the main source of Beefy Finance's platform revenue: 3% is distributed back to $BIFI stakers, 0.5% is allocated to treasury, 0.5% to the strategist that developed the vault and 0.5% for the one calling the harvest function.
Each vault has either a deposit or withdrawal fee of 0.1% or less, which is there to protect bad actors from abusing the vaults. This is shared with all other stakers in that specific vault. Users should also consider network transaction fees when adding or removing funds. These fees do not go to Beefy, but to the operators keeping the blockchain network up and running.
ERC20Detailed.constructor(string,string,uint8).name (#519) shadows:
- ERC20Detailed.name() (#528-530) (function)
ERC20Detailed.constructor(string,string,uint8).symbol (#519) shadows:
- ERC20Detailed.symbol() (#536-538) (function)
ERC20Detailed.constructor(string,string,uint8).decimals (#519) shadows:
- ERC20Detailed.decimals() (#552-554) (function)
Rename the local variables that shadow another component.
Additional information: link
BIFI.setGovernance(address)._governance (#733) lacks a zero-check on :
- governance = _governance (#735)
Check that the address is not zero.
Additional information: link
Address.isContract(address) (#582-591) uses assembly
- INLINE ASM (#589)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['^0.5.0', '^0.5.16', '^0.5.5']
- ^0.5.0 (#3)
- ^0.5.0 (#33)
- ^0.5.0 (#112)
- ^0.5.0 (#271)
- ^0.5.0 (#503)
- ^0.5.5 (#559)
- ^0.5.0 (#632)
- ^0.5.16 (#709)
Use one Solidity version.
Additional information: link
Address.isContract(address) (#582-591) is never used and should be removed
Address.sendValue(address,uint256) (#621-627) is never used and should be removed
Address.toPayable(address) (#599-601) is never used and should be removed
Context._msgData() (#25-28) is never used and should be removed
ERC20._burn(address,uint256) (#460-466) is never used and should be removed
ERC20._burnFrom(address,uint256) (#495-498) is never used and should be removed
SafeERC20.callOptionalReturn(IERC20,bytes) (#685-704) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (#658-667) is never used and should be removed
SafeERC20.safeDecreaseAllowance(IERC20,address,uint256) (#674-677) is never used and should be removed
SafeERC20.safeIncreaseAllowance(IERC20,address,uint256) (#669-672) is never used and should be removed
SafeERC20.safeTransfer(IERC20,address,uint256) (#650-652) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (#654-656) is never used and should be removed
SafeMath.div(uint256,uint256) (#209-211) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#226-233) is never used and should be removed
SafeMath.mod(uint256,uint256) (#246-248) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#263-266) is never used and should be removed
SafeMath.mul(uint256,uint256) (#184-196) is never used and should be removed
SafeMath.sub(uint256,uint256) (#153-155) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.5.0 (#3) allows old versions
Pragma version^0.5.0 (#33) allows old versions
Pragma version^0.5.0 (#112) allows old versions
Pragma version^0.5.0 (#271) allows old versions
Pragma version^0.5.0 (#503) allows old versions
Pragma version^0.5.5 (#559) is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
Pragma version^0.5.0 (#632) allows old versions
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#621-627):
- (success) = recipient.call.value(amount)() (#625)
Low level call in SafeERC20.callOptionalReturn(IERC20,bytes) (#685-704):
- (success,returndata) = address(token).call(data) (#697)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Parameter BIFI.setGovernance(address)._governance (#733) is not in mixedCase
Parameter BIFI.addMinter(address)._minter (#738) is not in mixedCase
Parameter BIFI.removeMinter(address)._minter (#743) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#26)" inContext (#15-29)
Remove redundant statements if they congest code but offer no value.
Additional information: link
totalSupply() should be declared external:
- ERC20.totalSupply() (#312-314)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (#319-321)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#331-334)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#339-341)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#350-353)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#367-371)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#385-388)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#404-407)
name() should be declared external:
- ERC20Detailed.name() (#528-530)
symbol() should be declared external:
- ERC20Detailed.symbol() (#536-538)
decimals() should be declared external:
- ERC20Detailed.decimals() (#552-554)
mint(address,uint256) should be declared external:
- BIFI.mint(address,uint256) (#728-731)
setGovernance(address) should be declared external:
- BIFI.setGovernance(address) (#733-736)
addMinter(address) should be declared external:
- BIFI.addMinter(address) (#738-741)
removeMinter(address) should be declared external:
- BIFI.removeMinter(address) (#743-746)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find audit link on the website
Unable to find whitepaper link on the website