Cryptology Academy · Урок

Доказательство работы: майнинг и настройка сложности

Реализуйте майнер PoW и разберитесь в поиске одноразового числа и целевой сложности

Урок 3 из 413 шагов

«Доказательство работы: майнинг и настройка сложности» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Что такое доказательство выполнения работы

Доказательство выполнения работы (PoW) требует, чтобы создатель блока выполнил вычислительно затратную задачу для добавления блока. Это препятствует спаму и делает переписывание цепочки дорогим. Проверка доказательства дёшева — достаточно одного хеша. Для выполнения работы требуется множество вычислений хеша.

Задача майнинга

PoW Биткоина: найдите такое значение nonce, чтобы SHA256d(block_header) < target. Целевое значение — 256-разрядное число. Чем меньше target, тем больше ведущих нулей требуется в результате хеширования, поэтому подходящие значения nonce встречаются реже и находятся труднее.

Демонстрация PoW на Python

import hashlib def mine(data, difficulty): target = "0"*difficulty nonce = 0 while True: h = hashlib.sha256(f"{data}{nonce}".encode()).hexdigest() if h.startswith(target): return nonce, h nonce += 1 nonce, h = mine("block data", 4) print(nonce, h) # hash starts with "0000"

Целевое значение сложности

Заголовок блока Биткоина содержит поле «bits», кодирующее текущее целевое значение. Target = coefficient * 256^(exponent-3). Пример: bits=0x1703a30c → target = 0x03a30c * 2^(8*(0x17-3)) — 256-разрядное число, для которого требуется примерно 72 ведущих нулевых бита.

Корректировка сложности

Биткоин корректирует сложность каждые 2016 блоков (примерно раз в 2 недели). Корректировка целевого значения: new_target = old_target * (actual_time / 2016 * 10 minutes). Если блоки находили быстрее, чем за 10 минут в среднем, target уменьшается, и задача усложняется. Если медленнее, target увеличивается, и задача упрощается. Это поддерживает среднее время создания блока около 10 минут.

Хешрейт и безопасность

Хешрейт сети (H/s) измеряет общую мощность майнинга. Чем выше хешрейт, тем меньше вероятность случайно найти подходящее значение nonce за единицу времени. Чтобы переписать k блоков, злоумышленнику требуется более 50% хешрейта сети, поддерживаемого в течение времени, пропорционального k*10 минутам.

Атака 51%

Имея более 50% хешрейта, злоумышленник может: (1) добывать тайное ответвление цепочки, (2) включать или исключать транзакции, (3) совершать двойную трату, публикуя более длинную цепочку после подтверждения платежа. Он не может: красть чужие монеты, создавать монеты из ничего или отменять транзакции, находящиеся глубоко в цепочке.

Майнинг на ASIC и централизация

Майнинг Биткоина с SHA256d контролируется ASIC (интегральными схемами специального назначения) — микросхемами, оптимизированными для одной хеш-функции. ASIC в 10^6 раз эффективнее CPU. Это сосредотачивает майнинг в крупных центрах обработки данных и усиливает опасения по поводу централизации.

PoW с высокой потребностью в памяти

Эфириум использовал Ethash (теперь устаревший) — PoW с высокой потребностью в памяти, требующий большого набора данных DAG. Высокие требования к памяти противодействуют ASIC, поскольку пропускную способность памяти трудно дёшево оптимизировать. Monero использует RandomX (оптимизированный для CPU и устойчивый к ASIC). Zcash использует Equihash (с высокой потребностью в памяти).

Эгоистичный майнинг

Стратегия эгоистичного майнинга: удержать найденный блок, добыть второй блок, а затем одновременно опубликовать оба. Если правильно выбрать время, честные майнеры потратят вычислительные ресурсы на осиротевший блок. Для прибыльности в среднем требуется около 33% хешрейта, а не 51%.

Альтернатива: доказательство доли владения

Доказательство доли владения (PoS, используемое Эфириумом после перехода) заменяет вычисления хеша криптовалютой, внесённой в залог. Валидаторы выбираются для предложения блоков пропорционально их доле. PoS потребляет на 99.95% меньше энергии, чем PoW. Компромисс: другие предположения о доверии и иная экономика атак.

Быстрая проверка

Какую величину старается поддерживать корректировка сложности Биткоина?

Итоги

PoW требует найти такое значение nonce, чтобы SHA256d(header) < target. Сложность корректируется каждые 2016 блоков. Хешрейт в 51% позволяет проводить атаки с двойной тратой. В майнинге Биткоина доминируют ASIC, а функции с высокой потребностью в памяти противодействуют ASIC. Далее: скрипт Биткоина и подписи UTXO.

Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «Доказательство работы: майнинг и настройка сложности» бесплатный?

Да — полный текст урока «Доказательство работы: майнинг и настройка сложности» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Доказательство работы: майнинг и настройка сложности»?

Реализуйте майнер PoW и разберитесь в поиске одноразового числа и целевой сложности Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Доказательство работы: майнинг и настройка сложности»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Цепочки хешей и связывание блоков
  2. Деревья Меркла: целостность транзакций в большом масштабе
  3. Доказательство работы: майнинг и настройка сложности
  4. Скрипт Bitcoin и проверка подписей UTXO
← Назад к Cryptology Academy