Раскрытие тайны майнинга

НовичокJul 15, 2024
Эта статья предоставляет подробное введение в процесс "майнинга" в блокчейне. Путем проведения аналогии с традиционными горнодобывающими работами объясняется основное понятие цифрового майнинга, который включает в себя использование вычислительных ресурсов для решения математических задач для проверки транзакций и выпуска новой валюты.
Раскрытие тайны майнинга

переслать оригинальное название '白话区块链三:揭开挖矿神秘的面纱——挖矿是什么?为什么要挖矿?谁是我们买不起显卡的罪魁祸首?'

Один из самых знакомых концепций, связанных с блокчейном, для всех, вероятно, является майнинг. Многие люди, возможно, много раз слышали о майнинге, но не совсем уверены, в чем он на самом деле заключается. В этом разделе мы прервем наш регулярный режим работы, чтобы сначала представить "майнинг".

краткое повторение содержания из «чистого блокчейна 1: введение в биткойн (пионер блокчейн-революции и вызов суверенной валюте)», где сатоши накамото разработал денежную систему биткойна, связывая вознаграждения за ведение учета с выпуском валюты. Такой подход позволяет автоматизировать выпуск валюты через процесс ведения учета, решая проблему выпуска валюты и одновременно стимулируя ведущих учет.

1. что такое майнинг?

В реальном мире майнинг предполагает, что шахтеры используют различные инструменты для извлечения драгоценных металлов, спрятанных в горных породах, из шахт. Горняки извлекают ценность из этих редких металлов, скрытых в природе, с помощью физического труда.

Для проектов блокчейн с вознаграждениями за ведение учета (обычно это проекты цифровой валюты), сетевые узлы тратят вычислительные ресурсы для решения задач. Как только они находят решение, они упаковывают блок и получают вознаграждение в виде только что выпущенной валюты. Этот процесс аналогичен извлечению драгоценных металлов, таких как золото, из руды, поэтому его обычно называют «майнингом». Здесь ведущими являются майнеры, которые конкурируют в упаковке блоков с помощью оборудования и электроэнергии, что приводит к созданию новой валюты.

2. почему необходим майнинг?

Майнинг выполняет две основные функции: подтверждение недавних транзакций, упаковка их в блоки и привязка к блокчейну, а также выпуск новой валюты в качестве вознаграждения для ведущих бухгалтеров. Ниже приведены подробные функции майнинга:

  1. выбор бухгалтеров: для выбора реальных бухгалтеров из многочисленных кандидатов требуется стратегия. Результат майнинга используется в качестве основы для этого выбора, обеспечивая признание каждой транзакции всеми участниками и достижение консенсуса в сети.
  2. Проверка транзакции: Каждая транзакция биткоина должна быть проверена майнерами в сети. Этот процесс подтверждает действительность транзакции, в том числе:
    • гарантировать соответствие формата и размера транзакции спецификациям.
    • проверка действительности подписи каждой транзакции, чтобы убедиться, что она была инициирована пользователем, обладающим связанным приватным ключом.
    • проверка того, что входная сумма превышает выходную сумму (с частью суммы, взятой в качестве комиссии), убедиться, что токены, используемые для оплаты, не были дважды потрачены.
    • подтверждение того, что транзакция ранее не была включена в блок.
  3. эмиссия новой валюты: майнинг также является способом поступления новых биткоинов в обращение. когда майнер успешно добывает новый блок, он получает определенное количество биткоинов в качестве вознаграждения. Этот механизм вознаграждения не только стимулирует участие людей в майнинге, но и служит методом эмиссии биткоинов. Этот метод эмиссии валюты обеспечивает стабильное и контролируемое увеличение оборота валюты, помогая управлять инфляцией.
  4. стимулирование участия: механизм вознаграждения мотивирует больше людей участвовать в поддержке системы валюты, способствуя ее непрерывному и надежному развитию.
  5. Повышение сетевой безопасности и децентрализации: прибыль от майнинга приводит к большому количеству майнеров, что приводит к распределенной вычислительной мощности. Такая децентрализация гарантирует, что ни одна организация не может контролировать 50% вычислительной мощности, тем самым повышая прозрачность и безопасность системы. Соблюдение принципа самой длинной цепи еще больше повышает безопасность системы.

3. почему майнеры готовы участвовать в майнинге?

майнеры стимулируются к участию в майнинге, потому что они получают значительные вознаграждения за успешную упаковку блока в блокчейн. Эти вознаграждения поступают из двух основных источников:

  • Вознаграждение за блок (вновь выпущенная валюта): Валютная система автоматически выпускает новую валюту, которая полностью достается майнеру. Например, в системе Bitcoin в настоящее время майнеры получают 3,125 биткоина за каждый блок, который они упаковывают. Учитывая, что каждый биткоин оценивается примерно в 65 000 долларов, упаковка одного блока может принести более 200 000 долларов, примерно 1,47 миллиона юаней.
  • оплата комиссий за транзакции пользователями: из-за ограниченной способности блока содержать записи транзакций некоторые пользователи платят комиссии, чтобы стимулировать майнеров отдавать предпочтение их транзакциям для более быстрого подтверждения. при выборе транзакций из пула для включения в блок, майнеры обычно выбирают те, у которых выше комиссии. в блоке может содержаться тысячи транзакций, и все комиссии от этих транзакций идут майнеру, представляя собой еще один значительный источник дохода. по мере того как все больше людей используют биткойн для транзакций, конкуренция за включение в блоки усиливается, что приводит к росту комиссий, которые пользователи готовы платить.

со временем вознаграждения за блок будут уменьшаться (например, из-за механизма половинного сокращения вознаграждения в биткоине, где вознаграждение уменьшается примерно каждые четыре года). В конце концов, после того, как будут добыты все 21 миллион биткоинов, ожидается около 2141 года, автоматическое вознаграждение за блок прекратится существовать, а плата за транзакции станет основным источником дохода для майнеров.

советы

Биткойн генерирует новый блок приблизительно каждые 10 минут. Изначально за каждый новый созданный блок начислялось 50 биткоинов. Эта награда уменьшается вдвое каждые четыре года, и на сегодняшний день уже произошло четыре таких события уменьшения награды. В настоящее время каждый блок генерирует 3,125 биткоинов, и самое последнее уменьшение награды произошло в апреле 2024 года. Следующее уменьшение награды ожидается примерно в 2028 году. К 2141 году биткойн достигнет своего предельного выпуска.

размер комиссии за транзакцию зависит не только от спроса и предложения, но также от размера самой транзакции, поскольку комиссия пропорциональна занимаемому транзакцией месту в блоке.

4. как участвовать в майнинге

Для майнеров участие в майнинге просто. Скачайте клиент цифрового кошелька и нажмите кнопку майнинга внутри клиента, чтобы начать майнить.

для блокчейн-проектов с блок-наградами, алгоритм майнинга обычно записывается в сценарий, интегрированный в кошелек. майнерам просто нужно нажать кнопку, чтобы запустить сценарий.

алгоритм майнинга детерминированный, что означает, что при условии непрерывной работы майнеров с алгоритмом они в конечном итоге получат результат. однако из-за различных вычислительных ресурсов время, необходимое для вычисления этого результата, может различаться среди майнеров. как только узел рассчитает целевое значение, усилия других майнеров в течение этого периода оказываются тщетными, что приводит к отрицательным результатам из-за затраченных физических ресурсов.

чтобы избежать бесполезных усилий, майнеры часто объединяют свои вычислительные ресурсы, присоединяясь к узлу майнингового пула. Этот узел работает как любой другой узел, но обладает значительно большей вычислительной мощностью. Когда пул успешно добывает блок, вознаграждения распределяются среди участвующих майнеров в зависимости от их вклада в вычислительные ресурсы. Важно отметить, что в блокчейне майнером, записанным как упаковщик блока, является узел майнингового пула, в то время как отдельные майнеры получают свою долю вознаграждения, выделенную пулом, а не непосредственно из валютной системы.

Компания bitmain, производящая специализированные высокоэффективные майнинг-чипы, укрепила роль майнинг-пулов, способствуя централизации бухгалтерской мощности.

5. особенности задачи майнинга

