From 5c5230b548c5f55dc38f9e6dbca138beedc26bab Mon Sep 17 00:00:00 2001 From: Yash Patil <40046473+ypatil12@users.noreply.github.com> Date: Thu, 10 Jul 2025 12:23:29 -0400 Subject: [PATCH 1/2] feat: changelog --- CHANGELOG/CHANGELOG-1.4.0.md | 43 ++++++++++ CHANGELOG/CHANGELOG-template.md | 84 ++++++++++++++++++++ docs/middlewareV2/OperatorTableCalculator.md | 2 +- 3 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG/CHANGELOG-1.4.0.md create mode 100644 CHANGELOG/CHANGELOG-template.md diff --git a/CHANGELOG/CHANGELOG-1.4.0.md b/CHANGELOG/CHANGELOG-1.4.0.md new file mode 100644 index 00000000..58a127ad --- /dev/null +++ b/CHANGELOG/CHANGELOG-1.4.0.md @@ -0,0 +1,43 @@ +# v1.4.0 MultiChain/MiddlewareV2 + +The multichain/middlewareV2 release enables AVSs to launch their services and make verified Operator outputs available on any EVM chain, meeting their customers where they are. AVSs can specify custom operator weights to be transported to any destination chain. The release has 3 components: + +1. Core Contracts +2. AVS Contracts +3. Offchain Infrastructure + +The below release notes cover AVS Contracts. For more information on the end to end protocol, see our [docs](../docs/middlewareV2/README.md), [core contract docs](https://github.com/Layr-Labs/eigenlayer-contracts/tree/main/docs/multichain), and [ELIP-008](https://github.com/eigenfoundation/ELIPs/blob/elip-008v1/ELIPs/ELIP-008.md). + +## Release Manager + +@ypatil12 @eigenmikem + +## Highlights + +This multichain release only introduces new standards and contracts. As a result, there are **no breaking changes or deprecations**. All new contracts are in the [middlewareV2 folder](../src/middlewareV2/). + +🚀 New Features – Highlight major new functionality + +- `AVSRegistrar`: The primary interface for managing operator registration and deregistration within an AVS. It integrates with core EigenLayer contracts to ensure operators have valid keys and are properly registered in operator sets +- `OperatorTableCalculator`: Responsible for calculating stake weights of operator. These stake weights are aggregated and transported using the [Eigenlayer Multichain Protocol](https://github.com/eigenfoundation/ELIPs/blob/elip-008v1/ELIPs/ELIP-008.md). In order to utilize the multichain protocol, an AVS *MUST* deploy an `OperatorTableCalculator` and register it in the `CrossChainRegistry` in EigenLayer core. See our [core documentation](https://github.com/Layr-Labs/eigenlayer-contracts/tree/main/docs/multichain#common-user-flows) for this process. + +🔧 Improvements – Enhancements to existing features. + +- The multichain protocol has protocol-ized several AVS-deployed contracts, enabling an simpler AVS developer experience. These include: + - `KeyRegistrar`: Manages BLS and ECDSA signing keys. AVSs no longer have to deploy a `BLSAPKRegistry` + - `CertificateVerifier`: Handles signature verification for BLS and ECDSA keys. AVSs no longer have to deploy a `BLSSignatureChecker` + - Offchain Multichain Transport: AVSs no longer have to maintain [avs-sync](https://github.com/Layr-Labs/avs-sync) to keep operator stakes fresh + +## Changelog + +- fix: table calc interface [PR #493](https://github.com/layr-labs/eigenlayer-middleware/pull/493) +- docs: middlewareV2/multichain [PR #489](https://github.com/layr-labs/eigenlayer-middleware/pull/489) +- chore: add avs registrar interfaces [PR #491](https://github.com/layr-labs/eigenlayer-middleware/pull/491) +- chore: remove unused imports [PR #490](https://github.com/layr-labs/eigenlayer-middleware/pull/490) +- feat: add table calculators [PR #488](https://github.com/layr-labs/eigenlayer-middleware/pull/488) +- chore: remove interfaces [PR #485](https://github.com/layr-labs/eigenlayer-middleware/pull/485) +- chore: bump up ecdsa dependency [PR #487](https://github.com/layr-labs/eigenlayer-middleware/pull/487) +- chore: bump up `eigenlayer-contracts` dependency [PR #486](https://github.com/layr-labs/eigenlayer-middleware/pull/486) +- feat: avs registrar [PR #484](https://github.com/layr-labs/eigenlayer-middleware/pull/484) +- refactor: singleton cv combining ECDSA and BN254 [PR #479](https://github.com/layr-labs/eigenlayer-middleware/pull/479) +- feat: multichain interfaces [PR #477](https://github.com/layr-labs/eigenlayer-middleware/pull/477) \ No newline at end of file diff --git a/CHANGELOG/CHANGELOG-template.md b/CHANGELOG/CHANGELOG-template.md new file mode 100644 index 00000000..88d178db --- /dev/null +++ b/CHANGELOG/CHANGELOG-template.md @@ -0,0 +1,84 @@ +# + +**Use this template to draft changelog and submit PR to review by the team** + +## Release Manager + +github handle of release manager + +## Highlights + +🚀 New Features – Highlight major new functionality +- ... +- ... + +⛔ Breaking Changes – Call out backward-incompatible changes. +- ... +- ... + +📌 Deprecations – Mention features that are being phased out. +- ... +- ... + +🛠️ Security Fixes – Specify patched vulnerabilities. +- ... +- ... + +🔧 Improvements – Enhancements to existing features. +- ... +- ... + +🐛 Bug Fixes – List resolved issues. +- ... +- ... + + +## Changelog + +To generate a changelog of commits added since the last release using Git on +the command line, follow these steps: + +1. Identify the last release tag + +First, list your tags (assuming you use Git tags for releases): + +``` +git tag --sort=-creatordate +``` + +This shows your most recent tags at the top. Let's say the last release tag is `v1.4.2` + + +2. Generate the changelog + +Now, use the following command to list the commits since that tag, and auto generate github PR link if there's any + +``` +git log v1.3.1..HEAD --pretty=format:"%s" --no-merges | \ +sed -E 's/^(.*)\(#([0-9]+)\)$/- \1[PR #\2](https:\/\/github.com\/layr-labs\/eigenlayer-middleware\/pull\/\2)/' | \ +sed -E '/\[PR #[0-9]+\]/! s/^(.*)$/- \1/' +``` + +This will show: + +- Only commits since v1.3.1 up to the current HEAD +- One-line commit messages (%s) with the author name (%an) + + +An example output is: + +``` +- ci: add explicit permissions to workflows to mitigate security concerns [PR #1392](https://github.com/layr-labs/eigenlayer-contracts/pull/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](https://github.com/layr-labs/eigenlayer-contracts/pull/1382) +- docs: add doc for steps to write deploy scripts [PR #1380](https://github.com/layr-labs/eigenlayer-contracts/pull/1380) +- ci: add testnet envs sepolia and hoodi to validate-deployment-scripts [PR #1378](https://github.com/layr-labs/eigenlayer-contracts/pull/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](https://github.com/layr-labs/eigenlayer-contracts/pull/1377) +... +``` + +3. Commit the Changelog + +Copy the output and add here with a commit, then proceed to cut the release from the commit. diff --git a/docs/middlewareV2/OperatorTableCalculator.md b/docs/middlewareV2/OperatorTableCalculator.md index d6189f8d..4075023d 100644 --- a/docs/middlewareV2/OperatorTableCalculator.md +++ b/docs/middlewareV2/OperatorTableCalculator.md @@ -17,7 +17,7 @@ Interfaces: ## Overview -The OperatorTableCalculator contracts are responsible for calculating stake weights of operator. These stake weights are aggregated and transported using the [Eigenlayer Multichain Protocol](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-008.md). In order to utilize the multichain protocol, an AVS *MUST* deploy an `OperatorTableCalculator` and register it in the `CrossChainRegistry` in EigenLayer core. See our [core documentation](https://github.com/Layr-Labs/eigenlayer-contracts/tree/main/docs/multichain#common-user-flows) for this process. +The OperatorTableCalculator contracts are responsible for calculating stake weights of operator. These stake weights are aggregated and transported using the [Eigenlayer Multichain Protocol](https://github.com/eigenfoundation/ELIPs/blob/elip-008v1/ELIPs/ELIP-008.md). In order to utilize the multichain protocol, an AVS *MUST* deploy an `OperatorTableCalculator` and register it in the `CrossChainRegistry` in EigenLayer core. See our [core documentation](https://github.com/Layr-Labs/eigenlayer-contracts/tree/main/docs/multichain#common-user-flows) for this process. The base contracts (`ECDSATableCalculatorBase` and `BN254TableCalculatorBase`) provide the core logic for table calculation to be consumed by EigenLayer core, while leaving weight calculation as an unimplemented method to be implemented by derived contracts. From e0fdf546d1d5046499318c4b4c435b426fe9c5c0 Mon Sep 17 00:00:00 2001 From: Yash Patil <40046473+ypatil12@users.noreply.github.com> Date: Thu, 10 Jul 2025 12:54:35 -0400 Subject: [PATCH 2/2] chore: update --- CHANGELOG/CHANGELOG-1.4.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG/CHANGELOG-1.4.0.md b/CHANGELOG/CHANGELOG-1.4.0.md index 58a127ad..7245c0ce 100644 --- a/CHANGELOG/CHANGELOG-1.4.0.md +++ b/CHANGELOG/CHANGELOG-1.4.0.md @@ -30,6 +30,7 @@ This multichain release only introduces new standards and contracts. As a result ## Changelog +- fix: avs registrar as identifier [PR #494](https://github.com/layr-labs/eigenlayer-middleware/pull/494) - fix: table calc interface [PR #493](https://github.com/layr-labs/eigenlayer-middleware/pull/493) - docs: middlewareV2/multichain [PR #489](https://github.com/layr-labs/eigenlayer-middleware/pull/489) - chore: add avs registrar interfaces [PR #491](https://github.com/layr-labs/eigenlayer-middleware/pull/491)