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
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
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.
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
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
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
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.
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
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.
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.
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.
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.
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
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.
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
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
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
updateConfig
function updateConfig(nat newConfigValue, councilConfigActionType councilConfigAction)
Updates the config variables on the Council Contract
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
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
updateCouncilMemberInfo
function updateCouncilMemberInfo(string memberName, string memberWebsite, string memberImage)
Updates a council member info
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
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
Last updated