Хеш-обязательство: как зафиксировать условия сделки, не раскрывая их
Как криптографический хеш (keccak256) позволяет записать в блокчейн отпечаток договора, не публикуя сам текст, и почему подменить документ становится невозможно.
В этой статье
Представьте, что вы запечатали договор в конверт, а на конверте поставили печать, которую невозможно подделать. Содержимое никто не видит, но любой может проверить: конверт вскрывали или нет, и тот ли это документ. Хеш-обязательство - криптографический аналог такого конверта.
Что такое хеш
Хеш-функция превращает любые данные - слово, абзац, файл на 100 мегабайт - в строку фиксированной длины. В Ethereum используется keccak256: на выходе всегда 32 байта, записанные как 66 символов вида 0x7f3a9c2e…4b8d1a.
Три свойства делают хеш пригодным для фиксации условий:
- Детерминированность. Одни и те же данные всегда дают один и тот же хеш.
- Лавинный эффект. Изменение одного символа меняет хеш до неузнаваемости. «Оплата 1000» и «Оплата 1001» дают совершенно разные отпечатки.
- Односторонность. По хешу невозможно восстановить исходный текст и, что важно, нельзя подобрать другой документ с таким же хешем.
Как это работает в сделке
- Стороны договариваются об условиях - где угодно: в мессенджере, по почте, голосом.
- Составляют документ с условиями.
- Сервис вычисляет его хеш в вашем браузере - сам документ никуда не отправляется.
- Хеш записывается в блокчейн вместе со сделкой. Документ в сеть не попадает: содержание сделки остаётся приватным.
- Контракт требует, чтобы вторая сторона при принятии передала тот же самый хеш. Если она видит другой документ, её хеш будет отличаться, и транзакция откатится.
- При споре любая сторона отдаёт документ гаранту, тот считает хеш и сверяет с тем, что записан в сделке. Совпало - документ подлинный.
Последний пункт - главная ценность механизма: ни одна из сторон не может подменить условия задним числом. Даже взломанный интерфейс не покажет покупателю и продавцу разные тексты и не проведёт сделку: принимающий сторону подписывает именно тот хеш, который видит.
Нормализация текста: почему «тот же» текст даёт разный хеш
Для компьютера «Привет» и «Привет␠» (с пробелом в конце) - разные данные. Поэтому скопированный из Word текст и набранный вручную могут дать разные хеши, хотя на глаз они одинаковы. Источников расхождений несколько:
- Переводы строк. Windows использует
CRLF, Linux и macOS -LF. - Неразрывные пробелы. Word и мессенджеры любят подставлять особые пробелы, которые выглядят как обычные.
- Хвостовые пробелы в конце строк.
- Формы Unicode. Буква «й» может быть записана одним символом или двумя («и» плюс знак «краткая»). Выглядят идентично.
Чтобы всё сошлось, текст перед хешированием приводится к каноническому виду:
- Unicode приводится к форме NFC.
- Все переводы строк становятся
\n. - Неразрывные и экзотические пробелы заменяются обычным.
- Пробелы в конце каждой строки убираются.
- Пустые строки в начале и конце отбрасываются.
Затем нормализованный текст кодируется в байты UTF-8, и от них считается keccak256. Эти правила обязаны совпадать у покупателя, продавца, гаранта и любого сервиса, проверяющего хеш, - иначе сверка не сойдётся. Поэтому они зафиксированы в контрольных тестовых векторах.
А если это файл
Для файла - PDF, изображения, архива - нормализация не применяется. Хешируются байты файла как есть. Любое «улучшение» файла (пересохранение, сжатие, добавление метаданных) меняет байты и ломает проверку. Передавайте файл неизменным.
Чего хеш не даёт
Важно понимать границы.
Он не доказывает, что условия справедливы или выполнены. Хеш подтверждает только тождественность документа: тот самый ли текст зафиксировали стороны. Кто прав в споре, решает гарант.
Он не скрывает короткие, предсказуемые тексты. Хеш нельзя «развернуть», но можно перебирать варианты. Если условия - «Куплю iPhone за 500 USDT» и больше ничего, злоумышленник может перебрать похожие тексты, сравнивая хеши, и догадаться о содержании. Для длинных уникальных договоров это нереально, но для коротких фраз стоит добавить случайную строку - «соль».
Он не хранит сам документ. Потерянный файл не восстановить из хеша. Сервис хранит только отпечаток, а документ - у вас и у второй стороны. Скачайте и сохраните его сразу. Без документа гарант не сможет вам помочь.
Время тоже зафиксировано
Хеш записывается в блокчейн с отметкой времени блока. Это означает, что к моменту создания сделки документ уже существовал - вы доказываете не только содержание, но и «не позже какого момента» он был.
Где это применяется ещё
Та же идея - основа множества технологий: проверка целостности файлов при скачивании, подписи в Git-коммитах, дерево Меркла в блокчейне, commit-reveal в голосованиях и аукционах. Если вы разработчик, как это выглядит на уровне байтов, можно посмотреть в статье про кодирование данных в ABI.
Практические советы
- Описывайте условия конкретно: что, в каком виде, в какой срок, по каким признакам считается выполненным.
- Не меняйте файл после вычисления хеша: даже одна запятая изменит отпечаток.
- Скачивайте документ из сервиса и храните копию.
- Отправьте второй стороне и документ, и отпечаток - она сверит до принятия.
- Для коротких текстов добавьте случайную строку.
Что почитать дальше
Хеш закрепляет текст, но сам текст нужно уметь написать: как писать условия сделки. Затем посмотрите готовые примеры: фриланс-проект, физические товары, домен и цифровые товары. Для тех, кто готов заглянуть под капот, - мультиподпись и таймлок и затем аккаунты Ethereum.
Читайте также
- 2 · Практика
Как писать условия сделки, которые защитят обе стороны
Практика составления условий: что указать, как описать результат и сроки, критерии приёмки, типичные ошибки и шаблоны для услуг, товаров и цифровых активов.
3 мин чтения - 1 · Основы
Хеш-функции простыми словами: отпечаток данных, который нельзя подделать
Что такое хеш-функция, какими свойствами она обладает, зачем нужна в блокчейне, чем keccak256 отличается от SHA-256 и где вы встречаетесь с хешами каждый день.
3 мин чтения
Упоминается в статьях
- Хеш-функции простыми словами: отпечаток данных, который нельзя подделать
- Эскроу: как работает сделка с гарантом
- Мошенничество в P2P-сделках: 10 красных флагов
- Словарь терминов: блокчейн, кошельки, смарт-контракты и эскроу от A до Я
- Жизненный цикл сделки: от оферты до выплаты шаг за шагом
- Как устроен арбитраж в эскроу: стимулы, тупики и защита от злоупотреблений
- Как выбрать гаранта: критерии, ставки и красные флаги
- Как готовиться к спору: какие доказательства собирать и как их оформить
- Как писать условия сделки, которые защитят обе стороны
- Сценарий: фриланс-проект на 1500 USDC с оплатой по этапам
- Деревья Меркла и доказательства: как проверять миллионы данных одним хешем
Готовы попробовать?
Создайте первую сделку за пару минут. Деньги блокируются в смарт-контракте и выплачиваются по правилам, которые видны заранее.

