Releases: Layr-Labs/eigenlayer-contracts
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 theCertificateVerifier
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 aBLSAPKRegistry
CertificateVerifier
: 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
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
- @antojoseph made their first contribution in #1523
Full Changelog: v1.6.0...v1.7.0-rc.0
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.sol
to track consolidation and withdrawal requests - Added 2 new events to
Eigen.sol
to 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
EigenPod
checkpoint (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
EigenPod
events are changed to match the rest events and take validator pubkey hash instead of validator index, which standardizedEigenPod
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.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
createOperatorSets
function 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.decreaseBurnableShares
will 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.slashOperator
function now returns aslashId
and array ofshares
to be burned/redistributed. The function selector remains the same. - OperatorSets now have a
slashCount
field, which returns the number of slashes completed by the operatorSet. This value only reflects the number of slashes after the redistribution upgrade. StrategyBase
returns anamountOut
upon withdrawal to comply with standard ERC-4626 vaults.- The
AllocationManager
andDelegationManager
no longer use ownable. Thus, they now inherit theDeprecated_OwnableUpgradeable
mixin in its place to reduce codesize.
🐛 Bug Fixes
SemVerMixin
is updated to only return the first character ofmajorVersion
. We currently return1.
and will return1
after this upgrade.
Changelog
- feat(draft):
AllocationManager
redistribution 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:
decreaseBurnOrRedistributableShares
PR #1414 - feat: deploy escrow in
initiateSlashEscrow
PR #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
+SlashEscrow
PR #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
isOperatorRedistributable
PR #1401 - fix: storage checker PR #1394
- fix: review issues PR #1391
- feat: escrow funds in unique clone contracts PR #1387
- refactor: remove
v
prefix fromSemVerMixin
PR #1385 - test(redistribution): add unit tests PR #1383
- feat: add
SlashingWithdrawalRouter
PR #1358 - feat: simplify removeDepositShares in StrategyManager PR #1373
- feat(draft):
AllocationManager
redistribution 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
v1.6.0-rc.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.sol
to track consolidation and withdrawal requests - Added 2 new events to
Eigen.sol
to 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
EigenPod
checkpoint (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
EigenPod
events are changed to match the rest events and take validator pubkey hash instead of validator index, which standardizedEigenPod
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
v1.5.0-rc.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 will now be routed to individual
SlashEscrow
contracts. The release of funds from escrow is gated by theSlashEscrowFactory
. TheSlashEscrowFactory
deploys individualSlashEscrow
contracts per slash, enforces a global delay for all escrowed funds, and handles pausing/unpausing of escrowed funds. - The original
createOperatorSets
function 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.
⛔ Breaking changes
- Funds marked for burning now go through a 4-day escrow period via
SlashEscrow
contracts. These funds are burned by callingSlashEscrowFactory.releaseSlashEscrow
.
📌 Future Deprecations
- The pre-redistribution burn pathway
StrategyManager.decreaseBurnableShares
will 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 4-day escrow delay. The eventual burning or redistribution of slashed funds can be paused by the
PauserMultisig
. - The upgradability of the
SlashEscrowFactory
is controlled by theCommunityMultisig
. The contract will have a separateProxyAdmin
from the rest of the EigenLayer core protocol. Each individualSlashEscrow
contract is an immutable clone.
🔧 Improvements
- The
AllocationManager.slashOperator
function now returns aslashId
and array ofshares
to be burned/redistributed. The function selector remains the same. - OperatorSets now have a
slashCount
field, which returns the number of slashes completed by the operatorSet. This value only reflects the number of slashes after the redistribution upgrade. StrategyBase
returns anamountOut
upon withdrawal to comply with standard ERC-4626 vaults.- The
AllocationManager
andDelegationManager
no longer use ownable. Thus, they now inherit theDeprecated_OwnableUpgradeable
mixin in its place to reduce codesize.
🐛 Bug Fixes
SemVerMixin
is updated to only return the first character ofmajorVersion
. We currently return1.
and will return1
after this upgrade.
What's Changed
- docs: add StrategyBase accounting doc by @nadir-akhtar in #1233
- feat: v1.4.0 upgrade script by @ypatil12 in #1244
- chore: add release label by @bowenli86 in #1253
- feat: support all characters after colon by @0xClandestine in #1255
- docs: Clarify AVS Meaning for AllocationManager and Effect of invoking updateAVSMetadataURI by @wesfloyd in #1259
- chore: add missing fn to interface by @0xClandestine in #1271
- chore: address ep/epm informational by @ypatil12 in #1272
- docs: post-cantina doc updates by @ypatil12 in #1266
- fix(cantina): deposit share cast bug by @8sunyuan in #1265
- chore: add event to dsf reset on full withdrawal by @eigenmikem in #1270
- feat: cantina preprod/testnet upgrade scripts by @ypatil12 in #1286
- fix: v1.4.1 execute script name by @ypatil12 in #1297
- docs: add sepolia by @ypatil12 in #1309
- docs: complete MAINTENANCE.md and clarify maintainers responsibility by @bowenli86 in #1314
- docs: simplify readme and consolidate with CONTRIBUTING.md by @bowenli86 in #1317
- docs: improve readability and searchbility with tabs for deployment contracts by @bowenli86 in #1318
- ci: change certora prover to run on main by @bowenli86 in #1319
- ci: add path filter for intense test by @bowenli86 in #1320
- docs: callout consequences of not follow contribution guidelines by @bowenli86 in #1326
- fix: update sepolia wETH strategy contract link with correct address by @pschork in #1336
- ci: enable auto delete branch upon eigengit launch by @bowenli86 in #1339
- docs: enrich MAINTENANCE.md re: release branches by @bowenli86 in #1340
- docs: update addresses for mainnet by @ypatil12 in #1341
- chore: Update README for Holesky v1.4.2 release by @solimander in #1351
- ci: add cron to auto remove stale branches by @bowenli86 in #1348
- chore: update readme for v1.4.1 by @ypatil12 in #1361
- ci: add CI to auto validate deployment scripts by @bowenli86 in #1360
- docs: bump deployment matrix to top of README by @bowenli86 in #1376
- docs: updating readme for dead links, readability, new language, and more by @non-fungible-nelson in #1377
- ci: add testnet envs sepolia and hoodi to validate-deployment-scripts by @bowenli86 in #1378
- docs: add doc for steps to write deploy scripts by @bowenli86 in #1380
- ci: add explicit permissions to workflows to mitigate security concerns by @bowenli86 in #1392
- chore: update .gitattributes with Certora .spec/.conf formatting by @nadir-akhtar in #1379
- chore: add instruction of generating changelog from last release by @bowenli86 in #1405
- docs: add hoodi by @ypatil12 in #1419
- feat(release): redistribution by @0xClandestine in #1355
New Contributors
- @pschork made their first contribution in #1336
- @non-fungible-nelson made their first contribution in #1377
Full Changelog: v1.4.0-testnet-holesky...v1.5.0-rc.0
v1.4.1
Overview
This release brings Pectra Compatability to EigenPods. There are no breaking changes as part of this release. v1.3.0
of the proof generation CLI is forwards compatible with this release.
As part of the upgrade process, EigenPods will be paused for ~12 hours on mainnet. For a full list of updates, see our guide.
What's Changed
- feat: proofra upgrade script by @ypatil12 in (#1067)
- feat: pectra compatibility by @ypatil12 in (#1053)
Full Changelog: v1.3.0...v1.4.1
v1.4.2
Overview
This release reduces the following delay parameters on the Holesky testnet to enable faster iteration and testing:
ALLOCATION_CONFIGURATION_DELAY
: reduced from 75 blocks (~15 minutes) to 30 blocks (~6 minutes)DEALLOCATION_DELAY
: reduced from 50 blocks (~10 minutes) to 25 blocks (~5 minutes)MIN_WITHDRAWAL_DELAY_BLOCKS
: reduced from 50 blocks (~10 minutes) to 25 blocks (~5 minutes)
What's Changed from v1.4.1
- release: Reduce allocation configuration delay & min withdrawal delay on Holesky by @solimander #1343
Full Changelog: v1.4.1...v1.4.2
v1.3.0
Overview
This is the release for the upcoming EigenLayer mainnet slashing upgrade. It encompasses all functionality, testing, and audit changes.
For a full breakdown of breaking changes, please see our release notes for Operators/LRTs and AVSs.
What's Changed from the release candidate
- feat: cantina audit changes on mainnet release by @ypatil12 in #1288
- feat: mainnet upgrade scripts by @ypatil12 in #1257
What's Changed from v0.5.4
- docs: rewards v2 audit report by @0xrajath in #1021
- chore: merge
dev
totestnet-holesky
by @0xrajath in #1032 - feat: slashing release by @8sunyuan in #679
- feat: rewards v2.1 by @0xClandestine in #1011
- feat: storage-diff.sh by @0xClandestine in #1054
- docs: Rewards v2.1 by @nadir-akhtar in #1055
- refactor: quality of life improvements by @0xClandestine in #1006
- fix: enforce no compile warnings by @0xClandestine in #1057
- chore: rewards v2.1 zeus script by @0xrajath in #1058
- docs: updated rewards v2.1 docs by @0xrajath in #1061
- test: improve coverage by @0xClandestine in #1059
- feat: ci storage check required by @0xClandestine in #1062
- docs: fix broken link by @dabit3 in #907
- docs: rm -rf docs/storage-report by @0xClandestine in #1063
- feat: add size diff workflow by @0xClandestine in #1065
- chore: remove old release scripts by @0xClandestine in #1066
- fix: zeus upgrade name by @0xrajath in #1068
- chore: vscode settings json by @0xrajath in #1071
- fix(ci): intense test errors by @0xClandestine in #1072
- chore: update to open source zeus repo by @jbrower95 in #1084
- fix: remove deprecated hardhat configs by @bowenli86 in #1090
- perf: parallelize foundry workflows by @bowenli86 in #1094
- refactor: limit continuous fuzzing to dev branch by @bowenli86 in #1101
- refactor: registrar interfaces by @8sunyuan in #1102
- feat: alm upgrade script by @8sunyuan in #1103
- perf: use x64 16core machine for CI by @bowenli86 in #1099
- fix: remove tsconfig by @bowenli86 in #1114
- perf: run Foundry CI tests only for relevant code changes by @bowenli86 in #1112
- perf: speed up test coverage job in CI by @bowenli86 in #1115
- docs: fix all misspellings by @0xClandestine in #1119
- perf: install lcov via prebuilt binary, instead of via apt by @bowenli86 in #1123
- perf: add cache for forge build by @bowenli86 in #1125
- feat: add typos-cli ci check by @0xClandestine in #1126
- feat: slashing audit fixes by @wadealexc in #1046
- fix: disable foundry ci suite path check by @0xClandestine in #1159
- chore: re-enable foundry ci suite path check by @bowenli86 in #1160
- docs: add warning in PR template by @0xClandestine in #1174
- feat: add pull request labeler to ci pipeline by @0xClandestine in #1177
- chore: improve labeler config by @0xClandestine in #1185
- chore: improve labeler config by @0xClandestine in #1186
- chore(ci): lint pr titles by @0xClandestine in #1193
- fix: DSF increase on checkpointed nonzero shares by @ypatil12 in #1176
- chore: disable ci path filtering by @0xClandestine in #1202
- docs(avs-directory): mark AVSDirectory as deprecated by @nadir-akhtar in #1199
- chore: consolidate/update deploy from scratch scripts by @ypatil12 in #1209
- test: slashing integration testing by @ypatil12 in #1211
- chore: forge fmt tests by @0xClandestine in #1212
- docs: updates for slashing release by @8sunyuan in #1213
- fix: zero duration by @0xrajath in #1216
- fix: compile warnings + ignore non-relevant errors by @0xClandestine in #1220
- test: Certora prover specs and CI by @aehyvari in #1218
- docs: update
effectBlock
on allocation delay; add undelegate dual slash edge case by @ypatil12 in #1221 - test: refactoring dsf assertions by @eigenmikem in #1217
- chore: update doc version by @ypatil12 in #1224
- feat: cantina audit changes on mainnet release by @ypatil12 in #1288
- feat: mainnet upgrade scripts by @ypatil12 in #1257
New Contributors
Full Changelog: v0.5.4...v1.3.0
v1.4.1-testnet-holesky
Overview
This release includes changes from our Cantina Competition Audit. There are no breaking changes from v1.4.0
.
The audit-related changes include the below PRs:
Full Changelog
- docs: add StrategyBase accounting doc by @nadir-akhtar in #1233
- feat: v1.4.0 upgrade script by @ypatil12 in #1244
- chore: add release label by @bowenli86 in #1253
- feat: support all characters after colon by @0xClandestine in #1255
- docs: Clarify AVS Meaning for AllocationManager and Effect of invoking updateAVSMetadataURI by @wesfloyd in #1259
- chore: add missing fn to interface by @0xClandestine in #1271
- chore: address ep/epm informational by @ypatil12 in #1272
- docs: post-cantina doc updates by @ypatil12 in #1266
- fix(cantina): deposit share cast bug by @8sunyuan in #1265
- chore: add event to dsf reset on full withdrawal by @eigenmikem in #1270
- feat: cantina preprod/testnet upgrade scripts by @ypatil12 in #1286
- fix: v1.4.1 execute script name by @ypatil12 in #1297
Full Changelog: v1.4.0-testnet-holesky...v1.4.1-testnet-holeksy
v1.3.0-rc.0
Overview
This is the release candidate for the upcoming EigenLayer mainnet slashing release. It encompasses changes from two external audits along with several testing upgrades.
Note: This release is the similar to our v1.4.0.tesnet-holesky
release, except it does not include any Pectra compatibility changes. We anticipate slashing to be deployed on mainnet prior to the mainnet Pectra hard fork.
Breaking Changes
- Require AVS Metadata Registration prior to Opset Creation #1025
- Rename
getQueuedWithdrawal
->queuedWithdrawals
: #1133.getQueuedWithdrawal
still exists, but changes the behavior ofgetQueuedWithdrawals
. - Behavior of
getMinimumSlashableStake
: #1037 encumberedMagnitude
getter: #1038ISignatureUtils
->ISignatureUtilsMixin
andISignatureUtilsMixinTypes
: #1015
What's Changed
- docs: rewards v2 audit report by @0xrajath in #1021
- chore: merge
dev
totestnet-holesky
by @0xrajath in #1032 - feat: slashing release by @8sunyuan in #679
- feat: rewards v2.1 by @0xClandestine in #1011
- feat: storage-diff.sh by @0xClandestine in #1054
- docs: Rewards v2.1 by @nadir-akhtar in #1055
- refactor: quality of life improvements by @0xClandestine in #1006
- fix: enforce no compile warnings by @0xClandestine in #1057
- chore: rewards v2.1 zeus script by @0xrajath in #1058
- docs: updated rewards v2.1 docs by @0xrajath in #1061
- test: improve coverage by @0xClandestine in #1059
- feat: ci storage check required by @0xClandestine in #1062
- docs: fix broken link by @dabit3 in #907
- docs: rm -rf docs/storage-report by @0xClandestine in #1063
- feat: add size diff workflow by @0xClandestine in #1065
- chore: remove old release scripts by @0xClandestine in #1066
- fix: zeus upgrade name by @0xrajath in #1068
- chore: vscode settings json by @0xrajath in #1071
- fix(ci): intense test errors by @0xClandestine in #1072
- chore: update to open source zeus repo by @jbrower95 in #1084
- fix: remove deprecated hardhat configs by @bowenli86 in #1090
- perf: parallelize foundry workflows by @bowenli86 in #1094
- refactor: limit continuous fuzzing to dev branch by @bowenli86 in #1101
- refactor: registrar interfaces by @8sunyuan in #1102
- feat: alm upgrade script by @8sunyuan in #1103
- perf: use x64 16core machine for CI by @bowenli86 in #1099
- fix: remove tsconfig by @bowenli86 in #1114
- perf: run Foundry CI tests only for relevant code changes by @bowenli86 in #1112
- perf: speed up test coverage job in CI by @bowenli86 in #1115
- docs: fix all misspellings by @0xClandestine in #1119
- perf: install lcov via prebuilt binary, instead of via apt by @bowenli86 in #1123
- perf: add cache for forge build by @bowenli86 in #1125
- feat: add typos-cli ci check by @0xClandestine in #1126
- feat: slashing audit fixes by @wadealexc in #1046
- fix: disable foundry ci suite path check by @0xClandestine in #1159
- chore: re-enable foundry ci suite path check by @bowenli86 in #1160
- docs: add warning in PR template by @0xClandestine in #1174
- feat: add pull request labeler to ci pipeline by @0xClandestine in #1177
- chore: improve labeler config by @0xClandestine in #1185
- chore: improve labeler config by @0xClandestine in #1186
- chore(ci): lint pr titles by @0xClandestine in #1193
- fix: DSF increase on checkpointed nonzero shares by @ypatil12 in #1176
- chore: disable ci path filtering by @0xClandestine in #1202
- docs(avs-directory): mark AVSDirectory as deprecated by @nadir-akhtar in #1199
- chore: consolidate/update deploy from scratch scripts by @ypatil12 in #1209
- test: slashing integration testing by @ypatil12 in #1211
- chore: forge fmt tests by @0xClandestine in #1212
- docs: updates for slashing release by @8sunyuan in #1213
- fix: zero duration by @0xrajath in #1216
- fix: compile warnings + ignore non-relevant errors by @0xClandestine in #1220
- test: Certora prover specs and CI by @aehyvari in #1218
- docs: update
effectBlock
on allocation delay; add undelegate dual slash edge case by @ypatil12 in #1221 - test: refactoring dsf assertions by @eigenmikem in #1217
- chore: update doc version by @ypatil12 in #1224
New Contributors
Full Changelog: v0.5.4...v1.3.0