Skip to content

Releases: Layr-Labs/eigenlayer-contracts

v1.9.0-rc.0: Slashing UX Improvements

10 Dec 18:38
1564be7

Choose a tag to compare

Pre-release

v1.9.0 Slashing UX Improvements

Release Manager

@ypatil12 @eigenmikem @0xClandestine

Overview

The Slashing UX improvement release is a tech debt-focused release that improves key parts of the Eigenlayer Core UX. This release will upgrade every core contract.

The below release notes cover Core Contracts.

Highlights

🚀 New Features

  • The AllocationManager has been split into two contracts to address size limitations of the contract. The main contract handles state-mutating operations, while AllocationManagerView handles all read-only view functions. This is not a breaking change for introspection as previous introspection calls fallback to delegateCall into the AllocationManagerView contract.. For more information, see the contract architecture.
  • The ProtocolRegistry is a new contract that stores all proxy contract addresses, global semver, and has the ability to pause the entire protocol. This contract will be deployed on all chains.
  • Two new createOperatorSets functions (for redistributing and non redistributing operatorSets) have been added that take in a slasher address. This address is the only address that can slash an operatorSet. Changing the address is behind a ALLOCATION_CONFIGURATION_DELAY (17.5 days on mainnet).

⛔ Breaking Changes

  • The slasher permissions are set and stored in the AllocationManager instead of the PermissionController. Only one address can slash an operatorSet; the address is initially set upon creation of the operatorSet. OperatorSets created prior to this release will have their slasher migrated based on the following rules:
    • If there is no slasher set or the slasher in the PermissionController is the 0 address, the AVS address will be set as the slasher
    • If there are multiple slashers set in the PermissionController, the first address will be set as the slasher
  • Semver (SemverMixin.sol) has been removed from all contracts, except from those that inherit the SignatureUtilsMixin. The version of the core protocol can be introspected via the ProtocolRegistry.

📌 Deprecations

The old createOperatorSets functions in the leftmost column will be deprecated in Q2 2026 in favor of the newly specified functions. The old functions do not pass in a slasher. The new functions do pass in a slasher. If the old function is used, the slasher of the operatorSet is set to the avs address.

Function MigrateTo Notes
createOperatorSets(avs, CreateSetParams[]) createOperatorSets(address avs, CreateSetParamsV2[]) New function takes in a slasher address
createRedistributingOperatorSets(avs, CreateSetParams[], redistributionRecipients[]) createRedistributingOperatorSets(avs, CreateSetParamsV2[], redistributionRecipients[]) New function takes in a slasher address

🔧 Improvements

  • Added a non-revert _canCall in the PermissionControllerMixin for space savings. This function is used in the AllocationManager and DelegationManager.
  • The allocation delay for a newly created operator is active immediately. This allows operators to make allocations instantly after registering in the core.
  • The internal SlashingLib.scaleForBurning function has been deprecated in favor of SlashingLib.calcSlashedAmount, standardizing the calculation of slashed shares across the withdrawal queue and storage. See PR #1502 for more information.

What's Changed

Full Changelog: v1.8.1...v1.9.0-rc.0

v1.8.1: Multichain and Hourglass

24 Sep 19:35
31aade2

Choose a tag to compare

v1.8.1 MultiChain Hourglass Combined

Release Manager

@ypatil12 @eigenmikem @0xrajath

Multichain

The multichain release enables AVSs to launch their services and make verified Operator outputs available on any EVM chain, meeting their customers where they are. AVSs can specify custom operator weights to be transported to any destination chain. The release has 3 components:

  1. Core Contracts
  2. AVS Contracts
  3. Offchain Infrastructure

The below release notes cover Core Contracts. For more information on the end to end protocol, see our docs and ELIP-008.

Highlights

This multichain release only introduces new standards and contracts. As a result, there are no breaking changes or deprecations.

🚀 New Features – Highlight major new functionality

Source-Chain Contracts

  • KeyRegistrar: Manages cryptographic keys for operators across different operator sets. It supports both ECDSA and BN254 key types and ensures global uniqueness of keys across all operator sets
  • CrossChainRegistry: Enables AVSs to register to have their operator stakes transported to supported destination chains
  • ReleaseManager: Provides a standardized way for AVSs to publish software artifacts (binaries, docker images, etc.) that operators in their operator sets should upgrade to by specified deadlines

