BentoBox BoringCrypto, Keno
BentoBox
The BentoBox is a vault for tokens. The stored tokens can be flash loaned and
used in strategies. Yield from this will go to the token depositors. Rebasing
tokens ARE NOT supported and WILL cause loss of funds. Any funds transfered
directly onto the BentoBox will be lost, use the deposit function instead.
Methods DOMAIN_SEPARATOR function DOMAIN_SEPARATOR() external view returns (bytes32) Copy Returns Name Type Description _0 bytes32 undefined
balanceOf function balanceOf(contract IERC20, address) external view returns (uint256) Copy Parameters Name Type Description _0 contract IERC20 undefined _1 address undefined
Returns Name Type Description _0 uint256 undefined
batch function batch(bytes[] calls, bool revertOnFail) external payable returns (bool[] successes, bytes[] results) Copy Allows batched call to self (this contract).
Parameters Name Type Description calls bytes[] An array of inputs for each call. revertOnFail bool If True then reverts after a failed call and stops doing further calls.
Returns Name Type Description successes bool[] An array indicating the success of a call, mapped one-to-one to calls. results bytes[] An array with the returned data of each function call, mapped one-to-one to calls.
batchFlashLoan function batchFlashLoan(contract IBatchFlashBorrower borrower, address[] receivers, contract IERC20[] tokens, uint256[] amounts, bytes data) external nonpayable Copy Support for batched flashloans. Useful to request multiple different tokens in
a single transaction.
Parameters Name Type Description borrower contract IBatchFlashBorrower The address of the contract that implements and conforms to IBatchFlashBorrower and handles the flashloan. receivers address[] An array of the token receivers. A one-to-one mapping with tokens and amounts. tokens contract IERC20[] The addresses of the tokens. amounts uint256[] of the tokens for each receiver. data bytes The calldata to pass to the borrower contract.
claimOwnership function claimOwnership() external nonpayable Copy Needs to be called by pendingOwner to claim ownership.
deploy function deploy(address masterContract, bytes data, bool useCreate2) external payable returns (address cloneAddress) Copy Deploys a given master Contract as a clone. Any ETH transferred with this call
is forwarded to the new clone. Emits LogDeploy.
Parameters Name Type Description masterContract address The address of the contract to clone. data bytes Additional abi encoded calldata that is passed to the new clone via IMasterContract.init. useCreate2 bool Creates the clone by using the CREATE2 opcode, in this case data will be used as salt.
Returns Name Type Description cloneAddress address Address of the created clone contract.
deposit function deposit(contract IERC20 token_, address from, address to, uint256 amount, uint256 share) external payable returns (uint256 amountOut, uint256 shareOut) Copy Deposit an amount of token represented in either amount or share.
Parameters Name Type Description token_ contract IERC20 The ERC-20 token to deposit. from address which account to pull the tokens. to address which account to push the tokens. amount uint256 Token amount in native representation to deposit. share uint256 Token amount represented in shares to deposit. Takes precedence over amount.
Returns Name Type Description amountOut uint256 The amount deposited. shareOut uint256 The deposited amount repesented in shares.
flashLoan function flashLoan(contract IFlashBorrower borrower, address receiver, contract IERC20 token, uint256 amount, bytes data) external nonpayable Copy Flashloan ability.
Parameters Name Type Description borrower contract IFlashBorrower The address of the contract that implements and conforms to IFlashBorrower and handles the flashloan. receiver address Address of the token receiver. token contract IERC20 The address of the token to receive. amount uint256 of the tokens to receive. data bytes The calldata to pass to the borrower contract.
harvest function harvest(contract IERC20 token, bool balance, uint256 maxChangeAmount) external nonpayable Copy The actual process of yield farming. Executes the strategy of token.
Optionally does housekeeping if balance is true. maxChangeAmount is relevant
for skimming or withdrawing if balance is true.
Parameters Name Type Description token contract IERC20 The address of the token for which a strategy is deployed. balance bool True if housekeeping should be done. maxChangeAmount uint256 The maximum amount for either pulling or pushing from/to the IStrategy contract.
masterContractApproved function masterContractApproved(address, address) external view returns (bool) Copy masterContract to user to approval state
Parameters Name Type Description _0 address undefined _1 address undefined
Returns Name Type Description _0 bool undefined
masterContractOf function masterContractOf(address) external view returns (address) Copy Mapping from clone contracts to their masterContract.
Parameters Name Type Description _0 address undefined
Returns Name Type Description _0 address undefined
nonces function nonces(address) external view returns (uint256) Copy user nonces for masterContract approvals
Parameters Name Type Description _0 address undefined
Returns Name Type Description _0 uint256 undefined
owner function owner() external view returns (address) Copy Returns Name Type Description _0 address undefined
pendingOwner function pendingOwner() external view returns (address) Copy Returns Name Type Description _0 address undefined
pendingStrategy function pendingStrategy(contract IERC20) external view returns (contract IStrategy) Copy Parameters Name Type Description _0 contract IERC20 undefined
Returns Name Type Description _0 contract IStrategy undefined
permitToken function permitToken(contract IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external nonpayable Copy Call wrapper that performs ERC20.permit on token. Lookup IERC20.permit.
Parameters Name Type Description token contract IERC20 undefined from address undefined to address undefined amount uint256 undefined deadline uint256 undefined v uint8 undefined r bytes32 undefined s bytes32 undefined
registerProtocol function registerProtocol() external nonpayable Copy Other contracts need to register with this master contract so that users can
approve them for the BentoBox.
setMasterContractApproval function setMasterContractApproval(address user, address masterContract, bool approved, uint8 v, bytes32 r, bytes32 s) external nonpayable Copy Approves or revokes a masterContract access to user funds.
Parameters Name Type Description user address The address of the user that approves or revokes access. masterContract address The address who gains or loses access. approved bool If True approves access. If False revokes access. v uint8 Part of the signature. (See EIP-191) r bytes32 Part of the signature. (See EIP-191) s bytes32 Part of the signature. (See EIP-191)
setStrategy function setStrategy(contract IERC20 token, contract IStrategy newStrategy) external nonpayable Copy Sets the contract address of a new strategy that conforms to IStrategy for
token. Must be called twice with the same arguments. A new strategy becomes
pending first and can be activated once STRATEGY_DELAY is over.
Only the owner of this contract is allowed to change this.
Parameters Name Type Description token contract IERC20 The address of the token that maps to a strategy to change. newStrategy contract IStrategy The address of the contract that conforms to IStrategy.
setStrategyTargetPercentage function setStrategyTargetPercentage(contract IERC20 token, uint64 targetPercentage_) external nonpayable Copy Sets the target percentage of the strategy for token.
Only the owner of this contract is allowed to change this.
Parameters Name Type Description token contract IERC20 The address of the token that maps to a strategy to change. targetPercentage_ uint64 The new target in percent. Must be lesser or equal to MAX_TARGET_PERCENTAGE.
strategy function strategy(contract IERC20) external view returns (contract IStrategy) Copy Parameters Name Type Description _0 contract IERC20 undefined
Returns Name Type Description _0 contract IStrategy undefined
strategyData function strategyData(contract IERC20) external view returns (uint64 strategyStartDate, uint64 targetPercentage, uint128 balance) Copy Parameters Name Type Description _0 contract IERC20 undefined
Returns Name Type Description strategyStartDate uint64 undefined targetPercentage uint64 undefined balance uint128 undefined
toAmount function toAmount(contract IERC20 token, uint256 share, bool roundUp) external view returns (uint256 amount) Copy Helper function represent shares back into the token amount.
Parameters Name Type Description token contract IERC20 The ERC-20 token. share uint256 The amount of shares. roundUp bool If the result should be rounded up.
Returns Name Type Description amount uint256 The share amount back into native representation.
toShare function toShare(contract IERC20 token, uint256 amount, bool roundUp) external view returns (uint256 share) Copy Helper function to represent an amount of token in shares.
Parameters Name Type Description token contract IERC20 The ERC-20 token. amount uint256 The token amount. roundUp bool If the result share should be rounded up.
Returns Name Type Description share uint256 The token amount represented in shares.
totals function totals(contract IERC20) external view returns (uint128 elastic, uint128 base) Copy Parameters Name Type Description _0 contract IERC20 undefined
Returns Name Type Description elastic uint128 undefined base uint128 undefined
transfer function transfer(contract IERC20 token, address from, address to, uint256 share) external nonpayable Copy Transfer shares from a user account to another one.
Parameters Name Type Description token contract IERC20 The ERC-20 token to transfer. from address which user to pull the tokens. to address which user to push the tokens. share uint256 The amount of token in shares.
transferMultiple function transferMultiple(contract IERC20 token, address from, address[] tos, uint256[] shares) external nonpayable Copy Transfer shares from a user account to multiple other ones.
Parameters Name Type Description token contract IERC20 The ERC-20 token to transfer. from address which user to pull the tokens. tos address[] The receivers of the tokens. shares uint256[] The amount of token in shares for each receiver in tos.
transferOwnership function transferOwnership(address newOwner, bool direct, bool renounce) external nonpayable Copy Transfers ownership to newOwner. Either directly or claimable by the new
pending owner. Can only be invoked by the current owner.
Parameters Name Type Description newOwner address Address of the new owner. direct bool True if newOwner should be set immediately. False if newOwner needs to use claimOwnership. renounce bool Allows the newOwner to be address(0) if direct and renounce is True. Has no effect otherwise.
whitelistMasterContract function whitelistMasterContract(address masterContract, bool approved) external nonpayable Copy Enables or disables a contract for approval without signed message.
Parameters Name Type Description masterContract address undefined approved bool undefined
whitelistedMasterContracts function whitelistedMasterContracts(address) external view returns (bool) Copy masterContract to whitelisted state for approval without signed message
Parameters Name Type Description _0 address undefined
Returns Name Type Description _0 bool undefined
withdraw function withdraw(contract IERC20 token_, address from, address to, uint256 amount, uint256 share) external nonpayable returns (uint256 amountOut, uint256 shareOut) Copy Withdraws an amount of token from a user account.
Parameters Name Type Description token_ contract IERC20 The ERC-20 token to withdraw. from address which user to pull the tokens. to address which user to push the tokens. amount uint256 of tokens. Either one of amount or share needs to be supplied. share uint256 Like above, but share takes precedence over amount.
Returns Name Type Description amountOut uint256 undefined shareOut uint256 undefined
Events LogDeploy event LogDeploy(address indexed masterContract, bytes data, address indexed cloneAddress) Copy Parameters Name Type Description masterContract indexed address undefined data bytes undefined cloneAddress indexed address undefined
LogDeposit event LogDeposit(contract IERC20 indexed token, address indexed from, address indexed to, uint256 amount, uint256 share) Copy Parameters Name Type Description token indexed contract IERC20 undefined from indexed address undefined to indexed address undefined amount uint256 undefined share uint256 undefined
LogFlashLoan event LogFlashLoan(address indexed borrower, contract IERC20 indexed token, uint256 amount, uint256 feeAmount, address indexed receiver) Copy Parameters Name Type Description borrower indexed address undefined token indexed contract IERC20 undefined amount uint256 undefined feeAmount uint256 undefined receiver indexed address undefined
LogRegisterProtocol event LogRegisterProtocol(address indexed protocol) Copy Parameters Name Type Description protocol indexed address undefined
LogSetMasterContractApproval event LogSetMasterContractApproval(address indexed masterContract, address indexed user, bool approved) Copy Parameters Name Type Description masterContract indexed address undefined user indexed address undefined approved bool undefined
LogStrategyDivest event LogStrategyDivest(contract IERC20 indexed token, uint256 amount) Copy Parameters Name Type Description token indexed contract IERC20 undefined amount uint256 undefined
LogStrategyInvest event LogStrategyInvest(contract IERC20 indexed token, uint256 amount) Copy Parameters Name Type Description token indexed contract IERC20 undefined amount uint256 undefined
LogStrategyLoss event LogStrategyLoss(contract IERC20 indexed token, uint256 amount) Copy Parameters Name Type Description token indexed contract IERC20 undefined amount uint256 undefined
LogStrategyProfit event LogStrategyProfit(contract IERC20 indexed token, uint256 amount) Copy Parameters Name Type Description token indexed contract IERC20 undefined amount uint256 undefined
LogStrategyQueued event LogStrategyQueued(contract IERC20 indexed token, contract IStrategy indexed strategy) Copy Parameters Name Type Description token indexed contract IERC20 undefined strategy indexed contract IStrategy undefined
LogStrategySet event LogStrategySet(contract IERC20 indexed token, contract IStrategy indexed strategy) Copy Parameters Name Type Description token indexed contract IERC20 undefined strategy indexed contract IStrategy undefined
LogStrategyTargetPercentage event LogStrategyTargetPercentage(contract IERC20 indexed token, uint256 targetPercentage) Copy Parameters Name Type Description token indexed contract IERC20 undefined targetPercentage uint256 undefined
LogTransfer event LogTransfer(contract IERC20 indexed token, address indexed from, address indexed to, uint256 share) Copy Parameters Name Type Description token indexed contract IERC20 undefined from indexed address undefined to indexed address undefined share uint256 undefined
LogWhiteListMasterContract event LogWhiteListMasterContract(address indexed masterContract, bool approved) Copy Parameters Name Type Description masterContract indexed address undefined approved bool undefined
LogWithdraw event LogWithdraw(contract IERC20 indexed token, address indexed from, address indexed to, uint256 amount, uint256 share) Copy Parameters Name Type Description token indexed contract IERC20 undefined from indexed address undefined to indexed address undefined amount uint256 undefined share uint256 undefined
OwnershipTransferred event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) Copy Parameters Name Type Description previousOwner indexed address undefined newOwner indexed address undefined