У различных блокчейн-проектов могут быть различные задачи для майнинга и уровни сложности. Возьмем, например, биткойн. Алгоритм майнинга, используемый биткойном, называется доказательство работы (Proof of Work, PoW). Суть этого алгоритма заключается в том, что для получения результата необходимо затратить определенное количество работы, чтобы его доказать.

Головоломка майнинга - это не традиционная математическая проблема, а включает в себя поиск случайного числа, известного как nonce. Этот nonce, когда объединен с данными в блоке и обработан через хэш-функцию, должен произвести хэш-значение, которое соответствует определенному условию. Обычно это условие требует, чтобы значение хэша было меньше целевого значения (или, что первые n битов значения хэша равны нулю). Уравнение выглядит следующим образом: хэш (nonce+block_data)≤цель

Bitcoin использует хэш-функцию sha-256, которая преобразует любую длину входных данных в фиксированную длину выходных данных 256 бит (эквивалентно 64 шестнадцатеричным цифрам или 32 байтам). Выходные данные почти случайны, но гарантированно будут одинаковы для одинаковых входных данных. Майнинг включает непрерывное изменение nonce и хэширование данных заголовка блока с использованием sha-256 до тех пор, пока не будет найдено значение хэша, которое соответствует целевому условию.

например, значение хэша sha-256 с первыми 30 битами, равными нулю: 000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110

преобразование этого в шестнадцатеричное значение приводит к значению, начинающемуся с семи нулей: 00000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac90

для упрощения, вероятность нахождения хэша с первыми n битами, равными нулю, составляет 12n\frac{1}{2^n}2n1​. чем больше n, тем больше битов равны нулю, и тем ниже вероятность:

  • n=10n = 10n=10: 1 in 1,024
  • n = 20n = 20n = 20: 1 в 1 048 576
  • n=30n = 30n=30: 1 in 1,073,741,824
  • n=40n = 40n=40: 1 in 1,099,511,627,776
  • n=50: 1 в 1,125,899,906,842,624

при n до 256, поиск такого значения хэша с текущей вычислительной мощностью человечества, за исключением квантовых компьютеров, фактически невозможен до тех пор, пока Земля не перестанет существовать.

Из-за свойств sha-256 единственным методом является грубая сила, которая включает непрерывную попытку различных номеров до выполнения условия. Эта необходимость в высокопроизводительном вычислительном оборудовании и есть причина, по которой для майнинга требуются такие устройства.

поскольку вы не можете предсказать значение хэша, сгенерированное добавлением произвольного числа к данным блока и их обработкой с помощью sha-256, процесс является полностью случайным. например, если целевое значение хэша равно 10 000, вы не сможете узнать, какое произвольное число, объединенное с данными блока, приведет к значению хэша, меньшему 10 000. эта непредсказуемая и случайная природа означает, что майнеры должны перебирать возможности до удовлетворения условия. если несколько значений удовлетворяют условию, выбирается наименьшее значение хэша, поскольку меньшее значение хэша указывает на более высокую сложность и меньшую вероятность возникновения.

Проверить, соответствует ли сгенерированное хэш-значение требованию, очень просто, для этого требуется всего одна операция сравнения. Однако найти хеш-значение, меньшее или равное целевому значению, можно добиться только с помощью перебора. Эта характеристика, при которой проверить результат легко, а найти его сложно, известна как вычислительная асимметрия.

6. симуляция кода алгоритма майнинга

следующий код имитирует процесс майнинга. он начинается с строки данных заголовка блока «geekbang» и инкрементально ищет значение nonce от 10 000 до тех пор, пока не найдет nonce, удовлетворяющий указанному условию.

Вот скрипт Python, демонстрирующий процесс майнинга:

import hashlibdef main():    base_string = "geekbang"    nonce = 10000    count = 0    while true:        target_string = base_string + str(nonce)        pow_hash = hashlib.sha256(target_string.encode()).hexdigest()        count += 1        if pow_hash.startswith("0000"):  # first 4 hex digits are 0, equivalent to the first 16 bits being 0            print("hash:", pow_hash)            print("nonce:", nonce, "scan times:", count)            break        nonce += 1if __name__ == '__main__':    main()

Если требуется, чтобы первые 4 шестнадцатеричные цифры хеш-результата были равны нулю (что эквивалентно нулю первых 16 бит), количество вычислений составляет примерно 58 000. Если увеличить требование до нуля первых 5 цифр, количество вычислений увеличится до 1,23 миллиона. Когда требование состоит в том, чтобы первые 7 цифр были равны нулю, количество вычислений достигает 160 миллионов. Это показывает, что каждый дополнительный ноль в префиксе хэша увеличивает вычисления примерно в 16 раз.

вот результаты для разных целевых условий:

первые 4 шестнадцатеричных символа равны нулю (16 бит):

импорт hashlib

def main():

base_string = "geekbang"nonce = 10000count = 0while true:    target_string = base_string + str(nonce)    pow_hash = hashlib.sha256(target_string).hexdigest()    count = count + 1    if pow_hash.startswith("0000"): # 前4个16进制位是0,相当于前16个比特位是0    print pow_hash    print "nonce: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/51d786353cf4ac886dbb869fc7abf883dac67ceb.png"  scan times: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/4ebdb22f10c27f8797a1c2ae7bbbd78f40220ed4.png"" % (nonce, count)    break    nonce = nonce + 1

если имя== ‘главный‘:

main()

как видно, увеличение требуемого количества ведущих нулей в хэше значительно увеличивает количество необходимых попыток, следуя экспоненциальному росту. это демонстрирует вычислительную сложность и ресурсы, необходимые для майнинга, подчеркивая необходимость высокопроизводительных вычислительных устройств в процессе майнинга.

7. динамическая корректировка сложности

для того чтобы гарантировать генерацию блока примерно каждые 10 минут, система биткойна регулирует сложность майнинга, изменяя количество ведущих нулей, необходимых в значении хэша. этот механизм регулирования сложности является важной частью системы биткойна. он оценивает время, затраченное на генерацию последних 2016 блоков, которое в идеале должно составлять около двух недель. если эти блоки были сгенерированы за время меньшее, чем две недели, сложность увеличивается за счет добавления большего количества ведущих нулей (уменьшение целевого значения). наоборот, если это заняло больше двух недель, сложность уменьшается путем уменьшения количества ведущих нулей (увеличение целевого значения). этот механизм обеспечивает, что время на генерацию блока остается примерно 10 минут, даже при изменении общей хэш-скорости сети.

этот механизм регулирования сложности, разработанный создателем биткоина сатоси накамото, был спланирован с самого начала для автоматической адаптации к общей вычислительной мощности сети. он поддерживает стабильный темп майнинга и предотвращает излишне быстрое выпускание валюты, что может нарушить рыночную экономику.

8. процесс выполнения алгоритма майнинга

У различных проектов блокчейн могут быть различные алгоритмы майнинга. Здесь мы описываем самый известный: алгоритм майнинга биткойна.

процесс выполнения базового майнингового алгоритма биткойна следующий:

  1. выбор транзакций: выберите несколько транзакций из пула памяти (обычно с приоритетом тех, у которых выше комиссия). автоматически сгенерируйте специальную транзакцию (часто называемую транзакцией coinbase), где получателем является майнер, а сумма транзакции составляет вознаграждение за блок плюс все выбранные комиссии за транзакции. поместите эту специальную транзакцию в начало выбранных транзакций, чтобы сформировать набор транзакций для блока, который будет упакован.
  2. построение дерева Меркля: построение дерева хэшей Меркля из набора транзакций. Дерево Меркля - это бинарное дерево, где каждый листовой узел хранит хэш транзакции, уникально идентифицируя и индексируя ее. Каждый верхний узел хранит объединенный хэш своих дочерних узлов, достигая корневого узла. Корневой узел уникально идентифицирует дерево Меркля и, в расширении, все транзакции.
  3. составление заголовка блока: собрать заголовок блока из значения корня Меркля, произвольного числа, версии блока, хэша предыдущего блока, временной метки, целевой сложности и произвольного числа. размер заголовка блока составляет 80 байт.
  4. хеширование заголовка блока: непрерывно изменять значение nonce в заголовке блока и выполнить двойной хэш sha-256 для содержимого заголовка блока (т.е. sha256(sha256(block_header))). сравнить полученный хэш с текущим целевым значением сети. если результат меньше целевого значения (указывающего на то, что первые n бит равны нулю), головоломка решена, и доказательство работы завершено.
  5. трансляция блока: отправка только что добытого блока соседним узлам с информацией о том, что блок был успешно добыт.
  6. проверка и распространение: после получения нового блока другие узлы выполняют двойное хеширование заголовка блока, чтобы получить хеш блока. Они проверяют, что первые n битов хеша блока равны нулю, подтверждают блок, прекращают вычисления для этого блока и распространяют его на свои соседние узлы.

