Руководство

Восстановление средств EVM-мультиподписи, полученных в неправильной сети

У вас есть EVM-мультиподпись Ownbit, и активы прибыли в сеть, которую вы не планировали. Средства не потеряны. Адрес контракта мультиподписи Ownbit выводится из его адреса развёртывания и nonce этого адреса — а не из сети — поэтому один и тот же адрес развёртывания воспроизводит один и тот же адрес контракта в любой EVM-сети. Это ключ ко всякому восстановлению здесь.

В какой ситуации вы находитесь?

Путь зависит от того, поддерживает ли Ownbit мультиподпись в сети, куда попали ваши средства.

A · Поддерживаемая сеть

ETH, BSC, Base, Arbitrum, Polygon — воссоздайте мультиподпись там с тем же кошельком развёртывания.

B · Неподдерживаемая сеть

например, Optimism — разверните небольшой контракт Sweeper по тому же адресу и извлеките средства.

A. Сеть ПОДДЕРЖИВАЕТСЯ мультиподписью Ownbit

Просто создайте мультиподпись заново в этой сети. Поскольку адрес контракта зависит только от адреса развёртывания, повторное развёртывание там размещает контракт точно там, где находятся ваши средства, и они становятся доступными для траты через обычный процесс мультиподписи.

  • Используйте тот же кошелёк развёртывания. Это единственное требование — именно оно обеспечивает совпадение адреса.
  • Использование тех же участников и порога/режима рекомендуется для ясности, но технически не обязательно.
  • Горячий кошелёк мультиподписи развёртывается автоматически с помощью этого горячего кошелька; кошелёк-наблюдатель мультиподписи позволяет выбрать личный горячий кошелёк для выполнения развёртывания.

После развёртывания откройте кошелёк в этой сети и переведите активы наружу как обычно.

B. Сеть НЕ поддерживается — разверните Sweeper

Вы не можете воссоздать мультиподпись здесь, поэтому вместо этого вы разворачиваете небольшой контракт Sweeper по тому же адресу, а затем вызываете его, чтобы переместить застрявшие активы под ваш контроль. Импортируйте адрес развёртывания мультиподписи как обычный кошелёк с одним ключом, пополните его небольшим количеством газа и разверните Sweeper из него — поскольку адрес выводится из аккаунта развёртывания, Sweeper попадает точно на адрес контракта, хранящий ваши средства.

Сохраняйте nonce нетронутым

Адрес развёртывания не должен совершать ни одной исходящей транзакции в целевой сети (его nonce должен быть нетронутым), иначе созданный адрес не совпадёт. Получение средств допустимо. Никогда не отправляйте случайную транзакцию с этого кошелька — каждая продвигает nonce и может сделать средства безвозвратно невосстановимыми.

Экспортируйте закрытый ключ развёртывания мультиподписи

В Ownbit откройте Экспортировать закрытый ключ для мультиподписи и выберите адрес с меткой (MS_DEPLOY_INDEX). Если мультиподпись была развёрнута личным горячим кошельком, который вы выбрали вручную, экспортируйте ключ этого кошелька вместо этого.

Импортируйте его как временный стандартный кошелёк

Импортируйте кошелёк из этого ключа с типом закрытого ключа = ETH (64-символьный hex). Этот временный кошелёк с одним ключом контролирует адрес развёртывания.

Пополните немного газа в целевой сети

Переключитесь на нативную монету целевой сети (например, ETH · Optimism) и держите небольшое количество газа. Пока ничего не отправляйте наружу.

Разверните контракт Sweeper

Нажмите «Отправить» в целевой сети, установите получателя на 0x0 (в Ownbit это означает «развернуть контракт»), сумма = 0. При подтверждении включите «Расширенные параметры», установите достаточный лимит газа (Gas Limit) и вставьте байткод Sweeper в поле данных Hex.

Убедитесь, что созданный адрес равен адресу вашей мультиподписи

В обозревателе транзакция показывает создание контракта — созданный адрес должен равняться адресу вашей мультиподписи. Если нет, проверьте nonce создания, который мультиподпись изначально использовала, и разверните повторно столько же раз с тем же кошельком.

Смахните активы к себе

Отправьте снова на созданный адрес контракта (адрес вашей мультиподписи), сумма = 0, и вставьте данные вызова смахивания в поле данных Hex. Средства поступают в ваш кошелёк развёртывания; если смахивание не удаётся (например, из-за низкого газа), просто повторите попытку.

Данные вызова смахивания

Используйте одно из этих значений как данные Hex на шаге смахивания:

МетодДанные Hex
Смахнуть токен ERC-20 — sweep(address)0x01681a62 + 24 нуля + адрес контракта токена (дополненный нулями слева до 32 байт)
Смахнуть нативную монету — sweepETH()0xd47f6877 (без параметров)

Это техническое восстановление уровня разработчика. Полный байткод Sweeper для развёртывания, эталонный исходный код Sweeper.sol и проработанные скриншоты см. в полном руководстве: EVM-мультиподпись — восстановление средств, полученных в неправильной сети.

FAQ

Часто задаваемые вопросы

Моя EVM-мультиподпись получила средства в сети, которую я не планировал — потеряны ли они?

Нет. Адрес контракта мультиподписи выводится из его адреса развёртывания (и nonce), а не из сети, поэтому один и тот же адрес развёртывания воспроизводит один и тот же адрес контракта в любой EVM-сети — именно это делает восстановление возможным.

Сеть поддерживается мультиподписью Ownbit — что мне делать?

Просто воссоздайте мультиподпись в этой сети, используя тот же кошелёк развёртывания. Контракт развёртывается заново по точному адресу, хранящему ваши средства, и вы можете тратить их через обычный процесс мультиподписи.

Сеть не поддерживается — как восстановить?

Экспортируйте закрытый ключ развёртывания мультиподписи, импортируйте его как временный кошелёк ETH, пополните немного газа, разверните контракт Sweeper (получатель 0x0 + байткод в данных Hex), чтобы он попал на адрес вашей мультиподписи, затем вызовите sweep()/sweepETH(), чтобы извлечь средства на ваш адрес развёртывания.

Почему я должен избегать отправки транзакций с кошелька развёртывания?

Адрес созданного контракта зависит от nonce адреса развёртывания. Любая исходящая транзакция продвигает nonce, поэтому Sweeper попал бы на другой адрес, и средства могли бы стать безвозвратно невосстановимыми.

Обновлено:

Скачать

Скачать Ownbit

Установите приложение и настройте холодный кошелёк или мультиподпись под нужный вам сценарий.