Доказательство работы: майнинг и настройка сложности
Реализуйте майнер PoW и разберитесь в поиске одноразового числа и целевой сложности
«Доказательство работы: майнинг и настройка сложности» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Цепочки хешей и связывание блоков
- Деревья Меркла: целостность транзакций в большом масштабе
- Доказательство работы: майнинг и настройка сложности
- Скрипт Bitcoin и проверка подписей UTXO