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
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
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.
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
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.
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.
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.
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.
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.
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
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.
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, breakGlassConfigActionType breakGlassConfigAction)
Updates the config variables on the Council Contract
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
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
mistakenTransfer
function mistakenTransfer(transferActionType transferList)
Transfers any mav or token that may have mistakenly been sent to this contract
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
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
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