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
  • Internal Vestee Control Entrypoints
  • Vestee Entrypoints
  • Housekeeping Entrypoints
  • View Methods
  1. Smart Contracts
  2. Smart Contracts Overview

Vesting Contract

Aligning Interests, Ensuring Longevity

At the core of Maven Finance's commitment to fostering a sustainable, engaged community of stakeholders, lies the Vesting Contract.

This smart contract manages the release of MVN tokens to team members, advisors, investors, and other vested parties, in a manner that aligns long-term incentives and bolsters platform stability.

The Vesting Contract details a clear and predetermined schedule for the release of tokens, ensuring that the beneficiaries remain committed to the project's success over an extended period.

This crucial element of the Maven Finance ecosystem underpins the platform's trustworthiness, security, and integrity.

Internal Vestee Control Entrypoints

addVestee

function addVestee(address vesteeAddress, nat totalAllocatedAmount, nat cliffInMonths, nat vestingInMonths)

Adds a new vestee to the Vesting Contract with the given parameters

Can be called only by the admin or the Council Contract

Param Name
Type
Description

vesteeAddress

address

The user address of the new vestee

totalAllocatedAmount

nat

The total allocated amount that will be given to the vestee over the vesting duration

cliffInMonths

nat

The number of months before a vestee may start to vest his tokens. Cannot be greater than vestingInMonths.

vestingInMonths

nat

The total duration in months for the vesting period. Has to be greater than 0.

removeVestee

function removeVestee(address vesteeAddress)

Removes an existing vestee from the Vesting Contract

Can be called only by the admin or the Council Contract

Param Name
Type
Description

vesteeAddress

address

The user address of the vestee to be removed

updateVestee

function updateVestee(address vesteeAddress, nat newTotalAllocatedAmount, nat newCliffInMonths, nat newVestingInMonths)

Updates the record of an existing vestee

Can be called only by the admin or the Council Contract

Param Name
Type
Description

vesteeAddress

address

The user address of the vestee to be updated

newTotalAllocatedAmount

nat

The new total allocated amount that will be given to the vestee over the vesting duration

newCliffInMonths

nat

The new number of months before a vestee may start to vest his tokens. Cannot be greater than newVestingInMonths.

newVestingInMonths

nat

The new total duration in months for the vesting period. Has to be greater than 0.

toggleVesteeLock

function toggleVesteeLock(address vesteeAddress)

Toggles a lock on an existing vestee. If lock is enabled, the vestee will not be able to vest or claim his tokens.

Can be called only by the admin or the Council Contract

Param Name
Type
Description

vesteeAddress

address

The user address of the vestee where lock status is to be toggled

Vestee Entrypoints

claim

function claim()

Can be called by any vestee to claim any vested tokens

Can be called only by a Vestee

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

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

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

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

View Methods

getAdmin

function getAdmin()

Returns the contract admin

getGovernanceAddress

function getGovernanceAddress()

Returns the contract governance address

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

getTotalVestedAmount

function getTotalVestedAmount()

Returns the total amount that has been vested thus far

getVesteeBalanceOpt

function getVesteeBalanceOpt(address vesteeAddress)

Returns the total vesting remainder for the vestee if found

getVesteeOpt

function getVesteeOpt(address vesteeAddress)

Returns the vestee record of the given vesteeAddress if found, else returns none

getLambdaOpt

function getLambdaOpt(string lambdaName)

Returns a lambda in the contract for the given lambda name, else returns none

PreviousmToken ContractNextGlossary of Terms

Last updated 6 months ago