В Bitcoin есть два занятия, которые часто путают: проверка информации в блокчейне и участие в создании новых блоков....
Хотя оба занятия важны для работы системы, это не одно и то же.
Полный узел проверяет данные. Майнер участвует в соревновании за право создавать блоки.
Но это различие заслуживает более точного объяснения...
КАКУЮ РОЛЬ ВЫПОЛНЯЕТ КАЖДЫЙ ИЗ НИХ?
Полный узел использует запущенное на нём программное обеспечение, чтобы проверять, соответствуют ли блоки и транзакции правилам протокола.
Его основная функция — не поиск новых блоков, а поддержание представления о блокчейне, построенного на информации, которую он может проверять самостоятельно.
Майнер же участвует в процессе, в ходе которого в Bitcoin пытаются добавить новый блок.
Для этого майнер работает с кандидатом в блок — предложенным блоком, который ещё не добавлен в цепочку.
Для этой предложенной версии выполняется множество криптографических вычислений, чтобы найти результат, удовлетворяющий условиям Bitcoin.
Этот механизм называется Proof of Work, или доказательством выполнения работы... Позже мы подробно разберём эту процедуру.
Сейчас важно понять, что майнер выполняет работу, цель которой — создать блок, который можно представить сети.
ЧТО ПРОИСХОДИТ, КОГДА МАЙНЕР НАХОДИТ ПОДХОДЯЩИЙ РЕЗУЛЬТАТ?
Предположим, что майнер находит доказательство выполнения работы, соответствующее целевому значению для его кандидата в блок.
Этот результат позволяет представить блок сети Bitcoin, чтобы другие участники могли его проверить.
Но само по себе нахождение доказательства выполнения работы не гарантирует, что блок будет принят.
Получившие его полные узлы проверяют, соответствует ли он установленным правилам.
Если блок нарушает какое-либо правило консенсуса, узлы, применяющие эти правила, не признают его допустимым — независимо от вычислительных усилий, затраченных на его создание.
Поэтому создание блока и его проверка — это разные обязанности....
ОБЯЗАН ЛИ МАЙНЕР ЗАПУСКАТЬ СОБСТВЕННЫЙ ПОЛНЫЙ УЗЕЛ?
Не обязательно. Это различие особенно важно.
Майнер может запустить собственный полный узел, чтобы получать проверенную информацию и подготавливать кандидаты в блоки.
Но можно также участвовать в майнинге через объединения, известные как mining pools, или пулы для майнинга.
В таких объединениях множество участников предоставляют вычислительные мощности, а определённые задачи, например подготовка кандидатов в блоки, обычно координирует оператор пула.
Таким образом, можно предоставлять вычислительные мощности майнинговой операции, не управляя лично полным узлом.
Точно так же можно запустить полный узел, не выделяя ресурсы на майнинг.
Это показывает, что речь не обязательно идёт о двух разных типах компьютеров, а о двух функциях, которые можно выполнять раздельно или совмещать в рамках одной операции.
ПОЧЕМУ ВАЖНО РАЗЛИЧАТЬ ЭТИ ФУНКЦИИ?
Это помогает понять, как в Bitcoin связаны создание и проверка блоков.
Майнинг обеспечивает вычислительную работу, необходимую для участия в конкуренции за добавление новых блоков.
Полные узлы, в свою очередь, позволяют независимо проверять, соответствуют ли эти блоки правилам системы.
Майнинговая операция может располагать огромными вычислительными мощностями, но это не даёт ей права навязывать узлам сети недопустимые блоки.
Запуск полного узла также не означает автоматического участия в создании блоков.
Это разные виды деятельности с различными техническими обязанностями, которые дополняют друг друга в работе Bitcoin.
Их взаимосвязь можно выразить простой фразой:
МАЙНЕР СТРЕМИТСЯ СОЗДАТЬ ДОПУСТИМЫЙ БЛОК. ПОЛНЫЙ УЗЕЛ ПРОВЕРЯЕТ, СООТВЕТСТВУЕТ ЛИ ОН ПРАВИЛАМ, ЧТОБЫ ЕГО ПРИНЯТЬ.
Итак, мы знаем, что майнеры работают с кандидатами в блоки и что в них может содержаться множество транзакций.
Но прежде чем понять, как эти операции отбираются и упорядочиваются в блоке, нужно ответить на более простой вопрос:
Что именно представляет собой транзакция в Bitcoin и какую информацию она передаёт, когда один человек отправляет BTC другому?
Это будет наш следующий шаг: ПОНИМАНИЕ СТРУКТУРЫ ТРАНЗАКЦИИ....
