Контракты, которые нельзя подменять символом токена
ОбъектEthereum mainnet addressЧто читать
Lido / stETH proxy0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84balanceOf, sharesOf, getTotalShares, getTotalPooledEther
wstETH0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0balanceOf, getStETHByWstETH, stEthPerToken
WithdrawalQueueERC721 proxy0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1ownerOf, getWithdrawalStatus, getClaimableEther
Контракты, которые нельзя подменять символом токена
Объект
Lido / stETH proxy
Ethereum mainnet address
0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84
Что читать
balanceOf, sharesOf, getTotalShares, getTotalPooledEther
Объект
wstETH
Ethereum mainnet address
0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0
Что читать
balanceOf, getStETHByWstETH, stEthPerToken
Объект
WithdrawalQueueERC721 proxy
Ethereum mainnet address
0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1
Что читать
ownerOf, getWithdrawalStatus, getClaimableEther

stETH balance — результат shares-модели, а не сохранённое число

Контракт хранит долю пользователя в shares. Наблюдаемый `balanceOf(account)` рассчитывается как `sharesOf(account) × totalPooledEther / totalShares` с integer rounding. Oracle report меняет pool accounting, поэтому stETH balance может увеличиться или уменьшиться без обычного `Transfer` для каждого держателя, тогда как shares пользователя не обязаны измениться. Для воспроизводимости сохраняйте один block number для всех четырёх reads.

Сравнивайте raw values, а отображение стройте через decimals токена; у stETH это 18, но само количество знаков не объясняет долю. `getSharesByPooledEth` и `getPooledEthByShares` — contract conversions на выбранном block, а не рыночная котировка и не обещание будущего результата. Разница в минимальных единицах возможна из-за integer division.

wstETH фиксирует количество wrapper units, а не курс к stETH

wstETH принимает stETH и выпускает wrapper units; unwrap сжигает wstETH и возвращает stETH. Сам rebase не меняет `balanceOf(wstETH)` адреса, но меняет stETH-эквивалент одной unit. Для проверки вызывайте `getStETHByWstETH(amount)` или `stEthPerToken()` на том же block. Баланс всё равно меняется при transfer, wrap/unwrap или других token operations — «фиксированный» означает только устойчивость к stETH rebase.

Если интеграция называет позицию vault shares, сначала установите, действительно ли это ERC-4626 vault или просто wstETH/ещё один wrapper. Для ERC-4626 vault применяются другие методы и ограничения. В этой статье результат ограничен canonical Lido contracts, поэтому APY, DEX price, lending collateral factor и bridged exchange rate не вычисляются.

WithdrawalQueue превращает token amount в отдельный request state

Проверка одного request ID перед claim

  1. 1
    Проверить deployment

    Зафиксируйте Chain ID 1, точный queue proxy из официального каталога и request ID; не доверяйте одному символу unstETH.

  2. 2
    Сверить владельца

    Прочитайте `ownerOf(requestId)` и owner в `getWithdrawalStatus`. NFT передаваем, поэтому адрес, создавший request, может уже не владеть правом claim.

  3. 3
    Сверить суммы

    Запишите amountOfStETH и amountOfShares. Для request из wstETH wrapper сначала разворачивается, а статус номинируется в stETH/shares.

  4. 4
    Прочитать флаги

    `isFinalized=false` означает ожидание; `isFinalized=true` и `isClaimed=false` — необходимое состояние для claim; `isClaimed=true` исключает повтор.

  5. 5
    Получить точный claimable

    Вызовите `getClaimableEther` с корректным checkpoint hint: ноль бывает у неfinalized или уже claimed request.

Request блокирует stETH/wstETH и выпускает transferable unstETH NFT. Отменить request штатным workflow нельзя. Finalization происходит batch-ами Accounting Oracle при доступной ликвидности и других protocol conditions; до неё request не равен ETH на адресе. Сумма при finalization ограничена исходным stETH amount и может быть ниже при существенной protocol loss; время и соотношение 1:1 не гарантируются.

Decision и recovery по состоянию request
СостояниеРезультатДействие
Request не найденНеверная сеть, queue или IDОстановиться; сверить receipt события создания и официальный proxy
owner другойПраво claim принадлежит текущему NFT ownerНе подписывать claim; проверить Transfer NFT и получателя
finalized=falseETH ещё не зарезервирован для claimЖдать обновления state; не повышать gas и не повторять request
finalized=true, claimed=falseRequest потенциально claimableПроверить claimable amount, hint, recipient и calldata
claimed=trueNFT/request уже погашенНайти WithdrawalClaimed и фактический ETH recipient
Decision и recovery по состоянию request
Состояние
Request не найден
Результат
Неверная сеть, queue или ID
Действие
Остановиться; сверить receipt события создания и официальный proxy
Состояние
owner другой
Результат
Право claim принадлежит текущему NFT owner
Действие
Не подписывать claim; проверить Transfer NFT и получателя
Состояние
finalized=false
Результат
ETH ещё не зарезервирован для claim
Действие
Ждать обновления state; не повышать gas и не повторять request
Состояние
finalized=true, claimed=false
Результат
Request потенциально claimable
Действие
Проверить claimable amount, hint, recipient и calldata
Состояние
claimed=true
Результат
NFT/request уже погашен
Действие
Найти WithdrawalClaimed и фактический ETH recipient

Перед approve, request или claim проверьте, что подписывает кошелёк: contract, owner/recipient, amount и request ID. Если transaction reverted, gas может быть списан без изменения request state; перечитайте receipt и onchain-status вместо повторной отправки. Проверяемый результат — block, три contract address, raw shares/conversion или request fields, current owner, claimable amount и transaction hash.

Источники

Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.

  1. Lido Docs — Mainnet deployment Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
  2. Lido Docs — Lido/stETH contract Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
  3. Lido Docs — wstETH contract Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
  4. Lido Docs — WithdrawalQueueERC721 Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
  5. Lido Docs — Tokens integration guide Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
Материал носит информационный характер и не является индивидуальной рекомендацией. Криптоактивы связаны с риском волатильности, технических сбоев, хищения и полной потери средств.