Що таке EIP-55: контрольна сума адрес Ethereum

EIP-55 — стандарт контрольної суми для адрес Ethereum, який кодує перевірку в регістрі літер шістнадцяткового рядка.

Адреса Ethereum — це 20 байтів, записаних 40 шістнадцятковими символами з префіксом 0x. Спочатку в такій адресі не було контрольної суми: помилка в одному символі давала іншу, але цілком валідну адресу, і кошти безповоротно зникали. EIP-55 запропонував витончене рішення без зміни формату.

Алгоритм такий: беруть адресу в нижньому регістрі без 0x, обчислюють від неї хеш keccak-256 і проходять по символах. Якщо символ — літера (a–f), а відповідна шістнадцяткова цифра хешу дорівнює 8 або більше, літеру записують великою, інакше — малою. Цифри не змінюються. Виходить адреса на кшталт 0xAbC…, де регістр і є контрольною сумою.

Гаманці й бібліотеки (ethers, viem, web3) перевіряють регістр: якщо адреса змішаного регістру не проходить EIP-55, її відхиляють. Але адреса повністю в нижньому чи верхньому регістрі вважається адресою без контрольної суми і приймається як є. Тому зберігати й показувати адреси варто в checksum-форматі, а порівнювати — без урахування регістру.

EIP-55 захищає від випадкових опечаток, але не від підміни. Якщо шкідливе ПЗ чи атака address poisoning підсунули чужу адресу, вона матиме правильну контрольну суму. Крім того, EIP-55 однаково працює в Ethereum і BNB Smart Chain, тож не допоможе відрізнити мережу.

Moonvex показує EVM-адреси в checksum-форматі EIP-55 і разом з назвою мережі, щоб клієнт міг перевірити адресу й не сплутав Ethereum з BSC.

Правила роботи з EVM-адресами в коді

  • Валідуйте адресу бібліотекою, яка перевіряє EIP-55.
  • Зберігайте адресу в checksum-форматі.
  • Порівнюйте адреси після приведення до одного регістру.
  • Не вважайте коректну контрольну суму доказом, що адреса «своя».

Часті запитання

Чи можна надіслати кошти на адресу в нижньому регістрі?

Так, це та сама адреса, просто без перевірки контрольної суми. Гаманець прийме її, але опечатку не помітить.

Чому гаманець пише «invalid checksum»?

Адреса має змішаний регістр, який не відповідає EIP-55. Найімовірніше, у ній помилка — скопіюйте адресу ще раз з джерела.

Чи працює EIP-55 у BNB Smart Chain?

Так, BSC використовує той самий формат адрес і ту саму контрольну суму, що й Ethereum.

Де це знадобиться

Пов’язані терміни

Почніть приймати оплату вже сьогодні

Обліковий запис і перший проєкт за хвилину, без абонентської плати.

Створити обліковий запис