К основному содержанию
T TON Adoption
← Словарь
NODE/03 · Term

Хэш

Результат однонаправленной функции, превращающей произвольный объём данных в строку фиксированной длины. В TON повсеместно используется SHA-256: хэши идентифицируют ячейки, блоки, транзакции и используются в подписях.

Синонимы: hash, хеш, hash-функция

Хэш (hash) — это строка фиксированной длины, получаемая из произвольных данных через специальную функцию. В TON это почти всегда SHA-256, выдающая 256 бит (32 байта). Хэш-функция криптографически безопасна: маленькое изменение входа меняет весь хэш, и подобрать вход под заданный выход вычислительно невозможно.

Свойства криптографического хэша

  • Детерминированность. Один и тот же вход всегда даёт один и тот же выход.
  • Быстрота вычисления. SHA-256 от мегабайта данных считается за миллисекунды на любом устройстве.
  • Лавинный эффект. Изменение одного бита на входе меняет в среднем половину битов на выходе.
  • Сопротивление прообразу. По хэшу невозможно восстановить вход.
  • Сопротивление коллизиям. Невозможно (за реальное время) найти два разных входа с одинаковым хэшем.

Где встречается в TON

  • Cell hash. Каждая ячейка (cell) в TON идентифицируется по её хэшу. Это позволяет ссылаться на сложные структуры данных компактно.
  • Адрес кошелька. address = workchain : hash(StateInit) — то есть адрес TON-кошелька буквально является хэшем от кода контракта вместе с публичным ключом.
  • Block hash. Каждый блок в masterchain и shardchain имеет свой хэш, формирующий цепочку связанных блоков.
  • Transaction hash. Уникальный идентификатор транзакции — её хэш, по нему ищут в Tonscan/Tonviewer.
  • Merkle proof. Доказательства принадлежности (lite-клиенты используют его, чтобы убедиться в существовании транзакции, не имея полного состояния сети) построены на иерархии хэшей.

Типичная запись

В TON хэши обычно отображаются в hex (a1b2c3…, 64 hex-символа) или в base64. Адреса в формате EQ/UQ — это, по сути, base64-обёрнутый хэш + workchain + контрольная сумма + флаги.

Где не помогает

Хэш не зашифровывает — он только сжимает с потерей. Хранить пароль как простой SHA-256(password) небезопасно: радужные таблицы и GPU-перебор находят такие хэши быстро. Для паролей нужны замедляющие функции: scrypt, Argon2, PBKDF2 (последняя как раз используется в BIP-39 на этапе seed → master seed).

См. также