Farm Contract
Maven Finance's Farm Contract: The Engine of Yield Farming Success
As the cornerstone of the platform's yield farming capabilities, the Farm contract manages and governs the operations associated with the Maven Finance Yield Farms.
The Farm contract oversees the allocation of MVN to yield farms, the deposit of liquidity provider tokens, the calculation of yield rates, and the distribution of farming rewards.
It ensures a seamless and efficient yield farming process, thereby contributing to Maven Finance's promise of maximized DeFi returns for its users.
Farm Entrypoints
deposit
function deposit(nat depositAmount)
Deposits the given amount of LP tokens into the farm to earn rewards
depositAmount
nat
The amount of LP tokens to be deposited into the farm
withdraw
function withdraw(nat withdrawAmount)
Withdraws the given amount of LP tokens from the farm back to the sender
withdrawAmount
nat
The amount of LP tokens to be withdrawn from the farm
claim
function claim(set(address) claimSet)
Claim farm rewards for the given users in the farm
claimSet
set(address)
The set of user addresses to claim farm rewards for
Farm Admin Entrypoints
initFarm
function initFarm(nat totalBlocks, nat currentRewardsPerBlock, bool forceRewardFromTransfer, bool infinite)
Initialises a farm with the given parameters
totalBlocks
nat
The total number of blocks for which farm rewards will be given out for
currentRewardsPerBlock
nat
The amount of rewards to be earned per block
forceRewardFromTransfer
bool
A boolean to specify if a farm should transfer or mint rewards from the farmTreasury to users. If set to True, there will be no minting of new MVN tokens as rewards.
infinite
bool
A boolean to specify if a farm should run continuously without end
closeFarm
function closeFarm()
Closes the farm
Housekeeping Entrypoints
setAdmin
function setAdmin(address newAdminAddress)
Sets a new admin address for the contract
newAdminAddress
address
The address of the new admin
setGovernance
function setGovernance(address newGovernanceAddress)
Sets a new governance contract address
newGovernanceAddress
address
The address of the new governance contract
setName
function setName(string updatedContractName)
Sets a new name for the farm contract
updatedContractName
string
The new name for this farm contract, subject to the max length as specified in the farm factory config farmNameMaxLength variable
updateMetadata
function updateMetadata(string key, bytes hash)
Replace the hash of the contract metadata based on the provided key
key
string
The key in the metadata bigmap to be updated
hash
bytes
The hash of the metadata key
updateConfig
function updateConfig(nat newConfigValue, farmConfigActionType farmConfigAction)
Updates the config variables on the Delegation Contract
newConfigValue
nat
The new value of the config parameter
farmConfigAction
farmConfigActionType: | unit ConfigForceRewardFromTransfer | unit ConfigRewardPerBlock
The variant config variable to be updated
updateWhitelistContracts
function updateWhitelistContracts(address whitelistContractAddress, updateType update)
Add, update or remove a whitelist contract in the whitelistContracts map in the storage
whitelistContractAddress
address
The contract address to be updated in the whitelist contracts bigmap
updateType
updateType: | unit Update | unit Remove
Specifies whether the whitelistContractAddress should be updated or removed from the whitelist contracts bigmap
updateGeneralContracts
function updateGeneralContracts(string generalContractName, address generalContractAddress, updateType update)
Add, update or remove a general contract in the generalContracts map in the storage
generalContractName
string
The identifier key to be set in the general contracts bigmap which will be the general contract name in camelcase
generalContractAddress
address
The contract address to be updated in the general contracts bigmap
updateType
updateType: | unit Update | unit Remove
Specifies whether the generalContractAddress should be updated or removed from the general contracts bigmap
mistakenTransfer
function mistakenTransfer(list(address to_, nat tokenAmount, tokenType token) transferList)
Transfers any tez or token that may have mistakenly been sent to this contract
to_
address
The recipient of the mistaken transfer
tokenAmount
nat
The amount of tokens to be transferred
token
tokenType: | unit Tez | (address tokenContractAddress) Fa12 | (address tokenContractAddress, nat tokenId) Fa2
The token type of the token to be transferred, corresponding to either Tez, Fa12, or Fa2
setLambda
function setLambda(string lambdaName, bytes func_bytes)
Sets a lambda in the contract with the given bytes and name
lambdaName
string
The name of the lambda to be set
func_bytes
bytes
The data of the lambda in Michelson bytes format
BreakGlass Entrypoints
pauseAll
function pauseAll()
Pauses all entrypoints in the contract.
unpauseAll
function unpauseAll()
Unpauses all entrypoints in the contract.
togglePauseEntrypoint
function togglePauseEntrypoint(farmPausableEntrypointType targetEntrypoint, unit empty)
Toggles the pausing of a specific entrypoint in the contract
targetEntrypoint
farmPausableEntrypointType: | bool Deposit | bool Withdraw | bool Claim
The target entrypoint to be paused, and its corresponding pause boolean. If the boolean is set to True, the entrypoint will be paused.
empty
unit
A null param used to prettify interactions with this entrypoint on blockchain explorers such as better-call-dev
View Methods
getAdmin
function getAdmin()
Returns the contract admin
getGovernanceAddress
function getGovernanceAddress()
Returns the contract governance address
getName
function getName()
Returns the contract name
getConfig
function getConfig()
Returns the contract configuration parameters
getBreakGlassConfig
function getBreakGlassConfig()
Returns the break glass config parameters (which shows the pause status of entrypoints)
getWhitelistContractOpt
function getWhitelistContractOpt(address contractAddress)
Returns unit if contract address is whitelisted, else returns none
getGeneralContractOpt
function getGeneralContractOpt(string contractName)
Returns the contract address if the contract name is found, else returns none
getLastBlockUpdate
function getLastBlockUpdate()
Returns the last block level updated on the farm contract
getAccumulatedRewardsPerShare
function getAccumulatedRewardsPerShare()
Returns the accumulated rewards per share on the farm contract
getClaimedRewards
function getClaimedRewards()
Returns the total amount of rewards claimed on the farm contract
getDepositorOpt
function getDepositorOpt(address depositorAddress)
Returns the depositor record if it exists, else returns none
getOpen
function getOpen()
Returns the open bool on the farm
getInit
function getInit()
Returns the init bool on the farm
getInitBlock
function getInitBlock()
Returns the block level where the farm was initialized
getMinBlockTimeSnapshot
function getMinBlockTimeSnapshot()
Returns the minimum block time snapshot of the farm
getLambdaOpt
function getLambdaOpt(string lambdaName)
Returns a lambda in the contract for the given lambda name, else returns none
Last updated