Skip to content

Releases: Layr-Labs/eigenlayer-middleware

v1.0.3-testnet-slashing

28 Jan 00:33
11b0061
Compare
Choose a tag to compare
Pre-release

Slashing Release Features and Changes

The code is being released for testnet in an unaudited and untested state and will be entering an audit as we prepare for the mainnet slashing release

Overview

  • ELIPs on Slashing/OperatorSets/UAM
  • EigenLayer UAM integration and removal of dependency on the ServiceManager for proxying calls. #357
    • For existing AVSs that have deployed a ServiceManager, it is highly recommended to set your account identifier in the UAM as the old ServiceManager address even if the contract no longer becomes the entrypoint for calls between the AVS middleware contracts and the core EigenLayer contracts.
    • The current implementation of middleware expects the following setup of UAM.
      • SlashingRegistryCoordinator being able to call
        1. AllocationManager.createOperatorSets
        2. AllocationManager.deregisterFromOperatorSets (for force deregistration)
      • StakeRegistry being able to call
        1. AllocationManager.addStrategiesToOperatorSet
        2. AllocationManager.removeStrategiesFromOperatorSet
      • SlasherBase being able to call
        1. AllocationManager.slashOperator
  • RegistryCoordinator & SlashingRegistryCoordinator #361
    • The RegistryCoordinator now inherits from the SlashingRegistryCoordinator while maintaining backwards compatability of interfaces. Reasoning for this change is detailed below.
    • The RegistryCoordinator has been updated to enable OperatorSet mode. What this means is that newly created quorums will result in calling the AllocationManager to create the respective OperatorSet. This implies a different operator registration/deregistration flow where the RegistryCoordinator implements the IAVSRegistrar interface to support calls from the AllocationManager in the EigenLayer protocol.
    • Newly developing AVSs should ignore the RegistryCoordinator and simply use the SlashingRegistryCoordinator as this by default initializes to OperatorSet mode without the legacy Operator registration/deregistration interfaces.
    • Already deployed AVSs with existing quorums should use the RegistryCoordinator for backwards compatibility of legacy quorums. For existing AVSs who wish to migrate to OperatorSets, they need to first enableOperatorSets() to enable OperatorSet mode and create OperatorSet quorums. They can then call disableM2QuorumRegistration() to begin to deprecate legacy quorum registration. Operators are always allowed to deregister from legacy quorums.
  • SlashingBase and templates are added in /slashers directory. These contracts are meant to be inherited with AVS slashing logic specific to your needs.
  • StakeRegistry reads from the AllocationManager to get slashable stake for newly created StakeType.TOTAL_SLASHABLE quorums.
  • Solidity version bump 0.8.12 -> 0.8.27 as well as custom errors with require checks.
  • Added storage gaps to the EjectionManager contract. This is a breaking change for any deployed contract that has inherited and added additional storage previously.

Migration Guide

For StakeRegistry Users

  1. Update imports for new interfaces to import structs from IStakeRegistryTypes:

    • Replace StakeUpdate with IStakeRegistryTypes.StakeUpdate
    • Replace StrategyParams with IStakeRegistryTypes.StrategyParams
    • Replace StakeType with IStakeRegistryTypes.StakeType
  2. Update stake tracking functionality:

    • Support for both delegated and slashable stake types per quorum
    • New stake history tracking with block number indexing
    • Stake weight calculation with strategy multipliers
  3. Handle new quorum initialization:

    • initializeDelegatedStakeQuorum for total delegated stake tracking
    • initializeSlashableStakeQuorum for slashable stake with lookahead period
    • Strategy params and minimum stake requirements per quorum
  4. Implement new stake query features:

    • Get stake at specific block numbers and indices
    • Query stake history length and updates
    • Get current and historical total stake per quorum
    • Support for strategy params management

For ISocketUpdater Users

  1. Remove all usage of ISocketUpdater interface
  2. Update socket update functionality to use IRegistryCoordinator
  3. Update event listeners to use OperatorSocketUpdate from IRegistryCoordinatorEvents

