AVS Governance
Overview
The AVS Governance contract acts as the interface of the AVS on Ethereum blockchain (L1).
The AVS Governance manages the registration and de-registration of operators, enforces governance policies, and coordinates interactions between AVS operators and various system components. The AVS Governance uses roles and access-control authorizations to manage permissions, handle operator deposits and rewards, and allow for the update of governance logic and settings. Additionally, it interfaces with other contracts for message handling, registry management, and signature verification to maintain the integrity and functionality of the AVS.
The AVS Governance handles:
Pausing and Unpausing contracts in emergency situations
Registration and deregistration of operators
Reward distribution for operators
Configuration of slashing and penalty conditions
Set supported strategies (security for AVS)
Functions
Operator Registration
These methods are used to manage Operator registration/de-registration.
Register to non-allowlisted AVSs. If the AVS registration is permissionless, anyone can register as long as they comply with the AVS' minimum requirements.
_blsKey
uint256[4]
The operator's public BLS key
_rewardsReceiver
address
The address to which operator rewards should be sent
authToken
bytes
A BLS signature (see note below)
registerOperatorToEigenLayer
It registers as an operator on EigenLayer using the provided signature and authentication token.
_eigenSig
SignatureWithSaltAndExpiry
signature details
_authToken
bytes
authentication token
Operator De-registration
To unregister an Operator from the AVS, call the following methods:
unregisterAsOperatorFromAvs
Unregister as an operator from the AVS. This method receives no arguments.
unregisterAsOperatorFromEigenLayer
Unregister as an operator from the EigenLayer. This method receives no arguments.
Operator Rewards Receiver Update
To update rewards receiver address for an Operator, call the following methods:
queueRewardsReceiverModification
Update the rewards receiver address
_newRewardsReceiver
address
New rewards receiver address
completeRewardsReceiverModification
Complete the rewards receiver address modification
Governance Methods
The governance methods are used by the AVS developers or DAO in order to control and manage their AVS governance configurations.
General AVS Configuration
setAvsName(string)
Set a human-readable identifier for your AVS contract.
_avsName
string
New AVS name
setAvsGovernanceMultisig(address)
Set the account that is authorized to invoke the governance methods.
_newAvsGovernanceMultisig
address
The new governance owner
setAvsGovernanceLogic(IAvsGovernanceLogic)
Connect an AvsLogic
contract to the governance contract. Learn more here.
_avsGovernanceLogic
IAvsGovernanceLogic
Address of an AvsLogic contract
transferAvsGovernanceMultisig
Transfer control of the AVS governance to a new multisig wallet.
_newAvsGovernanceMultisig
address
Address of the AVS governance multisig
setRewardsReceiverModificationDelay
Set the required delay before updating the rewards receiver address, by default its 7 days.
_rewardsReceiverModificationDelay
uint256
delay in milliseconds
setAvsGovernanceMultiplierSyncer
Set the address responsible for syncing the AVS governance multiplier
_newAvsGovernanceMultiplierSyncer
address
AVS governance multiplier syncing address
Consensus Configuration
setNumOfOperatorsLimit(uint256)
Limit the amount of active operators allowed on the AVS at any given moment.
_newLimitOfNumOfOperators
uint256
The new limit for the number of operators
setMinVotingPower(uint256)
Set the Minimum Voting Power required to register an operator to the AVS. Learn more here.
_minVotingPower
uint256
minimum voting power
setMaxEffectiveBalance(uint256)
Set the Maximum Effective Balance for the AVS. Learn more here.
_maxBalance
uint256
maximum effective balance
Staking Configuration
setSupportedStakingContracts(StakingContractInfo[])
Set the list of EigenLayer strategies supported by the AVS.
_stakingContractsDetails
StakingContractInfo[]
List of staking contracts supported by the AVS
setMinStakesForStakingContract(address, uint256)
Sets the minimum stake amount for a specified staking contract
_stakingContract
address
Staking contract address
_minShares
uint256
Minimum stake amount
setStakingContractMultiplier
Sets the voting power multiplier for a specified staking contract, it can only be called by Multipler syncer
multiplier
is the weight assigned to a particular staking contract, which you can configure as per your requirements for each staking contract. Multipliers directly influences voting power and must be a positive integer.
_votingPowerMultiplier
VotingPowerMultiplier
Voting power multiplier
setStakingContractMultiplierBatch
Sets the voting power multipliers for multiple staking contracts, it can only be called by Multipler syncer
_votingPowerMultipliers
VotingPowerMultiplier[]
Voting power multipliers
P2P and Authentication Settings
setIsAllowlisted
Set allow list functionality
_isAllowlisted
boolean
is allowed boolean value
setP2pAuthenticationEnabled(bool)
Enable p2p authentication for the AVS network. Learn more here.
_p2pAuthenticationEnabled
bool
value to set
External Functions
registerAvsToEigenLayer(string)
rescueFunds
Transfers all AVS treasury funds to the AVS governance multisig.
View Methods
General AVS Configuration
avsName
Returns the name of the AVS
avsTreasury
Returns the address of the AVS treasury contract
getL1MessageHandler
Returns the address of the L1 message handler contract
avsDirectory
Returns the address of the AVS directory contract
Consensus Configuration
minVotingPower
Returns the minimum voting power required
maxEffectiveBalance
Returns the maximum effective balance allowed
getNumOfOperatorsLimit
Returns the maximum number of operators allowed
Operator Status
isOperatorRegistered(address)
Checks whether a given operator
address is registered
votingPower(address)
Returns voting power of the Operator
getOperatorRestakedStrategies(address)
Returns the strategies restaked by the Operator
votingPowerPerStakingContracts(address, address[])
Returns Voting power for the specified Staking contracts
Authentication Configuration
p2pAuthenticationEnabled
Returns a boolean value indicating whether P2P authentication is enabled
getIsAllowlisted
Returns a boolean indicating whether Operator allowlisting is enabled
Staking Configuration
getRestakeableStrategies
Returns restakable strategies for the AVS
minStakeAmountPerStakingContract
Returns the minimum stake amount required for a given staking contract
stakingContracts
Returns an array of registered staking contract addresses
Last updated