-
Notifications
You must be signed in to change notification settings - Fork 8
[Don't merge until multichain released to testnet] Multichain overview and architecture #61
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
Changes from 1 commit
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
801601f
Multichain overview and architecture
MadelineAu 9e6ee7f
Updated to address review comments and include content from integrati…
MadelineAu c830a38
Merge remote-tracking branch 'origin/main' into multichainFirstCut
MadelineAu b663120
review rework
MadelineAu b0bbcbe
Updated against ELIP updates
MadelineAu 3e194d8
typo
MadelineAu File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,5 @@ | ||
| --- | ||
| sidebar_position: 5 | ||
| sidebar_position: 6 | ||
| title: AVS Contracts | ||
| --- | ||
|
|
||
|
|
||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,5 @@ | ||
| --- | ||
| sidebar_position: 6 | ||
| sidebar_position: 8 | ||
| title: AVS Keys | ||
| --- | ||
|
|
||
|
|
||
2 changes: 1 addition & 1 deletion
2
docs/products/eigenlayer/developers/concepts/avs-security-models.md
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,5 @@ | ||
| --- | ||
| sidebar_position: 5 | ||
| sidebar_position: 7 | ||
| title: AVS Security Models | ||
| --- | ||
|
|
||
|
|
||
4 changes: 4 additions & 0 deletions
4
docs/products/eigenlayer/developers/concepts/multichain/_category_.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| { | ||
| "position": 5, | ||
| "label": "Multichain" | ||
| } |
72 changes: 72 additions & 0 deletions
72
docs/products/eigenlayer/developers/concepts/multichain/multichain-architecture.md
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| --- | ||
| sidebar_position: 2 | ||
| title: Architecture | ||
| --- | ||
|
|
||
| The Multichain Verification framework uses the core contracts and templates in EigenLayer middleware described in the table. | ||
| These are not pluggable and are intended to interface with offchain, modular components. | ||
|
|
||
| | Contract Name | Deployment Target | Deployer | Description | | ||
| |-------------------------------|-----------------------|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||
| | **`KeyRegistrar`** | Ethereum Singleton | EigenLayer Core Protocol | Unified module for managing and retrieving BN254 and ECDSA cryptographic keys for Operators with built-in key rotation support, extensible to additional curves like BLS381 | | ||
| | **`CrossChainRegistry`** | Ethereum Singleton | EigenLayer Core Protocol | Manages AVS multichain configuration and tracks deployment addresses when using EigenLayer's generation and transport mechanisms | | ||
| | **`OperatorTableCalculator`** | Ethereum, One per AVS | AVS Middleware | Required middleware contract deployed by an AVS for specifying stake weights per asset, or implementing custom logic like stake capping | | ||
| | **`OperatorTableUpdater`** | One per target chain | EigenLayer Core Protocol | Parses and verifies the global Stake Table Root and rehydrates individual Operator tables in the `CertificateVerifier` | | ||
| | **`CertificateVerifier`** | One per target chain | EigenLayer Core Protocol | Enables AVS consumers to verify tasks against operator sets using transported stake tables. The `CertificateVerifier` is the single integration point between AVSs and their consumers | | ||
|
|
||
| ## CertificateVerifier | ||
|
|
||
| The `CertificateVerifier` is the core contract that AVSs need to integrate with. It is the gateway to EigenLayer services (that is, where offchain services come onchain) and | ||
| is deployed on every supported chain. | ||
|
|
||
| The `CertificateVerifier` has a stable, chain-agnostic integration pattern. You interact with the same | ||
| interface regardless of which chain you're deploying to, or which consumers are using your AVS. This enables a “code once, | ||
| deploy everywhere” workflow that reduces cross-chain complexity, eases integration with other AVSs, and simplifies ongoing maintenance. | ||
|
|
||
| ## Contract Interaction | ||
|
|
||
| The contracts interact as illustrated. | ||
|
|
||
| ```mermaid | ||
| classDiagram | ||
| direction TD | ||
| namespace Ethereum{ | ||
| class AVS { | ||
| AVSRegistrar | ||
| } | ||
| class OperatorTableCalculator { | ||
| StakeCapping | ||
| StakeWeighting (Multiplier, Oracle) | ||
| ProtocolVotingPowerCalc | ||
| } | ||
| class StakeGeneration { | ||
| crossChainRegistry | ||
| KeyRegistrar | ||
| } | ||
| } | ||
| namespace TargetChain{ | ||
| class AVSConsumer { | ||
| requests Operator task | ||
| receives cert () | ||
| } | ||
| class CertificateVerifier{ | ||
| n Operator Tables | ||
| verifyCert (bool) | ||
| } | ||
| } | ||
|
|
||
| namespace Offchain{ | ||
| class Operator { | ||
| consumer input | ||
| return certificate() | ||
| } | ||
| } | ||
|
|
||
| AVS --> OperatorTableCalculator : Deploys Operator Table Calculator | ||
| StakeGeneration --> OperatorTableCalculator : Calculates Operator Tables | ||
| Stake Generation --> transport : Transports Stake Table | ||
| transport --> CertificateVerifier : Updates stakes and Operator Status | ||
| AVSConsumer --> Operator : requests task | ||
| Operator --> AVSConsumer: creates cert | ||
| AVSConsumer --> CertificateVerifier : verifies certificate | ||
| ``` | ||
33 changes: 33 additions & 0 deletions
33
docs/products/eigenlayer/developers/concepts/multichain/multichain-overview.md
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| --- | ||
| sidebar_position: 1 | ||
| title: Overview | ||
| --- | ||
|
|
||
| :::note | ||
| Multichain implements [ELIP-008 EigenLayer Multichain Verification](https://github.com/eigenfoundation/ELIPs/blob/elip-008v1/ELIPs/ELIP-008.md) and is available on testnet in v1.7.0. | ||
| ::: | ||
|
|
||
| Multichain verification enables AVSs to operate across multiple chains and maintain the security guarantees of EigenLayer. | ||
| The multichain verification framework uses standardized infrastructure for key management, stake verification, and certificate | ||
| validation. | ||
|
|
||
| ## Components | ||
|
|
||
| The components that enable multichain verification are: | ||
|
|
||
| | **Component** | **Description** | | ||
| |--------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||
| | **Operator Table** | Represents stake-weighted Operator delegations and allocations of a given Operator Set. | | ||
| | **Stake Table** | Represents the global view of all Operator Sets with AVS-decorated stake weights. One Stake Table is deployed on each target chain and represents many Operator Tables. | | ||
| | **Stake Weighting & Table Calculation** | An `OperatorTableCalculator` is provided for AVSs to enable custom stake weighting of different assets and to apply the formats required by the Operator Table. | | ||
| | **Certificates & Certificate Verification** | Signed Operator outputs (certificates), and a provided core contract (`CertificateVerifier`) for verifying those outputs against the Operator Table and stake-weighted rules (for example, signed weight above nominal or proportional thresholds). | | ||
| | **Stake Generation & Transport** | Specification for generating and verifying the global Stake Table Merkle root and transporting it to core contracts on many chains. EigenLabs operates a Transporter for testnet. The Transporter is permissionless and pluggable. | | ||
|
|
||
| ## Process | ||
|
|
||
| To have a single global root with up-to-date stake representation on multiple chains where an AVS is used: | ||
|
|
||
| 1. The AVS writes and deploys the logic for calculating its single, weighted Operator Table (or uses the default logic). | ||
| 2. EigenLayer combines the many Operator Set representations to generate a global stake table. | ||
| 3. The global stake table is transported to target chains. The Operator Tables are then used for verifying Operator certificates. | ||
| 4. Weekly, or as forcible updates are needed (for example, when an Operator is ejected or slashed), the table is regenerated and transported again. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,5 @@ | ||
| --- | ||
| sidebar_position: 8 | ||
| sidebar_position: 9 | ||
| title: Tasks | ||
| --- | ||
|
|
||
|
|
||
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.
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.
should we consider adding the larger mermaid somewhere ? Maybe when we have more content.
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.
To give an 'it depends' answer -> is the additional context provided by the larger mermaid needed by AVS/app devs, or Operators implementing/operating multichain? If yes, I think we should include. But if it's largely showing more detailed views of the internal calls/contracts, I'd lean to no.
Let me know what you think.
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.
Added some content from the integration guide. Will create another PR for the how to content.