Destination Chain Contracts

  • CertificateVerifier: Proves the offchain execution of a task, via a Certificate, by the operators of an operatorSet. Two types of key material are supported: ECDSA and BN254
  • OperatorTableUpdater: Updates operator tables in the CertificateVerifier to have tasks validated against up-to-date operator stake weights

🔧 Improvements – Enhancements to existing features.

  • The multichain protocol has protocol-ized several AVS-deployed contracts, enabling an simpler AVS developer experience. These include:
    • KeyRegistrar: Manages BLS and ECDSA signing keys. AVSs no longer have to deploy a BLSAPKRegistry
    • CertificateVerifier: Handles signature verification for BLS and ECDSA keys. AVSs no longer have to deploy a BLSSignatureChecker
    • Offchain Multichain Transport: AVSs no longer have to maintain avs-sync to keep operator stakes fresh

Hourglass

The Hourglass release consists of a framework that supports the creation of task-based AVSs. The task-based AVSs are enabled through a TaskMailbox core contract deployed to all chains that support a CertificateVerifier. Additionally AVSs deploy their TaskAVSRegistrar. The release has 3 components:

  1. Core Contracts
  2. AVS Contracts
  3. Offchain Infrastructure

The below release notes cover Core Contracts. For more information on the end to end protocol, see our hourglass docs, core contract docs, and ELIP-010.

Highlights

This hourglass release only introduces new contracts. As a result, there are no breaking changes or deprecations.

🚀 New Features

Destination Chain Contracts

  • TaskMailbox: A core infrastructure contract that enables task-based AVS execution models. It provides a standardized way for AVSs to create tasks, have operators execute them, and submit verified results on-chain. The contract acts as a mailbox system where task creators post tasks with fees, and operators compete to execute and submit results with proper consensus verification.

What's Changed

Read more

v1.6.2

05 Sep 15:55

Choose a tag to compare

Updates bindings to remove merge conflicts on EigenPod.abi

Full Changelog: v1.6.1...v1.6.2

v1.6.1

29 Aug 17:47

Choose a tag to compare

v1.6.1 Electra Timing Fix

Fixes a bug on EigenPods regarding partial withdrawals for Electra. Please read the explainer for a detailed description of the bug. No action is needed and no customer funds are at risk.

Release Manager

@ypatil12 @nadir-akhtar @gpsanant @antojoseph

Highlights

🐛 Bug Fixes

  • Update the EigenPod.requestWithdrawal function to ensure that validators are pointed to the pod, matching the behavior of requestConsolidation

🔧 Improvements

  • Update the EigenPod.verifyWithdrawalCredentials function to only accept beaconTimestamps that are after the latestCheckpointTimestamp. This enables the eigenpod state machine to be easier to be reasoned about

Full Changelog: v1.6.0...v1.6.1

v1.8.0-testnet-final: Multichain and Hourglass

28 Aug 22:20
7ecc83c

Choose a tag to compare

v1.8.0-testnet-final

The below release notes cover the updated version release candidate for multichain and hourglass

Release Manager

@ypatil12 @eigenmikem @0xrajath

Multichain

Highlights

⛔ Breaking Changes

  • The leaves of merkle trees used by the OperatorTableUpdater and BN254CertificateVerifier are now salted. The LeafCalculatorMixin is used by:
    • OperatorTableUpdater: To salt the operatorTableLeaf via calculateOperatorTableLeaf. This change is also reflected in the offchain transporter
    • BN254CertificateVerifier: To salt the operatorInfoLeaf via calculateOperatorInfoLeaf. BN254 OperatorSets MUST update their table calculators to use the new BN254TableCalculatorBase in the middleware repo
  • Nonsigners in the BN254CertificateVerifier are now sorted by operator index. See PR #1615. All offchain aggregators MUST sort nonsigners by operator index
  • The BN254CertificateVerifier now requires signatures over the referenceTimestamp via calculateCertificateDigest. See PR #1610

🛠️ Security Fixes

  • The merkle library has been updated to address minor audit issues. No breaking changes. See PR #1606
  • Audit fixes for the ReleaseManager. See PR #1608

🔧 Improvements

🐛 Bug Fixes

  • Add pagination for querying active generation reservations. See PR #1569
  • Fix race conditions on offchain table updates. See PR #1575
  • Remove restrictive check on ECDSA certificates required to be confirmed against the latest referenceTimestamp. See PR #1582

Hourglass

Highlights

🔧 Improvements

  • Support for signalling instant upgrades in ReleaseManager by setting upgradeByTime to 0. See PR #1608

