Guides ·

Как проверить криптоадрес перед отправкой средств


Криптовалютные транзакции необратимы. Если вы отправите средства на неверно сформированный адрес, адрес в неправильной сети или адрес с единственным перепутанным символом --- нет банка для звонка и возврата платежа. Монеты потеряны. Валидация адресов --- последний рубеж обороны между вашими средствами и безвозвратной потерей, но большинство людей полностью её пропускают.

Это руководство объясняет работу валидации адресов на техническом уровне --- проверки формата, верификация контрольной суммы и обнаружение кроссчейн-путаницы --- и показывает, как встроить валидацию в рабочий процесс.

Почему валидация спасает криптовалюту

Самая частая причина потери криптовалюты --- не изощрённый взлом, а простая человеческая ошибка: неправильно скопированный адрес, вставка адреса из другой сети или clipboard-малварь, незаметно подменяющая адрес.

Корректная проверка сообщит:

  • Правильный ли формат? Соответствует ли строка ожидаемому шаблону целевого блокчейна?
  • Проходит ли контрольная сумма? Был ли какой-либо символ изменён?
  • Правильная ли сеть? Не собираетесь ли вы отправить Bitcoin на адрес Bitcoin Cash или ETH на адрес BNB Chain?

Валидация формата: регулярные выражения

Форматы Bitcoin-адресов

У Bitcoin три активных формата:

  • Legacy (P2PKH): Начинается с 1, 25--34 символа. Кодировка Base58Check.
  • Script (P2SH): Начинается с 3, 25--34 символа. Тоже Base58Check.
  • Native SegWit (Bech32): Начинается с bc1q (v0) или bc1p (v1/Taproot), 42--62 символа.

Адреса Ethereum и EVM

Адреса Ethereum: 0x плюс 40 hex-символов. Тот же формат на всех EVM-совместимых сетях --- Polygon, Arbitrum, Optimism, Base и BNB Chain.

Адреса Solana

Адреса Solana --- Base58-кодированные публичные ключи Ed25519, обычно 32--44 символа, без фиксированного префикса.

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

Верификация контрольной суммы: обнаружение опечаток

Base58Check (Bitcoin Legacy, TRON, XRP)

Base58Check добавляет 4-байтную контрольную сумму из двойного SHA-256 хеша. Вероятность случайной ошибки, прошедшей проверку: ~1 к 4,3 миллиарда.

Bech32 и Bech32m (Bitcoin SegWit)

Bech32 использует коды БЧХ. Обнаруживает любую односимвольную ошибку и большинство многосимвольных.

Контрольная сумма EIP-55 через регистр (Ethereum)

EIP-55 использует регистр hex-букв как контрольную сумму. Инструменты вроде Ethereum Address Validator проверяют и формат, и регистр EIP-55.

Solana: нет встроенной контрольной суммы

Адреса Solana --- сырые Base58-кодированные публичные ключи без встроенной контрольной суммы. Это делает аккуратное копирование и QR-коды особенно важными. Проверка формата доступна через Solana Address Validator.

Кроссчейн-путаница: частые ошибки

Пересечение EVM-сетей

Самая опасная путаница --- на EVM-совместимых сетях. Адрес Ethereum одновременно валиден на Polygon, Arbitrum, Optimism, Base и BNB Chain. Различить EVM-адреса по формату невозможно. Подробнее --- Безопасность EVM-адресов.

Bitcoin vs. Bitcoin Cash

Устаревшие Bitcoin-адреса (на 1 или 3) синтаксически идентичны адресам Bitcoin Cash.

TRON vs. Bitcoin Legacy

TRON-адреса начинаются с T и используют Base58Check --- внешне похожи на некоторые Bitcoin-адреса. Автоматические валидаторы мгновенно различают их по байту версии.

Валидаторы адресов SafeSeed

SafeSeed предоставляет бесплатные клиентские валидаторы:

Инструменты работают полностью в браузере через Web Crypto API --- можно использовать на air-gapped машине. Руководства по офлайн-генерации: Генерация Bitcoin seed офлайн и Генерация Ethereum-кошелька офлайн.

Интеграция валидации в рабочий процесс

Перед каждой транзакцией

  1. Копируйте адрес из надёжного источника. Используйте приложение кошелька напрямую, а не сообщение, email или сайт.
  2. Вставьте в валидатор. Пропустите адрес через сетеспецифичный валидатор. Это занимает две секунды и может спасти тысячи долларов.
  3. Визуально сравните первые и последние символы. Даже после валидации сверьте первые 6 и последние 6 символов вставленного адреса с оригиналом --- это ловит подмену буфера обмена.
  4. Сначала отправьте небольшую тестовую транзакцию. Для крупных переводов отправьте минимальную сумму и подтвердите получение.

Для разработчиков

При создании кошелька, биржи или DApp валидация адресов должна быть обязательной на уровне ввода. Не полагайтесь на пользователей.

Для обычных пользователей

Добавьте валидаторы в закладки и используйте каждый раз. Нет транзакции настолько малой или рутинной, чтобы она не заслуживала проверки. Несколько секунд --- ничто по сравнению с необратимой потерей даже одной неправильно отправленной транзакции.

Валидация адресов не зрелищна. Но это самое практически полезное, что вы можете сделать для защиты своей криптовалюты. Каждый адрес, каждый раз --- без исключений.