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
  • Council Actions For Internal Control
  • Council Actions For Vesting
  • Council Actions For Financial Governance
  • Council Signing of Actions
  • Housekeeping Entrypoints
  • View Methods
  1. Smart Contracts
  2. Smart Contracts Overview

Council Contract

Council Contract: Balancing Decentralized Governance with Practical Execution

The Council Contract oversees the selection and actions of the Maven Council, a group of dedicated community representatives who facilitate the Maven Finance's growth and development.

The Council Contract manages the Council's functionalities, enabling the addition and removal of members, changes in membership, and the setting of bakers.

Further, it also governs actions related to vesting and financial governance, ensuring a fair and transparent administration of Maven Finance.

Council Actions For Internal Control

councilActionAddMember

function councilActionAddMember(address memberAddress, string memberName, string memberWebsite, string memberImage)

Creates a council action to add a new council member

Can be called only by a Council Member

Param Name
Type
Description

memberAddress

address

The user address of the new council member

memberName

string

The name of the new council member

memberWebsite

string

The website of the new council member

memberImage

string

A url to the image of the new council member

councilActionRemoveMember

function councilActionRemoveMember(address memberAddress)

Creates a council action to remove an existing council member

Can be called only by a Council Member

Param Name
Type
Description

memberAddress

address

The user address of the council member to be removed

councilActionChangeMember

function councilActionChangeMember(address oldCouncilMemberAddress, address newCouncilMemberAddress, string newCouncilMemberName, string newCouncilMemberWebsite, string newCouncilMemberImage)

Creates a council action to change an existing council member with a new council member. This preserves the number of council members.

Can be called only by a Council Member

Param Name
Type
Description

oldMemberAddress

address

The user address of the council member to be removed

newMemberAddress

address

The user address of the new council member

newCouncilMemberName

string

The name of the new council member

newCouncilMemberWebsite

string

The website of the new council member

newCouncilMemberImage

string

A url to the image of the new council member

Council Actions For Vesting

councilActionAddVestee

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

Creates a council action to add a new vestee

Can be called only by a Council Member

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.

councilActionRemoveVestee

function councilActionRemoveVestee(address vesteeAddress)

Creates a council action to remove an existing vestee

Can be called only by a Council Member

Param Name
Type
Description

vesteeAddress

address

The user address of the vestee to be removed

councilActionUpdateVestee

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

Creates a council action to update an existing vestee

Can be called only by a Council Member

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.

councilActionToggleVesteeLock

function councilActionToggleVesteeLock(address vesteeAddress)

Creates a council action to toggle 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 a Council Member

Param Name
Type
Description

vesteeAddress

address

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

Council Actions For Financial Governance

councilActionTransfer

function councilActionTransfer(address receiverAddress, address tokenContractAddress, nat tokenAmount, string tokenType, nat tokenId, string purpose)

Creates a council action for the transfer of tokens from the Council Contract to a recipient

Can be called only by a Council Member

Param Name
Type
Description

receiverAddress

address

The user address of the receiver of the transfer

tokenContractAddress

address

The token contract address of the token to be transferred

tokenAmount

nat

The total amount of tokens to be transferred

tokenType

string

Type of the token in string: "MVRK", "MRC-10", "MRC-20"

tokenId

nat

The token Id of the token to be transferred

purpose

string

A description of the purpose of this transfer council action

councilActionRequestTokens

function councilActionRequestTokens(address treasuryAddress, address receiverAddress, address tokenContractAddress, string tokenName, nat tokenAmount, string tokenType, nat tokenId, string purpose)

Creates a council action to request tokens from a specified treasury contract.

If successfully voted on by the council, a financial governance request will automatically be created to be voted on by satellites. If sufficient votes from satellites are gathered, the financial governance request will be executed.

Can be called only by a Council Member

Param Name
Type
Description

treasuryAddress

address

The address of the treasury contract where tokens will be requested from

receiverAddress

address

