LogoLogo
  • Introduction
    • Introducing Othentic Stack
    • Use Cases
  • AVS Framework
    • Abstract
    • Quick Start
    • Othentic CLI
      • Key Management
      • Contracts Deployment
      • Operator Registration
      • AVS Logic Implementation
      • Operator Deposit
      • Node Operators
      • Rewards Distribution
      • P2P Config
        • Custom P2P Messaging
        • P2P Auth Layer
        • Metrics and Monitoring
        • Logging
        • Persistent storage
        • Latency
      • CLI Command Reference
    • Smart Contracts
      • AVS Governance
      • Attestation Center
      • Hooks
        • Task Logic
        • Operator Management
        • Rewards Fee Calculator
      • OBLS
      • Internal Task Handler
      • Othentic Registry
      • Message Handlers
    • Othentic Consensus
      • Abstract
      • Task & Task Definitions
      • Leader Election
      • Proof of Task
      • Execution Service
      • Validation Service
      • Voting Power
      • Rewards
      • Internal Tasks
      • Slashing & Ejection
        • Slashing Modules
        • Custom Slashing
    • FAQ
    • Supported Networks
    • Explainers
      • Networking
      • Multichain
      • Production Guidelines
      • Operator Allowlisting
      • Governance Multisig
  • External
    • AVS Examples
  • GitHub
  • Othentic Hub
Powered by GitBook
On this page
  • Overview
  • Functions
  • Operator Registration
  • Operator De-registration
  • Operator Rewards Receiver Update
  • Governance Methods
  • General AVS Configuration
  • Consensus Configuration
  • Staking Configuration
  • P2P and Authentication Settings
  • External Functions
  • View Methods
  • General AVS Configuration
  • Consensus Configuration
  • Operator Status
  • Authentication Configuration
  • Staking Configuration
  • Slashing Methods
  • Slashing Module Configuration
  1. AVS Framework
  2. Smart Contracts

AVS Governance

PreviousSmart ContractsNextAttestation Center

Last updated 8 days ago

Overview

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

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)

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)

Parameter
Type
Description

_minVotingPower

uint256

minimum voting power

setMaxEffectiveBalance(uint256)

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

setMinStakePerStakingContract (address, uint256)

Sets the minimum stake amount for a specified staking contract

Parameter
Type
Description

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

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)

Parameter
Type
Description

_p2pAuthenticationEnabled

bool

value to set


External Functions

registerAvsToEigenLayer(string)

Parameter
Type
Description

metadataURI

string

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

avsDirectory

Returns the address of the AVS directory contract

EXTENSION_IMPLEMENTATION

Returns the address of the extension contract exposing additional functions.

Consensus Configuration

minVotingPower

maxEffectiveBalance

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)

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

function
description

p2pAuthenticationEnabled

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


Slashing Methods

Slashing Module Configuration

updateSlashingConfig

Create or update the configuration for a specific slashing condition

function updateSlashingConfig(
    SlashingCondition _condition,
    SlashingConfig _config
) external;

enum SlashingCondition {
    None, // 0
    DoubleAttestations, // 1
    RejectedTask, // 2
    IncorrectAttestations // 3
}

Parameters

  • _condition: The specific SlashingCondition enum value (i.e. 1/2/3) you want to update (e.g., DoubleAttestations, IncorrectAttestations).

  • _config: SlashingConfig struct containing.

Parameter
Type
Description

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);
Parameter
Type
Description

_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

Parameter
Type
Description

_stakingContract

address

The address of the staking contract to configure.

_minSlashableStake

uint256

The minimum amount of required stake (in wei)

Connect an contract to the governance contract. Learn more .

Set the required to register an operator to the AVS. Learn more .

Set the for the AVS. Learn more .

Enable for the AVS network. Learn more .

Register AVS to Eigen layer dashboard. Learn more .

The metadataURI

Returns the address of the L1 contract

Returns the required

Returns the allowed

Returns of the Operator

Returns a boolean value indicating whether is enabled

AVS Governance contract
Governance Multisigs
registerAsOperator
AvsLogic
here
p2p authentication
here
BLSAuthLibrary.Signature
format
message handler
voting power
P2P authentication
here
Minimum Voting Power
here
Maximum Effective Balance
here
minimum voting power
maximum effective balance