Break Glass Contract

Rapid Response for Decentralized Finance

The Break Glass Contract is an essential component of Maven Finance's security measures. This contract is a fail-safe mechanism that ensures the continuity of the Maven Finance ecosystem, even in the event of unexpected or emergency situations.

Primarily, the Break Glass Contract allows for swift and decisive action, bypassing regular governance processes when the security or stability of the Maven ecosystem is at stake.

It empowers the community to take immediate action, guaranteeing the overall resilience and robustness of the Maven Finance platform.

Break Glass Council Actions For Internal Control

councilActionAddMember

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

Creates a council action to add a new break glass council member

Can be called only by a Break Glass 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 break glass council member

Can be called only by a Break Glass 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 break glass council member with a new council member. This preserves the number of council members.

Can be called only by a Break Glass 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

Break Glass Actions

breakGlass

function breakGlass()

Triggers break glass and sets the glassBroken boolean to True

Can be called only by the Emergency Governance Contract

Break Glass Actions: Glass Broken Required

propagateBreakGlass

function propagateBreakGlass(set(address) contractAddressSet)

This creates a propagateBreakGlass action on the Break Glass Contract. When the threshold number of signatures from Break Glass Council members has been reached, it will execute and propagate break glass across the given set of Maven contract addresses.

The set of contract addresses will be sent to the Maven Governance Contract. Thereafter, the admin of each contract will be set to the Break Glass Contract and all entrypoints within the contract will be paused.

Can be called only by a Break Glass Council Member when glassBroken is True

Param Name
Type
Description

contractAddressSet

set(address)

A set of Maven contract addresses to propagate break glass

setContractsAdmin

function setContractsAdmin(set(address) contractAddressSet, address newAdminAddress)

This creates a setContractsAdmin action on the Break Glass Contract. When the threshold number of signatures from Break Glass Council members has been reached, it will execute and set a new admin address on each of the contracts within the contract address set.

The new admin address will have to be a valid admin address in which it is the Governance Proxy Contract or an address within the whitelist developers set on the Governance Contract.

Can be called only by a Break Glass Council Member when glassBroken is True

Param Name
Type
Description

contractAddressSet

set(address)

A set of Maven contract addresses

newAdminAddress

address

A valid new admin address

pauseAllEntrypoints

function pauseAllEntrypoints(set(address) contractAddressSet)

This creates a pauseAllEntrypoints action on the Break Glass Contract.

When the threshold number of signatures from Break Glass Council members has been reached, it will execute and call the pauseAll entrypoint on each of the contracts within the contract address set.

Can be called only by a Break Glass Council Member when glassBroken is True

Param Name
Type
Description

contractAddressSet

set(address)

A set of Maven contract addresses

unpauseAllEntrypoints

function unpauseAllEntrypoints(set(address) contractAddressSet)

This creates a unpauseAllEntrypoints action on the Break Glass Contract.

When the threshold number of signatures from Break Glass Council members has been reached, it will execute and call the unpauseAll entrypoint on each of the contracts within the contract address set.

Can be called only by a Break Glass Council Member when glassBroken is True

Param Name
Type
Description

contractAddressSet

set(address)

A set of Maven contract addresses

removeBreakGlassControl

function removeBreakGlassControl(set(address) contractAddressSet)

This creates a removeBreakGlassControl action on the Break Glass Contract.

When the threshold number of signatures from Break Glass Council members has been reached, it will execute and remove the Break Glass Control.

When executed, the admin of the Break Glass Contract and contracts in the contract address set will be reset back to the Governance Proxy Contract Address, and the glassBroken boolean will be reset back to False.

Can be called only by a Break Glass Council Member when glassBroken is True

Param Name
Type
Description

contractAddressSet

set(address)

A set of Maven contract addresses

Break Glass 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 Break Glass 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 Break Glass 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, breakGlassConfigActionType breakGlassConfigAction)

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

breakGlassConfigAction

breakGlassConfigActionType: | unit ConfigThreshold | unit ConfigActionExpiryDays | unit ConfigCouncilNameMaxLength | unit ConfigCouncilWebsiteMaxLength | unit ConfigCouncilImageMaxLength

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) MRC-20 | (address tokenContractAddress, nat tokenId) MRC-20

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

updateCouncilMemberInfo

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

Updates a council member info

Can be called only by a Break Glass 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

getGlassBroken

function getGlassBroken()

Returns the glass broken boolean

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