Hashcash — система доказательства работы, разработанная криптографом Адамом Бэком в 1997 году. Первоначально создавалась для борьбы со спамом, но заложила концептуальный фундамент для консенсуса Накамото в сети Биткоин.
Контекст: проблема спама
К середине 1990-х годов с ростом популярности электронной почты резко возрос объём спама. Отправить миллион писем практически ничего не стоило — это был классический пример «трагедии общих ресурсов». Исследователи IBM Синтия Дворк и Мони Наор ещё в 1992 году предложили концепцию «ценообразования через вычисления»: заставьте каждого отправителя доказать, что он затратил вычислительный ресурс, и спам перестанет быть экономически выгодным.
Что такое Hashcash
В марте 1997 года Адам Бэк опубликовал в списке рассылки шифропанков описание Hashcash — конкретной реализации Proof of Work на основе хэш-функций.
Принцип работы
- Метаданные письма (адрес отправителя, адрес получателя, время) формализуются в стандартный формат.
- К ним добавляется нонс — произвольное число.
- Все данные хэшируются (SHA-1 в исходном Hashcash, SHA-256 в Биткоине).
- Хэш должен начинаться с определённого количества нулей (например, 20 нулей в двоичном представлении).
- Если хэш не удовлетворяет условию — нонс изменяется, хэширование повторяется.
- Найденный «правильный» нонс прикладывается к письму как марка.
Получатель проверяет хэш мгновенно (один вызов функции). Отправитель тратит секунды или минуты, перебирая нонсы. Спамер, рассылающий миллионы писем, сталкивается с пропорционально огромными затратами времени.
Ключевые свойства
- Асимметрия: создание хэша дорого, проверка — мгновенна.
- Случайность: более быстрый компьютер выигрывает чаще, но не всегда — это лотерея, а не детерминированная головоломка. Именно это делает систему честной.
- Независимость: каждое письмо требует нового Proof of Work (нонс специфичен для каждого конкретного письма).
От Hashcash к Биткоину
Сатоши Накамото прямо сослался на Hashcash в белой книге Биткоина. Ключевые заимствования:
| Hashcash | Биткоин |
|---|---|
| Хэш заголовка письма | Хэш заголовка блока |
| Нонс | Нонс в заголовке блока |
| Фиксированное число нулей | Целевое значение (target) |
| Ручная настройка сложности | Автоматическая корректировка сложности |
| Борьба со спамом | Консенсус и безопасность сети |
См. также: корректировка сложности.
Ключевые улучшения Сатоши:
- Корректировка сложности: целевое значение автоматически пересчитывается каждые 2016 блоков, поддерживая ~10-минутный интервал.
- Накопленный PoW: валидна та цепочка, на которую затрачено больше всего совокупной работы.
- Вознаграждение: майнеры получают биткоины — стимул для участия.
Основа: Генезис-файлы. Часть II: Hashcash.
Адам Бэк
Адам Бэк — британский криптограф, шифропанк, автор Hashcash. Получил докторскую степень по криптографии в 1996 году. Активный участник списка рассылки шифропанков в 1990-х. Сегодня возглавляет компанию Blockstream.