Люди все больше обеспокоены и заинтересованы в экологическом воздействии майнинга биткойнов, безопасности и степени децентрализации базовой модели и даже потенциальном влиянии прорыва в квантовых вычислениях на будущее биткойна и других криптовалют.
Часто доказательство работы описывается как "криптографическая головоломка", но что это за головоломка на самом деле?
Для того, чтобы действительно понять эти вопросы (и любые возможные ответы), вам нужно иметь фундаментальное понимание самого майнинга биткойнов и его эволюции.
Почему майнинг работает: криптографическое одностороннее хэширование
Блокчейн биткойн часто описывается как база данных, которая криптографически защищена и, следовательно, неизменна. Основная технология, которая обеспечивает эту неизменность и безопасность, – это криптографическое хэширование.
Криптографическая хэш-функция-это математическая функция, которая, проще говоря, принимает любые входные данные и отображает их в строку фиксированного размера.
Однако есть четыре специальных свойства этих функций, которые делают их неоценимыми для сети биткойнов. Они являются:
1) Детерминированный — для любого входа в криптографическую хэш-функцию результирующий выход всегда будет одним и тем же.
2) Быстрое вычисление выход хэш-функции, учитывая любые входные данные, является относительно быстрым процессом (не требует тяжелых вычислений).
3) Unique – каждый вход в функцию должен приводить к совершенно случайному и уникальному выходу (другими словами, никакие два входа не приводят к одному и тому же выходу).
4) Необратимый – учитывая выход хэш-функции, исходный вход не может быть получен.
Эти правила обеспечивают основу, которая позволяет майнинг биткойнов для защиты сети.
В частности, создатель Биткойн Сатоши Накомото решил использовать хэш-функцию SHA-256 в качестве основы для майнинга биткойнов. Это специфическая криптографическая хэш-функция, которая была математически доказана для хранения вышеуказанных свойств. Он всегда выводит 256-битное число (самая базовая единица вычисления), которое обычно представлено в шестнадцатеричной системе счисления с 64 символами для удобства чтения человеком.
Выходные данные функции SHA-256 обычно называются хэшем ее входных данных.
Достаточно интересно, что в большинстве мест, где хэширование используется в протоколе Bitcoin, используется двойное хэширование. Это означает, что вывод исходной функции SHA-256 затем помещается обратно в функцию SHA-256 для получения другого вывода.
Двойное хэширование используется для защиты от атак на день рождения. Атака на день рождения-это сценарий, в котором злоумышленник может создать тот же хэш, что и другие входные данные, используя совершенно другой вход (называемый столкновением ). Это нарушает третье свойство уникальности. Без него два совершенно разных блока биткойнов могут быть представлены одним и тем же хэшем, что позволяет злоумышленникам потенциально переключать блоки.
С помощью функции SHA-256 вероятность того, что эта атака произойдет, бесконечно мала. Если бы это не было почти невозможно, SHA-256 считался бы сломанным.
Однако, другие хэш-функции были "сломаны" в прошлом. Для того, чтобы обезопасить себя от того, что произойдет с SHA-256 в будущем (и эффективно нарушить модель безопасности биткойна), лучше всего хэшировать хэш . Это вдвое снижает вероятность возникновения столкновения, что делает протокол намного более безопасным.
На очень высоком уровне, биткойн майнинг-это система, в которой все биткойн-транзакции отправляются Биткойн-майнерам. Майнеры выбирают одну мегабайтную сумму транзакций, объединяют их в качестве входных данных в функцию SHA-256 и пытаются найти конкретный выход, который принимает сеть. Первый майнер, который найдет этот вывод и опубликует блок в сети, получает вознаграждение в виде комиссии за транзакцию и создание нового биткоина.
Давайте сделаем еще один шаг вперед и погрузимся в сам блокчейн биткойна, чтобы увидеть, что именно майнеры делают, чтобы сделать сеть безопасной.
Майнинг биткоинов: техническое введение
Майнинг был представлен как решение проблемы двойных затрат. Если у меня есть 1 биткойн, и я отправляю его Бобу, а затем пытаюсь отправить тот же биткойн Алисе, сеть гарантирует, что будет принята только одна транзакция. Он делает это с помощью хорошо известного процесса, называемого майнингом.
Заглянуть внутрь блока
Блок биткоинов состоит в основном из двух компонентов:
1. Транзакции, выполненные в виде дерева Меркла
Компьютеры для майнинга собирают достаточное количество транзакций, чтобы заполнить блок и связать их в дерево Меркла.
Дерево Меркла – это относительно простая концепция: транзакции лежат в нижней части дерева в виде листьев и хэшируются с помощью функции SHA-256. Комбинация двух листовых транзакций снова хэшируется с помощью функции SHA-256, чтобы сформировать родительский элемент листьев. Этот родитель непрерывно хэшируется вверх в сочетании с другими родителями хэшированных транзакций, пока не будет создан один корень. Хэш этого корня фактически является уникальным представлением транзакций, которые находятся под ним.
Корень дерева merkle – это комбинация хэшей каждой транзакции в дереве.
Напомним, что для любого любого входа в хэш-функцию выход полностью уникален. Поэтому, как только большинство узлов в сети получают добытый блок, корень хэша дерева merkle действует как неизменяемая сводка всех транзакций в этом данном блоке.
Если злоумышленник попытается изменить содержимое транзакции в блоке, его хэш будет изменен. Это изменение хэша будет распространяться вверх по дереву merkle транзакции, пока хэш корня не будет изменен. Любой узел может затем быстро поймать это вредоносное действие, сравнивая корень дерева merkle измененного блока с корнем дерева merkle допустимого блока.
2. Заголовок блока
Заголовок блока представляет собой сводку содержимого самого блока. Он содержит следующие шесть компонентов:
- Версия программного обеспечения, на котором работает биткойн-клиент
- Временная метка блока
- Корень содержащего его дерева транзакций merkle
- Хэш блока перед ним
- Одноразовый номер
- Цель
Помните, что корень дерева транзакций merkle действует как эффективная сводка каждой транзакции в блоке без необходимости смотреть на каждую транзакцию.
Хэш предыдущего блока перед ним позволяет сети правильно разместить блок в хронологическом порядке. Именно отсюда происходит термин блокчейн — каждый блок прикован к предыдущему блоку.