AVS Governance
View Source Code
Overview
The AVS Governance contract acts as the interface of the AVS on Ethereum blockchain (L1).
It 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.
Write Methods
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
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.
_minVotingPower
uint256
minimum voting power
setMaxEffectiveBalance(uint256)
Set the Maximum Effective Balance for the AVS.
_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
setMinStakePerStakingContract (address, uint256)
Sets the minimum stake amount for a specified staking contract
_stakingContract
address
The address of the Staking contract
_minStake
uint256
The minimum stake (in wei) required from an Operator in the given staking contract to be considered eligible.
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
Rewards Configuration
createEigenRewardsSubmission
Distribute a fixed amount of rewards to the Operators
startTimestamp
uint32
Timestamp (in seconds) indicating from when to start calculating which Operators and Stakers are eligible to claim rewards.
duration
uint32
Duration in seconds to define the Operators and Staker actively participating in the AVS (e.g., 604800 for 7 days).
amount
uint256
Total amount of tokens in wei
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)
Register AVS to EigenLayer dashboard. Learn more here.
rescueFunds
Withdraw stuck funds from the AVS Governance contract to the AVS governance multisig.
Slashing Module Configuration
updateSlashingConfig
Create or update the configuration for a specific slashing module.
See Slashing Modules and Enable Slashing pages to learn more.
function updateSlashingConfig(
SlashingCondition _condition,
SlashingConfig _config
) external;
enum SlashingCondition {
None, // 0
DoubleAttestations, // 1
RejectedTask, // 2
IncorrectAttestations // 3
}
Parameters
_condition
: The specificSlashingCondition
enum value (i.e. 1/2/3) you want to update (e.g.,DoubleAttestations
,IncorrectAttestations
)._config
:SlashingConfig
struct containing.
activated
bool
Enable/ disable this slashing condition
ejectOperator
bool
Auto-eject operator on violation
stakeSlashedPercentage
uint24
% of unique stake to slash
getSlashingConfig
Returns the current slashing configuration for a given condition.
function getSlashingConfig(
SlashingCondition _condition
) external view returns (SlashingConfig);
_condition
SlashingCondition
SlashingCondition
enum value specifying the slashing condition to query (e.g., DoubleAttestations, IncorrectAttestations).
setMinSlashableStakePerStakingContract
This function specifies the minimum slashable stake required in a given staking contract. Operators who have staked less than the defined threshold will be considered inactive.
function setMinSlashableStakePerStakingContract(
address _stakingContract,
uint256 _minSlashableStake)
Parameters
_stakingContract
address
The address of the staking contract to configure.
_minSlashableStake
uint256
The minimum amount of required stake (in wei)
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
EXTENSION_IMPLEMENTATION
Returns the address of the extension contract exposing additional functions.
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
getRewardsReceiver(address)
Returns rewards receiver address for the Operator
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
getIsOperatorEjected(address)
Returns whether an operator is blacklisted
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