Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions CHANGELOG/CHANGELOG-1.4.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 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: 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)
- 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)
84 changes: 84 additions & 0 deletions CHANGELOG/CHANGELOG-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# <release-version>

**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.
2 changes: 1 addition & 1 deletion docs/middlewareV2/OperatorTableCalculator.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down