🐛 Bug Fixes

  • Added NoReleases() custom error to isValidRelease() and getLatestUpgradeByTime() in ReleaseManager when there are no releases for a given operator set. See PR #1608
  • Added a MAX_TASK_SLA immutable to the TaskMailbox that will be set as DEALLOCATION_DELAY / 2 so that AVSs have half the Deallocation Delay to do any operator slashing in case of misbehavior. See PR #1604
  • Checking that block.timestamp + taskConfig.taskSLA <= operatorTableReferenceTimestamp + maxStaleness in the TaskMailbox during taskCreation so that a task cannot be created if its max response time breaches the staleness period of the certificate. See PR #1604
  • Updated the _validateBN254Certificate() check to only be for the (0,0) coordinate in the TaskMailbox. See PR #1604

What's Changed

Read more

v1.8.0-rc.0 : Hourglass

25 Jul 16:06

Choose a tag to compare

Pre-release

v1.8.0 Hourglass

The Hourglass release consists of a framework that supports the creation of task-based AVSs. The task-based AVSs are enabled through a TaskMailbox core contract deployed to all chains that support a CertificateVerifier. Additionally AVSs deploy their TaskAVSRegistrar. The release has 3 components:

  1. Core Contracts
  2. AVS Contracts
  3. Offchain Infrastructure

The below release notes cover Core Contracts. For more information on the end to end protocol, see our docs and core contract docs.

Release Manager

@0xrajath

Highlights

This hourglass release only introduces new contracts. As a result, there are no breaking changes or deprecations.

🚀 New Features

Destination Chain Contracts

  • TaskMailbox: A core infrastructure contract that enables task-based AVS execution models. It provides a standardized way for AVSs to create tasks, have operators execute them, and submit verified results on-chain. The contract acts as a mailbox system where task creators post tasks with fees, and operators compete to execute and submit results with proper consensus verification.

Changelog

  • fix: correct ecdsa message hash check PR #1563
  • fix: missing assume in fuzz test
  • fix: submitResult certificate checks PR #1557
  • chore: forge fmt
  • fix: certificate verifier interface changes
  • feat: hourglass zeus script PR #1546
  • fix: mock certificate verifiers PR #1545
  • feat: hourglass (task-based AVS framework) PR #1534
  • docs: changelog
  • fix: hourglass release upgrade semver
  • fix: deploy script

Full Changelog: v1.7.0-rc.4...v1.8.0-rc.0

v1.7.0-rc.4

23 Jul 17:22
b026c21

Choose a tag to compare

v1.7.0-rc.4 Pre-release
Pre-release

Updates multichain release with bindings

Full Changelog: v1.7.0-rc.3...v1.7.0-rc.4

v1.6.0

02 Jul 16:06
cf22b39

Choose a tag to compare

v1.6.0 Moocow and ELIP5

Release Manager

@wadealexc @bowenli86

Highlights

🚀 New Features

  • New APIs supporting Pectra's validator consolidation and withdrawal features: EigenPod.requestConsolidation(...) and EigenPod.requestWithdrawal(...)
  • New getters to support Pectra APIs: EigenPod.getConsolidationRequestFee() and EigenPod.getWithdrawalRequestFee()
  • Added 4 new events to EigenPod.sol to track consolidation and withdrawal requests
  • Added 2 new events to Eigen.sol to track token wraps/unwraps with BackingEigen

📌 Deprecations

  • Removed EigenPod.GENESIS_TIME() getter. This method, though public, has been unused for over a year.

🔧 Improvements

  • When finalizing an EigenPod checkpoint (proofsRemaining == 0), the contract will store the finalized checkpoint in storage. This can be queried via EigenPod.currentCheckpoint(). Starting a new checkpoint will overwrite this previously-finalized checkpoint.
  • Added semver to Eigen
  • Signatures of a few EigenPod events are changed to match the rest events and take validator pubkey hash instead of validator index, which standardized EigenPod events signature

🐛 Bug Fixes

  • For Hoodi, updates fixes ethPOS deposit contract to point to 0x00000000219ab540356cBB839Cbe05303d7705Fa

