Skip to content

Commit 084485e

Browse files
authored
Merge pull request #496 from Layr-Labs/release-dev/multichain
release: middlewareV2/multichain
2 parents 3fb5b61 + 285e9d9 commit 084485e

File tree

55 files changed

+8261
-35
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+8261
-35
lines changed

.gitmodules

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
[submodule "lib/eigenlayer-contracts"]
55
path = lib/eigenlayer-contracts
66
url = https://github.com/Layr-labs/eigenlayer-contracts
7-
branch = dev
87
[submodule "lib/openzeppelin-contracts"]
98
path = lib/openzeppelin-contracts
109
url = https://github.com/Openzeppelin/openzeppelin-contracts

CHANGELOG/CHANGELOG-1.4.0.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# v1.4.0 MultiChain/MiddlewareV2
2+
3+
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:
4+
5+
1. Core Contracts
6+
2. AVS Contracts
7+
3. Offchain Infrastructure
8+
9+
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).
10+
11+
## Release Manager
12+
13+
@ypatil12 @eigenmikem
14+
15+
## Highlights
16+
17+
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/).
18+
19+
🚀 New Features – Highlight major new functionality
20+
21+
- `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
22+
- `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.
23+
24+
🔧 Improvements – Enhancements to existing features.
25+
26+
- The multichain protocol has protocol-ized several AVS-deployed contracts, enabling an simpler AVS developer experience. These include:
27+
- `KeyRegistrar`: Manages BLS and ECDSA signing keys. AVSs no longer have to deploy a `BLSAPKRegistry`
28+
- `CertificateVerifier`: Handles signature verification for BLS and ECDSA keys. AVSs no longer have to deploy a `BLSSignatureChecker`
29+
- Offchain Multichain Transport: AVSs no longer have to maintain [avs-sync](https://github.com/Layr-Labs/avs-sync) to keep operator stakes fresh
30+
31+
## Changelog
32+
33+
- fix: avs registrar as identifier [PR #494](https://github.com/layr-labs/eigenlayer-middleware/pull/494)
34+
- fix: table calc interface [PR #493](https://github.com/layr-labs/eigenlayer-middleware/pull/493)
35+
- docs: middlewareV2/multichain [PR #489](https://github.com/layr-labs/eigenlayer-middleware/pull/489)
36+
- chore: add avs registrar interfaces [PR #491](https://github.com/layr-labs/eigenlayer-middleware/pull/491)
37+
- chore: remove unused imports [PR #490](https://github.com/layr-labs/eigenlayer-middleware/pull/490)
38+
- feat: add table calculators [PR #488](https://github.com/layr-labs/eigenlayer-middleware/pull/488)
39+
- chore: remove interfaces [PR #485](https://github.com/layr-labs/eigenlayer-middleware/pull/485)
40+
- chore: bump up ecdsa dependency [PR #487](https://github.com/layr-labs/eigenlayer-middleware/pull/487)
41+
- chore: bump up `eigenlayer-contracts` dependency [PR #486](https://github.com/layr-labs/eigenlayer-middleware/pull/486)
42+
- feat: avs registrar [PR #484](https://github.com/layr-labs/eigenlayer-middleware/pull/484)
43+
- refactor: singleton cv combining ECDSA and BN254 [PR #479](https://github.com/layr-labs/eigenlayer-middleware/pull/479)
44+
- feat: multichain interfaces [PR #477](https://github.com/layr-labs/eigenlayer-middleware/pull/477)

CHANGELOG/CHANGELOG-template.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# <release-version>
2+
3+
**Use this template to draft changelog and submit PR to review by the team**
4+
5+
## Release Manager
6+
7+
github handle of release manager
8+
9+
## Highlights
10+
11+
🚀 New Features – Highlight major new functionality
12+
- ...
13+
- ...
14+
15+
⛔ Breaking Changes – Call out backward-incompatible changes.
16+
- ...
17+
- ...
18+
19+
📌 Deprecations – Mention features that are being phased out.
20+
- ...
21+
- ...
22+
23+
🛠️ Security Fixes – Specify patched vulnerabilities.
24+
- ...
25+
- ...
26+
27+
🔧 Improvements – Enhancements to existing features.
28+
- ...
29+
- ...
30+
31+
🐛 Bug Fixes – List resolved issues.
32+
- ...
33+
- ...
34+
35+
36+
## Changelog
37+
38+
To generate a changelog of commits added since the last release using Git on
39+
the command line, follow these steps:
40+
41+
1. Identify the last release tag
42+
43+
First, list your tags (assuming you use Git tags for releases):
44+
45+
```
46+
git tag --sort=-creatordate
47+
```
48+
49+
This shows your most recent tags at the top. Let's say the last release tag is `v1.4.2`
50+
51+
52+
2. Generate the changelog
53+
54+
Now, use the following command to list the commits since that tag, and auto generate github PR link if there's any
55+
56+
```
57+
git log v1.3.1..HEAD --pretty=format:"%s" --no-merges | \
58+
sed -E 's/^(.*)\(#([0-9]+)\)$/- \1[PR #\2](https:\/\/github.com\/layr-labs\/eigenlayer-middleware\/pull\/\2)/' | \
59+
sed -E '/\[PR #[0-9]+\]/! s/^(.*)$/- \1/'
60+
```
61+
62+
This will show:
63+
64+
- Only commits since v1.3.1 up to the current HEAD
65+
- One-line commit messages (%s) with the author name (%an)
66+
67+
68+
An example output is:
69+
70+
```
71+
- ci: add explicit permissions to workflows to mitigate security concerns [PR #1392](https://github.com/layr-labs/eigenlayer-contracts/pull/1392)
72+
- ci: remove branch constraint for foundry coverage job
73+
- docs: add release managers to changelogs
74+
- docs: add templates for changelog and release notes [PR #1382](https://github.com/layr-labs/eigenlayer-contracts/pull/1382)
75+
- docs: add doc for steps to write deploy scripts [PR #1380](https://github.com/layr-labs/eigenlayer-contracts/pull/1380)
76+
- ci: add testnet envs sepolia and hoodi to validate-deployment-scripts [PR #1378](https://github.com/layr-labs/eigenlayer-contracts/pull/1378)
77+
- docs: update MAINTENANCE to include practices of merging multiple release-dev branches
78+
- docs: updating readme for dead links, readability, new language, and more [PR #1377](https://github.com/layr-labs/eigenlayer-contracts/pull/1377)
79+
...
80+
```
81+
82+
3. Commit the Changelog
83+
84+
Copy the output and add here with a commit, then proceed to cut the release from the commit.

bin/storage-report.sh

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,14 @@ for file in $(find src/ -name "*.sol" ! -path "*/interfaces/*" ! -path "*/librar
3636

3737
log "Processing contract: $contract_name"
3838

39-
# Run forge inspect and capture errors
40-
if ! forge inspect "$contract_name" storage > "$OUTPUT_DIR/$contract_name.md"; then
41-
error "Failed to generate storage report for contract: $contract_name"
39+
# Create a unique output filename based on the full path to handle duplicate contract names
40+
# Replace slashes with underscores and remove the src/ prefix
41+
unique_name=$(echo "$file" | sed 's|^src/||' | sed 's|/|_|g' | sed 's|\.sol$||')
42+
43+
# Run forge inspect using the full path to handle duplicate contract names
44+
if ! forge inspect "$file:$contract_name" storage > "$OUTPUT_DIR/$unique_name.md"; then
45+
error "Failed to generate storage report for contract: $contract_name at $file"
4246
else
43-
log "Storage report generated for contract: $contract_name"
47+
log "Storage report generated for contract: $contract_name at $file"
4448
fi
4549
done

0 commit comments

Comments
 (0)