Sign in
profile image

Eigenlayer - eigenlayer-contracts

Eigenlayer Competition

What is Eigenlayer

EigenLayer is a protocol built on Ethereum that introduces restaking, a new primitive in cryptoeconomic security. This primitive enables the reuse of ETH on the consensus layer. Users that stake ETH natively or with a liquid staking token (LST) can opt-in to EigenLayer smart contracts to restake their ETH or LST and extend cryptoeconomic security to additional applications on the network to earn additional rewards.

Prize distribution and scoring

  • Scoring described in the competition scoring page.
  • Findings Severities described in detail on our docs page.
  • Only High and Medium findings would be accepted.

Documentation

Scope

This review concerns the upcoming M2 mainnet upgrade for EigenLayer and EigenDA. The upgrade is scheduled for end Q1/early Q2, and consists of:

  • A contract upgrade of our current core contracts from the currently-deployed M1 version to their M2 versions.
  • Deployment of EigenDA contracts (and offchain infrastructure), which will integrate with the M2 core contracts.

We are asking for reviewers to dig through the smart contracts for the m2 mainnet upgrade, as well as analyze the upgrade path from the current mainnet deployment to the target contracts.

Eigenlayer Contracts

What is this? Our core contract repo, primarily responsible for:

  • restaking LSTs and beacon chain ETH
  • deposits/withdrawals of all assets
  • allowing stakers to delegate to operators (operators run nodes/infra for AVSs)

Repository: github.com/Layr-Labs/eigenlayer-contracts Commit: 6e588701c5f543ae4cd34fe9c6567cc46c7eb722

Fileblankcommentcode
eigenlayer-contracts/src/contracts/core/DelegationManager.sol103328581
eigenlayer-contracts/src/contracts/core/StrategyManager.sol48171269
eigenlayer-contracts/src/contracts/core/AVSDirectory.sol2456103
eigenlayer-contracts/src/contracts/core/Slasher.sol271758
eigenlayer-contracts/src/contracts/core/DelegationManagerStorage.sol216134
eigenlayer-contracts/src/contracts/core/StrategyManagerStorage.sol74733
eigenlayer-contracts/src/contracts/core/AVSDirectoryStorage.sol91720
eigenlayer-contracts/src/contracts/pods/EigenPod.sol110214481
eigenlayer-contracts/src/contracts/pods/EigenPodManager.sol32101225
eigenlayer-contracts/src/contracts/pods/DelayedWithdrawalRouter.sol2447167
eigenlayer-contracts/src/contracts/pods/EigenPodManagerStorage.sol183239
eigenlayer-contracts/src/contracts/pods/EigenPodPausingConstants.sol2159
eigenlayer-contracts/src/contracts/strategies/StrategyBaseTVLLimits.sol133940
eigenlayer-contracts/src/contracts/strategies/StrategyBase.sol35151106
eigenlayer-contracts/src/contracts/permissions/Pausable.sol184969
eigenlayer-contracts/src/contracts/permissions/PauserRegistry.sol91232
eigenlayer-contracts/src/contracts/libraries/Merkle.sol67096
eigenlayer-contracts/src/contracts/libraries/EIP1271SignatureUtils.sol31820
eigenlayer-contracts/src/contracts/libraries/Endian.sol1915
eigenlayer-contracts/src/contracts/libraries/BytesLib.sol76125289
eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol51114244
eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol54276136
eigenlayer-contracts/src/contracts/interfaces/IDelegationFaucet.sol9132
eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol389788
eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol2810166
eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol258551
eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol328647
eigenlayer-contracts/src/contracts/interfaces/IWhitelister.sol9131
eigenlayer-contracts/src/contracts/interfaces/IDelayedWithdrawalRouter.sol163025
eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol136616
eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol103324
eigenlayer-contracts/src/contracts/interfaces/IPausable.sol123914
eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol21312
eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol62312
eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol487
eigenlayer-contracts/src/contracts/interfaces/ISocketUpdater.sol5115
eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol174
SUM:93727143631

Eigenlayer Middleware

What is this? Our AVS contract repo, which AVSs will deploy to allow operators to register and begin providing services.

Repository: github.com/Layr-Labs/eigenlayer-middleware Commit: 61d554403279826fcbc38d421580811e57d29270

Fileblankcommentcode
eigenlayer-middleware/src/RegistryCoordinator.sol100312507
eigenlayer-middleware/src/StakeRegistry.sol83218414
eigenlayer-middleware/src/IndexRegistry.sol47114182
eigenlayer-middleware/src/BLSSignatureChecker.sol3292166
eigenlayer-middleware/src/BLSApkRegistry.sol3983162
eigenlayer-middleware/src/OperatorStateRetriever.sol214695
eigenlayer-middleware/src/ServiceManagerBase.sol214093
eigenlayer-middleware/src/RegistryCoordinatorStorage.sol103042
eigenlayer-middleware/src/StakeRegistryStorage.sol132125
eigenlayer-middleware/src/BLSApkRegistryStorage.sol91219
eigenlayer-middleware/src/IndexRegistryStorage.sol81718
eigenlayer-middleware/src/libraries/BitmapUtils.sol258985
eigenlayer-middleware/src/libraries/BN254.sol47104199
eigenlayer-middleware/src/interfaces/IStakeRegistry.sol3313580
eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol316260
eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol207941
eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol113338
eigenlayer-middleware/src/interfaces/IIndexRegistry.sol154926
eigenlayer-middleware/src/interfaces/IServiceManager.sol73214
eigenlayer-middleware/src/interfaces/ISocketUpdater.sol4115
eigenlayer-middleware/src/interfaces/IRegistry.sol184
SUM:57715872275

Eigenda

What is this? Our AVS offchain repository - mostly offchain components, but also contains the EigenDAServiceManager.sol contract, which inherits from contracts in the middleware repository.

Repository: github.com/Layr-Labs/eigenda Commit: 91838ba58b8e2525c7fd1e4db5e9903551eed326

Fileblankcommentcode
eigenda/contracts/src/Imports.sol113
eigenda/contracts/src/core/EigenDAServiceManager.sol223095
eigenda/contracts/src/core/EigenDAServiceManagerStorage.sol92413
eigenda/contracts/src/interfaces/IEigenDAServiceManager.sol182851
eigenda/contracts/src/libraries/EigenDAHasher.sol124648
SUM:92180323

Out of scope

  • Scripts and test files (though it may be a good idea to look through these to understand how things work!)
  • Offchain components (most of the EigenDA repo is offchain components!)
  • Paused functionality on mainnet: lots of current M1 code on mainnet has been paused since deployment, and will not be unpaused. Please check that any mainnet functions you're looking at are unpaused - if they're paused, chances are it's not worth your time!

Out of scope automated findings generated by LightChaserV3

Contact Us

For any issues or concerns regarding this competition, please reach out to core-team on discord.

Summary

Status

Completed

Total reward:

$100,000 USDC

Start date:

27 Feb 2024 3:00am (local time)

End date:

18 Mar 2024 8:00pm (local time)

The first marketplace for web3 security. We've aggregated the security talent and solutions so you don't have to.

Services

CompetitionsReviewsBountiesGuilds

© 2024 Cantina. All rights reserved.