размер каждого поля в заголовке блока следующий:

https://time.geekbang.org/column/article/5963

alt="">

структура Merkle-дерева выглядит следующим образом:

Большой "Back-end" в домашних условиях.]. alt="">

9. контроверсии в майнинге

Основная контроверсия, связанная с майнингом, заключается в алгоритмах доказательства работы (PoW), используемых в Bitcoin и его производных. Эти алгоритмы требуют, чтобы майнеры выделяли значительные вычислительные ресурсы для решения проблем, на которые согласуется сеть. Многие люди работают над этими вычислениями одновременно, но только первый, кто решит проблему, получает вознаграждение. Вычислительные и электрические ресурсы других участников фактически тратятся впустую, не производя дополнительной стоимости.

существует два основных способа оптимизации этого ресурсного отхода:

  1. переход на менее затратные алгоритмы: например, Ethereum перешел с алгоритма PoW на алгоритм доказательства доли (PoS), что значительно снижает потребление ресурсов.
  2. использование неиспользуемых электрических ресурсов: майнинговые узлы экспериментируют с использованием возобновляемых источников энергии, таких как ветровая энергия, для майнинговых операций. еще одним значительным развитием является использование ранее неиспользуемого природного газа. Кроме того, некоторые учреждения исследуют способы переработки избыточного тепла, генерируемого майнингом биткойнов.

10 вопросов

Какова ценность майнинга? Кажется, это пустая трата ресурсов и бессмысленно для общества.

Возвращаясь к разделу «Зачем нужен майнинг?» этой статьи, прямое значение майнинга заключается в том, что он поддерживает выпуск цифровых валют. Вознаграждения за майнинг стимулируют больше людей участвовать в обслуживании цифровых валют, делая их более стабильными. Кроме того, алгоритмы майнинга поддерживают согласованность транзакций в системах цифровых валют, что делает их более надежными и менее восприимчивыми к внутренним и внешним атакам.

Косвенное значение майнинга происходит от самой цифровой валюты. Цифровые валюты создают глобальную, ненадежную денежную систему, где безопасные транзакции могут происходить без необходимости централизованных институтов, избегая недостатков централизации. Их глобальная природа также позволяет эффективные и низко затратные международные транзакции.

Уменьшатся ли доходы от майнинга до того уровня, когда они упадут ниже затрат, заставивших майнеров прекратить майнинг и транзакции прекратиться?

Одна из распространенных опасений заключается в том, что доходы от майнинга полностью зависят от наград системы, которые с течением времени уменьшаются. Однако майнинг также приносит значительный доход от комиссий за транзакции. По мере того как цифровые валюты приобретают все большее распространение, рынок цифровых валютных транзакций будет расширяться. Увеличение объема транзакций усилит конкуренцию за включение блоков, что приведет к увеличению комиссий, которые пользователи готовы заплатить, чтобы дать приоритет своим транзакциям. В результате майнеры смогут продолжать зарабатывать значительные комиссии за транзакции, обеспечивая тем самым долгосрочную жизнеспособность обработки транзакций.

если затраты на майнинг превышают комиссию за использование блокчейна, может ли майнинг продолжаться?

компенсируют ли комиссии за транзакции затраты на майнинг?

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

Что произойдет, если головоломку решат несколько майнеров одновременно?

если несколько майнеров одновременно передают свои новые блоки, разделятся ли майнинговые награды?

нет, если несколько майнеров решают головоломку и одновременно транслируют свои новые блоки, это создает временную ветвь в блокчейне. вот как это работает:

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

пример:

  • Майнер А и майнер Б добывают блок А на одной и той же высоте и транслируют его.
  • некоторые узлы первыми получают блок майнера a, в то время как другие получают блок майнера b.
  • обе цепочки существуют временно.
  • когда следующий блок добыт, если он добавлен к цепочке майнера А, эта цепочка становится самой длинной, и узлы примут ее в качестве основной цепи.
  • майнер a получает вознаграждение, а блок майнера b отбрасывается.

почему узлы с более чем 50% хэш-мощности не обманывают?

Что такое атака 51% и почему суперноды не могут обмануть?

атака 51% происходит, когда одно лицо или группа контролирует более 50% вычислительной мощности сети. вот почему суперузлы обычно не обманывают:

  1. практический невозможность: владение 51% общей силой хэш-сети очень маловероятно из-за огромного масштаба и децентрализации крупных криптовалют, таких как биткоин.
  2. проверка сети: даже если суперузел пытается обмануть, все узлы независимо проверяют каждый блок. Недопустимые транзакции или попытки двойной траты отвергаются сетью, что делает попытки суперузла бесполезными.
  3. репутация и экономические стимулы: суперузлы получают больше выгоды от поддержания целостности блокчейна, чем от его атаки. успешные атаки могут обесценить криптовалюту, нанеся ущерб инвестициям атакующего.
  4. типы атак:
    • двойное расходование: попытка потратить одинаковые монеты дважды.
    • блокировка транзакций: предотвращение включения определенных транзакций в блоки.
    • selfish mining: попытка получить больше вознаграждений за майнинг путем выборочного раскрытия блоков.
    • манипуляция временной меткой: изменение временных меток блоков для получения преимущества в майнинге.
    • атака пустого блока: майнинг блоков без транзакций для замедления сети.

почему блокчейн не предполагает наличие фиксированных бухгалтеров для предотвращения мошеннических транзакций

как блокчейн предотвращает умышленные нарушения и мошеннические транзакции?

  1. проверка соседними узлами: когда блок распространяется на соседние узлы, эти узлы проверяют транзакции внутри блока. Если они найдут недействительные транзакции, они отклонят блок и не будут его далее распространять.
  2. Механизм консенсуса: Механизм консенсуса Биткойна основан на принципе самой длинной цепочки. Все узлы сети пытаются продлить самую длинную действительную цепочку. Если кто-то пытается изменить исторические записи (например, удалить транзакцию), он должен изменить все последующие блоки, связанные с измененным блоком, и убедиться, что измененная цепочка длиннее, чем текущая основная цепочка. Это требует огромных вычислительных ресурсов, что делает это практически невозможным.

предотвращение несогласованного распределения блоков майнерами

  1. согласованность в распределении блоков: майнер не может найти несколько допустимых значений nonce в течение короткого временного интервала, что предотвращает распределение разных законных блоков на разные узлы одновременно. любой незаконный блок будет отброшен соседними узлами.

Что такое пул транзакций (мемпул)?

определение и функция: в блокчейн-сети все транзакции, которые еще не были включены в блок, временно хранятся в памяти узлов сети (mempool). Майнеры отслеживают свой mempool, чтобы выбирать транзакции для создания новых блоков.

стратегия выбора транзакции: майнеры могут выбирать транзакции из пула памяти на основе своей стратегии. Обычно они отдают предпочтение транзакциям с более высокими комиссиями, но некоторые также могут учитывать другие факторы, такие как возраст транзакции (время, проведенное в пуле памяти).

Источники дохода в системе Bitcoin

кто участвует и как они зарабатывают: кроме пользователей, три основных участника в системе биткоина - майнеры, разработчики и операторы узлов.

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

почему повысились цены на графические процессоры? почему майнинговые графические процессоры нежелательны?

рост цен на графические процессоры: высокий спрос на графические процессоры со стороны майнеров для майнинга привел к дефициту предложения, что привело к увеличению цен.

майнинг gpus: майнинг gpus - это те, которые ранее использовались для майнинга криптовалюты. эти gpus подвергаются интенсивным вычислениям, что приводит к значительному износу. из-за сниженной производительности большинство людей предпочитают не покупать использованные майнинг gpus.

