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

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

Как проверить, какие сети поддерживает ваш адрес и не оставить следов в облаке: три уровня

Уровней ровно три. Они отвечают на разные вопросы.

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

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

Чем различаются одинаковые с виду адреса

Строки выглядят похоже. Внутри лежат разные схемы кодирования.

Адреса Bitcoin с префиксом «bc1» описаны в BIP-173 от 20 марта 2017 года. Спецификация задаёт человекочитаемую часть «bc» для основной сети и «tb» для тестовой, разделитель «1», исключённые из алфавита символы «1», «b», «i», «o» и контрольную сумму из шести знаков на BCH-коде, которая обнаруживает любую ошибку, затронувшую не больше четырёх символов. Адреса нулевой версии свидетеля имеют длину 42 или 62 символа, предельная длина — 90.

Для версий свидетеля с первой по шестнадцатую применяется bech32m: BIP-350 от 16 декабря 2020 года заменяет константу в контрольной сумме на 0x2bc830a3, сохраняя ту же часть «bc». Адреса, начинающиеся с «3», относятся к другой схеме: по BIP-13 от 18 октября 2011 года версионный байт равен 5 для основной сети и 196 для тестовой, после кодирования base58 первый символ получается «3» и «2» соответственно.

Адреса EVM устроены иначе. Это двадцать байт в шестнадцатеричной записи, и сведений о сети в них нет. Регистр букв служит контрольной суммой по стандарту ERC-55 от 14 января 2016 года: заглавной печатается буква, которой соответствует старший бит в хеше адреса, а вероятность того, что случайно опечатанный адрес пройдёт такую проверку, составляет 0,0247%. Проверка ловит опечатку. Сеть она не определяет.

Черновик ERC-3770 от 26 августа 2021 года описывает проблему прямо: один и тот же адрес может указывать на обычный аккаунт в одной сети и на смарт-контракт в другой. Отсюда и предложенная запись «короткое имя сети», двоеточие, адрес. На уровне подписи сети различает идентификатор цепочки из EIP-155 от 14 октября 2016 года: он входит в значение v по правилу «идентификатор, умноженный на два, плюс 35 или 36», и подпись из одной сети не повторяется в другой. Адрес при этом остаётся общим — различается транзакция, а не строка получателя.

Вид адреса Признак сети внутри строки Что проверяется локально Чего проверка не доказывает
bech32 и bech32m, префикс «bc1» или «tb1» Человекочитаемая часть «bc» для основной сети, «tb» для тестовой Префикс, алфавит без символов «1», «b», «i», «o», длина и контрольная сумма из шести знаков Принадлежность адреса вам: формат одинаков у любого владельца
base58check с первым символом «1» или «3» Версионный байт: 5 даёт «3» в основной сети, 196 даёт «2» в тестовой Версионный байт и четырёхбайтная контрольная сумма при декодировании Тип получателя: за адресом «3» может стоять любой скрипт
Двадцать байт в шестнадцатеричной записи, префикс «0x» Признака сети нет: та же строка валидна во всех совместимых сетях Длина в 40 знаков и контрольная сумма регистра по ERC-55 Сеть, в которой адрес обслуживается, и наличие там кода контракта
Адрес с префиксом короткого имени сети, вид «eth:0x…» Явный префикс сети перед адресом по черновику ERC-3770 Совпадение короткого имени сети с ожидаемой перед отправкой Поддержку формата получателем: черновик принят не всеми кошельками

Второй уровень: вывести адрес из своей фразы

Единственное локальное доказательство принадлежности — повторный вывод адреса. Путь описан в стандарте BIP-39 и логике 24 слов восстановления, а структура пути задана BIP-44 от 24 апреля 2014 года: m / purpose’ / coin_type’ / account’ / change / address_index.

Номер coin_type берётся из реестра SLIP-0044. Для Bitcoin это 0, для тестовых сетей всех монет — 1, для Litecoin — 2, для Ethereum — 60, для Ethereum Classic — 61, для Bitcoin Cash — 145, для Tron — 195, для Solana — 501, для BNB — 714, для Polygon — 966. BIP-44 задаёт и правило обнаружения аккаунтов: при двадцати неиспользованных адресах подряд кошелёк прекращает поиск. Значения сверяйте в реестре на дату проверки — он пополняется.

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

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

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

Где остаются следы и как их не оставлять

  • Разбор формата выполнен в кошельке или офлайн-утилите, без обращения к сайтам
  • Адрес не вводился в поисковую строку браузера — запрос уходит провайдеру поиска
  • Синхронизация буфера обмена между устройствами отключена на время работы с адресами
  • Скриншоты с адресами не попадают в папку с автозагрузкой в облако
  • Журнал проверок ведётся локально: дата, сеть, путь вывода, результат сверки
  • Обозреватель цепочки, если он нужен, открывается через свой узел
  • Резервная фраза остаётся на бумаге или металле и в облако не копируется

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

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

Итог

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

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

Как понять сеть по адресу, если он начинается с «0x»?

По самому адресу — никак. Двадцать байт в шестнадцатеричной записи валидны во всех совместимых сетях, и сведений о сети внутри строки нет. Выбирайте сеть в кошельке осознанно, а для переписки используйте запись с префиксом короткого имени сети по черновику ERC-3770.

Можно ли отправить средства на адрес «bc1» в другой сети?

Корректный кошелёк откажется: человекочитаемая часть «bc» и контрольная сумма bech32 не пройдут проверку в чужой сети. Отказ происходит локально, до отправки. Это и есть довод в пользу форматов с префиксом сети — ошибка отсекается арифметикой, а не внимательностью человека.

Контрольная сумма в регистре букв защищает от выбора неверной сети?

Нет, она защищает от опечатки. По расчёту в ERC-55 вероятность того, что искажённый адрес случайно пройдёт проверку, равна 0,0247%. Сеть при этом остаётся на усмотрение отправителя, и ошибка в выборе сети контрольной суммой не обнаруживается.

Нужно ли проверять адрес через обозреватель цепочки?

Только если вас интересует история операций. Для вопроса «моя ли это строка» достаточно вывести адрес из резервной фразы офлайн. Публичный обозреватель при этом связывает адрес с вашим запросом, поэтому обращаться к нему разумно через собственный узел.

Вердикт

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

Разборы по кошелькам и форматам адресов публикуем в Telegram-канале Cryptium.