Какие хэши нужны майнерам для создания блока? [дубликат]

Я немного застрял в концепции майнинга.

Какие хэши нужно создавать в каждом блоке и цепочке? Допустим, у нас есть блок A-B-C, образующий цепочку.

Один источник сказал, что нам нужно придумать хэш A и объединить его с хэшем предыдущего блока, сформировав другой, другими словами: хеш (A + хеш предыдущего блока).

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

Концепция Proof of Work заключается в том, что у вас есть X, а на выходе Z, сколько нужно Y, поэтому хеш(X + Y) = Z.

Если это так, можем ли мы сказать, что X — это хэш предыдущего блока, а Y — хеш текущего блока? Или я неправильно это смотрю?

Источники: https://www.investinblockchain.com/what-exactly-is-blockchain/ https://www.youtube.com/watch?v=SSo_EIwHSd4&t=1sИ другие источники.

Ответы (1)

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

Это верно. Остальные в разной степени правильные и неправильные. Но это единственное, что абсолютно правильно.

Концепция Proof of Work заключается в том, что у вас есть X, а на выходе Z, сколько нужно Y, поэтому хеш(X + Y) = Z.

Если это так, можем ли мы сказать, что X — это хэш предыдущего блока, а Y — хеш текущего блока? Или я неправильно это смотрю?

Вроде.


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

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

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

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

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

Спасибо за ответ! Если я правильно понял: блок содержит номер версии блока, хеш предыдущего блока, информацию (транзакции, отметку времени других данных) и одноразовый номер. Майнеры пытаются настроить одноразовый номер (обычно) или транзакции внутри, чтобы получить желаемый хэш. Это верно? Кто выбирает хэш, который должен быть достигнут, чтобы можно было добыть новый блок?
@NelsenLiu да, ты на правильном пути! Хэш не обязательно должен быть определенным значением, скорее хеш должен находиться в пределах некоторого заранее определенного диапазона значений. Этот диапазон определяется текущей сложностью сети, которая устанавливает максимальное значение для действительного хэша блока.
Целевое значение определяется индивидуально каждым узлом. Это детерминированный алгоритм, поэтому все, кто использует один и тот же блокчейн, в конечном итоге будут вычислять одинаковую сложность для каждой высоты блока.