EigenLayer Middleware

September 24, 2025 · View on GitHub

EigenLayer Middleware

EigenLayer is a set of smart contracts deployed on Ethereum that enable restaking of assets to secure new services called AVSs (actively validated services). The core contracts that enable these features can be found in the eigenlayer-contracts repo.

Getting Started

Branching

The main branches we use are:

  • dev (default): The most up-to-date branch, containing the work-in-progress code for upcoming releases
  • testnet-holesky: Our current testnet deployment
  • mainnet: Our current mainnet deployment

Documentation

Basics

To get a basic understanding of EigenLayer, check out You Could've Invented EigenLayer. Note that some of the document's content describes features that do not exist yet (like the Slasher). To understand more about how restakers and operators interact with EigenLayer, check out these guides:

Most of this content is intro-level and describes user interactions with the EigenLayer core contracts, but it should give you a good enough starting point.

Deep Dive

For shadowy super-coders:

  • The most up-to-date technical documentation can be found in /docs.
  • To get an idea of how users interact with these contracts, check out the integration tests: /test/integration
  • To explore the EigenLayer core contracts, check out the core repo technical docs here.

Note On Slashing

The middleware contracts are available for testnet integration and experimentation. As with the rest of the testnet code, these contracts have not yet been fully audited. Internal security reviews are in progress, and we're preparing to engage external auditors. We're providing these now so AVSs can begin testing slashing conditions, Operator Sets, and related functionality, and so Operators can simulate slashing and test allocations. For more details, see ELIP-002.

For Operators:

We provide scripts to deploy a mock service manager and allocate some stake to a mock Operator Set in these scripts. We've reduced various safety delays on testnet to better simulate operational flows. Additional information on these delays is in ELIP-002. For AVSs:

We provide a migration path for existing M2 environments (LINK). While this requires understanding the provided script, the Developer Experience will improve before Mainnet launch. Note that this is a gradual migration process to new Operator Sets, not a direct upgrade of existing Operator Sets. We also provide scripts to spin up new service managers from scratch. In all cases, you’ll need to register existing Operators or spin up new Operators and allocate funds to them. These testing flows will improve as we refine the scripts and contracts. Stay tuned for updates, and feel free to reach out with any questions.

Building and Running Tests

This repository uses Foundry. See the Foundry docs for more info on installation and usage. If you already have foundry, you can build this project and run tests with these commands:

foundryup

forge build
forge test

Deployments

The contracts in this repo are meant to be deployed by each AVS that wants to use them. The addresses listed below refer to EigenDA's deployment, and are included as an example.

Current MiddlewareV2 Mainnet Deployment

The following is for our MiddlewareV2/Multichain release, deployed on Mainnet. The below table calculators calculate slashable stake for an operatorSet and value all strategies equally. For example, or example, if an operator allocates 100 stETH, 100 wETH, and 100 DAI the calculator would return 300 for the stake weight of the operator. See our docs for more information.

NameProxyImplementationNotes
BN254TableCalculatorN/A0x55F4b21681977F412B318eCB204cB933bD1dF57cSingleton non-upgradeable
ECDSATableCalculatorN/A0xA933CB4cbD0C4C208305917f56e0C3f51ad713FaSingleton non-upgradeable

Current MiddlewareV2 Testnet Deployment

The following testnet deployment is for our MiddlewareV2 release, deployed on Sepolia. The below table calculators calculate slashable stake for an operatorSet and value all strategies equally. For example, or example, if an operator allocates 100 stETH, 100 wETH, and 100 DAI the calculator would return 300 for the stake weight of the operator. See our docs for more information.

NameProxyImplementationNotes
BN254TableCalculatorN/A0x797d076aB96a5d4104062C15c727447fD8b71eB0Singleton non-upgradeable
ECDSATableCalculatorN/A0xbcff2Cb40eD4A80e3A9EB095840986F9c8395a38Singleton non-upgradeable

Current AVS Mainnet Deployment

The current mainnet deployment is from our M2 mainnet release. You can view the deployed contract addresses below, or check out the code itself on the mainnet branch.

NameProxyImplementationNotes
RegistryCoordinator0x0baac79acd45a023e19345c352d8a7a83c4e56560xd3e0...EECFProxy: TUP@4.7.1
StakeRegistry0x006124ae7976137266feebfb3f4d2be4c073139d0x1C46...dd96Proxy: TUP@4.7.1
IndexRegistry0xbd35a7a1cdef403a6a99e4e8ba0974d1984550300x1ae0...a14cProxy: TUP@4.7.1
BLSApkRegistry0x00a5fd09f6cee6ae9c8b0e5e33287f7c828805050x5d0B...eD2bProxy: TUP@4.7.1
OperatorStateRetriever-0xD5D7...8C31
ServiceManagerRouter-0x518D...09eA
ProxyAdmin-0x8247...2E99
eigenda/EigenDAServiceManager0x870679e138bcdf293b7ff14dd44b70fc97e12fc00xF5fD...899eProxy: TUP@4.7.1

Current AVS Testnet Deployment

The current testnet deployment is on holesky, is from our M2 beta release. You can view the deployed contract addresses below, or check out the code itself on the testnet-holesky branch.

NameProxyImplementationNotes
RegistryCoordinator0x53012C69A189cfA2D9d29eb6F19B32e0A2EA34900xC908...bfa0Proxy: TUP@4.7.1
StakeRegistry0xBDACD5998989Eec814ac7A0f0f6596088AA2a2700xa8d2...98E5Proxy: TUP@4.7.1
IndexRegistry0x2E3D6c0744b10eb0A4e6F679F71554a39Ec47a5D0x889B...420dProxy: TUP@4.7.1
BLSApkRegistry0x066cF95c1bf0927124DFB8B02B401bc23A79730D0x885C...e064Proxy: TUP@4.7.1
OperatorStateRetriever-0xB4ba...6C67
ServiceManagerRouter-0x4463...5a37
ProxyAdmin-0xB043...5c15
eigenda/EigenDAServiceManager0xD4A7E1Bd8015057293f0D0A557088c286942e84b0xa722...67f3Proxy: TUP@4.7.1