Maven Finance Docs
  • Introduction
    • Getting Started
  • Maven Finance
    • Staking
      • Benefits and Fees of Staking
      • How To Stake and Unstake
    • Satellites & Oracles
      • Delegating To Satellites
      • Satellite Registration
      • Oracle Nodes
    • Earn & Borrow
      • Lending & mTokens
      • Multi-Collateral Vaults
        • Liquidation
      • Interest Rate Model
    • Yield Farms
      • Maven Finance's Yield Farms
      • Yield Farming Dashboard
    • Governance
      • Governance Rounds
        • Proposal Round
        • Voting Round
        • Timelock Round
      • Emergency Governance
      • Financial Governance
      • Satellite Governance
    • Council
      • Management of Finances
      • Management of Vestees
    • Treasury
  • Smart Contracts
    • Smart Contracts Overview
      • Doorman Contract
      • Delegation Contract
      • Aggregator Contract
      • Aggregator Factory Contract
      • Farm Contract
      • Farm Factory Contract
      • Governance Contract
      • Governance Financial Contract
      • Governance Satellite Contract
      • Governance Proxy Contract
      • Council Contract
      • Treasury Contract
      • Treasury Factory Contract
      • Break Glass Contract
      • Emergency Governance Contract
      • Lending Controller Contract
      • Vault Contract
      • Vault Factory Contract
      • MVN Token Contract
      • mToken Contract
      • Vesting Contract
  • Glossary
    • Glossary of Terms
Powered by GitBook
On this page
  • Farm Entrypoints
  • Farm Admin Entrypoints
  • Housekeeping Entrypoints
  • BreakGlass Entrypoints
  • View Methods
  1. Smart Contracts
  2. Smart Contracts Overview

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

Param Name
Type
Description

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

Param Name
Type
Description

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

Param Name
Type
Description

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

Can be called only by the admin (i.e. the governance proxy contract)

Param Name
Type
Description

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

Can be called only by the admin (i.e. the governance proxy contract)

Housekeeping Entrypoints

setAdmin

function setAdmin(address newAdminAddress)

Sets a new admin address for the contract

Can be called only by the admin or the governance contract address

Param Name
Type
Description

newAdminAddress

address

The address of the new admin

setGovernance

function setGovernance(address newGovernanceAddress)

Sets a new governance contract address

Can be called only by the admin or the governance contract address

Param Name
Type
Description

newGovernanceAddress

address

The address of the new governance contract

setName

function setName(string updatedContractName)

Sets a new name for the farm contract

Can be called only by the admin (i.e. the governance proxy contract)

Param Name
Type
Description

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

Can be called only by the admin (i.e. the governance proxy contract)

Param Name
Type
Description

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

Can be called only by the admin (i.e. the governance proxy contract)

Param Name
Type
Description

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

Can be called only by the admin (i.e. the governance proxy contract)

Param Name
Type
Description

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

Can be called only by the admin (i.e. the governance proxy contract)

Param Name
Type
Description

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

Can be called only by the admin or the governance satellite contract

Param Name
Type
Description

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

Can be called only by the admin (i.e. the governance proxy contract)

Param Name
Type
Description

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.

Can be called only by the admin or the governance contract address

unpauseAll

function unpauseAll()

Unpauses all entrypoints in the contract.

Can be called only by the admin or the governance contract address

togglePauseEntrypoint

function togglePauseEntrypoint(farmPausableEntrypointType targetEntrypoint, unit empty)

Toggles the pausing of a specific entrypoint in the contract

Can be called only by the admin (i.e. the governance proxy contract)

Param Name
Type
Description

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

PreviousAggregator Factory ContractNextFarm Factory Contract

Last updated 6 months ago