Skip to main content

Configure Multichain AVS

important

Multichain verification is early-access and in active development. Expect iterative updates before the mainnet release.

Multichain implements ELIP-008 EigenLayer Multichain Verification and is available on testnet in v1.7.0.

The diagram illustrates the high level steps to configure multichain verification and create a reservation for a participating AVS in the multichain verification framework:

Multichain Implementation

Implementers of multichain verification need to:

  1. Configure Operator Set curve type
  2. Deploy Operator table calculator
  3. (Optional) View the registered cryptographic keys for your Operator Set
  4. Opt-in to multichain
  5. Wait for deployment

1. Configure Operator Set Curve Type

  1. Decide on the cryptographic curve type for Operator keys. Choose ECDSA for less than 30 Operators, or BN254 BLS for more than 30 Operators.
  2. Create the Operator Set.
  3. Set the KeyType in KeyRegistrar.

2. Deploy Operator Table Calculator

Deploy the OperatorTableCalculator contract to define stake weighting logic.

To use the as-is unweighted stakes, deploy the template ECDSATableCalculatorBase or BN254TableCalculatorBase contract. The contract can be upgraded. Alternatively, use the onchain default unweighted contract provided by EigenLabs.

To define custom stake weighting logic, override calculateOperatorTable() to add:

  • Asset weighting (for example, ETH 3500x vs. stablecoins),
  • Stake capping per operator,
  • Oracle price feed integration,
  • Custom filtering logic.

For more information on stake weighting and how to customize, refer to Stake Weighting.

3. (Optional) View the registered cryptographic keys for your Operator Set

Operators self-register using KeyRegistrar.registerKey(operator, operatorSet, pubkey, sig).

4. Opt-in to Multichain and create a generation reservation

To enable multichain verification, register with CrossChainRegistry. To register, use:

CrossChainRegistry.createGenerationReservation(operatorSet, calculator, config)

Where config:

  • staleness = 14 days (either set t be 0, or exceed 7-day refresh)
  • owner = Permissioned owner of the Operator Set on target chains

The staleness parameter is the length of time that a certificate remains valid after its reference timestamp. It is set as an integer representing days.

A staleness period of 0 completely removes staleness checks, allowing certificates to be validated regardless of their timestamp. The staleness must be greater than the update cadence of the Operator tables (communciated offchain and currently 7 days).

The caller must have UAM permissions for operatorSet.avs.

5. Wait for deployment

EigenLabs generates and transports your stake table. To determine when transport is complete, monitor OperatorTableUpdater.GlobalRootConfirmed.

Next

Implement how certificate are created, and delivered or exposed..