Проверить, какие сети поддерживает ваш адрес, и проверить каждый шаг — это один порядок из четырёх сверок. Первая: формат адреса, он указывает на семейство сетей. Вторая: идентификатор цепи у приложения-отправителя. Третья: адрес контракта токена, если переводится не базовая монета. Четвёртая: пробный перевод минимальной суммы. Пропуск любой из сверок превращает проверку в предположение.

Поддержка сети адресом — это совпадение формата адреса и правил конкретной цепи, при котором отправленные в эту цепь средства оказываются подконтрольны владельцу ключа, а не теряются в ней.

Путаница происходит от внешнего сходства. Один и тот же набор символов выглядит действующим адресом сразу в нескольких сетях. Адрес принимает перевод. Доступ к средствам при этом может отсутствовать.

Под какой сценарий подбирается кошелёк и порядок сверки

Порядок зависит от того, что переводится. Базовая монета сети требует сверки формата адреса и идентификатора цепи. Токен добавляет третий объект проверки — адрес контракта, потому что один и тот же тикер в разных сетях принадлежит разным контрактам, и совпадение названия ни о чём не говорит.

Отсюда требование к приложению. Кошелёк должен показывать, в какую сеть он отправляет, и давать адрес контракта токена в явном виде. Если приложение этого не показывает, проверку выполнить нечем — и тогда стоит перечитать разбор о том, как правильно мигрировать активы на аппаратное устройство, прежде чем двигать средства куда-либо.

Схема из пяти шагов: сверка формата адреса, сверка идентификатора цепи, сверка адреса контракта токена, пробный перевод минимальной суммы, проверка поступления в обозревателе целевой сети
Схема из пяти шагов: сверка формата адреса, сверка идентификатора цепи, сверка адреса контракта токена, пробный перевод минимальной суммы, проверка поступления в обозревателе целевой сети

Сравнение объектов сверки: что меняется для пользователя

Что сверяется Где смотреть Признак несовпадения Чем грозит пропуск
Формат адреса Начало строки адреса и его кодировка Приложение не распознаёт адрес или предупреждает о формате Перевод в чужую сеть без доступа к средствам
Идентификатор цепи Переключатель сети в приложении-отправителе Выбрана не та сеть при верном адресе Средства в сети, которой кошелёк не управляет
Адрес контракта токена Карточка токена в приложении и обозреватель сети Тикер совпал, адрес контракта другой Перевод в контракт-двойник
Контрольная сумма адреса Регистр символов адреса Приложение сообщает о неверной сумме Опечатка в адресе, перевод в пустоту
Фактическое поступление Обозреватель целевой сети Транзакция есть, баланс не изменился Ошибка в двух предыдущих пунктах осталась незамеченной

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

Проверка шаг за шагом

  1. Определите формат адреса. Строка, начинающаяся с «bc1», относится к основной сети Bitcoin, а «tb1» — к тестовой; адрес из сорока шестнадцатеричных символов с префиксом «0x» принадлежит семейству сетей, совместимых с виртуальной машиной Ethereum.
  2. Сверьте идентификатор цепи в приложении-отправителе. Для основной сети Ethereum он равен единице; у других совместимых сетей значения свои, и совпадение формата адреса их не определяет.
  3. Для токена откройте его карточку и сравните адрес контракта с тем, что опубликован в обозревателе целевой сети. Тикер в сверке не участвует.
  4. Проверьте контрольную сумму адреса: приложения с поддержкой регистровой проверки сообщают об ошибке до отправки, и это предупреждение игнорировать нельзя.
  5. Отправьте минимальную сумму и дождитесь её отражения в балансе получателя. Только после этого отправляйте основную сумму.
  6. Запишите результат: сеть, идентификатор цепи, адрес контракта, дата проверки. Эта запись сэкономит время при следующем переводе.
Две опоры сверки из стандартов. Стандарт EIP-155 (статус Final, создан 14 октября 2016 года) ввёл идентификатор цепи в подпись транзакции: значение v вычисляется как единица или нуль плюс идентификатор, умноженный на два, плюс тридцать пять, а для основной сети Ethereum идентификатор равен единице. Стандарт ERC-55 (статус Final, создан 14 января 2016 года) описывает регистровую контрольную сумму адреса и оценивает вероятность, что случайная опечатка пройдёт проверку, в 0,0247 %.

