Интеграция с EigenLayer restaking
Интеграция с EigenLayer — это не просто "подключить библиотеку". Это встраивание вашего протокола или приложения в экосистему restaking: либо как AVS использующий EigenLayer security, либо как приложение помогающее пользователям restake их ETH.
Сценарии интеграции
Сценарий 1: Ваш протокол как AVS Вы строите oracle сеть, bridge, DA layer. Вместо своего validator set — EigenLayer operaors обеспечивают вашу безопасность.
Сценарий 2: DeFi приложение с EigenLayer deposits Вы строите lending protocol или AMM и хотите принимать restaked ETH или LRT как collateral.
Сценарий 3: Wallet/Portfolio app Добавить возможность restaking для ваших пользователей прямо в интерфейс.
Технические интерфейсы
Deposit через EigenLayer contracts
// Deposit LST (например, stETH) в EigenLayer StrategyManager
IStrategyManager strategyManager = IStrategyManager(EIGENLAYER_STRATEGY_MANAGER);
IERC20 stETH = IERC20(STETH_ADDRESS);
// Approve
stETH.approve(address(strategyManager), amount);
// Deposit
strategyManager.depositIntoStrategy(
IStrategy(STETH_STRATEGY), // Стратегия для stETH
stETH,
amount
);
Delegation
После deposit, staker делегирует свои shares оператору:
IDelegationManager delegationManager = IDelegationManager(EIGENLAYER_DELEGATION_MANAGER);
delegationManager.delegateTo(
operatorAddress,
approverSignatureAndExpiry, // Если оператор permissioned
approverSalt
);
EigenPod для native ETH restaking
Для native ETH stakers (не LST):
IEigenPodManager eigenPodManager = IEigenPodManager(EIGENPOD_MANAGER);
// Создать EigenPod
eigenPodManager.createPod();
// Адрес созданного pod
address podAddress = eigenPodManager.ownerToPod(msg.sender);
Withdrawal credentials валидатора устанавливаются на адрес EigenPod. Теперь ETH rewards считаются restaked.
Чтение on-chain состояния
Для portfolio applications — нужно показывать состояние restaking позиций:
import { ethers } from 'ethers';
const strategyManagerABI = [...]; // ABI из @eigenlayer/eigenlayer-contracts
const strategyManager = new ethers.Contract(
STRATEGY_MANAGER_ADDRESS,
strategyManagerABI,
provider
);
// Получить shares пользователя в конкретной стратегии
const shares = await strategyManager.stakerStrategyShares(
userAddress,
stETH_STRATEGY_ADDRESS
);
// Конвертировать shares в underlying token amount
const strategy = new ethers.Contract(stETH_STRATEGY_ADDRESS, strategyABI, provider);
const underlyingAmount = await strategy.sharesToUnderlying(shares);
The Graph для индексации
EigenLayer subgraph доступен для быстрого querying исторических данных:
query GetOperatorDelegations($operatorId: String!) {
operator(id: $operatorId) {
totalShares
delegators {
staker {
id
}
shares
strategy {
id
}
}
avss {
avs {
id
metadataURI
}
}
}
}
Интеграция EigenLayer в существующее приложение — 2-6 недель в зависимости от глубины интеграции.







