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.

Each AVS deploys its own AVS Governance contract, managed via multiple Governance Multisigs.

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.

Parameter
Type
Description

_blsKey

uint256[4]

The operator's public BLS key

_rewardsReceiver

address

The address to which operator rewards should be sent

_blsRegistrationSignature

The operator signature required by EigenLayer

authToken

bytes

A BLS signature (see note below)

The _blsRegistrationSignature parameter is a BLS signature:

  • Domain: keccak256("OthenticBLSAuth")

  • Message: keccak256(abi.encode(msg.sender, avsGovernanceAddress, block.chainid))

registerOperatorToEigenLayer

It registers as an operator on EigenLayer using the provided signature and authentication token.

Parameter
Type
Description

_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

Parameter
Type
Description

_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.

Parameter
Type
Description

_avsName

string

New AVS name

setAvsGovernanceMultisig(address)

Set the account that is authorized to invoke the governance methods.

Parameter
Type
Description

_newAvsGovernanceMultisig

address

The new governance owner

setAvsGovernanceLogic(IAvsGovernanceLogic)

Connect an AvsLogic contract to the governance contract. Learn more here.

Parameter
Type
Description

_avsGovernanceLogic

IAvsGovernanceLogic

Address of an AvsLogic contract

transferAvsGovernanceMultisig

Transfer control of the AVS governance to a new multisig wallet.

Parameter
Type
Description

_newAvsGovernanceMultisig

address

Address of the AVS governance multisig

setRewardsReceiverModificationDelay

Set the required delay before updating the rewards receiver address, by default its 7 days.

Parameter
Type
Description

_rewardsReceiverModificationDelay

uint256

delay in milliseconds

setAvsGovernanceMultiplierSyncer

Set the address responsible for syncing the AVS governance multiplier

Parameter
Type
Description

_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.

Parameter
Type
Description

_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.

Parameter
Type
Description

_minVotingPower

uint256

minimum voting power

setMaxEffectiveBalance(uint256)

Set the Maximum Effective Balance for the AVS. Learn more here.

Parameter
Type
Description

_maxBalance

uint256

maximum effective balance


Staking Configuration

setSupportedStakingContracts(StakingContractInfo[])

Set the list of EigenLayer strategies supported by the AVS.

Parameter
Type
Description

_stakingContractsDetails

StakingContractInfo[]

List of staking contracts supported by the AVS

setMinStakesForStakingContract(address, uint256)

Sets the minimum stake amount for a specified staking contract

Parameter
Type
Description

_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.

Parameter
Type
Description

_votingPowerMultiplier

VotingPowerMultiplier

Voting power multiplier

setStakingContractMultiplierBatch

Sets the voting power multipliers for multiple staking contracts, it can only be called by Multipler syncer

Parameter
Type
Description

_votingPowerMultipliers

VotingPowerMultiplier[]

Voting power multipliers


P2P and Authentication Settings

setIsAllowlisted

Set allow list functionality

Parameter
Type
Description

_isAllowlisted

boolean

is allowed boolean value

setP2pAuthenticationEnabled(bool)

Enable p2p authentication for the AVS network. Learn more here.

Parameter
Type
Description

_p2pAuthenticationEnabled

bool

value to set


External Functions

registerAvsToEigenLayer(string)

Parameter
Type
Description

metadataURI

string

The metadataURI format

rescueFunds

Transfers all AVS treasury funds to the AVS governance multisig.


View Methods

General AVS Configuration

Function
Description

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

Function
Description

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

Authentication Configuration

function
description

p2pAuthenticationEnabled

Returns a boolean value indicating whether P2P authentication is enabled

getIsAllowlisted

Returns a boolean indicating whether Operator allowlisting is enabled

Staking Configuration

function
description

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