Нужно ли майнерам хранить все данные реестра?

требование полного избыточного хранения: да, майнерам необходимо хранить весь блокчейн, чтобы проверить, был ли токен ранее потрачен, и обеспечить безопасность и целостность реестра. однако для очень ранних блоков майнерам достаточно хранить только заголовки блоков, а не полное содержимое блоков. это помогает поддерживать эффективность блокчейна, сохраняя его безопасность.

что произойдет, когда достигнут предел поставки биткойнов?

Никаких автоматических вознаграждений свыше 21 миллиона биткойнов: как только общее предложение биткойнов достигнет своего предела в 21 миллион, система больше не будет выдавать новые биткойны в качестве вознаграждения майнерам. Если пользователи также не хотят платить комиссию за транзакцию, теоретически транзакционная система может столкнуться с операционными проблемами. Тем не менее, вполне вероятно, что пользователи будут готовы платить комиссию за транзакцию, чтобы их транзакции были обработаны, обеспечивая непрерывность системы.

Высота блока будет продолжать увеличиваться: даже после достижения максимального предложения в 21 миллион биткойнов высота блока (общее количество блоков) будет продолжать увеличиваться до тех пор, пока майнеры готовы добывать и упаковывать транзакции в новые блоки. Высота блока не ограничена лимитом предложения биткоина.

потенциал для изменений в консенсусе: сообщество может предложить изменения в правилах консенсуса, такие как увеличение общего предложения биткойнов, чтобы обеспечить генерацию новых монет, если это необходимо.

как вознаграждаются майнеры?

транзакция coinbase: в блокчейне биткойна вознаграждение майнера распределяется через специальную транзакцию, известную как "транзакция coinbase" или "блок-награда". эта транзакция имеет уникальные характеристики:

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

Как рассчитывается доход майнера?

расчет выручки за блок: выручка майнера рассчитывается каждый раз, когда блок успешно добыт и подтвержден механизмом консенсуса сети. Майнер (или пул майнеров), который добывает блок, получает вознаграждение за блок и накопленные комиссионные сборы со всех транзакций, включенных в блок.

процесс получения вознаграждения: после того как майнер или майнинг-пул успешно добывают блок и он подтверждается сетью, они получают вознаграждение за блок и комиссии за транзакции. Это осуществляется через транзакцию coinbase, которая преобразует комиссии и вознаграждения в непотраченные выходы транзакций (UTXO), зачисленные на счет майнера.

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

последовательное создание: блоки создаются последовательно в блокчейне. новый блок может быть создан только после успешного майнинга предыдущего блока и его добавления в цепочку.

упаковка транзакций

несколько транзакций в блоке: обычно блоки содержат несколько транзакций. майнеры включают как можно больше транзакций, чтобы максимизировать свои доходы от комиссий за транзакции, а не упаковывать их по отдельности.

использование блочного пространства

Частично заполненные блоки: большинство блоков не используются полностью. Майнеры начинают работать над следующим блоком, как только они находят действительный хэш, который соответствует требованиям сложности, независимо от того, полностью ли заполнен блок.

майнинг без транзакций

пустые блоки: блоки могут быть сгенерированы даже если в них нет транзакций для включения. Эти блоки, называемые пустыми блоками, все равно предоставляют системное вознаграждение майнеру.

обработка вилок блокчейна

правило самой длинной цепи: когда происходит ветвление, сеть следует за цепью с наибольшим накопленным доказательством работы, которое обычно является самой длинной цепью. узлы переключаются на более длинную цепь, как только становится очевидно, в какую из них вложено больше работы.

предотвращение двойных трат

разрешение двойной траты:

  • если блок содержит конфликтующие транзакции (двойные расходы), только первая действительная транзакция, включенная в блок, считается действительной. другая конфликтующая транзакция отбрасывается.
  • если две противоречащие транзакции включены в разные блоки, та, которая будет подтверждена первой, считается действительной.

Детальная обработка двойного расходования

Процесс валидации:

  • между блоками: если две транзакции, пытающиеся потратить одну и ту же монету, включены в отдельные блоки, транзакция в блоке, который подтверждается первым, будет считаться действительной. блок, содержащий конфликтующую транзакцию, будет отклонен.
  • в пределах одного блока: если две конфликтующие транзакции включены в один блок, майнер включит только одну. Майнер обычно выбирает на основе комиссии за транзакцию (более высокая комиссия имеет преимущество) или возраста транзакции (ранняя транзакция имеет преимущество).

как пользователи контролируют сумму комиссии за транзакцию, которую они платят?

расчет комиссии за транзакцию: пользователи могут контролировать комиссию за транзакцию, чтобы ускорить подтверждение своих транзакций. комиссия определяется следующей формулой:

комиссия за транзакцию=общий вход−общий выход−изменение

пользователи устанавливают комиссию за транзакцию, регулируя сумму ввода, сумму вывода и сумму сдачи.

процесс майнинга цифровой валюты

  1. подготовить оборудование для майнинга: установить майнинговое оборудование или высокопроизводительные вычислительные устройства.
  2. обеспечить доступ в Интернет: подключите горное оборудование к Интернету.
  3. скачать цифровой кошелек: получить цифровой кошелек и сгенерировать свои личные и открытые ключи.
  4. начать майнинг: нажмите кнопку майнинга в кошельке, чтобы начать майнинг.

Майнинг в пуле

Распределение доходов: При майнинге в пуле узел пула получает вознаграждение за блок. Затем пул распределяет прибыль между своими участниками в зависимости от внесенной ими вычислительной мощности. Это распределение осуществляется через переводы на кошельки майнеров.

Что такое эгоистичный майнинг?

Майнинг эгоистичный: эгоистичный майнинг - это стратегия, при которой майнер (или пул майнеров) находит новый блок, но не транслирует его сразу. Вместо этого они продолжают майнить приватно на своей цепочке (скрытой цепочке). Как только они находят дополнительные блоки, они транслируют их все сразу. Это может аннулировать работу других майнеров и наклонить вычислительную мощность и вознаграждения в пользу эгоистичного майнера. Биткойн может смягчить влияние эгоистичного майнинга, улучшив протокол трансляции.

проверка узла при получении транзакций и блоков

проверка транзакции: когда транзакция передается узлу, она проходит несколько проверок, чтобы определить, должна ли она быть добавлена в пул памяти:

  1. Формат транзакции: проверка правильности структуры данных транзакции.
  2. подпись транзакции: проверить подлинность подписи транзакции.
  3. double-spending: убедитесь, что вход не был ранее потрачен в пуле транзакций или блокчейне.
  4. Входы и выходы: убедитесь, что общая сумма входных данных больше или равна общей выходной сумме.
  5. скрипты транзакций: выполнение и проверка скриптов (в основном в смарт-контрактах).
  6. locktime: проверьте, удовлетворяется ли условие временной блокировки (высота блока или время).
  7. размер транзакции и комиссии: убедитесь, что размер транзакции и комиссия достаточны.

Проверка блока: когда узел-майнер получает новый блок, он выполняет обширные проверки блока и его транзакций:

  1. проверка допустимости транзакции: проверка каждой транзакции в блоке (такие же проверки, как при валидации транзакции).
  2. проверка, специфичная для блока:
    • Размер блока: убедитесь, что размер блока находится в допустимых пределах.
    • Вознаграждение за блок: проверьте, что вознаграждение за блок (новые выпущенные биткойны и комиссии за транзакции) указано правильно.
    • Корень Меркла: вычисление и проверка корня Меркла блока.
    • Timestamp: убедитесь, что метка времени блока находится в разумном диапазоне.
    • Целевая сложность: убедитесь, что блок соответствует текущему целевому уровню сложности.

11. ссылки

