| Объект | Ethereum mainnet address | Что читать |
|---|---|---|
| Lido / stETH proxy | 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 | balanceOf, sharesOf, getTotalShares, getTotalPooledEther |
| wstETH | 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0 | balanceOf, getStETHByWstETH, stEthPerToken |
| WithdrawalQueueERC721 proxy | 0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1 | ownerOf, 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
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Проверить deployment
Зафиксируйте Chain ID 1, точный queue proxy из официального каталога и request ID; не доверяйте одному символу unstETH.
- 2Сверить владельца
Прочитайте `ownerOf(requestId)` и owner в `getWithdrawalStatus`. NFT передаваем, поэтому адрес, создавший request, может уже не владеть правом claim.
- 3Сверить суммы
Запишите amountOfStETH и amountOfShares. Для request из wstETH wrapper сначала разворачивается, а статус номинируется в stETH/shares.
- 4Прочитать флаги
`isFinalized=false` означает ожидание; `isFinalized=true` и `isClaimed=false` — необходимое состояние для claim; `isClaimed=true` исключает повтор.
- 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 не гарантируются.
| Состояние | Результат | Действие |
|---|---|---|
| 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 |
- Состояние
- 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.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- Lido Docs — Mainnet deployment Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
- Lido Docs — Lido/stETH contract Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
- Lido Docs — wstETH contract Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
- Lido Docs — WithdrawalQueueERC721 Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
- Lido Docs — Tokens integration guide Lido · Проверено 21 августа 2026 г. в 22:07 GMT+5
