Как проверить криптоадрес перед отправкой средств
Содержание
Криптовалютные транзакции необратимы. Если вы отправите средства на неверно сформированный адрес, адрес в неправильной сети или адрес с единственным перепутанным символом --- нет банка для звонка и возврата платежа. Монеты потеряны. Валидация адресов --- последний рубеж обороны между вашими средствами и безвозвратной потерей, но большинство людей полностью её пропускают.
Это руководство объясняет работу валидации адресов на техническом уровне --- проверки формата, верификация контрольной суммы и обнаружение кроссчейн-путаницы --- и показывает, как встроить валидацию в рабочий процесс.
Почему валидация спасает криптовалюту¶
Самая частая причина потери криптовалюты --- не изощрённый взлом, а простая человеческая ошибка: неправильно скопированный адрес, вставка адреса из другой сети или 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 предоставляет бесплатные клиентские валидаторы:
- Bitcoin Address Validator --- Legacy, P2SH, Bech32 и Bech32m с полной проверкой контрольной суммы.
- Ethereum Address Validator --- Проверка hex-формата и контрольной суммы EIP-55.
- Solana Address Validator --- Проверка формата Base58 и набора символов.
Инструменты работают полностью в браузере через Web Crypto API --- можно использовать на air-gapped машине. Руководства по офлайн-генерации: Генерация Bitcoin seed офлайн и Генерация Ethereum-кошелька офлайн.
Интеграция валидации в рабочий процесс¶
Перед каждой транзакцией¶
- Копируйте адрес из надёжного источника. Используйте приложение кошелька напрямую, а не сообщение, email или сайт.
- Вставьте в валидатор. Пропустите адрес через сетеспецифичный валидатор. Это занимает две секунды и может спасти тысячи долларов.
- Визуально сравните первые и последние символы. Даже после валидации сверьте первые 6 и последние 6 символов вставленного адреса с оригиналом --- это ловит подмену буфера обмена.
- Сначала отправьте небольшую тестовую транзакцию. Для крупных переводов отправьте минимальную сумму и подтвердите получение.
Для разработчиков¶
При создании кошелька, биржи или DApp валидация адресов должна быть обязательной на уровне ввода. Не полагайтесь на пользователей.
Для обычных пользователей¶
Добавьте валидаторы в закладки и используйте каждый раз. Нет транзакции настолько малой или рутинной, чтобы она не заслуживала проверки. Несколько секунд --- ничто по сравнению с необратимой потерей даже одной неправильно отправленной транзакции.
Валидация адресов не зрелищна. Но это самое практически полезное, что вы можете сделать для защиты своей криптовалюты. Каждый адрес, каждый раз --- без исключений.