Резервная копия и проверка восстановления

Копия слов восстановления перечня сетей не содержит. Это и есть источник неприятных открытий: корень восстановлен, адрес тот же, а сети в новом приложении перечислены другие, и часть балансов не видна до ручной настройки.

Поэтому рядом с копией держат отдельную запись: какие сети вы использовали, какие адреса контрактов значимы, какие пути вывода нестандартны. Проверка восстановления выполняется с этой записью в руках — восстановили корень, добавили сети по списку, сверили балансы. Как устроена сама копия, разобрано в материале про стандарт BIP-39 и происхождение 24 слов восстановления.

Типовые ошибки, которые стоят денег

Вывод с площадки «по адресу, он один и тот же». Адрес и правда выглядит одинаково в нескольких совместимых сетях, но выбор сети на стороне отправителя определяет, в какой из них окажутся средства. Сверка сети делается в обе стороны: у отправителя и у получателя.

Вторая ошибка — доверие тикеру. В каждой сети кто угодно может развернуть контракт с любым названием. Сверяется адрес контракта. Название не сверяется.

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

Четвёртая ошибка — проверка по балансу в приложении отправителя. Отправка подтверждена, перевод «ушёл», и человек считает дело сделанным. Факт поступления смотрят в обозревателе целевой сети, и регулярность таких сверок удобно встроить в общий порядок хранения: как организовать хранение криптовалюты, если держите активы годами.

Что делать при утере доступа

  1. Найдите транзакцию в обозревателе той сети, где она была отправлена, и зафиксируйте идентификатор цепи и адрес получателя.
  2. Проверьте, управляет ли ваш кошелёк этим адресом в этой сети: если ключ тот же, нужна настройка сети, а не восстановление доступа.
  3. При переводе токена сверьте адрес контракта с официальной публикацией: токен-двойник выглядит в карточке так же, как настоящий.
  4. Если сеть кошельком не поддерживается, добавьте её вручную по официальным параметрам, а не по подсказке со стороннего сайта.

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

Чек-лист

  • Формат адреса определён и соотнесён с семейством сетей
  • Идентификатор цепи у отправителя сверен с целевой сетью
  • Адрес контракта токена сверен с публикацией в обозревателе
  • Контрольная сумма адреса проверена приложением без ошибок
  • Пробный перевод минимальной суммы выполнен и дошёл
  • Поступление подтверждено в обозревателе целевой сети
  • Перечень используемых сетей записан рядом с резервной копией
  • Результат проверки зафиксирован с датой

Материалы по теме:

Частые вопросы

Один адрес работает в нескольких сетях. Это нормально?

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

Как узнать идентификатор цепи нужной сети?

Из официальной документации самой сети и из настроек кошелька, где он отображается рядом с названием. Стандарт EIP-155 ввёл это значение в подпись транзакции для защиты от повторного проведения в другой цепи. Для основной сети Ethereum идентификатор равен единице, остальные значения уникальны для каждой сети.

Зачем сверять адрес контракта, если тикер совпал?

Потому что тикер не уникален. Развернуть контракт с популярным названием в любой совместимой сети может кто угодно, и в карточке кошелька он будет выглядеть как настоящий. Единственный надёжный признак — адрес контракта, сверенный с публикацией в обозревателе целевой сети или в официальной документации проекта.

Пробный перевод обязателен каждый раз?

При первом переводе по новому маршруту — да. Повторные переводы на тот же адрес в той же сети с тем же контрактом в пробе не нуждаются, если маршрут записан и ничего не менялось. Как только меняется сеть, контракт или получатель, маршрут считается новым и проверяется заново.

Вердикт

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

Разборы и предупреждения о свежих схемах публикуем в Telegram-канале Cryptium.

Источники: спецификация EIP-155 об идентификаторе цепи в подписи транзакции и спецификация ERC-55 о регистровой контрольной сумме адреса.