Валидатор крипто-адресов
Вставьте адрес и узнайте, какому формату он соответствует. Адреса TRON проверяются вплоть до контрольной суммы Base58Check; адреса Ethereum и BSC проверяются на формат и на наличие контрольной суммы EIP-55.
Создавайте адреса вместо их проверки
Chaingateway создаёт и отслеживает депозитные адреса в TRON, Ethereum и BSC через единый REST API. Некастодиально, семь дней на тест, без кредитной карты и KYC.
Что проверяет этот инструмент и чего он не может
За фразой «этот адрес действителен» скрываются два разных вопроса. Первый — корректно ли сформирована строка: правильная длина, правильный алфавит, контрольная сумма сходится. У этого вопроса есть однозначный ответ, и эта страница отвечает на него прямо в вашем браузере, не отправляя адрес никуда. Второй — существует ли этот адрес, есть ли на нём баланс и принадлежит ли он тому, кто вам его дал. Ни один офлайн-чекер не может ответить на этот вопрос, а любой инструмент, утверждающий обратное, на самом деле читает блокчейн, а не строку.
Различие важно, потому что эти два вида ошибок выглядят совершенно по-разному. Некорректно сформированный адрес отлавливается здесь и любым кошельком, поэтому опечатка в адресе TRON — это неудобство, а не потеря средств. А корректно сформированный адрес, принадлежащий не тому человеку, невидим для любого чекера, который когда-либо был написан.
TRON: Base58Check, проверено вплоть до контрольной суммы
Адрес TRON — это 34 символа, начинающиеся с T. За этой строкой стоят 25 байт: один байт версии, 20 байт адреса и 4-байтовая контрольная сумма. Байт версии на mainnet равен 0x41, и именно поэтому каждый адрес после Base58-кодирования этих 25 байт начинается с буквы T.
Контрольная сумма — это первые четыре байта SHA-256(SHA-256(payload)), где payload — это байт версии плюс 20 байт адреса. Эта страница вычисляет этот хеш по-настоящему, используя собственный Web Crypto API браузера, и сравнивает его с четырьмя байтами, зашитыми в адрес. Один изменённый символ даёт другой payload, другой хеш и несовпадение. Это весь механизм целиком, и именно поэтому опечатанный адрес TRON отклоняется, а не принимается в никуда.
Base58 также намеренно исключает четыре символа из своего алфавита: ноль, заглавную O, заглавную I и строчную l. Это как раз те пары, которые люди путают, читая адрес вслух или переписывая его вручную, и их исключение означает, что такие путаницы не могут привести к другому валидному адресу. Если чекер сообщает о символе вне алфавита, обычно виноват один из этих четырёх.
Одна вещь, которую формат вам не сообщает: является ли адрес кошельком или контрактом токена. Оба используют идентичную форму с префиксом T в TRON. Контракт USDT, TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t, — валидный адрес по любой проверке на этой странице, и отправка депозита на него всё равно остаётся ошибкой. Страница про адреса TRC20 подробнее разбирает это различие и hex-нотацию.
Ethereum и BSC: один формат, две сети
Адрес EVM — это 0x, за которым следуют 40 шестнадцатеричных символов, всего 42 символа. Ethereum, BNB Smart Chain, Polygon и Arbitrum используют его все, потому что у них общий слой исполнения и общий способ вывода ключей. Отсюда следствие, которое стоит проговорить прямо: невозможно отличить адрес ERC-20 от адреса BEP-20, просто взглянув на него. Строка одна и та же. Различается сеть, в которую вы транслируете транзакцию, и балансы, существующие в каждой из сетей.
Именно отсюда берётся большинство межсетевых потерь. Адрес, полностью валидный в Ethereum, точно так же валиден в BSC, поэтому кошелёк без проблем отправит токены BEP-20 на адрес, за которым получатель следит только в Ethereum. Средства не пропадают — они лежат в другой сети, — но чтобы их вернуть, нужен приватный ключ и кошелёк, настроенный на эту сеть. Страница про адреса ERC20 и страница про адреса BEP20 разбирают практическую сторону этого вопроса, включая то, чем BEP-20 отличается от более старого формата BEP-2, который начинается с bnb1 и никак не взаимозаменяем с тем, что описано здесь.
EIP-55: контрольная сумма, спрятанная в регистре букв
Hex не чувствителен к регистру, поэтому 0xab… и 0xAB… адресуют один и тот же аккаунт. EIP-55 задействует этот запасной объём: хешируйте адрес в нижнем регистре алгоритмом Keccak-256 и позвольте каждому ниблу хеша решить, писать ли соответствующую hex-букву в верхнем или нижнем регистре. Результат выглядит как обычный адрес со смешанным регистром и несёт примерно четыре бита обнаружения ошибок на букву.
Таким образом, адрес EVM в смешанном регистре делает заявление, а адрес, написанный полностью строчными или полностью заглавными буквами, — нет. Оба варианта — легитимный ввод для любого кошелька и любой ноды. Проверить можно только вариант со смешанным регистром.
Эта страница сообщает, какой из двух вариантов вы вставили, и на этом останавливается. Проверка контрольной суммы EIP-55 требует реализации Keccak-256, а Web Crypto API браузера Keccak не предлагает — он предлагает SHA-256, который и использует проверка TRON выше. Вместо того чтобы поставлять самописную хеш-функцию для проверки, связанной с безопасностью, инструмент сообщает, что именно он не проверил. Если ваш адрес получен из интерфейса кошелька, он почти наверняка уже несёт корректную контрольную сумму; если он взят из базы данных или лог-файла, полную проверку EIP-55 стоит выполнить в собственном коде, где проверенная библиотека — это один импорт.
Откуда берутся адреса в интеграции
Проверка вставленного адреса — это последний рубеж обороны. Более ранний рубеж — вообще не вставлять адреса вручную. В платёжном или выплатном потоке депозитные адреса генерируются на каждого клиента и отслеживаются программно, поэтому ни один человек никогда не перепечатывает адрес, и вопрос формата просто не возникает.
Именно этим и занимаются API TRON и эквивалентные эндпоинты Ethereum и BSC: создать адрес, зарегистрировать для него вебхук, зачислить депозит по приходу уведомления. Адреса остаются non-custodial, а тестовый период длится семь дней без банковской карты и без KYC. Прежде чем строить на этом интеграцию, стоит знать две операционные детали: у вебхуков нет автоматического повтора, поэтому неудачную доставку нужно забирать через POST /<chain>/webhooks/notifications/failed, а не ждать повторной отправки, а у Solana вебхуков нет вовсе.
Остальные калькуляторы на этом сайте перечислены в обзоре инструментов.
Часто задаваемые вопросы
Покидает ли адрес мой браузер?
Нет. И декодирование Base58, и хеширование SHA-256 выполняются локально, через Web Crypto API браузера. Запрос на сервер не отправляется, а значит, инструмент работает даже без подключения к сети.
Что именно проверяется для адреса TRON?
Четыре вещи: что строка состоит из 34 символов, что каждый символ входит в алфавит Base58, что она декодируется в 25 байт с байтом версии 0x41, и что последние четыре байта совпадают с первыми четырьмя байтами SHA-256(SHA-256(payload)). Контрольная сумма вычисляется, а не предполагается.
Можно ли отличить адрес ERC-20 от адреса BEP-20?
Нет, и ничто другое тоже не может. Оба стандарта используют идентичный формат: 0x и 40 шестнадцатеричных символов. Инструмент, который утверждает, что различает их, либо гадает, либо запрашивает баланс в блокчейне — а это уже другой вопрос, не связанный с действительностью адреса.
Почему не проверяется контрольная сумма EIP-55?
Для этого нужен Keccak-256, которого нет во встроенной криптографии браузера, а страница не поставляет собственную реализацию хеширования для проверки, на которую люди могли бы полагаться. Страница сообщает лишь, записан ли адрес в смешанном регистре — то есть несёт контрольную сумму EIP-55, — или в одном регистре, то есть без неё.
Означает ли действительный адрес, что средства дойдут?
Нет. Действительность — это свойство строки. Отслеживается ли адрес, относится ли он к той сети, из которой вы отправляете, и принадлежит ли он нужному получателю, — все эти вопросы отдельные, и ни одна офлайн-проверка их не решает.
Почему Base58 пропускает некоторые символы?
Ноль, заглавная O, заглавная I и строчная l исключены, потому что их легко перепутать друг с другом. Их отсутствие означает, что неоднозначное прочтение не может незаметно превратиться в другой действительный адрес.
Что такое hex-форма адреса TRON?
Те же 21 байт полезной нагрузки, записанные в hex: 41, за которым следуют 40 шестнадцатеричных символов. TVM использует эту форму внутренне, а кошельки показывают форму Base58Check. У hex-формы нет контрольной суммы, поэтому проверять в ней нечего.
Является ли адрес контракта действительным адресом?
Да, по любой проверке формата. На TRON и на EVM-блокчейнах адреса контрактов и адреса кошельков неразличимы по форме. Отправка депозита на контракт токена проходит проверку и всё равно приводит к потере средств — именно поэтому проверка адреса является проверкой формата, а не проверкой безопасности.