Валидатор крипто-адресов
Вставьте адрес и узнайте, какому формату он соответствует. Адреса 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 в смешанном регистре делает заявление, а адрес, написанный полностью строчными или полностью заглавными буквами, — нет. Оба варианта — легитимный ввод для любого кошелька и любой ноды. Проверить можно только вариант со смешанным регистром.
Эта страница проверяет эту контрольную сумму. Keccak-256 — это не то же самое, что SHA-256 из Web Crypto API браузера, и не то же самое, что встроенный SHA3-256: оба различаются по дополнению (padding) и дают разные хеши, — поэтому проверенная реализация подгружается только по нажатию кнопки, а не при каждой загрузке страницы. Адрес в смешанном регистре, чей регистр не совпадает, помечается как ошибка вместе с корректно записанным вариантом. Адрес, записанный целиком в верхнем или нижнем регистре, вообще не несёт контрольной суммы, и её не может проверить никто.
Откуда берутся адреса в интеграции
Проверка вставленного адреса — это последний рубеж обороны. Более ранний рубеж — вообще не вставлять адреса вручную. В платёжном или выплатном потоке депозитные адреса генерируются на каждого клиента и отслеживаются программно, поэтому ни один человек никогда не перепечатывает адрес, и вопрос формата просто не возникает.
Именно этим и занимаются 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?
Да. Регистр адреса EVM в смешанном написании кодирует контрольную сумму EIP-55, и страница пересчитывает её заново: Keccak-256 от шестнадцатеричной строки в нижнем регистре, затем каждая буква переводится в верхний регистр там, где соответствующий нибл хеша равен 8 или больше. Keccak-256 не встроен в браузер и не то же самое, что SHA3-256 — они по-разному дополняются и дают разные хеши, — поэтому проверенная реализация подгружается только при запуске проверки, а не при каждой загрузке страницы. Адрес, записанный целиком в верхнем или нижнем регистре, вообще не несёт контрольной суммы; в этом случае страница так и сообщает, вместо того чтобы намекать на гарантию, которую не может дать.
Означает ли действительный адрес, что средства дойдут?
Нет. Действительность — это свойство строки. Отслеживается ли адрес, относится ли он к той сети, из которой вы отправляете, и принадлежит ли он нужному получателю, — все эти вопросы отдельные, и ни одна офлайн-проверка их не решает.
Почему Base58 пропускает некоторые символы?
Ноль, заглавная O, заглавная I и строчная l исключены, потому что их легко перепутать друг с другом. Их отсутствие означает, что неоднозначное прочтение не может незаметно превратиться в другой действительный адрес.
Что такое hex-форма адреса TRON?
Те же 21 байт полезной нагрузки, записанные в hex: 41, за которым следуют 40 шестнадцатеричных символов. TVM использует эту форму внутренне, а кошельки показывают форму Base58Check. У hex-формы нет контрольной суммы, поэтому проверять в ней нечего.
Является ли адрес контракта действительным адресом?
Да, по любой проверке формата. На TRON и на EVM-блокчейнах адреса контрактов и адреса кошельков неразличимы по форме. Отправка депозита на контракт токена проходит проверку и всё равно приводит к потере средств — именно поэтому проверка адреса является проверкой формата, а не проверкой безопасности.