[1] Лекция 12 | Углубленное изучение технологии блокчейн (4): Всестороннее объяснение консенсуса PoW для блокчейн-гиков:отказ от ответственности:

  1. эта статья воспроизводится из[Gate.io учитьсякоманда, и они обработают это незамедлительно.
  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, принадлежат исключительно автору и не являются какими-либо инвестиционными рекомендациями.
  3. Переводы статьи на другие языки выполняются командой Gate.io Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

Раскрытие тайны майнинга

НовичокJul 15, 2024
Эта статья предоставляет подробное введение в процесс "майнинга" в блокчейне. Путем проведения аналогии с традиционными горнодобывающими работами объясняется основное понятие цифрового майнинга, который включает в себя использование вычислительных ресурсов для решения математических задач для проверки транзакций и выпуска новой валюты.
Раскрытие тайны майнинга

переслать оригинальное название '白话区块链三:揭开挖矿神秘的面纱——挖矿是什么?为什么要挖矿?谁是我们买不起显卡的罪魁祸首?'

Один из самых знакомых концепций, связанных с блокчейном, для всех, вероятно, является майнинг. Многие люди, возможно, много раз слышали о майнинге, но не совсем уверены, в чем он на самом деле заключается. В этом разделе мы прервем наш регулярный режим работы, чтобы сначала представить "майнинг".

краткое повторение содержания из «чистого блокчейна 1: введение в биткойн (пионер блокчейн-революции и вызов суверенной валюте)», где сатоши накамото разработал денежную систему биткойна, связывая вознаграждения за ведение учета с выпуском валюты. Такой подход позволяет автоматизировать выпуск валюты через процесс ведения учета, решая проблему выпуска валюты и одновременно стимулируя ведущих учет.

1. что такое майнинг?

В реальном мире майнинг предполагает, что шахтеры используют различные инструменты для извлечения драгоценных металлов, спрятанных в горных породах, из шахт. Горняки извлекают ценность из этих редких металлов, скрытых в природе, с помощью физического труда.

Для проектов блокчейн с вознаграждениями за ведение учета (обычно это проекты цифровой валюты), сетевые узлы тратят вычислительные ресурсы для решения задач. Как только они находят решение, они упаковывают блок и получают вознаграждение в виде только что выпущенной валюты. Этот процесс аналогичен извлечению драгоценных металлов, таких как золото, из руды, поэтому его обычно называют «майнингом». Здесь ведущими являются майнеры, которые конкурируют в упаковке блоков с помощью оборудования и электроэнергии, что приводит к созданию новой валюты.

2. почему необходим майнинг?

Майнинг выполняет две основные функции: подтверждение недавних транзакций, упаковка их в блоки и привязка к блокчейну, а также выпуск новой валюты в качестве вознаграждения для ведущих бухгалтеров. Ниже приведены подробные функции майнинга:

  1. выбор бухгалтеров: для выбора реальных бухгалтеров из многочисленных кандидатов требуется стратегия. Результат майнинга используется в качестве основы для этого выбора, обеспечивая признание каждой транзакции всеми участниками и достижение консенсуса в сети.
  2. Проверка транзакции: Каждая транзакция биткоина должна быть проверена майнерами в сети. Этот процесс подтверждает действительность транзакции, в том числе:
    • гарантировать соответствие формата и размера транзакции спецификациям.
    • проверка действительности подписи каждой транзакции, чтобы убедиться, что она была инициирована пользователем, обладающим связанным приватным ключом.
    • проверка того, что входная сумма превышает выходную сумму (с частью суммы, взятой в качестве комиссии), убедиться, что токены, используемые для оплаты, не были дважды потрачены.
    • подтверждение того, что транзакция ранее не была включена в блок.
  3. эмиссия новой валюты: майнинг также является способом поступления новых биткоинов в обращение. когда майнер успешно добывает новый блок, он получает определенное количество биткоинов в качестве вознаграждения. Этот механизм вознаграждения не только стимулирует участие людей в майнинге, но и служит методом эмиссии биткоинов. Этот метод эмиссии валюты обеспечивает стабильное и контролируемое увеличение оборота валюты, помогая управлять инфляцией.
  4. стимулирование участия: механизм вознаграждения мотивирует больше людей участвовать в поддержке системы валюты, способствуя ее непрерывному и надежному развитию.
  5. Повышение сетевой безопасности и децентрализации: прибыль от майнинга приводит к большому количеству майнеров, что приводит к распределенной вычислительной мощности. Такая децентрализация гарантирует, что ни одна организация не может контролировать 50% вычислительной мощности, тем самым повышая прозрачность и безопасность системы. Соблюдение принципа самой длинной цепи еще больше повышает безопасность системы.

3. почему майнеры готовы участвовать в майнинге?

майнеры стимулируются к участию в майнинге, потому что они получают значительные вознаграждения за успешную упаковку блока в блокчейн. Эти вознаграждения поступают из двух основных источников:

  • Вознаграждение за блок (вновь выпущенная валюта): Валютная система автоматически выпускает новую валюту, которая полностью достается майнеру. Например, в системе Bitcoin в настоящее время майнеры получают 3,125 биткоина за каждый блок, который они упаковывают. Учитывая, что каждый биткоин оценивается примерно в 65 000 долларов, упаковка одного блока может принести более 200 000 долларов, примерно 1,47 миллиона юаней.
  • оплата комиссий за транзакции пользователями: из-за ограниченной способности блока содержать записи транзакций некоторые пользователи платят комиссии, чтобы стимулировать майнеров отдавать предпочтение их транзакциям для более быстрого подтверждения. при выборе транзакций из пула для включения в блок, майнеры обычно выбирают те, у которых выше комиссии. в блоке может содержаться тысячи транзакций, и все комиссии от этих транзакций идут майнеру, представляя собой еще один значительный источник дохода. по мере того как все больше людей используют биткойн для транзакций, конкуренция за включение в блоки усиливается, что приводит к росту комиссий, которые пользователи готовы платить.

со временем вознаграждения за блок будут уменьшаться (например, из-за механизма половинного сокращения вознаграждения в биткоине, где вознаграждение уменьшается примерно каждые четыре года). В конце концов, после того, как будут добыты все 21 миллион биткоинов, ожидается около 2141 года, автоматическое вознаграждение за блок прекратится существовать, а плата за транзакции станет основным источником дохода для майнеров.

советы

Биткойн генерирует новый блок приблизительно каждые 10 минут. Изначально за каждый новый созданный блок начислялось 50 биткоинов. Эта награда уменьшается вдвое каждые четыре года, и на сегодняшний день уже произошло четыре таких события уменьшения награды. В настоящее время каждый блок генерирует 3,125 биткоинов, и самое последнее уменьшение награды произошло в апреле 2024 года. Следующее уменьшение награды ожидается примерно в 2028 году. К 2141 году биткойн достигнет своего предельного выпуска.

размер комиссии за транзакцию зависит не только от спроса и предложения, но также от размера самой транзакции, поскольку комиссия пропорциональна занимаемому транзакцией месту в блоке.

4. как участвовать в майнинге

Для майнеров участие в майнинге просто. Скачайте клиент цифрового кошелька и нажмите кнопку майнинга внутри клиента, чтобы начать майнить.

для блокчейн-проектов с блок-наградами, алгоритм майнинга обычно записывается в сценарий, интегрированный в кошелек. майнерам просто нужно нажать кнопку, чтобы запустить сценарий.

алгоритм майнинга детерминированный, что означает, что при условии непрерывной работы майнеров с алгоритмом они в конечном итоге получат результат. однако из-за различных вычислительных ресурсов время, необходимое для вычисления этого результата, может различаться среди майнеров. как только узел рассчитает целевое значение, усилия других майнеров в течение этого периода оказываются тщетными, что приводит к отрицательным результатам из-за затраченных физических ресурсов.

чтобы избежать бесполезных усилий, майнеры часто объединяют свои вычислительные ресурсы, присоединяясь к узлу майнингового пула. Этот узел работает как любой другой узел, но обладает значительно большей вычислительной мощностью. Когда пул успешно добывает блок, вознаграждения распределяются среди участвующих майнеров в зависимости от их вклада в вычислительные ресурсы. Важно отметить, что в блокчейне майнером, записанным как упаковщик блока, является узел майнингового пула, в то время как отдельные майнеры получают свою долю вознаграждения, выделенную пулом, а не непосредственно из валютной системы.

Компания bitmain, производящая специализированные высокоэффективные майнинг-чипы, укрепила роль майнинг-пулов, способствуя централизации бухгалтерской мощности.

5. особенности задачи майнинга

У различных блокчейн-проектов могут быть различные задачи для майнинга и уровни сложности. Возьмем, например, биткойн. Алгоритм майнинга, используемый биткойном, называется доказательство работы (Proof of Work, PoW). Суть этого алгоритма заключается в том, что для получения результата необходимо затратить определенное количество работы, чтобы его доказать.

Головоломка майнинга - это не традиционная математическая проблема, а включает в себя поиск случайного числа, известного как nonce. Этот nonce, когда объединен с данными в блоке и обработан через хэш-функцию, должен произвести хэш-значение, которое соответствует определенному условию. Обычно это условие требует, чтобы значение хэша было меньше целевого значения (или, что первые n битов значения хэша равны нулю). Уравнение выглядит следующим образом: хэш (nonce+block_data)≤цель

Bitcoin использует хэш-функцию sha-256, которая преобразует любую длину входных данных в фиксированную длину выходных данных 256 бит (эквивалентно 64 шестнадцатеричным цифрам или 32 байтам). Выходные данные почти случайны, но гарантированно будут одинаковы для одинаковых входных данных. Майнинг включает непрерывное изменение nonce и хэширование данных заголовка блока с использованием sha-256 до тех пор, пока не будет найдено значение хэша, которое соответствует целевому условию.

например, значение хэша sha-256 с первыми 30 битами, равными нулю: 000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110

преобразование этого в шестнадцатеричное значение приводит к значению, начинающемуся с семи нулей: 00000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac90

для упрощения, вероятность нахождения хэша с первыми n битами, равными нулю, составляет 12n\frac{1}{2^n}2n1​. чем больше n, тем больше битов равны нулю, и тем ниже вероятность:

  • n=10n = 10n=10: 1 in 1,024
  • n = 20n = 20n = 20: 1 в 1 048 576
  • n=30n = 30n=30: 1 in 1,073,741,824
  • n=40n = 40n=40: 1 in 1,099,511,627,776
  • n=50: 1 в 1,125,899,906,842,624

при n до 256, поиск такого значения хэша с текущей вычислительной мощностью человечества, за исключением квантовых компьютеров, фактически невозможен до тех пор, пока Земля не перестанет существовать.

Из-за свойств sha-256 единственным методом является грубая сила, которая включает непрерывную попытку различных номеров до выполнения условия. Эта необходимость в высокопроизводительном вычислительном оборудовании и есть причина, по которой для майнинга требуются такие устройства.

поскольку вы не можете предсказать значение хэша, сгенерированное добавлением произвольного числа к данным блока и их обработкой с помощью sha-256, процесс является полностью случайным. например, если целевое значение хэша равно 10 000, вы не сможете узнать, какое произвольное число, объединенное с данными блока, приведет к значению хэша, меньшему 10 000. эта непредсказуемая и случайная природа означает, что майнеры должны перебирать возможности до удовлетворения условия. если несколько значений удовлетворяют условию, выбирается наименьшее значение хэша, поскольку меньшее значение хэша указывает на более высокую сложность и меньшую вероятность возникновения.

Проверить, соответствует ли сгенерированное хэш-значение требованию, очень просто, для этого требуется всего одна операция сравнения. Однако найти хеш-значение, меньшее или равное целевому значению, можно добиться только с помощью перебора. Эта характеристика, при которой проверить результат легко, а найти его сложно, известна как вычислительная асимметрия.

6. симуляция кода алгоритма майнинга

следующий код имитирует процесс майнинга. он начинается с строки данных заголовка блока «geekbang» и инкрементально ищет значение nonce от 10 000 до тех пор, пока не найдет nonce, удовлетворяющий указанному условию.

Вот скрипт Python, демонстрирующий процесс майнинга:

import hashlibdef main():    base_string = "geekbang"    nonce = 10000    count = 0    while true:        target_string = base_string + str(nonce)        pow_hash = hashlib.sha256(target_string.encode()).hexdigest()        count += 1        if pow_hash.startswith("0000"):  # first 4 hex digits are 0, equivalent to the first 16 bits being 0            print("hash:", pow_hash)            print("nonce:", nonce, "scan times:", count)            break        nonce += 1if __name__ == '__main__':    main()

Если требуется, чтобы первые 4 шестнадцатеричные цифры хеш-результата были равны нулю (что эквивалентно нулю первых 16 бит), количество вычислений составляет примерно 58 000. Если увеличить требование до нуля первых 5 цифр, количество вычислений увеличится до 1,23 миллиона. Когда требование состоит в том, чтобы первые 7 цифр были равны нулю, количество вычислений достигает 160 миллионов. Это показывает, что каждый дополнительный ноль в префиксе хэша увеличивает вычисления примерно в 16 раз.

вот результаты для разных целевых условий:

первые 4 шестнадцатеричных символа равны нулю (16 бит):

импорт hashlib

def main():

base_string = "geekbang"nonce = 10000count = 0while true:    target_string = base_string + str(nonce)    pow_hash = hashlib.sha256(target_string).hexdigest()    count = count + 1    if pow_hash.startswith("0000"): # 前4个16进制位是0,相当于前16个比特位是0    print pow_hash    print "nonce: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/51d786353cf4ac886dbb869fc7abf883dac67ceb.png"  scan times: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/4ebdb22f10c27f8797a1c2ae7bbbd78f40220ed4.png"" % (nonce, count)    break    nonce = nonce + 1

если имя== ‘главный‘:

main()

как видно, увеличение требуемого количества ведущих нулей в хэше значительно увеличивает количество необходимых попыток, следуя экспоненциальному росту. это демонстрирует вычислительную сложность и ресурсы, необходимые для майнинга, подчеркивая необходимость высокопроизводительных вычислительных устройств в процессе майнинга.

7. динамическая корректировка сложности

для того чтобы гарантировать генерацию блока примерно каждые 10 минут, система биткойна регулирует сложность майнинга, изменяя количество ведущих нулей, необходимых в значении хэша. этот механизм регулирования сложности является важной частью системы биткойна. он оценивает время, затраченное на генерацию последних 2016 блоков, которое в идеале должно составлять около двух недель. если эти блоки были сгенерированы за время меньшее, чем две недели, сложность увеличивается за счет добавления большего количества ведущих нулей (уменьшение целевого значения). наоборот, если это заняло больше двух недель, сложность уменьшается путем уменьшения количества ведущих нулей (увеличение целевого значения). этот механизм обеспечивает, что время на генерацию блока остается примерно 10 минут, даже при изменении общей хэш-скорости сети.

этот механизм регулирования сложности, разработанный создателем биткоина сатоси накамото, был спланирован с самого начала для автоматической адаптации к общей вычислительной мощности сети. он поддерживает стабильный темп майнинга и предотвращает излишне быстрое выпускание валюты, что может нарушить рыночную экономику.

8. процесс выполнения алгоритма майнинга

У различных проектов блокчейн могут быть различные алгоритмы майнинга. Здесь мы описываем самый известный: алгоритм майнинга биткойна.

процесс выполнения базового майнингового алгоритма биткойна следующий:

  1. выбор транзакций: выберите несколько транзакций из пула памяти (обычно с приоритетом тех, у которых выше комиссия). автоматически сгенерируйте специальную транзакцию (часто называемую транзакцией coinbase), где получателем является майнер, а сумма транзакции составляет вознаграждение за блок плюс все выбранные комиссии за транзакции. поместите эту специальную транзакцию в начало выбранных транзакций, чтобы сформировать набор транзакций для блока, который будет упакован.
  2. построение дерева Меркля: построение дерева хэшей Меркля из набора транзакций. Дерево Меркля - это бинарное дерево, где каждый листовой узел хранит хэш транзакции, уникально идентифицируя и индексируя ее. Каждый верхний узел хранит объединенный хэш своих дочерних узлов, достигая корневого узла. Корневой узел уникально идентифицирует дерево Меркля и, в расширении, все транзакции.
  3. составление заголовка блока: собрать заголовок блока из значения корня Меркля, произвольного числа, версии блока, хэша предыдущего блока, временной метки, целевой сложности и произвольного числа. размер заголовка блока составляет 80 байт.
  4. хеширование заголовка блока: непрерывно изменять значение nonce в заголовке блока и выполнить двойной хэш sha-256 для содержимого заголовка блока (т.е. sha256(sha256(block_header))). сравнить полученный хэш с текущим целевым значением сети. если результат меньше целевого значения (указывающего на то, что первые n бит равны нулю), головоломка решена, и доказательство работы завершено.
  5. трансляция блока: отправка только что добытого блока соседним узлам с информацией о том, что блок был успешно добыт.
  6. проверка и распространение: после получения нового блока другие узлы выполняют двойное хеширование заголовка блока, чтобы получить хеш блока. Они проверяют, что первые n битов хеша блока равны нулю, подтверждают блок, прекращают вычисления для этого блока и распространяют его на свои соседние узлы.

размер каждого поля в заголовке блока следующий:

https://time.geekbang.org/column/article/5963

alt="">

структура Merkle-дерева выглядит следующим образом:

Большой "Back-end" в домашних условиях.]. alt="">

