Крипто
Лидеры роста и падения
Словарь⁠,
0

Адрес Ethereum с контрольной суммой. Зачем нужны заглавные буквы

Checksum-адреса Ethereum. Зачем в одном адресе большие и маленькие буквы
В адресе Ethereum заглавные и строчные буквы могут чередоваться не случайно. Такой регистр помогает обнаружить часть ошибок еще до отправки криптовалюты.

Адрес Ethereum состоит из 40 шестнадцатеричных символов после 0x. Буквы a–f технически можно записать и строчными, и заглавными, не меняя сам набор байтов адреса. Стандарт ERC-55, который часто называют EIP-55, использует регистр как контрольную сумму. Для каждого адреса рассчитывается, какие буквы должны быть заглавными, а какие строчными.

Если пользователь случайно изменит символ, контрольная комбинация с большой вероятностью перестанет совпадать.

Как работает контрольная сумма Ethereum

Сначала адрес переводится в нижний регистр, после чего для него рассчитывается криптографический хеш Keccak-256. Дальше отдельные значения из этого хеша определяют регистр букв a–f в исходном адресе. Так появляется смешанная запись, в которой заглавные буквы несут дополнительную проверочную информацию.

Например, полностью строчный адрес — 0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed в формате ERC-55 выглядит так — 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed. Для Ethereum это один и тот же адрес. Во втором варианте регистр позволяет дополнительно проверить, не была ли строка изменена.

Насколько хорошо ERC-55 ловит ошибки

В среднем в адресе получается около 15 контрольных битов. Вероятность того, что случайно измененная строка все равно пройдет проверку регистра, оценивается примерно в 0,0247%. Это не полноценная защита от любой ошибки, но она заметно снижает вероятность незаметной опечатки при ручном вводе или копировании адреса.

Контрольный регистр нужен прежде всего для того, чтобы обнаружить такую ошибку до отправки средств.

Можно ли написать адрес только строчными буквами

Полностью строчный Ethereum-адрес указывает на тот же адрес в сети и обычно принимается кошельками и сервисами. Но проверить адрес по ERC-55 в таком виде уже нельзя. Информация, зашитая в регистр букв, теряется. Поэтому смешанная запись дает дополнительную возможность обнаружить ошибку, которой нет у полностью строчного варианта.

Что значит Invalid address checksum

Типичный сценарий выглядит так: пользователь вставляет Ethereum-адрес в кошелек и получает ошибку Invalid address checksum или bad address checksum. Обычно это означает, что адрес записан смешанным регистром, но сочетание заглавных и строчных букв не соответствует ERC-55.

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

В библиотеке ethers.js используется похожая логика: полностью строчный адрес может быть преобразован в контрольный формат, а смешанная запись с неправильной контрольной суммой вызывает ошибку.

От чего контрольная сумма не защищает

ERC-55 может заметить ошибку в записи адреса, но ничего не знает о его владельце. Мошенник способен создать совершенно корректный адрес с правильной контрольной суммой. Если пользователь скопировал чужой реквизит без единой опечатки, ERC-55 сочтет его правильным.

По той же причине контрольная сумма не защищает от подмены адреса вредоносной программой или от отправки денег не тому получателю. Она не проверяет и выбранный блокчейн. Один и тот же 0x-адрес может использоваться в Ethereum и других EVM-совместимых сетях. Правильный регистр не означает, что при выводе выбрана нужная сеть.

Как проверить Ethereum-адрес перед переводом

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

Перед отправкой стоит отдельно проверить получателя и выбранную сеть. ERC-55 решает только одну задачу — помогает обнаружить часть ошибок в записи самого Ethereum-адреса до перевода средств.

Авторы
Теги
Денис Давыдов-Громадин
Прямой эфир
Ошибка воспроизведения видео. Пожалуйста, обновите ваш браузер.
Лента новостей
Все новости Крипто
Инвесторы выбрали ликвидность: как денежный рынок обогнал фонды облигаций Инвестиции, 19:19
Токаев призвал к заморозке конфликта на Украине и началу переговоров Политика, 19:16
Аналитики «Синары» предсказали рост дивидендов на 40% в 2027 году Инвестиции, 19:14
Токаев назвал Путина наиболее приемлемым для Европы лидером России Политика, 19:10
Слюсарь сообщил о введении режима ЧС в пострадавшем от БПЛА Азове Политика, 19:06
В разные корзины: как сберечь накопления в период турбулентности РБК и Сбер, 19:03
Бразильский футболист сделал бестселлером на родине повесть Толстого Спорт, 19:01
Работающий полицейским боец UFC сравнил заработки на службе и в ММА Спорт, 18:44
В Москве подписали соглашение о запуске виртуальной «Тройки» для бизнеса Город, 18:40
Кремль высказался об организации возможной встречи Путина, Трампа и Си Политика, 18:34
АвтоВАЗ заявил о подготовке для работы в такси Lada Azimut Авто, 18:20
В США подтвердили отмену шоу Уэста в России. Ответы на вопросы о билетах Общество, 18:13
Летняя экспедиция в восточную Арктику в фотографиях и видео РБК и УК Первая, 18:13
ЦБ оставил курс доллара на 30 сентября выше ₽84 Инвестиции, 18:10
Главное Курсы