Changelog

  • feat: merge Moocow and ELIP5 into main PR #1425
  • docs: proper markdown PR #1435
  • docs: update readme
  • chore: update testnet addresses for redistribution PR #1428
  • chore: remove User_M2.t.sol
  • feat: update EIGEN binding
  • chore: resolve conflicts in upgrade.json
  • chore: update harness class formatting
  • chore: complete v1.6.0 changelog
  • chore: changelog and bindings
  • test: add more script tests for Eigen and standardize semver
  • feat: add semver to eigen PR #1371
  • feat: add TokenWrapped and TokenUnwrapped events in Eigen for observability PR #1356
  • feat: change eigenpod events to use pubkeyHash over index
  • feat: release scripts for moocow and elip5
  • feat: currentCheckpoint now returns finalized checkpoint
  • feat: implement consolidation and withdrawal requests
  • chore: update eigenpod and eigen impls addresses in holesky and hoodi by @bowenli86 in #1448
  • chore: add multisend parser to scripts directory by @nadir-akhtar in #1486
  • docs: update version matrix by @ypatil12 in #1491
  • chore: MOOCOW audit fixes by @wadealexc in #1496

Full Changelog: v1.5.0...v1.6.0

v1.7.0-rc.3: Multichain

15 Jul 19:22
fbfd00c

Choose a tag to compare

Pre-release

v1.7.0-rc.3: Multichain

The below release notes cover the updated version release candidate for multichain

Note: v1.7.0-rc.1 is the final redistribution release on top of multichain. v1.7.0-rc.2 is the final MOOCOW release on top of multichain.

Release Manager

@ypatil12 @eigenmikem

Highlights

🚀 New Features

  • The ECDSACertificateVerifier and BN254CertficateVerifier have new storage/introspection for checking a reference timestamp: isReferenceTimestampSet

⛔ Breaking Changes

  • The preprod/testnet contracts have been redeployed with fresh addresses since this upgrade is not upgrade safe from v1.7.0-rc.0
  • CrossChainRegistry: All references to AVSs setting transport destinations have been removed. OperatorSets will be transported to all supported chains. See PR #1512
    • createGenerationReservation no longer takes in a list of chainIDs
    • addTransportDestinations and removeTransportDestinations have been removed
    • getActiveTransportReservations and getTransportDestinations(operatorSet) have been removed
  • ECDSACertificateVerifier
    • getTotalStakes has been renamed to getTotalStakeWeights
    • signedStakes has been renamed to totalSignedStakeWeights
  • KeyRegistrar
    • checkKey has been deprecated in favor of isRegistered

🛠️ Security Fixes

  • In the OperatorTableCalculator, we now hard-code the Generator's table root and reference timestamp. See PR #1537

🔧 Improvements

  • The ECDSACertificateVerifier now has a calculateCertificateDigestBytes, which returns the non-hashed bytes of the digest. See PR #1542
  • Clarify stakes are stake weights and update natspec for clarity. See PR #1541
  • Add getTotalStakeWeights and getTotalStakeWeights to BN254CertificateVerifier. See PR #1552

🐛 Bug Fixes

  • Allow 0 staleness periods for the ECDSACertificateVerifier. See PR #1540
  • Allow ECDSA certificates to be valid even if not on the latest reference timestamp to match BN254 certificates. See PR #1540
  • Added a new parameter: TableUpdateCadence to the CrossChainRegistry. We now enforce that maxStalenessPeriod is >= TableUpdateCadence to prevent bricking Certificate Verification. See PR #1536
  • Prevent replay of past certificates on new environments. See PR #1547

What's Changed

Full Changelog: v1.7.0-rc.0...v1.7.0-rc.3

v1.7.0-rc.0: Multichain

15 Jul 19:22
8e5550a

Choose a tag to compare

Pre-release

v1.7.0 Multi Chain

The multichain release enables AVSs to launch their services and make verified Operator outputs available on any EVM chain, meeting their customers where they are. AVSs can specify custom operator weights to be transported to any destination chain. The release has 3 components:

  1. Core Contracts
  2. AVS Contracts
  3. Offchain Infrastructure

The below release notes cover Core Contracts. For more information on the end to end protocol, see our docs and ELIP-008.

Release Manager

@ypatil12 @eigenmikem

Highlights

This multichain release only introduces new standards and contracts. As a result, there are no breaking changes or deprecations.

🚀 New Features – Highlight major new functionality

Source-Chain Contracts

  • KeyRegistrar: Manages cryptographic keys for operators across different operator sets. It supports both ECDSA and BN254 key types and ensures global uniqueness of keys across all operator sets
  • CrossChainRegistry: Enables AVSs to register to have their operator stakes transported to supported destination chains
  • ReleaseManager: Provides a standardized way for AVSs to publish software artifacts (binaries, docker images, etc.) that operators in their operator sets should upgrade to by specified deadlines

