Хэш
Результат однонаправленной функции, превращающей произвольный объём данных в строку фиксированной длины. В 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).