9. контроверсии в майнинге

Основная контроверсия, связанная с майнингом, заключается в алгоритмах доказательства работы (PoW), используемых в Bitcoin и его производных. Эти алгоритмы требуют, чтобы майнеры выделяли значительные вычислительные ресурсы для решения проблем, на которые согласуется сеть. Многие люди работают над этими вычислениями одновременно, но только первый, кто решит проблему, получает вознаграждение. Вычислительные и электрические ресурсы других участников фактически тратятся впустую, не производя дополнительной стоимости.

существует два основных способа оптимизации этого ресурсного отхода:

  1. переход на менее затратные алгоритмы: например, Ethereum перешел с алгоритма PoW на алгоритм доказательства доли (PoS), что значительно снижает потребление ресурсов.
  2. использование неиспользуемых электрических ресурсов: майнинговые узлы экспериментируют с использованием возобновляемых источников энергии, таких как ветровая энергия, для майнинговых операций. еще одним значительным развитием является использование ранее неиспользуемого природного газа. Кроме того, некоторые учреждения исследуют способы переработки избыточного тепла, генерируемого майнингом биткойнов.

10 вопросов

Какова ценность майнинга? Кажется, это пустая трата ресурсов и бессмысленно для общества.

Возвращаясь к разделу «Зачем нужен майнинг?» этой статьи, прямое значение майнинга заключается в том, что он поддерживает выпуск цифровых валют. Вознаграждения за майнинг стимулируют больше людей участвовать в обслуживании цифровых валют, делая их более стабильными. Кроме того, алгоритмы майнинга поддерживают согласованность транзакций в системах цифровых валют, что делает их более надежными и менее восприимчивыми к внутренним и внешним атакам.

