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
  • Treasury Entrypoints
  • Staking Entrypoints
  • Housekeeping Entrypoints
  • BreakGlass Entrypoints
  • View Methods
  1. Smart Contracts
  2. Smart Contracts Overview

Treasury Contract

Driving Financial Operations with the Treasury Contract

The Treasury Contract is a cornerstone of the Maven Finance ecosystem. It manages the platform's reserve of funds, effectively acting as the financial hub of Maven Finance.

Ensuring the platform's financial stability, this contract is responsible for safeguarding the assets that fuel Maven Finance's array of DeFi services.

As Maven Finance expands its operations, this Treasury Contract plays a key role in facilitating transactions, disbursing funds, and managing inflow from various sources. Multiple Treasury Contracts may be deployed, each with its own mandate of managing the funds within.

From operational expenditures to community incentives, the Treasury Contract stands as the financial gatekeeper of the Maven Finance ecosystem.

Treasury Entrypoints

transfer

function transfer(transferActionType transferList)

Transfers tokens from the Treasury to the specified receiver address

Can be called only be whitelisted addresses set by governance

Param Name
Type
Description

transferList

transferActionType:

list(address to_, nat tokenAmount, token tokenType)

A list of transfers of tokens to recipients

to_

address

The recipient of the transfer

tokenAmount

nat

The amount of tokens to be transferred

token

tokenType: | unit Mav | (address tokenContractAddress) Fa12 | (address tokenContractAddress, nat tokenId) MRC-20

The token type of the token to be transferred, corresponding to either Mav, MRC-10, or MRC-20

mintMvnAndTransfer

function mintMvnAndTransfer(address receiverAddress, nat mintAmount)

Mints new MVN Tokens and transfers them to the address specified

Can be called only be whitelisted addresses set by governance

Param Name
Type
Description

receiverAddress

address

The address to receive the new minted MVN tokens

mintAmount

nat

The amount of MVN tokens to be minted

Staking Entrypoints

updateTokenOperators

function updateTokenOperators(address tokenContractAddress, list(updateOperatorVariantType updateOperatorVariant) updateOperatorsList)

Updates the operators for the specified token for the Treasury Contract

Can be called only by the admin

Param Name
Type
Description

tokenContractAddress

address

The address of the token contract to update operators on

updateOperatorsList

list(updateOperatorVariantType updateOperatorVariant)

A list of updateOperators transactions to be processed

updateOperatorVariant

updateOperatorVariantType: | operatorParameterType Add_operator | operatorParameterType Remove_operator

Specify whether an operator should be added or removed

Add_operator

operatorParameterType: address owner, address operator, nat tokenId

Authorises an operator to act on behalf of the owner for the given token id

Remove_operator

operatorParameterType: address owner, address operator, nat tokenId

Removes the authority of an operator to act on behalf of the owner for the given token id

owner

address

Address of the user to set the operator on

operator

address

Address of the operator to be authorized

tokenId

nat

Id of the token where the operator will be set

stakeTokens

function stakeTokens(address stakingContractAddress, nat stakeAmount)

Stakes the amount of tokens specified from the Treasury to the Staking Contract Address (e.g. Doorman Contract)

Can be called only by the admin

Param Name
Type
Description

stakingContractAddress

address

The contract address of the Staking Contract

stakeAmount

nat

The amount of tokens to be staked

unstakeTokens

function unstakeTokens(address stakingContractAddress, nat unstakeAmount)

Unstakes the given amount of tokens from the Staking Contract Address (e.g. Doorman Contract) to the Treasury

Can be called only by the admin

Param Name
Type
Description

stakingContractAddress

address

The contract address of the Staking Contract

unstakeAmount

nat

The amount of tokens to be unstaked

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

setBaker

function setBaker(option(key_hash) baker)

Sets a baker for the Treasury

Can be called only by the admin or the Governance Financial contract address

Param Name
Type
Description

baker

option(key_hash)

Key hash of the baker

setName

function setName(string treasuryName)

Sets a reference name for the Treasury

Can be called only by the admin

Param Name
Type
Description

treasuryName

string

Reference name of the Treasury 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

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

updateWhitelistTokenContracts

function updateWhitelistTokenContracts(address whitelistTokenContractAddress, updateType update)

Add, update or remove a whitelist token contract in the whitelistTokenContracts map in the storage

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

Param Name
Type
Description

whitelistTokenContractAddress

address

The token contract address to be updated in the whitelist token contracts bigmap

updateType

updateType: | unit Update | unit Remove

Specifies whether the whitelistTokenContractAddress should be updated or removed from the whitelist token 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

BreakGlass Entrypoints

pauseAll

function pauseAll()

Pauses all entrypoints in the contract.

Can be called only by the admin, the governance contract address, or the Treasury Factory contract address

unpauseAll

function unpauseAll()

Unpauses all entrypoints in the contract.

Can be called only by the admin, the governance contract address, or the Treasury Factory contract address

togglePauseEntrypoint

function togglePauseEntrypoint(treasuryPausableEntrypointType targetEntrypoint, unit empty)

Toggles the pausing of a specific entrypoint in the contract

Can be called only by the admin

Param Name
Type
Description

targetEntrypoint

treasuryPausableEntrypointType: | bool Transfer | bool MintMvnAndTransfer | bool StakeMvn | bool UnstakeMvn

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 reference name for the Treasury Contract

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

getWhitelistTokenContractOpt

function getWhitelistTokenContractOpt(address contractAddress)

Returns unit if token contract address is whitelisted, else returns none

getLambdaOpt

function getLambdaOpt(string lambdaName)

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

PreviousCouncil ContractNextTreasury Factory Contract

Last updated 6 months ago