For ECDSAStakeRegistry Users

  1. Update imports for now interfaces:
    • ECDSAStakeRegistryStorage
    • IECDSAStakeRegistry
    • IECDSAStakeRegistryTypes
  2. Rename any calls to getLastestOperatorSigningKey to getLatestOperatorSigningKey
  3. Update type references:
    • Replace Quorum with IECDSAStakeRegistryTypes.Quorum
    • Replace StrategyParams with IECDSAStakeRegistryTypes.StrategyParams
  4. Review parameter names in function calls if using explicit naming ie, function({name: param, name2} to ensure they match the new convention

For RegistryCoordinator Users

  1. Update imports for new interfaces to import structs from the IRegistryCoordinatorTypes:

    • Replace OperatorStatus with IRegistryCoordinatorTypes.OperatorStatus
    • Replace OperatorInfo with IRegistryCoordinatorTypes.OperatorInfo
    • Replace QuorumBitmapUpdate with IRegistryCoordinatorTypes.QuorumBitmapUpdate
    • Replace OperatorSetParam with IRegistryCoordinatorTypes.OperatorSetParam
    • Replace OperatorKickParam with IRegistryCoordinatorTypes.OperatorKickParam
  2. Update operator registration flow:

    • M2 quorum registration checks
    • New operator sets functionality
  3. Handle new registration restrictions:

    • Checks for m2QuorumsDisabled flag
    • Validate operator set mode
  4. Update deregistration logic:

    • M2 quorum-specific checks
  5. Implement new operator set features:

    • Support for enabling/disabling operator sets
    • Handle M2 quorum registration states

For BLSSignatureChecker Users

  1. Update imports for new interfaces to import structs from the IBLSSignatureCheckerTypes:

    • Replace NonSignerInfo with IBLSSignatureCheckerTypes.NonSignerInfo
    • Replace NonSignerStakesAndSignature with IBLSSignatureCheckerTypes.NonSignerStakesAndSignature
    • Replace QuorumStakeTotals with IBLSSignatureCheckerTypes.QuorumStakeTotals
  2. Update event handling:

    • Import events from IBLSSignatureCheckerEvents
    • Update event emissions to match interface definitions

For BLSApkRegistry Users

  1. Update imports for new interfaces to import structs from the IBLSApkRegistryTypes:

    • Replace ApkUpdate with IBLSApkRegistryTypes.ApkUpdate
    • Replace PubkeyRegistrationParams with IBLSApkRegistryTypes.PubkeyRegistrationParams
  2. Update event handling:

    • Import events from IBLSApkRegistryEvents

For IndexRegistry Users

  1. Update imports for new interfaces:
    • IndexRegistry
    • IIndexRegistryEvents
    • IIndexRegistryTypes
  2. Update type references:
    • Replace QuorumUpdate with IIndexRegistryTypes.QuorumUpdate
    • Replace OperatorUpdate with IIndexRegistryTypes.OperatorUpdate

Full Changelog: v0.5.4-mainnet-rewards-v2...v1.0.3-testnet-slashing

v0.5.4-mainnet-rewards-v2

21 Jan 21:55
2475ab8
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.4.3-mainnet-rewards...v0.5.4-mainnet-rewards-v2

v0.4.3-mainnet-rewards

16 Dec 14:55
512ce73
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.1.3-mainnet-m2+pragma-change...v0.4.3-mainnet-rewards

v0.2.1-mainnet-rewards

15 Aug 19:36
74438b7
Compare
Choose a tag to compare

What's Changed

  • build: update core submodule to new release by @8sunyuan in #298

Full Changelog: v0.2.0-mainnet-rewards...v0.2.1-mainnet-rewards

v0.2.0-mainnet-rewards

13 Aug 20:06
a9c1aa7
Compare
Choose a tag to compare

What's Changed

Creating an up-to-date release tag to match with the eigenlayer-contracts latest mainnet release.

Full Changelog: v0.2.1-holesky-rewards...v0.2.0-mainnet-rewards

v0.2.1-holesky-rewards

24 Jun 14:15
b816138
Compare
Choose a tag to compare

What's Changed

Creating new Rewards release to include storage layout fix in #275

  • perf: refactor to modifiers to use internal functions by @stevennevins in #272
  • perf: refactor index registry to use internal functions for modifier by @stevennevins in #269
  • perf: refactor apk modifiers to use internal functions by @stevennevins in #268
  • perf: refactor modifiers to use internal functions for stake registry by @stevennevins in #266
  • fix: service manager storage layout by @0x0aa0 in #275
  • feat: reward initiator for ECDSAServiceManagerBase by @Gajesh2007 in #274

New Contributors

Full Changelog: v0.2.0-holesky-rewards...v0.2.1-holesky-rewards

v0.2.0-holesky-rewards

06 Jun 18:04
b45dced
Compare
Choose a tag to compare

What's Changed

A wide number of changes have been added to the middleware contracts, most of which below are still under active development. This release is meant for the integration of rewards into the EigenLayer Holesky Testnet where AVSs can submit rewards to their operators and delegated stakers through the new RewardsCoordinator contract.

New Contributors

Full Changelog: v0.1.2-holesky-init-deployment...v0.2.0-holesky-rewards

v0.2.0-rc2-holesky-preprod-rewards

30 May 16:22
51e36f1
Compare
Choose a tag to compare
Pre-release

What's Changed

For the rewards release, main changes in this pre-release is the refactor of the ServiceManagerBase to use a ServiceManagerBaseStorage contract to follow the same pattern as other core and middleware contracts utilizing storage. The payments release has been renamed to rewards with updated interfaces

New Contributors

Full Changelog: v0.2.0-rc1-holesky-preprod-payments...v0.2.0-rc2-holesky-preprod-rewards

v0.2.0-rc1-holesky-preprod-payments

08 May 19:45
c5b419a
Compare
Choose a tag to compare
Pre-release

What's Changed

  • fix: multiple rangepayments with same token by @8sunyuan in #257

Full Changelog: v0.2.0-rc0-holesky-preprod-payments...v0.2.0-rc1-holesky-preprod-payments

v0.2.0-rc0-holesky-preprod-payments

08 May 01:53
4ad5c85
Compare
Choose a tag to compare
Pre-release

Changes

  • Adds payForRange function to ServiceManagerBase and updates eigenlayer-contracts submodule for the payments release.
  • EjectionManager contract
  • Updates to ECDSA based contracts (WIP)
  • Fix in BLSSignatureChecker to remove staleStakesForbidden being set in constructor

Full changelog: v0.1.3-mainnet-m2+pragma-change...4ad5c85