Releases: Layr-Labs/eigenlayer-contracts
v1.12.0 Rewards 2.2, Duration Vaults, and Incentive Council
Release Manager
Overview
This release combines three parallel release tracks into a single core contracts upgrade: Rewards 2.2, Duration Vaults, and Incentive Council. Together, these changes expand the rewards system with Operator Set-native reward flows, introduce a new time-bound vault primitive for AVSs, and replace the legacy programmatic incentives flow with a more flexible emissions system governed by the Incentive Council.
The below release notes cover Core Contracts.
Highlights
🚀 New Features
- Rewards v2.2 adds two new Operator Set-scoped rewards flows to
RewardsCoordinator:createUniqueStakeRewardsSubmissionandcreateTotalStakeRewardsSubmission. These let AVSs submit rewards that are automatically weighted by either unique allocated stake or total delegated stake within an Operator Set. - Rewards v2.2 supports both retroactive and forward-looking reward programs for Operator Sets, with rewards durations extended up to 2 years.
- Incentive Council introduces a new
EmissionsControllercontract for programmatic EIGEN emissions. It replaces the legacy ActionGenerator-style flow with configurable distributions that can be added, updated, disabled, and processed on a per-epoch basis. - The new
EmissionsControllersupports multiple distribution types, including rewards for all earners, Operator Set total stake rewards, Operator Set unique stake rewards, EigenDA rewards, and manual distributions. - Duration Vaults introduce a new
DurationVaultStrategy, deployable throughStrategyFactory, for time-bound restaking commitments such as insurance-style pools. - A duration vault acts as its own operator, registers to a single Operator Set, accepts deposits during an open window, locks stake for a fixed duration, and then enables withdrawals after maturity or arbitrator-triggered early exit.
- Multiple duration vaults can now exist for the same underlying token, enabling AVSs to create more than one time-bound strategy configuration per asset.
⛔ Breaking Changes
- Programmatic incentives now flow through
EmissionsControllerinstead of the legacy ActionGenerator-style model. Tooling or operational workflows built around the previous incentives architecture should migrate to the new distribution-based model. IRewardsCoordinatorhas expanded to support Operator Set rewards, protocol fee configuration, andEmissionsControllerintegration. Integrations that consume the contract ABI directly should refresh to the new interface.
📌 Deprecations
- The legacy ActionGenerator-style programmatic incentives flow is superseded by
EmissionsControllerand the Incentive Council distribution model. - AVSs that want Operator Set-native auto-weighted rewards should migrate to
createUniqueStakeRewardsSubmissionandcreateTotalStakeRewardsSubmissionrather than relying only on earlier AVS-wide or operator-directed patterns.
🔧 Improvements
- Added
beforeAddSharesandbeforeRemoveSharesstrategy hooks, enabling lifecycle-aware strategies such asDurationVaultStrategy. RewardsCoordinatornow supports optional protocol fees through a configurable fee recipient and per-submitter opt-in, allowing protocol fees to be taken from eligible reward submissions without changing the existing submission flow for non-participating submitters.- Operator reward routing is more flexible with the addition of
setOperatorSetSplit, which allows operators to set reward splits at the Operator Set level rather than only globally or AVS-wide. StrategyFactorynow supports a dedicated duration vault beacon and tracks deployed duration vaults by underlying token.- Duration vaults include lifecycle-aware protections around deposits and withdrawals, including delegation checks, per-deposit and total TVL caps, lock-state enforcement, and best-effort deallocation/deregistration on maturity so users are not blocked from exiting if external cleanup fails.
- Duration vault initialization sets operator reward splits to
0%, so vault rewards flow entirely to delegated stakers by default.
What's Changed
- chore: rewards v2.2 upgrade script by @0xrajath in #1702
- feat(incentives): add deploy scripts by @0xClandestine in #1699
- fix: internal review changes by @0xClandestine in #1703
- feat: add EigenDA rewards submission type by @0xClandestine in #1705
- feat: rewards v2.2 by @0xrajath in #1682
- test(incentive-council): improve E2E tests by @0xClandestine in #1709
- chore: Update Certora Formal Verification specifications and CI by @elhajin in #1713
- fix: ensure run on merge + fix whitespace by @nadir-akhtar in #1714
- ci: claude code review ci by @elhajin in #1715
- fix: use ORG_ANTHROPIC_API_KEY for Claude code review by @nadir-akhtar in #1716
- refactor(incentive-council): audit changes by @0xClandestine in #1711
- refactor: improve claude review ci by @elhajin in #1717
- ci: enable PR-head checkout and add guard for claude mentions by @nadir-akhtar in #1725
- refactor: merge deploy scripts by @eigenmikem in #1729
- fix: assert
defaultOperatorSplitBipsdoes not exceed 100% by @0xClandestine in #1731 - refactor(incentive-council): improve deploy scripts by @0xClandestine in #1718
- chore: bindings by @0xClandestine in #1733
- fix: rewardsCoordinator paused status by @elhajin in #1735
- ci: remove claude auto review by @elhajin in #1736
- feat: gauge weighted incentives and opt-in rewards fee by @0xClandestine in #1704
- fix: revert "feat: gauge weighted incentives and opt-in rewards fee (#1704)" by @0xClandestine in #1739
- feat: incentive council + duration vaults release by @0xClandestine in #1740
- feat: duration vaults by @eigenmikem in #1732
- docs: add duration vault audit report by @eigenmikem in #1742
- feat: update RewardsCoordinator.md with the new v2.2 reward type by @serichoi65 in #1741
- docs: update readme by @eigenmikem in #1743
- docs: add rewards v2.2 audit report by @serichoi65 in #1744
- feat: add Certora (incentive council) report by @0xClandestine in #1747
Full Changelog: v1.9.0...v1.12.0
v1.9.0 Slashing UX Improvements
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
AllocationManagerhas been split into two contracts to address size limitations of the contract. The main contract handles state-mutating operations, whileAllocationManagerViewhandles all read-only view functions. This is not a breaking change for introspection as previous introspection calls fallback todelegateCallinto theAllocationManagerViewcontract.. For more information, see the contract architecture. - The
ProtocolRegistryis 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
createOperatorSetsfunctions (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 aALLOCATION_CONFIGURATION_DELAY(17.5 days on mainnet).
⛔ Breaking Changes
- The slasher permissions are set and stored in the
AllocationManagerinstead of thePermissionController. 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
PermissionControlleris 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
- If there is no slasher set or the slasher in the
- Semver (
SemverMixin.sol) has been removed from all contracts, except from those that inherit theSignatureUtilsMixin. The version of the core protocol can be introspected via theProtocolRegistry.
📌 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
_canCallin thePermissionControllerMixinfor space savings. This function is used in theAllocationManagerandDelegationManager. - 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.scaleForBurningfunction has been deprecated in favor ofSlashingLib.calcSlashedAmount, standardizing the calculation of slashed shares across the withdrawal queue and storage. See PR #1502 for more information.
What's Changed
- chore: update readMe for multichain/hourglass by @ypatil12 in #1637
- docs: add transport frequency for multichain by @ypatil12 in #1642
- feat(audit): publish Hourglass + Multichain + RMS audit reports by @nadir-akhtar in #1644
- chore: hardcode foundry to v1.3.5 in ci by @0xClandestine in #1657
- chore: hardcode foundry ci to v1.3.5 by @0xClandestine in #1658
- chore: remove holesky by @ypatil12 in #1662
- feat: release notes; fix compile; add
ProtocolRegistrydocs by @ypatil12 in #1672 - fix: correct storage gap for ProtocolRegistryStorage by @nadir-akhtar in #1673
- feat: slashing ux improvements by @ypatil12 in #1670
- docs: update version matrix by @ypatil12 in #1679
- chore: Certora formal verification specifications and CI by @elhajin in #1684
- fix: require non-empty names in ProtocolRegistry.ship() by @ypatil12 in #1698
- fix: address Certora audit findings for Slashing UX Improvements by @ypatil12 in #1693
Full Changelog: v1.8.1...v1.9.0
v1.9.0-rc.0: Slashing UX Improvements
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
AllocationManagerhas been split into two contracts to address size limitations of the contract. The main contract handles state-mutating operations, whileAllocationManagerViewhandles all read-only view functions. This is not a breaking change for introspection as previous introspection calls fallback todelegateCallinto theAllocationManagerViewcontract.. For more information, see the contract architecture. - The
ProtocolRegistryis 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
createOperatorSetsfunctions (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 aALLOCATION_CONFIGURATION_DELAY(17.5 days on mainnet).
⛔ Breaking Changes
- The slasher permissions are set and stored in the
AllocationManagerinstead of thePermissionController. 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
PermissionControlleris 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
- If there is no slasher set or the slasher in the
- Semver (
SemverMixin.sol) has been removed from all contracts, except from those that inherit theSignatureUtilsMixin. The version of the core protocol can be introspected via theProtocolRegistry.
📌 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
_canCallin thePermissionControllerMixinfor space savings. This function is used in theAllocationManagerandDelegationManager. - 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.scaleForBurningfunction has been deprecated in favor ofSlashingLib.calcSlashedAmount, standardizing the calculation of slashed shares across the withdrawal queue and storage. See PR #1502 for more information.
What's Changed
- chore: update readMe for multichain/hourglass by @ypatil12 in #1637
- docs: add transport frequency for multichain by @ypatil12 in #1642
- feat(audit): publish Hourglass + Multichain + RMS audit reports by @nadir-akhtar in #1644
- chore: hardcode foundry to v1.3.5 in ci by @0xClandestine in #1657
- chore: hardcode foundry ci to v1.3.5 by @0xClandestine in #1658
- chore: remove holesky by @ypatil12 in #1662
- feat: release notes; fix compile; add
ProtocolRegistrydocs by @ypatil12 in #1672 - fix: correct storage gap for ProtocolRegistryStorage by @nadir-akhtar in #1673
- feat: slashing ux improvements by @ypatil12 in #1670
Full Changelog: v1.8.1...v1.9.0-rc.0
v1.8.1: Multichain and Hourglass
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:
- Core Contracts
- AVS Contracts
- 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 setsCrossChainRegistry: Enables AVSs to register to have their operator stakes transported to supported destination chainsReleaseManager: 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 BN254OperatorTableUpdater: Updates operator tables in theCertificateVerifierto 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 aBLSAPKRegistryCertificateVerifier: Handles signature verification for BLS and ECDSA keys. AVSs no longer have to deploy aBLSSignatureChecker- 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:
- Core Contracts
- AVS Contracts
- 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
- feat: multichain by @ypatil12 in #1494
- chore: add final moocow audit by @wadealexc in #1505
- fix: strategy manager gap by @0xClandestine in #1508
- test(redistribution-changes): passing by @0xClandestine in #1511
- docs(redistribution-changes): cleanup by @0xClandestine in #1513
- docs: update CHANGELOG by @0xClandestine in #1514
- release(redistribution): post audit changes by @0xClandestine in #1461
- refactor: remove unnecessary signature validation and change param name by @eigenmikem in #1509
- fix: remove unused constants and add gap by @8sunyuan in #1519
- feat: key data reverse lookup by @ypatil12 in #1520
- docs: add final audit reports by @antojoseph in #1523
- docs: clear up certificate verification by @ypatil12 in #1515
- refactor: cleaner reverts for
ECDSACertificateVerifierby @ypatil12 in #1521 - fix: internal audit fixes by @ypatil12 in #1524
- docs: update README for v1.5.0 & v1.6.0 by @ypatil12 in #1526
- refactor: table calc interface by @ypatil12 in #1525
- fix: multichain clarity updates by @nadir-akhtar in #1527
- test: multichain integration tests by @eigenmikem in #1528
- fix: multichain deploy scripts by @ypatil12 in #1510
- chore: update
v1.7.0changelog by @ypatil12 in #1529 - fix: typo by @ypatil12 in #1530
- feat: invalid staleness period prevention by @ypatil12 in #1536
- feat: cleaner generator updates by @ypatil12 in #1537
- chore: symmetric
BN254andECDSAchecks by @ypatil12 in #1540 - feat: add calculateCertificateDigestBytes to ECDSA cert verifier (#1532) by @ypatil12 in #1542
- refactor: remove transport interface by @ypatil12 in #1512
- chore: clean up natspec round 1 by @ypatil12 in #1541
- fix: storage gap in
CrossChainRegistryby @ypatil12 in #1544 - test: more integration test scenarios and checks file by @eigenmikem in #1548
- fix: prevent
globalTableRootcertificate replay upon newly instantiated CertificateVerifiers/OperatorTables by @ypatil12 in #1547 - fix: Multichain (Pt 2) fixes by @nadir-akhtar in #1549
- chore: update
foundry.tomlto includeforge lintconfig by @0xClandestine in #1539 - chore:
KeyRegistrarclarifications by @ypatil12 in #1551 - chore:
CertificateVerifierclarifications by @ypatil12 in #1552 - chore:
CrossChainRegistryclarifications by @ypatil12 in #1553 - docs: update hoodi strat addresses by @ypatil12 in #1556
- fix: hardening workflows test by @anupsv in #1554
- docs: update for
v1.6.0andv1.5.0by @ypatil12 in #1558 - chore: update bindings by @ypatil12 in #1565
- docs: multichain by @ypatil12 in #1567
- fix: Release Manager internal review fixes by @nadir-akhtar in #1571
- feat: hourglass by @0xrajath in #1576
- fix: multichain pt1 audit fixes by @ypatil12 in #1572
- feat: update generator script by @ypatil12 in #1581
- fix: remove unused imports by @0xClandestine in #1585
- fix: sp multichain audit fixes by @ypatil12 in #1598
- chore: clearer error message by @ypatil12 in #1602
- fix: multichain pt2 audit fixes by @ypatil12 in #1592
- fix(audit): merkle library audit fixes by @nadir-akhtar in #1606
- fix: hourglass part 1 and 2 audit fixes by @0xrajath in #1609
- fix: include timestamp with BN254CertificateVerifier certificate generation by @nadir-akhtar in #1610
- fix: enforce ordering of nonsigners in bn254CV by @eigenmikem in #1615
- feat: final testnet upgrade scripts by @ypatil12 in #1594
- feat: el...
v1.6.2
Updates bindings to remove merge conflicts on EigenPod.abi
Full Changelog: v1.6.1...v1.6.2
v1.6.1
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.requestWithdrawalfunction to ensure that validators are pointed to the pod, matching the behavior ofrequestConsolidation
🔧 Improvements
- Update the
EigenPod.verifyWithdrawalCredentialsfunction to only acceptbeaconTimestampsthat are after thelatestCheckpointTimestamp. 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
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
OperatorTableUpdaterandBN254CertificateVerifierare now salted. TheLeafCalculatorMixinis used by:OperatorTableUpdater: To salt theoperatorTableLeafviacalculateOperatorTableLeaf. This change is also reflected in the offchain transporterBN254CertificateVerifier: To salt theoperatorInfoLeafviacalculateOperatorInfoLeaf. BN254 OperatorSets MUST update their table calculators to use the newBN254TableCalculatorBasein themiddleware repo
- Nonsigners in the
BN254CertificateVerifierare now sorted by operator index. See PR #1615. All offchain aggregators MUST sort nonsigners by operator index - The
BN254CertificateVerifiernow requires signatures over thereferenceTimestampviacalculateCertificateDigest. 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
- Introspection for operatorSets with active generation reservations:
hasActiveGenerationReservation. See PR #1589 - Clearer error messages/natspec:
- Require
KeyTypeto be set when creating a generation reservation. See PR #1561
🐛 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
ReleaseManagerby settingupgradeByTimeto0. See PR #1608
🐛 Bug Fixes
- Added
NoReleases()custom error toisValidRelease()andgetLatestUpgradeByTime()inReleaseManagerwhen there are no releases for a given operator set. See PR #1608 - Added a
MAX_TASK_SLAimmutable to theTaskMailboxthat will be set asDEALLOCATION_DELAY / 2so 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 + maxStalenessin theTaskMailboxduring 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 theTaskMailbox. See PR #1604
What's Changed
- feat: multichain by @ypatil12 in #1494
- chore: add final moocow audit by @wadealexc in #1505
- fix: strategy manager gap by @0xClandestine in #1508
- test(redistribution-changes): passing by @0xClandestine in #1511
- docs(redistribution-changes): cleanup by @0xClandestine in #1513
- docs: update CHANGELOG by @0xClandestine in #1514
- release(redistribution): post audit changes by @0xClandestine in #1461
- refactor: remove unnecessary signature validation and change param name by @eigenmikem in #1509
- fix: remove unused constants and add gap by @8sunyuan in #1519
- feat: key data reverse lookup by @ypatil12 in #1520
- docs: add final audit reports by @antojoseph in #1523
- docs: clear up certificate verification by @ypatil12 in #1515
- refactor: cleaner reverts for
ECDSACertificateVerifierby @ypatil12 in #1521 - fix: internal audit fixes by @ypatil12 in #1524
- docs: update README for v1.5.0 & v1.6.0 by @ypatil12 in #1526
- refactor: table calc interface by @ypatil12 in #1525
- fix: multichain clarity updates by @nadir-akhtar in #1527
- test: multichain integration tests by @eigenmikem in #1528
- fix: multichain deploy scripts by @ypatil12 in #1510
- chore: update
v1.7.0changelog by @ypatil12 in #1529 - fix: typo by @ypatil12 in #1530
- feat: invalid staleness period prevention by @ypatil12 in #1536
- feat: cleaner generator updates by @ypatil12 in #1537
- chore: symmetric
BN254andECDSAchecks by @ypatil12 in #1540 - feat: add calculateCertificateDigestBytes to ECDSA cert verifier (#1532) by @ypatil12 in #1542
- refactor: remove transport interface by @ypatil12 in #1512
- chore: clean up natspec round 1 by @ypatil12 in #1541
- fix: storage gap in
CrossChainRegistryby @ypatil12 in #1544 - test: more integration test scenarios and checks file by @eigenmikem in #1548
- fix: prevent
globalTableRootcertificate replay upon newly instantiated CertificateVerifiers/OperatorTables by @ypatil12 in #1547 - fix: Multichain (Pt 2) fixes by @nadir-akhtar in #1549
- chore: update
foundry.tomlto includeforge lintconfig by @0xClandestine in #1539 - chore:
KeyRegistrarclarifications by @ypatil12 in #1551 - chore:
CertificateVerifierclarifications by @ypatil12 in #1552 - chore:
CrossChainRegistryclarifications by @ypatil12 in #1553 - docs: update hoodi strat addresses by @ypatil12 in #1556
- fix: hardening workflows test by @anupsv in #1554
- docs: update for
v1.6.0andv1.5.0by @ypatil12 in #1558 - chore: update bindings by @ypatil12 in #1565
- docs: multichain by @ypatil12 in #1567
- fix: Release Manager internal review fixes by @nadir-akhtar in #1571
- feat: hourglass by @0xrajath in #1576
- fix: multichain pt1 audit fixes by @ypatil12 in #1572
- feat: update generator script by @ypatil12 in #1581
- fix: remove unused imports by @0xClandestine in #1585
- fix: sp multichain audit fixes by @ypatil12 in #1598
- chore: clearer error message by @ypatil12 in #1602
- fix: multichain pt2 audit fixes by @ypatil12 in #1592
- fix(audit): merkle library audit fixes by @nadir-akhtar in #1606
- fix: hourglass part 1 and 2 au...
v1.8.0-rc.0 : Hourglass
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:
- Core Contracts
- AVS Contracts
- 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
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:
submitResultcertificate 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
Updates multichain release with bindings
Full Changelog: v1.7.0-rc.3...v1.7.0-rc.4
v1.6.0
v1.6.0 Moocow and ELIP5
Release Manager
Highlights
🚀 New Features
- New APIs supporting Pectra's validator consolidation and withdrawal features:
EigenPod.requestConsolidation(...)andEigenPod.requestWithdrawal(...) - New getters to support Pectra APIs:
EigenPod.getConsolidationRequestFee()andEigenPod.getWithdrawalRequestFee() - Added 4 new events to
EigenPod.solto track consolidation and withdrawal requests - Added 2 new events to
Eigen.solto track token wraps/unwraps withBackingEigen
📌 Deprecations
- Removed
EigenPod.GENESIS_TIME()getter. This method, though public, has been unused for over a year.
🔧 Improvements
- When finalizing an
EigenPodcheckpoint (proofsRemaining == 0), the contract will store the finalized checkpoint in storage. This can be queried viaEigenPod.currentCheckpoint(). Starting a new checkpoint will overwrite this previously-finalized checkpoint. - Added semver to
Eigen - Signatures of a few
EigenPodevents are changed to match the rest events and take validator pubkey hash instead of validator index, which standardizedEigenPodevents 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