Destination Chain Contracts

  • CertificateVerifier: Proves the offchain execution of a task, via a Certificate, by the operators of an operatorSet. Two types of key material are supported: ECDSA and BN254
  • OperatorTableUpdater: Updates operator tables in the CertificateVerifier to have tasks validated against up-to-date operator stake weights

🔧 Improvements – Enhancements to existing features.

  • The multichain protocol has protocol-ized several AVS-deployed contracts, enabling an simpler AVS developer experience. These include:
    • KeyRegistrar: Manages BLS and ECDSA signing keys. AVSs no longer have to deploy a BLSAPKRegistry
    • CertificateVerifier: Handles signature verification for BLS and ECDSA keys. AVSs no longer have to deploy a BLSSignatureChecker
    • Offchain Multichain Transport: AVSs no longer have to maintain avs-sync to keep operator stakes fresh

Changelog

  • fix: multichain deploy scripts PR #1510
  • test: multichain integration tests PR #1528
  • fix: multichain clarity updates PR #1527
  • refactor: table calc interface PR #1525
  • docs: update README for v1.5.0 & v1.6.0 PR #1526
  • docs: update ecdsa vc func
  • docs: fix ordering of cv funcs
  • chore: use bps_denominator in ecdsa cv
  • chore: domain separator no chain id doc
  • chore: use uint256 for index
  • chore: is spent
  • fix: cert verifier typo
  • fix: by hash docs consistency
  • refactor: cleaner reverts for ECDSACertificateVerifier PR #1521
  • docs: clear up certificate verification PR #1515
  • docs: add final audit reports
  • feat: key data reverse lookup PR #1520
  • fix: remove unused constants and add gap PR #1519
  • refactor: remove unnecessary signature validation and change param name PR #1509
  • docs: update CHANGELOG PR #1514
  • docs(redistribution-changes): cleanup PR #1513
  • test(redistribution-changes): passing PR #1511
  • fix: strategy manager gap PR #1508
  • refactor: remove redistribution delay PR #1485
  • docs(audit): note upgrade rescue flow PR #1467
  • fix(audit): assert redistribution recipient != burn address PR #1466
  • fix(audit): more reentrancy checks PR #1450
  • fix(audit): out-of-gas issue PR #1459
  • chore: add final moocow audit
  • docs: changelog PR #1504
  • feat: multichain deploy scripts PR #1487
  • feat: operator table updater pauser PR #1501
  • feat: add publishMetadataURI PR #1492
  • refactor: globalRootConfirmerSet -> generator PR #1500
  • fix: circular dependency for initial global root update PR #1499
  • chore: remove stale bindings PR #1498
  • fix: zero length PR #1490
  • docs: multichain docs PR #1488
  • refactor: remove table calculators PR #1493
  • refactor: KeyRegistry unit testing PR #1482
  • feat: disable root PR #1481
  • refactor: ECDSATableCalculator testing PR #1479
  • refactor: operators can deregister keys if not slashable PR #1480
  • refactor: ECDSACertificateVerifier testing PR #1478
  • refactor: Bn254CertificateVerifierUnitTests PR #1476
  • feat: ecdsa table calculator PR #1473
  • feat: ecdsacv views PR #1475
  • refactor: BN254OperatorTableCalculator PR #1463
  • feat: add referenceBlockNumber PR #1472
  • feat: release manager PR #1469
  • feat: ecdsa cert verifier PR #1470
  • feat: add view function for getGlobalConfirmerSetReferenceTimestamp PR #1471
  • chore: add helper view function PR #1465
  • chore: add sig digest functions to interface PR #1464
  • refactor: CrossChainRegistry PR #1457
  • fix: global table update message hash PR #1460
  • refactor: sig verification into library PR #1455
  • fix: OperatorTableUpdater encoding PR #1456
  • chore: add latest referenceTimestamp to OTC interface PR #1454
  • chore: bindings PR #1452
  • feat: add operator table updater to CCR PR #1451
  • chore: multichain deploy scripts PR #1449
  • feat: cross chain registry PR #1439
  • chore: update BN254CertificateVerifier PR #1447
  • feat: bn254 operator table contracts PR #1429
  • feat: KeyRegistrar PR #1421
  • feat: operator table updater PR #1436
  • feat: bn254 certificate verifier PR #1431
  • chore: bindings + interface update PR #1438
  • chore: update multichain interfaces PR #1433
  • feat: multi chain interfaces PR #1423

New Contributors

Full Changelog: v1.6.0...v1.7.0-rc.0