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

Vault Factory Contract

Efficient and Scalable Vault Deployment

The Vault Factory Contract on Maven Finance lays the groundwork for creating new Vault Contract instances within the the ecosystem.

This factory contract provides a standardized framework for vault deployment with optimized gas costs for every new vault creation.

The process of launching new vaults is simplified and scalable with this foundation, thus enhancing Maven Finance's peer-to-peer lending and borrowing capabilities.

Vault Factory Entrypoints

createVault

function createVault(option(key_hash) baker, string loanTokenName, string vaultName, option(list(depositType deposit)) collateral, depositorsType depositors)

Creates a new standard vault contract

Param Name
Type
Description

baker

option(key_hash)

Key hash of the baker

loanTokenName

string

The name of the loan token which can be borrowed by the vault. Only one loan token can be borrowed by each vault.

vaultName

string

The reference name of the vault

collateral

option(list(depositType deposit))

A list of collateral tokens that can be deposited into the vault upon its creation

deposit

depositType: nat amount, string collateralTokenName

The information required to deposit collateral tokens

amount

nat

The total amount of the collateral token to be deposited

collateralTokenName

string

The reference collateral token name stored on the Lending Controller

depositors

depositorsType: | unit Any | set(address) Whitelist

The variant depositor type to be set for the vault

Any

unit

Allows any user to deposit into the vault

Whitelist

set(address)

The set of whitelisted user addresses that can deposit into the vault

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

updateConfig

function updateConfig(nat newConfigValue, vaultFactoryConfigActionType vaultFactoryConfigAction)

Updates the config variables on the Vault Factory 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

vaultFactoryConfigAction

vaultFactoryConfigActionType: | unit ConfigVaultNameMaxLength | unit Empty

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(transferActionType transferList)

Transfers any mav 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

transferList

transferActionType:

list(address to_, nat tokenAmount, token tokenType)

A list of transfers of tokens to recipients

to_

address

The recipient of the mistaken 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

setLambda

function setLambda(string lambdaName, bytes func_bytes)

Sets a lambda in the Vault Factory 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

setProductLambda

function setProductLambda(string lambdaName, bytes func_bytes)

Sets a lambda in the vault lambda ledger 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 vault factory contract

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

unpauseAll

function unpauseAll()

Unpauses all entrypoints in the vault factory contract

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

togglePauseEntrypoint

function togglePauseEntrypoint(vaultFactoryPausableEntrypointType 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

vaultFactoryPausableEntrypointType: | bool CreateVault | unit Empty

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

getConfig

function getConfig()

Returns the contract configuration parameters

getBreakGlassConfig

function getBreakGlassConfig()

Returns the contract configuration parameters

getWhitelistContractOpt

function getWhitelistContractOpt(address contractAddress)

Returns unit if 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

getVaultLambdaOpt

function getVaultLambdaOpt(string lambdaName)

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

PreviousVault ContractNextMVN Token Contract

Last updated 6 months ago