Косвенное значение майнинга происходит от самой цифровой валюты. Цифровые валюты создают глобальную, ненадежную денежную систему, где безопасные транзакции могут происходить без необходимости централизованных институтов, избегая недостатков централизации. Их глобальная природа также позволяет эффективные и низко затратные международные транзакции.

Уменьшатся ли доходы от майнинга до того уровня, когда они упадут ниже затрат, заставивших майнеров прекратить майнинг и транзакции прекратиться?

Одна из распространенных опасений заключается в том, что доходы от майнинга полностью зависят от наград системы, которые с течением времени уменьшаются. Однако майнинг также приносит значительный доход от комиссий за транзакции. По мере того как цифровые валюты приобретают все большее распространение, рынок цифровых валютных транзакций будет расширяться. Увеличение объема транзакций усилит конкуренцию за включение блоков, что приведет к увеличению комиссий, которые пользователи готовы заплатить, чтобы дать приоритет своим транзакциям. В результате майнеры смогут продолжать зарабатывать значительные комиссии за транзакции, обеспечивая тем самым долгосрочную жизнеспособность обработки транзакций.

если затраты на майнинг превышают комиссию за использование блокчейна, может ли майнинг продолжаться?

компенсируют ли комиссии за транзакции затраты на майнинг?

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

Что произойдет, если головоломку решат несколько майнеров одновременно?

если несколько майнеров одновременно передают свои новые блоки, разделятся ли майнинговые награды?

нет, если несколько майнеров решают головоломку и одновременно транслируют свои новые блоки, это создает временную ветвь в блокчейне. вот как это работает:

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

пример:

  • Майнер А и майнер Б добывают блок А на одной и той же высоте и транслируют его.
  • некоторые узлы первыми получают блок майнера a, в то время как другие получают блок майнера b.
  • обе цепочки существуют временно.
  • когда следующий блок добыт, если он добавлен к цепочке майнера А, эта цепочка становится самой длинной, и узлы примут ее в качестве основной цепи.
  • майнер a получает вознаграждение, а блок майнера b отбрасывается.

почему узлы с более чем 50% хэш-мощности не обманывают?

Что такое атака 51% и почему суперноды не могут обмануть?

атака 51% происходит, когда одно лицо или группа контролирует более 50% вычислительной мощности сети. вот почему суперузлы обычно не обманывают:

  1. практический невозможность: владение 51% общей силой хэш-сети очень маловероятно из-за огромного масштаба и децентрализации крупных криптовалют, таких как биткоин.
  2. проверка сети: даже если суперузел пытается обмануть, все узлы независимо проверяют каждый блок. Недопустимые транзакции или попытки двойной траты отвергаются сетью, что делает попытки суперузла бесполезными.
  3. репутация и экономические стимулы: суперузлы получают больше выгоды от поддержания целостности блокчейна, чем от его атаки. успешные атаки могут обесценить криптовалюту, нанеся ущерб инвестициям атакующего.
  4. типы атак:
    • двойное расходование: попытка потратить одинаковые монеты дважды.
    • блокировка транзакций: предотвращение включения определенных транзакций в блоки.
    • selfish mining: попытка получить больше вознаграждений за майнинг путем выборочного раскрытия блоков.
    • манипуляция временной меткой: изменение временных меток блоков для получения преимущества в майнинге.
    • атака пустого блока: майнинг блоков без транзакций для замедления сети.

почему блокчейн не предполагает наличие фиксированных бухгалтеров для предотвращения мошеннических транзакций

как блокчейн предотвращает умышленные нарушения и мошеннические транзакции?

  1. проверка соседними узлами: когда блок распространяется на соседние узлы, эти узлы проверяют транзакции внутри блока. Если они найдут недействительные транзакции, они отклонят блок и не будут его далее распространять.
  2. Механизм консенсуса: Механизм консенсуса Биткойна основан на принципе самой длинной цепочки. Все узлы сети пытаются продлить самую длинную действительную цепочку. Если кто-то пытается изменить исторические записи (например, удалить транзакцию), он должен изменить все последующие блоки, связанные с измененным блоком, и убедиться, что измененная цепочка длиннее, чем текущая основная цепочка. Это требует огромных вычислительных ресурсов, что делает это практически невозможным.

предотвращение несогласованного распределения блоков майнерами

  1. согласованность в распределении блоков: майнер не может найти несколько допустимых значений nonce в течение короткого временного интервала, что предотвращает распределение разных законных блоков на разные узлы одновременно. любой незаконный блок будет отброшен соседними узлами.

Что такое пул транзакций (мемпул)?

определение и функция: в блокчейн-сети все транзакции, которые еще не были включены в блок, временно хранятся в памяти узлов сети (mempool). Майнеры отслеживают свой mempool, чтобы выбирать транзакции для создания новых блоков.

стратегия выбора транзакции: майнеры могут выбирать транзакции из пула памяти на основе своей стратегии. Обычно они отдают предпочтение транзакциям с более высокими комиссиями, но некоторые также могут учитывать другие факторы, такие как возраст транзакции (время, проведенное в пуле памяти).

Источники дохода в системе Bitcoin

кто участвует и как они зарабатывают: кроме пользователей, три основных участника в системе биткоина - майнеры, разработчики и операторы узлов.

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

почему повысились цены на графические процессоры? почему майнинговые графические процессоры нежелательны?

рост цен на графические процессоры: высокий спрос на графические процессоры со стороны майнеров для майнинга привел к дефициту предложения, что привело к увеличению цен.

майнинг gpus: майнинг gpus - это те, которые ранее использовались для майнинга криптовалюты. эти gpus подвергаются интенсивным вычислениям, что приводит к значительному износу. из-за сниженной производительности большинство людей предпочитают не покупать использованные майнинг gpus.

