Краткий ответ

Почти никогда не восстановимы. NFT — bearer токены на блокчейне — кто контролирует адрес, держащий NFT, тот и владелец. Если ваш кошелёк был слит и NFT переместился на адрес атакующего, блокчейн считает их законным владельцем. Исключения узкие: высоко-профильные украденные NFT иногда возвращаются через community pressure, OpenSea или magiceden могут заморозить NFT в marketplace listings (но не в блокчейне), и правоохранительные органы occasionally изымают украденные NFT в крупных случаях.

Что может означать "восстановление"

1. Атакующий возвращает добровольно. Редко. Иногда случается с white-hat исследователями.

2. Marketplace заморозки предотвращают legitimate-seeming resale. OpenSea, Blur, LooksRare поддерживают "stolen NFT" списки. Если репортите кражу в течение часов, могут заморозить marketplace listings. NFT всё ещё принадлежит атакующему on-chain, но они не могут легко продать через крупные marketplaces.

3. Law enforcement seizure. Для high-value случаев (мульти-миллион-долларовые коллекции) FBI и Chainalysis Reactor trace украденные NFT к атакующим и изымают. Медленно (месяцы-годы), дорого и только для значимых потерь.

4. Insurance claim. Coincover и другие специализированные крипто-theft insurance полисы покрывают NFT. Премии высокие (1-3% страхуемой стоимости ежегодно). Большинство российских страховых полисов имущества не покрывают крипто/NFT кражу.

Немедленные действия после кражи

В течение 24 часов:

  1. Репортите OpenSea (и любой другой marketplace, где NFT был listed) для stolen-NFT flagging.
  2. Твитните о краже с ID NFT и адресом кошелька атакующего. Community awareness иногда давит на покупателей отказаться от украденного NFT.
  3. Подайте жалобу в Кибер-полицию с деталями транзакции. Требуется для insurance claims и любого будущего law-enforcement involvement.
  4. Подайте заявление в полицию по той же причине.
  5. Задокументируйте всё: ID транзакций, кошелёк атакующего, хронология событий.

OpenSea заморозка и community pressure time-sensitive. Действие в течение 24 часов значительно повышает шанс, что NFT нельзя быстро ликвидировать.

Почему это сложнее, чем кража fungible-токенов

Слитые 100 USDC fungible — атакующий смешивает с другим USDC и продаёт. Нет конкретных 100 USDC для "восстановления". NFT уникален — token ID #4242 в Bored Ape Yacht Club идентифицируем навсегда. Это делает resale атакующим сложнее (хорошо для жертвы), но не меняет on-chain ownership правила (плохо для жертвы).

Профилактика

Те же approval-phishing защиты применимы: никогда не подписывайте setApprovalForAll для marketplaces, которые активно не используете, запускайте revoke.cash ежеквартально, используйте отдельный "vault" кошелёк для ценных NFT, который никогда не подключается к любому dApp, переводите на "trading" кошелёк только когда фактически хотите listings.

Дополнительное чтение: setApprovalForAll, Фишинг.