Releases: Layr-Labs/eigenlayer-contracts
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
v1.7.0-rc.3: Multichain
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
Highlights
🚀 New Features
- The
ECDSACertificateVerifierandBN254CertficateVerifierhave 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 #1512createGenerationReservationno longer takes in a list ofchainIDsaddTransportDestinationsandremoveTransportDestinationshave been removedgetActiveTransportReservationsandgetTransportDestinations(operatorSet)have been removed
ECDSACertificateVerifiergetTotalStakeshas been renamed togetTotalStakeWeightssignedStakeshas been renamed tototalSignedStakeWeights
KeyRegistrarcheckKeyhas been deprecated in favor ofisRegistered
🛠️ Security Fixes
- In the
OperatorTableCalculator, we now hard-code theGenerator's table root and reference timestamp. See PR #1537
🔧 Improvements
- The
ECDSACertificateVerifiernow has acalculateCertificateDigestBytes, 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
getTotalStakeWeightsandgetTotalStakeWeightstoBN254CertificateVerifier. 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:
TableUpdateCadenceto theCrossChainRegistry. We now enforce thatmaxStalenessPeriodis >=TableUpdateCadenceto prevent bricking Certificate Verification. See PR #1536 - Prevent replay of past certificates on new environments. See PR #1547
What's Changed
- 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 #1541 - test: more integration test scenarios and checks file by @eigenmikem in #1548
- fix: prevent globalTableRoot certificate replay upon newly instantiated CertificateVerifiers/OperatorTables by @ypatil12 in #1547
- fix: Multichain (Pt 2) fixes by @nadir-akhtar in #1549
- chore:
KeyRegistrarclarifications by @ypatil12 in #1551 - chore:
CertificateVerifierclarifications by @ypatil12 in #1552 - chore:
CrossChainRegistryclarifications by @ypatil12 in #1553
Full Changelog: v1.7.0-rc.0...v1.7.0-rc.3
v1.7.0-rc.0: Multichain
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:
- 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.
Release Manager
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
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
ECDSACertificateVerifierPR #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
publishMetadataURIPR #1492 - refactor:
globalRootConfirmerSet->generatorPR #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:
KeyRegistryunit testing PR #1482 - feat: disable root PR #1481
- refactor:
ECDSATableCalculatortesting PR #1479 - refactor: operators can deregister keys if not slashable PR #1480
- refactor:
ECDSACertificateVerifiertesting PR #1478 - refactor:
Bn254CertificateVerifierUnitTestsPR #1476 - feat: ecdsa table calculator PR #1473
- feat: ecdsacv views PR #1475
- refactor:
BN254OperatorTableCalculatorPR #1463 - feat: add
referenceBlockNumberPR #1472 - feat: release manager PR #1469
- feat: ecdsa cert verifier PR #1470
- feat: add view function for
getGlobalConfirmerSetReferenceTimestampPR #1471 - chore: add helper view function PR #1465
- chore: add sig digest functions to interface PR #1464
- refactor:
CrossChainRegistryPR #1457 - fix: global table update message hash PR #1460
- refactor: sig verification into library PR #1455
- fix:
OperatorTableUpdaterencoding PR #1456 - chore: add latest
referenceTimestampto 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
- @antojoseph made their first contribution in #1523
Full Changelog: v1.6.0...v1.7.0-rc.0
v1.5.0
v1.5.0 Redistribution
Release Manager
Highlights
🚀 New features
- Redistribution is a feature that gives Service Builders a means to not just burn, but repurpose slashed funds.
- We introduce a new operatorSet creation mechanism:
AllocationManager.createRedistributingOperatorSets, which allows slashed funds to be redistributed to aRedistributionRecipient. Note: The redistribution recipient can be set only once and is immutable. - All slashed funds now follow a two-step process. During a slash, we increase burn or redistributable shares. A cronjob then handles the actual redistribution or burning of these shares.
- The original
createOperatorSetsfunction still exists. This function creates operatorSets whose slashed funds will eventually be burned. There is no mechanism to convert an operatorSet to be redistributing. - See ELIP-006 for a full description.
📌 Future Deprecations
- The pre-redistribution burn pathway
StrategyManager.decreaseBurnableShareswill be deprecated in an upgrade after the redistribution release. This function can still be used to burn shares that have been slashed at any point prior to the redistribution upgrade.
🛠️ Security Updates
- The slashing of burned funds is no longer instantaneous. All slashed funds (burned or redistributed) now go through a two-step process where shares are first marked for burning/redistribution, then processed by a cronjob. The burning or redistribution of slashed funds can be paused by the
PauserMultisig.
🔧 Improvements
- The
AllocationManager.slashOperatorfunction now returns aslashIdand array ofsharesto be burned/redistributed. The function selector remains the same. - OperatorSets now have a
slashCountfield, which returns the number of slashes completed by the operatorSet. This value only reflects the number of slashes after the redistribution upgrade. StrategyBasereturns anamountOutupon withdrawal to comply with standard ERC-4626 vaults.- The
AllocationManagerandDelegationManagerno longer use ownable. Thus, they now inherit theDeprecated_OwnableUpgradeablemixin in its place to reduce codesize.
🐛 Bug Fixes
SemVerMixinis updated to only return the first character ofmajorVersion. We currently return1.and will return1after this upgrade.
Changelog
- feat(draft):
AllocationManagerredistribution support PR #1346 - feat: redistribution upgrade script PR #1396
- chore: bindings PR #1422
- test: redistribution upgrade PR #1410
- test: redistribution integration PR #1415
- docs: redistribution PR #1409
- chore: address redistribution nits PR #1420
- chore: style updates PR #1416
- perf: avoid binary search PR #1417
- feat: release escrow by strategy PR #1412
- refactor: review changes PR #1411
- refactor:
decreaseBurnOrRedistributableSharesPR #1414 - feat: deploy escrow in
initiateSlashEscrowPR #1413 - chore: update naming PR #1408
- feat: simplify escrow delay; add convenience functions PR #1406
- fix: enumerable map overwrite PR #1399
- chore: decrease dm diff further PR #1404
- test: full coverage
SlashEscrowFactory+SlashEscrowPR #1403 - chore: remove dm/alm code size optimizations PR #1398
- chore: rename burnable -> burnOrRedistributable; fix storage gap; remove poc code PR #1397
- chore: use internal getters; update
isOperatorRedistributablePR #1401 - fix: storage checker PR #1394
- fix: review issues PR #1391
- feat: escrow funds in unique clone contracts PR #1387
- refactor: remove
vprefix fromSemVerMixinPR #1385 - test(redistribution): add unit tests PR #1383
- feat: add
SlashingWithdrawalRouterPR #1358 - feat: simplify removeDepositShares in StrategyManager PR #1373
- feat(draft):
AllocationManagerredistribution support PR #1346 - ci: add explicit permissions to workflows to mitigate security concerns PR #1392
- ci: remove branch constraint for foundry coverage job
- docs: add release managers to changelogs
- docs: add templates for changelog and release notes PR #1382
- docs: add doc for steps to write deploy scripts PR #1380
- ci: add testnet envs sepolia and hoodi to validate-deployment-scripts PR #1378
- docs: update MAINTENANCE to include practices of merging multiple release-dev branches
- docs: updating readme for dead links, readability, new language, and more PR #1377
- docs: bump deployment matrix to top of README PR #1376
- ci: add CI to auto validate deployment scripts PR #1360
- chore: update readme for v1.4.1 PR #1361
- ci: add cron to auto remove stale branches PR #1348
- chore: Update README for Holesky v1.4.2 release PR #1351
- docs: remove fork-pr instructions from CONTRIBUTING.md and MAINTENANCE.md
- ci: disable delete unauthorized branches
- docs: update addresses for mainnet PR #1341
- docs: enrich MAINTENANCE.md re: release branches PR #1340
- ci: enable auto delete branch upon eigengit launch PR #1339
- 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
- fix(audit): assert redistribution recipient != burn address PR #1466
- docs(audit): note upgrade rescue flow PR #1467
- refactor: remove redistribution delay PR #1485
- fix: strategy manager gap PR #1508
- test(redistribution-changes): passing PR #1511
- docs(redistribution-changes): cleanup PR #1513
- docs: update CHANGELOG PR #1514
- feat: redistribution upgrade scripts PR #1517
Full Changelog: v1.4.1...v1.5.0