Нужно ли майнерам хранить все данные реестра?

требование полного избыточного хранения: да, майнерам необходимо хранить весь блокчейн, чтобы проверить, был ли токен ранее потрачен, и обеспечить безопасность и целостность реестра. однако для очень ранних блоков майнерам достаточно хранить только заголовки блоков, а не полное содержимое блоков. это помогает поддерживать эффективность блокчейна, сохраняя его безопасность.

что произойдет, когда достигнут предел поставки биткойнов?

Никаких автоматических вознаграждений свыше 21 миллиона биткойнов: как только общее предложение биткойнов достигнет своего предела в 21 миллион, система больше не будет выдавать новые биткойны в качестве вознаграждения майнерам. Если пользователи также не хотят платить комиссию за транзакцию, теоретически транзакционная система может столкнуться с операционными проблемами. Тем не менее, вполне вероятно, что пользователи будут готовы платить комиссию за транзакцию, чтобы их транзакции были обработаны, обеспечивая непрерывность системы.

Высота блока будет продолжать увеличиваться: даже после достижения максимального предложения в 21 миллион биткойнов высота блока (общее количество блоков) будет продолжать увеличиваться до тех пор, пока майнеры готовы добывать и упаковывать транзакции в новые блоки. Высота блока не ограничена лимитом предложения биткоина.

потенциал для изменений в консенсусе: сообщество может предложить изменения в правилах консенсуса, такие как увеличение общего предложения биткойнов, чтобы обеспечить генерацию новых монет, если это необходимо.

как вознаграждаются майнеры?

транзакция coinbase: в блокчейне биткойна вознаграждение майнера распределяется через специальную транзакцию, известную как "транзакция coinbase" или "блок-награда". эта транзакция имеет уникальные характеристики:

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

Как рассчитывается доход майнера?

расчет выручки за блок: выручка майнера рассчитывается каждый раз, когда блок успешно добыт и подтвержден механизмом консенсуса сети. Майнер (или пул майнеров), который добывает блок, получает вознаграждение за блок и накопленные комиссионные сборы со всех транзакций, включенных в блок.

процесс получения вознаграждения: после того как майнер или майнинг-пул успешно добывают блок и он подтверждается сетью, они получают вознаграждение за блок и комиссии за транзакции. Это осуществляется через транзакцию coinbase, которая преобразует комиссии и вознаграждения в непотраченные выходы транзакций (UTXO), зачисленные на счет майнера.

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

последовательное создание: блоки создаются последовательно в блокчейне. новый блок может быть создан только после успешного майнинга предыдущего блока и его добавления в цепочку.

упаковка транзакций

несколько транзакций в блоке: обычно блоки содержат несколько транзакций. майнеры включают как можно больше транзакций, чтобы максимизировать свои доходы от комиссий за транзакции, а не упаковывать их по отдельности.

использование блочного пространства

Частично заполненные блоки: большинство блоков не используются полностью. Майнеры начинают работать над следующим блоком, как только они находят действительный хэш, который соответствует требованиям сложности, независимо от того, полностью ли заполнен блок.

майнинг без транзакций

пустые блоки: блоки могут быть сгенерированы даже если в них нет транзакций для включения. Эти блоки, называемые пустыми блоками, все равно предоставляют системное вознаграждение майнеру.

обработка вилок блокчейна

правило самой длинной цепи: когда происходит ветвление, сеть следует за цепью с наибольшим накопленным доказательством работы, которое обычно является самой длинной цепью. узлы переключаются на более длинную цепь, как только становится очевидно, в какую из них вложено больше работы.

предотвращение двойных трат

разрешение двойной траты:

  • если блок содержит конфликтующие транзакции (двойные расходы), только первая действительная транзакция, включенная в блок, считается действительной. другая конфликтующая транзакция отбрасывается.
  • если две противоречащие транзакции включены в разные блоки, та, которая будет подтверждена первой, считается действительной.

Детальная обработка двойного расходования

Процесс валидации:

  • между блоками: если две транзакции, пытающиеся потратить одну и ту же монету, включены в отдельные блоки, транзакция в блоке, который подтверждается первым, будет считаться действительной. блок, содержащий конфликтующую транзакцию, будет отклонен.
  • в пределах одного блока: если две конфликтующие транзакции включены в один блок, майнер включит только одну. Майнер обычно выбирает на основе комиссии за транзакцию (более высокая комиссия имеет преимущество) или возраста транзакции (ранняя транзакция имеет преимущество).

как пользователи контролируют сумму комиссии за транзакцию, которую они платят?

расчет комиссии за транзакцию: пользователи могут контролировать комиссию за транзакцию, чтобы ускорить подтверждение своих транзакций. комиссия определяется следующей формулой:

комиссия за транзакцию=общий вход−общий выход−изменение

пользователи устанавливают комиссию за транзакцию, регулируя сумму ввода, сумму вывода и сумму сдачи.

процесс майнинга цифровой валюты

  1. подготовить оборудование для майнинга: установить майнинговое оборудование или высокопроизводительные вычислительные устройства.
  2. обеспечить доступ в Интернет: подключите горное оборудование к Интернету.
  3. скачать цифровой кошелек: получить цифровой кошелек и сгенерировать свои личные и открытые ключи.
  4. начать майнинг: нажмите кнопку майнинга в кошельке, чтобы начать майнинг.

Майнинг в пуле

Распределение доходов: При майнинге в пуле узел пула получает вознаграждение за блок. Затем пул распределяет прибыль между своими участниками в зависимости от внесенной ими вычислительной мощности. Это распределение осуществляется через переводы на кошельки майнеров.

Что такое эгоистичный майнинг?

Майнинг эгоистичный: эгоистичный майнинг - это стратегия, при которой майнер (или пул майнеров) находит новый блок, но не транслирует его сразу. Вместо этого они продолжают майнить приватно на своей цепочке (скрытой цепочке). Как только они находят дополнительные блоки, они транслируют их все сразу. Это может аннулировать работу других майнеров и наклонить вычислительную мощность и вознаграждения в пользу эгоистичного майнера. Биткойн может смягчить влияние эгоистичного майнинга, улучшив протокол трансляции.

проверка узла при получении транзакций и блоков

проверка транзакции: когда транзакция передается узлу, она проходит несколько проверок, чтобы определить, должна ли она быть добавлена в пул памяти:

  1. Формат транзакции: проверка правильности структуры данных транзакции.
  2. подпись транзакции: проверить подлинность подписи транзакции.
  3. double-spending: убедитесь, что вход не был ранее потрачен в пуле транзакций или блокчейне.
  4. Входы и выходы: убедитесь, что общая сумма входных данных больше или равна общей выходной сумме.
  5. скрипты транзакций: выполнение и проверка скриптов (в основном в смарт-контрактах).
  6. locktime: проверьте, удовлетворяется ли условие временной блокировки (высота блока или время).
  7. размер транзакции и комиссии: убедитесь, что размер транзакции и комиссия достаточны.

Проверка блока: когда узел-майнер получает новый блок, он выполняет обширные проверки блока и его транзакций:

  1. проверка допустимости транзакции: проверка каждой транзакции в блоке (такие же проверки, как при валидации транзакции).
  2. проверка, специфичная для блока:
    • Размер блока: убедитесь, что размер блока находится в допустимых пределах.
    • Вознаграждение за блок: проверьте, что вознаграждение за блок (новые выпущенные биткойны и комиссии за транзакции) указано правильно.
    • Корень Меркла: вычисление и проверка корня Меркла блока.
    • Timestamp: убедитесь, что метка времени блока находится в разумном диапазоне.
    • Целевая сложность: убедитесь, что блок соответствует текущему целевому уровню сложности.

11. ссылки

[1] Лекция 12 | Углубленное изучение технологии блокчейн (4): Всестороннее объяснение консенсуса PoW для блокчейн-гиков:отказ от ответственности:

  1. эта статья воспроизводится из[Gate.io учитьсякоманда, и они обработают это незамедлительно.
  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, принадлежат исключительно автору и не являются какими-либо инвестиционными рекомендациями.
  3. Переводы статьи на другие языки выполняются командой Gate.io Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!