The address of the receiver where tokens will be transferred to

tokenContractAddress

address

The token contract address of the token to be requested

tokenName

string

The reference name of the token to be requested

tokenAmount

nat

The total amount of tokens to be requested

tokenType

string

Type of the token in string: "MVRK", "MRC-10", "MRC-20"

tokenId

nat

The token Id of the token to be requested

purpose

string

A description of the purpose of this council action to request tokens

councilActionRequestMint

function councilActionRequestTokens(address treasuryAddress, address receiverAddress, nat tokenAmount, string purpose)

Creates a council action to request the minting of MVN tokens from a specified treasury contract.

If successfully voted on by the council, a financial governance request will automatically be created to be voted on by satellites. If sufficient votes from satellites are gathered, the financial governance request will be executed.

Can be called only by a Council Member

Param Name
Type
Description

treasuryAddress

address

The address of the treasury contract where new MVN tokens will be minted from

receiverAddress

address

The address of the receiver where tokens will be minted to

tokenAmount

nat

The total amount of MVN tokens to be minted

purpose

string

A description of the purpose of this council action to request the minting of new tokens

councilActionSetContractBaker

function councilActionSetContractBaker(address targetContractAddress, option(key_hash) keyHash)

Creates a council action to set a baker on the target contract address.

If successfully voted on by the council, a financial governance request will automatically be created to be voted on by satellites. If sufficient votes from satellites are gathered, the financial governance request will be executed.

Can be called only by a Council Member

Param Name
Type
Description

targetContractAddress

address

The target address for which a new baker will be set

keyHash

option(key_hash)

Key hash of the baker

councilActionDropFinancialReq

function councilActionDropFinancialReq(nat financialRequestId)

Creates a council action to drop a financial request

If successfully voted on by the council, the financial governance request will be dropped from the Governance Financial contract.

Can be called only by a Council Member

Param Name
Type
Description

financialRequestId

nat

The id of the financial request to be dropped on the Governance Financial Contract

Council Signing of Actions

flushAction

function flushAction(nat councilActionId)

Creates a council action to flush the specified council action id

Can be called only by a Council Member

Param Name
Type
Description

councilActionId

nat

The id of the council action to be flushed

signAction

function signAction(nat councilActionId)

Creates a council action to sign the specified council action id.

When the threshold number of signatures from Council members has been reached, the council action will automatically be executed by the last signer.

Can be called only by a Council Member

Param Name
Type
Description

councilActionId

nat

The id of the council action to be signed

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, councilConfigActionType councilConfigAction)

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

councilConfigAction

councilConfigActionType: | unit ConfigThreshold | unit ConfigActionExpiryDays | unit ConfigCouncilNameMaxLength | unit ConfigCouncilWebsiteMaxLength | unit ConfigCouncilImageMaxLength | unit ConfigRequestTokenNameMaxLength | unit ConfigRequestPurposeMaxLength

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

updateCouncilMemberInfo

function updateCouncilMemberInfo(string memberName, string memberWebsite, string memberImage)

Updates a council member info

Can be called only by a Council Member

Param Name
Type
Description

memberName

string

The updated name of the council member

memberWebsite

string

The updated website of the council member

memberImage

string

The updated url to the image of the council member

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

getConfig

function getConfig()

Returns the contract configuration parameters

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

getCouncilMemberOpt

function getCouncilMemberOpt(address councilMemberAddress)

Returns the council member record if it exists, else returns none

getCouncilActionOpt

function getCouncilActionOpt(nat councilActionId)

Returns the council action record if it exists, else returns none

getCouncilActionSignerOpt

function getCouncilActionSignerOpt(nat councilActionId * address councilMemberAddress)

Returns unit if council member has signed the given council action, else returns none

getActionCounter

function getActionCounter()

Returns the latest action counter

getLambdaOpt

function getLambdaOpt(string lambdaName)

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

PreviousGovernance Proxy ContractNextTreasury Contract

Last updated 6 months ago