-
Notifications
You must be signed in to change notification settings - Fork 457
feat: operator table updater #1436
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
Conversation
gpsanant
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i prefer we use the same function for BLS and ECDSA so we only treat them differently in a single place
something like the leaves are (curveType, operatorSet, data) or someth...
we also need a way to have multiple updates at once
6c7211e to
5478bd1
Compare
chore: push chore: push chore: add mixin
6f4a120 to
bbed8d2
Compare
Handled offline - will open separate PR for more efficient bytes decoding
**Motivation:** We need an operator table updater contract that will update all operator tables. **Modifications:** Create an `OperatoTableUpdater` contract. This contract serves two purposes: 1. Updates the `globalTableRoot` with a valid certificate from the `globalRootConfirmerSet` 2. Updates operator tables for ECDSA and BN254 Update all interfaces to be `>=0.5.0`. Security Assumptions: 1. The `globalTableRoot` cannot overwrite _past_ timestamps. In addition, it cannot be set for future timestamps 2. `updateOperatorTable` can only be called for referenceTimestamps after the opSet's stored `latestReferenceTimestamp` **Result:** Almost complete multi chain setup --------- Co-authored-by: Michael <michael.muehl@eigenlabs.org>
**Motivation:** We need an operator table updater contract that will update all operator tables. **Modifications:** Create an `OperatoTableUpdater` contract. This contract serves two purposes: 1. Updates the `globalTableRoot` with a valid certificate from the `globalRootConfirmerSet` 2. Updates operator tables for ECDSA and BN254 Update all interfaces to be `>=0.5.0`. Security Assumptions: 1. The `globalTableRoot` cannot overwrite _past_ timestamps. In addition, it cannot be set for future timestamps 2. `updateOperatorTable` can only be called for referenceTimestamps after the opSet's stored `latestReferenceTimestamp` **Result:** Almost complete multi chain setup --------- Co-authored-by: Michael <michael.muehl@eigenlabs.org>
**Motivation:** We need an operator table updater contract that will update all operator tables. **Modifications:** Create an `OperatoTableUpdater` contract. This contract serves two purposes: 1. Updates the `globalTableRoot` with a valid certificate from the `globalRootConfirmerSet` 2. Updates operator tables for ECDSA and BN254 Update all interfaces to be `>=0.5.0`. Security Assumptions: 1. The `globalTableRoot` cannot overwrite _past_ timestamps. In addition, it cannot be set for future timestamps 2. `updateOperatorTable` can only be called for referenceTimestamps after the opSet's stored `latestReferenceTimestamp` **Result:** Almost complete multi chain setup --------- Co-authored-by: Michael <michael.muehl@eigenlabs.org>
# 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)
**Motivation:** We need an operator table updater contract that will update all operator tables. **Modifications:** Create an `OperatoTableUpdater` contract. This contract serves two purposes: 1. Updates the `globalTableRoot` with a valid certificate from the `globalRootConfirmerSet` 2. Updates operator tables for ECDSA and BN254 Update all interfaces to be `>=0.5.0`. Security Assumptions: 1. The `globalTableRoot` cannot overwrite _past_ timestamps. In addition, it cannot be set for future timestamps 2. `updateOperatorTable` can only be called for referenceTimestamps after the opSet's stored `latestReferenceTimestamp` **Result:** Almost complete multi chain setup --------- Co-authored-by: Michael <michael.muehl@eigenlabs.org>
Motivation:
We need an operator table updater contract that will update all operator tables.
Modifications:
Create an
OperatoTableUpdatercontract. This contract serves two purposes:globalTableRootwith a valid certificate from theglobalRootConfirmerSetUpdate all interfaces to be
>=0.5.0.Security Assumptions:
globalTableRootcannot overwrite past timestamps. In addition, it cannot be set for future timestampsupdateOperatorTablecan only be called for referenceTimestamps after the opSet's storedlatestReferenceTimestampResult:
Almost complete multi chain setup