Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 5
sidebar_position: 6
title: AVS Contracts
---

Expand Down
2 changes: 1 addition & 1 deletion docs/products/eigenlayer/developers/concepts/avs-keys.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 6
sidebar_position: 8
title: AVS Keys
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 5
sidebar_position: 7
title: AVS Security Models
---

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"position": 5,
"label": "Multichain"
}
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
Copy link
Contributor

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.

Copy link
Collaborator Author

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.

Copy link
Collaborator Author

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.


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
```
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.
2 changes: 1 addition & 1 deletion docs/products/eigenlayer/developers/concepts/task.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 8
sidebar_position: 9
title: Tasks
---

Expand Down