-
Notifications
You must be signed in to change notification settings - Fork 453
feat: multichain deploy scripts #1487
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ac34269 to
ebd2c17
Compare
0edefd1 to
833d2d0
Compare
8c6266f to
421b314
Compare
9faccd3 to
371b300
Compare
82e927b to
c9654a4
Compare
eigenmikem
approved these changes
Jul 1, 2025
**Motivation:** *Explain here the context, and why you're making that change. What is the problem you're trying to solve.* **Modifications:** *Describe the modifications you've done.* **Result:** *After your change, what will change.*
e791666 to
0706a59
Compare
Merged
ypatil12
added a commit
that referenced
this pull request
Jul 1, 2025
**Motivation:** We need deploy scripts for multichain **Modifications:** Adds a `crossChainDeployLib` from: #1474. This library uses `createX` for deterministic deployments. In order to keep the same address on all `destinationChains`, we deploy contracts from the same multisig on each chain. Add `testnet-base-sepolia` to CI for deploy scripts. Adds a `deploy_globalRootConfirmerSet` script. This script initiates a global root confirmer set (ie. generator) and updates the `network.toml` file used in the deploy scripts. It is only intended to be used on `preprod` and `testnet`. To distinguish between a source and destination chain we add a `SOURCE_CHAIN: bool` and `DESTINATION_CHAIN: bool` to the Zeus Config. We skip parts of the deploy if a chain is not a source or destination. Deploys the contracts in 5 steps 1. `deploySourceChain.s.sol`: Deploys `KeyRegistrar`, `ReleaseManager`, `CrossChainRegistry`. 2. `deployDestinationChainProxies.s.sol`: Deploys _empty_ proxy contracts for `OperatorTableUpdater`, `BN254CertificateVerifier`, `ECDSACertificateVerifier`. _Note: in order to have deterministic proxies, we need to ensure the `initCode` is the same. Thus, the implementation is the same `emptyContract` and the proxyAdmin is initially the `multichainDeployerMultisig`_. 3. `deployDestinationChainImpls`: Deploys implementations using EOA 4. `instantiateDestinationChainProxies`: Upgrades the proxies to the actual implementations. Transfer proxy admin to the actual `proxyAdmin` 5. `configureCrossChainRegistry`: Updates the `crossChainRegistry` on the `SOURCE_CHAIN` to whitelist proper chainIds **Result:** Deploy scripts --------- Co-authored-by: clandestine.eth <[email protected]>
ypatil12
added a commit
that referenced
this pull request
Jul 1, 2025
# 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: 1. Core Contracts 2. AVS Contracts 3. Offchain Infrastructure The below release notes cover Core Contracts. For more information on the end to end protocol, see our [docs](../docs/multichain/README.md) and [ELIP-008](https://github.com/eigenfoundation/ELIPs/blob/main/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. 🚀 New Features 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 sets - `CrossChainRegistry`: Enables AVSs to register to have their operator stakes transported to supported destination chains - `ReleaseManager`: 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 BN254 - `OperatorTableUpdater`: Updates operator tables in the `CertificateVerifier` 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 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 - feat: multichain deploy scripts [PR #1487](#1487) - feat: operator table updater pauser [PR #1501](#1501) - feat: add `publishMetadataURI` [PR #1492](#1492) - refactor: `globalRootConfirmerSet` -> `generator` [PR #1500](#1500) - fix: circular dependency for initial global root update [PR #1499](#1499) - chore: remove stale bindings [PR #1498](#1498) - fix: zero length [PR #1490](#1490) - docs: multichain docs [PR #1488](#1488) - refactor: remove table calculators [PR #1493](#1493) - refactor: `KeyRegistry` unit testing [PR #1482](#1482) - feat: disable root [PR #1481](#1481) - refactor: `ECDSATableCalculator` testing [PR #1479](#1479) - refactor: operators can deregister keys if not slashable [PR #1480](#1480) - refactor: `ECDSACertificateVerifier` testing [PR #1478](#1478) - refactor: `Bn254CertificateVerifierUnitTests` [PR #1476](#1476) - feat: ecdsa table calculator [PR #1473](#1473) - feat: ecdsacv views [PR #1475](#1475) - refactor: `BN254OperatorTableCalculator` [PR #1463](#1463) - feat: add `referenceBlockNumber` [PR #1472](#1472) - feat: release manager [PR #1469](#1469) - feat: ecdsa cert verifier [PR #1470](#1470) - feat: add view function for `getGlobalConfirmerSetReferenceTimestamp` [PR #1471](#1471) - chore: add helper view function [PR #1465](#1465) - chore: add sig digest functions to interface [PR #1464](#1464) - refactor: `CrossChainRegistry` [PR #1457](#1457) - fix: global table update message hash [PR #1460](#1460) - refactor: sig verification into library [PR #1455](#1455) - fix: `OperatorTableUpdater` encoding [PR #1456](#1456) - chore: add latest `referenceTimestamp` to OTC interface [PR #1454](#1454) - chore: bindings [PR #1452](#1452) - feat: add operator table updater to CCR [PR #1451](#1451) - chore: multichain deploy scripts [PR #1449](#1449) - feat: cross chain registry [PR #1439](#1439) - chore: update BN254CertificateVerifier [PR #1447](#1447) - feat: bn254 operator table contracts [PR #1429](#1429) - feat: KeyRegistrar [PR #1421](#1421) - feat: operator table updater [PR #1436](#1436) - feat: bn254 certificate verifier [PR #1431](#1431) - chore: bindings + interface update [PR #1438](#1438) - chore: update multichain interfaces [PR #1433](#1433) - feat: multi chain interfaces [PR #1423](#1423) - docs: update version matrix [PR #1491](#1491) - chore: add multisend parser to scripts directory [PR #1486](#1486) - chore: update eigenpod and eigen impls addresses in holesky and hoodi [PR #1448](#1448)
ypatil12
added a commit
that referenced
this pull request
Jul 7, 2025
**Motivation:** We need deploy scripts for multichain **Modifications:** Adds a `crossChainDeployLib` from: #1474. This library uses `createX` for deterministic deployments. In order to keep the same address on all `destinationChains`, we deploy contracts from the same multisig on each chain. Add `testnet-base-sepolia` to CI for deploy scripts. Adds a `deploy_globalRootConfirmerSet` script. This script initiates a global root confirmer set (ie. generator) and updates the `network.toml` file used in the deploy scripts. It is only intended to be used on `preprod` and `testnet`. To distinguish between a source and destination chain we add a `SOURCE_CHAIN: bool` and `DESTINATION_CHAIN: bool` to the Zeus Config. We skip parts of the deploy if a chain is not a source or destination. Deploys the contracts in 5 steps 1. `deploySourceChain.s.sol`: Deploys `KeyRegistrar`, `ReleaseManager`, `CrossChainRegistry`. 2. `deployDestinationChainProxies.s.sol`: Deploys _empty_ proxy contracts for `OperatorTableUpdater`, `BN254CertificateVerifier`, `ECDSACertificateVerifier`. _Note: in order to have deterministic proxies, we need to ensure the `initCode` is the same. Thus, the implementation is the same `emptyContract` and the proxyAdmin is initially the `multichainDeployerMultisig`_. 3. `deployDestinationChainImpls`: Deploys implementations using EOA 4. `instantiateDestinationChainProxies`: Upgrades the proxies to the actual implementations. Transfer proxy admin to the actual `proxyAdmin` 5. `configureCrossChainRegistry`: Updates the `crossChainRegistry` on the `SOURCE_CHAIN` to whitelist proper chainIds **Result:** Deploy scripts --------- Co-authored-by: clandestine.eth <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
We need deploy scripts for multichain
Modifications:
Adds a
crossChainDeployLibfrom: #1474. This library usescreateXfor deterministic deployments. In order to keep the same address on alldestinationChains, we deploy contracts from the same multisig on each chain.Add
testnet-base-sepoliato CI for deploy scripts.Adds a
deploy_globalRootConfirmerSetscript. This script initiates a global root confirmer set (ie. generator) and updates thenetwork.tomlfile used in the deploy scripts. It is only intended to be used onpreprodandtestnet.To distinguish between a source and destination chain we add a
SOURCE_CHAIN: boolandDESTINATION_CHAIN: boolto the Zeus Config. We skip parts of the deploy if a chain is not a source or destination.Deploys the contracts in 5 steps
deploySourceChain.s.sol: DeploysKeyRegistrar,ReleaseManager,CrossChainRegistry.deployDestinationChainProxies.s.sol: Deploys empty proxy contracts forOperatorTableUpdater,BN254CertificateVerifier,ECDSACertificateVerifier. Note: in order to have deterministic proxies, we need to ensure theinitCodeis the same. Thus, the implementation is the sameemptyContractand the proxyAdmin is initially themultichainDeployerMultisig.deployDestinationChainImpls: Deploys implementations using EOAinstantiateDestinationChainProxies: Upgrades the proxies to the actual implementations. Transfer proxy admin to the actualproxyAdminconfigureCrossChainRegistry: Updates thecrossChainRegistryon theSOURCE_CHAINto whitelist proper chainIdsResult:
Deploy scripts