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
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
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
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)
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
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
newAdminAddress
address
The address of the new admin
setGovernance
function setGovernance(address newGovernanceAddress)
Sets a new governance contract address
newGovernanceAddress
address
The address of the new governance contract
setBaker
function setBaker(option(key_hash) baker)
Sets a baker for the Treasury
baker
option(key_hash)
Key hash of the baker
setName
function setName(string treasuryName)
Sets a reference name for the Treasury
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
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
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
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
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
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.
unpauseAll
function unpauseAll()
Unpauses all entrypoints in the contract.
togglePauseEntrypoint
function togglePauseEntrypoint(treasuryPausableEntrypointType targetEntrypoint, unit empty)
Toggles the pausing of a specific entrypoint in the contract
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
Last updated